Ch12_sous Programmes

  • April 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Ch12_sous Programmes as PDF for free.

More details

  • Words: 2,355
  • Pages: 9
2ème T.I

Les sous programmes

L.S.IBN ELHAYTHEM Bengardane Enseignant : Mr BENZAIED mohamed

2ème année Tech.info 3

Chapitre-12 LES SOUS PROGRAMMES

 A.S. : 2008/2009

Activité 1 Ecrire une analyse puis un algorithme maximum qui permet de lire deux paires d'entiers strictement positif et d'afficher le maximum de chaque paire.

Réponse (1ere solution) Spécification du problème Résultats : écrire ("Maximum pair1 = ", maxp1) écrire ("Maximum pair2 = ", maxp2) maxp1 = [ maxp1  a1 ] SI a2 > a1 ALORS maxp1  a2 FIN SI maxp2 = [ maxp2  b1] SI b2 > b1 ALORS maxp2  b2 FIN SI ( a1 , a2 ) = [ ] répéter a1 = donnée ( " a1 = " ) a2 = donnée ( " a2 = " ) Jusqu'à ( a1 > 0 ) ET ( a2 > 0 ) ( b1 , b2 ) = [ ] répéter b1 = donnée (" b1 = ") b2 = donnée (" b2 = ") Jusqu'à ( b1 > 0 ) ET ( b2 > 0 ) Algorithme 0) Début maximum 1) répéter Écrire (" a1 = ") ; Lire (a1) Écrire (" a2 = ") ; Lire (a2) Jusqu'à ( a1 > 0 ) ET ( a2 > 0 ) 2) répéter Écrire (" b1 = ") ; Lire (b1) Écrire (" b2 = ") ; Lire (b2) Jusqu'à ( b1 > 0 ) ET ( b2 > 0 ) 3) maxp1  a1 4) SI a2 > a1 ALORS maxp1  a2 Calcul FIN SI 5) maxp2  b1 6) SI b2 > b1 ALORS maxp2  b2 FIN SI 7) écrire ("Maximum pair1 = ", maxp1) 8) écrire ("Maximum pair2 = ", maxp2) 9) Fin maximum

Saisie

Objet maxp1

T.D.O Type/nature rôle entier Maximum paire1

maxp2

entier

Maximum paire2

a1

Entier

Saisie de a1

a2 b1

Entier Entier

Saisie de a2 Saisie de b1

b2

Entier

Saisie de b1

Affichage

I. INTRODUCTION Un programme est souvent composé d'un ensemble de taches distinctes. Il est donc préférable de séparer ces taches et les mettre chacune dans un sous-programme. Le programme sera donc composé d'un ensemble de sous-programmes appelés modules. On distingue deux types de sous-programmes : Les fonctions et les procédures. On les déclare puis on les appelle quand c'est nécessaire. 1

2ème T.I

Les sous programmes Utilité des sous programmes :    

Faciliter la tache de résolution. Éviter la répétition d'un même traitement dans un programme. Réutiliser des sous-programmes déjà définis. Faciliter la localisation des erreurs ainsi que leurs corrections.

II. LES FONCTIONS : 1) définition : Une fonction est un sous-programme qui renvoie (retourne) une seule valeur de type simple (entier, réel, caractère, booléen, chaîne).

2) Vocabulaire et syntaxe a) déclaration d'une fonction : * Syntaxe en analyse : Spécification de la fonction nom_procedure Fonction nom_fonction (pf1,pf2,… :type1 ; pf1,pf2,… :type2 ;…) : type résultat Résultat : nom_fonction nom_fonctionR …. ….. Fin nom_fonction * Syntaxe en algorithme : 0) Fonction nom_fonction (pf1,pf2,… :type1 ; pf1,pf2,… :type2 ;…) : type résultat 1) …. 2) …. …. n-1) nom_fonction  résultat n) fin nom_fonction NB : dans la déclaration de la fonction [ fonction nom_fonction( pf1,pf2 : type1) : type résultat ] : les objets pf1 et pf2 sont appelées paramètre formels * Syntaxe en Pascal Function nom_fonction (pf1,pf2,… :type1 ; pf1,pf2,… :type2 ;…) : type résultat ; { déclaration des objets locaux } Begin …… ; …… ; nom_fonction := résultat ; End; RQ : La déclaration d’une fonction comprend :  L’entête de la fonction  La déclaration des objets locaux.  Le corps de la fonction b) L'appel d'une fonction L'appel d'une fonction permet d'exécuter les instructions de la fonction (par le programme principal), en remplaçant les paramètres formels par les paramètres effectifs. •

En algorithmique : R  FN nom_foction(pe1,pe2,…) Exemple : S  FN somme( a , b ) 2

2ème T.I

Les sous programmes NB : - Dans l'appel de la fonction somme [ S  somme( a , b)] : a et b sont appelés paramètres effectifs. - les paramètres effectifs et les paramètres formels doivent se correspondre en nombre, type et ordre. •

En pascal : R := nom_fonction(pe1, pe2, ….) ; Exemple : S := somme( a , b ) ;

