You are on page 1of 129

Algorithmique

TOUHTOUH Samira

Ecole Nationale des Sciences Appliques dEl Jadida
samira.touhtouh@gmail.com
1
Plan
Introduction

Informatisation dun problme : Langage algorithmique

Les variables

Les constantes

Fonctions dentre-sortie

Les structures

Les tableaux

Les fonctions

Les fichiers


2
Plan
Introduction

Informatisation dun problme : Langage algorithmique

Les variables

Les constantes

Fonctions dentre-sortie

Les structures de contrle

Les fonctions

Les tableaux

Les fichiers


3
I. Introduction

Introduction lalgorithme

Histoire
Le mot algorithme vient du mot latinis du mathmaticien Al-
Khawarismi , aprs la traduction du livre kitb- aljabr wa al-
muqbala par Gherardo di cremona sous le titre Dixit Algorismi .


Dfinition gnrale
Une squences dinstructions logique suivre pour obtenir un rsultat
donn.
4

Exemple 1 : Comment accder LENSA?

1. Russir le bac
2. Candidater
3. Passer le concours
4. Russir le concours
5. Dposer un dossier dinscription

Exemple 2 : Prparer un caf au lait

1. Prparer le caf
2. Prparer le lait
3. Mlanger les deux


5
Lordre des oprations a son importance, mais dans certains cas plusieurs
ordres sont possibles.

Parfois, il faut dcomposer les actions trop complexes.

Exemple :

Prparer un caf au lait

1. Prparer le caf
2. Prparer le lait
3. Mlanger les deux

Etape lmentaire : Prparer le caf
1. Prparer la cafetire
2. Remplir deau
3. Mettre le filtre
4. Mettre le caf
5. Brancher la cafetire
6. Lancer la cafetire
6

En informatique :

Procdure de calcul bien dni qui prend en entre une valeur, ou un ensemble de valeurs,
et qui donne en sortie une valeur, ou un ensemble de valeurs.

Exemple :

Algorithme dEuclide

Calculer le PGCD de deux entiers a et b.







7
1. Ordonner a et b tel que ab

2. Calculer leur diffrence

3. Remplacer a par c c a-b


Excuter avec a=40 et b=12
8
Fin 4 b a : 11 Etape
4 b 4 a : 10 Etape
4 b a c : 9 Etape
4 b 8 a : 9 Etape
8 b a c : 8 Etape
4 b 12 a : 7 Etape
4 b a c : 6 Etape
12 b 16 a : 5 Etape
16 b a c : 4 Etape
12 b 28 a : 3 Etape
28 b a c : 2 Etape
12 b 40 a : 1 Etape












Exemple 2

Excuter avec a=100 et b=40
9
Un algorithme est dit correct si, pour chaque instance en entre, il se termine en
produisant la bonne sortie.


Un algorithme incorrect risque de ne pas se terminer pour certaines instances en
entre, voire de se terminer sur une rponse autre que celle dsire.


Un algorithme peut tre spci en langage humain ou en langage informatique.
Lunique obligation est que la spcication fournisse une description prcise de la
procdure de calcul suivre.

10
Plan
Introduction

Informatisation dun problme : Langage algorithmique

Les variables

Algorithme

Les constantes

Les structures

Les fonctions

11
II. Langage algorithmique
12
nonc du
problme
Algorithme Programme
Langage
naturel
Langage
algorithmique
Langage de
programmation
Le langage algorithmique est diffrent du langage de programmation.

Langage de programmation
13
Langages de
bas niveau
Lis au
processeur
Langages de
haut niveau
Langages
volus
CC++ Java

Le langage algorithmique exprime les instructions rsolvant un problme
donn indpendamment des particularits dun langage de programmation.

En gnrale on utilise deux types de notations pour reprsenter les
algorithmes:


Lorganigramme

Le pseudo-code


14
Lorganigramme est un schma fonctionnel qui prsente les diffrentes parties
dun algorithme les unes la suite des autres en utilisant des symboles graphiques
pour visualiser lexcution de l'algorithme et le cheminement des donnes.

15
Exemple : somme de deux nombres A et B


16
Lcriture dun algorithme avec un organigramme est rapidement abandonne. La
lisibilit devient rapidement difficile pour les algorithmes assez long.


le pseudo-code est purement conventionnel, aucune machine nest
cense le reconnatre.

Exemple : Somme de deux nombres A et B


Algorithme somme_de_deux_nombres
Variables A, B, somme en entier
Dbut
Lire A
Lire B
somme A+B
Ecrire La somme de A et B est : , somme
Fin
17
Les diffrents lments dun algorithme sont :


Donnes : ce qui doit tre donn lalgorithme

Rsultats : ce que doit produire lalgorithme

Lalgorithme : les grandes tapes des traitements et calculs



18

Exemple : Calculer le PGCD de a et b.
19
Donnes
Algorithme
Rsultats
Donnes :
a et b deux entiers positifs








Rsultat :
PGCD de a et b
Structure dun algorithme

Nom de lalgorithme // partie en-tte qui prcise le nom de lalgorithme

