Vous êtes sur la page 1sur 106

d Cours dAlgorithmique en langage C

Mohamed EL Marraki
Dpartement dInformatique,

2011/2012 marraki@fsr.ac.ma

M. El Marraki

Algorithmique 2011/2012

Gnralits sur lAlgorithmique

Introduction
Lalgorithmique est un terme dorigine arabe, hommage Al Khawarizmi(780-850) auteur dun ouvrage dcrivant des mthodes de calculs algbriques. Un algorithme est une mthode de rsolution de problme nonce sous la forme d'une srie d'oprations effectuer. La mise en uvre de l'algorithme consiste en l'criture de ces oprations dans un langage de programmation.
M. El Marraki Algorithmique 2011/2012 3

Introduction Une recette de cuisine est un algorithme! Le mode demploi dun magntoscope est aussi un algorithme! indiqu un chemin un touriste gar ou faire chercher un objet quelquun par tlphone cest fabriquer et faire excuter des algorithmes.

M. El Marraki

Algorithmique 2011/2012

Introduction
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. Si lalgorithme est faux, le rsultat est, disons, alatoire, et dcidment, ce magntoscope ne marche pas!! Pour fonctionner, un algorithme doit donc contenir uniquement des instructions comprhensibles par celui qui devra lexcuter (lordinateur).
M. El Marraki Algorithmique 2011/2012 5

Remarque (1)
LADN, qui est en quelque sorte le programme gntique, lalgorithme la base de construction des tres vivants, est une chane construite partir de quatre lments invariables. Ce nest que le nombre de ces lments, et lordre dans lequel ils sont arrangs, qui va dterminer si on obtient une puce ou un lphant. Les ordinateurs eux-mmes ne sont fondamentalement capables dexcuter que quatre oprations logiques : laffectation de variables la lecture / criture les tests les boucles
M. El Marraki Algorithmique 2011/2012 6

Remarque (2)
Un algorithme informatique se ramne donc toujours au bout du compte la combinaison de ces quatre petites briques de base. Il peut y en avoir quelques unes, quelques dizaines, et jusqu plusieurs centaines de milliers dans certains programmes. la taille dun algorithme ne conditionne pas en soi sa complexit : de longs algorithmes peuvent tre finalement assez simples, et de petits algorithmes peuvent tre trs compliqus.

M. El Marraki

Algorithmique 2011/2012

Introduction
L informatique est la science du traitement automatique de l information. Pour cela il faut: 1. modliser cette information, 2. dfinir l aide d un formalisme strict les traitements dont elle fera l objet. 3. et enfin traduire ces traitements dans un langage comprhensible par un ordinateur. Les deux premiers points concerne l algorithmique, alors que le dernier point relve de ce que l on nomme la programmation.
M. El Marraki Algorithmique 2011/2012 8

Introduction

Lcriture dun programme consiste gnralement implanter une mthode de rsolution dj connue et souvent conue indpendamment dune machine pour fonctionner aussi bien sur toutes les machines ou presque. Ainsi, ce nest pas le programme mais la mthode quil faut tudier pour comprendre comment traiter le problme.

M. El Marraki

Algorithmique 2011/2012

Lalgorithmique
Principe
Dfinition : Un algorithme est une squence bien dfinie doprations (calcul, manipulation de donnes, etc.) permettant daccomplir une tache en un nombre fini de pas. En principe un algorithme est indpendant de toute implantation. Cependant dans la pratique de la programmation il savre indispensable de tenir compte des capacits du langage de programmation utilis.

M. El Marraki

Algorithmique 2011/2012

10

La ralisation dun programme passe par 4 tapes


La conception dun algorithme passe par 4 tapes : Analyse : dfinition du problme en terme de squences doprations de calcul de stockage de donnes, etc. ; Conception : dfinition prcise des donnes, des traitements et de leur squencement ; Implantation : traduction et ralisation de lalgorithme dans un langage prcis ; Test : Vrification du bon fonctionnement de lalgorithme.

M. El Marraki

Algorithmique 2011/2012

11

M. El Marraki

Algorithmique 2011/2012

12

Lalgorithmique et la programmation

Le but de la programmation :
Utiliser lordinateur pour traiter des donnes afin dobtenir des rsultats. Abstraction par rapport au matriel (indpendance application / plate forme matrielle). Intermdiaire entre le langage machine (binaire) et le langage humain