Réponse Activité 1 (2ème solution) Analyse du programme principal Résultats : écrire ("Maximum pair1 = ", FN maximum ( a1 , a2 ) ) écrire ("Maximum pair2 = ", FN maximum ( b1 , b2 )) ( a1 , a2 ) = [ ] répéter a1 = donnée ( " a1 = " ) a2 = donnée ( " a2 = " ) Jusqu'à ( A1 > 0 ) ET ( a2 > 0 ) ( b1 , b2 ) = [

] répéter b1 = donnée (" b1 = ") b2 = donnée (" b2 = ") Jusqu'à ( b1 > 0 ) ET ( b2 > 0 )

Algorithme 0) Début maximum 1) répéter Écrire (" a1 = ") ; Lire (A1) Écrire (" a2 = ") ; Lire (A2) Jusqu'à ( A1 > 0 ) ET ( a2 > 0 ) 2) répéter Écrire (" b1 = ") ; Lire (b1) Écrire (" b2 = ") ; Lire (b2) Jusqu'à ( b1 > 0 ) ET ( b2 > 0 ) 3) écrire ("Maximum pair1 = ", FN maximum ( a1 , a2 ) ) 4) écrire ("Maximum pair2 = ", FN maximum ( b1 , b2 )) 5) FIN maximum Tableau de déclaration des objets globaux Objet A1

T.D.O Type/nature rôle Entier Saisie de A1

A2

Entier

Saisie de A2

maximum

fonction

B1 B1

Entier Entier

Retourne le maximum de 2 entiers Saisie de b1 Saisie de b2

Analyse de la fonction maximum ( n , m : entier ) : entier Résultats : maximum  max Traitement : max  n Si m > n Alors max  m FIN SI

3

2ème T.I

Les sous programmes

Algorithme 0) Fonction maximum (n , m : entire ) : entier 1) max  n 2) Si m > n Alors

max  m FIN SI 3) maximum  max 4) Fin maximum Tableau de déclaration des objets locaux à la fonction maximum Objet max

T.D.O Type/nature rôle Entier Maximum de 2 entiers

Turbo Pascal Program maximum10 ; Uses wincrt ; Var a1 ,a2 , b1 , b2 : integer ; Function maximum (n , m : integer ) : integer; Var max : integer ; Begin max := n ; If ( m > n) then max := m ; maximum:= max ; End; Begin Repeat Write(' a1 = '); readln(a1); Write(' a2 = '); readln(a2); Until ( a1 > 0) and ( a2 > 0) ; Repeat Write(' b1 = '); readln( b1 ); Write(' b2 = '); readln( b2 ); Until ( b1 > 0 ) and ( b2 > 0 ); Writeln(‘maximum pair 1 = ’ , maximum ( a1 , a2 )) ; Writeln(‘maximum pair 1 = ’ , maximum ( b1 , b2 )); End.

3- Déclaration et accès aux objets : a/ les objet locaux : Dans la fonction max, la variable m de type entier est déclarée dans le tableau de déclarations des objets locaux de cette fonction. C’est une variable locale à la fonction max, elle est accessible seulement par cette fonction. Tous les objets tels que les constantes, les types, les variables et éventuellement d’autres sous programmes déclarés dans un sous programme sont dits locaux à celui-ci. b/ les objets Globaux : Dans l'appel de la fonction max, les variables a1, b1, a2 et b2 sont déclarés dans la partie déclarative de programme principal (maximum). Ces variables sont appelées des objets globaux. Les objets utilisés dans un sous programme et non déclarés dans celui-ci sont des objets globaux déclarés dans la zone déclaration du programme principal. 4

2ème T.I

Les sous programmes

4 Les paramètres formels et les paramètres effectifs : a/ les paramètres formels : Dans la déclaration de la fonction max les objets x et y sont appelés paramètres formels. Les paramètres formels sont les paramètres qui se trouvent dans l’entête du sous programme. b/ les paramètres effectifs : a1, b1, a2 et b2 sont deux objets globaux utilisés pour l’appel de la fonction max, ces objets sont appelés paramètres effectifs Les paramètres effectifs sont les paramètres qui figurent (dans le programme ou sous-programme appelant) au niveau de l’appel du sous-programme. Ils viennent se substituer aux paramètres formels au moment de l’appel du sous-programme.

Remarque :  Il ne faut pas déclarer les paramètres formels dans le tableau de déclaration d'objets locaux.  Dans la déclaration de la fonction, les paramètres formels de même type sont séparés par des virgules, tan disque les paramètres de types différents sont séparés par des points virgules.  Lors de l’appel, les paramètres effectifs sont séparés par des virgules. Applications : Exercice N°1 (Série N°5) 11), 12), 13) et 14)

5

2ème T.I

Les sous programmes

III. LES PROCÉDURES : Activité 2 : Ecrire une STAP d’un programme qui permet de permuter deux entiers a et b saisis au clavier. 1) Définition : une procédure est un sous-programme qui peut avoir un ou plusieurs résultats de type

