UC3M

Grado en Ing. Telemática/Sist. Audiovisuales/Sist. de Comunicaciones

Arquitectura de Sistemas

Septiembre 2017 - Enero 2018

3.4. Ejercicios

  1. Considera las siguientes declaraciones de variables (el código que no se muestra no modifica el valor de ninguna de las variables).

    Fichero 1 Fichero 2 Fichero 3
    int n1 = 1;
    static int n2 = 2;
    int n3 = 3;
    
    void function1() 
    {
        int n1 = 10;
        ....
    }
    void function2() 
    {
        ....
    }
    extern int n1;
    static int n2 = 20;
    
    void function3() 
    {
       static int n1 = 100;
     
        n1++;
        ....
    }
    void function4() 
    {
        ....
    }
    int n4 = 4;
    static int n2 = 200;
    
    void function5() 
    {
        static int n2 = 2000;
    
        n2++;
        ....
    }
    void function6() 
    {
        ....
    }

    Responder a la siguientes preguntas.

    Pregunta Respuesta
    ¿Qué valor tiene n1 en function1?
    ¿Qué valor tiene n1 en function2?
    ¿Qué ámbito de validez tiene la variable n4?
    ¿Qué sucede si se accede a n4 en function1 o function2?
    ¿Qué valor tiene al final de la función function3 la variable n1 la primera vez que se ejecuta? ¿Y la siguiente?
    ¿Qué valor tiene al final de la función function4 la variable n1 la primera vez que se ejecuta? ¿Y la siguiente?
    ¿Cuántos casos de ensombrecimiento de variable hay en este programa?
    ¿Que valor tiene la variable n2 la segunda vez que se ejecuta function6?
    ¿Qué valor tiene al final de la función function5 la variable n2 la primera vez que se ejecuta? ¿Y la siguiente?
  2. Un programador con un estilo de programación mejorable ha definido la siguiente estructura de datos en una aplicación:

    struct la_estructura_de_datos_mas_importante_de_la_aplicacion 
    {
        int a;
        int b;
    };

    Necesitas declarar numerosas variables de ese tipo en varios lugares de tu código. No puedes modificar el código escrito por el otro programador. ¿Qué propones para facilitar estas declaraciones?

  3. En un programa que tiene un número muy elevado de ficheros se quiere guardar el nombre y apellidos del autor de cada fichero (que no es el mismo para todos) en una variable. El nombre de esta variable debe ser igual en cada fichero. ¿Cómo declararías estas variables en cada fichero? ¿De qué tipo?

  4. ¿Puedes pensar una funcionalidad en un programa para la que se necesite una variable estática en una función?

  5. ¿Cómo guardarías el número de veces que se ha llamado a una función de un programa pero sin definir variables globales?