lenguajejava-parte1

14

Click here to load reader

Upload: hasamenz

Post on 25-Jul-2015

28 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: LenguajeJava-Parte1

CAPITULO 1: EL LENGUAJE DE PROGRAMACIÓN JAVA

SUPER JAVA SE FOR WINDOWS WITH NETBEANS IDE @Julio Vásquez Paragulla - -2da.Edición Mayo 2010

- 5 -

¿Qué es Java? Java es un nuevo lenguaje de programación creado a principios de los años 90 por Sun Microsystems, Inc. con las siguientes características: Sus reglas y sintaxis se basan íntegramente en el lenguaje de programación C++. Los cambios han sido para eliminar lo más conflictivo y complicado del C++ como los punteros, la gestión explícita de la memoria y la herencia múltiple. Es un lenguaje orientado a objetos. Siguiendo la tendencia de todos los lenguajes de programación modernos. Es un lenguaje interpretado. Los compiladores Java no convierten instrucciones de alto nivel en instrucciones de código máquina, como los compiladores tradicionales. A diferencia de éstos, los compiladores Java generan un código máquina especial (llamado "byte-code") destinado a ejecutarse en una "máquina virtual" inexistente. Cuando se quiere ejecutar un programa Java, un intérprete se encarga de leer el "byte-code" e ir ejecutando las instrucciones, simulando el juego de instrucciones de la "máquina virtual". Esto tiene la ventaja de que un mismo programa, una vez “compilado”, puede ser ejecutado en cualquier microprocesador y sistema operativo, siempre que exista un interprete Java para ese entorno. Existen intérpretes Java para toda la familia Windows, Solaris, MacOS, Linux, OS/2, etc. y actualmente están siendo desarrollados nuevos intérpretes para casi cualquier entorno existente, desde servidores Unix hasta consolas de video-juegos domésticas. Es un lenguaje seguro. El hecho de que Java sea un lenguaje interpretado facilita el que el propio intérprete pueda controlar el programa Java, impidiéndole que cause daños a un sistema, que pueda acceder a archivos protegidos, etc. Esto tiene un efecto secundario muy importante: es posible diseñar programas que se ejecuten en el ordenador de otras personas, sin que éstas deban tener miedo a posibles virus o robos de información confidencial. Esto abre el camino a la creación de programas Java insertados en páginas HTML (estos programas se suelen llamar "applets") que se ejecutan en los navegadores de los visitantes de un servidor Web, dando lugar a nuevos sistemas de distribución de información, como acceso a bases de datos, programas distribuidos a través de redes locales o de Internet, etc. Es un lenguaje orientado al trabajo en red. Java ha nacido en la época en la que Internet ha comenzado a revolucionar el mundo de la informática. Por esta razón los diseñadores del lenguaje introdujeron casi desde el principio las herramientas necesarias para crear programas que trabajaran fácil y naturalmente en redes basadas en los protocolos estándares de TCP/IP, el estándar en Internet. Programas de trabajo en red que antes necesitaban semanas o meses para ser diseñados y comprobados pueden ahora ser creados en cuestión de horas o días. Es un lenguaje preparado para contenidos multimedia. La creación de programas en Java que contengan sonidos, imágenes fijas o en movimiento, etc. es mucho más fácil que con otros lenguajes tradicionales. Estas y otras razones han hecho de Java uno de los lenguajes con el crecimiento más rápido de la historia de la informática. El hecho de que las herramientas básicas de desarrollo (compiladores, depuradores, intérpretes, documentación, etc.) se distribuyan gratuitamente a través de Internet ha provocado un gran crecimiento en el número de programadores y empresas dedicadas a la creación de aplicaciones escritas en Java. ¿Qué no es Java? Java no es un lenguaje destinado a la creación de páginas Web. Aunque su utilización en el interior de páginas HTML sea uno de los usos más conocidos de Java, esta no es, ni mucho menos, su principal utilidad. Java no tiene nada que ver con JavaScript. Aunque compartan un nombre parecido, no existe apenas ninguna relación entre ambos lenguajes. JavaScript sí es un lenguaje exclusivamente destinado a la creación de páginas Web dinámicas, creado por Netscape Communications Corp.

Page 2: LenguajeJava-Parte1

CAPITULO 1: EL LENGUAJE DE PROGRAMACIÓN JAVA

