Ch05 Sous Programmes PDF
Ch05 Sous Programmes PDF
Ch05 Sous Programmes PDF
Les Sous-programmes
4 janvier 2020
Plan du chapitre
Procédures
Fonctions
Paramètres donnée-résultat
2 on 34
Introduction aux sous-programmes
Notion de sous-programme
Programmation modulaire
3 on 34
Introduction aux sous-programmes
Notion de sous-programme
Programmation modulaire
3 on 34
Introduction aux sous-programmes
Notion de sous-programme
Programmation modulaire
3 on 34
Introduction aux sous-programmes
Notion de sous-programme
Algorithme appelant - algorithme appelé
4 on 34
Introduction aux sous-programmes
Notion de sous-programme
Algorithme appelant - algorithme appelé
4 on 34
Introduction aux sous-programmes
Notion de sous-programme
Algorithme appelant - algorithme appelé
4 on 34
Introduction aux sous-programmes
Notion de sous-programme
Raisons d’utilisation
Les sous-programmes sont utilisés pour deux raisons essentielles :
5 on 34
Introduction aux sous-programmes
Notion de sous-programme
Raisons d’utilisation
Les sous-programmes sont utilisés pour deux raisons essentielles :
Notion de sous-programme
Réutilisation de sous-programme
Certains sous-programmes ont déjà été écrits et peuvent être
utilisés directement dans n’importe quel programme.
6 on 34
Introduction aux sous-programmes
Notion de sous-programme
Réutilisation de sous-programme
Certains sous-programmes ont déjà été écrits et peuvent être
utilisés directement dans n’importe quel programme.
Ce sont des sous-programmes standards ou prédéfinis.
6 on 34
Introduction aux sous-programmes
Notion de sous-programme
Réutilisation de sous-programme
Certains sous-programmes ont déjà été écrits et peuvent être
utilisés directement dans n’importe quel programme.
Ce sont des sous-programmes standards ou prédéfinis.
C’est le cas par exemple des sous-programmes permettant de
faire des calculs mathématiques (racine carrée, exposant, ...).
6 on 34
Introduction aux sous-programmes
Notion de sous-programme
Réutilisation de sous-programme
Certains sous-programmes ont déjà été écrits et peuvent être
utilisés directement dans n’importe quel programme.
Ce sont des sous-programmes standards ou prédéfinis.
C’est le cas par exemple des sous-programmes permettant de
faire des calculs mathématiques (racine carrée, exposant, ...).
La nature et le nombre de programmes standards dépendent
des langages.
6 on 34
Introduction aux sous-programmes
Notion de sous-programme
Réutilisation de sous-programme
Certains sous-programmes ont déjà été écrits et peuvent être
utilisés directement dans n’importe quel programme.
Ce sont des sous-programmes standards ou prédéfinis.
C’est le cas par exemple des sous-programmes permettant de
faire des calculs mathématiques (racine carrée, exposant, ...).
La nature et le nombre de programmes standards dépendent
des langages.
Mais les sous-programmes prédéfinis ne suffisent pas pour
découper un gros programme ; le programmeur est amené à
écrire le code de ses propres sous-programmes.
6 on 34
Procédures
Notion de procédure
Définition
Une procédure est un ensemble d’instructions regroupées sous
un nom, qui réalise un traitement particulier dans un
programme lorsqu’on l’appelle.
7 on 34
Procédures
Notion de procédure
Définition
Une procédure est un ensemble d’instructions regroupées sous
un nom, qui réalise un traitement particulier dans un
programme lorsqu’on l’appelle.
Comme un programme, une procédure possède un nom, des
variables, des instructions, un début et une fin.
7 on 34
Procédures
Notion de procédure
Définition
Une procédure est un ensemble d’instructions regroupées sous
un nom, qui réalise un traitement particulier dans un
programme lorsqu’on l’appelle.
Comme un programme, une procédure possède un nom, des
variables, des instructions, un début et une fin.
Mais contrairement à un programme, un sous-programme ne
peut pas s’exécuter indépendamment d’un autre programme.
7 on 34
Procédures
Procédure ligne_Etoile ( )
Début
Pour cpt de 1 à 10 Faire
Afficher "*"
FinPour
Afficher "\n"
Fin
8 on 34
Procédures
Notion de procédure
Exécution d’une procédure
9 on 34
Procédures
Notion de procédure
Exécution d’une procédure
9 on 34
Procédures
Début
Afficher "Ce programme dessine un rectangle d’étoiles."
Afficher "Combien de lignes voulez-vous ?"
Saisir nlignes
Pour i de 1 à nlignes Faire
ligne_Etoile ( )
FinPour
Fin
10 on 34
Procédures
Exécution de procédure
Appel de procédure
Lorsque le processeur rencontre l’appel d’une procédure, il
arrête momentanément l’exécution du programme appelant
pour aller exécuter les instructions de la procédure.
11 on 34
Procédures
Exécution de procédure
Appel de procédure
Lorsque le processeur rencontre l’appel d’une procédure, il
arrête momentanément l’exécution du programme appelant
pour aller exécuter les instructions de la procédure.
Quand il a terminé l’exécution de la procédure, le processeur
reprend l’exécution du programme appelant là où il s’était
arrêté.
11 on 34
Procédures
Exécution de procédure
Appel de procédure
Lorsque le processeur rencontre l’appel d’une procédure, il
arrête momentanément l’exécution du programme appelant
pour aller exécuter les instructions de la procédure.
Quand il a terminé l’exécution de la procédure, le processeur
reprend l’exécution du programme appelant là où il s’était
arrêté.
Une procédure peut être appelée soit par un programme, soit
par un autre sous-programme (qui lui même a été appelé).
11 on 34
Procédures
Exécution de procédure
Appel de procédure
Lorsque le processeur rencontre l’appel d’une procédure, il
arrête momentanément l’exécution du programme appelant
pour aller exécuter les instructions de la procédure.
Quand il a terminé l’exécution de la procédure, le processeur
reprend l’exécution du programme appelant là où il s’était
arrêté.
Une procédure peut être appelée soit par un programme, soit
par un autre sous-programme (qui lui même a été appelé).
Les appels de sous-programmes peuvent s’imbriquer autant
qu’on le désire.
11 on 34
Procédures
12 on 34
Procédures
12 on 34
Procédures
12 on 34
Procédures
12 on 34
Procédures
13 on 34
Procédures
13 on 34
Procédures
13 on 34
Procédures
Début
Pour cpt de 1 à nombre Faire
Afficher "*"
FinPour
Afficher "\n"
Fin
14 on 34
Procédures
Les procédures
Passage des paramètres
Lors de l’appel de la procédure, la valeur de la variable netoiles
passée en argument est copiée dans le paramètre formel
nombre (qui est une variable).
16 on 34
Procédures
Les procédures
Passage des paramètres
Lors de l’appel de la procédure, la valeur de la variable netoiles
passée en argument est copiée dans le paramètre formel
nombre (qui est une variable).
La procédure effectue alors le traitement avec la variable
nombre qui a bien la valeur voulue : celle de netoiles.
16 on 34
Procédures
Les procédures
Passage des paramètres
Lors de l’appel de la procédure, la valeur de la variable netoiles
passée en argument est copiée dans le paramètre formel
nombre (qui est une variable).
La procédure effectue alors le traitement avec la variable
nombre qui a bien la valeur voulue : celle de netoiles.
La procédure n’utilise pas directement la variable netoiles : elle
utilise sa valeur, qu’elle a recopiée dans sa propre
variable-paramètre.
16 on 34
Procédures
Les procédures
Passage des paramètres
Lors de l’appel de la procédure, la valeur de la variable netoiles
passée en argument est copiée dans le paramètre formel
nombre (qui est une variable).
La procédure effectue alors le traitement avec la variable
nombre qui a bien la valeur voulue : celle de netoiles.
La procédure n’utilise pas directement la variable netoiles : elle
utilise sa valeur, qu’elle a recopiée dans sa propre
variable-paramètre.
Important : lorsqu’il y a plusieurs paramètres dans la définition
d’une procédure, il faut absolument qu’il y en ait le même
nombre à l’appel et que l’ordre soit respecté (car la copie se fait
dans l’ordre).
16 on 34
Procédures
Les procédures
Paramètres réels et paramètres formels
Il est primordial de bien distinguer les paramètres qui se
trouvent dans l’en-tête d’une procédure, lors de sa définition et
les paramètres (ou arguments) qui se trouvent placés entre
parenthèses lors de l’appel.
17 on 34
Procédures
Les procédures
Paramètres réels et paramètres formels
Il est primordial de bien distinguer les paramètres qui se
trouvent dans l’en-tête d’une procédure, lors de sa définition et
les paramètres (ou arguments) qui se trouvent placés entre
parenthèses lors de l’appel.
Les paramètres placés dans la définition d’une procédure sont
les paramètres formels.
17 on 34
Procédures
Les procédures
Paramètres réels et paramètres formels
Il est primordial de bien distinguer les paramètres qui se
trouvent dans l’en-tête d’une procédure, lors de sa définition et
les paramètres (ou arguments) qui se trouvent placés entre
parenthèses lors de l’appel.
Les paramètres placés dans la définition d’une procédure sont
les paramètres formels.
Ils servent à décrire le traitement à réaliser par la procédure
indépendamment des valeurs traitées.
17 on 34
Procédures
Les procédures
Paramètres réels et paramètres formels
Il est primordial de bien distinguer les paramètres qui se
trouvent dans l’en-tête d’une procédure, lors de sa définition et
les paramètres (ou arguments) qui se trouvent placés entre
parenthèses lors de l’appel.
Les paramètres placés dans la définition d’une procédure sont
les paramètres formels.
Ils servent à décrire le traitement à réaliser par la procédure
indépendamment des valeurs traitées.
Les paramètres formels sont des variables locales à la
procédure, et à ce titre ils sont déclarés dans l’en- tête de la
procédure.
17 on 34
Procédures
Les procédures
Paramètres réels et paramètres formels (suite)
Les paramètres placés dans l’appel d’une procédure sont les
paramètres réels ou effectifs.
18 on 34
Procédures
Les procédures
Paramètres réels et paramètres formels (suite)
Les paramètres placés dans l’appel d’une procédure sont les
paramètres réels ou effectifs.
Lorsqu’ils sont de type donnée, ils contiennent effectivement
les valeurs sur lesquelles sera effectué le traitement de la
procédure.
18 on 34
Procédures
Les procédures
Paramètres réels et paramètres formels (suite)
Les paramètres placés dans l’appel d’une procédure sont les
paramètres réels ou effectifs.
Lorsqu’ils sont de type donnée, ils contiennent effectivement
les valeurs sur lesquelles sera effectué le traitement de la
procédure.
Lors de l’appel, leur valeur est recopiée dans les paramètres
formels correspondants.
18 on 34
Procédures
Les procédures
Paramètres réels et paramètres formels (suite)
Les paramètres placés dans l’appel d’une procédure sont les
paramètres réels ou effectifs.
Lorsqu’ils sont de type donnée, ils contiennent effectivement
les valeurs sur lesquelles sera effectué le traitement de la
procédure.
Lors de l’appel, leur valeur est recopiée dans les paramètres
formels correspondants.
Un paramètre effectif en donnée peut être soit une variable du
programme appelant, soit une valeur littérale, soit le résultat
d’une expression.
18 on 34
Fonctions
Les fonctions
Description de fonction
Les fonctions sont des sous-programmes qui retournent un et
un seul résultat au programme appelant.
19 on 34
Fonctions
Les fonctions
Description de fonction
Les fonctions sont des sous-programmes qui retournent un et
un seul résultat au programme appelant.
De ce fait, les fonctions sont appelées pour récupérer une
valeur, alors que les procédures ne renvoient aucune valeur au
programme appelant.
19 on 34
Fonctions
Les fonctions
Description de fonction
Les fonctions sont des sous-programmes qui retournent un et
un seul résultat au programme appelant.
De ce fait, les fonctions sont appelées pour récupérer une
valeur, alors que les procédures ne renvoient aucune valeur au
programme appelant.
L’appel d’une fonction doit obligatoirement se trouver à
l’intérieur d’une instruction (affichage, affectation,...) qui utilise
sa valeur.
19 on 34
Fonctions
Les fonctions
Description de fonction
Les fonctions sont des sous-programmes qui retournent un et
un seul résultat au programme appelant.
De ce fait, les fonctions sont appelées pour récupérer une
valeur, alors que les procédures ne renvoient aucune valeur au
programme appelant.
L’appel d’une fonction doit obligatoirement se trouver à
l’intérieur d’une instruction (affichage, affectation,...) qui utilise
sa valeur.
Le résultat d’une fonction doit obligatoirement être retourné au
programme appelant par l’instruction Retourner.
19 on 34
Fonctions
Les fonctions
Syntaxe générale
20 on 34
Fonctions
Exemples de fonction
Fonction factorielle
21 on 34
Fonctions
Exemples de fonction
Contrôle de la donnée
Fonction saisie_nb_positif( ) : entier
I Cette fonction permet de faire saisir à l’utilisateur un
I nombre positif qui est alors retourné
Variables nb_saisi : entier
Début
Afficher "Veuillez entrer un nombre positif"
Saisir nb_saisi
Tant que nb_saisi < 0 Faire
Afficher "Erreur. Tapez un nombre supérieur à 0 SVP !"
Saisir nb_saisi
FinTQ
Retourner nb_saisi
Fin
22 on 34
Fonctions
Exemples de fonction
Appel de fonctions
23 on 34
Fonctions
Les fonctions
Remarques et Commentaires
Les paramètres d’une fonction sont toujours de type donnée.
24 on 34
Fonctions
Les fonctions
Remarques et Commentaires
Les paramètres d’une fonction sont toujours de type donnée.
La valeur des paramètres effectifs à l’appel est recopiée dans
les paramètres formels qui servent à réaliser le traitement de la
fonction.
24 on 34
Fonctions
Les fonctions
Remarques et Commentaires
Les paramètres d’une fonction sont toujours de type donnée.
La valeur des paramètres effectifs à l’appel est recopiée dans
les paramètres formels qui servent à réaliser le traitement de la
fonction.
Comment faire pour qu’un sous-programme communique
plusieurs résultats au programme appelant ?
24 on 34
Fonctions
Les fonctions
Remarques et Commentaires
Les paramètres d’une fonction sont toujours de type donnée.
La valeur des paramètres effectifs à l’appel est recopiée dans
les paramètres formels qui servent à réaliser le traitement de la
fonction.
Comment faire pour qu’un sous-programme communique
plusieurs résultats au programme appelant ?
C’est impossible avec une fonction qui ne donne qu’un seul
résultat, mais c’est possible grâce aux procédures ayant des
paramètres de statut résultat.
24 on 34
Les paramètres résultats
Les paramètres
Statut des paramètres : donnée, resultat, donnée-résultat
Une procédure peut renvoyer plusieurs résultats au programme
appelant à travers des paramètres de statut résultat.
25 on 34
Les paramètres résultats
Les paramètres
Statut des paramètres : donnée, resultat, donnée-résultat
Une procédure peut renvoyer plusieurs résultats au programme
appelant à travers des paramètres de statut résultat.
Elle peut aussi modifier la valeur d’un paramètre : ce paramètre
doit alors avoir le statut de donnée-résultat.
25 on 34
Les paramètres résultats
Les paramètres
Statut des paramètres : donnée, resultat, donnée-résultat
Une procédure peut renvoyer plusieurs résultats au programme
appelant à travers des paramètres de statut résultat.
Elle peut aussi modifier la valeur d’un paramètre : ce paramètre
doit alors avoir le statut de donnée-résultat.
Rappel et mise en garde : une fonction ne communique pas
son résultat à travers un paramètre, mais à travers une simple
valeur de retour.
25 on 34
Les paramètres résultats
Les paramètres
Statut des paramètres : donnée, resultat, donnée-résultat
Une procédure peut renvoyer plusieurs résultats au programme
appelant à travers des paramètres de statut résultat.
Elle peut aussi modifier la valeur d’un paramètre : ce paramètre
doit alors avoir le statut de donnée-résultat.
Rappel et mise en garde : une fonction ne communique pas
son résultat à travers un paramètre, mais à travers une simple
valeur de retour.
Ne pas confondre avec les paramètres résultats utilisés dans
les procédures ! Le mode de communication est totalement
différent .
25 on 34
Les paramètres résultats
26 on 34
Les paramètres résultats
26 on 34
Les paramètres résultats
26 on 34
Les paramètres résultats
26 on 34
Les paramètres résultats
Début
Pour i de 1 à 30 Faire
Saisir untab(i)
FinPour
I à la fin de la boucle, le tableau est rempli
Fin
27 on 34
Les paramètres résultats
30 on 34
Les paramètres résultats
Passage de paramètres
Donnée-résultat
Les paramètres données-résultats correspondent à des
données qui doivent être modifiées par une procédure.
31 on 34
Paramètres donnée-résultat
Passage de paramètres
Donnée-résultat
Les paramètres données-résultats correspondent à des
données qui doivent être modifiées par une procédure.
A l’appel, la valeur du paramètre effectif est copié dans le
paramètre formel de la procédure.
31 on 34
Paramètres donnée-résultat
Passage de paramètres
Donnée-résultat
Les paramètres données-résultats correspondent à des
données qui doivent être modifiées par une procédure.
A l’appel, la valeur du paramètre effectif est copié dans le
paramètre formel de la procédure.
La procédure se sert de cette valeur pour la modifier.
31 on 34
Paramètres donnée-résultat
Passage de paramètres
Donnée-résultat
Les paramètres données-résultats correspondent à des
données qui doivent être modifiées par une procédure.
A l’appel, la valeur du paramètre effectif est copié dans le
paramètre formel de la procédure.
La procédure se sert de cette valeur pour la modifier.
A la fin de la procédure, la nouvelle valeur du paramètre formel
est recopiée dans le paramètre effectif du programme appelant.
31 on 34
Paramètres donnée-résultat
Passage de paramètres
Donnée-résultat
Les paramètres données-résultats correspondent à des
données qui doivent être modifiées par une procédure.
A l’appel, la valeur du paramètre effectif est copié dans le
paramètre formel de la procédure.
La procédure se sert de cette valeur pour la modifier.
A la fin de la procédure, la nouvelle valeur du paramètre formel
est recopiée dans le paramètre effectif du programme appelant.
La procédure ci-dessous prend pour paramètre un tableau de
10 entiers non trié et le renvoie trié en ordre croissant. Le
tableau est à la fois une donnée et un résultat de la procédure.
31 on 34
Paramètres donnée-résultat
Appel de procédure
Tableau en paramètre
Algorithme tri
Variables montab(1 :10) : tableau d’entiers
i : entier
Début
Afficher "Tapez 10 valeurs entières"
Pour i de 1 à 10 Faire
Saisir montab(i)
tabtri(montab)
Afficher "Voilà les valeurs triées dans l’ordre"
Pour i de 1 à 10 Faire
Afficher montab(i)
Fin
33 on 34
Paramètres donnée-résultat
Fin du chapitre
34 on 34