SlideShare une entreprise Scribd logo
1  sur  78
Télécharger pour lire hors ligne
2007/2008 Info2, 1ère année SM/SMI 1
Cours d’Informatique
1ère année SM/SMI
2007/2008, Info2
Département de Mathématiques et d’Informatique,
Université Mohammed V
elbenani@hotmail.com
sayah@fsr.ac.ma
2007/2008 Info2, 1ère année SM/SMI 2
Objectif et plan du cours
Objectif :
• Apprendre les concepts de base de l'algorithmique et de la
programmation
• Être capable de mettre en oeuvre ces concepts pour analyser des
problèmes simples et écrire les programmes correspondants
Plan : introduction à l’algorithmique et à la programmation
• Généralités sur l’algorithmique et les langages de programmation
• Notion de variable, affectation, lecture et écriture
• Instructions conditionnels et instructions itératives
• Les Tableaux, les fonctions et procédures, la récursivité
• Introduction à la complexité des algorithmes
• Données structurées
• Initiation au Langage C (Travaux pratiques)
2007/2008 Info2, 1ère année SM/SMI 3
Programme
Un programme correspond à la description d’une
méthode de résolution pour un problème donné.
Cette description est effectuée par une suite
d’instructions d’un langage de programmation
Ces instructions permettent de traiter et de
transformer les données (entrées) du problème à
résoudre pour aboutir à des résultats (sorties).
Un programme n’est pas une solution en soi mais
une méthode à suivre pour trouver les solutions.
2007/2008 Info2, 1ère année SM/SMI 4
Langages informatiques
Un langage informatique est un code de communication, permettant
à un être humain de dialoguer avec une machine en lui soumettant
des instructions et en analysant les données matérielles fournies par
le système.
Le langage informatique est l’intermédiaire entre le programmeur et
la machine.
Il permet d’écrire des programmes (suite consécutive d’instructions)
destinés à effectuer une tache donnée
• Exemple : un programme de résolution d’une équation du second degré
Programmation : ensemble des activités orientées vers la
conception, la réalisation, le test et la maintenance de programmes.
2007/2008 Info2, 1ère année SM/SMI 5
Langages de programmationLangages de programmationLangages de programmationLangages de programmation
Deux types de langages:
• Langages procéduraux : Fortran, Cobol,Fortran, Cobol,
Pascal, C,Pascal, C, ……
• Langages orientés objets : C++, Java, C#,C++, Java, C#,……
Le choix d'un langage de programmation n'est
pas facile, chacun a ses spécificités et
correspond mieux à certains types d'utilisations
2007/2008 Info2, 1ère année SM/SMI 6
Notion d’algorithme
Un programme informatique permet à l’ordinateur de
résoudre un problème
• Avant de communiquer à l’ordinateur comment résoudre ce
problème, il faut en premier lieu pouvoir le résoudre nous même
Un algorithme peut se comparer à une recette de cuisine
• Le résultat c’est comme le plat à cuisiner
• Les données sont l’analogues des ingrédients de la recette
• Les règles de transformations se comparent aux directives ou
instructions de la recette
2007/2008 Info2, 1ère année SM/SMI 7
Algorithme informatique
Un algorithme est une suite d’instructions
ayant pour but de résoudre un problème
donné. Ces instructions doivent être exécutées
de façon automatique par un ordinateur.
Exemples:
– préparer une recette de cuisine
– montrer le chemin à un touriste
– programmer un magnétoscope
– etc ...
2007/2008 Info2, 1ère année SM/SMI 8
Algorithme : exemple
Pour trouver une valeur approximative de la racine carrée de x:
• prendre une approximation initiale arbitraire G
• améliorer cette approximation en calculant la moyenne
arithmétique entre G et x/G
• continuer jusqu'à atteindre la précision souhaitée
Exemple : pour x=2
X = 2 G = 1
X/G = 2 G = ½ (1+ 2) = 1.5
X/G = 4/3 G = ½ (3/2 + 4/3) = 17/12 = 1.416666
X/G = 24/17 G = ½ (17/12 + 24/17) = 577/408 = 1.4142156
x
2007/2008 Info2, 1ère année SM/SMI 9
Algorithme et programme
L’élaboration d’un algorithme précède l’étape de
programmation
• Un programme est un algorithme
• Un langage de programmation est un langage compris par
l'ordinateur
L’élaboration d’un algorithme est une démarche de
résolution de problème exigeante
La rédaction d’un algorithme est un exercice de
réflexion qui se fait sur papier
• L'algorithme est indépendant du langage de programmation
• Par exemple, on utilisera le même algorithme pour une
implantation en Java, ou bien en C++ ou en Visual Basic
• L’algorithme est la résolution brute d’un problème informatique
2007/2008 Info2, 1ère année SM/SMI 10
AlgorithmiqueAlgorithmiqueAlgorithmiqueAlgorithmique
algorithme = méthode de résolution
algorithme vient du nom du célèbre mathématicien
arabe Al Khawarizmi (Abu Ja'far Mohammed Ben Mussa
Al-Khwarismi)
•http ://trucsmaths.free.fr/alkhwarizmi.htm
•http://publimath.irem.univ-mrs.fr/glossaire/AL016.htm
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
2007/2008 Info2, 1ère année SM/SMI 11
algorithmique
Conception
– comment développer un algorithme?
– quelles techniques produisent de bons algorithmes?
Analyse
– étant donné un algorithme, quelles sont ses qualités?
– est-il adapté au problème?
– est-il efficace?
– comment mesurer ses performances?
Étant donné un problème sans solution évidente, comment peut on
le résoudre?
– en considérant les problèmes similaires connus,
– en considérant les solutions analogues - algorithmes - connues,
– en faisant marcher son imagination !!!
Processus de développement :
analyse codage test fin
découverte d’erreurs
demandes d’améliorations
2007/2008 Info2, 1ère année SM/SMI 12
Propriétés d’un algorithme
Un algorithme doit:
– avoir un nombre fini d’étapes,
– avoir un nombre fini d’opérations par étape,
– se terminer après un nombre fini d’opérations,
– fournir un résultat.
Chaque opération doit être:
– définie rigoureusement et sans ambiguïté
– effective, c-à-d réalisable par une machine
Le comportement d'un algorithme est déterministe.
2007/2008 Info2, 1ère année SM/SMI 13
ReprReprReprRepréééésentation dsentation dsentation dsentation d’’’’un algorithmeun algorithmeun algorithmeun algorithme
Historiquement, deux façons pour représenter un
algorithme:
L’Organigramme: représentation graphique avec des
symboles (carrés, losanges, etc.)
• offre une vue d’ensemble de l’algorithme
• représentation quasiment abandonnée aujourd’hui
Le pseudo-code: représentation textuelle avec une
série de conventions ressemblant à un langage de
programmation
• plus pratique pour écrire un algorithme
• représentation largement utilisée
2007/2008 Info2, 1ère année SM/SMI 14
AlgorithmiqueAlgorithmiqueAlgorithmiqueAlgorithmique
Notions et Instructions de
base
2007/2008 Info2, 1ère année SM/SMI 15
instructions de base
Un programme informatique est formé de quatre
types d’instructions considérées comme des petites
briques de base :
• l’affectation de variables
• la lecture et/ou l’écriture
• les tests
• les boucles
2007/2008 Info2, 1ère année SM/SMI 16
Notion de variable
Une variable sert à stocker la valeur d’une donnée dans un langage
de programmation
Une variable désigne un emplacement mémoire dont le contenu peut
changer au cours d’un programme (d’où le nom de variable)
Chaque emplacement mémoire a un numéro qui permet d'y faire
référence de façon unique : c'est l'adresse mémoire de cette cellule.
Règle : La variable doit être déclarée avant d’être utilisée, elle doit
être caractérisée par :
• un nom (Identificateur)
• un type qui indique l’ensemble des valeurs que peut prendre la variable
(entier, réel, booléen, caractère, chaîne de caractères, …)
• Une valeur
2007/2008 Info2, 1ère année SM/SMI 17
Identificateurs : rIdentificateurs : rIdentificateurs : rIdentificateurs : rèèèèglesglesglesgles
Le choix du nom d’une variable 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 : E1 (1E n’est pas valide)
• doit être constitué uniquement de lettres, de chiffres et du
soulignement (« _ ») (Éviter les caractères de ponctuation et les
espaces)
Exemples : SMI2008, SMI_2008
(SMP 2008, SMP-2008, SMP;2008 : sont non valides)
• doit être différent des mots réservés du langage (par exemple en
C: int, float, double, switch, case, for, main, return, …)
• La longueur du nom doit être inférieure à la taille maximale
spécifiée par le langage utilisé
2007/2008 Info2, 1ère année SM/SMI 18
Identificateurs : conseilsIdentificateurs : conseilsIdentificateurs : conseilsIdentificateurs : conseils
Conseil: pour la lisibilité du code choisir des noms significatifs
qui décrivent les données manipulées
exemples: NoteEtudiant, Prix_TTC, Prix_HT
Remarque: en pseudo-code algorithmique, on va respecter
les règles citées, même si on est libre dans la syntaxe
2007/2008 Info2, 1ère année SM/SMI 19
Types des variablesTypes des variablesTypes des variablesTypes des variables
Le type d’une variable détermine l’ensemble des valeurs qu’elle peut
prendre. Les types offerts par la plus part des langages sont:
• Type numérique (entier ou réel)
• Byte (codé sur 1octet): de [-27,27[ ou [0, 28[
• Entier court (codé sur 2 octets) : [-215,215[
• Entier long (codé sur 4 octets): [-231,231[
• Réel simple précision (codé sur 4 octets) : précision d’ordre 10-7
• Réel double précision (codé sur 8 octets) : précision d’ordre 10-14
• Type logique ou booléen: deux valeurs VRAI ou FAUX
• Type caractère: lettres majuscules, minuscules, chiffres, symboles,..
Exemples : ’A’, ’b’, ’1’, ’?’, …
• Type chaîne de caractère: toute suite de caractères
Exemples: " " , " Nom, Prénom", "code postale: 1000", …
2007/2008 Info2, 1ère année SM/SMI 20
DDDDééééclaration des variablesclaration des variablesclaration des variablesclaration des variables
Rappel: toute variable utilisée dans un
programme doit avoir fait l’objet d’une déclaration
préalable
En pseudo-code, la déclaration de variables est
effectuée par la forme suivante :
Variables liste d'identificateurs : type
Exemple:
Variables i, j, k : entier
x, y : réel
OK: booléen
Ch1, ch2 : chaîne de caractères
2007/2008 Info2, 1ère année SM/SMI 21
Variables : remarques
pour le type numérique, on va se limiter aux entiers et
réels sans considérer les sous types
Pour chaque type de variables, il existe un ensemble
d'opérations correspondant.
Une variable est l'association d'un nom avec un type,
permettant de mémoriser une valeur de ce type.
2007/2008 Info2, 1ère année SM/SMI 22
Constante
Une constante est une variable dont la valeur ne change pas
au cours de l'exécution du programme, elle peut être un
nombre, un caractère, ou une chaine de caractères.
En pseudo-code, Constante identificateur=valeur : type,…
(par convention, les noms de constantes sont en majuscules)
Exemple : pour calculer la surface des cercles, la valeur de pi
est une constante mais le rayon est une variable.
Constante PI=3.14 : réel, MAXI=32 : entier
Une constante doit toujours recevoir une valeur dès sa
déclaration.
2007/2008 Info2, 1ère année SM/SMI 23
AffectationAffectationAffectationAffectation
L’affectation consiste à attribuer une valeur à une variable
(c’est-à-dire remplir ou modifier le contenu d'une zone
mémoire)
En pseudo-code, l'affectation est notée par 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
Exemples : i ←1 j ←i k ←i+j
x ←10.3 OK ←FAUX ch1 ←"SMI"
ch2 ←ch1 x ←4 x ←j
(avec i, j, k : entier; x :réel; ok :booléen; ch1,ch2 :chaine de caractères)
Exemples non valides: i ←10.3 OK ←"SMI" j ←x
2007/2008 Info2, 1ère année SM/SMI 24
AffectationAffectationAffectationAffectation
Les langages de programmation C, C++, Java, … utilisent le signe
égal = pour l’affectation ←.
Remarques :
• Lors d’une affectation, l’expression de droite est évaluée et la
valeur trouvée est affectée à la variable de gauche. Ainsi, A←B
est différente de B←A
• l'affectation est différente d'une équation mathématique :
• Les opérations x ← x+1 et x ← x-1 ont un sens en programmation et
se nomment respectivement incrémentation et décrémentation.
• A+1 ← 3 n'est pas possible en langages de programmation et n'est
pas équivalente à A ← 2
• 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.
2007/2008 Info2, 1ère année SM/SMI 25
Syntaxe générale de l’algorithme
Algo exemple
/* La partie déclaration de l’algorithme */
Constantes // les constantes nécessitent une valeur dès leur déclaration
var1←20 : entier
var2←"bonjour!" : chaîne
Variables // les variables proprement dites
var3, var4 : réels
var5 : chaîne
Début // corps de l’algorithme
/* instructions */
Fin
2007/2008 Info2, 1ère année SM/SMI 26
la séquence des instructions
Les opérations d'un algorithme sont habituellement exécutées
une à la suite de l'autre, en séquence (de haut en bas et de
gauche à droite).
L'ordre est important.
On ne peut pas changer cette séquence de façon arbitraire.
Par exemple, enfiler ses bas puis enfiler ses bottes n’est pas
équivalent à enfiler ses bottes puis enfiler ses bas.
Fiche 2.6
2007/2008 Info2, 1ère année SM/SMI 27
Affectation : exercicesAffectation : exercicesAffectation : exercicesAffectation : exercices
Donnez les valeurs des variables A, B et C après exécution des
instructions suivantes ?
Variables A, B, C: Entier
Début
A ← 7
B ← 17
A ← B
B ← A+5
C ← A + B
C ← B – A
Fin
2007/2008 Info2, 1ère année SM/SMI 28
Affection : exercicesAffection : exercicesAffection : exercicesAffection : exercices
Donnez les valeurs des variables A et B après exécution des
instructions suivantes ?
Variables A, B : Entier
Début
A ← 6
B ← 2
A ← B
B ← A
Fin
Les deux dernières instructions permettent-elles d’échanger les
valeurs de A et B ?
2007/2008 Info2, 1ère année SM/SMI 29
Affectation : lAffectation : lAffectation : lAffectation : l’é’é’é’échange des chandailschange des chandailschange des chandailschange des chandails
A
0. 1.
2. 3.
B
A B
A B
A B
Fiche 2.6
2007/2008 Info2, 1ère année SM/SMI 30
Affectation :Affectation :Affectation :Affectation : ééééchangeschangeschangeschanges
Écrire un algorithme permettant d’échanger
les valeurs de deux variables A et B ?
Réponse :
on utilise une variable auxiliaire C et on écrit les
instructions suivantes :
C A ; A B ; B C ;
2007/2008 Info2, 1ère année SM/SMI 31
Expressions et opérateurs
Une expression peut être une valeur, une variable ou une
opération constituée de variables reliées par des opérateurs
exemples: 1, b, a*2, a+ 3*b-c, …
L'évaluation de l'expression fournit une valeur unique qui est le
résultat de l'opération
Les opérateurs dépendent du type de l'opération, ils peuvent être :
• des opérateurs arithmétiques: +, -, *, /, % (modulo),
^(puissance)
• des opérateurs logiques: NON(!), OU(| |), ET (&&)
• des opérateurs relationnels: =, <, >, <=, >=
• des opérateurs sur les chaînes: & (concaténation)
Une expression est évaluée de gauche à droite mais en tenant
compte des priorités des opérateurs.
2007/2008 Info2, 1ère année SM/SMI 32
Expression : remarques
On ne peut pas additionner un entier et un caractère
Toutefois dans certains langages on peut utiliser un
opérateur avec deux opérandes de types différents, c’est
par exemple le cas avec les types arithmétiques (4 + 5.5)
La signification d’un opérateur peut changer en fonction du
type des opérandes
• l’opérateur + avec des entiers effectue l’addition, 3+6 vaut 9
• avec des chaînes de caractères il effectue la concaténation
"bonjour" + " tout le monde" vaut "bonjour tout le monde"
2007/2008 Info2, 1ère année SM/SMI 33
Expression : remarques
Pour le langage C, si x et y sont entiers, x/y est une division entière
alors que si l’un des deux ne l’est pas la division est réelle
x+y/z : est une expression arithmétique dont le type dépend des types
de x, y et z
(x>y) | | !(x=y+1) : est une expression booléenne (| | dénote l’opérateur
logique ou et ! Dénote la négation)
Avant d’utiliser une variable dans une expression, il est nécessaire
qu’une valeur lui ait été affectée.
La valeur de l’expression est évaluée au moment de l’affectation
• x 4
• y 6
• z x+y
• Ecrire(z) 10
• y 20
• Ecrire(z) 10 la modification de y après affectation n’a
aucun effet sur la valeur de z
2007/2008 Info2, 1ère année SM/SMI 34
PrioritPrioritPrioritPrioritéééé des opdes opdes opdes opéééérateursrateursrateursrateurs
Pour les opérateurs arithmétiques donnés ci-dessus, l'ordre de
priorité est le suivant (du plus prioritaire au moins prioritaire) :
• () : les parenthèses
• ^ : (élévation à la puissance)
• * , / (multiplication, division)
• % (modulo)
• + , - (addition, soustraction)
exemple: 9 + 3 * 4 vaut 21
En cas de besoin, on utilise les parenthèses pour indiquer les
opérations à effectuer en priorité
exemple: (9 + 3) * 4 vaut 48
À priorité égale, l’évaluation de l’expression se fait de gauche à droite
2007/2008 Info2, 1ère année SM/SMI 35
Les opérateurs booléens
Associativité des opérateurs et et ou
a et (b et c) = (a et b) et c
Commutativité des opérateurs et et ou
a et b = b et a
a ou b = b ou a
Distributivité des opérateurs et et ou
a ou (b et c) = (a ou b) et (a ou c)
a et (b ou c) = (a et b) ou (a et c)
Involution (homographie réciproque) : non non a = a
Loi de Morgan : non (a ou b) = non a et non b
non (a et b) = non a ou non b
Exemple : soient a, b, c et d quatre entiers quelconques :
(a<b)| |((a>=b)&&(c==d)) (a<b)| |(c==d)
car (a<b)| |(!(a<b)) est toujours vraie
2007/2008 Info2, 1ère année SM/SMI 36
Tables de vTables de vTables de vTables de vééééritritritritéééé
FauxFauxFauxFauxFaux
VraiVraiFauxVraiFaux
VraiVraiFauxFauxVrai
FauxVraiVraiVraiVrai
C1 XOR C2C1 ou C2C1 et C2C2C1
VraiFaux
FauxVrai
Non C1C1
2007/2008 Info2, 1ère année SM/SMI 37
Les instructions dLes instructions dLes instructions dLes instructions d’’’’entrentrentrentréééées etes etes etes et
sorties : lecture etsorties : lecture etsorties : lecture etsorties : lecture et éééécriturecriturecriturecriture
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 saisie de l’entrée
attendue par le clavier et de la touche Entrée (cette touche
signale la fin de l’entrée)
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
2007/2008 Info2, 1ère année SM/SMI 38
Les instructions dLes instructions dLes instructions dLes instructions d’’’’entrentrentrentréééées etes etes etes et
sorties : lecture etsorties : lecture etsorties : lecture etsorties : lecture et éééécriturecriturecriturecriture
L'écriture permet d'afficher des résultats à l'écran (ou de
les écrire dans un fichier)
• En pseudo-code, on note: écrire (liste d’expressions)
la machine affiche les valeurs des expressions décrite
dans la liste.
Ces instructions peuvent être des variables ayant des
valeurs, des nombres ou des commentaires sous forme de
chaines de caractères.
Exemple : écrire(a, b+2, "Message")
2007/2008 Info2, 1ère année SM/SMI 39
Exemple : lecture etExemple : lecture etExemple : lecture etExemple : lecture et éééécriturecriturecriturecriture
Écrire un algorithme qui demande un nombre entier à
l'utilisateur, puis qui calcule et affiche le carré de ce nombre
Algorithme Calcul_du_Carre
Rôle : calcul du carre
Données : un entier
Résultats : le carre du nombre
variables A, B : entier
Début
écrire("entrer la valeur de A ")
lire(A)
B ← A*A
écrire("le carre de ", A, "est :", B)
Fin
2007/2008 Info2, 1ère année SM/SMI 40
Exercice : lecture etExercice : lecture etExercice : lecture etExercice : lecture et éééécriturecriturecriturecriture
Écrire un algorithme qui permet d’effectuer la saisie d’un nom, d’un
prénom et affiche ensuite le nom complet
Algorithme AffichageNomComplet
…
variables Nom, Prenom, Nom_Complet : chaîne de caractères
Début
écrire("entrez le nom")
lire(Nom)
écrire("entrez le prénom")
lire(Prenom)
Nom_Complet ← Nom & " " & Prenom
écrire("Votre nom complet est : ", Nom_Complet)
Fin
2007/2008 Info2, 1ère année SM/SMI 41
Tests: instructions conditionnellesTests: instructions conditionnellesTests: instructions conditionnellesTests: instructions conditionnelles
Définition : une condition est une expression écrite entre
parenthèse à valeur booléenne.
Les instructions conditionnelles servent à n'exécuter une
instruction ou une séquence d'instructions que si une
condition est vérifiée.
En pseudo-code :
Si condition alors
instruction ou suite d'instructions1
Sinon
instruction ou suite d'instructions2
Finsi
2007/2008 Info2, 1ère année SM/SMI 42
instructions conditionnellesinstructions conditionnellesinstructions conditionnellesinstructions conditionnelles
Suite d’instructions 2
test Suite d’instructions 1
Vraie
Faux
2007/2008 Info2, 1ère année SM/SMI 43
Instructions conditionnellesInstructions conditionnellesInstructions conditionnellesInstructions conditionnelles
Remarques :
• la condition ne peut être que vraie ou fausse
• si la condition est vraie alors seules les instructions1 sont
exécutées
• si la condition est fausse seules les instructions2 sont exécutées
• la condition peut être une expression booléenne simple ou une
suite composée d’expressions booléennes
La partie Sinon est optionnelle, on peut avoir la forme
simplifiée suivante:
Si condition alors
instruction ou suite d'instructions1
Finsi
2007/2008 Info2, 1ère année SM/SMI 44
SiSiSiSi…………AlorsAlorsAlorsAlors…………Sinon : exempleSinon : exempleSinon : exempleSinon : exemple
Algorithme ValeurAbsolue1
Rôle : affiche la valeur absolue d’un entier
Données : la valeur à calculer
Résultat : la valeur absolue
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
2007/2008 Info2, 1ère année SM/SMI 45
SiSiSiSi…………Alors : exempleAlors : exempleAlors : exempleAlors : exemple
Algorithme ValeurAbsolue2
…
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
2007/2008 Info2, 1ère année SM/SMI 46
Exercice (tests)Exercice (tests)Exercice (tests)Exercice (tests)
Écrire un algorithme qui demande un nombre entier à l'utilisateur,
puis qui teste et affiche s'il est divisible par 7 ou non
Algorithme Divsible_par7
…
Variable n : entier
Début
Ecrire (" Entrez un entier : ")
Lire (n)
Si (n%7=0) alors
Ecrire (n," est divisible par 7")
Sinon
Ecrire (n," n'est pas divisible par 7")
Finsi
Fin
2007/2008 Info2, 1ère année SM/SMI 47
Conditions composConditions composConditions composConditions composééééeseseses
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é
2007/2008 Info2, 1ère année SM/SMI 48
Tests imbriquTests imbriquTests imbriquTests imbriquééééssss
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
2007/2008 Info2, 1ère année SM/SMI 49
Tests imbriquTests imbriquTests imbriquTests imbriquéééés : exemple 1s : exemple 1s : exemple 1s : exemple 1
Variable n : entier
Début
Ecrire ("entrez un nombre : ")
Lire (n)
Si n < 0 alors
Ecrire ("Ce nombre est négatif")
Sinon
Si n = 0 alors Ecrire ("Ce nombre est nul")
Sinon Ecrire ("Ce nombre est positif")
Finsi
Finsi
Fin
2007/2008 Info2, 1ère année SM/SMI 50
Tests imbriquTests imbriquTests imbriquTests imbriquéééés : exemple 2s : exemple 2s : exemple 2s : exemple 2
Variable n : entier
Début
Ecrire ("entrez un nombre : ")
Lire (n)
Si n < 0 alors Ecrire ("Ce nombre est négatif")
Finsi
Si n = 0 alors Ecrire ("Ce nombre est nul")
Finsi
Si n > 0 alors Ecrire ("Ce nombre est positif")
Finsi
Fin
Remarque : dans l’exemple 2 on fait trois tests systématiquement alors que
dans l’exemple 1, si le nombre est négatif on ne fait qu'un seul test
Conseil : utiliser les tests imbriqués pour limiter le nombre de tests et placer
d'abord les conditions les plus probables
2007/2008 Info2, 1ère année SM/SMI 51
Tests imbriquTests imbriquTests imbriquTests imbriquéééés : exercices : exercices : exercices : exercice
Le prix de disques compacts (CDs) dans espace de vente varie
selon le nombre à acheter:
5 DH l’unité si le nombre de CDs à acheter est inférieur à 10,
4 DH l’unité si le nombre de CDS à acheter est compris entre 10 et
20 et 3 DH l’unité si le nombre de CDs à acheter est au-delà de 20.
Écrivez un algorithme qui demande à l’utilisateur le nombre de CDs à
acheter, qui calcule et affiche le prix à payer
2007/2008 Info2, 1ère année SM/SMI 52
Tests imbriquTests imbriquTests imbriquTests imbriquéééés : corrigs : corrigs : corrigs : corrigéééé
Variables unites : entier
prix : réel
Début
Ecrire ("Nombre d’unités : ")
Lire (unites)
Si unites < 10 Alors
prix ← unites*5
Sinon Si unites < 20 alors prix ← unites*4
Sinon prix ← unites*3
Finsi
Finsi
Ecrire (“Le prix à payer est : ”, prix)
Fin
2007/2008 Info2, 1ère année SM/SMI 53
Tests : remarques
Un sinon se rapporte toujours au dernier si qui n’a pas encore de
sinon associé
Il est recommandé de structurer le bloc associé à si et celui associé à
sinon
Exemple :
• Lire(a)
• x ←1
• Si (a>= 0) alors
si (a==0) alors x ←2
sinon x ←3
finsi
finsi
ecrire(x) a : -1 0 1
affichage : 1 2 3
2007/2008 Info2, 1ère année SM/SMI 54
L'instruction cas
Lorsque l’on doit comparer une même variable avec
plusieurs valeurs, comme par exemple :
si a=1 alors instruction1
sinon si a=2 alors instruction2
sinon si a=4 alors instruction4
sinon . . .
finsi
finsi
finsi
On peut remplacer cette suite de si par l’instruction cas
2007/2008 Info2, 1ère année SM/SMI 55
L'instruction cas
Sa syntaxe en pseudo-code est :
cas où v vaut
v1 : action1
v2 : action2
. . .
vn : actionn
autre : action autre
fincas
v1,. . . ,vn sont des constantes de type scalaire (entier, naturel,
énuméré, ou caractère)
action i est exécutée si v = vi (on quitte ensuite l’instruction cas)
action autre est exécutée si quelque soit i, v ≠ vi
2007/2008 Info2, 1ère année SM/SMI 56
L'instruction cas : exemple
…
Variables c : caractère
Début
Ecrire(«entrer un caractère»)
Lire (c)
Si((c>=’A’) et (c<=‘Z’)) alors
cas où c vaut
‘A’,’E’, ‘I’, ‘O’, ‘U’, ‘Y’ : ecrire(c,«est une voyelle majuscule»)
autre : ecrire(c,« est une consonne majuscule »)
fincas
sinon ecrire(c,«n’est pas une lettre majuscule»)
Finsi
Fin
2007/2008 Info2, 1ère année SM/SMI 57
Instructions itInstructions itInstructions itInstructions itéééératives : lesratives : lesratives : lesratives : les
bouclesbouclesbouclesboucles
Les boucles servent à répéter l'exécution d'un groupe d'instructions un
certain nombre de fois
On distingue trois sortes de boucles en langages de programmation :
• Les boucles tant que : on y répète des instructions tant qu'une
certaine condition est réalisée
• Les boucles jusqu'à : on y répète des instructions jusqu'à ce qu'une
certaine condition soit réalisée
• Les boucles pour ou avec compteur : on y répète des instructions
en faisant évoluer un compteur (variable particulière) entre une valeur
initiale et une valeur finale
2007/2008 Info2, 1ère année SM/SMI 58
Les boucles Tant queLes boucles Tant queLes boucles Tant queLes boucles Tant que
TantQue (condition)
instructions
FinTantQue
la condition (dite condition de contrôle de la boucle) est évaluée avant
chaque itération
si la condition est vraie, on exécute les instructions (corps de la boucle),
puis, on retourne tester la condition. Si elle est encore vraie, on répète
l'exécution, …
si la condition est fausse, on sort de la boucle et on exécute l'instruction
qui est après FinTantQue
Il est possible que les instructions à répéter ne soient jamais exécutées.
condition instructions
Vrai
Faux
2007/2008 Info2, 1ère année SM/SMI 59
Les boucles Tant que : remarquesLes boucles Tant que : remarquesLes boucles Tant que : remarquesLes boucles Tant que : remarques
Le nombre d'itérations dans une boucle TantQue n'est pas
connu au moment d'entrée dans la boucle. Il dépend de
l'évolution de la valeur de la condition
Une des instructions du corps de la boucle doit absolument
changer la valeur de la condition de vrai à faux (après un
certain nombre d'itérations), sinon le programme va tourner
indéfiniment
Attention aux boucles infinies
Exemple de boucle infinie : correction
i ← 1 i ← 1
TantQue i > 0 TantQue i <100
i ← i+1 i ← i+1
FinTantQue FinTantQue
2007/2008 Info2, 1ère année SM/SMI 60
Boucle Tant que : exemple1Boucle Tant que : exemple1Boucle Tant que : exemple1Boucle Tant que : exemple1
Contrôle de saisie d'une lettre alphabétique jusqu’à ce que le
caractère entré soit valable
…
Variable C : caractère
Debut
Écrire (" Entrez une lettre majuscule ")
Lire (C)
TantQue (C < 'A' ou C > 'Z')
Ecrire ("Saisie erronée. Recommencez")
Lire (C)
FinTantQue
Ecrire ("Saisie valable")
Fin
2007/2008 Info2, 1ère année SM/SMI 61
Tant que : exemple2
En investissant chaque année 10000DH à intérêts
composés de 7%, après combien d’années serons nous
millionnaire ?
Variables capital :réel
nbAnnees : entier
Debut capital ←0.0 nbAnnes ←0
Tantque (Capital < 1000000)
Debut capital ← capital+10000;
nbAnnees++;
capital ←(1+0.07)*capital;
FinTantque
Fin
2007/2008 Info2, 1ère année SM/SMI 62
Boucle Tant que : exemple3Boucle Tant que : exemple3Boucle Tant que : exemple3Boucle Tant que : exemple3
Un algorithme qui détermine le premier nombre entier N tel que la
somme de 1 à N dépasse strictement 100
version 1
Variables som, i : entier
Debut
i ← 0
som← 0
TantQue (som <=100)
i ← i+1
som ← som+i
FinTantQue
Ecrire (" La valeur cherchée est N= ", i)
Fin
2007/2008 Info2, 1ère année SM/SMI 63
Boucle Tant que : exemple3Boucle Tant que : exemple3Boucle Tant que : exemple3Boucle Tant que : exemple3
Un algorithme qui détermine le premier nombre entier N tel
que la somme de 1 à N dépasse strictement 100
forme 2: attention à l'ordre des instructions et aux valeurs initiales
Variables som, i : entier
Debut
som ← 0
i ← 1
TantQue (som <=100)
som ← som + i
i ← i+1
FinTantQue
Écrire (" La valeur cherchée est N= ", i-1)
Fin
2007/2008 Info2, 1ère année SM/SMI 64
Les boucles RRRRééééppppééééterterterter ………… jusqujusqujusqujusqu’à’à’à’à …………
Répéter
instructions
Jusqu'à condition
Condition est évaluée après chaque itération
les instructions entre Répéter et jusqu’à sont exécutées au
moins une fois et leur exécution est répétée jusqu’à ce que la
condition soit vraie (tant qu'elle est fausse)
condition
instructions
Faux
Vrai
2007/2008 Info2, 1ère année SM/SMI 65
Boucle RRRRééééppppééééter jusquter jusquter jusquter jusqu’à’à’à’à : exemple 1
Un algorithme qui détermine le premier nombre entier N tel que la somme
de 1 à N dépasse strictement 100 (version avec répéter jusqu'à)
Variables som, i : entier
Debut
som ← 0
i ← 0
Répéter
i ← i+1
som ← som+i
Jusqu'à ( som > 100)
Ecrire (" La valeur cherchée est N= ", i)
Fin
2007/2008 Info2, 1ère année SM/SMI 66
Boucle RRRRééééppppééééter jusquter jusquter jusquter jusqu’à’à’à’à : exemple 2
Ecrire un algorithme qui compte le nombre de bits nécessaires pour coder
en binaire un entier n.
Solution :
Variables i, n, nb : entiers
Debut
Ecrire(" Entrer la valeur de n :")
lire(n)
i n
nb 0
Répéter
i i/2
nb nb + 1
jusqu’à (i=0)
Ecrire("Pour coder ",n," en binaire il faut ",nb, "bits")
Fin
2007/2008 Info2, 1ère année SM/SMI 67
Les boucles Tant que et Répéter jusqu’à
Différences entre les boucles Tant que et Répéter jusqu'à :
- la séquence d'instructions est exécutée au moins une fois dans
la boucle Répéter jusqu'à, alors qu'elle peut ne pas être exécutée
dans le cas du Tant que.
- la séquence d'instructions est exécutée si la condition est vraie
pour Tant que et si la condition est fausse pour Répéter
jusqu'à.
- Dans les deux cas, la séquence d'instructions doit
nécessairement faire évoluer la condition, faute de quoi on
obtient une boucle infinie.
2007/2008 Info2, 1ère année SM/SMI 68
Les boucles PourLes boucles PourLes boucles PourLes boucles Pour
Pour compteur allant de initiale à finale par pas valeur du pas
instructions
FinPour
i n’a pas atteint finale instructions
Vrai
Faux
i←i+pas
i←initiale
2007/2008 Info2, 1ère année SM/SMI 69
Les boucles PourLes boucles PourLes boucles PourLes boucles Pour
Remarque : le nombre d'itérations dans une boucle Pour est
connu avant le début de la boucle
Compteur est une variable de type entier (ou caractère). Elle
doit être déclarée
Pas est un entier qui peut être positif ou négatif. Pas peut ne
pas être mentionné, car par défaut sa valeur est égal à 1. Dans
ce cas, le nombre d'itérations est égal à finale - initiale+ 1
Initiale et finale peuvent être des valeurs, des variables
définies avant le début de la boucle ou des expressions de
même type que compteur
2007/2008 Info2, 1ère année SM/SMI 70
DDDDééééroulement des boucles Pourroulement des boucles Pourroulement des boucles Pourroulement des boucles Pour
1) La valeur initiale est affectée à la variable compteur
2) On compare la valeur du compteur et la valeur de finale :
a) Si la valeur du compteur est > à la valeur finale dans le cas d'un
pas positif (ou si compteur est < à finale pour un pas négatif), on sort
de la boucle et on continue avec l'instruction qui suit FinPour
b) Si compteur est <= à finale dans le cas d'un pas positif (ou si
compteur est >= à finale pour un pas négatif), instructions seront
exécutées
i. Ensuite, la valeur du compteur est incrémentée de la valeur du pas
si pas est positif (ou décrémenté si pas est négatif)
ii. On recommence l'étape 2 : La comparaison entre compteur et
finale est de nouveau effectuée, et ainsi de suite …
2007/2008 Info2, 1ère année SM/SMI 71
Boucle Pour : exemple 1 (forme 1)Boucle Pour : exemple 1 (forme 1)Boucle Pour : exemple 1 (forme 1)Boucle Pour : exemple 1 (forme 1)
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 respectivement les valeurs de x et n ")
Lire (x, n)
puiss ← 1
Pour i allant de 1 à n
puiss← puiss*x
FinPour
Ecrire (x, " à la puissance ", n, " est égal à ", puiss)
Fin
2007/2008 Info2, 1ère année SM/SMI 72
Boucle Pour : exemple1 (forme 2)Boucle Pour : exemple1 (forme 2)Boucle Pour : exemple1 (forme 2)Boucle Pour : exemple1 (forme 2)
Calcul de x à la puissance n où x est un réel non nul et n un entier
positif ou nul (forme 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 allant de n à 1 par pas -1
puiss← puiss*x
FinPour
Ecrire (x, " à la puissance ", n, " est égal à ", puiss)
Fin
2007/2008 Info2, 1ère année SM/SMI 73
Boucle Pour : remarquesBoucle Pour : remarquesBoucle Pour : remarquesBoucle Pour : remarques
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 allant de 1 à 5
i ←i -1
écrire(" i = ", i)
Finpour
2007/2008 Info2, 1ère année SM/SMI 74
Lien entre Pour etLien entre Pour etLien entre Pour etLien entre Pour et TantQueTantQueTantQueTantQue
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
2007/2008 Info2, 1ère année SM/SMI 75
Lien entre Pour etLien entre Pour etLien entre Pour etLien entre Pour et TantQueTantQueTantQueTantQue: exemple 1: exemple 1: exemple 1: exemple 1
Calcul de x à la puissance n où x est un réel non nul et n un entier
positif ou nul (forme avec TantQue)
Variables x, puiss : réel
n, i : entier
Debut
Ecrire (" Entrez respectivement les valeurs de x et n ")
Lire (x, n)
puiss ← 1, i ← 1
TantQue (i<=n)
puiss← puiss*x
i ← i+1
FinTantQue
Ecrire (x, " à la puissance ", n, " est égal à ", puiss)
Fin
2007/2008 Info2, 1ère année SM/SMI 76
Boucles : exercice
Ecrire un algorithme qui compte le nombre de 1 dans la représentation
binaire de l’entier n.
Solution :
Variables i, n, poids : entiers
Debut
Ecrire(" Entrer la valeur de n :")
lire(n)
i n
nbits 0
TantQue(i<>0) faire
si (i mod 2 = 1) alors poids poids + 1
i i/2
FinTantQue
Ecrire("Pour l’entier",n," le poids est : ",poids)
Fin
2007/2008 Info2, 1ère année SM/SMI 77
Boucles imbriquBoucles imbriquBoucles imbriquBoucles imbriquééééeseseses
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 OK
Pour j allant de 1 à i OOK
écrire("O") OOOK
FinPour OOOOK
écrire("K") OOOOOK
FinPour
2007/2008 Info2, 1ère année SM/SMI 78
Choix d'un type de boucle
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 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'à

Contenu connexe

Tendances

Chapitre iv algorithmes de tri
Chapitre iv algorithmes de triChapitre iv algorithmes de tri
Chapitre iv algorithmes de triSana Aroussi
 
Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Ines Ouaz
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java HéritageNadaBenLatifa
 
resume algo 2023.pdf
resume algo 2023.pdfresume algo 2023.pdf
resume algo 2023.pdfsalah fenni
 
Algorithme & structures de données Chap II
Algorithme & structures de données Chap IIAlgorithme & structures de données Chap II
Algorithme & structures de données Chap IIInes Ouaz
 
Devoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 siDevoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 siNarûtö Bàl'Sèm
 
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éesInes Ouaz
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage PythonAziz Darouichi
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-CorrectionLilia Sfaxi
 
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.pdfFadouaBouafifSamoud
 
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdfExercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdfsalah fenni
 
Exercices uml-corrige
Exercices uml-corrigeExercices uml-corrige
Exercices uml-corrigeAmineMouhout1
 
Cours tic complet
Cours tic completCours tic complet
Cours tic completsofixiito
 

Tendances (20)

Chapitre iv algorithmes de tri
Chapitre iv algorithmes de triChapitre iv algorithmes de tri
Chapitre iv algorithmes de tri
 
Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)
 
Cours algorithmique02
Cours algorithmique02Cours algorithmique02
Cours algorithmique02
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java Héritage
 
01 correction-td smia-s2-info2
01 correction-td smia-s2-info201 correction-td smia-s2-info2
01 correction-td smia-s2-info2
 
TP C++ : Correction
TP C++ : CorrectionTP C++ : Correction
TP C++ : Correction
 
resume algo 2023.pdf
resume algo 2023.pdfresume algo 2023.pdf
resume algo 2023.pdf
 
Algorithme & structures de données Chap II
Algorithme & structures de données Chap IIAlgorithme & structures de données Chap II
Algorithme & structures de données Chap II
 
Devoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 siDevoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 si
 
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
 
Ch1-Généralités.pdf
Ch1-Généralités.pdfCh1-Généralités.pdf
Ch1-Généralités.pdf
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage Python
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-Correction
 
Chapitre 01 - Notions de base
Chapitre 01 - Notions de baseChapitre 01 - Notions de base
Chapitre 01 - Notions de base
 
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
 
Algorithme
AlgorithmeAlgorithme
Algorithme
 
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdfExercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
 
Fascicule tp programmation c
Fascicule tp programmation cFascicule tp programmation c
Fascicule tp programmation c
 
Exercices uml-corrige
Exercices uml-corrigeExercices uml-corrige
Exercices uml-corrige
 
Cours tic complet
Cours tic completCours tic complet
Cours tic complet
 

En vedette

exercices-corriges-dalgorithmique
exercices-corriges-dalgorithmiqueexercices-corriges-dalgorithmique
exercices-corriges-dalgorithmiquefast xp
 
Suzanne Briet, madame documentation
Suzanne Briet, madame documentationSuzanne Briet, madame documentation
Suzanne Briet, madame documentationdiankha
 
la 5e école primaire de kastoria comenius 2011-2013
la 5e école primaire de kastoria comenius 2011-2013la 5e école primaire de kastoria comenius 2011-2013
la 5e école primaire de kastoria comenius 2011-2013Katerina Papayannopoulou
 
Programmation fonctionnelle
Programmation fonctionnelleProgrammation fonctionnelle
Programmation fonctionnelleJean Detoeuf
 
Exercices pascal tous les chapitres
Exercices pascal tous les chapitresExercices pascal tous les chapitres
Exercices pascal tous les chapitresborhen boukthir
 
Scala : programmation fonctionnelle
Scala : programmation fonctionnelleScala : programmation fonctionnelle
Scala : programmation fonctionnelleMICHRAFY MUSTAFA
 
Cours d'anglais
Cours d'anglais Cours d'anglais
Cours d'anglais mario mano
 
Introduction à la programmation fonctionnelle
Introduction à la programmation fonctionnelle Introduction à la programmation fonctionnelle
Introduction à la programmation fonctionnelle Marine Karam
 
Programmation fonctionnelle
Programmation fonctionnelleProgrammation fonctionnelle
Programmation fonctionnelleGeeks Anonymes
 
Allegement anglais (enregistré automatiquement)
Allegement anglais (enregistré automatiquement)Allegement anglais (enregistré automatiquement)
Allegement anglais (enregistré automatiquement)Mr Bounab Samir
 
Presentation du langage Linotte
Presentation du langage LinottePresentation du langage Linotte
Presentation du langage Linottemetalm
 

En vedette (20)

Correction
CorrectionCorrection
Correction
 
exercices-corriges-dalgorithmique
exercices-corriges-dalgorithmiqueexercices-corriges-dalgorithmique
exercices-corriges-dalgorithmique
 
Algorithme
AlgorithmeAlgorithme
Algorithme
 
MESSAOUDI Chaker Abd Eldjalel
MESSAOUDI Chaker Abd EldjalelMESSAOUDI Chaker Abd Eldjalel
MESSAOUDI Chaker Abd Eldjalel
 
Suzanne Briet, madame documentation
Suzanne Briet, madame documentationSuzanne Briet, madame documentation
Suzanne Briet, madame documentation
 
la 5e école primaire de kastoria comenius 2011-2013
la 5e école primaire de kastoria comenius 2011-2013la 5e école primaire de kastoria comenius 2011-2013
la 5e école primaire de kastoria comenius 2011-2013
 
Programmation Fonctionnelle
Programmation FonctionnelleProgrammation Fonctionnelle
Programmation Fonctionnelle
 
Audacity
AudacityAudacity
Audacity
 
Programmation fonctionnelle
Programmation fonctionnelleProgrammation fonctionnelle
Programmation fonctionnelle
 
Arthrose et arthrite
Arthrose et arthriteArthrose et arthrite
Arthrose et arthrite
 
Electricité
ElectricitéElectricité
Electricité
 
Exercices pascal tous les chapitres
Exercices pascal tous les chapitresExercices pascal tous les chapitres
Exercices pascal tous les chapitres
 
Scala : programmation fonctionnelle
Scala : programmation fonctionnelleScala : programmation fonctionnelle
Scala : programmation fonctionnelle
 
Les Services à distance Mediaquitaine 23 mars 2010
Les Services à distance Mediaquitaine 23 mars 2010Les Services à distance Mediaquitaine 23 mars 2010
Les Services à distance Mediaquitaine 23 mars 2010
 
Cours d'anglais
Cours d'anglais Cours d'anglais
Cours d'anglais
 
Introduction à la programmation fonctionnelle
Introduction à la programmation fonctionnelle Introduction à la programmation fonctionnelle
Introduction à la programmation fonctionnelle
 
Programmation fonctionnelle
Programmation fonctionnelleProgrammation fonctionnelle
Programmation fonctionnelle
 
Serie2
Serie2Serie2
Serie2
 
Allegement anglais (enregistré automatiquement)
Allegement anglais (enregistré automatiquement)Allegement anglais (enregistré automatiquement)
Allegement anglais (enregistré automatiquement)
 
Presentation du langage Linotte
Presentation du langage LinottePresentation du langage Linotte
Presentation du langage Linotte
 

Similaire à Cours algorithme

Algorithmique et methodes de programmation
Algorithmique et methodes de programmationAlgorithmique et methodes de programmation
Algorithmique et methodes de programmationSageKataliko1
 
Chapitre 1 (algorithme)
Chapitre 1 (algorithme)Chapitre 1 (algorithme)
Chapitre 1 (algorithme)mahbouba
 
cours fortran.pptx
cours fortran.pptxcours fortran.pptx
cours fortran.pptxMED B
 
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.comcoursedu
 
Algorithme et programmation.pdf
Algorithme et programmation.pdfAlgorithme et programmation.pdf
Algorithme et programmation.pdfGhassenHaamdi
 
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)rezgui mohamed
 
Syntaxe concrète des DSL en IDM [avec Xtext]
Syntaxe concrète des DSL en IDM [avec Xtext]Syntaxe concrète des DSL en IDM [avec Xtext]
Syntaxe concrète des DSL en IDM [avec Xtext]Olivier Le Goaër
 
resume-theorique-m106-2004-6261bb9556a66.pdf
resume-theorique-m106-2004-6261bb9556a66.pdfresume-theorique-m106-2004-6261bb9556a66.pdf
resume-theorique-m106-2004-6261bb9556a66.pdfFootballLovers9
 
COURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptxCOURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptxLuneSabsPericolo1
 
Langage de Programmation.pdf
Langage de Programmation.pdfLangage de Programmation.pdf
Langage de Programmation.pdfAboubacarDiarra10
 
UML Part1-Introduction Mansouri
UML Part1-Introduction MansouriUML Part1-Introduction Mansouri
UML Part1-Introduction MansouriMansouri Khalifa
 
Objectif algorithme
Objectif algorithmeObjectif algorithme
Objectif algorithmewwwsaidnet
 

Similaire à Cours algorithme (20)

Asd
AsdAsd
Asd
 
Ktab asd
Ktab asdKtab asd
Ktab asd
 
Algorithmique et methodes de programmation
Algorithmique et methodes de programmationAlgorithmique et methodes de programmation
Algorithmique et methodes de programmation
 
Chapitre 1 (algorithme)
Chapitre 1 (algorithme)Chapitre 1 (algorithme)
Chapitre 1 (algorithme)
 
cours fortran.pptx
cours fortran.pptxcours fortran.pptx
cours fortran.pptx
 
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
 
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
 
C#
C#C#
C#
 
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)
 
Syntaxe concrète des DSL en IDM [avec Xtext]
Syntaxe concrète des DSL en IDM [avec Xtext]Syntaxe concrète des DSL en IDM [avec Xtext]
Syntaxe concrète des DSL en IDM [avec Xtext]
 
resume-theorique-m106-2004-6261bb9556a66.pdf
resume-theorique-m106-2004-6261bb9556a66.pdfresume-theorique-m106-2004-6261bb9556a66.pdf
resume-theorique-m106-2004-6261bb9556a66.pdf
 
COURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptxCOURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptx
 
Langage de Programmation.pdf
Langage de Programmation.pdfLangage de Programmation.pdf
Langage de Programmation.pdf
 
Intro algo prog
Intro algo progIntro algo prog
Intro algo prog
 
coursalgorithmique9-10.ppt
coursalgorithmique9-10.pptcoursalgorithmique9-10.ppt
coursalgorithmique9-10.ppt
 
Chapitre 1 rappel
Chapitre 1 rappelChapitre 1 rappel
Chapitre 1 rappel
 
Chapitre 1 rappel
Chapitre 1 rappelChapitre 1 rappel
Chapitre 1 rappel
 
UML Part1-Introduction Mansouri
UML Part1-Introduction MansouriUML Part1-Introduction Mansouri
UML Part1-Introduction Mansouri
 
Objectif algorithme
Objectif algorithmeObjectif algorithme
Objectif algorithme
 

Plus de badr zaimi

Automatisme industriel (1)
Automatisme industriel (1)Automatisme industriel (1)
Automatisme industriel (1)badr zaimi
 
Exercice corrigés e p
Exercice corrigés e pExercice corrigés e p
Exercice corrigés e pbadr zaimi
 
Electronique de puissance
Electronique de puissanceElectronique de puissance
Electronique de puissancebadr zaimi
 
Pic microcontrollers (www.livre technique.com)
Pic microcontrollers (www.livre technique.com)Pic microcontrollers (www.livre technique.com)
Pic microcontrollers (www.livre technique.com)badr zaimi
 
Basesappliqueesallemand
BasesappliqueesallemandBasesappliqueesallemand
Basesappliqueesallemandbadr zaimi
 
La sécurité sociale
La sécurité sociale La sécurité sociale
La sécurité sociale badr zaimi
 
contrôle non destructif
contrôle non destructifcontrôle non destructif
contrôle non destructifbadr zaimi
 
Automatique systémes linéaires et non linéaires 2
Automatique   systémes linéaires et non linéaires 2Automatique   systémes linéaires et non linéaires 2
Automatique systémes linéaires et non linéaires 2badr zaimi
 
08 automates programmables
08 automates programmables08 automates programmables
08 automates programmablesbadr zaimi
 

Plus de badr zaimi (12)

Automatisme industriel (1)
Automatisme industriel (1)Automatisme industriel (1)
Automatisme industriel (1)
 
Exercice corrigés e p
Exercice corrigés e pExercice corrigés e p
Exercice corrigés e p
 
Electronique de puissance
Electronique de puissanceElectronique de puissance
Electronique de puissance
 
Pic microcontrollers (www.livre technique.com)
Pic microcontrollers (www.livre technique.com)Pic microcontrollers (www.livre technique.com)
Pic microcontrollers (www.livre technique.com)
 
Basesappliqueesallemand
BasesappliqueesallemandBasesappliqueesallemand
Basesappliqueesallemand
 
La sécurité sociale
La sécurité sociale La sécurité sociale
La sécurité sociale
 
ISO 50001
ISO 50001ISO 50001
ISO 50001
 
Ergonomie
Ergonomie Ergonomie
Ergonomie
 
6 Sigma
6 Sigma6 Sigma
6 Sigma
 
contrôle non destructif
contrôle non destructifcontrôle non destructif
contrôle non destructif
 
Automatique systémes linéaires et non linéaires 2
Automatique   systémes linéaires et non linéaires 2Automatique   systémes linéaires et non linéaires 2
Automatique systémes linéaires et non linéaires 2
 
08 automates programmables
08 automates programmables08 automates programmables
08 automates programmables
 

Cours algorithme

  • 1. 2007/2008 Info2, 1ère année SM/SMI 1 Cours d’Informatique 1ère année SM/SMI 2007/2008, Info2 Département de Mathématiques et d’Informatique, Université Mohammed V elbenani@hotmail.com sayah@fsr.ac.ma
  • 2. 2007/2008 Info2, 1ère année SM/SMI 2 Objectif et plan du cours Objectif : • Apprendre les concepts de base de l'algorithmique et de la programmation • Être capable de mettre en oeuvre ces concepts pour analyser des problèmes simples et écrire les programmes correspondants Plan : introduction à l’algorithmique et à la programmation • Généralités sur l’algorithmique et les langages de programmation • Notion de variable, affectation, lecture et écriture • Instructions conditionnels et instructions itératives • Les Tableaux, les fonctions et procédures, la récursivité • Introduction à la complexité des algorithmes • Données structurées • Initiation au Langage C (Travaux pratiques)
  • 3. 2007/2008 Info2, 1ère année SM/SMI 3 Programme Un programme correspond à la description d’une méthode de résolution pour un problème donné. Cette description est effectuée par une suite d’instructions d’un langage de programmation Ces instructions permettent de traiter et de transformer les données (entrées) du problème à résoudre pour aboutir à des résultats (sorties). Un programme n’est pas une solution en soi mais une méthode à suivre pour trouver les solutions.
  • 4. 2007/2008 Info2, 1ère année SM/SMI 4 Langages informatiques Un langage informatique est un code de communication, permettant à un être humain de dialoguer avec une machine en lui soumettant des instructions et en analysant les données matérielles fournies par le système. Le langage informatique est l’intermédiaire entre le programmeur et la machine. Il permet d’écrire des programmes (suite consécutive d’instructions) destinés à effectuer une tache donnée • Exemple : un programme de résolution d’une équation du second degré Programmation : ensemble des activités orientées vers la conception, la réalisation, le test et la maintenance de programmes.
  • 5. 2007/2008 Info2, 1ère année SM/SMI 5 Langages de programmationLangages de programmationLangages de programmationLangages de programmation Deux types de langages: • Langages procéduraux : Fortran, Cobol,Fortran, Cobol, Pascal, C,Pascal, C, …… • Langages orientés objets : C++, Java, C#,C++, Java, C#,…… Le choix d'un langage de programmation n'est pas facile, chacun a ses spécificités et correspond mieux à certains types d'utilisations
  • 6. 2007/2008 Info2, 1ère année SM/SMI 6 Notion d’algorithme Un programme informatique permet à l’ordinateur de résoudre un problème • Avant de communiquer à l’ordinateur comment résoudre ce problème, il faut en premier lieu pouvoir le résoudre nous même Un algorithme peut se comparer à une recette de cuisine • Le résultat c’est comme le plat à cuisiner • Les données sont l’analogues des ingrédients de la recette • Les règles de transformations se comparent aux directives ou instructions de la recette
  • 7. 2007/2008 Info2, 1ère année SM/SMI 7 Algorithme informatique Un algorithme est une suite d’instructions ayant pour but de résoudre un problème donné. Ces instructions doivent être exécutées de façon automatique par un ordinateur. Exemples: – préparer une recette de cuisine – montrer le chemin à un touriste – programmer un magnétoscope – etc ...
  • 8. 2007/2008 Info2, 1ère année SM/SMI 8 Algorithme : exemple Pour trouver une valeur approximative de la racine carrée de x: • prendre une approximation initiale arbitraire G • améliorer cette approximation en calculant la moyenne arithmétique entre G et x/G • continuer jusqu'à atteindre la précision souhaitée Exemple : pour x=2 X = 2 G = 1 X/G = 2 G = ½ (1+ 2) = 1.5 X/G = 4/3 G = ½ (3/2 + 4/3) = 17/12 = 1.416666 X/G = 24/17 G = ½ (17/12 + 24/17) = 577/408 = 1.4142156 x
  • 9. 2007/2008 Info2, 1ère année SM/SMI 9 Algorithme et programme L’élaboration d’un algorithme précède l’étape de programmation • Un programme est un algorithme • Un langage de programmation est un langage compris par l'ordinateur L’élaboration d’un algorithme est une démarche de résolution de problème exigeante La rédaction d’un algorithme est un exercice de réflexion qui se fait sur papier • L'algorithme est indépendant du langage de programmation • Par exemple, on utilisera le même algorithme pour une implantation en Java, ou bien en C++ ou en Visual Basic • L’algorithme est la résolution brute d’un problème informatique
  • 10. 2007/2008 Info2, 1ère année SM/SMI 10 AlgorithmiqueAlgorithmiqueAlgorithmiqueAlgorithmique algorithme = méthode de résolution algorithme vient du nom du célèbre mathématicien arabe Al Khawarizmi (Abu Ja'far Mohammed Ben Mussa Al-Khwarismi) •http ://trucsmaths.free.fr/alkhwarizmi.htm •http://publimath.irem.univ-mrs.fr/glossaire/AL016.htm 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
  • 11. 2007/2008 Info2, 1ère année SM/SMI 11 algorithmique Conception – comment développer un algorithme? – quelles techniques produisent de bons algorithmes? Analyse – étant donné un algorithme, quelles sont ses qualités? – est-il adapté au problème? – est-il efficace? – comment mesurer ses performances? Étant donné un problème sans solution évidente, comment peut on le résoudre? – en considérant les problèmes similaires connus, – en considérant les solutions analogues - algorithmes - connues, – en faisant marcher son imagination !!! Processus de développement : analyse codage test fin découverte d’erreurs demandes d’améliorations
  • 12. 2007/2008 Info2, 1ère année SM/SMI 12 Propriétés d’un algorithme Un algorithme doit: – avoir un nombre fini d’étapes, – avoir un nombre fini d’opérations par étape, – se terminer après un nombre fini d’opérations, – fournir un résultat. Chaque opération doit être: – définie rigoureusement et sans ambiguïté – effective, c-à-d réalisable par une machine Le comportement d'un algorithme est déterministe.
  • 13. 2007/2008 Info2, 1ère année SM/SMI 13 ReprReprReprRepréééésentation dsentation dsentation dsentation d’’’’un algorithmeun algorithmeun algorithmeun algorithme Historiquement, deux façons pour représenter un algorithme: L’Organigramme: représentation graphique avec des symboles (carrés, losanges, etc.) • offre une vue d’ensemble de l’algorithme • représentation quasiment abandonnée aujourd’hui Le pseudo-code: représentation textuelle avec une série de conventions ressemblant à un langage de programmation • plus pratique pour écrire un algorithme • représentation largement utilisée
  • 14. 2007/2008 Info2, 1ère année SM/SMI 14 AlgorithmiqueAlgorithmiqueAlgorithmiqueAlgorithmique Notions et Instructions de base
  • 15. 2007/2008 Info2, 1ère année SM/SMI 15 instructions de base Un programme informatique est formé de quatre types d’instructions considérées comme des petites briques de base : • l’affectation de variables • la lecture et/ou l’écriture • les tests • les boucles
  • 16. 2007/2008 Info2, 1ère année SM/SMI 16 Notion de variable Une variable sert à stocker la valeur d’une donnée dans un langage de programmation Une variable désigne un emplacement mémoire dont le contenu peut changer au cours d’un programme (d’où le nom de variable) Chaque emplacement mémoire a un numéro qui permet d'y faire référence de façon unique : c'est l'adresse mémoire de cette cellule. Règle : La variable doit être déclarée avant d’être utilisée, elle doit être caractérisée par : • un nom (Identificateur) • un type qui indique l’ensemble des valeurs que peut prendre la variable (entier, réel, booléen, caractère, chaîne de caractères, …) • Une valeur
  • 17. 2007/2008 Info2, 1ère année SM/SMI 17 Identificateurs : rIdentificateurs : rIdentificateurs : rIdentificateurs : rèèèèglesglesglesgles Le choix du nom d’une variable 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 : E1 (1E n’est pas valide) • doit être constitué uniquement de lettres, de chiffres et du soulignement (« _ ») (Éviter les caractères de ponctuation et les espaces) Exemples : SMI2008, SMI_2008 (SMP 2008, SMP-2008, SMP;2008 : sont non valides) • doit être différent des mots réservés du langage (par exemple en C: int, float, double, switch, case, for, main, return, …) • La longueur du nom doit être inférieure à la taille maximale spécifiée par le langage utilisé
  • 18. 2007/2008 Info2, 1ère année SM/SMI 18 Identificateurs : conseilsIdentificateurs : conseilsIdentificateurs : conseilsIdentificateurs : conseils Conseil: pour la lisibilité du code choisir des noms significatifs qui décrivent les données manipulées exemples: NoteEtudiant, Prix_TTC, Prix_HT Remarque: en pseudo-code algorithmique, on va respecter les règles citées, même si on est libre dans la syntaxe
  • 19. 2007/2008 Info2, 1ère année SM/SMI 19 Types des variablesTypes des variablesTypes des variablesTypes des variables Le type d’une variable détermine l’ensemble des valeurs qu’elle peut prendre. Les types offerts par la plus part des langages sont: • Type numérique (entier ou réel) • Byte (codé sur 1octet): de [-27,27[ ou [0, 28[ • Entier court (codé sur 2 octets) : [-215,215[ • Entier long (codé sur 4 octets): [-231,231[ • Réel simple précision (codé sur 4 octets) : précision d’ordre 10-7 • Réel double précision (codé sur 8 octets) : précision d’ordre 10-14 • Type logique ou booléen: deux valeurs VRAI ou FAUX • Type caractère: lettres majuscules, minuscules, chiffres, symboles,.. Exemples : ’A’, ’b’, ’1’, ’?’, … • Type chaîne de caractère: toute suite de caractères Exemples: " " , " Nom, Prénom", "code postale: 1000", …
  • 20. 2007/2008 Info2, 1ère année SM/SMI 20 DDDDééééclaration des variablesclaration des variablesclaration des variablesclaration des variables Rappel: toute variable utilisée dans un programme doit avoir fait l’objet d’une déclaration préalable En pseudo-code, la déclaration de variables est effectuée par la forme suivante : Variables liste d'identificateurs : type Exemple: Variables i, j, k : entier x, y : réel OK: booléen Ch1, ch2 : chaîne de caractères
  • 21. 2007/2008 Info2, 1ère année SM/SMI 21 Variables : remarques pour le type numérique, on va se limiter aux entiers et réels sans considérer les sous types Pour chaque type de variables, il existe un ensemble d'opérations correspondant. Une variable est l'association d'un nom avec un type, permettant de mémoriser une valeur de ce type.
  • 22. 2007/2008 Info2, 1ère année SM/SMI 22 Constante Une constante est une variable dont la valeur ne change pas au cours de l'exécution du programme, elle peut être un nombre, un caractère, ou une chaine de caractères. En pseudo-code, Constante identificateur=valeur : type,… (par convention, les noms de constantes sont en majuscules) Exemple : pour calculer la surface des cercles, la valeur de pi est une constante mais le rayon est une variable. Constante PI=3.14 : réel, MAXI=32 : entier Une constante doit toujours recevoir une valeur dès sa déclaration.
  • 23. 2007/2008 Info2, 1ère année SM/SMI 23 AffectationAffectationAffectationAffectation L’affectation consiste à attribuer une valeur à une variable (c’est-à-dire remplir ou modifier le contenu d'une zone mémoire) En pseudo-code, l'affectation est notée par 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 Exemples : i ←1 j ←i k ←i+j x ←10.3 OK ←FAUX ch1 ←"SMI" ch2 ←ch1 x ←4 x ←j (avec i, j, k : entier; x :réel; ok :booléen; ch1,ch2 :chaine de caractères) Exemples non valides: i ←10.3 OK ←"SMI" j ←x
  • 24. 2007/2008 Info2, 1ère année SM/SMI 24 AffectationAffectationAffectationAffectation Les langages de programmation C, C++, Java, … utilisent le signe égal = pour l’affectation ←. Remarques : • Lors d’une affectation, l’expression de droite est évaluée et la valeur trouvée est affectée à la variable de gauche. Ainsi, A←B est différente de B←A • l'affectation est différente d'une équation mathématique : • Les opérations x ← x+1 et x ← x-1 ont un sens en programmation et se nomment respectivement incrémentation et décrémentation. • A+1 ← 3 n'est pas possible en langages de programmation et n'est pas équivalente à A ← 2 • 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.
  • 25. 2007/2008 Info2, 1ère année SM/SMI 25 Syntaxe générale de l’algorithme Algo exemple /* La partie déclaration de l’algorithme */ Constantes // les constantes nécessitent une valeur dès leur déclaration var1←20 : entier var2←"bonjour!" : chaîne Variables // les variables proprement dites var3, var4 : réels var5 : chaîne Début // corps de l’algorithme /* instructions */ Fin
  • 26. 2007/2008 Info2, 1ère année SM/SMI 26 la séquence des instructions Les opérations d'un algorithme sont habituellement exécutées une à la suite de l'autre, en séquence (de haut en bas et de gauche à droite). L'ordre est important. On ne peut pas changer cette séquence de façon arbitraire. Par exemple, enfiler ses bas puis enfiler ses bottes n’est pas équivalent à enfiler ses bottes puis enfiler ses bas. Fiche 2.6
  • 27. 2007/2008 Info2, 1ère année SM/SMI 27 Affectation : exercicesAffectation : exercicesAffectation : exercicesAffectation : exercices Donnez les valeurs des variables A, B et C après exécution des instructions suivantes ? Variables A, B, C: Entier Début A ← 7 B ← 17 A ← B B ← A+5 C ← A + B C ← B – A Fin
  • 28. 2007/2008 Info2, 1ère année SM/SMI 28 Affection : exercicesAffection : exercicesAffection : exercicesAffection : exercices Donnez les valeurs des variables A et B après exécution des instructions suivantes ? Variables A, B : Entier Début A ← 6 B ← 2 A ← B B ← A Fin Les deux dernières instructions permettent-elles d’échanger les valeurs de A et B ?
  • 29. 2007/2008 Info2, 1ère année SM/SMI 29 Affectation : lAffectation : lAffectation : lAffectation : l’é’é’é’échange des chandailschange des chandailschange des chandailschange des chandails A 0. 1. 2. 3. B A B A B A B Fiche 2.6
  • 30. 2007/2008 Info2, 1ère année SM/SMI 30 Affectation :Affectation :Affectation :Affectation : ééééchangeschangeschangeschanges Écrire un algorithme permettant d’échanger les valeurs de deux variables A et B ? Réponse : on utilise une variable auxiliaire C et on écrit les instructions suivantes : C A ; A B ; B C ;
  • 31. 2007/2008 Info2, 1ère année SM/SMI 31 Expressions et opérateurs Une expression peut être une valeur, une variable ou une opération constituée de variables reliées par des opérateurs exemples: 1, b, a*2, a+ 3*b-c, … L'évaluation de l'expression fournit une valeur unique qui est le résultat de l'opération Les opérateurs dépendent du type de l'opération, ils peuvent être : • des opérateurs arithmétiques: +, -, *, /, % (modulo), ^(puissance) • des opérateurs logiques: NON(!), OU(| |), ET (&&) • des opérateurs relationnels: =, <, >, <=, >= • des opérateurs sur les chaînes: & (concaténation) Une expression est évaluée de gauche à droite mais en tenant compte des priorités des opérateurs.
  • 32. 2007/2008 Info2, 1ère année SM/SMI 32 Expression : remarques On ne peut pas additionner un entier et un caractère Toutefois dans certains langages on peut utiliser un opérateur avec deux opérandes de types différents, c’est par exemple le cas avec les types arithmétiques (4 + 5.5) La signification d’un opérateur peut changer en fonction du type des opérandes • l’opérateur + avec des entiers effectue l’addition, 3+6 vaut 9 • avec des chaînes de caractères il effectue la concaténation "bonjour" + " tout le monde" vaut "bonjour tout le monde"
  • 33. 2007/2008 Info2, 1ère année SM/SMI 33 Expression : remarques Pour le langage C, si x et y sont entiers, x/y est une division entière alors que si l’un des deux ne l’est pas la division est réelle x+y/z : est une expression arithmétique dont le type dépend des types de x, y et z (x>y) | | !(x=y+1) : est une expression booléenne (| | dénote l’opérateur logique ou et ! Dénote la négation) Avant d’utiliser une variable dans une expression, il est nécessaire qu’une valeur lui ait été affectée. La valeur de l’expression est évaluée au moment de l’affectation • x 4 • y 6 • z x+y • Ecrire(z) 10 • y 20 • Ecrire(z) 10 la modification de y après affectation n’a aucun effet sur la valeur de z
  • 34. 2007/2008 Info2, 1ère année SM/SMI 34 PrioritPrioritPrioritPrioritéééé des opdes opdes opdes opéééérateursrateursrateursrateurs Pour les opérateurs arithmétiques donnés ci-dessus, l'ordre de priorité est le suivant (du plus prioritaire au moins prioritaire) : • () : les parenthèses • ^ : (élévation à la puissance) • * , / (multiplication, division) • % (modulo) • + , - (addition, soustraction) exemple: 9 + 3 * 4 vaut 21 En cas de besoin, on utilise les parenthèses pour indiquer les opérations à effectuer en priorité exemple: (9 + 3) * 4 vaut 48 À priorité égale, l’évaluation de l’expression se fait de gauche à droite
  • 35. 2007/2008 Info2, 1ère année SM/SMI 35 Les opérateurs booléens Associativité des opérateurs et et ou a et (b et c) = (a et b) et c Commutativité des opérateurs et et ou a et b = b et a a ou b = b ou a Distributivité des opérateurs et et ou a ou (b et c) = (a ou b) et (a ou c) a et (b ou c) = (a et b) ou (a et c) Involution (homographie réciproque) : non non a = a Loi de Morgan : non (a ou b) = non a et non b non (a et b) = non a ou non b Exemple : soient a, b, c et d quatre entiers quelconques : (a<b)| |((a>=b)&&(c==d)) (a<b)| |(c==d) car (a<b)| |(!(a<b)) est toujours vraie
  • 36. 2007/2008 Info2, 1ère année SM/SMI 36 Tables de vTables de vTables de vTables de vééééritritritritéééé FauxFauxFauxFauxFaux VraiVraiFauxVraiFaux VraiVraiFauxFauxVrai FauxVraiVraiVraiVrai C1 XOR C2C1 ou C2C1 et C2C2C1 VraiFaux FauxVrai Non C1C1
  • 37. 2007/2008 Info2, 1ère année SM/SMI 37 Les instructions dLes instructions dLes instructions dLes instructions d’’’’entrentrentrentréééées etes etes etes et sorties : lecture etsorties : lecture etsorties : lecture etsorties : lecture et éééécriturecriturecriturecriture 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 saisie de l’entrée attendue par le clavier et de la touche Entrée (cette touche signale la fin de l’entrée) 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. 2007/2008 Info2, 1ère année SM/SMI 38 Les instructions dLes instructions dLes instructions dLes instructions d’’’’entrentrentrentréééées etes etes etes et sorties : lecture etsorties : lecture etsorties : lecture etsorties : lecture et éééécriturecriturecriturecriture L'écriture permet d'afficher des résultats à l'écran (ou de les écrire dans un fichier) • En pseudo-code, on note: écrire (liste d’expressions) la machine affiche les valeurs des expressions décrite dans la liste. Ces instructions peuvent être des variables ayant des valeurs, des nombres ou des commentaires sous forme de chaines de caractères. Exemple : écrire(a, b+2, "Message")
  • 39. 2007/2008 Info2, 1ère année SM/SMI 39 Exemple : lecture etExemple : lecture etExemple : lecture etExemple : lecture et éééécriturecriturecriturecriture Écrire un algorithme qui demande un nombre entier à l'utilisateur, puis qui calcule et affiche le carré de ce nombre Algorithme Calcul_du_Carre Rôle : calcul du carre Données : un entier Résultats : le carre du nombre variables A, B : entier Début écrire("entrer la valeur de A ") lire(A) B ← A*A écrire("le carre de ", A, "est :", B) Fin
  • 40. 2007/2008 Info2, 1ère année SM/SMI 40 Exercice : lecture etExercice : lecture etExercice : lecture etExercice : lecture et éééécriturecriturecriturecriture Écrire un algorithme qui permet d’effectuer la saisie d’un nom, d’un prénom et affiche ensuite le nom complet Algorithme AffichageNomComplet … variables Nom, Prenom, Nom_Complet : chaîne de caractères Début écrire("entrez le nom") lire(Nom) écrire("entrez le prénom") lire(Prenom) Nom_Complet ← Nom & " " & Prenom écrire("Votre nom complet est : ", Nom_Complet) Fin
  • 41. 2007/2008 Info2, 1ère année SM/SMI 41 Tests: instructions conditionnellesTests: instructions conditionnellesTests: instructions conditionnellesTests: instructions conditionnelles Définition : une condition est une expression écrite entre parenthèse à valeur booléenne. Les instructions conditionnelles servent à n'exécuter une instruction ou une séquence d'instructions que si une condition est vérifiée. En pseudo-code : Si condition alors instruction ou suite d'instructions1 Sinon instruction ou suite d'instructions2 Finsi
  • 42. 2007/2008 Info2, 1ère année SM/SMI 42 instructions conditionnellesinstructions conditionnellesinstructions conditionnellesinstructions conditionnelles Suite d’instructions 2 test Suite d’instructions 1 Vraie Faux
  • 43. 2007/2008 Info2, 1ère année SM/SMI 43 Instructions conditionnellesInstructions conditionnellesInstructions conditionnellesInstructions conditionnelles Remarques : • la condition ne peut être que vraie ou fausse • si la condition est vraie alors seules les instructions1 sont exécutées • si la condition est fausse seules les instructions2 sont exécutées • la condition peut être une expression booléenne simple ou une suite composée d’expressions booléennes La partie Sinon est optionnelle, on peut avoir la forme simplifiée suivante: Si condition alors instruction ou suite d'instructions1 Finsi
  • 44. 2007/2008 Info2, 1ère année SM/SMI 44 SiSiSiSi…………AlorsAlorsAlorsAlors…………Sinon : exempleSinon : exempleSinon : exempleSinon : exemple Algorithme ValeurAbsolue1 Rôle : affiche la valeur absolue d’un entier Données : la valeur à calculer Résultat : la valeur absolue 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
  • 45. 2007/2008 Info2, 1ère année SM/SMI 45 SiSiSiSi…………Alors : exempleAlors : exempleAlors : exempleAlors : exemple Algorithme ValeurAbsolue2 … 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
  • 46. 2007/2008 Info2, 1ère année SM/SMI 46 Exercice (tests)Exercice (tests)Exercice (tests)Exercice (tests) Écrire un algorithme qui demande un nombre entier à l'utilisateur, puis qui teste et affiche s'il est divisible par 7 ou non Algorithme Divsible_par7 … Variable n : entier Début Ecrire (" Entrez un entier : ") Lire (n) Si (n%7=0) alors Ecrire (n," est divisible par 7") Sinon Ecrire (n," n'est pas divisible par 7") Finsi Fin
  • 47. 2007/2008 Info2, 1ère année SM/SMI 47 Conditions composConditions composConditions composConditions composééééeseseses 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é
  • 48. 2007/2008 Info2, 1ère année SM/SMI 48 Tests imbriquTests imbriquTests imbriquTests imbriquééééssss 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
  • 49. 2007/2008 Info2, 1ère année SM/SMI 49 Tests imbriquTests imbriquTests imbriquTests imbriquéééés : exemple 1s : exemple 1s : exemple 1s : exemple 1 Variable n : entier Début Ecrire ("entrez un nombre : ") Lire (n) Si n < 0 alors Ecrire ("Ce nombre est négatif") Sinon Si n = 0 alors Ecrire ("Ce nombre est nul") Sinon Ecrire ("Ce nombre est positif") Finsi Finsi Fin
  • 50. 2007/2008 Info2, 1ère année SM/SMI 50 Tests imbriquTests imbriquTests imbriquTests imbriquéééés : exemple 2s : exemple 2s : exemple 2s : exemple 2 Variable n : entier Début Ecrire ("entrez un nombre : ") Lire (n) Si n < 0 alors Ecrire ("Ce nombre est négatif") Finsi Si n = 0 alors Ecrire ("Ce nombre est nul") Finsi Si n > 0 alors Ecrire ("Ce nombre est positif") Finsi Fin Remarque : dans l’exemple 2 on fait trois tests systématiquement alors que dans l’exemple 1, si le nombre est négatif on ne fait qu'un seul test Conseil : utiliser les tests imbriqués pour limiter le nombre de tests et placer d'abord les conditions les plus probables
  • 51. 2007/2008 Info2, 1ère année SM/SMI 51 Tests imbriquTests imbriquTests imbriquTests imbriquéééés : exercices : exercices : exercices : exercice Le prix de disques compacts (CDs) dans espace de vente varie selon le nombre à acheter: 5 DH l’unité si le nombre de CDs à acheter est inférieur à 10, 4 DH l’unité si le nombre de CDS à acheter est compris entre 10 et 20 et 3 DH l’unité si le nombre de CDs à acheter est au-delà de 20. Écrivez un algorithme qui demande à l’utilisateur le nombre de CDs à acheter, qui calcule et affiche le prix à payer
  • 52. 2007/2008 Info2, 1ère année SM/SMI 52 Tests imbriquTests imbriquTests imbriquTests imbriquéééés : corrigs : corrigs : corrigs : corrigéééé Variables unites : entier prix : réel Début Ecrire ("Nombre d’unités : ") Lire (unites) Si unites < 10 Alors prix ← unites*5 Sinon Si unites < 20 alors prix ← unites*4 Sinon prix ← unites*3 Finsi Finsi Ecrire (“Le prix à payer est : ”, prix) Fin
  • 53. 2007/2008 Info2, 1ère année SM/SMI 53 Tests : remarques Un sinon se rapporte toujours au dernier si qui n’a pas encore de sinon associé Il est recommandé de structurer le bloc associé à si et celui associé à sinon Exemple : • Lire(a) • x ←1 • Si (a>= 0) alors si (a==0) alors x ←2 sinon x ←3 finsi finsi ecrire(x) a : -1 0 1 affichage : 1 2 3
  • 54. 2007/2008 Info2, 1ère année SM/SMI 54 L'instruction cas Lorsque l’on doit comparer une même variable avec plusieurs valeurs, comme par exemple : si a=1 alors instruction1 sinon si a=2 alors instruction2 sinon si a=4 alors instruction4 sinon . . . finsi finsi finsi On peut remplacer cette suite de si par l’instruction cas
  • 55. 2007/2008 Info2, 1ère année SM/SMI 55 L'instruction cas Sa syntaxe en pseudo-code est : cas où v vaut v1 : action1 v2 : action2 . . . vn : actionn autre : action autre fincas v1,. . . ,vn sont des constantes de type scalaire (entier, naturel, énuméré, ou caractère) action i est exécutée si v = vi (on quitte ensuite l’instruction cas) action autre est exécutée si quelque soit i, v ≠ vi
  • 56. 2007/2008 Info2, 1ère année SM/SMI 56 L'instruction cas : exemple … Variables c : caractère Début Ecrire(«entrer un caractère») Lire (c) Si((c>=’A’) et (c<=‘Z’)) alors cas où c vaut ‘A’,’E’, ‘I’, ‘O’, ‘U’, ‘Y’ : ecrire(c,«est une voyelle majuscule») autre : ecrire(c,« est une consonne majuscule ») fincas sinon ecrire(c,«n’est pas une lettre majuscule») Finsi Fin
  • 57. 2007/2008 Info2, 1ère année SM/SMI 57 Instructions itInstructions itInstructions itInstructions itéééératives : lesratives : lesratives : lesratives : les bouclesbouclesbouclesboucles Les boucles servent à répéter l'exécution d'un groupe d'instructions un certain nombre de fois On distingue trois sortes de boucles en langages de programmation : • Les boucles tant que : on y répète des instructions tant qu'une certaine condition est réalisée • Les boucles jusqu'à : on y répète des instructions jusqu'à ce qu'une certaine condition soit réalisée • Les boucles pour ou avec compteur : on y répète des instructions en faisant évoluer un compteur (variable particulière) entre une valeur initiale et une valeur finale
  • 58. 2007/2008 Info2, 1ère année SM/SMI 58 Les boucles Tant queLes boucles Tant queLes boucles Tant queLes boucles Tant que TantQue (condition) instructions FinTantQue la condition (dite condition de contrôle de la boucle) est évaluée avant chaque itération si la condition est vraie, on exécute les instructions (corps de la boucle), puis, on retourne tester la condition. Si elle est encore vraie, on répète l'exécution, … si la condition est fausse, on sort de la boucle et on exécute l'instruction qui est après FinTantQue Il est possible que les instructions à répéter ne soient jamais exécutées. condition instructions Vrai Faux
  • 59. 2007/2008 Info2, 1ère année SM/SMI 59 Les boucles Tant que : remarquesLes boucles Tant que : remarquesLes boucles Tant que : remarquesLes boucles Tant que : remarques Le nombre d'itérations dans une boucle TantQue n'est pas connu au moment d'entrée dans la boucle. Il dépend de l'évolution de la valeur de la condition Une des instructions du corps de la boucle doit absolument changer la valeur de la condition de vrai à faux (après un certain nombre d'itérations), sinon le programme va tourner indéfiniment Attention aux boucles infinies Exemple de boucle infinie : correction i ← 1 i ← 1 TantQue i > 0 TantQue i <100 i ← i+1 i ← i+1 FinTantQue FinTantQue
  • 60. 2007/2008 Info2, 1ère année SM/SMI 60 Boucle Tant que : exemple1Boucle Tant que : exemple1Boucle Tant que : exemple1Boucle Tant que : exemple1 Contrôle de saisie d'une lettre alphabétique jusqu’à ce que le caractère entré soit valable … Variable C : caractère Debut Écrire (" Entrez une lettre majuscule ") Lire (C) TantQue (C < 'A' ou C > 'Z') Ecrire ("Saisie erronée. Recommencez") Lire (C) FinTantQue Ecrire ("Saisie valable") Fin
  • 61. 2007/2008 Info2, 1ère année SM/SMI 61 Tant que : exemple2 En investissant chaque année 10000DH à intérêts composés de 7%, après combien d’années serons nous millionnaire ? Variables capital :réel nbAnnees : entier Debut capital ←0.0 nbAnnes ←0 Tantque (Capital < 1000000) Debut capital ← capital+10000; nbAnnees++; capital ←(1+0.07)*capital; FinTantque Fin
  • 62. 2007/2008 Info2, 1ère année SM/SMI 62 Boucle Tant que : exemple3Boucle Tant que : exemple3Boucle Tant que : exemple3Boucle Tant que : exemple3 Un algorithme qui détermine le premier nombre entier N tel que la somme de 1 à N dépasse strictement 100 version 1 Variables som, i : entier Debut i ← 0 som← 0 TantQue (som <=100) i ← i+1 som ← som+i FinTantQue Ecrire (" La valeur cherchée est N= ", i) Fin
  • 63. 2007/2008 Info2, 1ère année SM/SMI 63 Boucle Tant que : exemple3Boucle Tant que : exemple3Boucle Tant que : exemple3Boucle Tant que : exemple3 Un algorithme qui détermine le premier nombre entier N tel que la somme de 1 à N dépasse strictement 100 forme 2: attention à l'ordre des instructions et aux valeurs initiales Variables som, i : entier Debut som ← 0 i ← 1 TantQue (som <=100) som ← som + i i ← i+1 FinTantQue Écrire (" La valeur cherchée est N= ", i-1) Fin
  • 64. 2007/2008 Info2, 1ère année SM/SMI 64 Les boucles RRRRééééppppééééterterterter ………… jusqujusqujusqujusqu’à’à’à’à ………… Répéter instructions Jusqu'à condition Condition est évaluée après chaque itération les instructions entre Répéter et jusqu’à sont exécutées au moins une fois et leur exécution est répétée jusqu’à ce que la condition soit vraie (tant qu'elle est fausse) condition instructions Faux Vrai
  • 65. 2007/2008 Info2, 1ère année SM/SMI 65 Boucle RRRRééééppppééééter jusquter jusquter jusquter jusqu’à’à’à’à : exemple 1 Un algorithme qui détermine le premier nombre entier N tel que la somme de 1 à N dépasse strictement 100 (version avec répéter jusqu'à) Variables som, i : entier Debut som ← 0 i ← 0 Répéter i ← i+1 som ← som+i Jusqu'à ( som > 100) Ecrire (" La valeur cherchée est N= ", i) Fin
  • 66. 2007/2008 Info2, 1ère année SM/SMI 66 Boucle RRRRééééppppééééter jusquter jusquter jusquter jusqu’à’à’à’à : exemple 2 Ecrire un algorithme qui compte le nombre de bits nécessaires pour coder en binaire un entier n. Solution : Variables i, n, nb : entiers Debut Ecrire(" Entrer la valeur de n :") lire(n) i n nb 0 Répéter i i/2 nb nb + 1 jusqu’à (i=0) Ecrire("Pour coder ",n," en binaire il faut ",nb, "bits") Fin
  • 67. 2007/2008 Info2, 1ère année SM/SMI 67 Les boucles Tant que et Répéter jusqu’à Différences entre les boucles Tant que et Répéter jusqu'à : - la séquence d'instructions est exécutée au moins une fois dans la boucle Répéter jusqu'à, alors qu'elle peut ne pas être exécutée dans le cas du Tant que. - la séquence d'instructions est exécutée si la condition est vraie pour Tant que et si la condition est fausse pour Répéter jusqu'à. - Dans les deux cas, la séquence d'instructions doit nécessairement faire évoluer la condition, faute de quoi on obtient une boucle infinie.
  • 68. 2007/2008 Info2, 1ère année SM/SMI 68 Les boucles PourLes boucles PourLes boucles PourLes boucles Pour Pour compteur allant de initiale à finale par pas valeur du pas instructions FinPour i n’a pas atteint finale instructions Vrai Faux i←i+pas i←initiale
  • 69. 2007/2008 Info2, 1ère année SM/SMI 69 Les boucles PourLes boucles PourLes boucles PourLes boucles Pour Remarque : le nombre d'itérations dans une boucle Pour est connu avant le début de la boucle Compteur est une variable de type entier (ou caractère). Elle doit être déclarée Pas est un entier qui peut être positif ou négatif. Pas peut ne pas être mentionné, car par défaut sa valeur est égal à 1. Dans ce cas, le nombre d'itérations est égal à finale - initiale+ 1 Initiale et finale peuvent être des valeurs, des variables définies avant le début de la boucle ou des expressions de même type que compteur
  • 70. 2007/2008 Info2, 1ère année SM/SMI 70 DDDDééééroulement des boucles Pourroulement des boucles Pourroulement des boucles Pourroulement des boucles Pour 1) La valeur initiale est affectée à la variable compteur 2) On compare la valeur du compteur et la valeur de finale : a) Si la valeur du compteur est > à la valeur finale dans le cas d'un pas positif (ou si compteur est < à finale pour un pas négatif), on sort de la boucle et on continue avec l'instruction qui suit FinPour b) Si compteur est <= à finale dans le cas d'un pas positif (ou si compteur est >= à finale pour un pas négatif), instructions seront exécutées i. Ensuite, la valeur du compteur est incrémentée de la valeur du pas si pas est positif (ou décrémenté si pas est négatif) ii. On recommence l'étape 2 : La comparaison entre compteur et finale est de nouveau effectuée, et ainsi de suite …
  • 71. 2007/2008 Info2, 1ère année SM/SMI 71 Boucle Pour : exemple 1 (forme 1)Boucle Pour : exemple 1 (forme 1)Boucle Pour : exemple 1 (forme 1)Boucle Pour : exemple 1 (forme 1) 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 respectivement les valeurs de x et n ") Lire (x, n) puiss ← 1 Pour i allant de 1 à n puiss← puiss*x FinPour Ecrire (x, " à la puissance ", n, " est égal à ", puiss) Fin
  • 72. 2007/2008 Info2, 1ère année SM/SMI 72 Boucle Pour : exemple1 (forme 2)Boucle Pour : exemple1 (forme 2)Boucle Pour : exemple1 (forme 2)Boucle Pour : exemple1 (forme 2) Calcul de x à la puissance n où x est un réel non nul et n un entier positif ou nul (forme 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 allant de n à 1 par pas -1 puiss← puiss*x FinPour Ecrire (x, " à la puissance ", n, " est égal à ", puiss) Fin
  • 73. 2007/2008 Info2, 1ère année SM/SMI 73 Boucle Pour : remarquesBoucle Pour : remarquesBoucle Pour : remarquesBoucle Pour : remarques 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 allant de 1 à 5 i ←i -1 écrire(" i = ", i) Finpour
  • 74. 2007/2008 Info2, 1ère année SM/SMI 74 Lien entre Pour etLien entre Pour etLien entre Pour etLien entre Pour et TantQueTantQueTantQueTantQue 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
  • 75. 2007/2008 Info2, 1ère année SM/SMI 75 Lien entre Pour etLien entre Pour etLien entre Pour etLien entre Pour et TantQueTantQueTantQueTantQue: exemple 1: exemple 1: exemple 1: exemple 1 Calcul de x à la puissance n où x est un réel non nul et n un entier positif ou nul (forme avec TantQue) Variables x, puiss : réel n, i : entier Debut Ecrire (" Entrez respectivement les valeurs de x et n ") Lire (x, n) puiss ← 1, i ← 1 TantQue (i<=n) puiss← puiss*x i ← i+1 FinTantQue Ecrire (x, " à la puissance ", n, " est égal à ", puiss) Fin
  • 76. 2007/2008 Info2, 1ère année SM/SMI 76 Boucles : exercice Ecrire un algorithme qui compte le nombre de 1 dans la représentation binaire de l’entier n. Solution : Variables i, n, poids : entiers Debut Ecrire(" Entrer la valeur de n :") lire(n) i n nbits 0 TantQue(i<>0) faire si (i mod 2 = 1) alors poids poids + 1 i i/2 FinTantQue Ecrire("Pour l’entier",n," le poids est : ",poids) Fin
  • 77. 2007/2008 Info2, 1ère année SM/SMI 77 Boucles imbriquBoucles imbriquBoucles imbriquBoucles imbriquééééeseseses 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 OK Pour j allant de 1 à i OOK écrire("O") OOOK FinPour OOOOK écrire("K") OOOOOK FinPour
  • 78. 2007/2008 Info2, 1ère année SM/SMI 78 Choix d'un type de boucle 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 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'à