SUPER JAVA SE FOR WINDOWS WITH NETBEANS IDE @Julio Vásquez Paragulla - -2da.Edición Mayo 2010

- 6 -

bajo el nombre original de LiveScript, y cambiado posteriormente a JavaScript por razones de márketing. Java no es un lenguaje destinado a la creación de aplicaciones de cálculo intensivo. Debido a su carácter interpretado, la ejecución de un programa Java es bastante más lenta que la de su equivalente en C/C++. Mientras que en un programa C/C++ compilado es el propio microprocesador el encargado de decodificar y ejecutar las instrucciones en hardware, en un programa en Java existe una capa de software intermedia que se ocupa de traducir las instrucciones de la "máquina virtual" a instrucciones nativas del microprocesador (x86, 680x0, SPARC, etc.) para que éste las ejecute. Esto hace mucho mas lenta la ejecución de programas. De cualquier forma, esta desventaja es únicamente transitoria, ya que existen técnicas modernas (como la compilación "Just in Time", por ejemplo) que son capaces de acelerar un programa hasta niveles parecidos a los de C/C++. Elementos de Programación Comentarios Sirven para documentar nuestros programas haciéndolos mucho más fáciles de entender ya que estos comentarios nos permiten decir lo que estamos haciendo usando nuestro propio lenguaje natural. Existen 3 formas de hacer comentarios: comentario de una sola línea: // Esto es un comentario de una sola línea comentario de varias líneas: /* Esto es un comentario de varias líneas. */ comentario de documentacion: /** Este es el primer programa del Curso de Java * Simplemente escribe la frase "Bienvenidos a Java" * @autor Julio Vásquez Paragulla

* @version 2.1 */ Tipos de datos básicos y variables También llamados primitivos, como son los números enteros, reales, los caracteres, los valores lógicos, etc..

Tipo Descripción Tamaño Clase equivalente boolean Valor lógico 1 bit Boolean char Carácter 16 bit Character byte Entero muy pequeño 8 bit Byte short Entero pequeño 16 bit Short int Entero normal 32 bit Integer long Entero grande 64 bit Long float Número real de precisión simple 32 bit Float double Número real de doble precisión 64 bit Double void Tipo vacío

Toda variable debe estar asociada a un tipo de dato en su declaración, asi: Tipo de dato identificador; O, cuando son varias del mismo tipo de dato, asi:

Page 3: LenguajeJava-Parte1

CAPITULO 1: EL LENGUAJE DE PROGRAMACIÓN JAVA

SUPER JAVA SE FOR WINDOWS WITH NETBEANS IDE @Julio Vásquez Paragulla - -2da.Edición Mayo 2010

- 7 -

Tipo de dato identificador1, identificador2, identificador3; Por ejemplo, podemos declarar la siguiente variable entera: int numero; Si a nuestra variable la quisiéramos declarar dándole un valor inicial 0, seria: int numero=0; Para declarar una variable adecuadamente, debe elegir el tipo de dato que mejor corresponda, según el valor que quiera guardar en ella. Por ejemplo: Se quiere guardar el precio de un producto, el tipo de dato adecuado sera real: double precio; El tipo de dato float para los reales ya no se usa porque el tipo double tiene mayor precisión y la memoria de las computadoras modernas es abundante y de bajo costo. Otro ejemplo: Se quiere guardar la población de los continentes, el tipo de dato adecuado será entero grande: long poblacion; Otro ejemplo: Se quiere guardar el importe de compra, el importe del descuento y el importe neto, el tipo de dato adecuado para las 3 variables será real: double icompra, idscto, ineto; Otro ejemplo: Se quiere guardar la letra inicial del nombre de una persona, el tipo de dato adecuado será carácter: char inicial ; Otro ejemplo: Se quiere guardar el correo electrónico de una persona, el tipo de dato adecuado será cadena: String correo; El tipo de dato String, en realidad es una Clase, por ello no es considerado como un tipo de dato básico sino como un tipo de dato Clase. Java tiene muchos tipo de dato Clase. Una manera de identificarlos es porque siempre empiezan con letra mayúscula. Por ejemplo: String, Integer, Double, JButton, JTextField, Color, etc. Literales Los literales son el mecanismo utilizado para expresar un valor constante. Java utiliza cinco tipos de elementos: enteros, reales, lógicos, caracteres y cadenas:

