Algorithme I
 2018/2019Algorithme I,1ère année LM
1
Département de Technologies du multimédia et du Web
1ère année LM
Semestre 1
Par Mr: Abdelbaki MISSAOUI
missaoui_isitc@yahoo.fr
Objectif et plan du cours
 2018/2019Algorithme I,1ère année LM
2
 Objectif:
 Apprendre les concepts de base de l'algorithmique et de la
programmation
 Etre capable de mettre en oeuvre ces concepts pour analyser des
problèmes simples et écrire les programmes correspondants
 Plan:
 les notions fondamentales de l’algorithmique : types de base, instructions
simples, structures conditionnelles et itératives, procédures et fonctions, etc.
 C (un outil de programmation)
Algorithmique
Leçon 1 : Introduction à la programmation
Objectifs:
Connaître le vocabulaire de base en programmation
Comprendre la démarche de programmation
Notion de programme
 2018/2019Algorithme I,1ère année LM
4
 La programmation consiste à «expliquer» en détails à une machine ce
qu'elle doit faire, en sachant qu'elle ne peut pas véritablement «
comprendre » un langage humain, mais seulement effectuer un
traitement automatique sur des séquences de caractères.
 Un programme n'est rien d'autre qu'une suite d'instructions, codées en
respectant de manière stricte un ensemble de conventions fixées à
l'avance que l'on appelle un langage informatique.
Langages informatiques (1)
 2018/2019Algorithme I,1ère année LM
5
 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.
 De la même manière, un programme de paie nécessite des informations
données : noms des employés, grades, numéros de sécurité sociale,
situations familiales, nombre d’heure supplémentaires, etc.
Langages informatiques (2)
 2018/2019Algorithme I,1ère année LM
6
 Les résultats seront imprimés sur les différents bulletins de paie :
identification de l’employé, salaire brut, retenue sécurité sociale, etc.
 Pour éviter de saisir à chaque fois les mêmes données, certaines
informations doivent être ”archivées” sur une mémoire de masse. Le
programme y accèdera alors directement (figure 1).
Langages informatiques (3)
 2018/2019Algorithme I,1ère année LM
7
Pour « parler » à un ordinateur, il nous faudra
utiliser des systèmes de traduction automatiques,
capables de convertir en nombres binaires des
suites de caractères formant des mots-clés (anglais
en général) qui seront plus significatifs pour nous.
Compilation et interprétation (1)
 2018/2019Algorithme I,1ère année LM
8
Ce que nous écrirons … Ce que l’on utilisera à chaque
fois que l’on voudra exécuter le
code source :
traduction/exécution ligne par
ligne.
Affichage
ligne par ligne
Compilation et interprétation (2)
 2018/2019Algorithme I,1ère année LM
9
traduit la totalité du
texte source en une
fois
Programme prêt à être exécuté
Compilation et interprétation (3)
 2018/2019Algorithme I,1ère année LM
10
 Compilateur:
 + plus rapide à l’exécution
 + sécurité du code source
 - il faut recompiler à chaque modification
 Interpréteur:
 + exécution instantanée appréciable pour les débutants
 - exécution lente par rapport à la compilation
Langages de programmation
 2018/2019Algorithme I,1ère année LM
11
 Deux types de langages:
 Langages procéduraux
 Langages orientés objets
 Exemples de langages:
 Fortran, Cobol, Pascal, C, …
 C++, Java, Python,……
 Choix d’un langage?
Etapes de réalisation d’un programme
 2018/2019Algorithme I,1ère année LM
12
Spécification
Analyse
Traduction en langage
Compilation
Tests et modifications
Enoncé du problème
Cahier des charges
Algorithme
Programme source
Programme exécutable
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
Algorithmique
 2018/2019Algorithme I,1ère année LM
13
 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
Représentation d’un algorithme
 2018/2019Algorithme I,1ère année LM
14
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
Notion de variable
 2018/2019Algorithme I,1ère année LM
15
 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, …)
Choix des identificateurs (1)
 2018/2019Algorithme I,1ère année LM
16
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: SMIP2018,
SMP_2018 invalides: SMP 2005,SMI-2007,SMP;2007
 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é
Choix des identificateurs (2)
 2018/2019Algorithme I,1ère année LM
17
Conseil: pour la lisibilité du code choisir des noms significatifs qui
décrivent les données manipulées
exemples: TotalVentes2019, Prix_TTC, Prix_HT
Remarques:
 en pseudo-code algorithmique, on va respecter les règles citées,
même si on est libre dans la syntaxe
 certains langages comme C, C++ et Java font la différence
entre lettres minuscules et majuscules alors que d’autres
comme Turbo Pascal n’en font aucune distinction.
Notion de constante
 2018/2019Algorithme I,1ère année LM
18
 Contrairement aux variables, les constantes sont des
