Algorithmique Structures Boucles Gmsi
Algorithmique Structures Boucles Gmsi
Algorithmique Structures Boucles Gmsi
INITIATION ALGORITHMIQUE
MR. Y. ILLOUSSAMEN
GIL 1° Année
Exemples :
si on lance le calcul de la factorielle de 100, combien de temps faudra t-il
attendre le résultat?
quel algorithme de tri vaut-il mieux utiliser pour retrier un tableau où on
vient de changer un élément?
Exécution
Résultat
Structure générale d’un algorithme 8
• Nom de l’algorithme
Déclaration des Constantes
• Déclaration Déclaration des Variables
des Objets Déclaration des Tableaux
Déclaration des Procédures et Fonctions
Début
• Manipulation Instructions
FIN
Exemple 9
Énoncé:
Écrire l’algorithme permettant le calcul de la surface d’un cercle
connaissant son rayon :
Surface = * Rayon2
Manipulation :
DEBUT
Écrire ( ‘’Saisir la valeur du rayon‘’ )
Lire (Rayon)
Surface Rayon * Rayon * Pi
Écrire (‘’La Surface du cercle: ‘’,Surface)
FIN
Exemple 2 : 11
ALGORITHME Carré
{Cet algorithme calcule le carré d'un nombre fourni par
l'utilisateur}
VAR unNombre, sonCarré : ENTIER
DÉBUT
Écrire ("Quel nombre voulez-vous élever au carré? \n")
Lire (unNombre)
sonCarré unNombre * unNombre
Écrire ("Le carré de ", unNombre)
Écrire (" c'est " , sonCarré)
FIN
Les instructions d'entrées-sorties: 12
Algorithme Calcul_double
variables A, B : ENTIER
Début
écrire("entrer le nombre ")
lire(A)
B 2*A
écrire("le double de ", A, "est :", B)
Fin
Exemple (lecture et écriture ) 14
Algorithme AffichageNomComplet
var Nom, Prenom, Nom_Complet : CHAÎNE
Début
écrire("entrez votre nom")
lire(Nom)
écrire("entrez votre prénom")
lire(Prenom)
Nom_Complet ← Nom + Prenom /*concatenation*/
écrire("Votre nom complet est : ",Nom_Complet)
Fin
15
2. Variables
Variable 16
• Exemples :
Variables val, unNombre : ENTIER
nom, prénom : chaîne
Déclaration des données 18
Exemples :
Constante MAX : ENTIER 10
DEUXFOISMAX : ENTIER MAX x 2
Types de variables : Entier 19
Définition :
Syntaxe de la déclaration :
Exemple :
Variable a,b : ENTIER
Types de variables : Réel 20
Définition :
C’est l’ensemble des nombres réels, c’est à dire les nombres décimaux
sans limitation.
Syntaxe de la déclaration :
Variable variable1,variable2,… : REEL
Exemple :
Variable x,y : REEL
Types de variables : Chaîne de caractères 21
Définition :
C’est une suite de caractères, c’est à dire des combinaisons de
caractères (lettres, chiffres, symboles..).
Syntaxe de la déclaration :
Variable variable1,variable2,… : Caractère
variable1,variable2,…: CHAINE
Exemple :
Variable C : Caractère
NOM : CHAINE[30]
C ’A’
NOM "Loulou"
Types de variables : Booléen 22
Définition :
Une variable de type logique (booléen) peut prendre deux valeurs
VRAIE ou FAUX.
Syntaxe de la déclaration :
Variable variable1,variable2,… : Booléen
Operations :
Les opérateurs logiques: NON, ET , OU
Exemple :
VAR X,Y: REEL
SUP: BOOLEEN
SUP ( X > Y)
Types de variables 23
• Type intervalle : un type dont les objets prennent leur valeur dans une
portion de l’intervalle des valeurs d’un autre type.
NBRE = 0..99
OUVRABLE = lundi..vendredi
3. Structures alternatives
« SI … ALORS … SINON … FSI » 25
• Instruction conditionnelle
Syntaxe :
Si condition alors
Actions 1
[ Sinon
Actions 2] //Option Facultative
Finsi
Opérateur Signification
+ Addition
- Soustraction
* Multiplication
/ Division
Opérateur Signification
= Égal
< Inférieur
> Supérieur
<= Inférieur ou égal
>= Supérieur ou égal
!= ou <> différent
Les opérateurs logiques de relation : 30
Opérateur Signification
Et Et logique
Ou Ou logique
Ou = Xor Ou exclusif
Conditions composées 31
Exemples :
• x compris entre 2 et 6 : (x > 2) ET (x < 6)
• n divisible par 3 ou par 2 : (n%3=0) OU (n%2=0)
• deux valeurs et deux seulement sont identiques parmi a, b et c :
(a=b) XOR (a=c) XOR (b=c)
Les " tables de vérité " 32
A B A et B A ou B Non A
Expression Résultat
ALGORITHME Maximum
Variable a ,b, max : entier
Début
Écrire ('Saisir deux entiers a et b ')
Lire(a, b)
Si (a > b) alors
max a
Sinon
max b
Finsi
Écrire ('le maximum de', a,'et de' , b, 'est :', max )
Fin
Structures alternatives imbriquées 35
Syntaxe :
Si condition1 alors
Si condition2 alors
instructionsA
Sinon
instructionsB
Finsi
Sinon
Si condition3 alors
instructionsC
Finsi
Finsi
Structures alternatives imbriquées 36
ALGORITHME pos
VAR n : entier
Début
Ecrire ("entrez un nombre : ")
Lire (n)
Si (n < 0) alors
Ecrire ("Ce nombre est négatif")
Sinon
Si (n = 0) alors
Ecrire ("Ce nombre est nul")
Sinon
Ecrire ("Ce nombre est positif")
Finsi
Finsi
Fin
« SI … ALORS … SINON … FSI » 37
Exercice :
Ecrire un algorithme « max » qui affiche le maximum de trois entiers.
Algorithme max : 38
ALGORITHME max
VAR a,b,c,max : entier
Début
Ecrire(”Entrer a,b et c: ”)
Lire(a,b,c)
Si a>b alors
Si a>c alors max <= a
Sinon max <= c
Finsi
Sinon
Si c>b alors max <= c
Sinon max <= b
Finsi
Finsi
Ecrire (”le max est:”,max)
Fin
Sélection choix multiples « SELON-QUE » 39
SELONQUE
<condition 1> : <action 1>
<condition 2> : <action 2>
...
<condition n> : <action n>
SINON : <action_sinon>
FINSELONQUE
Sélection choix multiples « SELON-QUE » 40
ALGORITHME mention
VAR Note : REEL
DEBUT
SELONQUE
Note ≥ 16 : ECRIRE (‘'TB'')
Note ≥ 14 : ECRIRE (‘'B'')
Note ≥ 12 : ECRIRE (‘'AB'')
Note ≥ 10 : ECRIRE (‘'Passable'')
SINON : ECRIRE (‘'ajourné'')
FINSELONQUE
FIN
Sélection choix multiples « SELON-QUE » 41
Syntaxe 2 :
Algorithme mois
VAR n : Entier
Début
Ecrire(”Entrer le numéro du mois : ”) Lire(n)
Selon n Faire
1 : Ecrire(”janvier”)
2 : Ecrire(”février”)
…
12 : Ecrire(”décembre”)
Sinon
Ecrire(”numéro de mois erroné... ”)
FinSelon
Fin.
SELECTION CHOIX MULTIPLES « SELON-QUE » 43
Exercice :
Ecrire un algorithme « calculette » qui réalise les opérations de calculs
(addition, multiplication, soustraction, quotient), le choix sera fait par
l’utilisateur ( + ou – ou * ou / : sont des caractères).
algorithme « calculette » 44
ALGORITHME calculette
VAR a, b : ENTIER
op : CARACTERE
DEBUT
ECRIRE (" a:")
LIRE (a)
ECRIRE (" saisissez l’opération ")
LIRE (op)
ECRIRE (" b:")
LIRE (b)
SELONQUE
Op = ‘+’ : ECRIRE (a, " + ",b, "=",a+b)
Op = ‘*’ : ECRIRE (a, "*",b, "=",a*b)
Op = ‘/’ : SI (b= 0) ALORS ECRIRE (" division impossible ")
SINON ECRIRE (a, "/ ",b, "=",a/b)
FINSI
Op = ‘-‘ : ECRIRE (a, "-",b, "=", a-b)
SINON: ECRIRE((" Opération invalide ")
FINSELONQUE
FIN
algorithme « calculette » 45
ALGORITHME calculette
VAR a, b : ENTIER
op : CARACTERE
DEBUT
ECRIRE (" a:")
LIRE (a)
ECRIRE (" saisissez l’opération ")
LIRE (op)
ECRIRE (" b:")
LIRE (b)
SELON op faire
‘+’ : ECRIRE (a, " + ",b, "=",a+b)
‘*’ : ECRIRE (a, "*",b, "=",a*b)
‘/’ : SI (b= 0) ALORS ECRIRE (" division impossible ")
SINON ECRIRE (a, "/ ",b, "=",a/b)
FINSI
‘-‘ : ECRIRE (a, "-",b, "=", a-b)
SINON: ECRIRE((" Opération impossible ")
FINSELON
FIN
Type CARACTERE / CHAINE DE CARACTERE 46
Une chaine de caractère est un objet qui peut contenir plusieurs caractères de
manière ordonnée.
VAR NOM : CHAINE[30] Chaine de 30 caractères maximum
ADRESSE : CHAINE Chaine de 128 caractères maximum
Fonction Signification
Exercice :
Ecrire un algorithme qui permet de saisir un caractère c en minuscule
et de l’afficher en majuscule, l’afficher avec son code ASCII.
Algorithme Min2Maj 49
Algorithme Min2Maj
VAR c,M: Caractère
N : Entier
Début
Ecrire(”Entrer un caractère min. : ”)
Lire(c)
N ORD(c)-32
M Chr(N)
Fin.
50
Exercice :
Ecrire un algorithme Nature_Caractere qui permet de lire un caractère
et d’afficher sa nature (lettre, chiffre, symbole).
algorithme Nature_Caractere (1) 51
Algorithme Nature_caractere
VAR c : Caractère
Début
Ecrire(”Entrer un caractère : ”)
Lire(c)
Selon c Faire
‘a’..’z’,‘A’..’Z’ : Ecrire(”c’est une lettre”)
‘0’..’9’ : Ecrire(”c’est un chiffre”)
Sinon
Ecrire(”c’est un caractère spécial”)
FinSelon
Fin.
algorithme Nature_Caractere (2) 52
Algorithme Nature_caractere
VAR c : Caractère
N : Entier
Début
Ecrire(”Entrer un caractère : ”)
Lire(c)
N ORD(c)
Selon N Faire
65..90,97..122 : Ecrire(”c’est une lettre ”)
48..57 : Ecrire(”c’est un chiffre”)
Sinon
Ecrire(”c’est un caractère spécial”)
FinSelon
Fin.
53
Exercice :
Ecrire un algorithme qui permet de résoudre une équation du second
degré : 𝒂𝒙𝟐 + 𝒃𝒙 + 𝒄 = 𝟎
Algorithme EqSndDegr (1) 54
Algorithme EqSndDegr
Var : a, b, c, delta :REEL
Début
Ecrire (‘’saisissez a, b et c de ax²+bx+c=0 : ‘’)
Lire (a, b, c)
Si a=0 alors
Ecrire (‘’ équation du premier degré ‘’)
SI (b≠0 ) ALORS ECRIRE ("solution : ", -c/b)
SINON ECRIRE (" Pas de solution")
FINSI
SINON
delta b*b-4*a*c
Si (delta > 0) ALORS
Ecrire((-b-sqrt(delta))/(2*a),(- b+sqrt(delta))/(2*a))
SINON
SI delta =0 ALORS ECRIRE ( "Solution est", -b/(2a))
SINON ECRIRE ("pas de solutions réelles !!")
FINSI
FINSI
FINSI
FIN
Algorithme EqSndDegr (2) 55
Algorithme EqSndDegr
Var : a, b, c, delta :REEL
Début
Ecrire (‘’saisissez a, b et c de ax²+bx+c=0 : ‘’)
Lire (a, b, c)
Si a=0 alors
Ecrire (‘’ équation du premier degré ‘’)
SI (b≠0 ) ALORS ECRIRE ("solution : ", -c/b)
SINON ECRIRE (" Pas de solution")
FINSI
SINON
delta b*b-4*a*c
SELONQUE
delta =0 :ECRIRE ( "Solution est", -b/(2a))
delta >0 :ECRIRE ((-b-sqrt(delta))/(2*a),’’et’’
(-b+sqrt(delta))/(2*a))
longueur(chaîne) ou Len(chaîne)
Exemple :
longueur("Bonjour")
concat(ch1, ch2)
Copie(ch1, position, n)
comp(ch1, ch2))
Exemple
comp("bonjour", "monsieur")
recherche("bonjour monsieur","j")
Les deux fonctions retournent 4.
Fonctions de chaînes de caractères (6) 61
Delete(ch1, position, n)
ou Efface(ch1, position, n)
Exemple :
Delete("Bonjour",4,4)
Exemple :
Exemple :
Pour i de 1 à 5 Faire
Ecrire(i*10)
FinPour
66
Exercice :
Écrire un algorithme permettant le calcul du factoriel d’un entier N > 0
donné : N!
Algorithme ‘’factoriel’’ : 67
Algorithme Factoriel
VAR N : Entier
i : Entier /*i = compteur */
F : Entier
DEBUT
Écrire (‘’ Saisir une valeur entière N > 0: ‘’)
Lire (N )
F 1 /* initialisation de la boucle*/
i 0
Pour i 1 à N Faire
F F*i
FinPour
Écrire (‘’Le factoriel de ‘’, N ,’' est :‘' , F)
FIN
68
Exercice :
Écrire l’algorithme permettant de calculer la moyenne des notes de N
étudiants
Algorithme ‘’Moyenne’’: 69
Algorithme Moyenne
VAR N, i : Entier
note, S, Moy : Réel
DEBUT
ECRIRE (‘’Saisir le nombre d’étudiants:’’)
Lire (N)
S 0 /* initialisation de la boucle*/
i 0
Pour i 1 à N faire
Écrire (‘’Saisir la note de ’’,i,’’:’’)
Lire (note)
S S + note
Fin Pour
Moy S/N
Écrire (‘’La moyenne est : ‘’, Moy)
FIN
b. Structure «TANTQUE..FAIRE» 70
Exercice :
Écrire un algorithme qui détermine le premier nombre entier N tel que
la somme de 1 à N dépasse strictement 100.
Algorithme ‘’somme_100’’: 72
Algorithme somme_100
Var s : Entier /* la somme */
i : Entier /* compteur */
Début
s ← 0 /* Initialisation */
i ← 1 /* Initialisation */
TantQue ( i ≤ 100 ) Faire
s ← s+i
i ← i+1
FinTantque
Ecrire (‘’le nombre N est :‘’, i-1)
Fin
73
Exercice :
Écrire un algorithme qui afficher tous les multiples de 9 inférieurs à
485.
Algorithme ‘’ Multiples de 9’’: 74
Algorithme Multiples de 9
VAR M, i : Entier
DEBUT
i /* initialisation de la boucle*/
M 0
TantQue (M < 485) Faire
Écrire (M ,’’ est un multiple de 9’’ )
i i + 1 /*incrémentation du compteur*/
M i * 9
FinTantque
FIN
c. Structure « REPETER…JUSQU’À » 75
On utilise cette instruction pour exécuter des actions jusqu'à ce que une
condition soit remplie.
Syntaxe :
REPETER instructions
<actions simples>
JUSQU'A <condition>
Exemple : Faux
x 0 condition
y 5
REPETER
x x + 1 Vrai
JUSQU’A x > y
Remarques :
Le traitement est exécuté au moins une fois.
La condition d’arrêt est une condition booléenne : la condition de sortie. Elle
peut être simple ou composée.
Cette structure est généralement utilisée dans le contrôle de saisie.
Structure « REPETER…JUSQU’À » 76
Algorithme Facto
Var n, f, i : Entier
Début
Ecrire(”Entrer un entier positif : ”)
Lire(n)
f 1
i 1
Répéter
f f * i
i i + 1
Jusqu’à (i > n)
Ecrire(n,”! = ”,f)
Fin
77
Exercice :
Écrire un algorithme permettant de calculer, pour un entier N> 0, la
somme :
SN = 1 + 2 + 3 + …… + N
Algorithme ‘’Somme_de_N’’: 78
Algorithme Somme_de_N
Variable N,S, i : Entier
DEBUT
Écrire (‘’Saisir une valeur entière positive :‘’)
Lire (N)
S 0 /* initialisation de la boucle*/
i 0
Faire
i i + 1
S S + i
jusqu’à (i > =N)
Exercice :
Écrire un algorithme diviseurs qui affiche tous les diviseurs d’un
nombre entier N.
algorithme ‘’diviseurs’’: 80
Algorithme Diviseurs
Var n, i : Entier
Début
Ecrire(”Entrer un entier positif : ”) Lire(n)
i 1
Répéter
Si (n Mod i = 0) Alors
Ecrire(i)
FinSi
i i + 1
Jusqu’à (i > n)
Fin.