Vous êtes sur la page 1sur 20

- Algorithmique -

Lyce J. MERMOZ 20/09/10

SOMMAIRE

1.

INTRODUCTION .................................................................................................................................................... 3 1.1 1.2 1.3 HISTORIQUE......................................................................................................................................................... 3 DEFINITION .......................................................................................................................................................... 3 CONVENTION DECRITURE ................................................................................................................................... 3

2.

LES DONNEES MANIPULEES ............................................................................................................................. 4 2.1 DECLARATIONS DES VARIABLES .......................................................................................................................... 4 2.2 LES PRINCIPAUX TYPES DE DONNEES ................................................................................................................... 4 2.2.1 Numrique................................................................................................................................................... 4 2.2.2 Boolen ....................................................................................................................................................... 5 2.2.3 Alphanumrique.......................................................................................................................................... 5 2.3 PRESENTATIONS DES VARIABLES ......................................................................................................................... 6

3. 4.

INSTRUCTIONS DAFFECTATION.................................................................................................................... 6 OPERATEURS ET EXPRESSIONS ...................................................................................................................... 7 4.1 4.2 4.3 OPERATEURS ARITHMETIQUES :........................................................................................................................... 7 OPERATEUR DE CONCATENATION : &.................................................................................................................. 7 OPERATEURS LOGIQUES : .................................................................................................................................... 7

5. 6.

STRUCTURE GENERALE DUN ALGORITHME ............................................................................................ 8 INTERFACE HOMME-MACHINE ...................................................................................................................... 9 6.1 6.2 INSTRUCTION DE LECTURE ................................................................................................................................... 9 INSTRUCTION DECRITURE ................................................................................................................................... 9

7.

CONCEPTS DE BASE DE LALGORITHMIQUE ........................................................................................... 11 7.1 STRUCTURE SEQUENTIELLE ............................................................................................................................... 11 7.2 STRUCTURE ALTERNATIVE ................................................................................................................................ 11 7.2.1 Mise en situation ....................................................................................................................................... 11 7.2.2 Syntaxe dun choix simple......................................................................................................................... 11 7.2.2.1 Condition et oprateurs de comparaison ............................................................................................... 12 7.2.2.2 Conditions composes .......................................................................................................................... 13 7.2.3 Tests imbriqus ......................................................................................................................................... 13 7.3 CHOIX MULTIPLES ............................................................................................................................................. 15 7.4 STRUCTURE ITERATIVE (REPETITION) ................................................................................................................ 16 7.4.1 Boucle TANT QUE .............................................................................................................................. 16 7.4.2 Boucle FAIRE -TANT QUE .................................................................................................................. 16 7.4.3 Boucle POUR ...................................................................................................................................... 17

8.

LES TABLEAUX.................................................................................................................................................... 18 8.1 8.2 8.3 8.4 8.5 DEFINITION ........................................................................................................................................................ 18 DECLARATION ................................................................................................................................................... 18 ACCES AUX ELEMENTS DUN TABLEAU .............................................................................................................. 18 CAS DES CHAINES DE CARACTERES .................................................................................................................... 19 TABLEAU MULTIDIMENSIONNEL ........................................................................................................................ 19

9.

NOTION DE FONCTIONS ................................................................................................................................... 21

DC/DD

Page : 1

- Algorithmique 10. 11. 11.1 11.2 11.3 11.4 11.5 12. 12.1 12.2 13.

Lyce J. MERMOZ 20/09/10

TYPE ENUMERE .............................................................................................................................................. 22 LES ENREGISTREMENTS.............................................................................................................................. 23 DECLARATION ET UTILISATION .......................................................................................................................... 23 REPRESENTATION GRAPHIQUE ........................................................................................................................... 23 ENREGISTREMENTS IMBRIQUES ......................................................................................................................... 23 ENREGISTREMENTS ET POINTEURS..................................................................................................................... 24 ENREGISTREMENT AUTO-REFERENCE ................................................................................................................ 24 STRUCTURES DE DONNEES......................................................................................................................... 25 DEFINITION ........................................................................................................................................................ 25 IMPLEMENTATION DUNE PILE DENTIER PAR TABLEAU ..................................................................................... 26 LISTES CHAINEES........................................................................................................................................... 27

13.1 LISTE CHAINEE SIMPLE ...................................................................................................................................... 27 13.1.1 Ajouter un maillon en fin de liste .............................................................................................................. 27 13.1.2 Ajouter un maillon en dbut de liste ......................................................................................................... 28 13.1.3 Insertion dans la liste................................................................................................................................ 28 13.1.4 Supression du dernier lment de la liste ................................................................................................. 29 13.1.5 Suppression du premier lment de la liste............................................................................................... 29 13.1.6 Suppression au milieu de la liste............................................................................................................... 30 13.1.7 Suppression de la liste .............................................................................................................................. 30 14. TRIER DES DONNEES..................................................................................................................................... 30

14.1 EVALUATION DES PERFORMANCES DUN ALGORITHME DE TRI........................................................................... 30 14.2 TRI A BULLES ..................................................................................................................................................... 31 14.2.1 Principe..................................................................................................................................................... 31 14.2.2 Algorithme ................................................................................................................................................ 32 14.2.3 Evaluation des performnces de lalgorithme tri bulles.......................................................................... 33 14.3 TRI PAR SUBSTITUTION ...................................................................................................................................... 33 14.3.1 Principe..................................................................................................................................................... 33 14.3.2 Algorithme ................................................................................................................................................ 35 14.3.3 Evaluation des performnces de lalgorithme tri par substitution ............................................................. 35 14.4 TRI PAR INSERTION ............................................................................................................................................ 36 14.4.1 Principe..................................................................................................................................................... 36 14.4.2 Algorithme ................................................................................................................................................ 37 14.4.3 Evaluation des performnces de lalgorithme tri par insertion.................................................................. 38

