Algorithmique et structures de données I

publicité
Algorithmique et structures de données I
Riadh Ben Messaoud
Université 7 novembre à Carthage
Faculté des Sciences Économiques et de Gestion de Nabeul
1ère année Licence Fondamentale IAG
1ère année Licence Appliquée IAG
Année universitaire
2009 – 2010
R. Ben Messaoud (FSEGN)
Algorithmique I
2009 – 2010
1 / 17
Plan du cours
1
Introduction
2
Environnement algorithmique
3
Variables
4
Structures conditionnelles
5
Structures itératives
6
Tableaux
7
Sous-programmes
8
Mode de passage de paramètres
R. Ben Messaoud (FSEGN)
Algorithmique I
2009 – 2010
2 / 17
Plan du cours
1
Introduction
2
Environnement algorithmique
3
Variables
4
Structures conditionnelles
5
Structures itératives
6
Tableaux
7
Sous-programmes
8
Mode de passage de paramètres
R. Ben Messaoud (FSEGN)
Algorithmique I
2009 – 2010
3 / 17
Sous-programmes
Exemple introductif
Imaginons qu’au cours d’une application, nous ayons – plusieurs fois – besoin de
saisir un tableau de 10 entiers. Mais à chaque fois, un tableau différent.
Algorithme Application Exemple
...
Pour i ← 0 à 9 Faire
Ecrire (“Entrez l’entier numéro ” ; i + 1)
Lire (A(i))
Fin Pour
...
Pour i ← 0 à 9 Faire
Ecrire (“Entrez l’entier numéro ” ; i + 1)
Lire (B(i))
Fin Pour
...
Pour i ← 0 à 9 Faire
Ecrire (“Entrez l’entier numéro ” ; i + 1)
Lire (C(i))
Fin Pour
...
Est-ce qu’on peut utiliser une fonction ?
R. Ben Messaoud (FSEGN)
Algorithmique I
2009 – 2010
4 / 17
Sous-programmes
Exemple introductif
Une fonction permettant de remplir un tableau de 10 entiers ?
Quelle serait la valeur renvoyée par la fonction ?
Une fonction ne peut renvoyer qu’une seule valeur à la fois.
Une fonction ne peut donc renvoyer un tableau, qui est une série de
valeurs distinctes. . . .
I Il faut créer une sous-programme qui ne renvoie aucune valeur ou qui en
renvoie plusieurs
I Il faut donc avoir recours non à une fonction, mais à une procédure.
R. Ben Messaoud (FSEGN)
Algorithmique I
2009 – 2010
5 / 17
Sous-programmes
Les procédures
Présentation d’une procédure :
Appel d’une procédure dans un
algorithme :
Procédure Nom Procédure(. . . )
...
Fin
...
Appeler Nom Procédure(. . . )
...
Alors qu’une fonction se caractérise par les mots-clés Fonction . . . Fin,
une procédure est identifiée par les mots-clés Procédure . . . Fin.
Lorsqu’une fonction est appelée, sa valeur retournée est toujours affectée à
une variable ou intégrée dans le calcul d’une expression. L’appel à une
procédure, est – au contraire – toujours une instruction autonome.
I “Exécute la procédure machin” est un ordre qui se suffit à lui-même.
Toute fonction doit, comporter l’instruction Renvoyer. Cette instruction
n’est jamais utilisée dans une procédure.
La fonction est une valeur calculée qui renvoie son résultat vers
l’algorithme principal.
La procédure est un traitement. Elle ne “vaut” rien.
R. Ben Messaoud (FSEGN)
Algorithmique I
2009 – 2010
6 / 17
Sous-programmes
Les procédures
Qu’est-ce qu’on met dans les parenthèses d’une procédure à la place des
points de suspension, aussi bien dans la déclaration de la procédure que
dans l’appel ?
Les outils qui vont permettre l’échange d’informations entre l’algorithme
principal et la procédure.
De même qu’avec les fonctions, les valeurs qui circulent depuis l’algorithme
appelant vers la procédure appelée se nomment des arguments, ou des
paramètres en entrée de la procédure.
Dans une procédure, on peut être amené à vouloir renvoyer des résultats
vers l’algorithme principal. Or, la procédure, en tant que telle, ne “renvoie”
rien du tout ! !
Les résultats que la procédure doit transmettre devront être véhiculés par
des paramètres.
I Il s’agit de paramètres en sortie.
R. Ben Messaoud (FSEGN)
Algorithmique I
2009 – 2010
7 / 17
Sous-programmes
Les procédures
Définition
Toute procédure possédant un et un seul paramètre en sortie peut être écrite
sous forme d’une fonction.
Problème
Comment fait-on pour faire comprendre à un langage de programmation quels
sont les paramètres qui doivent fonctionner en entrée et quels sont ceux qui
doivent fonctionner en sortie ?
R. Ben Messaoud (FSEGN)
Algorithmique I
2009 – 2010
8 / 17
Plan du cours
1
Introduction
2
Environnement algorithmique
3
Variables
4
Structures conditionnelles
5
Structures itératives
6
Tableaux
7
Sous-programmes
8
Mode de passage de paramètres
R. Ben Messaoud (FSEGN)
Algorithmique I
2009 – 2010
9 / 17
Mode de passage de paramètres
Introduction
Pour bien interpréter une procédure, un language de programmation a besoin
de savoir le mode de passage de ses paramètres.
Il existe deux modes de passage de paramètres pour une procédure :
1
le passage par valeur ;
2
le passage par référence.
R. Ben Messaoud (FSEGN)
Algorithmique I
2009 – 2010
10 / 17
Mode de passage de paramètres
Passage par valeur
Écrivons une procédure qui permet d’afficher un message à l’utilisateur en
utilisant un paramètre Msg dont la transmission doit se faire par valeur.
Procédure Affiche Message(Msg : chaı̂ne par valeur)
Ecrire (Msg)
Fin
I Pour faire appel à cette procédure dans l’algorithme principal :
Algorithme Algo Principal
Var : M : chaı̂ne
Début
...
M ← “Êtes-vous marié ?”
Appeler Affiche Message(M)
...
Fin
R. Ben Messaoud (FSEGN)
Algorithmique I
2009 – 2010
11 / 17
Mode de passage de paramètres
Passage par valeur
Quand l’algorithme principal fait appel à la procédure Affiche Message :
La procédure crée une variable Msg qui sera affecté avec le même contenu
de la variable M.
Msg est une copie de M. Les informations qui étaient contenues dans M ont
été intégralement recopiées dans Msg.
Cette copie subsistera tout au long de l’exécution de la procédure
Affiche Message et sera détruite à la fin de celle-ci.
I Si la procédure Affiche Message contenait une instruction qui modifiait le
contenu de la variable Msg, cela n’aurait aucune répercussion sur
l’algorithme principal en général et sur la variable M en particulier.
I La procédure ne travaillant que sur une copie de la variable qui a été fournie
par l’algorithme principal, elle est incapable, même si on le souhaitait, de
modifier la valeur de celle-ci.
I Dans une procédure, un paramètre passé par valeur ne peut être qu’un
paramètre en entrée.
R. Ben Messaoud (FSEGN)
Algorithmique I
2009 – 2010
12 / 17
Mode de passage de paramètres
Passage par valeur
Écrivons une procédure qui permet d’afficher l’entier suivant un entier transmis
par un algorithme.
Procédure Nombre Suivant(A : entier par valeur)
A←A+1
‘Modification de la valeur de A
Ecrire (“Le nombre suivant est ” ; A)
Fin
Algorithme Algo Principal
Var : N : entier
Début
N←5
Appeler Nombre Suivant(N)
‘Affichage de la valeur 6 (5 + 1)
Ecrire (“La valeur de la variable N est ” ; N)
‘N est toujours égale à 5
Fin
R. Ben Messaoud (FSEGN)
Algorithmique I
2009 – 2010
13 / 17
Mode de passage de paramètres
Passage par référence
Écrivons une procédure qui permet de saisir une réponse Oui ou Non de
l’utilisateur.
Procédure Rep Oui Non(Truc : chaı̂ne par référence)
Répéter
Lire (“Tapez Oui ou Non.” ; Truc)
Jusqu’à (Truc = “Oui” OU Truc = “Non”)
Fin
I Pour faire appel à cette procédure dans l’algorithme principal :
Algorithme Algo Principal
Var : T : chaı̂ne
Début
Appeler Rep Oui Non(T)
...
Fin
R. Ben Messaoud (FSEGN)
Algorithmique I
2009 – 2010
14 / 17
Mode de passage de paramètres
Passage par référence
Quand l’algorithme principal fait appel à la procédure Rep Oui Non :
Le fait qu’il s’agisse d’un passage par référence fait que la variable Truc ne
contiendra pas la valeur de T, mais son adresse, c’est-à-dire sa
référence.
I Toute modification de Truc sera immédiatement redirigée sur T.
I Truc n’est pas une variable ordinaire : elle ne contient pas de valeur, mais
seulement la référence à une valeur, qui elle, se trouve ailleurs (dans la
variable T).
I Il s’agit d’un nouveau genre de variable appelé pointeur.
I Tous les paramètres passés par référence sont des pointeurs.
Important
A partir du moment où une variable est considérée comme un pointeur, toute
affectation de cette variable se traduit automatiquement par la modification de la
variable sur laquelle elle pointe.
R. Ben Messaoud (FSEGN)
Algorithmique I
2009 – 2010
15 / 17
Mode de passage de paramètres
Passage par référence
Écrivons une procédure qui permet d’afficher une question (message) à
l’utilisateur et de saisir la réponse de ce dernier par Oui ou Non.
Procédure Rep Oui Non(Msg : chaı̂ne par valeur, Truc : chaı̂ne par référence)
Ecrire (Msg)
Répéter
Lire (“Tapez Oui ou Non.” ; Truc)
Jusqu’à (Truc = “Oui” OU Truc = “Non”)
Fin
Algorithme Algo Principal
Var : M, T : chaı̂ne
Début
M ← “Êtes-vous marié ?”
Appeler Rep Oui Non(M, T)
Fin
R. Ben Messaoud (FSEGN)
‘M n’est pas modifiée. T est modifiée.
Algorithmique I
2009 – 2010
16 / 17
Mode de passage de paramètres
Format général
Format général d’une procédure :
Procédure Nom Procédure(Arg 1 : Type par Mode Passage, Arg 2 : Type
par Mode Passage, . . . )
Var : [Variables Locales]
...
[Traitements]
...
Fin
I Pour appeler une procédure dans l’algorithme principal :
Appeler Nom Procédure(Var 1, Var 2, . . . )
R. Ben Messaoud (FSEGN)
Algorithmique I
2009 – 2010
17 / 17
Téléchargement