domingo, 16 de septiembre de 2007

Clase 9: Estructura Mientras y Repetir.

Materia: Lógica Computacional
Profesor: Lic. Salomón Aquino.
Objetivos de la clase:
• Al final de la clase los alumnos y alumnas serán capaces de:
1) Aplicar las estructuras mientras y repetir, en la solución de problemas.
2) Entender y aplicar el uso de centinelas y banderas.

Estructura Mientras (While):
• Se llama Mientras a la estructura algorítmica que se ejecuta mientras la condición evaluada resulte verdadera.
• Se evalúa la expresión booleana y, si es cierta, se ejecuta la instrucción especificada, llamada el cuerpo del bucle. Entonces se vuelve a evaluar la expresión booleana, y si todavía es cierta se ejecuta de nuevo el cuerpo. Este proceso de evaluación de la expresión booleana y ejecución del cuerpo se repite mientras la expresión sea cierta. Cuando se hace falsa, finaliza la repetición.


Estructura repetir (repeat o Do While)
• Se llama Repetir a la estructura algorítmica que se ejecuta un número definido de veces hasta que la condición se torna verdadera.



Representación en pseudocodigo:
• Mientras:
Mientras
Acciones
Fin_mientras
• Repetir:
Repetir
Acciones
Hasta que
EJEMPLO:
Calcular la suma de los cuadrados de los primeros 100 números enteros y escribir el resultado.


Solución estructura Repetir:




Centinelas:
• En un ciclo While controlado por tarea, la condición de While especifica que el cuerpo del ciclo debe continuar ejecutándose mientras la tarea no haya sido completada.
• En un ciclo controlado por centinela el usuario puede suspender la introducción de datos cuando lo desee, introduciendo una señal adecuada llamada centinela.
• Un ciclo Repetir controlado por centinela es cuando el usuario digita una letra para salir como por ejemplo S o N para indicar si desea continuar o no. El bucle debe repetirse hasta que la respuesta del usuario sea “n” o “N”.
• Cuando una decisión toma los valores de –1 o algún posible valor que no esté dentro del rango válido en un momento determinado, se le denomina centinela y su función primordial es detener el proceso de entrada de datos en una corrida de programa.
• Por ejemplo, si se tienen las calificaciones de un test (comprendida entre 0 y 100); un valor centinela en esta lista puede ser –999, ya que nunca será una calificación válida y cuando aparezca este valor se terminará de ejecutar el bucle.
• Si la lista de datos son números positivos, un valor centinela puede ser un número negativo.
• Los centinelas solamente pueden usarse con las estructuras Mientras y Repetir, no con estructuras Desde/Para
Ejemplo de centinelas:
• Suponga que debemos obtener la suma de los gastos que hicimos en nuestro último viaje, pero no sabemos exactamente cuántos fueron.
Si definimos gasto1, gasto2, gasto3, ...., -1 donde
gastoi: real es el gasto número i y
sumgas: real es el acumulador de gastos efectuados.
-1 es el centinela de fin de datos.
• Algoritmo:
Inicio
Sumgas <--0
Leer (gasto)
Mientras gasto <> -1 hacer
Sumgas <-- sumgas + gasto
Leer (gasto)
Fin_mientras
Escribir (sumgas)
Fin
Banderas:
• Conocidas también como interruptores, switch, flags o conmutadores, son variables que pueden tomar solamente dos valores durante la ejecución del programa, los cuales pueden ser 0 ó 1, o bien los valores booleanos True o False.
• Se les suele llamar interruptores porque cuando toman los valores 0 ó 1 están simulando un interruptor abierto/cerrado o encendido/apagado.
Ejemplo de banderas:
• Ejemplo 1: Leer un número entero N y calcular el resultado de la siguiente serie: 1 – 1/2+ 1/3 – 1/4 +.... +/- 1/N.
• Algoritmo:
Inicio
Serie <-- 0
I <-- 1
Leer (N)
Band <-- “T”
Mientras I <= N hacer
Si band = “T” entonces
Serie <--serie + (1/I)
Band <-- “F”
Sino
Serie <-- serie – (1/I)
Band <-- “T”
Fin_si
I <-- I + 1
Fin_mientras
Escribir (serie)
Fin
Fin de la clase.
Gracias por asistir.

2 comentarios:

Anónimo dijo...

esta muy buena esta clase ya q me a serido de mucho y ademas es super interesante...lo felizito .....¿pero una pregunta? cuales son los ciclos cerrados y los ciclos abiertos? ok espero su pronta respuesta...ender690@hotmail.com

Anónimo dijo...

me gusto los ejemplos, quisiera saber el concepto de ciclos en programacion, que son, cuales existen y para que sirven.
le agraceceria su colaboracion lo necesito antes del viernes

colombianita19@gmail.com

gracias