0% ont trouvé ce document utile (0 vote)
65 vues59 pages

Algorithmique

Ce document contient de nombreux exercices d'algorithmique répartis en onze parties, avec pour chacun un énoncé et sa correction. Les exercices portent sur des sujets variés comme la manipulation de variables, les opérations arithmétiques et logiques, les boucles et les chaînes de caractères.

Transféré par

Jecolia Tiéléo
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
65 vues59 pages

Algorithmique

Ce document contient de nombreux exercices d'algorithmique répartis en onze parties, avec pour chacun un énoncé et sa correction. Les exercices portent sur des sujets variés comme la manipulation de variables, les opérations arithmétiques et logiques, les boucles et les chaînes de caractères.

Transféré par

Jecolia Tiéléo
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

1

ALGORITHMIQUE ExerciceS

Sommaire
PARTIE 1 Enonce des Exercices .............................................................................................. 2
Corrigés des Exercices ............................................................................................................ 3
PARTIE 2 Enonce des Exercices ............................................................................................... 6
Corrigés des Exercices ............................................................................................................ 6
PARTIE 3 Enonce des Exercices ............................................................................................... 7
Corrigés des Exercices ............................................................................................................ 8
PARTIE 4 Enonce des Exercices ............................................................................................. 10
Corrigés des Exercices .......................................................................................................... 12
PARTIE 5 Enonce des Exercices ............................................................................................. 18
Corrigés des Exercices .......................................................................................................... 20
PARTIE 6 Enonce des Exercices ............................................................................................. 24
Corrigés des Exercices .......................................................................................................... 27
PARTIE 7 Enonce des Exercices ............................................................................................. 31
Corrigés des Exercices .......................................................................................................... 32
PARTIE 8 Enonce des Exercices ............................................................................................. 35
Corrigés des Exercices .......................................................................................................... 37
PARTIE 9 Enoncé des Exercices ............................................................................................. 41
Corrigés des Exercices .......................................................................................................... 44
PARTIE 10 Enoncé des Exercices ........................................................................................... 48
Corrigés des Exercices .......................................................................................................... 50
PARTIE 11 Enoncé des Exercices ........................................................................................... 55
Corrigés des Exercices .......................................................................................................... 56

www.tri.on.ma
2

PARTIE 1 Enonce des Exercices


Exercice 1.1

Quelles seront les valeurs des variables A et B après exécut ion des inst ruct ions suivant es ?
Variables A, B en Entier
Début
A ← 1
B ← A + 3
A ← 3
Fin

Exercice 1.2

Quelles seront les valeurs des variables A, B et C après exécut ion des inst ruct ions suivant es ?
Variables A, B, C en Entier
Début
A ← 5
B ← 3
C ← A + B
A ← 2
C ← B – A
Fin

Exercice 1.3

Quelles seront les valeurs des variables A et B après exécut ion des inst ruct ions suivant es ?
Variables A, B en Entier
Début
A ← 5
B ← A + 4
A ← A + 1
B ← A – 4
Fin

Exercice 1.4

Quelles seront les valeurs des variables A, B et C après exécut ion des inst ruct ions suivant es ?
Variables A, B, C en Entier
Début
A ← 3
B ← 10
C ← A + B
B ← A + B
A ← C
Fin

Exercice 1.5

Quelles seront les valeurs des variables A et B après exécut ion des inst ruct ions suivant es ?

www.tri.on.ma
3

Variables A, B en Entier
Début
A ← 5
B ← 2
A ← B
B ← A
Fin

Moralit é : les deux dernières inst ruct ions permet t ent -elles d’ échanger les deux valeurs de B et A ? Si
l’ on inverse les deux dernières inst ruct ions, cela change-t -il quelque chose ?

Exercice 1.6

Plus difficile, mais c’ est un classique absolu, qu’ il faut absolument maît riser : écrire un algorit hme
permet t ant d’ échanger les valeurs de deux variables A et B, et ce quel que soit leur cont enu
préalable.

Exercice 1.7

Une variant e du précédent : on dispose de t rois variables A, B et C. Ecrivez un algorit hme


t ransférant à B la valeur de A, à C la valeur de B et à A la valeur de C (t ouj ours quels que soient les
cont enus préalables de ces variables).

Exercice 1.8

Que produit l’ algorit hme suivant ?


Variables A, B, C en Caractères
Début
A ← "423"
B ← "12"
C ← A + B
Fin

Exercice 1.9

Que produit l’ algorit hme suivant ?


Variables A, B, C en Caractères
Début
A ← "423"
B ← "12"
C ← A & B
Fin

Corrigés des Exercices

www.tri.on.ma
4

Exercice 1.1
Après La valeur des variables est :
A ← 1 A = 1 B = ?
B ← A + 3 A = 1 B = 4
A ← 3 A = 3 B = 4

Exercice 1.2
Après La valeur des variables est :
A ← 5 A = 5 B = ? C = ?
B ← 3 A = 5 B = 3 C = ?
C ← A + B A = 5 B = 3 C = 8
A ← 2 A = 2 B = 3 C = 8
C ← B – A A = 2 B = 3 C = 1

Exercice 1.3
Après La valeur des variables est :
A ← 5 A = 5 B = ?
B ← A + 4 A = 5 B = 9
A ← A + 1 A = 6 B = 9
B ← A – 4 A = 6 B = 2

Exercice 1.4
Après La valeur des variables est :
A ← 3 A = 3 B = ? C = ?
B ← 10 A = 3 B = 10 C = ?
C ← A + B A = 3 B = 10 C = 13
B ← A + B A = 3 B = 13 C = 13
A ← C A = 13 B = 13 C = 13

Exercice 1.5
Après La valeur des variables est :
A ← 5 A = 5 B = ?
B ← 2 A = 5 B = 2
A ← B A = 2 B = 2
B ← A A = 2 B = 2
Les deux dernières inst ruct ions ne permet t ent donc pas d’ échanger les deux valeurs de B et A,
puisque l’ une des deux valeurs (celle de A) est ici écrasée.
Si l’ on inverse les deux dernières inst ruct ions, cela ne changera rien du t out , hormis le fait que
cet t e fois c’ est la valeur de B qui sera écrasée.

Exercice 1.6
Début

C ← A
A ← B
B ← C
Fin
On est obligé de passer par une variable dit e t emporaire (la variable C).

Exercice 1.7
Début

D ← C
C ← B

www.tri.on.ma
5

B ← A
A ← D
Fin
En fait , quel que soit le nombre de variables, une seule variable t emporaire suffit …

Exercice 1.8
Il ne peut produire qu’ une erreur d’ exécut ion, puisqu’ on ne peut pas addit ionner des caract ères.

Exercice 1.9
…En revanche, on peut les concat éner. A la fin de l’ algorit hme, C vaudra donc "42312".

www.tri.on.ma
6

PARTIE 2
Enonce des Exercices
Exercice 2.1

Quel résult at produit le programme suivant ?


Variables val, double numériques
Début
Val ← 231
Double ← Val * 2
Ecrire Val
Ecrire Double
Fin

Exercice 2.2

Ecrire un programme qui demande un nombre à l’ ut ilisat eur, puis qui calcule et affiche le carré de
ce nombre.

Exercice 2.3

Ecrire un programme qui lit le prix HT d’ un art icle, le nombre d’ art icles et le t aux de TVA, et qui
fournit le prix t ot al TTC correspondant . Faire en sort e que des libellés apparaissent clairement .
-

Exercice 2.4

Ecrire un algorit hme ut ilisant des variables de t ype chaîne de caract ères, et affichant quat re
variant es possibles de la célèbre « belle marquise, vos beaux yeux me font mourir d’ amour ». On ne
se soucie pas de la ponct uat ion, ni des maj uscules.

Corrigés des Exercices


Exercice 2.1

www.tri.on.ma
7

On verra apparaît re à l’ écran 231, puis 462 (qui vaut 231 * 2)

Exercice 2.2
Variables nb, carr en Entier
Début
Ecrire "Entrez un nombre :"
Lire nb
carr ← nb * nb
Ecrire "Son carré est : ", carr
Fin
En fait , on pourrait t out aussi bien économiser la variable carr en remplaçant les deux avant -
dernières lignes par :
Ecrire "Son carré est : ", nb*nb
C'est une quest ion de st yle ; dans un cas, on privilégie la lisibilit é de l'algorit hme, dans l'aut re, on
privilégie l'économie d'une variable.

Exercice 2.3
Variables nb, pht, ttva, pttc en Numérique
Début
Ecrire "Entrez le prix hors taxes :"
Lire pht
Ecrire "Entrez le nombre d’articles :"
Lire nb
Ecrire "Entrez le taux de TVA :"
Lire ttva
pttc ← nb * pht * (1 + ttva)
Ecrire "Le prix toutes taxes est : ", pttc
Fin
Là aussi, on pourrait squeezer une variable et une ligne en écrivant direct ement . :
Ecrire "Le prix toutes taxes est : ", nb * pht * (1 + ttva)
C'est plus rapide, plus léger en mémoire, mais un peu plus difficile à relire (et à écrire !)

Exercice 2.4
Variables t1, t2, t3, t4 en Caractère
Début
t1 ← "belle Marquise"
t2 ← "vos beaux yeux"
t3 ← "me font mourir"
t4 ← "d’amour"
Ecrire t1 & " " & t2 & " " & t3 & " " & t4
Ecrire t3 & " " & t2 & " " & t4 & " " & t1
Ecrire t2 & " " & t3 & " " & t1 & " " & t4
Ecrire t4 & " " & t1 & " " & t2 & " " & t3
Fin

PARTIE 3
Enonce des Exercices
Exercice 3.1

Ecrire un algorit hme qui demande un nombre à l’ ut ilisat eur, et l’ informe ensuit e si ce nombre est
posit if ou négat if (on laisse de côt é le cas où le nombre vaut zéro).

www.tri.on.ma
8

Exercice 3.2

Ecrire un algorit hme qui demande deux nombres à l’ ut ilisat eur et l’ informe ensuit e si leur produit
est négat if ou posit if (on laisse de côt é le cas où le produit est nul). At t ent ion t out efois : on ne doit
pas calculer le produit des deux nombres.

Exercice 3.3

Ecrire un algorit hme qui demande t rois noms à l’ ut ilisat eur et l’ informe ensuit e s’ ils sont rangés ou
non dans l’ ordre alphabét ique.

Exercice 3.4

Ecrire un algorit hme qui demande un nombre à l’ ut ilisat eur, et l’ informe ensuit e si ce nombre est
posit if ou négat if (on inclut cet t e fois le t rait ement du cas où le nombre vaut zéro).

Exercice 3.5

Ecrire un algorit hme qui demande deux nombres à l’ ut ilisat eur et l’ informe ensuit e si le produit est
négat if ou posit if (on inclut cet t e fois le t rait ement du cas où le produit peut êt re nul). At t ent ion
t out efois, on ne doit pas calculer le produit !

Exercice 3.6

Ecrire un algorit hme qui demande l’ âge d’ un enfant à l’ ut ilisat eur. Ensuit e, il l’ informe de sa
cat égorie :

• "Poussin" de 6 à 7 ans
• "Pupille" de 8 à 9 ans
• "Minime" de 10 à 11 ans
• "Cadet " après 12 ans

Peut -on concevoir plusieurs algorit hmes équivalent s menant à ce résult at ?

Corrigés des Exercices


Exercice 3.1
Variable n en Entier
Début
Ecrire "Entrez un nombre : "
Lire n
Si n > 0 Alors
Ecrire "Ce nombre est positif”

www.tri.on.ma
9

Sinon
Ecrire "Ce nombre est négatif"
Finsi
Fin

Exercice 3.2
Variables m, n en Entier
Début
Ecrire "Entrez deux nombres : "
Lire m, n
Si (m > 0 ET n > 0) OU (m < 0 ET n < 0) Alors
Ecrire "Leur produit est positif"
Sinon
Ecrire "Leur produit est négatif"
Finsi
Fin

Exercice 3.3
Variables a, b, c en Caractère
Début
Ecrire "Entrez successivement trois noms : "
Lire a, b, c
Si a < b ET b < c Alors
Ecrire "Ces noms sont classés alphabétiquement"
Sinon
Ecrire "Ces noms ne sont pas classés"
Finsi
Fin

Exercice 3.4
Variable n en Entier
Début
Ecrire "Entrez un nombre : "
Lire n
Si n < 0 Alors
Ecrire "Ce nombre est négatif"
SinonSi n = 0 Alors
Ecrire "Ce nombre est nul"
Sinon
Ecrire "Ce nombre est positif"
Finsi
Fin

Exercice 3.5
Variables m, n en Entier
Début
Ecrire "Entrez deux nombres : "
Lire m, n
Si m = 0 OU n = 0 Alors
Ecrire "Le produit est nul"
SinonSi (m < 0 ET n < 0) OU (m > 0 ET n > 0) Alors
Ecrire "Le produit est positif"
Sinon
Ecrire "Le produit est négatif"

www.tri.on.ma
10

