Vous êtes sur la page 1sur 14

1

Algorithme

Table des matires


1 Codage 1.1 Systme binaire . . . . . . . . . . . . . . . . . . 1.2 La numrotation de position en base dcimale 1.3 La numrotation de position en base binaire . . 1.4 Codage hexadcimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 2 2 4 5 5 6 6 6 6 7 7 8 8 8 9 10 11 11 11 11 13 13

Introduction 2.1 Algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Conventions pour crire un algorithme . . . . . . . . . . . . . . . . Les variables 3.1 Dnition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Dclaration des variables . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Affectation dune variable . . . . . . . . . . . . . . . . . . . . . . . . Lecture et criture dune variable 4.1 Dnition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Exercice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les tests 5.1 Exercice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les boucles 6.1 Dnition . . . . . . 6.2 La boucle simple . . 6.3 Exercice . . . . . . . . 6.4 Boucler en comptant 6.5 Exercice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5 6

PAUL MILAN

26 novembre 2010

S ECONDE

CODAGE

1
1.1

Codage
Systme binaire

Lorsquun ordinateur traite du texte, du son, de limage, de la vido, il traite en ralit des nombres. Mais ces nombres sont exclusivement des informations binaires. Mais quest-ce quune information binaire ? Cest une information qui ne peut avoir que deux tats : par exemple, ouvert - ferm, libre - occup, vrai - faux . . . La mmoire vive (la RAM ) est forme de millions de composants lectroniques qui peuvent retenir ou relcher une charge lectrique. La surface dun disque dur, dune bande ou dune disquette est recouverte de particules mtalliques qui peuvent, grce un aimant, tre orientes dans un sens ou dans lautre. Et sur un CD-ROM, on trouve un long sillon troit irrgulirement perc de trous. Toutefois, la coutume veut quon symbolise une information binaire, quel que soit son support physique, sous la forme de 1 et de 0. Il faut bien comprendre que ce nest l quune reprsentation, une image commode, que lon utilise pour parler de toute information binaire. Lorsque nous disons que 4 + 3 = 7, nous manions de pures abstractions, reprsentes par de non moins purs symboles ! Le concept de nombre, de quantit pure, a donc constitu un immense progrs (que les ordinateurs nont quant eux, toujours pas accompli). Mais si concevoir les nombres, cest bien, possder un systme de notation performant de ces nombres, cest encore mieux.

1.2

La numrotation de position en base dcimale

Notre systme de numration est un systme dcimal de position. Il est constitu de 10 chiffres dont la position indique le nombre dunits de la puissance de 10 indique par le rang. 3 405 = 3 1000 + 4 100 + 0 101 + 5 1 3 405 = 3 103 + 4 102 + 0 101 + 5 100

1.3

La numrotation de position en base binaire

Les ordinateurs, eux, comme on la vu, ont un dispositif physique fait pour stocker (de multiples faons) des informations binaires. Alors, lorsquon reprsente une information stocke par un ordinateur, le plus simple est dutiliser un systme de reprsentation deux chiffres : les fameux 0 et 1. Dans un ordinateur, le dispositif qui permet de stocker de linformation est donc rudimentaire, bien plus rudimentaire que les mains humaines. Avec un emplacement dinformation dordinateur, on est limit deux choses diffrentes seulement. Avec une telle information binaire, on ne va pas loin. Voil pourquoi, ds leur invention, les ordinateurs ont t conus pour manier ces informations par paquets de 0 et de 1. Et la taille de ces paquets a t xe 8 informations binaires.
PAUL MILAN

26 novembre 2010

S ECONDE

1.3

L A NUMROTATION DE POSITION EN BASE BINAIRE

