Vous êtes sur la page 1sur 115

Algorithmique

Mme Khadija BOUZAACHANE

Anne universitaire : 2009-2010

INTRODUCTION

03/01/2010

Introduction
Avez vous dj dchiffr un mode demploi pour faire fonctionner un DVD, ou bien la tlvision ou un rpondeur tlphonique? Si oui, sans le savoir, vous avez dj excut des algorithmes. Avez-vous dj indiqu un chemin un touriste gar ? Un algorithme, cest une suite dinstructions, qui une fois excute correctement, conduit un rsultat donn. Si lalgorithme est juste, le rsultat est le rsultat voulu, et le touriste se retrouve l o il voulait aller
03/01/2010

Introduction
Quest-ce quun algorithme?
Est une suite dinstructions crite en langage dalgorithme qui rsout un problme et qui peuvent tre programm par nimporte quel langage.

Une suite d'instructions serait : 1. Se lever 2. Prendre sa douche 3. Prendre le petit djeuner 4. S'habiller

03/01/2010

Introduction
Un algorithme doit donc contenir uniquement des instructions comprhensibles par celui qui devra lexcuter.

03/01/2010

Dfinition
Algorithmique:
Dfinition1: dsigne l'ensemble des rgles et des techniques qui sont impliques dans la dfinition et la conception des algorithmes. Dfinition2: l'algorithmique c'est de savoir comment lire, crire, valuer et optimiser des algorithmes.

03/01/2010

Dfinition
Algorithme:
Dfinition1: Un algorithme dcrit une mthode de rsolution de problme programmable sur machine. Dfinition2 : Un algorithme est un ensemble d'oprations de calcul lmentaires, organis selon des rgles prcises dans le but de rsoudre un problme donn. Pour chaque donne du problme, l'algorithme retourne une rponse aprs un nombre fini d'oprations(+, -,/,<,>,... ).
03/01/2010 7

Dfinition
Quest-ce quun programme?
Un programme est donc une suite d'instructions excutes par la machine. La machine a son propre langage appel langage machine. Un programme est lexpression dun algorithme par une machine donne dans un langage de programmation donn en utilisant le rpertoire dactions(oprations, instructions) et les rgles de composition propres cette machine et ce langage donns. Un programme est un assemblage et un enchanement dinstructions lmentaires crit dans un langage de programmation, et excut par un ordinateur afin de traiter les donnes dun problme et renvoyer un ou plusieurs rsultats.
03/01/2010 8

Mthodologie
Pour rsoudre un problme, il est vivement conseill de rflchir d'abord l'algorithme avant de programmer.

Exemple de construction dalgorithme:


Exemple: calcul des racines de lquation du second ordre

ax2+bx+c=0
1re version:
Lire a, b, c Calculer les racines de lquation Imprimer les racines

03/01/2010

Mthodologie
La rsolution dun problme est caractris par 4 tapes :
Comprendre la nature du problme pos Prciser les donnes fournies (Entres) Prciser les rsultats que lon dsire obtenir (Sorties) Dterminer le processus de transformation des donnes en rsultats.

03/01/2010

10

Mthodologie
Comment on programme?
On utilise un pseudo-langage, comportant toutes les structures de base d'un langage de programmation

On traduit notre "pseudo" en langage volu en fonction des possibilits de ce langage

Ce langage sera ensuite traduit en langage machine

03/01/2010

11

Mthodologie
Un programme est donc une suite d'instructions excutes par la machine. Ces instructions peuvent:
soit s'enchaner les unes aprs les autres, on parle alors de squence d'instructions; ou bien s'excuter dans certains cas et pas dans d'autres, on parle alors de structure alternative; ou se rpter plusieurs fois, on parle alors de structure rptitive.
03/01/2010 12

La squence dinstructions
Une instruction est une action que l'ordinateur est capable d'excuter. Une squence d'instruction serait :
Se lever Prendre sa douche Prendre le petit djeuner S'habiller

03/01/2010

13

Structures Alternatives
Une alternative s'exprime par si Sinon
Si fin de semaine ou cong
Mettre sa tenue de sport Faire son jogging

Sinon
Mettre sa tenue de travail Aller travailler

Fin Si
03/01/2010 14

Structure rptitive
La routine journalire dun employ est :
Ouvrir guichet Appeler premier client TantQue " client dans file d'attente " et " pas fin de journe "
Traiter client Appeler client suivant

FinTantQue

Les deux actions "Traiter client" et "Appeler client suivant" vont se rpter tant que la condition situe derrire l'instruction "Tant que" est vrifie.
03/01/2010 15

Pourquoi faire des algorithmes


la rdaction des algorithmes permet plusieurs choses :
d'tre comprhensible par tout informaticien mme s'il ne connait pas le langage du programme de vrifier la complexit du programme et donc de l'optimiser de faire ressortir de manire comprhensible les cas d'utilisations
03/01/2010 16

NOTIONS DE BASE
Comment faire des algorithmes? Les variables Le type de la variable Les instructions Syntaxe gnral de lalgorithme Les structures de contrle Structure rptitive Les tableaux Organigramme Procdures & Fonctions Rcursivit

03/01/2010

17

Comment faire des algorithmes


les algorithmes sont rdigs dans un langage michemin entre le franais et les langages de programmation, dit pseudo-code . En programmation, le pseudo-code est une faon de dcrire un algorithme sans rfrence un langage de programmation particulier. L'criture en pseudo-code permet souvent de bien prendre toute la mesure de la difficult de l'implmentation de l'algorithme, et de dvelopper une dmarche structure dans la construction de celui-ci.

03/01/2010

