Universidad Carlos III de Madrid

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

Arquitectura de Sistemas

Septiembre 2012 - Enero 2013

3. Actividades

3.1. Los elementos de un programa en C

3.1.2. Recursos

Un recurso que conviene que tengas a mano para consultar (no para leer ahora mismo pues tiene 300 páginas) es The GNU C Programming tutorial escrito por Mark Burgess (Versión on-line). Está en inglés pero contiene información detallada sobre todo lo relativo a C.

3.1.3. Plan de trabajo

Tras leer el documento de sugerido, responde a las preguntas en la siguiente sección.

3.1.4. Evaluación

Recuerda que el compilador, cuando procesa ficheros de código, lo hace de forma independiente y de una única pasada. Considera los siguientes ficheros de código.

Fichero_1.c Fichero_2.c Fichero_3.c
1
2
3
4
5
6
7
8
9
10
int b = 10;

void fill_squares(int *tbl, int b) 
{
    int i;
    for (i = 0; i < b; i++) 
    {
        tbl[i] = square(i + 1);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#define SIZE 10

int cube(int);

int main(int argc, char *argv[]) 
{
    int a;
    int table[SIZE];

    a = square(b);
    b = cube(a);

    fill_squares(table, SIZE);
    return 0;
}

int square(int number) 
{
    return number * number;
}
1
2
3
4
5
6
int b = 10;

int cube(int number) 
{
  return square(number) * number;
}

Responde a las siguientes preguntas.

  1. En Fichero1.c el parámetro b (línea 3) y la variable global b (linea 1) son variables diferentes.

    • Verdadero

    • Falso

  2. En la línea 8 de Fichero1.c el compilador desconoce la función square. Se necesita incluir su prototipo antes de la función para que el compilador no muestre ninguna advertencia.

    • Verdadero

    • Falso

  3. En la línea 10 de Fichero2.c el compilador no sabe nada acerca de la función square.

    • Verdadero

    • Falso

  4. En la línea 11 de Fichero2.c el compilador no sabe nada de la función cube.

    • Verdadero

    • Falso

  5. La asignación a b en la línea 11 de Fichero2.c es correcta porque es una variable global definida en otro fichero.

    • Verdadero

    • Falso

  6. La función square en la línea 17 de Fichero2.c debe moverse al comienzo del fichero (o al menos incluir su prototipo) para que el compilador no muestre una advertencia.

    • Verdadero

    • Falso

  7. La declaración de b en la línea 1 de Fichero3.c es incorrecta porque colisiona con la declaración en la línea 1 de Fichero1.c

    • Verdadero

    • Falso

  8. El compilador no tiene información sobre la función square en la línea 5 de Fichero3.c.

    • Verdadero

    • Falso

Postea en el foro del curso o consulta con los profesores sobre aquellas preguntas de las que no estés seguro.