You are on page 1of 104

Initiation la programmation algorithmique

Anne Acadmique 2007-2008

Plan du cours
Introduction linformatique Architecture dun ordinateur Dcomposition fonctionnelle Concepts cls

ENSA Safi

Introduction

Introduction

Quest-ce quun ordinateur ? Quest-ce quun langage de programmation ? Que signifie faire de linformatique ? A quoi sert la programmation ? Quest-ce que la complexit algorithmique ?

ENSA Safi

Quest-ce quun ordinateur ?


Machine automatique de traitement de linformation obissant des programmes forms par des suites doprations arithmtiques et logiques (Larousse 2002) Diffrents niveaux dapproche : utilisateur, programmeur machine, concepteur de circuits logiques

ENSA Safi

Des 0 et des 1
Le hardware de lordinateur comprend essentiellement : diverses mmoires, un processeur, une horloge, des units dentre/sortie Lordinateur excute la cadence de son horloge des instructions (de niveau machine ) contenue en mmoire et utilisant des donnes contenue dans une autre partie de la mmoire. Les donnes et les instructions, sont codes, au plus bas niveaux en une suite de 0 et de 1. Ces 0 et ces 1 correspondent des tensions des circuits lectroniques. Le cadencement est essentiellement fonction du temps de stabilisation des circuits et de leur chauffement.
ENSA Safi 6

Codage binaire
Le langage des ordinateurs Toutes communications l'intrieur de l'ordinateur sont faites avec des signaux lectriques 0: teint (absence de signal lectrique) 1: allum (prsence de signal lectrique)

ENSA Safi

Un mme nombre peut tre reprsent dans plusieurs bases 123 en base 10 (dcimal) 1111011 en base 2 (binaire) 173 en base 8 (octale) 7B en base 16 (hexadcimale)

ENSA Safi

ENSA Safi

Codage et adressage
On peut exprimer autant avec une suite de 0 et de 1, qu laide dun alphabet complet (a,b,c,d,e ). Il suffit de saccorder sur la faon dont on code linformation. Certains codages peuvent tre plus efficaces que dautres (cf thorie de Shannon) Toute donne code se trouve une certaine adresse en mmoire. Cette adresse en mmoire est elle-mme code sous forme de 0 et de 1.

ENSA Safi

10

Quest-ce quun langage de programmation ?


Langage cd ensemble de mots (vocabulaire) et syntaxe (grammaire) stricte (non ambigu) permettant dcrire un programme Ensemble de structures de donnes, doprations sur ces structures & ensemble de structures de contrle : squencement, branchement conditionnel, itration

ENSA Safi

11

Niveau dun langage


Haut niveau : proche de lhomme, instructions plus complexes, vocabulaire et syntaxe plus riches C++, Java Pascal C, Fortran Assembleur Langage machine

Bas niveau : proche de la machine, instructions lmentaires

ENSA Safi

12

Que signifie faire de linformatique ?


Passer du temps proximit dun ordinateur ? Il est essentiel de prciser le niveau auquel cet outil complexe est utilis Ces niveaux sont relativement indpendants Le plus souvent : Utiliser des fonctionnalits offertes par certains logiciels pour acclrer, rendre plus efficace, le traitement de certains types de donnes
ENSA Safi 13

A quoi sert la programmation ?


A faire excuter par lordinateur une squence dinstructions Habituellement , cette squence dinstructions ralise effectivement un algorithme Un algorithme est une squence finie dinstructions qui permet dobtenir la solution dun problme en un temps fini. La programmation sert rsoudre des catgories de problmes de faon systmatique

ENSA Safi

14

Mais encore
Tous les problmes nont pas de solutions algorithmiques La programmation permet dadapter le comportement de logiciels des catgories spcifiques de problmes. Elle savre souvent indispensable. Dans la description de Turing et Von Neumann, lordinateur est une machine universelle.

ENSA Safi

15

