You are on page 1of 58

Algorithmique SMP - SMC 2 04/2011

M HIMMI (FSR)

Dfinition
Algorithme est un terme d'origine arabe, comme algbre, amiral, alcool, haras, chiffre, Un algorithme, c'est une suite finie d'instructions, qui une fois excute correctement, conduit un rsultat donn Si l'algorithme est juste, le rsultat est le rsultat voulu sinon le rsultat est, disons, alatoire Un algorithme est une mthode de rsolution d'un problme qui utilise un nombre fini d'tapes
FSR - M. HIMMI 2011
2

Dfinition
Un algorithme doit contenir uniquement des instructions comprhensibles par celui qui devra l'excuter ! La matrise de l'algorithmique requiert deux qualits: Avoir une certaine intuition. Etre mthodique et rigoureux.

FSR - M. HIMMI 2011

Notation
Plusieurs types de notations ont reprsent des algorithmes: La reprsentation graphique, avec des carrs, des losanges, etc. qu'on appelait des organigrammes: Quasiment abandonne Utilisation d'un "pseudo-code". Il ressemble un langage de programmation sans les problmes de syntaxe. Ce pseudo-code est susceptible de varier lgrement d'un auteur un autre, tout en gardant la mme philosophie...
FSR - M. HIMMI 2011
4

Instruction
Les ordinateurs ne sont capables de comprendre que quatre familles d'instructions:

l'affectation la lecture / criture les tests les boucles

FSR - M. HIMMI 2011

Instruction
Un algorithme se ramne toujours la combinaison de ces quatre petites briques de base L'ordre dans lequel les instructions sont crites joue un rle essentiel dans le rsultat final
La taille d'un algorithme ne conditionne pas sa complexit : de longs peuvent tre assez simples et de petits trs compliqus.

FSR - M. HIMMI 2011

Cycle de production
Problme tudier le problme Mthode de rsolution

Documentation

Formulation

Ok

Tests
Ok Programmation
Exemples
FSR - M. HIMMI 2011

Algorithme

Variables
Ds quon a besoin de stocker une information au cours d'un programme, on utilise une variable Une variable est un emplacement de mmoire repr par une adresse binaire.

Pour accder au contenu de la variable, il suffit de la dsigner par son adresse


Il est beaucoup plus facile d'employer les tiquettes de son choix, que de devoir manier des adresses binaires!

FSR - M. HIMMI 2011

Variables
Avant d'utiliser des variables, il faut les dclarer:

Rserver une zone mmoire et lui donner une tiquette.


