SlideShare une entreprise Scribd logo
1  sur  85
Télécharger pour lire hors ligne
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.

Contenu connexe

Tendances

Cours python
Cours pythonCours python
Cours python
salmazen
 
Merise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigésMerise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigés
Majid CHADAD
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdf
slimyaich3
 

Tendances (20)

L’algorithme 1.pptx
L’algorithme 1.pptxL’algorithme 1.pptx
L’algorithme 1.pptx
 
Algorithme
AlgorithmeAlgorithme
Algorithme
 
01 correction-td smia-s2-info2
01 correction-td smia-s2-info201 correction-td smia-s2-info2
01 correction-td smia-s2-info2
 
Cours Algorithme: Matrice
Cours Algorithme: MatriceCours Algorithme: Matrice
Cours Algorithme: Matrice
 
Chp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de ConceptionChp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de Conception
 
Examen principal - Algorithme & Structures de données
Examen principal - Algorithme & Structures de donnéesExamen principal - Algorithme & Structures de données
Examen principal - Algorithme & Structures de données
 
Cours structures des données (langage c)
Cours structures des données (langage c)Cours structures des données (langage c)
Cours structures des données (langage c)
 
Serie2
Serie2Serie2
Serie2
 
Algorithmique et Structures de Données II
Algorithmique et Structures de Données IIAlgorithmique et Structures de Données II
Algorithmique et Structures de Données II
 
Uml 2 pratique de la modélisation
Uml 2  pratique de la modélisationUml 2  pratique de la modélisation
Uml 2 pratique de la modélisation
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 
Cours python
Cours pythonCours python
Cours python
 
Merise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigésMerise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigés
 
Travaux dirigés 1: algorithme & structures de données
Travaux dirigés 1: algorithme & structures de donnéesTravaux dirigés 1: algorithme & structures de données
Travaux dirigés 1: algorithme & structures de données
 
Chapitre 4 récursivité
Chapitre 4 récursivitéChapitre 4 récursivité
Chapitre 4 récursivité
 
Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2
 
Cours compilation
Cours compilationCours compilation
Cours compilation
 
Exercices uml-corrige
Exercices uml-corrigeExercices uml-corrige
Exercices uml-corrige
 
COURS_PYTHON_22.ppt
COURS_PYTHON_22.pptCOURS_PYTHON_22.ppt
COURS_PYTHON_22.ppt
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdf
 

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

LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdfLUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
RedaBelattar
 
Cours_C_for_Etudiant.pdf
Cours_C_for_Etudiant.pdfCours_C_for_Etudiant.pdf
Cours_C_for_Etudiant.pdf
Hailisara
 
agileapplicationrequirementmythorreality
agileapplicationrequirementmythorrealityagileapplicationrequirementmythorreality
agileapplicationrequirementmythorreality
Ten Systems
 
U M L Analyse Et Conception Objet
U M L Analyse Et Conception ObjetU M L Analyse Et Conception Objet
U M L Analyse Et Conception Objet
Amine Chkr
 

Similaire à cours algorithme et structure de données 1er année (20)

algo thrichi.pdf
algo thrichi.pdfalgo thrichi.pdf
algo thrichi.pdf
 
Algorithme et programmation.pdf
Algorithme et programmation.pdfAlgorithme et programmation.pdf
Algorithme et programmation.pdf
 
Algorithme chap 1
Algorithme chap 1Algorithme chap 1
Algorithme chap 1
 
Asd
AsdAsd
Asd
 
Ktab asd
Ktab asdKtab asd
Ktab asd
 
Chapitre 1 - Algorithmique.pdf
Chapitre 1 - Algorithmique.pdfChapitre 1 - Algorithmique.pdf
Chapitre 1 - Algorithmique.pdf
 
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdfLUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
 
Compilationnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
CompilationnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnCompilationnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
Compilationnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
 
cours fortran.pptx
cours fortran.pptxcours fortran.pptx
cours fortran.pptx
 