M. El Marraki

Algorithmique 2011/2012

13

Langage machine
Le langage utilis par le processeur, est appel langage machine. Il s'agit d'une suite de 0 et de 1 (du binaire). Toutefois le langage machine est difficilement comprhensible par l'humain. Ainsi il est plus pratique de trouver un langage intermdiaire, comprhensible par l'homme, qui sera ensuite transform en langage machine pour tre exploitable par le processeur.
M. El Marraki Algorithmique 2011/2012 14

Lassembleur
L'assembleur est le premier langage informatique qui ait t utilis. Celui-ci est encore trs proche du langage machine mais il permet dj d'tre plus comprhensible.

M. El Marraki

Algorithmique 2011/2012

15

Lassembleur
Langage Machine Langage assembleur 0010 ADD 101 Ax 11 3

Ajouter AX 3

instructions en langage machines sont remplaces par des symboles: Mov, Cest langage difficile, dpendant et ncessitant la connaissance dtaille de larchitecture matriel de lordinateur (=> vers langages volus)
M. El Marraki Algorithmique 2011/2012 16

Assembleur
lassembleur est tellement proche du langage machine qu'il dpend troitement du type de processeur utilis. Ainsi un programme dvelopp pour une machine ne pourra pas tre port sur un autre type de machine (on dsigne par le terme "portable" un programme qui peut tre utilis sur un grand nombre de machines). Pour pouvoir l'utiliser sur une autre machine il faudra alors parfois rcrire entirement le programme!
M. El Marraki Algorithmique 2011/2012 17

M. El Marraki

Algorithmique 2011/2012

18

M. El Marraki

Algorithmique 2011/2012

19

Langages de programmation volus

Il y a trois catgories de langage de programmations : les langages interprts et les langages intermdiaires et les langages compils.

M. El Marraki

Algorithmique 2011/2012

20

Langage interprt

Exemples de langages interprts :

Le langage HTML (les pages web), le langage Maple (calcul mathmatique), Le langage Prolog (Intelligence artificielle), etc.

M. El Marraki

Algorithmique 2011/2012

21

Langage compil

Un programme crit dans un langage dit "compil" va tre traduit une fois pour toutes par un programme annexe (le compilateur) afin de gnrer un nouveau fichier qui sera autonome : ce fichier est excutable.

M. El Marraki

Algorithmique 2011/2012

22

Langage compil
Un programme compil a pour avantage de garantir la scurit du code source. En effet, un langage interprt, tant directement accessible, permet n'importe qui de connatre les secrets de fabrication d'un programme et donc de copier le code voire de le modifier. Il y a donc risque de non-respect des droits d'auteur. Certaines applications scurises ncessitent la confidentialit du code pour viter le piratage.
M. El Marraki Algorithmique 2011/2012 23

Langage compil

Exemples de langages compils :

Le langage C (Programmation systme), Le langage C++ (Programmation systme


objet), Le Cobol (Gestion) etc.

M. El Marraki

Algorithmique 2011/2012

24

Langages intermdiaires
Certains langages appartiennent en quelque sorte aux deux catgories prcdentes (LISP, Java,..) car le programme crit avec ces langages peut dans certaines conditions subir une phase de compilation intermdiaire vers un fichier crit dans un langage qui n'est pas comprhensible non excutable (ncessit d'un interprteur). Les applets Java, petits programmes insrs parfois dans les pages Web, sont des fichiers qui sont compils mais que l'on ne peut excuter qu' partir d'un navigateur internet.
M. El Marraki Algorithmique 2011/2012 25

Historique des langages

M. El Marraki

Algorithmique 2011/2012

26

Analyse descendante

Lanalyse descendante consiste dcomposer le problme donn en sous-problmes, et ainsi de suite, jusqu descendre au niveau des primitives. Les tapes successives donnent lieu des sousalgorithmes qui peuvent tre considrs comme les primitives de machine intermdiaires (procdures en Pascal, fonction en C).

M. El Marraki

Algorithmique 2011/2012

27

Analyse descendante

Le travail de lanalyse est termin lorsquon a obtenu un algorithme ne comportant que : Des primitives de la machine initiale, Des algorithmes dj connus.

M. El Marraki

Algorithmique 2011/2012

28

Analyse descendante

