pascal estructuras de control

25
1 75.01 Computación Estructuras de Control Lic. María del Carmen Muotri - Ing. María Delia Grossi Codificando las Estructuras de Control If expresión lógica then begin sentencia1; sentencia n end else begin sentencia1e; sentencia ne End; Selección Simple: If – then - else Se colocan si dentro del then hay más de una sentencia Puede no ir Se colocan si dentro del else hay más de una sentencia Expresión o combinación de expresiones que puede ser verdadera o falsa

Upload: mromer11

Post on 23-Jun-2015

919 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Pascal Estructuras de Control

1

75.01 Computación

Estructuras de Control

Lic. María del Carmen Muotri - Ing. María Delia Grossi

Codificando las Estructuras de Control

If expresión lógica

then

beginsentencia1;…

sentencia n

end

else

beginsentencia1e;…

sentencia ne

End;

Selección Simple: If – then - else

Se colocan si dentro del then hay más de una sentencia

Puede no ir

Se colocan si dentro del else hay más de una sentencia

Expresión o combinación de expresiones que puede ser verdadera o falsa

Page 2: Pascal Estructuras de Control

2

Codificando las Estructuras de Control

If expresión lógica

then

beginsentencia1;…

sentencia n

end

else

beginsentencia1e;…

sentencia ne

End;

Selección Simple: If – then - else

Se ejecutan sentencia1…sentencia n

Verdadera

No se accede

Codificando las Estructuras de Control

If expresión lógica

then

beginsentencia1;…

sentencia n

end

else

beginsentencia1e;…

sentencia ne

End;

Selección Simple: If – then - else

No se accede

Falsa

Se ejecutan sentencia1e…sentencia ne

Page 3: Pascal Estructuras de Control

3

Ingresar un valor por teclado e informar si ese

valor es positivo o negativoprogram Chequeo_Signo; var

Numero : real; begin

Writeln(‘Ingrese un numero: '); Readln(Numero); if Numero >= 0.0 thenwriteln('El numero es positivo')

elsewriteln('El numero es negativo');

ReadLnend.

Ingresar un número por teclado e informar

si dicho número es par o imparprogram 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.

Page 4: Pascal Estructuras de Control

4

Operaciones Aritméticas en Pascal

Resto de dividir a por b

A mod bRestoMod

Cociente entero de a por b

A div bDivisión EnteraDiv

Cociente de A por BA / BDivisión/

Producto de A por BA * BMultiplicación*

Resta de A y BA – BResta-

Suma de A y BA + BSuma+

ResultadoEjemploSignificadoOperador

13 4

1 3

AB

A div BA mod B

C:= A div B

D:= A mod BD

13 4

0 3.25

AB

A / B

C

C:= A / B

Leer tres valores e informar cual es el mayor de los tresProgram Mayor;Uses

Crt;Var

A,B,C, Elmanyor : Integer;Begin

ClrScr;Writeln (`Digite tres números enteros `);Readln (A,B,C);If A > B thenIf A > C thenElmayor := A

elseElmayor := C

elseIf B > C then

Elmayor := Belse

Elmayor := C; Writeln (`El número mayor es: `,Elmayor);ReadLn

End.

Page 5: Pascal Estructuras de Control

5

Leer dos números desde el teclado y si el primero es mayor que el segundo intercambiar sus valoresProgram Intercambio; Uses

Crt;Var

num1,num2:Integer; Begin

ClrScr; WriteLn ('Escriba dos numeros: '); ReadLn (num1,num2); WriteLn ;If num1 > num2thenbegin

Write(num2,' ',num1,'El primer numero es mayor.');WriteLn(' Se cambia el orden.')

endelsebegin

Write(num1,' ',num2,'El segundo numero es mayor.'); Write(' No se cambia el orden.');

end;ReadLn

End.

Codificando las Estructuras de Control

Case variable of

lista constantes1:begin

sentencia1;…

sentencia 1n

end;

lista constantes2:

begin

sentencia2;…

sentencia 2nend;lista constantes n:

sentencia n

else

sentencia1e;End;

Selección Compuesta: Case

Se colocan si dentro de la opción (en este caso, la primera) hay más de una sentencia

Puede no ir

End del Case (no tiene un begin en correspondencia)

La variable debe ser integer, char, boolean o enumerado

Page 6: Pascal Estructuras de Control

6

Codificando las Estructuras de Control

Case variable oflista constantes1:begin

sentencia1;…

sentencia 1n

end;

lista constantes2:

begin

sentencia2;…

sentencia 1nend;lista constantes n:

sentencia n

else

sentencia1e;End;

Selección Compuesta: Case

Se ejecutan estas sentencias

No se accede

La variable se encuentra dentro de esta lista

Programa con CASEprogram 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.

Page 7: Pascal Estructuras de Control

7

En la siguiente tabla se encuentran las categorías a las que pertenecen los signos del zodíaco:

TierraTauro

AguaPiscis

AireAcuario

TierraCapricornio

FuegoSagitario

AguaEscorpio

AireLibra

TierraVirgo

FuegoLeo

AguaCáncer

AireGéminis

FuegoAries

CategoríaSigno del Zodíaco

program zodíaco;uses Crt;var Numero : Integer;beginClrScr;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.' )

elseWrite( 'ERROR: ', Numero,' no esta asociado a ningun signo.' )

end;ReadLn

end.

Page 8: Pascal Estructuras de Control

8

Codificando las Estructuras de Control

Repeat

sentencia1;…

sentencia n

Until expresión lógica;

Repetición: Repeat - Until Repetición: While - do

While expresión lógica do

begin

sentencia1;…

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 dobegin

WriteLn(x); x:=x+1;

end;ReadLn

End.

Page 9: Pascal Estructuras de Control

9

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 enuna 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 50primeros números enteos.

Page 10: Pascal Estructuras de Control

10

TablaProgram 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.

FactorialProgram 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 doBegin

fac:=fac*num;num:=num-1;

end;Write('El factorial de ‘,temp,' es ‘,fac); ReadLn;

End.

Page 11: Pascal Estructuras de Control

11

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) yel 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

