0% encontró este documento útil (0 votos)
14 vistas22 páginas

Introducción a la Programación en Java

El documento introduce conceptos básicos de programación en Java, incluyendo: 1) Describe las generalidades de Java, como su naturaleza de lenguaje orientado a objetos y plataforma de ejecución. 2) Explica los elementos clave de una aplicación simple en Java, como la estructura de clases, métodos y variables. 3) Presenta los tipos de datos primitivos en Java, operadores y estructuras de control básicas.

Cargado por

albert
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
14 vistas22 páginas

Introducción a la Programación en Java

El documento introduce conceptos básicos de programación en Java, incluyendo: 1) Describe las generalidades de Java, como su naturaleza de lenguaje orientado a objetos y plataforma de ejecución. 2) Explica los elementos clave de una aplicación simple en Java, como la estructura de clases, métodos y variables. 3) Presenta los tipos de datos primitivos en Java, operadores y estructuras de control básicas.

Cargado por

albert
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Contenido

Introduccin a la Programacin en Java

Generalidades de Java
Elementos de una aplicacin simple
Consideraciones sobre tipos primitivos numricos
Una aplicacin simple interactiva
Uso de arreglos con tipos primitivos

Franco Guidi Polanco


Escuela de Ingeniera Industrial
Pontificia Universidad Catlica de Valparaso, Chile
fguidi@[Link]

Franco Guidi Polanco

14/08/2007

Qu es JAVA?
Java es:

Seccin 1
Generalidades de Java

un lenguaje de programacin orientado a objetos;


y
una plataforma de ejecucin para programas
escritos en lenguaje Java

Java fue desarrollado por un equipo de


investigadores de SUN Microsystems.

Franco Guidi Polanco

14/08/2007

Desarrollo y ejecucin de aplicaciones en otros


lenguajes

Para qu sirve JAVA?


Java permite:

Compilador
para
Windows

Construir aplicaciones: programas computacionales


que apoyan el trabajo o resuelven problemas
especficos de usuarios (funcionan stand-alone).
Construir applets: programas de menor envergadura
que se ejecutan al momento de cargar una pgina
WEB (son ejecutados por un browser).

Program Hola;
begin
i :=1;
writeln( i )
end.

111000 1
1110001000111111111
00011101111011010

Compilador
para
Linux

0000110101100 00111
00011100010001000
0001110

Cdigo fuente

Ejemplo de applet:
[Link]

Compilador
para
Solaris

11100000101100 00111
00000101000
0001111110111111010

Cdigo objeto
Franco Guidi Polanco

14/08/2007

Desarrollo y ejecucin de aplicaciones en JAVA

14/08/2007

Intrprete Java: Java Virtual Machine (JVM)

Intrprete
Java
Windows

Compilador
Java
Windows

Franco Guidi Polanco

Bytecode

101001010
001001001

111000 1
1110001000111111111
00011101111011010

public class
Hola {
public static
...
i=1;
[Link]..
}
}

111100001
1110000
000011110
0001111

Compilador
Java
Linux

Bytecode

Intrprete
Java
Linux

JVM Windows

101011
1 11
1
0

0000110101100 00111
00011100010001000
0001110

Cdigo fuente

JVM Linux

JVM Solaris

001010
1011 1
011
1

111111
1101
1001
1

Intrprete
Java
Solaris

Compilador
Java
Solaris

11100000101100 00111
00000101000
0001111110111111010

Franco Guidi Polanco

14/08/2007

Franco Guidi Polanco

14/08/2007

Componentes de Java

Java en distintos tamaos

Java se compone de:


Compilador (Java-compiler)
Intrprete (Java)
Biblioteca de clases (Java API o Application
Programmer Interface)
Utilitarios de desarrollo (para debug, documentacin,
etc.)

J2ME: Java 2
Micro Edition
J2SE: Java 2
Standard Edition

Lo anterior se encuentra en el SDK distribuido


por SUN-Microsystems

J2EE: Java 2
Enterprise Edition
Franco Guidi Polanco

14/08/2007

Franco Guidi Polanco

14/08/2007

10

Cmo es una aplicacin en Java?


El programa Hola Mundo:
Cdigo fuente

Seccin 2
Compilacin

Elementos de una aplicacin simple en


Java

public class Saluda{


public static void main (String[] arg) {
[Link]( hello world );
}
}
c:\>javac [Link]
c:\>