Cours_C_for_Etudiant.pdf
Cours_C_for_Etudiant.pdfCours_C_for_Etudiant.pdf
Cours_C_for_Etudiant.pdf
 
cours Algorithmique SMP-SMC s2 by coursedu.blogspot.com
cours Algorithmique SMP-SMC s2 by coursedu.blogspot.comcours Algorithmique SMP-SMC s2 by coursedu.blogspot.com
cours Algorithmique SMP-SMC s2 by coursedu.blogspot.com
 
agileapplicationrequirementmythorreality
agileapplicationrequirementmythorrealityagileapplicationrequirementmythorreality
agileapplicationrequirementmythorreality
 
Seance 1 - Programmation en langage C
Seance 1 - Programmation en langage CSeance 1 - Programmation en langage C
Seance 1 - Programmation en langage C
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage Python
 
Ch2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdf
 
Langage C
Langage CLangage C
Langage C
 
Chapitre 3 - Généralités sur le langage C.pdf
Chapitre 3 - Généralités sur le langage C.pdfChapitre 3 - Généralités sur le langage C.pdf
Chapitre 3 - Généralités sur le langage C.pdf
 
2-Algo.ppt
2-Algo.ppt2-Algo.ppt
2-Algo.ppt
 
Algorithmique et methodes de programmation
Algorithmique et methodes de programmationAlgorithmique et methodes de programmation
Algorithmique et methodes de programmation
 
U M L Analyse Et Conception Objet
U M L Analyse Et Conception ObjetU M L Analyse Et Conception Objet
U M L Analyse Et Conception Objet
 

Dernier

Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdf
ssuserc72852
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
AmgdoulHatim
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
ikospam0
 

Dernier (20)

CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
 
Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxComputer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptx
 
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKRAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
 
L'expression du but : fiche et exercices niveau C1 FLE
L'expression du but : fiche et exercices  niveau C1 FLEL'expression du but : fiche et exercices  niveau C1 FLE
L'expression du but : fiche et exercices niveau C1 FLE
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdf
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdf
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
 
La mondialisation avantages et inconvénients
La mondialisation avantages et inconvénientsLa mondialisation avantages et inconvénients
La mondialisation avantages et inconvénients
 
Les roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxLes roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptx
 
L application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxL application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptx
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film français
 
les_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkles_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhk
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
 
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxIntégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaire
 
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
 
Formation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxFormation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptx
 
Chapitre 2 du cours de JavaScript. Bon Cours
Chapitre 2 du cours de JavaScript. Bon CoursChapitre 2 du cours de JavaScript. Bon Cours
Chapitre 2 du cours de JavaScript. Bon Cours
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.
 

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

  • 1. 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
  • 2. 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)
  • 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é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
  • 13. 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
  • 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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).
  • 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Algorithme I,1ère année LM 29  Exercice 1
  • 30.  2018/2019Algorithme I,1ère anné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 sur l'affectation (1)  2018/2019Algorithme I,1ère année LM 34
  • 35. Exercices simples sur l'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’un algorithme  2018/2019Algorithme I,1ère année LM 38
  • 39. 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
  • 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Algorithme I,1ère année LM 41  Exercice 1
  • 42.  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.
  • 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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
  • 49. 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
  • 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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é
  • 52. 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
  • 53. 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
  • 54. Exemple simple sur la sélection multiple  2018/2019Algorithme I,1ère année LM 54
  • 55. 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
  • 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 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
  • 59. 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
  • 64. Algorithmique Leçon 4 : Les structures itératives Objectifs: Construire des algorithmes comportant des traitements itératifs.
  • 65. 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
  • 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
  • 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 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
  • 80. 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
  • 81. 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
  • 82. Passage d’une structure itérative à une autre  2018/2019Algorithme I,1ère année LM 82
  • 83. 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'à
  • 84. Organigramme Choix d'un type 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.