Universidad de la República Facultad de Ciencias Centro de Matemática Introducción a la Computación – Curso 2007 Práctico 1: Identificadores y Variables En este primer práctico dedicado al lenguaje Pascal manejaremos los conceptos básicos de identificador y variable. Aunque FreePascal permite una mayor cantidad de identificadores válidos (admite por ejemplo el uso de sub-guiones) asumiremos en este práctico que todo identificador deberá pertenecer al lenguaje identif icador = letra{letra|digito}, donde letra es el lenguaje de las letras minúsculas y mayúsculas, y digito = ‘0’|‘1’|‘2’|‘3’|‘4’|‘5’|‘6’|‘7’|‘8’|‘9’. 1. Determine cuáles de los siguientes identificadores son válidos. Promedio $XYZ A1234 A*b 1234A Jorge Can Can 506-74-3981 Program 4 2 2. Explique por qué no usarı́a los siguientes identificadores para sus definiciones. 1986 Integer Vel*Tiempo Var End Sqrt 1End $EFECTIVO 3. Determine cuáles de las siguientes declaraciones de constantes son válidas. CONST CONST CONST CONST impuesto = 0.09; pi := 3.14; diez = 9; Acalif := 90; 4. Determine cuáles de las siguientes declaraciones de variables son válidas. VAR num1, num2 : Real; VAR total, suma, cuenta : Integer, Real; VAR idestudiante, numsegsocial : Integer; VAR num1; num2 : Integer; VARnum1, num2 : Real; Var num1, num2:Integer; 5. Determine cuáles de las siguientes son constantes enteras válidas en Pascal. 189 -5555 2.5e03 -2.5 6,632 +199 ‘33’ maxint 199. 6. Determine cuáles de las siguientes son constantes reales válidas en Pascal. -0.01 3.e-06 .025 +8.3e2 -3.6 1.0e1. 69. maxreal 3.6e-06 2.2 7. Determine cuáles de las siguientes son constantes de carácter válidas en Pascal. A ’A’ ’CAT’ ’8’ ’?’ ’??’ 1 8. Determine cuáles de las siguientes son constantes válidas en Pascal. Determine el tipo de cada expresión. ’e’ 999 -0.000 e 3.e ’?’ false -maxint ! 9. Suponga que tiene la siguiente declaración de variables: VAR temp, valor : Integer; num, suma : Real; Determine cuáles de las siguientes proposiciones de asignación son válidas: num := temp + valor; num := suma; valor := num + 3; temp := num * suma valor := num + temp; valor := temp + 3; num := num * suma; 10. Determine el tipo y evalúe las siguientes expresiones. 6 DIV 2 - 6 MOD 5 3 + 14 MOD (2 * 3) 5 MOD 8 + 8 MOD 5 7 MOD 2 + 13 DIV 3 - 2.5 6 - 2.1 * 3 + 1 14 MOD 2 * 6 + 3 3.2 + 14 MOD (2 * 3) 6 - 2 MOD (1 + 4) + 5 11. Dadas las siguientes declaraciones de variables: VAR ventas, total, perdida : Integer; calif : Real; Determine cuáles de las siguientes proposiciones de asignación son válidas. calif := ventas + total + perdida; calif := ventas DIV total; ventas := calif / total; ventas := ventas + 5.0 calif := ventas / total calif := calif DIV perdida 12. Evalúe las siguientes expresiones: sqrt (16) sqr (5) trunc (10.1) trunc (-13.8) round (-3.5) trunc (8.6) round (10.7) abs (-12) -round (8.6) 13. Considere las proposiciones de asignación siguientes : 2 acosto bcosto ccosto dcosto := := := := 4.0; 1.0; -2.0; 5.5 Evalúe las siguientes expresiones: sqrt (acosto / bcosto - ccosto + dcosto - 2.5) trunc (dcosto) * abs (ccosto * (bcosto / acosto)) 14. Dadas las siguientes declaraciones de variables: VAR num, suma, total : Integer; valor : Real; car1, car2 : Char; Determine cuáles de las siguientes proposiciones de asignación son válidas: num := num + num; suma := num / total; valor := total * num + suma; car2 := car1; car2 := ‘car1’ num := suma / total; valor := total; valor := total + car1; car2 := car1 + 1; 15. Determine el tipo y evalúe las siguientes expresiones en Pascal. 5 + sqr(3) - 4 + trunc(3.6 - 2.1) 6 + 9 * 8 DIV 2 * round(1.362) - 2 * 3 3 * sqrt(8 MOD 6 * 10 DIV 5) trunc(12 / 5 * sqrt(4 + 4 * 3) / 4) 16. Cual es la salida estándar, en Pascal estándar, del siguiente programa : PROGRAM Verificar (output); VAR i: Integer; r: Real; BEGIN r := i + 1; WriteLn(i,r) END. 17. Escriba un programa de que utilice las funciones ln y exp de Pascal para calcular ab donde a > 0. 3 18. Introduzca los siguientes programas en Pascal. Trate de anticipar cuál va a ser la salida. Después, ejecútelo y compare lo que esperaba con la salida que se exhibe. PROGRAM Muestra1 (output); CONST pi = 3.1415926535; r1 = 2.0; r2 = 5.0; VAR area: Real; BEGIN area := pi * r1 * r1; WriteLn (r1, area); (* Exhibir valor de r1 y area *) area := pi * sqr (r2); WriteLn (r2, area) (* Exhibir valor de r2 y area *) END. PROGRAM Muestra2 (input, output); CONST medio = 0.5; VAR num : Real; a, b : Integer; BEGIN ReadLn(num); (* Obtener un valor para num de la entrada estandar *) a := round (num); b := trunc (num + medio); WriteLn (num, a, b) (* Exhibir num, a, y b *) END. Cuando el segundo programa espere datos de entrada, introduzca un número real y digite . Ejecute el programa varias veces, y use números tanto positivos como negativos, con partes fraccionarias mayores, menores, y exactamente iguales que 0.5. 19. Implemente los siguientes programas en Pascal. Luego verifique que funcionen correctamente para varios datos de entrada. Aplique todas las herramientas de Pascal que ha aprendido hasta el momento. a) Calcular el perı́odo de un péndulo de longitud l. El perı́odo de un péndulo está dado por la ecuación: 4 s t = 2π · l g donde g es la constante gravitatoria. Implemente el programa de modo que l sea leı́do de la entrada estándar. b) Calcular el área de un triángulo en función de la longitud de sus lados a b y c, mediante la famosa fórmula de Heron: A= p a+b+c s(s − a)(s − b)(s − c) donde s = 2 5