1. Dado el siguiente fragmento de programa: ¿Qué problemas

Anuncio
Licenciatura de Matemáticas
Algorítmica y Lenguajes de Programación
Primer examen parcial
Universidad de Oviedo
24/02/2001
Apellidos:
Nombre:
D.N.I:
Notas:
1.
Las preguntas deben contestarse de forma breve, razonando la respuesta sobre el código presentado. Siempre que sea necesario referirse al código se
2.
Los errores que se buscan en los programas son sintácticos, un programa será correcto si no presenta errores sintácticos aún cuando los resultados
puedan parecer poco razonables.
3.
No se aceptará una respuesta, aún siendo válida, si no se justifica la forma en que se llega a la misma.
4.
En algunos casos se indica la traza como posible forma de razonar la solución propuesta; en dichos casos se debe proporcionar una tabla en la que se
muestre cómo cambian los valores de las variables del programa a lo largo de la ejecución del mismo.
5.
El lenguaje de programación a utilizar es FORTRAN 90.
6.
Cuando la solución de un ejercicio sea un programa debe esbozarse, previamente, un análisis y diseño del algoritmo que resuelva el problema.
7.
Los
•
•
•
ejercicios puntuarán de la siguiente forma:
Ejercicios 1 al 4: 1,3 puntos
Ejercicio 5: 1,8 puntos
Ejercicios 6: 3 puntos
1. Dado el siguiente fragmento de programa:
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
REAL FUNCTION facil (x, y, d)
IMPLICIT NONE
REAL x, y
INTEGER d
! Código FORTRAN
END
PROGRAM examen
IMPLICIT NONE
REAL, PARAMETER :: pi = 3.141592, max = 2000
CHARACTER letra, tipo
INTEGER dia, mes, anio, p, q
REAL distancia, precio, total, u, v
REAL facil
! Código FORTRAN
IF (mes == max) THEN
total = facil (distancia, facil(precio, pi, mes), dia)
END IF
DO WHILE (facil(total, pi, 0) > 0)
total = facil (total, 0, letra)
END DO
facil (distancia, pi, dia)
PRINT *, facil (distancia, pi, dia)
PRINT *, facil (distancia, dia, pi)
! Código FORTRAN
END
¿Qué problemas presenta?
2. Dado el siguiente programa:
01. PROGRAM examen
02.
IMPLICIT NONE
03.
04.
INTEGER i, j, k
05.
INTEGER n
06.
07.
n = 0
08.
09.
DO i=1, 3
10.
DO j=2, 3, -1
11.
DO k=3, 3
12.
n=n+1
13.
END DO
14.
END DO
15.
END DO
16.
17.
PRINT *, n
18. END
¿Qué problemas presenta?
3. Dado el siguiente programa:
01. PROGRAM examen
02.
IMPLICIT NONE
03.
INTEGER i
04.
05.
i=0
06.
07.
DO WHILE (i<3)
08.
DO i=1, 5
09.
PRINT *, i
10.
END DO
11. END
¿Qué problema presenta? Una vez subsanado (indíquese forma de hacerlo), ¿qué salida produciría (utilice una traza)?
4. Dado el siguiente programa:
01. PROGRAM examen
02.
IMPLICIT NONE
03.
INTEGER i, total
04.
05.
i = 0
06.
total = 0
07.
08.
PRINT *, 'Introduzca numeros menores que 10:'
09.
10.
DO WHILE (i<10)
11.
READ *, i
12.
total = total + i
13.
END DO
14.
15.
PRINT *, total
16. END
Complete el siguiente código para obtener un programa equivalente:
01. PROGRAM examen
02.
IMPLICIT NONE
03.
INT EGER i, total
04.
05.
! Aquí faltan líneas de código
06.
07.
i = 0
08.
total = 0
09.
10.
PRINT *, 'Introduzca numeros menores que 10:'
11.
12.
DO WHILE (.NOT.parada)
13.
14.
! Y aquí también...
15.
16.
END DO
17.
18.
PRINT *, total
19. END
Razónense los cambios realizados y muéstrese una traza de los dos programas para justificar tales cambios.
5. Dado el siguiente programa:
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
INTEGER FUNCTION f (n,b)
IMPLICIT NONE
INTEGER n
LOGICAL b
IF (b .AND. (n<=1)) THEN
f = 1
ELSE
b=.NOT.b
f = 1 + f (n-1, b)
END IF
END
PROGRAM examen
IMPLICIT NONE
INTEGER f
PRINT *, f (3, .TRUE.)
END
¿Qué problema presenta? Si es posible, soluciónese el problema e indíquese la salida que produciría el programa resultante. En caso necesario,
razonar la salida propuesta mediante una traza del programa.
6. Escribir un programa que lea un número entero comprendido entre 1 y 20 y dibuje una “escalera” formada por asteriscos, ‘*’. Ejemplos de uso:
Cantidad leída
Salida
*
1
5
*
**
***
****
*****
*
10
**
***
****
*****
******
*******
********
*********
**********
Descargar