0% ont trouvé ce document utile (0 vote)
37 vues10 pages

Info1 Cours 4

Le document présente des concepts fondamentaux en algorithmique, notamment les structures de contrôle telles que les instructions alternatives simples et complexes, ainsi que les structures itératives. Il illustre ces concepts à travers des algorithmes pratiques, comme ceux pour la division, la valeur absolue, et le calcul de la mention d'un étudiant. Enfin, il aborde les structures de choix multiples et les boucles, en fournissant des exemples d'algorithmes pour des problèmes spécifiques.

Transféré par

ouaddi.fatiha3863.ensa
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
37 vues10 pages

Info1 Cours 4

Le document présente des concepts fondamentaux en algorithmique, notamment les structures de contrôle telles que les instructions alternatives simples et complexes, ainsi que les structures itératives. Il illustre ces concepts à travers des algorithmes pratiques, comme ceux pour la division, la valeur absolue, et le calcul de la mention d'un étudiant. Enfin, il aborde les structures de choix multiples et les boucles, en fournissant des exemples d'algorithmes pour des problèmes spécifiques.

Transféré par

ouaddi.fatiha3863.ensa
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

10/12/2018

Université Abdelmalek Essaâdi


Ecole nationale des sciences appliquées d’Al Hoceima
(ENSAH)

Algorithmique Structures de contrôle

Préparé et présenté par


Mr. Ouazzani Chahdi

Année universitaire: 2018/2019


1 10-Dec-18 2 10-Dec-18

Discussion du problème 1 :
1-Les structures alternatives  La première solution qu’on peut proposer est la suivante :
 En algorithmique, il y a deux types d’instructions alternatives qui Algorithme Division
sont : Variable a, b, D : Réel
 L’instruction alternative simple. Début
 L’instruction alternative complexe.
Ecrire("Donnez les valeurs de a et b : ")
 Pour mieux comprendre les rôles de ces deux instructions, nous Lire(a, b)
allons étudier deux problèmes : D  a/b
Problème 1 : On veut élaborer un algorithme Division qui reçoit Ecrire("Le résultat de la division est :", D)
deux valeurs réelles et ensuite calcule et affiche le résultat de leur Fin
division.  Cet algorithme n’est pas complet, car il n’envisage pas le cas où
Problème 2 : On veut élaborer un algorithme Valeur_Absolue qui l’utilisateur saisit une valeur nulle pour b.
reçoit une valeur réelle x et ensuite affiche sa valeur absolue (sans  Dans ce cas, l’algorithme doit être déjà préparé pour recevoir une
utiliser la fonction Abs()). valeur nulle pour b, afin de faire intervenir le traitement
correspondant.
3 10-Dec-18 4 10-Dec-18

Pr. OUAZZANI CHAHDI 1


10/12/2018

 Alors, pour calculer a/b l’algorithme Division doit tester la valeur Discussion du problème 2 :
de b :  Dans cet exemple, on a un seul cas à envisager, c’est le cas où
 Si la valeur de b est non nulle, alors l’algorithme calcule a/b et l’utilisateur introduit une valeur négative pour x.
affiche le résultat.
 Si tel est le cas alors on doit multiplier la valeur introduite par -1.
 Si la valeur de b est nulle, on doit afficher un message d’erreur.
 Selon ce test, on a un seul traitement possible. Il sera réalisé si et
 Selon ce test on a deux traitements possibles de tel sorte que la
seulement si x a une valeur négative.
réalisation de l’un exclue la réalisation de l’autre :
a, b

Non 𝑥<0
𝑏≠0 Oui x Résultat
?
Message ?
d’erreur Résultat

 Un tel test est effectué en utilisant une structure alternative


complexe.  Un tel test est effectué en utilisant une structure alternative
simple.
5 10-Dec-18 6 10-Dec-18

1.1- Structure alternative simple  L’algorithme Valeur_Absolue:

Syntaxe : Algorithme Valeur_Absolue


Si Expression_Logique Alors Variable x: Réel
Instruction Début
FinSi Ecrire("Donnez une valeur :")
Ou Lire(x)
Si Expression_Logique Alors Si x < 0 Alors Si x est négative, alors
Instruction1 x  -x on change son signe,
Instruction2 Bloc d’instructions FinSi sinon on ne fait rien
.. (Ensemble d’instructions)
Ecrire("La valeur absolue est : ", x)
InstructionN
Fin
FinSi
Si Expression_Logique renvoie une valeur VRAI alors le bloc
d’instructions sera exécuté, sinon il sera ignoré.
7 10-Dec-18 8 10-Dec-18