données dont la valeur reste fixe durant l’exécution
du programme.
 Exemples : Pi = 3.14 g = 9.80 etc.
Notion de Type
 2018/2019Algorithme I,1ère année LM
19
Le type d’une variable détermine l’ensemble des valeurs qu’elle peut prendre,
 En pseudo-code, on va adopter la forme suivante pour la déclaration de
variables
Variables liste d'identificateurs : type
 Les principaux types utilisés en algorithmique sont :
- le type entier
- le type réel
- le type caractère
- le type chaîne de caractères
- le type logique ou booléen.
Notion de Type: entier
 2018/2019Algorithme I,1ère année LM
20
Notion de Type : réel
 2018/2019Algorithme I,1ère année LM
21
 le type réel ou décimal
 Il existe plusieurs types de réels représentant
chacun un ensemble particulier de valeurs prises
dans R (ensemble des nombres réels). Cette
distinction se justifie par le mode de stockage des
informations dans le langage de programmation.
Notion de Type : réel (2)
 2018/2019Algorithme I,1ère année LM
22
la forme usuelle avec le point comme symbole
décimal
Exemples : -3.2467 12.7 36.49
 Les opérations définies sur les réels sont :
Notion de Type :caractère
 2018/2019Algorithme I,1ère année LM
23
La comparaison entre les caractères se fait selon leur
codes ASCII
Notion de Type :booléen(1)
 2018/2019Algorithme I,1ère année LM
24
 le type logique ou 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).
 L’application de ces opérateurs se fait conformément
à la table de vérité suivante :
Notion de Type :booléen(2)
 2018/2019Algorithme I,1ère année LM
25
Les expressions
 2018/2019Algorithme I,1ère année LM
26
 Ce sont des combinaisons entre des variables et des
constantes à l’aide d’opérateurs. Elles expriment un
calcul (expressions arithmétiques) ou une relation
(expressions logiques).
Les expressions arithmétiques
 2018/2019Algorithme I,1ère année LM
27
Les expressions logiques
 2018/2019Algorithme I,1ère année LM
28
Exercices d’application
 2018/2019Algorithme I,1ère année LM
29
 Exercice 1
 2018/2019Algorithme I,1ère année LM
30
 Exercice 2
Algorithmique
Leçon 2 : Les instructions simples
Objectifs:
Comprendre les actions algorithmiques simples
Connaître la structure générale d’un algorithme
Les instructions simples
 2018/2019Algorithme I,1ère année LM
32
 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
Les instructions simples: remarques
 2018/2019Algorithme I,1ère année LM
33
 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
Exercices simples sur l'affectation (1)
 2018/2019Algorithme I,1ère année LM
34
Exercices simples sur l'affectation (2)
 2018/2019Algorithme I,1ère année LM
35
Les instructions d'entrées-sorties: lecture et
écriture (1)
 2018/2019Algorithme I,1ère année LM
36
 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
Les instructions d'entrées-sorties: lecture et
écriture (2)
 2018/2019Algorithme I,1ère année LM
37
 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
Structure générale d’un algorithme
 2018/2019Algorithme I,1ère année LM
38
Exemple 1 (lecture et écriture)
 2018/2019Algorithme I,1ère année LM
39
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
Exemple2 (lecture et écriture)
 2018/2019Algorithme I,1ère année LM
40
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
Exercices d’application
 2018/2019Algorithme I,1ère année LM
41
 Exercice 1
 2018/2019Algorithme I,1ère année LM
42
 Exercice 2
Ecrire un algorithme qui lit deux entiers au clavier
et qui affiche ensuite leur somme et leur produit.
 Exercice 3
Ecrire un algorithme qui lit le rayon d’un cercle
et qui affiche ensuite son périmètre et sa
surface.
Algorithmique
Leçon 3 : les structures conditionnelles
Objectifs:
Construire des algorithmes comportant des traitements
conditionnels.
Instructions conditionnelles (1)
 2018/2019Algorithme I,1ère année LM
44
 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
Instructions conditionnelles (2)
 2018/2019Algorithme I,1ère année LM
45
L’exécution de cette instruction se déroule
selon l’organigramme suivant:
Instructions conditionnelles (3)
 2018/2019Algorithme I,1ère année LM
46
 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
Instructions conditionnelles (4)
 2018/2019Algorithme I,1ère année LM
47
L’exécution de cette instruction se déroule
selon l’organigramme suivant:
Exemple (Si…Alors…Sinon)
 2018/2019Algorithme I,1ère année LM
48
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
Exemple (Si…Alors)
 2018/2019Algorithme I,1ère année LM
49
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
Exemple (Si…Alors Sinon )
 2018/2019Algorithme I,1ère année LM
50
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
Conditions composées
 2018/2019Algorithme I,1ère année LM
51
 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é
