Вы находитесь на странице: 1из 25

Estructuras Repetitivas

Se solicita al operador que ingrese tres nmeros enteros cualesquiera. En base a estos nmeros, mostrar por pantalla cual es el mayor de todos. Diag. De Flujos Pseudocdigo
Inicio Variable1=0 Variable2=0 Imprimir Ingrese tres nmeros enteros Desde 1 a 3 { variable1=leer desde teclado si (variable1>variable 2) entonces { variable2=variable1 } sino { no hacer nada } fin si } imprimir El mayor valor ingresado es imprimir variable2 Fin

Matlab
v1=0; v2=0; disp(Ingrese tres nmeros enteros); for i=[1..3] v1=input(ingrese un entero ); if (v1 > v2) v2=v1; end end

disp(El mayor valor es); disp(v2);

Estructuras Repetitivas
La estructura repetitiva se utiliza cuando se quiere que un conjunto de instrucciones se ejecuten un cierto nmero finito de veces. Llamamos bucle o ciclo al proceso que se repite.

Estructuras Repetitivas
Existen dos tipos de estructuras repetitivas: Aquella en donde se tiene perfectamente establecido el nmero de veces que un grupo de acciones se van a ejecutar . Aquella en la que el nmero de repeticiones es desconocido y se har hasta que se cumpla o no cierta condicin.

Estructuras Repetitivas Desde o Para


Cuando conocemos de antemano el nmero de veces en que se desea ejecutar una accin o grupo de acciones. Esta estructura ejecuta las acciones del cuerpo del bucle un nmero especificado de veces. Controla en modo automtico el valor de una variable que cuenta la cantidad de ciclos ejecutados.

Estructuras Repetitivas Desde o Para - SINTAXIS


desde variable= Vi hasta Vf [incremento] accin o acciones fin-desde
variable: variable ndice Vi: valor inicial de la variable indice Vf: valor final de la variable indice [incremento]: el nmero que se incrementa (o decrementa) a la variable indice en cada iteracin del bucle, si se omite es 1.

Estructuras Repetitivas Desde o Para - EJEMPLO


Imprimir todos los nmeros del 1 al 100.

Inicio desde I = 1 hasta 100 imprimir I fin-desde fin

for l=1:100, disp(l); end

1) I es la variable ndice con un valor inicial de 1, se incrementa uno en cada paso hasta 100. 2) La estructura desde comienza con un valor inicial de la variable indice y las acciones se ejecutan hasta que su valor sea MAYOR que el que el Valor final. 3) La variable indice se incremente en uno y si este nuevo valor del indice no es mayor que el valor final, se ejecuta de nuevo la accin imprimir. En este caso se visualizar los nmeros 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ....97, 98, 99, 100

Estructuras Repetitivas Desde o Para - EJEMPLO


Imprimir todos los nmeros pares desde 2 hasta 300.

Inicio desde I = 2 hasta 300 incremento 2 imprimir I fin-desde fin

for l=2:2:300, disp(l); end

1) La variable indice comienza en 2, se imprime 2 y en el siguiente paso se incrementa en 2 2) l pasa a valer 4; se imprime el 4 y como 4 es menor que 300 (valor final) , se pasa a una nueva iteracin incrementando nuevamente l en 2, que ahora vale 6; y as sucesivamente... 3) Aqu se visualiza: 2, 4, 6, 8, 10, 12, 14, 16, 18, ..... 296, 298, 300

Estructuras Repetitivas Desde o Para - EJEMPLO


Imprimir todos los nmeros IMPARES desde 1 hasta 300.

Inicio desde I = 1 hasta 300 incremento 2 imprimir I fin-desde fin

for l=1:2:300, disp(l); end

1) Vemos los valores: 1, 3, 5, 7, 9, 11, 13, .... , 299 2) El ciclo termina mostrando 299 puesto que en el siguiente paso, la variable I valdra 301 y es mayor al lmite establecido de 300. 3) I pasa a valer realmente 301 en el ltimo paso, solo que la instruccin de imprimir no se ejecuta. 4) Si diramos la instruccin de imprimir el valor de I, inmediatamente despus del findesde, veramos 301.

Estructuras Repetitivas Desde o Para - EJEMPLO


Imprimir los valores comprendidos entre el 460 y 500 en orden inverso.

Inicio desde I = 500 hasta 460 incremento -1 imprimir I fin-desde fin

for l=500:-1:460, disp(l); end

Como salida tenemos, entonces: 500, 499, 498, 497, 496, 495, 494, .... 464, 463, 462, 461, 460.

