Vous êtes sur la page 1sur 84

Algorithmique

et
Structures de Données I
Sonia KEFI

1ère année Cycle Préparatoire

Année Universitaire : 2021-2022


Plan du Cours
• Introduction à l’algorithmique
• Les concepts de base de l’algorithmique
• Les structures répétitives
• Les tableaux
• Les fonctions et procédures
• Les chaines de caractères
• La récursivité
• Le pointeur

2
Chapitre 1
Introduction à l’algorithmique

Plan
1. Contexte scientifique
2. Démarche de programmation
3. Différences entre algorithme et programme

3
Informatique
L’informatique est la science du traitement automatique de
l’information.

L’informatique traite deux aspects complémentaires :


◦ les programmes immatériels (logiciel, software) qui décrivent un
traitement à réaliser,
◦ Les machines (matériel, hardware) qui exécutent ce traitement.
Le matériel est donc l’ensemble des éléments physiques
(microprocesseur, mémoire, écran, clavier, disques durs. . .)
utilisés pour traiter les données.

L’ordinateur est un terme générique qui désigne un


équipement informatique permettant de traiter des
informations selon des séquences d’instructions (les
programmes) qui constituent le logiciel.

4
Programmation (1)
Quelques définitions

Un programme est un ensemble d’opérations ou d’instructions


destinées pour accomplir un besoin ou résoudre un problème.
Un programme est écrit par un langage de programmation.

Le langage de programmation est un langage informatique,


permettant à l’utilisateur d’écrire un code source qui sera analysé
par un ordinateur.

La Programmation est l’activité de rédaction du code source


d’un programme.

Exemple de programme :
◦ Supposons qu’un enseignant dispose d’un ordinateur et d’un programme de
calcul de la moyenne des étudiants. Pour s’exécuter, ce programme
nécessite qu’on lui fournisse pour chaque étudiant, les notes de contrôle
continu, de T.P et de l’examen final : ce sont les données. En retour, le
programme va fournir la moyenne cherchée : c’est le résultat.
5
Programmation (2)
Types de langages

L’ordinateur ne sait exécuter qu’un nombre limité d’opérations élémentaires dictées


par des instructions de programme et codées en binaire (langage machine).
Avant, les premiers programmes étaient écrits en binaire. C’était une tâche
difficile et exposée aux erreurs car il fallait aligner des séquences de bits dont la
signification n’est pas évidente.

Par la suite, pour faciliter le travail, les programmes ont été écrits en désignant les
opérations par des codes faciles à retenir (ADD, DIV, SUB, MOVE, ...). Les adresses
des instructions et les variables pouvaient aussi être données sous forme
symbolique. Pour pouvoir utiliser effectivement tous ces symboles, il fallait trouver
le moyen de les convertir en langage machine ; ce fut réalisé par un programme
appelé assembleur. Le langage d’assemblage est toujours utilisé, car c’est le
seul langage qui permet d’exploiter au maximum les ressources de la machine.

L’écriture de programmes en langage d’assemblage reste une tâche fastidieuse. De


plus, ces programmes présentent un problème de portabilité étant donné qu’ils restent
dépendants de la machine sur laquelle ils ont été développés. L’apparition des
langages évolués, tels que Fortran et Pascal, a apporté une solution à ces
problèmes. Les programmes écrits en langage évolué doivent également être
convertis en langage machine pour être exécutés. Cette conversion peut s’effectuer
de deux façons : par compilation ou par interprétation.

6
Programmation (3)
Récapitulation

Langage machine (le langage binaire) : c’est le seule


langage qui est compréhensible par la machine mais
c’est difficile à utiliser et à le manipuler par l’homme.

Langage de bas niveau (le langage d’assemblage) : c’est


un langage alphanumérique. Il est plus lisible, mais il
reste toujours difficile à utiliser.

Langage de haut niveau : il est proche du langage


humain. On utilise un compilateur ou un interpréteur
pour traduire un programme en langage machine.

7
Programmation (4)
Compilation et interprétation

La compilation consiste à traduire la totalité du code source en une seule fois.