Tables de vérité
C1 C2 C1 ET C2
VRAI VRAI VRAI
VRAI FAUX FAUX
FAUX VRAI FAUX
FAUX FAUX FAUX
C1 C2 C1 OU C2
VRAI VRAI VRAI
VRAI FAUX VRAI
FAUX VRAI VRAI
FAUX FAUX FAUX
C1 C2 C1 XOR C2
VRAI VRAI FAUX
VRAI FAUX VRAI
FAUX VRAI VRAI
FAUX FAUX FAUX
C1 NON C1
VRAI FAUX
FAUX VRAI
 2018/2019Algorithme I,1ère année LM
52
Structure de sélection multiple
Selon <sélecteur> Faire
Liste de valeurs 1 : < Séquence d’instructions 1>
Liste de valeurs 2 : < Séquence d’instructions 2>
…
Liste de valeurs n : < Séquence d’instructions n>
Sinon
<Autre Séquence d’instructions>
FinSelon
 La séquence d’instructions numéro i sera exécuté si la valeur du sélecteur
appartient à la ième liste de valeurs. Le sélecteur est une variable ou une
expression de type scalaire (le résultat est un entier ou un caractère).
 2018/2019Algorithme I,1ère année LM
53
Exemple simple sur la sélection multiple
 2018/2019Algorithme I,1ère année LM
54
Tests imbriqués
 2018/2019Algorithme I,1ère année LM
55
 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
Tests imbriqués: exemple (version 1)
 2018/2019Algorithme I,1ère année LM
56
 ÉCRIRE "Température de l'eau? "
LIRE Temp
SI Temp <= 0 ALORS  Est-ce de la glace?
ÉCRIRE "C'est de la glace"
FINSI
SI Temp > 0 ET Temp < 100 ALORS  Est-ce du
liquide?
ÉCRIRE "C'est du liquide"
FINSI
SI Temp >= 100 ALORS  Est-ce de la vapeur?
ÉCRIRE "C'est de la vapeur"
FINSI
Exemple simple sur tests imbriqués(version 2)
 2018/2019Algorithme I,1ère année LM
57
Notez que cet algorithme est assez laborieux. Les conditions se ressemblent
plus ou moins, mais surtout on oblige le flux d'exécution à examiner trois
conditions successives alors que toutes portent sur un même thème, soit la
température (la valeur de la variable Temp). Il est cependant plus rationnel
d'imbriquer les structures :
ÉCRIRE "Température de l'eau? "
LIRE Temp
SI Temp <= 0 ALORS  Est-ce de la glace?
ÉCRIRE "C'est de la glace"
SINON
SI Temp > 0 ET Temp < 100 ALORS  Est-ce du liquide?
ÉCRIRE "C'est du liquide"
SINON  C'est donc de la vapeur
ÉCRIRE "C'est de la vapeur"
FINSI
FINSI
L’organigramme d’exécution
 2018/2019Algorithme I,1ère année LM
58
Exercices d’application
 2018/2019Algorithme I,1ère année LM
59
Ecrire un algorithme permettant de résoudre dans R une équation du second
degré de la forme ax2+bx+c = 0.
Exercice 2
Ecrire un algorithme pemettant de simuler une calculatrice à 4 opérations
(+, -, *, et /). Utiliser la structure « selon » pour le choix de l’opération à
effectuer.
Exercice 3
Ecrire un algorithme qui lit un caractère au clavier puis affiche s’il s’agit
d’une lettre minuscule, d’une lettre majuscule, d’un chiffre ou d’un caractère
spécial.
Exercice 1
 2018/2019Algorithme I,1ère année LM
60
 2018/2019Algorithme I,1ère année LM
61
 2018/2019Algorithme I,1ère année LM
62
 2018/2019Algorithme I,1ère année LM
63
Algorithmique
Leçon 4 : Les structures itératives
Objectifs:
Construire des algorithmes comportant des traitements
itératifs.
Instructions itératives: les boucles
 2018/2019Algorithme I,1ère année LM
65
 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 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
 Les boucles tant que : on y répète des instructions tant qu'une certaine condition est
réalisée
 Les boucles Répéter…. jusqu'à : on y répète des instructions jusqu'à ce qu'une
certaine condition soit réalisée
La structure « Pour… Faire »
 2018/2019Algorithme I,1ère année LM
66
Boucle Pour : exemple1
 2018/2019Algorithme I,1ère année LM
67
Calcul de x à la puissance n où x est un réel non nul et n un entier
positif ou nul
Variables x, puiss : réel
n, i : entier
Debut
Ecrire (" Entrez la valeur de x ")
Lire (x)
Ecrire (" Entrez la valeur de n ")
Lire (n)
puiss ← 1
Pour i allant de 1 à n
puiss← puiss*x
FinPour
Ecrire (x, " à la puissance ", n, " est égal à ", puiss)
Fin
Boucle Pour : exemple1 (version 2)
 2018/2019Algorithme I,1ère année LM