simple ou composée. 2) Vocabulaire et syntaxe a) Déclaration d’une procédure •

Syntaxe en spécification

Spécification de la procédure nom_procedure Procedure nom_procedure(pf1,pf2 : type1 ; pf3 :type2 ;…) Résultat : le(s) resultat(s) de la procédure Traitement_1 …. Traitement_n Fin nom_procedure •

Syntaxe en algorithme

0) Procedure nom_procedure (pf1, pf2 : type1 ; pf3 : type2 ; …)

1) … … n) Fin nom_procedure N.B : Dans la déclaration de la procédure [Procedure nom_procedure(pf1,pf2 : type1 ; pf3 :type2 ;…)] : les objets pf1, pf2 et pf3 sont appelées paramètre formels. •

Syntaxe en Pascal

Procedure nom_procedure ( pf1, pf2 : type1 ; pf3 : type2 ; … ) ;

Entête

Const …..; Type …...; Var …..; Function ……; Procedure …..;

Déclaration locale

Begin ……; ……;

Corps de la procédure

End ; b) L’appel d’une procédure

L’appel d’une procédure permet d’exécuter les instructions de la procédure (par le programme appelant), en remplaçant les paramètres formels par les paramètres effectifs. •

En spécification et en algorithme : nom_procedure ( pe1 , pe2 , ….)



En Pascal: Nom_procedure( pe1 , pe2 , ….) ;

Remarque : Dans l’appel de la procédure [nom_procedure ( pe1 , pe2 , ….)] : pe1 et pe2 sont appelés paramètres effectifs.

6

2ème T.I

Les sous programmes

Réponse Activité 1 : Program permutation ; Uses wincrt ; Var pe1 , pe2 : integer ; Procedure permut ( x , y : integer) ; Var z : real ; Begin z := x ; x := y ; y := z ; Writeln(‘x = ’ ,x, ’ et y = ’, y ); End; Begin

End.

{ entete du programme principal} { variables globales } { entete de la procedure } { variables locales } { debut de la procedure}

{ fin de la procedure}

{debut du programme principal} Write(‘ a = ’); readln(a); Write(‘ b = ’); readln(b); Permut ( a , b ) ; {appel de la procedure permute} Writeln(‘a = ’ , a , ‘ et b = ‘ , b ); {fin du programme praincipal}

3) Modes de passage des paramètres : Lors de l'appel d'un sous-programme, un échange de données est établi entre le programme (ou le module) appelant et le module appelé. Cet échange s'appel aussi passage des paramètres. On distingue deux modes de passage de paramètres : le mode de passage par valeur et le mode de passage par variable. a) Passage par valeur : Exemple : Program permutation ; Uses wincrt ; Var a , b : integer ; Procedure permut ( x , y : integer) ; Var z : integer ; Begin z := x ; x := y ; y := z ; End;

Illustration pour a = 4 et b = 11 Avant appel de permut a = ……

b = ……

Exécution de permut a = ……

b = ……

Après appel de permut a = ……

Begin Write(‘ a = ’); readln(a); Write(‘ b = ’); readln(b); Permut ( a , b ) ; Writeln(‘a = ’ , a , ‘ et b = ‘ , b ); End. 7

b = ……

2ème T.I

Les sous programmes

Les paramètres transmis par valeur font communiquer l’information dans un seul sens : du programme (ou sous-programme) appelant vers le sous-programme appelé Programme appelant

Sous-programme appelé

Toute modification des paramètres formels est sans effet sur les paramètres effectifs. b) Passage par variable :

Exemple : Program permutation ; Uses wincrt ; Var a , b : integer ; Procedure permut ( VAR x , y : integer) ; Var z : integer ; Begin z := x ; x := y ; y := z ; End;

Illustration pour a = 4 et b = 11 Avant appel de permut a = ……

b = ……

Exécution de permut a = ……

b = ……

Après appel de permut a = ……

Begin Write(‘ a = ’); readln(a); Write(‘ b = ’); readln(b); Permut ( a , b ) ; Writeln(‘a = ’ , a , ‘ et b = ‘ , b ); End.

8

b = ……

2ème T.I

Les sous programmes

Le passage par variable permet au programme de transmettre une valeur a la procédure et vis versa : le transfert d’information s’effectue dans les deux sens.

Les paramètres transmis par variable font communiquer l’information dans les deux sens : du programme (ou sous-programme) appelant vers le sous-programme appelé et inversement. Programme appelant

Sous-programme appelé

N.B : • •

Dans l’entête de la procédure, on doit précéder chacun des paramètres formels transmis par variable par le mot clé VAR. Si les paramètres formels transmis par variable sont d’un même type, on pourra les regrouper après un même VAR, en les séparant par des virgules.

Application 1 : Exercice N°1 (Série N°5) 1), 5), 10) et 16) Application 2 : Exercice N° 17 (Série N°5)

9

Related Documents

Programmes
April 2020 9
Programmes
November 2019 20
Programmes Offered
June 2020 16
Ch12_sous Programmes
April 2020 12
Sous Programmes
June 2020 10