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

Cours Algorithmique 1 - S1 1

Le cours d'Algorithmique 1 vise à enseigner les concepts fondamentaux de l'algorithmique et de la programmation, permettant aux étudiants d'analyser des problèmes simples et de développer des programmes. Le contenu couvre les éléments d'un système informatique, les langages de programmation, et les étapes de réalisation d'un programme, y compris la déclaration de variables et les instructions d'affectation. L'algorithmique est définie comme l'étude des algorithmes, leur représentation et leur efficacité, avec un accent sur l'importance de la clarté et de la généralité des algorithmes.

Transféré par

spayder221
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 vues55 pages

Cours Algorithmique 1 - S1 1

Le cours d'Algorithmique 1 vise à enseigner les concepts fondamentaux de l'algorithmique et de la programmation, permettant aux étudiants d'analyser des problèmes simples et de développer des programmes. Le contenu couvre les éléments d'un système informatique, les langages de programmation, et les étapes de réalisation d'un programme, y compris la déclaration de variables et les instructions d'affectation. L'algorithmique est définie comme l'étude des algorithmes, leur représentation et leur efficacité, avec un accent sur l'importance de la clarté et de la généralité des algorithmes.

Transféré par

spayder221
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

Cours Algorithmique 1

I.A. Semestre 1 – Prof. Hatim DERROUZ


Département d’Informatique, Université Ibn Tofail
Email : [email protected]
Objectif et plan du cours
• Objectif
• Apprendre les concepts de base de l’algorithmique et de la programmation
• Être capable de mettre en œuvre ces concepts pour analyser des problèmes
simples et écrire les programmes correspondants
• Plan
• Généralités (matériel d’un ordinateur, systèmes d’exploitations, langages de
programmation, …)
• Algorithmique (affectation, instructions conditionnelles, instructions
itératives, fonctions, procédures, …)

Pr. Hatim DERROUZ - 2024/2025 - I.A. 2


Pr. Hatim DERROUZ - 2024/2025 - I.A. 3
Informatique?
• Techniques du traitement automatique de l’information au moyen
des ordinateurs
• Eléments d’un système informatique
Applications
(Word, Excel, Jeux, Maple, etc.)
Langages
(Java,C/C++, Fortran,etc.)
Système d’exploitation
(DOS,Windows, Unix, etc.)
Matériel
(PC, Macintosh, station SUN, etc.)

Pr. Hatim DERROUZ - 2024/2025 - I.A. 4


Matériel: Principaux éléments d’un PC
• Unité centrale (Le boitier)
• Processeur ou CPU (Central Processing Unit)
• Mémoire centrale
• Disque dur, lecture disquettes, lecteur CD-ROM
• Cartes spécialisées (Cartes Vidéo GPU, Réseau, …)
• Interfaces d’entée-sortie (Ports série/parallèle, …)

• Périphériques
• Moniteur(L’écran), clavier, souris
• Modem, imprimante, scanner, …

Pr. Hatim DERROUZ - 2024/2025 - I.A. 5


Pr. Hatim DERROUZ - 2024/2025 - I.A. 6
Pr. Hatim DERROUZ - 2024/2025 - I.A. 7
Pr. Hatim DERROUZ - 2024/2025 - I.A. 8
Qu’est ce qu’un système d’exploitation?
• Ensemble de programmes qui gèrent le matériel et contrôlent les
applications
• Gestion des périphériques ( affichage à l’écran, lecture du clavier, pilotage
d’une imprimante, …)
• Gestion des utilisateurs et de leurs données ( comptes, partage des
ressources, gestion des fichiers et répertoires, …)
• Interface avec l’utilisateur (textuelle ou graphique):
Interprétation des commandes
• Contrôle des programmes ( découpage en tâches, partage du temps
processeur, …)

Pr. Hatim DERROUZ - 2024/2025 - I.A. 9


Langages informatiques
• Un langage informatique est un outil permettant de donner des
ordres ( instructions ) à la machine
• A chaque instruction correspond une action du processeur
• Intérêt : écrire des programmes ( suite consécutive d’instructions)
destinés à effectuer une tâche donnée
• Exemple: un programme de gestion de comptes bancaires
• Contrainte: être compréhensible par la machine

Pr. Hatim DERROUZ - 2024/2025 - I.A. 10