Finsi
Fin
Si on souhait e simplifier l’ écrit ure de la condit ion lourde du SinonSi, on peut t ouj ours passer par des
variables booléennes int ermédiaires. Une ast uce de sioux consist e également à employer un Xor
(c'est l'un des rares cas dans lesquels il est pert inent )

Exercice 3.6
Variable age en Entier
Début
Ecrire "Entrez l’âge de l’enfant : "
Lire age
Si age >= 12 Alors
Ecrire "Catégorie Cadet"
SinonSi age >= 10 Alors
Ecrire "Catégorie Minime"
SinonSi age >= 8 Alors
Ecrire "Catégorie Pupille"
SinonSi age >= 6 Alors
Ecrire "Catégorie Poussin"
Finsi
Fin
On peut évidemment écrire cet algorit hme de différent es façons, ne serait -ce qu’ en commençant
par la cat égorie la plus j eune.

PARTIE 4
Enonce des Exercices
Exercice 4.1

Formulez un algorit hme équivalent à l’ algorit hme suivant :

www.tri.on.ma
11

Si Tutu > Toto + 4 OU Tata = "OK" Alors


Tutu ← Tutu + 1
Sinon
Tutu ← Tutu – 1
Finsi

Exercice 4.2

Cet algorit hme est dest iné à prédire l'avenir, et il doit êt re infaillible !
Il lira au clavier l’ heure et les minut es, et il aff ichera l’ heure qu’ il sera une minut e plus t ard. Par
exemple, si l'ut ilisat eur t ape 21 puis 32, l'algorit hme doit répondre :
"Dans une minut e, il sera 21 heure(s) 33".
NB : on suppose que l'ut ilisat eur ent re une heure valide. Pas besoin donc de la vérifier.

Exercice 4.3

De même que le précédent , cet algorit hme doit demander une heure et en afficher une aut re. Mais
cet t e fois, il doit gérer également les secondes, et afficher l'heure qu'il sera une seconde plus t ard.
Par exemple, si l'ut ilisat eur t ape 21, puis 32, puis 8, l'algorit hme doit répondre : "Dans une seconde,
il sera 21 heure(s), 32 minut e(s) et 9 seconde(s)".
NB : là encore, on suppose que l'ut ilisat eur ent re une dat e valide.

Exercice 4.4

Un magasin de reprographie fact ure 0,10 E les dix premières phot ocopies, 0,09 E les vingt suivant es
et 0,08 E au-delà. Ecrivez un algorit hme qui demande à l’ ut ilisat eur le nombre de phot ocopies
effect uées et qui affiche la fact ure correspondant e.

Exercice 4.5

Les habit ant s de Zorglub paient l’ impôt selon les règles suivant es :

• les hommes de plus de 20 ans paient l’ impôt


• les femmes paient l’ impôt si elles ont ent re 18 et 35 ans
• les aut res ne paient pas d’ impôt

Le programme demandera donc l’ âge et le sexe du Zorglubien, et se prononcera donc ensuit e sur le
fait que l’ habit ant est imposable.

Exercice 4.6
Les élect ions législat ives, en Guignolerie Sept ent rionale, obéissent à la règle suivant e :

• lorsque l'un des candidat s obt ient plus de 50%des suffrages, il est élu dès le premier t our.
• en cas de deuxième t our, peuvent part iciper uniquement les candidat s ayant obt enu au
moins 12,5%des voix au premier t our.

www.tri.on.ma
12

Vous devez écrire un algorit hme qui permet t e la saisie des scores de quat re candidat s au premier
t our. Cet algorit hme t rait era ensuit e le candidat numéro 1 (et uniquement lui) : il dira s'il est élu,
bat t u, s'il se t rouve en ballot t age favorable (il part icipe au second t our en ét ant arrivé en t êt e à
l'issue du premier t our) ou défavorable (il part icipe au second t our sans avoir ét é en t êt e au premier
t our).

Exercice 4.7
Une compagnie d'assurance aut omobile propose à ses client s quat re familles de t arifs ident ifiables
par une couleur, du moins au plus onéreux : t arifs bleu, vert , orange et rouge. Le t arif dépend de la
sit uat ion du conduct eur :

• un conduct eur de moins de 25 ans et t it ulaire du permis depuis moins de deux ans, se voit
at t ribuer le t arif rouge, si t out efois il n'a j amais ét é responsable d'accident . Sinon, la
compagnie refuse de l'assurer.
• un conduct eur de moins de 25 ans et t it ulaire du permis depuis plus de deux ans, ou de plus
de 25 ans mais t it ulaire du permis depuis moins de deux ans a le droit au t arif orange s'il n'a
j amais provoqué d'accident , au t arif rouge pour un accident , sinon il est refusé.
• un conduct eur de plus de 25 ans t it ulaire du permis depuis plus de deux ans bénéficie du
t arif vert s'il n'est à l'origine d'aucun accident et du t arif orange pour un accident , du t arif
rouge pour deux accident s, et refusé au-delà
• De plus, pour encourager la fidélit é des client s accept és, la compagnie propose un cont rat
de la couleur immédiat ement la plus avant ageuse s'il est ent ré dans la maison depuis plus
d'un an.

Ecrire l'algorit hme permet t ant de saisir les données nécessaires (sans cont rôle de saisie) et de
t rait er ce problème. Avant de se lancer à corps perdu dans cet exercice, on pourra réfléchir un peu
et s'apercevoir qu'il est plus simple qu'il n'en a l'air (cela s'appelle faire une analyse !)

Exercice 4.8
Ecrivez un algorit hme qui a près avoir demandé un numéro de j our, de mois et d'année à
l'ut ilisat eur, renvoie s'il s'agit ou non d'une dat e valide.
Cet exercice est cert es d’ un manque d’ originalit é affligeant , mais après t out , en algorit hmique
comme ailleurs, il faut connaît re ses classiques ! Et quand on a fait cela une fois dans sa vie, on
apprécie pleinement l’ exist ence d’ un t ype numérique « dat e » dans cert ains langages…).
Il n'est sans dout e pas inut ile de rappeler rapidement que le mois de février compt e 28 j ours, sauf si
l’ année est bissext ile, auquel cas il en compt e 29. L’ année est bissext ile si elle est divisible par
quat re. Tout efois, les années divisibles par 100 ne sont pas bissext iles, mais les années divisibles
par 400 le sont . Ouf !
Un dernier pet it dét ail : vous ne savez pas, pour l’ inst ant , exprimer correct ement en pseudo-code
l’ idée qu’ un nombre A est divisible par un nombre B. Aussi, vous vous cont ent erez d’ écrire en bons
t élégraphist es que A divisible par B se dit « A dp B ».

Corrigés des Exercices


Exercice 4.1
Aucune difficult é, il suffit d’ appliquer la règle de la t ransformat ion du OU en ET vue en cours (loi de
Morgan). At t ent ion t out efois à la rigueur dans la t ransformat ion des condit ions en leur cont raire...

www.tri.on.ma
13

Si Tutu <= Toto + 4 ET Tata <> "OK" Alors


Tutu ← Tutu - 1
Sinon
Tutu ← Tutu + 1
Finsi

Exercice 4.2
Variables h, m en Numérique
Début
Ecrire "Entrez les heures, puis les minutes : "
Lire h, m
m ← m + 1
Si m = 60 Alors
m ← 0
h ← h + 1
FinSi
Si h = 24 Alors
h ← 0
FinSi
Ecrire "Dans une minute il sera ", h, "heure(s) ", m, "minute(s)"
Fin

Exercice 4.3
Variables h, m, s en Numérique
Début
Ecrire "Entrez les heures, puis les minutes, puis les secondes : "
Lire h, m, s
s ← s + 1
Si s = 60 Alors
s ← 0
m ← m + 1
FinSi
Si m = 60 Alors
m ← 0
h ← h + 1
FinSi
Si h = 24 Alors
h ← 0
FinSi
Ecrire "Dans une seconde il sera ", h, "h", m, "m et ", s, "s"
Fin
Exercice 4.4
Variables n, p en Numérique
Début
Ecrire "Nombre de photocopies : "
Lire n
Si n <= 10 Alors
p ← n * 0,1
SinonSi n <= 30 Alors
p ← 10 * 0,1 + (n – 10) * 0,09
Sinon
p ← 10 * 0,1 + 20 * 0,09 + (n – 30) * 0,08
FinSi
Ecrire "Le prix total est: ", p
Fin

www.tri.on.ma
14

Exercice 4.5
Variable sex en Caractère
Variable age en Numérique
Variables C1, C2 en Booléen
Début
Ecrire "Entrez le sexe (M/F) : "
Lire sex
Ecrire "Entrez l’âge: "
Lire age
C1 ← sex = "M" ET age > 20
C2 ← sex = "F" ET (age > 18 ET age < 35)
Si C1 ou C2 Alors
Ecrire "Imposable"
Sinon
Ecrire "Non Imposable"
FinSi
Fin

Exercice 4.6
Cet exercice, du pur point de vue algorit hmique, n'est pas t rès méchant . En revanche, il représent e
dignement la cat égorie des énoncés piégés.
En effet , rien de plus facile que d'écrire : si le candidat a plus de 50%, il est élu, sinon s'il a plus de
12,5 %, il est au deuxième t our, sinon il est éliminé. Hé hé hé... mais il ne faut pas oublier que le
candidat peut t rès bien avoir eu 20 %mais êt re t out de même éliminé, t out simplement parce que
l'un des aut res a fait plus de 50 %et donc qu'il n'y a pas de deuxième t our !...
Moralit é : ne j amais se j et er sur la programmat ion avant d'avoir soigneusement mené l'analyse du
problème à t rait er.
Variables A, B, C, D en Numérique
Début
Ecrire "Entrez les scores des quatre prétendants :"
Lire A, B, C, D
C1 ← A > 50
C2 ← B > 50 ou C > 50 ou D > 50
C3 ← A >= B et A >= C et A >= D
C4 ← A >= 12,5
Si C1 Alors
Ecrire “Elu au premier tour"
Sinonsi C2 ou Non(C4) Alors
Ecrire “Battu, éliminé, sorti !!!”
SinonSi C3 Alors
Ecrire "Ballotage favorable"
Sinon
Ecrire "Ballotage défavorable"
FinSi
Fin

Exercice 4.7
Là encore, on illust re l'ut ilit é d'une bonne analyse. Je propose deux corrigés différent s. Le premier
suit l'énoncé pas à pas. C'est j ust e, mais c'est vraiment lourd. La deuxième version s'appuie sur une
vraie compréhension d'une sit uat ion pas si embrouillée qu'elle n'en a l'air.
Dans les deux cas, un recours aux variables booléennes aère sérieusement l'écrit ure.
Donc, premier corrigé, on suit le t ext e de l'énoncé pas à pas :

www.tri.on.ma
15

Variables age, perm, acc, assur en Numérique


