Algorithmique et structure de données

publicité
Algorithmique et structure de
données
Par: Melle Najlae KORIKACHE
Syllabus du cours ...
Objectif :
 se familiariser avec les méthodes de résolution de problèmes avec l'outil
informatique ;
 apprendre les principes de l'algorithmique ;
 acquérir un début de maîtrise des techniques et langages de programmation.
Bibliographie :
 Introduction a l'algorithmique, Thomas H. Cormen, Charles E. Leiserson,
Ronald L. Rivest et Cliord Stein, Dunod, Paris, 2004.
 Algorithmique Application en C, Jean-Michel Lery, Pearson Education, 2005.
 Algorithmique et programmation en Java, Vincent Granet, Dunod, Paris, 2000.
 Débuter en programmation, Greg Perry, CampusPress, 2003.
Plan du cours
1. Introduction à l'algorithmique
2. Environnement algorithmique
3. Structure de données
4. Structures de contrôle
5. Structures itératives
6. Sous-programmes
7. Mode de passage de paramètres
8. Tableaux
Structure de données
A quoi servent les variables ?
 Dans un programme informatique, on a, en
permanence, besoin de stocker provisoirement des
valeurs :
 données issues du disque dur ;
 données fournies par l’utilisateur (frappées au clavier) ;
 résultats (intermédiaires ou définitifs) obtenus par le
programme.
 Pour stocker une valeur au cours d’un programme, on utilise
une variable.
Signification physique d’une variable
 Dans la mémoire vive de l’ordinateur, physiquement, une
variable correspond à un emplacement de mémoire,
repéré par une adresse binaire.
Structure de données
Les types de variables
En employant une image
 Une variable est un récipient, que l’ordinateur va repérer
par une étiquette (un nom). Pour avoir accès au contenu
du récipient, il suffit de le désigner par son étiquette.
Il existe plusieurs types de récipients !
 De la même manière, il existe plusieurs types de
variables ...
Structure de données
Les types de variables
Important
 Lorsqu’on déclare une variable, il ne suffit pas de créer
un récipient (réserver un emplacement mémoire). Il
faut encore préciser ce que l’on voudra mettre dedans, car de
cela dépendent la taille et la nature du récipient.
Structure de données
Les types de variables
Les types de variables les plus courants en algorithmique:
Type numérique
 Entier
 Réel
Type alphanumérique
 Chaine de caractères
Type booléen
 Booléen
Structure de données
Les types de variables
Type numérique :
 Entier :
 ensemble des entiers relatifs Z;
 valeurs non décimales.
 Réel :
 ensemble des nombres réels IR;
 valeurs décimales.
Structure de données
Les types de variables
Exemple :
Algorithme Algo Exemple
Var : Prix HT : réel ; Nombre Mois : entier ;
Début
...
Prix HT := 245,550
‘Affectation d’une valeur réelle
Nombre Mois := 12
‘Affectation d’une valeur entière
...
Fin
Structure de données
Les types de variables
Type alphanumérique :
 Chaîne de caractères :
 stocke des caractères : des lettres, des signes de
ponctuation, des espaces, ou même des chiffres ;
 le nombre maximal de caractères pouvant être stockés
dans une seule variable chaîne de caractères dépend du
langage utilisé ;
 en pseudo-code (en algorithmique), une chaîne de caractères
est toujours notée entre guillemets.
Structure de données
Les types de variables
Exemple :
Algorithme Algo_Exemple
Var : Prix HT : réel ; Nombre Mois : entier ;
Fournisseur : chaîne ;
Début
...
Prix HT := 245,550 ‘Affectation d’une valeur réelle
Nombre Mois := 12 ‘Affectation d’une valeur entière
Fournisseur := “Smith & Co” ‘Affectation d’une chaîne de caractère
...
Fin
Structure de données
Les types de variables
Type booléen :
 Booléen :
 stocke uniquement les valeurs logiques VRAI et FAUX;
 le type booléen la présence ou l’absence d’un caractère.