La machine de Turing
Unit de commande
Ruban= entre, sortie et mmoire
tats internes: Etat0, Etat1, Etat2, ...

Lecture/criture + + + +

Etat de la machine Etat0 Etat0

Contenu de Ecrit sur le Dplacement Etat suivant la cellule ruban ruban vide D Etat0 + D Etat1

Le Programme

ENSA Safi

16

Complexit algorithmique
Donne une estimation du nombre doprations lmentaires ncessaires lexcution de lalgorithme, et ce en fonction de la taille des donnes. Lestimation ne tient pas compte de la vitesse dexcution. En gnral la complexit est value dans le pire des cas (worst case analysis)

ENSA Safi

17

Exemples
Recherche dun mot dans un dictionnaire : parcours linaire VS parcours dichotomique Tri dune liste dlments Problmes NP-complets

ENSA Safi

18

Graphique : complexit algorithmique


linaire Nbre dinstructions

logarithmique

Taille des donnes (N)


ENSA Safi 19

Bon ou mauvais programme ?


Aisment lisible donc bien spcifi, bien document Clair, donc bien structur Aisment modifiable Facile tester, dbugger Robuste (erreurs de lutilisateur) Correct Efficace

ENSA Safi

20

Vrai ou faux ?
Lutilisation dun ordinateur permet de raliser un travail plus efficacement et plus rapidement Lordinateur fait ce quon lui dit de faire Le concepteur dun programme connat toujours le rsultat du programme quil a conu

ENSA Safi

21

Architecture dun ordinateur

Architecture dun ordinateur


La mmoire centrale Lunit centrale de traitement (Central Processing Unit) Les units dentre/sorties Les units priphriques

Illustrations

ENSA Safi

23

Diagramme fonctionnel dune architecture de Von Neumann

Data Memory
Input Interface

Arithmetic Unit Control Unit Program Memory Program Interface

Illustration reprise de Tib[2002]


ENSA Safi 24

Output Interface

Ordres de grandeur
K =Kilo M= Mga G= Giga T=Tra 2^10 = 1 024 2^20 =1 048 576 2^30 =1 073 741 824 2^40 =1 099 511 627 776

ENSA Safi

25

La mmoire centrale
Les bits (binary digits) / octets (bytes) Les cellules mmoire (mots) typiquement 32 ou 64 bits Registre dadresse et registre de donnes Lecture et criture

ENSA Safi

26

Schma de principe
Connecteurs donnes

Memoire centrale

Registre donnes L/E Registre adresse

Connecteurs adresse
ENSA Safi 27

Lunit centrale de traitement (CPU)

Les instructions Les adresses Unit de contrle / unit arithmtique et logique Les registres

ENSA Safi

28

Les instructions

Trois informations ncessaires la CPU en contact avec la mmoire RAM. 1. 2. 3. Quelle information traiter ? Quel traitement effectuer ? O ranger le rsultat ?

Architecture RISC et CISC

ENSA Safi

29

Les adresses
La suite des instructions excuter est elle-mme range en mmoire. LA CPU ne communique avec lextrieur que via la mmoire et naccde aux informations que par leur adresse.

ENSA Safi

30

Unit de contrle et ALU


Les circuits qui ralisent les oprations lmentaires (additions, multiplications, oprations logique ) sont regroups dans lALU. Lunit de contrle met en place les donnes et positionne les circuits lectroniques pour que lALU excute effectivement lopration Oprations unaires : mise zro, complmentation logique, dcalage, incrmentation Oprations binaires : ET, OU, XOR
ENSA Safi 31

Circuit additionneur
Additionneur 2 bits

OU ET

ET

ENSA Safi

32

Les registres
Cellules mmoires trs rapides et ddicaces dans la CPU Le compteur ordinal contient ladresse de la prochaine instruction excuter Le registre dinstruction contient linstruction en cours dexcution Laccumulateur Autres registres : gnraux, dindice, de base, dtat (PSW), registre de pile, registre spcialiss (dcalage, virgule flottante, )

