Vous êtes sur la page 1sur 59

Cours

d’Algorithmique
1ère année GECSI

ANSAR DAGHOURI
D É PA RT E M E N T G É N I E É L E C T R I Q U E
ENSET MOHAMMEDIA
A N N É E U N I V E R S I TA I R E : 2 0 1 6 - 2 0 1 7

ANSAR DAGHOURI 1
Qu’est ce qu’un
algorithme?
Le terme algorithme vient du nom du mathématicien arabe
ALKHAWARISMI (820 après J.C)
Un algorithme est un ensemble d'opérations de calcul élémentaires,
organisés 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(+, -,/,<,>,... ).
L’algorithmique désigne aussi la discipline qui étudie les algorithmes et
leurs applications en informatiques.

ANSAR DAGHOURI 2
Qu’est ce qu’un bon
Algorithme?
Un bon algorithme est un schéma de résolution possédant les
caractéristiques suivantes :
◦ Correct : s’il répond bien au problème posé
◦ Précis : s’il fournit exactement les résultats attendus
◦ Rapide : s’il utilise un temps d’exécution minimal indépendamment de la
vitesse de la machine
◦ Efficace : s’il utilise le moins d’espace mémoire possible
◦ Clair et lisible : s’il ne présente pas de difficulté de compréhension pour un
autre programmeur désirant le développer ou maintenir
◦ Résistant : s’il est capable de détecter les cas de mauvaises utilisations.

ANSAR DAGHOURI 3
Représentation d’un
algorithme
Il existe deux façon pour représenter un Algorithme :
 L’Organigramme : représentation graphique avec des
symboles (carrés, losanges, …)
◦ Offre une vue d’ensemble de l’algorithme
◦ Représentation quasiment abandonnée
 Le pseudo-code : représentation textuelle avec une série de
conventions ressemblant à un langage de programmation
(sans les problèmes de syntaxes)
◦ Plus pratique pour écrire un algorithme
◦ Représentation largement utilisée

ANSAR DAGHOURI 4
Environnement de
l’Algorithme
Un algorithme utilise un certain nombre d’objets pour
fonctionner appelé: Environnement de l’algorithme.
Il est constitué des :
◦ Objets d’entrée (OE)
◦ Objets de sortie (OS)
◦ Objets constants (OC)
◦ Objets intermédiaire (OI)

ANSAR DAGHOURI 5
Notion d’objet
Un objet peut se présenter sous deux formes différentes : objet
constant ou objet variable.
Le traitement d’un objet ne peut concerner que la valeur de celui-ci.
Règle : les objets doivent être déclarés avant d’être utilisés, ils doivent
être caractérisés par :
◦ Un identificateur
◦ Un type
◦ Une valeur

ANSAR DAGHOURI 6
Identificateur d’un objet
C’est un nom symbolique que nous attribuons à l’objet.
 Le choix de l’identificateur d’un objet est soumis à
quelques règles qui varient selon le langage, mais en
général :
◦ Il doit commencer obligatoirement par une lettre alphabétique
◦ La suite des caractères doit être constituée de lettres (a-z, A-Z), soit
de chiffres (0..9), soit du caractère soulignement ‘’_’’.
◦ Il ne doit contenir ni espace ni caractères spéciaux.

ANSAR DAGHOURI 7
Valeur d’un objet

C’est le contenu courant d’un objet. Il peut être :


◦ Constant : ne peut être modifié par les instructions de
l’algorithme tout au long de son exécution

◦ Variable : dans le cas contraire.

ANSAR DAGHOURI 8
Type d’un objet
Le type d’un objet détermine l’ensemble des valeurs qu’il peut
prendre.

En programmation, nous pouvons classer les types de données


en trois grandes familles :
◦ Les booléens

◦ Les numériques
◦ Les textes

ANSAR DAGHOURI 9
Type Booléen 1/2
Correspond à un ensemble de deux états logiques (vrai,
faux).

Les opérations qu’on peut appliquer à ces valeurs logiques


sont : (ET, OU, NON)

Pour simplifier la représentation, on assimile à vrai la valeur


(1) et a faux la valeur (0).

ANSAR DAGHOURI 10
Type Booléen 2/2
Les tables de vérité de ces operateurs sont les suivantes :

a b a ET b a b a OU b
0 0 0 0 0 0 a NON a
0 1 0 0 1 1 0 1
1 0 0 1 0 1 1 0
1 1 1 1 1 1