Le compilateur lit toutes les lignes du programme source et produit une
nouvelle suite de codes appelé programme objet (ou binaire).
Ce code objet est exécuté indépendamment du compilateur et être conservé
dans un fichier (« fichier exécutable») et peut être soumis au processeur pour le
traitement.
Les langages Ada, C, C++ et Fortran sont des exemples de langages compilés.

8
Suite
L’interprétation consiste à traduire chaque ligne du programme source
en des instructions du langage machine, qui sont ensuite directement
exécutées au fur et à mesure.
Aucun programme objet n’est généré.
L’interpréteur doit être utilisé chaque fois que l’on veut faire fonctionner
le programme.
Les langages Lisp et Prolog sont des exemples de langages interprétés.

9
Suite
Semi-compilation : Certains langages tentent de
combiner les deux techniques afin de retirer le
meilleur.
C’est le cas des langages Python et Java. Ces langages
commencent par compiler le code source pour
produire un code intermédiaire, similaire à un langage
machine (mais pour une machine virtuelle), que l’on
appelle bytecode, lequel sera ensuite transmis à un
interpréteur pour l’exécution finale.
Pour l’ordinateur, le bytecode est très facile à
interpréter en langage machine.
Cette interprétation sera donc beaucoup plus rapide
que celle d’un code source.

10
Récapitulation

Différents niveaux de langages de programmation


11
Algorithmique (1)
L'algorithmique, on la pratique tous les jours :

◦ Cafetière instructions Expresso

modèle
◦ Laine Pull

◦ Farine, œufs, …. recette Gâteau

12
Algorithmique (2)
Quelques définitions
• Un algorithme est un ensemble de tâches
élémentaires ordonnées, qui indique la démarche à
suivre pour résoudre un problème donné.

• L’algorithmique est la science qui étudie l’application


des algorithmes. Elle s’intéresse à l’art de construire des
algorithmes ainsi qu’à caractériser leur validité, leur
robustesse, leur utilisation, leur complexité ou leur
efficacité.

13
Démarche de programmation
1. Phase d’étude : consiste à comprendre le problème et
déterminer les données (entrées) et les résultats
(sorties) à produire.
Entrées Sorties

2. Phase d’analyse : consiste à identifier la succession des


étapes nécessaires pour résoudre le problème.
Entrées Analyse Sorties

3. Phase d’écriture de l‘algorithme : traduire les phases


précédentes en se basant sur les règles du langage
algorithmique.

Le langage algorithmique est un langage proche du langage humain. Il s’agit


d'un ensemble de convention et de notations, qui peuvent varier d’une
personne à une autre, et qui sert à décrire un algorithme.
14
4. Phase de programmation : traduire l’algorithme
dans un langage de programmation pour
obtenir un programme qui peut ensuite être
exécuté.

Démarche de réalisation d’un programme

15
Démarche de programmation
Récapitulation

Analyse : Mode d'expression du problème, en un


nombre fini d'étapes, indépendant du langage de
programmation utilisé.

Algorithmique : Analyse + Algorithme

Programmation : Codification ou traduction dans


un langage compréhensible par la machine.

Programmatique : Analyse + Algorithme +


Programmation

16
Exemple de problème (1)
Problème : Division de deux nombres
Enoncé du problème : Diviser deux
nombres
Questions :
◦ Quel genre de division ? exemple euclidienne
◦ Quel est le type des deux nombres ? exemple
entiers strictement positifs
◦ Quel est le résultat demandé ? exemple
quotient, reste

17
Exemple de problème (2)

18
Exemple de problème (3)
1. Positionnement du problème : Connaissant la
dividende x, le diviseur y, calculer le quotient entier q, puis
le reste N définis par la relation mathématique x = yq+r
avec 0 < r < y
2. Analyse du problème :
◦ Etape 1 : Ordre de lecture du dividende x et du diviseur y.
◦ Etape 2 : Calcul du quotient entier q, calcul du reste par la
formule r = x – yq
◦ Etape 3 : Edition des résultats
3. Algorithme : description systématique des étapes de
l'analyse, sous forme d'une suite d 'actions convenablement
enchaînées.
4. Programmation : traduire les actions (ou ensemble des
étapes) dans un langage compréhensible par la machine.

