23
Mtl Lourdes Cahuich 1 Estructuras de iteración Programación Estructurada

Estructuras de iteracion

  • Upload
    uvm

  • View
    4.137

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Estructuras de iteracion

Mtl Lourdes Cahuich 1

Estructuras de iteración

Programación Estructurada

Page 2: Estructuras de iteracion

Mtl Lourdes Cahuich 2

Problemas a resolver con iteraciones

Supongamos que nos piden que realicemos un dibujo sencillo que se despliegue por pantalla.

El objetivo es mostrar un cuadrado de 5 filas por 5 columnas trazado con cualquier carácter.

Con los elementos de programación que ya conocemos, realizamos un programa que cumpla con este requisito.

Page 3: Estructuras de iteracion

Mtl Lourdes Cahuich 3

Problemas a resolver con iteraciones

public class Cuadrado{ public static void main(String args[]){ System.out.println("*****");

System.out.println("*****");

System.out.println("*****");

System.out.println("*****");

System.out.println("*****");

}

}

Page 4: Estructuras de iteracion

Mtl Lourdes Cahuich 4

Problemas a resolver con iteraciones

Básicamente este programa cumple con el objetivo. Pero... ¿No notan que algo anda mal? Se repitió

cinco veces una instrucción. ¿Qué ocurriría sin nos solicitaran una figura más grande?

Tendríamos que agregar más líneas de código. Y si en vez de una figura , se les ocurría pedirnos

que listáramos una lista de números del uno al millón, el código sería inmenso.

También imagínense lo que tardaríamos en escribirlo.

Page 5: Estructuras de iteracion

Mtl Lourdes Cahuich 5

Problemas a resolver con iteraciones

Sin embargo tenemos un recurso para acudir en cuanto surjan estos problemas. Son las estructuras de iteración. Una iteración consiste en una repetición de un bloque de sentencias un numero determinando de veces o hasta que se cumpla una condición.

De esta forma el código puede simplificarse notablemente.

Page 6: Estructuras de iteracion

Mtl Lourdes Cahuich 6

Problemas a resolver con iteraciones

Antes de entrar en los detalles de la implementación con Java, veremos como podemos realizar algunas rutinas en pseudocódigo:

Repetir 5 veces :

Imprimir ("*****");

Page 7: Estructuras de iteracion

Mtl Lourdes Cahuich 7

Iteración

Le pasamos al intérprete la tarea de reiterar una acción.

Nosotros solamente escribimos una vez lo que hay que hacer.

Siguiendo con una segunda aproximación, podríamos agregarle un registro que cuente el número de iteraciones.

Además adicionamos una condición para que indicar que el registro no debe pasar de cierto número.

Page 8: Estructuras de iteracion

Mtl Lourdes Cahuich 8

Iteración

De esta manera, el pseudocódigo quedará así:

N = 1;

Mientras que N <= 5

Imprimir ("*****");

N = N + 1;

Page 9: Estructuras de iteracion

Mtl Lourdes Cahuich 9

Iteración: Mientras

Lo que hicimos fue inicializar el contador, agregar una condición de corte, indicar que sentencia se debe repetir y finalmente incrementamos el contador.

La condición es una expresión lógica que debe tener un valor de verdadero o falso.

En la ejecución, cada vez que termina la última sentencia vuelve a evaluar la condición, si se cumple sigue la iteración, de lo contrario termina.

Page 10: Estructuras de iteracion

Mtl Lourdes Cahuich 10

Iteración: Mientras

Esta es una estructura de iteración útil para los casos en donde sabemos a priori cuantas repeticiones se deben ejecutar.

Con pocos retoques se pueden realizar iteraciones desconociendo el número de ciclos.

Page 11: Estructuras de iteracion

Mtl Lourdes Cahuich 11

Iteración: Mientras

Realicemos un programa que transforme un número decimal en binario.

En la vida real, para hacer esto, realizamos sucesivas divisiones por 2 al numero decimal.

A cada división tomamos el resto y continuamos hasta que el resultado sea cero.

Page 12: Estructuras de iteracion

Mtl Lourdes Cahuich 12

Iteración: Mientras

Tenemos que pasar el número 25 a binario 25 mod 2 = 1; 25 div 2 = 12;

12 mod 2 = 0; 12 div 2 = 6;

6 mod 2 = 0; 6 div 2 = 3;

3 mod 2 = 1; 3 div 2 = 1;

1 mod 2 = 1; 1 div 2 = 0;

El resultado es 11001

Page 13: Estructuras de iteracion

Mtl Lourdes Cahuich 13

Iteración: Mientras

En general, no sabemos cuantas divisiones tendremos que realizar.

Pero si sabemos que debemos llegar a cero con la división.

Las tareas que repetimos son las de tomar el resto y el resultado de la división

Page 14: Estructuras de iteracion

Mtl Lourdes Cahuich 14

Iteración: Mientras

DECIMAL = 25;

Mientras que DECIMAL > 0 : BINARIO = DECIMAL % 2 + BINARIO;

DECIMAL = DECIMAL / 2;

Page 15: Estructuras de iteracion

Mtl Lourdes Cahuich 15

While

La sentencia while es la más sencilla de las estructuras de iteración.

La iteración continuará hasta que su condición sea falsa.

while ( condición ) sentencia ;

Page 16: Estructuras de iteracion

Mtl Lourdes Cahuich 16

While

La condición tiene que tomar un valor booleano (verdadero o falso).

Si este valor es verdadero, se ejecutará la sentencia.

Concluida esta acción se vuelve a evaluar la condición.

Proseguirán los ciclos hasta que la condición no cambie a falso.

Page 17: Estructuras de iteracion

Mtl Lourdes Cahuich 17

While

Esta es una estructura de iteración pre-prueba, es decir primero se evalúa la condición antes de realizar cualquier acción.

Si de entrada la condición es falsa nunca ejecutará el conjunto de sentencias.

Page 18: Estructuras de iteracion

Mtl Lourdes Cahuich 18

While

Teníamos que transformar un número decimal a binario.

El programa en java nos queda de esta manera:

Page 19: Estructuras de iteracion

Mtl Lourdes Cahuich 19

public class Dec2Bin{ public static void main(String args[]){ int decimal = 25;

String binario = "";

while ( decimal > 0 )

{ binario = decimal % 2 + binario;

decimal /= 2;

}

System.out.println(binario);

}

}

Page 20: Estructuras de iteracion

Mtl Lourdes Cahuich 20

While

Como no sabemos de antemano cuantas vueltas debe dar, simplemente esperamos que el resultado de las divisiones sucesivas sea igual a cero.

También se pueden realizar ciclos con while en donde ya conocemos, antes de entrar en la estructura, cuantas vueltas debe dar para terminar.

Para esto nos auxiliamos con un contador de vueltas.

Page 21: Estructuras de iteracion

Mtl Lourdes Cahuich 21

While

Previamente tiene que inicializarse antes de ingresar al ciclo.

Luego en cada vuelta se modificara según la lógica del algoritmo.

Realicemos el programa que despliegue por pantalla cinco líneas de caracteres.

Page 22: Estructuras de iteracion

Mtl Lourdes Cahuich 22

public class Cuadrado{ public static void main(String args[]){ int contador = 1;

while ( contador <= 5 ) {

System.out.println("*****"); contador++;

}

}

}

Page 23: Estructuras de iteracion

Mtl Lourdes Cahuich 23

While

En este algoritmo, inicializamos el contador a 1 y luego en cada ciclo se incrementa.

La condición de corte tiene como objetivo no permitir mas vueltas si el contador superó el valor 5.