Sous-programmes Concepts généraux Passage de paramètres Fonctions

Slides:



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

Algorithmes et structures de données 9ème cours Patrick Reuter maître de conférences
Portée des variables VBA & Excel
GEF 243B Programmation informatique appliquée Expressions de type mixte et blocs §
3- Déclaration et accès aux objets
(Classes prédéfinies – API Java)
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Exercices Algorithmiques
C.
Programmation Orientée Objet (POO)
FLSI602 Génie Informatique et Réseaux
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
CSI3525: Concepts des Langages de Programmation Notes # 11: Sous-Programmes ( Lire Chapitre 8 )
Principes de programmation (suite)
Points importants de la semaine Les fonctions. La portée. La passage par copie. Les tableaux.
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Récursivité.
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Expressions et assignations
Faculté I&C, Claude Petitpierre, André Maurer What is this ? (Quest ce que this ?)
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.
LES SOUS-PROGRAMMES USTL Licence S.T.A. S3 A.P.I.2.
Algorithmique et Programmation
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
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.
Points importants de la semaine Les sous-programmes. Les paramètres.
Points importants de la semaine Les constantes de compilation. 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
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
CSI 3525, Noms etc., page 1 Noms, attachement, porté, vérification de type Noms, variables Attachement Porté Constantes Initialisation des variables Vérification.
Environnements d'exécution
Ift 2251 Introduction au Génie Logiciel
Chapitre 9 Les sous-programmes.
Chapitre 3 Syntaxe et sémantique.
8PRO100 Éléments de programmation Les types composés.
Partie II Sémantique.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Instructions de contrôle
Introduction à Linda Béat Hirsbrunner References Nicholas Carriero, David Gelernter : "Linda in context", Communications of ACM, vol. 32 (n° 4, April 1989)
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
Procédures et fonctions
Plan cours La notion de pointeur et d’adresse mémoire.
Animateur : Med HAIJOUBI
JavaScript Nécessaire Web.
Paradigmes des Langages de Programmation
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
Les adresses des fonctions
JavaScript.
Créer des packages.
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)
Introduction au langage C Fonctions et Procédures
Méthodes et outils de conception Introduction à la programmation Paramètre de retour Appel d’une fonction Portée des variables Définition Pourquoi les.
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.
Cours LCS N°4 Présenté par Mr: LALLALI
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 «
1 Cours 6 Définitions de nouvelles procédures Transmissions de données/résultats Déclarations globales/locales Visibilités Interface/implementation.
CPI/BTS 2 Programmation Web Fonctions & Includes Prog Web CPI/BTS2 – M. Dravet – 02/11/2003 Dernière modification: 02/11/2003.
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'exécution d'un programme nécessite l'utilisation des ressources de l'ordinateur : temps de calcul pour exécuter les opérations, et l'occupation de la.
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:

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

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 d’abstraction. 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, l’abstraction de processus.

Un sous-programme… est défini au moyen d’opérations de bas niveau, possède un nom, incorpore un moyen d’accepter 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 l’unité du programme ayant appelé ce sous-programme, puis en exécutant les instructions du bloc, avant de revenir à l’unité l’ayant appelé.

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

Paramètres Un paramètre d’un sous-programme est la généralisation d’un 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 d’un sous-programme (paramètres formels) par des objets concrets.

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

Un modèle simplifié d’une 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. in out in out

Passage par valeur Le Passage par valeur est grandement utilisé: paramètres in d’Ada; paramètres value de Pascal; tout les paramètres de Algol-68, C. Seul la valeur d’un paramètre est donnée au sous- programme. Pour conserver cette valeur, on utilise une variable locale (qui devient l’adresse 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.

Passage par résultat Le passage par résultat est une façon de transmettre les sorties d’un sous programme. En Ada: paramètre out L’adresse (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.

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 l’exécution du sous- programme, la valeur finale de cet objet est recopiée dans le paramètre.

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 := X; end; Cette méthode, et le passage par résultat peuvent — dans in certaines situations bizarres — dépendre de l’ordre dans lequel les paramètres sont évalués (voir le manuel).

Passage par référence paramètres var en Pascal; Tout paramètres en Fortran (anciennes versions). L’adresse et la valeur sont toute deux disponible dans les instructions du sous-programme. Ceci est implémenté par l’adresse indirecte: le paramètre est en effet l’adresse d’une variable de l’unité ayant appelée le sous-programme. Aucune copie n’est nécessaire.

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 Z end; Tout changement de Z à l’intérieur de P est préservé après que P soit terminé, et sera visible dans Q.

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; A[J] := 6; SWAP(J, A[J]); write(J, A[3]); end. MODE = in: J = 3, A[3] = 6 (aucun changement) MODE = out: impossible (on ne peut lire la valeur de X) MODE = ref ou in out: J = 6, A[3] = 3

À 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?

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 s’applique pas à Prolog, où les adresses ne sont jamais disponibles (en particulier, il n’y a pas d’assignations). 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

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 l’utiliser dans une expression: Z := 2.0 * EXP(A, N); malgré que l’exposant n’était originalement pas défini dans le langage.

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 l’orthogonalité!): restreindre le type des objets pouvant être retourné par les fonctions.

Sous-programmes en tant que paramètres Le concept est simple: un algorithme qui dépend d’un autre algorithme. Scheme est conçu parfaitement de ce coté; les langages impératifs le sont moins. Considérez l’exemple d’une intégration numérique—trouver l’aire sous la courbe définie par une fonction mathématique.

Sous-programmes en 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 X := X + DELTA; SUM := SUM + 2.0 * F(X) end; SUM := SUM + F(X); DEFINITE_INTEGRAL := 0.5 * DELTA * SUM

Sous-programmes en tant que paramètres: Pascal (2) N’importe 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.