Вы находитесь на странице: 1из 6

METODOLOGA DE LA PROGRAMACIN PRACTICA 3

Objetivos Presentar las primeras estructuras de control de Pascal: estructuras de seleccin if y case. Estudiar los operadores de Pascal para la composicin de expresiones booleanas Aplicar las estructuras de control vistas para hacer programas sencillos. 1. Anlisis de C sos en P s! l Notacin SP
SI cond ENTONCES S FIN_SI SI cond ENTONCES S SI_NO R FIN_SI SEGN c1,c2,...cn e1: S1 e2: S2 ... en: Sn {EN OTRO CASO Sn+1 } FIN_SEGUN IF cond THEN S IF cond THEN S ELSE R IF e1 THEN S1 ELSE IF e2 THEN S2 ELSE IF e3 THEN S3 ... ELSE IF en THEN Sn {ELSE Sn+1 }

Pascal

En la tabla, cond, indica una condicin, es decir una expresin booleana cuyo resultado es verdadero o falso; S y R denotan un bloque de instrucciones. a sem!ntica de la instruccin IF es igual a la estudiada en clase para la composicin SI. "omo la mayor#a de lengua$es de programacin, Pascal dispone de una estructura de seleccin m%ltiple llamada case. Aunque esta estructura aparentemente es similar al SEGN de la notacin algor#tmica, presenta importantes diferencias que se enumeran a continuacin: &lo es posible efectuar selecciones en funcin del valor de una %nica expresin, a diferencia del SEGN en el que pod#amos poner tantas como fuese preciso. a expresin en funcin de la cual se efect%a la seleccin ha de ser necesariamente de un tipo ordinal. os valores con los que se compara esta expresin deben ser estticos. Esto quiere decir que podemos comparar con valores literales, constantes o expresiones cuyo valor sea conocido en tiempo de compilacin, y no con valores de expresiones cuyo valor dependa, por e$emplo, de variables. a sintaxis de la estructura case es la siguiente:
case expresin_ordinal of selector_1 : sentencias_1; selector_2 : sentencias_2; ... {else sentencias_else;} end;

a sentencia case eval%a la expresin_ordinal que va a continuacin de la palabra case y despu's tratar#a de enca$ar el valor obtenido con el de alguno de los selectores. &i el valor enca$a con el selector_i entonces se e$ecuta la secuencia de sentencias asociadas a este selector (sentencias_i). &i no enca$a con ning%n selector, se e$ecutar#an las sentencias asociadas a la cl!usula else, si esta cl!usula existe (sentencias_else). Esta %ltima cl!usula, no tiene porqu' aparecer siempre. os selectores pueden estar compuestos por los siguientes elementos: iterales o valores constantes del tipo de la expresin_ordinal *ntervalos del tipo de la expresin_ordinal, en la forma:
lmite_inferior .. lmite_superior