Dclaration des variables // partie dclaration des variables

Dbut // partie traitement des donnes

Algorithme (dfinir les actions suivre pour rsoudre un problme donn)

Fin
20
Exemple 1 :

Ecrire un algorithme qui permet dafficher Bonjour .

Algorithme algo-bonjour

Dbut

crire ( bonjour );

Fin
21
Exemple 2 :
Ecrire un programme qui demande un nombre lutilisateur, puis qui
calcule et affiche le carr de ce nombre,

Algorithme carr-de-deux-nombres
Variables nb, carr en Entier
Dbut
Ecrire Entrez un nombre:
Lire nb
carr nb*nb
Ecrire son carr est : , carr
Fin
22
Algorithmique
TOUHTOUH Samira

Ecole Nationale des Sciences Appliques dEl Jadida
samira.touhtouh@gmail.com
1
Plan
Introduction

Informatisation dun problme : Langage algorithmique

Les variables

Les constantes

Les structures

Les fonctions

Les tableaux

Les fichiers


2
II. Les variables


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), etc..

Ces donnes peuvent tre de plusieurs types des nombres, du texte, etc.

Pour 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.

Une variable dsigne un emplacement mmoire dsigner par une adresse
binaire qui permet de stocker une valeur.
3
Dclaration et utilisation des variables (les donnes)

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.

Une variable est dsigne par :

Un nom unique qui la dsigne

Un type de dfinition unique

Une valeur attribue et modifie au cours du droulement de
lalgorithme.

4
Le nom-le type-la valeur

Nom dune variable.

Le nom dune variable permet de lidentifier de manire unique au cours de
lalgorithme.

Les rgles respecter pour nommer les variables :

Le nom dune variable commence par une minuscule.

Le nom dune variable ne comporte pas despace,

Si le nom de la variable est compos de plusieurs mots, il faut faire
commencer chacun deux par une majuscule et ne pas faire figurer de traits
dunion.

5
Les variables utilises au cours de lexcution de lalgorithme sont
dclares aprs le nom de lalgorithme. Il suffit dindiquer le nom de la
variable suivi de son type, spars par deux points : ,

La structure dun algorithme (dclarant une variable nomm indice et
de type entier) est la suivante :


Algorithme nom-de-lalgorithme // partie en-tte

Variables : indice : entier // partie des dclarations des variables

Dbut // partie traitement

Bloc dinstructions

Fin
6

Exemple : Calculer et crire le double dun nombre rel donn (exemple : 7).

Lalgorithme nous informe quun nombre rel est donn (exemple 7) et que un autre
nombre rel sera calcul (7x2 = 14) puis affich.

Introduisons donc deux variables associes respectivement la donne et au rsultat.
La structure de lalgorithme est la suivante :



Algorithme double

Variables : nombre, rsultat : rel

Dbut

nombre 7
rsultat nombrex2
crire rsultat

Fin

7
Droulement de lexemple :

8
Algorithme double
Variables : nombre, rsultat : rel nombre = ? rsultat =?
Dbut nombre =? rsultat=?
nombre 7 nombre = 7 rsultat = ?
rsultat nombrex2 nombre = 7 rsultat = 14
crire rsultat rsultat = 14
Fin Les variables nexistent plus


Lalgorithme se droule de manire squentielle et ligne aprs ligne.


Au dpart, lors de la dclaration, les valeurs sont inconnues : leur valeur
est indique par ? .


Lexistence des variables na de sens que le temps de lexcution de
lalgorithme.
9
Types des variables

Type rel - le type entier

Les variables de types numriques utilises en algorithme ont
comme domaine usuels ceux fournis par les mathmatiques : rel et
entier.

Le type de codage choisi pour un nombre va dterminer :

- Les valeurs maximales et minimales des nombres pouvant tre
stocks dans la variable.

