CSI3525: Concepts des Langages de Programmation - PowerPoint PPT Presentation

About This Presentation
Title:

CSI3525: Concepts des Langages de Programmation

Description:

Le parametre actuel remplace le parametre formel: imagine la modification du sous-programme en inserrant le parametre actuel plutot que le parametre formel. ... – PowerPoint PPT presentation

Number of Views:48
Avg rating:3.0/5.0
Slides: 18
Provided by: siteUo
Category:

less

Transcript and Presenter's Notes

Title: CSI3525: Concepts des Langages de Programmation


1
CSI3525Concepts des Langages de Programmation
  • Notes 11
  • Sous-Programmes
  • ( Lire Chapitre 8 )

2
Introduction
  • Au depart, les sous-programmes (procedures et
    fonctions) ont ete concus comme un mecanisme de
    re-utilisation de code.
  • Maintenant, ils sont consideres comme un
    mecanisme fondamental dabstraction.
  • Un sous-programme est un bloc nomme, ayant une
    porte locale et encapsulant un algorithme.
  • Au niveau semantique, un sous-programme est une
    operation complexe qui peut etre initiee
    (appelee) comme une operation elementaire.
  • On parle dabstraction de processus.

3
Elements dun Sous-Programme I
  • Un sous-programme
  • est defini grace a des operations de plus bas
    niveau,
  • a un nom,
  • a une methode qui lui permet daccepter des
    arguments et de delivrer des resultats (passage
    de parametres et communications a travers des
    objets non-locaux).
  • est evalue en suspendant le programme dappel, en
    executant les instructions du bloc et en
    retournant au programme dappel.

4
Elements dun Sous-Programme II
  • L entete dun sous-programme est representee
    par
  • un nom,
  • des modes de passage de parametres,
  • un type correspondant au type de valeur quil
    retourne si le sous-programme est une fonction.
  • Le corps dun sous-programme est represente par
  • une sequence dinstructions.
  • Un sous-programme peut etre defini (ou declare),
    mais jamais appele. Par ailleur, il peut aussi
    etre appele tres souvent et meme rcursivement.

5
Vue Abstraite des Sous-Programmes
  • Une procedure etend le langage cest un nouveau
    type dinstruction. De meme, une fonction est un
    nouveau type doperation.
  • Les parametres dun sous-programme sont la
    generalization dobjets manipules par les
    instructions du sous-programme un sous-programme
    doit fonctionner de la meme facon pour toutes les
    valeurs parametriques. On parle aussi de dummy
    variables.
  • Lorsquon parle de passage de parametre, on veut
    dire remplacement dentites generalisees dans la
    declaration du sous-programme (parametres
    formels) avec des objets existants (parametres
    actuels).

6
Passage de Parametre
  • Le mode de passage dun parametre determine
  • Quelle partie de largument est donnee au
    sous-programme
  • Seulement sa valeur
  • Seulement son addresse
  • Et sa valeur et son addresse.
  • Quelles restrictions sont appliquees sur lusage
    de largument
  • Permission de lire
  • Permission decrire
  • Permission de lire et decrire.

7
Passage par Valeur
  • Seule la valeur du parametre est donnee au
    sous-programme. Pour sauvegarder cette valeur, on
    utilise une variable locale qui devient son
    addresse.
  • Ceci est implemente en calculant et copiant la
    valeur du parametre actuel dans lespace de
    memoire du sous-programme.
  • Ceci peut couter cher si le parametre est un obet
    large tel quun tableau.
  • Le passage par valeur est utilise en Ada par le
    parametre in, par le parametre-valeur du
    Pascal et par tous les parametres en Algol-68 et
    en C.

8
Passage par Resultat
  • Laddresse (mais pas la valeur) du parametre est
    rendue disponible au sous-programme seulement
    pour acces par ecriture.
  • En principe, ce parametre est considere comme un
    objet local qui ne peut pas apparaitre dans des
    expressions.
  • Le passage par resultat est utilise en Ada par
    le parametre out il nest pas disponible en
    Pascal.

