Escolar Documentos
Profissional Documentos
Cultura Documentos
Las estructuras repetitivas (llamadas tambin bucles) se utilizan para realizar varias veces el mismo conjunto de operaciones. Dentro de ellas encontramos aquellas donde la cantidad repeticiones se manejan por un nmero, las que se realizan hasta que se cumple cierta condicin. Son tres: la sentencia for y la sentencia while y la sentencia repeat
Bucle For
Es un bucle controlado por un contador, denominado variable de control o ndice. Pseudocdigo en espaol desde variable (v) = vi hasta vf hacer < accin S1> <accin S2 > ....................... fin desde Su estructura tiene la siguiente forma desde v = vi hasta vf < accin S1> <accin S2 > ...................... end Cdigo se programa for variable (v) = vi to vf do begin < accin S1> < accin S2> ......................
Ejemplos: a) Hacer un programa que imprima los nmeros de 5 hasta 28. Pseudocdigo del programa nombre repeticin1(program); declaraciones (uses) Crt, Dos; constantes(const) A = 5; B = 28; variables (var) R (resultado de la oper.): entero funciones(function)(NO hay); procedimientos (procedure); inicio (begin); limpieza(limpia la pantalla); ciclo (hace ciclo e imprime); salida fin(end.)
Pgina 1 de 9
Pseudocdigo del ciclo procedimiento ciclo inicio (begin); desde R= A hasta B hacer imprimo R fin(end;) El cdigo del procedimiento es: procedure ciclo; {* comienzo el ciclo *} begin for R := A to B do {* se define el ciclo A *} writeln ('Numero ',R ); {* imprime salida *} end; {* fin del ciclo *} Quedndonos el programa de la siguiente manera. Program Repeticion_1; {* Este es el primer programa con estructuras de repeticion *} uses crt, dos; {declaraciones} const {* constantes *} A = 5; B = 28; var R: integer; {* controla el ciclo *} procedure limpieza; {* comienzo de limpieza de la pantalla *} begin ClrScr; end; {* fin de limpieza de la pantalla *} procedure ciclo; {* comienzo el ciclo *} begin for R := A to B do {* se define el ciclo A *} writeln ('Numero ',R ); {* imprime salida *} end; {* fin del ciclo *} procedure salida; {* comienzo del procedimiento salida *} {*solo sirve para ver los resultados *} Var H :char; begin writeln ( 'Preione cualquier tecla '); readln (H); {* esta instruccin y la anterior son para dar tiempo para *} {* ver resultados *} end; {* fin del procedimiento salida *} begin limpieza; ciclo; salida; end. b) Hacer un programa que calcule e imprima el factorial de los nmeros 1 a 7
Pgina 2 de 9
Pseudocdigo del programa nombre repeticin2(program); declaraciones (uses) Crt, Dos; constantes(const) A = 1; B = 7; variables (var) R, Fac (resultado de la oper.): entero procedimientos (procedure); inicio (begin); limpieza(limpia la pantalla); ciclo2 (hace ciclo e imprime); salida fin(end.) algoritmo ciclo Pseudocdigo del ciclo procedimiento ciclo inicio (begin); desde R= A hasta B hacer Fac Fac * R imprimo Fac fin_desde fin(end;) Como se puede ver dentro del ciclo se hace dos procesos, el clculo del factorial y la impresin del resultados quedndonos este algoritmo estructurado. El cdigo del procedimiento es: procedure ciclo; {* comienzo el ciclo *} begin Fac := 1; for R := A to B do {* se define el ciclo A *} begin Fac := Fac * R; {* Calcula factorial *} writeln ('Numero : ',R, ' Factorial : ',Fac ); {* imprime salida numero y factorial *} end end; {* fin del ciclo *} Se necesit colocar un begin y un end para definir comienzo y fin del ciclo, ya que el mismo tiene ms de una instruccin. Fac se define igual a uno, porque sino el producto nos daria siempre 0 (cero). Quedndonos el programa de la siguiente manera. Program Repeticion_2; {* Este es el segundo ejemplo de For *} uses crt, dos; {declaraciones} const {* constantesr *} A = 1; B = 7; var R, Fac : integer; {* controla el ciclo *} procedure limpieza; {* comienzo de limpieza de la pantalla *} begin
Pgina 3 de 9
ClrScr; end; {* fin de limpieza de la pantalla *} Procedure ciclo; {* comienzo el ciclo *} begin Fac := 1; for R := A to B do {* se define el ciclo A *} begin Fac := Fac * R; {* Calcula factorial *} writeln ('Numero : ',R, ' Factorial : ',Fac ); {* imprime salida numero y factorial *} end end; {* fin del ciclo *} procedure salida; {* comienzo del procedimiento salida *} {* solo sirve para ver resultados *} Var H :char; begin writeln ( 'Preione cualquir tecla '); readln (H); {* esta instruccin y la anterior son para dar tiempo para *} {* ver resultados *} end; {* fin del procedimiento salida *} begin limpieza; ciclo; salida; end. Los ciclos cumplen con las mismas reglas que las opciones tiene ms de una instruccin el ciclo deber llevar un begin con su correspondiente end cuando se tenga ms de una instruccin.. Si fuera B > A el for seria for K = A donwto B do
comenzar SS+A NN+1 leo A imprimo A terminar fin(end;) Como se puede ver dentro del ciclo se hace dos procesos, el clculo del factorial y la impresin del resultados quedndonos este algoritmo estructurado. El cdigo del procedimiento es: procedure ciclo; {* comienzo de ciclo *} begin S := 0; N := 0; write ( 'Ingrese un valor '); read (A); {* esta instruccin y la anterior son el ingreso de datos *} writeln ( 'El valor es : ',A ); {* esta instruccin imprime el valor *} WHILE A >= 0 DO {* se define el ciclo *} begin {* comienzo de While *} S := S + A; {* Calcula la suma de valores *} N := N + 1; {* Calcula la cantidad de valores *} writeln ; {* Salta una linea *} write ( 'Ingrese un valor '); read (A); {* esta instruccion y la anterior son el ingreso de datos *} writeln ( 'El valor es : ',A ); {* esta instruccin imprime el valor *} end {* fin de While *} end; {* fin de ciclo *} Quedndonos el programa de la siguiente manera. Program Repeticion_3; {* Este es el ejemplo de While *} uses crt, dos; {declaraciones} {const} {* constantes no hay*} var A, N, S : integer; {* controla el ciclo *} Prom :real; procedure limpieza; {* comienzo de limpieza de la pantalla *} begin ClrScr; end; {* fin de limpieza de la pantalla *} procedure ciclo; {* comienzo de ciclo *} begin S := 0; N := 0; write ( 'Ingrese un valor '); read (A); {* esta instruccin y la anterior son el ingreso de datos *} writeln ( 'El valor es : ',A ); {* esta instruccin imprime el valor *} WHILE A >= 0 DO {* se define el ciclo *} begin {* comienzo de While *} S := S + A; {* Calcula la suma de valores *} N := N + 1; {* Calcula la cantidad de valores *} writeln ; {* Salta una linea *}
Pgina 5 de 9
write ( 'Ingrese un valor, negativo para parar '); read (A); {* esta instruccin y la anterior son el ingreso de datos *} writeln ( 'El valor es : ',A ); {* esta instruccin imprime el valor *} end {* fin de While *} end; {* fin de ciclo *} procedure promedia; {* comienzo de promedia *} begin Prom := S / N; {* Calcula el promedio *} writeln ; {* Salta una linea *} writeln ; {* Salta una linea *} writeln ( 'Promedio es = ', Prom:5:2 ); {* Imprime el promedio *} end; {* fin de promedia *} procedure salida; {* comienzo del procedimiento salida *} {* solo sirve para ver resultados *} Var H :char; begin writeln ( 'Preione cualquir tecla '); readln (H); {* esta instruccin y la anterior son para dar tiempo para *} {* ver resultados *} end; {* fin del procedimiento salida *} begin limpieza; ciclo; promedia; salida; end. En el procedimiento promedia en la escritura del promedio, aparece writeln ( 'Promedio es = ', Prom:5:2 ); {* Imprime el promedio *} donde Prom:5:2 significa que la variable Prom ser escrita en un formato de 5 caracteres, de los cuales 2 corresponden a los decimales, se necesita un carcter para el punto decimal. Repeat : Cuando el ciclo debe incluir el ltimo valor ingresado ya que la pregunta se hace al final del ciclo. Ejemplo : Se ingresan una serie de nmeros distintos, el ltimo es el valor 12. Se pide un programa que calcule el promedio de los valores (incluir el ltimo valor), e imprimir los valores y su promedio. Pseudocdigo del ciclo procedimiento ciclo inicio (begin); N0 S0 repetir leo A imprimo A SS+A NN+1 hasta_que A = 12 fin(end;) El cdigo del procedimiento es: procedure ciclo; {* comienzo el ciclo *} begin S := 0;
Pgina 6 de 9
N := 0; repeat {* comienza ciclo *} write ( 'Ingrese un valor '); read (A); {* esta instruccin y la anterior son el ingreso de datos *} writeln ( 'El valor es : ',A ); {* esta instruccin imprime el valor *} writeln ; {* Salta una linea *} S := S + A; {* Calcula la suma de valores *} N := N + 1; {* Calcula la cantidad de valores *} until A = 12; {* definicion al final del ciclo *} end; {* fin del ciclo *} Quedndonos el programa de la siguiente manera. Program Repeticion_4; {* Este es el ejemplo de Repeat - Until *} uses crt, dos; {declaraciones} var A, N, S : integer; {* controla el ciclo *} Prom :real; procedure limpieza; {* comienzo de limpieza de la pantalla *} begin ClrScr; end; {* fin de limpieza de la pantalla *} procedure ciclo; {* comienzo el ciclo *} begin S := 0; N := 0; repeat {* comienza ciclo *} write ( 'Ingrese un valor, 12 para parar '); read (A); {* esta instruccin y la anterior son el ingreso de datos *} writeln ( 'El valor es : ',A ); {* esta instruccin imprime el valor *} writeln ; {* Salta una linea *} S := S + A; {* Calcula la suma de valores *} N := N + 1; {* Calcula la cantidad de valores *} until A = 12; {* definicion al final del ciclo *} end; {* fin del ciclo *} procedure promedia; {* comienzo de promedia *} begin Prom := S / N; {* Calcula el promedio *} writeln ; {* Salta una linea *} writeln ; {* Salta una linea *} writeln ( 'Promedio es = ', Prom:5:2 ); {* Imprime el promedio *} end; {* fin de promedia *} procedure salida; {* comienzo del procedimiento salida *} Var H :char; begin writeln ( 'Preione cualquir tecla '); readln (H); {* esta instruccin y la anterior son para dar tiempo para * end; {* fin del procedimiento salida *} begin limpieza; ciclo;
Pgina 7 de 9
promedia; salida; end. La estructura repeat carece de begin y end, ya que los dos extremos estn definidos por el propio ciclo.
Pgina 8 de 9
Pgina 9 de 9