18

Comment faire des algorithmes(suite)


La raison dtre dun algorithme est de rsoudre un problme. La plus grande attention doit tre porte la comprhension du problme, faute de quoi lalgorithme na aucune chance dtre correct. Le langage utilis pour la dfinition dun problme est un langage scientifique utilisant pour des raisons de simplicit une langue naturelle(franais par exemple).

03/01/2010

19

Les variables
Une variable est un objet dont la valeur nest pas invariable Une variable peut tre reprsente par une case mmoire, qui contient la valeur d'une donne. Chaque variable possde un nom unique appel identificateur par lequel on peut accder son contenu.
Par exemple, on peut avoir en mmoire une variable prix et une variable quantit.
03/01/2010 20

Les variables(suite)
Une variable possde 3 attributs :
Une valeur Un nom(invariable) qui sert la dsigner Un type(invariable) qui dcrit lutilisation possible de la variable

Une valeur
la valeur d'une variable(contenu) peut varier au cours du programme. L'ancienne valeur est tout simplement crase et remplace par la nouvelle. La valeur peut tre de diffrents types et de tailles diffrentes.
03/01/2010 21

Les variables(suite)
Nom de la variable
Cest une suite de lettres et de chiffres commenant ncessairement par une lettre Le nombre maximal de caractres impos varie selon les langages La lisibilit des programmes dpend de lhabilit choisir des noms reprsentatifs Le nom de la variable doit tre le plus reprsentatif possible du contenu de celle-ci pour faciliter la lecture de l'algorithme. En revanche, il ne doit pas non plus tre trop long pour ne pas nuire la lisibilit de l'ensemble.
03/01/2010 22

Les variables(suite)
Nom de la variable
Exemple
Je veux mmoriser l'ge d'une personne dans une variable, j'ai le choix de l'appeler :
a ge age ageDeLaPersonneDontJeSuisEntrainDeParler

Remarque :
Le premier cas est trop court, si je n'ai pas lu la description plus haut, je suis totalement perdu. Le deuxime cas ne convient pas non plus car on vitera tout caractre accentu dans les noms de variable. Le dernier cas est certes trs prcis, mais tellement long qu'il en devient illisible. Bref, le troisime cas semble le plus appropri
03/01/2010 23

Les variables(suite)
Type de la variable
Le type de la variable dfinit :
La nature des informations qui seront reprsentes dans la variable Les limitations concernant les valeurs reprsenter Les oprations ralisables avec les variables correspondantes.

Proprit : Une variable doit tre dclar avant son utilisation

03/01/2010

24

Les variables(suite)
Type de la variable
Entier : il s'agit des variables destines contenir un nombre entier positif ou ngatif. Rel : il s'agit des variables numriques qui ne sont pas des entiers, c'est dire qui comportent des dcimales Caractre : Les variables de type caractre contiennent des caractres alphabtiques ou numriques seul(ex: c) Boolen : Les variables qui prennent les valeurs (vrai ou faux) ou les valeurs (oui ou non).
03/01/2010 25

Les variables(suite)
Type de la variable
Chane de caractres : reprsentant un texte, contenant un ou plusieurs caractres(ex: Bonjour tout le monde)
Tous les traducteurs de langages prennent en compte cette notion de type par des instructions de dclaration de type

Exemple:
Variable Moyenne : rel;(Moyenne en numrique) Variable NbreEtudiant : entier; (NbreEtudiant en numrique) Variable c1, lettre, z : caractre;
03/01/2010 26

Les variables(suite)
Type de la variable: Constante
Dfinitions : une constante est un objet de valeur invariable. Elle est la ralisation dune valeur de type particulier. Exemple:
Constante Zero=0: entier; ( Max:entier) 100;

03/01/2010

27

Les variables(suite)
Les oprateurs de lalgorithmique
Type Rel Exemple -15.69, 0.49 Opration possibles Addition Soustraction Multiplication Division Exposant Pourcentage comparaisons Addition Soustraction Multiplication Division Modulo Exposant Pourcentage
03/01/2010

symbole + * / ^ % <,<=,>,>=,=, + * DIV MOD ^ %


28

Entier

-10, 4, 768

Les variables(suite)
Les oprateurs de lalgorithmique
Type caractre Boolen Exemple B, \n Vrai, Faux Opration possibles comparaisons Comparaison Ngation Conjonction disjonction symbole <,<=,>,>=,=, <,<=,>,>=,=, NON ET OU

03/01/2010

29

Les instructions
Linstruction daffectation
Linstruction daffectation permet de manipuler les valeurs des variables. Son rle consiste placer une valeur dans une variable. Notation X=Y ou bien X:=Y ou bien X Y Exemple : 1. affecter une valeur une variable
X:=5, On charge la variable X avec la valeur 5

2. Affecter le contenu dune variable une autre variable


X:=Y , On charge X avec le contenu de Y Y reprsente : Constante ou Nom dune variable ou Expression logique 03/01/2010 30 X et Y doivent tre de mme type

Les instructions(suite)
Linstruction daffectation
3. Affecter une formule une variable X:= X + 2 * Y On charge la variable X par la valeur du rsultat de la formule et on crase sa valeur initiale

X
3

Y
4

11

03/01/2010

31

Les instructions(suite)
Les instructions dEntre/Sortie
Un programme est amen :
Prendre des donnes par le priphrique(clavier) : rle de linstruction de lecture Communiquer des rsultats par lintermdiaire du priphrique(cran) : rle de linstruction de lcriture

Instruction de lecture
Rle : fournir des donnes au programme Syntaxe : Lire(variable) Exemple : Lire( X) on saisie une valeur pour la stocker aprs dans la variable X

