- (0.5 PUNTOS) Enumera as etapas do desenrrolo dun programa e describe cada unha delas nunha linha.
SOLUCIÓN: As etapas son:
- Análise de requerimentos: consiste en detalla-los datos de entrada, resultados de saída e comportamento do programa en situacións límite e situacións nas que o programa debe rematar.
- Deseño do algoritmo: especificar detalladamente o algoritmo usando a técnica de deseño descendente, que consiste en dividir sucesivamente o problema en etapas, cada vez máis detalladas, ata que cada paso se poda deseñar directamente.
- Codificación: escritura do algoritmo nunha linguaxe de programación.
- Depuración: supresión de erros de compilación, execución e lóxicos que poda haber no programa.
- Proba: execución do programa sobre datos representativos do problema, e que permitan executar tódalas sentencias do programa.
- Mantemento: corrección de erros detectados durante a explotación do programa e adición de novas características.
- (0.5 PUNTOS) Pode haber saltos na execución dende fóra cara dentro dun bucle do? E dende dentro cara fóra?
SOLUCIÓN: Non pode haber saltos dende fóra cara dentro dun bucle do, pero si dende dentro cara fora, por exemplo coa sentencia exit, ou goto.
- (0.5 PUNTOS) Ónde debe estar e para qué serve a sentencia cycle?
SOLUCIÓN: Serve para saltar á seguinte iteración nun bucle do, evitando a execución das sentencias posteriores ao cycle na iteración actual.
- (0.5 PUNTOS) Sexan x e y das variábeis lóxicas. Escribir unhas sentencias en Fortran que avalíen se x e y coinciden e impriman por pantalla iguais en tal caso, e distintos en caso contrario.
SOLUCIÓN:
if (x .eqv. y) then
print *, "iguais"
else
print *, "distintos"
end if
- (0.5 PUNTOS) Cál é a diferencia entre argumentos verdadeiros e ficticios?
SOLUCIÓN: Os argumentos verdadeiros son as variábeis, constantes ou expresións que se lle pasan como argumentos a un sunprograma na sentencia en que se chama. Os argumentos ficticios son os nomes que, dentro do subprograma, se lle dan aos distintos argumentos.
- (0.5 PUNTOS) Escribi-la sentencia en Fortran que fai que un punteiro p non apunte a ningures.
SOLUCIÓN: nullify(p)
- (1 PUNTO) Escribir as sentencias en Fortran que permitan: declarar un arrai dinámico de reais; reservar memoria para 100 elementos; liberar esta memoria.
SOLUCIÓN:
real, dimension(:), allocatable :: x
allocate(x(100))
deallocate(x)
- (0.5 PUNTOS) Calcular, usando Matlab, as raices do polinomio
p(x) = - 4x5 +4x4 -3x2 + x
SOLUCIÓN: roots([-4 4 0 -3 1 0])
- (1 PUNTO) A sintaxe da función fscanf en Matlab é a seguinte:
[a conta] = fscanf(fid, 'formato', tamano)
Qué valores pode ter o argumento tamano? Cómo se comporta fscanf en cada caso?
SOLUCIÓN: Se tamano = inf, entón fscanf le tódolos valores do arquivo e os mete nun vector columna. Se tamano = n, entón fscanf le os n primeiros valores do arquivo e os mete nun vector columna. Se tamano = [m n], entón fscanf le os primeiros mxn valores no arquivo e os mete nunha matriz de m filas e n columnas. Se tamano = [m inf], entón fscanf le tódolos valores no arquivo e os mete nunha matriz de m filas e o número de columnas que corresponda.
- (1 PUNTO) Dada a función seguinte:
integer function f(x,y)
real :: x,y
f = f(x-1,sqrt(x**2+y**2))
end function f
Cumpre as condicións para ser un exemplo de función recursiva? Razoa a resposta.
SOLUCIÓN: Non, porque non ten o atributo recursive nin result.
- (0.5 PUNTOS) Qué comando que temos que utilizar para crear unha libraría chamada libutil.a a partir dos arquivos obxecto (.o) situados no directorio actual?
SOLUCIÓN: ar qv libutil.a *.o
- (1 PUNTO) Consideremo-lo seguinte ficheiro makefile:
programa: programa.o datos2.o
g95 -o programa programa.o datos2.o
programa.o: programa.f
g95 -c programa.f
datos1.o: datos1.f
g95 -c datos1.f
datos2.o: datos2.f
g95 -c datos2.f
Disponse dos ficheiros datos1.f, datos2.f e programa.f. Faise unha primeira execución de make que realiza as catro compilacións e xera o ficheiro executábel chamado programa. Logo, o programador modifica o ficheiro datos2.f e volve a executar make. Cántas compilacións se fan? E se se modificase o ficheiro datos1.f no canto to datos2.f?
SOLUCIÓN: Execúta a compilación de datos2.f e enlázase datos2.o e programa.o para crear programa. Se modificamos datos1.f, non se compilaría nada porque datos1.o non é necesario para crear programa.
- (1.5 PUNTOS) Dada a seguinte lista enlazada:
que está definida polo seguinte código:
type nodo
character(20) :: dato
type(nodo), pointer :: enlace
end type nodo
type(nodo), pointer :: lista
Debuxa cómo quedaría a lista logo de executa-lo seguinte código?
type(nodo),pointer::q,t
q=>lista
q=>q%enlace
t=>q%enlace
q%enlace=>t%enlace
deallocate(t)
SOLUCIÓN: A lista quedaría: pepe - carlos - alberto porque suprimímo-lo nodo luis.