Vous êtes sur la page 1sur 62

PARTIE 1 Enonce des Exercices Exercice 1.

1 Quelles seront les valeurs des variables A et B aprs excution des instructions suivantes ? Variables A, B en Entier Dbut A1 BA+3 A3 Fin Exercice 1.2 Quelles seront les valeurs des variables A, B et instructions suivantes ? Variables A, B, en Entier Dbut A! B3 A+B A2 B"A Fin

aprs excution des

Exercice 1.3 Quelles seront les valeurs des variables A et B aprs excution des instructions suivantes ? Variables A, B en Entier Dbut A! BA+# AA+1 BA"# Fin Exercice 1.# Quelles seront les valeurs des variables A, B et instructions suivantes ? Variables A, B, en Entier Dbut A3 B 1$ A+B BA+B

aprs excution des

A Fin

Exercice 1.! Quelles seront les valeurs des variables A et B aprs excution des instructions suivantes ? Variables A, B en Entier Dbut A! B2 AB BA Fin %oralit & les deux dernires instructions per'ettent(elles d)c*an+er les deux valeurs de B et A ? ,i l)on inverse les deux dernires instructions, cela c*an+e(t(il -uel-ue c*ose ? Exercice 1.. /lus di00icile, 'ais c)est un classi-ue absolu, -u)il 0aut absolu'ent 'a1triser & crire un al+orit*'e per'ettant d)c*an+er les valeurs de deux variables A et B, et ce -uel -ue soit leur contenu pralable. Exercice 1.2 3ne variante du prcdent & on dispose de trois variables A, B et . Ecrive4 un al+orit*'e trans0rant 5 B la valeur de A, 5 la valeur de B et 5 A la valeur de 6tou7ours -uels -ue soient les contenus pralables de ces variables8. Exercice 1.9 Que produit l)al+orit*'e suivant ? Variables A, B, en Caractres Dbut A :#23: B :12: A+B Fin Exercice 1.; Que produit l)al+orit*'e suivant ? Variables A, B, en Caractres Dbut A :#23: 2

B :12: A<B Fin

PARTIE 1 Corrigs des Exercices

Exercice 1.1 Aprs =a valeur des variables est & A1 A>1 B>? BA+3 A>1 B># A3 A=3 =! Exercice 1.2 Aprs =a valeur des variables est & A! A>! B>? >? B3 A>! B>3 >? A+B A>! B>3 >9 A2 A>2 B>3 >9 B"A A=" =3 C=1 Exercice 1.3 Aprs =a valeur des variables est & A! A>! B>? BA+# A>! B>; AA+1 A>. B>; BA"# A=# =" Exercice 1.# Aprs =a valeur des variables est & A3 A>3 B>? >? B 1$ A>3 B > 1$ >? A+B A>3 B > 1$ > 13 BA+B A>3 B > 13 > 13 A A = 13 = 13 C = 13 Exercice 1.!

Aprs =a valeur des variables est & A! A>! B>? B2 A>! B>2 AB A>2 B>2 BA A=" =" =es deux dernires instructions ne per'ettent donc pas d)c*an+er les deux valeurs de B et A, puis-ue l)une des deux valeurs 6celle de A8 est ici crase. ,i l)on inverse les deux dernires instructions, cela ne c*an+era rien du tout, *or'is le 0ait -ue cette 0ois c)est la valeur de B -ui sera crase.

Exercice 1.. Dbut ? A AB B Fin @n est obli+ de passer par une variable dite te'poraire 6la variable Exercice 1.2 Dbut ? A B BA AA Fin En 0ait, -uel -ue soit le no'bre de variables, une seule variable te'poraire su00it? Exercice 1.9 Bl ne peut produire -u)une erreur d)excution, puis-u)on ne peut pas additionner des caractres. Exercice 1.; ?En revanc*e, on peut les concatner. A la 0in de l)al+orit*'e, donc :#2312:.

8.

vaudra

PARTIE " Enonce des Exercices

Exercice 2.1 Quel rsultat produit le pro+ra''e suivant ? Cariables val, double nu'ri-ues Abut Cal 231 Aouble Cal D 2 Ecrire Cal Ecrire Aouble Ein Exercice 2.2 Ecrire un pro+ra''e -ui de'ande un no'bre 5 l)utilisateur, puis -ui calcule et a00ic*e le carr de ce no'bre.

Exercice 2.3 Ecrire un pro+ra''e -ui lit le prix FG d)un article, le no'bre d)articles et le taux de GCA, et -ui 0ournit le prix total GG correspondant. Eaire en sorte -ue des libells apparaissent claire'ent. Exercice 2.# Ecrire un al+orit*'e utilisant des variables de tHpe c*a1ne de caractres, et a00ic*ant -uatre variantes possibles de la clbre I belle 'ar-uise, vos beaux Heux 'e 0ont 'ourir d)a'our J. @n ne se soucie pas de la ponctuation, ni des 'a7uscules. PARTIE " Corrigs des Exercices

Exercice 2.1 @n verra appara1tre 5 l)cran 231, puis #.2 6-ui vaut 231 D 28 Exercice 2.2 Variables nb, carr en Entier Dbut Ecrire :Entre4 un no'bre &: $ire nb carr nb D nb Ecrire :,on carr est & :, carr Fin

En 0ait, on pourrait tout aussi bien cono'iser la variable carr en re'plaKant les deux avant(dernires li+nes par & Ecrire :,on carr est & :, nbDnb Lest une -uestion de stHle M dans un cas, on privil+ie la lisibilit de lLal+orit*'e, dans lLautre, on privil+ie lLcono'ie dLune variable. Exercice 2.3 Variables nb, p*t, ttva, pttc en %u&ri'ue Dbut Ecrire :Entre4 le prix *ors taxes &: $ire p*t Ecrire :Entre4 le no'bre d)articles &: $ire nb Ecrire :Entre4 le taux de GCA &: $ire ttva pttc nb D p*t D 61 + ttva8 Ecrire :=e prix toutes taxes est & :, pttc Fin =5 aussi, on pourrait s-uee4er une variable et une li+ne en crivant directe'ent. & Ecrire :=e prix toutes taxes est & :, nb D p*t D 61 + ttva8 Lest plus rapide, plus l+er en ''oire, 'ais un peu plus di00icile 5 relire 6et 5 crire N8 Exercice 2.# Variables t1, t2, t3, t# en Caractre Dbut t1 :belle %ar-uise: t2 :vos beaux Heux: t3 :'e 0ont 'ourir: t# :d)a'our: Ecrire t1 < : : < t2 < : : < t3 < : : < t# Ecrire t3 < : : < t2 < : : < t# < : : < t1 Ecrire t2 < : : < t3 < : : < t1 < : : < t# Ecrire t# < : : < t1 < : : < t2 < : : < t3 Fin PARTIE 3 Enonce des Exercices

Exercice 3.1 Ecrire un al+orit*'e -ui de'ande un no'bre 5 l)utilisateur, et l)in0or'e ensuite si ce no'bre est positi0 ou n+ati0 6on laisse de cOt le cas oP le no'bre vaut 4ro8.

Exercice 3.2 Ecrire un al+orit*'e -ui de'ande deux no'bres 5 l)utilisateur et l)in0or'e ensuite si leur produit est n+ati0 ou positi0 6on laisse de cOt le cas oP le produit est nul8. Attention toute0ois & on ne doit (as calculer le produit des deux no'bres. Exercice 3.3 Ecrire un al+orit*'e -ui de'ande trois no's 5 l)utilisateur et l)in0or'e ensuite s)ils sont ran+s ou non dans l)ordre alp*abti-ue. Exercice 3.# Ecrire un al+orit*'e -ui de'ande un no'bre 5 l)utilisateur, et l)in0or'e ensuite si ce no'bre est positi0 ou n+ati0 6on inclut cette 0ois le traite'ent du cas oP le no'bre vaut 4ro8. Exercice 3.! Ecrire un al+orit*'e -ui de'ande deux no'bres 5 l)utilisateur et l)in0or'e ensuite si le produit est n+ati0 ou positi0 6on inclut cette 0ois le traite'ent du cas oP le produit peut Qtre nul8. Attention toute0ois, on ne doit pas calculer le produit N Exercice 3.. Ecrire un al+orit*'e -ui de'ande l)R+e d)un en0ant 5 l)utilisateur. Ensuite, il l)in0or'e de sa cat+orie &

:/oussin: de . 5 2 ans :/upille: de 9 5 ; ans :%ini'e: de 1$ 5 11 ans : adet: aprs 12 ans

/eut(on concevoir plusieurs al+orit*'es -uivalents 'enant 5 ce rsultat ? PARTIE 3 Corrigs des Exercices

Exercice 3.1 Variable n en Entier Dbut Ecrire :Entre4 un no'bre & : $ire n )i n S $ Alors 7

Ecrire : e no'bre est positi0T )inon Ecrire : e no'bre est n+ati0: Finsi Ein Exercice 3.2 Variables ', n en Entier Dbut Ecrire :Entre4 deux no'bres & : $ire ', n )i 6' S $ EG n S $8 @3 6' U $ EG n U $8 Alors Ecrire :=eur produit est positi0: )inon Ecrire :=eur produit est n+ati0: Finsi Fin Exercice 3.3 Variables a, b, c en Caractre Dbut Ecrire :Entre4 successive'ent trois no's & : $ire a, b, c )i a U b EG b U c Alors Ecrire : es no's sont classs alp*abti-ue'ent: )inon Ecrire : es no's ne sont pas classs: Finsi Fin

Exercice 3.# Variable n en Entier Dbut Ecrire :Entre4 un no'bre & : $ire n )i n U $ Alors Ecrire : e no'bre est n+ati0: )inon)i n > $ Alors Ecrire : e no'bre est nul: )inon Ecrire : e no'bre est positi0: Finsi Fin

Exercice 3.! Variables ', n en Entier Dbut Ecrire :Entre4 deux no'bres & : $ire ', n )i ' > $ @3 n > $ Alors Ecrire :=e produit est nul: )inon)i 6' U $ EG n U $8 @3 6' S $ EG n S $8 Alors Ecrire :=e produit est positi0: )inon Ecrire :=e produit est n+ati0: Finsi Fin ,i on sou*aite si'pli0ier l)criture de la condition lourde du ,inon,i, on peut tou7ours passer par des variables boolennes inter'diaires. 3ne astuce de sioux consiste +ale'ent 5 e'ploHer un Vor 6cLest lLun des rares cas dans les-uels il est pertinent8 Exercice 3.. Variable a+e en Entier Dbut Ecrire :Entre4 l)R+e de l)en0ant & : $ire a+e )i a+e S> 12 Alors Ecrire : at+orie adet: )inon)i a+e S> 1$ Alors Ecrire : at+orie %ini'e: )inon)i a+e S> 9 Alors Ecrire : at+orie /upille: )inon)i a+e S> . Alors Ecrire : at+orie /oussin: Finsi Fin @n peut vide''ent crire cet al+orit*'e de di00rentes 0aKons, ne serait( ce -u)en co''enKant par la cat+orie la plus 7eune. PARTIE ! Enonce des Exercices

Exercice #.1 Eor'ule4 un al+orit*'e -uivalent 5 l)al+orit*'e suivant & )i Gutu S Goto + # @3 Gata > :@W: Alors Gutu Gutu + 1 )inon Gutu Gutu " 1 Finsi

Exercice #.2 et al+orit*'e est destin 5 prdire lLavenir, et il doit Qtre in0aillible N Bl lira au clavier l)*eure et les 'inutes, et il a00ic*era l)*eure -u)il sera une 'inute plus tard. /ar exe'ple, si lLutilisateur tape 21 puis 32, lLal+orit*'e doit rpondre & :Aans une 'inute, il sera 21 *eure6s8 33:. XB & on suppose -ue lLutilisateur entre une *eure valide. /as besoin donc de la vri0ier. Exercice #.3 Ae 'Q'e -ue le prcdent, cet al+orit*'e doit de'ander une *eure et en a00ic*er une autre. %ais cette 0ois, il doit +rer +ale'ent les secondes, et a00ic*er lL*eure -uLil sera une seconde plus tard. /ar exe'ple, si lLutilisateur tape 21, puis 32, puis 9, lLal+orit*'e doit rpondre & :Aans une seconde, il sera 21 *eure6s8, 32 'inute6s8 et ; seconde6s8:. XB & l5 encore, on suppose -ue lLutilisateur entre une date valide. Exercice #.# 3n 'a+asin de repro+rap*ie 0acture $,1$ E les dix pre'ires p*otocopies, $,$; E les vin+t suivantes et $,$9 E au(del5. Ecrive4 un al+orit*'e -ui de'ande 5 l)utilisateur le no'bre de p*otocopies e00ectues et -ui a00ic*e la 0acture correspondante. Exercice #.! =es *abitants de Yor+lub paient l)i'pOt selon les r+les suivantes &

les *o''es de plus de 2$ ans paient l)i'pOt les 0e''es paient l)i'pOt si elles ont entre 19 et 3! ans les autres ne paient pas d)i'pOt