Pr. OUAZZANI CHAHDI 2


10/12/2018

1.2- Structure alternative complexe  L’algorithme Division


Syntaxe : Algorithme Division
Si Expression_Logique Alors Variable a, b, D : Réel
Instruction1 Début
Sinon Ecrire("Donnez la valeur de a :")
Instruction2 Lire(a)
FinSi
Ecrire("Donnez la valeur de b :")
Ou Lire(b)
Si Expression_Logique Alors
Bloc_Instructions_1
Si b = 0 Alors
Sinon Ecrire("Division par 0 impossible")
Bloc_Instructions_2 Sinon
FinSi D  a/b
Si Expression_Logique est VRAI alors Bloc_Instructions1 sera Ecrire("Le résultat de la division est:",D)
exécuté et le Bloc_Instructions2 sera ignoré, sinon le FinSi
Bloc_Instructions1 sera ignoré et le Bloc_Instructions2 sera Fin
exécuté. 10-Dec-18 10-Dec-18
9 10

1.3- Imbrication des structures alternatives  Ecrivons l’algorithme Equation


Problème 1 : On veut élaborer un algorithme Equation qui résout Algorithme Equation
une équation de type 𝒂𝒙 + 𝒃 = 𝟎 . Variable a, b, x : Réel
Début
 La solution de cette équation est –b/a, mais elle est valable que si a