Structure de données
Les types de variables
Exemple :
Algorithme Algo_Exemple
Var : Fournisseur : chaîne ; Etranger : booléen ;
Début
...
Fournisseur := “Smith & Co” ‘Affectation d’une chaîne de caractères
Etranger := VRAI
‘Affectation d’une valeur booléenne
...
Fin
Structure de données
L’instruction d’affectation
Qu’est ce qu’on peut faire avec une variable ?
Réponse
 La seule chose qu’on peut faire avec une variable, c’est
l’affecter, c’est-à-dire lui attribuer une valeur.
 En reprenant l’image des récipients :
La variable = Le récipient (Thermos du café)
Structure de données
L’instruction d’affectation
Qu’est ce qu’on peut faire avec une variable ?
Réponse
 La seule chose qu’on peut faire avec une variable, c’est
l’affecter, c’est-à-dire lui attribuer une valeur.
 En reprenant l’image des récipients :
La variable = Le récipient (Thermos du café)
La valeur de la variable = Le contenu du
récipient (le café)
Convention
 En pseudo-code, l’instruction d’affectation se note
avec le signe :=
Structure de données
L’instruction d’affectation
Exemple :
Toto := 24,5
 On attribue la valeur 24,5 à la variable Toto.
 Cette affectation sous-entend que Toto est une variable de
type réel ...
 On ne peut pas affecter à Toto une variable de type
alphanumérique ou booléen.
Structure de données
L’instruction d’affectation
Exemple :
Toto := 24,5
 On attribue la valeur 24,5 à la variable Toto.
 Cette affectation sous-entend que Toto est une variable de
type réel ...
 On ne peut pas affecter à Toto une variable de type
alphanumérique ou booléen.
Structure de données
L’instruction d’affectation
Exemple :
Toto := 24,5
 On attribue la valeur 24,5 à la variable Toto.
 Cette affectation sous-entend que Toto est une variable de
type réel ...
 On ne peut pas affecter à Toto une variable de type
alphanumérique ou booléen.
Structure de données
L’instruction d’affectation
Exemple :
Toto := 24,5
 On attribue la valeur 24,5 à la variable Toto.
 Cette affectation sous-entend que Toto est une variable de
type réel ...
 On ne peut pas affecter à Toto une variable de type
alphanumérique ou booléen.
On peut toujours verser dans une coupe du
sirop, sauf que ce n’est pas logique !
Structure de données
L’instruction d’affectation
 On peut affecter à une variable la valeur d’une autre
variable.
Exemple :
Toto := 24,5
Tutu := Toto
 La valeur de Tutu est maintenant celle de Toto. Tutu
contient donc la valeur 24,5.
 La valeur de Toto n’est pas modifiée.
Important
 Une instruction d’affectation ne modifie que ce qui est situé
à gauche de l’affectation :=
Structure de données
L’instruction d’affectation
 On peut affecter à une variable le résultat d’une opération
en fonction d’autres variables.
Exemple 1 :
Toto := 24,5
Tutu := Toto + 5,5
 La valeur de Tutu est maintenant égale à celle de Toto + 5,5.
Tutu contient donc la valeur 30.
 La valeur de Toto n’est pas modifiée. Elle vaut toujours 24,5.
Exemple 2 :
Tutu := Tutu + 3
 Si Tutu valait 30, il vaut maintenant 33.
 La valeur de Tutu est modifiée, puisque Tutu est la variable
située à gauche de l’affectation.
Structure de données
L’instruction d’affectation
Confusion possible entre le nom d’une variable et la valeur d’une variable!
Début
Riri := “Loulou”
Fifi := “Riri”
Fin
 Fifi contient la suite de caractères R - i - r - i.
 A la fin de l’algorithme, la variable Fifi est donc égale à “Riri”.
Début
Riri := “Loulou”
Fifi := Riri
Fin
 Riri, étant dépourvu de guillemets, n’est pas considéré comme une suite de
caractères, mais comme un nom de variable.
 A la fin de l’algorithme, la variable Fifi est donc égale à “Loulou”.
Structure de données
L’instruction d’affectation
L’ordre des instructions joue un rôle essentiel dans le résultat final !
Var : A : entier ;
Début
A := 34
A := 12
Fin
 la fin de l’algorithme, la variable A est égale à 12.