+arios elementos de los tipos anteriores separados por comas En el siguiente cuadro, podemos ver un e$emplo de utili,acin de esta sentencia Program Ejemplo_case; var c : char; !gin write ('Introd ce n car!cter: '"; read (c"; cas! c o" 'a'..'#': $riteln ('Es na min sc la'"; '%'..'&': $riteln ('Es na ma'(sc la'"; ')'..'*': $riteln ('Es n d+,ito'"; '-' - '.' - ':' - ';' : $riteln ('Es n si,no de p nt aci.n'" !ls! $riteln ('/ar!cter desconocido'"; !n# !n#. P"oble# 1 -eniendo en cuenta el p!rrafo anterior transcriba a Pascal los dos e$emplos siguientes vistos en clase y compruebe la sem!ntica de la composicin alternativa con diferentes e$ecuciones. Algoritmo 2.8 ....................................................................... Lxico nota: entero; Algoritmo Leer (nota); SEGN nota nota = 20: Escribir (M. De Honor); (nota = 19) O (nota =18): Escribir (Sobresaliente); (nota = 1 ) O (nota =1!): Escribir ("otable); (nota = 1#) O (nota =1$): Escribir (%&roba'o); EN_OTRO_CASO: Escribir (S(s&enso); Fin.

Algoritmo 2.10 ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) Lxico n1:entero; n2:entero; Algoritmo Leer (n1*n2); SI n1 + n2 ENTONCES Escribir (El ,-.i,o es * n1) SI_NO Escribir (El ,-.i,o es* n2); FIN. P"oble# $%

/n banco reali,a pr'stamos r!pidos a sus clientes por un per#odo entre 0 y 12 meses. Para calcular el inter's total a pagar, el banco multiplica la cantidad prestada, el n%mero de meses que durar! el pr'stamo y el inter's mensual. &i el cliente tiene otras deudas contra#das con el banco, se considera que es un cliente de riesgo, y se le aplica un recargo extra de un 03 sobre la suma de la cantidad prestada y el inter's total. El total a devolver, esto es, la suma de la cantidad prestada, los intereses y el recargo, se distribuye en pla,os mensuales iguales a lo largo del per#odo que dura el pr'stamo. Escriba un algoritmo que dados los valores de entrada: la cantidad prestada en euros, un entero que representa el n%mero de meses, el inter's mensual (tanto por ciento) y si es un cliente de riesgo o no, calcule la cantidad mensual que debe abonar el cliente P"oble# 3%

4ise5e un algoritmo y transcr#balo en forma de programa Pascal que lea de la entrada una fecha en forma de tres n%meros positivos (d#a, mes, a5o) y ofre,ca como salida la fecha del d#a siguiente. &upondremos que el a5o no es bisiesto. A continuacin se muestran algunos e$emplos de entradas con sus salidas correctas correspondientes:

T" b jo &e"son l del

l'#no

-ranscriba a Pascal el problema correspondiente al algoritmo 1.6 del libro de texto: Escriba un algoritmo que simule el funcionamiento de una calculadora. os datos de entrada est!n constituidos por dos enteros (operandos) y un car!cter (s#mbolo de operacin, 7,.,8, 9). El resultado es el valor de la expresin dada.

!o#& ()

de se*'"os

Estudie el siguiente problema: /na compa5#a de seguros de vida, ante un nuevo cliente emplea las siguientes reglas: &i tiene menos de :; a5os, buena salud, y no ha tenido nunca un accidente, ofrece un contrato de tipo A, si tiene mala salud o ha tenido un accidente llama a un experto, si tiene mala salud y ha tenido ya un accidente no le hace el seguro. &i tiene mas de :; a5os aplica las mismas reglas pero ofrece un contrato de tipo <, en lugar de un contrato de tipo A. A continuacin se muestra un e$emplo de an!lisis del problema. C'estiones tene" en !'ent & " "esolve" el &"oble#

=>u' variables de entrada intervienen? @as de treinta o menos de treinta <uena o mala salud Accidente o no accidente variable edad (mas de treinta verdad) variable salud (buena verdad) variable accidente (lo ha tenido verdad)

=>u' queremos obtener?, "ontrato A "ontrato < lamar a experto Aecha,ado

uno de estos tres mensa$es:

An!lisis de casos en funcin de los datos de entrada edad + + + + B B B B + + B B + + B B salud + B + B + B + B accidente resultado lamar experto "ontrato < Aecha,ado lamar experto lamar experto "ontrato A Aecha,ado lamar expero

=&e cubre todos los casos? =&e solapan? A la hora de escribir el algoritmo agrupamos los casos por tipo de salida y simplificamos las variables que se pueda. Lxico sal('* acci'entes* e'a': /00LE%"0; res&(esta: 1%2314E2; Algoritmo Escribir (4iene el cliente b(ena sal('5 S6" ); Leer (res&(esta); sal(' res&(esta = 7S8; Escribir (Ha s(9ri'o acci'entes5 S6" ); Leer (res&(esta); acci'entes res&(esta = 7S8; Escribir (4iene ,-s 'e :0 a;os5 S6" ); Leer(res&(esta); e'a' res&(esta = 7S8; SEGUN sal('* acci'entes* e'a' (sal(' Y acci'entes) O (no(sal(') Y no(acci'entes)) : Escribir (Lla,ar a (n e.&erto); no (sal(') Y acci'entes: Escribir ( 2ec<a=a'o); e'a' Y sal(' Y no (acci'entes): Escribir (1ontrato /); no (e'a') Y sal(' Y no (acci'entes): Escribir (1ontrato %); FIN_SEGUN; Fin. "odifique el programa en Pascal

T"in*'los
Escriba un programa que lea tres n%meros reales y asigne el valor apropiado tr$! o "als!% a las siguientes variables booleanas:

0rian, lo: tr$! si los n%meros reales pueden representar longitudes de los lados de un triangulo, y "als! en caso contrario (la suma de dos cualesquiera de las longitudes debe ser

mayor que la tercera). E1 ilatero: tr$! si -riangulo tiene el valor tr$! y adem!s sus tres lados son iguales. Is.sceles: tr$! si -riangulo tiene el valor tr$! y adem!s al menos dos de los lados son iguales Escaleno: tr$! si -riangulo tiene el valor tr$! y adem!s no tiene lados iguales

Aealice el an!lisis del problema. Escriba el algoritmo en notacin &P. -ranscriba el algoritmo a programa Pascal.

Codi+i! !i,n de ! " !te"es


Escriba un programa en Pascal que leer! un car!cter y escribir! en su lugar un car!cter codificado. &i el car!cter es letra o d#gito, lo reempla,ara por el siguiente car!cter, excepto en el caso de: Z, que ser! rempla,ada por la A; z, que ser! reempla,ada por a, y 9 que ser! rempla,ado por 0. 4e esta forma, el 0 se convierte en 1, " en 4, p en q, etc. "ualquier car!cter distinto de letra o d#gito se sustituir! por un asterisco. Aealice el an!lisis del problema. Escriba el algoritmo en notacin &P. -ranscriba el algoritmo a programa Pascal.

C li+i! !iones
Escriba un algoritmo y transcr#balo luego a Pascal que, al igual que el problema dos de la segunda pr!ctica, lea tres notas de un alumnos, ponderadas al C;3, :;3 y 1;3, respectivamente. A continuacin calcule la nota final, pero en esta ocasin lo que debe mostrar es la calificacin en formato alfab'tico: DSuspenso: si la nota no llega al cinco DAprobado: si es mayor o igual que cinco y menor que siete DNotable: si es mayor o igual que siete y menor que nueve D&obresalienteE: si es mayor o igual que nueve y menor que die, DMatricula: &i la nota es die,

Вам также может понравиться