=e pro+ra''e de'andera donc l)R+e et le sexe du Yor+lubien, et se prononcera donc ensuite sur le 0ait -ue l)*abitant est i'posable. Exercice #.. =es lections l+islatives, en Zui+nolerie ,eptentrionale, obissent 5 la r+le suivante &

lors-ue lLun des candidats obtient plus de !$[ des su00ra+es, il est lu ds le pre'ier tour. en cas de deuxi'e tour, peuvent participer uni-ue'ent les candidats aHant obtenu au 'oins 12,![ des voix au pre'ier tour.

Cous deve4 crire un al+orit*'e -ui per'ette la saisie des scores de -uatre candidats au pre'ier tour. et al+orit*'e traitera ensuite le 10

candidat nu'ro 1 6et uni'ue&ent lui8 & il dira sLil est lu, battu, sLil se trouve en ballotta+e 0avorable 6il participe au second tour en tant arriv en tQte 5 lLissue du pre'ier tour8 ou d0avorable 6il participe au second tour sans avoir t en tQte au pre'ier tour8. Exercice #.2 3ne co'pa+nie dLassurance auto'obile propose 5 ses clients -uatre 0a'illes de tari0s identi0iables par une couleur, du 'oins au plus onreux & tari0s bleu, vert, oran+e et rou+e. =e tari0 dpend de la situation du conducteur &

un conducteur de 'oins de 2! ans et titulaire du per'is depuis 'oins de deux ans, se voit attribuer le tari0 rou+e, si toute0ois il nLa 7a'ais t responsable dLaccident. ,inon, la co'pa+nie re0use de lLassurer. un conducteur de 'oins de 2! ans et titulaire du per'is depuis plus de deux ans, ou de plus de 2! ans 'ais titulaire du per'is depuis 'oins de deux ans a le droit au tari0 oran+e sLil nLa 7a'ais provo-u dLaccident, au tari0 rou+e pour un accident, sinon il est re0us. un conducteur de plus de 2! ans titulaire du per'is depuis plus de deux ans bn0icie du tari0 vert sLil nLest 5 lLori+ine dLaucun accident et du tari0 oran+e pour un accident, du tari0 rou+e pour deux accidents, et re0us au(del5 Ae plus, pour encoura+er la 0idlit des clients accepts, la co'pa+nie propose un contrat de la couleur i''diate'ent la plus avanta+euse sLil est entr dans la 'aison depuis plus dLun an.

Ecrire lLal+orit*'e per'ettant de saisir les donnes ncessaires 6sans contrOle de saisie8 et de traiter ce probl'e. Avant de se lancer 5 corps perdu dans cet exercice, on pourra r0lc*ir un peu et sLapercevoir -uLil est plus si'ple -uLil nLen a lLair 6cela sLappelle 0aire une analHse N8 Exercice #.9 Ecrive4 un al+orit*'e -ui a prs avoir de'and un nu'ro de 7our, de 'ois et dLanne 5 lLutilisateur, renvoie sLil sLa+it ou non dLune date valide. et exercice est certes d)un 'an-ue d)ori+inalit a00li+eant, 'ais aprs tout, en al+orit*'i-ue co''e ailleurs, il 0aut conna1tre ses classi-ues N Et -uand on a 0ait cela une 0ois dans sa vie, on apprcie pleine'ent l)existence d)un tHpe nu'ri-ue I date J dans certains lan+a+es?8. Bl nLest sans doute pas inutile de rappeler rapide'ent -ue le 'ois de 0vrier co'pte 29 7ours, sau0 si l)anne est bissextile, au-uel cas il en co'pte 2;. =)anne est bissextile si elle est divisible par -uatre. Goute0ois, les annes divisibles par 1$$ ne sont pas bissextiles, 'ais les annes divisibles par #$$ le sont. @u0 N 3n dernier petit dtail & vous ne save4 pas, pour l)instant, expri'er correcte'ent en pseudo(code l)ide -u)un no'bre A est divisible par un no'bre B. Aussi, vous vous contentere4 d)crire en bons tl+rap*istes -ue A divisible par B se dit I A dp B J. 11

PARTIE ! Corrigs des Exercices

Exercice #.1 Aucune di00icult, il su00it d)appli-uer la r+le de la trans0or'ation du @3 en EG vue en cours 6loi de %or+an8. Attention toute0ois 5 la ri+ueur dans la trans0or'ation des conditions en leur contraire... )i Gutu U> Goto + # EG Gata US :@W: Alors Gutu Gutu ( 1 )inon Gutu Gutu + 1 Finsi Exercice #.2 Variables *, ' en %u&ri'ue Dbut Ecrire :Entre4 les *eures, puis les 'inutes & : $ire *, ' ''+1 )i ' > .$ Alors '$ **+1 Fin)i )i * > 2# Alors *$ Fin)i Ecrire :Aans une 'inute il sera :, *, :*eure6s8 :, ', :'inute6s8: Fin Exercice #.3 Variables *, ', s en %u&ri'ue Dbut Ecrire :Entre4 les *eures, puis les 'inutes, puis les secondes & : $ire *, ', s ss+1 )i s > .$ Alors s$ ''+1 Fin)i )i ' > .$ Alors '$ **+1 12

Fin)i )i * > 2# Alors *$ Fin)i Ecrire :Aans une seconde il sera :, *, :*:, ', :' et :, s, :s: Fin Exercice #.# Variables n, p en %u&ri'ue Dbut Ecrire :Xo'bre de p*otocopies & : $ire n )i n U> 1$ Alors p n D $,1 )inon)i n U> 3$ Alors p 1$ D $,1 + 6n " 1$8 D $,$; )inon p 1$ D $,1 + 2$ D $,$; + 6n " 3$8 D $,$9 Fin)i Ecrire :=e prix total est& :, p Fin Exercice #.! Variable sex en Caractre Variable a+e en %u&ri'ue Variables 1, 2 en oolen Dbut Ecrire :Entre4 le sexe 6%\E8 & : $ire sex Ecrire :Entre4 l)R+e& : $ire a+e 1 sex > :%: EG a+e S 2$ 2 sex > :E: EG 6a+e S 19 EG a+e U 3!8 )i 1 ou 2 Alors Ecrire :B'posable: )inon Ecrire :Xon B'posable: Fin)i Fin Exercice #.. et exercice, du pur point de vue al+orit*'i-ue, nLest pas trs 'c*ant. En revanc*e, il reprsente di+ne'ent la cat+orie des noncs pi+s. En e00et, rien de plus 0acile -ue dLcrire & si le candidat a plus de !$[, il est lu, sinon sLil a plus de 12,! [, il est au deuxi'e tour, sinon il est li'in. F * *... 'ais il ne 0aut pas oublier -ue le candidat peut trs bien avoir eu 2$ [ 'ais Qtre tout de 'Q'e li'in, tout si'ple'ent parce -ue lLun des autres a 0ait plus de !$ [ et donc -uLil nLH a pas de deuxi'e tour N... 13

%oralit & ne 7a'ais se 7eter sur la pro+ra''ation avant dLavoir soi+neuse'ent 'en lLanalHse du probl'e 5 traiter. Variables A, B, , A en %u&ri'ue Dbut Ecrire :Entre4 les scores des -uatre prtendants &: $ire A, B, , A 1 A S !$ 2 B S !$ ou S !$ ou A S !$ 3 A S> B et A S> et A S> A # A S> 12,! )i 1 Alors Ecrire ]Elu au pre'ier tour: )inonsi 2 ou Xon6 #8 Alors Ecrire ]Battu, li'in, sorti NNNT )inon)i 3 Alors Ecrire :Ballota+e 0avorable: )inon Ecrire :Ballota+e d0avorable: Fin)i Fin Exercice #.2 =5 encore, on illustre lLutilit dLune bonne analHse. ^e propose deux corri+s di00rents. =e pre'ier suit lLnonc pas 5 pas. Lest 7uste, 'ais cLest vrai'ent lourd. =a deuxi'e version sLappuie sur une vraie co'pr*ension dLune situation pas si e'brouille -uLelle nLen a lLair. Aans les deux cas, un recours aux variables boolennes are srieuse'ent lLcriture. Aonc, pre'ier corri+, on suit le texte de lLnonc pas 5 pas & Variables a+e, per', acc, assur en %u&ri'ue Variables 1, 2, 3 en oolen Variable situ en Caractre Dbut Ecrire :Entre4 l)R+e& : $ire a+e Ecrire :Entre4 le no'bre dLannes de per'is& : $ire per' Ecrire :Entre4 le no'bre dLaccidents& : $ire acc Ecrire :Entre4 le no'bre dLannes dLassurance& : $ire assur 1 a+e S> 2! 2 per' S> 2 3 assur S 1 )i Xon6 18 et Xon6 28 Alors )i acc > $ Alors situ :_ou+e: )inon situ :_e0us: 14

Fin)i )inonsi 66Xon6 18 et 28 ou 6 1 et Xon6 288 Alors )i acc > $ Alors situ :@ran+e: )inon)i acc > 1 Alors situ :_ou+e: )inon situ :_e0us: Fin)i )inon )i acc > $ Alors situ :Cert: )inon)i acc > 1 Alors situ :@ran+e: )inon)i acc > 2 Alors situ :_ou+e: )inon situ :_e0us: Fin)i Fin)i )i 3 Alors )i situ > :_ou+e: Alors situ :@ran+e: )inon)i situ > :@ran+e: Alors situ :@ran+e: )inon)i situ > :Cert: Alors situ :Bleu: Fin)i Fin)i Ecrire :Cotre situation & :, situ Fin Cous trouve4 cela co'pli-u ? @*, certes oui, Ka lLest N Et dLautant plus -uLen lisant entre les li+nes, on pouvait sLapercevoir -ue ce +ali'atias de tari0s recouvre en 0ait une lo+i-ue trs si'ple & un sHst'e 5 points. Et il su00it de co'ptabiliser les points pour -ue tout sLclaire... _eprenons 7uste aprs lLa00ectation des trois variables boolennes 1, 2, et 3. @n crit & /$ )i Xon6 18 Alors //+1 Fin)i )i Xon6 28 Alors //+1 Fin)i / / + acc )i / U 3 et 3 Alors //(1 Fin)i )i / > (1 Alors situ :Bleu: )inon)i / > $ Alors 15

situ :Cert: )inon)i / > 1 Alors situ :@ran+e: )inon)i / > 2 Alors situ :_ou+e: )inon situ :_e0us: Fin)i Ecrire :Cotre situation & :, situ Fin

Exercice #.9 En ce -ui concerne le dbut de cet al+orit*'e, il n)H a aucune di00icult. )est de la saisie bQte et 'Q'e pas 'c*ante& Variables ^, %, A, ^%ax en %u&ri'ue Variables C^, C%, B en ooleen Dbut Ecrire :Entre4 le nu'ro du 7our: $ire ^ Ecrire :Entre4 le nu'ro du 'ois: $ire % Ecrire :Entre4 lLanne: $ire A Lest vide''ent ensuite -ue les ennuis co''encent? =a pre'ire 'anire dLaborder la c*ose consiste 5 se dire -ue 0onda'entale'ent, la structure lo+i-ue de ce probl'e est trs si'ple. ,i nous crons deux variables boolennes C^ et C%, reprsentant respective'ent la validit du 7our et du 'ois entrs, la 0in de lLal+orit*'e sera dLune si'plicit bibli-ue 6l)anne est valide par d0inition, si on vacue le dbat bH4antin concernant l)existence de l)anne 4ro8 & )i C^ et C% alors Ecrire :=a date est valide: )inon Ecrire :=a date nLest pas valide: Fin)i Goute la di00icult consiste 5 a00ecter correcte'ent les variables C^ et C%, selon les valeurs des variables ^, % et A. Aans lLabsolu, C^ et C% pourraient Qtre les ob7ets dLune a00ectation 'onstrueuse, avec des conditions atroce'ent co'poses. %ais 0ranc*e'ent, crire ces conditions en une seule 0ois est un travail de bndictin sans +rand intrQt. /our viter dLen arriver 5 une telle extr'it, on peut srier la di00icult en crant deux variables suppl'entaires & & variable boolenne -ui indi-ue sLil sLa+it dLune anne bissextile *+ax & variable nu'ri-ue -ui indi-uera le dernier 7our valable pour le 'ois entr.

16

