next up previous


Informática. Exame de Teoría.
Setembro, 2005

  1. (0.5 PUNTOS) Enumera as etapas do desenrrolo dun programa e describe cada unha delas nunha linha.

    SOLUCIÓN: As etapas son:

    1. 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.
    2. 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.
    3. Codificación: escritura do algoritmo nunha linguaxe de programación.
    4. Depuración: supresión de erros de compilación, execución e lóxicos que poda haber no programa.
    5. Proba: execución do programa sobre datos representativos do problema, e que permitan executar tódalas sentencias do programa.
    6. Mantemento: corrección de erros detectados durante a explotación do programa e adición de novas características.

  2. (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.

  3. (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.

  4. (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
    

  5. (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.

  6. (0.5 PUNTOS) Escribi-la sentencia en Fortran que fai que un punteiro p non apunte a ningures. SOLUCIÓN: nullify(p)

  7. (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)
    

  8. (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])

  9. (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.

  10. (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.

  11. (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

  12. (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.

  13. (1.5 PUNTOS) Dada a seguinte lista enlazada:

    \includegraphics[width=10cm]{figura.eps}

    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.


next up previous
© 2005, Dr. Manuel Fernández Delgado, Universidad de Santiago de Compostela, Departamento de Electrónica e Computación