Vous êtes sur la page 1sur 21

Exercice

Quels sont les résultats de cet algorithme :


Algorithme Ex1
Variables
val, double : entier
Début
Val ← 231
Double ← Val * 2
Ecrire (Val)
Ecrire (Double)
Fin
Changer cet algorithme afin de permettre la lecture de la valeur Val .
Améliorer l’algorithme par l’ajout de messages sur l’écran
© Chafik Aloulou 40

Exercice (suite …)

Algorithme Ex1 Questions :


Variables
val, double : entier – Faire le tournage à la main
Début de cet algorithme.
Lire (Val) – Est-ce qu’il y a des erreurs
Val ← 231
Double ← Val * 2 dans cet algorithme ?
Ecrire (Val)
Ecrire ('Double') – Peut-on optimiser cet
Lire (double) algorithme ?.
Fin

© Chafik Aloulou 41

© Chafik Aloulou 1
Les structures en
algorithmique

Plan:
Les structures conditionnelles
Les structures répétitives

© Chafik Aloulou 42

La structure conditionnelle
„ On a besoin parfois de choisir entre deux ou plusieurs
traitements selon la réalisation ou non d’une certaine condition,
d’où la notion de traitement CONDITIONEL

Décision

= 10 ADMIS
OY>
MOY M
Condition

Décision

ECHEC
© Chafik Aloulou 43

© Chafik Aloulou 2
La structure conditionnelle
„ Les conditions sont basées sur les tests en utilisant les opérateurs
relationnels et sont reliées par les opérateurs logiques.
„ La syntaxe de l'instruction conditionnelle de base est la suivante :
‰ La condition peut être élémentaire ou
Si (condition) alors composée.
‰ Les Actions représentent des instructions de
action1;
différents types (affectation, lecture, écriture,
[sinon conditionnelle, …).
‰ Chacune d'elles peut être élémentaire ou
action2;] composée.
‰ Si l'action est composée de plusieurs
finsi instructions, il faut ajouter des accolades {}.
© Chafik Aloulou 44

Les structures
conditionnelles imbriquées
„ Il s'agit d'utiliser une ou Décision
plusieurs instructions
conditionnelles dans le bloc "si"
10 ADMIS
ou "sinon" d'une autre Y >=
instruction conditionnelle. O
MOY M
Cette technique d'imbrication Décision
permet d'analyser 9
minutieusement une situation M
OY Y >= Contrôle
O
compliquée d'un problème < 10 M
donné.
Décision
„ Aucune limite n'est imposée
concernant les niveaux
Échec
d'imbrication identifiés.
© Chafik Aloulou 45

© Chafik Aloulou 3
Les structures
conditionnelles imbriquées (suite …)

si (condition1) alors
si (condition2) alors

si (condition3) alors

instruction1;
instruction2;

finsi
instruction3;

sinon
si (condition4) alors
instruction4;
finsi
finsi
finsi
© Chafik Aloulou 46

Exercices
„ Écrire un algorithme, qui pour une année et un mois donné
affiche le nombre de jours de ce mois.
Exp : ( An = 2000 Mo =2 le nbre de jours est nbjour =29)

„ Écrire un algorithme intitulé TOUCHE,qui affiche selon le


cas, la nature du caractère( consonne,voyelle, chiffre ou
symbole) correspondant à une touche de saisie.

© Chafik Aloulou 47

© Chafik Aloulou 4
Les Instructions répétitives
(les boucles)
„ Écrire un algorithme qui permet d’afficher 3 fois le texte
"Je suis un étudiant à l’FSEG"
„ Modifier cet algorithme pour afficher 1000 fois le même
texte.

„ Écrire un algorithme qui permet de calculer et d’afficher la


moyenne générale de trois élèves (chaque élève à deux notes
ayant les coefficients respectives c1=1 et c2=1.5) .
„ Modifier cet algorithme afin de calculer et d’afficher la
moyenne générale de Quarante élèves.
C’est quoi le problème ???

© Chafik Aloulou 48

Les Instructions répétitives


(les boucles) (suite …)
„ Pour cela on a besoin de : Trop d’objets
– 40 case mémoire pour saisir note1, à déclarer
– 40 case mémoire pour saisir note2, Gaspillage de
– 40 case mémoire pour la moyenne générale. mémoire

„ Les mêmes actions se répètent 40 fois:


– Saisie de note1,
– Saisie de note2,
– Calcul du moyenne,
– Affichage de la moyenne.
SOLUTION : Utilisation d’une structure répétitive (itérative)
qui permet de répéter ce traitement plusieurs fois.
© Chafik Aloulou 49

