CSI 3525, sousprogrammes, page 1 - PowerPoint PPT Presentation

1 / 21
About This Presentation
Title:

CSI 3525, sousprogrammes, page 1

Description:

CSI 3525, sous-programmes, page 18. Les effets secondaires des ... Fonctions (2) CSI 3525, sous-programmes, page 19. Sous-programmes en tant que param tres ... – PowerPoint PPT presentation

Number of Views:46
Avg rating:3.0/5.0
Slides: 22
Provided by: SITE71
Category:

less

Transcript and Presenter's Notes

Title: CSI 3525, sousprogrammes, page 1


1
Sous-programmes
  • Concepts généraux
  • Passage de paramètres
  • Fonctions
  • Sous-programmes en tant que paramètre

2
Concepts généraux
  • Originalement, les sous-programmes (procédures et
    fonctions) étaient un mécanisme de réutilisation
    du code, une façon déviter la répétition.
    Maintenant, on pensent aux sous-programmes comme
    un mécanisme dabstraction.
  • Un sous-programme est un bloc nommé (avec une
    porté locale) qui encapsule un algorithme.
  • Sémantiquement, un sous-programme est une
    opération complexe qui peut être initiée
    (appelée) comme si elle était une opération de
    base. On dénomme ce mécanisme, labstraction de
    processus.

3
Un sous-programme
  • est défini au moyen dopérations de bas niveau,
  • possède un nom,
  • incorpore un moyen daccepter des paramètres et
    de retourner des résultats (le passage de
    paramètres et la communication via des objets
    non-locales),
  • est exécuté figeant lunité du programme ayant
    appelé ce sous-programme, puis en exécutant les
    instructions du bloc, avant de revenir à lunité
    layant appelé.

4
  • Lentête dun sous-programme nom, mode de
    passage des paramètres, le type des valeurs
    retournées (si le sous programme est une
    fonction).
  • Le corp dun sous-programme une séquence
    dinstructions.
  • Une procédure étend le langage de programmation
    elle devient une nouvelle instruction. De façon
    similaire, une fonction est une nouvelle
    opération.

5
Paramètres
  • Un paramètre dun sous-programme est la
    généralisation dun objet manipulé par les
    instructions du bloc correspondant un
    sous-programme devrait fonctionner de la même
    manière, peu importe la valeur des paramètres. On
    les appel aussi dummy variables.
  • Le passage de paramètres signifie le replacement
    des entités généralisées dans la déclaration dun
    sous-programme (paramètres formels) par des
    objets concrets.

6
Passage de Paramètres
  • Le mode de passage de paramètres détermine
    comment les arguments seront transmis au
    sous-programme
  • la valeur seulement
  • ladresse seulement
  • ladresse et la valeur
  • et les restrictions sur lusage de ces arguments
  • lecture seulement
  • écriture seulement
  • lecture/écriture.

7
Un modèle simplifié dune procédure
  • Une procédure est une boite noire qui lit des
    données en entré et /ou écrit des les résultats
    en sortie.

8
Passage par valeur
  • Le Passage par valeur est grandement utilisé
  • paramètres in dAda
  • paramètres value de Pascal
  • tout les paramètres de Algol-68, C.
  • Seul la valeur dun paramètre est donnée au
    sous-programme. Pour conserver cette valeur, on
    utilise une variable locale (qui devient
    ladresse du paramètre).
  • Ceci est normalement implémenté en copiant la
    valeur du paramètre dans un espace mémoire
    appartenant au sous-programme. Ceci peut être
    coûteux si les paramètres sont des objets de
    grande taille, comme des tableaux.

9
Passage par résultat
  • Le passage par résultat est une façon de
    transmettre les sorties dun sous programme. En
    Ada
  • paramètre out
  • Ladresse (et non la valeur) du paramètre est
    envoyée au sous-programme mais en lui donnant
    accès pour lécriture seulement ( write-only ).
    Techniquement, on a un objet local qui ne peut
    apparaître dans des expressions.

10
Passage par valeur-résultat
  • En Ada
  • paramètres in out
  • Appelé aussi passage par copie.
  • Quand le sous-programme est activé, la valeur des
    paramètres est copiée dans un objet local. Après
    lexécution du sous-programme, la valeur finale
    de cet objet est recopiée dans le paramètre.

11
Exemple de passage par valeur-résultat
  • -- procedure P(in out X someType)-- un bloc Q
    appel P(Z), Z vient de Q
  • begin X Z -- le corp de P utilise X
    Z Xend
  • Cette méthode, et le passage par résultat peuvent
    dans in certaines situations bizarres
    dépendre de lordre dans lequel les paramètres
    sont évalués (voir le manuel).