Avec tout cela, on peut H aller et en ressortir vivant. @n co''ence par initialiser nos variables boolennes, puis on traite les annes, puis les 'ois, puis les 7ours. @n note :dp: la condition :divisible par: & B A dp #$$ ou 6non6A dp 1$$8 et A dp #8 ^'ax $ C% % S> 1 et % >U 12 )i C% Alors )i % > 2 et B Alors ^%ax 2; )inon)i % > 2 Alors ^%ax 29 )inon)i % > # ou % > . ou % > ; ou % > 11 Alors ^%ax 3$ )inon ^%ax 31 Fin)i C^ ^ S> 1 et ^ >U ^'ax Fin)i ette solution a le 'rite de ne pas trop co'pli-uer la structure des tests, et nota''ent de ne pas rpter lLcriture 0inale 5 lLcran. =es variables boolennes inter'diaires nous par+nent des conditions co'poses trop lourdes, 'ais celles(ci restent nan'oins srieuses. 3ne approc*e di00rente consisterait 5 li'iter les conditions co'poses, -uitte 5 le paHer par une structure beaucoup plus exi+eante de tests i'bri-us. =5 encore, on vite de 7ouer les extr'istes et lLon sLautorise -uel-ues conditions co'poses lors-ue cela nous si'pli0ie lLexistence. @n pourrait aussi dire -ue la solution prcdente :part de la 0in: du probl'e 6la date est elle valide ou non ?8, alors -ue celle -ui suit :part du dbut: 6-uelles sont les donnes entres au clavier ?8 & )i % U 1 ou % S 12 Alors Ecrire :Aate Bnvalide: )inon)i % > 2 Alors )i A dp #$$ Alors )i ^ U 1 ou ^ S 2; Alors Ecrire :Aate Bnvalide: )inon Ecrire :Aate Calide: Fin)i )inon)i A dp 1$$ Alors )i ^ U 1 ou ^ S 29 Alors Ecrire :Aate Bnvalide: )inon Ecrire :Aate Calide: Fin)i )inon)i A dp # Alors )i ^ U 1 ou ^ S 29 Alors Ecrire :Aate Bnvalide: )inon 17

Ecrire :Aate Calide: Fin)i )inon )i ^ U 1 ou ^ S 29 Alors Ecrire :Aate Bnvalide: )inon Ecrire :Aate Calide: Fin)i Fin)i )inon)i % > # ou % > . ou % > ; ou % > 11 Alors )i ^ U 1 ou ^ S 3$ Alors Ecrire :Aate Bnvalide: )inon Ecrire :Aate Calide: Fin)i )inon )i ^ U 1 ou ^ S 31 Alors Ecrire :Aate Bnvalide: )inon Ecrire :Aate Calide: Fin)i Fin)i @n voit -ue dans ce cas, lLalternative 0inale 6Aate valide ou invalide8 se trouve rpte un +rand no'bre de 0ois. e nLest en soi ni une bonne, ni une 'auvaise c*ose. Lest si'ple'ent une -uestion de c*oix stHlisti-ue. /ersonnelle'ent, 7Lavoue pr0rer asse4 nette'ent la pre'ire solution, -ui 0ait ressortir beaucoup plus claire'ent la structure lo+i-ue du probl'e 6il nLH a -uLune seule alternative, autant -ue cette alternative ne soit crite -uLune seule 0ois8. Bl convient en0in de citer une solution trs si'ple et l+ante, un peu plus di00icile peut(Qtre 5 i'a+iner du pre'ier coup, 'ais -ui avec le recul appara1t co''e trs i''diate. ,ur le 0ond, cela consiste 5 dire -uLil H a -uatre cas pour -uLune date soit valide & celui dLun 7our co'pris entre 1 et 31 dans un 'ois 5 31 7ours, celui dLun 7our co'pris entre 1 et 3$ dans un 'ois 5 3$ 7ours, celui dLun 7our co'pris entre 1 et 2; en 0vrier dLune anne bissextile, et celui dLun 7our de 0vrier co'pris entre 1 et 29. Ainsi & B 6A dp # et Xon6A dp 1$$88 ou A dp #$$ W1 6'>1 ou '>3 ou '>! ou '>2 ou '>9 ou '>1$ ou '>128 et 6^S>1 et ^>U318 W2 6'># ou '>. ou '>; ou '>118 et 6^S>1 et ^>U3$8 W3 '>2 et B et ^S>1 et ^>U2; W# '>2 et ^S>1 et ^>U29 )i W1 ou W2 ou W3 ou W# Alors Ecrire :Aate valide: )inon Ecrire :Aate non valide: Fin)i Fin

18

Gout est alors r+l avec -uel-ues variables boolennes et -uel-ues conditions co'poses, en un 'ini'u' de li+nes de code. =a 'orale de ce lon+ exercice ( et non 'oins lon+ corri+, cLest -uLun probl'e de test un peu co'pli-u ad'et une pliade de solutions 7ustes... ...%ais -ue certaines sont plus astucieuses -ue dLautres N PARTIE , Enonce des Exercices Exercice !.1 Ecrire un al+orit*'e -ui de'ande 5 l)utilisateur un no'bre co'pris entre 1 et 3 7us-u)5 ce -ue la rponse convienne. Exercice !.2 Ecrire un al+orit*'e -ui de'ande un no'bre co'pris entre 1$ et 2$, 7us-u)5 ce -ue la rponse convienne. En cas de rponse suprieure 5 2$, on 0era appara1tre un 'essa+e & I /lus petit N J, et inverse'ent, I /lus +rand N J si le no'bre est in0rieur 5 1$. Exercice !.3 Ecrire un al+orit*'e -ui de'ande un no'bre de dpart, et -ui ensuite a00ic*e les dix no'bres suivants. /ar exe'ple, si lLutilisateur entre le no'bre 12, le pro+ra''e a00ic*era les no'bres de 19 5 22.

Exercice !.# Ecrire un al+orit*'e -ui de'ande un no'bre de dpart, et -ui ensuite crit la table de 'ultiplication de ce no'bre, prsente co''e suit 6cas oP lLutilisateur entre le no'bre 28 & Gable de 2 & 2x1>2 2 x 2 > 1# 2 x 3 > 21 ? 2 x 1$ > 2$ Exercice !.! Ecrire un al+orit*'e -ui de'ande un no'bre de dpart, et -ui calcule la so''e des entiers 7us-u)5 ce no'bre. /ar exe'ple, si l)on entre !, le pro+ra''e doit calculer & 1 + 2 + 3 + # + ! > 1! XB & on sou*aite a00ic*er uni-ue'ent le rsultat, pas la dco'position du calcul.

19

Exercice !.. Ecrire un al+orit*'e -ui de'ande un no'bre de dpart, et -ui calcule sa 0actorielle. XB & la 0actorielle de 9, note 9 N, vaut 1x2x3x#x!x.x2x9 Exercice !.2 Ecrire un al+orit*'e -ui de'ande successive'ent 2$ no'bres 5 l)utilisateur, et -ui lui dise ensuite -uel tait le plus +rand par'i ces 2$ no'bres & Entre4 le no'bre nu'ro 1 & 12 Entre4 le no'bre nu'ro 2 & 1# etc. Entre4 le no'bre nu'ro 2$ & . =e plus +rand de ces no'bres est & 1# %odi0ie4 ensuite l)al+orit*'e pour -ue le pro+ra''e a00ic*e de surcro1t en -uelle position avait t saisie ce no'bre & )tait le no'bre nu'ro 2 Exercice !.9 _crire l)al+orit*'e prcdent, 'ais cette 0ois(ci on ne conna1t pas d)avance co'bien l)utilisateur sou*aite saisir de no'bres. =a saisie des no'bres s)arrQte lors-ue l)utilisateur entre un 4ro. Exercice !.; =ire la suite des prix 6en euros entiers et ter'ine par 4ro8 des ac*ats d)un client. alculer la so''e -u)il doit, lire la so''e -u)il paHe, et si'uler la re'ise de la 'onnaie en a00ic*ant les textes :1$ Euros:, :! Euros: et :1 Euro: autant de 0ois -u)il H a de coupures de c*a-ue sorte 5 rendre.