Ejecucin

c:\>java Saluda
hello world
c:\>

Franco Guidi Polanco

14/08/2007

12

Desarrollo y ejecucin e aplicacin en Java


public class Saluda{
public static void main (String[] arg) {
[Link]( hello world );
}
}

Cdigo
fuente

Tipos de datos en Java


Los tipos de datos utilizados por programas en
Java se clasifican en:

[Link]

Compilador Java

[Link]

101001010
001001001

Bytecode
JVM Windows
101011
1 11
1
hello
0

world

Franco Guidi Polanco

JVM Linux

Clases e interfaces: sirven para definir variables que


almacenan tipos de datos estructurados, con las
funciones asociadas.

JVM Solaris

001010
1011 1
011
hello
1

world

111111
1101
1001
1 hello

14/08/2007

world

13

Tipos de datos primitivos

14/08/2007

14/08/2007

14

Tipo entero: byte, short, int y long.

Entero
Punto flotante
Lgico
Caracter

Franco Guidi Polanco

Franco Guidi Polanco

Tipos de datos primitivos (cont.)

Java soporta los siguientes tipos de datos


primitivos:

Primitivos: sirven para definir variables que guardan


valores numricos, lgicos y caracteres unitarios.

15

Tipo

Almacena

Rango

byte

Entero de 8 bit

-128 hasta 127

short

Entero de 16 bit

-32.768 hasta 32.767

int

Entero de 32 bit

long

Entero de 64 bit

-[Link] hasta [Link]


-[Link].854.755.808 hasta
[Link].854.755.807

Franco Guidi Polanco

14/08/2007

16

Tipos de datos primitivos (cont.)

Tipos de datos primitivos (cont.)

Tipo punto flotante: float y double.


Tipo

Almacena

Rango

float

Punto flotante 32 bit

7 dgitos significativos (10-46, 1038)

double

Punto flotante 64 bit

15 dgitos significativos (10-324, 10308)

Tipo caracter: char.


Tipo

Almacena

char

Rango

Carcter Unicode

Tipo lgico: boolean.

Franco Guidi Polanco

14/08/2007

17

Tipo

Almacena

Rango

boolean

Lgico

false y true

Franco Guidi Polanco

14/08/2007

18

Operadores bsicos para tipos primitivos

Tipo de dato String

Operador de asignacin:

El String es un tipo de dato que permite trabajar


con cadenas de caracteres, por ejemplo:

Hola mundo, Mario Mora, 12/10/99, A, .

Operadores numricos:

Es una clase, no un tipo primitivo, pero se utiliza


en forma muy similar a estos ltimos.

Binarios:
+ (suma), - (resta), * (multiplicacin), / (divisin),
% (mdulo o resto de la divisin entera)
Unarios:
++ (autoincremento), -- (autodecremento)

Franco Guidi Polanco

14/08/2007

19

Franco Guidi Polanco

14/08/2007

20

Operadores bsicos para tipos primitivos (cont.)

Estructuras de control
Decisin

Operadores relacionales:
== (igual a)
!= (distinto de)
< (menor que), <= (menor o igual que),
> (mayor que), >= (mayor o igual que).

if ( condicin )

if ( condicin ) {

instruccin 1-1
instruccin 1-2
... }

if ( condicin )

else {

instruccin 1

&& (AND)
|| (OR)
! (NOT)

instruccin 2-1
instruccin 2-2

else

instruccin 2

14/08/2007

21

Estructuras de control (cont.)

Mientras - repetir:

instruccin
while ( condicin )
do {

while ( condicin ) {

instruccin 1
instruccin 2

instruccin 1
instruccin 2

...
} while ( condicin )

...
}

14/08/2007

22

// comentario hasta fin de lnea


/* comentario
de mltiples lneas
*/
/** comentario de documentacin
@author
@exception
@see
@param
@return
@version
*/

do

instruccin

14/08/2007

Se pueden incluir comentarios en el cdigo usando


los siguientes marcadores:

Hacer - mientras:

while ( condicin )

Franco Guidi Polanco

... }

Comentarios y documentacin

Iteracin

Franco Guidi Polanco

Compleja:

instruccin

Operadores lgicos:

Franco Guidi Polanco

Simple:

23

Franco Guidi Polanco

14/08/2007

24

Identificadores

Declaracin de variables

JAVA es sensible a maysculas y minsculas.

Una variable se declara segn el formato:

