Professional Documents
Culture Documents
2
Centinelas o banderas
Son variables que pueden tomar dos valores (cierto, falso). Segn la expresin lgica evaluada, uno de estos valores
permite la ejecucin repetida de un bloque de instrucciones.
Adems de la inicializacin respectiva, existe otro punto crtico de los centinelas y es cuando se cambia su valor.
Ciclos o Bucles
Los ciclos o bucles son estructuras que de acuerdo a Joyanes (2002) repiten una secuencia de instrucciones un nmero
determinado de veces estas estructuras son empleadas cuando nos interesa que cierto grupo de instrucciones se repita;
a cada una de las repeticiones o ejecuciones de ese grupo de sentencias se denomina iteracin.
La manera como se controla en nmero de repeticiones, nos permite definir los tipos:
FOR (Reipta Para)
WHILE (Repita Mientras)
REPEAT - UNTIL (Repita Hasta)
CICLO REPITA PARA FOR
Se emplea cuando conocemos a priori (por anticipado) en nmero de veces que se va a repetir (iterar) las instrucciones
asociadas a tal estructura, de acuerdo a Joyanes (2002) ella ejecuta las acciones del cuerpo del bucle un nmero
especificado de veces y de modo automtico controla el nmero de iteraciones o pasos a travs del cuerpo del bucle
generalmente depende de una variable que realiza la actividad de conteo. Una vez finalizado el ciclo se pasa a la
siguiente sentencia del programa. .
Donde:
V es una variable de control o conteo que
permite definir la parada.
Vi: es la asignacin con la que comenzar el
conteo
Vf: es el valor final o de parada.
Inc: es el valor en que se va a incrementar la
variable de control (V)
Sentencias: una ms instrucciones
(sentencias) asociadas al ciclo.
Pseudocdigo
Para V:= Vi a Vf hacer
Sentencia;
FOR V:= Vi TO Vf DO
BEGIN
Sentencia1;
Sentencia2;
:
SentenciaN
3
una iteracin.
END;
b) Con DECREMENTO DEL CONTADOR (Vi > Vf):
Turbo Pascal
Pseudocdigo
Ejercicio 2
Desarrolle un programa en Turbo Pascal que calcule e imprima el promedio de notas, la cantidad de estudiantes que
aprobaron y la cantidad de estudiantes que reprobaron la asignatura Programacin en una seccin con una cantidad
dada de estudiantes, la escala de notas es de 1 a 20 puntos
program notas;
uses crt;
Var
cant, cant_apro, cant_repr, i: integer;
nota, acum, prom: real;
begin
write ('indique cantidad de estudiantes');
readln (cant);
acum := 0;
cant_apro:= 0;
cant_repr:= 0;
for i := 1 to cant do
begin
write ('indique nota del estudiante N ' , i );
readln (nota);
acum := acum + nota;
if (nota >= 10) then
cant_apro:= cant_apro + 1
else
cant_repr:= cant_repr + 1;
end;
prom := acum/cant;
writeln ('Asignatura Programacin, Promedio de la Seccin: ', prom:2:2, ' puntos');
writeln ('Cantidad de Estudiantes Aprobados:', cant_apro);
writeln ('Cantidad de Estudiantes Reprobados:', cant_repr);
writeln ('Cantidad de Estudiantes inscritos em la Seccin:', cant);
end.
5
CICLO WHILE (MIENTRAS)
La estructura repetitiva While (mientras) se utiliza cuando el nmero de iteraciones no se conoce por anticipado, el
ciclo while ejecuta un bloque de acciones mientras que una condicin dada se cumpla, es decir, cuando la condicin
evala a verdadero. Cuando la condicin se haga falsa el programa continuar en la sentencia siguiente al ciclo.
La forma general del ciclo mientras es la siguiente:
ENTRADA
FALSO
CONDICIN
VERDADERO
SENTENCIA (S)
SALIDA
6
Turbo Pascal
WHILE condicin lgica DO
Sentencia;
Pseudocdigo
mientras (condicin) hacer
<bloque de instrucciones>
fin_mientras
7
Desarrolle un algoritmo que teniendo como datos de entrada las medidas (largo, alto y ancho (espesor)) de varias
estructuras, permita determinar (mostrar por pantalla) la cantidad de M 3 de concreto necesarios para ser vaciadas, y la
cantidad de materiales necesarios para elaborar una mezcla de resistencia RCC 180 kgs/cm 2, sabiendo que para cada
M3 de mezcla se necesita un (01) saco de cemento, veinte palas de piedra picada, 18 palas de arena y dieciocho litros
de agua.
Iprogram rcc;
uses crt;
var
l, h, e, vol, acu_vol, cant_cem, cant_pp, cant_pa, cant_ag: real;
cont: integer;
resp: char;
begin
resp:= 's';
cont:= 0;
acu_vol:=0;
while (resp = 's') or (resp = 's') do
begin
cont:= cont + 1;
write ('indique largo de la estructura N: ', cont, ' ');
readln (l);
write ('indique altura de la estructura N: ', cont, ' ');
readln (h);
write ('indique ancho (espesor) de la estructura N: ', cont, ' ');
readln (e);
vol:= l*h*e;
acu_vol:= acu_vol + vol;
write ('desea procesar otra estructura pulse s para continuar o cualquier otra tecla para salir');
readln (resp);
end;
cant_cem:= acu_vol;
cant_pp:= acu_vol * 20;
cant_pa:= acu_vol * 18;
cant_ag:= acu_vol * 18;
writeln (' Total de estructuras a vaciar: ', cont:3);
writeln ('total de metros cbicos vaciar: ', acu_vol:3:2);
writeln ('Cantidad de Sacos de Cemento que se necesitan: ', cant_cem:3:2);
writeln ('Cantidad de Palas de Piedra Picada que se necesitan : ', cant_pp:3:2);
writeln ('Cantidad de Palas de Arena que se necesitan : ', cant_pa:3:2);
writeln ('Cantidad de Litros de Agua que se necesitan : ', cant_ag:3:2);
end.
8
CICLO REPEAT UNTIL (REPITA HASTA)
La estructura repetitiva Repeat Until (Repita Hasta), especifica un ciclo condicional que se repite hasta que la
condicin se hace verdadero. Este ciclo es similar al ciclo While, la diferencia est en que el bloque de sentencias se
ejecuta nuevamente si la condicin es evaluada como falso y no se ejecuta ms si la condicin es evaluada como
verdadero, es importante recalcar que el bloque de sentencias se ejecuta al menos una vez.
Despus de cada iteracin el cuerpo del ciclo evala la condicin. Si la condicin se cumple (verdadero) el ciclo se
termina y se sale de l, ejecutndose la siguiente sentencia. Si la condicin no se cumple (falso) el ciclo se repite.
Reglas de Funcionamiento de acuerdo a Joyanes (1995)
La condicin (expresin lgica) se evala al final del ciclo despus de ejecutarse todas las sentencias
incluidas en l.
Si la expresin lgica es falsa, se vuelve a repetir el bucle y se ejecutan todas las sentencias incluidas en l.
Si la expresin lgica es verdadera se sale del bucle y se ejecuta la sentencia posterior al Hasta (Until).
La sintaxis en Turbo Pascal no requiere Begin y End.
Sintaxis
Turbo Pascal
Pseudocdigo
REPEAT
Repita
Sentencia 1;
Sentencia 2;
:
Sentencia N
UNTIL (condicin lgica)
Sentencia 1;
Sentencia 2;
:
Sentencia N
Hasta (condicin lgica)
9
Comparacin entre los ciclos Repita Mientras y Repita Hasta de acuerdo a Joyanes (1995)
Repita Mientras
Repita Hasta
10
Ejercicios Ciclo Repeat - Until
Desarrolle un programa en turbo Pascal que permita calcular la suma de los nmeros naturales desde 1 hasta un
nmero dado utilizando el Ciclo Repita Hasta Repeat Until
program numeros;
uses crt;
var
n,suma,i:integer;
begin
write ('Ingrese el Numero: ');
readln (n);
suma:=0;
i:=1;
repeat
suma:=suma+i;
i:=i+1;
until (i > n);
write ('La Suma es: ',suma);
write ('Presione una Tecla para Continuar');
end.
Desarrolle un programa en Turbo Pascal que lea las notas de un estudiante y calcule el promedio de notas en la escala
del 1 al 20.
program notas;
uses crt;
var
nom: string;
cont:integer;
suma,nota,prom:real;
resp: char;
begin
write ('Indique Nombre del estudiante: ');
readln (nom);
suma:=0; cont:=0;
repeat
write('Ingrese la Nota N: ', cont +1,': ');
readln (nota);
if (nota >= 1) and (nota <= 20) then
begin
suma:=suma+nota;
cont:=cont+1
end
else
write('La Nota NO ES VALIDA');
writeln ('Desea procesar otra nota pulse N para salir');
writeln ('cualquier otra tecla para continuar');
readln (resp);
until (resp = 'n') or (resp = 'N');
prom:=suma/cont;
writeln ('Estudiante: ', nom);
writeln ('La Cantidad de notas ingresadas es: ',cont);
writeln ('Promedio de las Notas es de: ',prom:2:2);
end.
11
CICLOS ANIDADOS
En clases anteriores se pudo evidenciar que el cuerpo de un ciclo puede contener cualquier tipo de sentencias
secuenciales o selectivas (if them else, case), incluso puede contener sentencias repetitivas (for, while, repeat). Si
un ciclo est contenido en otro ciclo se denominan ciclos anidados. Un ciclo anidado no tiene una estructura nueva,
sino que consiste en poner un ciclo dentro de otro. Cuando se anidan ciclos se debe tener cuidado que el ciclo interior
est completamente dentro del ciclo exterior; si los ciclos se cruzan, no sern vlidos, a continuacin se muestra
algunos ejemplos de ciclos anidados
While ( condicin 1) do
begin
For (condicin 2) do
begin
bloque de sentencias
end;
end;
Repeat
For (condicin 2) do
begin
bloque de sentencias
end;
Until (condicin 1)
For (condicin 1) do
begin
For (condicin 2) do
Begin
Bloque de sentencias
End;
Repeat
End;
Until (condicin 1)
While (condicin 1) do
begin
Repeat
bloque de sentencias
until (condicin 2)
end;
While ( condicin 2) do
Begin
bloque de sentencias
end;
Repeat
Repeat
bloque de sentencias
Until (condicin 2)
Until (condicin 1)
12
Ejercicios Ciclos Anidados
Desarrolle un programa en Turbo Pascal que permita generar las tablas de multiplicar del 1 al 10 utilizando ciclos
anidados.
program tablas 1;
uses crt;
var
i, j, res: integer;
begin
for i:= 1 to 10 do
begin
writeln ('TABLA DEL: ', i:2);
for j:= 1 to 10 do
begin
res := i * j;
writeln ( i:2, ' * ', j:2, ' = ', res:2)
end
end
end.
La empresa Tony Tornillos a travs de sus vendedores, distribuye productos ferreteros en el occidente del pas, con la
finalidad de automatizar sus sistema de ventas ha solicitado a los estudiantes de programacin de la UNEFA el
desarrollo de un sistema que le permita saber los datos personales y el total de las ventas mensuales realizadas por
cada uno de sus vendedores en el primer semestre del ao y el total de las ventas efectuadas por la empresa en dicho
periodo. Resuelva utilizando ciclos anidados.
program tony_tor;
uses crt;
Var
Nom, Ced: string;
Resp: char;
i: integer;
Venta, Tot_vent, Tot_gen: real;
begin
Tot_gen:= 0;
repeat
write ('indique Nombre del Vendedor ');
readln (Nom);
write ('indique Cdula del Vendedor');
readln (Ced);
Tot_vent:= 0;
for i:= 1 to 6 do
begin
writeln ('indique monto de la venta del mes: ', i);
readln (Venta);
Tot_vent := Tot_vent + venta
end;
Tot_gen := Tot_gen + Tot_vent;
writeln ('Vendedor: ', Nom, ' Cdula N: ', Ced);
writeln ('Monto de las ventas realizadas en el semestre Bs.: ', Tot_vent:4:2);
writeln ('Desea procesar otro vendedor, pulse N para salir y cualquier otra tecla para continuar');
readln (Resp);
until (Resp = 'N') or (Resp = 'n');
writeln ('Total Ventas efectuadas por la Empresa Bs.: ', Tot_gen:4:2);
end.
13
Los estudiantes del primer semestre de la UNET cursan cinco asignaturas (Clculo, Fsica, Qumica, Ingls y
Lenguaje) , para no entrar en periodo de prueba deben alcanzar un promedio mnimo de 3,60 puntos (la escala
utilizada es de 1 al 9) , desarrolle un programa que permita capturar, el nmero de estudiantes inscritos en una seccin,
los datos de cada estudiante (Nombre y notas) y muestre por pantalla el nombre del estudiante el promedio de las
asignaturas e indique si el estudiante entra o no a periodo de prueba. Valide la nota en la escala del 1 al 9.
program notas_unet;
uses crt;
var
ne, i, j: integer;
nota, prom: real;
nom, status: string;
begin
write ('Indique nmero de estudiantes de la Seccin: ');
readln (ne);
for i:= 1 to ne do
begin
prom:=0;
write ('indique nombre del estudiante N: ', i, ' ');
read (nom);
for j:= 1 to 5 do
begin
Case j of
1: write ('Indique nota de Clculo: ');
2: write ('Indique nota de Fsica: ');
3: write ('Indique nota de Qumica: ');
4: write ('Indique nota de Ingls: ');
5: write ('Indique nota de lenguaje: ');
End;
readln (nota);
repeat
if (nota<1) or (nota > 9) then
begin
writeln ('nota no vlida');
write ('indique nuevamente la nota: ');
readln (nota)
end;
until (nota >=1) and (nota <= 9);
prom:= prom + nota;
end;
prom:= prom/5;
if (prom >=3.60) then
status := 'Estudiante Regular'
else
status := 'Estudiante en Periodo de Prueba';
writeln ('Estudiante: ', nom, ' Promedio: ', prom:2:2, ' puntos ', status)
end
end.
Bibliografa
JOYANES, Luis. Programacin en Turbo Pascal Versiones 5.5, 6.0 y 7.0 segunda edicin, McGraw Hill, Mexico
1995.
JOYANES, Luis. Fundamentos de Programacin tercera edicin, McGraw Hill, Espaa 2002.
CARBALLO, Yusneyi. Gua de clases y ejercicios Escuela de Computacin. Recopilaciones varias desde 2004.
Disponible en la pgina: http://www.ciens.ucv.ve/algoritmosyprogramacion/paraRevisar.htm