- La prcision de ces nombres (dans le cas de nombres (dcimaux)




10
Les langages offrent plusieurs types numriques, le tableau ci-
dessous prsente les plus rencontrs :


11
Type numrique Plage
Byte (octet) O 255
Entier simple -32 768 32 767
Entier long -2 62 147 483 2 147 483 647
Rel simple -3,4x10
38
-1,4x10
45
pour les
valeurs ngatives
1,4x10
-45
3,4x10
38
pour les valeurs
positives
Rel double 1,79x10
308
-4,95x10
-324
pour les
valeurs ngatives
4,94x10
-324
1,79x 10
308
pour les
valeurs positives
Pourquoi ne pas dclarer toutes les variables numriques en rel
double?
Expressions et oprateurs

Une expression est un ensemble de valeurs, relies par des oprateurs,
et quivalent une seule valeur.

Un oprateur est un symbole dopration

Une expression est soit :

une constante
une variable
une opration


12

Une opration est l'association d'un operateur avec ses oprandes qui
permet d'effectuer un calcul.


Les oprations utilisables sur les lments de type entier ou rel les
oprations arithmtiques classiques : laddition (+), la soustraction (-
), le produit (x) et la division (/).



On pourra aussi utiliser les oprateurs de comparaison classiques :
< > # =
13
Deux oprations sont spcifiques aux entiers : la division entire
DIV et le modulo MOD.


Lopration DIV entre deux entiers retourne le rsultat entier de
leur division.


Lopration MOD entre deux entiers retourne le reste de leur
division.



Exemple : 15 DIV 2 vaut 7 et 15 MOD 2 vaut 1, en effet, 15 = 7x2+1.




14
Exemple : Algorithme type rel

Algorithme type-rel

Variables : nombre1, nombre2, rsultat : rel
var1:entier
Dbut

nombre1 1.5
nombre2 15
var1 2
rsultat nombre1 / nombre2 x var1

Fin




15
Conversion :

Convertir un entier en rel est possible : cette opration nentraine pas de
perte dinformation. Par exemple, lentier 15 deviendra 15,0.

Convertir un rel en entier entrane une perte dinformation : Les chiffres
dcimaux sont perdus. Par exemple, le rel 15,75 deviendra 15.


Algorithme conversion-numrique

Variables : nombre1 : entier
nombre2 : rel
Dbut

nombre 15
Nombre2 nombre1 // nombre2 vaut 15.0
nombre1 nombre2 + 0.5 // erreur : impossible

Fin

16
Le type caractre

Il sagit du domaine constitu des caractres alphabtiques, numriques
et de ponctuation.

On devra pas confondre le signe 3 (not entre deux simples quotes
en tant que caractre et lentier 3.

En pseudo-code une chane de caractres est toujours note entre
guillemets.

A chaque caractre est associ une unique valeur numrique ( le code
ASCII, tablie cette correspondance : par exemple, la lettre A
correspond a la valeur 65 ).

http://www.table-ascii.com/


17
18
19

Expressions et oprateurs

Les seules oprations lmentaires pour les lments de type
caractre sont les oprations de comparaison.

< > # =

Conversion

La conversion de type caractre vers entier : pour convertir le
caractre 3 en une valeur entire 3, il suffit de calculer la
diffrence entre les deux caractres : 3 0, qui vaut 3.

20
Exemple :

Algorithme conversion-caractre-entier

Variables : car : caractre
nombre : entier
Dbut
car 3
nombre 3 - 0 // nombre vaut 3
nombre nombre + 2 // nombre vaut 5
car 0 + nombre // car vaut 5
Fin
21
Le type logique boolen

Le domaine des boolens est lensemble form des deux seules
valeurs (vrai, faux).


Les oprations admissibles sur les lments de ce domaine sont
ralises laide de tous les connecteurs logiques, nots :

ET : pour le et logique ;
OU : il est vrai si lun des deux boolens tests vaut vrai;
NON : pour le non logique
22
Exemple1 :
Algorithme type-booleen

Algorithme type-boolen
Variables : booleen1, boolen2 : boolen
Dbut
boolen1 5 < 6 // boolen1 prend la valeur Vrai

boolen2 (5<7) OU (3>8) // boolen2 prend la valeur Vrai
boolen vrai // boolen prend la valeur Vrai
Fin
23
Exemple 2:

Ecrire un algorithme qui demande lutilisateur dentrer une
temprature de leau pour il indique son tat physico-chimique.

Variable Temp en Entier
Variables A, B : Boolen
Dbut
Ecrire Entrez la temprature de leau :
Lire Temp
A Temp =< 0
B Temp < 100
Si A Alors
Ecrire Cest de la glace
Sinon
Si B Alors
Ecrire Cest du liquide
Sinon
Ecrire Cest de la vapeur
Fin
24
Valeur dune variable

La valeur de la variable est la seul caractristique qui soit modifie
au cours de lalgorithme. Au dbut de lalgorithme, toutes les
variables ont des valeurs inconnues.

Les variables changent de valeur grce lopration daffectation.


Affectation :

Laffectation est une opration qui fixe une nouvelle valeur une
variable. Le symbole de laffectation est
25
Exemple 1 :

A 2
B A+1


Exemple 2 :

Dbut

Caractre chane
Type caractre

Fin

26








Dbut

caractre chane
Type caractre

Fin


Lordre des instructions

Lordre dans lequel les instructions sont crites joue un rle
essentiel dans le rsultat final.

Exemple 3 :
Quelles seront les valeurs des variables A et B aprs excution des
instructions suivantes ?

Variables A, B en Entier
Dbut
A 1
B A + 3
A 3
Fin
27
Plan
Introduction

Informatisation dun problme : Langage algorithmique

Les variables

Les constantes

Les structures de contrle

Les fonctions

Les tableaux

Les fichiers


28
IV. Les constantes

Valeurs utilises mais non modies par lalgorithme. Une constante
ne change jamais dans le temps.

Les constantes sont placs avant le lexique des variables.

Les constantes sont dnies par :

Nom rfrence de la constante (en majuscule).

Type nature de la valeur

Valeur la valeur de la constante,

Description un texte indiquant ce que reprsente la constante,

Exemple : CONST MAX=10
29
Plan
Introduction

Informatisation dun problme : Langage algorithmique

Les variables

Les constantes

Fonctions dentre-sortie

Les structures de contrle

Les tableaux

Les fonctions

Les fichiers


30
V. Fonctions dentre-sortie


Les programmes utilisent frquemment des instructions permettant
laffichage lcran et la saisie de valeurs au clavier par lutilisateur.

Nous avons deux oprations analogues permettant de simuler :

Laffichage dune phrase avec linstruction crire

La saisie dune valeur par lutilisateur avec linstruction lire

31
La fonction lire

Linstruction de saisie de donnes par lutilisateur est :

Lire nomDeVariable


Lexcusion de cette instruction consiste :

1. Demander lutilisateur de saisir une valeur sur le priphrique dentre;

2. Modifier la valeur de la variable pass entre parenthses;

Avant lexcution de cette instruction, la variable de la liste avait ou navait
pas de valeur. Aprs, elle a la valeur lue au clavier ( le priphrique
dentre).

32
La fonction crire

Linstruction daffichage lcran (le priphrique de sortie) dune
expression est :

Ecrire expression

Cette instruction ralise simplement laffichage de lexpression

Cette expression peut tre :

Une variable
Des commentaires crits sous la forme dune suite de caractre entre
guillemets.
A la fois des phrases et des valeurs spars par une virgule.

33
Algorithme exemple-lire-crire

Variables : nb: rel

Dbut

lire nb // lutilisateur saisie le nombre au clavier

crire la valeur de nb // une phrase est affiche lcran

crire nb // une valeur est affiche lcran

crire ( la valeur de nb est : , nb) // une phrase suivie de la valeur
est affiche lcran

Fin

34
Exemple :

Ecrire un algorithme qui demande lutilisateur de saisir au clavier
trois nombres rels et qui affiche lcran la somme de ces trois
nombres.



35
Algorithme somme-de-3 rels

Variables : nb1, nb2,nb3, somme: rel

Dbut

lire nb1 // lutilisateur saisit le premier nombre au clavier

lire nb2

lire nb3

Somme nb1 + nb2+ nb3

crire somme // la somme est affiche lcran

Fin
36
Algorithmique
TOUHTOUH Samira

Ecole Nationale des Sciences Appliques dEl Jadida
samira.touhtouh@gmail.com
1
Plan
Introduction

Informatisation dun problme : Langage algorithmique

Les variables

Les constantes

Fonctions dentre-sortie

Les structures de contrle

Les tableaux

Les fonctions

Les fichiers


2
VI. Les structures de contrle
Instruction conditionnelle

Un algorithme est constitu dune suite dinstructions qui
sexcutent les unes aprs les autres de la premire la dernire.


Linstruction conditionnelle va nous permettre de concevoir un
algorithme qui nexcutera pas certains blocs dinstructions.

La conditionnelle

Linstruction conditionnelle dtermine si le bloc dinstructions
suivant est excut ou non. La condition est une expression
boolenne dont la valeur dtermine le bloc dinstructions.

3
Exemple avec un organigramme :


Lors de la manipulation dun distributeur de caf, on utilise souvent
les slecteurs sucr/non sucr et chaud /froid). Ensuite on voit
apparaitre de la poudre de caf, du sucre, puis de leau chaude ou
froide en fonction de nos demandes.




Voici un organigramme qui reprsente lalgorithme enregistr dans
lappareil :
4
5
Distribuer un
gobelet
Verser le
caf
Sucr ?
Verser
le sucre
chaud
?
Verser leau
chaude
Verser leau
froide
// Laction fournir un gobelet doit
tre effectue chaque excution de
lalgorithme. La poudre de caf doit aussi
tre toujours fournie
// Laction verser du sucre nest
effectue que si lutilisateur a choisi un
caf sucr
// Une seule des deux actions verser de
leau chaude et verser de leau froide
est effectue.
La syntaxe de cette instruction est :

Si (condition) alors

{
Bloc dinstructions n1 ; // excut si la condition gale vrai
}

sinon
{
Bloc dinstructions n2; // excut si la condition gale Faux
}

6
Lalgorithme de la machine caf se prsentera ainsi :

Distribuer un gobelet
Verser le caf en poudre

Si le caf doit tre sucr
Alors verser du sucre

Si le caf doit tre chaud
Alors verser de leau chaude

Sinon verser de leau froide

7
Exemple1 :
Ecrire un algorithme qui lit deux entiers et affiche le plus grand des deux.



Excuter avec x = 5 et y = 7


8
Exemple 2 : (avec une variable caractre)

Ecrire un algorithme qui prend en compte la rponse dun utilisateur qui
doit rpondre une question par oui ou par non,
La question est Peut-on passer au feu rouge clignotant?

Variable rponse : caractre
Dbut
Ecrire Peut-on passer au feu rouge clignotant?
Ecrire Rpondez par O ou N
Lire rponse
Si rponse O alors
{
crire ajourn
}
Si rponse N alors
{
crire admis
}
Fin


9
Applications

La condition simple

Une version plus simple est utilise si lalternative na pas lieu. La
syntaxe de cette instruction est alors :

Si (condition) alors

{
Instructions;
}



10
Exemple :

Ecrire un algorithme qui lit un entier et qui affiche sa valeur positive.


11
La prsentation

Les dcalages dans lcriture dun algorithme sont ncessaires sa
bonne lisibilit.




12
13
Exemple1 :
La diffrence entre les deux algorithmes identiques suivants :

Algorithme Max-de-deux-entiers
Variables : x, y, max : entier
Dbut
Lire x
Lire y
Si x>y alors

{
Max x
}

Sinon

{
Max y
}

Ecrire ( le maximum est : , max)
Fin
Algorithme Max-de-deux-entiers
Variables : x, y, max : entier
Dbut
Lire x
Lire y
Si x>y alors

{
Max x
}

Sinon

{
Max y
}

Ecrire ( le maximum est : , max)
Fin
Exemple2 : Comparons les deux algorithmes :

Variables X, Y, Z : nombres
Dbut
Y 2
Lire X
Si X > 10 Alors

X X 10
Y 1
Z X*Y
Ecrire Z

Fin


14

Variables X, Y, Z : nombres
Dbut
Y 2
Lire X
Si X > 10 Alors

X X 10
Y 1
Z X*Y
Ecrire Z

Fin
Conditionnelles imbriques

Il est possible dimbriquer des blocs de programme les uns dans les
autres.

Exemple :

Ecrire un algorithme qui demande lutilisateur une note et affiche
le commentaire associ la note :

Note de 0 8 inclus : insuffisant ;
Note de 8 12 inclus : moyen
Note de 12 16 inclus : bien ;
Note de 16 20 inclus : trs bien .
15
La premire solution utilise linstruction conditionnelle classique :

Algorithme commentaires-notes

Variables : note : entier

Dbut
Lire note
Si note 8 alors
Ecrire (insuffisant )

Si note>8 ET note 12 alors
Ecrire (moyen)

Si note > 12 ET note 16 alors
Ecrire (bien)

Si note > 16 alors
Ecrire (trs bien)
Fin
16
Instruction de rptition

La boucle

Linstruction de rptition, appele boucle, permet dexcuter plusieurs fois
conscutives un mme bloc dinstructions. La rptition seffectue tant que la
valeur de lexpression boolenne est gale Vrai.


On dispose de trois structures de contrle diffrentes :


17
tant quefaire :

Cette structure de contrle fait rpter une squence dinstructions,
aussi longtemps quune condition a la valeur Vrai.


Son fonctionnement prcis est dcrit par lorganigramme :


18
Condition
Squence
Dinstructions
suite
non
oui
Exemple 1 :

Ecrire un algorithme qui permet dafficher lcran les entiers de 1 5.


Algorithme affichage-des-entiers-1--5

Variables: compteur : entier

Dbut
Compteur 1 // initialisation
tant-que compteur 5 faire // condition de poursuite
{ // dbut du bloc
crire compteur // traitement
compteur compteur + 1 // incrmentation du compteur
} // fin du bloc
Fin
19
Remarques :


Les variables intervenant dans la condition doivent avoir reu une valeur
avant lvaluation de cette condition : initialiser la condition de la
boucle.



Cette valeur peut tre compltement arbitraire, et navoir quun seul intrt
: forcer lentre dans le boucle.



20
Exemple :

Ecrire un algorithme qui prend en compte la rponse dun utilisateur
qui doit rpondre une question par oui ou par non,
La question est Peut-on passer au feu rouge clignotant?

Rep Z

Tant Que Rep # O et Rep # N Faire

Ecrire Rpondez O pour oui, N pour Non

Lire Rep

21

Si la premire valuation de la condition fournit la valeur Faux, le corps de
la boucle nest pas excut, la condition ne sera plus valu et on passe
directement la suite.




Si la squence ne change pas la valeur de la condition et si celle-ci a la
valeur Vrai, la squence sera rpte sans que lon passe jamais la suite :
une boucle infinie.

22
Structure pour

Lorsque la rptition ne porte que sur le nombre ditrations et quil est connu
avant de commencer la boucle, il est pratique dutiliser la boucle :



pour de faire


23
Exemple1 :

Ecrire un algorithme qui permet dafficher les entiers de 1 5.


Algorithme boucle-pour-faire

Variables : compteur : entier

Dbut
Pour compteur 1 jusquau 5 faire
{
crire compteur
}
Fin


24
Exemple 2 :

Ecrire un algorithme qui permet dafficher la table de multiplication
par 7, prsente lancienne :
7 fois 1 font 7
7 fois 2 font 14

7 fois 10 font 70


25
La boucle faire-tant que

La boucle faire-tant que effectue lvaluation de la condition boolenne
aprs avoir effectu le premier tour de boucle. Dans certains cas, des
algorithmes scrivent avec moins de lignes en utilisant ce type de
boucle.

Compteur 1 // initialisation

Faire // condition de poursuite

{
crire compteur //traitement
compteur compteur + 1 // incrmentation du compteur
}

tant-que (compteur 4) // condition
26
Exemple 2 :

Soit lalgorithme
Variable x : nombre entier
Dbut
Ecrire donnez lentier de dpart
Lire x
Tant que x<100 Faire
Ecrire x
x x+20
Fin
Que produit cet algorithme lorsque x vaut 43, 195 ou -7?

Lcrire laide de Faire Tant que .. et Si Alors.
27
Les boucles imbriques

Quand un bloc dinstructions rpter lors dune boucle est
compos de plusieurs boucles , on parle de boucles imbriques.


Exemple :

Ecrire un algorithme qui permet de saisir 5 notes, et extrait la
meilleure de ces 5 notes. La note doit tre comprise entre 0 et 20. Si
ce nest pas le cas lalgorithme doit prvenir lutilisateur pour quil
recommence la saisie.

28
Algorithmique
TOUHTOUH Samira

Ecole Nationale des Sciences Appliques dEl Jadida
samira.touhtouh@gmail.com
1
Plan
Introduction

Informatisation dun problme : Langage algorithmique

Les variables

Les constantes

Fonctions dentre-sortie

Les structures

Les tableaux

Les fonctions

Les fichiers


2
Plan
Introduction

Informatisation dun problme : Langage algorithmique

Les variables

Les constantes

Fonctions dentre-sortie

Les structures de contrles

Les tableaux

Les fonctions

Les fichiers


3
VII. Les tableaux

Introduction

Dans certains conditions, les variables que nous connaissons sont trs
mal adaptes aux traitements effectuer.

Lorsquil sagit dun grand nombre de valeurs de mme types qui se
rpte, le traitement est lourd.

Imaginons, que nous avons plusieurs traitements effectuer sur des
consommations mensuelles deau. Pour conserver ces valeurs en
mmoire, nous pouvons prendre 12 variables numriques que nous
appellerons, par exemple, Eau1, Eau2,..,Eau12.

Pour calculer la consommation mensuelle moyenne sur lanne nous
pouvons crire la longue formule :

Moyenne = (eau1 + eau2 + eau3+ eau4 + eau5+ eau6+ eau7 + eau8+
eau9+eau10 + eau11+ eau12)/12




4
Les tempratures 16 heures de chacun des jours dune semaine
seront les 7 valeurs de la variable Temp qui est un tableau de 7
variables de type nombre qui sont dsignes par Temp[1], Temp[2],
Temp[7]


5
8
6
7
11
6
8
9
1
2
3
4
5
6
7
Temp
Le nom Temp dsigne
lensemble du tableau
Cette case du tableau
reprsente la variable
Temp[5] dont la valeur est 6
Exemple :
Ecrire un algorithme qui permet de calculer la moyenne des
tempratures de la semaine :

Algorithme calcul de la moyenne des tempratures de la semaine
Variables :
Temp : tableau [7] dentiers
k : entier
Somme : entier
Dbut
somme 0
Pour k de 1 jusquau 7 faire
somme somme + Temp[k]
moyenne somme/7
Fin
6

Le principe d'un tableau est trs simple : on stocke les lments dans des
cases, chaque case tant tiquete d'un numro(gnralement appel
indice). Pour accder un lment particulier d'un tableau, on donne
son indice.