DC/DD

Page : 2

- Algorithmique -

Lyce J. MERMOZ 20/09/10

1. Introduction
1.1 Historique

Le mot algorithme vient du nom du mathmaticien arabe AL-KHWRIZM (780 - 850). Il a crit notamment une mthode de rsolution des quations du second degr en termes informels comprhensibles par tous. Au XIIme sicle, la traduction latine de ce trait apparat en Europe sous le nom de Dixit Algorizm ("Al-Khwrizm a dit que...").

1.2

Dfinition

Un algorithme sert transmettre un savoir faire. Il dcrit les tapes suivre pour raliser un travail. Un algorithme est une suite dinstructions, qui une fois excute correctement, conduit un rsultat donn. Exemples : Recette de cuisine. Instruction de montage dun mcanisme, dun meuble. Indication de sa route une personne. Calcul du PGCD de deux nombres. Tri de donnes. L'utilisateur d'un algorithme n'aura qu' suivre toutes les instructions, dans l'ordre (en squence) pour arriver au rsultat que doit donner l'algorithme. Une instruction est une opration lmentaire que devra raliser le systme (ordinateur). Elle doit tre prcise et sans ambigut. Un algorithme doit contenir uniquement des instructions comprhensibles par celui qui devra linterprter. Ainsi, il est indpendant du langage de programmation.

1.3

Convention dcriture

Le "langage algorithmique" que nous utilisons est un compromis entre un langage naturel et un langage de programmation appel pseudo-code. Cest un langage dont la syntaxe trs pure adopte par convention (et donc susceptible de changer lgrement dun auteur lautre) permet de rpondre aux contraintes de description de la solution dun problme : clart, concision, indpendance du langage de programmation

Nanmoins, il est toujours possible dexprimer en franais ce que lon veut faire.
Remarque : Trouver un algorithme revient crire en franais ce que vous faite (en tant quhumain) pour rsoudre le problme. Un ordinateur nest capable en fin de compte dexcuter que cinq types dinstruction : Laffectation des variables La lecture (interrogation de lutilisateur) Lcriture (prsentation lutilisateur) Les tests Les boucles Un algorithme est donc une combinaison ordonne de ces 5 types dinstruction. Nous prsentons les algorithmes comme une suite d'instructions dans l'ordre des traitements. Ils sont toujours accompagns d'un lexique qui indique, pour chaque donne manipule, son type et son rle. Un algorithme est dlimit par les mots cls Dbut et Fin.

DC/DD

Page : 3

- Algorithmique -

Lyce J. MERMOZ 20/09/10

2. Les Donnes Manipules


Un programme informatique besoin de manipuler et stocker en permanence des donnes. Elles peuvent tre de plusieurs formes : numrique, texte Pour reprsenter ces donnes on utilise les variables. Une variable possde un moment donn une valeur et une seule.

2.1

Dclarations des variables

Les donnes (variables) d'un algorithme contiennent les informations ncessaires son droulement. Chaque donne a un nom (identifiant) et un type. Ce nom qui permet de faire rfrence simplement la donne quelle contient en faisant abstraction de la manire utilise par lordinateur pour la coder et la stocker. Le nom dune variable doit tre significatif de ce quelle reprsente. Son nom comporte des caractres alphanumriques et commence en gnral par une lettre. Le nom dune variable scrit en minuscule (avec linitiale de chaque mot en majuscule sauf pour la premire lettre). Exemple : nombreDeJour

Dclarer une variable consiste donc fixer son nom et le type de la donne quelle contient. Le nom et le type resteront inchangs pour tout lalgorithme. Seule la valeur contenue dans la variable pourra changer.

2.2

Les principaux types de donnes

Quel que soit son type, une donne est code afin dtre stocke dans la mmoire de lordinateur. Ce codage est propre chaque systme (type de plate-forme, langage de programmation...) Toutefois lalgorithme doit tre indpendant de ces considrations. Il est donc ncessaire de donner suffisamment dinformations lors de la dclaration de la variable dans lalgorithme pour que le programmeur puisse traduire celle-ci dans le langage utilis en respectant les contraintes lies la plateforme de dveloppement. Il faut noter qu' un type donn, correspond un ensemble d'oprations dfinies pour ce type.

2.2.1

Numrique

Une variable numrique peut reprsenter : un entier : 129 un entier sign : -129 (+)56841 un nombre virgule (sign ou non) : 129,458

-5692,0055

Chaque type de valeur numrique sera cod de manire spcifique et sera stock dans un espace mmoire de taille plus ou moins grande. On conoit aisment que stocker la valeur entire 25 prend moins de place que stocker la valeur 126854002562365,1258945621. Lors de la dclaration dune variable il est donc important de prciser en plus du type numrique, ltendue des valeurs que pourra pendre la variable lors de lexcution de lalgorithme. Le type entier Les oprations utilisables sur les entiers sont : - les oprateurs arithmtiques classiques : + (addition), - (soustraction), * (produit) - la division entire, note , telle que n p donne la partie entire du quotient de la division entire de n par p - le modulo, not mod, telle que n mod p donne le reste de la division entire de n par p - les oprateurs de comparaison classiques : <, >, =, ... DC/DD Page : 4