Ciclos con Numero Indeterminado de Iteraciones


Se diferencia de la PARA/DESDE en que no se conoce el nmero de repeticiones o iteraciones en que se va a ejecutar una instruccin o un bloque de instrucciones. Estas estructuras son bsicamente dos:
mientras....fin-mientras repetir.... hasta.

Estas dos se diferencian en que la verificacin de la condicin para repetir el ciclo se hace al inicio con mientras y al final con repetir.

HACER-MIENTRAS
El cuerpo del bucle se cumple mientras se cumple una determinada condicin. Por esta razn se los denomina BUCLES CONDICIONALES.

mientras {condicin} accin 1 accin 2 accin 3 ..... accin n fin mientras instruccin X

while condicin, comando; end

HACER-MIENTRAS
Lo primero que el computador hace es examinar la condicin, lo que puede dar como resultado dos posibilidades:
La condicin se cumple: Se ejecutan accin 1, accin 2, accin 3, ..., accin n. Las estar repitiendo hasta que la condicin no se cumpla, entonces se sale del ciclo y se siguen ejecutando la o las instrucciones que vienen a continuacin y estn fuera del bucle; instruccin X.

La condicin no se cumple: No entrar en el ciclo. Se ejecutan las instrucciones que vienen despus del bucle, instruccin X, por ejemplo.
De esto se deduce que el cuerpo del bucle de una estructura mientras puede repetirse cero o ms veces.

HACER-MIENTRAS (EJEMPLO)
leer contrasea mientras contrasea < > "josua" imprimir "La contrasea es incorrecta ! leer contrasea fin-mientras imprimir "Ha ingresado la contrasea correcta contrasea=input(Ingrese su contrasea ); while(contrasea <> josua), disp(contrasea incorrecta); contrasea=input(Ingrese su contrasea ); End disp(Ha ingresado la contrasea correcta);
Pseudocdigo Matlab

REPETIR-HASTA
La estructura repetir cumple la misma funcin que la estructura mientras. La diferencia est en que la estructura mientras comprueba la condicin al inicio y repetir lo hace al final; por eso la estructura repetir se ejecuta por lo menos una vez.

REPETIR-HASTA SINTAXIS

repetir intruccin 1 instruccin 2 instruccin 3 ...... hasta {condicin} instrucin X

Lo que la computadora hace al ejecutar la estructura repetir es: 1) Se ejecutan: instruccin 1, instruccin 2, instruccin 3, ...... 2) Se evala la condicin. Si esta es FALSA se vuelve a repetir el ciclo y se ejecutan instruccin 1, instruccin 2, instruccin 3, . Si la condicin es VERDADERA se sale del ciclo y se ejecuta instruccin X.

Comparacin mientras - repetir


MIENTRAS Comprobacin de la condicin al inicio, antes de entrar al bucle Las instrucciones del cuerpo del bucle se ejecutan en forma repetitiva si la condicin es verdadera Las acciones del bucle se pueden ejecutar 0 o ms veces REPETIR Comprobacin de la condicin al final, despus de haber ingresado una vez al bucle Las instrucciones del cuerpo del bucle se ejecutan si la condicin es falsa Las acciones del bucle se ejecutan por lo menos una vez

PROBLEMAS DE ESTRUCTURAS CCLICAS


Calcular el promedio de un alumno que tiene 7 calificaciones en una materia. HACER PARA HACER MIENTRAS Inicio Inicio Sum=0 Sum=0 Hacer para c desde 1 hasta 7 c=1 Leer calif Mientras (c<=7) hacer Sum = sum + calif Leer calif Fin-para Sum = sum + calif prom = sum /7 c= c+1 Imprimir prom Fin-mientras Fin. prom = sum /7 Imprimir prom Fin. REPETIR HASTA Inicio Sum=0 c=1 Repetir Leer calif Sum = sum + calif c= c+1 Hasta (c>7) prom = sum /7 Imprimir prom Fin.

PROBLEMAS DE ESTRUCTURAS CCLICAS


Leer 10 nmeros y obtener su cubo y su cuarta potencia

HACER PARA Inicio Hacer para n desde 1 hasta 10 Leer num cubo = num * num * num cuarta = cubo * num Imprimir cubo, cuarta Fin-para Fin.

HACER MIENTRAS Inicio C=1 Mientras (c<=10) hacer Leer num cubo = num * num * num cuarta = cubo * num Imprimir cubo, cuarta C= c+1 Fin-mientras Fin.

REPETIR HASTA Inicio C=1 Repetir Leer num cubo = num * num * num cuarta = cubo * num Imprimir cubo, cuarta C= c+1 Hasta (c>10) Fin.