ANSAR DAGHOURI 11
Type numérique
Correspond à des intervalles de l’ensemble des entiers relatifs (Z) et
l’ensemble des nombres réels(IR)
Les opérations les plus fréquentes sur ces valeurs sont résumées dans le
tableau ci-dessous.
Opérateur Signification Exemple
+ Addition R= a +b
- Soustraction R= a –b
* Multiplication R= a*b
/ Division R= a/b si b!= 0
^ Elévation de puissance Y= x^n
DIV Division entière 7 DIV 2 = 3
MOD Reste d’une division MOD(13.5) =3
ENT Partie entière d’un réel ENT(15.36) = 15
ANSAR DAGHOURI 12
Type texte
Correspond à l’ensemble des chaînes de caractères
constituées de caractères de différents types .
Ils peuvent être soit :
◦ Des lettres de l’alphabet, majuscules ou minuscules
◦ Des chiffres
◦ Un espace
◦ Des codes d’opérations
◦ Des caractères de ponctuation
◦ Des caractères spéciaux

ANSAR DAGHOURI 13
Les opérations de relations
sur les objets
On peut appliquer entre deux objets de même type une opération de
relation dont le résultat est une valeur booléenne : vrai ou faux
L’ensemble de ces opérations est décrit dans le tableau ci-dessous
Opération Symbole
Strictement inférieur à <
Strictement supérieur à >
Inférieur ou égal à <=
Supérieur ou égal à =>
Egal à =
Diffèrent de <>

ANSAR DAGHOURI 14
Instruction élémentaires en
algorithmique

Les instructions élémentaires sont les instructions qui


figurent le plus souvent dans tous les algorithmes.
 L’affectation

 Les instructions d’entrée de données

 Les instructions de sortie de données.

ANSAR DAGHOURI 15
1. L’affectation
L ’affectation consiste à attribuer une valeur à un objet.
En algorithmique, une flèche orientée de droite vers la gauche ‘’  ‘’.
Syntaxe : identificateur  Valeur
Le membre droit d’une affectation peut être :
• une variable ou une constante de même type l’identificateur.
• Une expression dont l’évaluation produit un résultat final de même type que
l’identificateur de l’objet
 Exemple : V  3*A+ 2*B-1

Le membre gauche de l’affectation doit être une variable déclarée. Il doit
correspondre à une case mémoire qui peut recevoir une valeur.

ANSAR DAGHOURI 16
Exemple
1) Affecter une valeur à une variable
• X  5, on charge la variable X avec la valeur 5
• Affecter le contenu d’une variable à une autre variable
• X  Y,on charge X avec le contenu de Y
• X et Y doivent être de même type
2) Affecter une formule à une variable
• X  X+3*Y, on change la variable C par la valeur du résultat de la
formule et on écrase sa valeur initiale

ANSAR DAGHOURI 17
2. Les instructions
d’entrée /sortie
Un algorithme doit acquérir des données (entrées) sur un
périphérique (clavier, disque…) et fournir en conséquence
des résultats (sorties) sur un autre périphérique (écran,
imprimante).
En algorithmique, on note :
◦ Lire(v) : qui permet d’affecter à la variable V, la valeur lue sur le
périphérique d’entrée
◦ Ecrire(v) : permet de transférer la valeur V vers le périphérique de
sortie.
◦ Ecrire(‘’chaine de caractères’’) : communiquer le texte sur le
périphérique de sortie.

ANSAR DAGHOURI 18
Présentation d’un algorithme
Un algorithme pourra se présenter par un langage algorithmique de la
manière suivante:

Algorithme nom_algorithme;
(*Déclarations*)
Const
Nom_de_const=valeur_de_const;
Var
Nom_var:nom_type_var;
Début
(*Corps de l’algorithme*)
(*Actions*)
Fin

ANSAR DAGHOURI 19
Exemple d’application: le
périmètre d’un cercle
Algorithme perimetre_cercle;
Const c=2;
Pi=3.14;
Var
P, R: réel;
Début
Lire (R);
P←c*Pi*R;
Ecrire (P);
Fin

ANSAR DAGHOURI 20
Les primitives de base
Les primitives de base permettent d’avoir une exécution par
morceau des sauts ou des répétitions d’un même bloc
d’instructions.
Ces primitives possèdent des structures de blocs et
s’appellent aussi instructions composées.
On distingue deux grandes familles d’instructions
composées:

ANSAR DAGHOURI 21
Les primitives de base
Les primitives de choix qui permettent de choisir les
instructions à exécuter selon les valeurs courantes, elles
sont de deux types:

Les instructions conditionnelles


Les instructions alternatives

Les primitives d’itération qui sont utilisés lorsque l’on


souhaite exécuter plusieurs fois le même traitement

ANSAR DAGHOURI 22
1. Les instructions
conditionnelles
•L’instruction Si…Alors…FinSi:

Si condition Alors
Instruction ( ou suite d’instructions);
FinSi

ANSAR DAGHOURI 23
1. Les instructions
conditionnelles
•L’instruction Si…Alors…FinSi: Valeur absolue d’un nombre réel
Algorithme valeur_absolue1;
Var
X: réel;
Début
Lire (X);
Si X<0 Alors
X←-X;
FinSi
Ecrire(‘la valeur absolue est:’, X);
Fin

ANSAR DAGHOURI 24
1. Les instructions
conditionnelles
•L’instruction Si…Alors…Sinon…FinSi:

Si condition Alors
Instruction 1;
Sinon
Instruction 2;
FinSi

ANSAR DAGHOURI 25
1. Les instructions
conditionnelles
Algorithme Affichage_valeur_absolue;
Var
X: réel;
Début
Ecrire(˝Entrez un réel:˝);
Lire (X);

Si X>0 Alors
Ecrire(˝La valeur absolue de ˝,X, ˝est:˝,X);
Sinon
Ecrire(˝La valeur absolue de ˝,X, ˝est:˝,-X);
FinSi
Fin

ANSAR DAGHOURI 26
1. Les instructions
conditionnelles
•Imbrication de Si:
Dans de nombreuses applications, on peut avoir plusieurs cas
d’exécution selon les différentes conditions. Il faut donc
exprimer plusieurs Si les uns à la suite des autres pour
englober tous les cas
Un Si peut être exprimé à la suite d’un Alors d’un autre Si
et/ou à la suite de son Sinon

ANSAR DAGHOURI 27
1. Les instructions
conditionnelles
•Imbrication de Si: exemple d’application
Un moniteur d’auto école veut apprendre à un candidat au
permis de conduire ce qu’il faut faire dans un croisement avec
feu, il y’a trois possibilités
 Si le feu est vert, le candidat peut passer;
Si le feu est orange, le candidat doit ralentir et se préparer
pour s’arrêter ;
 Si le feu est rouge, le candidat doit s’arrêter.

ANSAR DAGHOURI 28
1. Les instructions
conditionnelles
Algorithme croisement_ feu;
Var
Couleur_feu: chaîne de caractères;
Début
Ecrire (‘Observer la couleur du feu:’);
Lire (Couleur_feu);
Si Couleur_feu=₺rouge₺ Alors
Ecrire(‘Arrêtez-vous immédiatement’);
Sinon
Si Couleur_feu= ₺Orange₺ Alors
Ecrire(‘Ralentissez et préparez-vous pour vous arrêter ’);
Sinon
Ecrire(‘Passez’);
FinSi
FinSi
Fin ANSAR DAGHOURI 29
1. Les instructions
conditionnelles
Exercice d’application:
Le prix de photocopies dans une reprographie varie selon le
nombre demandé: 0,5 DH la copie pour un nombre de copies
inférieur à 10, 0,4DH pour un nombre compris entre 10 et 20
et 0,3DH au-delà.
Ecrivez un algorithme qui demande à l’utilisateur le nombre
de photocopies effectuées, qui calcule et affiche le prix à
payer.

ANSAR DAGHOURI 30
2. La variante de l’alternative:
la primitive ʹCasʹ
•Syntaxe:

Cas variable
Valeur_1:instruction_1;
Valeur_2:instruction_2;
-----------:-----------------;
Valeur_N:instruction_N;
Sinon
instruction_par_defaut ;
Fincas

ANSAR DAGHOURI 31
2. La variante de l’alternative:
la primitive ʹCasʹ

On désire écrire un algorithme qui permet d’afficher


le jour correspondant à un chiffre allant de 1 à 7,
entré au clavier
On peut résoudre ce problème en utilisant 7 Si
imbriquées.