Le nombre maximal dlments du tableau, qui est prcis la
dfinition, sappelle sa dimension.

Le type de ses lments sappelle le type du tableau.

Pour accder aux lments dun tableau, un indice indique le rang de
llment.
7
Dclaration dun tableau

1) T: Tableau [6] de rels // liste de notes ou de tempratures

2) T: Tableau [1,6] de rels

3) T: Tableau [0,5] de rels


Rels : Type des lments du tableau

[6] : Nombre dlments dans le tableau.

Chaque lment est repr dans le tableau par un indice varie
de 0 taille-1 ou de 1 taille.

On accde la case 2 par T[2]. (cest la 3
e
case ou la 2
e
case)
8
Utilisation dun tableau

Tableau une dimension

La manipulation des lments du tableau (notes) est dcrite dans
lexemple suivant : une seule variable permet de stocker 4 notes
entires.

Algorithme utilisation dun tableau

Variables : notes : tableau[4] dentiers;

Dbut

notes[0] 12; : on peut fixer la valeur de llment dindice 0
notes[1] 14;
notes[2] 10;
notes[3] 18;

Fin


9
Ltat de mmoire




10
12 14 10 18
Manipulation de tous les lments dun tableau

Exemple 1 : Lire les valeurs des lments dun tableau T de N
nombres entiers.


