Programa desarrollado
Ingeniera en Desarrollo de
Software CUATRIMESTRE: 04
Programa de la asignatura:
Programacin orientada a objetos I
Unidad 2. Mtodos y estructuras de control
ndice
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.
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
que
la
variable
anterior,
// pero el
'referencia2'.
identificador
ahora
es
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.
Parmetros de entrada, que son las entradas propias del mtodo que le
ayudarn a saber sobre qu se realizarn las operaciones indicadas en las
sentencias que lo conforman, aunque este apartado se puede considerar opcional.
Parmetros de retorno, que es la respuesta que nos regresar una vez que haya
ejecutado el cuerpo de sus sentencias.
}
Este mtodo recibe dos parmetros de tipo entero, cuyos identificadores son base y
potencia.
}
As, se omiten muchas partes de los mtodos, y los que se incluyen slo son
ejemplos ilustrativos de cada uno de los puntos.
Tambin como nota importante, recordando los tipos de variables, cabe mencionar que en
Java los parmetros de tipo primitivo (int, long, double, ) siempre se pasan por valor. Las
variables de tipo objeto y arrays se pasan por referencia (referencia a su direccin de
memoria de alojamiento).
r_potencia = obtener_potencia(b,p);
System.out.println(El resultado es:
+r_potencia);
}
Donde:
MTODO INCORRECTO
MTODO CORRECTO
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.
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){
System.out.print("Muy Bien");
}
else if(calificacion >70 && calificacion <= 80){
System.out.print("Bien");
}
else if(calificacion < 70){
System.out.print("Muy mal");
}
}
}
En este ejemplo se evala que si una calificacin est entre 90 y 100 se mostrar una
mensaje diciendo Muy Bien, si no se tiene una calificacin entre 90 y 100; pero si est
entre 80 y 90 se mostrar un mensaje diciendo Bien, y si no se cumpli ninguna de las
anteriores y la calificacin es menor de 70 se mostrar un mensaje diciendo Muy mal.
Con el ejemplo anterior se observa cmo se pueden colocar condiciones mltiples,
donde no slo se evalu una calificacin, sino un rango de calificaciones; para ello se
hizo uso de los operadores lgicos y relacionales que se revisaron en la unidad anterior.
Las caractersticas ms relevantes de switch son las siguientes (Gosling, J., Holmes, D.
& Arnold, K., 2001):
case 7: System.out.print("Julio");
break;
case 8: System.out.print("Agosto");
break;
case 9:
System.out.print("Septiembre");
break;
case 10: System.out.print("Octubre");
break;
case 11: System.out.print("Noviembre");
break;
case 12:
System.out.print("Diciembre");
break;
default:System.out.print("Mes no vlido");
}
}
}
Este ejemplo muestra que al inicio del programa se crea una variable llamada mes, la
cual almacena el nmero del mes indicado por el usuario, y muestra en la pantalla el
nombre del mes correspondiente, para identificar el nombre de mes utilizamos la
sentencia switch que para este ejemplo tiene 12 casos que son el nmero de meses que
existen, al encontrar el valor correspondiente mostrar el nombre del mes, y en caso de
que el usuario ingrese un nmero no valido como 20, el programa mostrar un mensaje
diciendo Mes no vlido.
Entonces al requerir usar un programa donde las comparaciones sean muy especficas se
puede emplear un switch, y en el caso de evaluar rangos, utilizar un if.
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
sta nunca se evala como falsa, el programa se repetir infinitamente, lo que provocar
un problema en la ejecucin. Veamos el siguiente ejemplo:
package ejemplos;
import javax.swing.JOptionPane;
/**
* @author ESAD
*/
public class ejemploWhile {
public static void main(String[] args) {
int n= Integer.parseInt(JOptionPane.showInputDialog("Ingresa el 9"));
while(n != 9){
n= Integer.parseInt(JOptionPane.showInputDialog("Ingresa el 9"));
}
}
}
En este ejemplo se pide al usuario ingresar el nmero 9, y el ciclo seguir mientras no
sea ingresado el 9, en el momento en que la condicin se deja de cumplir (precisamente
al ingresar el 9) el ciclo terminar y el programa tambin.
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{
}
While(condicion);
Veamos el siguiente ejemplo:
package ejemplos;
import javax.swing.JOptionPane;
/**
* @author ESAD
*/
public class ejemploDoWhile {
public static void main(String[] args) {
int n;
do{
n= Integer.parseInt(JOptionPane.showInputDialog("Ingresa el 9"));
}
while(n != 9);
}
}
Como podemos observar el ciclo while es muy parecido al do-while, pero es importante
recordar que si el while desde un principio no se cumple la condicin no entra al ciclo, y el
do-while primero entra y despus evala.
Es recomendable que compares los dos ejemplos, y observes que en el ciclo do-while la
peticin del nmero se realiza dentro del bloque que conforma el do, pues se tiene la
certeza de que entrar a ejecutar esta porcin del programa, al menos una vez. Mientras
que en el ciclo while la peticin se hace fuera del bloque de instrucciones que lo
conforman, pues la evaluacin se realiza antes de entrar al ciclo.
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;
/**
* @author ESAD
*/
public class ejemploFor {
public static void main(String[] args) {
int n= Integer.parseInt(JOptionPane.showInputDialog("Cuntos nmeros quieres ver"));
for(int i=1; i<=n; i=i+1){
System.out.print(i);
}
}
}
Este ejemplo pide al usuario un nmero, y muestra ese mismo nmero de elementos, por
ejemplo, el inicio empieza en 1, la condicin para seguir es que la variable i sea menor o
igual que el nmero dado por el usuario, y el incrementos ser de uno en uno, de esta
manera la salida del programa al ingresar un 5 sera como se muestra a continuacin:
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");
}
}
}
}
Como se puede observar, se presenta un ciclo dentro de otro, su manera de funcionar es
que entra al primero, despus al segundo y hasta que el segundo termine sus
repeticiones, el primero volver a incrementar su valor y volver a entrar al segundo
tomando sus valores iniciales. Respecto a la salida, en este ejemplo se indic que los
temas eran 3 y subtemas 2, entonces se coloca el primer tema y sus respectivos
subtemas 1.1 y 1.2, ya que termina ese tema se sigue con el 2.1 y 2.2.
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.
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.
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