Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

39
Corina Flores V Programa MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI

Transcript of Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

Page 1: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

Corina Flores V Programa MEMI

Estructuras de Control

Corina Flores VillarroelUMSS - Programa MEMI

Page 2: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - 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”.

Page 3: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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.

Page 4: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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.

Page 5: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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.

Page 6: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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

Page 7: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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.

Page 8: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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

.

.

Page 9: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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)

Page 10: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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

Page 11: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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.

Page 12: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

Corina Flores V Programa MEMI

Selección La sentencia IF, se puede emplear de

diferentes maneras:

A) Simple B) Concatenada C) Anidada

Page 13: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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

Page 14: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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); } }}

Page 15: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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

Page 16: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

Corina Flores V Programa MEMI

Selección … concatenaciónif (condición) {

bloque}else {

bloque}

condF V

Page 17: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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); } }}

Page 18: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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

Page 19: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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"); }}

Page 20: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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.

Page 21: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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.

Page 22: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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

Page 23: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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, -

Page 24: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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}

Page 25: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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.

Page 26: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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

Page 27: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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.

Page 28: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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

Page 29: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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; } }}

Page 30: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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

Page 31: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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.

Page 32: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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

Page 33: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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); } }}

Page 34: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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.

Page 35: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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--;}

Page 36: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

Corina Flores V Programa MEMI

Sentencia for-each Para recorrer sobre colecciones

Hace un recorrido sobre todos los elementos que guarda la colección

Page 37: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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); }}

Page 38: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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

Page 39: Corina Flores VPrograma MEMI Estructuras de Control Corina Flores Villarroel UMSS - Programa MEMI.

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); } }