Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Las estructuras condicionales comparan una variable contra otro(s) valor(es), para que en
base al resultado de esta comparación, se siga un curso de acción dentro del programa.
Cabe mencionar que la comparación se puede hacer contra otra variable o contra una
constante, según se necesite.
IF (condición) THEN
Begin
instrucción1;
instrucción2;
….
End;
Si se va a ejecutar una sola instrucción, se puede omitir las instrucciones BEGIN y END.
El programa ejecuta las instrucciones en el caso de que la condición evaluada sea cierta, en
caso contrario el programa ejecuta la línea siguiente a la instrucción END; por ejemplo:
PROGRAM operaciones;
USES
Crt;
VAR
‘Variables de Entrada
op1,op2:real;
operador: char;
‘Variables de Salida
res:real;
BEGIN
clrscr;
‘Entrada de Datos
Write('introduzca operando1:');
Readln(op1);
Write('operador:');
Readln(operador);
Write('introduzca operando2:');
Readln(op2);
‘Proceso
IF (operador='+') THEN
res:=op1+op2;
IF (operador='-') THEN
res:= op1-op2;
IF (operador='*') THEN
res:=op1*op2;
IF (operador='/') THEN
res:=op1/op2;
‘Salida de Datos
Write('resultado=',res:0:2);
END.
PROGRAM mayor;
USES
Crt;
VAR
‘Variables de Entrada
N1,N2,N3: integer;
‘Variables de Salida
NMayor: integer;
BEGIN
Clrscr;
‘Entrada de Datos
Write ('Ingrese primer número: ');
Readln (N1);
Write ('Ingrese segundo número: ');
Readln (N2);
Write ('Ingrese tercer número: ');
Readln (N3);
‘Proceso
IF (N1>=N2) And (N1>=N3) THEN
NMayor:=N1;
IF (N2>=N1) And (N2>=N3) THEN
NMayor:=N2;
IF (N3>=N1) And (N3>=N2) THEN
NMayor:=N3;
‘Salida de Datos
Writeln ('El número mayor es: ',NMayor);
END.
ESTRUCTURA CONDICIONAL DOBLE.
IF (condición) THEN
Begin
instrucción_verdadera_1;
instrucción_verdadera_2;
...
instrucción_verdadera_n;
End
ELSE
Begin
instrucción_falsa_1;
instrucción_falsa_2;
...
instrucción_falsa_n;
End;
Observe que la instrucción que está antes de la instrucción ELSE no lleva punto y coma “;”.
Además se recuerda que si se va a ejecutar una sola instrucción, se puede omitir las
instrucciones BEGIN y END tanto para las instrucciones verdaderas como para las falsas.
PROGRAM multiplo5;
USES
Crt;
VAR
‘Variables de Entrada
num:Integer;
BEGIN
Clrscr;
‘Entrada de Datos
write('Introduzca un número : ');
Readln(num);
‘Salida de Datos
IF (num mod 5 = 0) THEN
Write('El número introducido es múltiplo de 5')
ELSE
Write('El número introducido no es múltiplo de 5');
Readkey;
END.
IF (condición) THEN
Begin
instrucción_1;
instrucción_2;
...
instrucción_verdadera_n;
End
ELSE IF (condición) THEN
Begin
Instrucción_1;
instrucción_2;
...
instrucción_n;
End
…
ELSE
Begin
instrucción_falsa_1;
instrucción_falsa_2;
...
instrucción_falsa_n;
End;
PROGRAM EJER4;
VAR
‘Variables de Entrada
num:INTEGER;
BEGIN
Clrscr;
‘Entrada de Datos
Write ('Introduzca un número entero: ');
Readln (num);
‘Proceso y Salida de Datos
IF (num > 0) THEN
Write ('El número es positivo')
ELSE IF (num < 0) THEN
Write ('El número es negativo')
ELSE
Write ('El número no es positivo ni negativo, es 0');
Readkey;
END.
Este tipo de bifurcación múltiple puede llegar a ser difícil de leer y el PASCAL
proporciona una estructura más legible para aquellos casos en los que la bifurcación
múltiple se realiza mediante comparación de datos sencillos ordinales (por tanto ni Real, ni
String). Esta es la estructura Case que tiene la siguiente sintaxis:
CASE identificador OF
Valor_1 : accion1;
Valor_2 : accion2;
...
ELSE
accion _n;
END;
donde identificador es una variable del tipo Integer, Byte, o Char, las acciones accion1,...
son instrucciones sencillas o compuestas, y los casos caso1, ... son la especificación de los
valores. Esta especificación se puede hacer separando valores con comas o bien mediante el
rango, si se trata de valores consecutivos. Un rango se especificar mediante el valor inicial
y final separado por dos puntos.
Reglas:
1. La expresión selector se evalúa y se compara con las listas de constantes; las listas de
constantes son listas de uno o más posibles valores de selector separados por comas.
Sólo se ejecuta una sentencia. Si el valor del selector está en la lista constantes 1, se
ejecuta sentencia 1. El control se pasa seguidamente a la primera sentencia a
continuación de end. Cada sentencia puede ser a su vez una sentencia Pascal simple o
compuesta.
2. La cláusula else es opcional como la sentencia if.
3. Si el valor del selector no está comprendido en ninguna lista de constantes y no existe
la cláusula else, no sucede nada y sigue el flujo del programa; si el valor del selector no
coincide con alguna constante, se ejecuta(n) la(s) sentencia(s) a continuación de la
cláusula else.
4. El selector debe ser un tipo ordinal (integer, char, boolean o enumerado). Los números
reales no pueden ser utilizados ya que no son ordinales. Los valores ordinales de los
límites inferiores y superiores deben estar dentro del rango -32768 a 32767. Por
consiguiente, los tipos string, longint y word no son válidos.
5. Todas las constantes case deben ser únicas y de un tipo ordinal compatible con el tipo
del selector.
6. Cada sentencia, excepto la última, deben ir seguidas de punto y coma.
PROGRAM areas;
VAR
‘Variables de Entrada
L,B,N:real;
opcion:integer;
‘Variables de Salida
area:real;
BEGIN
Clrscr;
‘Entrada de Datos
Writeln ('1.- Area Triangulo');
Writeln ('2.- Area Rectángulo');
Writeln ('3.- Area Cuadrado');
Writeln ('4.- Salir');
Write ('Ingrese opción: ');
Readln (opcion);
‘Proceso y Salida de Datos
CASE opcion OF
1: Begin
Write ('Ingrese base: ');
Readln (B);
Write ('Ingrese altura: ');
Readln (N);
area:=(B*N)/2;
Writeln ('El Area es= ',area:8:4);
End;
2: Begin
Write ('Ingrese la base: ');
Readln (B);
Write ('Ingrese la altura: ');
Readln (N);
area:=B*N;
Writeln ('El Area es= ',area:8:4);
End;
3: Begin
Write ('Ingrese lado: ');
Readln (L);
area:=Sqr(L);
Writeln ('El Area es= ',area:8:4);
End;
4: Writeln ('Hasta luego');
Else
Writeln ('Opcion Invalida');
End;
Readkey;
END.
Desarrollar un programa que permita determinar cuál tipo de dato es la tecla pulsada.
PROGRAM Caso;
VAR
‘Variables de Entrada
letra:char;
BEGIN
Clrscr;
‘Entrada de Datos
Write ('Escriba un símbolo: ');
Readln (letra);
‘Proceso y Salida de Datos
CASE letra OF
' ': Writeln ('Un espacio');
'A'..'Z', 'a'..'z': Writeln ('Una letra');
'0'..'9': Writeln ('Un dígito');
'+', '-', '*', '/': Writeln('Un operador');
ELSE
Writeln ('No es espacio, ni letra, ni dígito, ni operador');
End;
Readkey;
END.
Una estructura de control puede ejecutarse dentro de otra, en este caso se dice que son
estructuras anidadas, por ejemplo:
Determine el mayor de tres números.
PROGRAM NumMayor;
USES
crt;
VAR
‘Variables de Entrada
n1,n2,n3: integer ;
‘Variables de Salida
mayor : integer ;
BEGIN
Clrscr;
‘Entrada de Datos
WRITELN('Escribe tres números enteros : ');
READLN(n1,n2,n3);
‘Proceso
IF (n1>n2) THEN
IF (n1>n3) THEN
mayor:=n1
ELSE
mayor:=n3
ELSE
IF (n2>n3) then
mayor:=n2
ELSE
mayor:=n3;
‘Salida de Datos
WRITELN('El mayor es ',mayor);
Readkey;
END.
EJERCICIOS PRÁCTICOS DE ESTRUCTURAS CONDICIONALES.
Todo valor par se determina mediante el cálculo del residuo de la división por dos. Sí el
residuo de la división es igual a cero significa que el valor evaluado es par, de lo contrario
es impar. Debe tomarse en cuenta también que el valor cero no es par ni impar y que por lo
tanto se debe excluir de la verificación.
PROGRAM EJER3;
VAR
‘Variables de Entrada
num:integer;
BEGIN
clrscr;
‘Entrada de Datos
WRITE ('Introduzca un número entero: ');
READLN (num);
‘Proceso y Salida de Datos
IF (num<>0) THEN
IF (num mod 2 = 0) AND THEN
WRITELN ('El numero introducido es par')
ELSE
WRITELN ('El numero introducido es impar')
ELSE
WRITELN ('El numero introducido es cero, no es par ni es impar');
Readkey;
END.
2. Dado un valor entero x de dos dígitos, indique si sus dígitos son iguales.
La cifra x se debe descomponer en unidad y decena, una de las formas de realizar esta
descomposición es dividiendo el valor x por 10, al hacerlo el valor de la unidad se obtiene
en el residuo y la decena se obtiene en la división entera; por último se realiza la
comparación entre los dos valores unidad y decena para mostrar el mensaje respectivo.
PROGRAM valor;
USES
Crt;
VAR
‘Variables de Entrada
x:integer;
‘Variables de Salida
u,d:integer;
BEGIN
Clrscr;
‘Entrada de Datos
Write('Introduzca el valor de x:');
READLN(x);
‘Proceso
u:=x mod 10;
d:=x div 10;
‘Salida de Datos
IF (u=d) THEN
Writeln('Los digitos son iguales')
ELSE
Writeln('Los digitos son distintos');
Readkey;
END.
3. Escriba un programa que dados tres números enteros, calcule el mayor y el menor de
ellos.
En primer lugar se compara el valor “x” con respecto a “y” y se asigna el valor mayor a la
variable “mayor” y por supuesto el menor valor entre ellos se asigna a la variable “menor”,
por último se realiza la comparación con el valor de “z”, y se muestran las variable
“mayor” y “menor”.
PROGRAM EJER3;
USES
Crt;
VAR
‘Variables de Entrada
x, y, z:integer;
‘Variables de Salida
mayor, menor:integer
BEGIN
Clrscr;
‘Entrada de Datos
Write('Intru
ruduzca tres numeros en
nteros: ');
Read(x,y,z)
z);
‘Proceso de Datos
IF (x>=y ) THEN
Begin
may
ayor = x;
meenor = y;
End
ELSE
Begin
may
ayor = y;
meenor = x;
End;
IF (z >= mayor
m ) THEN
EN
may
ayor = z
IF (z < menor)
me THENN
meenor = z;
‘Salida de Datos
D
Writeln ('M
Mayor = ', mayor,
ma 'Menor
or = ', menor)
r);
Readkey;
END.
4. Da
ado un par coordenado
c x,
x y; determiinar si dichoo punto se enncuentra enttre el eje x y la
curva seno(x).
PROGRAM Calificacion;
USES
crt;
VAR
nota : integer;
‘Variables de Salida
nota_letra: char;
BEGIN
Clrscr;
‘Entrada de Datos
Writeln('Ingrese la Nota: ');
Readln(nota);
‘Proceso de Datos
case nota of
0..5 :nota_letra:='D';
6..10 :nota_letra:='C';
11..15:nota_letra:='B';
16..20:nota_letra:='A'
else
writeln('DATOS INCORRECTOS');
end;
‘Salida de Datos
Writeln('La Calificación con letra es: ',nota_letra);
Readkey;
END.
EJERCICIOS PROPUESTOS DE ESTRUCTURAS CONDICIONALES.
1.- Hallar las raíces de una ecuación de segundo grado (ax2 + bx + c) = 0, donde:
— a, b y c son datos de entrada.
— Se debe mostrar las raíces.
2.- Hallar las raíces de una ecuación de tercer grado (ax3 + bx2 + cx + d) = 0.
Calcular el monto a pagar en un estacionamiento, si se tiene como datos de entrada la
cantidad de horas y la cantidad de minutos, tenga en cuenta lo siguiente:
— La tarifa es de 750 Bs cada hora.
— Por cada ¼ de hora el costo es de 250 Bs.
3.- Obtener el mayor valor de 3 números dados y mostrarlo.
4.- Dada la fecha de nacimiento (DN,MN,AN) y la fecha actual (DA,MA,AA), calcular
cuántos años tiene la persona.
5.- Desarrolle un programa que determine si un año es bisiesto. Un año es bisiesto si es
múltiplo de 4 (1996), excepto los múltiplos de 100 que no son bisiestos salvo que a su vez
también sean múltiplos de 400 (1800 no es bisiesto, 2000 sí)
6.- Dado un número. Determinar si es positivo o negativo.
7.- Determinar si un triángulo es Isósceles, Escaleno o Equilátero.
8.- Realizar la suma de dos números y determinar si el resultado es positivo, negativo o
cero.
9.- Dado un número entero, determinar si es par o impar.
10.- Calcular el bono compensatorio de un empleado si se toma en cuenta su antigüedad; si
ésta es mayor de 10 años, se le dará un bono del 10% sobre su sueldo; si es menor o igual,
un bono del 5%. Se debe leer nombre, sueldo y antigüedad.
11.- Dada una cantidad; si es menor de 500, sumarle el 50%. Si es mayor o igual, restarle el
25%. Imprimir dichos resultados.
12.- Determine el monto a pagar por una llamada telefónica, teniendo en cuenta lo
siguiente:
— Toda llamada que dure hasta 3 minutos tiene un costo de Bs. 600.
— Por cada minuto adicional a los 3 minutos básicos se cobra Bs. 400.
13.- Muestre la población de dos países (País A y País B), teniendo en cuenta lo siguiente:
— En el año cero (0) el País A tiene menor población que el País B.
— Las tazas de crecimiento de los países A y B son de 6% y 3% respectivamente.
— Se debe imprimir desde el año cero (0) hasta que la población del País A exceda
a la del País B.
14.- Ordenar 3 números en forma ascendente y descendente.
15.- Pida como datos de entrada el costo de 5 desayunos, 12 almuerzos y 10 cenas, para
calcular lo siguiente:
— El ingreso total por cada tipo de comida.
— El ingreso promedio.
— El total del ingreso.
16.- Dada la siguiente tabla:
Área de Capacidad nominal aproximada
enfriamiento (m2) de enfriamiento (BTU/h)
10 - 12 8000
12 - 14 9000
14 – 16 10000
16 – 20 12000
20 – 24 14000
24 – 30 18000
30 – 35 21000
35 – 50 30000
Realice el ajuste de la capacidad de enfriamiento de la unidad de aire acondicionado
indicada en la tabla anterior según las siguientes condiciones:
Reduzca la capacidad en un 10% para áreas con mucha sombra.
Aumente la capacidad en un 10% para áreas muy soleadas.
Añada 6000 BTU/h por cada persona adicional (cuando hay más de dos
personas).
Añada 4000 BTU/h si el área de enfriamiento es una cocina.
17.- Dados dos números, realizar la operación aritmética según los símbolos +, -, *, /.
18.- Dada una temperatura, imprimir el deporte que es apropiado a esa temperatura:
DEPORTE TEMPERATURA
Natación > 85
Tenis 70 < TEMP <= 85
Golf 32 < TEMP <= 70
Esquí 10 < TEMP <= 32
19.- Leer el Peso de una persona y escribir el mensaje que le corresponde según la siguiente
tabla:
Peso Mensaje
0-40 Flaco
41 - 60 Delgado
61 - 80 Rellenito
81 ó Más Gordo
20.- Leer la Edad de una persona y muestre el mensaje que le corresponde según la
siguiente tabla:
Edad Mensaje
0–1 Bebé
2 – 11 Infantil
12 -18 Adolescente
19 – 30 Joven
3l ó Más Adulto
21.- Leer el Nombre, Sueldo Diario, y Días Trabajados de un empleado. Posteriormente
deberá calcular y mostrar el Sueldo Básico y el Sueldo Neto conociendo que el porcentaje
de deducción y asignación aplicado a la empresa será según la siguiente tabla:
Sueldo Básico (Bs.) Deducción Asignación
Menos de 150.000 2% 5%
Entre 150.001 y 350.000 2,5% 8%
Más de 350.000 3% 10%
Si el empleado tiene una asistencia perfecta, es decir, no falta ningún día del mes la
empresa le otorga un premio de Bs. 25.000.
22.- Un negocio de comida rápida posee una variedad de menús ejecutivos, y requiere de
un programa en pascal que les permita calcular el monto a pagar de cada cliente. Las
políticas de pago del local son las siguientes:
Platos ofrecidos:
o Pabellón Criollo y jugo Bs. 7500
o Asado negro y jugo Bs. 6500
o Arroz chino y pollo agridulce Bs. 7000
o Hamburguesa explosiva Bs. 6000
Si la persona pide pabellón criollo, debe preguntársele si desea quitar las caraotas, si
es así se le hará un descuento de Bs. 1500.
Si la persona pide asado negro deberá preguntársele si desea cambiar el puré por
papas fritas, de ser así deberá descontársele Bs. 1000.
Si la persona desea una bebida extragrande deberá incrementarse el monto a pagar
en Bs. 1000.
23.- Una Tienda para realizar una venta a un cliente en específico debe pedir como dato de
entrada la cantidad de artículos comprados y su precio unitario de esta manera se consigue
cual es el monto de la compra, posteriormente se le aplica un descuento según las siguientes
políticas:
— Para ventas de más de 500 Unidades y Monto menor o igual a Bs. 50.000 tendrá
un descuento del 5% sobre el precio.
— Para ventas de más de 500 Unidades y Monto mayor que Bs. 50.000 y menor ó
igual que Bs. 100.000 un descuento del 8%.
— Para ventas de más de 500 Unidades y Monto mayor de Bs. 100.000 un
descuento del 12%.
— Si la Venta no satisface ninguno de estos requerimientos entonces el descuento
será de sólo el 2% del Monto.
Mostrar el Monto Total a Pagar por el Cliente una vez aplicado el descuento
correspondiente.
24.- Floristería La Flor de San Diego C.A., es una empresa que se encarga de vender flores
al mayor. Para definir el precio de un ramo de flores, se deben tomar en cuenta las
siguientes condiciones:
— El precio básico de cada ramo viene dado según el tipo del mismo: Si es de
Rosas el precio será de 20.000 Bs., sí es de Claveles el precio será de 15.000
Bs., si es de Orquídeas el precio será de 30.000 Bs., Si es de Crisantemos el
precio será de 22.000 Bs., cualquier otro tipo de ramo el precio será de 10.000
Bs.
— Si las flores del ramo son Importadas entonces el precio se incrementará en
otros 10.000 Bs., en cambio sí son Nacionales tendrán un descuento especial de
5.000 Bs.
— Si el ramo es de Rosas y además de colores Rojas o Blancas el precio se
incrementará en un 5% adicional a lo acumulado.
— Si la cantidad de ramos de flores compradas es mayor a 12 entonces tendrá un
descuento especial de 1.000 Bs. por Ramo de flores sobre las 12 Unidades.
Calcular y mostrar por pantalla el monto a pagar por un cliente tomando en cuenta que sólo
se venden a un cliente un mismo tipo de ramo de flores.
25.- Dado un par coordenado x, y; determinar si dicho punto se encuentra entre el eje x y la
curva seno(x).
26.- Dado un par coordenado x, y; determinar si dicho punto se encuentra en el área por
encima o por debajo de la función y= x .