- Algorithmique -

Lyce J. MERMOZ 20/09/10

Le type rel Les oprations utilisables sur les rels sont : - les oprations arithmtiques classiques : + (addition), - (soustraction), * (produit), / (division) - les oprateurs de comparaison classiques : <, >, =, ... Remarque :

Les valeurs que peuvent prendre les donnes manipules peuvent avoir une influence sur la complexit dun algorithme : Il sera ais de calculer la moyenne arrondie au demi point de 22 notes (valeurs numriques entires comprises entre 0 et 20) mais sans doute plus ardu de calculer la moyenne des distances entre les toiles connues de la galaxie exprime en km.

2.2.2

Boolen

Il s'agit du domaine dont les seules valeurs possible sont VRAI et FAUX (TRUE et FALSE en anglais). Les oprations utilisables sur les boolens sont ralises l'aide des oprateurs logiques : ET, OU, NON, OU EXCLUSIF. Rappel des quations logiques : NON
VRAI FAUX FAUX VRAI

ET
VRAI FAUX

VRAI VRAI FAUX

FAUX FAUX FAUX

OU
VRAI FAUX

VRAI VRAI VRAI

FAUX VRAI FAUX

OU Ex
VRAI FAUX

VRAI FAUX VRAI

FAUX VRAI FAUX

Les variables boolennes sont utilises implicitement dans les oprations de test (voir plus bas). Bien que souvent ngliges au profit de variables numriques ne prenant que deux valeurs (0 et 1) elles offrent les avantages suivants : Economie en termes de mmoire occupe. Lisibilit de lalgorithme (et donc du programme).

2.2.3

Alphanumrique

Les variables de type alphanumrique permettent de stocker des caractres, lettres, symboles de ponctuation, chiffres On distingue une variable stockant - un seul caractre : type caractre - plusieurs caractres : type chane (de caractres) -string en anglaisLe nombre de caractres que peut contenir une chane dpend du langage. Il est donc utile de le prciser dans la dclaration au niveau de lalgorithme. Le type caractre Une variable de ce type ne peut contenir qu'un seul et unique caractre. Les oprations lmentaires ralisables sont les comparaisons : >, <, =, ... Le type chane de caractres Une chane est une squence de plusieurs caractres. Les oprations lmentaires ralisables sont les comparaisons : <, >, =, ... selon l'ordre lexicographique.

En pseudo-code une valeur chane de caractres sera reprsente entre guillemets, un caractre sera reprsent entre apostrophes.

DC/DD

Page : 5

- Algorithmique -

Lyce J. MERMOZ 20/09/10

Remarque : - Ne confondez pas valeur numrique et chane de caractres contenant des chiffres !! La valeur numrique 123 (cent-vingt-trois) est diffrente de la chane 123 (caractre 1 caractre 2 caractre 3) !!! La premire permet de faire des calculs arithmtiques, pas la seconde De mme la chane de caractres A est diffrente du caractre A

2.3

Prsentations des variables

La dclaration des variables peut se faire laide dune simple phrase plus ou moins prcise : Variable nom est une chane de caractres Variable note est un entier Variable moyenne est un rel Si ces dclarations suffisent dans un premier temps, on remarque quelles manquent de prcision : Nombre de caractre maximum dune chane ? Valeur mini et maxi dune variable numrique ? Valeur initiale ? Autant dinformations qui seront utiles pour dfinir lalgorithme (choix de la solution) et lors de la programmation. Les variables seront dfinies dans un tableau appel lexique des donnes manipules donnant de faon plus formelle les informations ncessaires : Nom delAnnee estBissextile note moyenne franais nomFamille choix Rle Reprsente lanne de la date Drapeau indiquant si lanne est bissextile : VRAI : anne bissextile, FAUX : anne non bissextile Note dun lve Moyenne dun lve Nationalit dun lve tudiant en France Nom de famille dun lve Reprsente le choix de lutilisateur Type entier boolen entier rel boolen chane de caractres caractre Taille/Description 1900-9999 0 note 20 Arrondi 2 dcimales 25 caractres maxi 1 ou 2 ou q

3. Instructions daffectation
Linstruction daffectation dune variable consiste lui attribuer une valeur. C'est dire lui donner une premire valeur ou changer sa valeur courante.

En pseudo-code, laffectation se reprsente par le symbole


Remarques :

(ou <- )

On ne peut affecter une variable quavec une valeur correspondant son type (celui dfinit lors de la dclaration) ou de type compatible. Une variable peut tre affecte avec la valeur contenue dans une autre (de mme type)

Exemples : note 11 nom Dupont durville moyenne note pensionnaire VRAI initiale I DC/DD

note de type entier nom de type Chane de caractres moyenne de type entier pensionnaire de type Boolen initiale de type caractre Page : 6

- Algorithmique Remarques :

Lyce J. MERMOZ 20/09/10

A gauche du symbole daffectation on doit toujours trouver le nom dune variable !! On ne connat pas la valeur dune variable dclare tant quelle na pas t affecte.

4. Oprateurs et expressions
Une expression reprsente un ensemble de valeurs (ou de variables les contenant) relies par des oprateurs permettant dobtenir un rsultat. Le type doprateur valide et le type du rsultat dpendent du type des variables composant lexpression. 4.1 Oprateurs arithmtiques :