Exercice !.1$ `crire un al+orit*'e -ui per'ette de conna1tre ses c*ances de +a+ner au tierc, -uart, -uint et autres i'pOts volontaires. @n de'ande 5 l)utilisateur le no'bre de c*evaux partants, et le no'bre de c*evaux 7ous. =es deux 'essa+es a00ic*s devront Qtre & Aans l)ordre & une c*ance sur V de +a+ner Aans le dsordre & une c*ance sur a de +a+ner V et a nous sont donns par la 0or'ule suivante, si n est le no'bre de c*evaux partants et p le no'bre de c*evaux 7ous 6on rappelle -ue le si+ne N si+ni0ie :0actorielle:, co''e dans lLexercice !.. ci(dessus8 & V > n N \ 6n ( p8 N a > n N \ 6p N D 6n " p8 N8

20

XB & cet al+orit*'e peut Qtre crit d)une 'anire si'ple, 'ais relative'ent peu per0or'ante. ,es per0or'ances peuvent Qtre sin+ulire'ent au+'entes par une petite astuce. Cous co''encere4 par crire la 'anire la plus si'ple, puis vous identi0iere4 le probl'e, et crire4 une deuxi'e version per'ettant de le rsoudre. PARTIE , Corrigs des Exercices

Exercice !.1 Variable X en Entier Debut X$ Ecrire :Entre4 un no'bre entre 1 et 3: Tant-ue X U 1 ou X S 3 $ire X )i X U 1 ou X S 3 Alors Ecrire :,aisie errone. _eco''ence4T Fin)i FinTant-ue Fin Exercice !.2 Variable X en Entier Debut X$ Ecrire :Entre4 un no'bre entre 1$ et 2$: Tant-ue X U 1$ ou X S 2$ $ire X )i X U 1$ Alors Ecrire :/lus +rand N: )inon)i X S 2$ Alors Ecrire :/lus petit N: Fin)i FinTant-ue Fin Exercice !.3 Variables X, i en Entier Debut Ecrire :Entre4 un no'bre & : $ire X Ecrire :=es 1$ no'bres suivants sont & : Pour i X + 1 5 X + 1$ Ecrire i

21

i )ui.ant Fin Exercice !.# Variables X, i en Entier Debut Ecrire :Entre4 un no'bre & : $ire X Ecrire :=a table de 'ultiplication de ce no'bre est & : Pour i 1 5 1$ Ecrire X, : x :, i, : > :, nDi i )ui.ant Fin Exercice !.! Variables X, i, ,o' en Entier Debut Ecrire :Entre4 un no'bre & : $ire X ,o' $ Pour i 1 5 X ,o' ,o' + i i )ui.ant Ecrire :=a so''e est & :, ,o' Fin Exercice !.. Variables X, i, E en Entier Debut Ecrire :Entre4 un no'bre & : $ire X E1 Pour i 2 5 X EEDi i )ui.ant Ecrire :=a 0actorielle est & :, E Fin

Exercice !.2 Variables X, i, /Z en Entier Debut /Z $ Pour i 1 5 2$ Ecrire :Entre4 un no'bre & : $ire X 22

)i i > 1 ou X S /Z Alors /Z X Fin)i i )ui.ant Ecrire :=e no'bre le plus +rand tait & :, /Z Fin En li+ne 3, on peut 'ettre n)i'porte -uoi dans /Z, il su00it -ue cette variable soit a00ecte pour -ue le pre'ier passa+e en li+ne 2 ne provo-ue pas dLerreur. /our la version a'liore, cela donne & Variables X, i, /Z, B/Z en Entier Debut /Z $ Pour i 1 5 2$ Ecrire :Entre4 un no'bre & : $ire X )i i > 1 ou X S /Z Alors /Z X B/Z i Fin)i i )ui.ant Ecrire :=e no'bre le plus +rand tait & :, /Z Ecrire :Bl a t saisi en position nu'ro :, B/Z Fin Exercice !.9 Variables X, i, /Z, B/Z en Entier Debut X1 i$ /Z $ Tant-ue X US $ Ecrire :Entre4 un no'bre & : $ire X ii+1 )i i > 1 ou X S /Z Alors /Z X B/Z i Fin)i FinTant-ue Ecrire :=e no'bre le plus +rand tait & :, /Z Ecrire :Bl a t saisi en position nu'ro :, B/Z Fin Exercice !.; Variables EE, so'due, %, B/Z, _este, Xb1$E, Xb!E En Entier Debut E1 so'due $ 23

Tant-ue E US $ Ecrire :Entre4 le 'ontant & : $ire E so'due so'due + E FinTant-ue Ecrire :Cous deve4 &:, E, : euros: Ecrire :%ontant vers &: $ire % _este % ( E Xb1$E $ Tant-ue _este S> 1$ Xb1$E Xb1$E + 1 _este _este " 1$ FinTant-ue Xb!E $ )i _este S> ! Xb!E 1 _este _este " ! Fin)i Ecrire :_endu de la 'onnaie &: Ecrire :Billets de 1$ E & :, Xb1$E Ecrire :Billets de ! E & :, Xb!E Ecrire :/ices de 1 E & :, reste Fin Exercice !.1$ ,pontan'ent, on est tent dLcrire lLal+orit*'e suivant & Cariables X, /, i, Xu', Ano1, Ano2 en Entier Aebut Ecrire :Entre4 le no'bre de c*evaux partants & : $ire X Ecrire :Entre4 le no'bre de c*evaux 7ous & : $ire / Xu' 1 Pour i 2 5 X Xu' Xu' D i i )ui.ant Ano1 1 Pour i 2 5 X(/ Ano1 Ano1 D i i )ui.ant Ano2 1 Pour i 2 5 / Ano2 Ano2 D i i )ui.ant Ecrire :Aans l)ordre, une c*ance sur :, Xu' \ Ano1 Ecrire :Aans le dsordre, une sur :, Xu' \ 6Ano1 D Ano28 Fin

24

ette version, 0or'elle'ent 7uste, co'porte tout de 'Q'e deux 0aiblesses. =a pre'ire, et la plus +rave, concerne la 'anire dont elle calcule le rsultat 0inal. elui(ci est le -uotient dLun no'bre par un autre M or, ces no'bres auront rapide'ent tendance 5 Qtre trs +rands. En calculant, co''e on le 0ait ici, dLabord le nu'rateur, puis ensuite le dno'inateur, on prend le ris-ue de de'ander 5 la 'ac*ine de stocber des no'bres trop +rands pour -uLelle soit capable de les coder 6c0. le pra'bule8. Lest dLautant plus bQte -ue rien ne nous obli+e 5 procder ainsi & on nLest pas obli+ de passer par la division de deux trs +rands no'bres pour obtenir le rsultat voulu. =a deuxi'e re'ar-ue est -uLon a pro+ra'' ici trois boucles successives. @r, en H re+ardant bien, on peut voir -uLaprs si'pli0ication de la 0or'ule, ces trois boucles co'portent le 'Q'e no'bre de tours N 6si vous ne 'e croHe4 pas, crive4 un exe'ple de calcul et bi00e4 les no'bres identi-ues au nu'rateur et au dno'inateur8. e triple calcul 6ces trois boucles8 peut donc Qtre ra'en6es8 5 un6e8 seul6e8. Et voil5 le travail, -ui est non seule'ent bien plus court, 'ais aussi plus per0or'ant & Variables X, /, i, @, E en Entier Debut Ecrire :Entre4 le no'bre de c*evaux partants & : $ire X Ecrire :Entre4 le no'bre de c*evaux 7ous & : $ire / A1 B1 Pour i 1 5 / A A D 6i + X ( /8 BBDi i )ui.ant Ecrire :Aans l)ordre, une c*ance sur :, A Ecrire :Aans le dsordre, une c*ance sur :, A \ B Fin PARTIE # Enonce des Exercices

Exercice ..1 Ecrire un al+orit*'e -ui dclare et re'plisse un tableau de 2 valeurs nu'ri-ues en les 'ettant toutes 5 4ro. Exercice ..2 Ecrire un al+orit*'e -ui dclare et re'plisse un tableau contenant les six voHelles de l)alp*abet latin. 25

Exercice ..3 Ecrire un al+orit*'e -ui dclare un tableau de ; notes, dont on 0ait ensuite saisir les valeurs par l)utilisateur. Exercice ..# Que produit l)al+orit*'e suivant ? Tableau Xb6!8 en Entier Variable i en Entier Dbut Pour i $ 5 ! Xb6i8 i D i i sui.ant Pour i $ 5 ! Ecrire Xb6i8 i sui.ant Fin /eut(on si'pli0ier cet al+orit*'e avec le 'Q'e rsultat ? Exercice ..! Que produit l)al+orit*'e suivant ? Tableau X6.8 en Entier Variables i, b en Entier Dbut X6$8 1 Pour b 1 5 . X6b8 X6b(18 + 2 b )ui.ant Pour i $ 5 . Ecrire X6i8 i sui.ant Fin /eut(on si'pli0ier cet al+orit*'e avec le 'Q'e rsultat ? Exercice ... Que produit l)al+orit*'e suivant ? Tableau ,uite628 en Entier Variable i en Entier Dbut ,uite6$8 1 ,uite618 1 Pour i 2 5 2 ,uite6i8 ,uite6i(18 + ,uite6i(28 i sui.ant Pour i $ 5 2 26

Ecrire ,uite6i8 i sui.ant Fin Exercice ..2 Ecrive4 la 0in de l)al+orit*'e ..3 a0in -ue le calcul de la 'oHenne des notes soit e00ectu et a00ic* 5 l)cran. Exercice ..9 Ecrive4 un al+orit*'e per'ettant 5 l)utilisateur de saisir un no'bre -uelcon-ue de valeurs, -ui devront Qtre stocbes dans un tableau. =)utilisateur doit donc co''encer par entrer le no'bre de valeurs -u)il co'pte saisir. Bl e00ectuera ensuite cette saisie. En0in, une 0ois la saisie ter'ine, le pro+ra''e a00ic*era le no'bre de valeurs n+atives et le no'bre de valeurs positives. Exercice ..; Ecrive4 un al+orit*'e calculant la so''e des valeurs d)un tableau 6on suppose -ue le tableau a t pralable'ent saisi8. Exercice ..1$ Ecrive4 un al+orit*'e constituant un tableau, 5 partir de deux tableaux de 'Q'e lon+ueur pralable'ent saisis. =e nouveau tableau sera la so''e des l'ents des deux tableaux de dpart. Gableau 1 & # Gableau 2 & 2 . ! 2 1 3 2 # 9 2 ; 1 ! # .

Gableau 5 constituer & 11 1# 12 11 2 9 11 1$

Exercice ..11 Gou7ours 5 partir de deux tableaux prcde''ent saisis, crive4 un al+orit*'e -ui calcule le sc*trou'p0 des deux tableaux. /our calculer le sc*trou'p0, il 0aut 'ultiplier c*a-ue l'ent du tableau 1 par c*a-ue l'ent du tableau 2, et additionner le tout. /ar exe'ple si lLon a & Gableau 1 & # Gableau 2 & 9 2 12

27

=e ,c*trou'p0 sera & 3 D # + 3 D 9 + 3 D 2 + 3 D 12 + . D # + . D 9 + . D 2 + . D 12 > 22; Exercice ..12 Ecrive4 un al+orit*'e -ui per'ette la saisie d)un no'bre -uelcon-ue de valeurs, sur le principe de l)ex ..9. Goutes les valeurs doivent Qtre ensuite au+'entes de 1, et le nouveau tableau sera a00ic* 5 l)cran. Exercice ..13 Ecrive4 un al+orit*'e per'ettant, tou7ours sur le 'Q'e principe, 5 l)utilisateur de saisir un no'bre dter'in de valeurs. =e pro+ra''e, une 0ois la saisie ter'ine, renvoie la plus +rande valeur en prcisant -uelle position elle occupe dans le tableau. @n prendra soin d)e00ectuer la saisie dans un pre'ier te'ps, et la rec*erc*e de la plus +rande valeur du tableau dans un second te'ps. Exercice ..1# Gou7ours et encore sur le 'Q'e principe, crive4 un al+orit*'e per'ettant, 5 l)utilisateur de saisir les notes dLune classe. =e pro+ra''e, une 0ois la saisie ter'ine, renvoie le no'bre de ces notes suprieures 5 la 'oHenne de la classe. Partie # Corrigs des Exercices

Exercice ..1 Tableau Gruc6.8 en %u&ri'ue Variable i en %u&ri'ue Debut Pour i $ 5 . Gruc6i8 $ i )ui.ant Fin Exercice ..2 Tableau Gruc6!8 en Caractre Debut Gruc6$8 :a: Gruc618 :e: Gruc628 :i: Gruc638 :o:

28

Gruc6#8 :u: Gruc6!8 :H: Fin Exercice ..3 Tableau Xotes698 en %u&ri'ue Variable i en %u&ri'ue Pour i $ 5 9 Ecrire :Entre4 la note nu'ro :, i + 1 $ire Xotes6i8 i )ui.ant Fin

Exercice ..# et al+orit*'e re'plit un tableau avec six valeurs & $, 1, #, ;, 1., 2!. Bl les crit ensuite 5 l)cran. ,i'pli0ication & Tableau Xb6!8 en %u&ri'ue Variable i en %u&ri'ue Dbut Pour i $ 5 ! Xb6i8 i D i Ecrire Xb6i8 i )ui.ant Fin Exercice ..! et al+orit*'e re'plit un tableau avec les sept valeurs & 1, 3, !, 2, ;, 11, 13. Bl les crit ensuite 5 l)cran. ,i'pli0ication & Tableau X6.8 en %u&ri'ue Variables i, b en %u&ri'ue Dbut X6$8 1 Ecrire X6$8 Pour b 1 5 . X6b8 X6b(18 + 2 Ecrire X6b8 b )ui.ant Fin Exercice ... et al+orit*'e re'plit un tableau de 9 valeurs & 1, 1, 2, 3, !, 9, 13, 21 Exercice ..2 29

Variable , en %u&ri'ue Tableau Xotes698 en %u&ri'ue Debut s$ Pour i $ 5 9 Ecrire :Entre4 la note nc :, i + 1 $ire Xotes6i8 s s + Xotes6i8 i )ui.ant Ecrire :%oHenne &:, s\; Fin Exercice ..9 Variables Xb, Xbpos, Xbne+ en %u&ri'ue Tableau G68 en %u&ri'ue Debut Ecrire :Entre4 le no'bre de valeurs &: $ire Xb Redi& G6Xb(18 Xbpos $ Xbne+ $ Pour i $ 5 Xb ( 1 Ecrire :Entre4 le no'bre nc :, i + 1 $ire G6i8 )i G6i8 S $ alors Xbpos Xbpos + 1 )inon Xbne+ Xbne+ + 1 Finsi i )ui.ant Ecrire :Xo'bre de valeurs positives & :, Xbpos Ecrire :Xo'bre de valeurs n+atives & :, Xbne+ Fin Exercice ..; Variables i, ,o', X en %u&ri'ue Tableau G68 en %u&ri'ue Debut ? 6on ne pro+ra''e pas la saisie du tableau, dont on suppose -u)il co'pte X l'ents8 Redi& G6X(18 ? ,o' $ Pour i $ 5 X ( 1 ,o' ,o' + G6i8 i )ui.ant Ecrire :,o''e des l'ents du tableau & :, ,o' Fin 30

Exercice ..1$ Variables i, X en %u&ri'ue Tableaux G168, G268, G368 en %u&ri'ue Debut ? 6on suppose -ue G1 et G2 co'ptent X l'ents, et -u)ils sont d75 saisis8 Redi& G36X(18 ? Pour i $ 5 X ( 1 G36i8 G16i8 + G26i8 i )ui.ant Fin Exercice ..11 Variables i, 7, X1, X2, , en %u&ri'ue Tableaux G168, G268 en %u&ri'ue Debut ? @n ne pro+ra''e pas la saisie des tableaux G1 et G2. @n suppose -ue G1 possde X1 l'ents, et -ue G2 en possde G28 ? ,$ Pour i $ 5 X1 " 1 Pour 7 $ 5 X2 " 1 , , + G16i8 D G2678 7 )ui.ant i )ui.ant Ecrire :=e sc*trou'p0 est & :, , Fin Exercice ..12 Variables Xb, i en %u&ri'ue Tableau G68 en %u&ri'ue Debut Ecrire :Entre4 le no'bre de valeurs & : $ire Xb Redi& G6Xb(18 Pour i $ 5 Xb ( 1 Ecrire :Entre4 le no'bre nc :, i + 1 $ire G6i8 i )ui.ant Ecrire :Xouveau tableau & : Pour i $ 5 Xb " 1 G6i8 G6i8 + 1 Ecrire G6i8 i )ui.ant Fin 31

Exercice ..13 Variables Xb, /os'axi en %u&ri'ue Tableau G68 en %u&ri'ue Ecrire :Entre4 le no'bre de valeurs &: $ire Xb Redi& G6Xb(18 Pour i $ 5 Xb ( 1 Ecrire :Entre4 le no'bre nc :, i + 1 $ire G6i8 i )ui.ant /os'axi $ Pour i $ 5 Xb ( 1 )i G6i8 S G6/os'axi8 alors Pos&axi i Finsi i )ui.ant Ecrire :Ele'ent le plus +rand & :, G6/os'axi8 Ecrire :/osition de cet l'ent & :, /os'axi Fin Exercice ..1# Variables Xb, i, ,o', %oH, Xbsup en %u&ri'ue Tableau G68 en %u&ri'ue Debut Ecrire :Entre4 le no'bre de notes 5 saisir & : $ire Xb Redi& G6Xb(18 Pour i $ 5 Xb ( 1 Ecrire :Entre4 le no'bre nc :, i + 1 $ire G6i8 i )ui.ant ,o' $ Pour i $ 5 Xb ( 1 ,o' ,o' + G6i8 i )ui.ant %oH ,o' \ Xb Xb,up $ Pour i $ 5 Xb ( 1 )i G6i8 S %oH Alors Xb,up Xb,up + 1 Fin)i i )ui.ant Ecrire Xb,up, : lves dpassent la 'oHenne de la classe: Fin PARTIE / Enonce des Exercices

32

Exercice 2.1 Ecrive4 un al+orit*'e -ui per'ette de saisir un no'bre -uelcon-ue de valeurs, et -ui les ran+e au 0ur et 5 'esure dans un tableau. =e pro+ra''e, une 0ois la saisie ter'ine, doit dire si les l'ents du tableau sont tous conscuti0s ou non. /ar exe'ple, si le tableau est & 12 13 1# 1! 1. 12 19

ses l'ents sont tous conscuti0s. En revanc*e, si le tableau est & ; 1$ 11 1! 1. 12 19

ses l'ents ne sont pas tous conscuti0s. Exercice 2.2 Ecrive4 un al+orit*'e -ui trie un tableau dans l)ordre dcroissant. Cous crire4 bien entendu deux versions de cet al+orit*'e, lLune e'ploHant le tri par insertion, lLautre le tri 5 bulles. Exercice 2.3 Ecrive4 un al+orit*'e -ui inverse l)ordre des l'ents d)un tableau dont on suppose -uLil a t pralable'ent saisi 6I les pre'iers seront les derniers? J8 Exercice 2.# Ecrive4 un al+orit*'e -ui per'ette 5 l)utilisateur de suppri'er une valeur d)un tableau pralable'ent saisi. =)utilisateur donnera l)indice de la valeur -u)il sou*aite suppri'er. Attention, il ne s)a+it pas de re'ettre une valeur 5 4ro, 'ais bel et bien de la suppri'er du tableau lui('Q'e N ,i le tableau de dpart tait & 12 9 # #! .# ; 2

Et -ue l)utilisateur sou*aite suppri'er la valeur d)indice #, le nouveau tableau sera & 12 9 # #! ; 2

Exercice 2.!

33

Ecrive4 lLal+orit*'e -ui rec*erc*e un 'ot saisi au clavier dans un dictionnaire. =e dictionnaire est suppos Qtre cod dans un tableau pralable'ent re'pli et tri. PARTIE / Corrigs des Exercices

Exercice 2.1 Variables Xb, i en Entier Variable Ela+ en ooleen Tableau G68 en Entier Debut Ecrire :Entre4 le no'bre de valeurs &: $ire Xb Redi& G6Xb(18 Pour i $ 5 Xb ( 1 Ecrire :Entre4 le no'bre nc :, i + 1 $ire G6i8 i )ui.ant Ela+ Crai Pour i 1 5 Xb ( 1 )i G6i8 US G6i " 18 + 1 Alors Ela+ Eaux Fin)i i )ui.ant )i Ela+ Alors Ecrire :=es no'bres sont conscuti0s: )inon Ecrire :=es no'bres ne sont pas conscuti0s: Fin)i Fin ette pro+ra''ation est sans doute la plus spontane, 'ais elle prsente le d0aut dLexa'iner la totalit du tableau, 'Q'e lors-uLon dcouvre ds le dpart deux l'ents non conscuti0s. Aussi, dans le cas dLun +rand tableau, est(elle dispendieuse en te'ps de traite'ent. 3ne autre 'anire de procder serait de sortir de la boucle ds -ue deux l'ents non conscuti0s sont dtects. =a deuxi'e partie de lLal+orit*'e deviendrait donc & i1 Tant-ue G6i8 > G6i " 18 + 1 et i U Xb ( 1 ii+1 FinTant-ue )i G6i8 > G6i " 18 + 1 Alors Ecrire :=es no'bres sont conscuti0s: )inon Ecrire :=es no'bres ne sont pas conscuti0s: Fin)i 34

Exercice 2.2 @n suppose -ue X est le no'bre d)l'ents du tableau. Gri par insertion & ? Pour i $ 5 X ( 2 pos'axi > i Pour 7 i + 1 5 X ( 1 )i t678 S t6pos'axi8 alors pos'axi 7 Finsi 7 sui.ant te'p t6pos'axi8 t6pos'axi8 t6i8 t6i8 te'p i sui.ant Fin Gri 5 bulles & ? aaper'ut Crai Tant-ue aaper'ut aaper'ut Eaux Pour i $ 5 X ( 2 )i t6i8 U t6i + 18 Alors te'p t6i8 t6i8 t6i + 18 t6i + 18 te'p aaper'ut Crai Finsi i sui.ant FinTant-ue Fin

Exercice 2.3 @n suppose -ue n est le no'bre d)l'ents du tableau pralable'ent saisi ? Pour i $ 5 6X(18\2 Ge'p G6i8 G6i8 G6X(1(i8 G6X(1(i8 Ge'p i sui.ant Fin Exercice 2.# ? Ecrire :_an+ de la valeur 5 suppri'er ?: 35

$ire , Pour i , 5 X(2 G6i8 G6i+18 i sui.ant Redi& G6X"18 Fin Exercice 2.! X est le no'bre dLl'ents du tableau Aico68, contenant les 'ots du dictionnaire, tableau pralable'ent re'pli. Variables ,up, Bn0, o'p en Entier Variables Eini en oolen Dbut Ecrire :Entre4 le 'ot 5 vri0ier: $ire %ot @n d0init les bornes de la partie du tableau 5 considrer ,up X ( 1 Bn0 $ Eini Eaux Tant-ue Xon Eini o'p dsi+ne lLindice de lLl'ent 5 co'parer. En bonne ri+ueur, il 0audra veiller 5 ce -ue o'p soit bien un no'bre entier, ce -ui pourra sLe00ectuer de di00rentes 'anires selon les lan+a+es. o'p 6,up + Bn08\2 ,i le 'ot se situe avant le point de co'paraison, alors la borne suprieure c*an+e, la borne in0rieure ne bou+e pas. )i %ot U Aico6 o'p8 Alors ,up o'p ( 1 ,inon, cLest lLinverse )inon Bn0 o'p + 1 Fin)i Eini %ot > Aico6 o'p8 ou ,up U Bn0 FinTant-ue )i %ot > Aico6 o'p8 Alors Ecrire :le 'ot existe: )inon Ecrire :Bl nLexiste pas: Finsi Fin PARTIE 0 Enonce des Exercices

Exercice 9.1 `crive4 un al+orit*'e re'plissant un tableau de . sur 13, avec des 4ros. 36

