ciclos por profesora lillian bras. ciclos un ciclo es una estructura de control para repetir una o...

41
CICLOS por Profesora Lillian Bras

Upload: demetrio-villeda

Post on 23-Jan-2016

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

CICLOSpor Profesora Lillian Bras

Page 2: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Ciclos

Un ciclo es una estructura de control para repetir una o más instrucciones.

Se le llama cuerpo del ciclo al grupo de instrucciones que se repiten.

La ejecución del cuerpo del ciclo es controlada por una expresión lógica.

Page 3: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Ciclos…

La evaluación de la expresión lógica puede estar antes o después del cuerpo del ciclo.

Los ciclos que tienen la evaluación de la expresión lógica antes del cuerpo se conocen como “pre-test loops” y los que la tienen después se conocen como “post test loops”.

Page 4: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

“Pre-Test Loops” en Java

For Controlado por contador

While Controlado por contador o evento (respuesta o sentinela).

4

Page 5: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Flujograma de Ciclo while

statement(s)true

booleanexpression?

false

statement(s)true

booleanexpression

false

Page 6: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Ciclo while

La sintáxis del ciclo while es como sigue:while(condition) { //loop body statements;}

Como puede ver la condición es evaluada al principio, antes de ejecutar el cuerpo del ciclo.

Al evaluar la condición, si ésta es cierta, se ejecuta el cuerpo del ciclo y si es falsa, se procede a la siguiente instrucción después del ciclo.

Decimos que un while se ejecuta de 0 a n veces ya que cabe la posibilidad que la primera vez la condición sea falsa y el ciclo no se ejecute ni siquiera una vez.

Page 7: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Display‘*’

x=1

x<=10 x = x +1True

False

Un ejemplo de while

// En Java

int x = 1;

while (x <= 10) {

System.out.println(‘*’);

x = x + 1;

}

Page 8: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Un ciclo que no se ejecuta

El siguiente es un ejemplo de un ciclo que se ejecuta 0 veces:

int x = 1;

while(x >= 10) {

System.out.println(‘*’);

x = x + 1;

}

El cuerpo del ciclo nunca se ejecuta ya que la condición es falsa la primera vez que se evalúa.

Page 9: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Ciclos...

La mayor parte de las veces la condición que se utiliza para controlar un ciclo depende del valor de una variable y a ésta la llamamos variable de control.

Para que un ciclo sea diseñado correctamente debemos: Inicializar la variable de control correctamente

antes del ciclo Usar una expresión lógica adecuada para evaluar

la variable de control Actualizar la variable de control dentro del ciclo.

Page 10: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

En Java…

int x = 1; //Inicialización de variable de control: xwhile(x < = 10) //Evaluación de la variable de control

{

System.out.println(‘*’);x = x + 1; //Actualización de la variable de

control

}

Page 11: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Ciclos controlados por un contador

Cuando el cuerpo se debe repetir un número específico de veces decimos que el ciclo está controlado por un contador.

En este caso la variable de control trabaja contando las veces que se ejecuta el ciclo.

Page 12: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Ciclos Infinitos Si dentro del ciclo no hay una instrucción que logre que en algún

momento la condición sea falsa, tendremos un ciclo infinito.

Por ejemplo si en el ejercicio anterior olvidamos incrementar x, ocurre un ciclo infinito:

int x = 1;while (x <= 10) { System.out.println(‘*’);} // La x SIEMPRE será menor o igual a 10

Si se nos olvidan las llaves como en el siguiente ejemplo podemos obtener un ciclo infinito:

int x = 1; while (x <= 10) System.out.println(‘*’); x = x + 1; // Esta instrucción NO es parte del ciclo

Page 13: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Enunciados en bloque en los ciclos

Como usted ya sabe, las llaves se utilizan para agrupar un número de instrucciones para que sean ejecutadas en bloque.

Igual que en los if, en el ciclo while solo hace falta las llaves si el cuerpo del ciclo contiene mas de una instrucción.

Esto implica que si se olvida incluir las llaves y queríamos que se ejecutaran más de una instrucción como cuerpo del ciclo, sólo se va a ejecutar una.

Page 14: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Flujograma para acumular la suma de 10 números usando ciclo controlado por contador

count = 1

count<=10 Display”Enter a number: ”

Getnum

sum = sum + num

count=count+1

T

F

sum = 0.0

Page 15: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

…en Java

//Ejemplo para sumar 10 números entrados

// por el teclado

Scanner keyboard = new Scanner(System.in);

double num, sum = 0.0;

int count = 1;

while (count <= 10) {

System.out.print("Enter a number: ");

num = keyboard.nextDouble();

sum = sum + num;

count = count + 1;

}

System.out.println("The sum is: " + sum);

Page 16: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Acumuladores de suma…

Un acumulador de suma es una variable donde se van sumando valores utilizando la suma anterior.

La variable que se va a usar para acumular la suma se tiene que inicializar en 0 o el primer valor a ser sumado.

La instrucción que logra este proceso es una instrucción de asignación donde la variable que acumula aparece en los dos lados del operador de asignación. Por ejemplo:

sum = sum + num;

En Java podemos usar el operador compuesto de += para acumular. Por ejemplo:

sum += num;

Page 17: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

ValidaciónEl proceso de asegurarse que el usuario entre un dato válido se conoce como validación.

Page 18: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Validación…

num < 0 Display“Enter a positive number: ”

Display“Invalid number.”

Display“Enter a positive number: ”

Get num

Get num

T

F

Page 19: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

En Java

System.out.print("Enter a positive number: ”);number = keyboard.nextInt();

// Validate the input.while ( number < 0 ) { System.out.println("Invalid number.”); System.out.print("Enter a positive number: "); number = keyboard.nextInt();}

Page 20: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Otro Ejemplo de Validación de datos

Ejemplo en Java

System.out.print("Enter a number in the " + "range of 1 through 100: ");number = keyboard.nextInt();

// Validate the input.while (number < 1 || number > 100) { System.out.println("That number is invalid."); System.out.print("Enter a number in the " + "range of 1 through 100: "); number = keyboard.nextInt();}

Page 21: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Ciclo controlado por variable lógica (Flag)

//Ciclo controlado por banderacountGoodReadings = 0;int thisBP;boolean isSafe = true; // Inicialización de bandera

while (isSafe) { System.out.print("Enter blood pressure “); thisBP = keyboard.nextInt();

if (thisBP >= 200) isSafe = false; //Actualizar bandera else countGoodReadings++;}

Page 22: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Ciclo controlado por respuesta

respuesta ==‘S’Or

respuesta ==‘s’

Display “¿Tiene un dato para entrar?”

Get respuesta

Entrar y procesar Dato

Get respuesta

False

True

Display “¿Tiene otro dato para entrar?”

Page 23: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Ciclo controlado por respuesta

Se le pregunta al usuario antes de la entrada de cada dato si tiene algún dato para entrar.

Duplica la entrada de datos ya que antes de cada dato hay que entrar una respuesta de S o Y además del dato.

La variable de control es de tipo caracter pues es la variable donde se recoge la respuesta.

Page 24: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Ciclos controlados por un evento

Cuando algún suceso durante la ejecución del cuerpo del ciclo debe lograr la terminación del mismo decimos que es un ciclo controlado por un evento.

Un ejemplo de este tipo de ciclo es el ciclo controlado por un valor centinela.

Page 25: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Centinela

Centinela: valor en la lista de datos que indica el final de la entrada de datos.

Debe ser un valor que no pueda confundirse con un valor real, pero del mismo tipo.

Debe informarse al usuario cual es el valor que va a usarse como centinela.

Se utiliza cuando no se puede determinar cuantos datos se van a entrar o leer.

Page 26: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Ciclo Controlado Por Centinela

Requiere una lectura(input) antes del ciclo (priming read)

Requiere una lectura(input) dentro del ciclo, al final del cuerpo.

Page 27: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Ejemplo de la Técnica del Centinela:Leer y sumar una cantidad indefinida demedidas de presión sanguínea

int total = 0;int thisBP;Scanner keyboard = new Scanner(System.in);

//Inicialización de la variable de control por lecturaSystem.out.print(“Enter a blood pressure or -1 to stop: ”);thisBP = keyboard.nextInt(); // Lectura primaria while (thisBP != -1) // Evaluación para centinela{ total = total + thisBP; System.out.print(“Enter a blood pressure or -1” + “to stop: ”); thisBP = keyboard.nextInt(); // Lectura de actualización}

System.out.print(“El total de las presiones “ + “sanguineas entradas es : “ + total);

Page 28: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Otro ciclo : for El ciclo for evalúa la condición antes de ejecutar el cuerpo del ciclo,

por esto es también un “pretest loop”.

Este tipo de ciclo le permite al programador inicializar la variable de control, evaluar la condición y actualizar la variable de control en la misma línea( el encabezado del for).

Típicamente la variable de control de un for es un contador.

Este ciclo es equivalente a la estructura de un ciclo while controlado por un contador.

La sintáxis del for es la siguiente:for(initialization; test; update) {

statement(s);}

Page 29: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Los tres componentes del for

Inicialización La sección de inicialización permite que el ciclo

inicialize su propia variable de control. Después de esta va un punto y coma. Las variables declaradas en esta sección solo pueden

ser utilizadas dentro del for. Está permitido inicializar mas de una variable en esta

sección.

La segunda sección es la de la evaluación de la variable de control del for. De ser esta falsa el cuerpo del for no se ejecuta, igual que en el caso del while.(Después de esta sección también va un punto y coma.)

Page 30: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Los tres componentes del for…

Actualización La última sección o componente es la actualización de

la variable de control Esta sección se utiliza típicamente para incrementar o

decrementar los contadores declarados en la sección de inicialización.

Esta sección se ejecuta al final, después del cuerpo y antes de regresar a evaluar la variable de control.

En esta sección también se pueden actualizar múltiples variables

Se debe evitar el actualizar la variable de control dentro del cuerpo del ciclo, para esto está la sección de actualización en el encabezado del for.

Page 31: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Flujograma del for

Cuerpo del ciclotrueEvaluación de la

variable de control

false

Actualización de la variable de control

Inicialización devariable de control

for (inicializacion; evaluación; actualización) {

// cuerpo del ciclo

}

Page 32: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Ejemplo de For

public class UserSquares {

public static void main(String[] args) {

int number; // Loop control variable

int maxValue; // Maximum value to display

Scanner keyboard = new Scanner(System.in);

System.out.println("I will display a table of numbers" +

" and their squares.");

System.out.print("How high should I go? ");

maxValue = keyboard.nextInt();

System.out.println("Number Number Squared");

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

for (number = 1; number <= maxValue; number++) {

System.out.println(number + "\t\t“ + number * number);

}

}

}

Page 33: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Otro ejemplo de for…

public class TotalSales { public static void main(String[] args) { int days; // The number of days double sales; // A day's sales figure double totalSales; // Accumulator String input; // To hold the user's input

DecimalFormat dollar = new DecimalFormat("#,##0.00");

// Get the number of days. input = JOptionPane.showInputDialog("For how many days do you have " + "sales figures?"); days = Integer.parseInt(input);

totalSales = 0.0; // Set the accumulator to 0.

// Get the sales figures and calculate a running total. for (int count = 1; count <= days; count++) { input = JOptionPane.showInputDialog("Enter the sales for day " + count + ": "); sales = Double.parseDouble(input); totalSales += sales; // Add sales to totalSales. }

// Display the total sales. JOptionPane.showMessageDialog(null, "The total sales are $" + dollar.format(totalSales)); System.exit(0); }}

Page 34: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Ciclos anidados

Igual que podemos anidar los if’s también podemos anidar los ciclos.

Ciclos anidados significa que hay un ciclo dentro de otro, cuando esto sucede el ciclo interior se ejecuta completo( todas sus iteraciones) para cada iteración del ciclo exterior.

El siguiente es un ejemplo de ciclos for anidados:

for(int i = 1; i < = 5; i++) { System.out.println(“i: ” + i); System.out.print(“j: ”); for(int j = 1; j < = 3 ; j++) System.out.print(j); System.out.println(); }

Fíjese que, por cada vez que se ejecuta el cuerpo del ciclo externo, se ejecuta 3 veces el cuerpo del ciclo interno.

Page 35: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Las instrucción de break y continue

La instrucción de break termina por completo con la ejecución de un ciclo en forma anormal.

El uso del break rompe con las normas y mecanismos adecuados para controlar un ciclo y no se considera una forma adecuada de terminar un ciclo.

La instrucción continue ocasiona que se termine la ejecución de la iteración del ciclo que se está llevando acabo y que se continúe con la siguiente iteración.

Igual que sucede con la instrucción break, puede hacer que el código sea mas difícil de entender y depurar por esto es aconsejable limitar su uso a situaciones muy particulares.

Page 36: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Ciclo do-while

La estructura de repetición do-while es un ejemplo de ciclo “post-test” .

En este tipo de ciclo, el cuerpo se ejecuta y luego se evalúa la condición.

La sintáxis en java para este tipo de ciclo es como sigue:do {

statement(s);} while (condition);

Note el punto y coma después de los paréntesis y la llave de cerrar antes de la palabra while

Page 37: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Flujograma de ciclo do-while

Cuerpo del ciclo

ciertoEvaluación de

condición

falso

Page 38: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Ejemplo de técnica de respuesta con do - while

public class TestAverage1{ public static void main(String[] args) { int score1, score2, score3; // Three test scores double average; // Average test score char repeat; // To hold 'y' or 'n' System.out.println("This program calculates the " + "average of three test scores.");

// Create a Scanner object for keyboard input. Scanner keyboard = new Scanner(System.in);

Page 39: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

// Get as many sets of three test scores as the user wants.do { // Get the three test scores in this set. System.out.print("Enter score #1: "); score1 = keyboard.nextInt(); System.out.print("Enter score #2: "); score2 = keyboard.nextInt(); System.out.print("Enter score #3: "); score3 = keyboard.nextInt(); // Calculate and print the average test score. average = (score1 + score2 + score3) / 3.0; System.out.println("The average is " + average); System.out.println();

// Does the user want to average another set? System.out.println("Would you like to average " + "another set of test scores?"); System.out.print("Enter Y for yes or N for no: "); repeat = keyboard.next.charAt(0); } while (repeat == 'Y' || repeat == 'y'); }}

Recuerde el punto y coma

Page 40: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Validación : while versus do-while

do { System.out.print("Enter number in the range of 1 through 100: "); number = keyboard.nextInt();

if (number < 1 || number > 100) System.out.println("That number is invalid.");} while (number < 1 || number > 100);

System.out.print("Enter number in the range of 1 through 100: ");number = keyboard.nextInt();

while (number < 1 || number > 100) { System.out.println("That number is invalid."); System.out.print("Enter number in the range of 1 through 100: ”); number = keyboard.nextInt();}

Usando while:

Usando do-while:

Page 41: CICLOS por Profesora Lillian Bras. Ciclos  Un ciclo es una estructura de control para repetir una o más instrucciones.  Se le llama cuerpo del ciclo

Qué tipo de ciclo usar while

Use siempre que quiera cubrir la posibilidad de que el ciclo no se ejecute si la condición es falsa de entrada

Si va a usar la técnica del centinela Puede usarse con técnica de respuesta Puede usarse para validar datos entrados

do-while Use siempre que quiera que el ciclo se ejecute por lo

menos una vez Ideal para técnica de menú Puede usarse con técnica de respuesta Puede usarse para validar datos entrados

for Use siempre que sepa la cantidad de veces que quiere

que se ejecute el ciclo o que le pueda preguntar al usuario la cantidad de datos que va a procesar