Une information binaire (symbolise couramment par 0 ou 1) sappelle un bit. Un groupe de huit bits sappelle un octet (en anglais, byte) Combien dtats diffrents un octet possde-t-il ? Chaque bit de loctet peut occuper deux tats. Il y a donc dans un octet : 28 = 256 possibilits Cela signie quun octet peut servir coder 256 nombres diffrents : ce peut tre la srie des nombres entiers de 1 256, ou de 0 255, ou de 127 +128. Cest une pure affaire de convention, de choix de codage. Si lon veut coder des nombres plus grands que 256, ou des nombres ngatifs, ou des nombres dcimaux, on va donc tre contraint de mobiliser plus dun octet. Ce nest pas un problme, et cest trs souvent que les ordinateurs procdent ainsi. En effet, avec deux octets, on a 256 256 = 65 536 possibilits. En utilisant trois octets, on passe 2563 = 16 777 216 possibilits. Cela implique galement quun octet peut servir coder autre chose quun nombre : loctet est trs souvent employ pour coder du texte. Il y a 26 lettres dans lalphabet. Mme en comptant diffremment les minuscules et les majuscules, et mme en y ajoutant les chiffres et les signes de ponctuation, on arrive un total infrieur 256. Cela veut dire que pour coder convenablement un texte, le choix dun caractre par octet est un choix pertinent. Se pose alors le problme de savoir quel caractre doit tre reprsent par quel tat de loctet. Il existe un standard international de codage des caractres et des signes de ponctuation. Ce standard stipule quel tat de loctet correspond quel signe du clavier. Il sappelle lASCII (pour American Standard Code for Information Interchange). Et fort heureusement, lASCII est un standard universellement reconnu et appliqu par les fabricants dordinateurs et de logiciels. Bien sr, se pose le problme des signes propres telle ou telle langue (comme les lettres accentues en franais, par exemple). LASCII a par le problme en rservant certains codes doctets pour ces caractres spciaux chaque langue. En ce qui concerne les langues utilisant un alphabet non latin, un standard particulier de codage a t mis au point. Quant aux langues non alphabtiques (comme le chinois), elles payent un lourd tribut linformatique pour navoir pas su voluer vers le systme alphabtique. . . Revenons-en au codage des nombres sur un octet. Nous avons vu quun octet pouvait coder 256 nombres diffrents, par exemple (cest le choix le plus spontan) la srie des entiers de 0 255. Comment faire pour, partir dun octet, reconstituer le nombre dans la base dcimale qui nous est plus familire ? Il suft dappliquer les principes de la numrotation de position, en gardant lesprit que l, la base nest pas dcimale, mais binaire. Prenons un octet au hasard : 11 010 011 On a alors
PAUL MILAN

26 novembre 2010

S ECONDE

CODAGE

11 010 011 = 1 27 + 1 26 + 0 25 + 1 24 + 0 23 + 0 22 + 1 21 + 1 20 = 1 128 + 1 64 + 1 16 + 1 2 + 1 1 = 128 + 64 + 16 + 2 + 1 = 211 Inversement, comment traduire un nombre dcimal en codage binaire ? Il suft de rechercher dans notre nombre les puissances successives de deux. Prenons, par exemple, 186. Il est bon de connatre les premires puissances de 2 : 20 21 22 23 24 25 26 1 2 4 8 27 28 29 210

16 32 64 128 256 512 1024

On cherche la plus grande puissance de 2 contenu dans le nombre, on le soustrait puis ce nouveau nombre on cherche la plus grande puissance de 2 et ainsi de suite. Dans 186, on trouve 128, soit 1 27 . Je retranche 128 de 186 et jobtiens 58. Dans 58, on trouve 32, soit 1 25 . Je retranche 32 de 58 et jobtiens 26. Dans 26, on trouve 16, soit 1 24 . Je retranche 16 de 26 et jobtiens 10. Dans 10, on trouve 8, soit 1 23 . Je retranche 8 de 10 et jobtiens 2. Dans 2, on trouve 2, soit 1 21 . Je retranche 2 de 2 et jobtiens 0. Il ne me reste plus qu reporter ces diffrents rsultats (dans lordre !) pour reconstituer loctet. Jcris alors quen binaire, 186 est reprsent par : 186 = 10 111 010

1.4

Codage hexadcimal

