Este documento describe las estructuras de control selectivas y repetitivas en Pascal. Explica que las estructuras selectivas como if-then-else y case permiten alterar el flujo normal de ejecución de un programa mediante la selección de instrucciones, mientras que las estructuras repetitivas como for y while permiten repetir una serie de instrucciones. Además, incluye ejemplos de código que ilustran el uso de estas estructuras.
Tema 10. Dinámica y funciones de la Atmosfera 2024
Estructuras de control
1. ESTRUCTURAS DE
CONTROL
SELECTIVAS
Y
REPETITIVAS
Ing. José Luis Ceballos
2. CONCEPTUALIZACIÓN
Las estructuras de control permiten establecer el orden de
ejecución de las instrucciones de un programa. Por
defecto, el flujo de ejecución de un programa es
secuencial, es decir, las instrucciones se ejecutan una
después de la otra en el orden en el cual fueron escritas
en el código del programa.
Las estructuras selectivas y repetitivas permiten alterar el
flujo normal de ejecución del programa; en este sentido,
las estructuras de selección se utilizará para elegir
cuáles instrucciones se ejecutarán y las repetitivas, se
utilizarán para repetir una serie de instrucciones.
Ing. José Luis Ceballos
3. INTRUCCIONES SELECTIVAS
Instrucción If-then-else
La sintaxis es:
if (condición) then
begin
sentencias; Grupo A
end Sin punto y coma
else
begin
sentencias; Grupo B
end;
Lo anterior establece que de ser verdadera la condición, se ejecutará el grupo
de sentencias A, en caso contrario, se ejecutará el grupo de sentencias B.
Nótese que el end que está antes del else no lleva punto y coma, ninguna
instrucción inmediatamente antes de un else lleva punto y coma, esto forma
parte de la sintaxis. En caso de que el grupo de sentencias esté compuesto
por una sola instrucción, se omite el begin – end. El uso de paréntesis en la
condición es opcional, sin embargo, cuando se evalúa mas de una condición
su uso es necesario, para indicar cual expresión se evalúa primero.
Ing. José Luis Ceballos
4. INTRUCCIONES SELECTIVAS
Instrucción If- then
Existen situaciones en donde se omite la parte
else de la instrucción condicional, debido a que
no se considera necesario ejecutar un grupo de
instrucciones en caso de que no se cumpla la
condición. Así la sintaxis quedaría como sigue:
if (condición) then
begin
sentencias;
end;
Ing. José Luis Ceballos
5. INTRUCCIONES SELECTIVAS
Instrucción If- then - else en cadena
Instrucción If- then - else en cadena
La sintaxis es:
if (condición1) then
begin
Si condición1 es verdadera se ejecutan estas
sentencias;
sentencias
end
else if (condición2) Si condición2 es verdadera se ejecutan estas
sentencias
begin
sentencias;
end
else if (condición3) Si condición3 es verdadera se ejecutan estas
sentencias
begin
sentencias;
end
else
begin
Si ninguna condición anterior es verdadera, se ejecutan
sentencias;
estas sentencias
end; Ing. José Luis Ceballos
6. INTRUCCIONES SELECTIVAS
Instrucción If- then - else en cadena
De acuerdo a la sintaxis anterior, la instrucción if- then -
else en cadena evaluará cada condición en orden, y si
alguna de ellas es verdadera, entonces, se ejecutará el
grupo de sentencias asociada a la condición, y lo que
resta de la cadena será omitido. El grupo de sentencias
asociadas con el else final, se ejecutará cuando ninguna
de las condiciones anteriores se haya cumplido, es
decir, este último grupo de instrucciones funciona como
un valor predeterminado.
Ing. José Luis Ceballos
7. INTRUCCIONES SELECTIVAS
Instrucciones If – then - else anidadas
El grupo de instrucciones asociado a una condición puede estar
constituido por instrucciones válidas de Pascal, incluyendo otra
instrucción if – then - else; de ser así, se estaría creando
instrucciones anidadas if.
A continuación se presenta un ejemplo de sintaxis:
Ing. José Luis Ceballos
8. INTRUCCIONES SELECTIVAS
Instrucciones If - then - else anidadas
Instrucciones If - then - else anidadas
if (condición1) then
begin
if (condición2) then
begin
sentencias; Grupo 1
end
else
begin
sentencias; Grupo 2
end;
end
else if (condición3) then
begin
if (condición4) then
begin
sentencias; Grupo 3
end;
end
else
begin
sentencias; Grupo 4
end;
Ing. José Luis Ceballos
9. INTRUCCIONES SELECTIVAS
Instrucciones If – then - else anidadas
En el ejemplo de sintaxis anterior, para que se ejecute el
Grupo 1 de sentencias, condición1 y condición2 deben
ser verdaderas; para ejecutarse el Grupo 2 de
sentencias, condición1 verdadera y condición2 falsa; el
Grupo 3 de sentencias se ejecutará sólo si condición3 y
condición4 son verdaderas; y el Grupo 4 de sentencias
se ejecutará si condición1 y condición3 son falsas.
Ing. José Luis Ceballos
10. INTRUCCIONES SELECTIVAS
Sentencia if – then –else Ejemplo
Una institución educativa asigna un valor en letra
al resultado de la evaluación obtenido por un
estudiante. Desarrolle un programa que solicite la
calificación numérica obtenida por el alumno y
determine su calificación en letras de acuerdo a
la siguiente tabla:
Calificación obtenida en número Equivalente en letras
Menor que 60 E
Entre 60 y 69 D
Entre 70 y 79 C
Entre 80 y 89 B
Igual o mayor a 90 A
Ing. José Luis Ceballos
11. INTRUCCIONES SELECTIVAS
Ejemplo 1
program calificacion; (*nombre del programa *)
uses wincrt; (*inclusión de unidades. Crt para usar la función clrscr( ) y la función gotoxy( ) *)
var
N : real; (*declaración de variables a usar en el programa *)
begin (* inicio del bloque principal del programa *)
clrscr;
gotoxy(10,10);write( ‘Calificación en número obtenida: ‘); (* solicitud de la calificación en número *)
gotoxy(45,10);read(N); (* se almacena el valor en la variable *)
if (N < 60) then
begin (* se inicia la verificación para obtener el equivalente en letras *)
gotoxy(10,12);write( ‘ Calificación en letra : E‘);
end
else if (N >= 60) and (N <= 69) then
begin
gotoxy(10,12);write( ‘ Calificación en letra : D‘);
end
else if (N >= 70) and (N <= 79) then
begin
gotoxy(10,12);write( ‘ Calificación en letra : C‘);
end
else if (N >= 80) and (N <= 89) then
begin
gotoxy(10,12);write( ‘ Calificación en letra : B‘);
end
else
begin
gotoxy(10,12);write( ‘ Calificación en letra : A‘);
end;
gotoxy(10,15);write(‘Presione una tecla para finalizar….’);
end. (* fin del programa *)
Ing. José Luis Ceballos
12. INTRUCCIONES SELECTIVAS
Instrucción case
La sintaxis es:
case expresión of
valor1:
begin
sentencias;
end;
valor2:
begin
sentencias;
end;
valor3:
begin
sentencias;
end
else
begin
sentencias;
end;
end;
Ing. José Luis Ceballos
13. INTRUCCIONES SELECTIVAS
Instrucción case
La instrucción case es una alternativa a la instrucción if-then-else, y
consiste en comparar el valor de una expresión de número entero,
carácter, booleano o enumerado con un valor específico. Al coincidir
algunos de estos valores, se ejecuta el grupo de sentencias
asociado a ese valor.
En caso de que la expresión no coincida con ningún valor, entonces se
ejecutará por defecto o de manera predeterminada el grupo de
sentencias asociadas al else. Es de hacer notar que la instrucción else
es opcional dentro del ciclo case.
Ing. José Luis Ceballos
14. INTRUCCIONES SELECTIVAS
Ejemplo 2
Desarrollar un programa que lea un
carácter del teclado e indique si es una
letra o número. En caso de ser una letra,
que señale si es mayúscula o minúscula.
Ing. José Luis Ceballos
15. INTRUCCIONES SELECTIVAS
uses wincrt;
Ejemplo 2
program leer_caracter; (*nombre del programa *)
(*inclusión de unidades. Crt para usar la función clrscr( ) y la función gotoxy( ) *)
var
c : char; (*declaración de variables a usar en el programa *)
begin (* inicio del bloque principal del programa *)
clrscr;
gotoxy(5,10);write( ‘Presione un carácter del teclado ’); (* solicitud de la lectura de un carácter *)
gotoxy(41,10);read(c); (* se almacena el carácter presionado en la variable *)
case c of (* se inicia la verificación para saber qué carácter fue presionado *)
‘0’..’9’ : begin
gotoxy(5,13);write(‘La tecla presionada corresponde a un número’);
end;
‘a’..’z’ : begin
‘a’..’z’
gotoxy(5,13);write(‘La tecla presionada corresponde a una letra minúscula’);
end;
‘A’..’Z’ : begin
‘A’..’Z’
gotoxy(5,13);write(‘La tecla presionada corresponde a una letra mayúscula’);
end;
#30..#31 : begin
gotoxy(5,13);write(‘La tecla presionada corresponde a un código de control’);
end
else begin
gotoxy(5,13);write(‘Carácter no identificado’);
end;
end; (* fin de la verificación *)
gotoxy(5,15);write(‘Presione ENTER para finalizar….’);
end. (* fin del programa *)
Ing. José Luis Ceballos
16. INTRUCCIONES
REPETITIVAS
Instrucción for to
La sintaxis es:
for variable:= valor_inicial to valor_final do
begin
sentencias;
end;
La instrucción for se utiliza cuando se tiene establecido el
número de veces que se debe ejecutar repetidamente un
grupo de sentencias.
Ing. José Luis Ceballos
17. INTRUCCIONES
REPETITIVAS
Instrucción for to
La instrucción for hace uso de una variable de
control, la cual recibe el valor_inicial al
ejecutarse por primera vez el ciclo, luego,
ejecuta el grupo de sentencias que se
encuentran antes del end del for y se
incrementa en uno el valor de la variable control,
volviéndose a ejecutar el grupo de sentencias
que están dentro del ciclo, hasta que la variable
control alcance un valor mayor al valor_final, en
cuyo instante finaliza el ciclo.
18. INTRUCCIONES
REPETITIVAS
Instrucción for downto
La sintaxis es:
for variable:= valor_inicial downto valor_final do
begin
sentencias;
end;
Esta variante de la instrucción for se utiliza cuando se
decrementa en uno el valor de la variable de control. El
ciclo se ejecutará hasta que la variable control sea menor que el
valor_final.
Ing. José Luis Ceballos
19. INTRUCCIONES
REPETITIVAS
Instrucción for to/downto
Joyanes Aguilar establece las siguientes consideraciones
al momento de implementar una sentencia for to/downto:
1.- La variable de control así como el valor_inicial y el valor_final
deben
ser del mismo tipo de dato. Para este caso, el tipo de dato Real no
está
permitido. Tanto valor_inicial y valor_final pueden ser expresiones o
constantes.
2.- Es ilegal intentar modificar el valor de la variable control, así como
el valor_inicial y el valor_final dentro del ciclo for.
Ing. José Luis Ceballos
20. INTRUCCIONES REPETITIVAS
Ejemplo 1
Desarrollar un programa que calcule el
promedio de 10 números indicados por el
usuario.
Ing. José Luis Ceballos
21. INTRUCCIONES REPETITIVAS
Ejemplo 1
program promedio; (*nombre del programa *)
uses wincrt; (*inclusión de unidades. Crt para usar la función clrscr( ) y la función gotoxy( ) *)
var
num, s, i : integer; (*declaración de variables a usar en el programa *)
prom : real;
begin (* inicio del bloque principal del programa *)
clrscr;
gotoxy(5,10);write( ‘A continuación indique 10 números’);
s:= 0;
for i:= 1 to 10 do (* inicio del ciclo repetitivo. Diez iteraciones *)
begin
gotoxy(5,13);write(‘Número ’); (* solicitud del número*)
gotoxy(15,13);read(num); (* se almacena el número en la variable *)
s:= s + num; (* se acumula el valor del número*)
end; (* final del ciclo for *)
prom:= s/10; (* se calcula el promedio *)
gotoxy(5,15);write(‘El promedio de los valores introducidos es : ’, prom:6:2);
gotoxy(5,17);write(‘Presione una tecla para finalizar…..’);
end. (* fin del programa *)
Ing. José Luis Ceballos
22. INTRUCCIONES REPETITIVAS
Ejemplo 2
Desarrollar un programa muestre por
pantalla los números naturales, en orden
descendente.
Ing. José Luis Ceballos
23. INTRUCCIONES REPETITIVAS
Ejemplo 2
program numeros_naturales; (*nombre del programa *)
uses wincrt; (*inclusión de unidades. Crt para usar la función clrscr( ) y la función gotoxy( ) *)
var
i : integer; (*declaración de variables a usar en el programa *)
begin (* inicio del bloque principal del programa *)
clrscr;
gotoxy(5,5);write( ‘Se mostrarán los números naturales en orden descendiente’);
gotoxy(1,7);
for i:= 9 downto 0 do (* inicio del ciclo repetitivo *)
begin
writeln(i);
end; (* final del ciclo for downto*)
gotoxy(5,20);write(‘Presione una tecla para finalizar…..’);
end. (* fin del programa *)
Ing. José Luis Ceballos
24. INTRUCCIONES
REPETITIVAS
Instrucción while do
La sintaxis es:
while condición do
begin
sentencias;
end;
En una sentencia while el grupo de instrucciones inmerso en ella, se
ejecutará repetidamente, mientras que la condición sea verdadera. Si
la condición cambia dentro del bucle, entonces, el ciclo finalizará. A
diferencia del ciclo for, en esta instrucción no se conoce previamente
el
número de iteraciones. Ing. José Luis Ceballos
25. INTRUCCIONES
REPETITIVAS
Instrucción while do
Joyanes Aguilar establece las siguientes consideraciones
al momento de implementar una sentencia while do:
1.- La condición lógica debe ser modificada por una
sentencia dentro del ciclo, en caso contrario, este será
Infinito.
2.- Es posible que el grupo de sentencias del ciclo while do
nunca se ejecuten. Esto sucederá si la condición es falsa
la primera vez que se evalúa.
Ing. José Luis Ceballos
26. INTRUCCIONES REPETITIVAS
Ejemplo 3
Desarrollar un programa que lea una
secuencia de caracteres hasta que el
usuario registre un punto. Al final el
programa debe indicar cuántos caracteres
contiene la secuencia.
Ing. José Luis Ceballos
27. INTRUCCIONES REPETITIVAS
Ejemplo 3
program secuencia_caracteres; (*nombre del programa *)
uses wincrt; (*inclusión de unidades. Crt para usar la función clrscr( ) y la función gotoxy( ) *)
var
ch : char; (*declaración de variables a usar en el programa *)
c : integer;
begin (* inicio del bloque principal del programa *)
clrscr;
gotoxy(5,5);write( ‘Indique una secuencia de caracteres. Tipee un punto para finalizar ’);
gotoxy(3,7);
c:= 0;
read(ch); (* lee el caracter *)
while ch <> ‘.’ do (* Inicio del ciclo while. Se verifica la condición *)
begin
c:= c + 1;
read(ch); (* lee otro caracter *)
end; (* final del ciclo while *)
gotoxy(5,20);write(‘Usted tipeo ‘,c,’ caracteres’);
gotoxy(5,21);write(‘Presione una tecla para finalizar…..’);
end. (* fin del programa *)
Ing. José Luis Ceballos
28. INTRUCCIONES
REPETITIVAS
Instrucción repeat until
La sintaxis es:
repeat
sentencias;
until condición;
La sentencia repeat until hace que se repita la ejecución de las sentencias asociadas a
ella, hasta que la condición sea verdadera.
La diferencia que existe con respecto al ciclo while do visto anteriormente, es que en
este, la condición se evalúa antes de ingresar a la ejecución de las sentencias; por el
contrario, en el ciclo repeat until se ejecutan al menos una vez las sentencias y luego se
verifica la condición. En tal sentido, si se requiere validar primero la condición antes de
ejecutar el grupo de sentencias, se debe hacer uso de la sentencia while do, en
cualquier otro caso, se puede hacer uso de la sentencia repeat until.
Ing. José Luis Ceballos
29. INTRUCCIONES
REPETITIVAS
Instrucción repeat until
Joyanes Aguilar establece algunas consideraciones
sobre la sentencia repeat until:
1.- La condición se evalúa al final del ciclo, después de
ejecutarse todas las sentencias.
2.- Si la condición es falsa, se vuelve a repetir el ciclo y se
ejecutan nuevamente todas las sentencias.
3.- Si la condición es verdadera, se finaliza el ciclo.
Ing. José Luis Ceballos
30. INTRUCCIONES REPETITIVAS
Ejemplo 4
Desarrollar un programa que le solicite al
usuario un número entero y devuelva el
valor de su raíz cuadrada. El programa
estará ejecutando el proceso hasta que el
usuario revele que no va a indicar otro
número.
31. INTRUCCIONES REPETITIVAS
Ejemplo 4
program raiz_cuadrada; (*nombre del programa *)
uses wincrt; (*inclusión de unidades. Crt para usar la función clrscr( ) y la función gotoxy( ) *)
var
num : integer; (*declaración de variables a usar en el programa *)
raiz : real;
resp: char;
begin (* inicio del bloque principal del programa *)
repeat (* inicio del ciclo. No se verifica previamente ninguna condición *)
clrscr;
gotoxy(5,10);writeln( ‘Indique un número ’); (* se solicita el número *)
gotoxy(27,10);readln(num); (* se almacena en la variable *)
raiz:= sqrt(num); (* se obtiene la raíz cuadrada del número*)
gotoxy(5,12);writeln(‘La raíz cuadrada del número es : ‘,raiz:8:2);
gotoxy(5,15);writeln(‘Desea calcular la raíz cuadrada a otro número ? (S/N) ‘);
gotoxy(62,15)readln(resp);
until (resp = ‘N’) or (resp = ‘n’); (* final del ciclo repeat until *)
gotoxy(5,21);writeln(‘Presione una tecla para finalizar…..’);
end. (* fin del programa *)
Ing. José Luis Ceballos
32. ASIGNACIÓN
Desarrollar un programa que señale si un número entero
indicado por el usuario es negativo o positivo.
Desarrollar un programa que señale si un número entero
ingresado por el usuario es múltiplo de 5.
Desarrollar un programa que señale el mayor de dos
números enteros indicados por el usuario.
Haciendo uso de cada una de las sentencias repetitivas
(For, While-Do, Repeat-Until) desarrollar un programa
que muestre por pantalla los números comprendidos en
un rango definido por el usuario, tomando en cuenta un
incremento en una unidad entre los valores del rango.
Ing. José Luis Ceballos