75.
01 Computación
Estructuras de
Control
Lic. María del Carmen Muotri - Ing. María Delia Grossi
Codificando las Estructuras de Control
Selección Simple: If – then - else
If expresión lógica Expresión o combinación de
then expresiones que puede ser
begin verdadera o falsa
sentencia1; Se colocan si dentro
…
sentencia n del then hay más de
una sentencia
end
else Puede no ir
begin Se colocan si dentro
sentencia1e;
… del else hay más de
sentencia ne una sentencia
End;
1
Codificando las Estructuras de Control
Selección Simple: If – then - else
If expresión lógica Verdadera
then
begin
sentencia1; Se ejecutan
…
sentencia n sentencia1…sentencia n
end
else
begin
sentencia1e;
No se accede
…
sentencia ne
End;
Codificando las Estructuras de Control
Selección Simple: If – then - else
If expresión lógica Falsa
then
begin
sentencia1; No se accede
…
sentencia n
end
else
begin
sentencia1e; Se ejecutan
… sentencia1e…sentencia ne
sentencia ne
End;
2
Ingresar un valor por teclado e informar si ese
valor es positivo o negativo
program Chequeo_Signo;
var
Numero : real;
begin
Writeln(‘Ingrese un numero: ');
Readln(Numero);
if Numero >= 0.0
then
writeln('El numero es positivo')
else
writeln('El numero es negativo');
ReadLn
end.
Ingresar un número por teclado e informar
si dicho número es par o impar
program EJEM;
Uses
Crt;
Var
num: integer;
begin
ClrScr;
Write('Introduzca un numero: ');
ReadLn(num);
If (num mod 2 = 0)
then
WriteLn('NUMERO PAR')
else
WriteLn('NUMERO IMPAR');
ReadLn
end.
3
Operaciones Aritméticas en Pascal
Operador Significado Ejemplo Resultado
+ Suma A+B Suma de A y B
- Resta A–B Resta de A y B
* Multiplicación A*B Producto de A por B
/ División A/B Cociente de A por B
Div División Entera A div b Cociente entero de
a por b
Mod Resto A mod b Resto de dividir a
por b
B B
A 13 4 A 13 4
C:= A div B
D
1 3 D:= A mod B 0 3.25 C
A mod B A div B
C:= A / B A/B
Leer tres valores e informar cual es el mayor de los tres
Program Mayor;
Uses
Crt;
Var
A,B,C, Elmanyor : Integer;
Begin
ClrScr;
Writeln (`Digite tres números enteros `);
Readln (A,B,C);
If A > B
then
If A > C
then
Elmayor := A
else
Elmayor := C
else
If B > C
then
Elmayor := B
else
Elmayor := C;
Writeln (`El número mayor es: `,Elmayor);
ReadLn
End.
4
Leer dos números desde el teclado y si el primero
es mayor que el segundo intercambiar sus valores
Program Intercambio;
Uses
Crt;
Var
num1,num2:Integer;
Begin
ClrScr;
WriteLn ('Escriba dos numeros: ');
ReadLn (num1,num2);
WriteLn ;
If num1 > num2
then
begin
Write(num2,' ',num1,'El primer numero es mayor.');
WriteLn(' Se cambia el orden.')
end
else
begin
Write(num1,' ',num2,'El segundo numero es mayor.');
Write(' No se cambia el orden.');
end;
ReadLn
End.
Codificando las Estructuras de Control
Selección Compuesta: Case
Case variable of La variable debe ser integer,
lista constantes1: char, boolean o enumerado
begin
sentencia1; Se colocan si dentro de la
…
sentencia 1n opción (en este caso, la
end; primera) hay más de una
lista constantes2:
begin
sentencia
sentencia2;
…
sentencia 2n
end; Puede no ir
lista constantes n:
sentencia n End del Case (no
else
sentencia1e; tiene un begin en
End; correspondencia)
5
Codificando las Estructuras de Control
Selección Compuesta: Case
Case variable of La variable se encuentra dentro
lista constantes1:
begin de esta lista
sentencia1;
…
sentencia 1n
Se ejecutan estas
end; sentencias
lista constantes2:
begin
sentencia2;
…
sentencia 1n No se accede
end;
lista constantes n:
sentencia n
else
sentencia1e;
End;
Programa con CASE
program lengua;
uses crt;
var
num: integer;
begin
clrscr;
writeln('Seleccione un idioma');
writeln('1.- Español');
writeln('2.- English');
writeln('3.- Français');
writeln('4.- Deutsch');
writeln('5.- Italiano');
readln(num);
case num of
1: writeln ('Hola');
2: writeln ('Hello');
3: writeln('Salut');
4: writeln('Hallo');
5: writeln('Ciao');
else (* Si no contiene ninguno de los valores anteriores*)
writeln('Error')
end;
readkey; (*esperamos a que se pulse una tecla*)
end.
6
En la siguiente tabla se encuentran las categorías a
las que pertenecen los signos del zodíaco:
Signo del Zodíaco Categoría
Aries Fuego
Tauro Tierra
Géminis Aire
Cáncer Agua
Leo Fuego
Virgo Tierra
Libra Aire
Escorpio Agua
Sagitario Fuego
Capricornio Tierra
Acuario Aire
Piscis Agua
program zodíaco;
uses Crt;
var Numero : Integer;
begin
ClrScr;
Writeln( 'Listado de signos del zodiaco:' );
Writeln( '1. Aries' );
Writeln( '2. Tauro' );
Writeln( '3. Geminis' );
Writeln( '4. Cancer' );
Writeln( '5. Leo' );
Writeln( '6. Virgo' );
Writeln( '7. Libra' );
Writeln( '8. Escorpio' );
Writeln( '9. Sagitario' );
Writeln( '10. Capricornio' );
Writeln( '11. Acuario' );
Writeln( '12. Piscis' );
Writeln( 'Introduzca numero de signo: ' );
ReadLn( Numero );
case Numero of
1, 5, 9 : Write( 'Es un signo de Fuego.' );
2, 6, 10 : Write( 'Es un signo de Tierra.' );
3, 7, 11 : Write( 'Es un signo de Aire.' );
4, 8, 12 : Write( 'Es un signo de Agua.' )
else
Write( 'ERROR: ', Numero,' no esta asociado a ningun signo.' )
end;
ReadLn
end.
7
Codificando las Estructuras de Control
Repetición: Repeat - Until Repetición: While - do
Repeat While expresión lógica do
sentencia1; begin
…
sentencia n sentencia1;
…
Until expresión lógica; sentencia n
end;
Begin y End se colocan si hay
más de una sentencia
Escribir un programa en Pascal que realice un
bucle con While y muestre en pantalla del 1 al 10
Program bucle;
Uses
Crt;
Var
x: integer;
Begin
ClrScr;
x:=0;
while x <= 10 do
begin
WriteLn(x);
x:=x+1;
end;
ReadLn
End.
8
Escribir un programa en Pascal que realice un bucle
con Repeat y muestre en pantalla los números del 1
al 10.
Program bucle_Repeat;
Uses
Crt;
Var
x:integer;
Begin
ClrScr;
x:=0;
Repeat
WriteLn (x);
x:=x+1;
Until x=10;
ReadLn
End.
Ejercicios
1. Se ingresan los números del 1 al 100, sumarlos e imprimir el
resultado.
2. Imprimir un listado con los números del 1 al 1000 cada uno con su
respectivo cuadrado. Cada pareja de valores debe imprimirse en
una misma línea, colocar un título al comienzo.
3. Realizar la tabla de multiplicar para cualquier número que se
ingresa desde el teclado.
4. Calcular el factorial de un número entero llamado N que es
ingresado desde teclado. Tener en cuenta que F=F * N y que N
es distinto de cero.
5. Escribir un programa que calcule la suma y el promedio de los 50
primeros números enteos.
9
Tabla
Program tabla;
Uses
Crt;
Var
tabla, x, num: Integer;
Begin
ClrScr;
Write (‘Escriba un numero para realizar su tabla de multiplicar: ');
ReadLn (num);
WriteLn;
Repeat
x:= x + 1;
tabla:= num * x;
Until x=11;
ReadLn
End.
Factorial
Program factorial;
Uses
Crt;
Var
temp,num,fac:Longint;
Begin
ClrScr;
fac:=1;
temp:=num;
Write(‘Escriba el numero al cual calcularemos el factorial: ');
ReadLn(num);
temp:=num;
While num>=1 do
Begin
fac:=fac*num;
num:=num-1;
end;
Write('El factorial de ‘,temp,' es ‘,fac); ReadLn;
End.
10
Ejemplo 1
Desarrollar un Programa en Lenguaje Pascal que permita
calcular y mostrar por pantalla el sueldo semanal de un
dibujante de un estudio de Ingeniería.
Se deberá ingresar por teclado: el nombre y apellido del
dibujante, la cantidad de horas trabajadas (de tipo entero) y
el precio por hora trabajada (de tipo real).
Se considera que el usuario del programa no comete error de
tipeo en el ingreso de los datos.
VERSIÓN1
Ejemplo 1
{SECCIÓN DECLARATIVA}
program Sueldo1;
{Versión 1}
uses
Crt;
var
nombre, apellido: string[20];
horasTrab: integer;
precioHora: real;
sueldo: real;
begin
{SECCIÓN ALGORÍTMICA}
{Prólogo}
writeLn( ‘CÁLCULO DEL SUELDO SEMANAL DE UN DIBUJANTE’ );
writeLn; Tipos de datos
write( ‘Ingrese el nombre del dibujante: ’ );
String. 2
readLn( nombre );
sentencias de
write( ‘Ingrese el apellido del dibujante: ’ );
lectura
readLn( apellido );
11
Ejemplo 1
write( ‘Ingrese las HORAS trabajadas: ’ ); Enunciados de
readLn(horasTrab ); Lectura
write( ‘Ingrese el PRECIO horario: ’ ); precedidos por
readLn(precioHora); enunciados de
{Resolución} Escritura
{Cálculor el sueldo}
sueldo:= horasTrab * precioHora;
{Epílogo}
{Exhibición del Resultado en pantalla}
write( ‘El Sueldo Semanal de ', nombre,' ', apellido);
writeLn( ' es de: ',sueldo:12:2, ' pesos');
{Generación de Pausa}
readLn;
end.
Flujo de Control del
Programa:
Ejemplo 2
Desarrollar un Programa en Lenguaje Pascal que permita
calcular y mostrar por pantalla el sueldo semanal de un
dibujante de un estudio de Ingeniería.
Se deberá ingresar por teclado: el nombre y apellido del
dibujante y la cantidad de horas trabajadas (de tipo entero).
El precio que se paga por hora trabajada es de 10.5 pesos.
Se considera que el usuario del programa no comete error de
tipeo en el ingreso de los datos.
VERSIÓN2: ahora precioHora es una constante.}
12
Ejemplo 2
{SECCIÓN DECLARATIVA}
program Sueldo2;
{Versión 2}
uses
Crt;
Modificación con
Const respecto a la
precioHora=10.5; Versión 1
var
nombre, apellido: string[20];
horasTrab: integer;
sueldo: real;
begin
{SECCIÓN ALGORÍTMICA}
{Prólogo}
…
{Desarrollo}
…
{Epílogo}
end.
Ejemplo 3
Desarrollar un Programa en Lenguaje Pascal que permita
calcular y mostrar por pantalla el sueldo semanal de un
dibujante de un estudio de Ingeniería.
Se deberá ingresar por teclado: el nombre y apellido del
dibujante y la cantidad de horas trabajadas (de tipo entero).
El precio que se paga por hora trabajada es de 10.5 pesos.
En el caso en el que la cantidad de horas trabajadas sea
superior a 40, el excedente se considera como "horas
extras" y el precio de cada hora extra es de 21 pesos.
Se considera que el usuario del programa no comete error de
tipeo en el ingreso de los datos.
VERSIÓN3: En esta versión se analiza si se trabajaron horas
extras. Se utiliza la Estructura Selectiva Simple if-then-else
13
Ejemplo 3
{SECCIÓN DECLARATIVA}
program Sueldo3;
{Versión 3}
uses
Crt;
Const
precioHora=10.5;
precioHExtra= 21;
var
nombre, apellido: string[20];
precioHora: real;
sueldo: real;
begin
{SECCIÓN ALGORÍTMICA}
{Prólogo}
writeLn( ‘CÁLCULO DEL SUELDO SEMANAL DE UN DIBUJANTE’ );
writeLn;
write( ‘Ingrese el nombre del dibujante: ’ );
readLn( nombre );
write( ‘Ingrese el apellido del dibujante: ’ );
readLn( apellido );
Ejemplo 3 (Cont.)
write( ‘Ingrese las HORAS trabajadas: ’ );
readLn(horasTrab );
{Resolución}
{Cálculo del sueldo evaluando la cantidad de horas trabajadas }
If horasTrab > 40 Como dentro del "then" hay más de 1
then acción, se coloca "begin"-"end"
begin
write(nombre, ' ',apellido);
writeLn(' trabajó ', (horasTrab - 40),' horas extra');
sueldo:= 40 * precioHora + (horasTrab-40)* precioHExtra
end
else
sueldo:= horasTrab * precioHora;
{Epílogo}
{Exhibición del Resultado en pantalla}
write( ‘El Sueldo Semanal de ', nombre,' ', apellido);
writeLn( ' es de: ',sueldo:12:2, ' pesos');
{Generación de Pausa}
readLn;
end.
14
Ejemplo 3 (Cont.)
Flujo de Control del
Programa:
Desarrollo
horasTrab > 40
Prólogo Epílogo
if
horasTrab <= 40
Ejemplo 4
Desarrollar un Programa en Lenguaje Pascal que permita calcular y
mostrar por pantalla el sueldo semanal de un dibujante de un estudio de
Ingeniería.
Se deberá ingresar por teclado: el nombre y apellido del dibujante y la
cantidad de horas trabajadas (de tipo entero).
El básico que se le paga por hora trabajada es de 10.5 pesos.
Las horas extras (más de 40 horas), se calculan de acuerdo a la
categoría del empleado:
Categoría 1, le corresponde un 50% adicional al básico/ hora,
Categoría 2. le corresponde un 100% adicional al básico/hora
Categoría 3, le corresponde un 150% adicional al básico/hora
Categoría 4, le corresponde un 200% adicional al básico/hora.
Se considera que el usuario del programa no comete error de tipeo
en el ingreso de los datos.
VERSIÓN 4. Ahora hay múltiples opciones. Se utilizan "IF
ANIDADOS". Cuando una o ambas bifurcaciones de la sentencia if-
then-else contienen también una sentencia if, se dice que dichas
sentencias if están anidadas y al proceso anidamiento.
15
Ejemplo 4
{SECCIÓN DECLARATIVA}
program Sueldo4;
{Versión 4}
uses
Crt;
Const
precioHora=10.5;
precioHExtra= 21;
var
nombre, apellido: string[20];
precioHora: real;
sueldo: real;
categoria: byte; {representa la categoría del empleado.
Observación: el tipo byte es un tipo entero
de rango admisible 0..255}
factor: real; {representa el factor por horas extras}
begin
Ejemplo 4
{SECCIÓN ALGORÍTMICA}
{Prólogo}
writeLn( ‘CÁLCULO DEL SUELDO SEMANAL DE UN DIBUJANTE’ );
writeLn;
write( ‘Ingrese el nombre del dibujante: ’ );
readLn( nombre );
write( ‘Ingrese el apellido del dibujante: ’ );
readLn( apellido );
write('Ingrese las HORAS trabajadas: ');
readLn(horasTrab);
{Resolución}
{Calcular el sueldo}
16
if HorasTrab > 40
then
begin
write('Ingrese la categoría del empleado ');
readLn(categoria);
if categoria = 1 then este "if-then-else" se encuentra
factor:= 1.5 dentro de "if horasTrab". Se dice
else que está "anidado"}
if categoria=2
then como se considera
factor:= 2 que el usuario no comete error
else de tipeo, la única opción es que
if categoria=3 ingrese el 4 }
then
factor:= 2.5
else
factor:= 3;
sueldo:= ((horasTrab-40)*factor*10.5 ) + precioHora*40;
end
else
sueldo:= precioHora * horasTrab;
Ejemplo 4 (Cont.)
{Epílogo}
{Exhibición del Resultado en pantalla}
write( ‘El Sueldo Semanal de ', nombre,' ', apellido);
writeLn( ' es de: ',sueldo:12:2, ' pesos');
{Generación de Pausa}
readLn;
end.
17
Ejemplo 5
Desarrollar un Programa en Lenguaje Pascal que permita calcular y
mostrar por pantalla el sueldo semanal de un dibujante de un estudio de
Ingeniería.
Se deberá ingresar por teclado: el nombre y apellido del dibujante y la
cantidad de horas trabajadas (de tipo entero).
El básico que se le paga por hora trabajada es de 10.5 pesos.
Las horas extras (más de 40 horas), se calculan de acuerdo a la
categoría del empleado:
Categoría 1, le corresponde un 50% adicional al básico/ hora,
Categoría 2. le corresponde un 100% adicional al básico/hora
Categoría 3, le corresponde un 150% adicional al básico/hora
Categoría 4, le corresponde un 200% adicional al básico/hora.
Se considera que el usuario del programa no comete error de tipeo
en el ingreso de los datos.
VERSIÓN 5. Ahora hay múltiples opciones y se utiliza la estructura CASE
{SECCIÓN DECLARATIVA}
program Sueldo5;
{Versión 5}
uses
Crt;
Const
precioHora=10.5;
precioHExtra= 21;
var
nombre, apellido: string[20];
precioHora: real;
sueldo: real;
categoria: byte;
factor: real;
begin
18
Ejemplo 5
{SECCIÓN ALGORÍTMICA}
{Prólogo}
writeLn( ‘CÁLCULO DEL SUELDO SEMANAL DE UN DIBUJANTE’ );
writeLn;
write( ‘Ingrese el nombre del dibujante: ’ );
readLn( nombre );
write( ‘Ingrese el apellido del dibujante: ’ );
readLn( apellido );
write('Ingrese las HORAS trabajadas: ');
readLn(horasTrab);
{Resolución}
{Calcular el sueldo}
Ejemplo 5
if HorasTrab > 40
then
begin
write('Ingrese la categoría del empleado ');
readLn(categoria); categoria DEBE ser
case categoria of una variable de tipo ordinal
1: (en base a los tipos vistos
factor:= 1.5; podría ser: entera, char o boolean).
2: NO REAL
factor:= 2;
3: Como hay 1 sola acción no se
factor:= 2.5; enmarca en begin - end
4:
factor:= 3; Fin del case. No tiene
end; correspondencia con un begin
{Cálculo del Sueldo}
sueldo:= (horasTrab-40)*factor*10.5 + precioHora*40
end
else
sueldo:= precioHora * horasTrab;
19
Ejemplo 5 (Cont.)
{Epílogo}
{Exhibición del Resultado en pantalla}
write( ‘El Sueldo Semanal de ', nombre,' ', apellido);
writeLn( ' es de: ',sueldo:12:2, ' pesos');
{Generación de Pausa}
readLn;
end.
Flujo de Control del 1
Case:
Case categoria of 2
Epílogo
Ejemplo 5 Una Variante
Desarrollar un Programa en Lenguaje Pascal que permita calcular y
mostrar por pantalla el sueldo semanal de un dibujante de un estudio de
Ingeniería.
Se deberá ingresar por teclado: el nombre y apellido del dibujante y la
cantidad de horas trabajadas (de tipo entero).
El básico que se le paga por hora trabajada es de 10.5 pesos.
Las horas extras (más de 40 horas), se calculan de acuerdo a la
categoría del empleado:
Categoría 1 a 3, le corresponde un 50% adicional al básico/
hora,
Categoría 4 a 6. le corresponde un 100% adicional al
básico/hora
Categoría 7 a 9, le corresponde un 150% adicional al
básico/hora
Categoría 10 a 12, le corresponde un 200% adicional al
básico/hora.
Se considera que el usuario del programa no comete error de tipeo
en el ingreso de los datos.
20
Ejemplo 5.1
if HorasTrab > 40
then
begin
write('Ingrese la categoría del empleado ');
readLn(categoria);
case categoria of
1..3: Los posibles valores de la
factor:= 1.5; variable pueden indicarse como:
4..6: Rango de valores
factor:= 2;
7..9:
factor:= 2.5;
10..12:
factor:= 3;
end;
{Cálculo del Sueldo}
sueldo:= (horasTrab-40)*factor*10.5 + precioHora*40
end
else
sueldo:= precioHora * horasTrab;
Ejemplo 5.2
if HorasTrab > 40
then
begin
write('Ingrese la categoría del empleado ');
readLn(categoria);
case categoria of
1,2,3: Los posibles valores de la
factor:= 1.5; variable pueden indicarse como:
4,5,6: Valores Enumerados
factor:= 2;
7,8,9:
factor:= 2.5;
10,11,12:
factor:= 3;
end;
{Cálculo del Sueldo}
sueldo:= (horasTrab-40)*factor*10.5 + precioHora*40
end
else
sueldo:= precioHora * horasTrab;
21
Ejemplo 6
Desarrollar un Programa en Lenguaje Pascal que permita calcular y mostrar
por pantalla el sueldo semanal de cada uno de los dibujantes de un estudio de
Ingeniería.
Se deberá ingresar por teclado: el nombre y apellido del dibujante y la
cantidad de horas trabajadas (de tipo entero).
Se deberá ingresar por teclado el nombre y apellido de los dibujante, la
cantidad de horas trabajadas (de tipo entero).
El precio que se paga por hora trabajada es de 10.5 pesos.
En el caso en el que la cantidad de horas trabajadas sea superior a 40, el
excedente se considera como "horas extras" y el precio de cada hora extra es
de 21 pesos.
Nota: El ingreso de datos finaliza cuando se responde con ‘n’ o ‘N’ a la
pregunta: 'Desea calcular el sueldo de otro dibujante?‘
Se considera que el usuario del programa no comete error de tipeo en el
ingreso de los datos.
VERSIÓN6: En esta versión se deben calcular los sueldos de "n" dibujantes .
Marca de Fin
Ejemplo 6 (Cont.)
{SECCIÓN DECLARATIVA}
program Sueldo6;
{Versión 6}
uses
Crt;
Const
precioHora=10.5;
precioHExtra= 21;
var
nombre, apellido: string[20];
precioHora: real;
sueldo: real;
resp: char; Representa la respuesta del
usuario
22
begin
{SECCIÓN ALGORÍTMICA}
{Prólogo}
writeLn( ‘CÁLCULO DEL SUELDO SEMANAL DE DIBUJANTES’ );
{Resolución y Epílogo}
Repeat
write('Ingrese el NOMBRE del dibujante: ');
readLn(nombre);
write('Ingrese el APELLIDO del dibujante: ');
readLn(apellido);
write('Ingrese las HORAS trabajadas: ');
readLn(horasTrab);
if horasTrab > 40 then
begin
write(nombre, ' ',apellido);
writeLn(' trabajó ', (horasTrab - 40),' horas extra');
sueldo:= 40 * precioHora + (horasTrab-40)* precioHExtra
end
else
sueldo:= horasTrab * precioHora;
write('El Sueldo Semanal es: ', sueldo:12:2, ' pesos');
write('Desea calcular el sueldo de otro dibujante?');
readLn(resp) Se evalúa condición al final.
Until (resp='N') OR (resp='n'); Cuando es TRUE, Fin
{Generación de Pausa}
readLn;
end.
Flujo de Control del
Repeat:
Desarrollo y
Epílogo Condición =
Prólogo TRUE
repeat Until (resp= ‘N’) or
(resp = ‘n’)
23
Ejemplo 7
Desarrollar un Programa en Lenguaje Pascal que permita calcular y mostrar
por pantalla el sueldo semanal de los dibujantes de un estudio de Ingeniería.
Se deberá informar también la cantidad de dibujantes ingresados.
Se deberá ingresar por teclado: el nombre y apellido del dibujante y la
cantidad de horas trabajadas (de tipo entero).
Se deberá ingresar por teclado el nombre y apellido de los dibujante, la
cantidad de horas trabajadas (de tipo entero).
El precio que se paga por hora trabajada es de 10.5 pesos.
En el caso en el que la cantidad de horas trabajadas sea superior a 40, el
excedente se considera como "horas extras" y el precio de cada hora extra es
de 21 pesos.
Para finalizar el ingreso de datos se deberá ingresar 0 como Horas
Trabajadas.
Se considera que el usuario del programa no comete error de tipeo en el
ingreso de los datos.
VERSIÓN7: En esta versión se pueden calcular los sueldos de "n" dibujantes.
y se utiliza otra estructura de control REPETITIVA: while do.
También se cuenta la cantidad de dibujantes ingresados.} Marca de Fin
Ejemplo 7 (Cont.)
{SECCIÓN DECLARATIVA}
program Sueldo7;
{Versión 7}
uses
Crt;
Const
precioHora=10.5;
precioHExtra= 21;
var
nombre, apellido: string[20];
precioHora: real;
sueldo: real;
Permite contar la cantidad de
contador: integer; dibujantes
24
begin
{SECCIÓN ALGORÍTMICA}
{Prólogo} Se realiza primer lectura
writeLn( ‘CÁLCULO DEL SUELDO SEMANAL DE DIBUJANTES’ );
contador:=0;
write('Ingrese las horas trabajadas del dibujante (con 0 fin): ');
readln(horasTrab);
{Resolución y Epílogo} Se evalúa condición al inicio. Cuando
while (horasTrab <> 0) do es TRUE, se ejecuta los siguientes
begin enunciados
contador:= contador + 1;
write('Ingrese el NOMBRE del dibujante: '); Se incrementa contador
readLn(nombre);
write('Ingrese el APELLIDO del dibujante: ');
readLn(apellido);
write('Ingrese las HORAS trabajadas: ');
readLn(horasTrab);
if horasTrab > 40 then
begin
writeLn(nombre,’' trabajó ', (horasTrab - 40),' horas extra');
sueldo:= 40 * precioHora + (horasTrab-40)* precioHExtra
end
else
sueldo:= horasTrab * precioHora;
write('El Sueldo Semanal es: ', sueldo:12:2, ' pesos');
write('Ingrese HORAS trabajadas otro dibujante (c/ 0 fin): ');
readLn(horasTrab)
end; Se analiza si el ciclo continúa
begin
{Exhibición por pantalla de la cantidad de dibujantes procesados}
writeLn;
writeLn('La cantidad de dibujantes ingresados es: ', contador);
{Generación de Pausa}
readLn;
end.
Flujo de Control del
Repeat:
Desarrollo y
Epílogo Condición =
Prólogo FALSE
While horasTrab <> 0
do
25