Algorithmique Structures Boucles Gmsi

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 80

UNIVERSITE HASSAN 2 DE CASABLANCA

Ecole Normale Supérieure de l'Enseignement Technique

INITIATION ALGORITHMIQUE
MR. Y. ILLOUSSAMEN
GIL 1° Année

Ecole Normale Supérieure de l'Enseignement Technique


Université-Hassan-II-Mohammedia-Casablanca
Concepts 2

• Algorithme : mot dérivé du nom du mathématicien al_Khwarizmi qui a


vécu au 9ème siècle, était membre d’un académie des sciences à
Bagdad.

• 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.

• Un algorithme prend des données en entrée, exprime un traitement


particulier et fournit des données en sortie.

• Programme : série d’instructions pouvant s’exécuter en séquence, ou en


parallèle (parallélisme matériel) qui réalise (implémente) un algorithme.
Complexité des algorithmes 3

La complexité d'un algorithme est Le nombre d'opérations élémentaires


(affectations, comparaisons, opérations arithmétiques) effectuées par un
algorithme.

Objectifs des calculs de complexité :


• Prévoir le temps d'exécution d'un algorithme
• Comparer deux algorithmes réalisant le même traitement

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?

L'évaluation de la complexité peut se faire à plusieurs niveaux :


• au niveau purement algorithmique, par l'analyse et le calcul
• au niveau de l'exécution du programme expérimentalement
Complexité temporelle et spatiale 4

L'efficacité d'un algorithme peut être évalué en temps et en espace :

• Complexité en temps : évaluation du temps d'exécution de


l'algorithme.
• Complexité en espace : évaluation de l'espace mémoire occupé par
l'exécution de l'algorithme.

Règle (non officielle) de l'espace-temps informatique : pour gagner du


temps de calcul, on doit utiliser davantage d'espace mémoire.

On s'intéresse essentiellement à la complexité en temps (ce qui n'était


pas forcément le cas quand les mémoires coutaient cher)
Complexité temporelle et spatiale 5

Exemple : permutation de deux valeurs entières

// échange des valeurs de deux variables entier x, y, z;


... // initialisation de x et y
z <- x;
x <- y;
y <- z;
// échange des valeurs de deux variables entier x, y;
... // initialisation de x et y
x <- y-x;
y <- y-x;
x <- y+x;
• la première méthode utilise une variable supplémentaire et réalise 3
affectations
• la deuxième méthode n'utilise que les deux variables dont on veut
échanger les valeurs, mais réalise 3 affectations et 3 opérations
Complexité au mieux et au pire 6

Lorsque, pour une valeur donnée du paramètre de complexité, le


temps d'exécution varie selon les données d'entrée, on distingue :
• La complexité au pire : temps d'exécution maximum, dans le cas le
plus défavorable.
• La complexité au mieux : temps d'exécution minimum, dans le cas le
plus favorable (en pratique, cette complexité n'est pas très utile).
• La complexité moyenne : temps d'exécution dans un cas médian, ou
moyenne des temps d'exécution.

Le plus souvent, on utilise la complexité au pire, car on veut borner le


temps d'exécution.
Informatisation d’un problème 7

Énoncé non précis : Problème informel


Spécification
Énoncé précis : Problème formel HOMME
Analyse
Algorithme
Programmation
Langage de programmation : C,..
Compilation
Exécutable du programme MACHINE

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

Entrée : Manipulation Sortie :


La valeur du rayon La Surface calculée
Solution 10

ALGORITHME Surface d’un cercle


Déclaration :
Constante Pi=3.14
Variable Rayon : Entier /*Donnée d’entrée*/
Variable Surface : Réel /*Donnée de sortie*/

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

Les instructions de lecture et d'écriture permettent à la machine de


communiquer avec l'utilisateur
• L'écriture permet d'afficher des résultats à l'écran (ou de les écrire
dans un fichier)
En pseudo-code, on note: ECRIRE (var)
la machine affiche le contenu de la zone mémoire « var»

• La lecture permet d'entrer des donnés à partir du clavier


En pseudo-code, on note: LIRE (var)
la machine met la valeur entrée au clavier dans la zone mémoire
nommée « var»
Exemple (lecture et écriture ) 13

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

Dans un programme, les données sont manipulées via des variables :


• Une variable est une case mémoire
• Une variable est désignée par un nom (identifiant)
• Une variable a un type de donnée (implicite dans certains langages)
• Une variable contient une valeur du type et cette valeur peut varier

Cycle de vie d'une variable :


• Déclaration de la variable (nom et type)
• Affectations de valeurs à la variable
• Suppression de la variable (souvent automatique)
Déclaration des données 17

• Variable <nom de donnée> : type

• Instruction permettant de réserver de l’espace mémoire pour stocker


des données

• Dépendant du type des données : entiers, réels, caractères, etc.)

