Lycée   >   Terminale   >   Sciences de l’ingénieur   >   L'algorithmique : structures conditionnelles, boucles et procédures

L'algorithmique : structures conditionnelles, boucles et procédures

  • Fiche de cours
  • Quiz
  • Profs en ligne
Objectifs
  • Savoir utiliser les conditions en pseudo-code.
  • Savoir utiliser les structures conditionnelles en pseudo-code.
  • Savoir utiliser les boucles en pseudo-code.
  • Savoir utiliser les procédures en pseudo-code.
Points clés
  • Une condition est une expression qui relie deux valeurs et/ou variables à l'aide d'un opérateur de comparaison. On peut aussi écrire des conditions composées.
  • Une instruction conditionnelle est une instruction qui n'est exécutée que si une condition est validée. Il est possible d'ajouter des instructions alternatives et des instructions alternatives conditionnelles à une structure conditionnelle.
  • Une boucle permet de répéter plusieurs fois des instructions. Il existe des boucles :
    • avec condition de bouclage, ou boucle « tant que » ;
    • à itérations définies, ou boucle « pour ».
  • Une procédure est un sous-algorithme. Elle est appelée depuis l’algorithme principal.
Pour bien comprendre

L’algorithmique : principes, bases et fonctions

Cette fiche présente des notions d’algorithmique avancées. Elle utilise pour cela l’écriture d'algorithmes en pseudo-code. Le pseudo-code est une méthode d’écriture d’algorithmes qui ressemble à un langage humain simplifié et formaté. Il est très utile pour concevoir des programmes informatiques.

Remarque
Cette fiche est la continuité directe de la fiche « L’algorithmique : principes, bases et fonctions », qu’il est conseillé de lire en premier.
1. Les conditions en pseudo-code
a. Conditions simples
Une condition est une expression qui relie deux valeurs et/ou variables à l'aide d'un opérateur de comparaison.

Lorsque l'algorithme est exécuté, les conditions sont testées. Le résultat du test peut valider ou non la condition.

Voici la liste des opérateurs de comparaison qui existent.
  • = est l’opérateur d’égalité.
  • <> est l’opérateur de différence.
  • > est l’opérateur « strictement supérieur à ».
  • est l’opérateur « supérieur ou égal à ».
  • < est l’opérateur « strictement inférieur à ».
  • est l’opérateur « inférieur ou égal à ».
Exemples
  • prix > 10
  • nom = “Tom”
Remarques
  • Il ne faut pas confondre l’opérateur d’égalité = avec l'opérateur d'affectation .
    • age = 5 est une condition, on teste si la variable age vaut 5 ou non.
    • age ← 5 est une affectation, on donne la valeur 5 à la variable age.
  • L’opérateur d’égalité est parfois noté ==, et l’opérateur de différence est parfois noté !=.
  • Une variable de type booléen peut être directement utilisée en tant que condition.
    • Si sa valeur est vrai, le test valide la condition.
    • Si sa valeur est faux, le test ne valide pas la condition.
b. Conditions composées
On peut écrire des conditions composées, en fusionnant deux (ou plusieurs) conditions simples avec les opérateurs logiques ET et OU.
Avec l'opérateur ET, il faut que les deux conditions simples soient validées pour que la condition composée soit validée.
Exemples
  • La condition suivante ne sera validée que si le prix est à la fois strictement plus grand que 15 , et à la fois strictement plus petit que 30  :
    prix > 15 ET prix < 30.
  • La condition suivante ne sera validée que si le prénom est Tom, et en même temps que l'âge est strictement inférieur à 18 ans :
    prenom = "Tom" ET age < 18.
Remarque
En algorithmique, l’écriture 15 < age < 30 n’est pas valable.
Il faut écrire 15 < age ET age < 30.
Avec l'opérateur OU, il faut qu'au moins l'une des deux conditions simples soit validée pour que la condition composée soit validée.
Exemples
  • La condition suivante est validée dès lors que l'âge est plus petit ou égal à 26 ans, ou que l'âge est plus grand ou égal à 60 ans :
    age ≤ 26 OU age ≥ 60.
  • La condition suivante est validée dès lors que le prix est strictement plus petit que 50 , ou que la variable enPromotion vaut vrai :
    prix < 50 OU enPromotion.