Lanalyse descendante est la mise en pratique du Discours de la mthode de Descartes. Lordre des instructions est essentiel : la machine ne peut excuter quune action la fois et dans lordre donn; cest la proprit de squentialit.

M. El Marraki

Algorithmique 2011/2012

29

Pseudo langage
Un algorithme doit tre lisible et comprhensible par plusieurs personnes. Il doit donc suivre des rgles prcises, il est compos dune entte et dun corps :

M. El Marraki

Algorithmique 2011/2012

30

lentte

le nom de lalgorithme (Nom :) son utilit (Rle :) les donnes en entre, cest--dire les

lments qui sont indispensables son bon fonctionnement (Entre :) les donnes en sortie, cest--dire les lments calculs, produits, par lalgorithme (Sortie :) les donnes locales lalgorithmique qui lui sont indispensables (Dclarations :)
Algorithmique 2011/2012 31

M. El Marraki

le corps

Le corps, qui est compos :

du mot clef dbut dune suite dinstructions indentes du mot clef fin

M. El Marraki

Algorithmique 2011/2012

32

Commentaire
Le plus important pour un algorithme sont les dclarations ainsi que les instructions qui constituent le corps de lalgorithme. Il existe des instructions qui ne servent qu la clart de lalgorithme (lordinateur les ignore compltement), ce sont les commentaires. Un commentaire a la syntaxe suivante : /* ceci est un commentaire */

M. El Marraki

Algorithmique 2011/2012

33

Variables

Variable

Dans un programme informatique, on va avoir en permanence besoin de stocker provisoirement des valeurs. Il peut sagir de donnes issues du disque dur, fournies par lutilisateur (frappes au clavier). Ces donnes peuvent tre de plusieurs types : elles peuvent tre des nombres, du texte, etc. Ds que lon a besoin de stocker une information au cours dun programme, on utilise une variable.

M. El Marraki

Algorithmique 2011/2012

35

Variable
Pour employer une image, une variable est une bote, que le programme (lordinateur) va reprer par une tiquette. Pour avoir accs au contenu de la bote, il suffit de la dsigner par son tiquette. Dans lordinateur : la boite : est un emplacement de la mmoire, tiquette : est une adresse en binaire.

M. El Marraki

Algorithmique 2011/2012

36

Dclaration des variables

La premire chose faire avant de pouvoir utiliser une variable est de crer la bote et de lui coller une tiquette. Ceci se fait tout au dbut de lalgorithme, avant mme les instructions proprement dites. Cest ce quon appelle la dclaration des variables.

M. El Marraki

Algorithmique 2011/2012

37

Le nom de la variable
Le nom de la variable (ltiquette de la bote) obit des rgles qui changent selon le langage utiliser. Les principaux rgles respecter sont :

Le nom de variable peut comporter des lettres et des chiffres, On exclut la plupart des signes de ponctuation, en particulier les espaces. Un nom de variable doit commencer par une lettre. Le nombre maximal de caractres qui composent le nom dune variable dpend du langage utilis. Ne pas utiliser les mots cls du langage de programmation.

M. El Marraki

Algorithmique 2011/2012

38

Le type de la variable
Lorsquon dclare une variable, il ne suffit pas de crer une bote (rserver un emplacement mmoire) ; il faut prciser ce que lon voudra mettre dedans, car de cela dpendent la taille de la bote (lemplacement mmoire) et le type de codage utilis.

M. El Marraki

Algorithmique 2011/2012

39

Types numriques classiques


Commenons par le cas trs frquent, celui dune variable destine recevoir des nombres.
Si lon rserve un octet pour coder un nombre, on ne pourra coder que 28 = 256 valeurs diffrentes. Cela peut signifier par exemple les nombres entiers de 1 256, ou de 0 255, ou de 127 +128. Si lon rserve deux octets, on a droit 65 536 valeurs ; avec trois octets, 16 777 216, etc.

M. El Marraki

Algorithmique 2011/2012

40

Type Numrique
Octet Entier simple Entier double Rel simple

Plage
0 255 -32 768 32 767 -2 147 483 648 2 147 483 647 -3,40x1038 -1,40x10-45 pour les ngatives 1,40x10-45 3,40x1038 pour les positives
-1,79x10308 -4,94x10-324 les ngatives

Rel double

4,94x10-324 1,79x10308 les positives


M. El Marraki Algorithmique 2011/2012 41

Syntaxe dune dclaration de variable