• Exemples :
Variables val, unNombre : ENTIER
nom, prénom : chaîne
Déclaration des données 18

Constante <nom de donnée> : type ← valeur ou expression

Instruction permettant de réserver de l’espace mémoire pour stocker


une constante dont la valeur ne varie pas.

Exemples :
Constante MAX : ENTIER  10
DEUXFOISMAX : ENTIER  MAX x 2
Types de variables : Entier 19

Définition :

C’est l’ensemble des nombres entiers positifs ou négatifs.

Syntaxe de la déclaration :

Variable variable1,variable2,… : ENTIER

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

• Type énuméré : un type permettant de représenter des objets


pouvant prendre leur valeur dans une liste finie et ordonnée de noms.
TYPE SEMAINE = (lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche)

• Type Structure est un objet contenant un ensemble d’objets de


types différents, appelés champs. Un type doit donc décrire l’ensemble
des champs contenus dans ses objets.
• Type pointeur: contient l’adresse mémoire d’une variable.
24

3. Structures alternatives
« SI … ALORS … SINON … FSI » 25

• Instruction conditionnelle

Syntaxe :
Si condition alors
Actions 1
[ Sinon
Actions 2] //Option Facultative
Finsi

• Si l’expression logique (la condition) prend la valeur « vrai », le


premier bloc d’instructions est exécuté;
• Si elle prend la valeur « faux », le second bloc est exécuté (s’il est
présent, sinon, rien).
Les opérateurs Arithmétiques : 26

Opérateur Signification

+ Addition

- Soustraction

* Multiplication

/ Division

% ou mod Modulo : le reste de la division de 2 valeurs


entières
div Division entière
Opérateurs et variables: 27

Variables de type entier


*, / , % , div , + et -

Variables de type Réel


*, / , + et -

Variables de type caractère ou chaîne de caractères


+ , CONCAT , Suc, Pred

 Variables de type Booléen


Les opérateurs logiques de relation : et, ou, non
Priorités des opérateurs 28

Priorité de *, / div et % par rapport à + et - :


5 + 9 * 3 = 32 et non 42
5*9+3 = 48 et non 60

Pour les opérateurs de même priorité, associativité à partir de la


gauche :
15 / 5 * 3 = 9 et non 1
5 – 2 + 4 = 7 et non –1

On peut utiliser des parenthèses pour changer l’ordre des


opérations :
15 / (5 * 3) = 1
(5 + 9 ) * 3 = 42
Les opérateurs de comparaison : 29

• Pour exprimer les conditions, on utilise les opérateurs conditionnels


suivants :

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

On peut combiner des conditions à l’aide des opérateurs logiques :

Opérateur Signification

Et Et logique

Ou Ou logique

Non Négation logique

Ou = Xor Ou exclusif
Conditions composées 31

Une condition composée est une condition formée de plusieurs


conditions simples reliées par des opérateurs logiques:
ET, OU, OU exclusif (XOR) et NON

L'évaluation d'une condition composée se fait selon des règles


présentées généralement dans les tables de vérité.

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

VRAI VRAI VRAI VRAI FAUX

VRAI FAUX FAUX VRAI FAUX

FAUX VRAI FAUX VRAI VRAI

FAUX FAUX FAUX FAUX VRAI


Exemple: 33

Expression Résultat

(4 <7) ET (9>0) Vrai

(1 < 0) OU (1<>1) Faux

Non(13.4 < 15) Faux


Exemple 34

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

Les tests peuvent avoir un degré quelconque d'imbrications :

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

S’il y a plus de deux choix possibles, l’instruction selon permet une


facilité d’écriture :
Syntaxe 1 :

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 :

SELON variable faire


Liste de valeurs 1 : <action 1>
Liste de valeurs 2 : <action 2>
...
Liste de valeurs n : <action n>
SINON : <action_sinon>
FINSELON
Sélection choix multiples « SELON-QUE » 42

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

Il s'agit du domaine constitué des caractères alphabétiques et numériques .


Une variable de ce type ne peut contenir qu'un seul et unique caractère.
Les opérations élémentaires réalisables sont les comparaisons : <, >, =, ...
Var C : CARACTERE
C  ‘A‘

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

Ensemble de définition : la table ASCII

 NB: il existe d'autre Opérations sur les caractères :


 SUCC(c) : caractère suivant dans la table ASCII ;
 PRED(c) : caractère précédent dans la table ASCII.
Fonctions utiles 47

Fonction Signification

ORD (‘A’) ou ASC(‘A’) Renvoie le code ascii de ‘A’


Chr(65) Renvoie le caractère correspondant a 65 dans la
table ASCII
MOD(A,B) récupère le reste de la division de A /B
A ← Mod(10,3) A vaut 1 car 10 = 3*3 + 1

RANDOM() Génère des nombres aléatoires

Len(chaîne) renvoie le nombre de caractères d’une chaîne