Pour nir, on va voquer un dernier type de codage, qui constitue une alternative pratique au codage binaire. Il sagit du codage hexadcimal, autrement dit en base seize. Pourquoi ? Tout dabord, parce que le codage binaire, ce nest tout de mme pas trs conomique, ni trs lisible. Pas trs conomique : pour reprsenter un nombre entre 1 et 256, il faut utiliser systmatiquement huit chiffres. Pas trs lisible. Alors, une alternative toute naturelle, tait de reprsenter loctet non comme huit bits (ce que nous avons fait jusque l), mais comme deux paquets de 4 bits (les quatre de gauche, et les quatre de droite). Avec 4 bits, nous pouvons coder 24 = 16 nombres diffrents. En base seize, 16 nombres diffrents se reprsentent avec un seul chiffre (de mme quen base 10, dix nombres se reprsentent avec un seul chiffre). Quels symboles choisir pour les chiffres ? Pour les dix premiers, on prend les dix chiffres de la base dcimale. Les dix premiers nombres de la base seize scrivent donc 0, 1, 2, 3, 4, 5, 6, 7, 8, et 9. Il nous manque encore 6 chiffres, on
PAUL MILAN

26 novembre 2010

S ECONDE

prend les premires lettres de lalphabet. Ainsi, par convention, A vaut 10, B vaut 11, etc. jusqu F qui vaut 15. Prenons un octet au hasard : 10 011 110 Pour convertir ce nombre en hexadcimal, la mthode consiste passer du binaire vers lhexadcimal. Divisons 10 011 110 en 1 001 (partie gauche) et 1 110 (partie droite). 1 001, cest 8 + 1 = 9 1 110, cest 8 + 4 + 2 = 14 Le nombre scrit donc en hexadcimal : 9E. Le codage hexadcimal est trs souvent utilis quand on a besoin de reprsenter les octets individuellement, car dans ce codage, tout octet correspond seulement deux signes.

2
2.1

Introduction
Algorithme
Un algorithme est une suite dinstructions, qui une fois

Dfinition 1 :

excute correctement, conduit un rsultat donn. Pour fonctionner, un algorithme doit donc contenir uniquement des instructions comprhensibles par celui qui devra lexcuter. La matrise de lalgorithmique requiert deux qualits : il faut avoir une certaine intuition, car aucune recette ne permet de savoir priori quelles instructions permettront dobtenir le rsultat voulu. il faut tre mthodique et rigoureux. En effet, chaque fois quon crit une srie dinstructions quon croit justes, il faut systmatiquement se mettre la place de la machine qui va les excuter, pour vrier si le rsultat obtenu est bien celui que lon voulait. Les ordinateurs, quels quils soient, ne sont fondamentalement capables de comprendre que quatre catgories dordres (en programmation, on nemploiera pas le terme dordre, mais plutt celui dinstructions). Ces quatre familles dinstructions sont : laffectation de variables la lecture / criture les tests les boucles

Un algorithmique exprime les instructions rsolvant un problme donn indpendamment des particularits de tel ou tel langage de programmation. Apprendre un algorithmique, cest apprendre manier la structure logique dun programme informatique. Un langage de programmation est une convention pour donner des ordres un ordinateur.
PAUL MILAN

26 novembre 2010

S ECONDE

LES VARIABLES

2.2

Conventions pour crire 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. Cependant ds que lalgorithme commence grossir un peu, ce nest plus pratique. 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. Cest bien normal : le pseudo-code, encore une fois, est purement conventionnel ; aucune machine nest cense le reconnatre.

3
3.1

Les variables
Dnition

Dfinition 2 : Ds que lon a besoin de stocker une information au cours dun programme, on utilise une 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 suft de la dsigner par son tiquette.

3.2

Dclaration des variables

La premire chose faire avant de pouvoir utiliser une variable est de crer la bote et de lui coller une tiquette. Cest ce quon appelle la dclaration des variables. Le nom de la variable (ltiquette de la bote) obit des impratifs changeant selon les langages. Toutefois, une rgle absolue est quun nom de variable peut comporter des lettres et des chiffres, mais quil exclut la plupart des signes de ponctuation, en particulier les espaces. Un nom de variable correct commence galement imprativement par une lettre. Quant au nombre maximal de signes pour un nom de variable, il dpend du langage utilis. Une fois le nom choisi, il faut dterminer le type de la variable. On peut distinguer 6 types de variable : Type numrique : un nombre (entier, dcimal, rel). Type montaire : un nombre avec deux dcimales. Type date : jour / mois / anne. Type alphanumrique : du texte. Type boolen : qui ne peut prendre que deux valeurs VRAI ou FAUX.
PAUL MILAN

