Vous êtes sur la page 1sur 133

Ministère de l’E duc ation Nationale et de la

Formation Prof essionnelle


C entre des C lasses de Préparation du BTS
- E SSAOUI RA -

Développement et
Applications Informatique

Langage de programmation
structurée

ESSADDOUKI Mostafa
essaddouki@gmail.com
Programme

I. Logiciels d’application
II. Langage de programmation structurée
1. Algorithmique
2. Langage c
3. Structures de données dynamique
III. Langage de programmation orientée
objet (java)

2
Chapitre 1 :Langage de programmation structurée

ALGORITHMIQUE
Algorithmique
CODAGE DE
L’INFORMATION

ESSADDOUKI Mostafa
essaddouki@gmail.com
CODAGE DE L’INFORMATION

v Introduction
v Capacité Mémoire
Algorithmique

v Langage et Traducteurs

5
Introduction
CODAGE DE L’INFORMATION

¥ Un langage informatique est un outil permettant de donner


des ordres (instructions) à la machine

¥ A chaque instruction correspond une action du processeur

¥ Intérêt : écrire des programmes (suite consécutive


d’instructions) destinés à effectuer une tache donnée

¥ Exemple: un programme de gestion de comptes bancaires

¥ Contrainte: être compréhensible par la machine

6
Introduction
CODAGE DE L’INFORMATION

¥ Langage machine
¥ Langage binaire: l’information est exprimée et
manipulée sous forme d’une suite de bits.

¥ Un bit (binary digit) = 0 ou 1 (2 états


électriques).

¥ Les opérations logiques et arithmétiques de


base (addition, multiplication, … ) sont
effectuées en binaire

7
Introduction
CODAGE DE L’INFORMATION

Passage de base 2 à base 10


¥ Exemple : (1101) = ( .. )10
1 1 0 1
23 22 21 20
8 + 4 +0 + 1 = 13 Donc ( 1101 ) 2 = ( 13 ) 10
¥ Pour convertir un nombre de la base 2 à la base 10,
on multiplie à partir de la droite chacun de ces
chiffres par une puissance de 2 successives à partir
de 0. Le résultat recherché est obtenu en effectuant
la somme des produits précédents.

¥ Application (10110101) ??

8
Capacité Mémoire

1. Notion de la table ASCII


L’information est stockée au niveau
de la mémoire caractère par
caractère. Or, l’ordinateur étant une
machine binaire, chaque caractère
doit être stocké sous forme de 0 ou
de 1. Pour cela, on a répertorié une
liste de 256 caractères. A chaque
caractère on a attribué un code
décimal, par conséquent, un code
binaire. Cette table est appelée Table
ASCII et elle a la forme suivante :

9
Capacité Mémoire
CODAGE DE L’INFORMATION

2. Unités de mesures
¥ 1 bit = 1 ou 0
¥ 8 bits = 1 Octet
¥ D’après la table précédente, chaque caractère est donc
représenté par un ensemble de 8 bits 1 ( 1 bit = 0 ou 1 ).
Cet ensemble de 8 bits est appelé un Octet ( byte).
¥ L’unité de mesure de la capacité est par conséquent
l’Octet.
¥ 1 Kilooctet = 1 Ko = 1024 octets
¥ 1 Migaoctet = 1 Mo = 1024 Ko
¥ 1 Gigaoctet = 1 Go = 1024 Mo

10
Langage et Traducteurs
CODAGE DE L’INFORMATION

1. Les langages Informatiques :


On distingue 2 catégories de langages.
a. Langage Machine :
Ce sont des langages utilisant des mots formés uniquement de 0 et de 1.
Ces langages ont l’avantage d’être compréhensible par la machine et le
fonctionnement interne de la machine.
Ils sont néanmoins, utilisés par des programmes nécessitant des
exécutions rapides.

a. Langage Evolué :
Dans le but de faciliter l’accès de l’Informatique à un plus grand nombre
de personne, on a été amené à créer des langages dont les mots sont
proches d’une langue parlée (Souvent Anglais).
Ces langages présentent l’avantage d’être universels dans la mesure ou ils
ne dépendent pas de la machine qui les utilise. Ces langages évolués ont
été généralement crée en fonction d’une orientation donnée.

11
Langage et Traducteurs
CODAGE DE L’INFORMATION

1. Traducteurs:
Tout programme écrit en langage évolué doit être traduit en
langage machine afin de pouvoir être exécuté.
On distingue 2 catégories de traducteurs ( programme spécial
qui permet le passage du langage évolué vers le langage
machine ).

12
Langage et Traducteurs
CODAGE DE L’INFORMATION

1. Traducteurs:
a. Interpréteurs
Les Interpréteurs permettent de traduire et d’exécuter
chaque ligne du programme source, les Interpréteurs sont
souvent utilisés dans la mise au point d’un programme.

13
Langage et Traducteurs
CODAGE DE L’INFORMATION

1. Traducteurs:
a. Compilateurs
Le programme source est traduit entièrement en langage
machine ce qui permet d’obtenir un programme Objet,
quant celui-ci est dépourvu d’erreurs, il est alors exécuté.

14
Faut-il être matheux pour
être bon en algorithmique ?
La maîtrise de l’algorithmique nécessite deux
qualités :
Algorithmique

v Intuition

v il faut être méthodique et rigoureux

15
Faut-il être matheux pour être bon en algorithmique
Intuition
q il faut avoir une certaine intuition, car
aucune recette ne permet de savoir a priori
quelles instructions permettront d’obtenir
le résultat voulu. C’est là, si l’on y tient,
qu’intervient la forme « d’intelligence »
?

requise pour l’algorithmique.


q l’intuition n’est finalement que de
l’expérience tellement répétée que le
raisonnement, au départ laborieux, finit par
devenir « spontané ».
16
Faut-il être matheux pour être bon en algorithmique il faut être méthodique et
rigoureux.
¥ il faut systématiquement se mettre
mentalement à la place de la machine qui va les
exécuter
q cet apprentissage est long, et demande des
heures de travail patient. Aussi, dans un premier
?

temps, évitez de sauter les étapes : la


vérification méthodique, pas à pas, de
chacun de vos algorithmes représente
plus de la moitié du travail à accomplir...
et le gage de vos progrès.

17
Algorithmique et
programmation
Pourquoi apprendre l’algorithmique pour
apprendre à programmer ? En quoi a-t-on
Algorithmique

besoin d’un langage spécial, distinct des


langages de programmation compréhensibles
par les ordinateurs ?

18
Algorithmique et
programmation
¥ Parce que l’algorithmique exprime les
instructions résolvant un problème donné
Algorithmique

indépendamment des particularités de


tel ou tel langage.
¥ Apprendre l’algorithmique, c’est apprendre
à manier la structure logique d’un
programme informatique.

19
Avec quelles conventions
écrit-on un algorithme ?
Historiquement, plusieurs types de notations
ont représenté des algorithmes :
Algorithmique

¥ Algorigramme (représentation graphique)

¥ Pseudo-code

20
Algorigramme