ENSA Safi

33

Ordres de grandeurs (2005)


Processeur 32 - 64 bits Mmoire RAM = 1 Go Mmoire dure = 200 Go Vitesse du processeur = 3 GHz

+ Loi de Moore : cf article du Pour La Science


ENSA Safi 34

Illustrations des composants

Carte mre (mother board)

ENSA Safi

36

CPU

ENSA Safi

37

Carte Graphique

ENSA Safi

38

Carte Son

ENSA Safi

39

Carte rseau

ENSA Safi

40

Les Bus

ENSA Safi

41

Connecteurs dentre/sortie

ENSA Safi

42

Hirarchie mmoire

Dans un ordinateur, le processeur accde aux instructions du programme excuter ainsi qu'aux donnes ncessaires son excution depuis la mmoire.
ENSA Safi 43

Programmation Procdurale

Bien distinguer !
Spcification d un algorithme : ce que fait lalgorithme cahier des charges du problme rsoudre Expression d un algorithme : comment il le fait texte dans un langage de type Pascal / C Implmentation d un algorithme : traduction du texte prcdent dans un langage de programmation rel
ENSA Safi 45

Programmation Procdurale
Notion didentificateur et de type Notion de fonction Instructions de contrle du flux dexcution Comment concevoir un programme ? Quelques exemples de code Le traitement des donnes avant tout

ENSA Safi

46

Notion didentificateur et de type


Identificateur : symbole sans signification universelle permettant de dsigner des objets qui nont pas dexistence en dehors du programme. Dclaration : fixe la signification dun identificateur Porte dun identificateur : bloc dinstructions pour lequel la dclaration est valable. Les langages de programmation peuvent tre typs ou non
ENSA Safi 47

Notion de variable
Une variable est un lment de donne dsigne par un identificateur. Dans un langage typ , chaque variable a un type (int, float, boolean, String, ) chaque identificateur a une porte (portion du code dans laquelle lidentificateur est reconnu; en gnral, le bloc dinstructions dans lequel la variable est dclare). Une variable est un endroit de la mmoire laquelle on a donn un nom de sorte que lon puisse y faire facilement rfrence dans le programme. Une variable a une valeur, correspondant un certain type. La valeur dune variable peut changer au cours de lexcution du programme ( do son nom ;-) )
ENSA Safi 48

dclaration et assignation dune variable


Variables i : integer ;
type entier (entier : type prdifini integer : mot cl du langage) identificateur

i:=4;

ENSA Safi

49

Notion de fonction
Une fonction est un morceau de code qui permet de rsoudre un sous-problme du problme trait La dcomposition du code en tches et sous- tches, le rend plus modulaire. Le programme est plus clair, plus lisible, plus aisment modifiable Les fonctions cachent les dtails dimplmentation : il suffit de savoir ce quelles font et non comment elles le font

ENSA Safi

50

Notion de fonction

ENSA Safi

51

Dclaration dune fonction


Comprend essentiellement trois lments: 1. Le nom de la fonction 2. La liste des types darguments 3. Le type de retour de la fonction
Exemples : Function exposant ( i , j : integer ) : integer ;

ENSA Safi

52

Corps dune fonction


Function exposant ( i , j : integer ) : integer ; variablesi2 , a : integer ; Begin i2 := 1 ; For a := 1 To j Do i2 := i2 * i ; exposant := i2 ; End ;

ENSA Safi

53

Exemple : un pseudo-code
Programme Principal
// Ce programme permet de lire deux entiers lcran et dafficher ensuite leur somme

BEGIN variablesunEntier , unAutreEntier : integer ;


// dclaration de variable entire

unEntier=lisAlEcranUnEntier(); unAutreEntier=lisAlEcranUnEntier();
// utilisation de la fonction lisAlEcranUnEntier()()