Exercice 9.2 Quel rsultat produira cet al+orit*'e ? Tableau V61, 28 en Entier Variables i, 7, val en Entier Dbut Cal 1 Pour i $ 5 1 Pour 7 $ 5 2 V6i, 78 Cal Cal Cal + 1 7 )ui.ant i )ui.ant Pour i $ 5 1 Pour 7 $ 5 2 Ecrire V6i, 78 7 )ui.ant i )ui.ant Fin Exercice 9.3 Quel rsultat produira cet al+orit*'e ? Tableau V61, 28 en Entier Variables i, 7, val en Entier Dbut Cal 1 Pour i $ 5 1 Pour 7 $ 5 2 V6i, 78 Cal Cal Cal + 1 7 )ui.ant i )ui.ant Pour 7 $ 5 2 Pour i $ 5 1 Ecrire V6i, 78 i )ui.ant 7 )ui.ant Fin Exercice 9.# Quel rsultat produira cet al+orit*'e ? Tableau G63, 18 en Entier Variables b, ', en Entier Dbut Pour b $ 5 3 Pour ' $ 5 1 G6b, '8 b + ' ' )ui.ant b )ui.ant 37

Pour b $ 5 3 Pour ' $ 5 1 Ecrire G6b, '8 ' )ui.ant b )ui.ant Fin Exercice 9.! %Q'es -uestions, en re'plaKant la li+ne & G6b, '8 b + ' par G6b, '8 2 D b + 6' + 18 puis par & G6b, '8 6b + 18 + # D ' Exercice 9.. ,oit un tableau G 5 deux di'ensions 612, 98 pralable'ent re'pli de valeurs nu'ri-ues. `crire un al+orit*'e -ui rec*erc*e la plus +rande valeur au sein de ce tableau. Exercice 9.2 `crire un al+orit*'e de 7eu de da'es trs si'pli0i. =)ordinateur de'ande 5 l)utilisateur dans -uelle case se trouve son pion 6-uelle li+ne, -uelle colonne8. @n 'et en place un contrOle de saisie a0in de vri0ier la validit des valeurs entres. Ensuite, on de'ande 5 l)utilisateur -uel 'ouve'ent il veut e00ectuer & $ 6en *aut 5 +auc*e8, 1 6en *aut 5 droite8, 2 6en bas 5 +auc*e8, 3 6en bas 5 droite8. ,i le 'ouve'ent est i'possible 6i.e. on sort du da'ier 8, on le si+nale 5 l)utilisateur et on s)arrQte l5 . ,inon, on dplace le pion et on a00ic*e le da'ier rsultant, en a00ic*ant un I @ J pour une case vide et un I V J pour la case oP se trouve le pion.

PARTIE 0 Corrigs des Exercices

Exercice 9.1 Tableau Gruc6!, 128 en Entier Debut Pour i $ 5 ! Pour 7 $ 5 12 Gruc6i, 78 $ 38

7 )ui.ant i )ui.ant Fin Exercice 9.2 et al+orit*'e re'plit un tableau de la 'anire suivante& V6$, $8 > 1 V6$, 18 > 2 V6$, 28 > 3 V61, $8 > # V61, 18 > ! V61, 28 > . Bl crit ensuite ces valeurs 5 l)cran, dans cet ordre. Exercice 9.3 et al+orit*'e re'plit un tableau de la 'anire suivante& V6$, $8 > 1 V61, $8 > # V6$, 18 > 2 V61, 18 > ! V6$, 28 > 3 V61, 28 > . Bl crit ensuite ces valeurs 5 l)cran, dans cet ordre. Exercice 9.# et al+orit*'e re'plit un tableau de la 'anire suivante& G6$, $8 > $ G6$, 18 > 1 G61, $8 > 1 G61, 18 > 2 G62, $8 > 2 G62, 18 > 3 G63, $8 > 3 G63, 18 > # Bl crit ensuite ces valeurs 5 l)cran, dans cet ordre. Exercice 9.! Cersion a & cet al+orit*'e re'plit un tableau de la 'anire suivante& G6$, $8 > 1 G6$, 18 > 2 G61, $8 > 3 G61, 18 > # G62, $8 > ! G62, 18 > . G63, $8 > 2 G63, 18 > 9 39

Bl crit ensuite ces valeurs 5 l)cran, dans cet ordre. Cersion b & cet al+orit*'e re'plit un tableau de la 'anire suivante& G6$, $8 > 1 G6$, 18 > ! G61, $8 > 2 G61, 18 > . G62, $8 > 3 G62, 18 > 2 G63, $8 > # G63, 18 > 9 Bl crit ensuite ces valeurs 5 l)cran, dans cet ordre. Exercice 9.. Variables i, 7, i%ax, 7%ax en %u&ri'ue Tableau G612, 98 en %u&ri'ue =e principe de la rec*erc*e dans un tableau 5 deux di'ensions est stricte'ent le 'Q'e -ue dans un tableau 5 une di'ension, ce -ui ne doit pas nous tonner. =a seule c*ose -ui c*an+e, cLest -uLici le balaHa+e re-uiert deux boucles i'bri-ues, au lieu dLune seule. Debut ... i%ax $ 7%ax $ Pour i $ 5 12 Pour 7 $ 5 9 )i G6i,78 S G6i%ax,7%ax8 Alors i%ax i 7%ax 7 Fin)i 7 )ui.ant i )ui.ant Ecrire :=e plus +rand l'ent est :, G6i%ax, 7%ax8 Ecrire :Bl se trouve aux indices :, i%ax, :M :, 7%ax Fin Exercice 9.2 Variables i, 7 , posi, pos7, i2, 72 en Entier Variables orrect, %ove@W en oolen Tableau Aa'ier62, 28 en oolen Tableau %ouv63, 18 en Entier =e da'ier contenant un seul pion, on c*oisit de le coder 5 lLcono'ie, en le reprsentant par un tableau de boolens 5 deux di'ensions. Aans c*acun des e'place'ents de ce da'ier, Eaux si+ni0ie lLabsence du pion, Crai sa prsence. /ar ailleurs, on e'ploie une 'c*ante astuce, pas obli+atoire, 'ais bien prati-ue dans beaucoup de situations. =Lide est de 0aire correspondre les 40

