Curso 2007 Práctico - Centro de Matematica

Anuncio
Universidad de la República
Facultad de Ciencias
Centro de Matemática
Introducción a la Computación – Curso 2007
Práctico 2: Entrada y Salida
Con lo visto hasta el ejercicio 16 del práctico anterior no es posible hacer programas que
interactuen con el usuario en tiempo de ejecución. El objetivo de este práctico es aprender las
construcciónes básicas del lenguaje Pascal que permiten lograr esta interacción (i.e. realizar
Entrada y Salida). Las instrucciones pertinentes son read, readln, write, y writeln.
1. Suponga que se tiene la siguiente secuencia de proposiciones de entrada (considere que
todas las variables se declararon como enteras):
read (x,y,z);
readln (a);
readln (b,c);
read (d)
Obtenga los valores de las variables a,b,c,d,x,y,y z si se utilizaron estos datos de
entrada :
8 7 2 1 3
1 4 4 6 2
3 7
2. Dadas las siguientes declaraciones de variables
VAR
a,b,c: integer;
x,y,z: real;
y los siguientes datos de entrada
3 2.3 -6.5
1 5 2.1
encuentre los errores, si existen, al ejecutar las siguientes secuencias de proposiciones.
a) read (x,y,z)
b) read (a,b,x)
c) read (a,x,y); read (b,z,c)
1
d ) readln (a,x); read (b,c,y,z)
3. Qué se exhibirá cuando se ejecuten las siguientes proposiciones Pascal?
writeln (‘Valor1 es ’, 3);
writeln (‘Valor2 es ’, 5);
writeln (‘La suma es ’, 3 + 5)
4. Qué se exhibirá cuando se ejecuten las siguientes proposiciones Pascal?
writeln
writeln
writeln
writeln
(86, 39);
(‘a = ’);
(32.5);
(‘a = ’, 86, ‘b = ’, 32.5)
5. Qué se exhibirá cuando se ejecute el siguiente programa en Pascal?
PROGRAM adivina (input, output);
VAR
a,b,c: integer;
x,y,z: real;
BEGIN
a := 0;
b := 2;
c := 1;
x := 5.2;
y := 3.6;
z := 4.1;
write (‘Los valores son’);
write (a, b, c);
writeln (x, y, z);
writeln (‘La suma es’, x + y + z);
writeln (‘El producto es’, a * b * c)
END.
6. Determine la salida exacta del siguiente programa en Pascal.
PROGRAM salea (input, output);
VAR
a: char;
b: integer;
BEGIN
a := ‘x’;
2
b := -12;
writeln (a:2, b:5)
END.
7. Suponga que a,b,c,y d son variables enteras. Determine los valores de a,b,c,y d
después de la ejecución de las siguientes proposiciones con los datos que se muestran.
proposición
readln(a, b)
readln(c)
read (d)
datos
2 15 6 4
1 -3 7 9
8 12 -1 5
8. Suponga que m y t son variables enteras con los valores 4 y -18 respectivamente. Determine la salida exacta de la siguiente proposición : write(‘Valor’:8,m:2,t:4)
9. Suponga que a,b y c son variables enteras. Un usuario escribe la siguiente secuencia
de caracteres en la terminal (donde b representa un espacio en blanco) :
1b2
3b4
Indique cuál proposición o secuencia de proposiciones no producirá los valores a= 1,
b= 2, y c= 3:
a) read (a); readln (b); read (c)
b) readln (a, b, c)
c) read (a, b, c)
d ) read (a); read (b); readln; read (c)
e) readln (a); readln (b); readln (c)
10. Cuáles de las siguientes proposiciones hará que se escriba la palabra PRIMERA en las
columnas 1 a 7, el valor de la variable entera siguiente de manera que termine en la
columna 20, y que se escriba la palabra ULTIMA en las columnas 75 a 80 ?
a) write (‘PRIMERA’, siguiente:13, ‘ULTIMA’:60)
b) write (‘PRIMERA’:7, siguiente:20, ‘ULTIMA’:80)
c) write (‘PRIMERA’:7, SIGUIENTE:13, ‘ULTIMA’:60)
d ) write (‘PRIMERA’:SIGUIENTE:20, ‘ULTIMA’:80)
e) write (‘PRIMERA’:7, siguiente:5, ‘ULTIMA’:56)
11. Suponga que x,y,y z son variables enteras. Considere el siguiente segmento de programa : readln (x); readln (y); readln (z), y las siguientes lı́neas escritas por un
usuario cuando se ejecuta el segmento de programa (b representa un espacio en blanco).
3
12b34b56
7b9b1
bbbbbb
b11b22
Indique los valores almacenados en x,y,y z luego de la ejecutar el segmento de programa
con los datos ingresados por el usuario.
12. Cuál será la salida exacta que se produce cuando se ejecuta el siguiente programa?
PROGRAM prueba (input, output);
CONST hey = ‘HOLA’;
VAR r, s : real;
BEGIN
r := 6.1;
s := 7.2;
writeln (hey:6);
write (‘R = ’);
write (r:5:2);
writeln;
write (‘S = ’);
write (s:3:1)
END.
13. Cómo maneja el sistema del lector los caracteres de tabulación en la entrada de datos?
Para averiguarlo, ejecute el siguiente programa y proporcione como datos de entrada
un carácter de tabulación, un punto y un retorno de carro.
PROGRAM tab (input, output);
VAR c1, c2, c3 : char;
BEGIN
read (c1, c2, c3);
writeln (ord (c1), ord (c2), ord (c3))
END.
14. Qué salida producirá el siguiente programa cuando se teclee la lı́nea de datos de entrada
1.2.3.4 ?
PROGRAM entraro (input, output);
VAR c : char;
r : real;
e : integer;
BEGIN
4
readln (r, c, e);
writeln (r, c, e)
END.
15. Qué exhibirán las siguientes proposiciones (suponiendo que r es una variable real)?
r := 91.2;
writeln (r:3:0)
16. Permite el Pascal del lector variables booleanas en proposiciones read? Si es ası́, qué se
debe escribir para proporcionar los datos true y false ?
17. En los datos de entrada se proporcionan dos tiempos como enteros de la forma hhmm
donde hh representa las horas (menos de 24) y mm los minutos (menos de 60). Determine la suma de estos dos tiempos, y exhiba el resultado en la forma d hhmm, donde
d es dı́as, ya sea cero o uno.
Ejemplo de entrada : 1345 2153.
Ejemplo de salida : 1 1138.
18. El error relativo en una medición m es la razón de la diferencia absoluta entre la
medición y el valor verdadero v al valor verdadero. Suponga que los datos de entrada
se dan en una sola lı́nea que incluye dos números reales que representan la medición m
y el valor verdadero v . Calcule el error relativo de la medición y exhı́base junto con la
medición y el valor verdadero. Incluya etiquetas descriptivas para los valores exhibidos.
Ejemplo de entrada : 51.0 51.3.
Ejemplo de salida :
Medicion = 5.1000000000e+01
Valor verdadero = 5.1300000000e+01
Error relativo = 5.8479532161e-03.
19. No es posible utilizar una computadora para generar números aleatorios genuinos ya que
es preciso utilizar un algoritmo para generar los números, lo que implica que es posible
predecir los números generados. Lo que sı́ pueden hacer las computadoras es generar
números seudoaleatorios (números que, estadı́sticamente, parecen ser aleatorios).
Una técnica antigua que no produce buenos resultados se llama método del cuadrado
medio. Funciona ası́ : dado un número a, para generar el siguiente número de la secuencia se extraen los dı́gitos que están en medio de a2 . Por ejemplo, si a es 53, entonces
a2 es 2809, y el siguiente número seudoaleatorio será 80. Se ve que el siguiente número
seudoaleatorio a 80 es 40. Si se continúa este proceso se obtiene 60, 60, 60, ....
Escriba un programa en Pascal que lea un entero de dos dı́gitos y determine el siguiente
número seudoaleatorio que se generarı́a si se usara el método del cuadrado medio.
Suponga que la entrada consta de una sola lı́nea que contiene al entero de dos dı́gitos.
5
Exhiba el número de dos dı́gitos original, el cuadrado de este entero, y el siguiente
número, todos con etiquetas apropiadas.
Ejemplo de entrada : 53.
Ejemplo de salida :
Numero introducido = 53
Cuadrado del numero = 2809
Siguiente numero seudoaleatorio = 80.
20. La función exp de Pascal calcula un valor aproximado a la suma de la serie infinita
2
3
n
1 + x + x2 + x3! + · · · + xn! + · · · . Suponga que los datos de entrada consisten en un solo
valor real para x entre 0.0 y 1.0. Determine la suma de los primeros cinco términos de
la serie infinita y el valor de exp(x) mediante la función estándar. Exhiba estos valores
y el valor de x acompaados de etiquetas apropiadas.
Ejemplo de entrada : 0.5.
Ejemplo de salida :
Valor introducido = 5.0000000000e-01
Suma de la serie = 1.6484375000e+00
Exp (x) = 1.6487212707e+00.
21. Escriba un programa para determinar la raı́z cuadrada de un número positivo a me1
1
diante el cálculo de a 2 = e 2 ln(a) . La entrada consistirá en una sola lı́nea conteniendo el
√
1
número real a. Exhı́ba a, a 2 , y a con etiquetas apropiadas.
Ejemplo de entrada : 12.7.
Ejemplo de salida :
Valor introducido = 1.2700000000e+00
Raiz cuadrada calculada = 3.5637059362e+00
Raiz cuadrada de Pascal = 3.5637059362e+00.
22. Escriba un programa que tenga como única entrada un número octal (base ocho) de
tres dı́gitos. Exhiba el número octal original y el número equivalente en base 10.
Por ejemplo, el número octal de tres dı́gitos 415 equivale al valor decimal 4 · 82 + 1 · 81 +
5 · 80 , o sea, 269. Recuerde que Pascal considerará el número introducido como número
decimal.
Ejemplo de entrada : 217.
Ejemplo de salida :
Octal 217 = Decimal 143.
6
Descargar