ecrisAlEcran(calculeSomme(unEntier,unAutreEntier));
// utilisation des fonctions calculeSomme(int,int) et ecrisAlEcran(int)

END
ENSA Safi 54

Instructions de Contrle
Branchement conditionnel : if then else ( si alors aussinon) switch case Boucle conditionnelle : while do ou do while ( fait tant que ) Boucle inconditionnelle For

ENSA Safi

55

Exemple de code
Function calculeSomme( i , j : integer ) : integer ;
// cette fonction donne la somme de deux entiers, si elle est positive, // et renvoie 0 aussinon.

begin EXERCICE end

ENSA Safi

56

Solution 1
Function calculeSomme ( i , j : integer ) : integer ; Begin somme := i+j ; End ;

ENSA Safi

57

Solution 2
Function somme ( i , j : integer ) : integer ; Begin somme := i+j ; If somme <0 then somme:=0 ; End ;

ENSA Safi

58

Comment concevoir un programme ?


Identifier prcisment le problme que le programme se doit de rsoudre Dcomposer le problme en sous-problme Dfinir les fonctions correspondantes crire le programme principal en pseudo-code, en valuant les critres de qualit. Implmenter, compiler, excuter sur diffrents cas dutilisation, dbugger
ENSA Safi 59

Le traitement des donnes avant tout


La conception du programme se fait essentiellement par abstraction procdurale , dcomposition en sous-problme Vision trs top-down de la programmation, tendance cartsienne analytique Danger du Code spaghetti Critres de qualit facilement viols : modularit, lisibilit, robustesse, exactitude

ENSA Safi

60

Premiers algorithmes

Anne Acadmique 2007-2008

Plan :Premiers algorithmes


Les Variables Instruction daffectation Les instructions de lecture et dcriture Les Tests Les Boucles Les Tableaux Procdures et Fonctions Les Fichiers

algorithmique ?
Encyclopedia Universalis : Spcification dun schma de calcul sous forme dune suite finie doprations lmentaires obissant un enchanement dtermin. DONNES RSULTATS, ACTIONS Composition d un nombre fini doprations dont chacune est : dfinie de faon rigoureuse et non ambigu effective sur les donnes adquates (excution en temps fini)
ENSA Safi 63

Pourquoi un cours dalgorithmique ?


Objectif: obtenir de la machine quelle effectue un travail notre place Problme: expliquer la machine comment elle doit s'y prendre Mais... comment le lui dire ? Comment le lui apprendre ? Comment s'assurer qu'elle fait ce travail aussi bien que nous ? Mieux que nous?

ENSA Safi

64

Pourquoi un cours dalgorithmique ?


concevoir une solution

rflchir

ENSA Safi

65

bon en algorithmique ?
La matrise de lalgorithmique requiert deux qualits, trs complmentaires dailleurs : il faut avoir une certaine intuition, car aucune recette ne permet de savoir a priori quelles instructions permettront dobtenir le rsultat voulu. Cest l, si lon y tient, quintervient la forme dintelligence requise pour lalgorithmique. Alors, cest certain, il y a des gens qui possdent au dpart davantage cette intuition que les autres. Cependant, et jinsiste sur ce point, les rflexes, cela sacquiert. Et ce quon appelle lintuition nest finalement que de lexprience tellement rpte que le raisonnement, au dpart laborieux, finit par devenir spontan . il faut tre mthodique et rigoureux. En effet, chaque fois quon crit une srie dinstructions quon croit justes, il faut systmatiquement se mettre mentalement la place de la machine qui va les excuter, arm d'un papier et d'un crayon, afin de vrifier si le rsultat obtenu est bien celui que lon voulait. Cette opration ne requiert pas la moindre once dintelligence. Mais elle reste nanmoins indispensable, si lon ne veut pas crire laveuglette. Et petit petit, force de pratique, vous verrez que vous pourrez faire de plus en plus souvent lconomie de cette dernire tape : lexprience fera que vous verrez le rsultat produit par vos instructions, au fur et mesure que vous les crirez. Naturellement, cet apprentissage est long, et demande des heures de travail patient. Aussi, dans un premier temps, vitez de sauter les tapes : la vrification mthodique, pas pas, de chacun de vos algorithmes reprsente plus de la moiti du travail accomplir... et le gage de vos progrs.