PROBLEMAS DE ESTRUCTURAS CCLICAS


Calcular la suma y el promedio de nmeros ingresados . La cantidad de nmeros a ingresar es desconocida al momento de ejecutar el algoritmo y todos los nmeros a ingresar se encuentran en el entorno [0,100]. La carga finaliza cuando se ingresa un nmero fuera de rango. HACER MIENTRAS Inicio HACER PARA No puede resolverse con esta Sum=0 estructura NO se conoce el Cuenta=0 Leer Num nmero de iteraciones. Mientras Num>=0 y Num<=100 hacer Sum=Sum+Num Leer Num cuenta= cuenta+1 Fin-mientras Si cuenta>0 entonces Prom= sum/cuenta Imprimir Sum, Prom Fin-Si Fin.

REPETIR HASTA No puede resolverse con esta estructura ya que si el primer nmero ingresado se encuentra fuera de rango igual ejecutara el bucle, ya que en el Repetirhasta al menos una vez se ejecuta el bucle.

CUANDO EMPLEAR CADA ESTRUCTURA REPETITIVA?

Modularizacin (Funciones y Procedimientos)


En general un problema complejo puede ser resuelto de manera ms fcil y eficiente si se divide en problemas ms pequeos y concentrndonos en cada etapa en la solucin de ese "subproblema". Esto implica que el gran problema original ser resuelto por medio de varios mdulos, cada uno de los cuales se encarga de resolver un subproblema determinado. Esos mdulos, se conocen con el nombre de subalgoritmos. Los subalgoritmos se escriben slo una vez, luego es posible hacer referencia a ellos ("llamarlos") desde diferentes puntos de un pseudo cdigo. La ventaja obvia es que nos permite reutilizacin y evita la duplicacin de cdigos. Los subalgoritmos son independientes entre si, en el sentido de que se puede escribir y verificar cada mdulo en forma separada sin preocuparse por los dems mdulos. Por ello, es menos complicado localizar un error y tambin se puede modificar el cdigo sin tener que tocar o rehacer varias partes del mismo. Los subalgoritmos pueden ser dos tipos: Funciones y Procedimientos (tambin llamadas subrutinas o subprogramas).

Modularizacin (Funciones y Procedimientos)


Notemos que al utilizar procedimientos y funciones se establece un lmite para el alcance de las variables, unas tendrn efecto y valor slo en el subalgoritmo y otras en el algoritmo principal, tambin es posible especificar que una variable tenga efecto en el algoritmo principal y todos los subalgoritmos. Los subalgoritmos pueden recibir valores del algoritmo principal (parmetros), trabajar con ellos y devolver un resultado al algoritmo principal: No existen limitaciones en cuanto a las acciones que pueda ejecutar un subalgoritmo. Un subprograma puede, a su vez, invocar o llamar a otros o a sus propios subprogramas, inclusive puede llamarse a s mismo (esto se conoce como recursividad).

Modularizacin (Funciones y Procedimientos)


Cada mdulo debe tener un nombre que lo identifique. Puede tener una serie de parmetros asociados. El nombre del mdulo es utilizado para la invocacin del mismo. Cuando se invoca a un subprograma se transfiere el control al mismo y una vez finalizada la ltima instruccin del mdulo el control retornar a la siguiente instruccin del programa o subprograma que lo llam.

Modularizacin - Ejemplo
Calcular el factorial de un numero, mediante subprogramas.
SUBPROGRAMA Calculos MIENTRAS numero > 1 HACER factorial <- factorial * numero numero <- numero - 1 FINMIENTRAS HACER Imprimir FINSUBPROGRAMA -----------------------------SUBPROGRAMA Mas res <- " " MIENTRAS res <> "S" Y res <> "N" HACER ESCRIBIR "Desea calcular ms factoriales (S/N): " LEER res res <- Convertir_maysculas( res ) FINMIENTRAS FINSUBPROGRAMA -----------------------------SUBPROGRAMA Imprimir ESCRIBIR "Su factorial es: " ESCRIBIR factorial FINSUBPROGRAMA
PROGRAMA factorial ENTORNO: res <- "S" ALGORITMO: MIENTRAS res = "S" HACER Borrar_pantalla( ) factorial <- 1 ESCRIBIR "Numero: " LEER numero SI numero < 0 ENTONCES ESCRIBIR "No tiene factorial" SINO HACER Calculos FINSI HACER Mas FINMIENTRAS FINPROGRAMA ------------------------------

Вам также может понравиться