11
Tableau deux dimensions

Linformatique nous offre la possibilit de dclarer des tableaux
dans lesquels les valeurs ne sont pas repres par une seule, mais
par deux coordonnes.

Tableau cases [7,7] en Entier



12
Exemple :

Ecrire un algorithme remplissant un tableau de 6 sur 13,
avec des zros.


13
Plan
Introduction

Informatisation dun problme : Langage algorithmique

Les variables

Les constantes

Fonctions dentre-sortie

Les structures de contrles

Les tableaux

Procdures et fonctions

Les fichiers


14
Procdures


Nous voulons poser plusieurs questions aux quelles nous attendons une
rponse sous la forme O ou N. Un compteur nous permettra de compter le
nombre de rponse positive.

Peut-on passer au feu rouge clignotant?

Doit-on marquer un arrt au STOP?


Pour prendre en compte la rponse de lutilisateur qui doit rpondre
seulement par OUI ou par NON


Ceci ncessite lutilisation de plusieurs instructions en particulier
lutilisation de la boucle tant que,



15
Algorithme : rponseOuiNon
Variables : rep : caractre
Dbut :
Compteur 0
Ecrire Peut-on passer au feu rouge clignotant
Lire rep
Tant que rep # O ET rep # N
{
Ecrire rpondez O pour oui et N pour non
Lire rep
}
Si Rep N alors compteur compteur + 1
Ecrire Doit-on marquer un arrt au STOP
Lire rep
Tant que rep # O ET rep # N
{
Ecrire rpondez O pour oui et N pour non
Lire rep
}
Si Rep O alors compteur compteur + 1
Ecrire points marqus : , compteur
Fin