Ecrire("Donnez respectivement les valeurs de a
est différent de 0. et b : ")
 Maintenant si la valeur de a est nulle, alors l’équation est ramené à Lire(a, b)
l’égalité 𝒃 = 𝟎, dans ce cas la solution dépendra de b : Si a = 0 Alors
 Si la valeur de b est nulle, alors l’ensemble de solution est ℝ Si b = 0 Alors
 Sinon la solution est l’ensemble vide. Ecrire("La solution est l’ensemble R")
Non La solution est –b/a Un tel test Sinon
est Ecrire("La solution est l’ensemble vide")
a 𝑎=0 La solution est effectué en FinSi
b ? Non l’ensemble vide utilisant Sinon
Oui 𝑏=0 une x  -b/a
? structure Ecrire("La solution est : ", x)
Oui La solution est alternative FinSi
l’ensemble ℝ imbriquée
10-Dec-18
Fin 10-Dec-18
11 12

Pr. OUAZZANI CHAHDI 3


10/12/2018

Algorithme Mention
Problème 2 : On veut écrire un algorithme Mention qui permet de Variable Note : Réel
savoir la mention d’un étudiant à partir de sa note en suivant le Début
Ecrire("Donnez la note de l’étudiant :")
schéma ci-dessous : Lire(Note)
 Note < 10 : mauvais Si Note < 10 Alors
Ecrire("Mauvais")
 10 <= Note < 12 : passable
Sinon
 12 <= Note < 14 : assez bien Si Note < 12 Alors
 14 <= Note < 16 : bien Ecrire("Passable")
Sinon
 16 <= Note <= 20 : très bien
Si Note < 14 Alors
Ecrire("Assez bien")
Sinon
 En utilisant la notion des instructions imbriquées, on a abouti à
Si Note < 16 Alors
l’algorithme suivant : Ecrire("bien")
Sinon
Ecrire("Très bien")
FinSi
FinSi
FinSi
FinSi
13 10-Dec-18 14 10-Dec-18
Fin

 La syntaxe utilisée dans cet algorithme est un peu longue et peu  Ainsi l’algorithme Mention devient :
lisible surtout si on ajoute encore la mention Excellent Algorithme Mention
(18<Note<=20). Variable Note : Réel
 Alors le pseudo-code algorithmique admet une simplification Début
supplémentaire avec la syntaxe suivante : Ecrire("Donnez la note de l’étudiant :")
Lire(Note)
Si Expression_Logique1 Alors Si Note < 10 Alors
Bloc_Instructions1 Ecrire("Mauvais")
Sinon Si Expression_Logique2 Alors Sinon Si Note < 12 Alors
Bloc_Instructions2 Ecrire("Passable")
… Sinon Si Note < 14 Alors
… Ecrire("Assez bien")
Sinon Si Expression_LogiqueN Alors Sinon Si Note < 16 Alors
Bloc_InstructionsN Ecrire("Bien")
Sinon
[Sinon Bloc_Instructions_Final] Ecrire("Très bien")
FinSi FinSi
10-Dec-18
Fin 10-Dec-18
15 16

Pr. OUAZZANI CHAHDI 4


10/12/2018

Syntaxe:
2- Structure de choix multiple Cas (Expression) Vaut
Val1 : Bloc_Instructions1
Problème : On veut élaborer un algorithme Arithmétiques qui réalise au Val2 : Bloc_Instructions2
choix de l’utilisateur l’addition, la soustraction, la multiplication ou la ...
division de deux valeurs réelles x et y saisies au clavier. ValN : Bloc_InstructionsN
 Pour que l’algorithme soit capable de savoir l’opération arithmétique [Autre : Bloc_Instructions]
qu’il doit faire, l’utilisateur doit lui donner cette information. FinCas
 Selon cette information, l’algorithme va sélectionner l’opération
Où Vali (i=1,2,….,N) est une valeur unique, une liste de valeurs
correspondante.
séparées par des virgules ou un intervalle de valeurs.
x Non Non  Si Expression vaut une valeur Vali alors le bloc d’instruction i qui
op = + Non op = - op = * op = /
y ? ? ? ? sera exécuté et tous les autres blocs seront ignorés.
op
Oui Oui Oui Oui  Si Expression n’a aucune valeur parmi Val1, Val2 ,…..,Valn, c’est
x+y x-y x*y x/y le bloc d’instruction après la rubrique Autre qui sera exécuté et les
autres blocs seront ignorés.
 Un tel test est effectué en utilisant une structure de choix multiple.
17 10-Dec-18 18 10-Dec-18

 Ecrivons l’algorithme Arithmétique : Cas op Vaut


‘+’ : résultat  x + y
Algorithme Arithmétique
Ecrire("Addition = ", résultat)
Variable x, y, résultat : Réel ‘-’ : résultat  x – y
op: Caractère Ecrire("Soustraction= ", résultat)
Début ‘*’ : résultat  x * y
Ecrire("+ : Addition") Ecrire("Multiplication = ", résultat)
Ecrire("- : Soustraction") ‘/’ : Si y <> 0 Alors
Ecrire("* : Multiplication") résultat  x/y
Ecrire("Division = ", résultat)
Ecrire("/ : Division")
Sinon
Ecrire("Donner deux valeurs :") Ecrire("La division par 0 est
Lire(x, y) impossible")
Ecrire("Donner votre choix +, -, * ou / :") Finsi
Lire(op) Autre : Ecrire("Choix incorrecte")
FinCas
19 10-Dec-18 20
Fin 10-Dec-18

Pr. OUAZZANI CHAHDI 5


10/12/2018

3.1- La boucle TantQue … Faire


3-Les structures itératives
Problème : on veut élaborer un algorithme Somme_100 qui calcule
 En algorithmique une structure itérative est tout simplement une la somme d’une série de nombres entiers saisies au clavier jusqu’à ce
boucle, c’est-à-dire une répétition d'instructions. que cette somme dépasse la valeur 100.
 On l’utilise souvent quand on doit exercer plusieurs fois le même  L’exécution de cet algorithme déroulera comme suit :
traitement sur un même objet. 1. On initialise une variable Somme par 0. cette variable va contenir
le résultat de la somme.
 Mais son réel intérêt réside dans le fait que l’on peut modifier, à
2. On s’assure que la valeur de Somme est inférieur ou égale à 100.
chaque répétition, les objets sur lesquels s’exerce l’action répétée. si ce n’est pas le cas on arrête, sinon :
 Alors dans une boucle on a : a. On invite l’utilisateur à saisir la première valeur.

 Une instruction ou un ensemble d’instructions à répéter. b. On fait Somme  Somme + valeur


c. On recommence à l’étape 2.
 Cette répétition doit avoir un arrêt.
3. Après l’arrêt de la boucle on affiche la valeur de Somme.
 L’arrêt de cette répétition dépend d’une condition.
 Ces étapes peuvent être schématisé en utilisant l’organigramme
 Cette condition est appelé condition d’arrêt. suivant :
21 10-Dec-18 22 10-Dec-18

Somme  0
Syntaxe :
TantQue (Expression_Logique) Faire
Instruction ou Bloc_Instructions
Non 𝑆𝑜𝑚𝑚𝑒 ≤ 100 Oui FinTantQue
?
Principe :
1. L’algorithme arrive sur la ligne du TantQue. Il examine alors
Sortie de la boucle Lire(valeur)
la valeur de Expression_Logique .
2. Si cette valeur est VRAI, l’algorithme exécute les instructions
qui suivent, jusqu’à ce qu’il rencontre la ligne FinTantQue.
Afficher le résultat Somme  Somme + valeur
3. Il retourne ensuite sur la ligne du TantQue,
4. Il procède au même examen, et ainsi de suite.
5. On ne s’arrête que lorsque l’ Expression_Logique prend la
Simulation valeur FAUX.
23 10-Dec-18 24 10-Dec-18

Pr. OUAZZANI CHAHDI 6


10/12/2018

Ecrivons l’algorithme Somme_100 3.2- La boucle Répéter … Jusqu’à


Algorithme Somme_100 Problème : On veut élaborer un algorithme Nombre_Mois qui
Variable Somme, valeur : Entier demande à l’utilisateur son âge en nombre d’années et lui affiche le
nombre de mois. Cet algorithme doit obliger l’utilisateur à saisir une
Début valeur valide(supérieur strictement à 0).
Somme  0
 L’exécution de cet algorithme déroulera comme suit :
TantQue (Somme <= 100) Faire
1. On invite l’utilisateur à saisir un nombre d’années
Ecrire("Donnez une valeur entière : ")
Lire(valeur) 2. On s’assure que le nombre saisi est strictement positif. si ce
n’est pas le cas on recommence à l’étape 1, sinon on arrête la
Somme  Somme + valeur
boucle.
FinTantQue
3. Après l’arrêt de la boucle, on calcule et on affiche le résultat.
Ecrire("La somme est ", Somme)
 Ces étapes peuvent être schématisé en utilisant l’organigramme
Fin
suivant :

25 10-Dec-18 26 10-Dec-18

Lire(nombre) Syntaxe :
Répéter
Instruction ou bloc_instructions
Non nombre ≤ 0 Oui Jusqu'à (Expression_Logique)
? Principe :
Toutes les instructions écrites entre Répéter et jusqu’à(…) sont
Sortir de la boucle
exécutées au moins une fois et leur exécution sera répétée jusqu’à
ce que la valeur de Expression_Logique soit VRAI.
Calcul du nombre de Remarque :
mois
Certains langages ne proposent pas de structure
Répéter…Jusqu’à, par contre il peuvent présenter une structure
Affiche le résultat Simulation Répéter…TantQue. Il suffit uniquement d’inverser l’expression
Expression_Logique.
27 10-Dec-18 28 10-Dec-18

Pr. OUAZZANI CHAHDI 7


10/12/2018

Ecrivons l’algorithme Nombre_Mois 3.3- La boucle Pour… Jusqu’à …


Algorithme Nombre_Mois Problème : On veut élaborer un algorithme Somme_N qui calcule la
1 1 1
somme 1 + + + ⋯ + , N étant un entier positif saisi par
2 3 𝑁
Variable nbr_années, nbr_mois: Entier l’utilisateur.
Début  L’exécution de cet algorithme déroulera comme suit :
Répéter 1. On initialise une variable Somme à 0. cette variable va contenir le
résultat de la somme.
Ecrire("Donnez un nombre d’année valide :") 2. On invite l’utilisateur à saisir un nombre positif N.
3. On initialise un compteur à 1.
Lire(nbr_annees)
4. On vérifie si la valeur de celui-ci ne dépasse pas la valeur de N. si
Jusqu’à(nbr_années > 0) c’est le cas, on arrête, sinon :
a. On fait Somme  Somme +1/compteur
Nbr_mois = nbr_années*12
b. On fait compteur  compteur + 1
Ecrire("Le nombre de mois est ", nbr_mois) c. On passe à l’étape 4.
5. Après l’arrêt de la boucle on affiche la valeur de Somme.
Fin
 Ces étapes peuvent être schématisé par l’organigramme suivant :
29 10-Dec-18 30 10-Dec-18

Somme  0 Syntaxe :
Pour i Allant De Début jusqu’à Fin [PAS p] Faire
Lire(N) Instruction ou Bloc_Instructions
FinPour
compteur  1 Principe :
1. On initialise un compteur i par une valeur initiale Début.
2. On teste si la valeur de ce compteur n’a pas dépassé la valeur Fin. Si
Non c𝑜𝑚𝑝𝑡𝑒𝑢𝑟 ≤ 𝑁 Oui
c’est le cas on sort de la boucle, sinon :
?
3. On exécute le bloc d’instructions.
4. On incrémente la valeur de i:
Sortir de la boucle Somme  Somme + 1/compteur • Si [Pas p] est absent, on incrémente la valeur de i par 1(i  i + 1),
sinon :
Affiche le résultat compteur  compteur + 1 • i  i + p : où p représente le pas d’incrémentation
5. On recommence à l’étape 2
Simulation 10-Dec-18 10-Dec-18
31 32

Pr. OUAZZANI CHAHDI 8


10/12/2018

Ecrivons l’algorithme Somme_N 3.3- Critères de choix d’une boucle selon le domaine
Algorithme Somme_N d’utilisation
Variable N, compteur: Entier 3.3.1-La boucle TantQue…Faire
Somme : Réel  On l’utilise quand on ne sait pas à l'avance le nombre de fois que
Début l'on doit répéter le même traitement.
 On l'utilise surtout pour la lecture d'un fichier, la recherche d'un
Somme  0
élément dans un tableau, les calculs scientifiques.
Ecrire(" Donner une valeur entière positive
3.3.2-La boucle Répéter…Jusqu’à
:")
 On l’utilise quand on ne sait pas à l'avance le nombre de fois que
Lire(N)
l'on doit répéter le même traitement.
Pour compteur allant de 1 jusqu’à N Faire
 Avec cette boucle on effectue au moins une fois l'instruction à répéter.
Somme  Somme + 1/compteur 3.3.3-La boucle Pour…Jusqu’à
FinPour
 On l’utilise quand on sait à l'avance le nombre de fois que l'on doit
Ecrire("La somme est ", Somme) répéter le même traitement.
Fin  C’est le cas des valeurs consécutives entre deux bornes données.
33 10-Dec-18 34 10-Dec-18

réponse  oui
3.3- Imbrication des structures itératives
 Considérons le problème suivant :
 On veut élaborer un algorithme Plusieurs_Sommes qui permet de Non réponse = oui Oui
Lire(N)
calculer la somme d’une série de nombres saisis au clavier. ?
 On veut aussi que cet algorithme offre à l’utilisateur la possibilité de
répéter ce processus autant qu’il veut. Fin
Non N≤0 Oui
Somme 0, i 0
 Et enfin, on doit s’assurer que l’utilisateur saisi une valeur strictement ?
positive pour la taille de la série en question.
 Alors cet algorithme doit :
Non 𝑖<𝑁 Oui
Lire(val)
 Lire la taille N de la série.
?
 Vérifier que N > 0, sinon on oblige l’utilisateur à saisir une valeur
Ecrire(somme) Somme  somme + val
valide.
 Lire les nombres de cette série et en même temps calculer la somme.
ii+1
 Afficher le résultat de la somme.
 Proposer à l’utilisateur le choix de répéter le processus ou l’arrêter. Lire(réponse)
 L’algorithme va décider selon la réponse de l’utilisateur. Simulation
35 10-Dec-18 36 10-Dec-18

Pr. OUAZZANI CHAHDI 9


10/12/2018

Algorithme Plusieurs_Sommes
Variable somme, x: Réel
N, i: Entier
réponse : Caractère
Début
réponse  ‘O’
somme  0
TantQque(réponse = ‘O’ Ou réponse = ‘o’)
Répéter
Ecrire("Donnez N :")
Lire(N)
Jusqu’à(N > 0)
Pour i allant de 0 Jusqu’à N-1 Faire
Ecrire("Donnez la valeur ", i+1)
Lire(x)
somme  somme + x
FinPour
Ecrire("La somme est : ", somme)
Ecrire("Voulez vous répéter le calcul (O/N): ")
Lire(réponse)
FinTantQque
37 Fin 10-Dec-18

Pr. OUAZZANI CHAHDI 10

Vous aimerez peut-être aussi