En pseudo-code, une dclaration de variables aura la forme : Variable g : Numrique Ou encore Variables PrixHT, TauxTVA, PrixTTC : Numrique

M. El Marraki

Algorithmique 2011/2012

42

Type alphanumrique
On dispose donc galement du type alphanumrique (galement appel type caractre, type chane ou en anglais, le type string). Dans une variable de ce type, on stocke des caractres, quil sagisse de lettres, de signes de ponctuation, despaces, ou mme de chiffres. Le nombre maximal de caractres pouvant tre stocks dans une seule variable string dpend du langage utilis.

M. El Marraki

Algorithmique 2011/2012

43

Type alphanumrique
Un groupe de caractres est appel chane de caractres. En pseudo-code, une chane de caractres est toujours note entre guillemets " ", car, Il peut y avoir une confusion entre des nombres et des suites de chiffres. Par exemple, 423 peut reprsenter : le nombre 423 (quatre cent vingt-trois),

ou la suite de caractres 4, 2, et 3 note : "423"

M. El Marraki

Algorithmique 2011/2012

44

Type boolen
Le dernier type de variables est le type boolen : on y stocke uniquement les valeurs logiques VRAI et FAUX. On peut reprsenter ces notions abstraites de VRAI et de FAUX par tout ce qu'on veut : de l'anglais (TRUE et FALSE) ou des nombres (0 et 1). Le type boolen est trs conomique en termes de place mmoire occupe, un seul bit suffit.

M. El Marraki

Algorithmique 2011/2012

45

Exemple
En gnral dans un algorithme on trouve des dclarations de variables de la forme :
Variables a,b,c,delta,x,y : nombres nom,prenom:chaines de caractres ok : booleen.

M. El Marraki

Algorithmique 2011/2012

46

Les primitives

Les primitives

laffectation de variables la lecture / criture les tests les boucles


M. El Marraki Algorithmique 2011/2012 48

Affectation
Laffectation est laction lmentaire dont leffet est de donner une valeur une variable (ranger une valeur une place). On la commande par linstruction symbolise par ( ou = en C et := en Pascal)

M. El Marraki

Algorithmique 2011/2012

49

exemple
x 3
signifie mettre la valeur 3 dans la case identifie par x. A lexcution de cette instruction, la valeur 3 est range en x (nom de la variable) la valeur correspond au contenu : 3 la variable correspond au contenant : x

M. El Marraki

Algorithmique 2011/2012

50

Affectation
On peut reprsenter la variable X par une boite ou case, et quand elle prend la valeur 3, la valeur 3 est dans la case X.

3 X

On remarque quune variable ne peut contenir un instant donn quune seule valeur.

M. El Marraki

Algorithmique 2011/2012

51

Affectation : utilisations
Voici quelques effets dclenches par lutilisation de laffectation ( ) :
Instructions X 3 X 2 Y X X X 3 Y actions 3 2 X 2 X effets

3
plus de 3 ! X 2

X 2 Y 2

La dernire instruction (Y X) signifie : copier dans Y la valeur actuelle de X.

M. El Marraki

Algorithmique 2011/2012

52

Affectation : Un petit exercice instructif :


Quelles sont les valeurs successives prises par les variables X et Y aprs les instructions suivantes : X Y X X Y Y 1; -4 ; X+3 ; Y-5 ; X+2 ; Y-6 ; 1 1 -4 4 -4 -9 -4 -9 -7 -9 -13

Rponses : X Y

M. El Marraki

Algorithmique 2011/2012

53

Echanger deux valeurs :


Problme :
soit 2 variables entires X et Y ayant respectivement comme valeur a et b ; quelles sont les affectations qui donneront X la valeur b et Y la valeur a ?

M. El Marraki

Algorithmique 2011/2012

54

Analyse :
La premire ide est dcrire : X Y ; Y X . Mais a ne marche pas, les deux variables se retrouvent avec la mme valeur b ! Il faut mettre la valeur de X de cot pour ne pas la perdre : on utilise une variable auxiliaire Z et on crit les instructions suivantes : Z X; X Y; Y Z;

M. El Marraki

Algorithmique 2011/2012

55

Vrification :
il sagit de vrifier que lalgorithme donne bien la solution voulu. Ecrivant aprs chaque instruction les valeurs des variables X, Y et Z : Z X ; " X = a, Y = b, Z = a " X Y ; " X = b, Y = b, Z = a " Z ; " X = b, Y = a, Z = a " donc tout va bien! Y