c*oix possibles de lLutilisateur avec les 'ouve'ents du pion. @n entre donc dans un tableau %ouv 5 deux di'ensions, les dplace'ents du pion selon les -uatre directions, en prenant soin -ue c*a-ue li+ne du tableau corresponde 5 une saisie de l)utilisateur. =a pre'ire valeur tant le dplace'ent en i, la seconde le dplace'ent en 7. eci nous par+nera par la suite de 0aire -uatre 0ois les 'Q'es tests. Debut *oix $ & pion en *aut 5 droite %ouv6$, $8 (1 %ouv6$, 18 (1 *oix 1 & pion en *aut 5 droite %ouv61, $8 (1 %ouv61, 18 1 *oix 2 & pion en bas 5 +auc*e %ouv62, $8 1 %ouv62, 18 (1 *oix 3 & pion en bas 5 droite %ouv63, $8 1 %ouv63, 18 1 Bnitialisation du da'ierM le pion n)est pour le 'o'ent nulle part Pour i $ 5 2 Pour 7 $ 5 2 Aa'ier6i, 78 Eaux 7 sui.ant i sui.ant ,aisie de la coordonne en i 6:posi:8 avec contrOle de saisie orrect Eaux Tant-ue Xon orrect Ecrire :Entre4 la li+ne de votre pion& : $ire posi )i posi S> $ et posi U> 2 Alors orrect vrai Finsi Fintant'ue ,aisie de la coordonne en 7 6:pos7:8 avec contrOle de saisie orrect Eaux Tant-ue Xon orrect Ecrire :Entre4 la colonne de votre pion& : $ire pos7 )i pos7 S> $ et pos7 U> 2 Alors orrect Crai Finsi Fintant'ue /ositionne'ent du pion sur le da'ier virtuel. Aa'ier6posi, pos78 Crai ,aisie du dplace'ent, avec contrOle Ecrire :Quel dplace'ent ?: Ecrire : ( $& en *aut 5 +auc*e: Ecrire : ( 1& en *aut 5 droite: Ecrire : ( 2& en bas 5 +auc*e: 41

Ecrire : ( 3& en bas 5 droite: orrect Eaux Tant-ue Xon orrect $ire Aep )i Aep S> $ et Aep U> 3 Alors orrect Crai Fin)i FinTant-ue i2 et 72 sont les 0utures coordonnes du pion. =a variable boolenne %ove@W vri0ie la validit de ce 0utur e'place'ent i2 posi + %ouv6Aep, $8 72 pos7 + %ouv6Aep, 18 %ove@W i2 S> $ et i2 U> 2 et 72 S> $ et 72 U> 2 as oP le dplace'ent est valide )i %ove@W Alors Aa'ier6posi, pos78 Eaux Aa'ier6i2, 728 Crai A00ic*a+e du nouveau da'ier Pour i $ 5 2 Pour 7 $ 5 2 )i Aa'ier6i, 78 Alors Ecrire : @ :M )inon Ecrire : V :M Fin)i 7 sui.ant Ecrire :: i sui.ant )inon as oP le dplace'ent n)est pas valide Ecrire :%ouve'ent i'possible: Fin)i Fin PARTIE 1 Enonc des Exercices

Exercice ;.1 /ar'i ces a00ectations 6considres indpenda''ent les unes des autres8, les-uelles provo-ueront des erreurs, et pour-uoi ? Cariables A, B, en Xu'ri-ue Cariables A, E en aractre A ,in6B8 A ,in6A + B D 8 B ,in6A8 " ,in6A8 A ,in6A \ B8 os6,in6A8 42

Exercice ;.2 Ecrive4 un al+orit*'e -ui de'ande un 'ot 5 l)utilisateur et -ui a00ic*e 5 l)cran le no'bre de lettres de ce 'ot 6cLest vrai'ent tout bQte8. Exercice ;.3 Ecrive4 un al+orit*'e -ui de'ande une p*rase 5 l)utilisateur et -ui a00ic*e 5 l)cran le no'bre de 'ots de cette p*rase. @n suppose -ue les 'ots ne sont spars -ue par des espaces 6et cLest d75 un petit peu 'oins bQte8. Exercice ;.# Ecrive4 un al+orit*'e -ui de'ande une p*rase 5 l)utilisateur et -ui a00ic*e 5 l)cran le no'bre de voHelles contenues dans cette p*rase. @n pourra crire deux solutions. =a pre'ire dploie une condition co'pose bien 0astidieuse. =a deuxi'e, en utilisant la 0onction Grouve, all+e considrable'ent lLal+orit*'e. Exercice ;.! Ecrive4 un al+orit*'e -ui de'ande une p*rase 5 l)utilisateur. elui(ci entrera ensuite le ran+ d)un caractre 5 suppri'er, et la nouvelle p*rase doit Qtre a00ic*e 6on doit relle'ent suppri'er le caractre dans la variable -ui stocbe la p*rase, et pas uni-ue'ent 5 l)cran8. Exercice ;.. ( rHpto+rap*ie 1 3n des plus anciens sHst'es de crHpto+rap*ie 6ais'ent dc*i00rable8 consiste 5 dcaler les lettres d)un 'essa+e pour le rendre illisible. Ainsi, les A deviennent des B, les B des , etc. Ecrive4 un al+orit*'e -ui de'ande une p*rase 5 l)utilisateur et -ui la code selon ce principe. o''e dans le cas prcdent, le coda+e doit s)e00ectuer au niveau de la variable stocbant la p*rase, et pas seule'ent 5 l)cran. Exercice ;.2 ( rHpto+rap*ie 2 ( le chiffre de Csar 3ne a'lioration 6relative8 du principe prcdent consiste 5 oprer avec un dcala+e non de 1, 'ais d)un no'bre -uelcon-ue de lettres. Ainsi, par exe'ple, si l)on c*oisit un dcala+e de 12, les A deviennent des %, les B des X, etc. _alise4 un al+orit*'e sur le 'Q'e principe -ue le prcdent, 'ais -ui de'ande en plus -uel est le dcala+e 5 utiliser. Cotre sens proverbial de lLl+ance vous interdira bien sdr une srie de vin+t(six :,i...Alors: Exercice ;.9 ( rHpto+rap*ie 3 3ne tec*ni-ue ultrieure de crHpto+rap*ie consista 5 oprer non avec un dcala+e sHst'ati-ue, 'ais par une substitution alatoire. /our cela, on

43

utilise un alp*abet(cl, dans le-uel les lettres se succdent de 'anire dsordonne, par exe'ple & Fa=3^/C_EAWBXA@E,QY e%ZBGV )est cette cl -ui va servir ensuite 5 coder le 'essa+e. ,elon notre exe'ple, les A deviendront des F, les B des a, les des =, etc. Ecrire un al+orit*'e -ui e00ectue ce crHpta+e 6l)alp*abet(cl sera saisi par l)utilisateur, et on suppose -uLil e00ectue une saisie correcte8. Exercice ;.; ( rHpto+rap*ie # ( le chiffre de Vigenre 3n sHst'e de crHpto+rap*ie beaucoup plus di00icile 5 briser -ue les prcdents 0ut invent au VCBe sicle par le 0ranKais Ci+enre. Bl consistait en une co'binaison de di00rents c*i00res de sar. @n peut en e00et crire 2! alp*abets dcals par rapport 5 l)alp*abet nor'al &

l)alp*abet -ui co''ence par B et 0init par ?aYA l)alp*abet -ui co''ence par et 0init par ?YAB etc.

=e coda+e va s)e00ectuer sur le principe du c*i00re de sar & on re'place la lettre d)ori+ine par la lettre occupant la 'Q'e place dans l)alp*abet dcal. %ais 5 la di00rence du c*i00re de sar, un 'Q'e 'essa+e va utiliser non un, 'ais plusieurs alp*abets dcals. /our savoir -uels alp*abets doivent Qtre utiliss, et dans -uel ordre, on utilise une cl. ,i cette cl est :CBZEXE_E: et le 'essa+e :Bl 0aut coder cette p*rase:, on procdera co''e suit & =a pre'ire lettre du 'essa+e, B, est la ;e lettre de l)alp*abet nor'al. Elle doit Qtre code en utilisant l)alp*abet co''enKant par la pre'ire lettre de la cl, C. Aans cet alp*abet, la ;e lettre est le A. B devient donc A. =a deuxi'e lettre du 'essa+e, =, est la 12e lettre de l)alp*abet nor'al. Elle doit Qtre code en utilisant l)alp*abet co''enKant par la deuxi'e lettre de la cl, B. Aans cet alp*abet, la 12e lettre est le ,. = devient donc ,, etc. Quand on arrive 5 la dernire lettre de la cl, on reco''ence 5 la pre'ire. Ecrire l)al+orit*'e -ui e00ectue un crHpta+e de Ci+enre, en de'andant bien sdr au dpart la cl 5 l)utilisateur. Exercice ;.1$ Ecrive4 un al+orit*'e -ui de'ande un no'bre entier 5 l)utilisateur. =)ordinateur a00ic*e ensuite le 'essa+e : e no'bre est pair: ou : e no'bre est i'pair: selon le cas. Exercice ;.11 Ecrive4 les al+orit*'es -ui +nrent un no'bre Zlup alatoire tel -ue ?

44

$ >U Zlup U 2 "1 >U Zlup U 1 1,3! >U Zlup U 1,.! Zlup 'ule un d 5 six 0aces "1$,! >U Zlup U +.,! Zlup 'ule la so''e du 7et si'ultan de deux ds 5 six 0aces

PARTIE 1 Corrigs des Exercices

Exercice ;.1 A ,in6B8 Aucun probl'e A ,in6A + B D 8 Aucun probl'e B ,in6A8 " ,in6A8 Erreur N A est en caractre A ,in6A \ B8 Aucun probl'e? si B est di00rent de 4ro os6,in6A8 Erreur N Bl 'an-ue une parent*se 0er'ante Exercice ;.2 Cous tie4 prvenus, cLest bQte co''e c*ou N Bl su00it de se servir de la 0onction =en, et cLest r+l & Variable %ot en Caractre Variable Xb en Entier Debut Ecrire :Entre4 un 'ot & : $ire %ot Xb =en6%ot8 Ecrire : e 'ot co'pte :, Xb, : lettres: Fin Exercice ;.3 =5, on est obli+ de co'pter par une boucle le no'bre dLespaces de la p*rase, et on en dduit le no'bre de 'ots. =a boucle exa'ine les caractres de la p*rase un par un, du pre'ier au dernier, et les co'pare 5 lLespace. Variable Bla en Caractre Variables Xb, i en Entier Debut Ecrire :Entre4 une p*rase & : $ire Bla Xb $ Pour i 1 5 =en6Bla8 )i %id6Bla, i , 18 > : : Alors Xb Xb + 1 Fin)i i sui.ant

45

Ecrire : ette p*rase co'pte :, Xb + 1, : 'ots: Fin Exercice ;.# ,olution 1 & pour c*a-ue caractre du 'ot, on pose une trs douloureuse condition co'pose. =e 'oins -ue lLon puisse dire, cLest -ue ce c*oix ne se distin+ue pas par son l+ance. ela dit, il 'arc*e, donc aprs tout, pour-uoi pas. Variable Bla en Caractre Variables Xb, i, 7 en Entier Debut Ecrire :Entre4 une p*rase & : $ire Bla Xb $ Pour i 1 5 =en6Bla8 )i %id6Bla, i, 18 > :a: ou %id6Bla, i, 18 > :e: ou %id6Bla, i, 18 > :i: ou %id6Bla, i, 18 > :o: ou %id6Bla, i, 18 > :u: ou %id6Bla, i, 18 > :H: Alors Xb Xb + 1 Fin)i i sui.ant Ecrire : ette p*rase co'pte :, Xb, : voHelles: Fin ,olution 2 & on stocbe toutes les voHelles dans une c*a1ne. ZrRce 5 la 0onction Grouve, on dtecte i''diate'ent si le caractre exa'in est une voHelle ou non. Lest nette'ent plus sH'pat*i-ue... Variables Bla, CoH en Caractre Variables Xb, i, 7 en Entier Debut Ecrire :Entre4 une p*rase & : $ire Bla Xb $ CoH :aeiouH: Pour i 1 5 =en6Bla8 )i Grouve6CoH, %id6Bla, i, 188 US $ Alors Xb Xb + 1 Fin)i i sui.ant Ecrire : ette p*rase co'pte :, Xb, : voHelles: Fin Exercice ;.! Bl nLexiste aucun 'oHen de suppri'er directe'ent un caractre dLune c*a1ne? autre'ent -uLen procdant par colla+e. Bl 0aut donc concatner ce -ui se trouve 5 +auc*e du caractre 5 suppri'er, avec ce -ui se trouve 5 sa droite. Attention aux para'tres des 0onctions %id, ils nLont rien dLvident N Variable Bla en Caractre Variables Xb, i, 7 en Entier 46