Es decir, JAVA considera distinto Nombre y nombre

Un identificador vlido consiste en una combinacin


de de letras, dgitos y el carcter underscore. No
puede comenzar por un dgito.
Ejemplo:

Convencin: el identificador de una variable de tipo


primitivo comenzar en minsculas.

- Vlidos: edad, nota_Alumno, _peso, estadoSalud


- No vlidos: 1ero, km/hora, Alumno(s), peso total

Franco Guidi Polanco

14/08/2007

tipo identificador [=valor] [, identificador [ = valor ] ]


Por ejemplo:
int a, b, c
double peso = 7.05
char letra = T
byte edad = 20, veces = 3

Por ejemplo: edad, edadAlumno, estadoCivil, esElUltimo

25

Algunos mtodos (funciones) de utilidad

Franco Guidi Polanco

14/08/2007

26

Algunos mtodos (funciones) de utilidad (cont.)

Despliegue de datos (escribir):

Convertir de String a nmero :


[Link]()
[Link]()
[Link]()
[Link]()
[Link]()

[Link]()
[Link]()
Por ejemplo:
[Link]( Hola )
[Link]( Hola + nombre )

Por ejemplo:
x = [Link]( 50 )
y = [Link]( dato ) + 40

Franco Guidi Polanco

14/08/2007

27

Franco Guidi Polanco

14/08/2007

28

Estructura de una aplicacin simple

Ejemplo: programa no interactivo


/**
Programa ejemplo para clculo del Factorial de un nmero especfico.
@author Franco Guidi
*/
public class Factorial1 {
Identificador
public static void main( String arg[] ) {de la clase (programa)

Definicin
/**
de la
Ejemplo de una aplicacin
aplicacin
(clase)
*/
public class IdentificadorClase {
public static void main (String[ ] idArreglo ) {

int nmero, i=1, fact=1;


nmero = 3;
Identificadores
while( i <= nmero ) {
Mtodo main
de variables
fact = fact * i;
i++;
}
[Link]( "El factorial de " + nmero + " es " + fact );

...
} // Fin mtodo main
} // Fin clase

} // Fin mtodo main

Mtodo main

} // Fin clase

Franco Guidi Polanco

14/08/2007

29

Estructura de la aplicacin

Franco Guidi Polanco

14/08/2007

30

Valores literales

/**
Programa ejemplo para clculo del Factorial de un nmero especfico.
Clase
@author Franco Guidi
*/
public class Factorial1 {
public static void main( String arg[] ) {
int nmero, i=1, fact=1;
nmero = 3;
while( i <= nmero ) {
fact = fact * i;
i++;
}
[Link]( "El factorial de " + nmero + " es " + fact );

Son valores que aparecen explcitamente en


el cdigo fuente. Por ejemplo:
S : tipo char
S, Juan, 100 : tipo String
150 : tipo int
150.0 : tipo double
150.0f : tipo float
0150: tipo int octal
0x150: tipo int hexadecimal

} // Fin mtodo main

Mtodo main

} // Fin clase
Franco Guidi Polanco

14/08/2007

31

Franco Guidi Polanco

14/08/2007

32

Valores literales

Caractersticas generales de una aplicacin simple

/**
Programa ejemplo para clculo del Factorial de un nmero especfico.
@author Franco Guidi
literal
*/
public class Factorial1 {
public static void main( String arg[] ) {
int nmero, i=1, fact=1;
literal
nmero = 3;
while( i <= nmero ) {
literal
fact = fact * i;
literal i++;
}
[Link]( "El factorial de " + nmero + " es " + fact );
} // Fin mtodo main
} // Fin clase

Se estructura como una clase que tiene un mtodo


main.
El nombre de la clase debe ser el mismo que el del
archivo que la contiene.
El programa puede ser invocado desde la lnea de
comandos, invocando al intrprete Java junto con
el nombre de la aplicacin. Ejemplo:
c:\tmp>java Factorial1

literal

Intrprete
Franco Guidi Polanco

14/08/2007

33

Traspaso de datos por parmetro

Franco Guidi Polanco

Programa
14/08/2007

34

Traspaso de datos por parmetro


Un arreglo es una coleccin de datos de un mismo tipo,
referenciada por un nombre. Cada dato ocupa una posicin
dentro de la coleccin. La cantidad total de posiciones es
fija, y son accesibles por medio de un subndice, que se
inicia en cero (0).
Ejemplo: un arreglo de Strings llamado textos, de largo 4:

El mtodo main puede recibir parmetros desde la


lnea de comandos del intrprete. Estos se
almacenan en las posiciones del arreglo de String
indicado en la declaracin del mtodo.
Parmetro

textos

hola
c:\tmp>java Factorial2 3

23

luis

2rwr
3

textos[0] contiene hola


textos[1] contiene 23
textos[4] se encuentra indefinido (error al tratar de acceder)
Franco Guidi Polanco

14/08/2007

35

Franco Guidi Polanco

14/08/2007

36

Ejemplo: programa que acepta datos por


parmetro

Consideraciones importantes
Java requiere la declaracin de variables antes de
que sean utilizadas. El tipo de una variable no
puede ser modificado. Se dice que es un lenguaje
fuertemente tipificado.

/**
Programa ejemplo para clculo del Factorial de un nmero especfico,
acepta el nmero proporcionado por parmetro.
@author Franco Guidi
*/
public class Factorial2 {
public static void main( String arg[] ) {
int nmero, i=1, fact=1;
nmero = [Link]( arg[0] );
while( i <= nmero ) {
fact = fact * i;
i++;
}
[Link]( "El factorial de " + nmero + " es " + fact );

Java distingue entre maysculas y minsculas.


Las expresiones matemticas se evalan con
precedencia de * y / sobre + y -.

} // Fin mtodo main


} // Fin clase
Franco Guidi Polanco

14/08/2007

37

Caractersticas generales de una aplicacin simple


(cont.)
Las instrucciones se organizan de acuerdo con las
estructuras de control:
secuencia
decisin : if( cond ) ... else ...
Iteracin: do ... while( cond )

38

Recomendaciones generales

Adoptar convencin para definicin de


identificadores:

while( cond ) ...

Variables: primeraLetraEnMinscula
Clases: PrimeraLetraEnMayscula
Mtodos: primeraLetraEnMinscula

Los bloques son instrucciones agrupadas mediante


parntesis de llave ( { y } ). Se utilizan en decisiones e
iteraciones, y no llevan punto y coma al final (despus
de la llave de cierre).

14/08/2007

14/08/2007

Documentar los programas.

Las instrucciones se separan mediante un punto y coma


( ; ).

Franco Guidi Polanco

Franco Guidi Polanco

39

Franco Guidi Polanco

14/08/2007

40

Tipos de variables y valores: regla general

Las variables almacenan datos del mismo tipo que


han sido definidas.
pero...

Seccin 3

Bajo consideraciones especiales las variables


pueden recibir datos de otros tipos:
Promocin automtica de tipos
Casting

Consideraciones sobre tipos primitivos


numricos

Franco Guidi Polanco

14/08/2007

42

Cambio del tipo de un valor: promocin


automtica

Cambio del tipo de un valor: promocin


automtica
Promocin automtica de tipos (conversin
por ensanchamiento): una variable de un tipo de
dato puede recibir un valor de otro tipo si:

Ejemplo de promocin automtica de tipos: dato


tipo int es almacenado en una variable double.

los dos tipos son compatibles(*), y


el tipo de destino es de mayor jerarqua que el
tipo de origen

int x = 4;

4
x

double y;

(*)Tipos compatibles: los tipos numricos son compatibles


entre s.
y = x;

Franco Guidi Polanco

14/08/2007

43

Franco Guidi Polanco

4.0
y
14/08/2007

4
x
44

Evaluacin de expresiones numricas

Cambio del tipo de un valor: casting

Regla general: La operacin de dos nmeros de


un mismo tipo, genera un resultado tambin del
mismo tipo.
Se exceptan de la regla anterior las operaciones
sobre datos tipo byte o short.

Casting: permite convertir un valor de un tipo de mayor


jerarqua a otro de menor jerarqua (funciona si y slo si
el tipo de menor jerarqua puede contener al valor
convertido). El casting tiene prioridad sobre los
operadores +,-,* y /.
Formato: var1 = (tipo de var1) var2

int j=200;
byte i;
i = (byte) j;

double j=1.0;
int i;
i = (int) j;

casting

14/08/2007

45

byte i=2, j=3, k;


j ;

int

Franco Guidi Polanco

byte i=2, j=3;


int k;
k = i + j ;

int
Error: no puede almacenarse
un int en una variable byte.