© Chafik Aloulou 5
Les Instructions répétitives
(les boucles) (suite …)

„ Les instructions répétitives, appelées aussi les


boucles, permettent de répéter plusieurs fois
l'exécution d’un bloc d’instructions. Chaque
exécution, appelée aussi itération, est conditionnée
par un test.
„ Trois types de boucles sont à étudier dans ce cours :
– pour … faire
– tant que … faire
– répéter … jusqu’à

© Chafik Aloulou 50

La boucle pour … faire


„ La syntaxe de la boucle pour … faire est la suivante :
pour Compteur de ValDébut à ValFin [par pas de ValPas] faire
action;
fin faire

„ Compteur : variable qui sert à compter le nombre des itérations


„ ValDébut : une expression (constante, variable ou expression
composée) qui précise la valeur initiale du Compteur
„ ValFin : une expression (constante, variable ou expression
composée) qui précise la valeur terminale du Compteur
„ ValPas : une constante qui précise la valeur à ajouter ou à
retrancher (si négative) du Compteur lors de chaque
itération. Par défaut (en l'absence de la partie optionnelle)
la valeur du pas est égale à 1.
Il ne faut jamais modifier la valeur du Compteur à l'intérieur de la boucle.

© Chafik Aloulou 51

© Chafik Aloulou 6
La boucle pour … faire
„ L’action à répéter
peut être une
instruction unique
ou un ensemble
d’instructions.
Dans ce cas, les
instructions sont à
mettre entre
accolades {}.

© Chafik Aloulou 52

Exemple
„ Écrire un algorithme qui permet de calculer la factoriel de 5

Algorithme factorielle_5_Solution_1 Algorithme factorielle_5_Solution_2


Varaibles Varaibles
Fact, cpt : entier Fact, cpt : entier
Début Début
FactÅ 1 FactÅ 1
Pour cpt de 1 à 5 Par Pas De 1 faire Pour cpt de 5 à 1 Par Pas De -1 faire
fact Å fact*cpt fact Å fact*cpt
Fin faire Fin faire
Écrire (”la factorielle de 5 est”, fact) Écrire (”la factorielle de 5 est”, fact)
Fin Fin

Question ? : Comment calculer la factorielle de 15 ?


© Chafik Aloulou 53

© Chafik Aloulou 7
La boucle tant que … faire
„ Le nombre d’itérations de cette boucle n’est pas connu d'avance.
Le traitement de la boucle ne s’arrête que si la condition n’est
plus vérifiée (ou satisfaite).
„ La syntaxe de la boucle tant que … faire est la suivante :
tant que (condition) faire
action;
fin faire
„ La condition de la boucle peut être composée et l’action à
répéter peut être une instruction unique ou un ensemble
d’instructions. Dans ce cas, les instructions sont à mettre entre
accolades {}.
© Chafik Aloulou 54

La boucle tant que … faire


Suite …

„ Il doit exister une ou plusieurs instructions à l'intérieur de la


boucle qui permettent de modifier le résultat de l'évaluation
de la condition afin de pouvoir arrêter l'exécution de la
boucle.
„ Le fonctionnement de la boucle tant que … faire est le suivant
: Tester
Tester la
la
condition
condition

Si Si non vérifiée
vérifiée

Exécuter
Exécuter les
les Terminer
Terminer la
la
instructions
instructions boucle
boucle
boucle
boucle
© Chafik Aloulou 55

© Chafik Aloulou 8
La boucle tant que … faire
Suite …

„ Le principe est simple : le programme arrive sur la ligne du


Tant Que. Il examine alors la valeur du booléen (qui, peut
être une variable booléenne ou, plus fréquemment, une
condition).
„ Si cette valeur est VRAI, le programme exécute les
instructions qui suivent, jusqu’à ce qu’il rencontre la ligne
Fin faire. Il retourne ensuite sur la ligne du Tant Que,
procède au même examen, et ainsi de suite. La boucle ne
s’arrête que lorsque le booléen prend la valeur FAUX.

© Chafik Aloulou 56

Exemple
„ Écrire un algorithme qui demande à l’utilisateur un nombre compris
entre 1 et 3 jusqu’à ce que la réponse convienne.

Algorithme Lire_Nombre
Variables
N : Entier
Début
N←0
Écrire ("Entrez un nombre entre 1 et 3")
TantQue ((N < 1) ou (N > 3)) faire
Lire (N)
Si ((N < 1) ou (N > 3)) Alors
Écrire ("Saisie erronée. Recommencez")
FinSi
Fin faire
Fin

© Chafik Aloulou 57

© Chafik Aloulou 9
Comment transformer une boucle pour …
faire en une boucle tant que … faire ?

Compteur Å ValDébut;
tant que (Compteur ≤ ValFin) faire
pour Compteur de ValDébut à ValFin {
[par pas de ValPas] faire
action;
action;
Compteur Å Compteur + ValPas;
fin faire }
fin faire

Écrire un algorithme qui affiche la somme des 100 premiers entiers


strictement positifs :
- Avec la boucle Pour … faire
- Avec la boucle Tant que … faire
© Chafik Aloulou 58

Exercices
„ Écrire un algorithme qui demande un nombre compris entre 10 et 20,
jusqu’à ce que la réponse convienne. En cas de réponse supérieure à 20,
on fera apparaître un message : « Plus petit ! », et inversement, « Plus
grand ! » si le nombre est inférieur à 10.
„ Écrire un algorithme qui demande un nombre de départ, et qui ensuite
écrit la table de multiplication de ce nombre, présentée comme suit (cas
où l'utilisateur entre le nombre 7) :
Table de 7 :
7x1=7
7 x 2 = 14
7 x 3 = 21

7 x 10 = 70
„ Écrire un algorithme qui demande un nombre de départ, et qui calcule
la somme des entiers jusqu’à ce nombre. Par exemple, si l’on entre 5, le
programme doit calculer : 1 + 2 + 3 + 4 + 5 = 15
NB : on souhaite afficher uniquement le résultat, pas le détail de calcul.
© Chafik Aloulou 59

© Chafik Aloulou 10
La boucle répéter … jusqu’à

„ La boucle répéter … jusqu’à est utilisée lorsqu’on a besoin


d'avancer l’exécution des instructions de la boucle par rapport à
sa condition. L’exemple type de l’utilisation de cette boucle est le
contrôle de saisie la valeur d'une variable.
„ La syntaxe de la boucle répéter … jusqu’à est la suivante :
répéter
action;
jusqu’à (condition);
„ La condition de la boucle peut être composée et l'action à répéter
peut être une instruction unique ou un ensemble d'instructions.
© Chafik Aloulou 60

La boucle répéter … jusqu’à


Suite …
Le fonctionnement de la boucle
Il doit exister une ou répéter … jusqu’à est le suivant
plusieurs instructions à
l'intérieur de la boucle Exécuter
Exécuter les
les
qui permettent de instructions
instructions
modifier le résultat de
l'évaluation de la Si non
condition afin de vérifiée Tester
Tester la
la
pouvoir arrêter condition
condition
l'exécution de la boucle.
Si vérifiée

Terminer
Terminer la
la
boucle
boucle
Attention aux boucles infinies
© Chafik Aloulou 61

© Chafik Aloulou 11
Exemple
„ Écrire un algorithme qui permet de lire la moyenne d’algoritmique (M_Algo) et la
moyenne des mathématiques (M_Math) et de calculer la moyenne générale
(M_generale). Les lectures doivent être contrôlées.
Algorithme moyenne
‰ Peut-on remplacer les
variables
boucles Répéter par des
M_Algo, M_Math, M_generale : Réel
boucles tant que ?
Début
Répeter ‰ Peut-on remplacer les
ecrire ("donner la moyenne d’algorithmique") boucles Répéter par des
lire (M_Algo) boucles Pour ? Expliquer
Jusqu’à ((M_Algo>=0) ET (M_Algo<=20))
‰ Si la moyenne générale est
Répeter
fonction de 20 notes
ecrire ("donner la moyenne des mathématiques")
différentes. Comment doit-
lire (M_Math)
on changer notre
Jusqu’à ((M_Math>=0) ET (M_Math<=20))
… algorithme ?
Fin
© Chafik Aloulou 62

Différences entre les 3


types de boucles
„ la boucle pour … fin faire est destinée au cas particulier où
l’on connaît par avance le nombre de fois où l’on veut répéter
certains traitements
„ La boucle Repeter …Jusqu’à est semblable à la boucle Tant
que...Fin faire, à la différence qu'elle teste la valeur de
l’expression booléenne après l'exécution de la boucle et non
avant.
„ La boucle Repeter …Jusqu’à est toujours exécutée au moins
une fois, tandis que si l’expression booléenne est initialement à
FAUX, la boucle Tant que...Fin faire ne s’exécute pas du
tout.
„ L'autre particularité de la boucle Repeter...Jusqu’à est qu’elle
se poursuit jusqu'à ce que l'expression booléenne soit à VRAI.
© Chafik Aloulou 63

© Chafik Aloulou 12
Les Tableaux

Plan:
Utilité des tableaux
Notation et utilisation des tableaux
Tableaux Multidimensionnels
Tri de tableaux

© Chafik Aloulou 64

Aperçu général sur les


tableaux
Problématique :
„ On se propose de représenter, dans la mémoire centrale,
plusieurs données de même type et ayant une sémantique
commune (exemples : les notes d'un étudiant, les moyennes
de plusieurs étudiants, …).
„ Pour ce faire, on peut prévoir une variable pour chaque
donnée. Cette façon de faire présente plusieurs inconvénients :
– Au niveau de la description des données :
„ Difficulté de choisir des noms significatifs de variables
„ Augmentation du nombre de données
– Au niveau du traitement :
„ Difficulté de distinguer entre les variables
„ Impossibilité de recourir aux instructions répétitives

© Chafik Aloulou 65

© Chafik Aloulou 13
Aperçu général sur les
tableaux
Le besoin (solution attendue) :
„ Pouvoir regrouper toutes les données ayant une sémantique
commune dans une seule représentation (avec une
déclaration unique)
„ Distinguer entre les données
„ Faciliter le traitement

Utiliser la solution des tableaux

© Chafik Aloulou 66

Définition d’un tableau


„ Un tableau est une structure qui permet de représenter
plusieurs données de même type dans des cases successives, à
raison d'une donnée par case.
„ Un tableau possède un nom.
„ Chaque donnée du tableau est identifiée par le nom du tableau
qui la contient et son indice dans ce tableau (la position de la
case qui la contient).
„ Possibilité de parcourir un tableau avec des instructions
répétitives

Tableau de 7 cases 6 12 16 3 223 12 34

Case 1 Case2 Case i Case 7

© Chafik Aloulou 67

© Chafik Aloulou 14
Définition d’un tableau
Suite …

„ Les tableaux peuvent contenant des variables de tous types :


tableaux de numériques, tableaux de caractères, tableaux de
booléens, tableaux de tout ce qui existe dans un langage donné
comme type de variables.
„ Par contre, dans quelques langages de programmation, on ne
peut pas faire un mixage de types différents de valeurs au sein
d’un même tableau.
„ Dans un tableau, la valeur d’un indice doit toujours :
– commencer de 1 (Attention : dans des langages de programmation, le
premier élément d’un tableau peut porter l’indice 0). Donc attention, si
on commence de 0, TAB(6) est le septième élément du tableau TAB !
– être un nombre entier Quel que soit le langage, l’élément TAB(3,1416)
n’existe jamais.
– être inférieure ou égale au nombre d’éléments du tableau (moins 1,
si l’on commence la numérotation à zéro). Sinon on aura une erreur.
© Chafik Aloulou 68

Traitements possibles
dans un Tableau
Avec ce type de structure on peut :
„ Créer des tableaux
„ Ranger des valeurs dans un tableau
„ Récupérer et consulter des valeurs rangées dans un tableau
„ Rechercher si une valeur est dans un tableau
„ Mettre à jour des valeurs dans un tableau
„ Modifier la façon dont les valeurs sont rangées dans un tableau
„ Effectuer des opérations entre tableaux : comparaison, etc.

© Chafik Aloulou 69

© Chafik Aloulou 15
Déclaration d’un tableau
„ Pour déclarer un tableau de 10 cases et dont le nom est TAB
et dont le contenu est de type entier, il suffit de mettre dans
la partie de déclaration des variables :
Variables
TAB : Tableau(10) d’entier
Ou TAB(10) : entier
„ Avec cette déclaration, nous avons créer un tableau TAB de
10 entiers.
„ Attention : Avec cette déclaration le tableau est non encore
initialisé
TAB ? ? ? ? ? ? ? ? ? ?
© Chafik Aloulou 70

Accès à un tableau
„ Accès en lecture :
Écrire(TAB(4))

Le contenu du tableau à l’indice 4 est affiché à l’écran


„ Accès en écriture
TAB(3) Å 96
La valeur 96 est placée dans le tableau à l’indice 3
lire(TAB(3))
La valeur entrée par l’utilisateur est enregistrée dans le
tableau à l’indice 3

© Chafik Aloulou 71

© Chafik Aloulou 16
Exercices
„ Écrire un algorithme qui déclare et remplisse un tableau de 7
valeurs numériques en les mettant toutes à zéro.

„ Écrire un algorithme qui déclare et remplisse un tableau


contenant les six voyelles de l’alphabet latin.

„ Écrire un algorithme qui déclare un tableau de 9 notes, dont


on fait ensuite saisir les valeurs par l’utilisateur.

„ Écrire un algorithme qui affiche les 9 notes saisies par


l’utilisateur

© Chafik Aloulou 72

Solution
Algorithme Rem_tableau
Variables
tab : Tableau (7) d’entier
i : Entier
Début
Pour i de 1 à 7 faire
tab(i) ← 0
fin faire
Fin

© Chafik Aloulou 73

© Chafik Aloulou 17
Solution
Algorithme Rem_tableau_voy
Variables
T : Tableau (6) d’entier
Début
T(1) ← "a"
T(2) ← "e"
T(3) ← "i"
T(4) ← "o"
T(5) ← "u"
T(6) ← "y"
Fin

© Chafik Aloulou 74

Exercice
„ Écrire un algorithme constituant un tableau, à partir de deux
tableaux de même longueur préalablement saisis. Le nouveau
tableau sera la somme des éléments des deux tableaux de départ.
Tableau 1 : 4 8 7 9 1 5 4 6

Tableau 2 :
7 6 5 2 1 3 7 4

Tableau à constituer : 11 14 12 11 2 8 11 10

„ Afficher l’élément le plus grand du tableau résultat ainsi que son


indice.

© Chafik Aloulou 75

© Chafik Aloulou 18
Exercices
Suite …

„ Écrire un algorithme constituant un tableau, à partir de deux


tableaux de même longueur préalablement saisis. Le nouveau
tableau sera la somme des éléments des deux tableaux de
départ si la somme est paire, sinon le maximum des deux
éléments.
„ Utiliser un autre tableau pour faire le tri du tableau construit
„ Écrire un algorithme qui permet de saisir pour un étudiant,
ses N notes dans un tableau et les coefficients
correspondants dans un autre tableau. calculer la moyenne de
l'étudiant dans un troisième tableau.

© Chafik Aloulou 76

Les tableaux à deux


dimensions
„ Considérons un tableau NOTES à une dimension pour
mémoriser les notes de 20étudiants d'une classe dans un module
(algorithme par exemple):
„ Pour mémoriser les notes des étudiants dans les 5 modules du
semestre, nous pouvons :
rassembler ces tableaux uni-
Définir 5 tableaux :
dimensionnels dans un tableau
NOTE_Algo (20) : entier
NOTES à deux dimensions :
NOTE_Math (20) : entier
NOTE_Gestion (20) : entier NOTES(5,20) : entier
NOTE_Compta (20) : entier
NOTE_Sta (20) : entier
Problème de recourir aux
instructions répétitives
© Chafik Aloulou 77

© Chafik Aloulou 19
Les tableaux à deux
dimensions

L lignes

C colonnes
„ On appelle L le nombre de lignes du tableau et C le nombre de
colonnes du tableau. L et C sont alors les deux dimensions du
tableau. Un tableau à deux dimensions contient donc L*C
composantes (variables).
„ On dit qu'un tableau à deux dimensions est carré, si L est égal à C.
„ En faisant le rapprochement avec les mathématiques, on peut dire que
"A est une matrice de dimensions L et C".
„ Dans notre exemple, Dans une ligne nous retrouvons les notes de tous
les étudiants dans un module. Dans une colonne, nous retrouvons
toutes les notes d'un étudiant.
© Chafik Aloulou 78

Exercice
(Les tableaux à deux dimensions)

„ Écrire un algorithme qui permet de lire à partir du clavier et


de remplir le tableau des notes des 20 étudiants dans les 5
modules.

„ Écrire un algorithme qui permet de calculer la moyenne de la


classe par module, la moyenne de chaque étudiant dans les 5
modules ainsi que la moyenne générale de la classe.

„ Écrire un algorithme qui permet d’afficher l’indice de ou des


étudiants qui ont la meilleure note, ainsi que l’indice du ou
des modules correspondants.
© Chafik Aloulou 79

© Chafik Aloulou 20
Solution
Algorithme Rem_tableau
Variables
T (5,20):entier
i,j : entier
Début
Pour i de 1 à 5 faire
Écrire ("donner les notes du module",i)
Pour j de 1 à 20 faire
Écrire ("donner la note de l’étudiant",j, "dans le module",i)
lire(T(i,j))
fin faire
fin faire
Fin

© Chafik Aloulou 80

© Chafik Aloulou 21