T1.ini-pro : Sujet du TD4 T1.ini-pro : Sujet du TD4
Groupe ESIEE, Denis BUREAU, novembre 2000.

1  Les objectifs

Savoir déclarer, définir, et appeler des fonctions et des procédures ; savoir choisir entre fonction et procédure ; savoir déterminer si un paramètre doit être donnée (entrée), mixte, ou résultat (sortie) ; connaître la syntaxe C++ mettant en oeuvre ces concepts.

2  Notions abordées dans le cours 4

3  Références dans le polycopié

"Initiation à la Programmation avec C++": pages 1 à 50.

4  Exercices à faire avant ce TD

5  Exemples à lire attentivement

5.1  Fonction

5.1.1  Pseudo-langage

    FONCTION Puiss( donnee N : entier, donnee P : entier ) RETOURNE entier
      Soit R un entier
      R <--- 1
      REPETER P FOIS
        R <--- R * N
      FIN REPETER
      Retourner R
    FIN FONCTION Puiss

    DEBUT PROGRAMME 2CubesMoins1
      Soit A un entier
      Saisir A
      Afficher 2 * Puiss( A, 3 ) - 1
    FIN PROGRAMME
   

5.1.2  C++

    // 2CubesMoins1
    #include <iostream.h>

    int Puiss( int N, int P ); // retourne N a la puissance P

    int main()
      {
      int A;
      cout << "Votre nombre ? ";
      cin >> A;
      cout << (2 * Puiss( A, 3 ) - 1) << endl;
      // return 0;
      } // main

    int Puiss( int N, int P ) // retourne N a la puissance P
      {
      int I, R;
      R = 1;
      for ( I=1; I<=P; I++ )
        R = R * N;
      return R;
      } // Puiss
   

5.2  Procédure

5.2.1  Pseudo-langage

    PROCEDURE MPuiss( donnee N : entier, donnee P : entier, resultat R : entier )
      R <--- 1
      REPETER P FOIS
        R <--- R * N
      FIN REPETER
    FIN PROCEDURE MPuiss

    DEBUT PROGRAMME 2CubesMoins1
      Soit A et B des entiers
      Saisir A
      MPuiss( A, 3, B )
      Afficher 2 * B - 1
    FIN PROGRAMME
   

5.2.2  C++

    // 2CubesMoins1
    #include <iostream.h>
    void MPuiss( int N, int P, int & R ); // R <--- N a la puissance P

    int main()
      {
      int A, B;
      cout << "Votre nombre ? ";
      cin >> A;
      MPuiss( A, 3, B );
      cout << (2 * B - 1) << endl;
      return 0;
      } // main

    void MPuiss( int N, int P, int & R ) // R <--- N a la puissance P
      {
      int I;
      R = 1;
      for ( I=1; I<=P; I++ )
        R = R * N;
      } // Puiss
   

6  Fonctions

  1. Écrire une fonction Min (d'abord en pseudo-langage, puis traduire en C++) qui retourne le plus petit des deux réels passés en paramètre.
  2. Écrire une fonction Min3 (d'abord en pseudo-langage, puis traduire en C++) qui retourne le plus petit des trois réels passés en paramètre. Contrainte : utiliser la fonction Min.
  3. Écrire un programme (d'abord en pseudo-langage, puis traduire en C++) qui saisit trois réels et qui affiche le minimum de ces trois réels. Contrainte : utiliser la fonction Min3.
  4. A faire en travail personnel
    Écrire un programme (d'abord en pseudo-langage, puis traduire en C++) qui permet de convertir un nombre d'une base ( < = 10) dans une autre ( < = 10). Exemple :
    Nombre de depart : 741
    Base de depart : 8
    Base d'arrivee : 2
    741 (8) = 111100001 (2)
    Pour convertir un nombre d'une base dans une autre, il faut passer par l'intermédiaire de la base 10. Exemple :
    741 (8) ® 481 (10) ® 111100001 (2)
    Une fonction auxiliaire (appelée 2 fois) est donc nécessaire.
    Attention ! Le nombre 741 est saisi normalement, c'est-à-dire en décimal. Il faut donc calculer sa véritable valeur en base 10 en utilisant la base de départ. De même, il faut construire un nombre décimal de l'ordre de 111 millions pour représenter le nombre en binaire.

7  Procédures

  1. Écrire une procédure PMin (d'abord en pseudo-langage, puis traduire en C++) qui renvoie en sortie le plus petit des deux réels donnés en entrée.
  2. Écrire une procédure PMin3 (d'abord en pseudo-langage, puis traduire en C++) qui renvoie en sortie le plus petit des trois réels donnés en entrée. Contrainte : utiliser la procédure PMin.
  3. Écrire un programme (d'abord en pseudo-langage, puis traduire en C++) qui saisit trois réels et qui affiche le minimum de ces trois réels. Contrainte : utiliser la procédure PMin3.
  4. A faire en travail personnel
    Écrire un programme (d'abord en pseudo-langage, puis traduire en C++) qui convertit un nombre d'heures ou de minutes ou de secondes en jours,heures,minutes,secondes. Exemples :
    hh mm ss : 94 0 0 ® 3j 22h 0mn 0s
    hh mm ss : 0 0 93666 ® 1j 2h 1mn 6s
    hh mm ss : 25 61 61 ® 1j 2h 2mn 1s
    Ce seul énoncé suffit pour indiquer un programme principal du type "saisie, traitement, affichage".



File translated from TEX by TTH, version 2.75.
On 19 Oct 2000, 16:15.