14/08/2007

int
14/08/2007

46

El resultado de cualquier expresin es del tipo


correspondiente al del operando de mayor
jerarqua, en el orden:

Franco Guidi Polanco

Evaluacin de expresiones: resultado de una


operacin

La operacin de dos datos de tipo byte o short,


genera como resultado un int.

14
int

Evaluacin de expresiones: promocin


automtica de byte y short

int a=10, b=4, c;


c = a / b ;

Incorrecto: el mximo valor que puede contener


una variable byte es 127.
La variable i queda con valor incorrecto.

Franco Guidi Polanco

k =

int a=10, b=4, c;


c = a + b ;

double
float
long
int

Automticamente
es promovido a double
antes de realizarse
la operacin.

Correcto

47

Franco Guidi Polanco

int i=10, k;
double j=2.0;
k =

double

j ;

5.0
Error: no puede almacenarse
un double en una variable int.

14/08/2007

48

Ejemplos de resultados de operaciones (cont.)

Ejemplos de resultados de operaciones


Suponer variable x definida como double:
x
x
x
x
x

=
=
=
=
=

10 / 4;
10.0 / 4;
10.0f / 4;
(double) 10 / 4;
(double) (10/4);

Franco Guidi Polanco

Suponer variable x definida como float:

x = 10 / 4;
x = 10.0 / 4;

// x toma valor 2.0 double


// x toma valor 2.5 double
// x toma valor 2.5 double

x = 10.0f / 4;
x = (float) 10 / 4;
x = (double) (10/4);

// x toma valor 2.5 double


// x toma valor 2.0 double

14/08/2007

49

Precisin de los clculos

// x toma valor 2.5 float


// Error: x no puede almacenar
valor 2.0 double

14/08/2007

50

if( var1 == var2 )


[Link]( Son iguales );
else
[Link]( No son iguales );

Solucin: determinar si la diferencia en valor absoluto de


las variables es menor que un error predeterminado:

Ejemplos*:
0.9999999999999999
1.0
1.0000000000000007

if( [Link]( var1 - var2 )< 0.0000001 )


[Link]( Son iguales );
else
[Link]( No son iguales );

(*) pruebas efectuadas con variable double)


14/08/2007

// x toma valor 2.5 float

Las operaciones aritmticas con valores float o double


fallan en la evaluacin de igualdades:

Las operaciones aritmticas con tipos de punto


flotante (float o double), se realizan con menor
precisin.

Franco Guidi Polanco

// Error: x no puede
almacenar valor 2.5 double

Precisin de los clculos (cont.)

Las operaciones aritmticas con tipos enteros


(byte, short, int o long), se realizan con alta
precisin.

0.1 sumado 10 veces:


0.01 sumado 100 veces:
0.001 sumado 1000 veces:

Franco Guidi Polanco

// x toma valor 2.0 float

51

Franco Guidi Polanco

14/08/2007

52

Una aplicacin interactiva


/**
Programa ejemplo para clculo del Factorial de un nmero especfico,
solicita datos en forma interactiva.
@author Franco Guidi
*/
import [Link].* ;
public class Factorial3 {
public static void main( String arg[ ] ) throws IOException {
int nmero, i=1, fact=1;
BufferedReader lector = new BufferedReader( new InputStreamReader( [Link] ) );
String ingresado;
[Link]( "Ingrese nmero para clculo de factorial: " );
ingresado = [Link]( );
nmero = [Link]( ingresado );
while( i <= nmero ) {
fact = fact * i;
i++;
}
[Link]( "El factorial de " + nmero + " es " + fact );
} // Fin mtodo main
} // Fin clase

Seccin 4
Una aplicacin simple interactiva

Franco Guidi Polanco

Una aplicacin interactiva

14/08/2007

54

Importacin de clases desde las Java API

Debe explicitarse
/**
qu seejemplo
har con
eventuales
Programa
para
clculo del Factorial de un nmero especfico,
de I/O
Permite crear el objeto de la clase
solicita datoserrores
en forma
interactiva.
BufferedReader identificado como
@author Franco Guidi
con el nombre lector, que se encargar de leer.
*/
import [Link].* ;
public class Factorial3 {
public static void main( String arg[ ] ) throws IOException {
int nmero, i=1, fact=1;
BufferedReader lector = new BufferedReader( new InputStreamReader( [Link] ) );
String ingresado;
[Link]( "Ingrese nmero para clculo de factorial: " );
ingresado = [Link]( );
nmero = [Link]( ingresado );
while( i <= nmero ) {
fact = fact * i;
i++;
El objeto lector se encarga de leer datos del
} a Java
Indica
usuario.
leer +
invoca
mtodo
readLine( ) .
[Link](
"El factorial
de " Para
+ nmero
" es " el
+ fact
);
dnde encontrar
las
} // Fin
mtodo main
clases
requeridas
} // Fin clase
Franco Guidi Polanco