19
Généralisation des étapes de résolution

20
Différences entre algorithme et programme
L'algorithme est la méthode choisie pour résoudre un
problème.

Un programme traduit un algorithme dans un langage


de programmation particulier, par la suite, il peut être
exécuté par un ordinateur.

À la programmation, on s’occupe de certaines difficultés


techniques (système d’exploitation, gestion de la
mémoire, interface graphique, ...) souvent ignorées au
niveau algorithmique.

21
Chapitre 2
Les concepts de base de
l’algorithmique

22
Structure générale d’un algorithme
Algorithme Nom_algorithme
Constantes
Id_cst = Valeur
Type Partie 1
<Définition d’un type déclaré par l’utilisateur>
Variables
Id_var1,Id_var2, … : type variable

Début
Instruction 1 (Action 1)
Instruction 2 (Action 2)
… Partie 2

Instruction n (Action n)
Fin

Partie 1 : Déclaration des objets qui seront manipuler dans


l’algorithme.
Partie 2 : Corps de l’algorithme. L’ensemble des instructions permettant
d’aboutir aux résultats escomptés.
23
Notion d’objet (1)
Définition d’objet
◦ Un objet correspond à un emplacement dans la mémoire (une ou
plusieurs cases mémoires selon la grandeur), caractérisé par un
identificateur, une taille et un type, pouvant contenir une valeur et
subir des actions spécifiques.

Identificateur d’objet
◦ L’identificateur d’un objet est son nom.
Un nom correct commence impérativement par une lettre,
comporte des lettres et des chiffres, mais qui exclut la plupart
des signes de ponctuation, en particulier les espaces (un
espace peut être remplacé par le caractère « _ »).
Il est préférable de choisir des noms significatifs pour saisir
facilement ce que les objets représentent.
24
Int x =10;
une case mémoire est de taille 1 octet
qui est égale à 8 bits
Pour la valeur 10 = 00001010

00000000

x 00001010

25
Notion d’objet (2)
Nature d’objet
◦ Un objet peut être de nature constante ou variable (il ne peut
pas être les deux à la fois).
Variable : sa valeur peut changer au cours de l’algorithme.
Constante : sa valeur est fixée tout au long de l'algorithme.

Type d’objet
◦ Un type définit l’ensemble des valeurs que peut prendre un
objet de ce type ainsi que les actions qui y sont autorisées.
◦ Un type peut être classé selon plusieurs critères parmi lesquels :
Simple/composé
Prédéfini/ personnalisé :
Prédéfini : s'il est défini avec le langage utilisé. Il existe quatre
types standard : entier, réel, booléen, caractère.
Personnalisé : s'il n'est pas prédéfini. Il doit être alors défini
dans le bloc TYPE.
26
Type de variable (1)
Type entier
Une variable est dite entière si elle prend ses valeurs dans Z
(ensemble des entiers relatifs) et qu’elle peut supporter les
opérations suivantes : +, - , *, Div et Mod.
Exemples :
13 Div 5 = 2
13 Mod 5 = 3
L’ensemble de valeurs que peut prendre un entier varie selon
le langage de programmation utilisé étant donné que le
nombre de bits réservés pour une variable de ce type n’est
pas le même.
A titre d’exemple, en C, les entiers de 2 octets (sur
processeur 16 bits) varient entre -32 768 et 32 767 et pour
les entiers de 4 octets (sur processeur 32 bits) varient entre
-2 147 483 648 à 2 147 483 647.

27
Type de variable (2)
Type réel
Il existe plusieurs types de réels représentant chacun
un ensemble particulier de valeurs prises dans R
(ensemble des nombres réels). Ici encore, cette
distinction se justifie par le mode de stockage des
informations dans le langage de programmation.

Les opérateurs exécutés sur les réels sont :


+, - , *, /

