Introduction à l’algorithmique
1ère année ST1
2019/2020, Semestre 2
SMAHI Zakaria
smahi@[Link]
Maitre de Conférence
Dépt de Génie Physique
Faculté de Physique
USTOMB SMAHI Zakaria (2020) 1
Introduction à l’algorithmique
1. Définition d’un Algorithme
Un algorithme est une suite finie de règles
à appliquer dans un ordre déterminé à un
nombre fini de données pour arriver, en un
nombre fini d‘étapes, à un certain résultat, et
cela indépendamment des données.
SMAHI Zakaria (2020) 2
1.1. Son origine:
Le mot algorithme provient du nom d'un
célèbre mathématicien musulman de la
première moitié du IXe siècle: Muhammad ibn
Musa al Khawarizmi (Khiva (Xiva en ouzbek
est une ville d'Ouzbekistan), son ancien nom,
Khwarezm ou Khorezm).
SMAHI Zakaria (2020) 3
1.2. Son Rôle:
Le rôle de l'algorithme est fondamental. En effet,
sans algorithme, il n'y aurait pas de programme
(qui n'est jamais que sa traduction dans un langage
compréhensible par l'ordinateur).
De plus, les algorithmes sont fondamentaux en
un autre sens: ils sont indépendants à la fois de
l'ordinateur et des langages de programmation
dans lesquels ils sont énoncés et traduits.
SMAHI Zakaria (2020) 4
« Ecrire un algorithme », c’est :
Analyser et comprendre le problème : étudier les données fournies et les résultats
attendus
Résoudre le problème, c’est trouver les structures de données adaptées ainsi que
l’enchaînement des actions à réaliser pour passer des données aux résultats
Comment exécuter un algorithme sur un ordinateur ?
Il faut traduire cet algorithme à l’aide d’un langage de programmation connu par
l’ordinateur.
SMAHI Zakaria (2020) 5
En Résumé :
Un Algorithme consiste à retranscrire un processus logique à
l’aide d’un langage naturel.
Un Algorithme est la description d’un traitement qui consiste à
transformer des données, appelées « entrées » , afin de
produire d’autres données appelées « sorties ».
Les entrées et les sorties représentent les variables manipulées
par l’algorithme.
Processus de Principe : Entrées -> Traitement -> Sorties
SMAHI Zakaria (2020) 6
[Link]ésentation d’un algorithme
Historiquement, trois façons pour représenter un algorithme:
2.1. Le langage Naturel (Exp : Français).
Exemple : comment formuler l’algorithme qui
calcule la surface d’un disque ?
Réponse : Pour calculer la surface d’un disque,
on prend d’abord connaissance de son rayon. La
surface est égale au produit de la constante π par
le carré du rayon.
SMAHI Zakaria (2020) 7
2. Représentation d’un algorithme
2. 2. L’Organigramme: Représentation graphique
avec des symboles (carrés, losanges, etc.)
Avantage : offre une vue d’ensemble de l’algorithme
Inconvénient : représentation quasiment abandonnée
aujourd’hui
SMAHI Zakaria (2020) 8
Représentation graphique d’un Organigramme
Symboles Signification
L’ellipse : indique le début de l’algorithme
Le parallélogramme : représente une opération de Lecture
ou Ecriture
Le rectangle : représente le contenu de chaque étape de
traitement, il définit l’opération à exécuter.
La flèche : sert à indiquer l’ordre d’exécution des
différentes taches.
L’Hexagone : sert à indiquer l’initialisation de certains
paramètres.
Le losange : il représente l’existence d’un choix logique :
la proposition logique est indiquée à l’intérieur du losange.
Le cercle : indique la poursuite d’une étape précédente.
Le triangle renversé : symbolise la fin de l’algorithme.
SMAHI Zakaria (2020) 9
Exemple : Calcul de surface d’un disque
Pi=3.141592
Entrée: Clavier
Rayon
Sur Pi* Rayon²
Sur Sortie: Ecran
SMAHI Zakaria (2020) 10
2. 3. Le pseudo-code ou Langage de Description d’Algorithme (LDA):
C’est une représentation textuelle avec une série de
conventions ressemblant à un langage de programmation
(sans les problèmes de syntaxe)
plus pratique pour écrire un algorithme
représentation largement utilisée
SMAHI Zakaria (2020) 11
Exemple précédent devient:
Algorithme surf_Disq ;
CONST Pi = 3.141592 : Réel ;
VAR Sur, Rayon: Réel ;
DEBUT
LIRE(Rayon) ;
Sur Pi* Rayon**2 ;
Ecrire(Sur) ;
FIN
SMAHI Zakaria (2020) 12
3. Structure générale d’un Algorithme :
En générale, l’algorithme comprend les étapes suivantes :
3.1. En tête : Algo Nom de l’algorithme;
3. 2. Déclaration : (Constante, Variable, Structure)
3. 2.1. Type de variable
Une variable correspond à un type de variable. Les
principaux types sont :
Byte (codé sur 1 octet: de 0 à 255)
Caractère (codé sur 1 octet: de 0 à 255)
Chaîne de caractères (toute suite de caractères )
Entier (codé sur 2 octets: de -32768 à 32767)
Réel (codé sur 4 octets: de 0 à 255)
Booléen (vraie ou fausse 0 ou 1, codé sur 1 octet
SMAHI Zakaria (2020) 13
3. 2.2. Déclaration d’une variable
Rappel: toute variable utilisée dans un programme doit avoir
fait l’objet d’une déclaration préalable
En pseudo-code, on va adopter la forme suivante pour la
déclaration de variables
Var liste d'identificateurs : type;
Exemple:
Var i, j,k : Entier;
x, y : Réel;
OK: Booléen;
ch1, ch2 : Chaîne;
SMAHI Zakaria (2020) 14
3.3. Corps de l’Algo:
Début
Lecture de données;
Initialisation des paramètres;
Transformation des données en résultats;
Ecriture des résultats;
Fin.
SMAHI Zakaria (2020) 15
4. Les instructions Algorithmiques
4.1. L’instruction d’affectation
Affecter une variable consiste à lui donner une valeur. Cette valeur
peut être soit une constante, soit une valeur d’une autre variable,
soit le résultat d’un calcul.
L’affectation est représentée par une flèche orientée à gauche
Exemple :
Exemple
Si A,B sont deux variables de type Byte (valeur comprise entre 0 et
255), alors on peut écrire :
B 15, A B+ 4, A A + 1
1/ Le terme de droite (15) est affecté au terme de gauche (variable A)
2/ " " (valeur de la variable B + 4) affecté au terme
gauche (variable A)
3/ " "" (valeur de A (avant instruction) + 1) affecté (variable
A. Dans ce dernier cas la nouvelle valeur de A remplace l'ancienne.
Si une variable est numérique A 0
Si une variable est chaîne de caractères A "0", ou A " Lettres "
SMAHI Zakaria (2020) 16
4.1. L’instruction d’affectation
Quelques remarques :
Beaucoup de langages de programmation (C, Fortran, pascal, …)
utilisent le signe égal = pour l’affectation ←. Attention aux confusions:
l'affectation n'est pas commutative : A=B est différente de B=A
l'affectation est différente d'une équation mathématique :
A=A+1 a un sens en langages de programmation
A+1=2 n'est pas possible en langages de programmation et n'est
pas équivalente à A=1
SMAHI Zakaria (2020) 17
4.2. L’entrée d’information
La primitive d’entrée ou saisir (entrée clavier) et lire
(lecture en provenant du disque dur).
Le but de ces primitives est de permettre à l’ordinateur
d’affecter une variable extérieure à une autre variable.
Le nom de cette variable symbolise une adresse en
mémoire centrale. A cette adresse se trouve la valeur, à
un moment donné de la variable.
La primitive de sortie : écrire, afficher, imprimer. Le but
est de permettre à l’ordinateur de sortir la valeur d’une
variable vers les périphériques extérieurs (écran,
imprimante, etc…) SMAHI Zakaria (2020) 18
4.2.1. Instructions d'entrées-sorties:
(Lecture et Ecriture)
Les instructions de lecture et d'écriture permettent à la machine de
communiquer avec l'utilisateur
[Link]. Entrées (Lecture)
La lecture permet d'entrer des données à partir du clavier
Synthaxe: Lire (A)
la machine met la valeur entrée au clavier dans la zone mémoire
nommée A
Remarque: Le programme s'arrête lorsqu'il rencontre une
instruction Lire et ne se poursuit qu'après la frappe d’une valeur
au clavier et de la touche Entrée
SMAHI Zakaria (2020) 19
4.2.1. Instructions d'entrées-sorties
(Lecture et Ecriture)
4.2.2. Sorties (Ecriture)
L'écriture permet d'afficher des résultats à l'écran (ou de les écrire
dans un fichier)
Synthaxe: Ecrire (A)
la machine affiche le contenu de la zone mémoire A
Conseil: Avant de lire une variable, il est fortement conseillé
d’écrire des messages à l’écran, afin de prévenir l’utilisateur de
ce qu’il doit frapper
SMAHI Zakaria (2020) 20
4.2.2. Méthode de construction d’un algorithme simple
Exemple :
Écrire un algorithme qui consiste à calculer l’air
S d’un cercle selon la formule S = Pi * R2
Rappel : Pi = 3.14159 et R le rayon du cercle
SMAHI Zakaria (2020) 21
4.2.2. Méthode de construction d’un algorithme
simple
Méthodologie à suivre :
Constantes : Pi = 3.14159
Variables : Rayon, Surface
Types : Rayon, Surface : réel
Expressions et affectation : Surface <- Pi * (Rayon)2
Opérations d’entrée-sortie : Lire (Rayon),
Écrire (Surface)
SMAHI Zakaria (2020) 22
4.2.2. Méthode de construction d’un algorithme
simple
Algo Calcul_Aire;
Const Pi = 3,14159 : Réels;
Var Rayon, Surface : Réels;
Début
Lire (Rayon);
Surface <- Pi * (Rayon)^2;
Ecrire (Surface);
Fin.
SMAHI Zakaria (2020) 23
[Link] de branchement (SAUT):
Cette instruction permet de sauter à un
endroit précis de l’algorithme repéré par une
étiquette.
Syntaxe générale :
ALLER A <étiquette>
SMAHI Zakaria (2020) 24
[Link] de branchement (SAUT):
Exemple:
Algo Exemple;
Var x : Entier;
Début
Lire (x);
Aller à 1;
x <- x + 1;
1: x <- x +2;
Ecrire(x);
Fin.
SMAHI Zakaria (2020) 25
[Link] structures Conditionnelles
et les Boucles
4.4.1. Instruction de CHOIX
Rôle : permet d’exécuter une séquence
d’instructions plutôt qu’une autre selon les
conséquences.
On distingue quatre formes de structures de
choix (alternative):
SMAHI Zakaria (2020) 26
[Link].Instruction de choix :Première forme
Syntaxe :
SI <Condition> ALORS
<Séquence d’instructions> ;
FIN SI
La <Condition> est évaluée. Sa valeur peut être:
Vrai la séquence est exécutée
Faux l’instruction est ignorée et on passe à
l’instruction qui suit le FINSI
SMAHI Zakaria (2020) 27
[Link].Instruction de choix :Deuxième forme
Syntaxe :
SI <Condition> ALORS
<Séquence d’instructions (1)>
SINON
<Séquence d’instructions (2)>;
FIN SI
La <Condition> est évaluée. Sa valeur peut être:
Vrai la séquence (1) est exécutée
Faux la séquence (2) est exécutée
SMAHI Zakaria (2020) 28
[Link].Instruction de choix :Troisième forme
Syntaxe :
SI <condition-1> ALORS
Séquence d’instructions (1) ;
SINON SI <condition-2> ALORS
Séquence d’instructions (2) ;
SINON SI <condition-3>.
…..
….
FIN SI
….
….
FIN SI
FIN SI
SMAHI Zakaria (2020) 29
[Link].Instruction de choix :Quatrième forme
Syntaxe :
SI <condition-1> ALORS
SI <condition-2> ALORS
…
SI <condition-n> ALORS
Séquence d’instructions(n) ;
SINON
Séquence d’instructions (n+1) ;
FIN SI
…
FIN SI
FIN SI
SMAHI Zakaria (2020) 30
[Link] structures Conditionnelles
et les Boucles
Dans ces types de structures, la vérification de la valeur
booléenne des expressions se fera en utilisant des
opérateurs relationnels et logiques tels que :
> ; < ; >= ; <> ; <= sont des opérateurs relationnels =
comparaison
Et, ou sont des opérateurs Logiques
SMAHI Zakaria (2020) 31
4.4.2. Sélection sur choix multiples
Syntaxe :
Selon que <identificateur>
<liste de valeurs n°1> : <instruction(1)> ;
<liste de valeurs n°2> : <instruction(2)> ;
…
<liste de valeurs n°n> : <instruction(n)> ;
Sinon: <instruction (autre)> ;
Fin Selon
SMAHI Zakaria (2020) 32
4.4.2. Sélection sur choix multiples
Exemple:
Selon que Mois
1,3,5,7,8,10,12: Ecrire(" Nombre de jour est ", 31) ;
4,6,9,11: Ecrire(" Nombre de jour est ", 30) ;
2: Ecrire(" Nombre de jour est ", 28)
Sinon: Ecrire(" Nombre de jour est ", 0) ;
Fin Selon
SMAHI Zakaria (2020) 33
4.5. INSTRUCTION ITERATIVES
Différentes structures permettent de réaliser cette forme de traitement :
Pour
Tant que
Répéter, Jusqu'à
SMAHI Zakaria (2020) 34
4.5.1. La Structure itérative POUR
On sait a l’avance combien de fois on veut itérer.
Syntaxe :
POUR I de V_I à V_F Pas P FAIRE
Séquence d’instructions ;
FIN POUR
Ou Bien ;
POUR I allant de V_I à V_Fn Pas P FAIRE
Séquence d’instructions ;
FIN POUR
I : variable de contrôle de la boucle
V_I : valeur initiale de I
V_F : valeur finale de I
P : Pas de I.
Remarque : Il faut donc connaître la valeur de début de I ainsi que
sa valeur d’arrivée.
SMAHI Zakaria (2020) 35
4.5.1. La Structure itérative POUR
Exemple :
Ecrire un algorithme qui calcule la somme de la série arithmétique de
raison un, suivante :
S = 0 + 1 + 2 +….N.
Algo Som;
Var i,S,N: Entiers;
Début
Lire (N);
Pour i allant de 0 à N Faire
S <- S + i;
FinPour
Ecrire (S);
Fin.
SMAHI Zakaria (2020) 36
4.5.2. La Structure itérative TANT QUE
Tant que la Condition est vraie alors il faut exécuter l’action
Syntaxe :
TANT QUE <condition> FAIRE
Séquence d’instructions ;
FIN TANT QUE
SMAHI Zakaria (2020) 37
4.5.2. La Structure itérative TANT QUE
Exemple précédent:
Algo Som;
Var i,S,N: Entiers;
Début
Lire (N);
S <- 0;
i <- 0;
Tant Que (i <= N) Faire
S <- S +i;
i <- i + 1;
FinTantque
Ecrire (S);
Fin.
SMAHI Zakaria (2020) 38
4.5.3. La Structure itérative Répéter
Répéter l’action jusqu’à ce que la condition devient fausse
Syntaxe :
REPETER
Séquence d’instruction ;
JUSQU'A <Condition> ;
SMAHI Zakaria (2020) 39
4.5.3. La Structure itérative Répéter
Exemple précédent:
Algo Som;
Var i,S,N: Entiers;
Début
Lire (N);
S <- 0;
I <- 0;
REPETER
S <- S +i;
I <- i + 1;
JUSQU'A (i > N) ;
Ecrire (S);
Fin.
SMAHI Zakaria (2020) 40
5. Expressions et opérateurs
Une expression peut être une valeur, une variable ou une opération
constituée de variables reliées par des opérateurs exemples: 1, A, A*2,
A+ 3*A-B, A**2/3…
L'évaluation de l'expression fournit une valeur unique qui est le résultat de
l'opération
Les opérateurs dépendent du type de l'opération, ils peuvent être :
des opérateurs arithmétiques: +, -, *, /, % (modulo), ^ ou **(puissance)
des opérateurs logiques: NON, OU, ET
des opérateurs relationnels: =, , <, >, <=, >=
des opérateurs sur les chaînes: & (concaténation)
Une expression est évaluée de gauche à droite mais en tenant compte des
priorités
SMAHI Zakaria (2020) 41
5.1. Priorité des opérateurs
Pour les opérateurs arithmétiques donnés ci-dessus, l'ordre de
priorité est le suivant (du plus prioritaire au moins prioritaire) :
^ ou ** : (élévation à la puissance)
* , / (multiplication, division)
% ou Mod (modulo)
+ , - (addition, soustraction)
exemple: 2+5*6 vaut 32
En cas de besoin (ou de doute), on utilise les parenthèses pour
indiquer les opérations à effectuer en priorité
exemple: (2 + 5) * 6 vaut 42
SMAHI Zakaria (2020) 42
[Link] de vérité
C1 C2 C1 ET C2 C1 C2 C1 OU C2
VRAI VRAI VRAI VRAI VRAI VRAI
VRAI FAUX FAUX VRAI FAUX VRAI
FAUX VRAI FAUX FAUX VRAI VRAI
FAUX FAUX FAUX FAUX FAUX FAUX
C1 C2 C1 XOR C2 C1 NON C1
VRAI VRAI FAUX VRAI FAUX
VRAI FAUX VRAI FAUX VRAI
FAUX VRAI VRAI
FAUX FAUX FAUX
SMAHI Zakaria (2020) 43
6. Programmation en Langage PASCAL
6.1. Introduction
Tout programme fourni à l'ordinateur n'est que le résultat de la
traduction d'un algorithme dans un langage de programmation
(langage évolué).
Plusieurs langages de programmation existent : Java,C/C++, Basic,
Fortran, Pascal, etc.
Un langage de programmation définit donc un ensemble de règles
syntaxiques (comment écrire correctement le programme) et
sémantiques (le sens affecté à chaque instruction ou structure de
programme).
Le langage de programmation Pascal a été inventé par Niklaus
Wirth dans les années 1970. C’est un langage de programmation dit
impératif (ordre).
SMAHI Zakaria (2020) 44
6.2. Structure d’un programme en Pascal
Un programme Pascal respecte toujours la
structure suivante :
program nomprog ; {Nom du programme }
{Déclaration des variables, des constantes }
{ Il peut y en avoir autant qu'on veut }
{ Début du corps du programme }
begin
instruction1 ;
instruction2 ;
… { Il peut y en avoir autant qu'on veut }
end. { Fin du programme }
SMAHI Zakaria (2020) 45
6.2.1. Déclaration du programme
C’est l’entête du programme. Sa syntaxe est :
PROGRAM nom;
6.2.2. Déclaration des objets
Tous les objets utilisés dans le programme doivent être
déclarés : constantes puis variables. Sa syntaxe est :
CONST a = 2;
vrai =T RUE;
VAR i,k,n : integers {i,k,n sont de types entier}
x,a,b : real {x,a,b de type réel}
test : boolean {variable de type booléenne : }
{ sa valeur est true ou false}
liste : array [1..10] of integer {variable de type tableau}
SMAHI Zakaria (2020) 46
6.3. Principaux types de données simples
• type Entier : Integer. (-32768 et +32767).
• type Réel : Real ( 4 octets)
• type Byte : (1 octet: à 255)
• type Char : (1 octet, les caractères du claviers)
• type String : ( Chaine de caractères)
• type Booléen : Boolean ( vrai ou faux).
• type tableau : Array Il faut alors préciser le type des
éléments du tableau qu’il doit prendre en compte
SMAHI Zakaria (2020) 47
6.4. Variables
Une variable a en informatique le même sens qu'en
mathématique. Elle a les caractéristiques suivantes :
Un identificateur (autrement dit un nom). On peut donner
le nom que l'on veut.
Un identificateur doit commencer par une lettre de
l'alphabet, suivie ou non de signes alphanumériques.
Par exemples:
x, total, x1, x135t, AaBb sont des noms de variable
possibles,
mais 2x, xh?st, kl** ne le sont pas.
Attention : pour différencier le nom des variables de type
caractère des caractères eux-mêmes, on met chaque
caractère entre 2 apostrophes.
Ex : 'x' est un caractère, x est une variable.
SMAHI Zakaria (2020) 48
6.5. L'instruction d'affectation
L'instruction d'affectation a pour but d'affecter (de
donner) une valeur à une variable.
Sa syntaxe est la suivante :
nomvar := expression mathématique;
{nomvar est le nom d'une variable ou
l’identificateur}.
SMAHI Zakaria (2020) 49
6.6. Les instructions d'Entrées-Sorties
6.6.1. instruction d’ECRITURE :
Syntaxe générale :
WRITE(<Liste des identificateurs de données>) ;
Ou
WRITELN(<Liste des identificateurs de données>) ;
Exemple :
x := 5 ; { On affecte 5 à la variable x, supposée de type integer }
write ( 'Bonjour chers amis…') ;
write ( 12, 5*(x-2), ‘11') ;
A Ecran on aura : Bonjour chers amis… 12 15 11
SMAHI Zakaria (2020) 50
6.6. Les instructions d'Entrées-Sorties
6.6.1. instruction d’ECRITURE :
writeln agit exactement comme write, mais ajoute un retour
à la ligne après le dernier affichage.
Exemple :
x := 5 ; { On affecte 5 à la variable x, supposée de type integer }
writeln ( 'Bonjour chers amis…') ;
writeln ( 12, 5*(x-2), ‘11') ;
A Ecran on aura : Bonjour chers amis…
12 15 11
SMAHI Zakaria (2020) 51
6.6. Les instructions d'Entrées-Sorties
6.6.2. instruction de LECTURE :
Pour que l'utilisateur attribue une valeur à une variable
pendant l'exécution du programme, il faut utiliser l'instruction
read ou readln.
Sa syntaxe est la suivante :
READ(<Liste des identificateurs de données>) ;
Ou
READLN(<Liste des identificateurs de données>) ;
SMAHI Zakaria (2020) 52
Exemple d’un petit programme en Pascal :
program moyenne ; { Calcul de la moyenne de 2 nombres. }
var x, y : integer ;
moy : real ;
begin
writeln ('Entrez la valeur du premier nombre :') ; readln ( x ) ;
writeln ('Entrez la valeur du deuxième nombre :'); readln ( y ) ;
moy := (x + y) / 2 ;
writeln ('La moyenne des 2 nombres est : ', moy ) ;
end.
SMAHI Zakaria (2020) 53
Affichage à l’Ecran de l’Exemple précédent:
Entrez la valeur du premier nombre :
5
Entrez la valeur du deuxième nombre :
10
La moyenne des 2 nombres est : 7,5
SMAHI Zakaria (2020) 54
6.7. L’instruction de BRANCHEMENT
Syntaxe générale :
GOTO <LABEL> ;
On déclare les étiquettes par le mot clé LABEL.
SMAHI Zakaria (2020) 55
6.7. Instruction de branchement (GOTO):
Algo Exemple; Program Exemple;
Var x : Entier; Var x : Integer;
Etiquette 1; Label 1;
Début Begin
En Pascal
Lire (x); Read (x);
Aller à 1; Goto 1;
x <- x + 1; x := x + 1;
1: x <- x +2; 1: x := x +2;
Ecrire(x); Writeln(x);
Fin. End.
SMAHI Zakaria (2020) 56
6.8. L'instruction conditionnelle
6.8.1. Première forme :
Syntaxe générale :
IF (Condition) THEN
Begin
Séquence d’instructions ;
End ;
SMAHI Zakaria (2020) 57
6.8. L'instruction conditionnelle
6.8.2. Deuxième forme :
Syntaxe générale :
IF (condition) THEN
Begin
Séquence d’instructions (1)
End
ELSE
Begin
Séquence d’instructions (2)
End ;
SMAHI Zakaria (2020) 58
6.8. L'instruction conditionnelle
6.8.3. Troisième forme :
Syntaxe générale :
IF (condition-1) THEN
Begin
Séquence d’instructions (1)
End
ELSE IF (condition-2) THEN
Begin
Séquence d’instructions (2)
End
ELSE IF (condition-3)..
…..
…. SMAHI Zakaria (2020) 59
6.8. L'instruction conditionnelle
6.8.4. Quatrième forme :
Syntaxe générale :
IF (condition-1) THEN
IF (condition-2) THEN
…
IF (condition-n) THEN
Begin
Séquence d’instructions(n)
End
ELSE
Begin
Séquence d’instructions (n+1)
End
ELSE
…
SMAHI Zakaria (2020) 60
Exemple :
Programme qui calcule et affiche la racine carrée d'un nombre.
program racine;
var x,y : real;
begin
writeln ('Entrez un nombre quelconque'); readln(x);
if (x >= 0) then begin
y := sqrt (x);
writeln('La racine réelle est : ',y);
end
else begin
y := sqrt (-x);
writeln('La racine complexe est : ',y,'i');
end;
end.
SMAHI Zakaria (2020) 61
6.9. La sélection sur choix multiples
Syntaxe générale :
case expression of
case: instruction;
...
case: instruction
else
instruction;
end
Chaque case comporte une ou plusieurs valeurs
constantes séparées par des virgules.
La partie else est facultative.
SMAHI Zakaria (2020) 62
Exemple :
Ecrire un Programme qui détermine l’état du climat en
fonction de la température de l’air.
Le climat est froid si la température est inférieur ou égale
à 10°C,
et modéré si la température est inférieur ou égale à 20°C
et supérieur à 10°C,
et chaud si la température est supérieur à 20°C.
SMAHI Zakaria (2020) 63
Solution 1
Program Climat ;
Var Temp : Integer ;
BEGIN
READ(Temp) ;
IF (Temp <=10) THEN
WRITE (‘Le Climat est Froid’) ;
IF (Temp <=20 and Temp >10) THEN
WRITE (‘Le Climat est Modéré’) ;
IF (Temp >20) THEN
WRITE (‘Le Climat est Chaud’) ;
END.
SMAHI Zakaria (2020) 64
Solution 2
Program Climat ;
Var Temp : Integer ;
BEGIN
READ (Temp) ;
IF (Temp <= 10) THEN
WRITE (‘Le Climat est Froid’) ;
ELSE IF (Temp <= 20) THEN
WRITE (‘Le Climat est Modéré’)
ELSE
WRITE (‘Le Climat est Chaud’) ;
END.
SMAHI Zakaria (2020) 65
Solution 3
Program Climat ;
Var Temp : Integer ;
BEGIN
READ (Temp);
IF (Temp > 10) THEN
IF (Temp > 20) THEN
WRITE (‘Le Climat est Chaud’)
ELSE
WRITE (‘Le Climat est Modéré’)
ELSE
WRITE (‘Le Climat est Froid’) ;
END.
SMAHI Zakaria (2020) 66
Solution 4
Program Climat ;
Var Temp : Integer ;
BEGIN
READ (Temp);
Case Temp Of
1..10 : WRITE (‘Le Climat est Froid’) ;
11..20 : WRITE (‘Le Climat est Modéré’)
ELSE
WRITE (‘Le Climat est Chaud’) ;
END.
SMAHI Zakaria (2020) 67
6.10. LES INSTRUCTIONS ITÉRATIVES
6.10.1. L'instruction for
Première syntaxe générale:
FOR i = V_i TO V_F DO
Begin
Séquence d’instructions;
End ;
i : variable de contrôle de la boucle
V_i : valeur initiale de i
V_F : valeur finale de f
SMAHI Zakaria (2020) 68
6.10. LES INSTRUCTIONS ITÉRATIVES
6.10.1. L'instruction for
Deuxième syntaxe générale :
FOR I = V_F DOWNTO V_I DO
Begin
Séquence d’instructions
End ;
i : variable de contrôle de la boucle
V_i : valeur initiale de i
V_F : valeur finale de f
Dans cette variante avec " DOWNTO ", le principe
d'itération est le même, mais la variable de boucle prend
tour à tour des valeurs décroissantes
SMAHI Zakaria (2020) 69
Exemple:
Faire un programme qui calcule la moyenne
de N nombres.
SMAHI Zakaria (2020) 70
Solution1:
PROGRAM moyenne;
VAR N, i : Integer;
Note, Total, Moy : Real;
BEGIN
writeln('Nombre notes à entrer ?'); readln(N);
Total := 0;
For i := 1 to N do begin
writeln(i,'ième Note ? ');
readln(Note);
Total := Total + Note
end;
Moy := Total / N;
writeln('La moyenne est : ',Moy)
71
END. SMAHI Zakaria (2020)
Solution2:
PROGRAM moyenne;
VAR N, i : Integer;
Note, Total, Moy : Real;
BEGIN
writeln('Nombre notes à entrer ?'); readln(N);
Total := 0;
For i := N Downto 1 do begin
writeln(i,'ième Note ? ');
readln(Note);
Total := Total + Note
end;
Moy := Total / N;
writeln('La moyenne est : ',Moy)
72
END. SMAHI Zakaria (2020)
6.10.2. les Boucles conditionnelles
[Link] la Boucle While
Cette structure s’utilise lorsque l’on veut
répéter une suite d’instructions tant qu’une
certaine relation est vraie.
La syntaxe est la suivante :
WHILE (condition) DO
Begin
Séquence d’instructions ;
End ;
SMAHI Zakaria (2020) 73
L’exemple précédent devient:
PROGRAM moyenne;
VAR N, i : Integer;
Note, Total, Moy : Real;
BEGIN
writeln('Nombre notes à entrer ?'); readln(N);
Total := 0; i := 1;
While (i < = N ) do
begin
writeln(i,'ième Note ? ');
readln(Note);
Total := Total + Note ;
i := i + 1;
end;
Moy := Total / N;
writeln('La moyenne est : ',Moy)
END. SMAHI Zakaria (2020) 74
6.10.2. les Boucles conditionnelles
[Link] la Boucle Repeat
Cette structure s’utilise lorsque l’on veut
répéter une suite d’instructions jusqu’`a ce
qu’une relation soit vraie.
La syntaxe est la suivante :
REPEAT
Séquence d’instructions ;
UNTIL (condition);
SMAHI Zakaria (2020) 75
L’exemple précédent devient avec REPEAT:
PROGRAM moyenne;
VAR N, i : Integer;
Note, Total, Moy : Real;
BEGIN
writeln('Nombre notes à entrer ?'); readln(N);
Total := 0; i := 1;
Repeat
writeln(i,'ième Note ? ');
readln(Note);
Total := Total + Note ;
i := i + 1;
Until (i > N );
Moy := Total / N;
writeln('La moyenne est : ',Moy)
END.
SMAHI Zakaria (2020) 76
FIN du cours
SMAHI Zakaria (2020) 77