Année universitaire 2003-2004

DEUG MIAS
Module Info 2
Travaux dirigés


Séance 6 :

  • Fonctions.
  • Passage de paramètres.

  • TD 6 : Fonctions
    1. Quelle est la sortie de ce programme?
       void  one(int x)
        {
         printf("The square of %d is %d \n",x, x * x);
        }
       void  main(void)
        {
         int  a;
         a = 15;
         one(a);
        }

    2.Quelle est la sortie de ces programmes?
       void fun1(int a, int b)
        {
         int z;
         z = b;
         b = a;
         a = z + b;
         printf("%d %d \n", a, b);
        }
       void main(void)
        {
         int m,n;
         m = 3;
         n = 4;
         fun1(m,n);
         printf("%d %d \n", n, m);
        }
      
       void fun2(int a, int b)
        {
         int x,w;
         w = a + b;
         x = b + w;
         printf("%d \n", x);
        }
       void main(void)
        {
         int  m,n;
         m = 3;
         n = 4;
         fun2(n,m);
         printf("%d %d \n", n, m);
        }


    3.Quelle est la sortie de ce programme?
       int increase(int x, int y)
        {
         int n,z;
         for (n = 1; n < x; n++)
          y = y + n;
         z = y;
         return z;
        }
       void main(void)
        {
         printf("The answer is %d \n", increase(5,10));
        }



    4. On considère le squelette de programme ci-dessous:
       void one(void);
       void two(int);
       void three(void);
       int x,y;
       void main(void)
        {
         <code du programme principal>
        }
       void one(void)
        { int q,x;
         <code de la fonction one>
        }
       void two(int a)
        { int x;
         <code de la fonction two>
        }
       void three(void)
        {
         <code de la fonction three>
        }

    (a) La valeur de la variable globale x est-elle disponible dans la fonction one? two? three?
    (b) Si le programme main fait cet appel de fonction: two(y); est-ce qu'une variable locale a va être créée, et le contenu de y copié dans a?
    (c) Puisque la fonction one a été déclarée avant la fonction two, est-ce que la valeur de q est disponible dans la fonction two?
    (d) Est-ce que l'instruction y = x; est admissible dans la fonction one?
    (e) Est-ce que l'appel two(q) peut apparaître dans la fonction one?
    5. Quelle est la sortie de ces programmes?
    [t]6cmvoid  fun1(int, int);
    int  m,n;
    void main(void)
      {
       m = 3;
       n = 4;
       fun1(m,n);
       printf("%d %d \n", n,m);
      }
    void fun1(int a, int b);
      {
       m = b;
       b = a;
       a = m + b;
      }
       [t]6cmvoid  fun2(int, int);
    int  m,n;

    void main(void)
      {
       m = 3;
       n = 4;
       fun2(m,n);
       printf("%d %d \n", n,m);
      }
    void fun1(int a, int b);
      {
       a = m;
       n = b + a;
      }

    5. Préparer les questions 3 et 4 du TP 6.


    Commentaires pascal.lafourcade@lsv.ens-cachan.fr