Vous êtes sur la page 1sur 110

Algorithmique

0021266950863 :Tel

Introduction
Introduction

Pour qu'un ordinateur fonctionne, il est ncessaire de lui dire


quoi faire
Toute action ralise par une machine a t programme par
un tre humain.
un ordinateur ne dcide rien, il fait "btement" ce qu'il lui a t
programm.

0021266950863 :Tel

Mais
-ce qu
un programme?
Mais qu'est
qu'est-ce
quun
programme?

9 Un programme est donc une suite d'instructions excutes par la


machine.

9 La machine a son propre langage appel langage machine.

0021266950863 :Tel

Algorithme
Algorithme

Est une suite de rgles applique dans un ordre dtermin.


Est une suite dinstructions crite en langage dalgorithme qui rsout un
problme et qui sont excutable par nimporte quelle machine.

Le rle de lalgorithme est fondamental, on effet sans lalgorithme il n y aura


pas de programme.

0021266950863 :Tel

M
thodologie
Mthodologie

La rsolution dun problme sur ordinateur est caractris par 4 tapes :


Comprendre la nature du problme pos
Prciser les donnes fournies (entres)
Prciser les rsultas que lon dsire obtenir (Sorties)
Dterminer le processus de transformation des donnes en rsultats.

0021266950863 :Tel

Comment
Comment on
on programme
programme ??

nous allons utiliser un pseudo-langage, comportant toutes


les structures de base d'un langage de programmation.

ensuite on traduit notre "pseudo" en langage volu


en fonction des possibilits de ce langage.

Ce langage sera ensuite traduit en langage machine.

0021266950863 :Tel

Un
cutes par
Un programme
programme est
est donc
donc une
une suite
suite d'instructions
d'instructions ex
excutes
par
la
la machine.
machine.

Ces instructions peuvent :


soit s'enchaner les unes aprs les autres, on parle alors
de squence d'instructions;
ou bien s'excuter dans certains cas et pas dans d'autres, on parle
alors de structure alternative;
ou se rpter plusieurs fois, on parle alors de structure rptitive.

0021266950863 :Tel

La
quence d'instructions
La ssquence
d'instructions
Une instruction est une action que l'ordinateur est capable d'excuter.
Une squence d'instruction serait :
Se lever
Prendre sa douche
Prendre le petit djeuner
S'habiller
Vous voyez que l'ordre des instructions a de l'importance : "S'habiller" puis
"prendre sa douche" conduit un rsultat pas gnial que nous appellerons un
"bug".

Cependant certaines instructions peuvent se drouler dans un ordre indiffrent

0021266950863 :Tel

structure
structure alternative
alternative
Une alternative s'exprime par si .. sinon

Si fin de semaine ou cong


Se lever
Prendre son petit djeuner
Prendre sa douche
Mettre sa tenue de sport
Faire son jogging
Sinon
Se lever
Prendre son petit djeuner
Prendre sa douche
Mettre sa tenue de travail
Aller travailler
Fin Si
0021266950863 :Tel

Optimisation
Optimisation
Que la condition soit ralise (condition vraie) ou qu'elle ne le soit pas
(condition fausse) les premires actions sont les mmes et se passent
dans le mme ordre ce qui permet la simplification suivante :
afin de permettre une meilleure lisibilit; on parle d'indentation.

Se lever
Prendre son petit djeuner
Prendre sa douche
Si fin de semaine ou cong
Mettre sa tenue de sport
Faire son jogging
Sinon
Mettre sa tenue de travail
Aller travailler
Fin Si

0021266950863 :Tel

10