Pr. Hatim DERROUZ - 2024/2025 - I.A. 11
Langage machine
• Langage binaire: l’information est exprimée et manipulée sous forme d’une suite de bits

• Un bit (binary digit) = 0 ou 1 (2 états électriques)

• Une combinaison de 8 bits= 1 Octet ➔ 28 = 256 possibilités qui permettent de coder tous les caractères
alphabétiques, numériques, et symboles tels que ?,*,&, …

• Le code ASCII (American Standard Code for Information Interchange) donne les correspondances entre les caractères
alphanumériques et leurs représentation binaire, Ex. A= 01000001, ?=00111111

• Les opérations logiques et arithmétiques de base (addition, multiplication, … ) sont effectuées


en binaire

Pr. Hatim DERROUZ - 2024/2025 - I.A. 12


Pr. Hatim DERROUZ - 2024/2025 - I.A. 13
L'assembleur
• Problème: le langage machine est difficile à comprendre par l'humain

• Idée: trouver un langage compréhensible par l'homme qui sera ensuite converti en langage
machine
• Assembleur (1er langage): exprimer les instructions élémentaires de façon symbolique
ADD A, 4
traducteur langage machine
LOAD B
MOV A, OUT

• +: déjà plus accessible que le langage machine
• -: dépend du type de la machine (n’est pas portable)
• -: pas assez efficace pour développer des applications complexes

 Apparition des langages évolués

Pr. Hatim DERROUZ - 2024/2025 - I.A. 14


Langages haut niveau
• Intérêts multiples pour le haut niveau:
• proche du langage humain «anglais» (compréhensible)
• permet une plus grande portabilité (indépendant du matériel)
• Manipulation de données et d’expressions complexes (réels, objets, a*b/c, …)
• Nécessité d’un traducteur (compilateur/interpréteur),
exécution plus ou moins lente selon le traducteur

Code source Compilateur ou


Langage machine
en langage évolué interpréteur

Pr. Hatim DERROUZ - 2024/2025 - I.A. 15


Compilateur/interpréteur
• Compilateur: traduire le programme entier une fois pour toutes
Compilateur exécution
exemple.c exemple
fichier source fichier exécutable

• + plus rapide à l’exécution


• + sécurité du code source
• - il faut recompiler à chaque modification

• Interpréteur: traduire au fur et à mesure les instructions du programme à chaque exécution


Interprétation+exécution
exemple.bas
fichier source
• + exécution instantanée appréciable pour les débutants
• - exécution lente par rapport à la compilation

Pr. Hatim DERROUZ - 2024/2025 - I.A. 16


Langages de programmation
• Deux types de langages:
• Langages procéduraux
• Langages orientés objets

• Exemples de langages:
• Fortran, Cobol, Pascal, C, …
• C++, Java, …

• Choix d’un langage?

Pr. Hatim DERROUZ - 2024/2025 - I.A. 17


Etapes de réalisation d’un programme
Enoncé du problème
Spécification
Cahier des charges
Analyse
Algorithme
Traduction en langage
Programme source
Compilation
Programme exécutable
Tests et modifications
Version finale et résultats

La réalisation de programmes passe par l’écriture d’algorithmes


 D’où l’intérêt de l’Algorithmique
Pr. Hatim DERROUZ - 2024/2025 - I.A. 18
Algorithmique
• Le terme algorithme vient du nom du mathématicien arabe Al-Khawarizmi (820 après J.C.)

• Un algorithme est une description complète et détaillée des actions à effectuer et de leur
séquencement pour arriver à un résultat donné

• Intérêt: séparation analyse/codage (pas de préoccupation de syntaxe)


• Qualités: exact (fournit le résultat souhaité), efficace (temps d’exécution, mémoire occupée), clair
(compréhensible), général (traite le plus grand nombre de cas possibles), …

• L’algorithmique désigne aussi la discipline qui étudie les algorithmes et leurs applications en
Informatique

• Une bonne connaissance de l’algorithmique permet d’écrire des algorithmes exacts et efficaces

Pr. Hatim DERROUZ - 2024/2025 - I.A. 19


Représentation d’un algorithme
Historiquement, deux façons pour représenter un algorithme:

• L’Organigramme: représentation graphique avec des symboles (carrés, losanges, etc.)


• offre une vue d’ensemble de l’algorithme
• représentation quasiment abandonnée aujourd’hui

• Le pseudo-code: représentation textuelle avec une série de conventions ressemblant à un


