Professional Documents
Culture Documents
Programa desarrollado
Programa de la asignatura:
Programacin orientada a objetos I Unidad 2. Mtodos y estructuras de control
ndice
Unidad 2. Mtodos y estructuras de control ....................................................................... 4 Presentacin de la unidad .............................................................................................. 4 Propsito ........................................................................................................................ 4 Competencia especfica ................................................................................................. 4 Consideraciones especficas de la unidad...................................................................... 4 2.1. Generalidades de los mtodos ................................................................................ 5 2.1.1. Declaracin y mbito de variables ........................................................................ 5 2.1.2. Declaracin de constantes ................................................................................... 9 2.2. Mtodos que no devuelven valores ....................................................................... 10 2.2.1. Caractersticas ................................................................................................... 10 2.2.2. Llamada de mtodos .......................................................................................... 10 2.3. Mtodos que devuelven valores ............................................................................ 11 2.3.1. Recepcin de parmetros................................................................................... 12 2.3.2. Retorno de parmetros....................................................................................... 12 2.3.3. Paso de parmetros ........................................................................................... 13 2.3.4. Llamada de mtodos .......................................................................................... 13 Actividad 1. Tipos de variables y constantes ................................................................ 14 Actividad 2. Deteccin de errores ................................................................................. 14 Actividad 3. Sobre parmetros ..................................................................................... 15 2.4. Estructuras de control selectivas ........................................................................... 16 2.4.1. If - else ............................................................................................................... 16 2.4.2. If anidados .......................................................................................................... 17 2.4.3. Switch - case ...................................................................................................... 18 Actividad 4. Programa de horscopo ............................................................................ 20 2.5. Estructuras de control cclicas ............................................................................... 21 2.5.1. While .................................................................................................................. 21 2.5.2. Do - while ........................................................................................................... 22 2.5.3. For...................................................................................................................... 23
Propsito
En esta unidad logrars: Describir las generalidades de los mtodos. Distinguir los mtodos que devuelven valores contra los que no devuelven. Manejar las estructuras de control selectivas y cclicas.
Competencia especfica
Desarrollar programas modulares para solucionar problemas diversos, mediante la aplicacin de los diferentes tipos de variables, mtodos, y estructuras de control en lenguaje JAVA.
Variables primitivas: sirven para almacenar datos numricos, valores lgicos o caracteres. Variables referenciadas: asociadas a un objeto o son la instancia de una clase.
Para profundizar un poco ms en el concepto de variable se dir que una variable no es nada ms que un contenedor de bits que representan un valor, como veremos a continuacin. Cuando se habla de variables primitivas, los bits que forman esta variable slo representan un nmero que coincide con el valor asignado a la misma variable y como se indic, puede quedarse conteniendo ese valor o puede cambiar a lo largo de la ejecucin del programa. Por ejemplo, relacionando lo expuesto ahora con el tema de tipos de dato se tiene que hay variables de tipo byte (con una longitud de 8 bits en memoria) y puede almacenar nmeros enteros con signo entre -128 y 127 (cuando no se utiliza el signo el valor puede ser hasta 255), de tipo int (con una longitud de 32 bits en memoria) para almacenar nmeros enteros con signo entre -2,147,483,648 al 2,147,483,647, de tipo float con sus respectivos lmites hasta abarcar todos los tipos de dato. Visto de manera grfica pudiera quedar como sigue: byte z = 5; // declaracin de variable de tipo byte vlida en java
00000101 byte z
contenedor de bits
Los bits representan el valor 5. Este valor es el dato que se almacena en memoria y se trabajar con l durante la ejecucin del programa. Siguiendo lo antes expuesto, x ser el nombre del contenedor y byte indicar la forma del contenedor.
Por otro lado, cuando se habla de variables referenciadas o asociadas a un objeto, los bits representan un identificador que permite acceder al valor de la variable, es decir nos
Ciencias Exactas, Ingenieras y Tecnologa | Desarrollo de Software 6
Se muestran a continuacin algunos ejemplos de declaraciones de variables referentes a Java, para los tipos de variables primitivas y las variables referenciadas o asociadas a un objeto: int a; // declaracin de una variable 'a' de tipo entero //su valor inicial (por definicin) es 0. int b = 10; // declaracin de una variable 'b' de tipo entero // con valor inicial establecido a 10. Nombre_Clase referencia; // declaracin de una variable con identificador 'referencia' // donde su tipo de dato ser 'Nombre_Clase' o dicho de otra manera // aqu es donde se crea el contenedor. Nombre_Clase referencia2; // mismo caso que la variable anterior, // pero el identificador ahora es 'referencia2'. referencia = new Nombre_Clase; // En este tipo de variables la declaracin no es suficiente se deber crear // un nuevo objeto de la clase 'Nombre_Clase', y es asignado a la variable // 'referencia'. En el paso anterior se dijo que se crea el contenedor,
Se puede notar claramente que en la primer imagen (Figura 2.1.) el IDE est indicando algn tipo de error en la lnea 21, sealando la variable con identificador a como la posible causa. En la segunda imagen (Figura 2.2.) muestra los detalles completos de la causa del error, el programador deber entender que no se puede encontrar el smbolo (variable) especificado. Hay ms normas de mbito respecto a las variables miembro de una clase, donde intervienen los modificadores de acceso public o private. Cuando una variable es declarada con el modificador public se accede directamente a ellas a travs de nombre_clase.nombre_variable, y en el caso de que una variable sea declarada con el modificador private slo se podr acceder a ella mediante los mtodos de la clase que lo permitan.
2.2.1. Caractersticas
El hecho de que un mtodo regrese valores o no, es opcional. Cuando un mtodo no retorna valores, se deber modificar la definicin de sus parmetros y quedar como sigue: void nombre_mtodo([parmetros]){ sentencia1; sentencia2; sentenciaN; } En donde se deber utilizar la palabra reservada void que le indica al compilador y al mtodo que su valor de retorno ser vacio. Dentro del cuerpo de sus sentencias se omite la sentencia return por no regresar valor alguno a donde fue llamado. Los parmetros de igual manera son opcionales, aunque los parntesis van por obligacin.
10
En los subtemas siguientes se explicarn con ms detalle los elementos mencionados y algunos otros que son necesarios para los mtodos que regresan valores.
11
12
13
14
2. Marca en rojo las lneas que contengan error. 3. Copia los mtodos nuevamente y corrgelos. 4. Guarda la actividad con el nombre POO1_U2_A2_XXYZ. Sustituye las XX por las dos primeras letras del primer nombre, la Y por la inicial del apellido paterno y la Z por la inicial del apellido materno. 5. Enva el archivo a tu Facilitador(a) para recibir retroalimentacin.
MTODO INCORRECTO public void suma(int a int b){ int c=a+b; return b; } public void area(int a, int b) int c=a*b return c; } public void divide(float a, float b){ int c=a/b; return b; } public void resta(int a, int a){ imt c=a-b; System.out.println(d); } public int areaCirculo(float r){ int b= 3.1416 * (r*r); return; }
MTODO CORRECTO
15
3. Guarda la actividad con el nombre POO1_U2_A3_XXYZ. Sustituye las XX por las dos primeras letras del primer nombre, la Y por la inicial del apellido paterno y la Z por la inicial del apellido materno. 4. Enva el archivo a tu Facilitador(a) para recibir retroalimentacin.
2.4.1. If - else
La estructura de seleccin simple o if es aquella secuencia de un programa que se ve afectada por una condicin, si la condicin es cumplida la secuencia del programa entrar en el bloque de instrucciones de dicha estructura, de lo contrario la secuencia del programa se saltar ese bloque de cdigo y entrar al bloque de instrucciones del else dado que la condicin se cumpli. Esta estructura de control se conforma como sigue: // Instrucciones previas a la condicin if( condicin) { Instrucciones a ejecutarse solo si la condicin se cumpli. } else{ Instrucciones a ejecutarse si la condicin NO se cumpli. } // Instrucciones a ejecutarse despus de la condicin Las llaves se utilizan para agrupar las instrucciones que se han de ejecutar, si slo se quiere que se ejecute una instruccin se puede omitirlas. Es importante mencionar que las instrucciones previas y posteriores al bloque if-else se ejecutan de manera normal, se cumpla o no la condicin, por lo que slo se altera la secuencia del programa en ese bloque.
16
2.4.2. If anidados
La estructura If anidados es un agrandamiento de la estructura anterior (if-else), ya que se pueden evaluar diferentes condiciones ligadas. Por ejemplo, en el tema anterior slo se quera mostrar Aprobado o Reprobado segn una calificacin, pero ahora se quiere dar mayor reconocimiento a los puntos obtenidos; esto se realizara de la siguiente manera: package ejemplos; /** * @author ESAD */ public class estructuraIF { public static void main(String[] args) { int calificacion=90; if(calificacion> 90 && calificacion <= 100){ System.out.print("Excelente"); } else if(calificacion >80 && calificacion <= 90){
17
18
Las caractersticas ms relevantes de switch son las siguientes (Gosling, J., Holmes, D. & Arnold, K., 2001): 1. Cada sentencia case se corresponde con un nico valor de expresin. No se pueden establecer rangos o condiciones, sino que se deben comparar con valores concretos. 2. Los valores no comprendidos en ninguna sentencia case se pueden gestionar en default, que es opcional. 3. En la ausencia de break, cuando se ejecuta una sentencia case se ejecutan tambin todas las case que van a continuacin, hasta que se llega a un break o hasta que termina el switch. Se muestra un ejemplo a continuacin: package ejemplos; import javax.swing.JOptionPane; /** * @author ESAD */ public class ejemploSwitch { public static void main(String[] args) { int mes= Integer.parseInt(JOptionPane.showInputDialog("Cul es el nmero del mes")); switch(mes){ case 1: System.out.print("Enero"); break; case 2: System.out.print("Febrero"); break; case 3: System.out.print("Marzo"); break; case 4: System.out.print("Abril"); break; case 5: System.out.print("Mayo"); break; case 6: System.out.print("Junio"); break;
Ciencias Exactas, Ingenieras y Tecnologa | Desarrollo de Software 19
20
4. Posteriormente, revisa los programas de tus compaeros(as) y si lo consideras pertinente retroalimenta sus participaciones con la intensin de que realicen mejoras a su programa.
Estas reglas son generales y algunos programadores se sienten ms cmodos utilizando principalmente una de ellas. Con mayor o menor esfuerzo, puede utilizarse cualquiera de ellas indistintamente.
2.5.1. While
El ciclo while tiene como caracterstica que primero evala la condicin y slo si se cumple realiza las instrucciones, de tal forma que si la condicin no es cumplida desde un inicio el control del programa no entrar en el bloque de instrucciones que se encuentran dentro del ciclo. Su declaracin es como se muestra a continuacin: while (condicion){ Bloque de Instrucciones a repetir } La condicin que se d, deber ser evaluada verdadera para que el control del programa ingrese al bloque de instrucciones y deber llegar en algn punto a que esa misma condicin se evale falsa y salga del bloque repetitivo. Si se plantea mal la condicin y
21
2.5.2. Do - while
El ciclo do-while permite la ejecucin del bloque repetitivo al menos una vez, se cumpla o no la condicin, pues ejecuta primero el bloque do y al finalizarlo evala la condicin, si sta se cumple regresa a ejecutar nuevamente el bloque do, de lo contrario termina la ejecucin, como se observa a continuacin: do{ Bloque de instrucciones a repetir } While(condicion); Veamos el siguiente ejemplo: package ejemplos; import javax.swing.JOptionPane; /** * @author ESAD */ public class ejemploDoWhile { public static void main(String[] args) {
22
2.5.3. For
El ciclo for es especialmente til cuando de antemano se conoce el nmero de veces que se quiere ejecutar el mismo bloque de instrucciones, su declaracin es como sigue: for(inicio ; condicin; incremento){ Bloque de instrucciones repetitivas } Inicio: se debe colocar un valor numrico donde comenzar el conteo de ejecuciones. Condicin: se coloca la condicin a evaluar en cada iteracin del ciclo para que se siga ejecutando el nmero de veces que se cumpla esta condicin, pues en el momento que la condicin se evale como falsa el ciclo dejar de repetirse. Incremento: esta instruccin se evala como si fuese la ltima del bloque de instrucciones e indica el incremento o decremento de la variable numrica de inicio para reevaluar la condicin en cada iteracin. Veamos el ejemplo: package ejemplos; import javax.swing.JOptionPane;
23
Otro punto importante respecto al ciclo for es que se puede anidar, esto se refiere a que es posible utilizar un ciclo dentro de otro, a manera de explicacin observa el siguiente cdigo y su salida: package ejemplos; import javax.swing.JOptionPane; /** * @author ESAD */ public class forAnidado { public static void main(String[] args) { int n= Integer.parseInt(JOptionPane.showInputDialog("Cuantos temas son")); int m= Integer.parseInt(JOptionPane.showInputDialog("Cuantos subtemas contiene cada tema")); for(int i=1; i<=n; i=i+1){ for(int j=1; j<=m; j=j+1){ System.out.print(i+","+j); System.out.print("\n");
Ciencias Exactas, Ingenieras y Tecnologa | Desarrollo de Software 24
Nota: Si se quisieran anidar ms de 2 ciclos for es posible realizarlo, tomando en cuenta que siempre el ciclo que se encuentre ms adentro ser el que se realice primero. Tambin es posible que el ciclo en lugar de ir de manera ascendente se realice de manera descendente, para esto se debe tomar en cuenta que el inicio sea el ltimo elemento, la condicin de paro el 0 y su incremento sea restar 1. Veamos el mismo ejemplo del ciclo for, pero ahora con un recorrido inverso. package ejemplos; import javax.swing.JOptionPane; /** * @author ESAD */ public class ejemploFor2 { public static void main(String[] args) { int n= Integer.parseInt(JOptionPane.showInputDialog("Cuntos nmeros quieres ver")); for(int i=n; i>0; i=i-1){ System.out.print(i); System.out.print("\n"); } }
25
Al realizar los cambios comentados es posible observar que la salida nos muestra los 5 nmeros, pero de manera descendente.
Autoevaluacin
Para reforzar los conocimientos relacionados con los temas que se abordaron en esta segunda unidad del curso, es necesario que resuelvas la autoevaluacin de la unidad.
26
Cierre de la unidad
Has concluido la unidad 2 del curso! A lo largo de sta has visto lo que es una variable, su mbito y declaracin, as como las generalidades de los mtodos, sus caractersticas, llamadas y los tipos de parmetros que se manejan. Posteriormente te involucraste conociendo las estructuras de control selectivas, como lo son el If-else, If anidado y switch-case. Al final de la unidad tambin se revisaron las estructuras de control cclicas while, do-while y for, cuyo propsito ha sido que obtengas conocimientos sobre estructuras de control y logres aplicarlas en la resolucin de problemas y creacin de programas para dichas soluciones.
27
Es aconsejable que revises nuevamente la unidad en caso de que los temas que se acaban de mencionar no te sean familiares o no los recuerdes, de no ser este tu caso, ya ests preparado(a) para seguir con la Unidad 3. Caractersticas de POO y excepciones, en donde continuars con la revisin de herencia, polimorfismo y excepciones en un programa JAVA. Todo ello con el fin de obtener el conocimiento necesario para comenzar a realizar pequeos programas computacionales al final de la cuarta y ltima unidad del curso de Programacin Orientada a Objetos I.
Para saber ms
Consulta la pgina oficial del lenguaje JAVA http://www.java.com/es/, donde podrs encontrar manuales de referencia sobre los mtodos, variables, estructuras de control selectivas y de repeticin.
Fuentes de consulta
Garca, J., Rodrguez, J., Mingo, I., Imaz, A., Brazlez, A., Larzabal, A. et al. (2000). Aprenda JAVA como si estuviera en primero. Espaa: Escuela Superior de Ingenieros, TECNUM. Recuperado el 1 de Marzo del 2011, de http://www.tecnun.es/asignaturas/Informat1/AyudaInf/aprendainf/Java/Java2.pdf Gosling, J., Holmes, D. & Arnold, K. (2001). El lenguaje de programacin Java TM. Madrid: Addison-Wesley. Recuperado el 1 de marzo del 2011, de http://icesecurity.org/programacion/JAVA/Libro_Java-SP.pdf
28