structure
ptitive (it
rative ))
structure rrptitive
(itrative
La routine journalire dun employ est :
Ouvrir guichet
Appeler premier client
Tant que client dans file d'attente et pas fin de journe
Traiter client
Appeler client suivant
FinTantQue
Les deux actions "Traiter client" et "Appeler client suivant" vont se rpter
tant que la condition situe derrire l'instruction "Tant que" est vrifie.

0021266950863 :Tel

11

Considrons maintenant le programme complet de la journe

Se lever
Prendre son petit djeuner
Prendre sa douche
Si fin de semaine ou cong
Mettre sa tenue de sport
Faire son jogging
Passer une journe de dtente
Sinon
Mettre sa tenue de travail
Aller travailler
Faire travail
FinSi
Rentrer la maison
Dner
Aller se coucher
0021266950863 :Tel

12

Considrons maintenant le programme complet de la journe (Suite)


Fonction travail
Ouvrir guichet
Appeler premier client
Tant que pas heure de djeuner
Faire guichet
FinTantQue
Djeuner
Tant que client et pas heure de sortie
Faire guichet
FinTantQue
Fin Fonction
Fonction Guichet
Si client en file d'attente
Traiter client
Appeler client suivant
Sinon
Classer
FinSi
Fin Fonction
0021266950863 :Tel

13

Explication
Explication
fonction Travail pour une meilleure lisibilit du programme.

On a cr une fonction guichet afin de ne pas rpter la mme squence


d'instructions deux fois dans le programme.
Notre programme a donc t scind en deux parties :
le corps du programme de la ligne 1 la ligne 15
les fonctions ou sous-programmes internes partir de la ligne 17.

Comment cela se passe-t-il lorsque nous rencontrons un appel de fonction ?

0021266950863 :Tel

14

Les
Les variables
variables
Une variable est une zone mmoire quelle peut varier le contenu
au cours de lexcution du programme : son nom est appel Identificateur
X

Case Mmoire

Mmoire centrale
variable est caractrise par :
une adresse c'est dire un emplacement dans la mmoire de la machine,
un type permettant d'indiquer la nature de l'information contenue,
ventuellement une longueur .

0021266950863 :Tel

15

Les
Les types
types de
de variables
variables

Les variables que l'on utilise dans les programmes ne sont pas toutes de mme nature

il y a des nombres, des caractres, ... On dit que les variables sont types.
Il est ncessaire de donner un type aux variables, pour contrler leur utilisation
(ex: on ne peut pas diviser un caractre par un entier )

0021266950863 :Tel

16

Gnralement les langages de programmation offrent les types suivants


entier : il s'agit des variables destines contenir un nombre entier positif ou
ngatif.
ENTIER variable, variable, ... ;
rel : il s'agit des variables numriques qui ne sont pas des entiers,
c'est dire qui comportent des dcimales
REEL variable, variable, ... ;
caractre : Les variables de type caractre contiennent des caractres
alphabtiques ou numriques (de 0 9)
CAR variable , variable , ...;
boolen : Il est souvent ncessaire lorsque l'on crit un programme d'introduire
des variables qui prennent les valeurs vrai ou faux ou les valeurs oui ou non.
BOOLEEN variable, variable, ... ;
0021266950863 :Tel

17

Les
rateurs
Les op
oprateurs

Arithmtique : +; /; -; *; mode
Comparaison : <; <=; >; >=; =; <>
Logique : ET; OU; NON; OR

0021266950863 :Tel

18

L'affectation
L'affectation
Affecter une valeur une variable
X:= 3 , On charge la variable X avec la valeur 3

X
3

Affecter le contenu dune variable une autre variable


X:= Y , On charge X avec le contenu de Y

Y X
3

0021266950863 :Tel

19

L'affectation
L'affectation (suite)
(suite)
Affecter une formule une variable
X:= X + 2 * Y , On charge la variable X par la valeur du rsultat
de la formule et on crase sa valeur initiale

X=3+2*4

11

0021266950863 :Tel

20

Lecture
es
Lecture et
et Affichage
Affichage des
des donn
donnes
* Lecture A partir du clavier
Syntaxe : Lire(Variable)
Exemple Lire(A) : on saisie une valeur pour la stocker aprs dans la variable A

* Affichage sur cran


Syntaxe : crire(Variable)
Exemple crire (A) : Afficher la valeur de la variable A sur cran

0021266950863 :Tel

21

La
-langage
La syntaxe
syntaxe du
du pseudo
pseudo-langage
Un programme comportera :
o Une partie dclaration
o Une partie encadre par dbut fin o sont dcrites les actions
programme :
dclarations;
DEBUT
FIN

Actions

Dans la partie dclarations, nous trouvons :

dclaration de variables

dclaration de fonction
Dans la partie actions, nous trouvons :

suite d'instructions

alternative

rptitive

0021266950863 :Tel

22

Des Questions ?
0021266950863 :Tel

23

squence d'instructions

Exercice
Exercice 11

crire un algorithme qui permet de saisir des valeurs pour A et B ,


faire la somme et afficher le rsultat?
Solution :

0021266950863 :Tel

24

squence d'instructions

Exercice
Exercice 22

crire un algorithme qui permet de calculer et afficher la surface dun


cercle?
Solution :

0021266950863 :Tel

25

squence d'instructions

Exercice
Exercice 33

crire un algorithme qui permet de calculer et afficher le salaire brut


dun ouvrier connaissant le nombre dheure et le tarif dhoraire?
Solution :

0021266950863 :Tel

26

squence d'instructions

Exercice
Exercice 44

crire un algorithme qui fait la conversion dune somme dargent donne en


DH ,en une somme dargent en Euro?
Solution :

0021266950863 :Tel

27

structure
structure alternative
alternative
Syntaxe 1 :

Si condition Alors

Actions 1

FinSi
Syntaxe 2 :

ActionsN

.
.
.

Si condition Alors

Actions 1

Sinon

ActionsN
Actions 1

ActionsN

.
.
.

.
.
.

FinSi
On
es
On peut
peut utiliser
utiliser des
des structures
structures alternatives
alternatives imbriqu
imbriques
0021266950863 :Tel

28

structure alternative

Exercice
Exercice

On dsire comparer deux valeurs ,crire un algorithme qui affiche la plus


grande des deux?
Solution :

0021266950863 :Tel

29

structure alternative

Exercice
Exercice 11

crire un algorithme qui affiche le salaire brut dun ouvrier sachant que
les heures supplmentaires de 172 heures sont payes 50% de tarifs
dhoraire en plus?
Solution :

0021266950863 :Tel

30

structure alternative

Exercice
Exercice 22

Afficher le rsultat de fin danne pour un tudiant connaissant sa


moyenne gnrale?
Solution :

0021266950863 :Tel

31

structure alternative

Exercice
Exercice 33

Calculer le montant de la facture dun client ayant command une quantit dun
produit avec un prix unitaire hors taxe
Le taux de T.V.A est : 20%
Les frais de transport sont 0.8 DH de Km , Le client est
dispos du frais de transport si le montant est suprieur 4500 DH
Solution :

0021266950863 :Tel

32

structure alternative

Exercice
Exercice 44

Une bibliothque fait des rductions sur lachat des livres :

25% pour les tudiants.

15% pour les enseignants


crire un algorithme qui calcule et affiche le prix payer selon le type du
client?
Solution :

0021266950863 :Tel

33

Des exercices
suppl
mentaires ?
supplmentaires
0021266950863 :Tel

34

structure alternative

Exercice
Exercice 11

crire un algorithme qui calcule et affiche le maximum de trois nombre


A,B et C ?
Solution :

0021266950863 :Tel

35

structure alternative

Exercice
Exercice 22

crire un algorithme qui permet de rsoudre lquation du premier degr


: aX+b=0?
Solution :

0021266950863 :Tel

36

structure alternative

Exercice
Exercice 33

crire un algorithme qui permet de rsoudre une quation de second


degr : aX+bX+c=0 ?
Solution :

0021266950863 :Tel

37

structure alternative

Exercice
Exercice 44

crire un algorithme qui lie trois nombre A,B et C , puis il dtermine si


lun est gal la somme de 2 autres sinon il affiche un message pas de
solution ?
Solution :

0021266950863 :Tel

38

structure alternative

Exercice
Exercice 55

Un patron dcide de calculer le montant de la participation au prix


du repas de ses employs de la faon suivante :
o
o
o

Sil est clibataire : participation 20% du pris de repas


Sil est marie : participation 25% du pris de repas.
Sil a des enfants : participation 10% supplmentaire par enfant.

La participation est plafonne 50%.


Si le salaire mensuel est infrieur 6000 DH, la participation est majore 10%.
Solution :

0021266950863 :Tel

39

structure alternative

Exercice
Exercice 66

crire un algorithme qui partir dun nombre compris entre 1 et 7


affiche le jour correspendant?
Solution :

0021266950863 :Tel

40

structure alternative

Exercice
Exercice 77

Le reprsentant dune socit de distribution des produits daffichage lectroniques


sont rmunrs de faon suivante :
un fixe mensuel de 4000 DH
une commission a pourcentage variable sur chaque tranche du chiffre daffaire mensuel :
une commission de 5% pour un chiffre daffaire compris entre 0 et 1000.
une commission de 10% pour un chiffre daffaire compris entre 1000 et 3000.
une commission de 14% pour un chiffre daffaire suprieur 3000.

crire un algorithme qui permet de calculer et afficher le montant total de la


rmunration de chaque reprsentant.

0021266950863 :Tel

41

structure alternative

Exercice
Exercice 88

Le service des prts dune bibliothque adapter le rglement suivant :


9 tous les lecteurs de la catgories A peuvent empreinter des livres pour une
dure maximale de 20 jours.
9 un lecteur de la catgorie B peut conserver des livres pour une dure
maximale de 30 jours.
9 un lecteur de la catgorie C peut conserver des livres pour une dure
maximale de 45 jours.
9Aucun lecteur ne pourra avoir en sa possession plus de 5 ouvrages.
crire un algorithme qui affiche la dure dempreinte et est ce quil a le droit
dempreinter ?

0021266950863 :Tel

42

Structure
ptitive(itrative)
Structure rrptitive(itrative)
Structure rptitive permet de rpter une ou plusieurs actions un
certain nombre de fois. On identifie en rgle gnrale 3 types de rptitive :

Tant que
Faire Jusqu'
Pour

0021266950863 :Tel

43

structure
structure rptitive
rptitive 11
Tant que
Les rptitives o la condition darrt est place au dbut.

TantQue

condition

actions

FINTQ
Ce qui signifie : tant que la condition est vraie, on excute les actions.

0021266950863 :Tel

44

structure
structure rptitive
rptitive 22
Faire Jusqu'
Les rptitives o la condition darrt est place la fin.

Faire

Actions

Jusqua condition
Ce qui signifie qu'on excute les actions jusqu' ce que la condition soit vraie.

0021266950863 :Tel

45

structure
structure rptitive
rptitive 33
Pour
Les rptitives o le nombre ditration est fixe une fois pour toute.
Trs souvent, nous utilisons une structure rptitive avec un compteur
et nous arrtons lorsque le compteur a atteint sa valeur finale.

POUR variable ALLANT DE entier A entier [PAS entier]


Actions

FinPour
Lorsque
Lorsque le
le PAS
PAS est
est omis,
omis, ilil est
est suppos
suppos gal
gal +1.
+1.

0021266950863 :Tel

46

structure rptitive

Exercice
Exercice 11

crire un algorithme qui saisie N entier et affiche leur somme et leur


moyenne ?
Solution :

0021266950863 :Tel

47

structure rptitive

Exercice
Exercice 22

crire un algorithme pour calculer et afficher la somme et la moyenne de


100 premiers nombres entiers ?
Solution :

0021266950863 :Tel

48

structure rptitive

Exercice
Exercice 33

crire un algorithme qui permet de calculer S1,S2,S3,S4,S5,S6 tel que:

S1 = 1 + + 1/3 + +..1/N
S2 = 1 + + + 1/6 +..1/N
S3 = 1 + 1/3 + 1/5 +..1/N
S4 = 1 - + - 1/6..1/N
S5 = 1 + x+x..xN
S6 = 1 + x+x/2.. xN /N

0021266950863 :Tel

49

structure rptitive

Exercice
Exercice 44

crire un algorithme qui vrifie si un nombre est premier o pas ?


Solution :

0021266950863 :Tel

50

structure rptitive

Exercice
Exercice 55

crire u algorithme qui permet de donner le plus grand commun diviseur


de 2 entiers positifs A et B ?
Solution :

0021266950863 :Tel

51

structure rptitive

Exercice
Exercice 66

crire un algorithme qui permet de calculer le factoriel dun nombre


positif ?
Solution :

0021266950863 :Tel

52

structure rptitive

Exercice
Exercice 77

crire un algorithme qui saisit deux entiers, calcule et affiche la somme


de ces 2 entiers (on arrte la saisie avec la valeur 0) ?
Solution :

0021266950863 :Tel

53

Examen
11
Examen N
N
Exercice 1 :
Une salle de cinma dsire automatiser la gestion de la billetterie pour chaque client qui se
prsente, on calcule le prix du billet en fonction des donnes suivantes:

NF : Numro du fil
HS : heure de la sance
Age : Age de spectateur
Le prix normal de la facture est de 30 DH, cependant des remises peuvent tre
accorder en fonction du critres suivants :
NF=2 ou Age < 15 ou HS>20 remise de 50%
NF=2 et Age >75 remise 25%
NF=3 et Age < 15 entre refuse
crire un algorithme qui permet de calculer et dcider le prix payer pou chaque
client qui se prsente . on arrte la saisie par "non"

0021266950863 :Tel

54

Examen
11 (suite)
Examen N
N
(suite)
Exercice 2 :
Une entreprise dsire automatise la gestion de paie de son personnel pour
chaque employ, on doit introduire le nom, le prnom, le salaire de base(SB), le
nombre d'enfant et l'anciennet(ANC).
Un prix de 100 DH est accord pour chaque enfant .
Si anciennet<=10 ans et SB < 1000 DH une prime de 50% du SB
Si l'anciennet est 10 ans < ANC <20 ans et SB > 1000 DH prime de 70% du SB
Calculer le salaire brute (SB+ le prime + les enfants) et afficher le nom , prnom,
l'anciennet , SB, prime et le salaire brute

0021266950863 :Tel

55

Exercice
Exercice
crire un programme qui saisit des entiers et en affiche la somme et la
moyenne (on arrte la saisie avec la valeur 0)
Solution :

0021266950863 :Tel

56

Des Questions ?
0021266950863 :Tel

57

Les
Les tableaux
tableaux
1. Utilit des tableaux

Imaginons que dans un programme, nous ayons besoin


simultanment de 12 valeurs (par exemple, des notes pour calculer
une moyenne). videmment, la seule solution dont nous disposons
lheure actuelle consiste dclarer douze variables, appeles par
exemple Notea, Noteb, Notec, etc. Bien sr, on peut opter pour une
notation un peu simplifie, par exemple N1, N2, N3, etc. Mais cela ne
change pas fondamentalement notre problme, car arriv au calcul,
et aprs une succession de douze instructions Lire distinctes,
cela donnera obligatoirement une atrocit du genre :

Moy (N1+N2+N3+N4+N5+N6+N7+N8+N9+N10+N11+N12)/12

0021266950863 :Tel

58

Les
Les tableaux
tableaux
Cest pourquoi la programmation nous permet de rassembler toutes ces
variables en une seule, au sein de laquelle chaque valeur sera dsigne par un
numro. Cela donnerait donc quelque chose du genre la note numro 1 , la
note numro 2 , la note numro 8 . Cest largement plus pratique
Un ensemble de valeurs portant le mme nom de variable et repres par un nombre,
sappelle un tableau, ou encore une variable indice.
Le nombre qui, au sein dun tableau, sert reprer chaque valeur sappelle lindice.
Chaque fois que lon doit dsigner un lment du tableau, on fait figurer le nom du tableau,
suivi de lindice de llment, entre parenthses.

0021266950863 :Tel

Ex: Nom_tableau[5]

59

Les
Les tableaux
tableaux
2. Notation et utilisation algorithmique
Tableau Note(12) en Numrique
Variables Moy, Som en Numrique
Dbut
POUR i ALLANT DE 0 A 11
Ecrire "Entrez la note n", i
Lire Note(i)
FinPour
Som := 0
POUR i ALLANT DE 0 A 11
Som := Som + Note(i)
FinPour
Moy := Som / 12
crire(la somme est:
crire(La moyenne est:

0021266950863
Fin :Tel

Som)
Moy)

60

Les tableaux

Exercice
Exercice 22

crire un algorithme qui dclare et remplisse un tableau de 7 valeurs


numriques en les mettant toutes zro.
Solution :

0021266950863 :Tel

61

Les tableaux

Exercice
Exercice 33

crire un algorithme qui dclare et remplisse un tableau contenant les six


voyelles de lalphabet latin.
Solution :

Tableau Truc(6) en Numrique


Dbut
Truc(0) "a"
Truc(1) "e"
Truc(2) "i"
Truc(3) "o"
Truc(4) "u"
Truc(5) "y"
Fin
0021266950863 :Tel

62

Les tableaux

Exercice
Exercice 44

crire un algorithme qui dclare un tableau de 9 notes, dont on fait


ensuite saisir les valeurs par lutilisateur.
Solution :
Tableau Notes(9) en Numrique
Variable i en Numrique
dbut
POUR i ALLANT DE 0 A 6
Ecrire "Entrez la note numro ", i + 1
Lire Notes(i)
i suivant
Fin

0021266950863 :Tel

63

Les tableaux

Exercice
Exercice 55

On saisit des entiers et on les range dans un tableau (maximum 50)


crire un programme qui affiche le maximum, le minimum et la valeur
moyenne de ces nombres.
Solution :

0021266950863 :Tel

64

Les tableaux

Exercice
Exercice 66

crivez un algorithme permettant lutilisateur de saisir un nombre


quelconque de valeurs, qui devront tre stockes dans un tableau.
Lutilisateur doit donc commencer par entrer le nombre de valeurs quil
compte saisir. Il effectuera ensuite cette saisie. Enfin, une fois la saisie
termine, le programme affichera le nombre de valeurs ngatives et le
nombre de valeurs positives.
Solution :

0021266950863 :Tel

65

Les tableaux

0021266950863 :Tel

Solution
Solution (Exercice
(Exercice 5)
5)

66

Des exercices
suppl
mentaires ?
supplmentaires
0021266950863 :Tel

67

Les tableaux

Exercice
Exercice 5.1
5.1
Que produit lalgorithme suivant ?
Tableau Nb(6) en Entier
Variable i en Entier
Dbut
Pour i 0 5
Nb(i) i * i
i suivant
Pour i 0 5
crire Nb(i)
i suivant
Fin
Peut-on simplifier cet algorithme avec le mme rsultat ?
0021266950863 :Tel

68

Les tableaux

Exercice
Exercice 5.2
5.2

Que produit lalgorithme suivant ?


Tableau N(7) en Entier
Variables i, k en Entier
Dbut
N(0) 1
Pour k 1 6
N(k) N(k-1) + 2
k Suivant

Pour i 0 6
Ecrire N(i)
i suivant
Fin
Peut-on simplifier cet algorithme avec le mme rsultat ?

0021266950863 :Tel

69

Les tableaux

Exercice
Exercice 5.3
5.3
Que produit lalgorithme suivant ?
Tableau Suite(8) en Entier
Variable i en Entier
Dbut
Suite(0) 1
Suite(1) 1
Pour i 2 7
Suite(i) Suite(i-1) + Suite(i-2)
i suivant
Pour i 0 7
crire Suite(i)
i suivant
Fin

0021266950863 :Tel

70

Les tableaux

Exercice
Exercice 5.4
5.4
crivez la fin de lalgorithme (exercice 5.3) afin que le calcul de la moyenne des
notes soit effectu et affich lcran.

Exercice
Exercice 5.5
5.5

crivez un algorithme permettant lutilisateur de saisir un nombre


quelconque de valeurs, qui devront tre stockes dans un tableau.
Lutilisateur doit donc commencer par entrer le nombre de valeurs quil
compte saisir. Il effectuera ensuite cette saisie. Enfin, une fois la saisie
termine, le programme affichera le nombre de valeurs ngatives et le
nombre de valeurs positives.

Exercice
Exercice 5.6
5.6
crivez la fin de lalgorithme 6.3 afin que le calcul de la moyenne des notes soit
effectu et affich lcran.

0021266950863 :Tel

71

Les tableaux

Exercice
Exercice 5.7
5.7
crivez un algorithme calculant la somme des valeurs dun tableau (on
suppose que le tableau a t pralablement saisi).

Exercice
Exercice 5.8
5.8

crivez un algorithme constituant un tableau, partir de deux tableaux


de mme longueur pralablement saisis. Le nouveau tableau sera la somme
des lments des deux tableaux de dpart.
Tableau 1 :
Tableau 2 :
Tableau 3 :

41

11

13

11

47

+
5

=
9

0021266950863 :Tel

17

11

72

Des Questions ?
0021266950863 :Tel

73

Les
dfinies
Les Fonctions
Fonctions Pr
Prdfinies
Tout langage de programmation propose ainsi un certain nombre de fonctions ; certaines
sont indispensables, car elles permettent deffectuer des traitements qui seraient sans
elles impossibles. Dautres servent soulager le programmeur, en lui pargnant de longs
et pnibles - algorithmes.
Tous les langages, je dis bien tous, proposent les fonctions suivantes, mme
si le nom et la syntaxe peuvent varier dun langage lautre :
- Len(chane)
- Mid(chane,n1,n2)

: renvoie le nombre de caractres dune chane


: renvoie un extrait de la chane, commenant au caractre n1
et faisant n2 caractres de long.
- Left(chane,n)
: renvoie les n caractres les plus gauche dans chane.
- Right(chane,n)
: renvoie les n caractres les plus droite dans chane
- Trouve(chane1,chane2) : renvoie un nombre correspondant la position de chane2
dans chane1. Si chane2 nest pas comprise dans chane1,
la fonction renvoie zro.
-Modulo
: Cette fonction permet de rcuprer le reste de la division
dun nombre par un deuxime nombre.

0021266950863 :Tel

74

Exemples
Exemples ::
Len("Bonjour, a va ?")

vaut

16

Len("")

vaut

Mid("Zorro is back", 4, 7)

vaut

"ro is b"

Mid("Zorro is back", 12, 1)

vaut

"c"

Left("Et pourtant", 8)

vaut

"Et pourt"

Right("Et pourtant", 4)

vaut

"t

Trouve("Un pur bonheur", "pur")

vaut

Trouve("Un pur bonheur", "techno")

vaut

A Mod(10,3)

A vaut 1 car 10 = 3*3 + 1

B Mod(12,2)

B vaut 0 car 12 = 6*2

C 0021266950863
Mod(44,8) :Tel

C vaut 4 car 44 = 5*8 + 4

75

Les
Les fichiers
fichiers
1. Utilit des fichiers
Jusqu prsent, les informations utilises dans nos programmes ne
pouvaient provenir que de deux sources :
soit elles taient inclues dans lalgorithme lui-mme, par le programmeur,
soit elles taient entres en cours de route par lutilisateur. Mais videmment,
cela ne suffit pas combler les besoins rels des informaticiens.

Imaginons que lon veut crire un programme grant un carnet dadresses. Dune
excution du programme lautre, lutilisateur doit pouvoir retrouver son carnet jour,
avec les modifications quil y a apportes la dernire fois quil a excut le programme.
Les donnes du carnet dadresse ne peuvent donc tre inclues dans lalgorithme,
0021266950863
:Tel au clavier chaque nouvelle excution !
et encore moins
tre entres

76

Les
Les fichiers
fichiers
1. Utilit des fichiers
Les fichiers sont l pour combler ce manque. Ils servent stocker des informations
de manire permanente, entre deux excutions dun programme. Car si les variables,
qui sont je le rappelle des adresses de mmoire vive, disparaissent chaque fin
dexcution, les fichiers, eux sont stocks sur des priphriques mmoire de
masse (disquette, disque dur, CD Rom).

0021266950863 :Tel

77

Les
Les fichiers
fichiers
2. Structure des enregistrements
Reprenons le cas du carnet dadresses, avec dedans le nom, le prnom, le tlphone
et l'email. Les donnes, sur le fichier texte, peuvent tre organises ainsi :
Structure n1
"Fonfec";"Sophie";0142156487;"fonfec@yahoo.fr"
"Ztofrais";"Mlanie";0456912347;"ztofrais@free.fr"
"Herbien";"Jean-Philippe";0289765194;"vantard@free.fr"
"Hergbel";"Octave";0149875231;"rg@aol.fr"

dlimite

ou ainsi :
Structure n2
Fonfec
Ztofrais
Herbien
Hergbel

Sophie
0142156487fonfec@yahoo.fr
Mlanie
0456912347ztofrais@free.fr
Jean-Philippe 0289765194vantard@free.fr
Octave
0149875231rg@aol.fr
0021266950863 :Tel

champs de largeur fixe

78

Les
Les fichiers
fichiers
2. Structure des enregistrements
La structure n1 est dite dlimite ; Elle utilise un caractre spcial, appel caractre de
dlimitation, qui permet de reprer quand finit un champ et quand commence le suivant.

La structure n2, elle, est dite champs de largeur fixe. Il ny a pas de caractre de
dlimitation, mais on sait que les x premiers caractres de chaque ligne stockent le nom,
les y suivants le prnom, etc. Cela impose bien entendu de ne pas saisir un renseignement
plus long que le champ prvu pour laccueillir.

0021266950863 :Tel

79

Les
Les fichiers
fichiers
2. Structure des enregistrements

Lavantage de la structure n1 : elle occupe le minimum de place possible.


Linconvnient : la lenteur de la lecture.

Lavantage de la structure n2 : la rcupration des diffrents champs est trs rapide


Linconvnient : gaspille de la place mmoire

0021266950863 :Tel

80

Les
Les fichiers
fichiers
3. Types daccs
Laccs squentiel : on ne peut accder qu la donne suivant celle quon vient de lire.
Dans le cas d'un fichier texte, cela signifie qu'on lit le fichier ligne par ligne.
Laccs direct (ou alatoire) : on peut accder directement lenregistrement de son
choix, en prcisant le numro de cet enregistrement. Mais cela veut souvent dire une
gestion fastidieuse des dplacements dans le fichier.
Laccs index : pour simplifier, il combine la rapidit de l'accs direct et la simplicit
de l'accs squentiel (en restant toutefois plus compliqu). Il est particulirement
adapt au traitement des gros fichiers, comme les bases de donnes importantes.

0021266950863 :Tel

81

Les
Les fichiers
fichiers
4. Instructions
Si on veut travailler sur un fichier, la premire chose faire est de louvrir. Cela se fait
en attribuant au fichier un numro de canal. On ne peut ouvrir quun seul fichier par canal,
Limportant est que lorsquon ouvre un fichier, on stipule ce quon va en faire : lire, crire.

Pour ouvrir un fichier texte, on crira par exemple :


Ouvrir c:\Exemple.txt" sur 4 en Lecture

0021266950863 :Tel

82

exemple
exemple
Variables Truc, Nom, Prnom, Tel, Mail en Caractres
Dbut
Ouvrir "Exemple.txt" sur 4 en Lecture
LireFichier 4, Truc
Nom Mid(Truc, 1, 20)
Prnom Mid(Truc, 21, 15)
Tel Mid(Truc, 36, 10)
Mail Mid(Truc, 46, 20)
Ecrire( Le nom est : ,Nom)
Ecrire( Le nom est : , Prnom )
Ecrire( Le nom est : , Tel)
Ecrire( Le nom est : , Mail)
Fermer 4
Dbut
Cet algorithme affiche la premire ligne dun carnet dadresses.

0021266950863 :Tel

83

exemple
exemple
Variables Truc, Nom, Prnom, Tel, Mail en Caractres
Dbut
Ouvrir "Exemple.txt" sur 4 en Lecture
Tantque Non EOF(5)
LireFichier 4, Truc
Nom Mid(Truc, 1, 20)
Prnom Mid(Truc, 21, 15)
Tel Mid(Truc, 36, 10)
Mail Mid(Truc, 46, 20)
Ecrire( Le nom est : ,Nom)
Ecrire( Le nom est : , Prnom )
Ecrire( Le nom est : , Tel)
Ecrire( Le nom est : , Mail)
FinTantQue
Fermer 4
Dbut
Cet algorithme affiche toutes les lignes dun carnet dadresses.

0021266950863 :Tel

84

exemple
exemple
Variables Nom * 20, Prnom * 17, Tel * 10, Mail * 20, Lig en Caractre
Dbut
crire ("Entrez le nom : ")
Lire (Nom)
crire ("Entrez le prnom : ")
Lire (Prnom)
crire ("Entrez le tlphone : ")
Lire (Tel)
crire ("Entrez le nom : ")
Lire (Mail)
Lig Nom & Prnom & Tel & Mail
Ouvrir "Adresse.txt" sur 1 pour Ajout
EcrireFichier 1, Lig
Fermer 1
Fin
Cet algorithme permet lutilisateur de saisir au clavier un nouvel
individu qui sera ajout dans un carnet dadresses.
0021266950863 :Tel

85

exemple
exemple
Tableaux Nom(), Prnom(), Tel(), Mail() en Caractre
Dbut
Ouvrir "Exemple.txt" sur 5 en Lecture
i -1
Tantque Non EOF(5)
LireFichier 5, Truc
i i + 1
Redim Nom(i+1)
Redim Prnom(i+1)
Redim Tel(i+1)
Redim Mail(i+1)
Nom(i) Mid(Truc, 1, 20)
Prnom(i) Mid(Truc, 21, 15)
Tel(i) Mid(Truc, 36, 10)
Mail(i) Mid(Truc, 46, 20)
FinTantQue
Fermer 5
Fin
Cet algorithme charge toutes les lignes dun carnet dadresses dans 4 tableaux
0021266950863 :Tel

86

exercice
exercice

crire un algorithme qui gre un carnet


dadresses. Puis on le codifie sous java.

0021266950863 :Tel

87

Des Questions ?
0021266950863 :Tel

88

Proc
dures et
Procdures
et Fonctions
Fonctions
1. De quoi s'agit-il
Une application, surtout si elle est longue, a toutes les chances de devoir procder aux mmes traitements.
Par exemple, la saisie dune rponse par oui ou par non (et le contrle quelle implique), peuvent tre
rpts dix fois des moments diffrents de la mme application
La manire la plus vidente est de rpter le code correspondant autant de fois que ncessaire.
si la structure d'un programme crit de cette manire peut paratre simple mais Elle contient des rptitions
en cas de modification du code, il va falloir traquer toutes les apparitions de ce code pour faire la modification
Il faut donc opter pour une autre stratgie, qui consiste sparer ce traitement du corps du programme et
appeler ce traitement en cas de besoin.
il suffit de faire une seule modification au bon endroit, pour que cette modification prenne effet dans
la totalit de lapplication.

0021266950863 :Tel

89

exemple
exemple
prenons un exemple de question laquelle lutilisateur doit rpondre par oui ou par non.

Mauvaise Structure :
Ecrire "Etes-vous mari ?"
Rep1 := ""
TantQue Rep1 <> "Oui" et Rep1 <> "Non"
Ecrire ("Tapez Oui ou Non ")
Lire Rep1
FinTantQue
Ecrire ("Avez-vous des enfants ?")
Rep2 := ""
TantQue Rep2 <> "Oui" et Rep2 <> "Non"
Ecrire "Tapez Oui ou Non"
Lire Rep2
FinTantQue
0021266950863 :Tel

90

exemple
exemple

La solution consiste isoler les instructions demandant une rponse par Oui ou Non, et appeler ces
instructions chaque fois que ncessaire. Ainsi, on vite les rptitions inutiles, et on a dcoup notre
problme en petits morceaux autonomes.
Nous allons donc crer une fonction dont le rle sera de renvoyer la rponse (oui ou non) de l'utilisateur.
Ce mot de "fonction", ne doit pas nous surprendre : nous avons tudi prcdemment des
fonctions fournies avec le langage, et nous avons vu que le but d'une fonction tait de renvoyer une valeur.
Eh bien, c'est exactement la mme chose ici, sauf que c'est nous qui allons crer notre propre fonction,
que nous appellerons RepOuiNon :

Rep1,Rep2 en caractre
Fonction RepOuiNon() en caractre
Truc ""
TantQue Truc <> "Oui" et Truc <> "Non"
Ecrire "Tapez Oui ou Non"
Lire Truc
FinTantQue
Renvoyer Truc
Fin
Dbut

Ecrire "Etes-vous mari ?"


Rep1 RepOuiNon()
Ecrire "Avez-vous des enfants ?"
Rep2 RepOuiNon()

0021266950863
Fin :Tel

91

Proc
dures et
Procdures
et Fonctions
Fonctions
2. Passage d'arguments
Reprenons lexemple qui prcde et analysons-le. Nous crivons un message l'cran,
puis appelons la fonction RepOuiNon pour poser une question ; puis, un peu plus loin,
on crit un autre message l'cran, et on appelle de nouveau la fonction pour poser
la mme question, etc. Cest une dmarche acceptable, mais qui peut encore tre
amliore : puisque avant chaque question, on doit crire un message, autant que
cette criture du message figure directement dans la fonction appele.
Cela implique deux choses :

==> Lorsquon appelle la fonction, on doit lui prciser quel message elle doit afficher avant
de lire la rponse
==> la fonction doit tre prvenue quelle recevra un message, et tre capable de
le rcuprer pour lafficher.

0021266950863 :Tel

92

Proc
dures et
Procdures
et Fonctions
Fonctions
En langage algorithmique, on dira que le message devient un argument de la fonction. Cela n'est pas
une dcouverte pour vous : nous avons utilis les arguments propos des fonctions prdfinies

La fonction sera dornavant dclare comme suit :

Rep1,Rep2 en caractre
Fonction RepOuiNon(Msg en Caractre ) en caractre
Truc ""

Ecrire ()

TantQue Truc <> "Oui" et Truc <> "Non"


Ecrire "Tapez Oui ou Non"
Lire Truc
FinTantQue
Renvoyer Truc
Fin
Dbut

Fin

Rep1 RepOuiNon("Etes-vous
Rep2 RepOuiNon("Avez-vous

0021266950863 :Tel

mari ?" )
des enfants ?" )

93

Rep1, Rep2, Rep3, Rep4 en chane de caractre


dbut

Ecrire "Etes-vous mari(e) ?"


Lire Rep1
Ecrire ("Avez-vous des enfants ?")
Lire Rep2
Ecrire (" Etes-vous tudiant(e) ? ?")
Lire Rep3
Ecrire (" Etes-vous un homme?")
Lire Rep4
.
.
.
.
Fin

0021266950863 :Tel

94

Rep1, Rep2, Rep3, Rep4 en chane de caractre


dbut
Rep1, Rep2, Rep3, Rep4 en chane de caractre

dbut

Ecrire "Etes-vous mari(e) ?"


Lire Rep1
Ecrire ("Avez-vous des enfants ?")
Lire Rep2
Ecrire (" Etes-vous tudiant(e) ?")
Lire Rep3
Ecrire (" Etes-vous un homme ?")
Lire Rep4
.
.
.
.
Fin

0021266950863 :Tel

Ecrire "Etes-vous mari(e) ?"


Rpter
Ecrire ("Tapez Oui ou Non ")
Lire Rep1
TantQue Rep1 <> "Oui" et Rep1 <> "Non"
Ecrire ("Avez-vous des enfants ?")
Rpter
crire ("Tapez Oui ou Non ")
Lire Rep2
TantQue Rep2 <> "Oui" et Rep2 <> "Non"
Ecrire (" Etes-vous tudiant(e) ? ?")
Rpter
crire ("Tapez Oui ou Non ")
Lire Rep3
TantQue Rep3 <> "Oui" et Rep3 <> "Non"
Ecrire (" ts-vous un homme?")
Rpter
crire ("Tapez Oui ou Non ")
Lire Rep4
TantQue Rep4 <> "Oui" et Rep4 <> "Non"
Fin

95

Rep1, Rep2, Rep3, Rep4 en chane de caractre


dbut
Ecrire "Etes-vous mari(e) ?"
Rpter
Ecrire ("Tapez Oui ou Non ")
Lire Rep1
TantQue Rep1 <> "Oui" et Rep1 <> "Non"
Ecrire ("Avez-vous des enfants ?")
Rpter
crire ("Tapez Oui ou Non ")
Lire Rep2
TantQue Rep2 <> "Oui" et Rep2 <> "Non"

Rep,Rep1, Rep2, Rep3, Rep4 en chane de


caractre
Fonction RepOuiNon() en caractre
TantQue Rep <> "Oui" et Rep <> "Non"
Ecrire "Tapez Oui ou Non"
Lire Rep
FinTantQue
Renvoyer Rep
Fin
Dbut

Ecrire (" Etes-vous tudiant(e) ? ?")


Rpter
crire ("Tapez Oui ou Non ")
Lire Rep3
TantQue Rep3 <> "Oui" et Rep3 <> "Non"
Ecrire (" ts-vous un homme?")
Rpter
crire ("Tapez Oui ou Non ")
Lire Rep4
TantQue Rep4 <> "Oui" et Rep4 <> "Non"
Fin

0021266950863 :Tel

Ecrire "Etes-vous mari ?"


Rep1 RepOuiNon()
Ecrire "Avez-vous des enfants ?"
Rep2 RepOuiNon()
Ecrire (" Etes-vous tudiant(e) ?")
Rep3 RepOuiNon()

Fin

Ecrire (" Etes-vous un homme ?")


Rep4 RepOuiNon()
96

Rep,Rep1, Rep2, Rep3, Rep4 en chane de


caractre
Fonction RepOuiNon() en caractre
TantQue Rep <> "Oui" et Rep <> "Non"
Ecrire "Tapez Oui ou Non"
Lire Rep
FinTantQue
Renvoyer Rep
Fin
Dbut

Ecrire "Etes-vous mari ?"


Rep1 RepOuiNon()
Ecrire "Avez-vous des enfants ?"
Rep2 RepOuiNon()

Rep,Rep1, Rep2, Rep3, Rep4 en chane de caractre


Fonction RepOuiNon(Msg en Caractre ) en caractre

Ecrire(Msg)
TantQue Rep <> "Oui" et Rep <> "Non"
Ecrire "Tapez Oui ou Non"
Lire Rep
FinTantQue
Renvoyer Rep
Fin
Dbut

Ecrire (" Etes-vous tudiant(e) ?")


Rep3 RepOuiNon()

Fin

Ecrire (" Etes-vous un homme ?")


Rep4 RepOuiNon()
0021266950863 :Tel

Fin

Rep1 RepOuiNon("Etes-vous mari ?" )


Rep2 RepOuiNon("Avez-vous des enfants ?" )
Rep3 RepOuiNon(" Etes-vous tudiant(e)? " )
Rep4 RepOuiNon(" Etes-vous un homme?"

97

Exercice 11.1
crivez une fonction qui renvoie la somme de trois nombres fournis en argument.

Exercice 11.2
crivez une fonction qui renvoie le nombre de voyelles contenues dans une chane
de caractres passe en argument. Au passage, notez qu'une fonction a tout fait
le droit d'appeler une autre fonction.

0021266950863 :Tel

98

Fonction RepOuiNon(val1, val2, val3 en Caractre )


en caractre
Tot = val1, val2, val3
Renvoyer Tot
Fin
Fonction NbVoyelles(Mot en Caractre)
Variables i, nb en Numrique
Pour i Allant de 1 Len(Mot)
Si Trouve("aeiouy", Mid(Mot, i, 1)) <> 0 Alors
nb nb + 1
FinSi
FinPour
Renvoyer nb
0021266950863
:Tel
FinFonction

99

Des Questions ?
0021266950863 :Tel

100

Des exercices
suppl
mentaires ?
supplmentaires
0021266950863 :Tel

101

Exercice
Exercice 11
Recopier une phrase dans une autre en tant toutes les occurrences dun caractre
Soit une phrase termine par un point.
Il s'agit de la restituer en supprimant les occurrences d'un caractre donn.
Exemple :
phrase :abbcccdeeeffg
caractre :
c
rsultat :
abbdeeeffg
Donnez le jeu d'essai qui permet de tester cette procdure.
Donnez l'algorithme de la procdure en pseudo code.

0021266950863 :Tel

102

Exercice
Exercice 22
Recopier une phrase dans une autre en tant tous les doublons de caractres successifs
Soit une phrase termine par un point.
Il s'agit de la restituer en supprimant tous les doublons de caractres successifs.
Exemple : abbcccdeeeffg.
donne
abcdefg.
Donnez le jeu d'essai qui permet de tester cette procdure.
Pour tester le programme, c'est dire voir s'il rpond bien nos attentes, s'il n'a pas
de "bug", avant de la faire "tourner" sur la machine nous imaginons un jeu d'essai avec
tous les cas tester et le rsultat attendu pour chaque cas : c'est le jeu d'essai.

Donnez l'algorithme de la procdure.

0021266950863 :Tel

103

Exercice
Exercice 33
Dterminer si deux phrases sont quivalentes.
Soit deux phrases termines par un mme terminateur.
Elles sont dites quivalentes si elles ont les mmes lettres dans le mme ordre mais
avec un nombre d'occurrences de ces lettres qui peut diffrer entre les deux phrases.
On supposera qu'il existe une fonction longueur lg de chane qui renvoie un entier
Exemple :

abbcccdeeeffg
aabcdeffffg
sont quivalentes
Donnez le jeu d'essai qui permet de tester cette procdure.
Donnez l'algorithme de la procdure toujours en pseudo code.

0021266950863 :Tel

104

Exercice
Exercice 44
Chercher les lettres dun mot parpilles dans une phrase, dans le mme ordre.
Soient un caractre terminateur et une phrase termine par ce caractre terminateur.
Soient un mot donn
Il s'agit de vrifier si les lettres du mot sont bien prsentes dans la phrase, ce dans
le mme ordre que celui du mot.
Exemple :
terminateur : .
phrase :le chat est gris et boit.
mot : lattis
longueur :
6
donne vrai
Donnez l'algorithme de la procdure en pseudo code.

0021266950863 :Tel

105

Exercice
Exercice 55
Effectuer la saisie d'une chane de caractres qui contiendra un nom et un prnom.
Les prnoms composs seront obligatoirement spars par des tirets.
Afficher une chane de caractres sous forme prnom nom spars par un espace,
en ayant fait disparatre les tirets saisis dans le prnom.
Ecrire la procdure en pseudo-code (ventuellement ensuite avec un langage).
Ne pas utiliser les instructions de type concatnation et recherche d'un caractre
dans une chane.

0021266950863 :Tel

106

Exercice
Exercice 66

Dterminer si une chane de caractres est un palindrome.


Un palindrome est une phrase qui peut se lire dans les deux sens.
Les espaces sont ignors.
Exemple :
esope reste ici et se repose.
Le terminateur est ici un point.
Donnez l'algorithme du programme.

0021266950863 :Tel

107

Exercice
Exercice 77
Crypter une phrase en codant les lettres en fonction du mot o elles se trouvent.
Soit une phrase termine par un point.
Les espaces sont des sparateurs de mot et sont transcrits sans modification.
Il s'agit de la crypter en codant chaque mot suivant son rang dans la phrase.
Au mot de rang 1, on crypte ses lettres avec les lettres qui suivent dans l'alphabet.
Au mot de rang 2, on crypte ses lettres avec les lettres qui suivent de 2 caractres
dans l'alphabet. etc ...
Par convention, la lettre suivant le caractre Z est le caractre A.
Les espaces sont des sparateurs de mot et sont transcrits sans modification.
Exemple :
Phrase :
LE CHAT EST GRIS .
Rang :
1 2
3
4
Rsultat : MF EJCV HVW KVMW.

0021266950863 :Tel

108

Exercice
Exercice 88
Compter le nombre de mots dune phrase ayant une terminaison donne.
Soit une phrase termine par un point.
Les espaces sont des sparateurs de mot.
Il s'agit de donner le nombre de mots de la phrase ayant pour terminaison la chane
intitule terminaison.
Exemple :
Caractre final : .
Phrase :
rien ne sert de courir il faut partir point il ne faut pas rire.
Terminaison :
rir
Rsultat : 1
Note : les terminaisons de longueur nulle indiquent la procdure qu'il faut renvoyer
le nombre de mots de la phrase.
Ecrire la procdure en pseudo code

0021266950863 :Tel

109

Exercice
Exercice 99
Le programme ralise l'addition de deux donnes exprimes en HH :MM:SS et affiche
le rsultat sous la mme forme.

Exercice
Exercice 10
10
crire le programme du jeu du pendu.
Le principe est le suivant :
Un premier joueur choisit un mot de moins de 10 lettres.
Le programme affiche _ _ _ _ _ _ _ avec un _ par lettre.
Le deuxime joueur propose des lettres jusqu' ce qu'il ait trouv le mot ou qu'il soit
pendu (11 erreurs commises).
A chaque proposition le programme raffiche le mot avec les lettres dcouvertes ainsi
que les lettres dj annonces et le nombre d'erreurs.
En deuxime partie:
Rcrire le jeu du pendu en utilisant des fonctions et/ou procdures.

0021266950863 :Tel

110

Vous aimerez peut-être aussi