M. El Marraki

Algorithmique 2011/2012

56

Echanger deux valeurs


Autre mthode : sil sagit de nombres entiers, nous pouvons nous passer dune variable auxiliaire, mais en utilisant les primitives additionner et soustraire : X Y X X+Y; XY; XY; " X = a + b, Y = b " " X = a + b, Y = a + b b = a " " X = a + b a = b, Y = a " donc tout va bien!

M. El Marraki

Algorithmique 2011/2012

57

Expressions et oprateurs
Dans une instruction daffectation, on trouve :

1. gauche de la flche, un nom de variable, 2. droite de la flche, ce quon appelle une


expression : un ensemble de valeurs, relies par des oprateurs, et quivalent une seule valeur

M. El Marraki

Algorithmique 2011/2012

58

Expressions et oprateurs

3. Lexpression situe droite de la flche doit tre


du mme type que la variable situe gauche.

Si lun des trois points numrs ci-dessus nest pas respect, la machine sera incapable dexcuter laffectation, et dclenchera une erreur.

M. El Marraki

Algorithmique 2011/2012

59

oprateurs
Un oprateur est un signe qui relie deux valeurs, pour produire un rsultat. Oprateurs numriques : Ce sont les quatre oprations arithmtiques : + * / addition soustraction multiplication division

M. El Marraki

Algorithmique 2011/2012

60

oprateurs
Mentionnons galement le ^ qui signifie puissance". 45 au carr scrira donc 45 ^ 2. La multiplication et la division sont prioritaires sur laddition et la soustraction. 12 * 3 + 5 et (12 * 3) + 5 valent strictement la mme chose, savoir 41. En revanche, 12 * (3 + 5) vaut 12 * 8 soit 96.

M. El Marraki

Algorithmique 2011/2012

61

Oprateur alphanumrique : &


Cet oprateur permet de concatner deux chanes de caractres. Exemple Variables A, B, C en Caractre Dbut A Bonjour B Tous le monde C A & B Fin La valeur de C la fin de lalgorithme est Bonjour Tous le monde

M. El Marraki

Algorithmique 2011/2012

62

Lecture et criture

Introduction
Soit le programme suivant : Variable A : entire Dbut A 12^2 Fin Ce programme nous donne le carr de 12.

M. El Marraki

Algorithmique 2011/2012

64

Introduction
1.

Mais si lon veut le carr dun autre nombre que 12, il faut rcrire le programme. Le rsultat est calcul par la machine elle le garde pour elle, et lutilisateur qui excute ce programme, ne saura jamais quel est le carr de 12.

2.

M. El Marraki

Algorithmique 2011/2012

65

Introduction
Cest pourquoi, il faut utiliser des instructions qui permettent lutilisateur de dialoguer avec la machine.

M. El Marraki

Algorithmique 2011/2012

66

Lecture et criture
Dans un sens, ces instructions permettent lutilisateur de rentrer des valeurs au clavier pour quelles soient utilises par le programme. Cette opration est la lecture. Dans lautre sens, dautres instructions permettent au programme de communiquer des valeurs lutilisateur en les affichant lcran. Cette opration est lcriture.

M. El Marraki

Algorithmique 2011/2012

67

Lecture et criture

Pour pouvoir effectuer un calcul sur une variable, la machine doit connatre la valeur de cette variable.

M. El Marraki

Algorithmique 2011/2012

68

Linstruction de lecture
Pour que lutilisateur entre la (nouvelle) valeur de la variable n, on mettra : Lire (n) Ds que le programme rencontre une instruction Lire, lexcution sinterrompt, attendant larriver dune valeur par lintermdiaire du clavier. Ds que la touche Entre (Enter) a t frappe, lexcution reprend.

M. El Marraki

Algorithmique 2011/2012

69

Les libells

Avant de Lire une variable, il est trs fortement conseill dcrire des libells lcran, afin de prvenir lutilisateur de ce quil doit frapper : Ecrire(Entrez votre nom : ) Lire(NomFamille)

M. El Marraki

Algorithmique 2011/2012

70

Exemple1
Variables val, double : entiers Dbut Ecrire("donner un entier : ") Lire(val) double Val * 2 Ecrire("le double de",val," est : ", double ) Fin