68
Calcul de x à la puissance n où x est un réel non nul et n un entier positif ou nul
(version 2 avec un pas négatif)
Variables x, puiss : réel
n, i : entier
Debut
Ecrire (" Entrez respectivement les valeurs de x et n ")
Lire (x, n)
puiss ← 1
Pour i de n à 1 par pas -1
puiss← puiss*x
FinPour
Ecrire (x, " à la puissance ", n, " est égal à ", puiss)
Fin
Boucle Pour : remarques
 2018/2019Algorithme I,1ère année LM
69
 Il faut éviter de modifier la valeur du compteur (et de finale) à
l'intérieur de la boucle. En effet, une telle action :
 perturbe le nombre d'itérations prévu par la boucle Pour
 rend difficile la lecture de l'algorithme
 présente le risque d'aboutir à une boucle infinie
Exemple : Pour i de 1 à 5
i  i -1
écrire(" i = ", i)
Finpour
Boucle Pour : exercice1
 2018/2019Algorithme I,1ère année LM
70
Boucle Pour : exercice 2
 2018/2019Algorithme I,1ère année LM
71
La structure « Répéter…jusqu’à »
 2018/2019Algorithme I,1ère année LM
72
Répéter…jusqu’à :Remarques
 2018/2019Algorithme I,1ère année LM
73
Répéter…jusqu’à :exercice 1
 2018/2019Algorithme I,1ère année LM
74
Répéter…jusqu’à :exercice 2
 2018/2019Algorithme I,1ère année LM
75
La structure « TantQue …faire »
 2018/2019Algorithme I,1ère année LM
76
TantQue :exercice 1
 2018/2019Algorithme I,1ère année LM
77
TantQue :exercice 2
 2018/2019Algorithme I,1ère année LM
78
Lien entre Pour et TantQue
 2018/2019Algorithme I,1ère année LM