Len(chaîne)
Len("Bonjour") vaut 7

LOWER(chaîne) / UPPER(chaîne) Convertit les lettres de la chaîne en


minuscules/majuscules
CONCAT / + Concaténer deux caractère/chaine
48

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)

Ecrire(”le caractère”,c,”en maj:”,M, ”son code ASCII:”,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))

SINON ECRIRE ("pas de solutions réelles !!")


FINSI
FIN
Fonctions de chaînes de caractères 56

Longueur d'une chaîne :

longueur(chaîne) ou Len(chaîne)

Cette fonction retourne (renvoie) le nombre de caractères d'une chaîne


de caractères.

Exemple :
longueur("Bonjour")

Cette fonction retourne 7


Fonctions de chaînes de caractères (2) 57

La fonction de concaténation de chaînes :

concat(ch1, ch2)

Cette fonction retourne une chaîne formée par la concaténation de ch1


et de ch2. La chaîne résultat est formée de ch1 suivi de ch2.
Exemple :
concat("Bonjour"," ","Monsieur")

Le résultat de l’instruction est : Bonjour Monsieur.


Fonctions de chaînes de caractères (3) 58

La fonction de copie de chaînes :

Copie(ch1, position, n)

Cette fonction recopie une partie de la chaîne ch1 à partir de la


position précisée par l'expression entière position, en limitant la
recopie au nombre de caractères précisés par l'entier n.
Exemple :
Copie("Bonjour",4,4)

On copie ‘’jour’’


Fonctions de chaînes de caractères (4) 59

La fonction de comparaison de chaînes

comp(ch1, ch2))

Cette fonction compare deux chaînes de caractères en utilisant l'ordre des


caractères définis par le code ASCII.
• positive si ch1 > ch2.
• nul si les deux chaînes contiennent la même suite de caractères.

Exemple
comp("bonjour", "monsieur")

Cette fonction retourne une valeur négative.


Fonctions de chaînes de caractères (5) 60

La fonction de recherche dans une chaîne :


Il existe des fonctions de recherche dans une chaîne de caractères de
l'occurrence d'un caractère ou d'une autre chaîne de caractères.
recherche(ch1, caractère)
recherche(ch1, ch2)
Ou Trouve(ch1, ch2)
Exemple

recherche("bonjour monsieur","j")
Les deux fonctions retournent 4.
Fonctions de chaînes de caractères (6) 61

La fonction de suppression de caractères dans une chaîne :

La fonction « delete » transforme une chaîne en lui retirant n


caractères à partir de la position position.

Delete(ch1, position, n)
ou Efface(ch1, position, n)

Exemple :
Delete("Bonjour",4,4)

‘’Bonjour’’ devient ‘’Bon’’


Fonctions de chaînes de caractères (7) 62

La fonction d’insertion de caractères dans une chaîne :

« Insert » est une fonction d’insertion de la chaine ch1 dans la chaine


ch2 à la position position.
insert (ch1, Ch2 , positon)

Exemple :

insert (‘jour' , ‘Bon’ , 4)

‘Bon’ devient ‘Bonjour’


63

4. Structures itératives: les boucles


Introduction 64

Les boucles servent à répéter l'exécution d'un groupe d'instructions


un certain nombre de fois
On distingue deux sortes de boucles :
• La structure itérative complète où le nombre d’itérations est connu à
l’avance :
Les boucles pour ou avec compteur : on y répète des instructions en
faisant évoluer un compteur (variable particulière) entre une valeur
initiale et une valeur finale

• structure itérative à condition d’arrêt où le nombre d’itérations est


inconnu à l’avance :
Les boucles tant que : on y répète des instructions tant qu'une certaine
condition est réalisée

Les boucles jusqu'à : on y répète des instructions jusqu'à ce qu'une


certaine condition soit réalisée
a. Structure « POUR » 65

Elle permet de parcourir un intervalle en répétant un traitement pour


chacune des valeurs de cet intervalle.
Syntaxe :

POUR <id_variable> DE <val_inférieure> A <val_supérieure>


[ PAR PAS de <val_pas>]  facultatif
FAIRE <actions>
FINPOUR

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

Idée : répéter un ensemble d'opérations, arrêter la répétition en fonction


d'une condition.
Syntaxe :
TANTQUE <condition> Vrai
FAIRE condition instructions
<actions>
FINTANTQUE
Faux
Exemple :
I  1
TANTQUE ( i>0)
FAIRE
ECRIRE (i*i)
i  i+1
FINTANTQUE
Remarques :
La condition est une expression booléenne. C’est une condition d’entrée.
Le traitement n’est exécuté que si la condition est vérifiée donc l’exécution est
de 0 à plusieurs fois.
71

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)

Écrire (' La somme : S = ', S)


FIN
79

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.

Vous aimerez peut-être aussi