M. El Marraki

Algorithmique 2011/2012

71

Excution

donner un entier : 234 le double de : 234 est : 468

M. El Marraki

Algorithmique 2011/2012

72

Exemple2

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

Rponse pour lexemple2


dbut
Variables A, X : entiers crire(" entrer un entier : " ) lire(A) X A^2 crire(" le carr de " ,A," est : , X)

fin

M. El Marraki

Algorithmique 2011/2012

74

Excution
entrer un entier : 13 le carr de 13 est : 169

M. El Marraki

Algorithmique 2011/2012

75

Exemple 3
Problme : Multiplier deux nombres entiers. Primitives : lire, crire, affecter ( ), multiplier (*).

M. El Marraki

Algorithmique 2011/2012

76

Correction
Algorithme : variables A, B, C : entiers dbut crire("entrer la valeur de A : ") lire(A) crire(" entrer la valeur de B : ") lire(B) C A*B crire(" le produit de " ,A, " et " ,B, " est :", C) fin

M. El Marraki

Algorithmique 2011/2012

77

Excution
entrer la valeur de A : 12 entrer la valeur de B : -11 le produit de 12 et -11 est : -132

M. El Marraki

Algorithmique 2011/2012

78

Objets manipuls par lalgorithme


La premire tape de lanalyse dun algorithme consiste mettre en vidence les donnes du problme, objets qui seront connus au dpart, et les objets que lon espre obtenir comme rsultats. Lalgorithme apparat alors comme transformant les donnes en rsultats lors de lexcution.

Donnes

excution de lalgorithme

rsultats

M. El Marraki

Algorithmique 2011/2012

79

Objets manipuls par lalgorithme

En plus de lalgorithme, il faut fournir la dfinition prcise des objets manipuls : nom des variables, nature et rfrentiel des valeurs (ensemble auquel les valeurs appartiennent) et le rle des variables.

M. El Marraki

Algorithmique 2011/2012

80

Pour lexemple 4
Dfinition des objets : nom
A B C

nature
nombre nombre nombre

rfrentiel
Z Z Z

rle
donne donne rsultat

M. El Marraki

Algorithmique 2011/2012

81

Les tests

si .. alors .., si .. alors .. sinon ..

Les primitives que nous allons prsenter maintenant vont permettre la machine de "choisir" les excutions suivant les valeurs des donnes.

si .. alors ..

La primitive Si C alors A O C est une condition (on prcisera plus loin la nature de cette condition) et A une instruction ou une suite dinstructions, a pour effet de faire excuter A si et seulement si C est satisfaite.

M. El Marraki

Algorithmique 2011/2012

84

si .. alors .. sinon ..

La primitive Si C alors A sinon B a pour effet de faire excuter A si C est satisfaite ou bien B dans la cas contraire (C non satisfaite).

M. El Marraki

Algorithmique 2011/2012

85

Condition
Une condition est une comparaison. Cest--dire quelle est compose de trois lments une valeur un oprateur de comparaison une autre valeur Le rsultat dune condition est un boolen (vrai ou faux)

M. El Marraki

Algorithmique 2011/2012

86

Valeurs
Les valeurs peuvent tre a priori de nimporte quel type :

Numriques, Caractres, Etc.

M. El Marraki

Algorithmique 2011/2012

87

Les oprateurs de comparaison


Les oprateurs de comparaison sont :

= != ou < > < > =< >=


M. El Marraki

galit diffrent strictement infrieur strictement suprieur infrieur ou gal suprieur ou gal

Algorithmique 2011/2012

88

Lordre des caractres


A noter que ces oprateurs de comparaison semploient tout fait avec des caractres. Ceux-ci sont cods par la machine dans lordre alphabtique, les majuscules tant systmatiquement places avant les minuscules. Ainsi on a : "t" < "w" VRAI "Maman" > "Papa" FAUX "maman" > "Papa" VRAI.

M. El Marraki

Algorithmique 2011/2012

89

Conditions composes
Certains problmes exigent parfois de formuler des conditions qui ne peuvent pas tre exprimes sous la forme simple. Prenons le cas " n est compris entre 5 et 8 ". En fait cette phrase cache non une, mais deux conditions. Car elle revient dire que " n est suprieur 5 et n est infrieur 8 ". Il y a donc bien l deux conditions, relies par ce quon appelle un oprateur logique, le mot ET.

M. El Marraki

Algorithmique 2011/2012

90

oprateurs logiques

Linformatique met notre disposition trois oprateurs logiques : ET, OU, et NON.

Le ET et le OU
Le ET a le mme sens en informatique que dans le langage courant. Pour que :

C1

ET C2 soit VRAI, il faut imprativement que C1 soit VRAIE et que C2 soit VRAIE. C1 OU C2 soit VRAI, il suffit que C1 soit VRAIE ou que C2 soit VRAIE.

Le point important est que si C1 est VRAIE et C2 est VRAIE, alors C1OU C2 est VRAIE.
M. El Marraki Algorithmique 2011/2012 92

Tables de vrit pour le ET et le OU


ET V F OU V F

V F

V F

F F

V F

V V

V F

M. El Marraki

Algorithmique 2011/2012

93

Remarques

Le OU informatique ne veut donc pas dire " ou bien ". VRAI NON FAUX

M. El Marraki

Algorithmique 2011/2012

94

Le OU EXLUSIVE : XOR
0 0=0 1 1=0 0 1=1 1 0=1 a a=0 a b b=a

XOR

V F

F V

V F

M. El Marraki

Algorithmique 2011/2012

95

Exemple

Problme :
tant donns deux nombres entiers positifs, identifier le plus grand des deux nombres.

Solution : Analyse

si A>B alors le plus grand est A sinon le plus grand est B

Conception : Algorithme
DEBUT Variables A, B : entiers ECRIRE (Programme permettant de dterminer le plus grand de deux entiers positifs ) ECRIRE (Entrer le premier nombre : ) LIRE (A) ECRIRE (Entrer le second nombre : ) LIRE (B) SI (A>B) ALORS ECRIRE (Le nombre le plus grand est : , A) SINON ECRIRE (Le nombre le plus grand est : , B) FIN

M. El Marraki

Algorithmique 2011/2012

98

Entrer le premier nombre :

Lire(A)

Entrer le second nombre :

Lire(B)

non

Si A > B

oui

ECRIRE Le nombre le plus grand est B

ECRIRE Le nombre le plus grand est A

Organigramme
M. El Marraki Algorithmique 2011/2012 99

Tests imbriqus
Graphiquement, on peut trs facilement reprsenter un SI comme un aiguillage de chemin de fer. Un SI ouvre donc deux voies, correspondant deux traitements diffrents.

M. El Marraki

Algorithmique 2011/2012

100

Tests imbriqus
Il y a des tas de situations o deux voies ne suffisent pas. Par exemple, un programme devant donner ltat de leau selon sa temprature doit pouvoir choisir entre trois rponses possibles (solide, liquide ou gazeuse).

M. El Marraki

Algorithmique 2011/2012

101

Exemple
Variable Temp : Entier Dbut Ecrire ("Entrez la temprature de leau : ") Lire(Temp) Si Temp =< 0 Alors Ecrire("Cest de la glace") Si Temp > 0 Et Temp < 100 Alors Ecrire( "Cest du liquide" ) Si Temp > 100 Alors Ecrire( "Cest de la vapeur") Fin

M. El Marraki

Algorithmique 2011/2012

102

Exemple
Les tests successifs portent sur une la mme chose, la temprature (la valeur de la variable Temp). Il serait ainsi bien plus rationnel dimbriquer les tests de cette manire :

M. El Marraki

Algorithmique 2011/2012

103

Exemple
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" Fin

M. El Marraki

Algorithmique 2011/2012

104

Remarques
1.

Nous avons fait des conomies au niveau de la frappe du programme : au lieu de devoir taper trois conditions, dont une compose, nous navons plus que deux conditions simples. Mais aussi, et surtout, nous avons fait des conomies sur le temps dexcution de lordinateur. Si la temprature est infrieure zro, celui-ci crit dornavant " Cest de la glace " et passe directement la fin, sans tre ralenti par lexamen dautres possibilits (qui sont forcment fausses).

M. El Marraki

Algorithmique 2011/2012

105

Remarques
2.

3.

Cette deuxime version nest donc pas seulement plus simple crire et plus lisible, elle est galement plus performante lexcution. Les structures de tests imbriqus sont donc un outil indispensable la simplification et loptimisation des algorithmes.
Algorithmique 2011/2012 106

M. El Marraki