Tipo Ejemplo Enteros 21, 666, 1000, 2010, 0xDC Reales 3.14, 1.12, -12.6, 2e12 Booleanos True, false Caracteres 'x', ‘\n’, ‘\t’, ‘7’ Cadenas "Esto es una cadena"

Fíjese que, mientras los caracteres se expresan encerrados en comillas simples, las cadenas lo hacen en comillas dobles. La notación 0x indica que dicho numero tiene la representación hexadecimal. Identificadores Un identificador es un nombre que le damos a un elemento, sea variable, clase, método, propiedad. Debemos tener presente que Java es sensible a las mayúsculas y minúsculas diferenciándolas aún

Page 4: LenguajeJava-Parte1

CAPITULO 1: EL LENGUAJE DE PROGRAMACIÓN JAVA

SUPER JAVA SE FOR WINDOWS WITH NETBEANS IDE @Julio Vásquez Paragulla - -2da.Edición Mayo 2010

- 8 -

cuando se traten de la misma letra. los identificadores pueden comenzar por una letra, un subrayado o un símbolo de dólar, siendo los siguientes caracteres permitidos sólo letras y/o dígitos. Por ejemplo, son identificadores válidos:

contador _nombre_usuario $dinero nota_parcial n1 si Por ejemplo, son identificadores no válidos: 1ero //empieza con digito nota promedio //tiene espacio en blanco final //palabra reservada juan% //tiene caractér no permitido long //palabra reservada Palabras reservadas Son aquellas palabras reservadas para el uso del lenguaje y que por tanto no deben ser utilizados como identificadores del programador. Afortunadamente JAVA tiene pocas palabras reservadas como se muestra a continuación: abstract default if private throw bolean do implements protected throws break double import public transient byte else instanceof return try case extends int short void catch final interface static volatile char finally long super while class flota native switch const for new synchronized continue goto package this Operadores Los operadores sirven para unir identificadores y literales formando expresiones, que son el resultado de una operación. A continuación se muestran los operadores aritméticos:

Descripción Símbolo Expresión de ejemplo

Resultado del ejemplo

Multiplicación * 2*4 8

Residuo de dividir enteros % 5%2 1

Suma + 2+2 4

Resta - 7-2 5

Aumenta en uno ++ c++ c = c + 1

Disminuye en uno -- c-- c = c - 1

Menos unario - -(2+4) -6

Suma al contenido += X += 4 X = X + 4

Resta al contenido -= X -= 4 X = X - 4

Multiplica al contenido *= X *= 4 X = X * 4

Divide al contenido /= X /= 4 X = X / 4

Residuo del contenido %= X %= 4 X = X % 4

Page 5: LenguajeJava-Parte1

CAPITULO 1: EL LENGUAJE DE PROGRAMACIÓN JAVA

SUPER JAVA SE FOR WINDOWS WITH NETBEANS IDE @Julio Vásquez Paragulla - -2da.Edición Mayo 2010

- 9 -

Los operadores de comparación o también conocidos como relacionales y que devuelven un valor lógico que será true si la comparación fue verdad y false en caso contrario son los siguientes:

Descripción Símbolo Expresión de ejemplo Resultado del ejemplo

Igualdad == 2 == 2 true

Desigualdad != 2 != 2 false

Menor que < 2 < 2 false

Mayor que > 3 > 2 true

Menor o igual que <= 2 <= 2 true

Mayor o igual que >= 1 >= 2 false

Los operadores lógicos que permiten evaluar expresiones lógicas compuestas son los siguientes:

Descripción Símbolo Expresión de ejemplo Resultado del ejemplo Negación ! !(2 == 2) false

Y lógico && (2 == 2) && (2 >= 0) true

O lógico || (2 == 2) || (2 != 2) true

Separadores Existen otros caracteres con significado especial en Java. Son los separadores:

Separador Descripción

()

Contienen listas de parámetros, tanto en la definición de un método como en la llamada al mismo. También se utilizan para modificar la precedencia en una expresión, contener expresiones para control de flujo y realizar conversiones de tipo.

{} Se utilizan para definir bloques de código, definir ámbitos y contener los valores iniciales de los vectores.