Instruction dcriture
Rle : fournir des rsultats directement comprhensibles Syntaxe : Ecrire( variable), Ecrire(chaine de caractres) Exemple : Ecrire(X), Ecrire(Bonjour)
03/01/2010 32

Syntaxe gnral de lalgorithme


Le moule dun algorithme
Un algorithme comportera :
Une partie dclaration Une partie encadre par dbut fin o sont dcrites les actions

Algorithme Nom_de_l_algorithme : Dclaration; Debut Actions; Fin

03/01/2010

33

Syntaxe gnral de lalgorithme(suite)


Le moule dun algorithme
Dans la partie dclarations, nous trouvons :
Dclaration de constantes dclaration de variables dclaration de fonctions

Dans la partie actions, nous trouvons :


suite d'instructions Structure alternative Structure rptitive

03/01/2010

34

Syntaxe gnral de lalgorithme(suite)


Exemple :
Algorithme toto /* les constantes: il est obligatoire de leur donner une valeur ds leur dclaration */ CONST titi 10 : entier tutu "bonjour!" : chane dclarations // les variables au sens strict VAR riri, fifi : rels loulou : chane Debut <Instruction1>; <Instruction2>; Corps de lalgorithme . <Instruction3>; Fin
03/01/2010

35

Des Questions ?

03/01/2010

36

Exercices : Instructions
Exercice 1:
crire un algorithme qui permet de saisir des valeurs pour A et B , faire la somme et afficher le rsultat?

Exercice 2:
crire un algorithme qui permet de calculer et afficher la surface dun cercle?

03/01/2010

37

Exercices : Instructions(suite)
Exercice 3
crire un algorithme qui permet de calculer et afficher le salaire brut dun ouvrier connaissant le nombre dheure et le tarif dhoraire?

Exercice 4
crire un algorithme qui fait la conversion dune somme dargent donne en DH, en une somme dargent en Euro?
03/01/2010 38

Les structures de contrles


Le branchement conditionnel
Le branchement conditionnel Aide Structurer un ensemble dinstructions Syntaxe 1 : Si <conditions> alors <Instruction1> <Instruction N> Fsi Exemple : Si (a<b) alors max b; min a; Fsi
03/01/2010 39

Les structures de contrles(suite)


Le branchement conditionnel
Syntaxe : Si <expression boolenne> alors <Instruction1> <Instruction N> Sinon <Instruction1> Exemple : Si (a<b) alors <Instruction N> max b Fsi Sinon max a Fsi
03/01/2010 40

Les structures de contrles(suite)


Quest ce quune condition ?
une condition est compose de trois lments :
une valeur, un oprateur de comparaison, une autre valeur

Les valeurs peuvent tre a priori de nimporte quel type (numriques, caractres). Mais si lon veut que la comparaison ait un sens, il faut que les deux valeurs de la comparaison soient du mme type ! Les oprateurs de comparaison sont :
= gal , <> diffrent de < strictement plus petit que, > strictement plus grand que, <= plus petit ou gal , >= plus grand ou gal
03/01/2010 41

Les structures de contrles(suite)


Exemple:
t < w 5>6 2< 3 VRAI FAUX VRAI

Exercice:
crire un algorithme qui demande un nombre lutilisateur, et linforme ensuite si ce nombre est positif ou ngatif (on laisse de ct le cas o le nombre vaut zro).

03/01/2010

42

Conditions composes:

Les structures de contrles(suite)

Certains problmes exigent parfois de formuler des conditions composes lies entre eux par les oprateurs logiques suivants : ET, OU, NON, et XOR.
Condition1 ET Condition2 : VRAI, si Condition1 est VRAI et Condition2 est VRAI. Condition1 OU Condition2 : VRAI, si Condition1 est VRAI ou bien Condition2 est VRAI. Le XOR (ou OU exclusif)
Condition1 XOR Condition2 : VRAI, si Condition1 est VRAI, ou bien Condition2 est VRAI. Mais si toutes les deux sont fausses, ou que toutes les deux sont VRAI, alors le rsultat global est considr comme FAUX.
03/01/2010 43

Les structures de contrles(suite) le NON inverse une condition : NON(Condition1) est


VRAI si Condition1 est FAUX, et il sera FAUX si Condition1 est VRAI. tables de vrit (C1 et C2 reprsentent deux conditions, et on envisage chaque fois les quatre cas possibles) :
C1 et C2 C2 C1 Vrai C1 Faux C2 Vrai Vrai Faux C2 Faux Faux Faux

C1 ou C2 C2 C1 Vrai C1 Faux

C2 Vrai Vrai Vrai

C2 Faux Vrai Faux

03/01/2010

44

Les structures de contrles(suite)


C1 xor C2 C1 Vrai C1 Faux C1 Non C1 C1 Vrai Faux Vrai C1 Faux C2 Vrai Faux Vrai C2 Faux Vrai Faux

Exercice :

crire un algorithme qui demande deux nombres lutilisateur et linforme ensuite si leur produit est ngatif ou positif (on laisse de ct le cas o le produit est nul). Attention toutefois : on ne doit pas calculer le produit des deux nombres.
03/01/2010 45

Exercices : structures de contrles


Exercice 1:
On dsire comparer deux valeurs ,crire un algorithme qui affiche la plus grande des deux?

Exercice 2:
crire un algorithme qui affiche le salaire brut dun ouvrier sachant que les heures supplmentaires de 172 heures sont payes 50% de tarifs dhoraire en plus?

03/01/2010

46

Exercice 4:

Exercices : structures de contrles

Calculer le montant de la facture dun client ayant command une quantit dun produit avec un prix unitaire hors taxe
Le taux de T.V.A est : 20% Les frais de transport sont 0.8 DH de Km , Le client est dispos du frais de transport si le montant est suprieur 4500 DH

Exercice 5:
Une bibliothque fait des rductions sur lachat des livres :
25% pour les tudiants. 15% pour les enseignants

crire un algorithme qui calcule et affiche le prix payer47 03/01/2010 selon le type du client?

Exercice 6:

Exercices : structures de contrles

crire un algorithme qui calcule et affiche le maximum de trois nombre A,B et C ?

Exercice 7:
crire un algorithme qui permet de rsoudre lquation du premier degr : aX+b=0?

Exercice 8: crire un algorithme qui permet de rsoudre une quation de second degr : aX+bX+c=0 ?

03/01/2010

48

Exercices : structures de contrles


Exercice 9:
crire un algorithme qui lie trois nombre A,B et C , puis il dtermine si lun est gal la somme de 2 autres sinon il affiche un message pas de solution ?

03/01/2010

49

Les structures de contrles(suite)


Le choix multiple
Variable i:entier; Lire(i); Selon que i=1 i=1 : faire <instruction1> <instruction1 Ou que i=2 i=2 : faire <instruction2> <instruction2 Ou que i=3 i=3 : faire <instruction3> <instruction3 Autrement crire(mauvais choix) (mauvais Fselonque

03/01/2010

50

Exercices : structures de contrles


Exercice 10: crire un algorithme qui partir dun nombre compris entre 1 et 7 affiche le jour correspendant?

03/01/2010

51

Tests imbriqus:

Les structures de contrles(suite)

un algorithme doit donner ltat de leau selon sa temprature il doit choisir entre trois rponses possibles (solide, liquide ou vapeur).
Variable Temp : Entier Dbut Ecrire (Entrez la temprature de leau :) Lire (Temp) Si Temp <= 0 Alors Ecrire (Cest de la glace) Finsi Si Temp > 0 Et Temp < 100 Alors Ecrire (Cest du liquide) Finsi Si (Temp > 100 )Alors Ecrire Cest de la vapeur Finsi Fin
03/01/2010

52

Tests imbriqus: deuxime solution qui imbrique le test


Variable Temp : Entier Dbut Ecrire (Entrez la temprature de leau :) Lire (Temp) Si Temp =< 0 Alors Ecrire (Cest de la glace) Sinon Si Temp < 100 Alors Ecrire( Cest du liquide) Sinon Ecrire( Cest de la vapeur) Finsi Finsi Fin
03/01/2010 53

Les structures de contrles(suite)

Les structures de contrles(suite)


Exercice:
crire 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 ?
03/01/2010 54

Les structures de contrles(suite)


Variables Boolennes:
Il existe des variables (les boolennes) susceptibles de stocker les valeurs VRAI ou FAUX. On peut donc entrer des conditions dans ces variables, et tester ensuite la valeur de ces variables. Exemple:
Variable Temp : Entier Variables A, B : Boolen Dbut Ecrire (Entrez la temprature de leau :) Lire (Temp) A Temp <= 0 03/01/2010 B Temp < 100

55

Les structures de contrles(suite)


Si A Alors Ecrire( Cest de la glace) Sinon Si B Alors Ecrire Cest du liquide Sinon Ecrire Cest de la vapeur Finsi Finsi Fin Dans une condition compose employant la fois loprateur ET et loprateur OU, la prsence de parenthses possde une influence sur le rsultat.
03/01/2010 56

Exercice: Les structures de contrles


Ecrivez un algorithme qui lira au clavier lheure et les minutes, et il affichera lheure quil sera une minute plus tard. Par exemple, si l'utilisateur tape 21 puis 32, l'algorithme doit rpondre : "Dans une minute, il sera 21 heure(s) 33". NB : on suppose que l'utilisateur entre une heure valide. Pas besoin donc de la vrifier.
03/01/2010 57

Structure rptitive
A quoi cela sert-il donc ?
Prenons le cas dune saisie au clavier (une lecture), o par exemple, le programme pose une question laquelle lutilisateur doit rpondre par O (Oui) ou N (Non). Mais tt ou tard, lutilisateur, risque de taper autre chose que la rponse attendue. Alors, dans tout lalgorithme on met en place ce quon appelle un contrle de saisie, afin de vrifier que les donnes entres au clavier correspondent bien celles attendues par lalgorithme.
03/01/2010 58

Structure rptitive(suite)
A quoi cela sert-il donc ?
On pourrait essayer avec une structure de contrle SI. Variable Rep : Caractre Dbut Ecrire (Voulez vous un caf ? (O/N)) Lire (Rep) Si Rep <> O ET Rep <> N Alors Ecrire( Saisie erronne. Recommencez) Lire (Rep) FinSi Fin 03/01/2010

59

Structure rptitive(suite)
A quoi cela sert-il donc ?
Si lutilisateur ne se trompe quune seule fois, et entre une valeur correcte la deuxime demande, cest parfait. Par contre, sil commet une deuxime erreur, il faudrait rajouter un SI. Et ainsi de suite, on peut rajouter des centaines de SI, et crire un algorithme lourd. La solution consistant aligner des SI nest pas correcte dans ce cas. La seule issue est dutiliser une structure de boucle.
03/01/2010 60

Structure rptitive(suite)
A quoi cela sert-il donc ?
Qui ce prsente ainsi:
TantQue boolen Faire Instructions FinTantQue

Le principe est simple : lalgorithme arrive sur la ligne du TantQue. Il examine alors la valeur du boolen (qui, je le rappelle, peut tre une variable boolenne ou, plus frquemment, une condition). Si cette valeur est VRAI, lalgorithme excute les instructions qui suivent, jusqu ce quil rencontre la ligne FinTantQue. Il retourne ensuite sur la ligne du TantQue, procde au mme examen, et ainsi de suite. Le cycle ne sarrte que lorsque le boolen prend la valeur FAUX.
03/01/2010 61

Structure rptitive(suite)
A quoi cela sert-il donc ?
Illustration avec notre problme de contrle de saisie. Une premire approximation de la solution consiste crire : Variable Rep :Caractre Dbut Ecrire (Voulez vous un caf ? (O/N)) lire(Rep) TantQue Rep <> O ET Rep <> N Faire Lire (Rep) FinTantQue Fin
03/01/2010 62

Structure rptitive(suite)
A quoi cela sert-il donc ?
Une deuxime approximation de la solution, avec affectation, consiste crire :
Variable Rep :Caractre Dbut Rep X Ecrire (Voulez vous un caf ? (O/N)) TantQue Rep <> O ET Rep <> N Faire Lire (Rep) FinTantQue Fin

Cette manire de procder est connatre, car elle est employe trs frquemment.
03/01/2010 63

Structure rptitive(suite)
Structure rptitive, dite aussi itrative ou boucle permet, de rpter une ou plusieurs actions un certain nombre de fois. On identifie en rgle gnrale 3 types de rptitive :
TantQue Rpter Jusqu' Pour

03/01/2010

64

Structure rptitive(suite)
Tant que Les rptitives o la condition darrt est place au dbut.
Syntaxe :
Tant que <expression logique> faire <squence dinstructions> Ftantque TantQue condition actions FTantQue

Ce qui signifie : tant que la condition est vraie, on excute les actions.
03/01/2010

65

Des Questions ?

03/01/2010

66

Exercices
1.

2.

3.

Ecrire un algorithme qui demande lutilisateur un nombre compris entre 1 et 3 jusqu ce que la rponse convienne. 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. crire 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.
03/01/2010 67

Structure rptitive(suite)
Boucler en comptant, ou compter en bouclant
Il arrive trs souvent quon ait besoin deffectuer un nombre dtermin de passages. Or, a priori, notre structure TantQue ne sait pas lavance combien de tours de boucle elle va effectuer: Cest pourquoi une autre structure de boucle est notre disposition :
la structure : Pour

03/01/2010

68

Structure rptitive(suite)
Variable Num1 : Entier Dbut Num1 0 TantQue Num1 < 15 Faire Num1 = Num1 + 1 Ecrire (Passage numro : , Num1) FinTantQue Fin Variable Num1 : Entier Dbut Pour Num1 = 1 15 Faire Ecrire( Passage numro : , Num1) Num1 Suivant Fin

la structure :Pour est un cas particulier de TantQue : celui o le programmeur peut dnombrer lavance le nombre de tours de boucles ncessaires.
03/01/2010 69

Structure rptitive
Pour
Les rptitives o le nombre ditration est fixe une fois pour toute. Syntaxe :
Pour Compteur = Initial Final Pas ValeurDuPas Instructions Compteur suivant (nest pas indispensable) FPour

03/01/2010

70

Structure rptitive(suite)
la progression du compteur est laisse votre libre disposition. Dans la plupart des cas, on a besoin dune variable qui augmente de 1 chaque tour de boucle. On ne prcise alors rien linstruction Pour ; celle-ci, par dfaut, comprend quil va falloir procder cette incrmentation de 1 chaque passage, en commenant par la premire valeur et en terminant par la deuxime. Si vous souhaitez une progression plus spciale, de 2 en 2, ou de 3 en 3, ou en arrire, de 1 en 1, ou de 10 en 10, il faut prciser votre instruction Pour en lui rajoutant le mot Pas et la valeur de ce pas. Quand on met un pas ngatif dans une boucle, la valeur initiale du compteur doit tre suprieure sa valeur finale si lon veut que la boucle tourne !
03/01/2010 71

Structure rptitive(suite)
Les structures TantQue sont employes dans les situations o lon doit procder un traitement sur les lments dun ensemble dont on ne connat pas davance la quantit, comme par exemple :
le contrle dune saisie. la gestion des tours dun jeu (tant que la partie nest pas finie, on recommence).

Les structures Pour sont employes dans les situations o lon doit procder un traitement sur les lments dun ensemble dont on connat davance la quantit.
03/01/2010 72

Structure rptitive(suite)
Des boucles imbriques:
De mme que quune structure SI ALORS peut contenir dautres structures SI ALORS, une boucle peut tout fait contenir dautres boucles.
Variables Num1, Num2 : Entier Pour Num1 1 15 Ecrire (Il est pass par ici) Pour Num2 1 6 Ecrire (Il repassera par l) Fpour FPour

03/01/2010 73

Structure rptitive(suite)
Rpter..Jusqu :
la condition darrt est place la fin Syntaxe : Rpter <squence dinstructions> Jusqu <expression logique> Frpter Exemple : Num1:=1 Rpter Ecrire (Passage numro : , Num1) Num1 = Num1 + 1 Jusqu (Num1 >= 15 )
03/01/2010 74

Des Questions ?

03/01/2010

75

Exercices
crire un algorithme qui saisie N entier et affiche leur somme et leur moyenne ? 2. crire un algorithme pour calculer et afficher la somme et la moyenne de100 premiers nombres entiers ? 3. crire un algorithme qui permet de calculer S1, S2,S3,S4,S5,S6 tel que:
1.
S1 = 1 + + 1/3 + +..1/N S2 = 1 + + + 1/6 +..1/N S3 = 1 + 1/3 + 1/5 +..1/N S4 = 1 - + - 1/6..1/N S5 = 1 + x+x..xN S6 = 1 + x+x/2.. xN /N
03/01/2010 76

Exercices
4. Ecrire un algorithme qui vrifie si un nombre est premier o pas ? 5. crire un algorithme qui saisit deux entiers, calcule et affiche la somme de ces 2 entiers (on arrte la saisie avec la valeur 0) ? 6. Ecrire un algorithme qui permet de calculer le factoriel dun nombre positif ?

03/01/2010

77

Devoir N 1 N
Une salle de cinma dsire automatiser la gestion de la billetterie pour chaque client qui se prsente, on calcule le prix du billet en fonction des donnes suivantes:
NF : Numro du film Age : Age de spectateur

Le prix normal de la facture est de 30 DH, cependant des remises peuvent tre accorder en fonction du critres suivants :
NF=2 ou Age < 15 remise de 50% NF=2 et Age >75 remise 25% NF=3 et Age < 15 entre refuse

crire un algorithme qui permet de calculer et dcider le prix payer pou chaque client qui se prsente . on arrte la saisie par "non"
03/01/2010 78

Devoir N2 N
Une entreprise dsire automatise la gestion de paie de son personnel. Pour chaque employ, on doit introduire le nom, le prnom, le salaire de base(SB), le nombre d'enfant et l'anciennet(ANC).

Un prix de 100 DH est accord pour chaque enfant .


Si anciennet<=10 ans et SB < 1000 DH une prime de 50% du SB Si l'anciennet est 10 ans < ANC <20 ans et SB > 1000 DH prime de 70% du SB

Calculer le salaire brute (SB+ le prime + les enfants) et afficher le nom, prnom, l'anciennet 03/01/2010 79 , SB, prime et le salaire brute

Les tableaux
Supposons que nous avons besoin de calculer la moyenne de 12 notes dun tudiant. la seule solution dont nous disposons consiste dclarer douze variables, appeles par exemple: X1, X2, X3,X12. La premire tape est de lire les valeurs de toute ces variables une par une, ce qui nous fait douze instructions de lecture et aprs calculer la moyenne par linstruction:
Moy (X1+X2+X3+X4+X5+NX6+X7+X8+X9+X10+X11+X12)/12
03/01/2010 80

Les tableaux(suite)
Cest pourquoi lalgorithmique (la programmation) nous permet de rassembler toutes ces variables en une seule, au sein de laquelle chaque valeur sera dsigne par un numro.
Un ensemble de valeurs portant le mme nom de variable et repres par un nombre, sappelle un tableau, ou encore une variable indice. Le nombre qui, au sein dun tableau, sert reprer chaque valeur sappelle lindice. Chaque fois que lon doit dsigner un lment du tableau, on fait figurer le nom du tableau, suivi de lindice de llment, entre parenthses. Ex: Nom_tableau(5)

03/01/2010

81

Les tableaux(suite)
Notation et utilisation algorithmique
Dans notre exemple, nous crerons donc un tableau appel Note. Tableau Note(12) : Entier On peut crer des tableaux contenant des variables de tous types : tableaux de numriques, tableaux de caractres, tableaux de boolens, tableaux de tout ce qui existe dans un langage donn comme type de variables. Lnorme avantage des tableaux, cest quon va pouvoir les traiter en faisant des boucles.
03/01/2010 82

Les tableaux(suite)
Notation et utilisation algorithmique
Tableau Note(12) : Entier Variables i, Som : Entier Variable Moy : Rel Pour i 0 11 Ecrire (Entrez la note n, i) Lire( Note(i)) FPour Som 0 Pour i 0 11 Som = Som + Note(i) Fpour Moy = Som / 12 03/01/2010

83

Les tableaux(suite)
Remarque gnrale : lindice qui sert dsigner les lments dun tableau peut tre exprim directement comme un nombre en clair, mais il peut tre aussi une variable, ou une expression calcule. La valeur dun indice doit toujours :
tre gale au moins 0 (dans quelques rares langages, le premier lment dun tableau porte lindice 1). Mais nous avons choisi ici de commencer la numrotation des indices zro, comme cest le cas en langage C. tre un nombre entier. Quel que soit le langage. tre infrieure ou gale au nombre dlments du tableau (moins 1, si lon03/01/2010 commence la numrotation zro).

84

Exercices
crire un algorithme qui dclare et remplisse un tableau de 7 valeurs numriques en les mettant toutes zro. crire un algorithme qui dclare et remplisse un tableau contenant les six voyelles de lalphabet latin. On saisit des entiers et on les range dans un tableau (maximum 50) crire un programme qui affiche le maximum, le minimum et la valeur moyenne de ces nombres.
03/01/2010 85

Exercices
crivez un algorithme permettant lutilisateur de saisir un nombre quelconque de valeurs, qui devront tre stockes dans un tableau. Lutilisateur doit donc commencer par entrer le nombre de valeurs quil compte saisir. Il effectuera ensuite cette saisie. Enfin, une fois la saisie termine, le programme affichera le nombre de valeurs ngatives et le nombre de valeurs positives.
03/01/2010 86

Exercices
Que produit lalgorithme suivant ?
Tableau Nb(6) : Entier Variable i en Entier Dbut Pour i 0 5 Nb(i) i * i FPour Pour i 0 5 crire Nb(i) FPour Fin

Peut-on simplifier cet algorithme avec le mme rsultat ? 03/01/2010

87

Exercices
Que produit lalgorithme suivant ?
Tableau N(7) en Entier Variables i, k en Entier Dbut N(0) 1 Pour k 1 6 N(k) N(k-1) + 2 FPour Pour i 0 6 Ecrire N(i) FPour Fin

Peut-on simplifier cet algorithme avec le mme 03/01/2010 rsultat ?

88

Organigramme
Dfinition
un organigramme est la reprsentation schmatique qui permet de faire apparatre dune faon claire et logique lenchanement des diffrentes oprations.

Les symboles utiliss organigramme Symbole gnral traitement


Symbole dbut-fin-interruption

pour

construire

un

Les lignes de liaison

Symbole embranchement(choix)

Symbole commentaire

03/01/2010

89

Organigramme
Exemple :
Condition

Instruction 2

Instruction 1

suite

03/01/2010

90

Organigramme
Exemple :Le branchement conditionnel Le

conditio n instruction1 instruction2

03/01/2010

91

Organigramme
Exemple :Structure rptitive V
instruction

conditio n

03/01/2010

92

Organigramme
Exemple : Structure rptitive F
instruction

conditio n

03/01/2010

93

Notions de sous-algorithme sousDfinition


Un sous-algorithme est un lment dalgorithme nomm et ventuellement paramtr que lon dfinit afin de pouvoir ensuite lappeler par son nom en affectant, sil y a lieu, des valeurs aux paramtres. Intrt :
Raliser un dcoupage dune tche en sous-tche. Effectuer une seule description dune tche commune Concevoir une application de manire descendante en entrant de plus en plus dans les dtails

Structure : un sous-algorithme est compos


Dune tte nom sous-algorithme, paramtres(arguments) avec leur type Dun corps des dclarations dobjets locaux aux sousalgorithme, instructions excuter
03/01/2010 94

Notions de sous-algorithme sous Sous-algorithme Nom Nom(liste des paramtres) dclarations des variables locales Dbut Corps du sous-algorihtme Fin Algorithme Nom Dclaration des variables Dbut Instructions Appel du sous-algorithme Instructions Fin
03/01/2010 95

Procdures & Fonctions


Procdures
Syntaxe
Procdure nom_procdure(var:type;var:type) Variable interne Dbut procdure Instructions Finprocdure

03/01/2010

96

Procdures & Fonctions


Fonctions
Syntaxe
Fonction nom_fonction(var:type;var:type):type Variable interne; Dbut fonction Instructions; Retourner variable; Fin fonction

03/01/2010

97

Procdure & Fonction


Rep1,Rep2 : caractre Fonction RepOuiNon() : caractres variable Rep "" TantQue Rep <> "Oui" et Rep <> "Non" Ecrire( "Tapez Oui ou Non") Lire (Rep) FinTantQue Renvoyer Rep Fin Dbut Ecrire( "Etes-vous mari ?") Rep1 RepOuiNon() Ecrire( "Avez-vous des enfants ?" ) Rep2 RepOuiNon() Fin
03/01/2010 98

EXERCICES

03/01/2010

99

Exercices
EX0
Ecrire un algorithme qui lit une valeur qlq x et qui dtermine la valeur de lexpression :

1+x+x2++x20

EX1
Ecrire une procdure qui lit N lments en paramtre et retourne la somme de ces lments dans une variable somme.

EX2
Ecrire une fonction entire statistique qui lit 100 notes et retourne le nombre de notes comprises entre 10 et 20 compris
03/01/2010 100

Exercices
EX3
Ecrire un algorithme qui permet de faire les traitements suivants : Soit un tableau T de N entiers 1. Remplir les N cases du tableau 2. Compter le nombre des lments non nuls 3. Trouver le plus grand lments du tableau et le mettre dans la variable MAX 4. Rechercher la place du plus petit lment et le mettre dans la variable position.
03/01/2010 101

Exercices
EX4 Ecrire un algorithme qui cherche dans un tableau non tri si un nombre x existe au moins une fois. EX5 Ecrire un algorithme qui cherche dans un tableau tri si un nombre x existe au moins une fois. EX6 Ecrire un algorithme qui permet de lire les ges de 25 stagiaires(ils ont au moins 23ans et au plus 30ans) et fournit le nombre de stagiaires de chacun des ges. 03/01/2010 102

Exercices
EX7
Le tableau factures contient N constantes de factures, le tableau PAYES de N boolens indique si chacune des factures a t rgles ou pas, on veut recopier squentiellement dans un 3me tableau RESTESAPAYES, les sommes restant dues.

03/01/2010

103

Rcursivit
Un algorithme est dit rcursif lorsquil intervient dans sa description, cest--dire lorsquil est dfini en fonction de lui-mme. Exemple: x0 = 1, xn = x*xn-1 si n1
Fonction fact(x : entier, n : entier):entier Variable Rsultat : entier; Dbut Si(n=0) alors Rsultat =1; Sinon Rsultat = x*fact(x,n-1); Fsi Renvoyer Rsultat; Fin
03/01/2010 104

MTHODES DE TRI LMENTAIRES


Dfinition Tri par slection Tri par bulles Tri par insertion

03/01/2010

105

Dfinition
trier signifie rpartir en plusieurs classes selon certains critres . De manire plus restrictive, le terme de tri en algorithmique est trs souvent attach au processus de classement d'un ensemble d'lments dans un ordre donn. Par exemple, trier N entiers dans l'ordre croissant, ou N noms dans l'ordre alphabtique. Tout ensemble muni d'un ordre total peut fournir une suite d'lments trier.
03/01/2010

106

Tri par slection


Tri par slection est lun des algorithmes de tri les plus simple, elle procde la slection successive de llment minimal parmi ceux restant. Il fonctionne de la manire suivante :
On commence par rechercher llment de plus petite valeur du tableau pour lchanger avec celui en premire position. On recherche ensuite llment ayant la deuxime plus petite valeur pour lchanger avec celui en deuxime position, et lon continue ainsi jusqu ce que le tableau soit 03/01/2010 107 entirement tri.

Tri par slection(suite)


Le sous-algorithme suivant est une implantation de ce processus. Pour tout i entre 1 et N-1, on change T[i] avec llment de valeur minimal parmi T[i].T[N] : Pocdure TriSelection 1N: entier; N: entier) TriSelection(T: Var i, j, min, q:entier; Dbut pour i de 1 jusqu N faire min=i; pour j de i+1 jusqu N faire Si(T[j]<T[min]) alors min=j; Fsi Fpour q=T[min]; T[min]=T[i]; T[i]=q; Fpour Finprocdure
A mesure que lindice i progresse vers la droite du fichier, les lments situs sa gauche ont pris leur position dfinitive et le tableau est tri lorsque lindice i atteint lextrmit droite

03/01/2010

108

Tri par slection(suite)


Il est facile de compter le nombre d'oprations. Quel que soit l'ordre du tableau initial, le nombre de comparaisons reste le mme, ainsi que le nombre d'changes. chaque itration, on considre l'lment tab[i] et on le compare successivement tab[i+1], ..., tab[N]. On fait donc N-i comparaisons. Le nombre total de comparaisons est donc de : et il y a (N-1) changes. En ce qui concerne sa complexit, on dit que le tri par slection est en O (N2), la fois dans le meilleur des cas, en moyenne et dans le pire des cas, c'est--dire que son temps d'excution est de l'ordre du carr du nombre d'lments trier.
03/01/2010 109

Tri par bulle


Le tri bulle est une variante du tri par slection. Il consiste parcourir le tableau tab en permutant toute paire d'lments conscutifs (tab[k],tab[k+1]) non ordonns - ce qui est un change et ncessite donc encore une variable intermdiaire de type entier. Aprs le premier parcours, le plus grand lment se retrouve dans la dernire case du tableau, en tab[N], et il reste donc appliquer la mme procdure sur le tableau compos des lments tab[1], ..., tab[N-1]. Le nom de ce tri provient du dplacement des bulles les plus grandes vers la droite.
03/01/2010 110

Tri par bulle(suite)


/* Procdure de tri bulle */ procedure triBulle(entier[] tab)
entier i, k; entier tmp; pour (i de N 2 en dcrmentant de 1) faire pour (k de 1 i-1 en incrmentant de 1) faire
si (tab[k] > tab[k+1]) alors tmp <- tab[k]; tab[k] <- tab[k+1]; tab[k+1] <- tmp; fin si fin pour fin pour 03/01/2010 fin procedure

111

Tri par bulle(suite)


Le nombre de comparaisons dans la procdure de tri bulle est le mme que pour le tri par slection : Le nombre d'changes quant lui dpend de l'ordre des lments dans le tableau :
dans le meilleur des cas, le tableau initial est tri et il n'y a pas d'change faire ; en moyenne, on montre que le nombre d'changes est de :

dans le pire des cas, les entiers du tableau sont initialement donns dans l'ordre dcroissant. Dans ce cas, on effectue l'change chaque comparaison, c'est--dire que le nombre d'changes est alors de : Quoi qu'il en soit, la complexit du tri bulle reste en O (N2), c'est--dire du mme ordre de grandeur que le carr du nombre d'lments.
03/01/2010 112

Tri par insertion


Cette mthode de tri est trs diffrente de la mthode de tri par slection et s'apparente celle utilise pour trier ses cartes dans un jeu : on prend une carte, tab[1], puis la deuxime, tab[2], que l'on place en fonction de la premire, ensuite la troisime tab[3] que l'on insre sa place en fonction des deux premires et ainsi de suite. Le principe gnral est donc de considrer que les (i-1) premires cartes, tab[1],..., tab[i-1] sont tries et de placer la ie carte, tab[i], sa place parmi les (i-1) dj tries, et ce jusqu' ce que i = N. Pour placer tab[i], on utilise une variable intermdiaire tmp pour conserver sa valeur qu'on compare successivement chaque lment tab[i-1],tab[i-2],... qu'on dplace vers la droite tant que sa valeur est suprieure celle de tmp. On affecte alors l'emplacement dans le tableau laiss libre par ce dcalage la valeur de tmp. 03/01/2010 113

Tri par insertion(suite)


/* Procdure de tri par insertion */ procedure triInsertion(entier[] tab)
entier i, k,tmp; pour (i de 2 N en incrmentant de 1) faire tmp <- tab[i]; k <- i; tant que (k > 1 et tab[k - 1] > tmp) faire tab[k] <- tab[k - 1]; k <- k - 1; fin tant que tab[k] <- tmp; fin pour fin procedure 03/01/2010

114

Tri par insertion(suite)


La comparaison avec les deux algorithmes prcdents montre que la complexit du tri par insertion est plus fortement dpendante de l'ordre du tableau initial. Nous comptons ici le nombre de comparaisons (qui est le nombre de dcalages un prs) :
dans le meilleur des cas, le tableau initial est tri et on effectue alors une comparaison chaque insertion, on effectue donc N-1 comparaisons ; en moyenne, on montre que le nombre de comparaisons est de :

03/01/2010

115