Dbut Ecrire :Entre4 une p*rase & : $ire Bla Ecrire :Entre4 le ran+ du caractre 5 suppri'er & : $ire Xb = =en6Bla8 Bla %id6Bla, 1, Xb " 18 < %id6Bla, Xb + 1, = " Xb8 Ecrire :=a nouvelle p*rase est & :, Bla Fin Exercice ;.. ,ur lLense'ble des exercices de crHpto+rap*ie, il H a deux +randes strat+ies possibles & ( soit trans0or'er les caractres en leurs codes A, BB. =Lal+orit*'e revient donc ensuite 5 traiter des no'bres. 3ne 0ois ces no'bres trans0or's, il 0aut les reconvertir en caractres. ( soit en rester au niveau des caractres, et procder directe'ent aux trans0or'ations 5 ce niveau. Lest cette dernire option -ui est c*oisie ici, et pour tous les exercices de crHpto+rap*ie 5 venir. /our cet exercice, il H a une r+le +nrale & pour c*a-ue lettre, on dtecte sa position dans lLalp*abet, et on la re'place par la lettre occupant la position suivante. ,eul cas particulier, la vin+t(sixi'e lettre 6le Y8 doit Qtre code par la pre'ire 6le A8, et non par la vin+t(septi'e, -ui nLexiste pas N Variables Bla, od, Alp*a en Caractre Variables i, /os en Entier Dbut Ecrire :Entre4 la p*rase 5 coder & : $ire Bla Alp*a :AB AEEZFB^W=%X@/Q_,G3CeVaY: od :: Pour i 1 5 =en6Bla8 =et %id6Bla, i, 18 )i =et US :Y: Alors /os Grouve6Alp*a, =et8 od od < %id6Alp*a, /os + 1, 18 )inon od od < :A: Fin)i i )ui.ant Bla od Ecrire :=a p*rase code est & :, Bla Fin Exercice ;.2 47

et al+orit*'e est une +nralisation du prcdent. %ais l5, co''e on ne conna1t pas dLavance le dcala+e 5 appli-uer, on ne sait pas a priori co'bien de :cas particuliers:, 5 savoir de dpasse'ents au(del5 du Y, il va H avoir. Bl 0aut donc trouver un 'oHen si'ple de dire -ue si on obtient 22, il 0aut en ralit prendre la lettre nu'ro 1 de lLalp*abet, -ue si on obtient 29, il 0aut en ralit prendre la nu'ro 2, etc. e 'oHen si'ple existe & il 0aut considrer le reste de la division par 2., autre'ent dit le 'odulo. Bl H a une petite ruse suppl'entaire 5 appli-uer, puis-ue 2. doit rester 2. et ne pas devenir $. Variable Bla, od, Alp*a en Caractre Variables i, /os, Acal en Entier Dbut Ecrire :Entre4 le dcala+e 5 appli-uer & : $ire Acal Ecrire :Entre4 la p*rase 5 coder & : $ire Bla Alp*a :AB AEEZFB^W=%X@/Q_,G3CeVaY: od :: Pour i 1 5 =en6Bla8 =et %id6Bla, i, 18 /os Grouve6Alp*a, =et8 Xouv/os %od6/os + Acal, 2.8 )i Xouv/os > $ Alors Xouv/os 2. Fin)i od od < %id6Alp*a, Xouv/os, 18 i )ui.ant Bla od Ecrire :=a p*rase code est & :, Bla Fin Exercice ;.9 =5, cLest asse4 direct. Variable Bla, od, Alp*a en Caractre Variables i, /os, Acal en Entier Dbut Ecrire :Entre4 l)alp*abet cl & : $ire l Ecrire :Entre4 la p*rase 5 coder & : $ire Bla Alp*a :AB AEEZFB^W=%X@/Q_,G3CeVaY: od :: Pour i 1 5 =en6Bla8 =et %id6Bla, i, 18 /os Grouve6Alp*a, =et8 od od < %id6 l, /os, 18 i )ui.ant Bla od

48

Ecrire :=a p*rase code est & :, Bla Fin Exercice ;.; =e coda+e de Ci+enre n)est pas seule'ent plus di00icile 5 briserM il est +ale'ent un peu plus raide 5 pro+ra''er. =a di00icult essentielle est de co'prendre -u)il 0aut deux boucles& l)une pour parcourir la p*rase 5 coder, l)autre pour parcourir la cl. %ais -uand on H r0lc*it bien, ces deux boucles ne doivent surtout pas Qtre i'bri-ues. Et en ralit, -uelle -ue soit la 'anire dont on lLcrit, elle n)en 0or'ent -u)une seule. Variables Alp*a, Bla, od, l, =et en Caractre Variables i, /os, /os l, Acal en Entier Dbut Ecrire :Entre4 la cl & : $ire l Ecrire :Entre4 la p*rase 5 coder & : $ire Bla Alp*a :AB AEEZFB^W=%X@/Q_,G3CeVaY: od :: /os l $ Pour i 1 5 =en6Bla8 @n +re la pro+ression dans la cl. ^)ai e00ectu cela :5 la 'ain: par une boucle, 'ais un 7oli e'ploi de la 0onction %odulo aurait per'is une pro+ra''ation en une seule li+neN /oscl /oscl + 1 )i /os l S =en6 l8 Alors /os l 1 Fin)i @n dter'ine -uelle est la lettre cl et sa position dans l)alp*abet =et l %id6 l, /os l, 18 /os=et l Grouve6Alp*a, =et l8 @n dter'ine la position de la lettre 5 coder et le dcala+e 5 appli-uer. =5 encore, une solution alternative aurait t d)e'ploHer %od & cela nous aurait par+n le ,i? =et %id6Bla, i, 18 /os Grouve6Alp*a, =et8 Xouv/os /os + /os=et l )i Xouv/os S 2. Alors Xouv/os Xouv/os " 2. Fin)i od od < %id6Alp*a, Xouv/os, 18 i )ui.ant Bla od Ecrire :=a p*rase code est & :, Bla Fin Exercice ;.1$ @n en revient 5 des c*oses plus si'ples... 49

Variable Xb en Entier Ecrire :Entre4 votre no'bre & : $ire Xb )i Xb\2 > Ent6Xb\28 Alors Ecrire : e no'bre est pair: )inon Ecrire : e no'bre est pair: Fin)i Fin Exercice ;.11 a8 Zlup Alea68 D 2 b8 Zlup Alea68 D 2 ( 1 c8 Zlup Alea68 D $,3$ + 1,3! d8 Zlup Ent6Alea68 D .8 + 1 e8 Zlup Alea68 D 12 " 1$,! 08 Zlup Ent6Alea68D.8 + Ent6Alea68D.8 + 2

PARTIE 12 Enonc des Exercices

Exercice 1$.1 Quel rsultat cet al+orit*'e produit(il ? Variable Gruc en Caractre Dbut 3u.rir :Exe'ple.txt: sur ! en $ecture Tant'ue Xon E@E6!8 $ireFic4ier !, Gruc Ecrire Gruc FinTant-ue Fer&er ! Fin Exercice 1$.2 Ecrive4 l)al+orit*'e -ui produit un rsultat si'ilaire au prcdent, 'ais le 0ic*ier texte :Exe'ple.txt: est cette 0ois de tHpe dli'it 6caractre de dli'itation & \8. @n produira 5 lLcran un a00ic*a+e oP pour des raisons est*ti-ues, ce caractre sera re'plac avec des espaces. Exercice 1$.3 @n travaille avec le 0ic*ier du carnet d)adresses en c*a'ps de lar+eur 0ixe. Ecrive4 un al+orit*'e -ui per'et 5 l)utilisateur de saisir au clavier un nouvel individu -ui sera a7out 5 ce carnet d)adresses. 50

Exercice 1$.# %Q'e -uestion, 'ais cette 0ois le carnet est suppos Qtre tri par ordre alp*abti-ue. =)individu doit donc Qtre insr au bon endroit dans le 0ic*ier. Exercice 1$.! Ecrive4 un al+orit*'e -ui per'ette de 'odi0ier un rensei+ne'ent 6pour si'pli0ier, disons uni-ue'ent le no' de 0a'ille8 d)un 'e'bre du carnet d)adresses. Bl 0aut donc de'ander 5 l)utilisateur -uel est le no' 5 'odi0ier, puis -uel est le nouveau no', et 'ettre 5 7our le 0ic*ier. ,i le no' rec*erc* nLexiste pas, le pro+ra''e devra le si+naler. Exercice 1$.. Ecrive4 un al+orit*'e -ui trie les individus du carnet d)adresses par ordre alp*abti-ue. Exercice 1$.2 ,oient Goto.txt et Gata.txt deux 0ic*iers dont les enre+istre'ents ont la 'Q'e structure. Ecrire un al+orit*'e -ui recopie tout le 0ic*ier Goto dans le 0ic*ier Gutu, puis 5 sa suite, tout le 0ic*ier Gata 6concatnation de 0ic*iers8. Exercice 1$.9 Ecrire un al+orit*'e -ui suppri'e dans notre carnet dLadresses tous les individus dont le 'ail est invalide 6pour e'ploHer un critre si'ple, on considrera -ue sont invalides les 'ails ne co'portant aucune arobase, ou plus dLune arobase8. Exercice 1$.; =es enre+istre'ents d)un 0ic*ier contiennent les deux c*a'ps Xo' 6c*a1ne de caractres8 et %ontant 6Entier8. *a-ue enre+istre'ent correspond 5 une vente conclue par un co''ercial d)une socit. @n veut ''oriser dans un tableau, puis a00ic*er 5 lLcran, le total de ventes par vendeur. /our si'pli0ier, on suppose -ue le 0ic*ier de dpart est d75 tri alp*abti-ue'ent par vendeur.

PARTIE 12 Corrigs des Exercices

51

Exercice 1$.1 et al+orit*'e crit lLint+ralit du 0ic*ier :Exe'ple.txt: 5 lLcran Exercice 1$.2 Variable Gruc en Caractre Variable i en Entier Debut 3u.rir :Exe'ple.txt: sur ! en $ecture Tant'ue Xon E@E6!8 $ireFic4ier !, Gruc Pour i 1 5 =en6Gruc8 )i %id6Gruc, i, 18 > :\: Alors Ecrire : : )inon Ecrire %id6Gruc, i, 18 Fin)i i )ui.ant FinTant-ue Fer&er ! Exercice 1$.3 Variables Xo' D 2$, /rno' D 12, Gel D 1$, %ail D 2$, =i+ en Caractre Debut Ecrire :Entre4 le no' & : $ire Xo' Ecrire :Entre4 le prno' & : $ire /rno' Ecrire :Entre4 le tlp*one & : $ire Gel Ecrire :Entre4 le no' & : $ire %ail =i+ Xo' < /rno' < Gel < %ail 3u.rir :Adresse.txt: sur 1 (our A5out EcrireFic4ier 1, =i+ Fer&er 1 Fin Exercice 1$.# =5, co''e indi-u dans le cours, on passe par un tableau de strutures en ''oire vive, ce -ui est la tec*ni-ue la plus 0r-ue''ent e'ploHe. =e tri ( -ui est en 0ait un si'ple test ( sera e00ectu sur le pre'ier c*a'p 6no'8. )tructure Bottin Xo' en Caractre D 2$ /rno' en Caractre D 1! 52

