Chapitre-6 (ASD1 2020)
Chapitre-6 (ASD1 2020)
Chapitre-6 (ASD1 2020)
DE DONNÉES 1
CHAPITRE 6: SOUS-PROGRAMMES
2
INTRODUCTION
INTRODUCTION
Analyse Modulaire
• La conception d’un algorithme repose sur l’analyse
modulaire:
o Affinements successifs: Le problème à résoudre est
décomposé en sous-problèmes, puis ces derniers à
leu tour, jusqu’à obtenir des sous-problèmes faciles
à résoudre.
– À chaque sous-problème on lui fait correspondre
un sous-programme.
• La résolution d’un problème sera composée d’un
algorithme principal et d’un certain nombre de
sous-programmes.
L’algorithme principal a pour but d’organiser
l’enchainement des sous-programmes.
5
INTRODUCTION
6
SOUS-PROGRAMMES
DÉFINITION
Remarques
• Les paramètres effectifs et les paramètres
formels doivent s’accorder du point de vue
nombre et ordre.
• Les types des paramètres formels et
paramètres effectifs doivent être compatibles.
9
DÉFINITION
Types de Sous-Programmes
• Procédure
o Une procédure est un sous-programme
contenant un certain nombre d’instructions,
mais qui n’admet pas de valeur de retour.
• Fonction
o Une fonction est un sous-programme
contenant un certain nombre d’instructions
et qui retourne un et un seul résultat.
10
FONCTION
Définition
• Syntaxe
Fonction <nom_fonct>(<paramètres : types>) : <type_résultat>
Var
<Déclaration des objets internes>
Début
<Instructions>
retourner < valeur ou variable ou expression >
Fin
- La fonction peut retourner une valeur unique (et
donc se terminer) grâce au mot-clé retourner.
- Le type de la valeur retournée doit correspondre
à celui qui a été précisé dans le prototype (entête
ou signature) de la définition de la fonction. 11
FONCTION
Définition
• Exemple-1 : Valeur Absolue d’un réel
Fonction Valeur_Absolue(x: réel) : réel
Début
Si x > 0 alors Si x > 0 alors
retourner x retourner x
Sinon Finsi
retourner –x retourner –x
Finsi
Fin
12
FONCTION
Définition
• Exemple-1 : Fonction sans paramètres
Fonction Saisir_Entier() : entier
Var
nb: entier
Début
Répéter
Écrire (" Donner un entier");
Lire (nb);
Jusqu'à (nb>= 1 et nb <=100)
retourner nb
Fin
13
FONCTION
Appel de Fonction
• L’appel de fonction est une expression, dont la
valeur est le résultat retournée par cette
fonction.
o Son appel s’effectue comme si on va
évaluer une expression.
• Syntaxe
<Variable> ← <nom_fonct>([paramètres effectifs])
OU
Écrire (<nom_fonct>([paramètres effectifs]))
14
FONCTION
Résumé
Fonction val_absolue(x : réel) : réel
Var
a : réel /* variable interne pour la fonction */
Début
Si x > 0 Alors
a←x
Sinon
a ← -x
Finsi
Retourner(a)
Fin
Algorithme valeur_absolue
Var
v,y: réel
Début
Écrire(" Donner un réel ")
Lire(v)
y←val_absolue(v) /* Appel de la fonction */
Écrire("la valeur absolue de ", v , "est:", y)
15
Fin
FONCTION
Application
• Écrire un algorithme qui permet d’afficher si un
entier donné est premier ou nom. Pour ce
faire, définir une fonction est_premier(x) qui
permet de faire le test de parité d’un entier x.
16
PROCÉDURE
Définition
• Syntaxe
Procédure <nom_proc>(<Liste paramètres et leurs types>)
Var
<Déclaration des objets internes>
Début
<Instructions>
Fin
17
PROCÉDURE
18
PROCÉDURE
Appel de Procédure
• L’appel à une procédure consiste à indiquer le
nom de la procédure suivi d’un couple de
parenthèses contenant la liste des paramètres
effectifs:
Algorithme affiche
Var
x, y : entier
Début
Écrire(" Donnez un entier ")
Lire(x)
Écrire("Donnez un autre entier")
Lire(y)
Affiche_Somme(x, y) /* Appel de la procédure*/
Fin 19
PROCÉDURE
Application
• Écrire une procédure qui permet d’afficher les
entiers compris entre 1 et un certain entier
strictement positif passé en paramètre.
20
PASSAGE DE PARAMÈTRES
PASSAGE DE PARAMÈTRES
Application
• Écrire un algorithme qui permet de définir :
1. Une procédure qui permet de lire deux
entiers a et b strictement positifs.
2. Une procédure qui permet de permuter les
valeurs de a et b.
3. Une fonction qui retourne le maximum de a
et b.
4. Une fonction qui test si un entier est paire.
• Écrire l’algorithme utilisant ces sous programmes
et qui permute a et b si a est paire, et affiche le
maximum de a et b si a est impaire.
25
Merci!
Questions ?
26