[] Se utiliza tanto para declarar vectores o matrices como para referenciar valores dentro de los mismos.

; Separa sentencias.

, Separa identificadores consecutivos en la declaración de variables y en las listas de parámetros. También se utiliza para encadenar sentencias dentro de una estructura for.

. Separa un nombre de propiedad o método de una variable de referencia ú objeto.

ESTRUCTURAS DE PROGRAMACION En general, cada vez que aparezca de ahora en adelante la palabra acción podrá significar dos cosas: o es una instrucción terminada en un punto y coma ó es un conjunto de instrucciones agrupadas por llaves. CONDICIONAL SIMPLE: if Cuando se desea evaluar una comparación y hacer alguna acción sólo cuando la comparación sea verdad. Ejemplo

if (comparacion) if ( x > 0) acción; imprimir “positivo”

Si usted coloca punto y coma (;) después del paréntesis, no habrá error de sintaxis pero el efecto será que el if se anula. Como que no existiera. Para hacer la comparación debe utilizar los operadores relacionales y los operadores lógicos cuando sea necesario.

Page 6: LenguajeJava-Parte1

CAPITULO 1: EL LENGUAJE DE PROGRAMACIÓN JAVA

SUPER JAVA SE FOR WINDOWS WITH NETBEANS IDE @Julio Vásquez Paragulla - -2da.Edición Mayo 2010

- 10 -

En realidad, es todo un reto hacer correctamente la comparación. Para ello debe ser capaz de expresar en una comparación, el condicional natural que encontrara en los enunciados de los problemas. Por ejemplo, hagamos la comparación adecuada para los siguientes condicionales naturales:

1) El numero es negativo: if( numero < 0)

2) El numero es par y positivo: if( numero % 2 == 0 && numero > 0)

3) La nota esta entre 0 y 20 inclusive: if(nota>=0 && nota <=20)

4) La nota no esta entre 0 y20 inclusive: if( !(nota>=0 && nota<=20) )

5) Del lanzamiento de tres dados, por lo menos uno fue 6:

if(dado1==6 || dado2==6 || dado3==6) Ver aplicaciones en el capitulo 3. CONDICIONAL DOBLE: if - else Cuando se desea evaluar una comparación y hacer alguna acción tanto cuando la comparación sea verdad como cuando la comparación sea falsa. Ejemplo

if (comparacion) if (nota>=13) acció da impelse else

n de ver d; rimir “aprobado”

acción de falsedad; imprimir “desaprobado” Ver aplicaciones en el capitulo 3. CONDICIONAL EN CADENA: if - else - if Cuando se desea evaluar consecutivamente varias operaciones, las cuales son excluyentes y generalmente se trata de valores continuos, por ejm. Para evaluar rangos de valores enteros de 0 a 5, de 6 a 10, de 11 a 15,. Ejemplo if (comparacion1) if ( x < 0 )

acció 1; impr else if (comparacion2) else if ( x ==0 )

n de verdad imir “negativo”

acción de verdad2; imprimir “cero” else if (comparacion3) else

acción de verdad3; imprimir “positivo” else

acción de falsedad; Ver aplicaciones en el capitulo 3. CONDICION COMPUESTA: En cualquier tipo de condicional, la condición puede ser simple o compuesta. Se dice que una condición es simple cuando tiene una sola comparación (no utiliza operadores lógicos). En cambio, se dice que una condición es compuesta cuando tiene más de una comparación, para lo cual utilizan necesariamente operadores lógicos Y, O. Por ejm.. if (comparacion1 && comparacion2 || comparacion3)

acción de verdad;

Page 7: LenguajeJava-Parte1

CAPITULO 1: EL LENGUAJE DE PROGRAMACIÓN JAVA

SUPER JAVA SE FOR WINDOWS WITH NETBEANS IDE @Julio Vásquez Paragulla - -2da.Edición Mayo 2010

- 11 -

Ejemplo: if ( x>=0 && x <=5) Imprimir “rango de 0 a 5 inclusive” Se recomienda usar el operador && para expresar un rango continuo de lo contrario debe utilizar el operador || Ejemplo: if (x < 0 || x > 20) Imprimir “fuera del rango 0 a 20” Ver aplicaciones en el capitulo 3. SELECCIÓN MULTIPLE: switch Cuando se selecciona una opción de entre varias. switch ( iable) { var

case valor1: n1; acció break; case valor2: acción2; break; case valor3: acción3; break; // ... default:

} acciónx;

