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 Report

Transcript 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]Vmax then Vmax :=V[n] ; end ; procedure Tform1.bnTraitementClick(Sender : Tobject) ;

...

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