Académique Documents
Professionnel Documents
Culture Documents
et
Structures de Données I
Sonia KEFI
2
Chapitre 1
Introduction à l’algorithmique
Plan
1. Contexte scientifique
2. Démarche de programmation
3. Différences entre algorithme et programme
3
Informatique
L’informatique est la science du traitement automatique de
l’information.
4
Programmation (1)
Quelques définitions
Exemple de programme :
◦ Supposons qu’un enseignant dispose d’un ordinateur et d’un programme de
calcul de la moyenne des étudiants. Pour s’exécuter, ce programme
nécessite qu’on lui fournisse pour chaque étudiant, les notes de contrôle
continu, de T.P et de l’examen final : ce sont les données. En retour, le
programme va fournir la moyenne cherchée : c’est le résultat.
5
Programmation (2)
Types de langages
Par la suite, pour faciliter le travail, les programmes ont été écrits en désignant les
opérations par des codes faciles à retenir (ADD, DIV, SUB, MOVE, ...). Les adresses
des instructions et les variables pouvaient aussi être données sous forme
symbolique. Pour pouvoir utiliser effectivement tous ces symboles, il fallait trouver
le moyen de les convertir en langage machine ; ce fut réalisé par un programme
appelé assembleur. Le langage d’assemblage est toujours utilisé, car c’est le
seul langage qui permet d’exploiter au maximum les ressources de la machine.
6
Programmation (3)
Récapitulation
7
Programmation (4)
Compilation et interprétation
8
Suite
L’interprétation consiste à traduire chaque ligne du programme source
en des instructions du langage machine, qui sont ensuite directement
exécutées au fur et à mesure.
Aucun programme objet n’est généré.
L’interpréteur doit être utilisé chaque fois que l’on veut faire fonctionner
le programme.
Les langages Lisp et Prolog sont des exemples de langages interprétés.
9
Suite
Semi-compilation : Certains langages tentent de
combiner les deux techniques afin de retirer le
meilleur.
C’est le cas des langages Python et Java. Ces langages
commencent par compiler le code source pour
produire un code intermédiaire, similaire à un langage
machine (mais pour une machine virtuelle), que l’on
appelle bytecode, lequel sera ensuite transmis à un
interpréteur pour l’exécution finale.
Pour l’ordinateur, le bytecode est très facile à
interpréter en langage machine.
Cette interprétation sera donc beaucoup plus rapide
que celle d’un code source.
10
Récapitulation
modèle
◦ Laine Pull
12
Algorithmique (2)
Quelques définitions
• Un algorithme est un ensemble de tâches
élémentaires ordonnées, qui indique la démarche à
suivre pour résoudre un problème donné.
13
Démarche de programmation
1. Phase d’étude : consiste à comprendre le problème et
déterminer les données (entrées) et les résultats
(sorties) à produire.
Entrées Sorties
15
Démarche de programmation
Récapitulation
16
Exemple de problème (1)
Problème : Division de deux nombres
Enoncé du problème : Diviser deux
nombres
Questions :
◦ Quel genre de division ? exemple euclidienne
◦ Quel est le type des deux nombres ? exemple
entiers strictement positifs
◦ Quel est le résultat demandé ? exemple
quotient, reste
17
Exemple de problème (2)
18
Exemple de problème (3)
1. Positionnement du problème : Connaissant la
dividende x, le diviseur y, calculer le quotient entier q, puis
le reste N définis par la relation mathématique x = yq+r
avec 0 < r < y
2. Analyse du problème :
◦ Etape 1 : Ordre de lecture du dividende x et du diviseur y.
◦ Etape 2 : Calcul du quotient entier q, calcul du reste par la
formule r = x – yq
◦ Etape 3 : Edition des résultats
3. Algorithme : description systématique des étapes de
l'analyse, sous forme d'une suite d 'actions convenablement
enchaînées.
4. Programmation : traduire les actions (ou ensemble des
étapes) dans un langage compréhensible par la machine.
19
Généralisation des étapes de résolution
20
Différences entre algorithme et programme
L'algorithme est la méthode choisie pour résoudre un
problème.
21
Chapitre 2
Les concepts de base de
l’algorithmique
22
Structure générale d’un algorithme
Algorithme Nom_algorithme
Constantes
Id_cst = Valeur
Type Partie 1
<Définition d’un type déclaré par l’utilisateur>
Variables
Id_var1,Id_var2, … : type variable
Début
Instruction 1 (Action 1)
Instruction 2 (Action 2)
… Partie 2
…
Instruction n (Action n)
Fin
Identificateur d’objet
◦ L’identificateur d’un objet est son nom.
Un nom correct commence impérativement par une lettre,
comporte des lettres et des chiffres, mais qui exclut la plupart
des signes de ponctuation, en particulier les espaces (un
espace peut être remplacé par le caractère « _ »).
Il est préférable de choisir des noms significatifs pour saisir
facilement ce que les objets représentent.
24
Int x =10;
une case mémoire est de taille 1 octet
qui est égale à 8 bits
Pour la valeur 10 = 00001010
00000000
x 00001010
25
Notion d’objet (2)
Nature d’objet
◦ Un objet peut être de nature constante ou variable (il ne peut
pas être les deux à la fois).
Variable : sa valeur peut changer au cours de l’algorithme.
Constante : sa valeur est fixée tout au long de l'algorithme.
Type d’objet
◦ Un type définit l’ensemble des valeurs que peut prendre un
objet de ce type ainsi que les actions qui y sont autorisées.
◦ Un type peut être classé selon plusieurs critères parmi lesquels :
Simple/composé
Prédéfini/ personnalisé :
Prédéfini : s'il est défini avec le langage utilisé. Il existe quatre
types standard : entier, réel, booléen, caractère.
Personnalisé : s'il n'est pas prédéfini. Il doit être alors défini
dans le bloc TYPE.
26
Type de variable (1)
Type entier
Une variable est dite entière si elle prend ses valeurs dans Z
(ensemble des entiers relatifs) et qu’elle peut supporter les
opérations suivantes : +, - , *, Div et Mod.
Exemples :
13 Div 5 = 2
13 Mod 5 = 3
L’ensemble de valeurs que peut prendre un entier varie selon
le langage de programmation utilisé étant donné que le
nombre de bits réservés pour une variable de ce type n’est
pas le même.
A titre d’exemple, en C, les entiers de 2 octets (sur
processeur 16 bits) varient entre -32 768 et 32 767 et pour
les entiers de 4 octets (sur processeur 32 bits) varient entre
-2 147 483 648 à 2 147 483 647.
27
Type de variable (2)
Type réel
Il existe plusieurs types de réels représentant chacun
un ensemble particulier de valeurs prises dans R
(ensemble des nombres réels). Ici encore, cette
distinction se justifie par le mode de stockage des
informations dans le langage de programmation.
28
Types numériques (Récapitulation)
29
Les opérateurs (1)
Les opérateurs arithmétiques
Priorité Opérateur opération
1 ()
2 * multiplication
/ Division réelle
Mod Reste de la division
Div Division entière
3 + Addition
- soustraction
31
Type de variable (3)
Type caractère
Un caractère peut appartenir au domaine des
chiffres de ”0” à ”9”, des lettres minuscules et
majuscules) et des caractères spéciaux (”*”, ”/”,
”{”, ”$”, ”#”, ”%” …). Un caractère sera toujours
noté entre des guillemets. Le caractère espace
(blanc) sera noté ” ”.
La comparaison entre les caractères se fait selon
leur codes ASCII
Exemple :
” ” < ”0” < ”1” < ”A” < ”B” < ”a” < ”b” < ”{”
32
Table ASCII
33
Type de variable (4)
Type booléen
Une variable logique ne peut prendre que les
valeurs ”Vrai” ou ”Faux”.
34
Les opérateurs (1)
Les opérateurs logiques :
• Les opérateurs logiques (ET/AND/, OU/OR/) servent à combiner
des conditions logiques (ou sous-conditions) pour obtenir une
condition plus complexe.
• L’opérateur NON /Not/ : retourne l'inverse de l'évaluation logique
de la condition.
p NON p
Vrai Faux
Faux Vrai
35
Les opérateurs (2)
Les opérateurs logiques (suite) :
• Les opérateurs logiques ET et OU sont commutatifs, associatifs et
distributifs :
Commutativité :
• A ET B = B ET A
• A OU B = B OU A
Associativité :
• A ET ( B ET C) = ( A ET B) ET C
• A OU (B OU C) = ( A OU B ) OU C
Distributivité :
• A ET ( B OU C ) ( A ET B ) OU (A ET C)
• A OU ( B ET C ) ( A OU B ) ET (A OU C)
36
Type de variable (5)
Type personnalisé
En plus de ces types prédéfinis, le programmeur a la
possibilité de définir lui-même de nouveaux types en
fonction de ses besoins.
Exemple :
Types
Saison = (”A”,”H”,”P”,”E”)
Tnote = 0 .. 20
Variables
s : Saison
note : Tnote
37
Les actions algorithmiques simples (1)
Une action est un ordre donné par l'utilisateur à
l'ordinateur. On distingue trois actions
algorithmiques simples : l'affichage, la saisie et
l'affectation.
L’affichage
◦ L’action d’affichage permet de communiquer un
message ou le contenu d’un ou plusieurs objets à
l’utilisateur sur écran.
◦ Syntaxe : ECRIRE (ARG1, ARG2, … , ARGn)
Avec ARG peut être :
Le nom d’un objet (constante ou variable)
une expression arithmétique
un message
38
Exemples :
X 15
Écrire (X) 15
Écrire("Bonjour") Bonjour
La valeur
Écrire("la valeur est" ,X) est 15
39
Les actions algorithmiques simples (2)
La saisie/La lecture
◦ Cette action permet de placer dans la case
mémoire correspondante à une variable, une
valeur saisie par l’utilisateur à travers le
clavier.
◦ Syntaxe : LIRE (VAR1,VAR2, … ,VARn)
Remarque : On peut saisir chaque variable à part,
comme on peut saisir plusieurs variables avec le
même ordre LIRE.
40
Exemple : Lire (X)
? X
5 X
5
41
Les actions algorithmiques simples (3)
L’Affectation
◦ C’est une opération qui permet de mettre une
valeur dans une case mémoire relative à une
variable. La valeur peut être le contenu d’une
autre variable, le contenu d'une constante, une
valeur donnée, ou le résultat d'une expression
arithmétique ou logique.
42
Exemple
? ? S A 15 ?25 S
A A15
B10
SA+B
? ?10
B B
43
Chapitre 3
Les structures en algorithmique
Plan :
Les structures conditionnelles
Les structures répétitives (itératives)
44
Partie 1
45
Sommaire
Introduction
Les structures conditionnelles simples
Les structures conditionnelles imbriquées
La structure conditionnelle à choix
multiples ou sélective
46
Introduction
• Pour la résolution de certains problèmes, on se trouve
confronté à choisir un traitement particulier à exécuter selon
une condition bien déterminée. Pour cela, on peut faire recours
aux structures conditionnelles.
Décision
Admis
MOY
Condition
Décision
refusé
47
Les structures conditionnelles simples (1)
• Ces structures sont des structures de contrôle effectuant un test
logique et permettant de choisir entre divers blocs d'actions suivant
le résultat de ce test. Il existe deux formes :
Action 2
Fin si
Si (N mod 2 = 0) alors
◦ Ecrire (N, ‘’est paire’’)
Sinon
Ecrire (N, ‘’est impaire’’)
Fin Si
49
Les structures conditionnelles
imbriquées (1)
• Il s'agit d'utiliser une ou plusieurs instructions conditionnelles
dans le bloc "si" ou "sinon" d'une autre instruction
conditionnelle. Décision
Admis
MOY
Décision
Contrôle
Décision
Refusé
50
Les structures conditionnelles
imbriquées (2)
• Cette structure possède la forme suivante :
Si (condition1) alors
Si (condition2) alors
Si (condition3) alors
instruction1
instruction2
fin si
sinon
Si (condition3) alors
instruction3
fin si
fin si
finsi
51
Application 3
Ecrire un algorithme qui lit un nombre réel
et détermine s’il est positif, négatif ou nul.
Si (N >0) alors
Ecrire (N,‘’est positif’’)
Sinon { (N<=0)}
Si (N<0) alors
Ecrire (N,‘’est négatif’’)
Sinon { (N=0)}
Ecrire (N,‘’est nul’’)
Finsi
Finsi
52
La structure conditionnelle à choix multiples
ou sélective (1)
• Si dans le cas d'un schéma conditionnel imbriqué, la
condition porte toujours sur la même variable, on peut faire
recours à une structure sélective. Il s'agit de sélectionner un
traitement parmi plusieurs, suivant la valeur du sélecteur.
Dans la liste de valeurs, il peut y avoir une seule valeur, une suite
de valeurs séparées par des virgules et/ou un intervalle de
valeurs.
Remarque
◦ Le sélecteur doit avoir le même type que la liste de valeurs.
◦ Le type de ces valeurs ne doit être, ni réel ni chaîne de
caractères. 54
Application 4
Écrire un algorithme permettant de lire un entier (compris entre 1 et 7)
représentant le jour de la semaine (du lundi au dimanche) et qui permet
d’afficher en toutes lettres le nom du jour correspondant.
56
Sommaire
Introduction
La structure « Pour…faire »
La structure « Tant que … faire »
Transformation de la structure « Pour …
faire » en structure « Tant que … faire »
La structure « Répéter … Jusqu’à »
Différence entre les trois structures
répétitives
Synthèse
57
Introduction (1)
Activités :
Écrire un algorithme qui permet d’afficher 3 fois le texte
"Je suis un ingénieur"
Modifier cet algorithme pour afficher 1000 fois le même
texte.
60
La structure « Pour … faire » (1)
La syntaxe de la structure « Pour … faire » est la suivante :
Cpt Cpt + 1
◦ (50-2+2)div2=25 itérations
◦ Le compteur de la boucle « Pour » est incrémenté ou
décrémenté automatiquement.
63
Application 1
• Écrire un algorithme qui permet de calculer la factorielle de 5
Début Début
fact 1 Fact 1
Pour cpt de 2 à 5 faire Pour cpt de 5 à 2 Pas De -1 faire
fact fact*cpt fact fact*cpt
Fin pour
Fin pour
Écrire (”la factorielle de 5 est”, fact)
Écrire (”la factorielle de 5 est”, fact)
Fin
Fin
65
La structure « Tant que … faire » (1)
Le nombre d’itérations de cette boucle n’est pas connu
d'avance. Le traitement de la boucle ne s’arrête que si la
condition n’est plus vérifiée (ou satisfaite).
La syntaxe de la boucle «Tant que … faire » est la suivante :
Vrai
Séquence d’instructions
Suite du programme
i 1 10
Tant Que (i <= 5) FAIRE 20
Ecrire (i*10)
30
i i+1
Fin TQ 40
50
Exemple 2 :
i 6
Tant Que (i <= 5) FAIRE
Ecrire (i*10) Rien n'est affiché
i i+1
Fin TQ
69
La structure « Tant que … faire » (5)
Exemple 3 :
i 1 10
Tant Que (i <= 5) FAIRE 10
Ecrire (i*10) boucle infinie
10
Fin TQ
…
…
Exemple 4 :
i 1
TantQue (i <= 5) FAIRE 10
Ecrire (i*10) 20
i i*2
40
Fin TQ
70
La structure « Tant que … faire » (6)
Une boucle « Tant Que » peut s’exécuter 0, 1 ou n fois.
71
Application 3
Écrire un algorithme qui demande à l’utilisateur un
nombre compris entre 1 et 3 jusqu’à ce que la
réponse convienne.
Algorithme Lire_Nombre
Variables
N : Entier
Début
Écrire ("Entrez un nombre entre 1 et 3")
Lire (N)
Tant que ((N < 1) ou (N > 3)) Faire
Fin
72
Transformation de la structure « Pour … faire »
en structure « Tant que … faire »
Compteur ValDébut
Tant que (Compteur ≤ ValFin) faire
Pour Compteur de ValDébut à ValFin
[pas de ValPas] faire Traitement
traitement Compteur Compteur + ValPas
Fin pour
Fin Tant que
Répéter
Traitement
Jusqu’à (Condition)
Tester la Faux
condition
de sortie ?
Vrai
Suite du programme
i 1 10
Répéter 20
Ecrire (i*10)
30
i i+1
Jusqu’à (i > 5) 40
50
Exemple 2 :
i 6
Répéter
Ecrire (i*10) 60
i i+1
Jusqu’à (i > 5)
i 1 10
Répéter 10
Ecrire (i*10)
10
Jusqu’à (i > 5)
…
…
Exemple 4 :
c “A” A
Répéter A
Ecrire (c)
A
Jusqu’à (c > “Z”)
…
…
79
La structure « Répéter … jusqu’à » (6)
80
Application 4
Écrire un algorithme qui permet de lire la note d’algorithmique (N_Algo) et la
note des mathématiques (N_Math) et de calculer la moyenne générale
(M_generale). Les lectures doivent être contrôlées.
Algorithme Moyenne
Variables
N_Algo, N_Math, M_generale : Réel
Début
Répeter
ecrire ("donner la note d’algorithmique")
lire (N_Algo)
Jusqu’à ((N_Algo>=0) ET (N_Algo<=20))
Répeter
ecrire ("donner la note des mathématiques")
…lire (N_Math)
Jusqu’à ((N_Math>=0) ET (N_Math<=20))
Fin
81
Différences entre les trois boucles
La boucle « Pour … Fin Pour » est destinée au cas particulier
où l’on connaît par avance le nombre de répétition.
82
Synthèse
Oui Nombre de répétition Non
est-il connu ?
Pour…faire
1 fois
Répéter …jusqu’à
Ce n’est pas toujours vrai
Pour…faire
Ce n’est pas toujours vrai
Répéter …jusqu’à
Possible