14/08/2007

55

Java API
package [Link]

class Factorial3

Clases de
[Link] se
importan
automticamente

class String

class Long

class System

class Integer

class Math

class Byte

class Double

class Short

class Float

...

package [Link]
import [Link].*
Otras clases deben
importarse explcitamente,
indicando el nombre del
package que las contiene
Franco Guidi Polanco

class InputStreamReader

class IOException

class BufferedReader

...

package . . .

14/08/2007

56

Componentes de la Java API

Instanciacin del objeto lector

Algunos de los packages de la Java API


son:

datos del usuario

[Link] : construccin de applets.


[Link] : desarrollo y reutilizacin de componentes.
[Link] : componentes visuales.
[Link] : entrada y salida de datos.
[Link] : clases de uso comn.
[Link] : soporte para tipos numricos con SQL.
[Link] : componentes para trabajos en red.
[Link] : invocacin remota de mtodos.
[Link] : soporte para JDBC.
[Link] : firma de applets y codificacin de datos.
[Link] : manejo de distintos tipos de textos .
[Link] : clases varias de utilidad.

Se crea una instancia de clase

aplicacin

clases del
package [Link]

objeto
lector

(Remitirse a documentacin del JDK para una descripcin detallada)

new
Franco Guidi Polanco

14/08/2007

57

Uso del objeto lector

Franco Guidi Polanco

BufferedReader
InputStreamReader

14/08/2007

58

Vocabulario mnimo

Puede utilizarse las veces que sea necesario:

En la aplicacin interactiva se observan las siguientes


instrucciones:

...

String dato;
int base, expo;
BufferedReader usuario = new BufferedReader
( new InputStreamReader( [Link] ) );

...

...

nmero = [Link]( ingresado );

[Link]( Ingrese base : );


dato = [Link]( ) ;
base = [Link]( dato );
[Link]( Ingrese exponente : );
dato = [Link]( ) ;
expo = [Link]( dato );

...

...

ingresado = [Link]( ) ;

int nmero;
String ingresado;
...

...

String ingresado;
BufferedReader lector = new BufferedReader
( new InputStreamReader( [Link] ) );
...
...

Franco Guidi Polanco

14/08/2007

59

Franco Guidi Polanco

14/08/2007

60

Vocabulario mnimo (cont.)

Vocabulario mnimo (cont.)

Argumento o parmetro actual

ingresado = [Link]( ) ;
nmero = [Link]( ingresado );

Objeto de la clase
BufferedReader,
tambin llamado
instancia de la clase
BufferedReader

Mtodo de la clase Integer


(los mtodos llevan
parntesis al final)

Clase Integer

El mtodo parseInt de la clase Integer retorna el


equivalente a int de un String recicibido como parmetro.
Este valor es asignado a la variable nmero.

Franco Guidi Polanco

14/08/2007

Mtodo del objeto lector


(este mtodo no recibe
parmetros, pero de todas
formas lleva parntesis)

El mtodo readLine() del objeto lector retorna un String


ingresado por el usuario. Este valor es asignado a la
variable ingresado.

61

Nota...

Franco Guidi Polanco

14/08/2007

62

Aplicacin interactiva: resumen


Se requiere:
La importacin de clases del package [Link].

El valor retornado por un mtodo puede usarse como


parmetro actual de otro mtodo:

import [Link].* ;

La indicacin del sistema de control de excepciones.

...

int base, expo;


BufferedReader usuario = new BufferedReader
( new InputStreamReader( [Link] ) );