ENSA Safi

66

se mettre mentalement la place de la machine qui va les excuter ?


les ordinateurs, quels quils soient, ne sont fondamentalement capables de comprendre que quatre catgories d'ordres (en programmation, on n'emploiera pas le terme d'ordre, mais plutt celui d'instructions). Ces quatre familles d'instructions sont : laffectation de variables la lecture / criture les tests les boucles Un algorithme informatique se ramne donc toujours au bout du compte la combinaison de ces quatre petites briques de base.
ENSA Safi 67

Avec quelles conventions crit-on un algorithme ?


Historiquement, plusieurs types de notations ont reprsent des algorithmes. Il y a eu notamment une reprsentation graphique, avec des carrs, des losanges, etc. quon appelait des organigrammes. Aujourdhui, cette reprsentation est quasiment abandonne. Cest pourquoi on utilise gnralement une srie de conventions appele pseudo-code , qui ressemble un langage de programmation authentique dont on aurait vacu la plupart des problmes de syntaxe. Ce pseudo-code est susceptible de varier lgrement dun livre (ou dun enseignant) un autre.
ENSA Safi 68

Structure de base dun programme


Dclaration de variables et fonctions Programme principale Dbut .. fin

Variables
La premire chose faire avant de pouvoir utiliser une variable est de crer la bote et de lui coller une etiquette (identificateur). Ceci se fait tout au dbut de lalgorithme, avant mme les instructions proprement dites. Cest ce quon appelle la dclaration des variables Il y a trois type: Type Numrique Type alphanumrique Type boolen En pseudo-code, une dclaration de variables aura ainsi cette tte : variables g : entier
identificateur

En informatique, une variable possde un moment donn une valeur et une seule valeur Dans un programme une variable a un identificateur unique un identificateur est un mot : - commenant obligatoirement par une lettre - ne comportant aucun espace
ENSA Safi 70

Type variable
Type Numrique Type caractre Type chane Type boolen

ENSA Safi

71

Type variable numrique


Tous les langages, quels quils soient offrent un bouquet de types numriques, dont le dtail est susceptible de varier lgrement dun langage lautre. On retrouve cependant les types suivants : type entier rel ensemble nom_typ caractres e autoriss de valeurs ent 09 [-32768..+32767] entier rel 0 9, . exemples de valeurs -152 +4560 ou 4560 -12.3652 +0.186 ou 0.186

ENSA Safi

72

Instruction daffectation
Cette seule chose quon puisse faire avec une variable, cest laffecter, cest--dire lui attribuer une valeur En pseudo-code, l'instruction d'affectation se note avec le signe

ENSA Safi

73

Expressions et oprateurs
Oprateurs numriques : + : addition - : soustraction * : multiplication / : division Parenthses * et / + et 12 * 3 + 5 et (12 * 3) + 5 valent strictement la mme chose. En revanche, 12 * (3 + 5) vaut 12 * 8 soit 96 Oprateur alphanumrique : & concatner Oprateurs logiques (ou boolens) ET, du OU, du NON

ENSA Safi

74