12
Passage par référence
  • paramètres var en Pascal
  • Tout paramètres en Fortran (anciennes versions).
  • Ladresse et la valeur sont toute deux disponible
    dans les instructions du sous-programme.
  • Ceci est implémenté par ladresse indirecte le
    paramètre est en effet ladresse dune variable
    de lunité ayant appelée le sous-programme.
    Aucune copie nest nécessaire.

13
Exemple de passage par référence
  • -- procedure P(var X someType)-- un bloc Q
    appel P(Z), Z vient de Q
  • begin -- le corp de P utilise Zend
  • Tout changement de Z à lintérieur de P est
    préservé après que P soit terminé, et sera
    visible dans Q.

14
Exemple de passage de paramètres Pascal
  • program P
  • var J integer
  • A array 1..10
  • of integer
  • procedure SWAP(
  • MODE X,Y integer)
  • var TMP integer
  • begin TMP X X Y Y TMP
  • end
  • begin J 3 AJ 6
  • SWAP(J, AJ)
  • write(J, A3)
  • end.
  • MODE in
  • J 3, A3 6(aucun changement)
  • MODE out
  • impossible (on ne peut lire la valeur de X)
  • MODE ref ou in out
  • J 6, A3 3

15
À considérer
  • Un problème important du passage par référence
    peut être la dénomination ( aliasing ). Une
    situation possible passer la même variable en
    tant que deux paramètres différent. Une autre
    possibilité une variable non-locale à laquelle
    on fait référence dans le sous-programme qui est
    également un paramètre.
  • Un paramètre passé par résultat, valeur-résultat
    ou référence doit être une variable.
  • Comment le passage par référence est-il différent
    du passage par valeur-résultat?

16
Prolog est différent
  • La classification des modes de passage de
    paramètres basé sur les adresses et valeurs est
    raisonnable pour les langages impératifs ayant
    des variables pouvant être modifiées. Cependant,
    elle ne sapplique pas à Prolog, où les adresses
    ne sont jamais disponibles (en particulier, il
    ny a pas dassignations).
  • append(a, b, Result) in in out
  • append(First, Second, a,b) out out
    in
  • append(X,b, c,Y, a,P,Q,d) ni in
    ni out

17
Fonctions
  • Une fonction produit une valeur, retournée par
    une instruction spéciale telle que
  • return someValue
  • ou assignée au nom de la fonction (comme en
    Pascal).
  • Quand les fonctions sont utilisées dans des
    expressions, elles enrichissent le langage. On
    peut les traiter comme des opérateurs. Par
    exemple, si EXP(X, Y) a été défini pour calculer
    XY, on peut lutiliser dans une expression
  • Z 2.0 EXP(A, N)
  • malgré que lexposant nétait originalement pas
    défini dans le langage.

18
Fonctions (2)
  • Les effets secondaires des fonctions sont un
    problème. Idéalement, seul les paramètres in (et
    aucun effet secondaire) ne devrait être permis
    dans une fonction mathématiquement correcte.
  • Si des effets secondaires sont nécessaires, une
    procédure devrait être utilisée avec un
    paramètre réservé pour transmettre la valeur qui
    aurait été retournée par la fonction.
  • Un choix de conception (concernant
    lorthogonalité!) restreindre le type des objets
    pouvant être retourné par les fonctions.

19
Sous-programmes en tant que paramètres
  • Le concept est simple un algorithme qui dépend
    dun autre algorithme.
  • Scheme est conçu parfaitement de ce coté les
    langages impératifs le sont moins.
  • Considérez lexemple dune intégration
    numériquetrouver laire sous la courbe définie
    par une fonction mathématique.

20
Sous-programmesen tant que paramètres Pascal
  • function DEFINITE_INTEGRAL(
  • function F(ARG real) real
  • LOW, HIGH real) real
  • const N_INTERVALS 1000
  • var DELTA, SUM, X real I integer
  • begin
  • DELTA (HIGH - LOW) / N_INTERVALS
  • X LOW
  • SUM F(X)
  • for I 1 to N_INTERVALS - 1 do
  • begin
  • X X DELTA
  • SUM SUM 2.0 F(X)
  • end
  • X X DELTA
  • SUM SUM F(X)
  • DEFINITE_INTEGRAL 0.5 DELTA SUM
  • end

21
Sous-programmesen tant que paramètres Pascal (2)
  • Nimporte quel fonction real ? real peut être
    passé à cette méta-fonction
  • function SQ( A real ) real
  • begin SQ A A end
  • ...
  • x DEFINITE_INTEGRAL(SQ, 0.0, 9.0)
  • Cet appel retourne (environs) 243.0.
Write a Comment
User Comments (0)
About PowerShow.com