Compara el valor contenido en la variable con cada uno de los valores situados después del case, ejecutando en caso de que exista coincidencia la acción correspondiente. Si no existe coincidencia, se ejecuta la acciónx correspondiente al caso default. Y si no se pusiera el default, simplemente no ejecuta ninguna instrucción dentro del switch. La orden break hace que la ejecución salga del switch; de no ponerlo se ejecutarán todas las órdenes hacia abajo sin importar el valor de los case hasta encontrar un break o la llave de cierre del switch. Ver aplicaciones en el capitulo 3. ESTRUCTURA REPETITIVA: while Repite la ejecución de la acción mientras la expresión lógica siga siendo verdad. Cuando sea falsa, el proceso termina. inicialización

while (condición) { acción }

variación

Por ejemplo, imprimir los 100 primeros números naturales: lización int n=1; // inicia while (n <=100) { Imprimir n n++ // aumenta en 1 } Note que mientras que la condición sea verdad, se seguirá ejecutando la acción

Page 8: LenguajeJava-Parte1

CAPITULO 1: EL LENGUAJE DE PROGRAMACIÓN JAVA

SUPER JAVA SE FOR WINDOWS WITH NETBEANS IDE @Julio Vásquez Paragulla - -2da.Edición Mayo 2010

- 12 -

Ver aplicaciones en el capitulo 4. ESTRUCTURA REPETITIVA: do - while Igual que la anterior, con la única diferencia que la anterior evalúa la condición antes de ejecutar la acción. En cambio, el do while evalúa la condición después de realizar la acción por lo menos una vez. Esta estructura de programación repetitiva es recomendable cuando la acción se va a realizar de todas maneras, por lo menos una vez, o cuando no se sabe la cantidad de veces que se va a repetir la acción. inicialización do {

acción variación

}while (condición); Por ejemplo, imprimir los 100 primeros números naturales: =1; // inicialización int n do { Imprimir n ta en 1 n++ // aumen } while (n <=100); Ver aplicaciones en el capitulo 4. ESTRUCTURA REPETITIVA: for Es un while simplificado, mucho más rápido y eficaz. Muy preferido por los programadores. Veamos su forma general: for (inicialización; condición; variación) {

acción; }

Por ejemplo, imprimir los 100 primeros números naturales: for (int n=1; n <=100; n++) { Imprimir n; }; Note que la variación se relaciona con la variable utilizada en la condición. En este caso lo primero que hará será la inicialización ( n=1;) luego comprobará si es cierta la comparación (n <=100) y de ser verdad, ejecutará las instrucciones. Finalmente ejecutará la variación ( n++ ) . Luego comprobará de nuevo la comparación para continuar con el proceso repetitivo o para finalizar cuando el resultado de la comparación sea falsa. Observe que todo proceso repetitivo necesita de una previa inicialización de algún contador, acumulador, estado, lo cual permite la evaluación de la condición que controla la repetición del proceso. La inicialización puede contener varias ordenes de asignación separadas por comas y terminando con punto y coma. Igualmente, la variación puede contener varias ordenes de variación y/o acumulación separadas por comas y terminando con el paréntesis del for, Por ejemplo, vea el siguiente for hipotético:

Page 9: LenguajeJava-Parte1

CAPITULO 1: EL LENGUAJE DE PROGRAMACIÓN JAVA

SUPER JAVA SE FOR WINDOWS WITH NETBEANS IDE @Julio Vásquez Paragulla - -2da.Edición Mayo 2010

- 13 -

