Appendice E — Réponses aux exercices
Dans toutes ces réponses, veuillez s'il vous plaît vous souvenir que la programmation est
un art très subjectif – si ce que vous avez écrit fonctionne, c'est bien, même si c'est
différent des réponses données ici. Plutôt que d'utiliser ces réponses comme une comparaison vrai/faux,
regardez ce qui diffère d'avec les vôtres et cherchez le pourquoi de la différence.
Si vous pataugez dans un problème ou si vous êtes coincé par le manque d'idées,
jetez un coup d'œil : ce n'est pas un examen, mais plutôt un processus d'apprentissage.
Récapitulation des exercices
Chapitre 3 — Exercices
03.1
Modifiez le premier programme pour qu'il affiche « BB4W »
au lieu de « BBC ».
• Réponse 03.1
03.2
Insérez des TAB dans
les instructions d'affichage pour que « BB4W »
soit affiché à partir de la ligne 10 et de la colonne 10 dans la fenêtre de sortie.
• Réponse 03.2
[ Haut de Page]
Chapitre 4 — Exercices
Maintenant que nous avons une idée précise des variables et de leur utilisation,
essayez les exercices suivants :
04.1
Modifiez le programme d'aire pour donner la circonférence d'un cercle avec
3.14159*diametre (on ne met jamais d'accent sur les variables).
• Réponse 04.1
04.2
Affichez la surface d'un rectangle dont on connaît la longueur et la largeur.
• Réponse 04.2
04.3
Définissez une variable chaîne pour contenir votre prénom,
et affichez à l'écran :
Bonjour, xxxx
où « xxxx » est, bien sûr, votre prénom.
• Réponse 04.3
[ Haut de Page]
Chapitre 5 — Exercices
05.1
Modifiez le programme du cercle pour utiliser
PI
au lieu de 3.14159. Sauvegardez-le.
• Réponse 05.1
05.2
Écrivez un programme qui utilise
RND pour simuler le lancement
de deux dés (à six faces). Affichez les résultats pour chaque dé et affichez le total.
• Réponse 05.2
05.3
Vérifiez que la formule suivante est vraie :
LOG(X)=LN(X)/LN(10)
• Réponse 05.3
[ Haut de Page]
Chapitre 6 — Exercices
06.1
Créez une chaîne pour contenir les jours de la semaine, comme ceci :
"Lun Mar MercJeu VendSam Dim "
Tous les noms ont 4 caractères, y compris l'espace si nécessaire. En partant d'un nombre pour un jour,
utilisez
MID$
pour extraire l'abréviation correcte correspondant à ce jour.
• Réponse 06.1
06.2
Faites une chaîne pour contenir votre prénom. Utilisez
MID$
et ASC pour
trouver les codes
ASCII des lettres du prénom.
• Réponse 06.2
06.3
Définissez trois chaînes pour contenir votre prénom, votre second prénom (si vous n'en avez pas,
inventez-vous en un) et votre nom de famille. Utilisez
LEFT$
pour trouver vos initiales et utilisez la concaténation pour créer une nouvelle chaîne similaire
à « R. T. Russell ».
• Réponse 06.3
[ Haut de Page]
Chapitre 7 — Exercices
07.1
Examinez les différents
MODEs
dans le fichier de
l'Aide en ligne. (Mettez-vous dans l'Éditeur et appuyez sur
F1 .
Essayez d'afficher du texte dans les
MODEs
1 à 6 pour vous entraîner à voir comment ils se comportent.
• Réponse 07.1
07.2
Modifiez le programme « Changement de couleurs » (ci-dessus) pour produire de nouvelles
couleurs aléatoires en vous servant trois fois de l'instruction
RND(255) dans l'utilisation
des lignes 3 et 8.
• Réponse 07.2
[ Haut de Page]
Chapitre 8 — Exercices
08.1
Le volume d'un cylindre est
PI*Rayon^2*Hauteur.
Écrivez un programme qui demande le rayon et la hauteur pour en tirer le volume.
• Réponse 08.1
08.2
Faites un « prompt » (c'est-à-dire une demande) avec
INPUT
pour entrer votre nom complet.
Affichez le nombre de caractères dans le nom (y compris les espaces).
• Réponse 08.2
[ Haut de Page]
Chapitre 9 — Exercice
09.1
Voici un échantillon de la sortie de deux lancements d'un programme qui agit comme une simple
calculatrice :
Entrez le premier nombre : 5
Entrez le second nombre : 6
Tapez 1 pour additioner ; 2 pour soustraire : 1
5 + 6 = 11
>RUN
Entrez le premier nombre : 45
Entrez le second nombre : 55
Tapez 1 pour additioner ; 2 pour soustraire : 2
45 - 55 = -10
>
Pouvez-vous écrire le programme qui produit l'écran ci-dessus ? Introduisez un
INPUT pour chaque nombre, un
INPUT pour les opérations.
Utilisez
IF
pour choisir l'instruction
PRINT correcte pour afficher
le résultat. Vous aurez des points en plus si vous élargissez le programme pour y inclure la multiplication
et la division.
• Réponse 09.1
[ Haut de Page]
Chapitre 10 — Exercice
10.1
Recréez un programme de décision pour chef de service. Générez un nombre aléatoire de 1 à 6
et affichez un message en fonction du résultat :
1 – Embaucher un béni-oui-oui
2 – Licencier quelqu'un
3 – Déléguer vos pouvoirs
4 – Annuler toutes les heures supplémentaires
5 – Vous octroyer une augmentation de salaire
6 – Dévaliser le fonds de retraites
• Réponse 10.1
[ Haut de Page]
Chapitre 11 — Exercices
11.1
Écrivez un programme avec une boucle
FOR
pour afficher la table de multiplication par 5. Chaque ligne doit avoir ce format :
1 * 5 = 5
2 * 5 = 10
...
12 * 5 = 60
• Réponse 11.1
11.2
Utilisez deux boucles
FOR
imbriquées pour dessiner un rectangle sur l'écran en vous servant d'une ligne comme
PRINT TAB(X,Y);"*"
• Réponse 11.2
[ Haut de Page]
Chapitre 12 — Exercices
12.1
Produisez un programme qui demande que vous entriez une chaîne et affichez le code
ASCII
du premier caractère. Faites-le continuer jusqu'à ce que la chaîne demandée soit vide ("").
• Réponse 12.1
12.2
Écrivez un programme qui demande l'entrée d'un nombre. Ajoutez ce nombre à un total courant
actualisé. Répétez ceci jusqu'à ce que le nombre entré soit égal à 0. Affichez le résultat.
• Réponse 12.2
[ Haut de Page]
Chapitre 13 — Exercices
13.1
Modifiez le programme de filtrage des nombres pour qu'il accepte une (et seulement une) virgule décimale
(= point décimal) dans le nombre.
Si vous vous sentez de l'ambition, ajoutez une modification
supplémentaire pour intercepter la touche
Espace arrière
et effacer le dernier caractère de la chaîne, s'il existe.
Vous devrez imprimer une espace après la chaîne
pour effacer le caractère de l'écran.
[Note : le mot « espace » est féminin en
typographie].
• Réponse 13.1
13.2
Faites un programme simple de dessin. Utilisez X% et Y% dans une instruction
TAB pour dessiner
un « X » sur l'écran.
Lorsque vous pressez les touches fléchées,
ajustez X% ou Y% en fonction de la touche pressée.
Par exemple, si vous pressez la touche
Flèche gauche (←) ,
diminuez X% ; pour la touche
Flèche en bas (↓) ,
augmentez Y%.
Affichez un « X » à la nouvelle position de façon
à laisser une trace sur l'écran.
Restreignez la zone dans laquelle vous pouvez dessiner à une grille
de 20 * 20.
• Réponse 13.2
[ Haut de Page]
Chapitre 14 — Exercice
14.1
• Voici les chiffres en rapport avec les six premiers mois des ventes de sucettes
sucrées glacées chocolatées aux trois fruits chez un revendeur local :
Janvier : 105 — Février : 261 — Mars : 482
Avril : 195 — Mai : 347 —Juin : 626
• Définissez un tableau pour contenir ces valeurs. Ajoutez ensuite au programme ce qui convient
pour qu'il fasse une boucle dans les diverses valeurs pour arriver aux résultats suivants
qu'il affichera :
a) le mois qui a connu le moins de ventes ;
b) le mois qui a connu le plus grand nombre de ventes ;
c) le nombre total de ventes.
• Vous pouvez utiliser la même boucle
FOR
pour atteindre les trois résultats, ou bien les traiter séparément : c'est votre choix.
• Modifiez le programme pour obtenir un tableau des noms de mois ; initialisez-le et adaptez
le programme ci-dessus pour afficher les vrais noms des mois.
• Réponse 14.1
[ Haut de Page]
Chapitre 15 — Exercices
15.1
Vous voulez enregistrer les niveaux d'un élève pour cinq matières, ainsi que son prénom et son nom.
Pouvez-vous suggérer une structure qui ferait cela ?
• Réponse 15.1
15.2
Écrivez un programme qui déclare une telle structure et qui demande les informations.
Calculez le niveau moyen et affichez les résultats.
• Réponse 15.2
15.3
Si vous aviez 20 élèves dans une classe, comment feriez-vous un tableau à partir de la structure
ci-dessus ?
• Réponse 15.3
[ Haut de Page]
Chapitre 16 — Exercices
16.1
Modifiez la PROC_NouvelEcran pour qu'elle accepte une couleur d'arrière-plan et une couleur
de premier plan.
• Réponse 16.1
16.2
Écrivez et testez PROC_PlusGrand(A%,B%) qui compare A% et B%.
• Si A% > B%, ne faites rien ;
• si B% > A%, échangez les deux variables en vous servant d'une variable
locale. Il vous faudra passer par référence pour que le programme d'appel puisse afficher
les résultats.
• Réponse 16.2
[ Haut de Page]
Chapitre 17 — Exercices
17.1
Il est une fonction très utile pour l'utilisateur : celle qui attend qu'on appuie sur
« o » (pour oui) ou
« n » (pour non)
en réponse à un curseur d'attente, et qui renvoie soit
TRUE
soit
FALSE.
Écrivez-la. Il faudra, bien sûr, vérifier les capitales et les minuscules.
• Réponse 17.1
17.2
Écrivez une fonction FN_Minusc qui accepte une chaîne. Elle passera par chaque caractère
de la chaîne pour convertir toutes les capitales en minuscules. Les autres caractères restent inchangés.
Affichez la chaîne convertie.
• Réponse 17.2
[ Haut de Page]
Chapitre 18 — Exercices
18.1
Faites retourner l'extraterrestre à l'autre bout de l'écran, jusqu'au bord gauche, dès qu'il a
atteint le bord droit.
• Réponse 18.1
18.2
Créez un autre extraterrestre avec les bras dirigés vers le bas, en vous servant du caractère 241.
Modifiez l'animation contenue dans 18.1 pour faire alterner les extraterrestres au cours du
déplacement en travers de l'écran.
• I% MOD 2 vous indiquera si I% est un nombre pair ou impair.
• Réponse 18.2
[ Haut de Page]
Chapitre 19 — Exercices
19.1
Créez un effet sonore qui utilise de petites explosions de chuintements pour générer un son semblable
à celui d'un pistolet-mitrailleur.
• Réponse 19.1
19.2
Voici un jeu incomplet :
REM Chicane
VDU 23,220,255,213,171,213,171,213,171,255
VDU 23,221,90,126,90,24,90,126,90,24
Route$=CHR$(17)+CHR$(3)+STRING$(4,CHR$(220))
Voiture$=CHR$(17)+CHR$(4)+CHR$(221)
MODE 6
VoitureX%=20
RouteX%=18
Score%=0
Vies%=5
Compte%=0
OFF
REM Remplir l'écran avant de commencer
FOR I%=1 TO 24
WAIT 20
PRINT TAB(RouteX%,24);Route$
NEXT I%
*REFRESH OFF
REM Boucle principale
REPEAT
WAIT 20
REM Score
Score%+=1
REM Créer route nouvelle
RouteX%=RouteX%+RND(3)-2
REM Ne pas sortir de l'écran
IF RouteX%<5 THEN RouteX%=5
IF RouteX%>30 THEN RouteX%=30
PRINT TAB(RouteX%,24);Route$;
PRINT TAB(0,24)
PRINT TAB(VoitureX%,0);Voiture$
*REFRESH
REM Ajouter ici code contrôle voiture...
UNTIL Vies%=0
FOR I%=200 TO 150 STEP -1
SOUND 1,-15,I%,1
WAIT 1
NEXT I%
*REFRESH ON
CLS
COLOUR 7
PRINT TAB(6,12);"Vous marquez ";Score%
ON
END
• Essayez le jeu. Vous verrez une route qui serpente vers le haut de l'écran.
• Votre tâche est
d'ajouter les lignes de code qui contrôlent la voiture. Il faut les ajouter là où cela est indiqué.
É les touches
Flèche gauche (←) et
Flèche droite (→)
et réglez la position, CarX%, en conséquence.
• Maintenez la voiture dans les limites de 5 à 34.
• Examinez le caractère situé devant la voiture. Si ce n'est pas 220 (caractère défini
pour la route), émettez un bruit et faites perdre une vie.
• Réponse 19.2
[ Haut de Page]
Chapitre 20 — Exercices
20.1
Je suis certain que vous verrez ici un grand nombre d'améliorations ; essayez d'ajouter deux autres
commandes, l'une pour vider complètement la grille et l'autre pour la remplir. Vous pourriez utiliser
V et R pour faire cela. Remarquez combien il est facile d'écrire le code pour des
modifications comme celles-ci, parce que la structure rend tout facile à trouver.
• Réponse 20.1
20.2
Il est également agréable de pouvoir travailler dans l'autre sens, en établissant les caractères
à partir des totaux de lignes. Modifiez le projet pour permettre à l'utilisateur d'entrer un total
pour la ligne sur laquelle il se trouve. Ensuite, réaffichez le caractère.
• Réponse 20.2
[ Haut de Page]
Fin de l'Appendice E
|