algorithmes et structures de données avancées 6ème cours patrick reuter preuter
TRANSCRIPT
![Page 1: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/1.jpg)
Algorithmes et structures de données avancées
6ème cours
Patrick Reuter
http://www.labri.fr/~preuter
![Page 2: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/2.jpg)
Ingrédients d’algorithmes
• Affectation (ex. mois := 6, jours[1] := 31)• Condition/Comparaison (ex. mois <= 12)• Appel de fonction (ex. writeln(mois))
• Structure de contrôle– Branchements conditionnels (multiples) (si .. Alors .. Sinon)
– Boucles (tant que..faire, pour.. faire)
• Bloc d’instructions (begin .. end)
![Page 3: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/3.jpg)
Aujourd'hui
TYPES:– tableau 1D– tableau 2D– types énumérés– enregistrements– pointeurs
PORTEE :– variables globales– variables locales
APPEL DE FONCTIONS– appel par valeur– appel par référence
![Page 4: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/4.jpg)
Déclaration de variables
Comme dans un livre de recettes
Ingrédients(pour 8-10 personnes) :
- 1 kg de couscous roulé - 1 kg de mouton - 1 poignée de pois chiches - 2 oignons secs - 3-4 tomates fraîches ou 1 cuillère.à soupe de concentré de tomate - 3-4 pommes de terre - 3-4 navets - 3-4 carottes - 3-4 courgettes - 1 tranche de courge - 4 cuillères à soupe d'huile - 1/2 cuillère à café de cannelle - 1 pincée de poivre noir - 1/2 cuillère à soupe de piment rouge doux ou de paprika - 1/2 cuillère à soupe de ras-el-hanout - 1 piment rouge sec - 100 g de beurre ou 3 cuillères à soupe d'huile - sel
Préparation :
La veille, mettez les pois chiches dans un bol d'eau.
Le jour même, roulez le couscous .Si vous utilisez du couscous roulé et séché, rincez-le à l'eau froide, égouttez-le et laissez-le gonfler pendant 30 mn.
Coupez la viande en morceaux.Pelez les oignons et coupez-en 1 en morceaux.
Lavez et passez les tomates à la moulinette.Mettez la viande dans une marmite et ajoutez les morceaux d'oignon, les tomates ou le concentré de tomate dilué dans 1 verre d'eau, l'huile, le poivre, le piment, la cannelle et du sel.
Faites revenir …..
![Page 5: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/5.jpg)
Déclaration de variables
var compteur : integer;
var diviseur : single;
var c : byte;
var precision : double;
var nom : string;
var masculin : boolean;
var jours : array[1..12] of byte;
diviseur := 1.1; { Affectation }compteur : = 1;Nom := ‘Gerhard’;
Nombre entier
Nombre à virgule flottante
Nombre à virgule flottante avec double précision
Chaîne de caractères
Tableau
TYPE
![Page 6: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/6.jpg)
Déclaration de variables
• Types prédéfinis– Integer, boolean, single, …
• Types que l’on peut définir soi-même
type t_tableau = array[1..12] of byte;
var jours : t_tableau;
au lieu de
var jours : array[1..12] of byte;
![Page 7: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/7.jpg)
Organisation de la mémoiretype t_tableau = array[1..12] of byte;var jours : t_tableau; {12 octets}
#0
jours[1] #2000
...
#536.870.910#536.870.911
...
jours[index] #(2000+index-1)
jours[3] #2002
jours[12] #2011
...
Occupe de la place successivedans la mémoire
jours[2] #2001312831
31
![Page 8: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/8.jpg)
• Tableau 2D
![Page 9: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/9.jpg)
Motivation
type t_champ =(vide, blanc, noir); type t_ligne = array[1..8] of t_champ;type t_damier = array[1..8] of t_ligne;var damier : t_damier;var i,j : integer;
Pour initialiser un damier vide :
POUR i = 1 à 8 faire POUR j = 1 à 8 faire damier[i][j] := vide; FIN POURFIN POUR
![Page 10: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/10.jpg)
Enregistrements
![Page 11: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/11.jpg)
Déclaration de variables
• Type enregistrement (structure hétérogène)
type t_enregistrement = RECORDnom_de_variable_1 : type1;nom_de_variable_2 : type2;
...nom_de_variable_n : typen;
END;var dossier : t_enregistrement;
- structure hétérogène, les éléments peuvent être d’un type différent- occupe de la place successive dans la mémoire- « random access » = l’ accès aux différents éléments se fait à coût
égal
![Page 12: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/12.jpg)
Type enregistrement (structure hétérogène)
Exemple• Déclaration du type
type t_date = RECORD an : integer;
mois : byte; jour : byte;
END;
• Déclaration d’une variable
var aujourdhui : t_date;
• Affectationaujourdhui.jour = 17;aujourdhui.mois = 10;aujourdhui.an = 2006;
![Page 13: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/13.jpg)
Enregistrements• Motivation (à ne pas faire !)
type t_couleur = (rouge, vert, jaune);
var joueurnom : array[1..n] of string;var joueurscore : array[1..n] of integer;var joueurcouleur : array[1..n] of t_couleur;
joueurnom[1] := " Martin“;joueurscore[1] := 0;joueurcouleur[1] := rouge;
joueurnom[2] := " Romain“;joueurscore[2] := 0;joueurcouleur[2] := vert;
…
![Page 14: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/14.jpg)
Enregistrements• Motivation (à faire !)
type t_couleur = (rouge, vert, jaune);
type t_joueur = RECORD nom : string;score : integer;couleur : t_couleur;
END;
var joueur : array[1..n] of t_joueur;
joueur[1].nom := " Martin“;joueur[1].score := 0;joueur[1].couleur := rouge;
joueur[2].nom := " Romain“;joueur[2].score := 0;joueur[2].couleur := vert;
…
![Page 15: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/15.jpg)
type t_date = RECORD an : integer;
mois : byte; jour : byte;
END;var aujourdhui : t_date;
aujourdhui.an #4000
...
#536.870.910#536.870.911
...
aujourdhui.an; #4002
...
aujourdhui.an; #400121470
17
#0
Occupe de la place successivedans la mémoire
aujourdhui.an; #4003aujourdhui.mois; #4004aujourdhui.jour; #4005
0
10
![Page 16: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/16.jpg)
Type tableaux d’enregistrements
• Déclaration du type enregistrement :
type t_chanson = RECORD titre : string[100];
artiste : string[100];album : string[100];longueur : integer;date : t_date;
END;
• Déclaration du type tableau
type t_tableau_chansons = array[1..n] of t_chanson;
• Déclaration d’une variable de ce type
var collection : t_tableau_chansons;
• Affectation
collection[1].title = ‘Riders on the storm’;collection[1].artiste = ‘The Doors’;...collection[n].title = ‘Talkin Blues’;...
![Page 17: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/17.jpg)
Type tableaux d’enregistrements
• Exercice
type t_chanson = RECORD titre : string[100];
artiste : string[100];album : string[100];longueur : integer;date : t_date;
END;type t_tableau_chansons = array[1..n] of t_chanson;var collection : t_tableau_chansons;
• Trouver l’artiste d’une chanson donnée ‘kaya’
i := 1;tant que i<=n
i := i + 1;fin tant que
![Page 18: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/18.jpg)
Type tableaux d’enregistrements
• Exercice
type t_chanson = RECORD titre : string[100];
artiste : string[100];album : string[100];longueur : integer;date : t_date;
END;type t_tableau_chansons = array[1..n] of t_chanson;var collection : t_tableau_chansons;
• Trouver l’artiste d’une chanson donnée ‘kaya’
i := 1;tant que i<=n
si collection[i].title = ‘kaya’ alorsafficher collection[i].artiste;
i := i + 1;fin tant que
![Page 19: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/19.jpg)
Type tableaux d’enregistrements
• Exercice
type t_chanson = RECORD titre : string[100];
artiste : string[100];album : string[100];longueur : integer;date : t_date;
END;type t_tableau_chansons = array[1..n] of t_chanson;var collection : t_tableau_chansons;
• Trouver l’artiste d’une chanson donnée ‘kaya’trouve := FAUX;i := 1;tant que (i<=n ET trouve = FAUX)
si collection[i].title = ‘kaya’ alorsafficher collection[i].artiste;trouve := VRAI;
i := i + 1;fin tant que
![Page 20: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/20.jpg)
NOUVEAU : Addressage mémoire
![Page 21: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/21.jpg)
![Page 22: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/22.jpg)
![Page 23: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/23.jpg)
Adresse d’une variable
• Stocké dans 4 Octets (32 bit), comme ça on peut adresser
232 octets = 4 294 967 296 octes
= 4 GO
Limite bientôt atteint
![Page 24: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/24.jpg)
Organisation de la mémoire
var a : byte; ( 1 octet (byte) )
#0#1#2#3
a #4#5
...
#536.870.910#536.870.911
#1.000
...
![Page 25: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/25.jpg)
Organisation de la mémoirevar a : byte;a := 97;
#0#1#2#3
a #4#5
...
#536.870.910#536.870.911
#1.000
...
97
![Page 26: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/26.jpg)
Organisation de la mémoirevar a : byte;a := 97;
#0#1#2#3
a #4#5
...
#536.870.910#536.870.911
#1.000
...
97
Comment connaître l’adresse de a ? Addr(a)
![Page 27: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/27.jpg)
Organisation de la mémoirevar a : byte;a := 97;p_a := Addr(a); { Sauvegarder l’adresse }
#0#1#2#3
a #4#5
...
#536.870.910#536.870.911
#1.000
...
97
Comment connaître l’adresse de a ? Addr(a)
![Page 28: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/28.jpg)
var a : byte;var p_a : ^byte; {4 octets, lire : pointeur vers a}a := 97;p_a := Addr(a); { Sauvegarder l’adresse }
#0#1#2#3
#4
a #5
...
#536.870.910#536.870.911
p_a #1.0000
97
Comment connaître l’adresse de a ? Addr(a)
p_a #1.001p_a #1.002p_a #1.003
5
00
« p_a pointe vers a »
![Page 29: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/29.jpg)
var a : byte;
var p_a : pointer to byte; {4 octets, lire : pointeur vers a}
a := 97;
p_a := Addr(a); { Sauvegarder l’adresse }
{ p_a est 4, p_a^ est 97)
p_a^ := 10; { Déréférencement }
{ p_a est 4, p_a^ est 10)
#0#1#2#3
p_a^ a #4#5
...
#536.870.910#536.870.911
p_a #1.0000
10
Comment connaître l’adresse de a ? Addr(a)
p_a #1.001p_a #1.002p_a #1.003
4
00
![Page 30: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/30.jpg)
var a : byte;
var p_a : ^byte; {4 octets, lire : pointeur vers a}
a := 97;
p_a := Addr(a); { Sauvegarder l’adresse }
p_a^ := 10; { affectation par déréférencement }
a := 10; { affectation }
![Page 31: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/31.jpg)
var a : byte;
var p_a : ^byte; {4 octets, lire : pointeur vers a}
a := 97;
p_a := Addr(a); { Sauvegarder l’adresse }
p_a^ := 10; { affectation par déréférencement }
a := 10; { affectation }
C’est équivalent !!
![Page 32: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/32.jpg)
Définitions
• Déclaration d’un pointeur vers un byte
var p_a : ^byte;
• Déréférencement d’un pointeur :
p_a^
• Connaître l’adresse d’une variable a
Addr(a); {ou bien }@a;
![Page 33: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/33.jpg)
Fonctions
![Page 34: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/34.jpg)
type t_tableau = array[1..n] of integer;var tab : t_tableau;
function dedans(quoi : integer, n : integer) : integer;
var position : integer;var i : integer;
débutposition := 0;i := 1;
tant que (i<=n) faire
si (quoi = tab[i]) alors position := i;
fin si
i := i + 1;
fin tant que
result := position;
fin
![Page 35: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/35.jpg)
type t_tableau = array[1..n] of integer;var tab : t_tableau;
function dedans(quoi : integer, n : integer) : integer;
var position : integer;var i : integer;
débutposition := 0;i := 1;
tant que (i<=n) faire
si (quoi = tab[i]) alors position := i;
fin si
i := i + 1;
fin tant que
result := position;
fin
En-tête de la fonction
![Page 36: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/36.jpg)
type t_tableau = array[1..n] of integer;var tab : t_tableau;
function dedans(quoi : integer, n : integer) : integer;
var position : integer;var i : integer;
débutposition := 0;i := 1;
tant que (i<=n) faire
si (quoi = tab[i]) alors position := i;
fin si
i := i + 1;
fin tant que
result := position;
fin
Corps de la fonction
![Page 37: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/37.jpg)
type t_tableau = array[1..n] of integer;var tab : t_tableau;
function dedans(quoi : integer, n : integer) : integer;
var position : integer;var i : integer;
débutposition := 0;i := 1;
tant que (i<=n) faire
si (quoi = tab[i]) alors position :=i;
fin si
i := i + 1;
fin tant que
result := position;
fin
Paramètres de la fonction(arguments)
![Page 38: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/38.jpg)
type t_tableau = array[1..n] of integer;var tab : t_tableau;
function dedans(quoi : integer, n : integer) : integer;
var position : integer;var i : integer;
débutposition := 0;i := 1;
tant que (i<=n) faire
si (quoi = tab[i]) alors position := i;
fin si
i := i + 1;
fin tant que
result := position;
fin
Type de retourde la fonction
Valeur de retourde la fonction
![Page 39: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/39.jpg)
La portée :
![Page 40: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/40.jpg)
program portee;
var i : byte;
function somme(n : byte) : byte;var i : byte;begin result := 0; for i := 1 to n do begin result := result + i; end;end;
begin i:=3; WriteLn(somme(5)); WriteLn('i : ', i);
readln;
end.
![Page 41: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/41.jpg)
program portee;
var i : byte;
function somme(n : byte) : byte;var i : byte;begin result := 0; for i := 1 to n do begin result := result + i; end;end;
begin i:=3; WriteLn(somme(5)); WriteLn('i : ', i);
readln;
end.
...
...
...
#0
i #100
![Page 42: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/42.jpg)
program portee;
var i : byte;
function somme(n : byte) : byte;var i : byte;begin result := 0; for i := 1 to n do begin result := result + i; end;end;
begin i:=3; WriteLn(somme(5)); WriteLn('i : ', i);
readln;
end.
...
...
3
...
#0
i #100
n #200i #201
5
![Page 43: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/43.jpg)
program portee;
var i : byte;
function somme(n : byte) : byte;var i : byte;begin result := 0; for i := 1 to n do begin result := result + i; end;end;
begin i:=3; WriteLn(somme(5)); WriteLn('i : ', i);
readln;
end.
...
...
3
...
#0
i #100
n #200i #201
5
![Page 44: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/44.jpg)
program portee;
var i : byte;
function somme(n : byte) : byte;var i : byte;begin result := 0; for i := 1 to n do begin result := result + i; end;end;
begin i:=3; WriteLn(somme(5)); WriteLn('i : ', i);
readln;
end.
...
...
3
...
#0
i #100
n #200i #201 1
5
![Page 45: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/45.jpg)
program portee;
var i : byte; { Variable globale }
function somme(n : byte) : byte;var i : byte; { Variable locale }begin result := 0; for i := 1 to n do begin result := result + i; end;end;
begin i:=3; WriteLn(somme(5)); WriteLn('i : ', i);
readln;
end.
![Page 46: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/46.jpg)
program portee;
var i : byte; { Variable globale }
function somme(n : byte) : byte;var i : byte; { Variable locale }begin result := 0; for i := 1 to n do begin result := result + i; end;end;
begin i:=3; WriteLn(somme(5)); WriteLn('i : ', i);
readln;
end.
![Page 47: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/47.jpg)
Appel des fonctions
• Appel par valeur
• Appel par référence
![Page 48: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/48.jpg)
var a : byte;
procedure ajouter (parametre : byte)début
WriteLn(‘parametre’, parametre);
parametre := parametre + 2;
WriteLn(‘parametre’, parametre);fin
débuta := 4;
WriteLn(‘a’, a);
ajouter(a);
WriteLn(‘a’, a);fin
Appel par valeur
![Page 49: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/49.jpg)
var a : byte;
procedure ajouter (parametre : byte)début
WriteLn(‘parametre’, parametre);
parametre := parametre + 2;
WriteLn(‘parametre’, parametre);fin
débuta := 4;
WriteLn(‘a’, a);
ajouter(a);
WriteLn(‘a’, a);fin
Appel par valeur
#0
a #200 #201
#202
#536.870.910#536.870.911
#203
#220#221
...
...
#222
#223...
...
4
![Page 50: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/50.jpg)
var a : byte;
procedure ajouter (parametre : byte)début
WriteLn(‘parametre’, parametre);
parametre := parametre + 2;
WriteLn(‘parametre’, parametre);fin
débuta := 4;
WriteLn(‘a’, a);
ajouter(a);
WriteLn(‘a’, a);fin #0
a #200 #201
#202
#536.870.910#536.870.911
#203
parametre #220#221
...
...
#222
#223...
...
4
4
Appel par valeur
![Page 51: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/51.jpg)
#0
a #200 #201
#202
#536.870.910#536.870.911
#203
parametre #220#221
...
...
#222
#223...
...
6
4
Appel par valeur var a : byte;
procedure ajouter (parametre : byte)début
WriteLn(‘parametre’, parametre);
parametre := parametre + 2;
WriteLn(‘parametre’, parametre);fin
débuta := 4;
WriteLn(‘a’, a);
ajouter(a);
WriteLn(‘a’, a);fin
![Page 52: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/52.jpg)
#0
a #200 #201
#202
#536.870.910#536.870.911
#203
#220#221
...
...
#222
#223...
...
4
Appel par valeur var a : byte;
procedure ajouter (parametre : byte)début
WriteLn(‘parametre’, parametre);
parametre := parametre + 2;
WriteLn(‘parametre’, parametre);fin
débuta := 4;
WriteLn(‘a’, a);
ajouter(a);
WriteLn(‘a’, a);fin
![Page 53: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/53.jpg)
#0
#200 #201
#202
#536.870.910#536.870.911
#203
#220#221
...
...
#222
#223...
...Appel par valeur
var a : byte;
procedure ajouter (parametre : byte)début
WriteLn(‘parametre’, parametre);
parametre := parametre + 2;
WriteLn(‘parametre’, parametre);fin
débuta := 4;
WriteLn(‘a’, a);
ajouter(a);
WriteLn(‘a’, a);fin
4
![Page 54: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/54.jpg)
Appel par référencevar a : byte;
type t_p_a = ^byte;
procedure ajouter (parametre : t_p_a)begin
WriteLn('parametre^', parametre^);
parametre^ := parametre^ + 2;
WriteLn('parametre^', parametre^);end;
débuta := 4;
WriteLn('a', a);
ajouter(Addr(a));
WriteLn('a', a);fin
![Page 55: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/55.jpg)
var a : byte;
type t_p_a = ^byte;
procedure ajouter (parametre : t_p_a)begin
WriteLn('parametre^', parametre^);
parametre^ := parametre^ + 2;
WriteLn('parametre^', parametre^);end;
débuta := 4;
WriteLn('a', a);
ajouter(Addr(a));
WriteLn('a', a);fin
Appel par référence
Parametre est un pointeur
Appel par référence
![Page 56: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/56.jpg)
#0
a #200 #201
#202
#536.870.910#536.870.911
#203
...
...
...
...
4
Appel par référencevar a : byte;
type t_p_a = ^byte;
procedure ajouter (parametre : t_p_a);begin
WriteLn('parametre^', parametre^);
parametre^ := parametre^ + 2;
WriteLn('parametre^', parametre^);end;
débuta := 4;
WriteLn('a', a);
ajouter(Addr(a));
WriteLn('a', a);fin
![Page 57: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/57.jpg)
var a : byte;
type t_p_a = ^byte;
procedure ajouter (parametre : t_p_a);begin
WriteLn('parametre^', parametre^);
parametre^ := parametre^ + 2;
WriteLn('parametre^', parametre^);end;
débuta := 4;
WriteLn('a', a);
ajouter(Addr(a));
WriteLn('a', a);fin #0
a #200 #201
#202
#536.870.910#536.870.911
#203
parametre #240parametre #241
...
...
parametre #242
parametre #243
...
...
4
200000
Appel par référence
![Page 58: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/58.jpg)
#0
a #200 #201
#202
#536.870.910#536.870.911
#203
parametre #240parametre #241
...
...
parametre #242
parametre #243
...
...
6
200000
Appel par référencevar a : byte;
type t_p_a = ^byte;
procedure ajouter (parametre : t_p_a);begin
WriteLn('parametre^', parametre^);
parametre^ := parametre^ + 2;
WriteLn('parametre^', parametre^);end;
débuta := 4;
WriteLn('a', a);
ajouter(Addr(a));
WriteLn('a', a);fin
![Page 59: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/59.jpg)
#0
a #200 #201
#202
#536.870.910#536.870.911
#203
#240#241
...
...
#242
#243
...
...
6
Appel par référencevar a : byte;
type t_p_a = ^byte;
procedure ajouter (parametre : t_p_a);begin
WriteLn('parametre^', parametre^);
parametre^ := parametre^ + 2;
WriteLn('parametre^', parametre^);end;
débuta := 4;
WriteLn('a', a);
ajouter(Addr(a));
WriteLn('a', a);fin
![Page 60: Algorithmes et structures de données avancées 6ème cours Patrick Reuter preuter](https://reader035.vdocuments.net/reader035/viewer/2022062621/551d9d81497959293b8baaf9/html5/thumbnails/60.jpg)
Appel par référence (2)var a : byte;
procedure ajouter (var parametre : byte)début
WriteLn(‘parametre’, parametre);
parametre := parametre + 2;
WriteLn(‘parametre’, parametre);fin
débuta := 4;
WriteLn(‘a’, a);
ajouter(a);
WriteLn(‘a’, a);fin
Une autre façon d’appeler une fonctionpar référence qui est moins explicite