Deust @mrl Cours 6 • • • • • Définitions de nouvelles procédures Transmissions de données/résultats Déclarations globales/locales Visibilités Interface/implementation Procédures • rappel : les procédures générées automatiquement exécutées sur évènement ou sur appel explicite • pourquoi.
Download ReportTranscript Deust @mrl Cours 6 • • • • • Définitions de nouvelles procédures Transmissions de données/résultats Déclarations globales/locales Visibilités Interface/implementation Procédures • rappel : les procédures générées automatiquement exécutées sur évènement ou sur appel explicite • pourquoi.
Deust @mrl Cours 6 • Définitions de nouvelles procédures • Transmissions de données/résultats • Déclarations globales/locales • Visibilités • Interface/implementation 1
Procédures • rappel : les procédures générées automatiquement exécutées sur évènement ou sur appel explicite • pourquoi définir des procédures répartir les tâches diviser la difficulté regrouper les instructions d’une même étape 2
Définition de procédure • en-tête; déclarations internes; begin instructions end; • en-tête : Procedure nomprocédure(paramètres); 3
Paramètres • ils représentent les données et/ou résultats • on dit aussi arguments formels • les types doivent déjà exister • 3 catégories de transmission : a) valeur b) adresse c) constante 4
Déclarations internes • déclaration de constantes, types et variables, • comme déclarations déjà rencontrées • ce sont des noms utilisables uniquement par la procédure : locaux si un nom identique est défini en dehors, il est invisible par la procédure 5
Instructions • les mêmes qu’ailleurs : affectation, si, boucles, ...
• le nom de la procédure ne contient pas de valeur • par contre, l’utilisation de son nom à l’intérieur d’une procédure la relance !
c’est la récursivité 6
Utilisation d’une procédure • une instruction complète pour faire appel : nomprocédure(paramètres)... • les paramètres fournis sont appelés arguments effectifs • ce sont les valeurs transmises à la procédure constantes ou variables ou expressions • et/ou les résultats renvoyés par la procédure variables uniquement (adresse transmise) 7
Exemple complet clic sur bouton Traitement : • Calculs de 2 suite de valeurs (abscisses et ordonnées de points) • Extrêmes des abscisses, • Extrêmes des ordonnées 8
Déclarations globales • const NbMax=200; • type TValeurs=array[1..NbMax] of real; On pourra “remplir” jusqu’à 200 éléments dans les variables de type TValeurs éventuellement moins, pas plus, numérotés de 1 à 200 on peut utiliser NbMax pour limiter plus loin… 9
procedure Calculs(Var V1,V2 :Tvaleurs ; Nb :integer) ; var n :integer ; begin for n :=1 to Nb do begin V1[n] :={expression de calcul pour chaque valeur de V1} V2[n] :={expression de calcul pour chaque valeur de V2} end ; end ; procedure Tform1.bnTraitementClick(Sender : Tobject) ; var X,Y :Tvaleurs ; Xmin,Xmax,Ymin,Ymax :real ; begin Calculs(X,Y,200) ; 10
Scénario d’exécution de bnTraitementClick Lancement de Calculs • L'adresse de X est transmise pour que V1 soit logé au même endroit que X • Idem pour Y : V2 occupe la même zone que Y • Par contre Nb occupe une nouvelle zone qui lui est propre 11
procedure MinMax(Const V :Tvaleurs ;Nb :Integer ; Var Vmin,Vmax :real) ; var n :integer ; begin Vmin :=V[1] ; Vmax :=V[1] ; for n :=2 to Nb do if V[n]
...
begin
...
MinMax(X,200,Xmin,Xmax) ; 12
Lancement de MinMax pour X • L’adresse de X est transmise pour que V occupe la même zone de mémoire que X mais const interdit les modifs de V • Nb occupe lui aussi une nouvelle zone • L'adresse de XMin est transmise pour que VMin soit logé au même endroit que Xmin • Idem pour Xmax : Vmax occupe la même zone que XMax 13
Lancement de MinMax pour Y • L’adresse de X est transmise pour que V occupe la même zone de mémoire que X mais const interdit les modifs de V • Nb occupe lui aussi une nouvelle zone • L'adresse de YMin est transmise pour que VMin soit logé au même endroit que Ymin • Idem pour Ymax : Vmax occupe la même zone que YMax 14
Paramètres (2) • a) on ne met rien devant un paramètre “donnée” • b) on met var devant les paramètres “résultats” • c) on met const devant les paramètres “données” si on ne veut pas utiliser une nouvelle zone de mémoire 15
Positions des déclarations et des sous-programmes • dès le début de la partie implementation • ils sont alors utilisables dans tout ce qui suit 16
Déclarations globales et locales • const, type, var et sous-programmes • globales : en dehors de tout sous programme • locales : internes à un sous-programme 17
Visibilité des éléments déclarés • globaux : de partout sauf redéclaration interne • locaux : à l’intérieur mais pas à l’extérieur 18
Cas de sous-programmes déclarés dans un autre • ils sont visibles par le parent • ils peuvent accéder aux éléments du parent • mais le parent ne peut accéder aux éléments déclarés dans ses enfants 19
Interface et implementation • interface : ce qui est visible en dehors de l’unité • implementation : définitions des éléments propres à l’unité ces définitions sont invisibles en dehors 20