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
- Notion de sous-programme
- Schéma d'exécution d'un sous-programme
- Pourquoi créer des sous-programmes
- Découpage d'un programme classique
- Notion de fonction
- Paramètres d'entrée, valeur de retour
- Passage par valeur (recopie), variable locale (temporaire)
- Paramètres formels/effectifs
- Déclaration, définition, appel
- Notion de procédure
- Paramètres de sortie, mixtes
- Passage par référence
- Visibilité, constantes globales
- Prototypes, ordre, non imbrication
3 Références dans le polycopié
"Initiation à la Programmation avec C++": pages 1 à 50.
4 Exercices à faire avant ce TD
- "Fonctions": 7.1 & 7.2 pages 42 & 43
- "Procédures": 7.3 & 7.4 pages 46 & 47
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
// 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
// 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
- É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.
- É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.
- É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.
- 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
- É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.
- É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.
- É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.
- 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.