2. Les structures conditionnelles en pseudo-code
a. Instruction conditionnelle
Une instruction conditionnelle est une instruction qui n'est exécutée que si une condition est validée.
L’instruction conditionnelle est écrite entre les lignes qui commencent par les mot-clés Si, suivi d’une condition, et FinSi.
Exemple
L'ordinateur qui exécute l'algorithme suivant affecte la valeur vrai à la variable estMajeur, puis écrit un message à l'écran, uniquement si l’âge est supérieur ou égal à 18 ans (= si la condition age ≥ 18 est validée).

Variable age : nombre
Variable estMajeur : booléen
Début
Écrire “Quel est votre âge ?”
Lire age
Si age ≥ 18
estMajeur ← vrai
Écrire
“Vous êtes majeur.”
FinSi
Fin
Remarques
  • Les instructions qui se trouvent entre Si et FinSi sont indentées (décalées vers la droite) d'un cran supplémentaire par rapport au reste de l’algorithme. Cela permet de bien mettre en évidence qu'elles ne se réalisent que si la condition après le Si est validée.
  • Les instructions conditionnelles sont à la base des algorithmes intelligents. Elles permettent de faire prendre un décision différente au système numérique en fonction de la situation.
b. Instruction alternative
Il est possible d'ajouter une instruction alternative après une instruction conditionnelle, si la condition n'est pas respectée.
On utilise le mot-clé Sinon pour représenter cette alternative.
Exemple
L'ordinateur qui exécute l'algorithme suivant affecte une valeur différente à estMajeur et affiche un texte différent à l'écran, selon l'âge entré par l'utilisateur.

Variable age : nombre
Variable estMajeur : booléen
Début
Écrire “Quel est votre âge ?”
Lire age
Si age 18
estMajeur vrai
Écrire “Vous êtes majeur.”
Sinon
estMajeur faux
Écrire “Vous êtes mineur.”
FinSi
Fin
c. Alternative conditionnelle
Il est enfin possible d'ajouter autant d'alternatives conditionnelles que l'on souhaite après une instruction conditionnelle.
On précise avec le mot-clé SinonSi sous quelle condition chaque alternative doit se réaliser.
Exemple
L'ordinateur qui exécute l'algorithme suivant affecte une valeur différente à estMajeur et affiche un texte différent à l'écran, selon l'âge entré par l'utilisateur, avec trois situations possibles.

Variable age : nombre
Variable estMajeur : booléen
Début
Écrire "Quel est votre âge ?"
Lire age
Si age ≥ 18
estMajeur vrai
Écrire "Vous êtes majeur."
SinonSi age 16
estMajeur faux
Écrire "Vous êtes mineur, mais vous pouvez travailler."
Sinon
estMajeur faux
Écrire "Vous êtes mineur."
FinSi
Fin
Remarque
Il est possible d’imbriquer des structures conditionnelles à l’intérieur d’autres structures conditionnelles. Il faut alors respecter l’indentation pour que l’algorithme reste lisible.
3. Les boucles en pseudo-code
a. Boucle avec condition de sortie
Une boucle avec condition de bouclage permet d'indiquer qu'une même instruction, ou série d'instructions, doit être répétée tant qu'une condition est vraie.
La condition s'écrit de la même manière que pour les structures conditionnelles. La boucle avec condition de sortie s’écrit entre les mots-clés TantQue, suivi de la condition, et FinTantQue.
Remarques
  • Les boucles participent à ce qu’on appelle la factorisation du code. Elles permettent de n’écrire qu’une fois un morceau d'algorithme qui peut néanmoins être exécuté plusieurs fois.
  • Les structures conditionnelles et les boucles forment ce qu’on appelle les structures de contrôle.
Exemple
L'ordinateur qui exécute l'algorithme suivant demande à l'utilisateur la longueur et largeur d'un rectangle, puis donne l'aire du rectangle.

L'ordinateur demande ensuite à l'utilisateur si il veut effectuer un nouveau calcul. Tant que l'utilisateur répond oui, l'algorithme tourne en boucle.

Variable longueur, largeur, aire : nombre
Variable continuer : chaine
Début
continuer "oui"
TantQue continuer = “oui”
Écrire "Quelle est la longueur du rectangle ?"
Lire longueur
Écrire "Quelle est la largeur du rectangle ?"
Lire largeur
aire longueur * largeur
Écrire "L'aire du rectangle vaut ", chaine(aire)," m2."
Écrire "Voulez-vous effectuer un nouveau calcul ? (oui/non)"
Lire continuer
FinTantQue
Fin
Remarques
  • La fonction chaine(arg) permet de convertir l’aire, qui est un nombre, en chaine. Cette conversion est indispensable car l’instruction d’écriture ne peut afficher que des chaines.
  • Les boucles qui utilisent le mot-clé TantQue sont aussi nommées boucles “tant que”, ou boucles à itérations (= nombre de tours) indéfinies. Cela signifie que le nombre de tours qui sera fait n'est jamais connu, même lorsque la boucle est en cours d'exécution.
  • Si la condition est fausse dès le départ, aucun tour de boucle n’est effectué.
  • Si la condition est toujours vraie, la boucle devient infinie, ce qui peut bloquer le système qui utilise l’algorithme à l’intérieur de la boucle.