for (int a=1, b=0, c=2; a<= n; a++, b+=3, c+= x) { Mas ordenes } La inicialización puede incluir la declaración de la variable pero no necesariamente debe ser así, por ejemplo: int x; for (x=1; x<=100; x++){ más ordenes } Cuál es la diferencia entre declararlo antes del for con hacer la declaración dentro de la inicialización?. Simplemente el alcance para la utilización de la variable. Cuando se declara antes del for, el alcance de la variable se extiende dentro y fuera de las llaves del for; es decir que podemos utilizar la variable dentro y también fuera de las llaves; en cambio, cuando se declara dentro de la inicialización, el alcance se limita solamente dentro de las llaves del for; es decir que sólo se puede utilizar la variable dentro de las llaves del for y nó fuera de ellas. Una pregunta frecuente es: cual estructura de repetición debo utilizar?. En realidad, la respuesta de un programador experimentado seria: cualquiera. Sin embargo, para efectos de un aprendizaje progresivo daré el siguiente criterio de decisión: Cuando usted tenga identificado el rango de la repetición: desde hasta, utilice for y cuando no tenga identificado dicho rango utilice do-while o while. Cuando el proceso se realiza de todas maneras, por lo menos una vez, use do-while. Por ejemplo: muestre los números capicúas de 3 cifras. La estructura más adecuada seria for porque usted va a repetir el proceso desde 100 hasta 999. Otro ejemplo: muestre la cantidad de cifras que tiene un número entero. La estructura más adecuada sería do-while o while porque no se puede identificar la cantidad de veces que ocurrirá la repetición. Tiene que buscar una condición de continuidad de la repetición. Ver aplicaciones en el capitulo 4. En las versiones más recientes de JAVA, se ha incorporado una estructura for each que es muy fácil de interpretar, pero que sin embargo sus aplicaciones solamente se puede dar con el contenido de arreglos de cualquier tipo. La sintaxis general es: for(Tipo de dato variable : arreglo){ // ordenes de proceso } La interpretación es: por cada valor que se encuentre en el arreglo, asígnalo a la variable y procésalo. Por ejemplo, supongamos el contenido del siguiente arreglo: int a[] = {12, 17, 18, 21, 45, 47, 32} el proceso de sumar los números que están en el arreglo, puede hacerse así: int suma=0; for (int num : a){ suma += num; } imprime suma Otro ejemplo, para un arreglo de objetos de tipo Persona se quiere sumar las edades: int suma=0; for (Persona p : arregloPersonas){ suma += p.getEdad();

Page 10: LenguajeJava-Parte1

CAPITULO 1: EL LENGUAJE DE PROGRAMACIÓN JAVA

SUPER JAVA SE FOR WINDOWS WITH NETBEANS IDE @Julio Vásquez Paragulla - -2da.Edición Mayo 2010

- 14 -

} imprime suma Ver aplicaciones en los capítulos 5, 7. Métodos propios Desarrollar un programa con métodos propios es como organizar una empresa por áreas, donde cada área a su vez puede organizarse con otras áreas de tal forma que cada área tenga una tarea específica que realizar y para que lo lleve a cabo con éxito debe definir que recursos necesita y que resultado tendrá que dar. Esto es exactamente la filosofía de un método propio: definir su tarea específica, definir que datos necesita para llevarlo a cabo (parámetros) y definir que resultado debe retornar para según eso definir su tipo de dato. Cuando en una empresa ya se han definido con claridad las tareas de cada área, las gerencias saben que encontrar en cada área definida y por tanto, cuando lo necesiten simplemente llamaran al responsable del área para obtener dicha información. Igualmente, cuando ya se ha definido la tarea que realizaran los métodos, cuando necesitemos de esa tarea no haremos mas que llamar a dicho método para que haga su tarea; al momento de hacerlo le daremos los valores que necesite para que haga con éxito su tarea. Java ha considerado la siguiente forma genérica para declarar un método propio: Tipo de dato del método nombre(lista de parámetros) El tipo de dato de un método depende del resultado que devolverá, así: será tipo void si el método no devuelve ningún resultado, pero será tipo int, double, String, boolean según el tipo de resultado que devuelve. El nombre del método debe empezar con minúsculas y si se compone de varias palabras, a partir de la segunda palabra deberá empezar con letra mayúscula. Esto es para seguir un estándar de programación en java. La lista de parámetros son variables, cada uno con su respectivo tipo de dato para que reciban los valores que serán dados al momento de llamar al método. A continuación algunos ejemplos de declaración de métodos: String leeNombre() // devuelve un nombre leido int leeEdad() // devuelve una edad entera leida double leePeso() // devuelve un peso con decimales leido void categoriza(double peso) // categoriza según el peso void imprime(String cadena) // imprime una cadena double mayorDe(double a, double b, double c)// devuelve el mayor int aleatorio(int limiteinf, int limitesup)

