next up previous


Informática. Exame de Teoría
Febreiro, 2004

Nota: Nas preguntas test, cada pregunta totalmente contestada de forma incorrecta desconta 0.1.

    1. (0.25 PUNTOS) Sinala cál das seguintes afirmacións é certa:
      a) Fortran e Matlab son linguaxes compiladas.
      b) Fortran é unha linguaxe interpretada. Matlab é compilado.
      c) Matlab é unha linguaxe interpretada. Fortran é compilado.
      d) Fortran e Matlab son linguaxes interpretadas.
      SOLUCIÓN: (c)

    2. (0.25 PUNTOS) Enumera as funcións dos sistemas operativos.
      SOLUCIÓN: Gestión de procesos, gestión de memoria, gestión do sistema de arquivos, xestión dos dispositivos de E/S, xestión da rede e protección.

    3. (0.25 PUNTOS) Indica cáis das seguintes afirmacións son certas:
      a) Un driver depende da versión do sistema operativo e do modelo de dispositivo que se quere manexar.
      b) Un driver depende do modelo de dispositivo que se quere manexar pero non do sistema operativo.
      c) Un driver é un programa que convirte os comandos xenéricos en ordes concretas para un determinado dispositivo.
      d) Un driver é a parte electrónica dun periférico.
      e) Un driver é a parte mecánica dun periférico.
      f) Ningunha das opcións anteriores é correcta.
      SOLUCIÓN: (a)

    4. (0.25 PUNTOS) Indica cál das seguintes é a opción correcta. Á hora de analiza-la estrutura dos distintos sistemas operativos é habitual falar de ...
      a) Sistemas monolíticos, multinivel (por capas ou xerárquico), modelo cliente/servidor.
      b) Sistemas de procesamento por lotes, sistemas de multiprogramación, sistemas de tempo compartido.
      c) Sistemas ISA, VESA, AGP.
      d) Ningunha das opcións anteriores é correcta.
      SOLUCIÓN: (b)

    5. (0.25 PUNTOS) Indica cál das seguintes é a opción correcta. Se consideramos que os ordenadores da aula de informática da Facultade de Matemáticas forman unha rede independente, esta sería ...
      a) Unha rede WAN por estar formada por mais de 5 ordenadores.
      b) Unha rede LAN por estar formada por poucos ordenadores.
      c) Unha rede LAN por estar tódolos ordenadores nun espacio reducido.
      d) Unha rede WAN por enmarcarse dentro doutra rede maior que é a da Universidade.
      e) Ningunha das opcións anteriores é correcta.
      SOLUCIÓN: (c)

    6. (0.25 PUNTOS) Indica cál das seguintes é a opción correcta.
      a) As memorias ROM, RAM e caché forman parte do que se chama memoria no modelo Von Neumann.
      b) As memorias ROM e RAM, pero non a caché, forman parte do que se chama memoria no modelo Von Neumann.
      c) As memorias ROM, RAM, caché, e o disco duro forman parte do que se chama memoria no modelo Von Neumann.
      d) As memorias ROM e RAM e o disco duro forman parte do que se chama memoria no modelo Von Neumann.
      SOLUCIÓN: (a)

    7. (0.25 PUNTOS) Indica cál das seguintes é a opción correcta. Se tes un ordenador na casa e te conectas a Internet usando un modem, o habitual é ...
      a) Traballar cunha dirección IP fixa.
      b) Para poder traballar en Internet é necesario que o sistema operativo Windows asigne ó meu ordenador unha dirección IP.
      c) Contacto cun proveedor que lle proporcione unha dirección IP ó meu ordenador cada vez que me conecto a Internet.
      d) Non é preciso ter asignada unha dirección IP, se xa teño a dirección MAC.
      e) O proveedor só determina o precio da conexión, a dirección IP do ordenador depende do sitio Web ó que me conecto.
      f) Ningunha das opcións anteriores é correcta.
      SOLUCIÓN: (c)

    8. (0.25 PUNTOS) Sinala cál das seguintes afirmacións é certa:
      a) A programación modular non pode ser tamén estruturada.
      b) As programacións estructurada e modular son perfectamente compatíbeis.
      c) A selección non é unha das estratexias básicas de control que se poden empregar na programación estruturada.
      d) Ningunha das opcións anteriores é correcta.
      SOLUCIÓN: (b)

    9. (0.25 PUNTOS) Sinala cál das seguintes afirmacións é certa:
      a) No proceso de corrección de erros distínguense 3 grandes tipos: erros de sintaxe, erros de execución e de compilación.
      b) Os algoritmos son independentes da linguaxe de programación e do ordenador usado para a súa posterior implementación.
      c) Os algoritmos dependen da linguaxe de programación pois non todos admiten segui-la mesma estratexia de programación estruturada.
      d) Ningunha das opcións anteriores é correcta.
      SOLUCIÓN: (b)

    10. (0.25 PUNTOS) ¿Quén determina a orde na cal debe executarse un conxunto de instruccións? Indica cál das seguintes afirmacións é certa:
      a) A unidade de control.
      b) A ALU.
      c) Depende da linguaxe de programación.
      d) Execútanse en orde aleatorio.
      e) Ningunha das opcións anteriores é correcta.
      SOLUCIÓN: (a)

    11. (0.25 PUNTOS) Indica cál é o valor que se almacenaría na variábel c cando se executa o seguinte conxunto de operacións en Matlab:
      >> a=[1 2;3 4];
      >> b=[1 2;2 3];
      >> c=a.*(b^2)
      
      a) c = 5 16; 24 52
      b) c = 1 8; 12 36
      c) c = 9 22; 19 48
      d) c = 21 34; 47 76
      e) Ningunha das opcións anteriores é correcta.
      SOLUCIÓN: (a)

    12. (0.25 PUNTOS) Se no ficheiro proba.m se almacena o seguinte:
      function z=exame(x,y)
      z=3.0+x.*y+k;
      
      Indicar cáis das seguintes afirmacións son certas:
      a) Na ventana de comandos de Matlab poderíase chamar á función exame, siempre que se lle pasen dous argumentos.
      b) Na ventana de comandos de Matlab non se podría chamar á función exame pois o nome do ficheiro non é o correcto.
      c) A función exame non debería utiliza-la variábel k pois no punto no que se emprega non ten ningún valor inicial asignado.
      d) A función exame pode emprega-la variábel k, xa que o seu valor coincide co valor asignado polo usuario a esta variábel na memoria de traballo local (ventana de comandos).
      e) Ningunha das opcións anteriores é correcta.
      SOLUCIÓN: (b), (c)

    13. (0.5 PUNTOS) Calcula-la representación en complemento a 2 e en complemento a 1 do número 2345.
      SOLUCIÓN: 2345 en binario é 100100101001. Para calcula-lo C1, hai que restar 11111111111 menos 100100101001, e da 011011010110; para calcula-lo C2, basta con sumarlle 1 ao C1, e da 011011010111

    14. (0.5 PUNTOS) Indica cais son as etapas básicas que se deben seguir no deseño de programas. Só enumeralas.
      SOLUCIÓN: Análise de requerementos, deseño do algoritmo, codificación do programa, depuración, proba e mantemento.

    15. (1.5 PUNTOS) Consideremo-lo seguinte fragmento de pseudocódigo, aplicado á xestión de listas enlazadas:
      q, t : punteiros a nodo
      ref : tipo X
      band : lóxica
      
      se p /= NULO
          q = p; band = SI
          mentres q^.dato /= ref e band == SI
              se q^.enlace /= NULO
                  t = q
                  q = q^.enlace
              se non
                  band = NON
              fin se
          fin mentres
      fin_se
      
      Onde p é o punteiro ó primeiro nodo da lista. A quén apunta o punteiro t en cada iteración do bucle mentres? Cando se remata a estrutura iterativa mentres? Cando vale NON a bandeira band? Qué ocurre cando a lista está baleira?

      SOLUCIÓN:

      a) O punteiro t apunta, en cada iteración, ó nodo anterior ó nodo q, recorrendo a lista: cando remata a iteración, se se acada a final, entón q apunta ó último nodo e t ó penúltimo.

      b) A estrutura mentres remata ou ben se se atopa o nodo con dato ref buscado (q$ \land$.dato == ref) ou ben se se acada a final da lista sen atopa-lo nodo buscado (q$ \land$.enlace == NULO, caso en que band == NON).

      c) A bandeira band == NON cando se acada a final da lista (q$ \land$.enlace == NULO), momento en que se executa a sentencia band = NON.

      d) Cando a lista está baleira, p == NULO e xa non se cumple a condición do se inicial, polo cal non se executa ningunha sentencia.


    16. (1 PUNTO) Describir qué fai o seguinte módulo en Fortran 90. Qué ocurre cando escribimos, dende fora do módulo, x > y sendo x, y dúas variábeis do tipo persoa?

      module meu_modulo
      
      type persoa
          character(len = 100) :: nome
          integer :: idade
      end type persoa
      
      interface operator (>)
      module procedure f
      end interface
      
      public operator (>)
      
      contains
      
      logical function f(x, y)
      type(persoa), intent(in) :: x, y
      
      if(x%idade > y%idade) then
          f = .true.
      else
          f = .false.
      end if
      return
      end function f
      
      end module meu_modulo
      

      SOLUCIÓN:

      a) O módulo define un tipo de datos derivado persoa e unha interfaz que permite sobrecarga-lo operador > para as variábeis deste tipo. Esta sobrecarga se efectúa usando a función f, que retorna un valor lóxico igual a .true. se x%persoa > y%persoa e .false. en caso contrario.

      b) Se dende outro programa se escribe x > y, sendo x e y de tipo persoa, e ademais inclúe a sentencia use meu_modulo, entón o valor x > y será .true. se x%persoa > y%persoa e .false. en caso contrario. Se non se inclúe a sentencia use meu_modulo, dará erro de compilación, porque por defecto o operador > non está definido para datos deste tipo derivado.


    17. Cuestións sobre Fortran 90:
      • (0.3 PUNTOS) En qué orde se executan as operacións na expresión: m**2.ne.2.and.(y - z).gt.(1 - n*y). De qué tipo é o resultado? Supor declaración implícita.

        SOLUCIÓN: Resultado de tipo logical. Orde de execución: n*y, (1 - n*y), m**2, (y - z), m**2.ne.2, (y - z).gt.(1 - n*y), .and.

      • (0.3 PUNTOS) Cómo podemos comprobar se un punteiro apunta a algures?

        SOLUCIÓN: Usando a función intrínseca associated(p), onde p é o punteiro, función que volta .true. se p apunta a algures, e .false. en caso contrario.

      • (0.4 PUNTOS) Dado un bucle do var = expr1, expr2, expr3 ... end do, cal é o número de iteracións que se executan?

        SOLUCIÓN: O número de iteracións é:

        N = max$\displaystyle \left(\vphantom{ 0, \frac {expr2 - expr1 + expr3} {expr3} }\right.$0,$\displaystyle {\frac{{expr2 - expr1 + expr3}}{{expr3}}}$$\displaystyle \left.\vphantom{ 0, \frac {expr2 - expr1 + expr3} {expr3} }\right)$ (1)

      • (0.3 PUNTOS) Cómo se implementa a estrutura repetir ... ata que(condición) de pseudocódigo en Fortran 90?

        SOLUCIÓN: Implementación en F90:

        do
            sentencias
            if(condición) exit
        end do
        

      • (0.3 PUNTOS) Se a é unha matriz real 3x3, qué fai a sentencia where (a > 0) a = 1.0/a ?

        SOLUCIÓN: O que fai é recorrer tódolos elementos a(i, j) da matriz a e, para aqueles que sexan estrictamente positivos, executar a(i, j) = 1.0/a(i, j), elemento a elemento.

      • (0.4 PUNTOS) Cómo se pode conseguir en Fortran 90 que unha función sexa recursiva? Qué valor voltará?

        SOLUCIÓN: Para que unha función sexa recursiva en Fortran 90, é dicir, para que poda chamarse a si mesma directamente (non indirectamente, como en Fortran 77), a función debe te-lo atributo recursive. Ademais, o valor devolto pola función debe ser distinto do nome da función, xa que éste nome emprégase como nome de función para chamarse a si mesma: polo tanto, a sentencia result (var) debe indicar o nome da variábel var que voltará a función. A cabeceira da función sería entón: recursive function f(...) result (var)

      • (0.3 PUNTOS) Escribir os formatos necesarios para: (1) escribir 3 reais con ancho de campo 7 e 2 cifras decimais (2) ler unha cadea de caracteres de ancho de campo 100 (3) escribir dous enteiros de ancho 4 sen cambio de liña.

        SOLUCIÓN:

        a) 3f7.2

        b) a100

        c) 2i4, $

      • (0.2 PUNTOS) Qué significa que un argumento ficticio dun subprograma sexa in, out ou inout?

        SOLUCIÓN: Os argumentos ficticios in son argumentos de só lectura, e polo tanto non poden ser modificados dentro do subprograma, éste só pode le-los seus valores. Os argumentos out non teñen valor inicial asignado, e polo tanto o subprograma non pode le-los seus valores, só pode modificalos, é dicir, darlle valores. Os argumentos inout teñen un valor inicial, e poden ser lidos polo subprograma, que ademais pode modificalos, por isto son argumentos de entrada e saída.


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