Instruction daffectation
A la rigueur, elle peut ne pas avoir de valeur du tout (une fois quelle a t dclare, et tant quon ne la pas affecte. A signaler que dans certains langages, les variables non encore affectes sont considres comme valant automatiquement zro). Mais ce qui est important, cest que cette valeur justement, ne varie pas proprement parler. Du moins ne varie-t-elle que lorsquelle est lobjet dune instruction daffectation. La deuxime remarque concerne le signe de laffectation. En algorithmique, comme on la vu, cest le signe . Mais en pratique, la quasi totalit des langages emploient le signe gal. Et l, pour les dbutants, la confusion avec les maths est galement facile. En maths, A = B et B = A sont deux propositions strictement quivalentes. En informatique, absolument pas, puisque cela revient crire A B et B A, deux choses bien diffrentes. De mme, A = A + 1, qui en mathmatiques, constitue une quation sans solution, reprsente en programmation une action tout fait licite (et de surcrot extrmement courante). Donc, attention ! ! ! La meilleure des vaccinations contre cette confusion consiste bien employer le signe en pseudo-code, signe qui a le mrite de ne pas laisser place lambigut. Une fois acquis les bons rflexes avec ce signe, vous naurez plus aucune difficult passer au = des langages de programmation.
ENSA Safi 75

Exercice 1
Quelles seront les valeurs des variables A et B aprs excution des instructions suivantes ? variables A, B : Entiers Dbut A1 BA+3 A3 Fin

ENSA Safi

76

Solution
Aprs La valeur des variables est : A1 A=1 B=? BA+3 A=1 B=4 A3 A=3 B=4

ENSA Safi

77

Exercice 2
Quelles seront les valeurs des variables A, B et C aprs excution des instructions suivantes ? Variables A, B, C : Entier Dbut A5 B3 CA+B A2 CBA Fin

ENSA Safi

78

Solution
Aprs A5 B3 CA+B A2 CBA La valeur des variables est : A=5 B=? C=? A=5 B=3 C=? A=5 B=3 C=8 A=2 B=3 C=8 A=2 B=3 C=1

ENSA Safi

79

Exercice 3
Quelles seront les valeurs des variables A et B aprs excution des instructions suivantes ? Variables A, B : Entier Dbut A5 BA+4 AA+1 BA4 Fin

ENSA Safi

80

Solution
Aprs La valeur des variables est : A5 A=5 B=? BA+4 A=5 B=9 AA+1 A=6 B=9 BA4 A=6 B=2

ENSA Safi

81

Exercice 4
Quelles seront les valeurs des variables A, B et C aprs excution des instructions suivantes ? Variables A, B, C :Entier Dbut A3 B 10 CA+B BA+B AC Fin

ENSA Safi

82

Solution
Aprs A3 B 10 CA+B BA+B AC La valeur des variables est : A=3 B=? C=? A=3 B = 10 C=? A=3 B = 10 C = 13 A=3 B = 13 C = 13 A = 13 B = 13 C = 13

ENSA Safi

83

Exercice 5
Quelles seront les valeurs des variables A, B et C aprs excution des instructions suivantes ? variablesA, B, C :Entier Dbut A3 B 10 CA+B BA+B AC Fin

ENSA Safi

84

Solution
Aprs A5 B2 AB BA La valeur des variables est : A=5 B=? A=5 B=2 A=2 B=2 A=2 B=2

Les deux dernires instructions ne permettent donc pas dchanger les deux valeurs de B et A, puisque lune des deux valeurs (celle de A) est ici crase. Si lon inverse les deux dernires instructions, cela ne changera rien du tout, hormis le fait que cette fois cest la valeur de B qui sera crase.

ENSA Safi

85

Exercice 6
Plus difficile, mais cest un classique absolu, quil faut absolument matriser : crire un algorithme permettant dchanger les valeurs de deux variables A et B, et ce quel que soit leur contenu pralable.

ENSA Safi

86

Solution
Dbut CA AB BC Fin On est oblig de passer par une variable dite temporaire (la variable C).

ENSA Safi

87

Exercice 7
Une variante du prcdent : on dispose de trois variables A, B et C. crivez un algorithme transfrant B la valeur de A, C la valeur de B et A la valeur de C (toujours quels que soient les contenus pralables de ces variables).

ENSA Safi