Variables C1, C2, C3 en Booléen
Variable situ en Caractère
Début
Ecrire "Entrez l’âge: "
Lire age
Ecrire "Entrez le nombre d'années de permis: "
Lire perm
Ecrire "Entrez le nombre d'accidents: "
Lire acc
Ecrire "Entrez le nombre d'années d'assurance: "
Lire assur
C1 ← age >= 25
C2 ← perm >= 2
C3 ← assur > 1
Si Non(C1) et Non(C2) Alors
Si acc = 0 Alors
situ ← "Rouge"
Sinon
situ ← "Refusé"
FinSi
Sinonsi ((Non(C1) et C2) ou (C1 et Non(C2)) Alors
Si acc = 0 Alors
situ ← "Orange"
SinonSi acc = 1 Alors
situ ← "Rouge"
Sinon
situ ← "Refusé"
FinSi
Sinon
Si acc = 0 Alors
situ ← "Vert"
SinonSi acc = 1 Alors
situ ← "Orange"
SinonSi acc = 2 Alors
situ ← "Rouge"
Sinon
situ ← "Refusé"
FinSi
FinSi
Si C3 Alors
Si situ = "Rouge" Alors
situ ← "Orange"
SinonSi situ = "Orange" Alors
situ ← "Orange"
SinonSi situ = "Vert" Alors
situ ← "Bleu"
FinSi
FinSi
Ecrire "Votre situation : ", situ
Fin
Vous t rouvez cela compliqué ? Oh, cert es oui, ça l'est ! Et d'aut ant plus qu'en lisant ent re les lignes,
on pouvait s'apercevoir que ce galimat ias de t arifs recouvre en fait une logique t rès simple : un
syst ème à point s. Et il suffit de compt abiliser les point s pour que t out s'éclaire... Reprenons j ust e
après l'affect at ion des t rois variables booléennes C1, C2, et C3. On écrit :

www.tri.on.ma
16

P ← 0
Si Non(C1) Alors
P ← P + 1
FinSi
Si Non(C2) Alors
P ← P + 1
FinSi
P ← P + acc
Si P < 3 et C3 Alors
P ← P - 1
FinSi
Si P = -1 Alors
situ ← "Bleu"
SinonSi P = 0 Alors
situ ← "Vert"
SinonSi P = 1 Alors
situ ← "Orange"
SinonSi P = 2 Alors
situ ← "Rouge"
Sinon
situ ← "Refusé"
FinSi
Ecrire "Votre situation : ", situ
Fin
Cool, non ?

Exercice 4.8
En ce qui concerne le début de cet algorit hme, il n’ y a aucune difficult é. C’ est de la saisie bêt e et
même pas méchant e:
Variables J, M, A, JMax en Numérique
Variables VJ, VM, B en Booleen
Début
Ecrire "Entrez le numéro du jour"
Lire J
Ecrire "Entrez le numéro du mois"
Lire M
Ecrire "Entrez l'année"
Lire A
C'est évidemment ensuit e que les ennuis commencent … La première manière d'aborder la chose
consist e à se dire que fondament alement , la st ruct ure logique de ce problème est t rès simple. Si
nous créons deux variables booléennes VJ et VM, représent ant respect ivement la validit é du j our et
du mois ent rés, la fin de l'algorit hme sera d'une simplicit é biblique (l’ année est valide par
définit ion, si on évacue le débat byzant in concernant l’ exist ence de l’ année zéro) :
Si VJ et VM alors
Ecrire "La date est valide"
Sinon
Ecrire "La date n'est pas valide"
FinSi
Tout e la difficult é consist e à affect er correct ement les variables VJ et VM, selon les valeurs des
variables J, M et A. Dans l'absolu, VJ et VM pourraient êt re les obj et s d'une affect at ion
monst rueuse, avec des condit ions at rocement composées. Mais franchement , écrire ces condit ions
en une seule fois est un t ravail de bénédict in sans grand int érêt . Pour évit er d'en arriver à une t elle
ext rémit é, on peut sérier la difficult é en créant deux variables supplément aires :

www.tri.on.ma
17

B : variable booléenne qui indique s'il s'agit d'une année bissext ile
JMax : variable numérique qui indiquera le dernier j our valable pour le mois ent ré.

Avec t out cela, on peut y aller et en ressort ir vivant .


On commence par init ialiser nos variables booléennes, puis on t rait e les années, puis les mois, puis
les j ours.
On not e "dp" la condit ion "divisible par" :
B ← A dp 400 ou (non(A dp 100) et A dp 4)
Jmax ← 0
VM ← M >= 1 et M =< 12
Si VM Alors
Si M = 2 et B Alors
JMax ← 29
SinonSi M = 2 Alors
JMax ← 28
SinonSi M = 4 ou M = 6 ou M = 9 ou M = 11 Alors
JMax ← 30
Sinon
JMax ← 31
FinSi
VJ ← J >= 1 et J =< Jmax
FinSi
Cet t e solut ion a le mérit e de ne pas t rop compliquer la st ruct ure des t est s, et not amment de ne pas
répét er l'écrit ure finale à l'écran. Les variables booléennes int ermédiaires nous épargnent des
condit ions composées t rop lourdes, mais celles-ci rest ent néanmoins sérieuses.

Une approche différent e consist erait à limit er les condit ions composées, quit t e à le payer par une
st ruct ure beaucoup plus exigeant e de t est s imbriqués. Là encore, on évit e de j ouer les ext rémist es
et l'on s'aut orise quelques condit ions composées lorsque cela nous simplifie l'exist ence. On pourrait
aussi dire que la solut ion précédent e "part de la fin" du problème (la dat e est elle valide ou non ?),
alors que celle qui suit "part du début " (quelles sont les données ent rées au clavier ?) :
Si M < 1 ou M > 12 Alors
Ecrire "Date Invalide"
SinonSi M = 2 Alors
Si A dp 400 Alors
Si J < 1 ou J > 29 Alors
Ecrire "Date Invalide"
Sinon
Ecrire "Date Valide"
FinSi
SinonSi A dp 100 Alors
Si J < 1 ou J > 28 Alors
Ecrire "Date Invalide"
Sinon
Ecrire "Date Valide"
FinSi
SinonSi A dp 4 Alors
Si J < 1 ou J > 28 Alors
Ecrire "Date Invalide"
Sinon
Ecrire "Date Valide"
FinSi
Sinon
Si J < 1 ou J > 28 Alors

www.tri.on.ma
18

Ecrire "Date Invalide"


Sinon
Ecrire "Date Valide"
FinSi
FinSi
SinonSi M = 4 ou M = 6 ou M = 9 ou M = 11 Alors
Si J < 1 ou J > 30 Alors
Ecrire "Date Invalide"
Sinon
Ecrire "Date Valide"
FinSi
Sinon
Si J < 1 ou J > 31 Alors
Ecrire "Date Invalide"
Sinon
Ecrire "Date Valide"
FinSi
FinSi
On voit que dans ce cas, l'alt ernat ive finale (Dat e valide ou invalide) se t rouve répét ée un grand
nombre de fois. Ce n'est en soi ni une bonne, ni une mauvaise chose. C'est simplement une quest ion
de choix st ylist ique.
Personnellement , j 'avoue préférer assez net t ement la première solut ion, qui fait ressort ir beaucoup
plus clairement la st ruct ure logique du problème (il n'y a qu'une seule alt ernat ive, aut ant que cet t e
alt ernat ive ne soit écrit e qu'une seule fois).

Il convient enfin de cit er une solut ion t rès simple et élégant e, un peu plus difficile peut -êt re à
imaginer du premier coup, mais qui avec le recul apparaît comme t rès immédiat e. Sur le fond, cela
consist e à dire qu'il y a quat re cas pour qu'une dat e soit valide : celui d'un j our compris ent re 1 et
31 dans un mois à 31 j ours, celui d'un j our compris ent re 1 et 30 dans un mois à 30 j ours, celui d'un
j our compris ent re 1 et 29 en février d'une année bissext ile, et celui d'un j our de février compris
ent re 1 et 28. Ainsi :
B ← (A dp 4 et Non(A dp 100)) ou A dp 400
K1 ← (m=1 ou m=3 ou m=5 ou m=7 ou m=8 ou m=10 ou m=12) et (J>=1 et J=<31)
K2 ← (m=4 ou m=6 ou m=9 ou m=11) et (J>=1 et J=<30)
K3 ← m=2 et B et J>=1 et J=<29
K4 ← m=2 et J>=1 et J=<28
Si K1 ou K2 ou K3 ou K4 Alors
Ecrire "Date valide"
Sinon
Ecrire "Date non valide"
FinSi
Fin

PARTIE 5
Enonce des Exercices
Exercice 5.1

Ecrire un algorit hme qui demande à l’ ut ilisat eur un nombre compris ent re 1 et 3 j usqu’ à ce que la
réponse convienne.

www.tri.on.ma
19

Exercice 5.2

Ecrire un algorit hme qui demande un nombre compris ent re 10 et 20, j usqu’ à ce que la réponse
convienne. En cas de réponse supérieure à 20, on fera apparaît re un message : « Plus pet it ! », et
inversement , « Plus grand ! » si le nombre est inférieur à 10.

Exercice 5.3

Ecrire un algorit hme qui demande un nombre de départ , et qui ensuit e affiche les dix nombres
suivant s. Par exemple, si l'ut ilisat eur ent re le nombre 17, le programme affichera les nombres de 18
à 27.

Exercice 5.4

Ecrire un algorit hme qui demande un nombre de départ , et qui ensuit e écrit la t able de
mult iplicat ion de ce nombre, présent ée comme suit (cas où l'ut ilisat eur ent re le nombre 7) :
Table de 7 :
7 x 1 = 7
7 x 2 = 14
7 x 3 = 21

7 x 10 = 70

Exercice 5.5
Ecrire un algorit hme qui demande un nombre de départ , et qui calcule la somme des ent iers j usqu’ à
ce nombre. Par exemple, si l’ on ent re 5, le programme doit calculer :
1 + 2 + 3 + 4 + 5 = 15

NB : on souhait e afficher uniquement le résult at , pas la décomposit ion du calcul.

Exercice 5.6
Ecrire un algorit hme qui demande un nombre de départ , et qui calcule sa fact orielle.
NB : la fact orielle de 8, not ée 8 !, vaut
1x2x3x4x5x6x7x8

Exercice 5.7
Ecrire un algorit hme qui demande successivement 20 nombres à l’ ut ilisat eur, et qui lui dise ensuit e
quel ét ait le plus grand parmi ces 20 nombres :
Entrez le nombre numéro 1 : 12
Entrez le nombre numéro 2 : 14
etc.

www.tri.on.ma
20

Entrez le nombre numéro 20 : 6


Le plus grand de ces nombres est : 14

Modifiez ensuit e l’ algorit hme pour que le programme affiche de surcroît en quelle posit ion avait ét é
saisie ce nombre :
C’était le nombre numéro 2

Exercice 5.8
Réécrire l’ algorit hme précédent , mais cet t e fois-ci on ne connaît pas d’ avance combien l’ ut ilisat eur
souhait e saisir de nombres. La saisie des nombres s’ arrêt e lorsque l’ ut ilisat eur ent re un zéro.

Exercice 5.9
Lire la suit e des prix (en euros ent iers et t erminée par zéro) des achat s d’ un client . Calculer la
somme qu’ il doit , lire la somme qu’ il paye, et simuler la remise de la monnaie en affichant les
t ext es "10 Euros", "5 Euros" et "1 Euro" aut ant de fois qu’ il y a de coupures de chaque sort e à rendre.

Exercice 5.10
Écrire un algorit hme qui permet t e de connaît re ses chances de gagner au t iercé, quart é, quint é et
aut res impôt s volont aires.
On demande à l’ ut ilisat eur le nombre de chevaux part ant s, et le nombre de chevaux j oués. Les
deux messages affichés devront êt re :
Dans l’ordre : une chance sur X de gagner
Dans le désordre : une chance sur Y de gagner

X et Y nous sont donnés par la formule suivant e, si n est le nombre de chevaux part ant s et p le
nombre de chevaux j oués (on rappelle que le signe ! signifie "fact orielle", comme dans l'exercice 5.6
ci-dessus) :
X = n ! / (n - p) !
Y = n ! / (p ! * (n – p) !)

NB : cet algorit hme peut êt re écrit d’ une manière simple, mais relat ivement peu performant e. Ses
performances peuvent êt re singulièrement augment ées par une pet it e ast uce. Vous commencerez
par écrire la manière la plus simple, puis vous ident ifierez le problème, et écrirez une deuxième
version permet t ant de le résoudre.

Corrigés des Exercices


Exercice 5.1
Variable N en Entier
Debut
N ← 0
Ecrire "Entrez un nombre entre 1 et 3"
TantQue N < 1 ou N > 3

www.tri.on.ma
21

Lire N
Si N < 1 ou N > 3 Alors
Ecrire "Saisie erronée. Recommencez”
FinSi
FinTantQue
Fin

Exercice 5.2
Variable N en Entier
Debut
N ← 0
Ecrire "Entrez un nombre entre 10 et 20"
TantQue N < 10 ou N > 20
Lire N
Si N < 10 Alors
Ecrire "Plus grand !"
SinonSi N > 20 Alors
Ecrire "Plus petit !"
FinSi
FinTantQue
Fin

Exercice 5.3
Variables N, i en Entier
Debut
Ecrire "Entrez un nombre : "
Lire N
Ecrire "Les 10 nombres suivants sont : "
Pour i ← N + 1 à N + 10
Ecrire i
i Suivant
Fin

Exercice 5.4
Variables N, i en Entier
Debut
Ecrire "Entrez un nombre : "
Lire N
Ecrire "La table de multiplication de ce nombre est : "
Pour i ← 1 à 10
Ecrire N, " x ", i, " = ", n*i
i Suivant
Fin

Exercice 5.5
Variables N, i, Som en Entier
Debut
Ecrire "Entrez un nombre : "
Lire N
Som ← 0
Pour i ← 1 à N
Som ← Som + i
i Suivant
Ecrire "La somme est : ", Som
Fin

www.tri.on.ma
22

Exercice 5.6
Variables N, i, F en Entier
Debut
Ecrire "Entrez un nombre : "
Lire N
F ← 1
Pour i ← 2 à N
F ← F * i
i Suivant
Ecrire "La factorielle est : ", F
Fin

Exercice 5.7
Variables N, i, PG en Entier
Debut
PG ← 0
Pour i ← 1 à 20
Ecrire "Entrez un nombre : "
Lire N
Si i = 1 ou N > PG Alors
PG ← N
FinSi
i Suivant
Ecrire "Le nombre le plus grand était : ", PG
Fin
En ligne 3, on peut met t re n’ import e quoi dans PG, il suffit que cet t e variable soit affect ée pour
que le premier passage en ligne 7 ne provoque pas d'erreur.

Pour la version améliorée, cela donne :


Variables N, i, PG, IPG en Entier
Debut
PG ← 0
Pour i ← 1 à 20
Ecrire "Entrez un nombre : "
Lire N
Si i = 1 ou N > PG Alors
PG ← N
IPG ← i
FinSi
i Suivant
Ecrire "Le nombre le plus grand était : ", PG
Ecrire "Il a été saisi en position numéro ", IPG
Fin

Exercice 5.8
Variables N, i, PG, IPG en Entier
Debut
N ← 1
i ← 0
PG ← 0
TantQue N <> 0
Ecrire "Entrez un nombre : "
Lire N
i ← i + 1

www.tri.on.ma
23

Si i = 1 ou N > PG Alors
PG ← N
IPG ← i
FinSi
FinTantQue
Ecrire "Le nombre le plus grand était : ", PG
Ecrire "Il a été saisi en position numéro ", IPG
Fin

Exercice 5.9
Variables FF, somdue, M, IPG, Reste, Nb10F, Nb5F En Entier
Debut
E ← 1
somdue ← 0
TantQue E <> 0
Ecrire "Entrez le montant : "
Lire E
somdue ← somdue + E
FinTantQue
Ecrire "Vous devez :", E, " euros"
Ecrire "Montant versé :"
Lire M
Reste ← M - E
Nb10E ← 0
TantQue Reste >= 10
Nb10E ← Nb10E + 1
Reste ← Reste – 10
FinTantQue
Nb5E ← 0
Si Reste >= 5
Nb5E ← 1
Reste ← Reste – 5
FinSi
Ecrire "Rendu de la monnaie :"
Ecrire "Billets de 10 E : ", Nb10E
Ecrire "Billets de 5 E : ", Nb5E
Ecrire "Pièces de 1 E : ", reste
Fin

Exercice 5.10
Spont anément , on est t ent é d'écrire l'algorit hme suivant :
Variables N, P, i, Numé, Déno1, Déno2 en Entier
Debut Ecrire "Entrez le nombre de chevaux partants : "
Lire N
Ecrire "Entrez le nombre de chevaux joués : "
Lire P
Numé ← 1
Pour i ← 2 à N
Numé ← Numé * i
i Suivant
Déno1 ← 1
Pour i ← 2 à N-P
Déno1 ← Déno1 * i
i Suivant
Déno2 ← 1

www.tri.on.ma
24

Pour i ← 2 à P
Déno2 ← Déno2 * i
i Suivant
Ecrire "Dans l’ordre, une chance sur ", Numé / Déno1
Ecrire "Dans le désordre, une sur ", Numé / (Déno1 * Déno2)
Fin
Cet t e version, formellement j ust e, comport e t out de même deux faiblesses.

La première, et la plus grave, concerne la manière dont elle calcule le résult at final. Celui-ci est le
quot ient d'un nombre par un aut re ; or, ces nombres auront rapidement t endance à êt re t rès
grands. En calculant , comme on le fait ici, d'abord le numérat eur, puis ensuit e le dénominat eur, on
prend le risque de demander à la machine de st ocker des nombres t rop grands pour qu'elle soit
capable de les coder (cf. le préambule). C'est d'aut ant plus bêt e que rien ne nous oblige à procéder
ainsi : on n'est pas obligé de passer par la division de deux t rès grands nombres pour obt enir le
résult at voulu.

La deuxième remarque est qu'on a programmé ici t rois boucles successives. Or, en y regardant bien,
on peut voir qu'après simplificat ion de la formule, ces t rois boucles comport ent le même nombre de
t ours ! (si vous ne me croyez pas, écrivez un exemple de calcul et biffez les nombres ident iques au
numérat eur et au dénominat eur). Ce t riple calcul (ces t rois boucles) peut donc êt re ramené(es) à
un(e) seul(e). Et voilà le t ravail, qui est non seulement bien plus court , mais aussi plus performant :
Variables N, P, i, O, F en Entier
Debut
Ecrire "Entrez le nombre de chevaux partants : "
Lire N
Ecrire "Entrez le nombre de chevaux joués : "
Lire P
A ← 1
B ← 1
Pour i ← 1 à P
A ← A * (i + N - P)
B ← B * i
i Suivant
Ecrire "Dans l’ordre, une chance sur ", A
Ecrire "Dans le désordre, une chance sur ", A / B
Fin

PARTIE 6
Enonce des Exercices
Exercice 6.1

Ecrire un algorit hme qui déclare et remplisse un t ableau de 7 valeurs numériques en les met t ant
t out es à zéro.

Exercice 6.2

www.tri.on.ma
25

Ecrire un algorit hme qui déclare et remplisse un t ableau cont enant les six voyelles de l’ alphabet
lat in.

Exercice 6.3

Ecrire un algorit hme qui déclare un t ableau de 9 not es, dont on fait ensuit e saisir les valeurs par
l’ ut ilisat eur.

Exercice 6.4

Que produit l’ algorit hme suivant ?


Tableau Nb(5) en Entier
Variable i en Entier
Début
Pour i ← 0 à 5
Nb(i) ← i * i
i suivant
Pour i ← 0 à 5
Ecrire Nb(i)
i suivant
Fin

Peut -on simplifier cet algorit hme avec le même résult at ?

Exercice 6.5

Que produit l’ algorit hme suivant ?


Tableau N(6) en Entier
Variables i, k en Entier
Début
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 algorit hme avec le même résult at ?

Exercice 6.6

Que produit l’ algorit hme suivant ?


Tableau Suite(7) en Entier
Variable i en Entier
Début
Suite(0) ← 1
Suite(1) ← 1

www.tri.on.ma
26

Pour i ← 2 à 7
Suite(i) ← Suite(i-1) + Suite(i-2)
i suivant
Pour i ← 0 à 7
Ecrire Suite(i)
i suivant
Fin

Exercice 6.7

Ecrivez la fin de l’ algorit hme 6.3 afin que le calcul de la moyenne des not es soit effect ué et affiché
à l’ écran.

Exercice 6.8

Ecrivez un algorit hme permet t ant à l’ ut ilisat eur de saisir un nombre quelconque de valeurs, qui
devront êt re st ockées dans un t ableau. L’ ut ilisat eur doit donc commencer par ent rer le nombre de
valeurs qu’ il compt e saisir. Il effect uera ensuit e cet t e saisie. Enfin, une fois la saisie t erminée, le
programme affichera le nombre de valeurs négat ives et le nombre de valeurs posit ives.

Exercice 6.9

Ecrivez un algorit hme calculant la somme des valeurs d’ un t ableau (on suppose que le t ableau a ét é
préalablement saisi).

Exercice 6.10

Ecrivez un algorit hme const it uant un t ableau, à part ir de deux t ableaux de même longueur
préalablement saisis. Le nouveau t ableau sera la somme des élément s des deux t ableaux de départ .
Tableau 1 :

4 8 7 9 1 5 4 6

Tableau 2 :

7 6 5 2 1 3 7 4

Tableau à const it uer :

11 14 12 11 2 8 11 10

Exercice 6.11

Touj ours à part ir de deux t ableaux précédemment saisis, écrivez un algorit hme qui calcule le
scht roumpf des deux t ableaux. Pour calculer le scht roumpf, il faut mult iplier chaque élément du
t ableau 1 par chaque élément du t ableau 2, et addit ionner le t out . Par exemple si l'on a :

www.tri.on.ma
27

Tableau 1 :

4 8 7 12

Tableau 2 :

3 6

Le Scht roumpf sera :


3 * 4 + 3 * 8 + 3 * 7 + 3 * 12 + 6 * 4 + 6 * 8 + 6 * 7 + 6 * 12 = 279

Exercice 6.12

Ecrivez un algorit hme qui permet t e la saisie d’ un nombre quelconque de valeurs, sur le principe de
l’ ex 6.8. Tout es les valeurs doivent êt re ensuit e augment ées de 1, et le nouveau t ableau sera
affiché à l’ écran.

Exercice 6.13

Ecrivez un algorit hme permet t ant , t ouj ours sur le même principe, à l’ ut ilisat eur de saisir un nombre
dét erminé de valeurs. Le programme, une fois la saisie t erminée, renvoie la plus grande valeur en
précisant quelle posit ion elle occupe dans le t ableau. On prendra soin d’ effect uer la saisie dans un
premier t emps, et la recherche de la plus grande valeur du t ableau dans un second t emps.

Exercice 6.14

Touj ours et encore sur le même principe, écrivez un algorit hme permet t ant , à l’ ut ilisat eur de saisir
les not es d'une classe. Le programme, une fois la saisie t erminée, renvoie le nombre de ces not es
supérieures à la moyenne de la classe.

Corrigés des Exercices


Exercice 6.1
Tableau Truc(6) en Numérique
Variable i en Numérique
Debut
Pour i ← 0 à 6
Truc(i) ← 0

www.tri.on.ma
28

i Suivant
Fin

Exercice 6.2
Tableau Truc(5) en Caractère
Debut
Truc(0) ← "a"
Truc(1) ← "e"
Truc(2) ← "i"
Truc(3) ← "o"
Truc(4) ← "u"
Truc(5) ← "y"
Fin

Exercice 6.3
Tableau Notes(8) en Numérique
Variable i en Numérique
Pour i ← 0 à 8
Ecrire "Entrez la note numéro ", i + 1
Lire Notes(i)
i Suivant
Fin

Exercice 6.4
Cet algorit hme remplit un t ableau avec six valeurs : 0, 1, 4, 9, 16, 25.
Il les écrit ensuit e à l’ écran. Simplificat ion :
Tableau Nb(5) en Numérique
Variable i en Numérique
Début
Pour i ← 0 à 5
Nb(i) ← i * i
Ecrire Nb(i)
i Suivant
Fin

Exercice 6.5
Cet algorit hme remplit un t ableau avec les sept valeurs : 1, 3, 5, 7, 9, 11, 13.
Il les écrit ensuit e à l’ écran. Simplificat ion :
Tableau N(6) en Numérique
Variables i, k en Numérique
Début
N(0) ← 1
Ecrire N(0)
Pour k ← 1 à 6
N(k) ← N(k-1) + 2
Ecrire N(k)
k Suivant
Fin

Exercice 6.6
Cet algorit hme remplit un t ableau de 8 valeurs : 1, 1, 2, 3, 5, 8, 13, 21

Exercice 6.7
Variable S en Numérique
Tableau Notes(8) en Numérique

www.tri.on.ma
29

Debut
s ← 0
Pour i ← 0 à 8
Ecrire "Entrez la note n° ", i + 1
Lire Notes(i)
s ← s + Notes(i)
i Suivant
Ecrire "Moyenne :", s/9
Fin

Exercice 6.8
Variables Nb, Nbpos, Nbneg en Numérique
Tableau T() en Numérique
Debut
Ecrire "Entrez le nombre de valeurs :"
Lire Nb
Redim T(Nb-1)
Nbpos ← 0
Nbneg ← 0
Pour i ← 0 à Nb - 1
Ecrire "Entrez le nombre n° ", i + 1
Lire T(i)
Si T(i) > 0 alors
Nbpos ← Nbpos + 1
Sinon
Nbneg ← Nbneg + 1
Finsi
i Suivant
Ecrire "Nombre de valeurs positives : ", Nbpos
Ecrire "Nombre de valeurs négatives : ", Nbneg
Fin

Exercice 6.9
Variables i, Som, N en Numérique
Tableau T() en Numérique
Debut
… (on ne programme pas la saisie du t ableau, dont on suppose qu’ il compt e N élément s)
Redim T(N-1)

Som ← 0
Pour i ← 0 à N - 1
Som ← Som + T(i)
i Suivant
Ecrire "Somme des éléments du tableau : ", Som
Fin

Exercice 6.10
Variables i, N en Numérique
Tableaux T1(), T2(), T3() en Numérique
Debut
… (on suppose que T1 et T2 compt ent N élément s, et qu’ ils sont déj à saisis)
Redim T3(N-1)

Pour i ← 0 à N - 1
T3(i) ← T1(i) + T2(i)

www.tri.on.ma
30

i Suivant
Fin

Exercice 6.11
Variables i, j, N1, N2, S en Numérique
Tableaux T1(), T2() en Numérique
Debut
… On ne programme pas la saisie des t ableaux T1 et T2.
On suppose que T1 possède N1 élément s, et que T2 en possède T2)

S ← 0
Pour i ← 0 à N1 – 1
Pour j ← 0 à N2 – 1
S ← S + T1(i) * T2(j)
j Suivant
i Suivant
Ecrire "Le schtroumpf est : ", S
Fin

Exercice 6.12
Variables Nb, i en Numérique
Tableau T() en Numérique
Debut
Ecrire "Entrez le nombre de valeurs : "
Lire Nb
Redim T(Nb-1)
Pour i ← 0 à Nb - 1
Ecrire "Entrez le nombre n° ", i + 1
Lire T(i)
i Suivant
Ecrire "Nouveau tableau : "
Pour i ← 0 à Nb – 1
T(i) ← T(i) + 1
Ecrire T(i)
i Suivant
Fin

Exercice 6.13
Variables Nb, Posmaxi en Numérique
Tableau T() en Numérique
Ecrire "Entrez le nombre de valeurs :"
Lire Nb
Redim T(Nb-1)
Pour i ← 0 à Nb - 1
Ecrire "Entrez le nombre n° ", i + 1
Lire T(i)
i Suivant
Posmaxi ← 0
Pour i ← 0 à Nb - 1
Si T(i) > T(Posmaxi) alors
Posmaxi ← i
Finsi
i Suivant
Ecrire "Element le plus grand : ", T(Posmaxi)

www.tri.on.ma
31

Ecrire "Position de cet élément : ", Posmaxi


Fin

Exercice 6.14
Variables Nb, i, Som, Moy, Nbsup en Numérique
Tableau T() en Numérique
Debut
Ecrire "Entrez le nombre de notes à saisir : "
Lire Nb
Redim T(Nb-1)
Pour i ← 0 à Nb - 1
Ecrire "Entrez le nombre n° ", i + 1
Lire T(i)
i Suivant
Som ← 0
Pour i ← 0 à Nb - 1
Som ← Som + T(i)
i Suivant
Moy ← Som / Nb
NbSup ← 0
Pour i ← 0 à Nb - 1
Si T(i) > Moy Alors
NbSup ← NbSup + 1
FinSi
i Suivant
Ecrire NbSup, " élèves dépassent la moyenne de la classe"
Fin

PARTIE 7
Enonce des Exercices
Exercice 7.1

Ecrivez un algorit hme qui permet t e de saisir un nombre quelconque de valeurs, et qui les range au
fur et à mesure dans un t ableau. Le programme, une fois la saisie t erminée, doit dire si les
élément s du t ableau sont t ous consécut ifs ou non.

www.tri.on.ma
32

Par exemple, si le t ableau est :

12 13 14 15 16 17 18

ses élément s sont t ous consécut ifs. En revanche, si le t ableau est :

9 10 11 15 16 17 18

ses élément s ne sont pas t ous consécut ifs.

Exercice 7.2

Ecrivez un algorit hme qui t rie un t ableau dans l’ ordre décroissant .


Vous écrirez bien ent endu deux versions de cet algorit hme, l'une employant le t ri par insert ion,
l'aut re le t ri à bulles.

Exercice 7.3

Ecrivez un algorit hme qui inverse l’ ordre des élément s d’ un t ableau dont on suppose qu'il a ét é
préalablement saisi (« les premiers seront les derniers…»)

Exercice 7.4

Ecrivez un algorit hme qui permet t e à l’ ut ilisat eur de supprimer une valeur d’ un t ableau
préalablement saisi. L’ ut ilisat eur donnera l’ indice de la valeur qu’ il souhait e supprimer. At t ent ion,
il ne s’ agit pas de remet t re une valeur à zéro, mais bel et bien de la supprimer du t ableau lui-même
! Si le t ableau de départ ét ait :

12 8 4 45 64 9 2

Et que l’ ut ilisat eur souhait e supprimer la valeur d’ indice 4, le nouveau t ableau sera :

12 8 4 45 9 2

Exercice 7.5

Ecrivez l'algorit hme qui recherche un mot saisi au clavier dans un dict ionnaire. Le dict ionnaire est
supposé êt re codé dans un t ableau préalablement rempli et t rié.

Corrigés des Exercices


Exercice 7.1

www.tri.on.ma
33

Variables Nb, i en Entier


Variable Flag en Booleen
Tableau T() en Entier
Debut
Ecrire "Entrez le nombre de valeurs :"
Lire Nb
Redim T(Nb-1)
Pour i ← 0 à Nb - 1
Ecrire "Entrez le nombre n° ", i + 1
Lire T(i)
i Suivant
Flag ← Vrai
Pour i ← 1 à Nb - 1
Si T(i) <> T(i – 1) + 1 Alors
Flag ← Faux
FinSi
i Suivant
Si Flag Alors
Ecrire "Les nombres sont consécutifs"
Sinon
Ecrire "Les nombres ne sont pas consécutifs"
FinSi
Fin
Cet t e programmat ion est sans dout e la plus spont anée, mais elle présent e le défaut d'examiner la
t ot alit é du t ableau, même lorsqu'on découvre dès le départ deux élément s non consécut ifs. Aussi,
dans le cas d'un grand t ableau, est -elle dispendieuse en t emps de t rait ement . Une aut re manière de
procéder serait de sort ir de la boucle dès que deux élément s non consécut ifs sont dét ect és. La
deuxième part ie de l'algorit hme deviendrait donc :
i ← 1
TantQue T(i) = T(i – 1) + 1 et i < Nb - 1
i ← i + 1
FinTantQue
Si T(i) = T(i – 1) + 1 Alors
Ecrire "Les nombres sont consécutifs"
Sinon
Ecrire "Les nombres ne sont pas consécutifs"
FinSi

Exercice 7.2
On suppose que N est le nombre d’ élément s du t ableau. Tri par insert ion :

Pour i ← 0 à N - 2
posmaxi = i
Pour j ← i + 1 à N - 1
Si t(j) > t(posmaxi) alors
posmaxi ← j
Finsi
j suivant
temp ← t(posmaxi)
t(posmaxi) ← t(i)
t(i) ← temp
i suivant
Fin
Tri à bulles :

www.tri.on.ma
34


Yapermut ← Vrai
TantQue Yapermut
Yapermut ← Faux
Pour i ← 0 à N - 2
Si t(i) < t(i + 1) Alors
temp ← t(i)
t(i) ← t(i + 1)
t(i + 1) ← temp
Yapermut ← Vrai
Finsi
i suivant
FinTantQue
Fin

Exercice 7.3
On suppose que n est le nombre d’ élément s du t ableau préalablement saisi

Pour i ← 0 à (N-1)/2
Temp ← T(i)
T(i) ← T(N-1-i)
T(N-1-i) ← Temp
i suivant
Fin

Exercice 7.4

Ecrire "Rang de la valeur à supprimer ?"
Lire S
Pour i ← S à N-2
T(i) ← T(i+1)
i suivant
Redim T(N–1)
Fin

Exercice 7.5
N est le nombre d'élément s du t ableau Dico(), cont enant les mot s du dict ionnaire, t ableau
préalablement rempli.
Variables Sup, Inf, Comp en Entier
Variables Fini en Booléen
Début
Ecrire "Entrez le mot à vérifier"
Lire Mot
On définit les bornes de la part ie du t ableau à considérer
Sup ← N - 1
Inf ← 0
Fini ← Faux
TantQue Non Fini
Comp désigne l'indice de l'élément à comparer. En bonne rigueur, il faudra veiller à ce que Comp
soit bien un nombre ent ier, ce qui pourra s'effect uer de différent es manières selon les langages.
Comp ← (Sup + Inf)/2
Si le mot se sit ue avant le point de comparaison, alors la borne supérieure change, la borne
inférieure ne bouge pas.

www.tri.on.ma
35

Si Mot < Dico(Comp) Alors


Sup ← Comp - 1
Sinon, c'est l'inverse
Sinon
Inf ← Comp + 1
FinSi
Fini ← Mot = Dico(Comp) ou Sup < Inf
FinTantQue
Si Mot = Dico(Comp) Alors
Ecrire "le mot existe"
Sinon
Ecrire "Il n'existe pas"
Finsi
Fin

PARTIE 8
Enonce des Exercices
Exercice 8.1

Écrivez un algorit hme remplissant un t ableau de 6 sur 13, avec des zéros.

www.tri.on.ma
36

Exercice 8.2

Quel résult at produira cet algorit hme ?


Tableau X(1, 2) en Entier
Variables i, j, val en Entier
Début
Val ← 1
Pour i ← 0 à 1
Pour j ← 0 à 2
X(i, j) ← Val
Val ← Val + 1
j Suivant
i Suivant
Pour i ← 0 à 1
Pour j ← 0 à 2
Ecrire X(i, j)
j Suivant
i Suivant
Fin

Exercice 8.3

Quel résult at produira cet algorit hme ?


Tableau X(1, 2) en Entier
Variables i, j, val en Entier
Début
Val ← 1
Pour i ← 0 à 1
Pour j ← 0 à 2
X(i, j) ← Val
Val ← Val + 1
j Suivant
i Suivant
Pour j ← 0 à 2
Pour i ← 0 à 1
Ecrire X(i, j)
i Suivant
j Suivant
Fin

Exercice 8.4

Quel résult at produira cet algorit hme ?


Tableau T(3, 1) en Entier
Variables k, m, en Entier
Début
Pour k ← 0 à 3
Pour m ← 0 à 1
T(k, m) ← k + m
m Suivant
k Suivant
Pour k ← 0 à 3
Pour m ← 0 à 1

www.tri.on.ma
37

Ecrire T(k, m)
m Suivant
k Suivant
Fin

Exercice 8.5

Mêmes quest ions, en remplaçant la ligne :


T(k, m) ← k + m

par
T(k, m) ← 2 * k + (m + 1)
puis par :
T(k, m) ← (k + 1) + 4 * m

Exercice 8.6

Soit un t ableau T à deux dimensions (12, 8) préalablement rempli de valeurs numériques.


Écrire un algorit hme qui recherche la plus grande valeur au sein de ce t ableau.

Exercice 8.7

Écrire un algorit hme de j eu de dames t rès simplifié.


L’ ordinat eur demande à l’ ut ilisat eur dans quelle case se t rouve son pion (quelle ligne, quelle
colonne). On met en place un cont rôle de saisie afin de vérifier la validit é des valeurs ent rées.
Ensuit e, on demande à l’ ut ilisat eur quel mouvement il veut effect uer : 0 (en haut à gauche), 1 (en
haut à droit e), 2 (en bas à gauche), 3 (en bas à droit e).
Si le mouvement est impossible (i.e. on sort du damier ), on le signale à l’ ut ilisat eur et on s’ arrêt e
là . Sinon, on déplace le pion et on affiche le damier résult ant , en affichant un « O » pour une case
vide et un « X » pour la case où se t rouve le pion.

Corrigés des Exercices


Exercice 8.1
Tableau Truc(5, 12) en Entier
Debut
Pour i ← 0 à 5
Pour j ← 0 à 12
Truc(i, j) ← 0

www.tri.on.ma
38

j Suivant
i Suivant
Fin

Exercice 8.2
Cet algorit hme remplit un t ableau de la manière suivant e:
X(0, 0) = 1
X(0, 1) = 2
X(0, 2) = 3
X(1, 0) = 4
X(1, 1) = 5
X(1, 2) = 6
Il écrit ensuit e ces valeurs à l’ écran, dans cet ordre.

Exercice 8.3
Cet algorit hme remplit un t ableau de la manière suivant e:
X(0, 0) = 1
X(1, 0) = 4
X(0, 1) = 2
X(1, 1) = 5
X(0, 2) = 3
X(1, 2) = 6
Il écrit ensuit e ces valeurs à l’ écran, dans cet ordre.

Exercice 8.4
Cet algorit hme remplit un t ableau de la manière suivant e:
T(0, 0) = 0
T(0, 1) = 1
T(1, 0) = 1
T(1, 1) = 2
T(2, 0) = 2
T(2, 1) = 3
T(3, 0) = 3
T(3, 1) = 4
Il écrit ensuit e ces valeurs à l’ écran, dans cet ordre.

Exercice 8.5
Version a : cet algorit hme remplit un t ableau de la manière suivant e:
T(0, 0) = 1
T(0, 1) = 2
T(1, 0) = 3
T(1, 1) = 4
T(2, 0) = 5
T(2, 1) = 6
T(3, 0) = 7
T(3, 1) = 8
Il écrit ensuit e ces valeurs à l’ écran, dans cet ordre.

Version b : cet algorit hme remplit un t ableau de la manière suivant e:


T(0, 0) = 1
T(0, 1) = 5
T(1, 0) = 2
T(1, 1) = 6
T(2, 0) = 3

www.tri.on.ma
39

T(2, 1) = 7
T(3, 0) = 4
T(3, 1) = 8
Il écrit ensuit e ces valeurs à l’ écran, dans cet ordre.

Exercice 8.6
Variables i, j, iMax, jMax en Numérique
Tableau T(12, 8) en Numérique
Le principe de la recherche dans un t ableau à deux dimensions est st rict ement le même que dans un
t ableau à une dimension, ce qui ne doit pas nous ét onner. La seule chose qui change, c'est qu'ici le
balayage requiert deux boucles imbriquées, au lieu d'une seule.
Debut
...
iMax ← 0
jMax ← 0
Pour i ← 0 à 12
Pour j ← 0 à 8
Si T(i,j) > T(iMax,jMax) Alors
iMax ← i
jMax ← j
FinSi
j Suivant
i Suivant
Ecrire "Le plus grand élément est ", T(iMax, jMax)
Ecrire "Il se trouve aux indices ", iMax, "; ", jMax
Fin

Exercice 8.7
Variables i, j , posi, posj, i2, j2 en Entier
Variables Correct, MoveOK en Booléen
Tableau Damier(7, 7) en Booléen
Tableau Mouv(3, 1) en Entier
Le damier cont enant un seul pion, on choisit de le coder à l'économie, en le représent ant par un
t ableau de booléens à deux dimensions. Dans chacun des emplacement s de ce damier, Faux signifie
l'absence du pion, Vrai sa présence.

Par ailleurs, on emploie une méchant e ast uce, pas obligat oire, mais bien prat ique dans beaucoup de
sit uat ions. L'idée est de faire correspondre les choix possibles de l'ut ilisat eur avec les mouvement s
du pion. On ent re donc dans un t ableau Mouv à deux dimensions, les déplacement s du pion selon les
quat re direct ions, en prenant soin que chaque ligne du t ableau corresponde à une saisie de
l’ ut ilisat eur. La première valeur ét ant le déplacement en i, la seconde le déplacement en j . Ceci
nous épargnera par la suit e de faire quat re fois les mêmes t est s.
Debut
Choix 0 : pion en haut à droit e
Mouv(0, 0) ← -1
Mouv(0, 1) ← -1
Choix 1 : pion en haut à droit e
Mouv(1, 0) ← -1
Mouv(1, 1) ← 1
Choix 2 : pion en bas à gauche
Mouv(2, 0) ← 1
Mouv(2, 1) ← -1
Choix 3 : pion en bas à droit e

www.tri.on.ma
40

Mouv(3, 0) ← 1
Mouv(3, 1) ← 1
Init ialisat ion du damier; le pion n’ est pour le moment nulle part
Pour i ← 0 à 7
Pour j ← 0 à 7
Damier(i, j) ← Faux
j suivant
i suivant
Saisie de la coordonnée en i ("posi") avec cont rôle de saisie
Correct ← Faux
TantQue Non Correct
Ecrire "Entrez la ligne de votre pion: "
Lire posi
Si posi >= 0 et posi <= 7 Alors
Correct ← vrai
Finsi
Fintantque
Saisie de la coordonnée en j ("posj ") avec cont rôle de saisie
Correct ← Faux
TantQue Non Correct
Ecrire "Entrez la colonne de votre pion: "
Lire posj
Si posj >= 0 et posj <= 7 Alors
Correct ← Vrai
Finsi
Fintantque
Posit ionnement du pion sur le damier virt uel.
Damier(posi, posj) ← Vrai
Saisie du déplacement , avec cont rôle
Ecrire "Quel déplacement ?"
Ecrire " - 0: en haut à gauche"
Ecrire " - 1: en haut à droite"
Ecrire " - 2: en bas à gauche"
Ecrire " - 3: en bas à droite"
Correct ← Faux
TantQue Non Correct
Lire Dep
Si Dep >= 0 et Dep <= 3 Alors
Correct ← Vrai
FinSi
FinTantQue
i2 et j 2 sont les fut ures coordonnées du pion. La variable booléenne MoveOK vérifie la validit é de ce
fut ur emplacement
i2 ← posi + Mouv(Dep, 0)
j2 ← posj + Mouv(Dep, 1)
MoveOK ← i2 >= 0 et i2 <= 7 et j2 >= 0 et j2 <= 7
Cas où le déplacement est valide
Si MoveOK Alors
Damier(posi, posj) ← Faux
Damier(i2, j2) ← Vrai
Affichage du nouveau damier
Pour i ← 0 à 7
Pour j ← 0 à 7
Si Damier(i, j) Alors

www.tri.on.ma
41

Ecrire " O ";


Sinon
Ecrire " X ";
FinSi
j suivant
Ecrire ""
i suivant
Sinon
Cas où le déplacement n’ est pas valide
Ecrire "Mouvement impossible"
FinSi
Fin

PARTIE 9
Enoncé des Exercices
Exercice 9.1

Parmi ces affect at ions (considérées indépendamment les unes des aut res), lesquelles provoqueront
des erreurs, et pourquoi ?
Variables A, B, C en Numérique
Variables D, E en Caractère
A ← Sin(B)
A ← Sin(A + B * C)
B ← Sin(A) – Sin(D)

www.tri.on.ma
42

D ← Sin(A / B)
C ← Cos(Sin(A)

Exercice 9.2

Ecrivez un algorit hme qui demande un mot à l’ ut ilisat eur et qui affiche à l’ écran le nombre de
let t res de ce mot (c'est vraiment t out bêt e).

Exercice 9.3

Ecrivez un algorit hme qui demande une phrase à l’ ut ilisat eur et qui affiche à l’ écran le nombre de
mot s de cet t e phrase. On suppose que les mot s ne sont séparés que par des espaces (et c'est déj à
un pet it peu moins bêt e).

Exercice 9.4

Ecrivez un algorit hme qui demande une phrase à l’ ut ilisat eur et qui affiche à l’ écran le nombre de
voyelles cont enues dans cet t e phrase.
On pourra écrire deux solut ions. La première déploie une condit ion composée bien fast idieuse. La
deuxième, en ut ilisant la fonct ion Trouve, allège considérablement l'algorit hme.

Exercice 9.5

Ecrivez un algorit hme qui demande une phrase à l’ ut ilisat eur. Celui-ci ent rera ensuit e le rang d’ un
caract ère à supprimer, et la nouvelle phrase doit êt re affichée (on doit réellement supprimer le
caract ère dans la variable qui st ocke la phrase, et pas uniquement à l’ écran).

Exercice 9.6 - Cryptographie 1

Un des plus anciens syst èmes de crypt ographie (aisément déchiffrable) consist e à décaler les let t res
d’ un message pour le rendre illisible. Ainsi, les A deviennent des B, les B des C, et c. Ecrivez un
algorit hme qui demande une phrase à l’ ut ilisat eur et qui la code selon ce principe. Comme dans le
cas précédent , le codage doit s’ effect uer au niveau de la variable st ockant la phrase, et pas
seulement à l’ écran.

Exercice 9.7 - Cryptographie 2 - le chiffre de César

Une améliorat ion (relat ive) du principe précédent consist e à opérer avec un décalage non de 1,
mais d’ un nombre quelconque de let t res. Ainsi, par exemple, si l’ on choisit un décalage de 12, les A
deviennent des M, les B des N, et c.
Réalisez un algorit hme sur le même principe que le précédent , mais qui demande en plus quel est le
décalage à ut iliser. Vot re sens proverbial de l'élégance vous int erdira bien sûr une série de vingt -six
"Si...Alors"

Exercice 9.8 - Cryptographie 3

www.tri.on.ma
43

Une t echnique ult érieure de crypt ographie consist a à opérer non avec un décalage syst émat ique,
mais par une subst it ut ion aléat oire. Pour cela, on ut ilise un alphabet -clé, dans lequel les let t res se
succèdent de manière désordonnée, par exemple :
HYLUJPVREAKBNDOFSQZCWMGITX
C’ est cet t e clé qui va servir ensuit e à coder le message. Selon not re exemple, les A deviendront des
H, les B des Y, les C des L, et c.
Ecrire un algorit hme qui effect ue ce crypt age (l’ alphabet -clé sera saisi par l’ ut ilisat eur, et on
suppose qu'il effect ue une saisie correct e).

Exercice 9.9 - Cryptographie 4 - le chiffre de Vigenère

Un syst ème de crypt ographie beaucoup plus difficile à briser que les précédent s fut invent é au XVIe
siècle par le français Vigenère. Il consist ait en une combinaison de différent s chiffres de César.
On peut en effet écrire 25 alphabet s décalés par rapport à l’ alphabet normal :

• l’ alphabet qui commence par B et finit par …YZA


• l’ alphabet qui commence par C et finit par …ZAB
• et c.

Le codage va s’ effect uer sur le principe du chiffre de César : on remplace la let t re d’ origine par la
let t re occupant la même place dans l’ alphabet décalé.
Mais à la différence du chiffre de César, un même message va ut iliser non un, mais plusieurs
alphabet s décalés. Pour savoir quels alphabet s doivent êt re ut ilisés, et dans quel ordre, on ut ilise
une clé.
Si cet t e clé est "VIGENERE" et le message "Il faut coder cet t e phrase", on procèdera comme suit :
La première let t re du message, I, est la 9e let t re de l’ alphabet normal. Elle doit êt re codée en
ut ilisant l’ alphabet commençant par la première let t re de la clé, V. Dans cet alphabet , la 9e let t re
est le D. I devient donc D.
La deuxième let t re du message, L, est la 12e let t re de l’ alphabet normal. Elle doit êt re codée en
ut ilisant l’ alphabet commençant par la deuxième let t re de la clé, I. Dans cet alphabet , la 12e let t re
est le S. L devient donc S, et c.
Quand on arrive à la dernière let t re de la clé, on recommence à la première.
Ecrire l’ algorit hme qui effect ue un crypt age de Vigenère, en demandant bien sûr au départ la clé à
l’ ut ilisat eur.

Exercice 9.10
Ecrivez un algorit hme qui demande un nombre ent ier à l’ ut ilisat eur. L’ ordinat eur affiche ensuit e le
message "Ce nombre est pair" ou "Ce nombre est impair" selon le cas.

Exercice 9.11
Ecrivez les algorit hmes qui génèrent un nombre Glup aléat oire t el que …

• 0 =< Glup < 2


• –1 =< Glup < 1

www.tri.on.ma
44

• 1,35 =< Glup < 1,65


• Glup émule un dé à six faces
• –10,5 =< Glup < +6,5
• Glup émule la somme du j et simult ané de deux dés à six faces

Corrigés des Exercices


Exercice 9.1
A ← Sin(B) Aucun problème
A ← Sin(A + B * C) Aucun problème
B ← Sin(A) – Sin(D) Erreur ! D est en caractère
D ← Sin(A / B) Aucun problème… si B est différent de zéro
C ← Cos(Sin(A) Erreur ! Il manque une parenthèse fermante

Exercice 9.2
Vous ét iez prévenus, c'est bêt e comme chou ! Il suffit de se servir de la fonct ion Len, et c'est réglé :
Variable Mot en Caractère
Variable Nb en Entier
Debut
Ecrire "Entrez un mot : "
Lire Mot
Nb ← Len(Mot)
Ecrire "Ce mot compte ", Nb, " lettres"
Fin

Exercice 9.3
Là, on est obligé de compter par une boucle le nombre d'espaces de la phrase, et on
en déduit le nombre de mots. La boucle examine les caractères de la phrase un par
un, du premier au dernier, et les compare à l'espace.
Variable Bla en Caractère
Variables Nb, i en Entier
Debut
Ecrire "Entrez une phrase : "
Lire Bla
Nb ← 0
Pour i ← 1 à Len(Bla)
Si Mid(Bla, i , 1) = " " Alors
Nb ← Nb + 1
FinSi
i suivant
Ecrire "Cette phrase compte ", Nb + 1, " mots"
Fin

Exercice 9.4
Solut ion 1 : pour chaque caract ère du mot , on pose une t rès douloureuse condit ion composée. Le
moins que l'on puisse dire, c'est que ce choix ne se dist ingue pas par son élégance. Cela dit , il
marche, donc après t out , pourquoi pas.
Variable Bla en Caractère
Variables Nb, i, j en Entier
Debut
Ecrire "Entrez une phrase : "
Lire Bla
Nb ← 0
Pour i ← 1 à Len(Bla)

www.tri.on.ma
45

Si Mid(Bla, i, 1) = "a" ou Mid(Bla, i, 1) = "e" ou Mid(Bla, i, 1) = "i" ou


Mid(Bla, i, 1) = "o" ou Mid(Bla, i, 1) = "u" ou Mid(Bla, i, 1) = "y" Alors
Nb ← Nb + 1
FinSi
i suivant
Ecrire "Cette phrase compte ", Nb, " voyelles"
Fin
Solut ion 2 : on st ocke t out es les voyelles dans une chaîne. Grâce à la fonct ion Trouve, on dét ect e
immédiat ement si le caract ère examiné est une voyelle ou non. C'est net t ement plus sympat hique...
Variables Bla, Voy en Caractère
Variables Nb, i, j en Entier
Debut
Ecrire "Entrez une phrase : "
Lire Bla
Nb ← 0
Voy ← "aeiouy"
Pour i ← 1 à Len(Bla)
Si Trouve(Voy, Mid(Bla, i, 1)) <> 0 Alors
Nb ← Nb + 1
FinSi
i suivant
Ecrire "Cette phrase compte ", Nb, " voyelles"
Fin

Exercice 9.5
Il n'exist e aucun moyen de supprimer direct ement un caract ère d'une chaîne… aut rement qu'en
procédant par collage. Il faut donc concat éner ce qui se t rouve à gauche du caract ère à supprimer,
avec ce qui se t rouve à sa droit e. At t ent ion aux paramèt res des fonct ions Mid, ils n'ont rien
d'évident !
Variable Bla en Caractère
Variables Nb, i, j en Entier
Début
Ecrire "Entrez une phrase : "
Lire Bla
Ecrire "Entrez le rang du caractère à supprimer : "
Lire Nb
L ← Len(Bla)
Bla ← Mid(Bla, 1, Nb – 1) & Mid(Bla, Nb + 1, L – Nb)
Ecrire "La nouvelle phrase est : ", Bla
Fin

Exercice 9.6
Sur l'ensemble des exercices de crypt ographie, il y a deux grandes st rat égies possibles :

- soit t ransformer les caract ères en leurs codes ASCII. L'algorit hme revient donc ensuit e à t rait er des
nombres. Une fois ces nombres t ransformés, il faut les reconvert ir en caract ères.

- soit en rest er au niveau des caract ères, et procéder direct ement aux t ransformat ions à ce niveau.
C'est cet t e dernière opt ion qui est choisie ici, et pour t ous les exercices de crypt ographie à venir.

Pour cet exercice, il y a une règle générale : pour chaque let t re, on dét ect e sa posit ion dans
l'alphabet , et on la remplace par la let t re occupant la posit ion suivant e. Seul cas part iculier, la

www.tri.on.ma
46

vingt -sixième let t re (le Z) doit êt re codée par la première (le A), et non par la vingt -sept ième, qui
n'exist e pas !
Variables Bla, Cod, Alpha en Caractère
Variables i, Pos en Entier
Début
Ecrire "Entrez la phrase à coder : "
Lire Bla
Alpha ← "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Cod ← ""
Pour i ← 1 à Len(Bla)
Let ← Mid(Bla, i, 1)
Si Let <> "Z" Alors
Pos ← Trouve(Alpha, Let)
Cod ← Cod & Mid(Alpha, Pos + 1, 1)
Sinon
Cod ← Cod & "A"
FinSi
i Suivant
Bla ← Cod
Ecrire "La phrase codée est : ", Bla
Fin

Exercice 9.7
Cet algorit hme est une généralisat ion du précédent . Mais là, comme on ne connaît pas d'avance le
décalage à appliquer, on ne sait pas a priori combien de "cas part iculiers", à savoir de dépassement s
au-delà du Z, il va y avoir.
Il faut donc t rouver un moyen simple de dire que si on obt ient 27, il faut en réalit é prendre la let t re
numéro 1 de l'alphabet , que si on obt ient 28, il faut en réalit é prendre la numéro 2, et c. Ce moyen
simple exist e : il faut considérer le rest e de la division par 26, aut rement dit le modulo.
Il y a une pet it e ruse supplément aire à appliquer, puisque 26 doit rest er 26 et ne pas devenir 0.
Variable Bla, Cod, Alpha en Caractère
Variables i, Pos, Décal en Entier
Début
Ecrire "Entrez le décalage à appliquer : "
Lire Décal
Ecrire "Entrez la phrase à coder : "
Lire Bla
Alpha ← "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Cod ← ""
Pour i ← 1 à Len(Bla)
Let ← Mid(Bla, i, 1)
Pos ← Trouve(Alpha, Let)
NouvPos ← Mod(Pos + Décal, 26)
Si NouvPos = 0 Alors
NouvPos ← 26
FinSi
Cod ← Cod & Mid(Alpha, NouvPos, 1)
i Suivant
Bla ← Cod
Ecrire "La phrase codée est : ", Bla
Fin

Exercice 9.8
Là, c'est assez direct .

www.tri.on.ma
47

Variable Bla, Cod, Alpha en Caractère


Variables i, Pos, Décal en Entier
Début
Ecrire "Entrez l’alphabet clé : "
Lire Clé
Ecrire "Entrez la phrase à coder : "
Lire Bla
Alpha ← "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Cod ← ""
Pour i ← 1 à Len(Bla)
Let ← Mid(Bla, i, 1)
Pos ← Trouve(Alpha, Let)
Cod ← Cod & Mid(Clé, Pos, 1)
i Suivant
Bla ← Cod
Ecrire "La phrase codée est : ", Bla
Fin

Exercice 9.9
Le codage de Vigenère n’ est pas seulement plus difficile à briser; il est également un peu plus raide
à programmer. La difficult é essent ielle est de comprendre qu’ il faut deux boucles: l’ une pour
parcourir la phrase à coder, l’ aut re pour parcourir la clé. Mais quand on y réfléchit bien, ces deux
boucles ne doivent surt out pas êt re imbriquées. Et en réalit é, quelle que soit la manière dont on
l'écrit , elle n’ en forment qu’ une seule.
Variables Alpha, Bla, Cod, Clé, Let en Caractère
Variables i, Pos, PosClé, Décal en Entier
Début
Ecrire "Entrez la clé : "
Lire Clé
Ecrire "Entrez la phrase à coder : "
Lire Bla
Alpha ← "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Cod ← ""
PosClé ← 0
Pour i ← 1 à Len(Bla)
On gère la progression dans la clé. J’ ai effect ué cela "à la main" par une boucle, mais un j oli emploi
de la fonct ion Modulo aurait permis une programmat ion en une seule ligne!
Posclé ← Posclé + 1
Si PosClé > Len(Clé) Alors
PosClé ← 1
FinSi
On dét ermine quelle est la let t re clé et sa posit ion dans l’ alphabet
LetClé ← Mid(Clé, PosClé, 1)
PosLetClé ← Trouve(Alpha, LetClé)
On dét ermine la posit ion de la let t re à coder et le décalage à appliquer. Là encore, une solut ion
alt ernat ive aurait ét é d’ employer Mod : cela nous aurait épargné le Si…
Let ← Mid(Bla, i, 1)
Pos ← Trouve(Alpha, Let)
NouvPos ← Pos + PosLetClé
Si NouvPos > 26 Alors
NouvPos ← NouvPos – 26
FinSi
Cod ← Cod & Mid(Alpha, NouvPos, 1)
i Suivant

www.tri.on.ma
48

Bla ← Cod
Ecrire "La phrase codée est : ", Bla
Fin

Exercice 9.10
On en revient à des choses plus simples...
Variable Nb en Entier
Ecrire "Entrez votre nombre : "
Lire Nb
Si Nb/2 = Ent(Nb/2) Alors
Ecrire "Ce nombre est pair"
Sinon
Ecrire "Ce nombre est pair"
FinSi
Fin

Exercice 9.11
a) Glup ← Alea() * 2
b) Glup ← Alea() * 2 - 1
c) Glup ← Alea() * 0,30 + 1,35
d) Glup ← Ent(Alea() * 6) + 1
e) Glup ← Alea() * 17 – 10,5
f) Glup ← Ent(Alea()*6) + Ent(Alea()*6) + 2