{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; write( ‘Ingrese el nombre del dibujante: ’ );readLn( nombre );write( ‘Ingrese el apellido del dibujante: ’ );readLn( apellido );

Ejemplo 1

Tipos de datos String. 2 sentencias de lectura

Page 12: Pascal Estructuras de Control

12

write( ‘Ingrese las HORAS trabajadas: ’ );readLn(horasTrab );write( ‘Ingrese el PRECIO horario: ’ );readLn(precioHora);

{Resolución}{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.

Ejemplo 1Enunciados de Lecturaprecedidos por enunciados de Escritura

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.}

Page 13: Pascal Estructuras de Control

13

{SECCIÓN DECLARATIVA}program Sueldo2;{Versión 2}uses

Crt;

ConstprecioHora=10.5;

varnombre, apellido: string[20];horasTrab: integer;sueldo: real;

begin{SECCIÓN ALGORÍTMICA}

{Prólogo}…

{Desarrollo}…

{Epílogo}end.

Ejemplo 2

Modificación con respecto a la Versión 1

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

Page 14: Pascal Estructuras de Control

14

{SECCIÓN DECLARATIVA}program Sueldo3;{Versión 3}uses

Crt;Const

precioHora=10.5;precioHExtra= 21;

varnombre, 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

write( ‘Ingrese las HORAS trabajadas: ’ );readLn(horasTrab );

{Resolución}{Cálculo del sueldo evaluando la cantidad de horas trabajadas }

If horasTrab > 40thenbegin

write(nombre, ' ',apellido);writeLn(' trabajó ', (horasTrab - 40),' horas extra');sueldo:= 40 * precioHora + (horasTrab-40)* precioHExtra

endelse

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.

Como dentro del "then" hay más de 1 acción, se coloca "begin"-"end"

Ejemplo 3 (Cont.)

Page 15: Pascal Estructuras de Control

15

Flujo de Control del Programa:

horasTrab > 40

horasTrab <= 40

Prólogo Epílogo

Desarrollo

Ejemplo 3 (Cont.)

if

Ejemplo 4Desarrollar 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.

Page 16: Pascal Estructuras de Control

16

{SECCIÓN DECLARATIVA}program Sueldo4;{Versión 4}uses

Crt;Const

precioHora=10.5;precioHExtra= 21;

varnombre, 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

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}

Page 17: Pascal Estructuras de Control

17

if HorasTrab > 40thenbeginwrite('Ingrese la categoría del empleado ');readLn(categoria);if categoria = 1 then

factor:= 1.5else

if categoria=2thenfactor:= 2

elseif categoria=3then

factor:= 2.5else

factor:= 3; sueldo:= ((horasTrab-40)*factor*10.5 ) + precioHora*40;

endelse

sueldo:= precioHora * horasTrab;

este "if-then-else" se encuentra dentro de "if horasTrab". Se dice que está "anidado"}

