CSI3525: Concepts des Langages de Programmation Notes # 11: Sous-Programmes ( Lire Chapitre 8 )

Slides:



Advertisements
Présentations similaires
Chapitre annexe. Récursivité
Advertisements

Les fonctions A quoi ça sert ?
Calculs de complexité d'algorithmes
3- Déclaration et accès aux objets
Paramètres et pointeurs
INTRODUCTION.
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
CSI3525: Concepts des Langages de Programmation Notes # 5: Langages de Programmation Fonctionelle I: Introduction au Scheme.
Les bases de l’Algorithmique
Principes de programmation (suite)
Points importants de la semaine Les fonctions. La portée. La passage par copie. Les tableaux.
Sous-programmes Concepts généraux Passage de paramètres Fonctions
Structures de données linéaires
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Récursivité.
Démarche de résolution de problèmes
Concepts de base : la Classe Pour faire une comparaison simple, une classe serait a priori, une structure C avec des variables et des fonctions.
Expressions et assignations
Analyse et Conception orientée objet
Initiation à la conception de systèmes d'information
CSI3525: Concepts des Langages de Programmation Notes # 12: Implementation des Sous-Programmes ( Lire Chapitre 9 )
Points importants de la semaine Le paramétrage. La portée. Le passage par copie. Le passage par référence.
Algorithmique et Programmation
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Introduction à l’algorithmique
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Introduction à la programmation I Fonctions Structures de contrôle Structures de données (arrays simples et indexés) Variables locales et globales.
Introduction au paradigme orienté-objet (suite)
Semaine #1 INF135 par Frédérick Henri.
Points importants de la semaine Le préprocesseur. La conversion de types. Les fonctions.
GPA435, GPA – ÉTS, T. Wong Génie de la production automatisée GPA435 Système dexploitation et programmation de système Chapitre 6 Partie II 2014.
Programmation concurrente
CSI3525: Concepts des Langages de Programmation
CSI3525: Concepts des Langages de Programmation Notes # 7: Noms, Liaisons, Verification de Type et Portee ( Lire Chapitre 4 )
1 CSI3525: Concepts des Languages de Programmation Notes # 3: Description Syntaxique des Languages.
CSI3525: Concepts des Languages de Programmation
Chapitre 9 Les sous-programmes.
CSI3525: Concepts des Langages de Programmation Notes # 6: Langages de Programmation Fonctionelle II: Introduction au ML.
Gestion de Fichiers GF-5: Storage Secondaire: Bandes Magnetiques (Base sur Chapitres 3 de Folk, Zoellick & Riccardi, File Structures, An Object-Oriented.
Procédures et fonctions
Plan cours La notion de pointeur et d’adresse mémoire.
Gestion de Fichiers GF-3: Structures d’Enregistrements, Acces Sequentiel et Direct, Manipulation de classes en C++ (Base sur des segments des Chapitres.
Paradigmes des Langages de Programmation
Paradigmes des Langages de Programmation
Paradigmes des Langages de Programmation
INTRODUCTION.
Algorithmique et programmation (1)‏
Créer des packages.
Un survol du language C.
CSI3525: Concepts des Langages de Programmation Notes # 13: Introduction au SmallTalk.
Cours C++ Fonctions Surcharge d’opérateurs Passage d’arguments
Tutorat en bio-informatique
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
Tutorat en bio-informatique Le 14 novembre Au programme… Les objets –Propriétés (attributs) –Constructeurs –Méthodes.
Le langage Racket (Lisp)
Interprétation/Génération de code pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
CSI 3525, Implémentation des sous-programmes, page 1 Implémentation des sous-programmes L’environnement dans les langages structurés en bloc La structure.
ISBN Chapitre 10 L'implémentation des sous- programmes.
Introduction et Généralités sur l’Algorithmique
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Conception de Programmes - IUT de Paris - 1ère année Quelques éléments du langage C++ Les références La surcharge de fonctions Les fonctions «
8PRO107 Éléments de programmation Les adresses et les pointeurs.
Scripts et fonctions Instructions de contrôle
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
L ES INSTRUCTIONS DE L ECTURE, E CRITURE ET A FFECTATION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université.
Transcription de la présentation:

CSI3525: Concepts 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: 1. Quelle partie de largument est donnee au sous- programme: 1. Seulement sa valeur 2. Seulement son addresse 3. Et sa valeur et son addresse. 2. Quelles restrictions sont appliquees sur lusage de largument: 1. Permission de lire 2. Permission decrire 3. 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.