L’algorigramme est la
représentation graphique
de l’algorithme, il permet
de représenter chaque
opération élémentaire au
moyen d’un symbole
graphique normalisé.

21
Avec quelles conventions écrit-on un algorithme ?
Algorigramme

Cette représentation est quasiment


abandonnée, pour deux raisons:
¥ dès que l’algorithme commence à grossir un
peu, ce n’est plus pratique du tout.
¥ cette représentation favorise le glissement
vers un certain type de programmation, dite
non structurée, que l’on tente au contraire
d’éviter.

22
Avec quelles conventions écrit-on un algorithme ?
Pseudo-code
¥ Ce mode de représentation consiste à
exprimer en langage naturel, mais selon une
disposition particulière et des mots choisis.
¥ Ce pseudo-code est susceptible de varier
légèrement d’un livre (ou d’un enseignant) à un
autre. C’est bien normal : le pseudo-code,
encore une fois, est purement conventionnel.
¥ Le pseudo-code se prête mieux que
l’algorigramme à la description des structures
complexes existant dans les langages de haut
niveau.

23
Algorithmique
Introduction

ESSADDOUKI Mostafa
essaddouki@gmail.com
Introduction

¥ Avez-vous déjà indiqué un chemin à un touriste


égaré ?
¥ Un algorithme, c’est une suite d’instructions, qui
une fois exécutée correctement, conduit à un
résultat donné. Si l’algorithme est juste, le résultat
est le résultat voulu, et le touriste se retrouve là
où il voulait aller

25
Introduction

— Qu’est-ce qu’un algorithme?


◦ Est une suite d’instructions écrite en langage d’algorithme
qui résout un problème et qui peuvent être programmé
par n’importe quel langage.
— Une suite d'instructions serait :
1. Se lever
2. Prendre sa douche
3. Prendre le petit déjeuner
4. S'habiller

26
Introduction

¥ Un algorithme doit donc contenir uniquement


des instructions compréhensibles par celui qui
devra l’exécuter.

27
Définition

¥ Algorithmique:
¥ Définition1: désigne l'ensemble des règles et des
techniques qui sont impliquées dans la définition
et la conception des algorithmes.
¥ Définition2: l'algorithmique c'est de savoir
comment lire, écrire, évaluer et optimiser des
algorithmes.

28
Définition

¥ Algorithme:
¥ Définition1: Un algorithme décrit une méthode de
résolution de problème programmable sur
machine.
¥ Définition2 : Un algorithme est un ensemble
d'opérations de calcul élémentaires, organisé selon
des règles précises dans le but de résoudre un
problème donné. Pour chaque donnée du
problème, l'algorithme retourne une réponse
après un nombre fini d'opérations(+,-,/,<,>,...).

29
Définition

¥ Qu’est-ce qu’un programme?


¥ Un programme est donc une suite d'instructions exécutées par
la machine. La machine a son propre langage appelé langage
machine.
¥ Un programme est l’expression d’un algorithme par une
machine donnée dans un langage de programmation donné en
utilisant le répertoire d’actions(opérations, instructions) et les
règles de composition propres à cette machine et à ce langage
donnés.
¥ Un programme est un assemblage et un enchaînement
d’instructions élémentaires écrit dans un langage de
programmation, et exécuté par un ordinateur afin de traiter les
données d’un problème et renvoyer un ou plusieurs résultats.

30
Méthodologie

¥ Pour résoudre un problème, il est vivement conseillé de


réfléchir d'abord à l'algorithme avant de programmer.

¥ Exemple de construction d’algorithme:


¥ Exemple: calcul des racines de l’équation du second ordre ax2+bx+c=0
¥ 1ère version:
¥ Lire a, b, c
¥ Calculer les racines de l’équation
¥ Imprimer les racines

31
Méthodologie

— La résolution d’un problème est caractérisé


par 4 étapes :
◦ Comprendre la nature du problème posé
◦ Préciser les données fournies (Entrées)
◦ Préciser les résultats que l’on désire obtenir
(Sorties)
◦ Déterminer le processus de transformation des
données en résultats.

32
Méthodologie

¥ Comment on programme?
On utilise un pseudo-langage, comportant toutes les
structures de base d'un langage de programmation

On traduit notre "pseudo" en langage évolué


en fonction des possibilités de ce langage

Ce langage sera ensuite traduit en langage machine


33
Méthodologie

¥ Un programme est donc une suite


d'instructions exécutées par la machine. Ces
instructions peuvent:
¥ soit s'enchaîner les unes après les autres, on parle
alors de séquence d'instructions;
¥ ou bien s'exécuter dans certains cas et pas dans
d'autres, on parle alors de structure
alternative;
¥ ou se répéter plusieurs fois, on parle alors de
structure répétitive.

34
La séquence d’instructions

¥ Une instruction est une action que


l'ordinateur est capable d'exécuter.
¥ Une séquence d'instruction serait :
¥ Se lever
¥ Prendre sa douche

¥ Prendre le petit déjeuner

¥ S'habiller

35
Structures Alternatives

¥ Une alternative s'exprime par si … Sinon…


¥ Si fin de semaine ou congé
¥ Mettre sa tenue de sport
¥ Faire son jogging

¥ Sinon
¥ Mettre sa tenue de travail
¥ Aller travailler

¥ Fin Si

36
Structure répétitive

— La routine journalière d’un employé est :


◦ Ouvrir guichet
◦ Appeler premier client
◦ TantQue " client dans file d'attente " et " pas fin de
journée "
– Traiter client
– Appeler client suivant
◦ FinTantQue
— Les deux actions "Traiter client" et "Appeler client
suivant" vont se répéter tant que la condition située
derrière l'instruction "Tant que" est vérifiée.

37
Pourquoi faire des
algorithmes
¥ la rédaction des algorithmes permet plusieurs
choses :
¥ d'être compréhensible par tout informaticien
même s'il ne connait pas le langage du programme
¥ de vérifier la complexité du programme et donc
de l'optimiser
¥ de faire ressortir de manière compréhensible les
cas d'utilisations

38
Notions de Base

v Comment faire des algorithmes?


v Les variables
v Le type de la variable
v Les instructions
v Syntaxe général de l’algorithme
v Les structures de contrôle
v Structure répétitive
v Les tableaux
v Procédures & Fonctions
v Récursivité

39
Comment faire des
algorithmes
¥ les algorithmes sont rédigés dans un langage à mi-chemin
entre le français et les langages de programmation, dit
Notions de Base

pseudo-code .
¥ En programmation, le pseudo-code est une façon de
décrire un algorithme sans référence à un langage de
programmation particulier. L'écriture en pseudo-code
permet souvent de bien prendre toute la mesure de la
difficulté de l'implémentation de l'algorithme, et de
développer une démarche structurée dans la construction
de celui-ci.

40
Comment faire des
algorithmes(suite)
¥ La raison d’être d’un algorithme est de
résoudre un problème. La plus grande
Notions de Base

attention doit être portée à la


compréhension du problème, faute de quoi
l’algorithme n’a aucune chance d’être
correct. Le langage utilisé pour la définition
d’un problème est un langage scientifique
utilisant pour des raisons de simplicité une
langue naturelle(français par exemple).
41
Les variables
—Une variable est un objet dont la valeur n’est
pas invariable
Notions de Base