b. Boucle à itérations définies
Une boucle à itérations définies permet d'indiquer qu'une même instruction, ou série d'instructions, doit être répétée un certain nombre de fois. Le nombre de répétitions est indiqué par un compteur, dont on précise la valeur de départ et la valeur de fin.
La boucle à itérations définies s’écrit entre les mots-clés Pour compteur De x À y, et FinPour.
Exemple 1
L'ordinateur qui exécute l'algorithme suivant affiche autant de fois le mot « Bonjour » à l'écran que l'utilisateur le demande.

Variable combienBonjour, compteur : nombre
Début
Écrire "Combien de bonjour voulez-vous voir ?"
Lire combienBonjour
Pour compteur De 1 À combienBonjour
Écrire "Bonjour"
FinPour
Fin
Exemple 2
L'ordinateur qui exécute l'algorithme suivant demande à l'utilisateur d'entrer un chiffre, puis affiche la table de multiplication de ce chiffre.

Variable chiffre, resultat, compteur : nombre
Début
Écrire "Veuillez entrer un chiffre."
Lire chiffre
Pour compteur De 0 À 10
resultat chiffre * compteur
Écrire chaine(chiffre), " × ", chaine(compteur), " = ", chaine(resultat)
FinPour
Fin
Remarques
  • Les boucles qui utilisent le mot-clé Pour sont aussi nommées boucles « pour ».
  • Le comportement des boucles « pour » est plus facile à prévoir que celui des boucles « tant que », car elles sont moins sujettes aux boucles infinies qui sont dues à une erreur de conception de l’algorithme.
  • Il est toujours possible de remplacer une boucle « pour » par une boucle « tant que », et inversement, moyennant quelques adaptations.
  • Il est possible d’imbriquer des boucles à l’intérieur d’autres boucles et/ou structures conditionnelles, et inversement. On doit alors respecter l’indentation pour que l’algorithme reste lisible.
4. Les procédures en pseudo-code
a. Principe et utilisation
Une procédure est un sous-algorithme qu’on écrit à part. Une procédure peut être utilisée depuis l’algorithme principal, on dit alors qu’elle est appelée.
Pour appeler une procédure, on utilise le mot-clé Appeler.

Plutôt que de commencer par le mot-clé Début, une procédure commence par le mot-clé Procédure, suivi du nom qu’on donne à la procédure, puis des éventuels arguments de la procédure. La procédure peut posséder ses propres variables internes.
Remarques
  • Un argument est une valeur ou une variable qu’on transmet à la procédure, depuis l’algorithme principal, lors de son appel.
  • Une procédure peut appeler une autre procédure.
Exemple
La procédure suivante génère et affiche un nombre aléatoire.

Procédure afficheAleatoire(borne : nombre)
nombreAlea alea(1, borne)
Écrire “Le nombre généré est “, chaine(nombreAlea), “.”
Fin
 
L’algorithme principal qui appelle cette fonction est le suivant.
 
Variable combienNombres, compteur, borneSup : nombre
Début
Écrire “Veuillez choisir combien de nombres seront générés.”
Lire combienNombres
Écrire “Les nombres varieront de 1 à une borne supérieure.”
Écrire “Quelle est la valeur de la borne supérieure ?”
Lire borneSup
Pour compteur De 1 À combienNombres
Appeler afficheAleatoire(borneSup)
FinPour
Fin

On note que le nom de la variable (borneSup) qui sert d’argument lors de l’appel de la procédure, n’a pas besoin d’être le même que le nom de la variable interne à la procédure (borne).

b. Procédures et fonctions

Les procédures sont assez proches des fonctions.

Une différence d’usage importante est que :

  • les fonctions ont pour objectif de renvoyer une valeur, qui sera affectée à une variable ;
  • les procédures ont pour objectif de contenir une série d’instructions, un véritable morceau de programme, avec des instructions de lecture, écriture, des structures conditionnelles, des boucles, etc. Elle permettent de découper l’algorithme principal en plusieurs sous-algorithmes et de le rendre plus lisible.