16





Pour ne pas avoir recopier plusieurs fois les mmes lignes dans lalgorithme,
nous pouvons crer une procdure qui est une partie dalgorithme, crite part,
dsign par un nom, et que lon fait excuter plusieurs fois, en citant son nom.
17
Dfinition dune procdure :


Procdure maProcdure ( )
// dclaration des variables
Variables var1 : entier
Dbut
instructions 1
instructions 2
Fin procdure
18


Variables Question : chane de caractres
Rep : caractre;
Compteur: nombre entier

Procdure ReponseOuiNon ( )
Dbut
Ecrire Question
Lire Rep
Tant que (rep # O) et (Rep # N) Faire
Ecrire rpondez par O ou par N
Lire Rep
Fin


19
Dbut
Compteur 0
Question peut-on passer au feu rouge clignotant?
PeponseOuiNon
Si Rep N alors compteur compteur + 1
Question doit-on marquer un arrt au STOP?
PeponseOuiNon
Si Rep O alors compteur compteur + 1
Ecrire points marqus : , compteur
Fin

20
Les variables locales et globales


Les variables dclares dans lalgorithme appelant ne
sont pas utilisables dans les procdures.

Chaque algorithme et sous algorithme a son propre
espace de variables, inaccessible par les autres.

Les variables sont dites LOCALES.

Il peut exister des variables GLOBALES, mais leur
usage est dconseill.


21
Paramtres


Un paramtre est une variable particulire sert la
communication entre algorithme appelant et sous-algorithme.

Deux types de communication de valeurs par paramtres
apparaissent :

La valeur du paramtre effectif est affecte avant lexcution
de la procdure au paramtre formel qui est une variable
appartenant la procdure : on dit que le paramtre est en
entre.

Le paramtre formel est une autre dsignation du paramtre
effectif, valable pendant la dure de la procdure, il ne lui
correspond aucune variable propre la procdure : Le
paramtre est en sortie.



22
Paramtres en entre : transmission par valeur



Dans lexemple 1, on peut dclarer une nouvelle variable
quest, qui va service dun variable locale la procdure.




23

Procdure ReponseOuiNon (Quest : chane de caractres)
Dbut
Ecrire Quest
Lire Rep
Tant que (rep # O) et (Rep # N) Faire
Ecrire rpondez par O ou par N
Lire Rep
Fin
Dbut
BonnesReponses 0
ReponseOuiNon(peut-on passer au feu rouge?)
Si Rep = N Alors BonnesReponses BonnesReponses + 1
ReponseOuiNon(Doit-on marquer un arrt au STOP?)
Si Rep = O Alors BonnesReponses BonnesReponses + 1
Fin


24
Le paramtre est crit entre parenthses, on le qualifie de paramtre
formel dans la dclaration, de paramtre effectif lors de chaque
appel.


Lors du premier appel la procdure, le texte Peut-on passer au
feu rouge clignotant? est automatiquement affect au paramtre
Quest,

Il sera remplac par doit-on marquer un arrt au STOP? lors du
deuxime appel.

On na plus soccuper de la variable Question qui peut disparaitre
du programme, mais seulement fournir, lors de chaque appel, le
paramtre effectif qui correspond au paramtre formel.



25
Paramtre en sortie : transmission par adresse

Exemple :
Nous voulons stocker les rponses successives dans le tableau R de
[1..20] caractres pour permettre un traitement ultrieur.

Dbut
lectureOuiNon(peut-on passer au feu rouge clignotant?)
R[1] Rep
LectureOuiNon(doit-ont marquer un arrt u STOP?)
R[2] Rep

Nous prfrons crer un second paramtre : la variable effective dans
laquelle la procdure doit lire la rponse. Lalgorithme devient :


26
Procdure ReponseOuiNon (Quest : chane de caractres, Rep :
caractre)
Dbut
Ecrire Quest
Lire Rep
Tant que (Rep # O) et (Rep # N) Faire
Ecrire rpondez par OUI ou par NON
Lire REP
Fin
Dbut
ReponseOuiNon(peut-on passer au feu rouge?, R[1])
ReponseOuiNon(Doit-on marquer un arrt au STOP?, R[2])
Fin


27

La correspondance entre la variable R[1] et le paramtre Rep ne
peut pas fonctionner comme pour le paramtre quest,

On ne souhaite pas voir affecter la valeur de R[1] Rep, mais on
veut au contraire que la valeur finale de Rep se trouve dans R[1],

Le nom Rep, dfini comme paramtre formel de la procdure est un
nom provisoire dsignant le paramtre effectif pour la dure de
lexcution de la procdure.

R[1] dsigne pendant la premire excution et R[2] pendant la
deuxime.
28
Pour distinguer dans lcriture, nous choisirons de faire
procder, chaque nom de paramtre formel de
lindication du type de transmission, suivant le modle :
Procdure Deux Paramtres ( ParamtreEnEntre,
ParamtreEnSorte)


Les paramtres en Entre/Sortie, ils sont galement
transmis par adresse et nots par la double flche
29
Les fonctions


Certains traitements ne peuvent tre effectus par un algorithme,
exemple le cas du calcul du sinus dun angle.


Tout langage de programmation propose un certain nombre de
fonctions; certains sont indispensables, car elles permettent
deffectuer des traitements qui seraient sans elles impossibles.
Dautres servent faciliter la programmation.
30
Structure gnrale des fonctions

Reprenons lexemple du sinus. Les langages informatiques,
proposent gnralement une fonction SIN. Si nous voulons stocker
le sinus de 35 dans la variable A, nous crirons :

A sin(35)
31

Une fonction est donc constitue de trois parties :

- Le nom de la fonction.
Le nom dune fonction commence par une minuscule.
Le nom dune fonction ne comporte pas despace.
Si le nom de la fonction est compos de plusieurs mots, faire
commencer chacun deux par une majuscule (par exemple :
sommeDeDeuxEntiers,) et ne pas faire figurer de traits dunion.

- Deux parenthses, une ouvrante, une fermante.

- Une liste de valeurs, indispensables la bonne excution de la
fonction. Ces valeurs sappellent des arguments, ou des paramtres.
Certaines fonctions exigent un seul argument, dautres deux, etc. et
dautres aucun.



32
Lutilit des fonctions :

Le programmeur doit penser concevoir et crire des fonctions
pour amliorer son programme. Il y gagnera sur plusieurs
points :

Le code des algorithmes est plus simple, plus clair et plus court.
Dans un algorithme, appeler une fonction se fait en une seule ligne
et la fonction peut tre appele plusieurs reprises.

Une seule modification dans la fonction sera automatiquement
rpercute sur tous les algorithmes qui utilisant cette fonction.

Lutilisation de fonctions gnriques dans des algorithmes diffrents
permet de rutiliser son travail et de gagner du temps.


33


Les fonctions sont comparables aux procdures :

Leur appel ne constitue pas lui seul une instruction, mais figure dans
une expression.

Leur excution produit un rsultat qui prend la place de la fonction lors
de lvaluation de lexpression.

Linstruction retourne,


34
Trois tapes sont toujours ncessaires lexcution dune fonction :


1. Le programme appelant interrompt son excution.

2. La fonction appele effectue son bloc dinstructions. Ds quune
instruction retourne est excute, la fonction sarrte.

3. Le programme appelant reprend alors son excution.



35
Larrt de la fonction

Une fonction sarrte lorsque son excution atteint la fin du bloc
dinstructions, ou lorsque linstruction retourne est excute (avec
ou sans valeur).


36
Fonction sans valeur retourne

Ecrire et utiliser une fonction simple qui doit afficher bonjour
. Cette fonction ne retourne pas de valeur : ceci est signal en
prcisant quelle retourne vide.

Fonction afficheBonjour () : vide

Dbut
crire (bonjour)
retourne
Fin

Une fonction se termine toujours par linstruction retourne.
Cette fonction effectuera les instructions entre Debut et Fin.
37


Ecrire un algorithme qui appelle la fonction afficheBonjour ().

Algorithme utilise-fonction

Dbut
afficheBonjour ()
Fin
38
39
La suite des instructions excutes au cours du temps :

Exemple :

Ecrire un algorithme qui appelle 10 fois la fonction afficheBonjour ().

40
Fonction avec une valeur retourne

Dfinition

La valeur de retour

Une fonction peut retourner une valeur au programme appelant. Cette
valeur est unique. Le retour de la valeur signifie larrt de la
fonction.

Exemple :

Ecrire une fonction qui permet de lire une note entre 0 et 20.
41
Fonction lireNote() : entier

Variables : note: entier

Debut

ecrire(Entrez une note : )
lire(note); // lutilisateur entre la note
tant_que ((note<0) OU (note>20)) faire
{
ecrire (vous avez fait une erreur, essayez encore : ) //
message derreur affich
lire(note); // on recommence la saisie
}
retourne(note)
Fin


42
Fonctions rcursives


Construire la solution dun problme en utilisant la solution du
mme problme dans un contexte diffrent (plus simple).

La suite des contextes doit tendre vers une solution directe (cas
terminal).

Les fonctions rcursives sont adaptes une certaine classe de
problmes.

Exemple : la factorielle







43

You might also like