ANSAR DAGHOURI 32
2. La variante de l’alternative:
la primitive ʹCasʹ
Algorithme Affiche_ jour;
Var
Jour: entier;
Début
Ecrire (˝Entrer le chiffre jour˝ );
Lire (jour);
Cas jour
1:Ecrire(˝Lundi˝);
2:Ecrire(˝Mardi˝ );
3:Ecrire(˝Mercredi˝ );
4:Ecrire(˝Jeudi˝);
5:Ecrire(˝Vendredi˝);
6:Ecrire(˝Samedi˝);
7:Ecrire(˝Dimanche˝ );
Sinon
Ecrire(˝Ce n’est pas un jour de la semaine˝);
Fincas
Fin ANSAR DAGHOURI 33
3. Les instructions répétitives
(les boucles)

Les primitives itératives constituent des boucles qui


répètent l’exécution d’un même bloc d’instructions un
certain nombre de fois.

 Ce nombre est soit précisé à l’avance soit il dépendra de


l’évolution de l’action algorithmique effectuée par le bloc
à répéter.

ANSAR DAGHOURI 34
3. Les instructions répétitives
(les boucles)

Une boucle se compose de quatre blocs élémentaires ou


segments:
Bloc d’initialisation de la boucle;

Bloc de processus itératif ou corps de la boucle;

Bloc de progression ou régression de l’indice;

Bloc de test de continuation.

ANSAR DAGHOURI 35
3. Les instructions répétitives
(les boucles)

Le nombre d’itération n’est pas connu:

On distingue deux types d’instructions:


Le test de contrôle est effectué au début de la boucle;

Le test de contrôle est effectué à la fin de la boucle.

ANSAR DAGHOURI 36
3. Les instructions répétitives
(les boucles)
•L’instruction Tantque…faire…FinTantque:

Tantque condition de continuation Faire


Actions à faire;
FinTantque

ANSAR DAGHOURI 37
3. Les instructions répétitives
(les boucles)
•Exemple1:
Algorithme Boucle_infinie;
Var
A:réel;
Début
A←6;
Tantque A<10 Faire
Ecrire (A);
FinTantque
Fin

ANSAR DAGHOURI 38
3. Les instructions répétitives
(les boucles)
•Exemple2:

Ecrire un algorithme permettant de lire une suite de


nombres réels sur le clavier. Le dernier élément à lire est
Zéro.
L’algorithme doit afficher le plus petit élément de la suite
ainsi que la somme des éléments lus.

ANSAR DAGHOURI 39
3. Les instructions répétitives
(les boucles)
•Exemple3:

Ecrire un algorithme permettant d’afficher 300 fois le


message ₺Bonjour tout le monde₺.

ANSAR DAGHOURI 40
3. Les instructions répétitives
(les boucles)
•Exemple 4:

Ecrire un algorithme permettant d’afficher tous les


multiples de 9 inférieur strictement à 485.

ANSAR DAGHOURI 41
3. Les instructions répétitives
(les boucles)
•L’instruction Répéter…jusqu’à:

Répéter
Instruction(s);
Jusqu'à Condition

ANSAR DAGHOURI 42
3. Les instructions répétitives
(les boucles)
•Exemple 1:

Ecrire un algorithme permettant de calculer la somme et la


moyenne des N nombres entiers
S=1+2+3+…N

ANSAR DAGHOURI 43
3. Les instructions répétitives
(les boucles)
•Exemple 2:

Ecrire un algorithme qui détermine le premier nombre


entier N tel que la somme de 1 à N dépasse strictement 100.

ANSAR DAGHOURI 44
3. Les instructions répétitives
(les boucles)
Le nombre d’itération est connu à l’avance:
•L’instruction Pour…Faire…FinPour:

Pour variable de contrôle ←borne1 à borne2 Faire


Instruction(s);
FinPour

ANSAR DAGHOURI 45
3. Les instructions répétitives
(les boucles)
Un algorithme qui permet de calculer la factorielle d’un nombre entier
positif N:
Algorithme Factorielle;
Var
N,i,Fact:Entier ;
Début
Lire (N);
Fact ←1;
Pour i←1 à N Faire
Fact ←Fact*i;
FinPour
Ecrire (Fact);
Fin
ANSAR DAGHOURI 46
Les tableaux
Considérons que l’on veuille calculer la moyenne des notes d’une
promotion de 30 étudiants mais en gardant en mémoire toutes
les notes des étudiants (par exemple pour faire d’autres calculs
tels que l’écart type, la note minimale, la note maximale, etc.)

