Algorithmique SMP - SMC 2 04/2011 Définition Définition Notation
Algorithmique SMP - SMC 2 04/2011 Définition Définition Notation
Algorithmique SMP - SMC 2 04/2011 Définition Définition Notation
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Algorithmique</strong><br />
<strong>SMP</strong> - <strong>SMC</strong> 2<br />
<strong>04</strong>/<strong>2011</strong><br />
<strong>Définition</strong> finition<br />
M HIMMI (FSR)<br />
Un algorithme doit contenir uniquement des<br />
instructions compréhensibles compr hensibles par celui qui devra<br />
l'exécuter l'ex cuter !<br />
La maîtrise ma trise de l'algorithmique requiert deux<br />
qualités: qualit s:<br />
Avoir une certaine intuition.<br />
Etre méthodique m thodique et rigoureux.<br />
FSR - M. HIMMI <strong>2011</strong> 3<br />
<strong>Définition</strong> finition<br />
Algorithme est un terme d'origine arabe, comme<br />
algèbre, alg bre, amiral, alcool, haras, chiffre, …<br />
Un algorithme, c'est une suite finie d'instructions,<br />
qui une fois exécut ex cutée e correctement, conduit à un<br />
résultat sultat donné donn<br />
Si l'algorithme est juste, le résultat r sultat est le<br />
résultat sultat voulu sinon le résultat r sultat est, disons,<br />
aléatoire al atoire …<br />
Un algorithme est une méthode m thode de résolution r solution<br />
d'un problème probl me qui utilise un nombre fini d'étapes d' tapes<br />
FSR - M. HIMMI <strong>2011</strong> 2<br />
<strong>Notation</strong><br />
Plusieurs types de notations ont représent repr senté des<br />
algorithmes:<br />
La représentation repr sentation graphique, avec des carrés, carr s,<br />
des losanges, etc. qu'on appelait des<br />
organigrammes: Quasiment abandonnée<br />
abandonn<br />
Utilisation d'un "pseudo-code". "pseudo code". Il ressemble à un<br />
langage de programmation sans les problèmes probl mes<br />
de syntaxe.<br />
Ce pseudo-code pseudo code est susceptible de varier<br />
légèrement rement d'un auteur à un autre, tout en<br />
gardant la même philosophie...<br />
FSR - M. HIMMI <strong>2011</strong> 4<br />
<strong>Algorithmique</strong> <strong>SMP</strong>-<strong>SMC</strong> S2 2010-<strong>2011</strong> 1
Instruction<br />
Les ordinateurs ne sont capables de<br />
comprendre que quatre familles<br />
d'instructions:<br />
Problème<br />
Documentation<br />
Ok<br />
Programmation…<br />
l'affectation<br />
la lecture / écriture criture<br />
les tests<br />
les boucles<br />
FSR - M. HIMMI <strong>2011</strong> 5<br />
Cycle de production<br />
Ok<br />
Étudier le<br />
problème<br />
Tests<br />
Exemples<br />
Méthode de<br />
résolution<br />
Formulation<br />
Algorithme<br />
FSR - M. HIMMI <strong>2011</strong> 7<br />
Instruction<br />
Un algorithme se ramène ram ne toujours à la<br />
combinaison de ces quatre petites briques de<br />
base<br />
L'ordre dans lequel les instructions sont écrites crites<br />
joue un rôle essentiel dans le résultat r sultat final …<br />
La taille d'un algorithme ne conditionne pas sa<br />
complexité complexit : de longs peuvent être assez simples<br />
et de petits très tr s compliqués.<br />
compliqu s.<br />
FSR - M. HIMMI <strong>2011</strong> 6<br />
Variables<br />
Dès s qu’on qu on a besoin de stocker une information<br />
au cours d'un programme, on utilise une variable<br />
Une variable est un emplacement de mémoire m moire<br />
repéré rep par une adresse binaire. binaire<br />
Pour accéder acc der au contenu de la variable, il suffit<br />
de la désigner d signer par son adresse<br />
Il est beaucoup plus facile d'employer les<br />
étiquettes tiquettes de son choix, que de devoir manier<br />
des adresses binaires!<br />
FSR - M. HIMMI <strong>2011</strong> 8<br />
<strong>Algorithmique</strong> <strong>SMP</strong>-<strong>SMC</strong> S2 2010-<strong>2011</strong> 2
Variables<br />
Avant d'utiliser des variables, il faut les déclarer clarer: :<br />
Réserver server une zone mémoire m moire et lui donner une<br />
étiquette. tiquette.<br />
Le Le nom de la variable ou l'étiquette l' tiquette obéit ob it à<br />
des règles: r gles:<br />
Pas Pas de signes de ponctuation ni d’espaces d espaces<br />
Un Un nom de variable commence par une<br />
lettre<br />
Préciser Pr ciser ce qu'on va mettre dedans<br />
(car de cela dépendent d pendent la taille de l'emplacement<br />
mémoire moire et le type de codage utilisé) utilis<br />
FSR - M. HIMMI <strong>2011</strong> 9<br />
Variables<br />
Type alphanumérique alphanum rique (ou chaîne cha ne de caractères)<br />
caract res)<br />
Pour stocker des caractères: caract res: (entre guillemets "<br />
")<br />
–Lettres Lettres<br />
–signes signes de ponctuation<br />
–Espaces Espaces<br />
–Chiffres Chiffres<br />
Type booléen bool en<br />
Pour stocker les valeurs logiques (VRAI et<br />
FAUX)<br />
FSR - M. HIMMI <strong>2011</strong> 11<br />
Variables<br />
Types numériques num riques classiques<br />
le type de variable choisi pour un nombre<br />
détermine: termine:<br />
les valeurs maximales et minimales des<br />
nombres pouvant être stockés stock s dans la<br />
variable<br />
la précision pr cision de ces nombres (dans le cas de<br />
nombres décimaux) d cimaux)<br />
FSR - M. HIMMI <strong>2011</strong> 10<br />
En pseudo code une déclaration d claration s'écrit: s' crit:<br />
Variable g en Numérique Num rique<br />
ou<br />
Variables PrixHT, PrixHT,<br />
TauxTVA, TauxTVA,<br />
PrixTTC en Numérique Num rique<br />
Type Numérique<br />
Byte (octet)<br />
Entier simple<br />
Entier long<br />
Réel simple<br />
Réel double<br />
Variables<br />
-32 768 à 32 767<br />
-2 147 483 648 à 2 147 483 647<br />
3,4x10 -38 à 3,40x10 38<br />
1,7x10 -308 à 1,7x10 308<br />
FSR - M. HIMMI <strong>2011</strong> 12<br />
<strong>Algorithmique</strong> <strong>SMP</strong>-<strong>SMC</strong> S2 2010-<strong>2011</strong> 3<br />
0 à 255<br />
Plage
Variables<br />
Une variable possède poss de à un moment<br />
donné donn une valeur et une seule. A la<br />
rigueur, elle peut ne pas avoir de<br />
valeur du tout …<br />
Cette valeur ne "varie " varie" " que lorsqu'elle<br />
est l'objet d'une instruction<br />
d'affectation<br />
d'affectation.<br />
FSR - M. HIMMI <strong>2011</strong> 13<br />
L’affectation affectation<br />
On peut attribuer à une variable la valeur<br />
d'une autre variable<br />
Tutu ← Toto<br />
la valeur de Tutu est maintenant celle de<br />
Toto<br />
FSR - M. HIMMI <strong>2011</strong> 15<br />
La seule chose qu'on puisse faire avec une<br />
variable: lui attribuer une valeur… valeur<br />
L'instruction d'affectation se note: ←<br />
Ainsi : Toto ← 24<br />
L’affectation affectation<br />
Attribue la valeur 24 à la variable Toto. Toto<br />
Si type de Toto n'est pas numérique num rique cette<br />
instruction provoquera une erreur.<br />
FSR - M. HIMMI <strong>2011</strong> 14<br />
L’affectation affectation<br />
Dans une instruction d'affectation, on trouve :<br />
à gauche de la flèche, fl che, un nom de<br />
variable<br />
à droite de la flèche, fl che, une expression.<br />
Expression: Expression: ensemble de valeurs reliées reli es<br />
par des opérateurs op rateurs et équivalent quivalent à une<br />
seule valeur<br />
FSR - M. HIMMI <strong>2011</strong> 16<br />
<strong>Algorithmique</strong> <strong>SMP</strong>-<strong>SMC</strong> S2 2010-<strong>2011</strong> 4
L’op opérateur rateur<br />
Un opérateur op rateur est un signe qui relie deux valeurs<br />
pour produire un résultat. r sultat.<br />
Les opérateurs op rateurs dépendent d pendent du type des<br />
valeurs qui sont en jeu.<br />
FSR - M. HIMMI <strong>2011</strong> 17<br />
Exercice 1<br />
Quelles seront les valeurs des variables A et B<br />
après exécution des instructions suivantes ?<br />
Variables A, B en Entier<br />
Début<br />
A ← 1<br />
B ← A + 3<br />
A ← 3<br />
Fin<br />
FSR - M. HIMMI <strong>2011</strong> 19<br />
Opérateurs Op rateurs numériques:<br />
num riques:<br />
+ : addition - : soustraction<br />
* : multiplication / : division<br />
* et / ont priorité priorit sur + et – (idem qu'en maths)<br />
Pour modifier cette priorité: priorit : utiliser des<br />
parenthèses<br />
parenth ses<br />
Opérateur Op rateur alphanumérique alphanum rique de concaténation:<br />
concat nation: &<br />
rateurs logiques: ET, OU, NON et XOR<br />
Opérateurs Op logiques:<br />
Opérateurs Op rateurs<br />
FSR - M. HIMMI <strong>2011</strong> 18<br />
Exercice 2<br />
Quelles seront les valeurs des variables A, B et<br />
C après exécution des instructions suivantes ?<br />
Variables A, B, C en Entier<br />
Début<br />
A ← 5<br />
B ← 3<br />
C ← A + B<br />
A ← 2<br />
C ← B – A<br />
Fin<br />
FSR - M. HIMMI <strong>2011</strong> 20<br />
<strong>Algorithmique</strong> <strong>SMP</strong>-<strong>SMC</strong> S2 2010-<strong>2011</strong> 5
Exercice 3<br />
Quelles seront les valeurs des variables A et B<br />
après exécution des instructions suivantes ?<br />
Variables A, B en Entier<br />
Début<br />
A ← 5<br />
B ← A + 4<br />
A ← A + 1<br />
B ← A – 4<br />
Fin<br />
FSR - M. HIMMI <strong>2011</strong> 21<br />
Exercice 5<br />
Quelles seront les valeurs des variables A et B<br />
après exécution des instructions suivantes ?<br />
Variables A, B en Entier<br />
Début<br />
A ← 5<br />
B ← 2<br />
A ← B<br />
B ← A<br />
Fin<br />
Les deux dernières instructions permettent-elles<br />
d’échanger les deux valeurs de B et A ?<br />
Si l’on inverse les deux dernières instructions,<br />
cela change-t-il quelque chose ?<br />
FSR - M. HIMMI <strong>2011</strong> 23<br />
Exercice 4<br />
Quelles seront les valeurs des variables A, B et<br />
C après exécution des instructions suivantes ?<br />
Variables A, B, C en Entier<br />
Début<br />
A ← 3<br />
B ← 10<br />
C ← A + B<br />
B ← A + B<br />
A ← C<br />
Fin<br />
FSR - M. HIMMI <strong>2011</strong> 22<br />
Exercice 6<br />
Ecrire un algorithme permettant<br />
d’échanger les valeurs de deux<br />
variables A et B, et ce quel que soit<br />
leur contenu préalable.<br />
FSR - M. HIMMI <strong>2011</strong> 24<br />
<strong>Algorithmique</strong> <strong>SMP</strong>-<strong>SMC</strong> S2 2010-<strong>2011</strong> 6
Exercice 7<br />
On dispose de 3 variables A, B et C.<br />
Ecrivez un algorithme transférant à B la<br />
valeur de A, à C la valeur de B et à A<br />
la valeur de C ( quels que soient les<br />
contenus préalables de ces variables ).<br />
FSR - M. HIMMI <strong>2011</strong> 25<br />
Exercice 9<br />
Que produit l’algorithme suivant ?<br />
Variables A, B en Caractères<br />
Début<br />
A ← "423"<br />
B ← "12"<br />
C ← A & B<br />
Fin<br />
FSR - M. HIMMI <strong>2011</strong> 27<br />
Exercice 8<br />
Que produit l’algorithme suivant ?<br />
Variables A, B, C en Caractères<br />
Début<br />
A ← "423"<br />
B ← "12"<br />
C ← A + B<br />
Fin<br />
FSR - M. HIMMI <strong>2011</strong> 26<br />
Lecture et Ecriture<br />
Pour permettre à la machine de dialoguer<br />
avec l'utilisateur:<br />
Lecture: rentrer des valeurs au clavier<br />
Écriture: criture: affichage à l'écran l' cran<br />
FSR - M. HIMMI <strong>2011</strong> 28<br />
<strong>Algorithmique</strong> <strong>SMP</strong>-<strong>SMC</strong> S2 2010-<strong>2011</strong> 7
Lecture et Ecriture<br />
Instruction de lecture:<br />
Lire Titi<br />
l'exécution l'ex cution s'interrompt attendant la frappe<br />
d'une valeur au clavier, dés d s que la touche<br />
Entrée Entr e est frappée,l'ex<br />
frapp e,l'exécution cution reprend.<br />
Instruction d’é d’écriture:<br />
criture:<br />
Ecrire Toto<br />
FSR - M. HIMMI <strong>2011</strong> 29<br />
Exercice 10<br />
Que produit l’algorithme suivant ?<br />
Variables val, double numériques<br />
Début<br />
Val ← 231<br />
Double ← Val * 2<br />
Ecrire Val<br />
Ecrire Double<br />
Fin<br />
FSR - M. HIMMI <strong>2011</strong> 31<br />
Lecture et Ecriture<br />
Avant de Lire une variable, il est très tr s<br />
fortement conseillé conseill d'écrire d' crire des libellés libell s à<br />
l'écran, l' cran, afin de prévenir pr venir l'utilisateur de ce<br />
qu'il doit frapper !<br />
FSR - M. HIMMI <strong>2011</strong> 30<br />
Exercice 11<br />
Ecrire un algorithme qui demande un<br />
nombre à l’utilisateur, puis calcule et<br />
affiche le carré de ce nombre.<br />
FSR - M. HIMMI <strong>2011</strong> 32<br />
<strong>Algorithmique</strong> <strong>SMP</strong>-<strong>SMC</strong> S2 2010-<strong>2011</strong> 8
Exercice 12<br />
Ecrire un algorithme qui lit le prix HT<br />
d’un article, le nombre d’articles et le<br />
taux de TVA, et qui fournit le prix total<br />
TTC correspondant. Faire en sorte<br />
que des libellés apparaissent<br />
clairement.<br />
FSR - M. HIMMI <strong>2011</strong> 33<br />
Tests / branchements conditionnels<br />
Booléen Bool en est une expression dont la valeur<br />
est:<br />
VRAI ou FAUX.<br />
Cela peut être:<br />
une variable de type booléen bool en<br />
une condition<br />
FSR - M. HIMMI <strong>2011</strong> 35<br />
Tests / branchements conditionnels<br />
En fonction d’une d une condition on agit<br />
différemment<br />
diff remment …<br />
Il y a 2 formes possibles pour un test: test<br />
Si booléen bool en<br />
Alors<br />
Instructions<br />
Finsi<br />
Si booléen bool en Alors<br />
Instructions 1<br />
Sinon<br />
Instructions 2<br />
Finsi<br />
FSR - M. HIMMI <strong>2011</strong> 34<br />
Tests<br />
Une condition est une expression<br />
composée compos e de trois éléments: ments:<br />
une valeur<br />
un opérateur op rateur de comparaison<br />
une autre valeur<br />
FSR - M. HIMMI <strong>2011</strong> 36<br />
<strong>Algorithmique</strong> <strong>SMP</strong>-<strong>SMC</strong> S2 2010-<strong>2011</strong> 9
Tests<br />
Les opérateurs op rateurs de comparaison sont:<br />
égal gal à… =<br />
différent diff rent de… de<br />
<br />
strictement plus petit que… que <<br />
strictement plus grand que…> que<br />
plus petit ou égal gal à… =<br />
FSR - M. HIMMI <strong>2011</strong> 37<br />
Tests<br />
ET ou OU ? (transf transf. . de Morgan)<br />
les parenthèses parenth ses jouent un rôle<br />
fondamental<br />
différentes diff rentes possibilités, possibilit s, le choix est une<br />
affaire de style<br />
FSR - M. HIMMI <strong>2011</strong> 39<br />
Tests<br />
Conditions composées: compos es: (expression)<br />
Quatre opérateurs op rateurs logiques: ET, OU, NON,<br />
et XOR<br />
FSR - M. HIMMI <strong>2011</strong> 38<br />
<strong>Algorithmique</strong> <strong>SMP</strong>-<strong>SMC</strong> S2 2010-<strong>2011</strong> 10<br />
ET<br />
Vrai<br />
Faux<br />
XOR<br />
Vrai<br />
Faux<br />
Vrai<br />
Vrai<br />
Faux<br />
Vrai<br />
Vrai<br />
Faux<br />
Faux<br />
Faux<br />
Faux<br />
Faux<br />
Faux<br />
Vrai<br />
Tests<br />
Tests imbriqués imbriqu<br />
Si booléen1 bool en1 Alors<br />
instructions<br />
Si booléen2 bool en2<br />
Alors<br />
instructions<br />
Sinon<br />
instructions<br />
Finsi<br />
Finsi<br />
OU<br />
Vrai<br />
Faux<br />
NON<br />
Vrai<br />
Faux<br />
Vrai<br />
Vrai<br />
Vrai<br />
Faux<br />
Vrai<br />
Faux<br />
Faux<br />
Vrai<br />
Les tests<br />
imbriqués imbriqu s sont<br />
des outils de<br />
simplification et<br />
d'optimisation<br />
des algorithmes<br />
FSR - M. HIMMI <strong>2011</strong> 40
Tests<br />
SinonSi<br />
Si booléen1 bool en1 Alors<br />
instructions<br />
SinonSi booléen2 bool en2 alors<br />
instructions<br />
sinon<br />
instructions<br />
Finsi<br />
Sinon et Si<br />
peuvent être<br />
fusionnés fusionn s en<br />
un SinonSi. SinonSi<br />
C'est C'est un seul<br />
bloc de test,<br />
terminé termin par<br />
un seul FinSi<br />
FSR - M. HIMMI <strong>2011</strong> 41<br />
Exercice 14<br />
Ecrire un algorithme qui demande un<br />
nombre à l’utilisateur, et l’informe<br />
ensuite si ce nombre est positif,<br />
négatif ou nul.<br />
FSR - M. HIMMI <strong>2011</strong> 43<br />
Exercice 13<br />
Ecrire un algorithme qui demande<br />
trois nombres à l’utilisateur et<br />
l’informe ensuite s’ils sont rangés ou<br />
non dans l’ordre croissant.<br />
FSR - M. HIMMI <strong>2011</strong> 42<br />
Exercice 15<br />
Ecrire un algorithme qui demande<br />
deux nombres à l’utilisateur et<br />
l’informe ensuite si le produit est<br />
négatif, positif ou nul. On ne doit pas<br />
calculer le produit !<br />
FSR - M. HIMMI <strong>2011</strong> 44<br />
<strong>Algorithmique</strong> <strong>SMP</strong>-<strong>SMC</strong> S2 2010-<strong>2011</strong> 11
Exercice 16<br />
Ecrire un algorithme qui demande<br />
l’âge d’un enfant à l’utilisateur.<br />
Ensuite, il l’informe de sa catégorie:<br />
"Poussin" de 6 à 7 ans<br />
"Pupille" de 8 à 9 ans<br />
"Minime" de 10 à 11 ans<br />
"Cadet" après 12 ans<br />
Peut-on concevoir plusieurs algorithmes<br />
équivalents menant à ce résultat ?<br />
FSR - M. HIMMI <strong>2011</strong> 45<br />
Exercice 18<br />
Un magasin de photocopie facture<br />
0,50Dh les dix premières pages,<br />
0,40Dh les vingt suivantes et 0,20Dh<br />
au-delà.<br />
Ecrivez un algorithme qui demande à<br />
l’utilisateur le nombre de photocopies<br />
effectuées et qui affiche le montant à<br />
payer.<br />
FSR - M. HIMMI <strong>2011</strong> 47<br />
Exercice 17<br />
Ecrire un algorithme qui lira au clavier<br />
l’heure et les minutes, et affichera l’heure<br />
qu’il sera une minute plus tard.<br />
Si l'utilisateur tape 21 puis 32, l'algorithme<br />
doit répondre :<br />
"Dans une minute, il sera 21 heure(s) 33".<br />
On suppose que l'utilisateur entre une heure<br />
valide.<br />
FSR - M. HIMMI <strong>2011</strong> 46<br />
<strong>Algorithmique</strong> <strong>SMP</strong>-<strong>SMC</strong> S2 2010-<strong>2011</strong> 12