// devuelve un numero aleatorio entero entre un rango. Ahora, para que un método haga su tarea efectivamente, tiene que ser llamado desde algún otro método que necesite de su tarea. La llamada a un método depende del tipo de dato que tenga y de sus parámetros, así podríamos decir que si un método fuera de tipo void su llamada es directamente a través de su nombre, pero si no es void se debe declarar una variable del mismo tipo para asignarle su resultado. En cuanto a los parámetros, si un método no tiene parámetros su llamada ocurre con los paréntesis vacíos, pero si tuviera parámetros su llamada debe considerar tantos valores como parámetros se hayan definido en su declaración. A continuación algunos ejemplos de llamadas para los métodos declarados anteriormente: public void llamandoMetodos() {

Page 11: LenguajeJava-Parte1

CAPITULO 1: EL LENGUAJE DE PROGRAMACIÓN JAVA

SUPER JAVA SE FOR WINDOWS WITH NETBEANS IDE @Julio Vásquez Paragulla - -2da.Edición Mayo 2010

- 15 -

String nombre; int edad, numero; double peso, mayor;

// llamada a los metodos que no son de tipo void nombre leeNombre(); = edad = leeEdad(); peso = leePeso();

// se llama a los metodos que si son de tipo void categoriza(peso);

imprime(“hola “ + nombre); imprime(“tienes “ + edad + “ años”); imprime(“pesas “ + peso + “ kg.”);

// llama a metodos dandole valores a sus parametros mayor =

imprime(“el mayor numero es “ + mayor); mayorDe(15, 12, 14);

numero = aleatorio(10,30); imprime(“el numero aleatorio generado es: “ + numero); } El desarrollo de cada método declarado como ejemplos podrían ser así: public String { leeNombre()

return txtNombre.getText(); } //---------public int leeEdad() {

---------

int edad; edad = Integer.parseInt(txtEdad.getText()); return edad; } //------------------ public double leePeso() { return Double.parseDouble(txtPeso.getText()); } //---------public void categoriza(double peso) {

---------

if (peso < 20) imprime(“mosca”); else if (peso < 50) imprime(“welter”); else if (peso < 80) imprime(“mediano”); }

else imprime(“pesado”);

//------------------ public void imprime(String cadena) { txtSalida.append(cadena + “\n”); } //------------------ public double mayorDe(double a, double b, double c) { double mayor=a; if (b > mayor) mayor = b; if (c > mayor) mayor = c; return mayor; } //------------------

Page 12: LenguajeJava-Parte1

CAPITULO 1: EL LENGUAJE DE PROGRAMACIÓN JAVA

SUPER JAVA SE FOR WINDOWS WITH NETBEANS IDE @Julio Vásquez Paragulla - -2da.Edición Mayo 2010

- 16 -

public int aleatorio(int limiteinf, int limitesup) { int numero; numero = (int) (Math.random() * (limitesup – limiteinf + 1)

+ limiteinf); }

return numero;

//------------------------- Observe que la palabra reservada return nos permite decirle al método que devuelva el resultado que queremos según el tipo de dato del método. Observe también el nombre de los métodos que para efectos de estandarización se recomienda que empiece con letra minúscula y si el nombre es compuesto, a partir de la segunda palabra que empiece con mayúsculas. Ver aplicaciones en los capítulos 5, 6, 7 y siguientes. Vectores y matrices Un vector, también llamado arreglo (array) es una manera de agrupar valores de un mismo tipo bajo un mismo nombre. Para acceder a los valores individuales se asigna a cada uno de ellos un número denominado índice, que normalmente empieza en cero. En Java podemos declarar vectores de dos maneras: Tipo_de_dato vector[]; o tipo_de_dato[] vector; De cualquiera de las dos formas obtendríamos un vector de tamaño no definido. Sin embargo, la declaración no asegura un buen uso de los elementos del vector; por lo que se debe definir su tamaño asignando memoria suficiente para todos sus elementos, de la siguiente manera:

vector = new tipo_de_dato[tamaño]; ahora sí tendríamos un vector preparado para aceptar tantos elementos según el tamaño indicado del tipo de dato que se haya elegido. Ejemplo1: int enteros[]; // declaracion del arreglo

// asignacion de memoria para 20 enteros enteros = new int[20]; Ejemplo2: JButton botones[]; // declaracion del arreglo