PARTIE 10
Enoncé des Exercices
Exercice 10.1

Quel résult at cet algorit hme produit -il ?


Variable Truc en Caractère
Début
Ouvrir "Exemple.txt" sur 5 en Lecture
Tantque Non EOF(5)
LireFichier 5, Truc
Ecrire Truc

www.tri.on.ma
49

FinTantQue
Fermer 5
Fin

Exercice 10.2

Ecrivez l’ algorit hme qui produit un résult at similaire au précédent , mais le fichier t ext e
"Exemple.t xt " est cet t e fois de t ype délimit é (caract ère de délimit at ion : / ). On produira à l'écran
un affichage où pour des raisons est hét iques, ce caract ère sera remplacé avec des espaces.

Exercice 10.3

On t ravaille avec le fichier du carnet d’ adresses en champs de largeur fixe.


Ecrivez un algorit hme qui permet à l’ ut ilisat eur de saisir au clavier un nouvel individu qui sera
aj out é à ce carnet d’ adresses.
-

Exercice 10.4

Même quest ion, mais cet t e fois le carnet est supposé êt re t rié par ordre alphabét ique. L’ individu
doit donc êt re inséré au bon endroit dans le fichier.

Exercice 10.5

Ecrivez un algorit hme qui permet t e de modifier un renseignement (pour simplifier, disons
uniquement le nom de famille) d’ un membre du carnet d’ adresses. Il faut donc demander à
l’ ut ilisat eur quel est le nom à modifier, puis quel est le nouveau nom, et met t re à j our le fichier. Si
le nom recherché n'exist e pas, le programme devra le signaler.