En C, les réels de 4 octets varient entre 3.4*10-38 et


3.4*1038

28
Types numériques (Récapitulation)

Type Numérique Plage


Byte (octet) 0 à 255
Entier simple -32 768 à 32 767
Entier long -2 147 483 648 à 2 147 483 647

-3,40x1038 à -1,40x1045 pour les valeurs négatives


Réel simple
1,40x10-45 à 3,40x1038 pour les valeurs positives

1,79x10308 à -4,94x10-324 pour les valeurs négatives


Réel double
4,94x10-324 à 1,79x10308 pour les valeurs positives

29
Les opérateurs (1)
Les opérateurs arithmétiques
Priorité Opérateur opération
1 ()
2 * multiplication
/ Division réelle
Mod Reste de la division
Div Division entière
3 + Addition
- soustraction

Exemples d’expression arithmétiques :


3*9 + 15 mod 4 *6 + 28 -18*3
3*(9+ 15) mod 4 *6 +(28 - 18) *3 30
Les opérateurs (2)
Les opérateurs relationnels :
• Un opérateur relationnel peut comparer deux expressions
arithmétiques.
• La comparaison de deux caractères revient à comparer leurs codes
ASCII respectifs.
• Le résultat est soit vrai soit faux (type booléen).

< strictement inférieur


<= inférieur ou égal
> strictement supérieur
>= supérieur ou égal
= égal
<> différent