public static void main (String[ ] arg) throws IOException { ...

La instanciacin de un objeto de la clase


BufferedReader.

...

[Link]( Ingrese base : );


base = [Link]( [Link]( ) );
[Link]( Ingrese exponente : );
expo = [Link]( [Link]( ) );

BufferedReader x = new BufferedReader


( new InputStreamReader( [Link] ) );

La invocacin del mtodo readLine() del objeto de la


clase BufferedReader.

...

[Link]() retorna un String


que es recibido como parmetro
por el mtodo parseInt de la clase Integer
Franco Guidi Polanco

14/08/2007

nombre = [Link]() ;
63

Franco Guidi Polanco

14/08/2007

64

Uso de clases y objetos: resumen de lo utilizado


Las clases nos permiten realizar determinadas
tareas.
Las clases se encuentran disponibles en packages,
que deben ser importados a los programas.
Normalmente se deben crear instancias de clase
(u objetos), para poder usar los mtodos que estas
proveen.
Existen, sin embargo, clases cuyos mtodos pueden
utilizarse sin haber instanciado objetos.

Franco Guidi Polanco

14/08/2007

Seccin 5
Uso de arreglos
con tipos primitivos

65

Arreglos en Java

Identificacin y tamao de un arreglo

Los arreglos son colecciones ordenadas de datos


del mismo tipo.

Cada arreglo se reconoce por un identificador y cada


dato se almacena en una posicin indexada.
Un arreglo de largo N, tiene posiciones indexadas
mediante enteros desde 0 hasta N-1.

Ejemplos:
Arreglo de bytes:

3 27 50

nombres

Ana

Arreglo de Strings:
Ana

Casa Auto

12

Posicin:

Franco Guidi Polanco

50.4

14/08/2007

0.0

Mario
4

El mximo largo posible para un arreglo corresponde


al mayor valor permitido para un int.

Arreglo de doubles:

3.0

Juan Pedro Pa

-4.3
67

Franco Guidi Polanco

14/08/2007

68

Pasos para crear un arreglo en Java

Creacin de un arreglo

1: Definir una variable que identifique al arreglo, indicando


la naturaleza de los datos que se almacenarn:
tipo[ ] variable

Define que la variable edades


referenciar un arreglo de enteros.

o alternativamente:

tipo variable[ ]

int[] edades;
edades = new int[8];

2: Instanciar el arreglo indicando el largo que tendr, y


asignarlo a la variable:
variable = new tipo[ entero ]

Instancia un arreglo de enteros de


8 posiciones.
Asigna el arreglo instanciado
a la variable edades.

Franco Guidi Polanco

14/08/2007

69

Ejemplos de creacin de arreglos

Franco Guidi Polanco

14/08/2007

70

Forma abreviada para crear arreglos

Arreglo de byte de largo 1000:

La definicin de variable, instanciacin del arreglo


y su asignacin a la variable puede realizarse en
una sola instruccin:

byte[] valores;
valores = new byte[1000];

tipo[ ] variable = new tipo[ entero ]

Arreglo de double de largo 4:


double nota[];
nota = new double[4];

Ejemplo:

Arreglo de String de largo 20:

double[] nota = new double[4];

int largo = 20;


String[] nombres;
nombres = new String[ largo ];
Franco Guidi Polanco

14/08/2007

71

Franco Guidi Polanco

14/08/2007

72

Otra forma para instanciar arreglos

Acceso a las posiciones de un arreglo


Se deben accesar mediante un subndice de tipo
entero (byte, short, int o long):

Tambin es posible instanciar arreglos


escribindolos como literales en el cdigo fuente:

...
int i;
long[] nmeros;

int[] nota ;
nota = { 23, 14, 55, 18 } ;

nmeros = new long[ 20 ];


...
i=0;
while( i < 20 ){
nmeros[ i ] = i ;
i++;
}
...

Instancia un arreglo de enteros de largo 4.

Franco Guidi Polanco

14/08/2007

73

Recorrer un arreglo

74

Tratar de accesar una posicin inexistente del


arreglo, por ejemplo, la posicin 10 de un arreglo
de largo 10.
Cuando lo anterior ocurre, se genera en tiempo de
ejecucin una excepcin denominada:
ArrayIndexOutOfBoundsException

...
int i;
long[] nmeros;
nmeros = new long[ 20 ];
...
i=0;
while( i < [Link] ) {
[Link]( nmeros[ i ] );
i++;
}
...

14/08/2007

14/08/2007

Error tpico en el manejo de arreglos

Se puede utilizar la propiedad length del arreglo


para controlar procesos iterativos sobre el mismo:

Franco Guidi Polanco

Franco Guidi Polanco

75

Franco Guidi Polanco

14/08/2007

76

Consideraciones respecto del largo de un arreglo

El arreglo de parmetros declarado al inicio


del mtodo main, es instanciado por Java al
momento de ejecutarse la aplicacin.

Una vez instanciado un arreglo, no puede


modificarse su largo.
length es una propiedad o atributo del arreglo
que contiene el largo del mismo.

El arreglo se instancia con un largo igual a la


cantidad de parmetros traspasados en la
lnea de comandos.

double[] nota;
nota = new double[4];
[Link]( El largo es + [Link] );

El arreglo debe ser declarado como arreglo de


Strings.

Las propiedades o atributos se consultan sin parntesis al final,


a diferencia de los mtodos.
Franco Guidi Polanco

14/08/2007

77

Resumen de arreglos

14/08/2007

78

Los arreglos son referenciados desde una variable.


Todas las posiciones del arreglo son del mismo
tipo.

La instanciacin ocurre de tres formas:


cuando se utiliza el operador new.
cuando el arreglo es declarado literalmente.
cuando se ejecuta la aplicacin, en el caso
particular del arreglo de parmetros del mtodo
main.

14/08/2007

Franco Guidi Polanco

Resumen de arreglos

Los arreglos se instancian.

Franco Guidi Polanco

Consideraciones respecto del arreglo de


parmetros

El atributo length permite acceder al largo del


arreglo.
Tratar de acceder una posicin inexistente del
arreglo genera una excepcin
ArrayIndexOutOfBoundsException.

79

Franco Guidi Polanco

14/08/2007

80

Matrices

Matrices
Un arreglo puede tener ms de una dimensin.
Los arreglos de ms de una dimensin se
denominan matrices.
El caso ms comn es la matriz bidimensional:

Java permite crear matrices de la siguiente forma:


tipo[ ] [ ] variable = new tipo[ entero1 ] [ entero2 ]
Por ejemplo:
int[ ][ ] utilidad;
utilidad = new double[10][15];

O mediante literales:
double[ ][ ] uti;
uti = { {-1, 7, 15}, {3, 0, 2}, {4, -3, 12} };

12

-3

55

700

-8

-2

14

Matriz de dos dimensiones


uti[1][2] contiene un 2.
Franco Guidi Polanco

14/08/2007

81

Caractersticas de una matriz

mediciones
Franco Guidi Polanco

-3

55

700

-8

-2

14

14/08/2007

14/08/2007

82

Convenciones respecto de las matrices

Todas las posiciones de una matriz son de un


mismo tipo (al igual que el caso de los arreglos).
La matrices se identifican por su nombre, y se
caracterizan adems por sus dimensiones.
Las dimensiones de una matriz no se pueden
modificar.
Ejemplo:
12

Franco Guidi Polanco

En el caso de las matrices de dos dimensiones,


llamaremos a la primera dimensin fila, y a la segunda,
columna.
Representaremos visualmente en nuestros ejemplos las
filas hacia abajo y las columnas hacia el lado.
La primera fila ser la fila 0 y la primera columna, la
columna 0.
Columnas
0
1
2
3

Matriz mediciones
de datos enteros,
de dimensiones 3 x 4

83

12

-3

55

Filas 1

700

-8

-2

14

Franco Guidi Polanco

14/08/2007

Matriz de 3 filas
y 4 columnas

84

Particularidades de los arreglos


multidimensionales en Java

Acceso a posiciones
Las posiciones de una matriz se acceden
independientemente (una a una).
Se utiliza un subndice para especificar cada dimensin
En una matriz de dos dimensiones, el primer subndice
representa la fila, y el segundo, la columna.
Ejemplo
mediciones
0
1
0
12
-3

2
4

3
55

700

-8

-2

14

Franco Guidi Polanco

14/08/2007

mediciones[0][0] contiene un 12
mediciones[0][3] contiene un 55
mediciones[2][0] contiene un 1
mediciones[2][3] contiene un 14
mediciones[1][2] contiene un 8
mediciones[2][1] contiene un 0
etc...
85

En rigor Java no provee arreglos multidimensionales.


Java los implementa mediante arreglos de arreglos.
Esto permite crear, por ejemplo, matrices
bidimensionales con cantidades de posiciones distintas
por fila:

int[ ][ ] nota;
nota = { {-1,7,15}, {3, 2}, {4,-3,12}, {3} };

Franco Guidi Polanco

14/08/2007

86

También podría gustarte