Telechargé par totakey544

EXO corrigé

publicité
Année 2012 2013
Exercice corrigé et commenté
Les commentaires sur la démarche sont en violet et en italique
Enoncé : Etant donné un nombre N, nous voulons avoir la somme de ses chiffres qui sont des multiples de 3 et
celle de ses chiffres qui sont des multiples de 4.
Analyse :
Une fois la ou les idées, qui constituent votre solution, trouvées il faut les exprimer sous une forme simple,
précise et concise. Puis il faut les structurer, autrement dit les ordonner en les numérotant ou en utilisant des
puces (ces petits symboles en tête de phrase). Utilisez l’indentation (décalage) pour montrer qu’une idée est à
l’intérieure d’une autre. Sur l’exemple ci après on voit que c’est après avoir divisé N par 10, que l’on teste si le
reste est divisible par 3 ou par 4. N’hésitez pas à rajouter vos propres commentaires pour clarifier votre
analyse.
Vous pouvez exprimer votre analyse sous forme narrative (avec des phrases) ou sous forme schématique à
travers un dessin, un exemple (bien choisi), bien présenté et bien commenté. Dans ce cas utiliser tous les
artifices qui rendront votre analyse claire et facilement compréhensible.
Evitez de mettre des expressions compliquées qui obligent le lecteur un effort intellectuel inutile. C’est à vous
de présenter votre solution de la façon la plus claire possible.
Par exemple ne pas mettre :
Si (n div 10) mod 3 = 0, on ……
Mais
si le reste de la division de N par 10 ( pour avoir le dernier chiffre de N) est un multiple de 3, 0n ….
Pour l’exercice précédent, une analyse sous forme narrative peut être :
•
•
•
•
On donne un nombre N
M3 = 0 (M3va contenir la somme des multiples de 3)
M4 = 0 (M3va contenir la somme des multiples de 4)
On divise successivement N par 10 ( le reste nous donne à chaque fois un chiffre de N), et :
o Si ce reste est divisible par 3 , on le cumule dans M3
o Si ce reste est divisible par 4 , on le cumule dans M4
o N = N div 10 (nouvelle valeur de N)
Et on s’arrêtera lorsque le quotient de la division est égal à 0 (tous les chiffres ont été extraits)
• On écrit M3 et M4
Sous forme schématique, elle peut être :
Dans ce cas, l’idée est exprimée à travers un exemple bien choisi. Prenez toujours un cas général et non un cas
particulier, afin de ne pas avoir seulement tune partie de la solution
M4
0
M3
0
+9
+6
Multiple de 3
8735649
……….9
……….
……….
+3
Multiple de 3
……….
……….
……….
10
8735 10
5 873
…….
3
Multiple de 4
……….
……….
……….
…….
Multiple de 4
+4
=
+8
12
N =
Multiple de 3
18
10
873564
………4
……….
10
87356
……..6
….
10
87 10
7 8
…. 8
10
0
test de fin
On pourrait à la limite rajouter une phrase d’explication de l’idée du type :
On divise le nombre N par 10 , pour extraire ses différents chiffres .Ces derniers sont cumulés dans M3 s’ils
sont divisibles par 3 et dans M4 s’ils sont divisibles par 4.
CONSEIL : ne jamais construire une analyse à partir de cas particulier mais du cas général. Une fois votre
algorithme construit, commencer par le dérouler avec cas général. Et ensuite avec les cas particuliers. Très
souvent, le cas général règle le cas particulier. Dans le cas contraire reprendre l’analyse et la compléter. Avec
un peu d’expérience , on pourra effectuer un déroulement (plus général) de notre analyse et éviter donc de
construire un algorithme pour le modifier ensuite.
Algorithme :
En principe, si l’analyse est bien structurée, l’algorithme en est extrait très facilement. Il suffit de repérer les
structures de bases qui composent généralement un algorithme, c'est-à-dire : les expressions (arithmétiques,
conditionnelles, relationnelles et/ou mixtes), les alternatives (ou conditionnelles), les répétitives, les lectures et
les écritures.
Dans notre cas nous observons rapidement qu’il y a :
1. Une lecture
2. deux affectations (initialisations de M3 et M4)
3. une répétitive dont on ne connaît pas le nombre d’itérations, donc cela ne peut être un POUR. Elle
sera de la forme TANT QUE car le nombre d’itérations peut être égal à 0, dans le cas ou N =0.
4. cette répétitive contiendra :
a. une alternative, car un chiffre de N ne peut être en même temps divisible par 3 et par 4 en
même temps. Chaque bloc de cette alternative contiendra une incrémentation, selon que le
chiffre est divisible par 3 ou par 4.
b. Une expression arithmétique pour calculer le prochain N
5. l’écriture des résultats M3 et M4
Donc, il faut exercer votre esprit à cette démarche et au bout d’une dizaine d’algorithmes vous verrez la facilité
avec laquelle vous allez construire votre algorithme. Il est clair que cela ne sera possible que si votre analyse
est bien structurée.
Respectez STRICTEMENT le formalisme adopté et ne pas oublier que c’est un langage qui doit être
commun, donc ne prenez aucune liberté le concernant.
Evitez de couper un algorithme et arrangez-vous afin qu’il soit toujours sur une page. (dans certains cas c’est
impossible ! , Non ! la modularité sera là pour remédier à ce problème à chaque fois que cela sera possible)
Algorithme int1
Variables N, M3,M4, R : entier
DEBUT
Ecrire (' Donner N :')
Lire(N)
M3 Å 0
M4 Å 0
Tant que N <> 0 Faire
DTQ
R Å N mod 10
Si R mod 3 = 0 Alors M3 Å M3 + R
Sinon si R mod 4 = 0 Alors M4 Å M4 + R
N Å N div 10
FTQ
Ecrire ('M3= ',M3,' M4 = ',M4)
FIN
Jeu d’essai :
Une fois quel’ algorithme est écrit, il faut vérifier qu’il « tourne », c'est-àdire qu’il donne le résultat attendu. Pour cela, il faut construire un jeu
d’essai. Ce dernier est très souvent confondu avec le déroulement alors que leurs
rôles sont totalement différents.
Le jeu d’essai est tout simplement, un ou plusieurs exemples avec leurs résultats
et un petit commentaire pour justifier chacun d’eux, qui vont permettre de valider
le résultat de l’algorithme .Il est évident que si vous prenez plusieurs exemples,
il ne s’agit pas de mettre des cas identiques qui ne seront d’aucune utilité.
Son élaboration exige de la réflexion. Parfois un seul exemple suffit mais
d’autres fois, plusieurs sont nécessaires. De façon générale il faut prévoir le
cas général et ensuite les cas particuliers s’il y en a.
Ainsi, pour notre exemple le jeu d’essai peut être :
N
N
N
N
N
N
N
=
=
=
=
=
=
=
8237349
69336
48884
544712
66291
2157
0
M3
M3
M3
M3
M3
M3
M3
=15 , M4=12
=27 , M4=0
=0 , M4=32
=0 , M4=8
=21 , M4=0
=0 , M4=0
=0 , M4=0
{nombre quelconque}
{que des multiples de 3}
{que des multiples de 4}
{aucun multiple de 3}
{aucun multiple de 4}
{aucun multiple de 3 et de 4}
{nombre nul}
Vous observez le rôle des commentaires qui expliquent l’intérêt de chacun des
exemples choisis.
NOTA : dans certains cas, il ne sera pas possible de proposer un jeu d’essai. Dans
ce cas, il faut valider les résultats après leur programmation. Par exemple dans
l’exercice ou il s’agissait de retrouver les nombres tels que tels que la somme
des cubes des chiffres les composant est égale au nombre lui-même. Il n’est pas
évident de trouver un exemple, sauf s’il faut dérouler notre algorithme, au risque
de perdre beaucoup de temps. Dans ce cas, une fois que notre programme donne des
résultats. Il faut vérifier qu’ils sont justes.
Déroulement
Le déroulement sert à valider l’algorithme . Le déroulement est constitué d’un
tableau dont chaque colonne représente un objet de l’environnement. Au départ il
faut dessiner le tableau est reprendre, TOUS et SEULEMENT, les objets déclarés
dans l’algorithme. Dans notre cas : N, M3, M4 et R.
Durant le déroulement, il faut avoir, en même temps ,2 attitudes : machinale et
d’observation.
Attitude machinale : effectuer strictement les actions de l’algorithme.
1. on donne une valeur à N
2. on met 0 dans M3
3. on met 0 dans M4
4. si N est différent de 0
9 on N mod 10 dans R
9 si R mod 3 = 0 on rajoute 3 dans M3
.
.
.
Attitude d’observation : en même temps, on observe, au fur et à mesure, que :
• dans R les différents chiffres de N sont extraits, un à un.
• La détection des multiples de 3 et de 4 est bien faite
• Que les constructions de M3 et M4 sont correctes
• Et les résultats sont justes
Cette attitude d’observation permet d’arrêter rapidement le déroulement afin de
reprendre l’analyse et/ou l’algorithme. Si par exemple on observe que R ne donne
pas les différents chiffres de N, ou que le contenu de M3 contient des valeurs
insolites,…..
Dans notre cas, le déroulement est :
N
8237349
M3
0
M4
0
R
9
9
823734
4
4
82373
3
12
8237
823
7
3
15
82
8
2
8
12
0
NOTA : pour le déroulement il faut reprendre tous les exemples du jeu d’essai.
C’est une assurance que la phase de conception est correcte et que lors de la
réalisation les erreurs de logique seront inexistantes.
Programmation :
Cette étape consiste à traduire consiste à traduire l’algorithme dans un langage
de programmation. Elle peut être fastidieuse lors de l’apprentissage du langage.
Mais il faut d’une part avoir à portée de main la documentation sur le langage
utilisé et surtout s’y référer systématiquement au départ. Et d’autre part
apprendre à corriger soi même les différentes erreurs de programmation. Utiliser
aussi l’aide en ligne.
« un bon programmeur n’est pas celui qui ne fait pas d’erreurs, mais celui qui
sait les corriger rapidement ».
Vos programmes doivent être lisibles, pour cela :
• Eviter de mettre plusieurs instructions par ligne
• Aligner verticalement les instructions d’un même bloc
• Utiliser l’indentation pour faire ressortir les divers blocs du programme
• Mettre des commentaires pertinents
program int1;
(* recherche de la somme (M3) des chiffres de N qui sont des multiples de 3 et de
celle (M4) qui sont des multiples de 4 *)
uses crt;
var N, M3,M4, R:longint;
BEGIN
clrscr;
Writeln (' Donner N :');
readln(N);
M3 := 0;
M4:=0;
while N <> 0 do
BEGIN
R := (N mod 10);
if R mod 3 = 0 then M3:= M3 + R
else if R mod 4 = 0 then M4:= M4 + R;
N:= N div 10;
END;
writeln ('M3= ',M3,' M4 = ',M4);
Writeln('-----------------------');
Readln;
END.
Une fois les erreurs de programmation corrigées. II faut exécuter le programme en reprenant les exemples du
jeu d’essai (et du déroulement) afin de valider votre programme.
Et surtout, soignez votre travail, c’est une qualité essentielle pour un ingénieur .
Utilisez des couleurs différentes(en évitant si possible le rouge), des schémas, des exemples commentés aérez
votre travail (et, bien qu’il n’est pas logique de le rappeler, utilisez une règle chaque fois que cela est
nécessaire). Un travail bien présenté entraine une image positive que fait de vous le lecteur (ou le correcteur).
Téléchargement