—Une variable peut être représentée par une case


mémoire, qui contient la valeur d'une donnée.
—Chaque variable possède un nom unique appelé
identificateur par lequel on peut accéder à son
contenu.
◦ Par exemple, on peut avoir en mémoire une
variable prix et une variable quantité.

42
Les variables(suite)
— Une variable possède 3 attributs :
Une valeur
Notions de Base

◦ Un nom(invariable) qui sert à la désigner


◦ Un type(invariable) qui décrit l’utilisation possible
de la variable
— Une valeur
◦ la valeur d'une variable(contenu) peut varier au
cours du programme. L'ancienne valeur est tout
simplement écrasée et remplacée par la nouvelle.
◦ La valeur peut être de différents types et de tailles
différentes.

43
Les variables(suite)
— Nom de la variable
Notions de Base

◦ C’est une suite de lettres et de chiffres commençant


nécessairement par une lettre
◦ Le nombre maximal de caractères imposé varie selon
les langages
◦ La lisibilité des programmes dépend de l’habilité à
choisir des noms représentatifs
◦ Le nom de la variable doit être le plus représentatif
possible du contenu de celle-ci pour faciliter la lecture
de l'algorithme. En revanche, il ne doit pas non plus être
trop long pour ne pas nuire à la lisibilité de l'ensemble.

44
Les variables(suite)
— Nom de la variable
Exemple
Notions de Base


– Je veux mémoriser l'âge d'une personne dans une variable, j'ai le
choix de l'appeler :
– a
– âge
– age
– ageDeLaPersonneDontJeSuisEntrainDeParler
◦ Remarque :
– Le premier cas est trop court, si je n'ai pas lu la description plus
haut, je suis totalement perdu. Le deuxième cas ne convient pas
non plus car on évitera tout caractère accentué dans les noms de
variable. Le dernier cas est certes très précis, mais tellement long
qu'il en devient illisible. Bref, le troisième cas semble le plus
approprié

45
Les variables(suite)
— Type de la variable
Notions de Base

◦ Le type de la variable définit :


– La nature des informations qui seront représentées dans la
variable
– Les limitations concernant les valeurs à représenter
– Les opérations réalisables avec les variables correspondantes.
◦ Propriété : Une variable doit être déclaré avant son
utilisation

46
Les variables(suite)
— Type de la variable
Entier : il s'agit des variables destinées à contenir
Notions de Base


un nombre entier positif ou négatif.
◦ Réel : il s'agit des variables numériques qui ne sont
pas des entiers, c'est à dire qui comportent des
décimales
◦ Caractère : Les variables de type caractère
contiennent des caractères alphabétiques ou
numériques seul(ex: ‘c’)
◦ Booléen : Les variables qui prennent les valeurs
(vrai ou faux) ou les valeurs (oui ou non).

47
Les variables(suite)
— Type de la variable
Chaîne de caractères : représentant un
Notions de Base


texte, contenant un ou plusieurs caractères(ex:
’’Bonjour tout le monde’’)
◦ Tous les traducteurs de langages prennent en compte
cette notion de type par des instructions de déclaration
de type
◦ Exemple:
Variable Moyenne : réel;(Moyenne en numérique)
Variable NbreEtudiant : entier; (NbreEtudiant en
numérique)
Variable c1, lettre, z : caractère;

48
Les variables(suite)

— Type de la variable: Constante


Notions de Base

◦ Définitions : une constante est un objet de


valeur invariable. Elle est la réalisation d’une
valeur de type particulier.
◦ Exemple:
– Constante Zero=0: entier;
( Max:entier)ß100;

49
Les variables(suite)

¥ Les opérateurs de l’algorithmique


Notions de Base

Type Exemple Opération possibles symbole


Réel -15.69, 0.49 Addition +
Soustraction -
Multiplication *
Division /
Exposant ^
Pourcentage %
comparaisons <,<=,>,>=,=,…
Entier -10, 4, 768 Addition +
Soustraction -
Multiplication *
Division DIV
Modulo MOD
Exposant ^
Pourcentage %
50
Les variables(suite)

¥ Les opérateurs de l’algorithmique


Notions de Base

Type Exemple Opération possibles symbole

caractère ‘B’, ‘\n’ comparaisons <,<=,>,>=,=,…

Booléen Vrai, Faux Comparaison <,<=,>,>=,=,…


Négation NON
Conjonction ET
disjonction OU

51
Les instructions
— L’instruction d’affectation
◦ L’instruction d’affectation permet de manipuler les valeurs
Notions de Base

des variables. Son rôle consiste à placer une valeur dans une
variable.
◦ Notation X=Y ou bien X:=Y ou bien XßY
◦ Exemple :
1. affecter une valeur à une variable
– X:=5, On charge la variable X avec la valeur 5
2. Affecter le contenu d’une variable à une autre variable
– X:=Y , On charge X avec le contenu de Y
– Y représente :
• Constante ou Nom d’une variable ou
Expression logique
– X et Y doivent être de même type

52
Les instructions(suite)
— L’instruction d’affectation
Notions de Base

3. Affecter une formule à une variable


– X:= X + 2 * Y

On charge la variable X par la valeur du résultat de


la formule et on écrase sa valeur initiale

X Y
3 4

11

53
Les instructions(suite)
— Les instructions d’Entrée/Sortie
◦ Un programme est amené à :
Notions de Base

– Prendre des données par le périphérique(clavier) : rôle de


l’instruction de lecture
– Communiquer des résultats par l’intermédiaire du
périphérique(écran) : rôle de l’instruction de l’écriture
◦ Instruction de lecture
– Rôle : fournir des données au programme
– Syntaxe : Lire(variable)
– Exemple : Lire( X) on saisie une valeur pour la stocker après dans
la variable X
◦ Instruction d’écriture
– Rôle : fournir des résultats directement compréhensibles
– Syntaxe : Ecrire( variable), Ecrire(’’chaine de caractères’’)
– Exemple : Ecrire(X), Ecrire(’’Bonjour’’)

54
Syntaxe général de
l’algorithme
— Le moule d’un algorithme
Un algorithme comportera :
Notions de Base


– Une partie déclaration
– Une partie encadrée par ’’début’’ ’’ fin’’ où sont
décrites les actions
Algorithme Nom_de_l_algorithme :
Déclaration;
Debut
Actions;
Fin

55
Syntaxe général de
l’algorithme(suite)
— Le moule d’un algorithme
Notions de Base

◦ Dans la partie déclarations, nous trouvons :


– Déclaration de constantes
– déclaration de variables
– déclaration de fonctions
◦ Dans la partie actions, nous trouvons :
– suite d'instructions
– Structure alternative
– Structure répétitive

56
Syntaxe général de
l’algorithme(suite)
— Exemple :
Algorithme toto
Notions de Base