como se considera que el usuario no comete error de tipeo, la única opción es queingrese el 4 }

{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.

Ejemplo 4 (Cont.)

Page 18: Pascal Estructuras de Control

18

Ejemplo 5Desarrollar 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;

varnombre, apellido: string[20];precioHora: real;sueldo: real;categoria: byte;factor: real;

begin

Page 19: Pascal Estructuras de Control

19

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}

if HorasTrab > 40thenbeginwrite('Ingrese la categoría del empleado ');readLn(categoria);case categoria of1:factor:= 1.5;

2:factor:= 2;

3:factor:= 2.5;

4:factor:= 3;

end;{Cálculo del Sueldo}sueldo:= (horasTrab-40)*factor*10.5 + precioHora*40

endelse

sueldo:= precioHora * horasTrab;

Fin del case. No tiene correspondencia con un begin

Como hay 1 sola acción no se enmarca en begin - end

categoria DEBE ser una variable de tipo ordinal (en base a los tipos vistos podría ser: entera, char o boolean).NO REAL

Ejemplo 5

Page 20: Pascal Estructuras de Control

20

{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.

Ejemplo 5 (Cont.)

Flujo de Control del Case:

1

2

3

4

EpílogoCase categoria of

Ejemplo 5 Una VarianteDesarrollar 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.

Page 21: Pascal Estructuras de Control

21

if HorasTrab > 40thenbeginwrite('Ingrese la categoría del empleado ');readLn(categoria);case categoria of1..3:factor:= 1.5;

4..6:factor:= 2;

7..9:factor:= 2.5;

10..12:factor:= 3;

end;{Cálculo del Sueldo}sueldo:= (horasTrab-40)*factor*10.5 + precioHora*40

endelse

sueldo:= precioHora * horasTrab;

Los posibles valores de lavariable pueden indicarse como:Rango de valores

Ejemplo 5.1

if HorasTrab > 40thenbeginwrite('Ingrese la categoría del empleado ');readLn(categoria);case categoria of1,2,3:factor:= 1.5;

4,5,6: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

endelse

sueldo:= precioHora * horasTrab;

Los posibles valores de lavariable pueden indicarse como:Valores Enumerados

Ejemplo 5.2

Page 22: Pascal Estructuras de Control

22

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 .

Ejemplo 6

Marca de Fin

{SECCIÓN DECLARATIVA}program Sueldo6;{Versión 6}uses

Crt;Const

precioHora=10.5;precioHExtra= 21;

varnombre, apellido: string[20];precioHora: real;sueldo: real;

resp: char; Representa la respuesta del usuario

Ejemplo 6 (Cont.)

Page 23: Pascal Estructuras de Control

23

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 thenbegin

write(nombre, ' ',apellido);writeLn(' trabajó ', (horasTrab - 40),' horas extra');sueldo:= 40 * precioHora + (horasTrab-40)* precioHExtra

endelse

sueldo:= horasTrab * precioHora; write('El Sueldo Semanal es: ', sueldo:12:2, ' pesos'); write('Desea calcular el sueldo de otro dibujante?');readLn(resp)

Until (resp='N') OR (resp='n');Se evalúa condición al final. Cuando es TRUE, Fin

{Generación de Pausa}readLn;

end.

Flujo de Control del Repeat:

Prólogo

Desarrollo y Epílogo

repeat Until (resp= ‘N’) or(resp = ‘n’)

Condición = TRUE

Page 24: Pascal Estructuras de Control

24

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.}

Ejemplo 7

Marca de Fin

{SECCIÓN DECLARATIVA}program Sueldo7;{Versión 7}uses

Crt;Const

precioHora=10.5;precioHExtra= 21;

varnombre, apellido: string[20];precioHora: real;sueldo: real;

contador: integer;Permite contar la cantidad de dibujantes

Ejemplo 7 (Cont.)

Page 25: Pascal Estructuras de Control

25

begin{SECCIÓN ALGORÍTMICA}

{Prólogo}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}while (horasTrab <> 0) dobegin

contador:= contador + 1;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 thenbegin

writeLn(nombre,’' trabajó ', (horasTrab - 40),' horas extra');sueldo:= 40 * precioHora + (horasTrab-40)* precioHExtra

endelse

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 evalúa condición al inicio. Cuando es TRUE, se ejecuta los siguientes enunciados

Se incrementa contador

Se analiza si el ciclo continúa

Se realiza primer lectura

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:

Prólogo

Desarrollo y Epílogo

While horasTrab <> 0 do

Condición = FALSE