26 novembre 2010

S ECONDE

3.3

A FFECTATION D UNE VARIABLE

3.3

Affectation dune variable

La seule chose quon puisse faire avec une variable, cest laffecter, cest--dire lui attribuer une valeur. a 24 ab Attribue la valeur 24 la variable a. Attribut la valeur de a la variable b.

une instruction daffectation ne modie que ce qui est situ gauche de la che. On peut aussi affecter une variable laide dune opration : c a+4 Attribut la valeur a + 4 la variable c.

On peut changer la valeur dune variable avec elle-mme : b b+1 Augmente de 1 la variable b. &

Oprateur alpha numrique : concaniser A Paul B Milan C A&B Attribue la valeur C

PaulMilan.

Les oprateurs numriques sont : Laddition + La soustraction La multiplication La division / La puissance 52 = 25

Les oprateurs logiques sont : ET intersection de deux ensembles OU (non exclusif) union de deux ensembles NON complmentaire dun ensemble Deux remarques : En informatique une variable ne peut prendre un moment donn quune valeur et une seule, contrairement une quation qui peut ventuellement avoir plusieurs solutions Souvent laffectation dune variable se note : B = A qui veut dire que B prend la valeur A, qui est alors diffrent de A = B o A prend la valeur de B

Lecture et criture dune variable


Les mots lecture et criture se situe au niveau du programme

PAUL MILAN

26 novembre 2010

S ECONDE

LECTURE ET CRITURE DUNE VARIABLE

4.1

Dnition

Dfinition 3 : Lire une variable signie que lutilisateur doit rentrer une valeur pour que le programme la lise Ecrire une variable signie que le programme renvoie la valeur de la variable que le programme a trouv.

4.2

Exemples

Un programme tout simple pour crire votre nom Instruction 1 : Ecrire "Entrez votre nom de famille" Instruction 2 : Lire NomFamille

4.3

Exercice

On considre lalgorithme suivant : Choisir un nombre. Lui ajouter 1. Multiplier le rsultat par 2. Soustraire 3 au rsultat. Afcher le rsultat. 1 1) Appliquer cet algorithme : 3, 4, 0, . 3 2) Ecrire cet algorithme avec le logiciel Algobox. Vrier les rsultats obtenus. 3) Comment choisir un nombre pour que safcher le nombre 0 ? le nombre 5 ? 4) Ecrire laide du logiciel Algobox un programme permettant en partant du nombre afch, de retrouver le nombre choisi initialement.  1) On trouve aisement les rsultats suivant : 5, 9, 1, 1 3 2) Le langage dAlgobox est trs proche du pseudo code. On trouve ainsi :

PAUL MILAN

26 novembre 2010

S ECONDE

3) Pour pouvoir trouver le nombre de dpart, il nous faut remonter lalgorithme : 0 3


+3 2 +3 2

3 1 1 2 2
1

5 2 1 2
4) On obtient donc lagorithme avec Algobox :

Les tests

Il y a deux formes pour un test : soit la forme complte, soit la forme simplie :

Forme complte Si condition alors Instructions 1 Sinon Instructions 2 Finsi

Forme simplie Si condition alors Instructions Finsi Si la condition nest pas vrie le programme ne fait rien.

La condition portant sur une variable peut tre : Une valeur atteindre. Une comparaison avec une autre variable (galit, ingalit, non galit) Autre valeur On peut aussi mettre un test qui se dcompose en plusieurs conditions relies par un oprateur logique : condition 1 ET condition 2 : les deux conditions doivent tre vries en mme temps. condition 1 OU condition 2 : lune au moins des deux conditions doivent tre vries. On peut aussi imbriquer un ou plusieurs autres tests lintrieur dun test. On a alors le schma suivant :
PAUL MILAN