/* les constantes: il est obligatoire de leur donner une valeur dès leur
déclaration */
CONST titi ß 10 : entier
tutu ß "bonjour!" : chaîne
// les variables au sens strict déclarations
VAR riri, fifi : réels
loulou : chaîne
Debut
<Instruction1>;
<Instruction2>;
….
<Instruction3>; Corps  de  l’algorithme
Fin

57
Des Questions ?

58
Exercices : Instructions

— Exercice 1:
Écrire un algorithme qui permet de saisir des
valeurs pour A et B , faire la somme et afficher le
résultat?
— Exercice 2:
Écrire un algorithme qui permet de calculer et
afficher la surface d’un cercle?

59
Exercices :
Instructions(suite)
¥ Exercice 3
Écrire un algorithme qui permet de calculer et
afficher le salaire brut d’un ouvrier connaissant le
nombre d’heure et le tarif d’horaire?

¥ Exercice 4
Écrire un algorithme qui fait la conversion d’une
somme d’argent donnée en DH, en une somme
d’argent en Euro?
60
Les structures de contrôles

— Le branchement conditionnel
Le branchement conditionnel Aide à Structurer un
Notions de Base

ensemble d’instructions
Syntaxe 1 :
Si <conditions> alors
<Instruction1>

<Instruction N>
Fsi
Exemple :
Si (a<b) alors
maxßb;
minßa;
Fsi 61
Les structures de
contrôles(suite)
— Le branchement conditionnel
Notions de Base

Syntaxe :
Si <expression booléenne> alors
<Instruction1>

<Instruction N>
Sinon Exemple :
<Instruction1> Si (a<b) alors
… maxßb
<Instruction N> Sinon
Fsi maxßa
Fsi 62
Les structures de
contrôles(suite)
— Qu’est ce qu’une condition ?
une condition est composée de trois éléments :
Notions de Base


– une valeur, un opérateur de comparaison, une autre
valeur
◦ Les valeurs peuvent être a priori de n’importe quel type
(numériques, caractères…). Mais si l’on veut que la
comparaison ait un sens, il faut que les deux valeurs de
la comparaison soient du même type !
◦ Les opérateurs de comparaison sont :
– = égal à, <> différent de
– < strictement plus petit que, > strictement plus grand
que, <= plus petit ou égal à, >= plus grand ou égal à…

63
Les structures de
contrôles(suite)
¥ Exemple:
Notions de Base

¥ ‘t’ < ‘w’ VRAI


5>6 FAUX
2< 3 VRAI
¥ Exercice:
¥ Écrire un algorithme qui demande un nombre à
l’utilisateur, et l’informe ensuite si ce nombre
est positif ou négatif (on laisse de côté le cas où
le nombre vaut zéro).

64
Les structures de
contrôles(suite)
— Conditions composées:
◦ Certains problèmes exigent parfois de formuler des
Notions de Base

conditions composées liées entre eux par les


opérateurs logiques suivants : ET, OU, NON, et XOR.
– Condition1 ET Condition2 :VRAI, si Condition1 est
VRAI et Condition2 est VRAI.
– Condition1 OU Condition2 : VRAI, si Condition1 est
VRAI ou bien Condition2 est VRAI.
– Le XOR (ou OU exclusif)
– Condition1 XOR Condition2 : VRAI, si Condition1 est VRAI,
ou bien Condition2 est VRAI.
– Mais si toutes les deux sont fausses, ou que toutes les deux
sont VRAI, alors le résultat global est considéré comme
FAUX.

65
Les structures de
contrôles(suite)
¥ le NON inverse une condition : NON(Condition1) est
VRAI si Condition1 est FAUX, et il sera FAUX si
Notions de Base

Condition1 est VRAI.


¥ tables de vérité (C1 et C2 représentent deux
conditions, et on envisage à chaque fois les quatre cas
possibles) :
C1 et C2 C2 Vrai C2 Faux
C1 Vrai Vrai Faux
C1 Faux Faux Faux

C1 ou C2 C2 Vrai C2 Faux
C1 Vrai Vrai Vrai
C1 Faux Vrai Faux
66
Les structures de
contrôles(suite)
C1 xor C2 C2 Vrai C2 Faux
C1 Vrai Faux Vrai
Notions de Base

C1 Faux Vrai Faux

Non C1
C1 Vrai Faux
¥ Exercice : C1 Faux Vrai
¥ Écrire un algorithme qui demande deux nombres à
l’utilisateur et l’informe ensuite si leur produit est
négatif ou positif (on laisse de côté le cas où le
produit est nul). Attention toutefois : on ne doit
pas calculer le produit des deux nombres.

67
Exercices : structures de
contrôles

¥ Exercice 1:
¥ On désire comparer deux valeurs ,Écrire un
algorithme qui affiche la plus grande des deux?
¥ Exercice 2:
¥ Écrire un algorithme qui affiche le salaire brut d’un
ouvrier sachant que les heures supplémentaires de
172 heures sont payées à 50% de tarifs d’horaire en
plus?

68
Exercices : structures de
contrôles
¥ Exercice 4:
Calculer le montant de la facture d’un client ayant commandé
une quantité d’un produit avec un prix unitaire hors taxe
¥ Le taux de T.V.A est : 20%
¥ Les frais de transport sont 0.8 DH de Km , Le client est disposé
du frais de transport si le montant est supérieur 4500 DH
¥ Exercice 5:
Une bibliothèque fait des réductions sur l’achat des livres :
¥ 25% pour les étudiants.
¥ 15% pour les enseignants
Écrire un algorithme qui calcule et affiche le prix à payer selon le
type du client?

69
Exercices : structures de
contrôles
¥ Exercice 6:
Écrire un algorithme qui calcule et affiche le maximum
de trois nombre A,B et C ?
¥ Exercice 7:
Écrire un algorithme qui permet de résoudre
l’équation du premier degré : aX+b=0?
¥ Exercice 8:
Écrire un algorithme qui permet de résoudre une
équation de second degré : aX²+bX+c=0 ?

70
Exercices : structures de
contrôles
¥ Exercice 9:
Écrire un algorithme qui lie trois nombre A,B et C , puis il
détermine si l’un est égal à la somme de 2 autres sinon il
affiche un message « pas de solution »?

71
Les structures de
contrôles(suite)
— Le choix multiple
Variable i:entier;
Notions de Base

Lire(i);
CAS i VAUT
1 : Instruction(s) 1
2 : Instruction(s) 2
3 : Instruction(s) 3

n : Instruction(s) n
Autre : Instructions
FINCAS

72
Exercices : structures de
contrôles
¥ Exercice 10:
Écrire un algorithme qui à partir d’un nombre
compris entre 1 et 7 affiche le jour
correspendant?

73
Les structures de
contrôles(suite)
— Tests imbriqués:
◦ un algorithme doit donner l’état de l’eau selon sa
Notions de Base

température il doit choisir entre trois réponses


possibles (solide, liquide ou vapeur).
Variable Temp : Entier
Début
Ecrire (“Entrez la température de l’eau :”)
Lire (Temp)
Si Temp <= 0 Alors
Ecrire (“C’est de la glace“)
Finsi
Si Temp > 0 Et Temp < 100 Alors
Ecrire (“C’est du liquide”)
Finsi
Si (Temp > 100 )Alors
Ecrire “C’est de la vapeur”
Finsi
Fin