9
Passage par Valeur-Resultat (egalement Passage
par Copie)
  • Lorsque le sous-programme est active, la valeur
    du parametre est copie dans un objet local. La
    valeur finale de cet objet est re-copiee dans le
    parametre.
  • Le passage par valeur-resultat est utilise en Ada
    par le parametre in-out il nest pas
    disponible en Pascal.
  • Note Les passages par resultat et par
    valeur-resultat peuvent, dans des situations
    assez bizarres, etre sensitifs a lordre dans
    lesquels les parametres sont evalues.

10
Passage par Reference I
. (egalement Passage par Addresse)
  • Aussi bien les addesses que les valeurs sont
    disponibles aux instructions du sous-programme.
  • Ceci est implemente par reference indirecte le
    parametre actuel est laddresse dune variable
    dans le programme dappel. Il nest pas
    necessaire de copier la valeur.
  • Lun des grands problemes causes par le passage
    par reference est la declaration dalias. Par
    exemple, on peut passer la meme variable comme
    deux parametre actuels differents. De meme, une
    variable non-locale referenciee dans le
    sous-programme et passee comme parametre.

11
Passage par Reference II
. (egalement Passage par Addresse)
  • Le passage par reference est utilise en Pascal
    par le parametre var il est utilise par tous
    les parametres dans le vieux FORTRAN il nest
    pas disponible en Ada.
  • Note 1 En quoi le mode de passage par reference
    differe du passage par valeur-resultat?
  • Note 2 Un parametre passe par resultat,
    valeur-resultat et reference doit etre une
    variable.

12
Model Simplifie de Procedures
  • in ?
  • ? out
  • in-out ? ? in-out
  • reference ? ? reference
  • Note la classification de parametres formels
    basee sur les addresses et les valeurs nest
    significative que dans les langages a variables
    modifiables. Exemple elle nest pas applicable
    au Prolog ou les addresses ne sont jamais
    disponibles (puisquil ny a pas daffectation).

13
Passage par Nom
. (egalement Evaluation Delayee)
  • Le parametre actuel remplace le parametre formel
    imagine la modification du sous-programme en
    inserrant le parametre actuel plutot que le
    parametre formel.
  • Si la location dun parametre est necessaire
    (exemple pour une affectation), elle est
    re-evaluee a chaque reference.
  • Si la valeur dun parametre est necessaire, elle
    est aussi re-evaluee a chaque fois quelle
    apparait dans le corps modifie du sous-programme.
  • Levaluation delayee dune expression demande
    lacces a ses variables (i.e., son environement)

14
Fonctions I
  • Une fonction produit une valeur, retournee par
    une instruction telle que
  • return expression
  • ou assignee au nom de la fonction (comme en
    Pascal).
  • Lorsquune fonction est utilisee dans une
    expression, elle enrichie le langage en
    introduisant (dans un certain sens) de nouveaux
    operateurs.

15
Fonctions II
  • Les effets secondaires dans les fonctions sont
    problematiques.
  • Le mieux serait de ne permettre que des
    parametres in et aucun effet secondaires. Cela
    refleteraient vraiement les fonctions
    Mathematiques.
  • Si des effets secondaires sont reellement
    necessaires, une procedure devrait etre utilisee
    avec un parametre reserve pour la transmission de
    la valeur que la fonction retournerait.
  • Probleme de Conception Quels types dobjets
    devraient-on permettre a une fonction de
    retourner?

16
Passage de Sous-Programmes comme Parametres
  • Lidee est simple un algorithme qui depend dun
    autre algorithme.
  • Lexample typique est celui de lintegration. Il
    consiste a trouver la surface contenue sous la
    courbe decrite par une fonction.
  • Le sous-programme integration doit etre capable
    de calculer lintegrale de nimporte quelle
    fonction.
  • Voir lexample.

17
Les Sous-Programmes Surcharges
  • Ceci est similaire a lidee de surchargement
    doperateurs.
  • En particulier, une procedure ou une fonction
    peut etre definie plusieures fois avec le meme
    nom du moment que le type de tous les parametres
    ne sont pas les memes.
  • Ceci est permis en Ada et en C.
  • Voir lexemple.
Write a Comment
User Comments (0)
About PowerShow.com