31
Type de variable (3)
Type caractère
Un caractère peut appartenir au domaine des
chiffres de ”0” à ”9”, des lettres minuscules et
majuscules) et des caractères spéciaux (”*”, ”/”,
”{”, ”$”, ”#”, ”%” …). Un caractère sera toujours
noté entre des guillemets. Le caractère espace
(blanc) sera noté ” ”.
La comparaison entre les caractères se fait selon
leur codes ASCII
Exemple :
” ” < ”0” < ”1” < ”A” < ”B” < ”a” < ”b” < ”{”

32
Table ASCII

33
Type de variable (4)
Type booléen
Une variable logique ne peut prendre que les
valeurs ”Vrai” ou ”Faux”.

Elle intervient dans l’évaluation d’une


condition.

Les principales opérations définies sur les


variables de type logique sont : la négation
(NON), l’intersection (ET) et l’union
(OU).

34
Les opérateurs (1)
Les opérateurs logiques :
• Les opérateurs logiques (ET/AND/, OU/OR/) servent à combiner
des conditions logiques (ou sous-conditions) pour obtenir une
condition plus complexe.
• L’opérateur NON /Not/ : retourne l'inverse de l'évaluation logique
de la condition.

ET Vrai Faux OU Vrai Faux


Vrai Vrai Faux Vrai Vrai Vrai
Faux Faux Faux Faux Vrai Faux

p NON p
Vrai Faux
Faux Vrai
35
Les opérateurs (2)
Les opérateurs logiques (suite) :
• Les opérateurs logiques ET et OU sont commutatifs, associatifs et
distributifs :

Commutativité :
• A ET B = B ET A
• A OU B = B OU A

Associativité :
• A ET ( B ET C) = ( A ET B) ET C
• A OU (B OU C) = ( A OU B ) OU C

Distributivité :
• A ET ( B OU C )  ( A ET B ) OU (A ET C)
• A OU ( B ET C )  ( A OU B ) ET (A OU C)

36
Type de variable (5)
Type personnalisé
En plus de ces types prédéfinis, le programmeur a la
possibilité de définir lui-même de nouveaux types en
fonction de ses besoins.
Exemple :
Types
Saison = (”A”,”H”,”P”,”E”)
Tnote = 0 .. 20
Variables
s : Saison
note : Tnote

La variable s de type Saison ne peut prendre que les valeurs


”A”, ”H”, ”P” ou ”E”.

37
Les actions algorithmiques simples (1)
Une action est un ordre donné par l'utilisateur à
l'ordinateur. On distingue trois actions
algorithmiques simples : l'affichage, la saisie et
l'affectation.

L’affichage
◦ L’action d’affichage permet de communiquer un
message ou le contenu d’un ou plusieurs objets à
l’utilisateur sur écran.
◦ Syntaxe : ECRIRE (ARG1, ARG2, … , ARGn)
Avec ARG peut être :
Le nom d’un objet (constante ou variable)
une expression arithmétique
un message

38
Exemples :
X 15

Écrire (X) 15

Écrire("Bonjour") Bonjour

La valeur
Écrire("la valeur est" ,X) est 15

39
Les actions algorithmiques simples (2)
La saisie/La lecture
◦ Cette action permet de placer dans la case
mémoire correspondante à une variable, une
valeur saisie par l’utilisateur à travers le
clavier.
◦ Syntaxe : LIRE (VAR1,VAR2, … ,VARn)
Remarque : On peut saisir chaque variable à part,
comme on peut saisir plusieurs variables avec le
même ordre LIRE.

40
Exemple : Lire (X)
? X

Dès que le programme rencontre


l’instruction Lire, l’exécution
s’interrompt, et l’utilisateur tape une
valeur qui sera stockée dans la case
mémoire.

5 X

5
41
Les actions algorithmiques simples (3)
L’Affectation
◦ C’est une opération qui permet de mettre une
valeur dans une case mémoire relative à une
variable. La valeur peut être le contenu d’une
autre variable, le contenu d'une constante, une
valeur donnée, ou le résultat d'une expression
arithmétique ou logique.

◦ Syntaxe : NOM_VBLE  EXPRESSION


• EXPRESSION peut être une valeur, un identificateur de variable
ou de constante, ou une expression arithmétique ou logique.
• Dans une opération d’affectation, il s’agit d’évaluer le membre
droit, puis ranger le résultat de l’évaluation dans le membre
gauche.

42
Exemple

Avant l’affectation Après


l’affectation

? ? S A 15 ?25 S
A A15
B10
SA+B
? ?10
B B

43
Chapitre 3
Les structures en algorithmique

Plan :
Les structures conditionnelles
Les structures répétitives (itératives)

44
Partie 1

Les structures conditionnelles

45
Sommaire
Introduction
Les structures conditionnelles simples
Les structures conditionnelles imbriquées
La structure conditionnelle à choix
multiples ou sélective

46
Introduction
• Pour la résolution de certains problèmes, on se trouve
confronté à choisir un traitement particulier à exécuter selon
une condition bien déterminée. Pour cela, on peut faire recours
aux structures conditionnelles.
Décision

Admis

MOY
Condition

Décision

refusé
47
Les structures conditionnelles simples (1)
• Ces structures sont des structures de contrôle effectuant un test
logique et permettant de choisir entre divers blocs d'actions suivant
le résultat de ce test. Il existe deux formes :

Forme réduite Forme générale


SI (condition) Alors SI (condition 1) Alors
Action
Action 1
Fin si Sinon

Action 2
Fin si

 La condition peut être élémentaire ou composée.


 Les actions peuvent être élémentaire ou composée.
 Les actions peuvent être des instructions conditionnelles.
48
Application 1
Ecrire un algorithme qui détermine la
parité d’un entier N.

Si (N mod 2 = 0) alors
◦ Ecrire (N, ‘’est paire’’)

Sinon
Ecrire (N, ‘’est impaire’’)

Fin Si
49
Les structures conditionnelles
imbriquées (1)
• Il s'agit d'utiliser une ou plusieurs instructions conditionnelles
dans le bloc "si" ou "sinon" d'une autre instruction
conditionnelle. Décision

Admis

MOY
Décision

Contrôle

Décision

Refusé
50
Les structures conditionnelles
imbriquées (2)
• Cette structure possède la forme suivante :
Si (condition1) alors
Si (condition2) alors

Si (condition3) alors

instruction1
instruction2

fin si

sinon
Si (condition3) alors

instruction3

fin si
fin si
finsi
51
Application 3
Ecrire un algorithme qui lit un nombre réel
et détermine s’il est positif, négatif ou nul.
Si (N >0) alors
Ecrire (N,‘’est positif’’)
Sinon { (N<=0)}
Si (N<0) alors
Ecrire (N,‘’est négatif’’)
Sinon { (N=0)}
Ecrire (N,‘’est nul’’)
Finsi
Finsi

52
La structure conditionnelle à choix multiples
ou sélective (1)
• Si dans le cas d'un schéma conditionnel imbriqué, la
condition porte toujours sur la même variable, on peut faire
recours à une structure sélective. Il s'agit de sélectionner un
traitement parmi plusieurs, suivant la valeur du sélecteur.

Selon (Sélecteur) faire


Val1,Val2 : suite d'instructions 1
Val 3 : suite d'instructions 2
…..
Val n : suite d'instructions n
…..
autre : suite d'instructions 0
Fin selon
La structure conditionnelle à choix
multiples ou sélective (2)
Le sélecteur peut être une variable de type scalaire (entier ou
caractère) ou une expression arithmétique ou logique.

La structure SELON évalue le "sélecteur", passe à comparer


celui ci respectivement avec les valeurs dans les listes. En cas
d'égalité avec une valeur, les instructions correspondantes, qui
sont devant cette valeur seront exécutées.

Dans la liste de valeurs, il peut y avoir une seule valeur, une suite
de valeurs séparées par des virgules et/ou un intervalle de
valeurs.

Remarque
◦ Le sélecteur doit avoir le même type que la liste de valeurs.
◦ Le type de ces valeurs ne doit être, ni réel ni chaîne de
caractères. 54
Application 4
Écrire un algorithme permettant de lire un entier (compris entre 1 et 7)
représentant le jour de la semaine (du lundi au dimanche) et qui permet
d’afficher en toutes lettres le nom du jour correspondant.

Selon (jour ) faire


1 : écrire(‘’Lundi‘’)
2 : écrire(‘’Mardi‘’)
3 : écrire(‘’Mercredi‘’)
4 : écrire(‘’Jeudi‘’)
5 : écrire(‘’Vendredi‘’)
6 : écrire(‘’Samedi‘’)
7 : écrire(‘’Dimanche‘’)
autre : écrire(‘’Erreur‘’)
Fin selon
Partie 2

Les structures de contrôles répétitives

56
Sommaire
Introduction
La structure « Pour…faire »
La structure « Tant que … faire »
Transformation de la structure « Pour …
faire » en structure « Tant que … faire »
La structure « Répéter … Jusqu’à »
Différence entre les trois structures
répétitives
Synthèse

57
Introduction (1)
Activités :
Écrire un algorithme qui permet d’afficher 3 fois le texte
"Je suis un ingénieur"
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 d’un étudiant (chaque étudiant possède
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 40 élèves.
C’est quoi le problème ???
58
Introduction (2)
Réponse :
•Trop d’objets
Pour cela on a besoin de : à déclarer.
◦ 40 cases mémoires pour saisir note1, •Gaspillage de
◦ 40 cases mémoires pour saisir note2,
mémoire.
◦ 40 cases mémoires pour la moyenne générale.

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


◦ Saisie de note1,
◦ Saisie de note2,
◦ Calcul de la 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.
59
Introduction (3)
Les structures 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.

On distingue trois types de structures à savoir :


◦ Pour … faire
◦ Tant que … faire
◦ Répéter … Jusqu’à

60
La structure « Pour … faire » (1)
La syntaxe de la structure « Pour … faire » est la suivante :

Pour Compteur de ValDébut à ValFin [pas de ValPas] faire


action
Fin pour

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

ValDébut : C’est la valeur initiale du Compteur.

ValFin : C’est la valeur finale du Compteur.


ValPas : Une constante qui précise la valeur à ajouter ou à retrancher du Compteur
lors de chaque itération. Par défaut, la valeur du Pas est égale à 1.

Il ne faut jamais modifier la valeur du Compteur à l'intérieur de la


boucle « Pour … faire » 61
La structure « Pour … faire » (2)
Pour
 Le compteur (variable de
contrôle) prend la valeur
initiale au moment d’accès à
Cpt valeurInitiale la boucle puis, à chaque
parcours, il passe
automatiquement à la
Cpt<=valeurFi non valeur suivante dans son
nale domaine jusqu’à atteindre la
valeur finale
oui
Séquence d’instructions Suite du
programme

Cpt Cpt + 1

Schéma d’exécution d’une boucle « POUR»


62
La structure « Pour … faire » (3)
Remarques :
◦ On ne peut utiliser la boucle « Pour » que si on
connaît au préalable combien de fois le traitement sera
exécuté.

◦ Le nombre de Le traitement est égal à :


(Vf-Vi+ValPas) Div ValPas .

◦ (50-2+2)div2=25 itérations
◦ Le compteur de la boucle « Pour » est incrémenté ou
décrémenté automatiquement.

63
Application 1
• Écrire un algorithme qui permet de calculer la factorielle 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 2 à 5 faire Pour cpt de 5 à 2 Pas De -1 faire
fact  fact*cpt fact  fact*cpt
Fin pour
Fin pour
Écrire (”la factorielle de 5 est”, fact)
Écrire (”la factorielle de 5 est”, fact)
Fin
Fin

Dans ce cas, le compteur cpt sera


décrémenté après chaque itération
64
Application 2
Ecrire un algorithme qui permet de
calculer la somme des 100 premiers
entiers paires strictement positifs .

65
La structure « Tant que … faire » (1)
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


Traitement
Fin tant que

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.
66
La structure « Tant que … faire » (2)
Le fonctionnement de la Tant Que
boucle «Tant que …
faire » est le suivant :
Tester la Faux
condition?

Vrai
Séquence d’instructions

Suite du programme

Schéma d’exécution d’une boucle


« Tant Que »
67
La structure « Tant que … faire » (3)
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
tant que. 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 la variable booléenne prend la valeur
FAUX.

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. 68
La structure « Tant que … faire » (4)
Exemple 1 :

i 1 10
Tant Que (i <= 5) FAIRE 20
Ecrire (i*10)
30
i i+1
Fin TQ 40
50

Le nombre d'itérations est connu à l'avance

Exemple 2 :

i 6
Tant Que (i <= 5) FAIRE
Ecrire (i*10) Rien n'est affiché
i i+1
Fin TQ
69
La structure « Tant que … faire » (5)
Exemple 3 :

i 1 10
Tant Que (i <= 5) FAIRE 10
Ecrire (i*10) boucle infinie
10
Fin TQ

Exemple 4 :

i 1
TantQue (i <= 5) FAIRE 10
Ecrire (i*10) 20
i i*2
40
Fin TQ

70
La structure « Tant que … faire » (6)
 Une boucle « Tant Que » peut s’exécuter 0, 1 ou n fois.

 Avant d’entrer dans la boucle Tant Que, vous devez vous


assurer que la condition a été initialisée. Si l’initialisation n’a
pas été faite, le traitement itératif risque de ne pas être
exécuté.

 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.

71
Application 3
É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
Écrire ("Entrez un nombre entre 1 et 3")
Lire (N)
Tant que ((N < 1) ou (N > 3)) Faire

Écrire ("Saisie erronée, Recommencez!")


Lire (N)
Fin TQ
Ecrire (‘’La valeur donnée par l’utilisateur est égale à ‘’, N)

Fin

72
Transformation de la structure « Pour … faire »
en structure « Tant que … faire »
Compteur  ValDébut
Tant que (Compteur ≤ ValFin) faire
Pour Compteur de ValDébut à ValFin
[pas de ValPas] faire Traitement
traitement Compteur  Compteur + ValPas
Fin pour
Fin Tant que

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


strictement positifs :
- Avec la boucle « Pour … faire »
- Avec la boucle « Tant que … faire »
73
Application 4
É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.
74
La structure « Répéter … jusqu’à » (1)
La structure «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 de la valeur d'une variable.
La syntaxe de la structure «Répéter … jusqu’à» est la suivante :

Répéter
Traitement
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.
75
La structure « Répéter … jusqu’à » (2)
Répéter
Le fonctionnement de la structure
« Répéter … jusqu’à » est le
suivant : Séquence d’instructions

Tester la Faux
condition
de sortie ?
Vrai
Suite du programme

Schéma d’exécution d’une boucle


« répéter »
76
La structure « Répéter … jusqu’à » (3)
Exemple 1 :

i 1 10
Répéter 20
Ecrire (i*10)
30
i i+1
Jusqu’à (i > 5) 40
50
Exemple 2 :

i 6
Répéter
Ecrire (i*10) 60
i i+1
Jusqu’à (i > 5)

La condition n'est testée qu'après avoir exécuté une


fois la séquence d'instructions de la boucle 77
La structure « Répéter … jusqu’à » (4)
Exemple 3 :

i 1 10
Répéter 10
Ecrire (i*10)
10
Jusqu’à (i > 5)


Exemple 4 :

c “A” A
Répéter A
Ecrire (c)
A
Jusqu’à (c > “Z”)

Il faut toujours s’assurer que la condition de sortie sera vérifiée


après un certain nombre fini d’itération, Sinon on aura une
boucle infinie… 78
La structure « Répéter … jusqu’à » (5)
La structure Répéter…Jusqu’à est utilisée dans le cas où :

 On a une répétition d’une suite d’instructions, un nombre de fois


inconnu à l’avance dont l’arrêt est géré par une condition.

 On est sur que le traitement itératif s’exécutera au moins une fois.

 La condition d’arrêt est considérée comme une condition de


sortie car, une fois elle est vérifiée, on quitte la boucle sinon on itère
encore jusqu’a ce qu’elle passe a l’état vrai.
 La condition d’arrêt peut être simple ou composée. Elle est dite
composée si plusieurs conditions sont a vérifier simultanément.

79
La structure « Répéter … jusqu’à » (6)

 Contrairement à une boucle « pour », dans une boucle «


répéter », l’initialisation et l’avancement du compteur doivent
être gérés manuellement par le programmeur.

 Dans une boucle « répéter », il faut toujours s’assurer que la


condition de sortie sera vérifiée après un nombre fini de
parcours. Sinon, c’est une boucle infinie.

 Les caractéristiques de la boucle “Répéter…Jusqu’a” en font


une structure adaptée pour le contrôle de la saisie des données.
On répète la saisie jusqu’a ce que les contraintes spécifiées dans
l’énoncé du problème soient respectées.

80
Application 4
Écrire un algorithme qui permet de lire la note d’algorithmique (N_Algo) et la
note des mathématiques (N_Math) et de calculer la moyenne générale
(M_generale). Les lectures doivent être contrôlées.
Algorithme Moyenne
Variables
N_Algo, N_Math, M_generale : Réel
Début
Répeter
ecrire ("donner la note d’algorithmique")
lire (N_Algo)
Jusqu’à ((N_Algo>=0) ET (N_Algo<=20))
Répeter
ecrire ("donner la note des mathématiques")
…lire (N_Math)
Jusqu’à ((N_Math>=0) ET (N_Math<=20))
Fin
81
Différences entre les trois boucles
La boucle « Pour … Fin Pour » est destinée au cas particulier
où l’on connaît par avance le nombre de répétition.

La boucle « Répéter …Jusqu’à » est semblable à la boucle


« Tant que...Fin Tant que », à 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 « Répéter …Jusqu’à » est toujours exécutée au


moins une fois, par contre si la condition booléenne est
initialement à FAUX, la boucle « Tant que...Fin Tant que » ne
s’exécute jamais.

82
Synthèse
Oui Nombre de répétition Non
est-il connu ?
Pour…faire

0 fois Le traitement doit se faire au


Tantque …faire moins combien de fois ?

1 fois
Répéter …jusqu’à
Ce n’est pas toujours vrai

Possible Tantque …faire

Pour…faire
Ce n’est pas toujours vrai

Répéter …jusqu’à
Possible

Ce n’est pas toujours vrai


83
FIN !

Vous aimerez peut-être aussi