Les oprateurs arithmtiques sappliquent aux valeurs numriques . On dfinit classiquement : + : addition - : soustraction * : multiplication / : division ^ : puissance Bien que chaque oprateur ait la priorit naturellement adopte en arithmtique, il est plus lisible dutiliser les parenthses pour lever toute ambigut. Exemples : note 7 note note - 2 moyenne note resultat ( ( 5* (3 + 2) )^3 )/5 note note + TB

erreur !!!

4.2

Oprateur de concatnation : &

Les oprateurs de concatnation sapplique aux valeurs alphanumriques : Exemples : nomMari Dupont nomDeJeuneFille Lajoie nom nomMari & - & nomDeJeuneFille roi Henry & 4 erreur !!!! roi Henry & 4 correct !

4.3

Oprateurs logiques :

Les oprateurs logiques sappliquent aux valeurs Boolennes. On dfinit : ET : rsultat de lexpression VRAI si tous les membres de lexpression sont VRAI OU : rsultat de lexpression VRAI si au moins 1 membre de lexpression est VRAI ! ou (NON) : rsultat de lexpression VRAI si la valeur de droite est FAUX et inversement Exemples : majeur VRAI franais VRAI eligible majeur ET franais basketteurs !(petit OU gros)

DC/DD

Page : 7

- Algorithmique -

Lyce J. MERMOZ 20/09/10

5. Structure gnrale dun algorithme


La structure gnrale dun algorithme est la suivante : Algorithme illustrationDunAlgorithme Dbut Instruction 1 Instruction 2 Instruction 3 Instruction n Fin Lexique des donnes manipules Nom

Rle

Type

Taille/Description

Le trait vertical unissant Dbut et Fin permet de bien identifier le bloc dinstructions. Lordre des instructions est bien entendu primordial pour obtenir le rsultat recherch. Le lexique des donnes manipules permet de dfinir les variables de lalgorithme. Exemple : Algorithme Calcul la somme Dbut nombreX 12 nombreY nombreX + 4

nombreX

nombreY

3 nombreX Fin Lexique des donnes manipules Nom Rle nombreX Reprsente un nombre nombreY Reprsente un autre nombre

Type entier entier