langage de programmation (sans les problèmes de syntaxe)
• plus pratique pour écrire un algorithme
• représentation largement utilisée

Pr. Hatim DERROUZ - 2024/2025 - I.A. 20


Algorithmique
Notions et instructions de base

Pr. Hatim DERROUZ - 2024/2025 - I.A. 21


Notion de variable
• Dans les langages de programmation une variable sert à stocker la valeur d’une donnée

• Une variable désigne en fait un emplacement mémoire dont


le contenu peut changer au cours d’un programme (d’où le nom variable)

• Règle : Les variables doivent être déclarées avant d’être utilisées, elle doivent être
caractérisées par :
• un nom (Identificateur)
• un type (entier, réel, caractère, chaîne de caractères, …)

Pr. Hatim DERROUZ - 2024/2025 - I.A. 22


Choix des identificateurs (1)
Le choix des noms de variables est soumis à quelques règles qui varient selon le langage,
mais en général:

• Un nom doit commencer par une lettre alphabétique exemple valide: A1


exemple invalide: 1A

• doit être constitué uniquement de lettres, de chiffres et du soulignement _ (Eviter les caractères de
ponctuation et les espaces) valides: IA2024, Algo_2024 invalides: Algo 2024,IA-2024,IA;2024

• doit être différent des mots réservés du langage (par exemple en Java: int, float, else, switch, case,
default, for, main, return, …)

• La longueur du nom doit être inférieure à la taille maximale spécifiée par le langage utilisé

Pr. Hatim DERROUZ - 2024/2025 - I.A. 23


Choix des identificateurs (2)
Conseil: pour la lisibilité du code choisir des noms significatifs qui décrivent les données
manipulées
exemples: TotalVentes2004, Prix_TTC, Prix_HT

Remarque: en pseudo-code algorithmique, on va respecter les règles citées, même si on


est libre dans la syntaxe

Pr. Hatim DERROUZ - 2024/2025 - I.A. 24


Types des variables
Le type d’une variable détermine l’ensemble des valeurs qu’elle peut prendre, les types offerts par
la plus part des langages sont:
• Type numérique (entier ou réel)
• Byte (codé sur 1octet): de 0 à 255
• Entier court (codé sur 2 octets) : -32 768 à 32 767
• Entier long (codé sur 4 ou 8 octets)
• Réel simple précision (codé sur 4 octets)
• Réel double précision (codé sur 8 octets)
• Type logique ou booléen: deux valeurs VRAI ou FAUX

• Type caractère: lettres majuscules, minuscules, chiffres, symboles, …


exemples: ’A’, ’a’, ’1’, ’?’, …
• Type chaîne de caractère: toute suite de caractères,
exemples: " Nom, Prénom", "code postale: 1000", …

Pr. Hatim DERROUZ - 2024/2025 - I.A. 25


Déclaration des variables
• Rappel: toute variable utilisée dans un programme doit avoir fait l’objet d’une déclaration
préalable
• En pseudo-code, on va adopter la forme suivante pour la déclaration de variables
Variables liste d'identificateurs : type
• Exemple:
Variables i, j,k : entier
x, y : réel
OK: booléen
ch1, ch2 : chaîne de caractères

• Remarque: pour le type numérique on va se limiter aux entiers et réels sans considérer les sous
types

Pr. Hatim DERROUZ - 2024/2025 - I.A. 26


