CICLOS por Profesora Lillian Bras - PowerPoint PPT Presentation

1 / 41
About This Presentation
Title:

CICLOS por Profesora Lillian Bras

Description:

La sint xis en java para este tipo de ... se procede a la ... La instrucci n que logra este proceso es una instrucci n de asignaci n donde la variable que ... – PowerPoint PPT presentation

Number of Views:87
Avg rating:3.0/5.0
Slides: 42
Provided by: Diaz157
Learn more at: http://www.uprb.edu
Category:

less

Transcript and Presenter's Notes

Title: CICLOS por Profesora Lillian Bras


1
CICLOSpor Profesora Lillian Bras
2
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.

3
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.

4
Pre-Test Loops en Java
While
Controlado por contador o evento (respuesta o
sentinela).
For
Controlado por contador
4
5
Flujograma de Ciclo while
6
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.

7
Un ejemplo de while
x1
True
Display
x x 1
xlt10
// En Java int x 1 while (x lt 10)
System.out.println() x x 1
False
8
Un ciclo que no se ejecuta
  • El siguiente es un ejemplo de un ciclo que se
    ejecuta 0 veces
  • int x 1
  • while(x gt 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.

9
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.

10
En Java
  • int x 1 //Inicialización de variable de
    control x
  • while(x lt 10) //Evaluación de la variable de
    control
  • System.out.println()
  • x x 1 //Actualización de la variable de
    control

11
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.

12
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 lt 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 lt 10)
  • System.out.println()
  • x x 1 // Esta instrucción NO es parte
    del ciclo

13
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.

14
Flujograma para acumular la suma de 10 números
usando ciclo controlado por contador
sum 0.0
count 1
countcount1
sum sum num
countlt10
Display Enter a number
Get num
T
F
15
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 lt 10)
  • System.out.print("Enter a number ")
  • num keyboard.nextDouble()
  • sum sum num
  • count count 1
  • System.out.println("The sum is " sum)

16
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

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

18
Validación
Display Enter a positive number
Get num
Get num
num lt 0
T
Display Invalid number.
Display Enter a positive number
F
19
En Java
  • System.out.print("Enter a positive number )
  • number keyboard.nextInt()
  • // Validate the input.
  • while ( number lt 0 )
  • System.out.println("Invalid number.)
  • System.out.print("Enter a positive number
    ")
  • number keyboard.nextInt()

20
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 lt 1 number gt 100)
  • System.out.println("That number is
    invalid.")
  • System.out.print("Enter a number in the "
  • "range of 1 through 100 ")
  • number keyboard.nextInt()

21
Ciclo controlado por variable lógica (Flag)
  • //Ciclo controlado por bandera
  • countGoodReadings 0
  • int thisBP
  • boolean isSafe true // Inicialización de
    bandera
  • while (isSafe)
  • System.out.print("Enter blood pressure )
  • thisBP keyboard.nextInt()
  • if (thisBP gt 200)
  • isSafe false //Actualizar bandera
  • else
  • countGoodReadings

22
Ciclo controlado por respuesta
Display Tiene un dato para entrar?
Get respuesta
Get respuesta
True
respuesta S Or respuesta s
Entrar y procesar Dato
Display Tiene otro dato para entrar?
False
23
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.

24
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.

25
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.

26
Ciclo Controlado Por Centinela
  • Requiere una lectura(input) antes del ciclo
    (priming read)
  • Requiere una lectura(input) dentro del ciclo, al
    final del cuerpo.

27
  • Ejemplo de la Técnica del Centinela
  • Leer y sumar una cantidad indefinida de
  • medidas de presión sanguínea
  • int total 0
  • int thisBP
  • Scanner keyboard new Scanner(System.in)
  • //Inicialización de la variable de control por
    lectura
  • System.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

28
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)

29
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.)

30
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.

31
Flujograma del for
Inicialización de variable de control
for (inicializacion evaluación actualización)
// cuerpo del ciclo
32
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 lt maxValue
    number)
  • System.out.println(number "\t\t
    number number)

33
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 lt days count)
  • input JOptionPane.showInputDialog("Ente
    r the sales for day "

34
Ciclos anidados
  • Igual que podemos anidar los ifs 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 lt 5 i)
  • System.out.println(i i)
  • System.out.print(j )
  • for(int j 1 j lt 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.

35
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.

36
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

37
Flujograma de ciclo do-while
38
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)

39
  • // 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 ")

Recuerde el punto y coma
40
Validación while versus do-while
Usando while
System.out.print("Enter number in the range of 1
through 100 ") number keyboard.nextInt() whi
le (number lt 1 number gt 100)
System.out.println("That number is invalid.")
System.out.print("Enter number in the range of 1
through 100 ) number keyboard.nextInt()
Usando do-while
  • do
  • System.out.print("Enter number in the range of 1
    through 100 ")
  • number keyboard.nextInt()
  • if (number lt 1 number gt 100)
  • System.out.println("That number is
    invalid.")
  • while (number lt 1 number gt 100)

41
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
Write a Comment
User Comments (0)
About PowerShow.com