74
Les structures de
contrôles(suite)
— Tests imbriqués: deuxième solution qui
imbrique le test
Notions de Base

Variable Temp : Entier


Début
Ecrire (“Entrez la température de l’eau :”)
Lire (Temp)
Si Temp =< 0 Alors
Ecrire (“C’est de la glace“)
Sinon
Si Temp < 100 Alors
Ecrire( “C’est du liquide”)
Sinon
Ecrire( “C’est de la vapeur”)
Finsi
Finsi
Fin

75
Les structures de
contrôles(suite)
¥ Exercice:
Notions de Base

¥ Écrire un algorithme qui demande l’âge d’un


enfant à l’utilisateur. Ensuite, il l’informe de sa
catégorie :
- « Poussin » de 6 à 7 ans
- « Pupille » de 8 à 9 ans
- « Minime » de 10 à 11 ans
- « Cadet » après 12 ans
Peut-on concevoir plusieurs algorithmes
équivalents menant à ce résultat ?

76
Les structures de
contrôles(suite)
— Variables Booléennes:
◦ Il existe des variables (les booléennes) susceptibles
Notions de Base

de stocker les valeurs VRAI ou FAUX. On peut


donc entrer des conditions dans ces variables, et
tester ensuite la valeur de ces variables.
◦ Exemple:
– Variable Temp : Entier
Variables A, B : Booléen
Début
Ecrire (“Entrez la température de l’eau :”)
Lire (Temp)
A ← Temp <= 0
B ← Temp < 100

77
Les structures de
contrôles(suite)
¥ Si A Alors
Ecrire( “C’est de la glace“)
Notions de Base

Sinon
Si B Alors
Ecrire “C’est du liquide”
Sinon
Ecrire “C’est de la vapeur”
Finsi
Finsi
Fin
¥ Dans une condition composée employant à la fois
l’opérateur ET et l’opérateur OU, la présence de
parenthèses possède une influence sur le résultat.

78
Exercice: Les structures de
contrôles
¥ Ecrivez un algorithme qui lira au clavier l’heure
et les minutes, et il affichera l’heure qu’il sera
une minute plus tard.
¥ Par exemple, si l'utilisateur tape 21 puis 32,
l'algorithme doit répondre : "Dans une minute,
il sera 21 heure(s) 33".
¥ NB : on suppose que l'utilisateur entre une
heure valide. Pas besoin donc de la vérifier.

79
Structure répétitive
¥ A quoi cela sert-il donc ?
Prenons le cas d’une saisie au clavier (une lecture),
Notions de Base

¥
où par exemple, le programme pose une question à
laquelle l’utilisateur doit répondre par O (Oui) ou
N (Non). Mais tôt ou tard, l’utilisateur, risque de
taper autre chose que la réponse attendue.
¥ Alors, dans tout l’algorithme on met en place ce
qu’on appelle un contrôle de saisie, afin de
vérifier que les données entrées au clavier
correspondent bien à celles attendues par
l’algorithme.

80
Structure répétitive(suite)
¥ A quoi cela sert-il donc ?
¥ On pourrait essayer avec une structure de contrôle SI.
Notions de Base

¥ Variable Rep : Caractère


Début
Ecrire (“Voulez vous un café ? (O/N)“)
Lire (Rep)
Si Rep <> “O“ ET Rep <> “N” Alors
Ecrire( “Saisie erronnée. Recommencez“)
Lire (Rep)
FinSi
Fin
¥

81
Structure répétitive(suite)

¥ A quoi cela sert-il donc ?


Si l’utilisateur ne se trompe qu’une seule fois, et
Notions de Base

¥
entre une valeur correcte à la deuxième demande,
c’est parfait.
¥ Par contre, s’il commet une deuxième erreur, il
faudrait rajouter un SI. Et ainsi de suite, on peut
rajouter des centaines de SI, et écrire un
algorithme lourd.
¥ La solution consistant à aligner des SI n’est pas
correcte dans ce cas. La seule issue est d’utiliser
une structure de boucle.

82
Structure répétitive(suite)
— A quoi cela sert-il donc ?
◦ Qui ce présente ainsi: TantQue booléen Faire
Notions de Base


Instructions

FinTantQue
– Le principe est simple : l’algorithme arrive sur la ligne du TantQue. Il
examine alors la valeur du booléen (qui, je le rappelle, peut être une
variable booléenne ou, plus fréquemment, une condition). Si cette valeur
est VRAI, l’algorithme exécute les instructions qui suivent, jusqu’à ce qu’il
rencontre la ligne FinTantQue. Il retourne ensuite sur la ligne du TantQue,
procède au même examen, et ainsi de suite. Le cycle ne s’arrête que
lorsque le booléen prend la valeur FAUX.

83
Structure répétitive(suite)
¥ A quoi cela sert-il donc ?
¥ Illustration avec notre problème de contrôle de saisie. Une
Notions de Base

première approximation de la solution consiste à écrire :


Variable Rep :Caractère
Début
Ecrire (“Voulez vous un café ? (O/N)“)
lire(Rep)
TantQue Rep <> “O“ ET Rep <> “N“ Faire
Lire (Rep)
FinTantQue
Fin

¥

84
Structure répétitive(suite)
¥ A quoi cela sert-il donc ?
¥ Une deuxième approximation de la solution, avec affectation, consiste à
écrire :
Notions de Base

Variable Rep :Caractère


Début
Rep ← “X“
Ecrire (“Voulez vous un café ? (O/N)“)
TantQue Rep <> “O“ ET Rep <> “N“ Faire
Lire (Rep)
FinTantQue
Fin
¥ Cette manière de procéder est à connaître, car elle est employée très
fréquemment.

¥

85
Structure répétitive(suite)

¥ Structure répétitive, dite aussi itérative ou


boucle permet, de répéter une ou plusieurs
Notions de Base

actions un certain nombre de fois. On


identifie en règle générale 3 types de
répétitive :
¥ TantQue
¥ Répéter Jusqu'à

¥ Pour

86
Structure répétitive(suite)

— Tant que
Les répétitives où la condition d’arrêt est
Notions de Base

—
placée au début.
◦ Syntaxe :
Tant que <expression logique> faire
<séquence d’instructions>
Ftantque
TantQue condition
actions
FTantQue
— Ce qui signifie : tant que la condition est vraie,
on exécute les actions.
87
Des Questions ?

88
Exercices

1. Ecrire un algorithme qui demande à l’utilisateur un


nombre compris entre 1 et 3 jusqu’à ce que la réponse
convienne.
2. Ecrire un algorithme qui demande un nombre compris
entre 10 et 20, jusqu’à ce que la réponse convienne. En
cas de réponse supérieure à 20, on fera apparaître un
message : « Plus petit ! », et inversement, « Plus grand !
» si le nombre est inférieur à 10.
3. Écrire un algorithme qui demande un nombre de
départ, et qui ensuite affiche les dix nombres suivants.
Par exemple, si l'utilisateur entre le nombre 17, le
programme affichera les nombres de 18 à 27.
89
Structure répétitive(suite)