L’instruction d’affectation
• l’affectation consiste à attribuer une valeur à une variable (ça consiste en fait à remplir où à modifier le
contenu d'une zone mémoire)

• En pseudo-code, l'affectation se note avec le signe ←


Var← e: attribue la valeur de e à la variable Var
- e peut être une valeur, une autre variable ou une expression
- Var et e doivent être de même type ou de types compatibles
- l’affectation ne modifie que ce qui est à gauche de la flèche

• Ex valides: i ←1 j ←i k ←i+j
x ←10.3 OK ←FAUX ch1 ←"SMI"
ch2 ←ch1 x ←4 x ←j
(voir la déclaration des variables dans le transparent précédent)
non valides: i ←10.3 OK ←"SMI" j ←x

Pr. Hatim DERROUZ - 2024/2025 - I.A. 27


Quelques remarques
• Beaucoup de langages de programmation (C/C++, Java, …) utilisent le signe égal = pour
l’affectation ←. Attention aux confusions:

• l'affectation n'est pas commutative : A=B est différente de B=A


• l'affectation est différente d'une équation mathématique :

• A=A+1 a un sens en langages de programmation


• A+1=2 n'est pas possible en langages de programmation et n'est pas équivalente à A=1

• Certains langages donnent des valeurs par défaut aux variables déclarées. Pour éviter tout
problème il est préférable d'initialiser les variables déclarées

Pr. Hatim DERROUZ - 2024/2025 - I.A. 28


Exercices simples sur l'affectation (1)
Donnez les valeurs des variables A, B et C après exécution des
instructions suivantes ?

Variables A, B, C: Entier
Début
A←3
B←7
A←B
B ← A+5
C←A+B
C←B–A
Fin

Pr. Hatim DERROUZ - 2024/2025 - I.A. 29


Exercices simples sur l'affectation (2)
Donnez les valeurs des variables A et B après exécution des instructions
suivantes ?

Variables A, B : Entier
Début
A←1
B←2
A←B
B←A
Fin
Les deux dernières instructions permettent-elles d’échanger les valeurs de
A et B ?
Pr. Hatim DERROUZ - 2024/2025 - I.A. 30
Exercices simples sur l'affectation (3)
• Ecrire un algorithme permettant d’échanger les valeurs de deux
variables A et B

Pr. Hatim DERROUZ - 2024/2025 - I.A. 31


Expressions et opérateurs
• Une expression peut être une valeur, une variable ou une opération constituée de variables
reliées par des opérateurs exemples: 1, b, a*2, a+ 3*b-c, …

• L'évaluation de l'expression fournit une valeur unique qui est le résultat de l'opération

• Les opérateurs dépendent du type de l'opération, ils peuvent être :


• des opérateurs arithmétiques: +, -, *, /, % (modulo), ^ (puissance)
• des opérateurs logiques: NON, OU, ET
• des opérateurs relationnels: =, , <, >, <=, >=
• des opérateurs sur les chaînes: & (concaténation)

• Une expression est évaluée de gauche à droite mais en tenant compte de priorités

Pr. Hatim DERROUZ - 2024/2025 - I.A. 32


Priorité des opérateurs
• Pour les opérateurs arithmétiques donnés ci-dessus, l'ordre de priorité est le suivant (du plus
prioritaire au moins prioritaire) :

• ^ : (élévation à la puissance)
• * , / (multiplication, division)
• % (modulo)
• + , - (addition, soustraction)
exemple: 2+3*7 vaut 23

• En cas de besoin (ou de doute), on utilise les parenthèses pour indiquer les opérations à effectuer
en priorité
exemple: (2 + 3) * 7 vaut 35

Pr. Hatim DERROUZ - 2024/2025 - I.A. 33


Les instructions d'entrées-sorties: lecture et
écriture (1)
• Les instructions de lecture et d'écriture permettent à la machine de communiquer avec
l'utilisateur

• 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

• Remarque: Le programme s'arrête lorsqu'il rencontre une instruction Lire et ne se poursuit


qu'après la frappe d’une valeur au clavier et de la touche Entrée

Pr. Hatim DERROUZ - 2024/2025 - I.A. 34


Les instructions d'entrées-sorties: lecture et
écriture (2)
• L'écriture permet d'afficher des résultats à l'écran (ou de les écrire dans un fichier)

• En pseudo-code, on note: écrire (var)


la machine affiche le contenu de la
zone mémoire var

• Conseil: Avant de lire une variable, il est fortement conseillé d’écrire des messages à l’écran,
afin de prévenir l’utilisateur de ce qu’il doit frapper

Pr. Hatim DERROUZ - 2024/2025 - I.A. 35


Exemple (lecture et écriture)
Ecrire un algorithme qui demande un nombre entier à l'utilisateur, puis qui calcule
et affiche le double de ce nombre

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
Pr. Hatim DERROUZ - 2024/2025 - I.A. 36
Exercice (lecture et écriture)
Ecrire un algorithme qui vous demande de saisir votre nom puis votre prénom et qui
affiche ensuite votre nom complet

Algorithme AffichageNomComplet
variables Nom, Prenom, Nom_Complet : chaîne de caractères
Début
écrire("entrez votre nom")
lire(Nom)
écrire("entrez votre prénom")
lire(Prenom)
Nom_Complet ← Nom & Prenom
écrire("Votre nom complet est : ", Nom_Complet)
Fin