Le nom de la variable ou l'tiquette obit des rgles: Pas de signes de ponctuation ni despaces Un nom de variable commence par une lettre Prciser ce qu'on va mettre dedans (car de cela dpendent la taille de l'emplacement mmoire et le type de codage utilis)
FSR - M. HIMMI 2011
9

Variables
Types numriques classiques le type de variable choisi pour un nombre dtermine: les valeurs maximales et minimales des nombres pouvant tre stocks dans la variable la prcision de ces nombres (dans le cas de nombres dcimaux)

FSR - M. HIMMI 2011

10

Variables
Type alphanumrique (ou chane de caractres) Pour stocker des caractres: (entre guillemets " ") Lettres signes de ponctuation Espaces Chiffres Type boolen Pour stocker les valeurs logiques (VRAI et FAUX)
FSR - M. HIMMI 2011
11

Variables
En pseudo code une dclaration s'crit: Variable g en Numrique ou Variables PrixHT, TauxTVA, PrixTTC en Numrique
Type Numrique Plage

Byte (octet)

0 255

Entier simple Entier long


Rel simple

-32 768 32 767 -2 147 483 648 2 147 483 647


3,4x10-38 3,40x1038

Rel double

1,7x10-308 1,7x10308
FSR - M. HIMMI 2011
12

Variables
Une variable possde un moment donn une valeur et une seule. A la rigueur, elle peut ne pas avoir de valeur du tout

Cette valeur ne "varie" que lorsqu'elle est l'objet d'une instruction d'affectation.
FSR - M. HIMMI 2011
13

Laffectation
La seule chose qu'on puisse faire avec une variable: lui attribuer une valeur L'instruction d'affectation se note: Ainsi : Toto 24

Attribue la valeur 24 la variable Toto.

Si type de Toto n'est pas numrique cette


instruction provoquera une erreur.
FSR - M. HIMMI 2011
14

Laffectation
On peut attribuer une variable la valeur d'une autre variable Tutu Toto la valeur de Tutu est maintenant celle de Toto

FSR - M. HIMMI 2011

15

Laffectation
Dans une instruction d'affectation, on trouve : gauche de la flche, un nom de variable droite de la flche, une expression.

Expression: ensemble de valeurs relies


par des oprateurs et quivalent une seule valeur
FSR - M. HIMMI 2011
16

Loprateur
Un oprateur est un signe qui relie deux valeurs pour produire un rsultat.
Les oprateurs dpendent du type des valeurs qui sont en jeu.

FSR - M. HIMMI 2011

17

Oprateurs
Oprateurs numriques: + : addition * : multiplication - : soustraction / : division

* et / ont priorit sur + et (idem qu'en maths) Pour modifier cette priorit: utiliser des parenthses Oprateur alphanumrique de concatnation: Oprateurs logiques: ET,

&

OU, NON et XOR


18

FSR - M. HIMMI 2011

Exercice 1
Quelles seront les valeurs des variables A et B aprs excution des instructions suivantes ? Variables A, B en Entier Dbut A1 BA+3 A3 Fin
FSR - M. HIMMI 2011
19

Exercice 2
Quelles seront les valeurs des variables A, B et C aprs excution des instructions suivantes ? Variables A, B, C en Entier Dbut A5 B3 CA+B A2 CBA Fin
FSR - M. HIMMI 2011
20

Exercice 3
Quelles seront les valeurs des variables A et B aprs excution des instructions suivantes ?
Variables A, B en Entier Dbut A5 BA+4 AA+1 BA4 Fin
FSR - M. HIMMI 2011
21

Exercice 4
Quelles seront les valeurs des variables A, B et C aprs excution des instructions suivantes ? Variables A, B, C en Entier Dbut A3 B 10 CA+B BA+B AC Fin
FSR - M. HIMMI 2011
22

Exercice 5
Quelles seront les valeurs des variables A et B aprs excution des instructions suivantes ? Variables A, B en Entier Dbut A5 B2 AB BA Fin Les deux dernires instructions permettent-elles dchanger les deux valeurs de B et A ? Si lon inverse les deux dernires instructions, cela change-t-il quelque chose ?
FSR - M. HIMMI 2011
23

Exercice 6

Ecrire un algorithme permettant dchanger les valeurs de deux variables A et B, et ce quel que soit leur contenu pralable.

FSR - M. HIMMI 2011

24

Exercice 7

On dispose de 3 variables A, B et C. Ecrivez un algorithme transfrant B la valeur de A, C la valeur de B et A la valeur de C ( quels que soient les
contenus pralables de ces variables ).

FSR - M. HIMMI 2011

25

Exercice 8
Que produit lalgorithme suivant ? Variables A, B, C en Caractres Dbut A "423" B "12" CA+B Fin
FSR - M. HIMMI 2011
26

Exercice 9
Que produit lalgorithme suivant ? Variables A, B en Caractres Dbut A "423" B "12" CA&B Fin
FSR - M. HIMMI 2011
27

Lecture et Ecriture
Pour permettre la machine de dialoguer avec l'utilisateur: Lecture: rentrer des valeurs au clavier criture: affichage l'cran
FSR - M. HIMMI 2011
28

Lecture et Ecriture
Instruction de lecture:

Lire Titi
l'excution s'interrompt attendant la frappe d'une valeur au clavier, ds que la touche Entre est frappe,l'excution reprend.
Instruction dcriture:

Ecrire Toto
FSR - M. HIMMI 2011
29

Lecture et Ecriture

Avant de Lire une variable, il est trs fortement conseill d'crire des libells l'cran, afin de prvenir l'utilisateur de ce qu'il doit frapper !

FSR - M. HIMMI 2011

30

Exercice 10
Que produit lalgorithme suivant ? Variables val, double numriques Dbut Val 231 Double Val * 2 Ecrire Val Ecrire Double Fin
FSR - M. HIMMI 2011
31

Exercice 11

Ecrire un algorithme qui demande un nombre lutilisateur, puis calcule et affiche le carr de ce nombre.

FSR - M. HIMMI 2011

32

Exercice 12

Ecrire un algorithme qui lit le prix HT dun article, le nombre darticles et le taux de TVA, et qui fournit le prix total TTC correspondant. Faire en sorte que des libells apparaissent clairement.
FSR - M. HIMMI 2011
33

Tests / branchements conditionnels


En fonction dune condition on agit diffremment Il y a 2 formes possibles pour un test:

Si boolen Alors Instructions Finsi

Si boolen Alors Instructions 1 Sinon Instructions 2 Finsi


FSR - M. HIMMI 2011
34

Tests / branchements conditionnels


Boolen est une expression dont la valeur est: VRAI ou FAUX.

Cela peut tre: une variable de type boolen une condition


FSR - M. HIMMI 2011
35

Tests
Une condition est une expression compose de trois lments: une valeur un oprateur de comparaison une autre valeur

FSR - M. HIMMI 2011

36

Tests
Les oprateurs de comparaison sont:
gal = diffrent de <> strictement plus petit que < strictement plus grand que > plus petit ou gal <= plus grand ou gal >=
FSR - M. HIMMI 2011
37

Tests
Conditions composes: (expression) Quatre oprateurs logiques: ET, OU, NON, et XOR ET Vrai Faux Vrai Vrai Faux Faux Faux Faux XOR Vrai Faux Vrai Vrai Faux Faux Faux Vrai
FSR - M. HIMMI 2011

OU Vrai Faux Vrai Vrai Vrai Faux Vrai Faux NON Vrai Faux

Faux Vrai
38

Tests
ET ou OU ? (transf. de Morgan)

les parenthses jouent un rle fondamental diffrentes possibilits, le choix est une affaire de style

FSR - M. HIMMI 2011

39

Tests
Tests imbriqus Si boolen1 Alors instructions Si boolen2 Alors instructions Sinon instructions Finsi Finsi
FSR - M. HIMMI 2011

Les tests imbriqus sont des outils de simplification et d'optimisation des algorithmes

40

Tests
SinonSi Sinon et Si peuvent tre Si boolen1 Alors fusionns en instructions un SinonSi. SinonSi boolen2 alors instructions C'est un seul sinon bloc de test, instructions termin par un seul FinSi Finsi

FSR - M. HIMMI 2011

41

Exercice 13

Ecrire un algorithme qui demande trois nombres lutilisateur et linforme ensuite sils sont rangs ou non dans lordre croissant.

FSR - M. HIMMI 2011

42

Exercice 14

Ecrire un algorithme qui demande un nombre lutilisateur, et linforme ensuite si ce nombre est positif, ngatif ou nul.

FSR - M. HIMMI 2011

43

Exercice 15

Ecrire un algorithme qui demande deux nombres lutilisateur et linforme ensuite si le produit est ngatif, positif ou nul. On ne doit pas calculer le produit !

FSR - M. HIMMI 2011

44

Exercice 16
Ecrire un algorithme qui demande lge dun enfant lutilisateur. Ensuite, il linforme de sa catgorie:
"Poussin" de 6 7 ans "Pupille" de 8 9 ans "Minime" de 10 11 ans "Cadet" aprs 12 ans Peut-on concevoir plusieurs algorithmes quivalents menant ce rsultat ?
FSR - M. HIMMI 2011
45

Exercice 17
Ecrire un algorithme qui lira au clavier lheure et les minutes, et affichera lheure quil sera une minute plus tard. Si l'utilisateur tape 21 puis 32, l'algorithme doit rpondre : "Dans une minute, il sera 21 heure(s) 33".
On suppose que l'utilisateur entre une heure valide.
FSR - M. HIMMI 2011
46

Exercice 18
Un magasin de photocopie facture 0,50Dh les dix premires pages, 0,40Dh les vingt suivantes et 0,20Dh au-del. Ecrivez un algorithme qui demande lutilisateur le nombre de photocopies effectues et qui affiche le montant payer.
FSR - M. HIMMI 2011
47

Boucles / structures itratives


Rpter des instructions tant quune condition est vrifie une structure de boucle se prsente ainsi: TantQue boolen Instructions FinTantQue
Etapes: 1. Si boolen est VRAI, on excute les instructions jusqu' FinTantQue. 2. On retourne ensuite sur la ligne TantQue, on value boolen, et ainsi de suite. 3. Si boolen est FAUX on passe directement la ligne 48 aprs FinTantQueFSR - M. HIMMI 2011

Boucles / structures itratives


Erreur classique: boolen n'est jamais VRAI. Le programme ne rentre alors jamais dans la boucle boolen ne devient jamais FAUX. L'ordinateur tourne alors dans la boucle et n'en sort plus, C'est la "boucle infinie"

FSR - M. HIMMI 2011

49

Boucles / structures itratives


Rpter des instructions un nombre de fois une autre structure de boucle:
Pour Compteur Initial Final Pas ValeurDuPas Instructions Compteur suivant

TantQue : on ne connat pas d'avance le nombre de fois

Pour : le programmeur connat d'avance le nombre de fois


FSR - M. HIMMI 2011
50

Boucles / structures itratives


Boucles imbriques mais pas croises
Variables Truc, Trac en Entier Dbut Pour Truc 1 15 Ecrire "Il est pass par ici" Pour Trac 1 6 Ecrire "Il repassera par l" Trac Suivant Truc Suivant Fin
FSR - M. HIMMI 2011
51

Boucles
viter !
Examinons l'algorithme suivant : Variable T en Entier Dbut Pour T 1 15 TT*2 Ecrire "Passage numro : ", T T Suivant Fin
FSR - M. HIMMI 2011
52

Exercice 19
Ecrire un algorithme qui demande un nombre compris entre 10 et 20, jusqu ce que la rponse convienne. En cas de rponse suprieure 20, on fera apparatre un message : Plus petit !, et inversement, Plus grand ! si le nombre est infrieur 10.

FSR - M. HIMMI 2011

53

Exercice 20
Ecrire un algorithme qui demande un nombre de dpart, et qui ensuite affiche les dix nombres suivants. Par exemple, si l'utilisateur entre le nombre 17, le programme affichera les nombres de 18 27.

FSR - M. HIMMI 2011

54

Exercice 21
Ecrire un algorithme qui demande un nombre de dpart, et qui ensuite crit la table de multiplication de ce nombre, prsente comme suit (l'utilisateur entre le nombre 7): Table de 7 : 7x1=7 7 x 2 = 14 7 x 10 = 70
FSR - M. HIMMI 2011
55

Exercice 22
Ecrire un algorithme qui demande un nombre de dpart, et qui calcule sa factorielle.

FSR - M. HIMMI 2011

56

Exercice 23
Ecrire un algorithme qui demande successivement 20 nombres lutilisateur, et qui lui dise ensuite quel tait le plus grand parmi ces 20 nombres et sa position

FSR - M. HIMMI 2011

57

FSR - M. HIMMI 2011

58

You might also like