Exercice 10.6

Ecrivez un algorit hme qui t rie les individus du carnet d’ adresses par ordre alphabét ique.

Exercice 10.7

Soient Tot o.t xt et Tat a.t xt deux fichiers dont les enregist rement s ont la même st ruct ure. Ecrire un
algorit hme qui recopie t out le fichier Tot o dans le fichier Tut u, puis à sa suit e, t out le fichier Tat a
(concat énat ion de fichiers).

Exercice 10.8

Ecrire un algorit hme qui supprime dans not re carnet d'adresses t ous les individus dont le mail est
invalide (pour employer un crit ère simple, on considèrera que sont invalides les mails ne
comport ant aucune arobase, ou plus d'une arobase).

www.tri.on.ma
50

Exercice 10.9

Les enregist rement s d’ un fichier cont iennent les deux champs Nom (chaîne de caract ères) et
Mont ant (Ent ier). Chaque enregist rement correspond à une vent e conclue par un commercial d’ une
sociét é.
On veut mémoriser dans un t ableau, puis afficher à l'écran, le t ot al de vent es par vendeur. Pour
simplifier, on suppose que le fichier de départ est déj à t rié alphabét iquement par vendeur.

Corrigés des Exercices


Exercice 10.1
Cet algorit hme écrit l'int égralit é du fichier "Exemple.t xt " à l'écran

Exercice 10.2
Variable Truc en Caractère
Variable i en Entier
Debut
Ouvrir "Exemple.txt" sur 5 en Lecture
Tantque Non EOF(5)
LireFichier 5, Truc
Pour i ← 1 à Len(Truc)
Si Mid(Truc, i, 1) = "/" Alors
Ecrire " "
Sinon
Ecrire Mid(Truc, i, 1)
FinSi
i Suivant
FinTantQue
Fermer 5

Exercice 10.3
Variables Nom * 20, Prénom * 17, Tel * 10, Mail * 20, Lig en Caractère
Debut
Ecrire "Entrez le nom : "
Lire Nom
Ecrire "Entrez le prénom : "
Lire Prénom
Ecrire "Entrez le téléphone : "
Lire Tel
Ecrire "Entrez le nom : "
Lire Mail
Lig ← Nom & Prénom & Tel & Mail
Ouvrir "Adresse.txt" sur 1 pour Ajout
EcrireFichier 1, Lig
Fermer 1
Fin

Exercice 10.4
Là, comme indiqué dans le cours, on passe par un t ableau de st rut ures en mémoire vive, ce qui est
la t echnique la plus fréquemment employée. Le t ri - qui est en fait un simple t est - sera effect ué
sur le premier champ (nom).
Structure Bottin
Nom en Caractère * 20

www.tri.on.ma
51

Prénom en Caractère * 15
Tel en Caractère * 10
Mail en Caractère * 20
Fin Structure
Tableau Mespotes() en Bottin
Variables MonPote, Nouveau en Bottin
Variables i, j en Numérique
Debut
Ecrire "Entrez le nom : "
Lire Nouveau.Nom
Ecrire "Entrez le prénom : "
Lire Nouveau.Prénom
Ecrire "Entrez le téléphone : "
Lire Nouveau.Tel
Ecrire "Entrez le mail : "
Lire Nouveau.Mail
On recopie l'int égralit é de "Adresses" dans MesPot es(). Et après t out , c'est l'occasion : quand on
t ombe au bon endroit , on insère subrept icement not re nouveau copain dans le t ableau.
Ouvrir "Adresse.txt" sur 1 pour Lecture
i ← -1
inséré ← Faux
Tantque Non EOF(1)
i ← i + 1
Redim MesPotes(i)
LireFichier 1, MonPote
Si MonPote.Nom > Nouveau.Nom et Non Inséré Alors
MesPotes(i) ← Nouveau
Inséré ← Vrai
i ← i + 1
Redim MesPotes(i)
FinSi
MesPotes(i) ← MonPote
FinTantQue
Fermer 1
Et le t our est quasiment j oué. Il ne rest e plus qu'à rebalancer t el quel l'int égralit é du t ableau
MesPot es dans le fichier, en écrasant l'ancienne version.
Ouvrir "Adresse.txt" sur 1 pour Ecriture
Pour j ← 0 à i
EcrireFichier 1, MesPotes(j)
j suivant
Fermer 1
Fin

Exercice 10.5
C'est un peu du même t onneau que ce qu'on vient de faire, à quelques variant es près. Il y a
essent iellement une pet it e gest ion de flag pour faire bonne mesure.
Structure Bottin
Nom en Caractère * 20
Prénom en Caractère * 15
Tel en caractère * 10
Mail en Caractère * 20
Fin Structure
Tableau Mespotes() en Bottin

www.tri.on.ma
52

Variables MonPote en Bottin


Variables Ancien, Nouveau en Caractère*20
Variables i, j en Numérique
Variable Trouvé en Booléen
Debut
Ecrire "Entrez le nom à modifier : "
Lire Ancien
Ecrire "Entrez le nouveau nom : "
Lire Nouveau
On recopie l'int égralit é de "Adresses" dans Fic, t out en recherchant le clampin. Si on le t rouve, on
procède à la modificat ion.
Ouvrir “Adresse.txt” sur 1 pour Lecture
i ← -1
Trouvé ← Faux
Tantque Non EOF(1)
i ← i + 1
Redim MesPotes(i)
LireFichier 1, MonPote
Si MonPote.Nom = Ancien.Nom Alors
Trouvé ← Vrai
MonPote.Nom ← Nouveau
FinSi
MesPotes(i) ← MonPote
FinTantQue
Fermer 1
On recopie ensuit e l'int égralit é de Fic dans "Adresse"
Ouvrir "Adresse.txt" sur 1 pour Ecriture
Pour j ← 0 à i
EcrireFichier 1, MesPotes(j)
j Suivant
Fermer 1
Et un pet it message pour finir !
Si Trouvé Alors
Ecrire "Modification effectuée"
Sinon
Ecrire "Nom inconnu. Aucune modification effectuée"
FinSi
Fin

Exercice 10.6
Là, c'est un t ri sur un t ableau de st ruct ures, rien de plus facile. Et on est bien cont ent de disposer
des st ruct ures, aut rement dit de ne se colt iner qu'un seul t ableau...
Structure Bottin Nom en Caractère * 20
Prénom en Caractère * 15
Tel en caractère * 10
Mail en Caractère * 20
Fin Structure
Tableau Mespotes() en Bottin
Variables Mini en Bottin
Variables i, j en Numérique
Debut

www.tri.on.ma
53

On recopie l'int égralit é de "Adresses" dans MesPot es...


Ouvrir "Adresse.txt" sur 1 pour Lecture
i ← -1
Tantque Non EOF(1)
i ← i + 1
Redim MesPotes(i)
LireFichier 1, MesPotes(i)
FinTantQue
Fermer 1
On t rie le t ableau selon l'algorit hme de t ri par insert ion déj à ét udié, en ut ilisant le champ Nom de
la st ruct ure :
Pour j ← 0 à i - 1
Mini ← MesPotes(j)
posmini ← j
Pour k ← j + 1 à i
Si MesPotes(k).Nom < Mini.Nom Alors
mini ← MesPotes(k)
posmini ← k
Finsi
k suivant
MesPotes(posmini) ← MesPotes(j)
MesPotes(j) ← Mini
j suivant
On recopie ensuit e l'int égralit é du t ableau dans "Adresse"
Ouvrir "Adresse.txt" sur 1 pour Ecriture
Pour j ← 0 à i
EcrireFichier 1, MesPotes(j)
j suivant
Fermer 1
Fin

Exercice 10.7
Bon, celui-là est t ellement idiot qu'on n'a même pas besoin de passer par des t ableaux en mémoire
vive.
Variable Lig en Caractère
Début
Ouvrir "Tutu.txt" sur 1 pour Ajout
Ouvrir “Toto.txt” sur 2 pour Lecture
Tantque Non EOF(2)
LireFichier 2, Lig
EcrireFichier 1, Lig
FinTantQue
Fermer 2
Ouvrir “Tata.txt” sur 3 pour Lecture
Tantque Non EOF(3)
LireFichier 2, Lig
EcrireFichier 1, Lig
FinTantQue
Fermer 3
Fermer 1
Fin

Exercice 10.8
On va éliminer les mauvaises ent rées dès la recopie : si l'enregist rement ne présent e pas un mail
valide, on l'ignore, sinon on le copie dans le t ableau.

www.tri.on.ma
54

Structure Bottin
Nom en Caractère * 20
Prénom en Caractère * 15
Tel en caractère * 10
Mail en Caractère * 20
Fin Structure
Tableau Mespotes() en Bottin
Variable MonPote en Bottin
Variables i, j en Numérique
Debut
On recopie "Adresses" dans MesPot es en t est ant le mail...
Ouvrir "Adresse.txt" sur 1 pour Lecture
i ← -1
Tantque Non EOF(1)
LireFichier 1, MonPote
nb ← 0
Pour i ← 1 à Len(MonPote.Mail)
Si Mid(MonPote.Mail, i, 1) = "@" Alors
nb ← nb + 1
FinSi
i suivant
Si nb = 1 Alors
i ← i + 1
Redim MesPotes(i)
MesPotes(i) ← MonPote
FinSi
FinTantQue
Fermer 1
On recopie ensuit e l'int égralit é de Fic dans "Adresse"
Ouvrir "Adresse.txt" sur 1 pour Ecriture
Pour j ← 0 à i
EcrireFichier 1, MesPotes(j)
j Suivant
Fermer 1
Fin

Exercice 10.9
Une fois de plus, le passage par un t ableau de st ruct ures est une st rat égie commode. At t ent ion
t out efois, comme il s'agit d'un fichier t ext e, t out est st ocké en caract ère. Il faudra donc convert ir
en numérique les caract ères représent ant les vent es, pour pouvoir effect uer les calculs demandés.
Pour le t rait ement , il y a deux possibilit és. Soit on recopie le fichier à l'ident ique dans un premier
t ableau, et on t rait e ensuit e ce t ableau pour faire la somme par vendeur. Soit on fait le t rait ement
direct ement , dès la lect ure du fichier. C'est cet t e opt ion qui est choisie dans ce corrigé.
Structure Vendeur
Nom en Caractère * 20
Montant en Numérique
Fin Structure
Tableau MesVendeurs() en Vendeur
Variables NomPrec * 20, Lig, Nom en caractère
Variables Somme, Vente en Numérique
On balaye le fichier en faisant nos addit ions.
Dès que le nom a changé (on est passé au vendeur suivant ), on range le résult at et on remet t out à
zéro

www.tri.on.ma
55

Debut
Ouvrir "Ventes.txt” sur 1 pour Lecture
i ← -1
Somme ← 0
NomPréc ← ""
Tantque Non EOF(1)
LireFichier 1, Lig
Nom ← Mid(Lig, 1, 20)
Vente ← CNum(Mid(Lig, 21, 10)
Si Nom = NomPrec Alors
Somme ← Somme + Vente
Sinon
i ← i + 1
Redim MesVendeurs(i)
MesVendeurs(i).Nom ← NomPrec
MesVendeurs(i).Montant ← Somme
Somme ← 0
NomPrec ← Nom
FinSi
FinTantQue
Et n'oublions pas un pet it t our de plus pour le dernier de ces messieurs…
i ← i + 1
Redim MesVendeurs(i)
MesVendeurs(i).Nom ← NomPrec
MesVendeurs(i).Montant ← Somme
Fermer 1
Pour t erminer, on affiche le t ableau à l'écran
Pour j ← 0 à i
Ecrire MesVendeurs(j)
j suivant
Fin

PARTIE 11
Enoncé des Exercices
Exercice 11.1

Écrivez une fonct ion qui renvoie la somme de cinq nombres fournis en argument .

Exercice 11.2

www.tri.on.ma
56

Écrivez une fonct ion qui renvoie le nombre de voyelles cont enues dans une chaîne de caract ères
passée en argument . Au passage, not ez qu'une fonct ion a t out à fait le droit d'appeler une aut re
fonct ion.

Exercice 11.3

Réécrivez la fonct ion Trouve, vue précédemment , à l’ aide des fonct ions Mid et Len (comme quoi,
Trouve, à la différence de Mid et Len, n’ est pas une fonct ion indispensable dans un langage).

Corrigés des Exercices


Exercice 11.1
Voilà un début en douceur...
Fonction Sum(a, b, c, d, e)
Renvoyer a + b + c + d + e
FinFonction

Exercice 11.2
Fonction NbVoyelles(Mot en Caractère)
Variables i, nb en Numérique
Pour i ← 1 à Len(Mot)
Si Trouve("aeiouy", Mid(Mot, i, 1)) <> 0 Alors
nb ← nb + 1
FinSi
i suivant
Renvoyer nb
FinFonction

Exercice 11.3
Fonction Trouve(a, b)
Variable i en Numérique
Début
i ← 1
TantQue i < Len(a) - Len(b) et b <> Mid(a, i, Len(b))
i ← i + 1
FinTantQue
Si b <> Mid(a, i, Len(b)) Alors
Renvoyer 0
Sinon
Renvoyer i
FinFonction

Fonction ChoixDuMot
Quelques explicat ions : on lit int égralement le fichier cont enant la list e des mot s. Au fur et à
mesure, on range ces mot s dans le t ableau List e, qui est redimensionné à chaque t our de boucle. Un
t irage aléat oire int ervient alors, qui permet de renvoyer un des mot s au hasard.
Fonction ChoixDuMot()
Tableau Liste() en Caractère
Variables Nbmots, Choisi en Numérique
Ouvrir "Dico.txt" sur 1 en Lecture
Nbmots ← -1
Tantque Non EOF(1)
Nbmots ← Nbmots + 1

www.tri.on.ma
57

Redim Liste(Nbmots)
LireFichier 1, Liste(Nbmots)
FinTantQue
Fermer 1
Choisi ← Ent(Alea() * Nbmots)
Renvoyer Liste(Choisi)
FinFonction

Fonction PartieFinie
On commence par vérifier le nombre de mauvaises réponses, mot if de défait e. Ensuit e, on regarde
si la part ie est gagnée, t rait ement qui s’ apparent e à une gest ion de Flag : il suffit que l’ une des
let t res du mot à deviner n’ ait pas ét é t rouvée pour que la part ie ne soit pas gagnée. La fonct ion
aura besoin, comme argument s, du t ableau Verif, de son nombre d’ élément s et du nombre act uel
de mauvaises réponses.
Fonction PartieFinie(t() en Booleen, n, x en Numérique)
Variables i, issue en Numerique
Si x = 10 Alors
Renvoyer 2
Sinon
Issue ← 1
Pour i ← 0 à n
Si Non t(i) Alors
Issue ← 0
FinSi
i suivant
Renvoyer Issue
FinSi
FinFonction

Procédure AffichageMot
Une même boucle nous permet de considérer une par une les let t res du mot à t rouver (variable m),
et de savoir si ces let t res ont ét é ident ifiées ou non.
Procédure AffichageMot(m en Caractère par Valeur, t() en Booléen par Valeur)
Variable Aff en Caractere
Variable i en Numerique
Aff ← ""
Pour i ← 0 à len(m) - 1
Si Non t(i) Alors
Aff ← Aff & "-"
Sinon
Aff ← Aff & Mid(mot, i + 1, 1)
FinSi
i suivant
Ecrire Aff
FinProcédure
Remarque : cet t e procédure aurait également pu êt re écrit e sous la forme d'une fonct ion, qui
aurait renvoyé vers la procédure principale la chaîne de caract ères Aff. L'écrit ure à l'écran de cet t e
chaîne Aff aurait alors ét é fait e par la procédure principale.
Voilà donc une sit uat ion où on peut assez indifféremment opt er pour une sous-procédure ou pour
une fonct ion.

Procédure SaisieLettre
On vérifie que le signe ent ré (paramèt re b) est bien une seule let t re, qui ne figure pas dans les
proposit ions précédemment effect uées (paramèt re a)

www.tri.on.ma
58

Procédure SaisieLettre(a, b en Caractère par Référence)


Variable Correct en Booleen
Variable Alpha en Caractere
Début
Correct ← Faux
Alpha ← "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
TantQue Non Correct
Ecrire "Entrez la lettre proposée : "
Lire b
Si Trouve(alpha, b) = 0 Ou len(b) <> 1 Alors
Ecrire "Ce n’est pas une lettre !"
SinonSi Trouve(a, b) <> 0 Alors
Ecrire "Lettre déjà proposée !"
Sinon
Correct ← Vrai
a ← a & b
FinSi
FinTantQue
Fin Procédure

Procédure VerifLettre
Les paramèt res se mult iplient … L est la let t re proposée, t () le t ableau de booléens, M le mot à
t rouver et N le nombre de mauvaises proposit ions. Il n’ y a pas de difficult é maj eure dans cet t e
procédure : on examine les let t res de M une à une, et on en t ire les conséquences. Le flag sert à
savoir si la let t re proposée faisait ou non part ie du mot à deviner.
Procédure VerifLettre(L, M en Caractère par Valeur, t() en Booléen par Référence, N
en Numérique par Référence)
Variable Correct en Booleen
Début
Correct ← Faux
Pour i ← 1 à Len(M)
Si Mid(M, i, 1) = L Alors
Correct ← Vrai
T(i - 1) ← Vrai
FinSi
FinTantQue
Si Non Correct Alors
N ← N + 1
FinSi
Fin Procédure

Procédure Epilogue
Procédure Epilogue(M en Caractère par Valeur, N en Numérique par Valeur)
Début
Si N = 2 Alors
Ecrire "Une mauvaise proposition de trop… Partie terminée !"
Ecrire "Le mot à deviner était : ", M
Sinon
Ecrire "Bravo ! Vous avez trouvé !"
FinSi
Fin Procédure

Procédure Principale
Procédure Principale
Variables Lettre, Mot, Propos en Caractere

www.tri.on.ma
59

Variables g i, MovRep en Numérique


Tableau Verif() en Booleen
Début
Mot ← ChoixDuMot()
Propos ← ""
Lettre ← ""
Redim Verif(Len(Mot)-1)
Pour i ← 0 à Len(Mot)-1
Verif(i) ← Faux
i suivant
k ← 0
Tantque k = 0
AffichageMot(Mot, Verif())
SaisieLettre(Propos, Lettre)
VerifLettre(Lettre, Mot, Verif(), MovRep)
k ← PartieFinie(Verif(), len(mot), MovRep)
FinTantQue
Epilogue(Mot, k)
Fin

www.tri.on.ma

Vous aimerez peut-être aussi