Pr. Hatim DERROUZ - 2024/2025 - I.A. 37


Tests: instructions conditionnelles (1)
• Les instructions conditionnelles servent à n'exécuter une instruction ou une séquence
d'instructions que si une condition est vérifiée

• On utilisera la forme suivante: Si condition alors


instruction ou suite d'instructions1
Sinon
instruction ou suite d'instructions2
Finsi
• la condition ne peut être que vraie ou fausse
• si la condition est vraie, se sont les instructions1 qui seront exécutées

• si la condition est fausse, se sont les instructions2 qui seront exécutées


• la condition peut être une condition simple ou une condition composée de plusieurs conditions

Pr. Hatim DERROUZ - 2024/2025 - I.A. 38


Tests: instructions conditionnelles (2)
• La partie Sinon n'est pas obligatoire, quand elle n'existe pas et que la condition est fausse, aucun
traitement n'est réalisé

• On utilisera dans ce cas la forme simplifiée suivante:

Si condition alors
instruction ou suite d'instructions1
Finsi

Pr. Hatim DERROUZ - 2024/2025 - I.A. 39


Exemple (Si…Alors…Sinon)
Algorithme AffichageValeurAbsolue (version1)
Variable x : réel
Début
Ecrire (" Entrez un réel : “)
Lire (x)
Si (x < 0) alors
Ecrire ("la valeur absolue de ", x, "est:",-x)
Sinon
Ecrire ("la valeur absolue de ", x, "est:",x)
Finsi
Fin

Pr. Hatim DERROUZ - 2024/2025 - I.A. 40


Exemple (Si…Alors)
Algorithme AffichageValeurAbsolue (version2)
Variable x,y : réel
Début
Ecrire (" Entrez un réel : “)
Lire (x)
y← x
Si (x < 0) alors
y ← -x
Finsi
Ecrire ("la valeur absolue de ", x, "est:",y)
Fin

Pr. Hatim DERROUZ - 2024/2025 - I.A. 41


Exercice (tests)
Ecrire un algorithme qui demande un nombre entier à l'utilisateur, puis qui teste
et affiche s'il est divisible par 3
Algorithme Divsible_par3
Variable n : entier
Début
Ecrire " Entrez un entier : "
Lire (n)
Si (n%3=0) alors
Ecrire (n," est divisible par 3")
Sinon
Ecrire (n," n'est pas divisible par 3")
Finsi
Fin
Pr. Hatim DERROUZ - 2024/2025 - I.A. 42
Conditions composées
• 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

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

• L'évaluation d'une condition composée se fait selon des règles présentées généralement dans ce
qu'on appelle tables de vérité

Pr. Hatim DERROUZ - 2024/2025 - I.A. 43


Tables de vérité
C1 C2 C1 ET C2 C1 C2 C1 OU C2
VRAI VRAI VRAI VRAI VRAI VRAI
VRAI FAUX FAUX VRAI FAUX VRAI
FAUX VRAI FAUX FAUX VRAI VRAI
FAUX FAUX FAUX FAUX FAUX FAUX

C1 C2 C1 XOR C2 C1 NON C1
VRAI VRAI FAUX VRAI FAUX
VRAI FAUX VRAI FAUX VRAI
FAUX VRAI VRAI
FAUX FAUX FAUX

Pr. Hatim DERROUZ - 2024/2025 - I.A. 44


Tests imbriqués
• Les tests peuvent avoir un degré quelconque d'imbrications
Si condition1 alors
Si condition2 alors
instructionsA
Sinon
instructionsB
Finsi
Sinon
Si condition3 alors
instructionsC
Finsi
Finsi

Pr. Hatim DERROUZ - 2024/2025 - I.A. 45


Tests imbriqués: exemple (version 1)
Variable 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
Pr. Hatim DERROUZ - 2024/2025 - I.A. 46
Tests imbriqués: exemple (version 2)
Variable n : entier
Début
Ecrire ("entrez un nombre : ")
Lire (n)
Si (n < 0) alors Ecrire ("Ce nombre est négatif")
Finsi
Si (n = 0) alors Ecrire ("Ce nombre est nul")
Finsi
Si (n > 0) alors Ecrire ("Ce nombre est positif")
Finsi
Fin
Remarque : dans la version 2 on fait trois tests systématiquement alors que dans la version 1, si le
nombre est négatif on ne fait qu'un seul test
Conseil : utiliser les tests imbriqués pour limiter le nombre de tests et placer d'abord les conditions
les plus probables

Pr. Hatim DERROUZ - 2024/2025 - I.A. 47


Tests imbriqués: exercice
Le prix de photocopies dans une reprographie varie selon le nombre
demandé: 0,5 DH la copie pour un nombre de copies inférieur à 10,
0,4DH pour un nombre compris entre 10 et 20 et 0,3DH au-delà.

Ecrivez un algorithme qui demande à l’utilisateur le nombre de


photocopies effectuées, qui calcule et affiche le prix à payer

Pr. Hatim DERROUZ - 2024/2025 - I.A. 48


Tests imbriqués: corrigé de l'exercice
Variables copies : entier
prix : réel
Début
Ecrire ("Nombre de photocopies : ")
Lire (copies)
Si (copies < 10) Alors
prix ← copies*0.5
Sinon Si (copies) < 20
prix ← copies*0.4
Sinon
prix ← copies*0.3
Finsi
Finsi
Ecrire (“Le prix à payer est : ”, prix)
Fin

Pr. Hatim DERROUZ - 2024/2025 - I.A. 49


Instructions itératives: les boucles
• Les boucles servent à répéter l'exécution d'un groupe d'instructions un certain nombre de fois

• On distingue trois sortes de boucles en langages de programmation :


• 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

• 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

(Dans ce cours, on va s'intéresser essentiellement aux boucles Tant que et boucles Pour qui sont plus utilisées
et qui sont définies en Maple)

Pr. Hatim DERROUZ - 2024/2025 - I.A. 50


Les boucles Tant que
TantQue (condition)
instructions condition Vrai instructions

FinTantQue Faux

• la condition (dite condition de contrôle de la boucle) est évaluée avant chaque itération

• si la condition est vraie, on exécute instructions (corps de la boucle), puis, on retourne tester la condition. Si
elle est encore vraie, on répète l'exécution, …

• si la condition est fausse, on sort de la boucle et on exécute l'instruction qui est après FinTantQue

Pr. Hatim DERROUZ - 2024/2025 - I.A. 51


Les boucles Tant que : remarques
• Le nombre d'itérations dans une boucle TantQue n'est pas connu au moment d'entrée dans la
boucle. Il dépend de l'évolution de la valeur de condition

• Une des instructions du corps de la boucle doit absolument changer la valeur de condition de vrai
à faux (après un certain nombre d'itérations), sinon le programme tourne indéfiniment

 Attention aux boucles infinies


• Exemple de boucle infinie :
i←2
TantQue (i > 0)
i ← i+1 (attention aux erreurs de frappe : + au lieu de -)
FinTantQue

Pr. Hatim DERROUZ - 2024/2025 - I.A. 52


Boucle Tant que : exemple1
Contrôle de saisie d'une lettre majuscule jusqu’à ce que le caractère entré soit
valable

Variable C : caractère
Debut
Ecrire (" Entrez une lettre majuscule ")
Lire (C)
TantQue (C < 'A' ou C > 'Z')
Ecrire ("Saisie erronée. Recommencez")
Lire (C)
FinTantQue
Ecrire ("Saisie valable")
Fin

Pr. Hatim DERROUZ - 2024/2025 - I.A. 53


Boucle Tant que : exemple2
Un algorithme qui détermine le premier nombre entier N tel que la somme de 1 à
N dépasse strictement 100
version 1
Variables som, i : entier
Debut
i←0
som← 0
TantQue (som <=100)
i ← i+1
som ← som+i
FinTantQue
Ecrire (" La valeur cherchée est N= ", i)
Fin

Pr. Hatim DERROUZ - 2024/2025 - I.A. 54


Boucle Tant que : exemple2 (version2)
Un algorithme qui détermine le premier nombre entier N tel que la somme de 1 à N dépasse
strictement 100

version 2: attention à l'ordre des instructions et aux valeurs initiales


Variables som, i : entier
Debut
som ← 0
i←1
TantQue (som <=100)
som ← som + i
i ← i+1
FinTantQue
Ecrire (" La valeur cherchée est N= ", i-1)
Fin

Pr. Hatim DERROUZ - 2024/2025 - I.A. 55

Vous aimerez peut-être aussi