26 novembre 2010

S ECONDE

LES TESTS

Si condition 1 alors Instructions 1 Sinon Si condition 2 alors Instructions 2 Sinon Instruction 3 Finsi Finsi On pourrait schmatiser cette situation par :

5.1

Exercice

On donne ci-dessous lalgorithme associe la valeur absolue, "abs()" de votre calculatrice.

1) Tester cet algorithme pout 2, 3 et 0. 2) Reprsenter graphiquement cette fonction laide de votre calculatrice.  1) On trouve facilement : 2,3 et 0.
PAUL MILAN

26 novembre 2010

S ECONDE

2) Voici la courbe grce un algorithme dAlgobox

6
6.1

Les boucles
Dnition

Dfinition 4 : Une boucle est une structure rptitive ou itrative, cest dire que la boucle effectue n fois un calcul sous le contrle dune condition darrt.

6.2

La boucle simple

La boucle simple obit au schma suivant :

Tant que condition Instructions FinTantque

Dans le cas o la condition est toujours vrie, lordinateur tourne alors dans la boucle et nen sort plus. La boucle innie est une des hantises les plus redoutes des programmeurs. Cette faute de programmation est courante chez tout apprenti programmeur.

6.3

Exercice

Soit un algorithme permettant de trouver la partie entire dun nombre positif. On rappelle que la partie entire n dun nombre x est dnie comme suit : n
PAUL MILAN

x < n+1
S ECONDE

26 novembre 2010

LES BOUCLES

1) Tester cet algorithme avec le nombre x = 4, 3, en crivant tous les rsultats par boucle. 2) Trouver un algorithme qui permette de calculer la partie entire dun nombre quelconque (positif ou ngatif).



1) La valeur de N au dbut vaut 0 donc N + 1 = 1 1er test 2e test 3e test 4e test 5e test 4, 3 4, 3 4, 3 4, 3 4, 3 1 2 3 4 5 donc donc donc donc donc N 1 N 2 N 3 N 4 on afche 4

2) La dnition de la partie entire est la mme pour un nombre ngatif. Il ne faut pas donc confondre partie entire et troncature en effet : la partie entire de 2, 5 est 3 alors que sa troncature est 2. Pour crire un algorithme partir de lancien est intressant de passer par la valeur absolue abx () (vue plus haut). Il faut donc introduire une nouvelle variable A qui correspond la valeur absolue de x. Pour lafchage, comme la partie entire est diffrente de la troncature, pour x < 0, il faut afcher N 1. On obtient alors lalgorithme suivant :
PAUL MILAN

26 novembre 2010

S ECONDE

6.4

B OUCLER EN COMPTANT

6.4

Boucler en comptant

Si lon connat lavance le nombre de dincrmantation, on a alors la structure suivante : Pour compteur = initial Instructions FinPour Si lon ne connat pas lavance le nombre ditration, on ajoute la structure avzec tant que : nal par valeur du pas

Pour compteur = initial par Instructions FinPour

valeur du pas

Tant que condition

6.5

Exercice

On considre lalgorithme suivant :


PAUL MILAN

26 novembre 2010

S ECONDE

LES BOUCLES

Variables N, i, S Algorithme Afcher Saisisser un nombre entier N : Saisir N S reoit la valeur 1 Pour i de 1 jusqu N S reoit S i FinPour Afcher S 1) Tester cette algorithme pour N = 5 en donnant les rsultats chaque itration. 2) Pourquoi linitialisation est-elle importante.

3) Ecrire cet algorithme avec le logiciel Algobox ou votre calculatrice.  1) On trouve comme rsutat : i S 0 1 1 1 2 2 3 6 4 24 5 120

2) Linitialisation est important (S = 1) car si lon oublit cette ligne la valeur par dfaut de S est 0, ce qui donnera un rsultat nul chaque itration. 3) Voici lalorithme avec Algobox :

PAUL MILAN

26 novembre 2010

S ECONDE