— Boucler en comptant, ou compter en


bouclant
Notions de Base

◦ Il arrive très souvent qu’on ait besoin


d’effectuer un nombre déterminé de passages.
Or, a priori, notre structure TantQue ne sait pas
à l’avance combien de tours de boucle elle va
effectuer:
◦ C’est pourquoi une autre structure de boucle
est à notre disposition :
– la structure : Pour

90
Structure répétitive(suite)

¥ Variable Num1 : Entier ¥ Variable Num1 : Entier


Début Début
Num1 ← 0 Pour Num1 = 1 à 15
TantQue Num1 < 15 Faire
Faire
Num1 = Num1 + 1 Ecrire( “Passage numéro :
Ecrire (“Passage numéro : “, Num1)
“, Num1) Num1 Suivant
FinTantQue Fin
Fin

la structure :Pour est un cas particulier de TantQue : celui où le


programmeur peut dénombrer à l’avance le nombre de tours de boucles
nécessaires.
91
Structure répétitive
¥ Pour
Les répétitives où le nombre d’itération est
Notions de Base

¥
fixée une fois pour toute.
¥ Syntaxe :
¥ Pour Compteur = Initial à Final Pas
ValeurDuPas

Instructions

Compteur suivant (n’est pas indispensable)
FPour

92
Structure répétitive(suite)
¥ la progression du compteur est laissée à votre libre disposition.
Dans la plupart des cas, on a besoin d’une variable qui augmente
Notions de Base

de 1 à chaque tour de boucle. On ne précise alors rien à


l’instruction « Pour » ; celle-ci, par défaut, comprend qu’il va
falloir procéder à cette incrémentation de 1 à chaque passage,
en commençant par la première valeur et en terminant par la
deuxième.
¥ Si vous souhaitez une progression plus spéciale, de 2 en 2, ou de
3 en 3, ou en arrière, de –1 en –1, ou de –10 en –10, il faut
préciser à votre instruction « Pour » en lui rajoutant le mot
« Pas » et la valeur de ce pas.
¥ Quand on met un pas négatif dans une boucle, la valeur initiale
du compteur doit être supérieure à sa valeur finale si l’on veut
que la boucle tourne !

93
Structure répétitive(suite)

¥ Les structures TantQue sont employées dans les


situations où l’on doit procéder à un traitement sur
Notions de Base

les éléments d’un ensemble dont on ne connaît pas


d’avance la quantité, comme par exemple :
¥ le contrôle d’une saisie.
¥ la gestion des tours d’un jeu (tant que la partie n’est
pas finie, on recommence).
¥ Les structures Pour sont employées dans les
situations où l’on doit procéder à un traitement sur
les éléments d’un ensemble dont on connaît d’avance
la quantité.

94
Structure répétitive(suite)

— Des boucles imbriquées:


◦ De même que qu’une structure SI … ALORS peut
Notions de Base

contenir d’autres structures SI … ALORS, une


boucle peut tout à fait contenir d’autres boucles.
Variables Num1, Num2 : Entier
Pour Num1 ← 1 à 15
Ecrire (“Il est passé par ici“)
Pour Num2 ← 1 à 6
Ecrire (“Il repassera par là“)
Fpour
FPour

95
Structure répétitive(suite)

— Répéter..Jusqu’à :
la condition d’arrêt est placée à la fin
Notions de Base

◦ Syntaxe :
Répéter
<séquence d’instructions>
Jusqu’à <expression logique>
Frépéter
◦ Exemple :
Num1:=1
Répéter
Ecrire (“Passage numéro : “, Num1)
Num1 = Num1 + 1
Jusqu’à (Num1 >= 15 )

96
Des Questions ?

97
Exercices

1. Écrire un algorithme qui saisie N entier et affiche leur


somme et leur moyenne ?
2. Écrire un algorithme pour calculer et afficher la somme
et la moyenne de100 premiers nombres entiers ?
3. Écrire un algorithme qui permet de calculer S1,
S2,S3,S4,S5,S6 tel que:
¥ S1 = 1 + ½ + 1/3 + ¼ +……..1/N
¥ S2 = 1 + ½ + ¼ + 1/6 +……..1/N
¥ S3 = 1 + 1/3 + 1/5 +……..1/N
¥ S4 = 1 - ½ + ¼ - 1/6……..1/N
¥ S5 = 1 + x+x²……..xN
¥ S6 = 1 + x+x²/2…….. xN /N

98
Exercices

4. Ecrire un algorithme qui vérifie si un nombre est premier où


pas ?
5. Ecrire un algorithme qui saisit deux entiers, calcule et affiche la
somme de ces 2 entiers (on arrête la saisie avec la valeur 0) ?
6. Ecrire un algorithme qui permet de calculer le factoriel d’un
nombre positif ?

99
Devoir N° 1
¥ Une salle de cinéma désire automatiser la gestion de la billetterie
pour chaque client qui se présente, on calcule le prix du billet en
fonction des données suivantes:
¥ NF : Numéro du film
¥ Age : Age de spectateur
¥ Le prix normal de la facture est de 30 DH, cependant des remises
peuvent être accorder en fonction du critères suivants :
¥ NF=2 ou Age < 15 remise de 50%
¥ NF=2 et Age >75 remise 25%
¥ NF=3 et Age < 15 entrée refusée
¥ Écrire un algorithme qui permet de calculer et décider le prix à
payer pou chaque client qui se présente . on arrête la saisie par
"non"

100
Devoir N°2
¥ Une entreprise désire automatisée la gestion de paie de
son personnel. Pour chaque employé, on doit introduire
le nom, le prénom, le salaire de base(SB), le nombre
d'enfant et l'ancienneté(ANC).
¥ Un prix de 100 DH est accordé pour chaque
enfant .
¥ Si ancienneté<=10 ans et SB < 1000 DH une prime de 50% du
SB
¥ Si l'ancienneté est 10 ans < ANC <20 ans et SB > 1000 DH
prime de 70% du SB
¥ Calculer le salaire brute (SB+ le prime + les enfants) et
afficher le nom, prénom, l'ancienneté , SB, prime et le
salaire brute

101
Notions de base
Les tableaux

ESSADDOUKI Mostafa
essaddouki@gmail.com
Les tableaux

¥ Supposons que nous avons besoin de calculer la


moyenne de 12 notes d’un étudiant.
¥ la seule solution dont nous disposons consiste à
déclarer douze variables, appelées par exemple:
X1, X2, X3,…X12.
¥ La première étape est de lire les valeurs de toute
ces variables une par une, ce qui nous fait douze
instructions de lecture et après calculer la
moyenne par l’instruction:
¥ Moy ← (X1+X2+X3+X4+X5+NX6+X7+X8+X9+X10+X11+X12)/12

103
Les tableaux(suite)