Il faudrait alors déclarer autant de variables qu’il y a d’étudiants,


par exemple N1, …, N30. Après 30 instructions lire, on doit écrire
30 instructions Si pour faire le calcul,

Conclusion: Ce n’est pas réaliste et c’est lourd à écrire.

ANSAR DAGHOURI 47
Les tableaux
 Solution: On doit réunir ces valeurs dans une seule variable
dite structurée et composée de 30 cases juxtaposées et
même dimensions car elles vont recevoir des données de
même type, cette variable s ’appelle Tableau qu’on peut
présenter par le schéma suivant:

15 12,5 14,25 10,25 … 18 15,25

30 Valeurs réelles

ANSAR DAGHOURI 48
1. Les tableaux à une dimension
Une donnée de type Tableau est constituée d’un nombre de
données élémentaires de même type appelé type de base.
 Chaque élément est directement accessible au moyen d’un
indice.
La déclaration d’un tableau s’effectue en précisant le type de
ses éléments et sa dimension.
•Syntaxe:

Var
Tableau identificateur [dimension]:type ;

ANSAR DAGHOURI 49
1. Les tableaux à une dimension
On accède à un élément via son indice:

A [3]←32,64;
Lire (A[6]);
Ecrire(A[8]) ;
Y←3*A[i]+1;

ANSAR DAGHOURI 50
1. Les tableaux à une dimension
•Exemple 1:

Ecrire un algorithme permettant d’entrer 5 valeurs réelles


au clavier, les stocker dans un tableau, calculer leur somme
et les afficher avec leur somme à l’écran.

ANSAR DAGHOURI 51
1. Les tableaux à une dimension
•Exemple 2:

Ecrire un algorithme permettant d’afficher le plus petit


élément d’un tableau et son indice P.

ANSAR DAGHOURI 52
2. Tableaux à deux dimensions
Tous les langages de programmation permettent de déclarer
des tableaux à deux dimensions dans lesquels les valeurs sont
repérés par deux indices tel que ce qui est utilisé dans les
matrices .
La déclaration se fait ainsi :
•Syntaxe:

Var
Tableau identificateur [dimension1] [dimension1]:type ;

ANSAR DAGHOURI 53
2. Tableaux à deux dimensions
•Exemple 4:

L’écriture d’une matrice de réels à 3 lignes et 4 colonnes


s’écrit comme suit :
tableau A [3][4]:Réel;

A[i][j] sert à accéder à l’élément de l’intersection entre la


ligne i et la colonne j.

ANSAR DAGHOURI 54
2. Tableaux à deux dimensions
•Exemple 5:

Ecrire un algorithme permettant de saisir les données d’un tableau à


deux dimensions (10,4), de faire leur somme, produit, moyenne et de les
afficher avec les résultats de calcul à l’écran .

ANSAR DAGHOURI 55
3. Recherche dans un tableau
•Exemple 6: la recherche séquentielle

L’écriture d’un algorithme qui recherche une valeur X dans


un tableau T de N éléments.

ANSAR DAGHOURI 56
Var
i: entier, Trouvé : booléen

i←0 , Trouvé ← Faux
TantQue (i < N) ET (Trouvé=Faux)
Si (T[i]=x) alors
Trouvé ← Vrai
Sinon
i←i+1
FinSi
FinTantQue
Si Trouvé alors // c'est équivalent à écrire Si Trouvé=Vrai alors
écrire ("x appartient au tableau")
Sinon écrire ("x n'appartient pas au tableau")
FinSi

57
3. Recherche dans un tableau
•Exemple 7: la recherche dichotomique

L’écriture d’un algorithme qui recherche une valeur X dans


un tableau T de N éléments.

ANSAR DAGHOURI 58
Var
inf←0 , sup←N-1, Trouvé ← Faux
TantQue (inf <=sup) ET (Trouvé=Faux)
milieu←(inf+sup)div2
Si (x=T[milieu]) alors
Trouvé ← Vrai
SinonSi (x>T[milieu]) alors
inf←milieu+1
Sinon sup←milieu-1
FinSi
FinSi
FinTantQue
Si Trouvé alors écrire ("x appartient au tableau")
Sinon écrire ("x n'appartient pas au tableau")
FinSi

59

Vous aimerez peut-être aussi