Var : A : entier ;
Début
A := 12
A := 34
Fin
 A la fin de l’algorithme, la variable A est égale à 34.
Structure de données
Les expressions et les opérateurs
Une instruction d’affectation doit respecter trois conditions:
 À gauche de l’affectation, on doit trouver un nom de variable, et
uniquement cela. Dans le cas contraire, il s’agit certainement
d’une erreur !
 À droite de l’affectation, on doit trouver une expression ;
 l’expression (située à droite de l’affectation) doit être du même
type que la variable (située à gauche de l’affectation).
Définition d’une expression
 Une expression est un ensemble de valeurs, reliées par des
opérateurs, et équivalent à une seule valeur.
Structure de données
Les expressions et les opérateurs
Définition d’une expression
 Une expression est un ensemble de valeurs, reliées par des
opérateurs, et équivalent à une seule valeur.
Exemple d’expressions de type numérique :
A := 7
B := 5 + 4
C := 123 – 45 + 844
D := Toto – 12 + 5 – Riri
Structure de données
Les expressions et les opérateurs
Définition d’un opérateur
 Un opérateur est un signe qui relie deux valeurs, pour
produire un résultat.
 Les opérateurs possibles dépendent du type des valeurs qui
sont en jeu :
 Opérateurs numériques
 Opérateur alphanumérique
 Opérateurs logiques
Structure de données
Les expressions et les opérateurs
 Opérateurs numériques :
+ : l’addition ;
– : la soustraction ;
* : la multiplication ;
/ : la division ;
^ : la puissance.
 On peut utiliser les parenthèses. La multiplication et la division ont
naturellement la priorité sur l’addition et la soustraction.
 Les parenthèses ne sont ainsi utiles que pour modifier cette priorité
naturelle.
Exemple :
A := 12 * 3 + 5
B := (12 * 3) + 5
‘A et B valent 41
C := 12 * (3 + 5)
‘C vaut 12 * 8, soit 96
Structure de données
Les expressions et les opérateurs
 Opérateur alphanumérique :
 & : la concaténation.
 Cet opérateur permet de concaténer (agglomérer) deux
chaines de caractères.
Exemple :
A := “Buvons”
B := “ un café”
C := A & B
‘C vaut “Buvons un café”
Structure de données
Les expressions et les opérateurs
 Opérateurs logiques :
 ET : la conjonction ;
 OU : la disjonction ;
 NON : la négation.
 À garder sous le coude pour le moment. Nous y reviendrons
une autre fois !
Structure de données
La lecture et l’écriture
Algorithme Carre De Douze
Var : A : entier ;
Début
A := 12 ^ 2
Fin
Pour calculer le carré d’un autre nombre que 12, il faut
réécrire le programme.
2. L’utilisateur ne saura jamais le résultat. La machine le
garde pour elle.
1.


Il existe des instructions pour permettre à la machine de
dialoguer avec l’utilisateur.
Instruction de lecture et instruction d’écriture.
Structure de données
La lecture et l’écriture
Instruction de lecture
 Une instruction de lecture permet à l’utilisateur de
rentrer des valeurs au clavier pour qu’elles soient
utilisées par le programme.
Exemple : pour que l’utilisateur entre une nouvelle valeur
d’une variable Titi :
Lire (“Donnez la valeur de Titi” ; Titi)
Remarque
 Dès que le programme rencontre une instruction Lire,
l’exécution s’interrompt et attend la frappe d’une
valeur au clavier.
Structure de données
La lecture et l’écriture
Instruction d’écriture
 Une instruction d’écriture permet au programme de
communiquer des valeurs à l’utilisateur en les
affichant à l’écran.
Exemple :
Pour que le programme affiche à l’utilisateur la valeur
d’une variable Toto :
Ecrire (“La valeur de Toto est :” ; Toto)
Plan du cours
1. Introduction à l'algorithmique
2. Environnement algorithmique
3. Structure de données
4. Structures de contrôle
5. Structures itératives
6. Sous-programmes
7. Mode de passage de paramètres
8. Tableaux
Téléchargement