¥ C’est pourquoi l’algorithmique (la


programmation) nous permet de rassembler
toutes ces variables en une seule, au sein de
laquelle chaque valeur sera désignée par un
numéro.
Un ensemble de valeurs portant le même nom de variable et repérées par
un nombre, s’appelle un tableau, ou encore une variable indicée.
Le nombre qui, au sein d’un tableau, sert à repérer chaque valeur s’appelle
l’indice.
Chaque fois que l’on doit désigner un élément du tableau, on fait figurer le
nom du tableau, suivi de l’indice de l’élément, entre parenthèses.
Ex: Nom_tableau(5)

104
Les tableaux(suite)

— Notation et utilisation algorithmique


◦ Dans notre exemple, nous créerons donc un tableau
appelé Note.
◦ Tableau Note(12) : Entier
◦ On peut créer des tableaux contenant des variables
de tous types : tableaux de numériques, tableaux de
caractères, tableaux de booléens, tableaux de tout ce
qui existe dans un langage donné comme type de
variables.
◦ L’énorme avantage des tableaux, c’est qu’on va
pouvoir les traiter en faisant des boucles.

105
Les tableaux(suite)

— Notation et utilisation algorithmique


Tableau Note(12) : Entier
Variables i, Som : Entier
Variable Moy : Réel
Pour i ← 0 à 11
Ecrire (“Entrez la note n°”, i)
Lire( Note(i))
FPour
Som ← 0
Pour i ← 0 à 11
Som = Som + Note(i)
Fpour
Moy = Som / 12

106
Les tableaux(suite)
¥ Remarque générale : l’indice qui sert à désigner les
éléments d’un tableau peut être exprimé directement
comme un nombre en clair, mais il peut être aussi une
variable, ou une expression calculée.
¥ La valeur d’un indice doit toujours :
¥ être égale au moins à 0 (dans quelques rares langages, le
premier élément d’un tableau porte l’indice 1). Mais nous avons
choisi ici de commencer la numérotation des indices à zéro,
comme c’est le cas en langage C.
¥ être un nombre entier. Quel que soit le langage.
¥ être inférieure ou égale au nombre d’éléments du
tableau (moins 1, si l’on commence la numérotation à
zéro).

107
Exercices

¥ Écrire un algorithme qui déclare et remplisse un


tableau de 7 valeurs numériques en les mettant
toutes à zéro.
¥ Écrire un algorithme qui déclare et remplisse un
tableau contenant les six voyelles de l’alphabet
latin.
¥ On saisit des entiers et on les range dans un
tableau (maximum 50) Écrire un programme qui
affiche le maximum, le minimum et la valeur
moyenne de ces nombres.
108
Exercices

¥ Écrivez un algorithme permettant à


l’utilisateur de saisir un nombre quelconque
de valeurs, qui devront être stockées dans un
tableau. L’utilisateur doit donc commencer par
entrer le nombre de valeurs qu’il compte
saisir. Il effectuera ensuite cette saisie. Enfin,
une fois la saisie terminée, le programme
affichera le nombre de valeurs négatives et le
nombre de valeurs positives.
109
Exercices
¥ Que produit l’algorithme suivant ?
Tableau Nb(6) : Entier
Variable i en Entier
Début
Pour i ← 0 à 5
Nb(i) ← i * i
FPour
Pour i ← 0 à 5
Écrire Nb(i)
FPour
Fin
¥ Peut-on simplifier cet algorithme avec le même résultat ?

110
Exercices
¥ Que produit l’algorithme suivant ?
Tableau N(7) en Entier
Variables i, k en Entier
Début
N(0) ← 1
Pour k ← 1 à 6
N(k) ← N(k-1) + 2
FPour
Pour i ← 0 à 6
Ecrire N(i)
FPour
Fin
¥ Peut-on simplifier cet algorithme avec le même résultat ?
111
Notions de sous-algorithme
— Définition
◦ Un sous-algorithme est un élément d’algorithme nommé et
éventuellement paramétré que l’on définit afin de pouvoir
ensuite l’appeler par son nom en affectant, s’il y a lieu, des
valeurs aux paramètres.
◦ Intérêt :
– Réaliser un découpage d’une tâche en sous-tâche.
– Effectuer une seule description d’une tâche commune
– Concevoir une application de manière descendante en entrant de plus
en plus dans les détails
◦ Structure : un sous-algorithme est composé
– D’une tête nom sous-algorithme, paramètres(arguments) avec leur
type
– D’un corps des déclarations d’objets locaux aux sous-algorithme,
instructions à exécuter

112
Notions de sous-algorithme
◦ Sous-algorithme Nom(liste
Nom des paramètres)
déclarations des variables locales
Début
Corps du sous-algorihtme
Fin
◦ Algorithme Nom
Déclaration des variables
Début
Instructions
Appel du sous-algorithme
Instructions
Fin

113
Procédures & Fonctions

— Procédures
◦ Syntaxe
Procédure nom_procédure(var:type;var:type)
Variable interne
Début procédure
Instructions
Finprocédure

114
Procédures & Fonctions

— Fonctions
◦ Syntaxe
Fonction nom_fonction(var:type;var:type):type
Variable interne;
Début fonction
Instructions;
Retourner variable;
Fin fonction

115
Procédure & Fonction
Rep1,Rep2 : caractère
Fonction RepOuiNon() : caractères
variable Rep ← ""
TantQue Rep <> "Oui" et Rep <> "Non"
Ecrire( "Tapez Oui ou Non")
Lire (Rep)
FinTantQue
Renvoyer Rep
Fin
Début
Ecrire( "Etes-vous marié ?")
Rep1 ← RepOuiNon()
Ecrire( "Avez-vous des enfants ?" )
Rep2 ← RepOuiNon()
Fin

116
EXERCICES
Exercices

¥ EX0
¥ Ecrire un algorithme qui lit une valeur qlq x et qui
détermine la valeur de l’expression :
1+x+x2+…+x20
¥ EX1
¥ Ecrire une procédure qui lit N éléments en paramètre et
retourne la somme de ces éléments dans une variable
somme.
¥ EX2
¥ Ecrire une fonction entière statistique qui lit 100
notes et retourne le nombre de notes comprises
entre 10 et 20 compris

118
Exercices

— EX3
◦ Ecrire un algorithme qui permet de faire les
traitements suivants :
Soit un tableau T de N entiers
1. Remplir les N cases du tableau
2. Compter le nombre des éléments non nuls
3. Trouver le plus grand éléments du tableau et le
mettre dans la variable MAX
4. Rechercher la place du plus petit élément et le
mettre dans la variable position.
119
Exercices

¥ EX4
¥ Ecrire un algorithme qui cherche dans un tableau non
trié si un nombre x existe au moins une fois.
¥ EX5
¥ Ecrire un algorithme qui cherche dans un tableau trié si
un nombre x existe au moins une fois.
¥ EX6
¥ Ecrire un algorithme qui permet de lire les âges de 25

stagiaires(ils ont au moins 23ans et au plus 30ans) et


fournit le nombre de stagiaires de chacun des âges.

120
Exercices

¥ EX7
¥ Le tableau factures contient N constantes de factures,
le tableau PAYES de N booléens indique si chacune
des factures a été réglées ou pas, on veut recopier
séquentiellement dans un 3ème tableau
RESTESAPAYES, les sommes restant dues.

