Sei sulla pagina 1di 25

PROGRAMACION JAVA Sistema E-learning

Tema 2: Programacin Bsica


2.1 Comentarios
Un comentario es un texto que se escribe dentro de un programa con el fin de facilitar
la comprensin del mismo.
Los comentarios se utilizan para explicar y documentar el cdigo fuente.
En Java se pueden utilizar tres tipos de comentarios:
Comentario tradicional estilo C/C++.
-

Empieza con los caracteres /* y acaba con */.


Pueden ocupar ms de una lnea y pueden aparecer en cualquier lugar donde pueda
aparear un espacio en blanco.
- No pueden anidarse.
Ejemplos de comentarios estilo C/C++:
/* Programa Ecuacin segundo grado
Calcula las soluciones de una ecuacin de segundo grado */
/* Lectura de datos por teclado */
Comentarios de una sola lnea.
- Comienzan con una doble barra ( // ) y se pueden extender hasta el final de la lnea.
- No tienen carcter de terminacin.
Ejemplos de comentarios de una sola lnea:
// Programa Ecuacin segundo grado
// Calcula las soluciones de una ecuacin de segundo grado
int p; // precio del producto
Comentarios de documentacin Javadoc.
- Son comentarios especiales para generar documentacin del programa.
- Comienza con /** y termina con */
Ejemplo de comentario de documentacin Javadoc:
/**
*
* @author Zulma Argello
* @version 1.0
*
*/

Profesora: Zulma Anglica Argello Matas

Pgina 1

PROGRAMACION JAVA Sistema E-learning

2.2 Tipos de Datos.


Los primeros lenguajes de programacin no usaban objetos, solo variables. Una
variable podramos decir que es un espacio de la memoria del ordenador a la que
asignamos un contenido que puede ser un valor numrico (slo nmeros, con su valor de
clculo) o de tipo carcter o cadena de caracteres (valor alfanumrico que constar slo de
texto o de texto mezclado con nmeros).
Como ejemplo podemos definir una variable a que contenga 32 y esto lo escribimos
como a = 32. Posteriormente podemos cambiar el valor de a y hacer a = 78. O hacer a
equivalente al valor de otra variable b as: a = b.
Dado que antes hemos dicho que un objeto tambin ocupa un espacio de memoria: en qu
se parecen y en qu se diferencia un objeto de una variable? Consideraremos que las
variables son entidades elementales: un nmero, un carcter, un valor verdadero o falso
mientras que los objetos son entidades complejas que pueden estar formadas por la
agrupacin de muchas variables y mtodos. Pero ambas cosas ocupan lo mismo: un espacio
de memoria (que puede ser ms o menos grande).
En los programas en Java puede ser necesario tanto el uso de datos elementales como
de datos complejos. Por eso en Java se usa el trmino Tipos de datos para englobar a
cualquier cosa que ocupa un espacio de memoria y que puede ir tomando distintos valores o
caractersticas durante la ejecucin del programa. Es decir, en vez de hablar de tipos de
variables o de tipos de objetos, hablaremos simplemente de tipos de datos. Sin embargo, a
veces coloquialmente no se utiliza la terminologa de forma estricta: puedes encontrarte
textos o pginas web donde se habla de una variable en alusin a un objeto.
En Java diferenciamos dos tipos de datos: por un lado, los tipos primitivos, que se
corresponden con los tipos de variables en lenguajes como C y que son los datos elementales
que hemos citado. Por otro lado, los tipos objeto (que normalmente incluyen mtodos).
Veamos los tipos de datos en Java sobre un esquema de sntesis:
Esquema de sntesis de tipos de datos en Java
Este esquema no es necesario aprendrselo de memoria en todos sus detalles, aunque
s lo iremos memorizando poco a poco a medida que lo utilicemos, por lo menos hasta tener en
nuestra cabeza los nombres de todos los tipos primitivos y envoltorio y sus caractersticas (si
son objetos o no y su rango aproximado):

TIPOS
DE
DATOS
EN
JAVA

NOMBRE

TIPO

OCUPA

RANGO
APROXIMADO

Byte

Entero

1 byte

-128 a 127

Short

Entero

2 bytes

-32768 a 32767

Int

Entero

4 bytes

2*109

Entero

8 bytes

Muy grande

Decimal
simple

4 bytes

Muy grande

Decimal
doble

8 bytes

Muy grande

Char

Carcter
simple

2 bytes

---

Boolean

Valor true
1 byte
o false

TIPOS
Long
PRIMITIVOS
(sin mtodos; no Float
son objetos; no
necesitan
una
invocacin para Doubl
ser creados)

Profesora: Zulma Anglica Argello Matas

---

Pgina 2

PROGRAMACION JAVA Sistema E-learning

Tipos
de
la String (cadenas de texto)
biblioteca estndar Muchos otros (p.ej. Scanner, TreeSet,
de Java
ArrayList)
Tipos definidos por
Cualquiera que se nos ocurra, por ejemplo
el programador /
Taxi, Autobus, Tranvia
usuario
Arrays
TIPOS OBJETO
(con
mtodos,
necesitan
una
invocacin para
ser creados)

Serie de elementos o formacin tipo


vector o matriz. Lo consideraremos un
objeto especial que carece de mtodos.
Byte
Short

Tipos envoltorio o
wrapper
(Equivalentes a los
tipos
primitivos
pero
como
objetos.)

Integer
Long
Float
Double
Character
Boolean

Vamos a comentar distintas cuestiones:


1. Un objeto es una cosa distinta a un tipo primitivo, aunque porten la misma
informacin. Tener siempre presente que los objetos en Java tienen un tipo de tratamiento y
los tipos primitivos, otro. Que en un momento dado contengan la misma informacin no
significa en ningn caso que sea lo mismo. Iremos viendo las diferencias entre ambos poco a
poco. De momento, recuerda que el tipo primitivo es algo elemental y el objeto algo complejo.
Supn una cesta de manzanas en la calle: algo elemental. Supn una cesta de manzanas
dentro de una nave espacial (considerando el conjunto nave + cesta): algo complejo. La
informacin que portan puede ser la misma, pero no son lo mismo.
2. Para qu tener esa aparente duplicidad entre tipos primitivos y tipos envoltorio? Esto
es una cuestin que atae a la concepcin del lenguaje de programacin. Tener en cuenta una
cosa: un tipo primitivo es un dato elemental y carece de mtodos, mientras que un objeto es
una entidad compleja y dispone de mtodos. Por otro lado, de acuerdo con la especificacin de
Java, es posible que necesitemos utilizar dentro de un programa un objeto que porte como
contenido un nmero entero. Desde el momento en que sea necesario un objeto habremos de
pensar en un envoltorio, por ejemplo Integer. Inicialmente nos puede costar un poco distinguir
cundo usar un tipo primitivo y cundo un envoltorio en situaciones en las que ambos sean
vlidos. Seguiremos esta regla: usaremos por norma general tipos primitivos. Cuando para la
estructura de datos o el proceso a realizar sea necesario un objeto, usaremos un envoltorio.
3. Los nombres de tipos primitivos y envoltorio se parecen mucho. En realidad, excepto
entre int e Integer y char y Character, la diferencia se limita a que en un caso la inicial es
minscula (por ejemplo double) y en el otro es mayscula (Double). Esa similitud puede
confundirnos inicialmente, pero hemos de tener muy claro qu es cada tipo y cundo utilizar
cada tipo.
4. Una cadena de caracteres es un objeto. El tipo String en Java nos permite crear objetos
que contienen texto (palabras, frases, etc.). El texto debe ir siempre entre comillas. Muchas

Profesora: Zulma Anglica Argello Matas

Pgina 3

PROGRAMACION JAVA Sistema E-learning


veces se cree errneamente que el tipo String es un tipo primitivo por analoga con otros
lenguajes donde String funciona como una variable elemental. En Java no es as.
5. Hay distintos tipos primitivos enteros. Cul usar? Por norma general usaremos el tipo
int. Para casos en los que el entero pueda ser muy grande usaremos el tipo long. Los tipos byte
y short los usaremos cuando tengamos un mayor dominio del lenguaje.
6. Cuntos tipos de la biblioteca estndar de Java hay? Cientos o miles. Es imposible
conocerlos todos.
7. Un array es un objeto? Los arrays los consideraremos objetos especiales, los nicos
objetos en Java que carecen de mtodos.
Concepto de array: serie de elementos, cada uno de los cuales lleva asociado un ndice
numrico 0, 1, 2, 3, , n-1

2.3 Las variables.


Una variable en Java es un identificador que representa una palabra de memoria que
contiene informacin. El tipo de informacin almacenado en una variable slo puede ser del
tipo con que se declar esa variable.
Una variable se declara usando la misma sintaxis de C. Por ejemplo la siguiente tabla
indica una declaracin, el nombre de la variable introducida y el tipo de informacin que
almacena la variable:

Declaracin

identificador

Tipo

int i;

Entero

String s;

referencia a string

int a[];

referencia a arreglo de enteros

int[] b;

referencia a arreglo de enteros

Java posee dos grandes categoras de tipos para las variables:


Tipos Primitivos

referencias a Objetos

int, short, byte, long

Strings

char, boolean

Arreglos

float, double

otros objetos

Las variables de tipos primitivos almacenan directamente un valor que siempre


pertenece al rango de ese tipo. Por ejemplo una variable int almacena un valor entero como 1,
2, 0, -1, etc.
Esto significa que al asignar una variable entera a otra variable entera, se copia el valor
de la primera en el espacio que ocupa la segunda variable.

Profesora: Zulma Anglica Argello Matas

Pgina 4

PROGRAMACION JAVA Sistema E-learning


Las variables de tipo referencia a objetos en cambio almacenan direcciones y no
valores directamente. Una referencia a un objeto es la direccin de un rea en memoria
destinada a representar ese objeto. El rea de memoria se solicita con el operador new.
Al asignar una variable de tipo referencia a objeto a otra variable se asigna la direccin
y no el objeto referenciado por esa direccin. Esto significa que ambas variables quedan
refenciando el mismo objeto.
La diferencia entre ambas asignaciones se observa en la siguiente figura:

Esto tiene implicancias mayores ya que si se modifica el objeto referenciado por r,


entonces tambin se modifica el objeto referenciado por s, puesto que son el mismo objeto.
En Java una variable no puede almacenar directamente un objeto, como ocurre en C y C++.
Por lo tanto cuando se dice en Java que una variable es un string, lo que se quiere
decir en realidad es que la variable es una referencia a un string.
Tipos primitivos
En la siguiente tabla se indica para cada tipo primitivo el nmero de bits que se emplea en su
representacin y el rango de valores que se puede almacenar en las variables de estos tipos.
Tipo

Bits

Rango

Ejemplos

int

32

-2**31 .. 2**31-1

0, 1, 5, -120, ...

short

16

-2**15 .. 2**15-1

0, 1, 5, -120, ...

byte

-2**7 .. 2**7-1

0, 1, 5, -120, ...

long

64

-2**63 .. 2**63-1

0, 1, 5, -120, ...

boolean

n/a

false, true

Profesora: Zulma Anglica Argello Matas

Pgina 5

PROGRAMACION JAVA Sistema E-learning

char

16

n/a

'a', 'A', '0', '*', ...

float

32

IEEE

1.2

double

64

IEEE

1.2

Se dice que un tipo A es de mayor rango que un tipo B si A es un superconjunto de B.


Esto quiere decir que las variales de tipo B siempre se pueden asignar a variables de tipo A
(eventualmente con prdida de significancia).
Por ejemplo int es de mayor rango que short, que a su vez es de mayor rango que byte.
Float y double son de mayor rango que int. Double es de mayor rango que float.
Esto se puede resumir en:
double > float > long > int > short > byte

Expresiones
En Java cada expresin tiene un tipo que se determina durante la compilacin, es decir es
independiente del valor durante la ejecucin. Una expresin puede ser:

Una constante: 1, 1.0, true, etc.


El tipo de esta expresin es el tipo de la constante. En el ejemplo los tipos son int,
double y boolean respectivamente.
Una variable: i, s, a
El tipo de esta expresin es el tipo con que se declar aquella variable. En el ejemplo
los tipos son entero, referencia a string y referencia a arreglo.
El resultado de una operacin: i+1, a[1], etc.
El tipo se determina en funcin de los tipos de las expresiones que se indican como
argumentos de la operacin.

Java tiene prcticamente los mismos operadores de C y C++. Cada operador acepta
una, dos o tres expresiones de diversos tipos. A veces un operador no est definido para
argumentos de ciertos tipos. Por ejemplo la resta entre strings no est definida. Pero la suma
de strings est definida como la concatenacin. A continuacin veremos los operadores ms
frecuentes en Java.
Operadores binarios entre expresiones numricas
Smbolo

Operacin

Suma

Resta

Multiplicacin

Divisin

Resto

Los operandos y el resultado de estos operadores pueden ser:

Profesora: Zulma Anglica Argello Matas

Pgina 6

PROGRAMACION JAVA Sistema E-learning

Dominio

Rango

int*int

int

long*long

long

float*float

float

double*double

double

Al operar con byte y short, estos se convierten implcitamente a int.


Cuando los tipos de los operandos no coinciden, el operando de menor rango se
convierte implcitamente al tipo de mayor rango. El resultado de la operacin es del tipo
de mayor rango.

Ejemplos:
int a=1, b=2;
int c= a + b;
short s= 1;
int d= s + c; // s se convierte a int
float f= 1.0 + a; // a se convierte a float
Operadores unarios sobre expresiones numricas
Smbolo

Operacin

Argumento

+ exp

nada

int | long | float | double

- exp

cambio de signo

int | long | float | double

El resultado de estas operaciones es siempre del mismo tipo del operando.


Si el operando es byte o short entonces se convierte a int, se realiza la operacin y el
resultado es un int.
Operadores sobre variables enteras
Smbolo

Operacin

Argumento

++ var

preincremento

int | short | byte | long

-- var

predecremento

int | short | byte | long

var ++

postincremento

int | short | byte | long

var --

postdecremento

int | short | byte | long

El resultado de estas operaciones es siempre del mismo tipo del operando.


Ejemplos:

Profesora: Zulma Anglica Argello Matas

Pgina 7

PROGRAMACION JAVA Sistema E-learning


int a=1, b=2;
int c= +a;
int d= -(c+1);
b= a++; // b= 1, a=2
a= --b; // a=b= 0
(a+1)++; // error a+1 no es una variable
float f= a;
f++; // error f no es entero
Operadores binarios relacionales
Smbolo

Operacin

>

mayor

<

menor

>=

mayor igual

<=

menor igual

==

igual

!=

distinto

Los operandos y el resultado de estos operadores pueden ser:


Dominio

Rango

int*int

boolean

long*long

boolean

float*float

boolean

double*double

boolean

Operadores entre valores booleanos


Operacin

Significado

exp && exp

y-lgico

exp || exp

o-lgico

! exp

negacin

Los operandos y el resultado de estos operadores son siempre booleanos.


Los operadores && y || evalan la expresin del lado derecho slo si es necesario.
Ejemplos:

Profesora: Zulma Anglica Argello Matas

Pgina 8

PROGRAMACION JAVA Sistema E-learning


int a=1, b=2;
boolean v= ! a<=b && a==5 || b!=4;
boolean w= ((! a<=b) && a==5) || b!=4;
boolean w2= a<=b && a; // error a no es boolean
Conversiones: cast

Java realiza conversiones implcitas de menor a mayor rango.


Eventualmente hay prdida de significacia al convertir enteros a punto flotante.
Todas las conversiones de mayor a menor rango deben ser explcitas por medio del
operador de cast:
(tipo)expresin

Ejemplos:
int i= 1;
short s= 2;
int j= i+s;
s= a; // error short < int
s= (short)a; // Ok
i= 1.0; // error int < double
i= (int)1.0; // Ok
f= 1.0; // error float < double
f= (float)1.0; // Ok
f= 1.0f; // Ok
boolean v=(boolean)a; // error no existe conversin
Precedencia de Operadores
. () []
unarios: - + (cast)
*/%
+< > <= >= == !=
!
||
&&

2.4 Operadores.
Conocemos todos los operadores utilizados en el lenguaje Java.
Los operadores son muy similares a los de C++, ya lo advertimos en su momento.
Operadores Aritmticos: Los habituales:
Suma +.

Resta - .

Multiplicacin *.

Divisin /.

Profesora: Zulma Anglica Argello Matas

Pgina 9

PROGRAMACION JAVA Sistema E-learning

Resto de la Divisin %.

Operadores de Asignacin: El principal es '=' pero hay ms operadores de asignacin con


distintas funciones que explicamos brevemente ahora.

'+=' : op1 += op2 op1 = op1 + op2

'-=' : op1 -= op2 op1 = op1 - op2

'*=' : op1 *= op2 op1 = op1 * op2

'/=' : op1 /= op2 op1 = op1 / op2

'%=' : op1 %= op2 op1 = op1 % op2

Operadores Unarios: El mas (+) y el menos (-). Para cambiar el signo del operando.
Operador Instanceof: Nos permite saber si un objeto pertenece a una clase o no.

NombreObjeto instanceof NombreClase


Operadores Incrementales: Son los operadores que nos permiten incrementar las variables
en una unidad. Se pueden usar delante y detrs de la variable dependiendo de lo que
queramos, es decir, si queremos que incremente o viceversa antes de utilizar o lo contrario.

'++'

'--'

Operadores Relacionales: Permiten comparar variables segn relacin de


igualdad/desigualdad o relaccin mayor/menor. Devuelven siempre un valor boolean.

'>': Mayor que

'<': Menor que

'==': Iguales

'=': Distintos

'>=': Mayor o igual que

'<=': Menor o igual que

Operadores Lgicos: Nos permiten construir expresiones lgicas.

'&&': devuelve true si ambos operandos son true.

'||': devuelve true si alguno de los operandos son true.

'!' : Niega el operando que se le pasa.

'&': devuelve true si ambos operandos son true, evalundolos ambos.

'|': devuelve true uno de los operandos es true, evalundolos ambos.

Operador de concatenacin con cadena de caracteres '+':

Por Ejemplo: System.out.println("El total es"+ result +"unidades");

Operadores que actan a nivel de bits: Son mucho menos utilizados por eso los explicamos
ms por encima.

'>>': desplazamiento a la derecha de los bits del operando

Profesora: Zulma Anglica Argello Matas

Pgina 10

PROGRAMACION JAVA Sistema E-learning

'<<': desplazamiento a la izquierda de los bits de operando

'&': operador and a nivel de bit.

'|': operador or a nivel de bit

2.5 Cadenas de caracteres.


En Java hemos visto que cuando queremos almacenar un valor entero definimos una
variable de tipo int, si queremos almacenar un valor con decimales definimos una variable de
tipo float. Ahora si queremos almacenar una cadena de caracteres (por ejemplo un nombre de
una persona) debemos definir un objeto de la clase String.
Ms adelante veremos en profundidad y detenimiento los conceptos de CLASE y OBJETO, por
ahora solo nos interesa la mecnica para trabajar con cadenas de caracteres.
Problema 1:
Solicitar el ingreso del nombre y edad de dos personas. Mostrar el nombre de la persona con
mayor edad.
Programa:
import java.util.Scanner;
public class CadenaDeCaracteres1 {
public static void main(String[] ar) {
Scanner teclado=new Scanner(System.in);
String nombre1,nombre2;
int edad1,edad2;
System.out.print("Ingrese el nombre:");
nombre1=teclado.next();
System.out.print("Ingrese edad:");
edad1=teclado.nextInt();
System.out.print("Ingrese el nombre:");
nombre2=teclado.next();
System.out.print("Ingrese edad:");
edad2=teclado.nextInt();
System.out.print("La persona de mayor edad es:");
if (edad1>edad2) {
System.out.print(nombre1);
} else {
System.out.print(nombre2);
}
}
}
Para almacenar un nombre debemos definir una variable de tipo String y su ingreso por
teclado se hace llamando al mtodo next() del objeto teclado:
nombre1=teclado.next();
La primera salvedad que tenemos que hacer cuando utilizamos el mtodo next() es que solo
nos permite ingresar una cadena de caracteres con la excepcin del espacio en blanco (es
decir debemos ingresar un nombre de persona y no su nombre y apellido separado por un
espacio en blanco)
Veamos que existe otro mtodo llamado nextLine() que nos permite cargar espacios en
blanco pero para su uso se complica cuando cargamos otras valores de tipo distinto a String
(por ejemplo int, float etc.)

Profesora: Zulma Anglica Argello Matas

Pgina 11

PROGRAMACION JAVA Sistema E-learning


Problema 2:
Solicitar el ingreso del apellido, nombre y edad de dos personas. Mostrar el nombre de
la persona con mayor edad. Realizar la carga del apellido y nombre en una variable de tipo
String.
Programa:
import java.util.Scanner;
public class CadenaDeCaracteres2 {
public static void main(String[] ar) {
Scanner teclado=new Scanner(System.in);
String apenom1,apenom2;
int edad1,edad2;
System.out.print("Ingrese el apellido y el nombre:");
apenom1=teclado.nextLine();
System.out.print("Ingrese edad:");
edad1=teclado.nextInt();
System.out.print("Ingrese el apellido y el nombre:");
teclado.nextLine();
apenom2=teclado.nextLine();
System.out.print("Ingrese edad:");
edad2=teclado.nextInt();
System.out.print("La persona de mayor edad es:");
if (edad1>edad2) {
System.out.print(apenom1);
} else {
System.out.print(apenom2);
}
}
}
Cuando se ingresa una cadena con caracteres en blanco debemos tener en cuenta en llamar
al mtodo nextLine().
Una dificultad se presenta si llamamos al mtodo nextLine() y previamente hemos llamado al
mtodo nextInt(), esto debido a que luego de ejecutar el mtodo nextInt() queda almacenado
en el objeto de la clase Scanner el caracter "Enter" y si llamamos inmediatamente al mtodo
nextLine() este almacena dicho valor de tecla y contina con el flujo del programa. Para
solucionar este problema debemos generar un cdigo similar a:
System.out.print("Ingrese edad:");
edad1=teclado.nextInt();
System.out.print("Ingrese el apellido y el nombre:");
teclado.nextLine();
apenom2=teclado.nextLine();
Como vemos llamamos al mtodo nextLine() dos veces, la primera retorna la tecla "Enter" y la
segunda se queda esperando que ingresemos el apellido y nombre (tener en cuenta que esto
es necesario solo si previamente se llam al mtodo nextInt() o nextFloat().
Problema 3:
Solicitar el ingreso de dos apellidos. Mostrar un mensaje si son iguales o distintos.
Programa:
import java.util.Scanner;
public class CadenaDeCaracteres3 {
public static void main(String[] ar) {
Scanner teclado=new Scanner(System.in);

Profesora: Zulma Anglica Argello Matas

Pgina 12

PROGRAMACION JAVA Sistema E-learning

String apellido1,apellido2;
System.out.print("Ingrese primer apellido:");
apellido1=teclado.next();
System.out.print("Ingrese segundo apellido:");
apellido2=teclado.next();
if (apellido1.equals(apellido2)) {
System.out.print("Los apellidos son iguales");
} else {
System.out.print("Los apellidos son distintos");
}
}
}
Para comparar si el contenido de dos String son iguales no podemos utilizar el operador ==.
Debemos utilizar un mtodo de la clase String llamado equals y pasar como parmetro el String
con el que queremos compararlo:
if (apellido1.equals(apellido2)) {
El mtodo equals retorna verdadero si los contenidos de los dos String son exactamente
iguales, esto hace que se ejecute el bloque del verdadero.
Recordemos que hemos utilizado el mtodo next() para la carga de los String, luego esto hace
que no podamos ingresar un apellido con espacios en blanco (podemos probar que si
ingresamos por ejemplo "Rodriguez Rodriguez" en el primer apellido, luego se carga la cadena
"Rodriguez" en la variable apellido1 y "Rodriguez" en la variable apellido2 (con esto hacemos
notar que cada vez que ingresamos un espacio en blanco cuando utilizamos el mtodo next()
los caracteres que siguen al espacio en blanco son recuperados en la siguiente llamada al
mtodo next())
El mtodo equals retorna verdadero si los contenidos de los dos String son
exactamente iguales, es decir si cargamos "Martinez" en apellido1 y "martinez" en apellido2
luego el mtodo equals retorna falso ya que no es lo mismo la "M" mayscula y la "m"
minscula.
En el caso que necesitemos considerar igual caracteres maysculas y minsculas
podemos utilizar el mtodo equalsIgnoreCase:
if (apellido1.equalsIgnoreCase(apellido2)) {
System.out.print("Los apellidos son iguales sin tener en cuenta maysculas y
minsculas");
} else {
System.out.print("Los apellidos son distintos sin tener en cuenta maysculas y
minsculas");
}

2.6 Matrices y Arrays.


Matrices, arrays o vectores en java.
En java, a diferencia del lenguaje C, existe un tipo de variable especial, el Array o
matriz. Este tipo de variables no es ms que un conjunto secuencial de memoria a las que se
accede a travs de un ndice de posicin.
Las matrices en Java son objetos, por lo que cuentan con propiedades y mtodos para
manipularlos. Se pueden declarar matrices de tipos de datos primitivos y de objetos.
Ms abajo tienen la sintaxis bsica de declaracin de arrays.

Profesora: Zulma Anglica Argello Matas

Pgina 13

PROGRAMACION JAVA Sistema E-learning

Sintaxis:

tipodedato nombre [] [= new tipodedatocapacidad o

tipodedato[] nombre [= new tipodedatocapacidad

Como pueden observar puedes inicializar un array al momento de declararlo o postergar


esta operacin para cuando sea necesario.
Para inicializar un array existen 2 maneras:

int[] matriz=new int[4] o

int[] matriz={100,200,302,400}

Como podrn concluir, en la primera declaras el array nada ms, dicindole la cantidad de
memoria secuencial que se debe reservar, en el segundo ejemplo se inicializa el array dndole
los valores que va a contener (obviamente la cantidad de memoria secuencial reservada ser
igual a la cantidad de elementos insertados).
Al momento de inicializar una matriz de la manera :

int[] matriz=new int[4]

cada posicin de la matriz ser inicializada con el valor predeterminado del tipo de variable. Por
ejemplo si la matriz es de tipo boolean, todas las posiciones de la matriz sern inicializadas con
el valor false (ya que este es valor predeterminado de este tipo de dato), por el contrario si la
matriz fuese de un tipo no primitivo, el valor que contendr cada casilla ser null.
A continuacin tienes una lista de los valores predeterminados de cada tipo de dato:
Tipo de Dato-->Valor
byte-->0
short-->0
int-->0
long-->0
float-->0.0
double-->0.0
char-->/u0000
boolean-->false
Object (Cualquier tipo de Objeto)-->null
Para obtener el tamao de un array de manera dinmica se utiliza la propiedad .length.
Esta propiedad es comn para todos los arrays. Tambin es importante saber que las matrices

Profesora: Zulma Anglica Argello Matas

Pgina 14

PROGRAMACION JAVA Sistema E-learning

se empiezan a enumerar desde el nmero cero (0), por tanto para acceder al valor almacenado
en la ltima posicin debers colocar el tamao de la matriz menos 1 unidad.
Al momento de tratar de acceder a una posicin fuera del rango de la matriz se lanzar
un excepcin de tipo java.lang.ArrayIndexOutOfBoundsException (esta excepcin es una
excepcin no chequeada, por lo que no es necesario colocar un bloque try/catch en el cdigo)
Pasaremos con un ejemplo:
public class Arrays01 {
public static void main(String args[]) {
int ita_nro[] = new int[4];
for (int it_cont = 0; it_cont < 4; it_cont++){
ita_nro[it_cont] = it_cont * 2;
System.out.println(ita_nro[it_cont]);
}
}
}

2.7 mbito de las variables.


PARMETROS ACTUALES Y FORMALES
Parmetros actuales: Son los argumentos que aparecen en la llamada a un mtodo.
Contienen los valores que se le pasan al mtodo. Un parmetro actual puede ser una variable,
un objeto, un valor literal vlido, etc.
Parmetros formales: Son los argumentos que aparecen en la cabecera del mtodo. Reciben
los valores que se envan en la llamada al mtodo. Se utilizan como variables normales dentro
del mtodo.
Los parmetros actuales y los formales deben coincidir en nmero, orden y tipo. Si
el tipo de un parmetro actual no coincide con su correspondiente parmetro formal, el sistema
lo convertir al tipo de este ltimo, siempre que se trate de tipos compatibles. Si no es posible
la conversin, el compilador dar los mensajes de error correspondientes.
Si el mtodo devuelve un valor, la llamada al mtodo puede estar incluida en una expresin
que recoja el valor devuelto.
MBITO DE UNA VARIABLE
El mbito o alcance de una variable es la zona del programa donde la variable es
accesible.
El mbito lo determina el lugar donde se declara la variable.
En Java las variables se pueden clasificar segn su mbito en:
- Variables miembro de una clase o atributos de una clase
- Variables locales
- Variables de bloque
Variable miembro o atributos de una clase
Son las declaradas dentro de una clase y fuera de cualquier mtodo.

Profesora: Zulma Anglica Argello Matas

Pgina 15

PROGRAMACION JAVA Sistema E-learning


Aunque suelen declararse al principio de la clase, se pueden declarar en cualquier lugar
siempre que sea fuera de un mtodo.
Son accesibles en cualquier mtodo de la clase.
Pueden ser inicializadas.
Si no se les asigna un valor inicial, el compilador les asigna uno por defecto:
- 0 para las numricas
- '\0' para las de tipo char
- null para String y resto de referencias a objetos.
Variables locales
Son las declaradas dentro de un mtodo.
Su mbito comienza en el punto donde se declara la variable.
Estn disponibles desde su declaracin hasta el final del mtodo donde se declaran.
No son visibles desde otros mtodos.
Distintos mtodos de la clase pueden contener variables con el mismo nombre. Se trata de
variables distintas.
El nombre de una variable local debe ser nico dentro de su mbito.
Si se declara una variable local con el mismo nombre que una variable miembro de la clase, la
variable local oculta a la miembro. La variable miembro queda inaccesible en el mbito de la
variable local con el mismo nombre.
Se crean en memoria cuando se declaran y se destruyen cuando acaba la ejecucin del
mtodo.
No tienen un valor inicial por defecto. El programador es el encargado de asignarles valores
iniciales vlidos.
Los parmetros formales son variables locales al mtodo.
Variables de bloque
Son las declaradas dentro de un bloque de instrucciones delimitado por llaves { }.
Su mbito comienza en el punto donde se declara la variable.
Estn disponibles desde su declaracin hasta el final del bloque donde se declaran.
No son visibles desde otros bloques.
Distintos bloques pueden contener variables con el mismo nombre. Se trata de variables
distintas.
Si un bloque de instrucciones contiene dentro otro bloque de instrucciones, en el bloque interior
no se puede declarar una variable con el mismo nombre que otra del bloque exterior.
Se crean en memoria cuando se declaran y se destruyen cuando acaba la ejecucin del
bloque.
No tienen un valor inicial por defecto. El programador es el encargado de asignarles valores
iniciales vlidos.
Ejemplo de variables de bloque en java:

Profesora: Zulma Anglica Argello Matas

Pgina 16

PROGRAMACION JAVA Sistema E-learning

2.8 Control de flujo.


El control del flujo es la manera que tiene un lenguaje de programacin de provocar
que el flujo de la ejecucin avance y se ramifique en funcin de los cambios de estado de los
datos. Java, en este aspecto, no utiliza los principios de diseo orientado a objetos, sino que
las sentencias de control del flujo del programa se han tomado del C/C++. A continuacin se
tratan todos los mecanismos que proporciona Java para conseguir este control y decidir qu
partes del cdigo ejecutar.

2.9 Estructuras de iteracin.


Supongamos que nos piden que realicemos un dibujo sencillo que se despliegue por
pantalla. El objetivo es mostrar un cuadrado de 5 filas por 5 columnas trazado con cualquier
carcter. Con los elementos de programacin que ya conocemos, realizamos un programa que
cumpla con este requisito.

public class Cuadrado{


public static void main(String args[]){
System.out.println("*****");
System.out.println("*****");
System.out.println("*****");
System.out.println("*****");

Profesora: Zulma Anglica Argello Matas

Pgina 17

PROGRAMACION JAVA Sistema E-learning

System.out.println("*****");
}
}

Bsicamente este programa cumple con el objetivo. Pero... No notan que algo anda
mal? Se repiti cinco veces una instruccin. Qu ocurrira sin nos solicitaran una figura ms
grande? Tendramos que agregar ms lneas de cdigo. Y si en vez de una figura, se les
ocurra pedirnos que listramos una lista de nmeros del uno al milln, el cdigo sera inmenso.
Tambin imagnense lo que tardaramos en escribirlo.
Sin embargo tenemos un recurso para acudir en cuanto surjan estos problemas. Son
las estructuras de iteracin. Una iteracin consiste en una repeticin de un bloque de
sentencias un nmero determinado de veces o hasta que se cumpla una condicin.
De esta forma el cdigo puede simplificarse notablemente. Antes de entrar en los
detalles de la implementacin con Java, veremos cmo podemos realizar algunas rutinas en
pseudocdigo:

Repetir 5 veces:
Imprimir ("*****");

Le pasamos al intrprete la tarea de reiterar una accin. Nosotros solamente escribimos una
vez lo que hay que hacer.
Siguiendo con una segunda aproximacin, podramos agregarle un registro que cuente el
nmero de iteraciones. Adems adicionamos una condicin para que indicar que el registro no
debe pasar de cierto nmero. De esta manera, el pseudocdigo quedar as:

N = 1;
Mientras que N <= 5
Imprimir ("*****");
N = N + 1;

Lo que hicimos fue inicializar el contador, agregar una condicin de corte, indicar que sentencia
se debe repetir y finalmente incrementamos el contador. La condicin es una expresin lgica
que debe tener un valor de verdadero o falso. En la ejecucin, cada vez que termina la ltima
sentencia vuelve a evaluar la condicin, si se cumple sigue la iteracin, de lo contrario termina.
Esta es una estructura de iteracin til para los casos en donde sabemos a priori cuantas
repeticiones se deben ejecutar. Con pocos retoques se pueden realizar iteraciones
desconociendo el nmero de ciclos.

Profesora: Zulma Anglica Argello Matas

Pgina 18

PROGRAMACION JAVA Sistema E-learning

Realicemos un programa que transforme un nmero decimal en binario. En la vida real, para
hacer esto, realizamos sucesivas divisiones por 2 al nmero decimal. A cada divisin tomamos
el resto y continuamos hasta que el resultado sea cero.
Por ejemplo: Tenemos que pasar el nmero 25 a binario

25 mod 2 = 1; 25 div 2 = 12;


12 mod 2 = 0; 12 div 2 = 6;
6 mod 2 = 0; 6 div 2 = 3;
3 mod 2 = 1; 3 div 2 = 1;
1 mod 2 = 1; 1 div 2 = 0;

(NOTA: en java actualmente se usa el signo "%" para hacer el mod)

El resultado es 11001

En general, no sabemos cuantas divisiones tendremos que realizar. Pero si sabemos que
debemos llegar a cero con la divisin. Las tareas que repetimos son las de tomar el resto y el
resultado de la divisin. Con estos datos en mente, podremos realizar un algoritmo.

DECIMAL = 25;
Mientras que DECIMAL > 0 :
BINARIO = DECIMAL % 2 + BINARIO;
DECIMAL = DECIMAL / 2;

2.10 Sentencias de control de flujo.


Las sentencias de control de flujo determinan el orden en que se ejecutarn las otras
sentencias dentro del programa. El lenguaje Java soporta varias sentencias de control de flujo,
incluyendo.

toma de decisiones if-else, switch-case


bucles for, while, do-while
excepciones try-catch-finally, throw
miscelaneas break, continue, label:, return
Aqu slo vamos a tratar las sentencias de tomas de decisiones y los bucles, dejando las
excepciones para otra ocasin.
Sentencias de toma de decisiones

La sentencia if-else

Profesora: Zulma Anglica Argello Matas

Pgina 19

PROGRAMACION JAVA Sistema E-learning


La sentencia if-else de java proporciona a los programas la posibilidad de ejecutar
selectivamente otras sentencias basndose en algn criterio. Esta es la versin ms sencilla de
la sentencia if: la sentencia gobernada por if se ejecuta si alguna codicin es verdadera.
Generalmente, la forma sencilla de if se puede escribir as.
if (expresin)
sentencia;
Pero, y si quieres ejecutar un juego diferente de sentencias si la expresin es falsa? Bien,
puedes utilizar la sentencia else, que ejecuta la condicin opuesta
if (expresin)
sentencia;
else
otrasentencia;
Este uso particular de la sentencia else es la forma de capturarlo todo.
Existe otra forma de la sentecia else, else if que ejecuta una sentencia basada en otra
expresin. Como ejemplo, un programa que asigna notas basadas en la puntuacin de un
examen, un Sobresaliente para una puntuacin del 90% o superior, un Notable para el 80% o
superior y dems:
int puntuacion;
String nota;
if (puntuacion >= 90) {
nota = "Sobresaliente";
} else if (puntuacion >= 80) {
nota = "Notable";
} else if (puntuacion >= 70) {
nota = "Bien";
} else if (puntuacion >= 60) {
nota = "Suficiente";
} else {
nota = "Insuficiente";
}
Una sentencia if puede tener cualquier nmero de sentencias de acompaamiento else if.

La sentencia switch-case
La sentencia switch se utiliza para realizar sentencias condicionalmente basadas en alguna
expresin. Por ejemplo, un programa contiene un entero llamado mes cuyo valor indica el mes
en alguna fecha, y se quiere mostrar el nombre del mes basndose en su nmero entero
equivalente. Se podra utilizar la sentencia switch de Java para realizar esta tarea.
int mes;
...
switch (mes) {
case 1: System.out.println("Enero"); break;
case 2: System.out.println("Febrero"); break;
case 3: System.out.println("Marzo"); break;
case 4: System.out.println("Abril"); break;
case 5: System.out.println("May0"); break;
case 6: System.out.println("Junio"); break;
case 7: System.out.println("Julio"); break;

Profesora: Zulma Anglica Argello Matas

Pgina 20

PROGRAMACION JAVA Sistema E-learning


case 8: System.out.println("Agosto"); break;
case 9: System.out.println("Septiembre"); break;
case 10: System.out.println("Octubre"); break;
case 11: System.out.println("Noviembre"); break;
case 12: System.out.println("Diciembre"); break;
default: System.out.println("No es un mes vlido");
break;
}
La sentencia switch evala su expresin, en este caso el valor de mes, y ejecuta la sentencia
case apropiada.
Decidir cundo utilizar las sentencias if o switch depende del juicio personal. Se puede decidir
cul utilizar basndose en la buena lectura del cdigo o en otros factores. Cada sentencia case
debe ser nica y el valor proporcionado a cada sentencia case debe ser del mismo tipo que el
tipo de dato devuelto por la expresin proporcionada a la sentencia switch.
Otro punto de interes en la sentencia switch son las sentencias break despus de cada case.
La sentencia break hace que el control salga de la sentencia switch y contine con la siguiente
lnea. La sentencia break es necesaria porque las sentencias case se siguen ejecutando hacia
abajo. Esto es, sin un break explcito, el flujo de control seguira secuencialmente a travs de
las sentencias case siguientes.
Finalmente, puede utilizar la sentencia default al final de la sentencia switch para manejar los
valores que no se han manejado explcitamente por una de las sentencias case.
Sentencias de Bucle

El bucle while
Una sentencia while realiza una accin mientras se cumpla una cierta condicin. La sintaxis
general de la sentencia while es.
while (expresin)
sentencia;
Esto es, mientras la expresin sea verdadera, ejecutar la sentencia.
sentencia puede ser una sla sentencia o puede ser un bloque de sentencias. Un bloque de
sentencias es un juego de sentencias legales de java contenidas dentro de corchetes({y }).
Adems de while Java tiene otros dos constructores de bucles que puedes utilizar en tus
programas.

El bucle for
Puedes utilizar este bucle cuando conozcas los lmites del bucle (su instruccin de
inicializacin, su criterio de terminacin y su instruccin de incremento). Por ejemplo, el bucle
for se utiliza frecuentemente para iterar sobre los elementos de un array, o los caracteres de
una cadena.
// a es un array de cualquier tipo
...
int i;
int length = a.length;
for (i = 0; i < a.length; i++) {

Profesora: Zulma Anglica Argello Matas

Pgina 21

PROGRAMACION JAVA Sistema E-learning


System.out.println(a[i]);
}
Si sabes cuando estas escribiendo el programa que quieres empezar en el inicio del array,
parar al final y utilizar cada uno de los elementos. Entonces la sentencia for es una buena
eleccin. La forma general del bucle for puede expresarse asi.
for (inicializacin; terminacin; incremento)
sentencias
inicializacin es la sentencia que inicializa el bucle. Se ejecuta una vez al iniciar el bucle.
terminacin es una sentencia que determina cuando se termina el bucle. Esta expresin se
evala al principio de cada iteraccin en el bucle. Cuando la exprein se evala a false el bucle
se termina.
Finalmente, incremento es una expresin que se invoca en cada interaccin del bucle.
Cualquiera (o todos) de estos componentes puden ser una sentencia vaca (un punto y coma).

el bucle do-while
Java proporciona otro bucle, el bucle do-while,que es similar al bucle while que se vi al
principio, excepto en que la expresin se aval al final del bucle.
do {
sentencias
} while (Expresin Booleana);
La sentencia do-while se usa muy poco en la construccin de bucles pero tiene sus usos. Por
ejemplo, es conveniente utilizar la sentencia do-while cuando el bucle debe ejecutarse al
menos una vez.
Ejercicios de Ejemplo
El lenguaje Java tiene varias estructuras de control para bucles y bifurcaciones condicionales.
El famoso Hola Mundo e ingreso de datos a travs del programa en ejecucin:
//Famoso programa en JAVA
//Importamos lo necesario
import java.util.Scanner;
public class tst1 {
//Mtodo principal
public static void main(String[] args) {
//El famoso Hola MUNDO!
System.out.println("Hola MUNDO");
//Declaramos variables
int suma,b;
int a=5;

Profesora: Zulma Anglica Argello Matas

Pgina 22

PROGRAMACION JAVA Sistema E-learning


//Para utilizar Scanner debemos de importar java.util.Scanner
Scanner reader = new Scanner(System.in);
//Le decimos al usuario que digite un numero para b
System.out.print("Digite b: ");
b=reader.nextInt();
//Realizamos la suma y lo mostramos por pantalla
suma=a+b;
System.out.println("El resultado es: \t"+suma);
}
}
Ahora entramos en la parte de las estructuras de control, antes de continuar:
Ejemplo completo:
//Importamos lo necesario
import java.util.Scanner;
public class tst2 {
//Mtodo principal
public static void main(String[] args) {
int tabla;
System.out.println("Que Tabla de Multiplicar Deseas Revisar?");
Scanner reader = new Scanner(System.in);
tabla=reader.nextInt();
System.out.println("******TABLA DE MULTIPLICAR GENERADA******");
//Uso del FOR
for(int var1=1;var1<11;var1++)
System.out.println("Multiplicacion de:"+tabla+"x"+var1+"="+(var1*tabla));
//Uso de IF-ELSE
int test=10;
if(test==10){
System.out.println("test vale 10!");
}
else{
System.out.println("test es distinto de 10");
}

Profesora: Zulma Anglica Argello Matas

Pgina 23

PROGRAMACION JAVA Sistema E-learning


//Uso del while
int x=0;
while(x!=10)
{
x++;
System.out.println("Vuelta:"+x);
}
//Uso del switch
switch (x){
case 10:
{
System.out.println("10! xD");
}
break;
default: System.out.println("Distinto de 10! xD");
break;
}
x=0;
//Uso del Do-While
do{
System.out.println("Nmero: "+x);
x++;
}
while(x!=10);
//Definicin de array
int[] array={1,2};
//Uso del FOR
for(int y=0;y<array.length;y++){
System.out.println(array[y]);
}
}
}
Excepciones

Profesora: Zulma Anglica Argello Matas

Pgina 24

PROGRAMACION JAVA Sistema E-learning


try-catch-throw
try { sentencias; } catch( Exception ) { sentencias; }
Java implementa excepciones para facilitar la construccin de cdigo robusto. Cuando ocurre
un error en un programa, el cdigo que encuentra el error lanza una excepcin, que se puede
capturar y recuperarse de ella. Java proporciona muchas excepciones predefinidas.
Control General del Flujo
break [etiqueta] continue [etiqueta] return expr; etiqueta: sentencia;
En caso de que nos encontremos con bucles anidados, se permite el uso de etiquetas para
poder salirse de ellos, por ejemplo:
uno: for( ) { dos: for( ) { continue; // seguira en el bucle interno continue uno; // seguira en el bu
cle principal break uno; // se saldra del bucle principal } }
En el cdigo de una funcin siempre hay que ser consecuentes con la declaracin que se haya
hecho de ella. Por ejemplo, si se declara una funcin para que devuelva un entero, es
imprescindible que se coloque un return final para salir de esa funcin, independientemente de
que haya otros en medio del cdigo que tambin provoquen la salida de la funcin. En caso de
no hacerlo se generar un Warning, y el cdigo Java no se puede compilar con Warnings.
int func() { if( a == 0 ) return 1; return 0; // es imprescindible porque se retorna un entero }

Profesora: Zulma Anglica Argello Matas

Pgina 25

Potrebbero piacerti anche