Info1 Cours 4
Info1 Cours 4
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
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
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
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
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
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
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
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.
ii+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
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