79
La boucle Pour est un cas particulier de Tant Que (cas où le nombre d'itérations est connu
et fixé) . Tout ce qu'on peut écrire avec Pour peut être remplacé avec TantQue (la
réciproque est fausse)
Pour compteur allant de initiale à finale par pas valeur du pas
instructions
FinPour
peut être remplacé par : compteur ← initiale
(cas d'un pas positif) TantQue compteur <= finale
instructions
compteur ← compteur+pas
FinTantQue
Lien entre Pour et TantQue: exemple
 2018/2019Algorithme I,1ère année LM
80
Calcul de x à la puissance n où x est un réel non nul et n un entier positif ou nul (version
avec TantQue)
Variables x, puiss : réel
n, i : entier
Debut
Ecrire (" Entrez la valeur de x ")
Lire (x)
Ecrire (" Entrez la valeur de n ")
Lire (n)
puiss ← 1
i ← 1
TantQue (i<=n)
puiss← puiss*x
i ← i+1
FinTantQue
Ecrire (x, " à la puissance ", n, " est égal à ", puiss)
Fin
Boucles imbriquées
 2018/2019Algorithme I,1ère année LM
81
 Les instructions d'une boucle peuvent être des instructions itératives. Dans ce
cas, on aboutit à des boucles imbriquées
 Exemple: Exécution
Pour i allant de 1 à 5 OX
Pour j allant de 1 à i OOX
écrire("O") OOOX
FinPour OOOOX
écrire("X") OOOOOX
FinPour
Passage d’une structure itérative à une autre
 2018/2019Algorithme I,1ère année LM
82
Choix d'un type de boucle
 2018/2019Algorithme I,1ère année LM
83
 Si on peut déterminer le nombre d'itérations avant l'exécution de la boucle,
il est plus naturel d'utiliser la boucle Pour
 S'il n'est pas possible de connaître le nombre d'itérations avant l'exécution
de la boucle, on fera appel à l'une des boucles TantQue ou répéter jusqu'à
 Pour le choix entre TantQue et Répéter ….jusqu'à :
 Si on doit tester la condition de contrôle avant de commencer les instructions de
la boucle, on utilisera TantQue
 Si la valeur de la condition de contrôle dépend d'une première exécution des
instructions de la boucle, on utilisera répéter jusqu'à
Organigramme Choix d'un type de boucle
 2018/2019Algorithme I,1ère année LM
84
Les boucles : exercices
 2018/2019Algorithme I,1ère année LM
85
Exercice 1
Ecrire un algorithme permettant de :
- Lire un nombre fini de notes comprises entre 0 et 20
- Afficher la meilleure note, la mauvaise note et la moyenne de toutes
les notes.
Exercice 2
Calculer ab avec a réel et b entier par multiplications successives.
Exercice 3
Ecrire un algorithme qui lit un entier positif et vérifie si ce nombre est
premier ou non.
Remarque : un nombre premier n’est divisible que par 1 ou par lui-
même.

cours algorithme et structure de données 1er année

  • 1.
    Algorithme I  2018/2019AlgorithmeI,1ère année LM 1 Département de Technologies du multimédia et du Web 1ère année LM Semestre 1 Par Mr: Abdelbaki MISSAOUI missaoui_isitc@yahoo.fr
  • 2.
    Objectif et plandu cours  2018/2019Algorithme I,1ère année LM 2  Objectif:  Apprendre les concepts de base de l'algorithmique et de la programmation  Etre capable de mettre en oeuvre ces concepts pour analyser des problèmes simples et écrire les programmes correspondants  Plan:  les notions fondamentales de l’algorithmique : types de base, instructions simples, structures conditionnelles et itératives, procédures et fonctions, etc.  C (un outil de programmation)
  • 3.
    Algorithmique Leçon 1 :Introduction à la programmation Objectifs: Connaître le vocabulaire de base en programmation Comprendre la démarche de programmation
  • 4.
    Notion de programme 2018/2019Algorithme I,1ère année LM 4  La programmation consiste à «expliquer» en détails à une machine ce qu'elle doit faire, en sachant qu'elle ne peut pas véritablement « comprendre » un langage humain, mais seulement effectuer un traitement automatique sur des séquences de caractères.  Un programme n'est rien d'autre qu'une suite d'instructions, codées en respectant de manière stricte un ensemble de conventions fixées à l'avance que l'on appelle un langage informatique.
  • 5.
    Langages informatiques (1) 2018/2019Algorithme I,1ère année LM 5  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.  De la même manière, un programme de paie nécessite des informations données : noms des employés, grades, numéros de sécurité sociale, situations familiales, nombre d’heure supplémentaires, etc.
  • 6.
    Langages informatiques (2) 2018/2019Algorithme I,1ère année LM 6  Les résultats seront imprimés sur les différents bulletins de paie : identification de l’employé, salaire brut, retenue sécurité sociale, etc.  Pour éviter de saisir à chaque fois les mêmes données, certaines informations doivent être ”archivées” sur une mémoire de masse. Le programme y accèdera alors directement (figure 1).
  • 7.
    Langages informatiques (3) 2018/2019Algorithme I,1ère année LM 7 Pour « parler » à un ordinateur, il nous faudra utiliser des systèmes de traduction automatiques, capables de convertir en nombres binaires des suites de caractères formant des mots-clés (anglais en général) qui seront plus significatifs pour nous.
  • 8.
    Compilation et interprétation(1)  2018/2019Algorithme I,1ère année LM 8 Ce que nous écrirons … Ce que l’on utilisera à chaque fois que l’on voudra exécuter le code source : traduction/exécution ligne par ligne. Affichage ligne par ligne
  • 9.
    Compilation et interprétation(2)  2018/2019Algorithme I,1ère année LM 9 traduit la totalité du texte source en une fois Programme prêt à être exécuté
  • 10.
    Compilation et interprétation(3)  2018/2019Algorithme I,1ère année LM 10  Compilateur:  + plus rapide à l’exécution  + sécurité du code source  - il faut recompiler à chaque modification  Interpréteur:  + exécution instantanée appréciable pour les débutants  - exécution lente par rapport à la compilation
  • 11.
    Langages de programmation 2018/2019Algorithme I,1ère année LM 11  Deux types de langages:  Langages procéduraux  Langages orientés objets  Exemples de langages:  Fortran, Cobol, Pascal, C, …  C++, Java, Python,……  Choix d’un langage?
  • 12.
    Etapes de réalisationd’un programme  2018/2019Algorithme I,1ère année LM 12 Spécification Analyse Traduction en langage Compilation Tests et modifications Enoncé du problème Cahier des charges Algorithme Programme source Programme exécutable 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
  • 13.
    Algorithmique  2018/2019Algorithme I,1èreannée LM 13  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
  • 14.
    Représentation d’un algorithme 2018/2019Algorithme I,1ère année LM 14 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
  • 15.
    Notion de variable 2018/2019Algorithme I,1ère année LM 15  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, …)
  • 16.
    Choix des identificateurs(1)  2018/2019Algorithme I,1ère année LM 16 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: SMIP2018, SMP_2018 invalides: SMP 2005,SMI-2007,SMP;2007  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é
  • 17.
    Choix des identificateurs(2)  2018/2019Algorithme I,1ère année LM 17 Conseil: pour la lisibilité du code choisir des noms significatifs qui décrivent les données manipulées exemples: TotalVentes2019, Prix_TTC, Prix_HT Remarques:  en pseudo-code algorithmique, on va respecter les règles citées, même si on est libre dans la syntaxe  certains langages comme C, C++ et Java font la différence entre lettres minuscules et majuscules alors que d’autres comme Turbo Pascal n’en font aucune distinction.
  • 18.
    Notion de constante 2018/2019Algorithme I,1ère année LM 18  Contrairement aux variables, les constantes sont des données dont la valeur reste fixe durant l’exécution du programme.  Exemples : Pi = 3.14 g = 9.80 etc.
  • 19.
    Notion de Type 2018/2019Algorithme I,1ère année LM 19 Le type d’une variable détermine l’ensemble des valeurs qu’elle peut prendre,  En pseudo-code, on va adopter la forme suivante pour la déclaration de variables Variables liste d'identificateurs : type  Les principaux types utilisés en algorithmique sont : - le type entier - le type réel - le type caractère - le type chaîne de caractères - le type logique ou booléen.
  • 20.
    Notion de Type:entier  2018/2019Algorithme I,1ère année LM 20
  • 21.
    Notion de Type: réel  2018/2019Algorithme I,1ère année LM 21  le type réel ou décimal  Il existe plusieurs types de réels représentant chacun un ensemble particulier de valeurs prises dans R (ensemble des nombres réels). Cette distinction se justifie par le mode de stockage des informations dans le langage de programmation.
  • 22.
    Notion de Type: réel (2)  2018/2019Algorithme I,1ère année LM 22 la forme usuelle avec le point comme symbole décimal Exemples : -3.2467 12.7 36.49  Les opérations définies sur les réels sont :
  • 23.
    Notion de Type:caractère  2018/2019Algorithme I,1ère année LM 23 La comparaison entre les caractères se fait selon leur codes ASCII
  • 24.
    Notion de Type:booléen(1)  2018/2019Algorithme I,1ère année LM 24  le type logique ou 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).  L’application de ces opérateurs se fait conformément à la table de vérité suivante :
  • 25.
    Notion de Type:booléen(2)  2018/2019Algorithme I,1ère année LM 25
  • 26.
    Les expressions  2018/2019AlgorithmeI,1ère année LM 26  Ce sont des combinaisons entre des variables et des constantes à l’aide d’opérateurs. Elles expriment un calcul (expressions arithmétiques) ou une relation (expressions logiques).
  • 27.
    Les expressions arithmétiques 2018/2019Algorithme I,1ère année LM 27
  • 28.
    Les expressions logiques 2018/2019Algorithme I,1ère année LM 28
  • 29.
    Exercices d’application  2018/2019AlgorithmeI,1ère année LM 29  Exercice 1
  • 30.
     2018/2019Algorithme I,1èreannée LM 30  Exercice 2
  • 31.
    Algorithmique Leçon 2 :Les instructions simples Objectifs: Comprendre les actions algorithmiques simples Connaître la structure générale d’un algorithme
  • 32.
    Les instructions simples 2018/2019Algorithme I,1ère année LM 32  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
  • 33.
    Les instructions simples:remarques  2018/2019Algorithme I,1ère année LM 33  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
  • 34.
    Exercices simples surl'affectation (1)  2018/2019Algorithme I,1ère année LM 34
  • 35.
    Exercices simples surl'affectation (2)  2018/2019Algorithme I,1ère année LM 35
  • 36.
    Les instructions d'entrées-sorties:lecture et écriture (1)  2018/2019Algorithme I,1ère année LM 36  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
  • 37.
    Les instructions d'entrées-sorties:lecture et écriture (2)  2018/2019Algorithme I,1ère année LM 37  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
  • 38.
    Structure générale d’unalgorithme  2018/2019Algorithme I,1ère année LM 38
  • 39.
    Exemple 1 (lectureet écriture)  2018/2019Algorithme I,1ère année LM 39 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
  • 40.
    Exemple2 (lecture etécriture)  2018/2019Algorithme I,1ère année LM 40 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
  • 41.
    Exercices d’application  2018/2019AlgorithmeI,1ère année LM 41  Exercice 1
  • 42.
     2018/2019Algorithme I,1èreannée LM 42  Exercice 2 Ecrire un algorithme qui lit deux entiers au clavier et qui affiche ensuite leur somme et leur produit.  Exercice 3 Ecrire un algorithme qui lit le rayon d’un cercle et qui affiche ensuite son périmètre et sa surface.
  • 43.
    Algorithmique Leçon 3 :les structures conditionnelles Objectifs: Construire des algorithmes comportant des traitements conditionnels.
  • 44.
    Instructions conditionnelles (1) 2018/2019Algorithme I,1ère année LM 44  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
  • 45.
    Instructions conditionnelles (2) 2018/2019Algorithme I,1ère année LM 45 L’exécution de cette instruction se déroule selon l’organigramme suivant:
  • 46.
    Instructions conditionnelles (3) 2018/2019Algorithme I,1ère année LM 46  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
  • 47.
    Instructions conditionnelles (4) 2018/2019Algorithme I,1ère année LM 47 L’exécution de cette instruction se déroule selon l’organigramme suivant:
  • 48.
    Exemple (Si…Alors…Sinon)  2018/2019AlgorithmeI,1ère année LM 48 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
  • 49.
    Exemple (Si…Alors)  2018/2019AlgorithmeI,1ère année LM 49 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
  • 50.
    Exemple (Si…Alors Sinon)  2018/2019Algorithme I,1ère année LM 50 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
  • 51.
    Conditions composées  2018/2019AlgorithmeI,1ère année LM 51  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é
  • 52.
    Tables de vérité C1C2 C1 ET C2 VRAI VRAI VRAI VRAI FAUX FAUX FAUX VRAI FAUX FAUX FAUX FAUX C1 C2 C1 OU C2 VRAI VRAI VRAI VRAI FAUX VRAI FAUX VRAI VRAI FAUX FAUX FAUX C1 C2 C1 XOR C2 VRAI VRAI FAUX VRAI FAUX VRAI FAUX VRAI VRAI FAUX FAUX FAUX C1 NON C1 VRAI FAUX FAUX VRAI  2018/2019Algorithme I,1ère année LM 52
  • 53.
    Structure de sélectionmultiple Selon <sélecteur> Faire Liste de valeurs 1 : < Séquence d’instructions 1> Liste de valeurs 2 : < Séquence d’instructions 2> … Liste de valeurs n : < Séquence d’instructions n> Sinon <Autre Séquence d’instructions> FinSelon  La séquence d’instructions numéro i sera exécuté si la valeur du sélecteur appartient à la ième liste de valeurs. Le sélecteur est une variable ou une expression de type scalaire (le résultat est un entier ou un caractère).  2018/2019Algorithme I,1ère année LM 53
  • 54.
    Exemple simple surla sélection multiple  2018/2019Algorithme I,1ère année LM 54
  • 55.
    Tests imbriqués  2018/2019AlgorithmeI,1ère année LM 55  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
  • 56.
    Tests imbriqués: exemple(version 1)  2018/2019Algorithme I,1ère année LM 56  ÉCRIRE "Température de l'eau? " LIRE Temp SI Temp <= 0 ALORS Est-ce de la glace? ÉCRIRE "C'est de la glace" FINSI SI Temp > 0 ET Temp < 100 ALORS Est-ce du liquide? ÉCRIRE "C'est du liquide" FINSI SI Temp >= 100 ALORS Est-ce de la vapeur? ÉCRIRE "C'est de la vapeur" FINSI
  • 57.
    Exemple simple surtests imbriqués(version 2)  2018/2019Algorithme I,1ère année LM 57 Notez que cet algorithme est assez laborieux. Les conditions se ressemblent plus ou moins, mais surtout on oblige le flux d'exécution à examiner trois conditions successives alors que toutes portent sur un même thème, soit la température (la valeur de la variable Temp). Il est cependant plus rationnel d'imbriquer les structures : ÉCRIRE "Température de l'eau? " LIRE Temp SI Temp <= 0 ALORS Est-ce de la glace? ÉCRIRE "C'est de la glace" SINON SI Temp > 0 ET Temp < 100 ALORS Est-ce du liquide? ÉCRIRE "C'est du liquide" SINON C'est donc de la vapeur ÉCRIRE "C'est de la vapeur" FINSI FINSI
  • 58.
  • 59.
    Exercices d’application  2018/2019AlgorithmeI,1ère année LM 59 Ecrire un algorithme permettant de résoudre dans R une équation du second degré de la forme ax2+bx+c = 0. Exercice 2 Ecrire un algorithme pemettant de simuler une calculatrice à 4 opérations (+, -, *, et /). Utiliser la structure « selon » pour le choix de l’opération à effectuer. Exercice 3 Ecrire un algorithme qui lit un caractère au clavier puis affiche s’il s’agit d’une lettre minuscule, d’une lettre majuscule, d’un chiffre ou d’un caractère spécial. Exercice 1
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
    Algorithmique Leçon 4 :Les structures itératives Objectifs: Construire des algorithmes comportant des traitements itératifs.
  • 65.
    Instructions itératives: lesboucles  2018/2019Algorithme I,1ère année LM 65  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 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  Les boucles tant que : on y répète des instructions tant qu'une certaine condition est réalisée  Les boucles Répéter…. jusqu'à : on y répète des instructions jusqu'à ce qu'une certaine condition soit réalisée
  • 66.
    La structure «Pour… Faire »  2018/2019Algorithme I,1ère année LM 66
  • 67.
    Boucle Pour :exemple1  2018/2019Algorithme I,1ère année LM 67 Calcul de x à la puissance n où x est un réel non nul et n un entier positif ou nul Variables x, puiss : réel n, i : entier Debut Ecrire (" Entrez la valeur de x ") Lire (x) Ecrire (" Entrez la valeur de n ") Lire (n) puiss ← 1 Pour i allant de 1 à n puiss← puiss*x FinPour Ecrire (x, " à la puissance ", n, " est égal à ", puiss) Fin
  • 68.
    Boucle Pour :exemple1 (version 2)  2018/2019Algorithme I,1ère année LM 68 Calcul de x à la puissance n où x est un réel non nul et n un entier positif ou nul (version 2 avec un pas négatif) Variables x, puiss : réel n, i : entier Debut Ecrire (" Entrez respectivement les valeurs de x et n ") Lire (x, n) puiss ← 1 Pour i de n à 1 par pas -1 puiss← puiss*x FinPour Ecrire (x, " à la puissance ", n, " est égal à ", puiss) Fin
  • 69.
    Boucle Pour :remarques  2018/2019Algorithme I,1ère année LM 69  Il faut éviter de modifier la valeur du compteur (et de finale) à l'intérieur de la boucle. En effet, une telle action :  perturbe le nombre d'itérations prévu par la boucle Pour  rend difficile la lecture de l'algorithme  présente le risque d'aboutir à une boucle infinie Exemple : Pour i de 1 à 5 i  i -1 écrire(" i = ", i) Finpour
  • 70.
    Boucle Pour :exercice1  2018/2019Algorithme I,1ère année LM 70
  • 71.
    Boucle Pour :exercice 2  2018/2019Algorithme I,1ère année LM 71
  • 72.
    La structure «Répéter…jusqu’à »  2018/2019Algorithme I,1ère année LM 72
  • 73.
  • 74.
    Répéter…jusqu’à :exercice 1 2018/2019Algorithme I,1ère année LM 74
  • 75.
    Répéter…jusqu’à :exercice 2 2018/2019Algorithme I,1ère année LM 75
  • 76.
    La structure «TantQue …faire »  2018/2019Algorithme I,1ère année LM 76
  • 77.
    TantQue :exercice 1 2018/2019Algorithme I,1ère année LM 77
  • 78.
    TantQue :exercice 2 2018/2019Algorithme I,1ère année LM 78
  • 79.
    Lien entre Pouret TantQue  2018/2019Algorithme I,1ère année LM 79 La boucle Pour est un cas particulier de Tant Que (cas où le nombre d'itérations est connu et fixé) . Tout ce qu'on peut écrire avec Pour peut être remplacé avec TantQue (la réciproque est fausse) Pour compteur allant de initiale à finale par pas valeur du pas instructions FinPour peut être remplacé par : compteur ← initiale (cas d'un pas positif) TantQue compteur <= finale instructions compteur ← compteur+pas FinTantQue
  • 80.
    Lien entre Pouret TantQue: exemple  2018/2019Algorithme I,1ère année LM 80 Calcul de x à la puissance n où x est un réel non nul et n un entier positif ou nul (version avec TantQue) Variables x, puiss : réel n, i : entier Debut Ecrire (" Entrez la valeur de x ") Lire (x) Ecrire (" Entrez la valeur de n ") Lire (n) puiss ← 1 i ← 1 TantQue (i<=n) puiss← puiss*x i ← i+1 FinTantQue Ecrire (x, " à la puissance ", n, " est égal à ", puiss) Fin
  • 81.
    Boucles imbriquées  2018/2019AlgorithmeI,1ère année LM 81  Les instructions d'une boucle peuvent être des instructions itératives. Dans ce cas, on aboutit à des boucles imbriquées  Exemple: Exécution Pour i allant de 1 à 5 OX Pour j allant de 1 à i OOX écrire("O") OOOX FinPour OOOOX écrire("X") OOOOOX FinPour
  • 82.
    Passage d’une structureitérative à une autre  2018/2019Algorithme I,1ère année LM 82
  • 83.
    Choix d'un typede boucle  2018/2019Algorithme I,1ère année LM 83  Si on peut déterminer le nombre d'itérations avant l'exécution de la boucle, il est plus naturel d'utiliser la boucle Pour  S'il n'est pas possible de connaître le nombre d'itérations avant l'exécution de la boucle, on fera appel à l'une des boucles TantQue ou répéter jusqu'à  Pour le choix entre TantQue et Répéter ….jusqu'à :  Si on doit tester la condition de contrôle avant de commencer les instructions de la boucle, on utilisera TantQue  Si la valeur de la condition de contrôle dépend d'une première exécution des instructions de la boucle, on utilisera répéter jusqu'à
  • 84.
    Organigramme Choix d'untype de boucle  2018/2019Algorithme I,1ère année LM 84
  • 85.
    Les boucles :exercices  2018/2019Algorithme I,1ère année LM 85 Exercice 1 Ecrire un algorithme permettant de : - Lire un nombre fini de notes comprises entre 0 et 20 - Afficher la meilleure note, la mauvaise note et la moyenne de toutes les notes. Exercice 2 Calculer ab avec a réel et b entier par multiplications successives. Exercice 3 Ecrire un algorithme qui lit un entier positif et vérifie si ce nombre est premier ou non. Remarque : un nombre premier n’est divisible que par 1 ou par lui- même.