corina flores vprograma memi estructuras de control corina flores villarroel umss - programa memi
TRANSCRIPT
Corina Flores V Programa MEMI
Estructuras de Control
Corina Flores VillarroelUMSS - Programa MEMI
Corina Flores V Programa MEMI
Introducción Recordemos …
Un programa se define:
1. Bloque de declaraciones
Su misión consiste en indicar al procesador que reserve espacio en la memoria para una constante, variable u objeto del programa, indicandoasimismo su tipo y nombre.
“Secuencia de instrucciones lógicamente ordenadas que pueden ser ejecutadas en una computadora”.
Corina Flores V Programa MEMI
Introducción Recordemos …
Un programa se define:
“Secuencia de instrucciones lógicamente ordenadas que pueden ser ejecutadas en una computadora”.
2. Bloque de instruccionesConstituído por un conjunto de operaciones y la secuencia de instrucciones que se han de realizar para la obtención de los resultados deseados. Dentro de éste bloque se diferencian tres partes fundamentales:
(a) Entrada de datos: instrucciones que toman datos de un dispositivo externo.
(b) Proceso: instrucciones que
modifican/procesan los datos.
(c) Salida de resultados: instrucciones que toman los datos finales de la memoria central y los envía a dispositivos externos.
Corina Flores V Programa MEMI
Introducción Recordemos …
Esto nos dá la idea de que las instrucciones estan ordenadas de tal manera que una está a continuación de la otra.
Corina Flores V Programa MEMI
Introducción Lo que significa …
Pensar en un sentido muy restringido, ya que obligan a mantener una secuencia para su ejecución.
Sin embargo, … también hay necesidad de que durante la ejecución del programa el orden de ejecución de las instrucciones sean alteradas.
Corina Flores V Programa MEMI
Estructuras de Control Las estructuras de control tienen una
finalidad bastante definida: señalar el orden en que tienen que sucederse o ejecutarse los pasos de un algoritmo o instrucciones en un programa.
Existen: Secuenciales, Pueden ser de: Selección e Iterativas
Corina Flores V Programa MEMI
Secuenciales Como ya se había indicado … son
estructuras que obedecen la linealidad, es decir, no admiten saltos
1. A la ejecución de una instrucción le sigue otra o la siguiente instrucción y así sucesivamente.
2. Mantiene la secuencia de acciones en el orden en el que aparecen las instrucciones.
Corina Flores V Programa MEMI
Secuenciales … ejemplopublic class Secuencial{ public static void main(String [] args) { int x; int y; x = 10; y = 2; x = x - y; y = x/4; System.out.println("El valor de x es = " + x); System.out.println("El valor de y es = " + y); }}
int x;
int y;
x = 10;
System.out
.
.
Corina Flores V Programa MEMI
Otras estructuras … Pero … no necesariemente todos los
programas pueden ejecutarse de esta forma secuencial, hay necesidad de variar el flujo de control de un programa ya sea para …
Tomar decisiones (Selección) y/o
Repetir un conjunto de instrucciones (Iteración)
Corina Flores V Programa MEMI
Selección La sentencia de selección IF, permite tomar
decisiones en base a una condición lógica. Luego decide qué sucederá en función al resultado. A esta sentencia también se conoce como:
Selección Condicional De decisión
Corina Flores V Programa MEMI
Selección Por ejemplo, si un programa muestra un
mensaje en la pantalla que pregunta al usuario ”¿Desea seguir adelante?”, obviamente, de la respuesta del usuario dependerá la siguiente acción del programa.
El programador debe escribir el código para las dos posibilidades (sí y no), aunque cuando el programa esté funcionando, sólo se elegirá una.
Corina Flores V Programa MEMI
Selección La sentencia IF, se puede emplear de
diferentes maneras:
A) Simple B) Concatenada C) Anidada
Corina Flores V Programa MEMI
Selección … simple (if)if (condición)
instrucción
if (condición) {bloque
}
Condición, es una expresión booleana
int x;F
Vcond
Corina Flores V Programa MEMI
Selección … ejemplopublic class Simple_if{ public static void main(String [] args) { int a, b; a = 10; b = 5; if (a > b) // if simple, con una instruccion System.out.println("** a es mayor que b ** "); if (a > b) { // if simple, con un bloque de instrucciones System.out.println("A es mayor que B "); System.out.println("El valor de A es = " + a); System.out.println("El valor de B es = " + b); } }}
Corina Flores V Programa MEMI
Selección … simple (if) Pero no siempre el resultado de la
condición es verdadera, entonces hay necesidad de incluir la cláusula else en caso de que el resultado sea falso.
Entonces podemos concatenar sentencias if
Corina Flores V Programa MEMI
Selección … concatenaciónif (condición) {
bloque}else {
bloque}
condF V
Corina Flores V Programa MEMI
Secuenciales … ejemplopublic class Concatenacion_If{ public static void main(String [] args) { int a, b; a = 1; b = 5; if (a > b) { // por Verdad a = a - b; System.out.println("El valor de A es = " + a); } else { // por Falso b = b*a; System.out.println("El valor de B es = " + b); } }}
Corina Flores V Programa MEMI
Selección … anidaciónif (condición1) {
if (condición2) { bloque1
} else { bloque2
}}else {
if (condición3) { bloque3
} else { bloque4
}}
cond
F
V
cond
condF
V
V
F
Corina Flores V Programa MEMI
Selección … ejemplopublic class Anidacion_If{ public static void main(String [] args) { int edadJuan = 20; int edadJose = 18; if (edadJuan < edadJose) System.out.println("Juan es mas joven que Jose"); else if (edadJuan == edadJose) System.out.println("Juan tiene la misma edad que Jose"); else System.out.println("Juan es mayor que Jose"); }}
Corina Flores V Programa MEMI
ERRORES Comunes Olvidar los () en la condición Confundir el operador relación ==
con el de asignación = Colocar mal los if anidados No tener en cuenta el orden de
precedencia de los operadores en la condición.
Corina Flores V Programa MEMI
Condicional Switch Cuando en una condición existen diversas
posibilidades nos vemos obligados a utilizar if anidados, lo que complica la realización y depuración del código.
Para facilitar esta situación se tiene la condicional switch que permite definir un número ilimitado de ramas basadas en una misma condición.
Corina Flores V Programa MEMI
Selección … concatenaciónswitch (condición) {
case literal1:instrucciones;break;
case literal2: instrucciones; break;
…default
bloque;
}
cond
Caso1 Caso2…
CasoN
Corina Flores V Programa MEMI
Condicional Switch La condición, puede ser una
expresión, siendo ésta ya sea una fórmula, una variable, un valor
El literal, se refiere a los valores explícitos que se pueden definir como: 100, a, -
Corina Flores V Programa MEMI
switch … ejemplopublic class Switch{ public static void main (String [] args) {
char letra='p'; switch(letra) { case 'a': case 'A': System.out.println("Es la vocal a, que viene de Araña");
break; case 'e': case 'E':
System.out.println("Es la vocal e, que viene de Elefante\n");
break; . . .
default: System.out.println("Es una consonante\n"); } // switch } // main}
Corina Flores V Programa MEMI
ERRORES Comunes En la Condicional se declaren tipos
no permitidos (solo se permite char, int, byte, short)
Omitir la sentencia break trae como consecuencia, ejecutar el siguiente case.
Corina Flores V Programa MEMI
Iteración Existen dos tipos de estructuras de
control que permiten realizar iteraciones o repetición de instrucciones. Estas son:
Sentencia FOR
Sentencia While
Corina Flores V Programa MEMI
Sentencia while Nos permite repetir una serie de
instrucciones mientras se cumpla la condición de continuidad.
Es recomendable utilizar cuando no conocemos a priori (de antemano) el número de iteraciones que deseamos realizar.
Corina Flores V Programa MEMI
Sentencia whileInicialización de variable de
control;while (condición) {
bloque// actualizar variable de control
}
Variable de control, es la variable que sirve para llevar el control de las repeticiones.
bloqueF
Vcond
Inicializacion
Corina Flores V Programa MEMI
Sentencia while … ejemplopublic class Sentencia_While{ public static void main(String [] args) { int i = 20; System.out.println( " --- Lista de numeros pares en orden
decreciente---"); while (i!= 0) { System.out.println( " i = " +i); i = i - 2; } }}
Corina Flores V Programa MEMI
ERRORES Comunes Olvidar actualizar la variable de
control en el cuerpo de la sentencia while. Lo que genera un ciclo infinito
Corina Flores V Programa MEMI
Sentencia For Cuando se desea ejecutar un grupo
de instrucciones un número determinado de veces, es mejor utilizar la sentencia for.
Corina Flores V Programa MEMI
Sentencia Forfor (inicialización; condición; expresión){
bloque}
bloqueF
Vcondinicialización, de la variable de control
condición, es la que determina si seguir o parar la repeticionexpresión, es aquella en la que el valor de la variable de control se actualiza
Orden de ejecución:
1 2 4
3
1 2 3 4(Primera vez)
(Segunda vez)Orden de ejecución: 2 3 4
Corina Flores V Programa MEMI
Sentencia for … ejemplopublic class Sentencia_for{ public static void main(String [] args) { System.out.println(" Genera una lista de valores multiplos
de 5"); for (int i = 0; i <= 5; i++) { System.out.print( " " +i*5); } }}
Corina Flores V Programa MEMI
Equivalencia La sentencia for y while son
equivalentes entre sí, esto significa que:
una sentencia for puede ser representada también mediante una sentencia while y viceversa.
Corina Flores V Programa MEMI
Equivalencia for (int j =10; j>1; j--)
System.out.println(“ Valor de j : “);
De forma equivalente se puede representar aplicando while
int j =10; while (j>1) {System.out.println(“ Valor de j : “);j = j--;}
Corina Flores V Programa MEMI
Sentencia for-each Para recorrer sobre colecciones
Hace un recorrido sobre todos los elementos que guarda la colección
Corina Flores V Programa MEMI
Sentencia for-eachimport java.util.*; public class For_ForEach_Iterator_While { ArrayList<String> lista; public For_ForEach_Iterator_While() { lista = new ArrayList<String>(); } public void anadir(){ lista.add("Lunes"); lista.add("Martes"); lista.add("Miercoles"); lista.add("Jueves"); lista.add("Viernes"); lista.add("Sabado"); lista.add("Domingo"); }
public void mostrarForEach(){ System.out.println("Listamos con ForEach"); for (String dia: lista) System.out.println("Dia: " + dia); }}
Corina Flores V Programa MEMI
Uso de Iterator Para recorrer sobre colecciones
Hace un recorrido sobre todos los elementos que guarda la colección
Hace uso de while y de métodos como: hasNext y next
Corina Flores V Programa MEMI
Uso de IteratorEl ejemplo toma la colección de nombre lista detallada en el ejemplo anterior con for-each.
public void mostrarIterator(){ System.out.println("Listamos con Iterator"); Iterator <String> it = lista.iterator(); while (it.hasNext()) { String dia = it.next(); System.out.println(dia); } }