// asignacion de memoria para 10 botones botones = new JButton[10]; Observe que el tipo de dato es quien define el tipo de arreglo, por lo que el arreglo puede ser de tipo primitivo (ejm1) o puede ser de tipo clase (ejm2). También se puede declarar un arreglo asignándole valores iniciales, con lo cual se estaría definiendo su tamaño. Ejemplo3: String paises[] = {“Peru”, “Argentina”, “Colombia”,

“Ecuador”, “Brazil”, “Chile”, “Bolivia”};

Page 13: LenguajeJava-Parte1

CAPITULO 1: EL LENGUAJE DE PROGRAMACIÓN JAVA

SUPER JAVA SE FOR WINDOWS WITH NETBEANS IDE @Julio Vásquez Paragulla - -2da.Edición Mayo 2010

- 17 -

En este ejemplo se esta declarando un vector de 7 elementos tipo String cuyos valores son los indicados dentro de las llaves. Esta forma de declaración es equivalente a crear el vector y luego asignar los valores uno a uno, así: String[] paises = new String[7]; paises[0] = "Peru"; paises[1] = "Argentina"; paises[2] = "Colombia"; paises[3] = "Ecuador"; paises[4] = "Brazil"; paises[5] = "Chile"; paises[6] = "Bolivia"; Como podemos observar, para acceder a un valor específico de un vector, se pone el nombre del vector acompañado del índice correspondiente encerrado entre corchetes. El primer índice siempre será cero. Para mostrar el contenido del arreglo países, del primero al ultimo puede ser asi: for(int i=0; i<7; i++) imprime(paises[i]+”\n”); Para mostrar el contenido del arreglo países, del ultimo al primero puede ser asi: for(int i=6; i>=0; i--) imprime(paises[i]+”\n”); Para intercambiar el contenido de la celda 1 con el de la celda 4 puede ser asi: String aux=paises[1]; paises[1] = países[4]; paises[4] = aux; Acceder a la celda 7 del arreglo paises causaría un desbordamiento porque dicha celda no existe. Este desbordamiento causa la interrupción de su programa. Crear matrices, también llamados vectores multidimensionales, es tan sencillo como añadir corchetes, así: tipo_de_dato[][] matriz; o tipo de dato matriz[][]; El primer corchete corresponde a las filas y el segundo corchete corresponde a las columnas. Los vectores en Java son en realidad objetos (como casi todo, exceptuando los tipos de dato primitivos) y por lo tanto se inicializan llamando a un constructor con new, con lo cual se logra un asignamiento suficiente de memoria (instanciamiento) para que el vector funcione correctamente. Por ejemplo, declaremos e instanciemos una matriz de números de 30 filas por 10 columnas: int numeros[][] = new int[30][10]; Para llenar la matriz con números aleatorios de 3 cifras puede ser asi: for (int f=0; f<30; f++){ for (int c=0; c<10; c++){ numeros[f][c]=aleatorio(100,999);

} }

Page 14: LenguajeJava-Parte1

CAPITULO 1: EL LENGUAJE DE PROGRAMACIÓN JAVA

SUPER JAVA SE FOR WINDOWS WITH NETBEANS IDE @Julio Vásquez Paragulla - -2da.Edición Mayo 2010

- 18 -

Para mostrar el contenido de la matriz en forma de tabla puede ser asi: for (int f=0; f<30; f++){ for (int c=0; c<10; c++){ imprime(numeros[f][c]+”\t”);

} imprime(“\n”); // cambio de linea

} Si la matriz fuera cuadrada de 10 filas por 10 columnas, para mostrar solo el contenido de la diagonal principal de l matriz puede ser asi: for (int f=0; f<10; f++){ for (int c=0; c<10; c++){ if(f==c) imprime(numeros[f][c]+”\t”); else imprime(“\t”);

} imprime(“\n”); // cambio de linea

} Si la matriz fuera cuadrada de 10 filas por 10 columnas, para mostrar solo el contenido de la diagonal secundaria de l matriz puede ser asi: for (int f=0; f<10; f++){ for (int c=0; c<10; c++){ if(f+c==9) imprime(numeros[f][c]+”\t”); else imprime(“\t”);

} imprime(“\n”); // cambio de linea

} Ver aplicaciones en el capitulo 6.