121
Récursivité
¥ Un algorithme est dit récursif lorsqu’il intervient dans sa
description, c’est-à-dire lorsqu’il est défini en fonction de lui-
même.
¥ Exemple: x0 = 1, xn = x*xn-1 si n≥1
Fonction fact(x : entier, n : entier):entier
Variable Résultat : entier;
Début
Si(n=0) alors
Résultat =1;
Sinon
Résultat = x*fact(x,n-1);
Fsi
Renvoyer Résultat;
Fin

122
Méthodes de Tri élémentaires
•Définition
•Tri par sélection
•Tri par bulles
•Tri par insertion

ESSADDOUKI Mostafa
essaddouki@gmail.com
Définition

¥ « trier » signifie « répartir en plusieurs classes


selon certains critères ».
¥ De manière plus restrictive, le terme de « tri » en
algorithmique est très souvent attaché au
processus de classement d'un ensemble
d'éléments dans un ordre donné.
¥ Par exemple, trier N entiers dans l'ordre
croissant, ou N noms dans l'ordre alphabétique.
¥ Tout ensemble muni d'un ordre total peut fournir
une suite d'éléments à trier.
124
Tri par sélection

¥ Tri par sélection est l’un des algorithmes de tri


les plus simple, elle procède à la sélection
successive de l’élément minimal parmi ceux
restant. Il fonctionne de la manière suivante :
¥ On commence par rechercher l’élément de plus
petite valeur du tableau pour l’échanger avec celui en
première position.
¥ On recherche ensuite l’élément ayant la deuxième
plus petite valeur pour l’échanger avec celui en
deuxième position, et l’on continue ainsi jusqu’à ce
que le tableau soit entièrement trié.

125
Tri par sélection(suite)
— Le sous-algorithme suivant est une implantation de ce processus. Pour tout i entre 1 et
N-1, on échange T[i] avec l’élément de valeur minimal parmi T[i]….T[N] :
Pocédure TriSelection(T:
TriSelection 1…N: entier; N: entier)
Var i, j, min, q:entier;
Début
pour i de 1 jusqu’à N faire
min=i; A mesure que l’indice i progresse vers
pour j de i+1 jusqu’à N faire la droite du fichier, les éléments situés à
Si(T[j]<T[min]) alors sa gauche ont pris leur position
min=j; définitive et le tableau est trié lorsque
Fsi l’indice i atteint l’extrémité droite
Fpour
q=T[min];T[min]=T[i];T[i]=q;
Fpour
Finprocédure

126
Tri par sélection(suite)

¥ Il est facile de compter le nombre d'opérations. Quel que soit


l'ordre du tableau initial, le nombre de comparaisons reste le
même, ainsi que le nombre d'échanges. À chaque itération, on
considère l'élément tab[i] et on le compare successivement à
tab[i+1], ..., tab[N]. On fait donc N-i comparaisons.
¥ Le nombre total de comparaisons est donc de :
¥ et il y a (N-1) échanges.
¥ En ce qui concerne sa complexité, on dit que le tri par sélection
est en O (N2), à la fois dans le meilleur des cas, en moyenne et
dans le pire des cas, c'est-à-dire que son temps d'exécution est
de l'ordre du carré du nombre d'éléments à trier.

127
Tri par bulle

¥ Le « tri bulle » est une variante du tri par sélection. Il


consiste à parcourir le tableau tab en permutant toute
paire d'éléments consécutifs (tab[k],tab[k+1]) non
ordonnés - ce qui est un échange et nécessite donc
encore une variable intermédiaire de type entier. Après le
premier parcours, le plus grand élément se retrouve dans
la dernière case du tableau, en tab[N], et il reste donc à
appliquer la même procédure sur le tableau composé des
éléments tab[1], ..., tab[N-1]. Le nom de ce tri provient
du déplacement des « bulles » les plus grandes vers la
droite.

128
Tri par bulle(suite)
/* Procédure de tri bulle */
procedure triBulle(entier[] tab)
entier i, k; entier tmp;
pour (i de N à 2 en décrémentant de 1) faire
pour (k de 1 à i-1 en incrémentant de 1) faire
si (tab[k] > tab[k+1]) alors
tmp <- tab[k];
tab[k] <- tab[k+1];
tab[k+1] <- tmp;
fin si
fin pour
fin pour
fin procedure

129
Tri par bulle(suite)
¥ Le nombre de comparaisons dans la procédure de tri bulle est le
même que pour le tri par sélection :
¥ Le nombre d'échanges quant à lui dépend de l'ordre des éléments
dans le tableau :
¥ dans le meilleur des cas, le tableau initial est trié et il n'y a pas d'échange à
faire ;
¥ en moyenne, on montre que le nombre d'échanges est de :
¥ dans le pire des cas, les entiers du tableau sont initialement donnés
dans l'ordre décroissant. Dans ce cas, on effectue l'échange à
chaque comparaison, c'est-à-dire que le nombre d'échanges est
alors de :

¥ Quoi qu'il en soit, la complexité du tri bulle reste en O (N2), c'est-


à-dire du même ordre de grandeur que le carré du nombre
d'éléments.

130
Tri par insertion
¥ Cette méthode de tri est très différente de la méthode de tri par
sélection et s'apparente à celle utilisée pour trier ses cartes dans
un jeu : on prend une carte, tab[1], puis la deuxième, tab[2], que l'on
place en fonction de la première, ensuite la troisième tab[3] que
l'on insère à sa place en fonction des deux premières et ainsi de
suite. Le principe général est donc de considérer que les (i-1)
premières cartes, tab[1],..., tab[i-1] sont triées et de placer la ie
carte, tab[i], à sa place parmi les (i-1) déjà triées, et ce jusqu'à ce
que i = N.
¥ Pour placer tab[i], on utilise une variable intermédiaire tmp pour
conserver sa valeur qu'on compare successivement à chaque
élément tab[i-1],tab[i-2],... qu'on déplace vers la droite tant que sa
valeur est supérieure à celle de tmp. On affecte alors à
l'emplacement dans le tableau laissé libre par ce décalage la valeur
de tmp.

131
Tri par insertion(suite)

/* Procédure de tri par insertion */


procedure triInsertion(entier[] tab)
entier i, k,tmp;
pour (i de 2 à N en incrémentant de 1) faire
tmp <- tab[i];
k <- i;
tant que (k > 1 et tab[k - 1] > tmp) faire
tab[k] <- tab[k - 1]; k <- k - 1;
fin tant que tab[k] <- tmp;
fin pour
fin procedure

132
Tri par insertion(suite)

¥ La comparaison avec les deux algorithmes précédents


montre que la complexité du tri par insertion est plus
fortement dépendante de l'ordre du tableau initial. Nous
comptons ici le nombre de comparaisons (qui est le
nombre de décalages à un près) :
¥ dans le meilleur des cas, le tableau initial est trié et on effectue
alors une comparaison à chaque insertion, on effectue donc N-1
comparaisons ;
¥ en moyenne, on montre que le nombre de comparaisons est
de :

133