Algorithmique et
Programmation I
Enseignante : Lilia Ayadi Zribi
1ère année LTI Promotion 7
Plan
• Introduction : Généralités et notions de base
• Les actions algorithmiques simples
• Les structures conditionnelles
• Les structures répétitives
• Les sous algorithmes
• Les types composés (tableaux, chaînes et enregistrements)
2
Chapitre 1 :
Généralités et
notions de base
Enseignante : Lilia Ayadi Zribi
1ère année LTI Promotion 7
Introduction
4
Qu’est-ce qu’un Algorithme ?
• Un algorithme est une méthode de résolution de problème énoncée sous la forme d'une
liste d'opérations à effectuer.
• La mise en œuvre de l'algorithme consiste à la traduction de ces opérations dans un
langage de programmation et constitue alors la brique de base d'un programme
informatique.
1. Une recette de cuisine est un algorithme !
2. Une notice de montage d'un meuble en kit est aussi un algorithme !
3. Indiquer un chemin à une personne perdue ou encore chercher un objet à
quelqu’un par téléphone c’est fabriquer - et faire exécuter - des algorithmes.
5
• 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 la personne perdue
retrouve sa destination.
✓ Si l’algorithme est faux, ou encore aléatoire, cette recette ne sera pas bien réussie !!!
Un algorithme est une suite finie d’instructions
élémentaires (règles), qui s’appliquent dans un ordre
déterminé à un nombre fini de données pour fournir
un résultat.
Qu’est-ce qu’un Algorithme ?
6
Caractéristiques d’un algorithme
Tout algorithme est donc caractérisé par :
• Un ensemble d’instructions à exécuter ;
• Un ordre d’exécution de ces différentes actions, déterminé par la logique d’enchaînement
et conditionné par les structures mises en œuvre ;
• Un début et une fin.
Remarque : Dans la suite du cours, on entend
par Traitement soit une seule instruction, soit
une succession d’instructions.
7
Structure d’un algorithme
Algorithme Nom_Algorithme
Const {Ensemble des constantes et leurs valeurs}
Type {Définition des types personnalisés}
Var {Ensemble des variables à utiliser dans le corps de l’algorithme}
Début
{Suite des actions à exécuter}
Fin
Entête
Corps
8
Un premier algorithme
Algorithme Carré
{Cet algorithme calcule le carré du nombre que lui fournit l'utilisateur }
Var unNombre, sonCarré : Entier
{Déclarations : réservation d'espace-mémoire}
Début
{Préparation du traitement}
Afficher ("quel nombre voulez-vous élever au carré ?")
Saisir(unNombre)
{Traitement : calcul du carré}
Soncarré ← unNombre × unNombre
{Présentation du résultat}
Afficher ("le carré de ", unNombre)
Afficher ("c'est ", sonCarré)
Fin
Entête
Corps
9
Les types de
données
• Entier
• Réel
• Caractère
• Booléen / Logique
10
Les variables
11
Les variables
Une variable est une case mémoire stockant une donnée pouvant varier au cours
de l'exécution d'un programme.
Nous distinguons quatre types élémentaires en algorithmique :
• Le type entier sera utilisé pour stocker des valeurs entières, positives ou
négatives.
• Le type réel sera utilisé pour stocker les nombres à virgule.
• Le type caractère sera utilisé pour stocker les caractères.
• Le type booléen sera utilisé pour stocker les valeurs de type vrai/faux.
12
Notion de variable
Une variable est une case mémoire stockant une donnée pouvant varier au cours
de l'exécution d'un programme. L’identificateur ou nom de la variable peut être
quelconque, mais doit respecter les critères suivants :
• Un identificateur commence toujours par une lettre minuscule ;
• À l’exception du premier caractère, il peut contenir : des lettres, des chiffres,
et le symbole ’_’ (souligné ou underscore) ;
• Les majuscules et les minuscules sont des lettres différentes : les
identificateurs v1 et V1 sont différents ;
• Le nom de variable doit avoir une relation avec le rôle de cette variable et
être compréhensible. 13
Déclaration d'une variable
14
Var Nom_Variable : Type_variable
Var Compteur, Nombre, y : Entier
Salaire, Prix : Réel
Touche, Rep : Car
Test : Booléen
10
Nom : Compteur
Type : Entier
Adresse : &0120
12,850
Prix
Réel
&51
‘O’
Rep
Car
&4100
Cases mémoires
Exemples
Les constantes
Les constantes
Comme une variable, à une constante correspond un emplacement mémoire
réservé auquel on accède par le nom qui lui a été attribué, mais dont la valeur
stockée ne sera jamais modifiée au cours du programme.
Le type d’une constante est déduit à partir de sa valeur.
16
Const Nom_Const = Valeur_Const
PI = 3.14 //PI est une constante réelle
TVA = 19 //TVA est une constante entière
Déclaration
Exemples
Le type Entier
Les opérations de manipulation sur les entiers
sont :
• Les opérateurs arithmétiques classiques :
+ (addition), - (soustraction), * (produit), /
(division réelle).
• La division entière DIV : n DIV p donne la
partie entière du quotient de la division de n
par p.
• Le modulo MOD : n MOD p donne le reste
de la division entière de n par p.
• Les opérateurs de comparaison classiques :
<, >, =, >=, <=, <>.
17
Le type Entier sert à représenter les nombres
entiers positifs, négatifs ou nuls.
Exemple : 5,-15, 23 etc
Syntaxe :
identificateur1, identificateur2, … : Entier
Application
18
Donner les déclarations nécessaires pour un algorithme qui permet de calculer la somme
de 2 entiers.
Solution : Var A, B, Som : Entier
Donner les déclarations nécessaires pour un algorithme qui permet de rechercher le max
entre de deux nombres.
Solution : Var NB1, NB2, Max : Entier
Le type Réel
Les opérations de manipulation sur les réels
sont :
• Les opérateurs arithmétiques classiques :
+ (addition), - (soustraction), * (produit), /
(division réelle).
• Les opérateurs de comparaison classiques :
<, >, =, >=, <=, <>.
19
Le type Réel sert à représenter les nombres à
virgule.
Exemple : 3.50,-15.25, 23.00 etc
Syntaxe :
identificateur1, identificateur2, … : Réel
Application
20
Donner les déclarations nécessaires pour un algorithme qui permet de lire deux notes
avec leurs coefficients et d’afficher leur moyenne.
Solution : Var Note1, Note2, Coef1, Coef2, Moy : Réel
Donner les déclarations nécessaires pour un algorithme qui permet de rechercher le prix
de vente d’un article après un montant de remise.
Solution : Var PrixInit, TauxRem, PrixVente : Réel
Le type caractère
Les opérations permises sur le type caractère sont :
• Les actions algorithmiques simples (Saisie,
affichage et affectation) ;
• ORD : de manière que ORD( C ) donne le code
ASCII (ordre dans la table ASCII) du caractère
existant dans l’objet C. Le résultat est de type
entier.
Exemple : ORD( ‘A’ ) retourne 65
A← 'B’
ORD(A) retourne 66
• CHR : de manière que CHR( N ) donne le
caractère correspondant au code ASCII du
contenu de l'objet N (N étant de type entier). Le
résultat est de type caractère.
Exemple : CHR (65) retourne ’A’.
21
Le type Caractère sert à manipuler des
caractères alphabétiques, numériques et les
caractères spéciaux.
Exemple : 'a', 'A', 'z', '.', '!', '1', '2', etc.
Syntaxe :
identificateur1, identificateur2, … : Car
Remarque : Les deux fonctions
CHR et ORD sont réciproques. C’est
à dire que
CHR(ORD(C)) retourne C
et ORD(CHR(N)) retourne N
Le type caractère
• Les opérateurs de comparaison (<, <=, >, >=, =,
< >) : La comparaison de deux caractères
revient à comparer leurs codes ASCII respectifs.
Exemples : ‘a’ < > ‘b’ c’est évident
… < '0'< … < '9' < … < 'A' < … < 'Z' < … <'a' < … < 'z' < …
0 48 65 97 255
• SUIVANT : de manière que SUIVANT(C) donne
le caractère qui suit celui existant dans l’objet C.
• PRECEDENT : de manière que
PRECEDENT(C) donne le caractère qui précède
celui existant dans l’objet C.
Exemples :
SUIVANT ( 'A' ) = 'B'
PRECEDENT ( 'R' ) = 'Q'. 22
Le type Caractère sert à manipuler des
caractères alphabétiques, numériques et les
caractères spéciaux.
Exemple : 'a', 'A', 'z', '.', '!', '1', '2', etc.
Syntaxe :
identificateur1, identificateur2, … : Car
Remarque : Les deux fonctions
Suivant et Précédent sont réciproques,
c’est à dire
SUIVANT (PRECEDENT( C )) retourne C
Et
PRECEDENT(SUIVANT( C )) retourne C
Application
23
Donner les déclarations nécessaires pour un algorithme qui permet de lire un caractère et
d’afficher son code ASCII.
Solution : Var C : Car
CA : Entier
Donner les déclarations nécessaires pour un algorithme qui permet lire un caractère et de
chercher et afficher son précédent et son suivant.
Solution : Var C, CSuiv, CPrec : Car
Le type Logique
Les principales opérations définies sur les
variables de type logique sont :
• La négation : (notée « NON » ou « »)
• L’intersection : (notée « ET » ou «  »)
• L’union : (notée « OU » ou «  »)
24
Le type Logique ou encore Booléen est
associé à un objet prenant ses valeurs dans
l’ensemble Vrai, Faux.
Syntaxe :
identificateur1, identificateur2, … : Logique
Ou bien
identificateur1, identificateur2, … : Booléen
Chapitre 2 :
Les actions
algorithmiques simples
Enseignante : Lilia Ayadi Zribi
1ère année LTI Promotion 7
L’affectation
2
L’affectation
L’opération d’affectation permet de donner (ou d’affecter, d’où son nom) une
valeur à une variable.
Syntaxe : Nom_Variable ← Valeur_à_affecter
Exemples : X ← 5
Y  X
R1 ← 12.5
Z  X * 2 + Y
Attention : il est interdit d’écrire :
A + 1 ← 3 : A+1 n’est pas un identificateur de variable.
A ← B : sans que B n’ait déjà une valeur (indéfinie). 3
L’affichage
L’affichage : action Ecrire
Cette action permet de communiquer un résultat ou un message sur écran ou
sur imprimante pour l'utilisateur.
Syntaxe :
ECRIRE(paramètre1 [[,paramètre2]…])
Paramètre = variable | expression | constante
constante = nombre | message
5
L’affichage : Exemples
ECRIRE (" La valeur de 3*2 est égale à ", 3*2)
message expression
ECRIRE (" La moyenne est = ", MOY)
message variable
ECRIRE (le carré de  , A , est égal à  , A * A)
message variable message expression
ECRIRE (A, " + ", B, " = ", A+B )
variable message variable message expression
6
La saisie
La saisie : action Lire
L'action LIRE permet à l'ordinateur d’acquérir des données à partir de l’utilisateur,
dans des cases mémoire bien définies (qui sont les variables déclarées).
Syntaxe : LIRE(variable1 [[, variable2] …])
Exemples : LIRE (A)
LIRE (B)
LIRE (C)
8
LIRE(A, B, C)
Remarques :
1. La saisie se fait uniquement dans des variables. Ce sont les cases (cellules) qui
pourront accueillir les données correspondantes.
2. La donnée à introduire doit être de même type que la variable réceptrice.
Application 1
ALGORITHME Périmètre_Cercle
CONST PI = 3,14
VAR Ray, Perim : Réel
DEBUT
Ecrire ("Donnez la valeur du rayon : ")
Lire (Ray)
Perim  2* Ray * PI
Ecrire ("Le périmètre du cercle de rayon :",
Ray, "est égale à : ", Perim)
FIN
9
Ecrire un algorithme permettant l'affichage
du périmètre d'un cercle connaissant son
rayon.
Exemple d’exécution :
Donner le rayon : 3
Le périmètre du cercle de rayon : 3
est égale à : 18.84 Ou encore
/*Ecrire("Le périmètre du cercle de rayon :"
, Ray, "est égale à : ",2* Ray*PI)*/
Ecrire un algorithme permettant l'affichage
du périmètre d'un cercle connaissant son
rayon.
Application 2
ALGORITHME Moyenne_Matière
CONST CoefDev = 0,4
CoefExam = 0,6
VAR NoteDev, NoteExam, Moy : Réel
DEBUT
Ecrire ("Donnez la note du devoir : ")
Lire (NoteDev)
Ecrire ("Donnez la note de l'examen :")
Lire (NoteExam)
Moy ← NoteDev * CoefDev +
NoteExam * CoefEam
Ecrire("La moyenne est : ", Moy)
FIN 10
Ecrire un algorithme permettant d'afficher la
moyenne d'un étudiant pour une matière.
Pour la matière, l'étudiant a une note de
devoir et une note d'examen ayant
respectivement les coefficients 0,4 et 0,6.
Exemple d’exécution :
Donnez la note du devoir : 15
Donnez la note de l'examen : 17
La moyenne est : 16.2
Ou encore
Ecrire("La moyenne de l'étudiant est : ",
NoteDev * CoefDev + NoteExam * CoefEam)
Ecrire un algorithme permettant d'afficher la
moyenne d'un étudiant pour une matière.
Pour la matière, l'étudiant a une note de
devoir et une note d'examen ayant
respectivement les coefficients 0,4 et 0,6.
Les expressions
arithmétiques
Les opérateurs
12
• L’opérateur DIV permet de donner le résultat de la division entière d’un
nombre par un autre.
Exemple : 7 DIV 2  3
• L’opérateur MOD (se lit Modulo), permet de donner le reste de la division
entière d’un entier par un autre.
Exemple : 7 MOD 2  1
• L’opérateur ** ou ^ permet d’élever un nombre à la puissance d’un autre.
Exemple : 2 ** 3  8
• Et les opérateurs "+", "-", "/", "*" et le "-" unaire.
Ordre de priorité
13
Ordre de Priorité Catégories d’opérateurs Opérateurs
1 Les parenthèses ( , )
2 Les opérateurs "Unaires" + , -
3 La puissance **
4 Les opérateurs multiplicatifs * , / , MOD , DIV
5 Les opérateurs additifs + , -
6 Les opérateurs comparatifs = , <> , < , > , <= , >=
7 La négation logique NON
8 L'intersection ET
9 L'union OU
Remarque : Si l’ordre entre les opérateurs dans une expression est le
même, on évalue l’expression de gauche à droite.
Exemples : 3**2+4 = 9+4 = 13
3**(2+4) = 3**6 car les parenthèses sont plus prioritaires
17 MOD 10 DIV 3 = (17MOD10) DIV3 = 7DIV3 = 2
Application 3
ALGORITHME Opérations_Math
VAR A, B, Som : Entier
Moy : Réel
DEBUT
Ecrire ("Donnez A :")
Lire (A)
Ecrire ("Donnez B :")
Lire (B)
Som ← A + B
Ecrire("La somme ", A, " + ", B, " = ", Som )
Ecrire(A, " - ", B, " = ", A - B )
Ecrire(A, " * ", B, " = ", A * B )
Ecrire(A, " / ", B, " = ", A / B )
Moy ← Som / 2
Ecrire("La moyenne de ", A, "et", B, " = ", Moy )
FIN
14
Ecrire un algorithme qui permet de lire deux
variables entières A et B, calculer la somme, la
différence, la moyenne, le produit, le quotient
réel et afficher les résultats.
Exemple d’exécution :
Donnez A : 10
Donnez B : 8
10 + 8 = 18
10 - 8 = 2
10 * 8 = 80
10 / 8 = 1.25
La moyenne de 10 et 8 = 9
Ecrire un algorithme qui permet de lire deux
variables entières A et B, calculer la somme,
la différence, la moyenne, le produit, le
quotient réel et afficher les résultats.
Application 4
ALGORITHME Décomposition
VAR N, U, D, C : Entier
DEBUT
Ecrire ("Donnez un entier de trois chiffres :")
Lire (N)
C ← N DIV 100
D← (N MOD 100) DIV 10
U ← (N MOD 100) MOD 10 //ou N MOD 10
Ecrire (" Le chiffre d'unités est : ", U)
Ecrire (" Le chiffre de dizaines est : ", D)
Ecrire (" Le chiffre de centaines est : ", C)
FIN
15
Ecrire un algorithme qui permet de lire un
nombre entier (supposé de 3 chiffres) et
d'afficher ses chiffres d'unité, de dizaines et de
centaines.
Exemple d’exécution :
Donnez un entier de trois chiffres : 784
Le chiffre d'unités est : 4
Le chiffre de dizaines est : 8
Le chiffre de centaines est : 7
Ecrire un algorithme qui permet de lire un
nombre entier (supposé de 3 chiffres) et
d'afficher ses chiffres d'unité, de dizaines et
de centaines.
Application 5 ALGORITHME Conversion_Temps
VAR NS, H, M, S : Entier
DEBUT
Ecrire ("Donnez un nombre de secondes : ")
Lire (NS)
H ← NS DIV 3600
M ← (NS MOD 3600) DIV 60
S ← NS MOD 60
Ecrire (NS, " secondes = ", H, " : ", M ," : ", S)
FIN
16
Ecrire un algorithme qui permet de lire un
nombre de secondes et de le convertir en
nombre d’heures, de minutes et de secondes.
Exemple d’exécution :
Donnez un nombre de secondes : 3784
3784 secondes = 1 H : 3 M : 4 S
Ecrire un algorithme qui permet de lire un
nombre de secondes et de le convertir en
nombre d’heures, de minutes et de secondes.
Chapitre 3 :
Les structures
conditionnelles
Enseignante : Lilia Ayadi Zribi
1ère année LTI Promotion 7
Introduction
2
Introduction
la notion de traitement conditionnel
En programmation, on est souvent confronté à des situations où on a besoin de
choisir entre deux ou plusieurs traitements selon la réalisation ou non d’une
certaine condition.
3
On distingue deux structures de traitement conditionnel :
• La structure de sélection simple ;
• La structure de sélection multiple.
On classe les structures conditionnelles en deux types :
• La structure alternative ;
• La structure sélective.
La structure
alternative
Structure conditionnelle alternative
L’alternative est basée sur une comparaison entre deux ou plusieurs valeurs de
même type. Cette comparaison est une expression arithmétique ou logique qui
forme une condition.
On distingue deux formes :
• Simple
✓ Réduite
✓ Complète
• Imbriquée
5
Structure conditionnelle alternative
Forme simple réduite à un choix
• En algorithmique, les conditions s'expriment avec des
opérateurs logiques ou des opérateurs de comparaisons
• Si la condition vaut VRAI, la suite d’instructions est traitée. Si elle vaut FAUX,
on n’effectue rien (on passe à FIN SI) ;
6
Condition
Vrai ?
Suite de l’algorithme
Non
Oui
Suite
d’instructions
Si
FinSi
SI (<< Condition (s) >>) ALORS
<< Traitement 1 >>
FINSI
Application 1 Algorithme Racine_Carrée
Var N : Entier
Début
Ecrire ("Donner un nombre :")
Lire (N)
Si (N > 0) Alors
Ecrire ("La racine carré de ", N,
" est ", sqrt(N))
FinSi
Fin
7
Ecrire un algorithme qui permet de lire un
entier N et de calculer et afficher sa racine
carrée s’il est positif et non nul.
Exemple 1 d’exécution :
Donner un nombre : 9
La racine carrée de 9 est 3
Ecrire un algorithme qui permet de lire un
entier N et de calculer et afficher sa racine
carrée s’il est positif et non nul.
Exemple 2 d’exécution :
Donner un nombre : -5
Structure conditionnelle alternative
Forme simple complète à deux choix
Il s’agit d’un traitement qui ne peut s’exécuter que si une condition logique est
satisfaite ; dans le cas contraire, un autre traitement sera exécuté.
8
SI (<< Condition (s) >>) ALORS
<< Traitement 1 >>
SINON
<< Traitement 2 >>
FINSI
• Si la condition vaut VRAI, le
traitement 1 est effectué.
• Si elle vaut FAUX, on effectue le
Traitement 2 avant de passer à FIN SI.
Condition
Vrai ?
Suite du programme
Non
Oui
Traitement 1
Si
FinSi
Traitement 2
Application 2
9
Soit l'algorithme suivant :
Faire le tournage à la main de l'algorithme précédent pour les valeurs :
a. A= 1, B= 4 et C= 2
b. A= 3, B= 2 et C=4
Algorithme Essai
Var A,B,C : entier
Début
Lire(A, B, C)
SI (A < B Et C > A) ALORS
A  B + C
B  C * 2
SINON
A  C - B
C 0
FINSI
Ecrire(A,B,C)
Fin
Application 2
10
Cas 1 : A= 1, B= 4 et C= 2
SI ( 1 < 4 Et 2 > 1 )
 Vrai ALORS
A  4 + 2 = 6
B  2 * 2 = 4
Ecrire : 6 - 4 - 2
Algorithme Essai
Var A,B,C : entier
Début
Lire(A, B, C)
SI (A < B Et C > A) ALORS
A  B + C
B  C * 2
SINON
A  C - B
C 0
FINSI
Ecrire(A,B,C)
Fin
Cas 2 : A= 3, B= 2 et C=4
SI ( 3 < 2 Et 4 > 3 )
 Faux ALORS
A  4 - 2 = 2
C  0
Ecrire : 2 – 2 - 0
Application 3 Algorithme Parité
Var NB : Entier
Début
Ecrire ("Donnez un nombre :")
Lire (NB)
Si (NB Mod 2 = 0) Alors
Ecrire (NB," est Pair ")
Sinon
Ecrire (NB," est impair ")
FinSi
Fin
11
Ecrire un algorithme qui permet de lire un
entier dans une variable NB et de déterminer
sa parité.
Ecrire un algorithme qui permet de lire un
entier dans une variable NB et de déterminer
sa parité.
Exemple 1 d’exécution :
Donner un nombre : 8
8 est pair
Exemple 2 d’exécution :
Donner un nombre : 5
5 est impair
Structure conditionnelle alternative
Forme imbriquée
Dans quel cas utiliser la structure imbriquée ?
12
• Il s’agit d’un traitement qui ne peut s’exécuter que si une condition
logique est satisfaite ; dans le cas contraire, un autre traitement sera
exécuté.
• Les différents traitements ne comportent plus uniquement des
actions simples mais on peut leur imbriquer des structures
conditionnelles.
Structure conditionnelle alternative
Forme imbriquée
13
Condition 1
Vrai ?
Suite du
programme
Condition 2
Vrai ?
Condition
n-1 Vrai
?
Instruction
2 …
Instruction
n-1
Instruction
n
Condition n
Vrai ?
Non
Oui
Non
Oui
Non
Oui
SI << Condition 1 >> ALORS
<< Traitement 1 >>
SI << Condition 2 >> ALORS
<< Traitement 21 >>
SINON
<< Traitement 22 >>
FIN SI
SINON
SI << Condition 3 >> ALORS
<< Traitement 31 >>
SINON
<< Traitement 32 >>
FIN SI
FIN SI
Instruction
1
Application 4
Algorithme Plus_Grand
Var X, Y : Entier
Début
Ecrire ("Donnez X : ")
Lire (X)
Ecrire ("Donnez Y : ")
Lire (Y)
Si (X > Y) Alors
Ecrire (X," Plus Grand Que ", Y)
Sinon Si (Y > X) Alors
Ecrire (Y," Plus Grand Que ", X)
Sinon //le cas où X = Y
Ecrire (X," Egal à ", Y)
Finsi
Finsi
Fin 14
Ecrire un algorithme qui permet de lire 2
entiers et chercher et afficher le plus grand
entre les deux.
Ecrire un algorithme qui permet de lire 2
entiers et chercher et afficher le plus grand
entre les deux.
Exemple 1 d’exécution :
Donner X : 12
Donner Y : 3
12 Plus Grand Que 3
Exemple 2 d’exécution :
Donner X : 5
Donner Y : 27
27 Plus Grand Que 5
Exemple 3 d’exécution :
Donner X : 6
Donner Y : 6
6 Egal à 6
Application 5
Algorithme Type_Caractère
Var C : Car
Début
Ecrire ("Donnez un caractère :")
Lire (C)
Si (C >= '0' Et C<='9') AlORS
// Si (Ord(C) >= 48 Et Ord(C) <=57) AlORS
//Si C dans [‘0’..’9’]
Ecrire (C," est un chiffre ")
Sinon
Si (C >= 'A' Et C<='Z') AlORS
// Si (Ord(C) >= 65 Et Ord(C) <=90) AlORS
Ecrire (C," est une lettre majuscule ")
Sinon
Si (C >= 'a' Et C<='z') AlORS
// Si (Ord(C)>=97 Et Ord(C)<=122) AlORS
Ecrire (C," est une lettre minuscule ")
Sinon
Ecrire (C," est un symbole")
FinSi
Finsi
Finsi
Fin 15
Ecrire un algorithme d'un problème qui
permet de saisir un caractère C et de chercher
et d'afficher si ce caractère est un chiffre, une
lettre ou un symbole.
Ecrire un algorithme d'un problème qui
permet de saisir un caractère C et de chercher
et d'afficher si ce caractère est un chiffre, une
lettre ou un symbole.
Exemples d’exécution :
C = '7’ le programme affiche :
7 est un chiffre
C = 'm’ le programme affiche :
m est une lettre minuscule
C = 'H' le programme affiche :
H est une lettre majuscule
C = '! ' le programme affiche :
! est un symbole.
La structure
sélective
Selon … Faire
• Il arrive parfois qu’on ait à tester entre plusieurs cas et à faire un choix entre
n possibilités pour exécuter un traitement convenable.
• On utilise dans ce cas l’action SELON qui permet de sélectionner un
traitement, suivant la valeur du sélecteur.
Syntaxe : SELON (<< Sélecteur >>) FAIRE
<Liste_de_valeur1> : << Traitement1>>
<Liste_de_valeur2> : << Traitement2>>
…
<Liste_de_valeur n> : << Traitement n>
SINON << Traitement n+1>>
FIN SELON
17
Avec : <<Sélecteur>> est un identificateur d’un objet ou une expression,
<<Traitement i>> est une suite d’actions à exécuter,
<<Liste_de_valeur i>> peut être donnée sous forme de constante(s) et/ou d’intervalle(s)
de constante(s) de type compatible avec celui du <<Sélecteur >>.
Application 6
Algorithme Mois
Var N : Entier
Début
Ecrire("Donner le numéro du mois :")
Lire(N)
Selon (N) faire
1 : Ecrire("Janvier")
2 : Ecrire("Février")
3 : Ecrire("Mars")
4 : Ecrire("Avril")
5 : Ecrire("Mai")
….
11 : Ecrire("Novembre")
12 : Ecrire("Décembre")
Sinon
Ecrire ("Le numéro du mois est invalide !!! ")
Fin Selon
Fin
18
Écrire un algorithme permettant d'afficher le
mois en toute lettre selon son numéro saisi au
clavier.
Exemple 1 d’exécution :
Donner le numéro du mois : 3
Le programme affiche : Mars
Écrire un algorithme permettant d'afficher le
mois en toute lettre selon son numéro saisi au
clavier.
Exemple 2 d’exécution :
Donner le numéro du mois : 15
Le programme affiche :
Le numéro du mois est invalide !!!
Application 6 Algorithme Trimestre
Var N : Entier
Début
Ecrire("Donner le numéro du mois :")
Lire(N)
Selon (N) faire
1, 2, 3 : Ecrire(" Trimestre 1 ")
4, 5, 6 : Ecrire(" Trimestre 2")
7, 8, 9 : Ecrire(" Trimestre 3 ")
10, 11, 12 : Ecrire(" Trimestre 4")
Sinon
Ecrire ("Le numéro du mois est invalide !!! ")
Fin Selon
Fin
19
Écrire un algorithme permettant d'afficher le
mois en toute lettre selon son numéro saisi au
clavier.
Exemple 1 d’exécution :
Donner le numéro du mois : 3
Le programme affiche : Trimestre 1
Écrire un algorithme permettant d'afficher le
trimestre correspondant à un numéro de
mois saisi au clavier.
Exemple 2 d’exécution :
Donner le numéro du mois : 5
Le programme affiche : Trimestre 2

Algorithmique et Programmation I - Lilia Ayadi.pdf

  • 1.
    Algorithmique et Programmation I Enseignante: Lilia Ayadi Zribi 1ère année LTI Promotion 7
  • 2.
    Plan • Introduction :Généralités et notions de base • Les actions algorithmiques simples • Les structures conditionnelles • Les structures répétitives • Les sous algorithmes • Les types composés (tableaux, chaînes et enregistrements) 2
  • 3.
    Chapitre 1 : Généralitéset notions de base Enseignante : Lilia Ayadi Zribi 1ère année LTI Promotion 7
  • 4.
  • 5.
    Qu’est-ce qu’un Algorithme? • Un algorithme est une méthode de résolution de problème énoncée sous la forme d'une liste d'opérations à effectuer. • La mise en œuvre de l'algorithme consiste à la traduction de ces opérations dans un langage de programmation et constitue alors la brique de base d'un programme informatique. 1. Une recette de cuisine est un algorithme ! 2. Une notice de montage d'un meuble en kit est aussi un algorithme ! 3. Indiquer un chemin à une personne perdue ou encore chercher un objet à quelqu’un par téléphone c’est fabriquer - et faire exécuter - des algorithmes. 5
  • 6.
    • 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 la personne perdue retrouve sa destination. ✓ Si l’algorithme est faux, ou encore aléatoire, cette recette ne sera pas bien réussie !!! Un algorithme est une suite finie d’instructions élémentaires (règles), qui s’appliquent dans un ordre déterminé à un nombre fini de données pour fournir un résultat. Qu’est-ce qu’un Algorithme ? 6
  • 7.
    Caractéristiques d’un algorithme Toutalgorithme est donc caractérisé par : • Un ensemble d’instructions à exécuter ; • Un ordre d’exécution de ces différentes actions, déterminé par la logique d’enchaînement et conditionné par les structures mises en œuvre ; • Un début et une fin. Remarque : Dans la suite du cours, on entend par Traitement soit une seule instruction, soit une succession d’instructions. 7
  • 8.
    Structure d’un algorithme AlgorithmeNom_Algorithme Const {Ensemble des constantes et leurs valeurs} Type {Définition des types personnalisés} Var {Ensemble des variables à utiliser dans le corps de l’algorithme} Début {Suite des actions à exécuter} Fin Entête Corps 8
  • 9.
    Un premier algorithme AlgorithmeCarré {Cet algorithme calcule le carré du nombre que lui fournit l'utilisateur } Var unNombre, sonCarré : Entier {Déclarations : réservation d'espace-mémoire} Début {Préparation du traitement} Afficher ("quel nombre voulez-vous élever au carré ?") Saisir(unNombre) {Traitement : calcul du carré} Soncarré ← unNombre × unNombre {Présentation du résultat} Afficher ("le carré de ", unNombre) Afficher ("c'est ", sonCarré) Fin Entête Corps 9
  • 10.
    Les types de données •Entier • Réel • Caractère • Booléen / Logique 10
  • 11.
  • 12.
    Les variables Une variableest une case mémoire stockant une donnée pouvant varier au cours de l'exécution d'un programme. Nous distinguons quatre types élémentaires en algorithmique : • Le type entier sera utilisé pour stocker des valeurs entières, positives ou négatives. • Le type réel sera utilisé pour stocker les nombres à virgule. • Le type caractère sera utilisé pour stocker les caractères. • Le type booléen sera utilisé pour stocker les valeurs de type vrai/faux. 12
  • 13.
    Notion de variable Unevariable est une case mémoire stockant une donnée pouvant varier au cours de l'exécution d'un programme. L’identificateur ou nom de la variable peut être quelconque, mais doit respecter les critères suivants : • Un identificateur commence toujours par une lettre minuscule ; • À l’exception du premier caractère, il peut contenir : des lettres, des chiffres, et le symbole ’_’ (souligné ou underscore) ; • Les majuscules et les minuscules sont des lettres différentes : les identificateurs v1 et V1 sont différents ; • Le nom de variable doit avoir une relation avec le rôle de cette variable et être compréhensible. 13
  • 14.
    Déclaration d'une variable 14 VarNom_Variable : Type_variable Var Compteur, Nombre, y : Entier Salaire, Prix : Réel Touche, Rep : Car Test : Booléen 10 Nom : Compteur Type : Entier Adresse : &0120 12,850 Prix Réel &51 ‘O’ Rep Car &4100 Cases mémoires Exemples
  • 15.
  • 16.
    Les constantes Comme unevariable, à une constante correspond un emplacement mémoire réservé auquel on accède par le nom qui lui a été attribué, mais dont la valeur stockée ne sera jamais modifiée au cours du programme. Le type d’une constante est déduit à partir de sa valeur. 16 Const Nom_Const = Valeur_Const PI = 3.14 //PI est une constante réelle TVA = 19 //TVA est une constante entière Déclaration Exemples
  • 17.
    Le type Entier Lesopérations de manipulation sur les entiers sont : • Les opérateurs arithmétiques classiques : + (addition), - (soustraction), * (produit), / (division réelle). • La division entière DIV : n DIV p donne la partie entière du quotient de la division de n par p. • Le modulo MOD : n MOD p donne le reste de la division entière de n par p. • Les opérateurs de comparaison classiques : <, >, =, >=, <=, <>. 17 Le type Entier sert à représenter les nombres entiers positifs, négatifs ou nuls. Exemple : 5,-15, 23 etc Syntaxe : identificateur1, identificateur2, … : Entier
  • 18.
    Application 18 Donner les déclarationsnécessaires pour un algorithme qui permet de calculer la somme de 2 entiers. Solution : Var A, B, Som : Entier Donner les déclarations nécessaires pour un algorithme qui permet de rechercher le max entre de deux nombres. Solution : Var NB1, NB2, Max : Entier
  • 19.
    Le type Réel Lesopérations de manipulation sur les réels sont : • Les opérateurs arithmétiques classiques : + (addition), - (soustraction), * (produit), / (division réelle). • Les opérateurs de comparaison classiques : <, >, =, >=, <=, <>. 19 Le type Réel sert à représenter les nombres à virgule. Exemple : 3.50,-15.25, 23.00 etc Syntaxe : identificateur1, identificateur2, … : Réel
  • 20.
    Application 20 Donner les déclarationsnécessaires pour un algorithme qui permet de lire deux notes avec leurs coefficients et d’afficher leur moyenne. Solution : Var Note1, Note2, Coef1, Coef2, Moy : Réel Donner les déclarations nécessaires pour un algorithme qui permet de rechercher le prix de vente d’un article après un montant de remise. Solution : Var PrixInit, TauxRem, PrixVente : Réel
  • 21.
    Le type caractère Lesopérations permises sur le type caractère sont : • Les actions algorithmiques simples (Saisie, affichage et affectation) ; • ORD : de manière que ORD( C ) donne le code ASCII (ordre dans la table ASCII) du caractère existant dans l’objet C. Le résultat est de type entier. Exemple : ORD( ‘A’ ) retourne 65 A← 'B’ ORD(A) retourne 66 • CHR : de manière que CHR( N ) donne le caractère correspondant au code ASCII du contenu de l'objet N (N étant de type entier). Le résultat est de type caractère. Exemple : CHR (65) retourne ’A’. 21 Le type Caractère sert à manipuler des caractères alphabétiques, numériques et les caractères spéciaux. Exemple : 'a', 'A', 'z', '.', '!', '1', '2', etc. Syntaxe : identificateur1, identificateur2, … : Car Remarque : Les deux fonctions CHR et ORD sont réciproques. C’est à dire que CHR(ORD(C)) retourne C et ORD(CHR(N)) retourne N
  • 22.
    Le type caractère •Les opérateurs de comparaison (<, <=, >, >=, =, < >) : La comparaison de deux caractères revient à comparer leurs codes ASCII respectifs. Exemples : ‘a’ < > ‘b’ c’est évident … < '0'< … < '9' < … < 'A' < … < 'Z' < … <'a' < … < 'z' < … 0 48 65 97 255 • SUIVANT : de manière que SUIVANT(C) donne le caractère qui suit celui existant dans l’objet C. • PRECEDENT : de manière que PRECEDENT(C) donne le caractère qui précède celui existant dans l’objet C. Exemples : SUIVANT ( 'A' ) = 'B' PRECEDENT ( 'R' ) = 'Q'. 22 Le type Caractère sert à manipuler des caractères alphabétiques, numériques et les caractères spéciaux. Exemple : 'a', 'A', 'z', '.', '!', '1', '2', etc. Syntaxe : identificateur1, identificateur2, … : Car Remarque : Les deux fonctions Suivant et Précédent sont réciproques, c’est à dire SUIVANT (PRECEDENT( C )) retourne C Et PRECEDENT(SUIVANT( C )) retourne C
  • 23.
    Application 23 Donner les déclarationsnécessaires pour un algorithme qui permet de lire un caractère et d’afficher son code ASCII. Solution : Var C : Car CA : Entier Donner les déclarations nécessaires pour un algorithme qui permet lire un caractère et de chercher et afficher son précédent et son suivant. Solution : Var C, CSuiv, CPrec : Car
  • 24.
    Le type Logique Lesprincipales opérations définies sur les variables de type logique sont : • La négation : (notée « NON » ou « ») • L’intersection : (notée « ET » ou «  ») • L’union : (notée « OU » ou «  ») 24 Le type Logique ou encore Booléen est associé à un objet prenant ses valeurs dans l’ensemble Vrai, Faux. Syntaxe : identificateur1, identificateur2, … : Logique Ou bien identificateur1, identificateur2, … : Booléen
  • 25.
    Chapitre 2 : Lesactions algorithmiques simples Enseignante : Lilia Ayadi Zribi 1ère année LTI Promotion 7
  • 26.
  • 27.
    L’affectation L’opération d’affectation permetde donner (ou d’affecter, d’où son nom) une valeur à une variable. Syntaxe : Nom_Variable ← Valeur_à_affecter Exemples : X ← 5 Y  X R1 ← 12.5 Z  X * 2 + Y Attention : il est interdit d’écrire : A + 1 ← 3 : A+1 n’est pas un identificateur de variable. A ← B : sans que B n’ait déjà une valeur (indéfinie). 3
  • 28.
  • 29.
    L’affichage : actionEcrire Cette action permet de communiquer un résultat ou un message sur écran ou sur imprimante pour l'utilisateur. Syntaxe : ECRIRE(paramètre1 [[,paramètre2]…]) Paramètre = variable | expression | constante constante = nombre | message 5
  • 30.
    L’affichage : Exemples ECRIRE(" La valeur de 3*2 est égale à ", 3*2) message expression ECRIRE (" La moyenne est = ", MOY) message variable ECRIRE (le carré de  , A , est égal à  , A * A) message variable message expression ECRIRE (A, " + ", B, " = ", A+B ) variable message variable message expression 6
  • 31.
  • 32.
    La saisie :action Lire L'action LIRE permet à l'ordinateur d’acquérir des données à partir de l’utilisateur, dans des cases mémoire bien définies (qui sont les variables déclarées). Syntaxe : LIRE(variable1 [[, variable2] …]) Exemples : LIRE (A) LIRE (B) LIRE (C) 8 LIRE(A, B, C) Remarques : 1. La saisie se fait uniquement dans des variables. Ce sont les cases (cellules) qui pourront accueillir les données correspondantes. 2. La donnée à introduire doit être de même type que la variable réceptrice.
  • 33.
    Application 1 ALGORITHME Périmètre_Cercle CONSTPI = 3,14 VAR Ray, Perim : Réel DEBUT Ecrire ("Donnez la valeur du rayon : ") Lire (Ray) Perim  2* Ray * PI Ecrire ("Le périmètre du cercle de rayon :", Ray, "est égale à : ", Perim) FIN 9 Ecrire un algorithme permettant l'affichage du périmètre d'un cercle connaissant son rayon. Exemple d’exécution : Donner le rayon : 3 Le périmètre du cercle de rayon : 3 est égale à : 18.84 Ou encore /*Ecrire("Le périmètre du cercle de rayon :" , Ray, "est égale à : ",2* Ray*PI)*/ Ecrire un algorithme permettant l'affichage du périmètre d'un cercle connaissant son rayon.
  • 34.
    Application 2 ALGORITHME Moyenne_Matière CONSTCoefDev = 0,4 CoefExam = 0,6 VAR NoteDev, NoteExam, Moy : Réel DEBUT Ecrire ("Donnez la note du devoir : ") Lire (NoteDev) Ecrire ("Donnez la note de l'examen :") Lire (NoteExam) Moy ← NoteDev * CoefDev + NoteExam * CoefEam Ecrire("La moyenne est : ", Moy) FIN 10 Ecrire un algorithme permettant d'afficher la moyenne d'un étudiant pour une matière. Pour la matière, l'étudiant a une note de devoir et une note d'examen ayant respectivement les coefficients 0,4 et 0,6. Exemple d’exécution : Donnez la note du devoir : 15 Donnez la note de l'examen : 17 La moyenne est : 16.2 Ou encore Ecrire("La moyenne de l'étudiant est : ", NoteDev * CoefDev + NoteExam * CoefEam) Ecrire un algorithme permettant d'afficher la moyenne d'un étudiant pour une matière. Pour la matière, l'étudiant a une note de devoir et une note d'examen ayant respectivement les coefficients 0,4 et 0,6.
  • 35.
  • 36.
    Les opérateurs 12 • L’opérateurDIV permet de donner le résultat de la division entière d’un nombre par un autre. Exemple : 7 DIV 2  3 • L’opérateur MOD (se lit Modulo), permet de donner le reste de la division entière d’un entier par un autre. Exemple : 7 MOD 2  1 • L’opérateur ** ou ^ permet d’élever un nombre à la puissance d’un autre. Exemple : 2 ** 3  8 • Et les opérateurs "+", "-", "/", "*" et le "-" unaire.
  • 37.
    Ordre de priorité 13 Ordrede Priorité Catégories d’opérateurs Opérateurs 1 Les parenthèses ( , ) 2 Les opérateurs "Unaires" + , - 3 La puissance ** 4 Les opérateurs multiplicatifs * , / , MOD , DIV 5 Les opérateurs additifs + , - 6 Les opérateurs comparatifs = , <> , < , > , <= , >= 7 La négation logique NON 8 L'intersection ET 9 L'union OU Remarque : Si l’ordre entre les opérateurs dans une expression est le même, on évalue l’expression de gauche à droite. Exemples : 3**2+4 = 9+4 = 13 3**(2+4) = 3**6 car les parenthèses sont plus prioritaires 17 MOD 10 DIV 3 = (17MOD10) DIV3 = 7DIV3 = 2
  • 38.
    Application 3 ALGORITHME Opérations_Math VARA, B, Som : Entier Moy : Réel DEBUT Ecrire ("Donnez A :") Lire (A) Ecrire ("Donnez B :") Lire (B) Som ← A + B Ecrire("La somme ", A, " + ", B, " = ", Som ) Ecrire(A, " - ", B, " = ", A - B ) Ecrire(A, " * ", B, " = ", A * B ) Ecrire(A, " / ", B, " = ", A / B ) Moy ← Som / 2 Ecrire("La moyenne de ", A, "et", B, " = ", Moy ) FIN 14 Ecrire un algorithme qui permet de lire deux variables entières A et B, calculer la somme, la différence, la moyenne, le produit, le quotient réel et afficher les résultats. Exemple d’exécution : Donnez A : 10 Donnez B : 8 10 + 8 = 18 10 - 8 = 2 10 * 8 = 80 10 / 8 = 1.25 La moyenne de 10 et 8 = 9 Ecrire un algorithme qui permet de lire deux variables entières A et B, calculer la somme, la différence, la moyenne, le produit, le quotient réel et afficher les résultats.
  • 39.
    Application 4 ALGORITHME Décomposition VARN, U, D, C : Entier DEBUT Ecrire ("Donnez un entier de trois chiffres :") Lire (N) C ← N DIV 100 D← (N MOD 100) DIV 10 U ← (N MOD 100) MOD 10 //ou N MOD 10 Ecrire (" Le chiffre d'unités est : ", U) Ecrire (" Le chiffre de dizaines est : ", D) Ecrire (" Le chiffre de centaines est : ", C) FIN 15 Ecrire un algorithme qui permet de lire un nombre entier (supposé de 3 chiffres) et d'afficher ses chiffres d'unité, de dizaines et de centaines. Exemple d’exécution : Donnez un entier de trois chiffres : 784 Le chiffre d'unités est : 4 Le chiffre de dizaines est : 8 Le chiffre de centaines est : 7 Ecrire un algorithme qui permet de lire un nombre entier (supposé de 3 chiffres) et d'afficher ses chiffres d'unité, de dizaines et de centaines.
  • 40.
    Application 5 ALGORITHMEConversion_Temps VAR NS, H, M, S : Entier DEBUT Ecrire ("Donnez un nombre de secondes : ") Lire (NS) H ← NS DIV 3600 M ← (NS MOD 3600) DIV 60 S ← NS MOD 60 Ecrire (NS, " secondes = ", H, " : ", M ," : ", S) FIN 16 Ecrire un algorithme qui permet de lire un nombre de secondes et de le convertir en nombre d’heures, de minutes et de secondes. Exemple d’exécution : Donnez un nombre de secondes : 3784 3784 secondes = 1 H : 3 M : 4 S Ecrire un algorithme qui permet de lire un nombre de secondes et de le convertir en nombre d’heures, de minutes et de secondes.
  • 41.
    Chapitre 3 : Lesstructures conditionnelles Enseignante : Lilia Ayadi Zribi 1ère année LTI Promotion 7
  • 42.
  • 43.
    Introduction la notion detraitement conditionnel En programmation, on est souvent confronté à des situations où on a besoin de choisir entre deux ou plusieurs traitements selon la réalisation ou non d’une certaine condition. 3 On distingue deux structures de traitement conditionnel : • La structure de sélection simple ; • La structure de sélection multiple. On classe les structures conditionnelles en deux types : • La structure alternative ; • La structure sélective.
  • 44.
  • 45.
    Structure conditionnelle alternative L’alternativeest basée sur une comparaison entre deux ou plusieurs valeurs de même type. Cette comparaison est une expression arithmétique ou logique qui forme une condition. On distingue deux formes : • Simple ✓ Réduite ✓ Complète • Imbriquée 5
  • 46.
    Structure conditionnelle alternative Formesimple réduite à un choix • En algorithmique, les conditions s'expriment avec des opérateurs logiques ou des opérateurs de comparaisons • Si la condition vaut VRAI, la suite d’instructions est traitée. Si elle vaut FAUX, on n’effectue rien (on passe à FIN SI) ; 6 Condition Vrai ? Suite de l’algorithme Non Oui Suite d’instructions Si FinSi SI (<< Condition (s) >>) ALORS << Traitement 1 >> FINSI
  • 47.
    Application 1 AlgorithmeRacine_Carrée Var N : Entier Début Ecrire ("Donner un nombre :") Lire (N) Si (N > 0) Alors Ecrire ("La racine carré de ", N, " est ", sqrt(N)) FinSi Fin 7 Ecrire un algorithme qui permet de lire un entier N et de calculer et afficher sa racine carrée s’il est positif et non nul. Exemple 1 d’exécution : Donner un nombre : 9 La racine carrée de 9 est 3 Ecrire un algorithme qui permet de lire un entier N et de calculer et afficher sa racine carrée s’il est positif et non nul. Exemple 2 d’exécution : Donner un nombre : -5
  • 48.
    Structure conditionnelle alternative Formesimple complète à deux choix Il s’agit d’un traitement qui ne peut s’exécuter que si une condition logique est satisfaite ; dans le cas contraire, un autre traitement sera exécuté. 8 SI (<< Condition (s) >>) ALORS << Traitement 1 >> SINON << Traitement 2 >> FINSI • Si la condition vaut VRAI, le traitement 1 est effectué. • Si elle vaut FAUX, on effectue le Traitement 2 avant de passer à FIN SI. Condition Vrai ? Suite du programme Non Oui Traitement 1 Si FinSi Traitement 2
  • 49.
    Application 2 9 Soit l'algorithmesuivant : Faire le tournage à la main de l'algorithme précédent pour les valeurs : a. A= 1, B= 4 et C= 2 b. A= 3, B= 2 et C=4 Algorithme Essai Var A,B,C : entier Début Lire(A, B, C) SI (A < B Et C > A) ALORS A  B + C B  C * 2 SINON A  C - B C 0 FINSI Ecrire(A,B,C) Fin
  • 50.
    Application 2 10 Cas 1: A= 1, B= 4 et C= 2 SI ( 1 < 4 Et 2 > 1 )  Vrai ALORS A  4 + 2 = 6 B  2 * 2 = 4 Ecrire : 6 - 4 - 2 Algorithme Essai Var A,B,C : entier Début Lire(A, B, C) SI (A < B Et C > A) ALORS A  B + C B  C * 2 SINON A  C - B C 0 FINSI Ecrire(A,B,C) Fin Cas 2 : A= 3, B= 2 et C=4 SI ( 3 < 2 Et 4 > 3 )  Faux ALORS A  4 - 2 = 2 C  0 Ecrire : 2 – 2 - 0
  • 51.
    Application 3 AlgorithmeParité Var NB : Entier Début Ecrire ("Donnez un nombre :") Lire (NB) Si (NB Mod 2 = 0) Alors Ecrire (NB," est Pair ") Sinon Ecrire (NB," est impair ") FinSi Fin 11 Ecrire un algorithme qui permet de lire un entier dans une variable NB et de déterminer sa parité. Ecrire un algorithme qui permet de lire un entier dans une variable NB et de déterminer sa parité. Exemple 1 d’exécution : Donner un nombre : 8 8 est pair Exemple 2 d’exécution : Donner un nombre : 5 5 est impair
  • 52.
    Structure conditionnelle alternative Formeimbriquée Dans quel cas utiliser la structure imbriquée ? 12 • Il s’agit d’un traitement qui ne peut s’exécuter que si une condition logique est satisfaite ; dans le cas contraire, un autre traitement sera exécuté. • Les différents traitements ne comportent plus uniquement des actions simples mais on peut leur imbriquer des structures conditionnelles.
  • 53.
    Structure conditionnelle alternative Formeimbriquée 13 Condition 1 Vrai ? Suite du programme Condition 2 Vrai ? Condition n-1 Vrai ? Instruction 2 … Instruction n-1 Instruction n Condition n Vrai ? Non Oui Non Oui Non Oui SI << Condition 1 >> ALORS << Traitement 1 >> SI << Condition 2 >> ALORS << Traitement 21 >> SINON << Traitement 22 >> FIN SI SINON SI << Condition 3 >> ALORS << Traitement 31 >> SINON << Traitement 32 >> FIN SI FIN SI Instruction 1
  • 54.
    Application 4 Algorithme Plus_Grand VarX, Y : Entier Début Ecrire ("Donnez X : ") Lire (X) Ecrire ("Donnez Y : ") Lire (Y) Si (X > Y) Alors Ecrire (X," Plus Grand Que ", Y) Sinon Si (Y > X) Alors Ecrire (Y," Plus Grand Que ", X) Sinon //le cas où X = Y Ecrire (X," Egal à ", Y) Finsi Finsi Fin 14 Ecrire un algorithme qui permet de lire 2 entiers et chercher et afficher le plus grand entre les deux. Ecrire un algorithme qui permet de lire 2 entiers et chercher et afficher le plus grand entre les deux. Exemple 1 d’exécution : Donner X : 12 Donner Y : 3 12 Plus Grand Que 3 Exemple 2 d’exécution : Donner X : 5 Donner Y : 27 27 Plus Grand Que 5 Exemple 3 d’exécution : Donner X : 6 Donner Y : 6 6 Egal à 6
  • 55.
    Application 5 Algorithme Type_Caractère VarC : Car Début Ecrire ("Donnez un caractère :") Lire (C) Si (C >= '0' Et C<='9') AlORS // Si (Ord(C) >= 48 Et Ord(C) <=57) AlORS //Si C dans [‘0’..’9’] Ecrire (C," est un chiffre ") Sinon Si (C >= 'A' Et C<='Z') AlORS // Si (Ord(C) >= 65 Et Ord(C) <=90) AlORS Ecrire (C," est une lettre majuscule ") Sinon Si (C >= 'a' Et C<='z') AlORS // Si (Ord(C)>=97 Et Ord(C)<=122) AlORS Ecrire (C," est une lettre minuscule ") Sinon Ecrire (C," est un symbole") FinSi Finsi Finsi Fin 15 Ecrire un algorithme d'un problème qui permet de saisir un caractère C et de chercher et d'afficher si ce caractère est un chiffre, une lettre ou un symbole. Ecrire un algorithme d'un problème qui permet de saisir un caractère C et de chercher et d'afficher si ce caractère est un chiffre, une lettre ou un symbole. Exemples d’exécution : C = '7’ le programme affiche : 7 est un chiffre C = 'm’ le programme affiche : m est une lettre minuscule C = 'H' le programme affiche : H est une lettre majuscule C = '! ' le programme affiche : ! est un symbole.
  • 56.
  • 57.
    Selon … Faire •Il arrive parfois qu’on ait à tester entre plusieurs cas et à faire un choix entre n possibilités pour exécuter un traitement convenable. • On utilise dans ce cas l’action SELON qui permet de sélectionner un traitement, suivant la valeur du sélecteur. Syntaxe : SELON (<< Sélecteur >>) FAIRE <Liste_de_valeur1> : << Traitement1>> <Liste_de_valeur2> : << Traitement2>> … <Liste_de_valeur n> : << Traitement n> SINON << Traitement n+1>> FIN SELON 17 Avec : <<Sélecteur>> est un identificateur d’un objet ou une expression, <<Traitement i>> est une suite d’actions à exécuter, <<Liste_de_valeur i>> peut être donnée sous forme de constante(s) et/ou d’intervalle(s) de constante(s) de type compatible avec celui du <<Sélecteur >>.
  • 58.
    Application 6 Algorithme Mois VarN : Entier Début Ecrire("Donner le numéro du mois :") Lire(N) Selon (N) faire 1 : Ecrire("Janvier") 2 : Ecrire("Février") 3 : Ecrire("Mars") 4 : Ecrire("Avril") 5 : Ecrire("Mai") …. 11 : Ecrire("Novembre") 12 : Ecrire("Décembre") Sinon Ecrire ("Le numéro du mois est invalide !!! ") Fin Selon Fin 18 Écrire un algorithme permettant d'afficher le mois en toute lettre selon son numéro saisi au clavier. Exemple 1 d’exécution : Donner le numéro du mois : 3 Le programme affiche : Mars Écrire un algorithme permettant d'afficher le mois en toute lettre selon son numéro saisi au clavier. Exemple 2 d’exécution : Donner le numéro du mois : 15 Le programme affiche : Le numéro du mois est invalide !!!
  • 59.
    Application 6 AlgorithmeTrimestre Var N : Entier Début Ecrire("Donner le numéro du mois :") Lire(N) Selon (N) faire 1, 2, 3 : Ecrire(" Trimestre 1 ") 4, 5, 6 : Ecrire(" Trimestre 2") 7, 8, 9 : Ecrire(" Trimestre 3 ") 10, 11, 12 : Ecrire(" Trimestre 4") Sinon Ecrire ("Le numéro du mois est invalide !!! ") Fin Selon Fin 19 Écrire un algorithme permettant d'afficher le mois en toute lettre selon son numéro saisi au clavier. Exemple 1 d’exécution : Donner le numéro du mois : 3 Le programme affiche : Trimestre 1 Écrire un algorithme permettant d'afficher le trimestre correspondant à un numéro de mois saisi au clavier. Exemple 2 d’exécution : Donner le numéro du mois : 5 Le programme affiche : Trimestre 2