Gel en Caractre D 1$ %ail en Caractre D 2$ Fin )tructure Tableau %espotes68 en ottin Variables %on/ote, Xouveau en ottin Variables i, 7 en %u&ri'ue Debut Ecrire :Entre4 le no' & : $ire Xouveau.Xo' Ecrire :Entre4 le prno' & : $ire Xouveau./rno' Ecrire :Entre4 le tlp*one & : $ire Xouveau.Gel Ecrire :Entre4 le 'ail & : =ire Xouveau.%ail @n recopie lLint+ralit de :Adresses: dans %es/otes68. Et aprs tout, cLest lLoccasion & -uand on to'be au bon endroit, on insre subreptice'ent notre nouveau copain dans le tableau. 3u.rir :Adresse.txt: sur 1 (our $ecture i (1 insr Eaux Tant'ue Xon E@E618 ii+1 Redi& %es/otes6i8 $ireFic4ier 1, %on/ote )i %on/ote.Xo' S Xouveau.Xo' et Xon Bnsr Alors %es/otes6i8 Xouveau Bnsr Crai ii+1 Redi& %es/otes6i8 Fin)i %es/otes6i8 %on/ote FinTant-ue Fer&er 1 Et le tour est -uasi'ent 7ou. Bl ne reste plus -uL5 rebalancer tel -uel lLint+ralit du tableau %es/otes dans le 0ic*ier, en crasant lLancienne version. 3u.rir :Adresse.txt: sur 1 (our Ecriture Pour 7 $ 5 i EcrireFic4ier 1, %es/otes678 7 sui.ant Fer&er 1 Fin Exercice 1$.! Lest un peu du 'Q'e tonneau -ue ce -uLon vient de 0aire, 5 -uel-ues variantes prs. Bl H a essentielle'ent une petite +estion de 0la+ pour 0aire bonne 'esure.

53

)tructure Bottin Xo' en Caractre D 2$ /rno' en Caractre D 1! Gel en caractre D 1$ %ail en Caractre D 2$ Fin )tructure Tableau %espotes68 en ottin Variables %on/ote en ottin Variables Ancien, Xouveau en CaractreD2$ Variables i, 7 en %u&ri'ue Variable Grouv en oolen Debut Ecrire :Entre4 le no' 5 'odi0ier & : $ire Ancien Ecrire :Entre4 le nouveau no' & : $ire Xouveau @n recopie lLint+ralit de :Adresses: dans Eic, tout en rec*erc*ant le cla'pin. ,i on le trouve, on procde 5 la 'odi0ication. 3u.rir ]Adresse.txtT sur 1 (our $ecture i (1 Grouv Eaux Tant'ue Xon E@E618 ii+1 Redi& %es/otes6i8 $ireFic4ier 1, %on/ote )i %on/ote.Xo' > Ancien.Xo' Alors Grouv Crai %on/ote.Xo' Xouveau Fin)i %es/otes6i8 %on/ote FinTant-ue Fer&er 1 @n recopie ensuite lLint+ralit de Eic dans :Adresse: 3u.rir :Adresse.txt: sur 1 (our Ecriture Pour 7 $ 5 i EcrireFic4ier 1, %es/otes678 7 )ui.ant Fer&er 1 Et un petit 'essa+e pour 0inir N )i Grouv Alors Ecrire :%odi0ication e00ectue: )inon Ecrire :Xo' inconnu. Aucune 'odi0ication e00ectue: Fin)i Fin Exercice 1$..

54

=5, cLest un tri sur un tableau de structures, rien de plus 0acile. Et on est bien content de disposer des structures, autre'ent dit de ne se coltiner -uLun seul tableau... )tructure Bottin Xo' en Caractre D 2$ /rno' en Caractre D 1! Gel en caractre D 1$ %ail en Caractre D 2$ Fin )tructure Tableau %espotes68 en ottin Variables %ini en ottin Variables i, 7 en %u&ri'ue Debut @n recopie lLint+ralit de :Adresses: dans %es/otes... 3u.rir :Adresse.txt: sur 1 (our $ecture i (1 Tant'ue Xon E@E618 ii+1 Redi& %es/otes6i8 $ireFic4ier 1, %es/otes6i8 FinTant-ue Fer&er 1 @n trie le tableau selon lLal+orit*'e de tri par insertion d75 tudi, en utilisant le c*a'p Xo' de la structure & Pour 7 $ 5 i ( 1 %ini %es/otes678 pos'ini 7 Pour b 7 + 1 5 i )i %es/otes6b8.Xo' U %ini.Xo' Alors 'ini %es/otes6b8 pos'ini b Finsi b sui.ant %es/otes6pos'ini8 %es/otes678 %es/otes678 %ini 7 sui.ant @n recopie ensuite lLint+ralit du tableau dans :Adresse: 3u.rir :Adresse.txt: sur 1 (our Ecriture Pour 7 $ 5 i EcrireFic4ier 1, %es/otes678 7 sui.ant Fer&er 1 Fin Exercice 1$.2 Bon, celui(l5 est telle'ent idiot -uLon nLa 'Q'e pas besoin de passer par des tableaux en ''oire vive. Variable =i+ en Caractre Dbut 3u.rir :Gutu.txt: sur 1 (our A5out 55

3u.rir ]Goto.txtT sur 2 (our $ecture Tant'ue Xon E@E628 $ireFic4ier 2, =i+ EcrireFic4ier 1, =i+ FinTant-ue Fer&er 2 3u.rir ]Gata.txtT sur 3 (our $ecture Tant'ue Xon E@E638 $ireFic4ier 2, =i+ EcrireFic4ier 1, =i+ FinTant-ue Fer&er 3 Fer&er 1 Fin Exercice 1$.9 @n va li'iner les 'auvaises entres ds la recopie & si lLenre+istre'ent ne prsente pas un 'ail valide, on lLi+nore, sinon on le copie dans le tableau. )tructure Bottin Xo' en Caractre D 2$ /rno' en Caractre D 1! Gel en caractre D 1$ %ail en Caractre D 2$ Fin )tructure Tableau %espotes68 en ottin Variable %on/ote en ottin Variables i, 7 en %u&ri'ue Debut @n recopie :Adresses: dans %es/otes en testant le 'ail... 3u.rir :Adresse.txt: sur 1 (our $ecture i (1 Tant'ue Xon E@E618 $ireFic4ier 1, %on/ote nb $ Pour i 1 5 =en6%on/ote.%ail8 )i %id6%on/ote.%ail, i, 18 > :f: Alors nb nb + 1 Fin)i i sui.ant )i nb > 1 Alors ii+1 Redi& %es/otes6i8 %es/otes6i8 %on/ote Fin)i FinTant-ue Fer&er 1 @n recopie ensuite lLint+ralit de Eic dans :Adresse:

56

3u.rir :Adresse.txt: sur 1 (our Ecriture Pour 7 $ 5 i EcrireFic4ier 1, %es/otes678 7 )ui.ant Fer&er 1 Fin Exercice 1$.; 3ne 0ois de plus, le passa+e par un tableau de structures est une strat+ie co''ode. Attention toute0ois, co''e il sLa+it dLun 0ic*ier texte, tout est stocb en caractre. Bl 0audra donc convertir en nu'ri-ue les caractres reprsentant les ventes, pour pouvoir e00ectuer les calculs de'ands. /our le traite'ent, il H a deux possibilits. ,oit on recopie le 0ic*ier 5 lLidenti-ue dans un pre'ier tableau, et on traite ensuite ce tableau pour 0aire la so''e par vendeur. ,oit on 0ait le traite'ent directe'ent, ds la lecture du 0ic*ier. Lest cette option -ui est c*oisie dans ce corri+. )tructure Cendeur Xo' en Caractre D 2$ %ontant en %u&ri'ue Fin )tructure Tableau %esCendeurs68 en Vendeur Variables Xo'/rec D 2$, =i+, Xo' en caractre Variables ,o''e, Cente en %u&ri'ue @n balaHe le 0ic*ier en 0aisant nos additions. As -ue le no' a c*an+ 6on est pass au vendeur suivant8, on ran+e le rsultat et on re'et tout 5 4ro Debut 3u.rir :Centes.txtT sur 1 (our $ecture i (1 ,o''e $ Xo'/rc :: Tant'ue Xon E@E618 $ireFic4ier 1, =i+ Xo' %id6=i+, 1, 2$8 Cente Xu'6%id6=i+, 21, 1$8 )i Xo' > Xo'/rec Alors ,o''e ,o''e + Cente )inon ii+1 Redi& %esCendeurs6i8 %esCendeurs6i8.Xo' Xo'/rec %esCendeurs6i8.%ontant ,o''e ,o''e $ Xo'/rec Xo' Fin)i FinTant-ue Et nLoublions pas un petit tour de plus pour le dernier de ces 'essieurs? ii+1 Redi& %esCendeurs6i8 57

%esCendeurs6i8.Xo' Xo'/rec %esCendeurs6i8.%ontant ,o''e Fer&er 1 /our ter'iner, on a00ic*e le tableau 5 lLcran Pour 7 $ 5 i Ecrire %esCendeurs678 7 sui.ant Fin PARTIE 11 Enonc des Exercices

Exercice 11.1 `crive4 une 0onction -ui renvoie la so''e de cin- no'bres 0ournis en ar+u'ent. Exercice 11.2 `crive4 une 0onction -ui renvoie le no'bre de voHelles contenues dans une c*a1ne de caractres passe en ar+u'ent. Au passa+e, note4 -uLune 0onction a tout 5 0ait le droit dLappeler une autre 0onction. Exercice 11.3 _crive4 la 0onction Grouve, vue prcde''ent, 5 l)aide des 0onctions %id et =en 6co''e -uoi, Grouve, 5 la di00rence de %id et =en, n)est pas une 0onction indispensable dans un lan+a+e8. PARTIE 11 Corrigs des Exercices

Exercice 11.1 Coil5 un dbut en douceur... Fonction ,u'6a, b, c, d, e8 Ren.o6er a + b + c + d + e FinFonction Exercice 11.2 Fonction XbCoHelles6%ot en aractre8 Variables i, nb en %u&ri'ue Pour i 1 5 =en6%ot8 )i Grouve6:aeiouH:, %id6%ot, i, 188 US $ Alors nb nb + 1 Fin)i i sui.ant

58

Ren.o6er nb FinFonction Exercice 11.3 Fonction Grouve6a, b8 Variable i en %u&ri'ue Dbut i1 Tant-ue i U =en6a8 ( =en6b8 et b US %id6a, i, =en6b88 ii+1 FinTant-ue )i b US %id6a, i, =en6b88 Alors Ren.o6er $ )inon Ren.o6er i FinFonction

Eonction *oixAu%ot Quel-ues explications & on lit int+rale'ent le 0ic*ier contenant la liste des 'ots. Au 0ur et 5 'esure, on ran+e ces 'ots dans le tableau =iste, -ui est redi'ensionn 5 c*a-ue tour de boucle. 3n tira+e alatoire intervient alors, -ui per'et de renvoHer un des 'ots au *asard. Fonction *oixAu%ot68 Tableau =iste68 en Caractre Variables Xb'ots, *oisi en %u&ri'ue 3u.rir :Aico.txt: sur 1 en $ecture Xb'ots (1 Tant'ue Xon E@E618 Xb'ots Xb'ots + 1 Redi& =iste6Xb'ots8 $ireFic4ier 1, =iste6Xb'ots8 FinTant-ue Fer&er 1 *oisi Ent6Alea68 D Xb'ots8 Ren.o6er =iste6 *oisi8 FinFonction Eonction /artieEinie @n co''ence par vri0ier le no'bre de 'auvaises rponses, 'oti0 de d0aite. Ensuite, on re+arde si la partie est +a+ne, traite'ent -ui s)apparente 5 une +estion de Ela+ & il su00it -ue l)une des lettres du 'ot 5 deviner n)ait pas t trouve pour -ue la partie ne soit pas +a+ne. =a 0onction aura besoin, co''e ar+u'ents, du tableau Ceri0, de son no'bre d)l'ents et du no'bre actuel de 'auvaises rponses. Fonction /artieEinie6t68 en ooleen, n, x en %u&ri'ue8 Variables i, issue en %u&eri'ue 59

)i x > 1$ Alors Ren.o6er 2 )inon Bssue 1 Pour i $ 5 n )i Xon t6i8 Alors Bssue $ Fin)i i sui.ant Ren.o6er Bssue Fin)i FinFonction /rocdure A00ic*a+e%ot 3ne 'Q'e boucle nous per'et de considrer une par une les lettres du 'ot 5 trouver 6variable '8, et de savoir si ces lettres ont t identi0ies ou non. Procdure A00ic*a+e%ot6' en Caractre (ar Valeur, t68 en oolen (ar Valeur8 Variable A00 en Caractere Variable i en %u&eri'ue A00 :: Pour i $ 5 len6'8 ( 1 )i Xon t6i8 Alors A00 A00 < :(: )inon A00 A00 < %id6'ot, i + 1, 18 Fin)i i sui.ant Ecrire A00 FinProcdure Re&ar'ue & cette procdure aurait +ale'ent pu Qtre crite sous la 0or'e dLune 0onction, -ui aurait renvoH vers la procdure principale la c*a1ne de caractres A00. =Lcriture 5 lLcran de cette c*a1ne A00 aurait alors t 0aite par la procdure principale. Coil5 donc une situation oP on peut asse4 indi00re''ent opter pour une sous(procdure ou pour une 0onction. /rocdure ,aisie=ettre @n vri0ie -ue le si+ne entr 6para'tre b8 est bien une seule lettre, -ui ne 0i+ure pas dans les propositions prcde''ent e00ectues 6para'tre a8 Procdure ,aisie=ettre6a, b en Caractre (ar R7rence8 Variable orrect en ooleen Variable Alp*a en Caractere Dbut orrect Eaux Alp*a :AB AEEZFB^W=%X@/Q_,G3CeVaY: 60

Tant-ue Xon orrect Ecrire :Entre4 la lettre propose & : $ire b )i Grouve6alp*a, b8 > $ @u len6b8 US 1 Alors Ecrire : e n)est pas une lettre N: )inon)i Grouve6a, b8 US $ Alors Ecrire :=ettre d75 propose N: )inon orrect Crai aa<b Fin)i FinTant-ue Fin Procdure /rocdure Ceri0=ettre =es para'tres se 'ultiplient? = est la lettre propose, t68 le tableau de boolens, % le 'ot 5 trouver et X le no'bre de 'auvaises propositions. Bl n)H a pas de di00icult 'a7eure dans cette procdure & on exa'ine les lettres de % une 5 une, et on en tire les cons-uences. =e 0la+ sert 5 savoir si la lettre propose 0aisait ou non partie du 'ot 5 deviner. Procdure Ceri0=ettre6=, % en Caractre (ar Valeur, t68 en oolen (ar R7rence, X en %u&ri'ue (ar R7rence8 Variable orrect en ooleen Dbut orrect Eaux Pour i 1 5 =en6%8 )i %id6%, i, 18 > = Alors orrect Crai G6i ( 18 Crai Fin)i FinTant-ue )i Xon orrect Alors XX+1 Fin)i Fin Procdure /rocdure Epilo+ue Procdure Epilo+ue6% en Caractre (ar Valeur, X en %u&ri'ue (ar Valeur8 Dbut )i X > 2 Alors Ecrire :3ne 'auvaise proposition de trop? /artie ter'ine N: Ecrire :=e 'ot 5 deviner tait & :, % )inon Ecrire :Bravo N Cous ave4 trouv N: Fin)i Fin Procdure /rocdure /rincipale 61

Procdure /rincipale Variables =ettre, %ot, /ropos en Caractere Variables + i, %ov_ep en %u&ri'ue Tableau Ceri068 en ooleen Dbut %ot *oixAu%ot68 /ropos :: =ettre :: Redi& Ceri06=en6%ot8(18 Pour i $ 5 =en6%ot8(1 Ceri06i8 Eaux i sui.ant b$ Tant'ue b > $ A00ic*a+e%ot6%ot, Ceri0688 ,aisie=ettre6/ropos, =ettre8 Ceri0=ettre6=ettre, %ot, Ceri068, %ov_ep8 b /artieEinie6Ceri068, len6'ot8, %ov_ep8 FinTant-ue Epilo+ue6%ot, b8 Fin

62