88

Solution
Dbut DC CB BA AD Fin En fait, quel que soit le nombre de variables, une seule variable temporaire suffit

ENSA Safi

89

Exercice 8
Que produit lalgorithme suivant ? Variables A, B, C : Caractre Dbut A "423" B "12" CA+B Fin

ENSA Safi

90

Solution
Il ne peut produire quune erreur dexcution, puisquon ne peut pas additionner des caractres.

ENSA Safi

91

Exercice 9
Que produit lalgorithme suivant ? Variables A, B, C :Caractre Dbut A "423" B "12" CA&B Fin

ENSA Safi

92

Solution
En revanche, on peut les concatner. A la fin de lalgorithme, C vaudra donc "42312".

ENSA Safi

93

Les instructions de lecture et dcriture (I/O standard: clavier/ecran)


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.

ENSA Safi

94

Les instructions de lecture et dcriture: Syntaxe


lire_clavier Titi ou Lire Titi Ds que le programme rencontre une instruction Lire, lexcution sinterrompt, attendant la frappe dune valeur au clavier. Ds lors, aussitt que la touche Entre (Enter) a t frappe, lexcution reprend ecrire_ecran Toto ou Ecrire Toto Dans le sens inverse, pour crire quelque chose lcran. Important: Avant de lire_clavier une variable, il est trs fortement conseill dcrire des libells lcran, afin de prvenir lutilisateur de ce quil doit frapper
ENSA Safi 95

Exercice 1
Quel rsultat produit le programme suivant ? Variables v, double: entier Dbut V 231 Double V * 2 ecrire_ecran V ecrire_ecran le double est ,Double Fin

ENSA Safi

96

Solution
On verra apparatre lcran 231, puis 462 (qui vaut 231 * 2)

ENSA Safi

97

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

ENSA Safi

98

Solution
variables nb, carr : Entier Dbut ecrire_ecran "Entrez un nombre :" lire_clavier nb carr nb * nb ecrire_ecran "Son carr est : ", carr Fin En fait, on pourrait tout aussi bien conomiser la variable carr en remplaant les deux avant-dernires lignes par : ecrire_ecran "Son carr est : ", nb*nb C'est une question de style ; dans un cas, on privilgie la lisibilit de l'algorithme, dans l'autre, on privilgie l'conomie d'une variable.

ENSA Safi

99

Exercice 3
Ecrire un programme 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.

ENSA Safi

100

Solution
variables nb, pht, ttva, pttc : entier Dbut ecrire_ecran "Entrez le prix hors taxes :" lire_clavier pht ecrire_ecran "Entrez le nombre darticles :" lire_clavier nb ecrire_ecran "Entrez le taux de TVA ( %):" lire_clavier ttva pttc nb * pht * (1 + (ttva/100)) ecrire_ecran "Le prix toutes taxes est : ", pttc Fin L aussi, on pourrait squeezer une variable et une ligne en crivant directement. : ecrire_ecran "Le prix toutes taxes est : ", nb * pht * (1 + ttva) C'est plus rapide, plus lger en mmoire, mais un peu plus difficile relire (et crire !)

ENSA Safi

101

Les Tests
Si boolen Alors Boolen 1 Instructions Finsi oui Instruction 1 Si boolen Alors Instructions 1 Sinon Instructions 2 Finsi Si boolen1 Alors Instructions 1 Sinon si boolen2 Alors Instructions 2 Instruction suivant Instructions 3 Sinon Instructions 4 Finsi
ENSA Safi

non non

Boolen 2 oui Instruction 2 Instruction 3

Instruction 4

102

Les Tests

Boolen est une condition : gal = diffrent de != strictement plus petit que < strictement plus grand que > plus petit ou gal <= plus grand ou gal >= Conditions composes oprateur logique ET, OU, NON, et XOR
ENSA Safi 103

Exercice 1
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).

ENSA Safi

104

You might also like