Taille/Description [0 +[ [0 +[

Cet algorithme est constitu de trois instructions successives qui seront effectues les unes aprs les autres. Les donnes nombreX et nombreY sont entires. La premire instruction consiste affecter la donne nombreX la valeur 12. A la fin de cette instruction, la donne nombreX vaut 12. La deuxime instruction est un peu plus complexe. C'est l'affectation d'une expression non rduite une valeur une donne entire. L'expression nombreX + 4 est d'abord reconnue comme une somme effectuer portant sur deux valeurs entires. La premire valeur est celle de la donne nombreX, qui existe, puisque l'instruction prcdente a affect 12 nombreX. Ainsi, l'addition a bien ses deux oprandes entiers et elle peut tre effectue. Elle l'est, et la valeur entire 16 est affecte la donne nombreY. La troisime instruction modifie la valeur de la donne nombreX, qui devient 3. L'ancienne valeur de nombreX, qui tait 12, est dfinitivement perdue. Le droulement squentiel fait naturellement oublier les instructions effectues en ne conservant que les valeurs courantes des donnes. On remarque que les deux premires instructions ne sont pas permutables car nombreX n'aurait alors pas de valeur au moment du calcul. Remarques :

Attention ne confondez pas le symbole de laffectation et le signe = x = 5 ne signifie pas la variable x prend la valeur 5 !! crivez x 5 note = note + 1 est une proposition toujours fausse (sans intrt ) note note + 1 reprsente lincrmentation de la valeur de note Lorsquune grandeur possde toujours la mme valeur on peut dclarer une constante PI est une constante PI = 3,14 Le nom dune constante sera crit en majuscules. Page : 8

DC/DD

- Algorithmique -

Lyce J. MERMOZ 20/09/10

6. Interface Homme-Machine
Prenons lexemple suivant : rsultat est un entier Dbut rsultat 15^2 Fin Cet algorithme permet de calculer le carr de 15 !! Aussi intressant quinutile !!! - Le rsultat est stock dans la mmoire de lordinateur et reste inaccessible lutilisateur ! - Si lutilisateur veut calculer le carr de 13 il faut rcrire le programme Heureusement il existe deux instructions permettant lutilisateur de dialoguer avec le programme ( fournir des donnes et recevoir des rsultats)

6.1

Instruction de lecture

L'instruction de prise de donnes sur le priphrique d'entre (en gnral le clavier) est :
Lire <uneDonne>

L'excution de cette instruction consiste affecter une valeur la variable uneDonne. La valeur saisie (sur le clavier) est affecte la variable.

6.2

Instruction dcriture

L'instruction de restitution de rsultats sur le priphrique de sortie (en gnral l'cran) est :
Ecrire(liste d'expressions)

Cette instruction ralise simplement l'affichage des valeurs des expressions dcrites dans la liste. Ces instructions peuvent tre simplement des donnes ayant des valeurs ou mme des nombres ou des commentaires crits sous forme de chanes de caractres. Exemple d'utilisation :
Ecrire(x, y+2, "bonjour") affichera lcran le contenu de la variable x, y auquel on ajoute 2 et le texte bonjour.

Remarque :

Si lon veut Lire ou Ecrire plusieurs variables, on spare les noms par des virgules.

Notre algorithme gagne alors en utilit : Algorithme Elever au carre Dbut: Ecrire (Saisissez une valeur) Lire leNombre carre leNombre^2 Ecrire (Le carr de , leNombre, est , carre) Fin Lexique des donnes manipules Nom Rle leNombre Reprsente un nombre lever au carr carre Rsultat du carre du nombre saisie au clavier

Type entier entier

Taille/Description
[0 +[ [0 +[

DC/DD

Page : 9

- Algorithmique Mise en garde : Ecrire (Carre ) Ecrire (carre)

Lyce J. MERMOZ 20/09/10

affiche le mot Carre lcran affiche la valeur de la variable carre (144 si on a saisit 12 pour leNombre)

Lire (a) est correct Lire (a ) ou Lire (a )est une grossire erreur !!! Algorithme Dbut Lire (nombre) on tape 123 Lire (phrase) on tape 456 Fin Lexique des donnes manipules Nom Rle nombre Reprsente un nombre phrase Reprsente un mot ou une phrase saisie au clavier

Type entier chane de caractres

Taille/Description
[0 +[

25 caractres maxi

123 sera considr comme le nombre cent-vingt-trois et affect nombre de type entier 456 sera la suite de caractres 4 5 6 et sera affecte phrase de type chane de caractres

Exemple d'algorithme On dsire crire un algorithme qui partir dune valeur saisie au clavier reprsentant une somme d'argent en Euros calcule et affiche le nombre de billets de 100 Euros, 50 Euros et 10 Euros, et de pices de 2 Euros et 1 Euro qu'elle reprsente. Principe : L'algorithme commence par lire sur l'entre standard l'entier qui reprsente la somme d'argent et affecte la valeur une donne somme. Pour obtenir la dcomposition en nombre de billets et de pices de la somme d'argent, on procde par des divisions successives en conservant chaque fois le reste. Algorithme Nombre de billet dune somme dargent Dbut Ecrire ( veuillez saisir une somme dargent en Euro ) Lire somme nombreBillet_100 somme 100 il faut connatre le reste de la division par 100 nombreBillet_50 resteDivision100 50 il faut connatre le reste de la division par 50 nombreBillet_10 resteDivision50 10 il faut connatre le reste de la division par 10 nombrePiece_2 resteDivision10 2 il faut connatre le reste de la division par 2 nombrePiece_1 resteDivision2 Ecrire (nombreBillet_100, nombreBillet_50, nombreBillet_10, nombrePiece_2, nombrePiece_1) Fin Lexique des donnes manipules Nom Rle Type Taille/Description
somme nombreBillet_100 nombreBillet_50 nombreBillet_10 nombrePiece_2 nombrePiece_1 resteDivision100 resteDivision50 resteDivision10 resteDivision2 Reprsente la somme dargent en Euros dcomposer Reprsente le nombre de billets de 100 Euros Reprsente le nombre de billets de 50 Euros Reprsente le nombre de billets de 10 Euros Reprsente le nombre de pices de 2 Euros Reprsente le nombre de pices de 1 Euro Reprsente le reste de la division entire de somme par 100 Reprsente le reste de la division entire de resteDivision100 par 50 Reprsente le reste de la division entire de resteDivision50 par 10 Reprsente le reste de la division entire de resteDivision10 par 2 entier entier entier entier entier entier entier entier entier entier [0 [0 [0 [0 [0 [0 [0 [0 [0 [0 +[ +[ +[ +[ +[ +[ +[ +[ +[ +[

DC/DD

Page : 10

- Algorithmique -

Lyce J. MERMOZ 20/09/10

7. Concepts de Base de lAlgorithmique


Sans les structures de contrle les oprations seffectueraient les unes la suite des autres de manire linaire (squentielle), les structures de contrle permettent de sauter des blocs doprations ou dexcuter dautres oprations en fonction de conditions qui peuvent se modifier pendant lexcution. 7.1 Structure squentielle

Suite squentielle dactions inconditionnelles. Reprsentation : Dbut <action1> <action2> <action3> Fin Exemple : Systme de billetterie automatique SNCF. Dbut Initialisation Afficher le message publicitaire Attendre lappui dune touche Saisir les informations du voyageur Calculer le prix du billet Dbiter la carte de crdit Imprimer le billet Fin

7.2

Structure alternative

7.2.1 Mise en situation Prenons lexemple trivial de lindication de son chemin un livreur : Allez tout droit jusquau carrefour Tournez droite Prenez la premire gauche Imaginons quau carrefour la rue de droite soit interdite aux vhicules de plus de 3.5 tonnes, litinraire pour un poids lourd devient : Allez tout droit jusqu'au deuxime carrefour Tournez droite Prenez la premire droite Pour que le livreur arrive destination, il faut quil value une situation et choisisse une des alternatives en fonction du rsultat de lvaluation. La condition valuer est ici : le camion est-il un poids lourd ? Afin de choisir litinraire adapt.

7.2.2

Syntaxe dun choix simple Si (condition) Alors <action1> Sinon <action2> FinSi condition est une expression dont le rsultat est de type boolen.

DC/DD

Page : 11

- Algorithmique -

Lyce J. MERMOZ 20/09/10

Si le rsultat de lvaluation de lexpression est VRAI la machine excute le bloc dinstructions action1 ( et saute le bloc instructions action2 pour poursuivre lexcution aprs le FinSi). Si le rsultat de lvaluation de lexpression est FAUX la machine excute le bloc dinstructions action2 ( en sautant le bloc instructions action1) puis poursuit aprs le FinSi).

Exemple : Algorithme de fonction "Dbiter la carte de crdit" (extrait). Dbut Lire code Si (code est correct) Alors Accepter rglement Sinon Ecrire (code incorrect) FinSi Fin

7.2.2.1 Condition et oprateurs de comparaison La condition est une expression dont la valeur est du type boolen (VRAI ou FAUX) Ce ne peut donc tre que Une variable boolenne poidsLourd est un boolen .. Si (poidsLourd = VRAI) Alors .. Sinon .. FinSi Le rsultat dune comparaison entre deux valeurs (deux variables) grce un oprateur de comparaison Les oprateurs de comparaison sont : Egale : = Diffrent de : < > ou != Infrieur : < Suprieur : > Infrieur ou gal : Suprieur ou gal : poidsVehicule est un entier .. Si (poidsVehicule < 3,5) Alors .. Sinon .. FinSi

condition est VRAI condition est FAUX

Lexpression Si poidsVehicule < 3,5 sera VRAI si la valeur de la variable poidsVehicule est strictement infrieure 3,5 Remarque :

La condition Si(12 < age <18) possde un sens en mathmatique mais est incorrecte en pseudo-code ( Elle comporte 3 valeurs et deux oprateurs ) Page : 12

DC/DD

- Algorithmique -

Lyce J. MERMOZ 20/09/10

7.2.2.2 Conditions composes Dans la remarque prcdente, on veut savoir si lage est compris entre 12 et 18 ans exclus. On doit traduire ce test par la composition de deux conditions comme suit : age est strictement suprieur 12 ET age est strictement infrieur 18. En pseudo-code : Si ((age > 12) ET (age < 18)) Alors Traitement 1 Sinon Traitement 2 FinSi Les parenthses ne sont pas obligatoires mais rendent le pseudo-code plus lisible. Remarques :

Attention linterprtation de tests composs de plusieurs conditions Si( ((age > 8) ET (age < 18)) OU !(poids > 45)) Alors qui peuvent devenir ardue valuer Attention aux expressions qui sont toujours VRAI ou FAUSSE Si ((age < 8) ET (age > 18)) Alors

7.2.3 Tests imbriqus Il est possible dimbriquer des Si, en effet dans certains cas la condition dun Si ne suffit pas pour exprimer tous les cas de figures. Nous pouvons alors exprimer un Si aprs le Alors dun Si et/ou aprs le Sinon dun Si.

Si

<condition> Alors Si <condition1> Alors <action1> Sinon <action2> FinSi Sinon <action3> FinSi

Pour rsoudre le problme des tests conditions multiples par des tests imbriqus il est commode dutiliser une reprsentation graphique du cheminement de programme : Test simple Traitement 1 Alors Si Sinon Traitement 2 DC/DD Page : 13 FinSi

- Algorithmique -

Lyce J. MERMOZ 20/09/10

Tests composs Traitement 1 Alors Si Traitement 2.1 Sinon Si Sinon Traitement 2.2 Chaque Si est reprsent comme un aiguillage possible. On peut bien sr imbriquer autant de Si que ncessaire. Exemple : Dbut Ecrire (Saisir la temprature de leau) Lire (temp) Si (temp 0) Alors Ecrire (Cest de la glace) Sinon Si (temp > 100) Alors Ecrire (Cest de la vapeur) Sinon Ecrire (Cest du liquide) FinSi FinSi Fin Lexique des donnes manipules Nom Rle
temp Reprsente la temprature de leau

FinSi Alors FinSi

Type
entier

Taille/Description
]- +[

Le mme exemple peut scrire de faon plus concise en utilisant linstruction SinonSi Dbut Ecrire (Saisir la temprature de leau) Lire (temp) Si temp 0 Alors Ecrire (Cest de la glace) SinonSi temp > 100 Alors Ecrire (Cest de la vapeur) Sinon Ecrire (Cest du liquide) FinSi Fin Lexique des donnes manipules Nom Rle
temp Reprsente la temprature de leau

Type
entier

Taille/Description
[0 +[

Cette forme peut tre juge moins lisible et on lui prfrera la premire criture.

DC/DD

Page : 14

- Algorithmique -

Lyce J. MERMOZ 20/09/10

De mme et de faon plus utile, on peut utiliser des variables boolennes reprsentant les diffrentes alternatives : Dbut Ecrire( Saisir la temprature de leau) Lire (temp) glace temp 0 vapeur temp > 100 Si (glace) Alors Ecrire (Cest de la glace) Sinon Si vapeur Alors Ecrire (Cest de la vapeur) Sinon Ecrire (Cest du liquide) FinSi FinSi Fin Lexique des donnes manipules Nom Rle
temp glace vapeur Reprsente la temprature de leau Etat de leau pour une temprature < 0C Etat de leau pour une temprature > 100C

Type
entier boolen boolen

Taille/Description
[0 +[

La condition Si (glace) est labrg de Si (glace = VRAI) Ces variables de type boolen gardant la trace du rsultat dun test sont appeles flag (drapeau en anglais) et permettent dans la plupart des cas de rendre le pseudo-code plus lisible.

7.3

Choix multiples

De nombreuses applications ont un comportement qui dpend de la valeur dune variable. Par exemple, on propose lutilisateur un choix entre plusieurs options. On affiche sous forme dun menu les diffrentes possibilits et lutilisateur saisit son choix qui est affect une variable. Selon la valeur de la variable, on excutera les instructions correspondant la valeur (cas). Si la variable prend une valeur non prvue par les cas, on excutera les instructions dfinies par dfaut. On peut implmenter une solution base de Si- alors Sinon imbriqus mais au del de 2 ou 3 choix possibles, la structure devient extrmement lourde et difficile lire et donc source derreurs et de bugs . On utilise plutt la structure selon cas dont la syntaxe est : Selon <variable> cas a : <action1> cas b : <action2> cas c : <action3> autre : <action4> FinSelon Suivant la valeur de la donne, on excutera les actions correspondantes la valeurs (a,b ou c). Si la donne prend une valeur non prvue par les cas, on excutera les actions dfinies par dfaut (autre). Remarques :

DC/DD

Gnralement variable est du type entier. Limplmentation du cas dfaut (autre) est obligatoire. Si plusieurs valeurs de la variable provoquent le mme traitement , on les indique spares par une virgule : cas(1,2) Page : 15

- Algorithmique Exemple : Algorithme de fonction "Dbiter la carte de crdit" (extrait). Dbut Selon carLu cas 0 9 : Ecrire ('*') cas EFFACER : Effacer le dernier caractre autre: Ecrire ( "erreur de saisie" ) FinSelon Fin Lexique des donnes manipules Nom Rle
carLu Caractre renseign par lutilisateur

Lyce J. MERMOZ 20/09/10

Type
caractre

Taille/Description

7.4

Structure itrative (rptition)

Le but est dexcuter un bloc dinstructions plusieurs fois en testant chaque excution si une condition darrt est vraie ou non. 7.4.1 Boucle TANT QUE Excution conditionnelle et multiple d'action(s). Syntaxe : Tant que (Condition est vraie) Faire Action FinTantQue La machine value la condition. Si elle est VRAI elle excute les instructions du bloc dinstructions limit par Tant que et FinTantQue, et retourne valuer la condition. Si elle est FAUX la machine passe linstruction qui suit immdiatement FinTantQue . Exemple : Algorithme de fonction "Dbiter la carte de crdit" (extrait). Dbut Tant que (code codeBon) Faire Lire code FinTantQue Accepter rglement Fin Remarque : - boucle Tant que la condition est examine en premier il se peut quelle soit fausse et donc la boucle ne sera pas excute. - boucle Faire - Tant que la condition est examine en dernier, ainsi la boucle est parcourue au moins 1 fois.

7.4.2 Boucle FAIRE -TANT QUE Excution conditionnelle et multiple d'action(s). Syntaxe : Faire Action Tant que (Condition soit vraie)

DC/DD

Page : 16

- Algorithmique -

Lyce J. MERMOZ 20/09/10

La machine excute le bloc dinstructions comprises entre Faire et Tant que, puis la condition est value : Si elle est VRAI la machine excute nouveau le bloc dinstructions Si elle est FAUX la machine passe linstruction suivant le Tant que Exemple : Algorithme de fonction "Dbiter la carte de crdit" (extrait). Dbut Faire Saisir code Tant que (code codeBon) Accepter rglement Fin

7.4.3 Boucle POUR Excution d'une action (ou plusieurs actions) rpte un nombre de fois dtermin, connu lavance. Il est ncessaire de dfinir une variable compteur et de linitialiser dfinir une condition darrt de litration par un test sur la valeur de compteur modifier compteur chaque itration Syntaxe : Pour compteur Variant de dbut A fin Par pas de valeur incrment Action(s) FinPour Lexcution commence par linitialisation de la variable compteur La machine value ensuite la condition Si elle est VRAI elle excute le traitement Compteur est modifi et on recommence lvaluation de la condition Si elle est FAUX on passe linstruction suivant le FinPour Exemple : Dbut rsultat 5 Pour i Variant de 1 A 6 Par pas de 1 rsultat rsultat * i Ecrire (rsultat) FinPour Fin Lexique des donnes manipules Nom Rle
rsultat i Permet de calculer une opration de multiplication Indice du parcours de la boucle

Type
entier entier

Taille/Description
[1 .. 7]

Autre algorithme Ecrire 4 fois Lalgo cest super ( pour en tre persuad) Dbut Pour compteur Variant de 1 A 4 Par pas de 1 Ecrire ( Lalgo cest super ) FinPour Ecrire (Fin : compteur = , compteur) Fin Lexique des donnes manipules Nom Rle
compteur Indice du parcours de la boucle

Type
entier

Taille/Description
[1 .. 5]

DC/DD

Page : 17

- Algorithmique Le droulement de la boucle Pour est le suivant : Instruction Variant de 1 A 4 Variant de 1 A 4 ? Ecrire ( Lalgo cest super ) Par pas de 1 Variant de 1 A 4 ? Ecrire ( Lalgo cest super ) Par pas de 1 Variant de 1 A 4 ? Ecrire ( Lalgo cest super ) Par pas de 1 Variant de 1 A 4 ? Ecrire ( Lalgo cest super ) Par pas de 1 Variant de 1 A 4 ? Ecrire (Fin : compteur = , compteur) Action Initialisation Test de la condition Affichage Incrmentation de compteur Test de la condition Affichage Incrmentation de compteur Test de la condition Affichage Incrmentation de compteur Test de la condition Affichage Incrmentation de compteur Test de la condition Suite du FinPour compteur 1

Lyce J. MERMOZ 20/09/10

Rsultat / affichage VRAI Lalgo cest super

2 VRAI Lalgo cest super 3 VRAI Lalgo cest super 4 VRAI Lalgo cest super 5 FAUX Fin : compteur = 5

Il est interdit de modifier la valeur de compteur dans le traitement !!

8. Les tableaux
8.1 Dfinition

Supposons que nous voulions effectuer des traitements sur les notes des 24 tudiants dune classe. La seule solution dont nous disposons actuellement est de dclarer 24 variables de type entier. On conoit aisment que le traitement dun grand nombre de donnes deviendra trop lourd pour tre ralisable. On peut alors regrouper toutes ces variables en une seule dans laquelle chaque valeur sera repre par un numro. On parle de tableau ou de variable indice. Un tableau est un ensemble de valeur du mme type (le type du tableau) ayant chacune un indice.

8.2

Dclaration

Lors de la dclaration dun tableau on doit indiquer : Le nom du tableau Le type du tableau : celui des valeurs quil contiendra. La taille du tableau : le nombre de valeurs quil contiendra Exemple : note est un tableau de 24 entiers

8.3

Accs aux lments dun tableau

On accde un lment dun tableau par son indice comme suit : nom_du_tableau(indice) Remarques :

Le premier lment porte lindice 0 !! Lindice est obligatoirement un nombre entier 0 indice nombre de valeur -1

DC/DD

Page : 18

- Algorithmique -

Lyce J. MERMOZ 20/09/10

Exemple : Saisir les notes de 24 tudiants et calculer la moyenne de la promotion. Algorithme Calcul de la moyenne de la promotion Dbut somme 0 Pour indice Variant de 0 A 23 Par pas de 1 Ecrire (Saisissez la note n,indice +1) Lire (note(indice)) FinPour Pour indice Variant de 0 A 23 Par pas de 1 somme somme + note(indice) FinPour moyenne somme / 24 (indice) ou (indice + 1) Ecrire (La moyenne de la promo est ,moyenne) Fin Lexique des donnes manipules Nom Rle note Reprsente la note dun tudiant somme Somme de toutes les notes des tudiants indice Permet daccder un lment du tableau de note moyenne Moyenne de la promotion de la classe

Type tableau 24 entiers entier entier rel

Taille/Description Chaque note [0..20] [0..480] 0 indice 23 2 dcimales

8.4

Cas des chanes de caractres

Une chane de caractres est une variable qui contient des caractres, elle peut donc tre assimile un tableau de caractres. De ce fait on pourra accder un caractre dans la chane par son indice (son rang). Exemple : si

phrase est une chane de caractres initiale, lettre sont des caractres On peut crire : phrase Bonjour monsieur initiale phrase(0) lettre phrase(8) phrase(0) b

initiale contient B lettre contient m phrase devient bonjour monsieur

8.5

Tableau multidimensionnel

Supposons que nous voulions grer les notes des tudiants dune promotion, chaque tudiant plusieurs notes et lon veut connatre la moyenne de la promotion par devoir et la moyenne de chaque tudiant. Si on a 24 tudiants et 5 devoirs on devra manipuler 24 * 5 notes. On peut alors dclarer un tableau de 120 entiers Les notes du premier tudiant auraient les indices de 0 4 Les notes du suivant les indices de 5 9 . Connatre lindice de la note du 3me devoir du 14me tudiant ncessite une gymnastique fastidieuse. Supposez maintenant que lon veuille stocker la trajectoire dun vaisseau spatial. Chaque point est dfini par les 4 valeurs x, y, z, t coordonnes espace-temps. Pour 100 points il faut un tableau de 400 valeurs Accder une valeur particulire, cest dire dterminer son indice, devient trs ardu.

DC/DD

Page : 19

- Algorithmique -

Lyce J. MERMOZ 20/09/10

Il serait commode de reprer une valeur non pas par son indice dans un tableau linaire mais par ces coordonnes dans un espace 2, 3, 4 ,n dimensions Une dimension Etudiant et une dimension devoir pour grer les notes ce que lon peut reprsenter comme suit : 0 1 0 1 2 3 4 ... 23 2 3 4 Indices des devoirs

Indices des tudiants

14

La note obtenue par le 4me tudiant au 3me devoir scrira : note (3)(2) Remarque :

Lordre des coordonnes et important : note (3)(2) et note (2)(3) ne reprsente pas la mme case du tableau !! Il est donc important de bien dfinir la signification et lordre des coordonnes.

Exemple : Saisie des notes des tudiants : On utilise des boucles Pour imbriques : une pour faire varier lindice des tudiants, lautre pour lindice des notes de chaque tudiant : Dbut Pour indiceEtudiant Variant de 0 A 23 Par pas de 1 Ecrire (Saisie des notes de ltudiant n , indiceEtudiant +1) Pour indiceNote Variant de 0 A 4 Par pas de 1 Ecrire (Saisissez la note n , indiceNote +1) Lire ( note(indiceEtudiant)( indiceNote) ) FinPour FinPour Fin Lexique des donnes manipules Nom Rle Type note Reprsente la note des tudiants pour chaque devoirs tableau 24x5 entiers indiceEtudiant Permet de parcourir la liste des tudiants entier indiceNote Permet de parcourir lensemble des devoirs entier

Taille/Description Chaque note [0..20] 0 indiceEtudiant 23 0 indiceNote 4

DC/DD

Page : 20