Remarques
  • Cette distinction vaut pour l’algorithmique, mais elle n’est pas valable pour tous les langages informatiques. Dans certains cas, fonctions et procédures sont synonymes.
  • Les fonctions et les procédures participent aussi à la factorisation du code, comme les boucles.
  • Il est parfois possible de faire la même chose avec une fonction ou avec une procédure.
c. Pour aller plus loin - Argument passé par référence

Dans une procédure, il est possible de modifier les valeurs des variables de l'algorithme principal. Il faut pour cela passer les variables qu’on veut modifier comme arguments. Il faut de plus indiquer qu’on les passe par référence avec le mot-clé Ref.

Exemple
Voici ci-dessous un programme de jeu. Le joueur dispose d’une réserve d’argent et il doit parier sur un nombre, entre 1 et 10, en misant une somme d’argent.

Une procédure gère toute la partie tirage de nombre aléatoire et calcul du résultat. Les arguments argent et partieGagnee sont passés par référence à la procédure, qui peut donc directement les modifier.

Voici le programme principal.

Variable argent, partieGagnee, nombrePari, mise : nombre
Variable continuer : chaine
Début
continuer "oui"
argent 100
partieGagnee 0
Écrire "Vous avez ", chaine(argent), “ € pour jouer.”
TantQue continuer = “oui”
Écrire "Sur quel nombre pariez-vous (entre 1 et 10) ?"
Lire pari
Écrire "Combien misez-vous ?"
Lire mise
Appeler lancerPartie(pari, mise, argent Ref, partieGagnee Ref)
Écrire "Voulez-vous continuer à jouer ? (oui/non)"
Lire continuer
FinTantQue
Fin

Voici la procédure appelée lancerPartie.

Variable nombreAleatoire : nombre
Procédure lancerPartie(pari, mise, argent Ref, partieGagnee Ref : nombre)
nombreAleatoire ← alea(1,10)
Si nombreAleatoire = pari
partieGagnee partieGagnee + 1
argent argent + mise * 5
Écrire “Vous avez gagné !”
Sinon
argent argent - mise
Écrire “Vous avez perdu !”
FinSi
Écrire "Vous avez ", chaine(argent), “ € pour jouer.”
Fin

Comment as-tu trouvé ce cours ?

Évalue ce cours !

 

Question 1/5

La médiane de 6 notes est 13. Cela signifie que :

Question 2/5

On a obtenu la série statistique suivante :

Combien vaut la médiane ?

Question 3/5

On a obtenu la série ci-dessous :

Quelle est la médiane de cette série ?

Question 4/5

On a relevé les tailles en cm des élèves d’une classe :

 

Parmi les propositions suivantes, laquelle est vraie ?

Question 5/5

Les notes en français de deux classes littéraires sont données dans le tableau suivant :

Quelle est la note médiane ?

Vous avez obtenu75%de bonnes réponses !

Recevez l'intégralité des bonnes réponses ainsi que les rappels de cours associés :

Votre adresse e-mail sera exclusivement utilisée pour vous envoyer notre newsletter. Vous pourrez vous désinscrire à tout moment, à travers le lien de désinscription présent dans chaque newsletter. Pour en savoir plus sur la gestion de vos données personnelles et pour exercer vos droits, vous pouvez consulter notre charte.

Une erreur s'est produite, veuillez ré-essayer

Consultez votre boite email, vous y trouverez vos résultats de quiz!

Découvrez le soutien scolaire en ligne avec myMaxicours

Le service propose une plateforme de contenus interactifs, ludiques et variés pour les élèves du CP à la Terminale. Nous proposons des univers adaptés aux tranches d'âge afin de favoriser la concentration, encourager et motiver quel que soit le niveau. Nous souhaitons que chacun se sente bien pour apprendre et progresser en toute sérénité ! 

Fiches de cours les plus recherchées

Sciences de l’ingénieur

Le principe fondamental de la statique

Sciences de l’ingénieur

Le principe fondamental de la dynamique

Sciences de l’ingénieur

La mécanique du point et les équations horaires

Sciences de l’ingénieur

Les systèmes asservis

Sciences de l’ingénieur

Descente de charges : les structures porteuses

Sciences de l’ingénieur

L'algorithmique : principes, bases et fonctions

Sciences de l’ingénieur

L'internet des objets

Sciences de l’ingénieur

Chaine de puissance d'un système et réversibilité

Sciences de l’ingénieur

Simuler une chaine de puissance avec un modèle multiphysique

Sciences de l’ingénieur

Le stockage d'énergie