Ciclos Repetitivos
Ciclos Repetitivos
IINTRODUCCIIN NTRODUCC N
Otro paso en la elaboracin de un algoritmo es el de la iteracin de una o mas instrucciones involucradas en la solucin de un requerimiento, por tanto existen dos esquemas el cualitativo y el cuantitativo en los cuales el programador o desarrollador debe tener agilidad y destreza para su seleccin; estos a su vez se componen de las siguientes estructuras (mientras, haga mientras que y para). Es la herramienta de algoritmia que le permite simplificar y/o agrupar en su interior algn contador, condicional y acumulador que son temas previos, en la repeticin de instrucciones en un momento y espacio determinado.
OBJETIIVO OBJET VO
Conocer la forma como funcionan las estructuras repetitivas, para dar solucin a problemas en los cuales sea necesario repetir la ejecucin de procesos o procedimientos un determinado numero de veces.
84
4. Desarrollo de algoritmos empleando cada una de las estructuras cclicas. 5. Conocer las estructuras sintcticas para formar en el estudiante la disciplina. requerida para afrontar las soluciones de problemas en forma algortmica. 6. Identificar las herramientas necesarias para utilizar el computador mediante un lenguaje de programacin, como instrumento de trabajo en su vida acadmica.
CONTENIIDO CONTEN DO
1. Estructuras cclicas o repetitivas. 2. Esquemas: cuantitativo y cualitativo. 3. Estructura Mientras. 4. Rompimientos de: ciclos y control de ejecucin. 5. Estructuras Para 6. Estructura Hacer mientras que.
85
Tomado del libro Fundamentos de programacin con nfasis en anlisis y metodologa para trabajo en equipos efectivos
86
87
En este tipo de esquema, se controla la repeticin del ciclo con una variable tipo contador, la cual se compara con el nmero de iteraciones que debe hacer el algoritmo o con el nmero hasta el cual debe llegar. Dentro del PROCESO debe haber una instruccin de incrementar o disminuir el valor del contador. Esta instruccin es la que hace que la condicin se haga falsa en determinado momento y que el ciclo termine (no sea infinito). Ejemplo: Hacer un algoritmo que sume los cinco primeros nmeros naturales. Anlisis del problema: Datos de entrada: No hay, ya que los nmero naturales (1, 2, 3, etc) no se ingresan por parte del usuario sino que se deben generar por el algoritmo (no hay una instruccin de lectura). Datos de salida: La suma de esos primeros cinco nmeros naturales. Definicin de variables: NUM: Variable para guardar el nmero natural generado. SUMA: Variable para guardar la suma de los nmeros naturales. Algoritmo: INICIO NUM=0 SUMA=0 MIENTRAS NUM<5 HACER NUM=NUM+1 SUMA=SUMA+NUM FIN_MIENTRAS IMPRIMIR La suma de los cinco primeros nmeros naturales es , SUMA FIN_INICIO
Otra forma de resolver el problema es:
Algoritmo INICIO NUM=1 SUMA=0 MIENTRAS NUM<=5 HACER SUMA=SUMA+NUM NUM=NUM+1 FIN_MIENTRAS IMPRIMIR La suma de los cinco primeros nmeros naturales es , SUMA FIN_INICIO
88
Esquema cualitativo La representacin general de este esquema es: INICIO LER <Campo elegido> MIENTRAS <Condicin> HACER LEER <Resto del registro de datos> <PROCESO> LEER < Campo elegido > FIN_MIENTRAS . . FIN_INICIO En este tipo de esquema, se controla la repeticin del ciclo con el valor del campo elegido, al cual el usuario, en el momento que desee terminar la repeticin del ciclo, le asigna un valor que no est contemplado en el rango de valores que este campo pueda tomar. Esta instruccin de lectura (entrada de datos) es la que hace que la condicin se haga falsa en determinado momento y que el ciclo termine (no sea infinito). El valor no vlido para el campo elegido se guarda en un registro llamado registro centinela o registro marca y tiene el significado de no hay ms registros para procesar. Ejemplo: Hacer un algoritmo que encuentre la suma y el promedio de un grupo de nmeros positivos que entran de a uno por registro. Anlisis del problema: Datos de entrada: Los nmeros que el usuario ingresa de a uno. Datos de salida: La suma de los nmeros y el promedio de los nmeros Proceso: El algoritmo le dir al usuario que le ingrese cada nmero. Este le ingresar nmero positivos hasta que desee terminar, caso en el cual le ingresar un 0 o un nmero negativo. Lo ms recomendable es que el algoritmo le diga al usuario con qu valor terminar. Los nmeros ingresados se deben ir contando en una variable tipo contador y se deben acumular sus valores en una variable tipo acumulador. Definicin de variables: NUM: Variable para guardar el nmero entrado. SUMA: Variable para guardar la suma de los nmeros. PROM: promedio de los nmeros CN: contador de nmeros ingresados.
89
Algoritmo: INICIO Imprimir Ingrese un nmero positivo LEER NUM SUMA=0 CN=0 MIENTRAS NUM <> 0 HACER SUMA=SUMA+NUM CN= CN+1 Imprimir Ingrese otro nmero positivo o 0 para terminar LEER NUM FIN_MIENTRAS PROM = SUMA/CN IMPRIMIR La suma es ,SUMA, Y EL PROMEDIO ES ,prom FIN_INICIO Como se puede apreciar, si el usuario desea estar indefinidamente ingresando nmeros positivos, lo puede hacer y el algoritmo le sigue pidiendo ms y ms nmeros, pero si l desea terminar de ejecutarlo, le ingresa un 0 y con eso la condicin se hace falsa y ya no se ejecutar ms la secuencia de instrucciones dentro del ciclo. El registro que contiene dicho 0 es el que se denomina centinela. Problemas (Mientras o Mientas que) Nota: Se deja a los alumnos el trabajo de hacer el anlisis del problema, o sea escribir cules son los datos de entrada, los de salida y hacer la definicin de variables de acuerdo al planteamiento del problema y del algoritmo. Igualmente, complementarlo con instrucciones de salida de forma que sea ms amigable con el usuario. Por ejemplo, antes de la instruccin Leer Nom, se le puede aadir la instruccin Imprimir Ingrese el nombre del estudiante: 1) Calcular el promedio de un alumno que tiene 7 calificaciones en la materia Fsica.(Esquema cuantitativo) Inicio Sum=0 CC=0 Leer Nom MIENTRAS CC < 7 HACER Leer calif Sum = sum + calif CC=CC+1 Fin-Mientras prom = sum /7 Imprimir prom Fin.
90
2) Leer una cantidad indeterminada de nmeros diferentes de cero y obtener su cubo y su cuarta. (Esquema cualiitativo) Inicio Leer num MIENTRAS CONT<>0 HACER cubo = num * num * num cuarta = cubo * num Imprimir cubo, cuarta Leer num FIN_MIENTRAS Fin. 3) Leer N nmeros e imprimir solamente los nmeros positivos. (Esquema cuantitativo) Inicio CN = 0 Leer N MIENTRAS CN<N HACER Leer num Si num > 0 entonces Imprimir num fin-si CN = CN + 1 FIN_MIENTRAS Fin. 4) Leer N nmeros e imprimir cuntos son positivos, cuntos negativos y cuntos ceros. (Esquema cuantitativo) Inicio cneg = 0 cpos = 0 cceros = 0 MIENTRAS CONT < N HACER Leer num Sin num = 0 entonces cceros = cceros + 1 si no Si num > 0 entonces cpos = cpos + 1 si no cneg = cneg + 1 Fin-si Fin-si CONT 0 CONT + 1 FIN_MIENTRAS Imprimir cceros, cpos, cneg Fin.
91
5) Leer 15 nmeros negativos y convertirlos a positivos e imprimir dichos nmeros. Inicio MIENTRAS X<15 HACER Leer num pos = num * (-1) Imprimir num, pos X=X+1 FIN_MIENTRAS Fin. 6) Suponga que se tiene la nota de una materia de un grupo de 40 alumnos. Realizar un algoritmo para calcular la nota promedio y la nota ms baja de todo el grupo. Inicio CE = 0 sum = 0 baja = 9999 MIENTRAS CE<40 HACER Leer calif sum = sum + calif Si calif < baja entonces baja = calif fin-si CE=CE+1 FIN_MIENTRAS media = sum / 40 Imprimir media, baja fin 7) Calcular e imprimir la tabla de multiplicar de un nmero cualquiera de 1 hasta 10. Imprimir el multiplicando, el multiplicador y el producto. Inicio X=1 Leer num MIENTRAS X<=3 HACER resul = num * X Imprimir num, * , X, = , resul X=X+1 FIN_MIENTRAS fin.
92
8) Simular el comportamiento de un reloj digital, imprimiendo la hora, minutos y segundos de un da desde las 0:00:00 horas hasta las 23:59:59 horas: Inicio h=0 MIENTRAS h<24 HACER m=0 MIENTRAS m<60 HACER s=0 MIENTRAS s<60 HACER Imprimir h, m, s s=s+1 FIN_MIENTRAS m=m+1 FIN_MIENTRAS h=h+1 FIN_MIENTRAS fin.
4.. ROMPIIMIIENTO DE CCLOS Y CONTROL DE EJECUCIIN 4 ROMP M ENTO DE C CLOS Y CONTROL DE EJECUC N
En la programacin, a veces es necesario que se aborte o suspenda un ciclo para que no contine repitiendo sus instrucciones, debido a que ya se cumpli algo que se estaba buscando y es posible que esto se haga sin haberse completado el nmero de iteraciones que se tena programado ejecutar. Esto se conoce como ruptura de ciclos y se consigue cambiando el valor de verdad de la expresin lgica de verdadero a falso. Ejemplo del caso (b): Se tiene el nombre y la edad de N personas y se desea saber si dentro de ellas hay por lo menos una que sea menor de edad y el nombre de la primera que se encuentre. Anlisis del problema: Datos de entrada: El nombre y la edad de la persona Datos de salida: Un mensaje que diga si se encontr un menor de edad y su nombre. Definicin de variables: NP: Nmero de personas. NOM: Variable para guardar el nombre. EDAD: Edad de la persona. CP: Contador de personas. ENCONTRADO: Variable tipo bandera que permitir ROMPER el ciclo si se encuentra un menor de edad.
93
Proceso: Como se puede observar, el esquema es cualitativo y se puede controlar comparando el contador de personas con el nmero de personas a procesar, a la condicin se le adicionar el switche para que, si se encuentra un menor de edad, sta se haga falsa y se rompa el ciclo aunque no se llegue a procesar todas las N personas. Si se termina de procesarlas a todas y no se encuentra una menor de edad, el ciclo tambin se termina, pero ya porque la otra condicin (CP<NP) es falsa.. Algoritmo. INICIO CO=0 ENCONTRADO=.F. Leer NP MIENTRAS (CP<NP) AND (ENCONTRADO=.F.) HACER Leer NOM, EDAD Si EDAD<18 entonces ENCONTRADO=.V. Sino CP=CP+1 Fin_si FIN_MIENTRAS Si ENCONTRADO=.V. Entonces Imprimir NOM Sino Imprimir No hay ningn menor de edad en el grupo Fin_si FIN_INICIO
94
VC LI LF INC
En este ciclo la variable de control toma el valor inicial del ciclo y el ciclo se repite hasta que la variable de control llegue al lmite final. Funcionamiento: a. Si INC es positivo: (LI < LF) Cuando se activa la estructura, automticamente se asigna el valor de LI a VC y se compara VC con LF. Si VC>LF, no se ejecuta la secuencia de instrucciones o acciones. Si VC<=LF, se ejecuta la secuencia una vez y automticamente regresa al principio del ciclo a incrementar la variable controladora en el valor de INC (VC=VC+INC) y se compara nuevamente el valor de VC con LF. Si nuevamente VC<=LF, se vuelve a ejecutar la secuencia y se regresa al principio del ciclo a repetir lo mismo. Si ahora, VC>LF, se termina el ciclo automticamente. b. Si INC es negativo: Se hace lo mismo pero se ejecuta la secuencia siempre y cuando VC>=LF y no se ejecuta si VC<LF. En ese caso LI>LF Ejemplo: Hacer un algoritmo que encuentre el factorial de un nmero positivo cualquiera. Anlisis del problema: Datos de entrada: El nmero al cual se le hallar el factorial. Datos de salida: El factorial del nmero. Proceso: El factorial de un nmero es el producto del nmero por todos sus nmeros anteriores hasta uno, as: Factorial de 5= 5*4*3*2*1. Se debe entonces inicializar el factorial en 1 (mdulo del producto) incrementar un contador y multiplicar por l (esto lo hace el ciclo PARA)
95
Definicin de variables: N: Nmero al cual se le hallar el factorial FAC: Factorial del nmero CON: contador que generar los factores del factorial. Algoritmo: INICIO Leer N FAC=1 PARA CON=1, N, 1 HACER FAC=FAC*CON FIN_PARA Imprimir El factorial de ,N, es: , FAC FIN_INICIO Ejemplo: Hacer un algoritmo que imprima las tablas de multiplicar de 1 a 5. Definicin de variables: I: multiplicando J: Multiplicador P: Producto Algoritmo: INICIO PARA I=1,5,1 HACER PARA J=1,5,1 HACER P=I*J Imprimir I, *, J, =, P FIN_PARA FIN_PARA FIN_INICIO Ejemplo: Hacer un algoritmo que encuentre la suma de los nmeros impares comprendidos entre 1 y N. Definicin de variables: N: Nmero hasta el cual se generarn nmeros impares IMP: Nmero impar generado (el algoritmo los genera, no se leen o ingresan por el usuario)
96
SUMA: Suma de los nmeros impares. Algoritmo: INICIO Leer N SUMA=0 PARA IMP=1,N,2 HACER SUMA=SUMA+IMP FIN_PARA Imprimir La suma de los impares comprendidos entre 1 y , N, es: , SUMA FIN_INICIO
6.. ESTRUCTURA REPETIIR ((HACER MIIENTRAS QUE)) 6 ESTRUCTURA REPET R HACER M ENTRAS QUE
Esta es una estructura similar en algunas caractersticas, a la estructura MIENTRAS. Repite un proceso una o varias veces, a diferencia del Mientras, el cual lo repite cero o ms veces, esto debido a que el REPETIR evala la condicin al final del proceso, mientras que en el Mientras puede ser que nunca llegue a entrar si la condicin no se cumple desde un principio. La forma de esta estructura es la siguiente: REPETIR Accin 1 Accin 2 . . Accin N MIENTRAS <condicin> Funcionamiento:
Al entrar a la estructura se ejecuta la secuencia de acciones o instrucciones una vez y se evala la condicin. Si sta es falsa, se sale del ciclo y se contina con la siguiente instruccin; si es verdadera, se ejecuta nuevamente la secuencia y se vuelve a evaluar la condicin. El proceso se repite mientras la condicin sea verdadera. Ejemplo:
97
Hacer un algoritmo que encuentre la suma de los primeros N nmeros naturales. Algoritmo: INICIO SUMA=0 NUM=1 Leer N REPETIR SUMA=SUMA+NUM NUM=NUM+1 MIENTRAS NUM<=N Imprimir La suma de los primeros , N, nmeros naturales es: , SUMA FIN_INICIO
Desde el enunciado se caracteriza la no determinacin del nmero de repeticiones a efectuar. b. Desde el enunciado se caracteriza la determinacin del nmero de repeticiones a efectuar. c. Desde el enunciado se caracteriza la no determinacin del nmero de preguntas a efectuar. 4. La siguiente definicin El control del ciclo se hace en forma automtica, con base en parmetros que establece el programador permite definir : a. Un ciclo para. b. Un ciclo mientras.
98
c. Ninguno de los dos. 5. Como se diferencia un ciclo mientras de un ciclo repita hasta que? a. Repite desde cero o ms veces b. No repite desde cero o ms veces c. Ninguna de las anteriores
RECURSOS RECURSOS
Humanos: Profesor y alumnos. Institucionales: Saln de clase. Materiales: Texto gua.
99
Algoritmos, conceptos bsicos. Becerra, Cesar. Algoritmos. Peralta, Luis A. Desarrollo de algoritmos y sus aplicaciones. Correa Guillermo. Diagramacin y programacin. Lozano. Letvin. Introduccin a la ciencia de los computadores. Tremblay. J. P. Fundamentos de programacin. Joyanes, Luis. Fundamentos de programacin con nfasis en anlisis y metodologa para trabajo en equipos efectivos. Gonzlez, Luis F. Lgica de programacin. Oviedo R, Efran. Lgica para programacin de computadores. Vasquez, Gabriel. Problemas de la metodologa en la programacin. Joyanes, Luis. Soluciones secuenciales. Ros C, Fabin.
100