Vous êtes sur la page 1sur 69

Recueil des fiches parues dans Votre Ordinateur n°1 à 9

E N S E IG N E M E N T V IE P R A T IQ U E M U S IQ U E
Sur Alice - Apple - Atari - Atmos - Oric 1 - Commodore 64 - Vie 20 - Hector II HR
Thomson MO 5 - TO 7 - TO 7-70 - MSX - Yeno SC 3000 - ZX Spectrum et ZX 81.

en vente chez votre m arch an d de jo u rn a u x


PAPIER PEINT
Ces form alités accom plies, le pro­ plus dans le cas où le dernier est
gram m e calcule dans sa deuxième incomplet. Exemples : si on a 5 rou­
Vous désirez partie les variables suivantes : leaux complets INT(5+.99999) donne
• Variable F (nombre de lés par rou­ 5 rlx (rouleaux) ; si on a 5.75 rouleaux
retapisser leau) : la longueur d'un rouleau étant INT(5.75+.99999) donne 6 rlx (rouleaux).
votre salle à manger ? contenue dans la variable C, l'ordina­ • V ariable I (nombre total de lés) : on
teur la divise p a r la hauteur des murs. utilise la même méthode que pour le
Placez votre ordinateur Pour obtenir un nombre entier de lés, il calcul de G : IN T (nombre de lés
a cote emploie la fonction IN T qui supprime +.99999).
du seau de colle. les décimales. • Variable J (nombre de lés sur le
• Variable G (longueur de chute par dernier rouleau) : découle du nombre
Fini les calculs rouleau) : maintenant qu'il connaît le de lés et du nombre de rouleaux.
fastidieux, nombre de lés p a r rouleau (variable F), • Variable K (longueur de la chute sur
il calcule la longueur de la chute en le dernier rouleau) : découle du nom­
voilà un moyen de réaliser m ultipliant la hauteur des murs p ar F et bre de lés sur le dernier rouleau et de
peut-être en y retranchant la longueur du rou­ la longueur d'un rouleau.
leau. • Variable L (prix total du papier
des économies. • V ariable H (nombre de rouleaux) : peint) : obtenu en m ultipliant le nombre
en utilisant le périmètre de la pièce, le de rouleaux p ar son prix.
nombre de lés p a r rouleau et la largeur • Variable M (longueur des chutes) :
E nfin un program m e simple qui du papier, on obtient le nombre de donne le total des chutes p ar rouleau
donne le nombre de rouleaux et rouleaux. Comme pour C, on utilise la et sur le dernier incomplet.
le découpage des lés, le coût fonction IN T pour éviter d'avoir des • Variable N (pertes en pourcentage) :
global de l'opération et la valeur des fractions (bonjour monsieur, je voudrais total des chutes divisé p a r la longueur
pertes. Il comporte trois parties, mais 3,75 rouleaux de p ap ier bleu !). La totale du p ap ier et divisé p a r 100 pour
n'accepte ni les fenêtres ni les portes. valeur 0.99999 ajoute un rouleau de obtenir un pourcentage.
La première partie place les cinq don­
nées que vous frappez au clavier (prix 130 REM 190 LET J = I-((H -1 )*F )
du rouleau, largeur du papier, lon­ 140 REM CALCULS 200 LET K=C -(J*E)
L= H* A
150 LET F =IN T(C /E ) 210 LET
gueur des rouleaux, périmètre de la 160 LET G=C-F*E 220 LET M = ( ( H - l ) * G ) +K
pièce, hauteur des murs) dans les va­ 170 LET H = IN T ((D /(F *B ))+ .99999) 230 LET N =M /((H *C )/100)
180 LET I= IN T ((D /B )+ .99999)
riables A à E (voir liste au dos).

□ PRIX DU ROULEAU N La troisième et dernière partie du pro- en fonction du prix global et du pour-
Æ ? ?23 gram m e sert à afficher le résultat de centage de chute de papier, puis il
O LARGEUR DU PAPIER tous les calculs précédents. L'ordina- affiche à l'écran le résultat final de ses
^ ? 0,6 teur chiffre alors la valeur des pertes cogitations.
□ LO NG UEUR DES ROULEAUX
? 10 240 r e m ------------------------------------------
250 R EM R E S U L T A T S
□ PERIMETRE DE LA PIECE 260 PRINT
? 18 270 P R I N T " N B DE R L X : " ; H
280 P R I N T " N B DE L E S P A R R L X : " ; F
□ HAUTEUR DES MURS 290 PRINT " I L Y A "jH-lj" C H U T E S DE " ; G ; " METRES"
? 2,5_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ / 300 P R I N T " P L U S " ; K ; " M ET R ES SUR L E DERNIER RLX"
310 PRINT "IL R ES T E DONC " ; M ; " METRES DE C H U T E S POUR LE
320 PRINT "LE P R IX TOTAL ES T DE " ; L ; " FRANCS"
10 REM P A P I E R P E I N T 330 PRINT "ET LES PERTES DE " ; N ; " S "
20 REM ------------------------------------------ 340 PRINT "S O IT " ; L * N / 1 0 0 ; " FRANCS"
30 P R I N T " P R I X DU R O U L E A U "
40 INPUT A
50 P R I N T " L A R G E U R DU P A P I E R "
60 INPUT B
□ NB DE RLX : 8
70 P R I N T "LONGUEUR DES NB DE LES PAR RLX : 4
ROULEAUX "
IL Y A 7 CHUTES DE 0 METRE
80 INPUT C
90 P R I N T " P E R I M E T R E DE LA PLUS DE 5 METRES SUR LE DERNIER RLX
PIECE " IL RESTE D O N C 5 METRES DE CHUTES POUR LES RACCORDS
100 INPUT D
110 PRINT "HAUTEUR DES MURS "
LE PRIX TO TAL EST DE 184 FRANCS
120 INPUT E ET LES PERTES DE 6.25%
W SO IT 11.5 FRANCS

81
&Q 1 ^
£ 1 £
PAPIER PEINT - PAPIER PEINT

w
10 REM PAPIER PEINT
20 R E M - - - - - - - - - - - - - -
30 PRINT "PRIX DU ROULEAU "
40 INPUT A
50 PRINT "LARGEUR DU PAPIER "
60 INPUT B
70 PRINT "LONGUEUR DES ROULEAUX "
80 INPUT C
90 PRINT "PERIMETRE DE LA PIECE "
100 INPUT D
110 PRINT "HAUTEUR DES MURS "
120 INPUT E
130 R E M - - - - - - - - - - - - - -
140 REM CALCULS
150 LET E = IN T (C / E )
160 LET G=C-F*E
170 LET H = INT((D/(F*B))+.99999)
180 LET 1 = INT( (D/B)+.99999)
190 LET 3=I-((H-1.)*F)
200 LET K=C-(3*E)
210 LET L = H*A
220 LET M=((H-1)*G)+K
230 LET N=M/((H*C)/100)
240 R E M - - - - - - - - - - - - - -
250 REM RESULTATS
260 PRINT
270 PRINT "NB DE RLX:";H
280 PRINT "NB DE LES PAR RLX:";F
290 PRINT "IL Y A ";H - l ;" CHUTES
DE "; G ;" METRES"
300 PRINT "PLUS " ;K ;" METRES SUR LE
DERNIER RLX"
310 PRINT "IL RESTE DONC ";M;" METRES DE
CHUTES POUR LES RACCORDS"
320 PRINT "LE PRIX TOTAL EST DE ";L;" FRANCS"
330 PRINT "ET LES PERTES DE " ;N ;" %"
340 PRINT "SOIT " ;L*N/100 ;" FRANCS"
cn 3
g O 1
S a 1
g 3

L is t e d e s v a r i a b l e s d e A à N

Prix du rouleau Nombre total de lés


Largeur du papier Nombre de lés sur le dernier rouleau
0 Longueur de la chute sur le dernier rou­
Longueur des rouleaux
Périmètre de la pièce leau
Hauteur des murs Prix total du papier peint
Nombre de lés p a r rouleau Longueur des chutes
Longueur de chute p ar rouleau Pertes en pourcentage.
Nom bre de rouleaux
\\\
n r u £

$ 4 fi

CALENDRIER PERPÉTUEL
La seconde partie du program m e cal­ trouve dans la variable Y le nombre 1
cule le jour de la semaine au prem ier pour lundi, 2 pour m ardi, etc. Pour
janvier, et demande, comme base de déterminer les années bissextiles, le
Pompiers, éboueurs, départ, l année de l'édition [INPUT de program m e divise p ar quatre la varia­
la ligne 190] qu'il place dans la varia­ ble U. S'il obtient un nombre entier, il
postiers risquent ble U dès que l'écran affiche ANNÉE s'agit bien d ’une année de trois cent
de faire la grimace DU CALENDRIER? tapez au clavier soixante-six jours (la ligne 250 effectue
en fin d'année. Tannée choisie suivie de RUN. Après l'opération). En cas de résultat positif, il
les calculs des lignes 210 à 240, on place le nombre 1 dans la variable B
Qu'ils ne
s'inquiètent pas : 175 REM - .............. ............ ......................... -
176 REM C A L C U L J O U R D E L A S E M A I N E
notre programme permet 180 P R I N T " A N N E E DU C A L E N D R I E R ? "
190 INPUT U
seulement 200 I F U > 9 9 T HE N GOTO 1 8 0
210 LET P = ( U - 1 ) / 1 0 0
de prévoir ses vacances, 220 LET Q = IN T ( P /4 )
230 LET M = 3 6 + I N T ( ( 5 * ( U - 1 ) ) / 4 ) - I N T ( P ) + Q
ponts ou rendez-vous 240 LET Y = M - ( 7 * I N T ( M / 7 ) ) + l

plus professionnels, 250


260
IF I NT ( U / 4 ) O U / 4
LET B=1
THEN GOTO 270

mais en aucun cas


son biorythme La troisième et dernière partie du pro­ qu'elle dépasse 8, on la remet à 1
gram m e édite à l'écran le calendrier (lundi).
mois p ar mois. Il se réfère à la v a ria ­ Q uand le mois est entièrement affiché,
ble B pour compter 29 jours au lieu de l'ordinateur attend que vous appuyiez
28 pour le mois de février. sur la touche « retour chariot » (ÉNTER
E ntrons dans le vif du sujet : cha­ Chaque jour s'affiche sur l'écran à la ou RETURN sur la plupart des ordina­
que mois comporte un nombre position auparavant déterm inée p ar la teurs domestiques), avant d ’afficher le
fixe de jours (exception faite du variable Y (instruction TAB de la ligne mois suivant (NEXT de la ligne 450) ; le
mois de février, qui confirme la règle). 350). C elle-ci est incrémentée (on lui program m e incrémente la variable J du
Après avoir dimensionné le tableau M ajoute 1) après chaque jour affiché. Dès nombre de jours passés.
[D IM M (12)] situé en ligne 30, remplis-
sez-le des nombres de jours p ar mois. 265 R E M --------------------
266 REM E D I T I O N C A L E N D R I E R
Pour février, le program m e se contente, 270 FOR 1 = 1 T0 12
dans sa prem ière partie, de 28 jours, 280 LET N = M ( I )
les années bissextiles étant calculées 290 IF 1 0 2 T H EN GOTO 320
300 IF B O l TH EN GOTO 3 2 0
p ar la suite. Pour que le calendrier soit 310 LET N=29
complet, on indique le nombre de jours 320 PR IN T TA B (10 ) ; J ; " - " ; I ; U ; ; 365 + B-J
passés et à venir. C'est le rôle de la 330 PR IN T"' L M M J V S D"
340 FOR K = 1 T0 N
variable I que l'on met au début à zéro 350 PR IN T T A B (Y * 4 ) ; K ;
(ligne 40). 360 LET Y = Y + l
370 I F Y < 8 TH EN GOTO 4 0 0
380 PRINT
390 LET Y = 1
10 REM CALENDRIER 400 NEXT K
20 REM ------------------------- 410 PRINT
30 DIM M (12) 420 PR IN T"APPU YE Z SUR UNE TOUCHE"
40 LET 0=0 430 I N P U T R$
50 LET 8=0 440 LET J = J + N
60 LET M ( 1 ) = 31 450 NEXT I
70 LET M (2)= 28
80 LET M ( 3 ) = 31
90 LET M( 4 ) = 3 0
100
110
LET
LET
M( 5 ) = 31
M ( 6 ) = 30
n L M
31
M
- 2
J
84
V
- 335
S D
120 LET M ( 7 ) = 31 1 2 3 4 5
130 LET M ( 8 ) = 31 6 7 8 9 10 11 12
140 LET M ( 9 ) = 30 13 14 15 16 17 18 19
150 LET M (10)=31 20 21 22 23 24 25 26
160 LET M (11)=30 27 28 29
170 LET M (12)=31
APPUYEZ SUR UNE TO U C H E

83
H 9 ^
& L B

10 REM CALENDRIER
20 R E M -------------------
30 1D I M M ( 1 2 )
40 LET 0=0
30 LET B= 0
60 LET M ( 1 ) = 31
70 LET M(2)=28
80 LET M(3)=31
90 LET M (4) = 30
100 LET M (5) = 31
110 LET M ( 6 ) = 30
120 LET M ( 7 ) = 31
130 LET M ( 8 )=31
140 LET M ( 9 ) = 30
150 LET M(10)=31
160 LET M(11)=30
170 LET M (12)=31
175 R E M ---------------------
176 REM CALCUL JOUR DE LA SEMAINE
180 PRINT"ANNEE DU CALENDRIER ? "
190 INPUT U
200 IF U > 9 9 THEN GOTO 180
210 LET P=(U-1)/100
220 LET Q = IN T ( P / 4 )
H

LET M = 3 6 + I N T ( ( 5* (U I N T ( P ) +Q
1

230
1

240 LET Y = M - ( 7 * I N T ( M / 7 ))+l


250 IF I N T ( U / 4 ) O U / 4 T H E N G O TO 270
260 LET B=1
265 R E M ---------------------
2 66 REM EDITION CALENDRIER
270 FOR 1=1 TO 12
280 LET N=M (I )
290 IF 1 0 2 THEN GOTO 320
300 IF B O l THEN GOTO 320
310 LET N=29
320 PRINT TAB ( 10); J ; "; I ;u ; " ;36 5+ B-D
330 PRINT" L M M 3 V S D"
340 F O R K = 1 TO N
350 PRINT TAB( Y*4 ) ;K ;
360 LET Y= Y+ 1
§W 1CL 370 IF Y < 8 T H E N GOTO 400
380 PRINT
390 LET Y = 1
400 NEXT K
410 PRINT
420 PRINT"APPUYEZ SUR UNE TOUCHE"
430 INPUT R$
440 L E T 3 = 3+ N
450 NEXT I

L is te d e s v a r ia b le s
B B = 1 si l'année est bissextile N nombre de jours p ar mois
I indice de boucle dans l'édition des douze P utilisée pour le calcul du jour de la
mois de l'année semaine
I nombre de jours écoulés Q utilisée pour le calcul du jour de la
K indice de boucle pour l'édition des jours semaine
M () tableau du nombre de jours p ar mois u année du calendrier
M utilisée pour le calcul du jour de la Y numéro du jour de la semaine : l u n d i - 1,
semaine m ardi = 2, etc.
J

84
JEU DU RANDONION
r • Si la réponse est acceptable, on
AO AO effectue les inversions. Par exemple si
1 1 1 1 R contient 6 :
Ce jeu consiste 2 2 2 2
N
3 3 3 5 r 5 <— 1 9
à mettre
4 4 4 4 2 7 2 6
en ordre croissant
5 5 5 3 3 1 *1 3 3
les neuf chiffres 6 6 6 4 3 4 1
6
qui apparaissent r
7 7 7 7 5 6 e- 5 7
à lecran. 8 8 8 8 6 9 F— 6 5
En un minimum 9 9 9 9 7 4 7 4
d'essais. L AVANT APRES 8 2 8 2
9 8 9 8
00 FOR 1 =1 TO 20
30 LET V = IN T (R N D (1 )*3 )+1 v_ AVANT APRES )
100 LET W= INTCRNDC1 ) # 9 ) +1
110 LET N=OCV) Les schémas ci-dessus montrent que
par Jean-François Sehan
120 LET R(V)=OCW)
130 LET fl(W)=N
trois inversions seulement sont effec­
140 NEXT I tuées. La boucle des liçjnes 260 à 300
est donc répétée pour la variable I
ne seule question vous sera Cette opération est effectuée vingt fois allant de 1 à R divisée par 2. Pour les
U posée : le nombre d'inversions à de suite par la boucle des lignes 80 à inversions, on utilise la même méthode
effectuer en partant de la gau­ 140, ce qui mélange correctement la que pour le mélange.
che. Prenons un exemple. L'ordinateur suite.
propose à l'écran cette suite de La deuxième partie du programme 260 FOR 1=1 TO R /2
270 LET N=R( I )
nombres : 5 7 1 9 3 6 4 2 8. Si vous concerne le jeu lui-même. Le tableau 280 LET OCI) =R (R -1+1)
répondez 4 à la question « nombre est affiché par la boucle des lignes 180
»—t
t-l

Z
290 LET PUR-

II
300 NEXT I
d'inversions ? », la suite devient : 9 1 7 5 à 200. Pour bien séparer ce qui va être
3 6 4 2 8. Après plusieurs essais, vous affiché de ce qui l'est déjà sur l'écran, Une inversion comptant pour un essai,
obtiendrez 123456789. L'ordinateur le PRINT en 170 insère une ligne on incrémente (ajoute plus 1) le
affiche alors le nombre de coups. blanche. En effet, si un PRINT n'est compteur C (ligne 310).
Les chiffres de la suite sont placés dans suivi d'aucun message ou variable, le
le tableau A(), défini à la ligne 30. La Basic saute une ligne. 310 LET L=C+1
variable C compte le nombre de coups.
Elle est remise à zéro au départ du jeu 150 REM ...........................................
Le jeu est fini si le tableau est en ordre
160 REM LE JEU
(ligne 40). 170 PRINT croissant. Les lignes 320 à 340 testent
160 FOR 1=1 TO 3
130 PRINT P C I); cette éventualité. Si au moins une case
10 REM RONDÜNION
200 NEXT 1 n'est pas dans l'ordre (A(I)=I), on
20 REM ...................... retourne en 170 pour une nouvelle
30 DIM 0C3)
40 LET C=0
Après le message « nombre d'inver­ proposition après le test en 330.
sions ? », la ligne 230 place dans la
variable R le nombre que vous tapez 320 FOR 1=1 TO 3
330 IF f l t n o l THEN GOTO 170
Le tableau A est alors rempli des neuf au clavier. Deux solutions se présentent 340 NEXT I
chiffres de l à 9 (boucle des lignes 50 à alors.
70). • Si le nombre est inférieur à 2 ou
supérieur à 9, on refuse cette réponse et □ 453216789 ^
on saisit à nouveau un autre nombre NOMBRE D'INVERSIONS?
50 FOR 1=1 TU 9
60 LET OCI)=I
j2
70 NEXT I
d'inversions. C'est le rôle des deux
lignes de test en 240 et 250. □ 543216789
NOMBRE D'INVERSIONS ?
Pour le mélange, le programme utilise 210 PRINT
ggg? 95 •
deux nombres au hasard V et W (dits 220 PRINT“ NOMBRE D'INVERSIONS ? " D VOUS AVEZ TROUVE EN
nombres « aléatoires »). Par exemple, si 230 INPUT R
240 IF R<2 THEN GOTO 220 ^ 8 COUPS______________^
V=5 et W=3, il inverse le contenu des 250 IF R>3 THEN GOTO 220
cases 5 et 3 du tableau A() : suite page 78

VOTRE ORDINATEUR 77
eq Q ^ F IC H E P R 0 G R R M 1 E
£ 0 £

Si c'est gagné, on affiche le nombre de Le jeu pourrait être plus compliqué en


coups (variable C). prenant comme liste de départ des
chiffres ou les neuf premières lettres de
l'alphabet alternativement. A vos cla­
350 PRINT viers !
360 PRINT "VOUS AVEZ
TROUVE EN “ ; C ; * COUPS"
Laissez libre cours à votre imagination
370 END pour que fleurissent cent mille petits
programmes...

10 REM RRNDÜNION
20 REM -------------
30 DIM 0(9)
40 LET C=0
50 FOR 1=1 TU 9
60 LET OCI)=I
70 NEXT I
Ô0 FOR 1=1 TO 20
90 LET V=INT(RND(1)#9)+1
100 LET W=INT(RNDC1)#9)+1
tr M 110 LET N=R(V)
120 LET R(V)=RCW)
130 LET RCUD=N
140 NEXT I
150 REM ------------
160 REM LE JEU
170 PRINT
180 FOR 1=1 TO 9
190 PRINT RCI);
200 NEXT I
210 PRINT
220 PRINT"NOMBRE D'INVERSIONS ? "
230 INPUT R
240 IF R<2 THEN GOTO 220
250 IF R>9 THEN GOTO 220
260 FOR 1=1 TO R/2
o02 Pn
o 270 LET N=R(I)
O 280 LET R(I)=R(R-I+1)
290 LET RCR-I+1)=N
300 NEXT I
0) «D
310 LET C=C+1
w ^ 320 FOR 1=1 TO 9
® 5> 330 IF RCI)<>I THEN GOTO 170
B a 340 NEXT I

350 PRINT
g» S
360 PRINT "VOUS RVEZ TROUVE EN \-C;M COUPS"
8 'g 370 END
a

Tabledesvariables
Tableau de la suite Réponse du joueur
Compteur d'essais Nombre aléatoire du mélange
Indice de boucle Deuxième nombre aléatoire du mélange
Variable de stockage pour une inversion

VOTREORDINATEUR
LE CHIEN DE BERGER
mande alors les nouvelles coordonnées que vos réponses ne sont pas farfelues.
X et Y du chien (instruction INPUT des Si elles le sont, le damier est de nouveau
Seriez-vous un bon berger ? lignes 280 et 300). La ligne 310 vérifie affiché.
. Guideriez-vous correctement
140 PRINT - X 1 1 1 1 1 1 1 1 1 1 2 " ;
votre chien 150
160
PRINT "Y
PRINT
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 3 0 " ;

pour que les moutons 170


180
FOR 1=1 r o 1 2
I F I < 1 0 THEN PRINT "

rentrent sagement 190


200
PRINT I ;
FOR J = 1 TO 2 0
210 PRINT T t ( J , I ) ; * " ;
dans la bergerie ? 220
230
I F T $ ( J , I ) = " " THEN P R I N T , /
NEXT J
240 I F I <6 OR I >7 THEN PRINT " I " ;
250 PRINT
260 NEXT I
270 PRINT "COORDONNEE X DU CHIEN"
par Jean-François Sehan 280
290
INPUT X
PRINT "COORDONNEE Y DU CHIEN"
300 INPUT Y
310 I F X<1 OR X>20 OR Y<1 OR Y>12 THEN GOTO 1 4 0
e jeu évolue sur un damier de
C vingt cases sur douze cases dans
lesquelles sont placés aléatoire­
ment, au début, une dizaine de moutons
320
330
340
350
360
370
I F T $ ( X , Y ) < >"" PND T S ( X , Y ) o " C " THEN GOTO 140
LET N=N+1
LET TSCXC11) , Y ( 1 1 ) ) = " "
LET X ( 1 1 ) =X
LET Y ( 1 1 ) =Y
LET f SC X ,Y )= " C "
et un chien. En modifiant l'emplacement
de ce dernier, les moutons se déplacent
automatiquement dans le sens opposé.
A vous de trouver les meilleurs empla­ La troisième et dernière partie du
cements pour que tous les moutons programme déplace les moutons suivant
regagnent la bergerie (bord droit du la position du chien (lignes 400 à 660).
damier) en un minimum d'essais. Dès qu'un mouton entre dans la berge­
La première partie du programme place rie, ses coordonnées X et Y prennent les
dans les tableaux X et Y (déclarés par valeurs O et le compteur E (nombre de
les instructions DIM des lignes 40 et 50) moutons éliminés) est incrémenté de 1.
les coordonnées des moutons. On utilise Quand le compteur marque 10, le
aux lignes 80 et 90 des fonctions RND programme affiche le message de la
pour obtenir des nombres aléatoires. ligne 680 (test IF de la ligne 650). Avant
Sur certains ordinateurs (ZX-81, par chaque essai, le compteur N est incré­
exemple), cette instruction s'écrit RND et menté de 1 pour connaître le nombre de
non RND (1) comme dans le listing. Une coups nécessaires pour réussir.
vérification dans le manuel d'utilisation
de votre ordinateur s'impose parfois. Les
coordonnées du chien sont placées à
l'indice onze des tableaux. Le tableau à 380
390
FUR 1=1 TO 3
LET E=0
deux dimensions T$, déclaré à la 400
410
FOR J = 1 TO 10
I F X ( J ) < >0 THEN GOTO 4 4 0
ligne 30, contient la représentation du 420
430
LET E=E+1
GOTO 6 4 0
damier. 440 LET X=XCJ)
450 LET Y = Y ( J)
460 I F X C J ) < X ( 1 1 ) THEN LET X=X-1
470 I F X ( J ) =20 PND ( Y C J X 6 OR Y ( J ) > 7 ) THEN LET X=X-1
•lia REM C H IE N UE BERGER 480 I F X o X C J ) THEN GOTO 5 0 0
2 0 REM ----------------------------------------- 490 I F X ( J ) > X ( 1 1 ) OR X ( J ) = 1 THEN LET X=X*1
3 0 DIM 1 5 ( 2 ( 2 , 1 2 ) 500 I F YC J)< Y C11 ) OR Y C J ) = 1 2 THEN LET Y=Y-1
4 0 DIM XC11) 510 I F Y o Y C J ) THEN GOTO 5 3 0
SO DIM YC11 ) 520 I F Y ( J ) >Y( 1 1 ) OR Y ( J ) = 1 THEN LET Y=Y + 1
6 0 LET N=0 S30 I F X>20 RND Y>5 PND Y<8 THEN GOTO 5 7 0
/ 0 FOR 1=1 r o 11 540 I F X<1 OR X>20 OR Y<1 OR Y>12 THEN GOTO 6 4 0
8 0 LET X ( I ) = I N T C R N D ( 1 ) K 2 0 ) * 1 550 I F T S ( X , Y ) <>"" THEN GOTO 6 4 0
3 0 LET Y ( I ) = I N T ( R N D ( 1 ) # 1 2 X 1 560 GOTO 6 0 0
10(2 I F m X ( I ) , Y C I ) ) o " H THEN GOTO 8 0 570 LET X=0
1 1 0 LET T S C X C I ) ,Y C I ) ) = " M " 580 LET Y=0
1 20 I F 1=11 THEN LET TSCXCI) , Y ( I ) ) = "C" 590 LET E=E*1
1 3 0 NEXT I 600 LET T S ( X ( J ) , Y ( J ) ) = " "
610 LET TS(X ,Y )= "M "
620 LET XCJ)=X
630 LET Y ( J ) = Y
La deuxième partie du programme 640
650
NEXT J
IF E = 1 0 THEN GUTO 6 8 0
affiche à l'écran le damier ainsi que les 66(2 NEXT I
6/0 GOTO 140
numéros des cases pour déterminer la 680 PR IN T"VOUS PVEZ REUSSI EN - ; N; * COUPS"
position du chien. Le programme de­

VOTREORDINATEUR 79
F IC H E P R O Ü R H n n E

w
CD
10 PGM CHIEN lie: BERGER
21/ R E M ..........................................................
30 DIM I H 2 0 , 1 2 )
40 DIM X ( 1 1 )
50 DIM YC 11 )
B0 LET N=0
/ 0 FOR 1=1 TO 11
80 LET X C I) = IN TC R N D C 1)*20X1
90 LET YC I ) = INTCRNDC1 ) K 1 2 ) *1
100 IF T tC X C I) , Y C I) ) O " " THEN GOTO 80
110 LET T S C X C I), Y C I) ) = "M "
120 IK 1=11 THEN LET T tC X C I) , Y C I ) I = "C
130 NEXT I
140 PRINT " X 1 1 1 1 1 1 1 1 1 2 *
CD 150 PRINT ' 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 "
160 PRINT
170 FOR 1=1 TO 12
180 IF I< 1 0 THEN PRINT " * ;
190 PRINT I ;
20 0 FOR J=1 TO 20
21 0 PRINT T t ( J , I ) ; * * ;
22 0 IF T $ ( J , I ) = " * THEN PRINT " * ;
23 0 NEXT J
24 0 IF I <6 OR I >7 THEN PRINT " I " ;
25 0 PRINT
26 0 NEXT I
27 0 PRINT "COORDONNEE X DU CHIEN"
28 0 1NPUT X
29 0 PRINT "COORDONNEE Y DU CHIEN"
300 1NPUT Y
31 0 IF X<1 OR X>20 OR Y<1 OR Y>12 THEN GOTO 140
32 0 IF T tC X ,Y ) < > “ " RND T $ ( X , Y ) o " C " THEN GOTO 140
33 0 LET N=N+1
34 0 LET TSCXC11) , YC11) } = * *
35 0 LET X C 1 1 X X
360 LET YC1 1 ) =Y
37 0 LET T t ( X , Y ) = " C "
38 0 FOR 1=1 TO 3
390 LET E=0
400 FOR J=1 TO 10
410 IF X C J Io O THEN GOTO 440
420 LET E=E+1
43 0 GOTO 64 0
44 0 LET X=XCJ)
45 0 LET Y=YCJ)
46 0 IF X C J X X C 1 1 ) THEN LET X=X-1
en 3 47 0 IF X ( J ) =20 RND ( Y ( J ) < 6 OR Y C J)> 7 ) THEN LET X=X-1
4 8 0 IF X o X C J ) THEN GOTO 500
49 0 IF X C J X X C 1 1 ) OR XCJ)=1 THEN LET X=X+1
5 0 0 IF Y C J )<YC11) OR Y (J J = 1 2 THEN LET Y=Y-1
5 1 0 IF YO Y C J1 THEN GOTO 530
52 0 IF Y C J ) >YC113 OR YCJ) =1 THEN LET Y=Y+1

s g,
M Dh|
53 0 1F X>20 RND Y>5 RND Y (8 THEN GOTO 570
5 4 0 IF X<1 OR X>20 OR Y<1 OR Y>12 THEN GOTO 640
5 5 0 IF m X , Y ) 0 “ " THEN GOTO 640
O W 5 6 0 GOTO 600
■53 «S 5 7 0 LET X=0
5 8 0 LET Y=0
5 9 0 LET E=E+1
6 0 0 LET T $ C X C J ) ,Y ( J ) ) = " *

o «D 6 1 0 LET T tC X ,Y )= "M "


6 2 0 LET X C J X X
W3 6 3 0 LET YC J)=Y
© O. 6 4 0 NEXT J
ë a| 6 5 0 IF E=10 THEN GOTO 680
6 6 0 NEXT I
g © 6 7 0 GOTO 140
H

6 8 0 PRINT"VOUS RUEZ REUSSI EN " ; N ; " COUPS"
V' W

CD
CD Listedesvariables
E Nombre de moutons éliminés X Nouvelle position en x du chien
I Indice de boucle X() Position en x des moutons
J Indice de boucle Y Nouvelle position en y du chien
N Nombre d'essais Y() Position en y des moutons
T$()Tableau représentant le damier

80 VOTREORDINATEUR
LE FÉMININ DES MOTS
Si l'ordinateur possède les instructions on retourne à la ligne 250 pour une
DATA et READ (liste de données, lecture nouvelle proposition.
des données), il est possible de modifier
Vous ne connaissez le programme ainsi : 200 PRINT"LE MALE: "
pas bien :MJ(P,1)
230 PRINT"LA FEMELLE ? "
le féminin de certains 40 DATA BELIER,BREBIS, 300 INPUT RJ
noms d'animaux ? • CERF,BICHE,LEVRIER, 310 IF RJ=MJ(P,2)
LEVRETTE,SANGLIER THEN GOTO 340
Découvrez-les avec ce 50 DATA LAIE,VERRAT,TRUIE, 320 PRINT"NON. C'EST
BOUC,CHEVRE, LA "; MJ(P,2)
programme de traduction CHEVREUIL,CHEVRETTE 330 GOTO 250
60 DATA ETALON,JUMENT, 340 PRINT"OUI. C'EST
qui vous aidera, LIEVRE,HASE, LA ";MJ(P,2)
en outre, à maîtriser SINGE,GUENON 350 GOTO 250
70 FOR 1=1 TO 10
l'introduction et 80 READ MJ(1,1),MJ(1,2) Ce programme n'est pas limité à la
90 NEXT I
l'exploitation de données comparaison des mâles et des femelles.
dans un programme. Il peut être employé dans bien d'autres
(On supprimera alors les lignes 100 à cas.
230.) Voici une autre possibilité. Modifiez en
Avec un ZX-81, il faut définir la longueur conséquence les lignes 40 à 230 en
des chaînes de caractères du tableau utilisant les mots de ce nouveau tableau.
M$ en écrivant : N'oubliez pas aussi les libellés des
par Jean-François Sehan
30 DIMM$ (10, 2,9) PRINT des lignes 280 et 290.
La donnée la plus longue comprenant
'ordinateur affiche à l'écran le
L nom d'un mâle qu'il tire au hasard
dans une liste préétablie. Il suffit
de taper au clavier le féminin qui lui
neuf caractères (mot « CHEVREUIL »).
La variable P donne un chiffre au
hasard compris entre 1et 10. La fonction 1
2
1
CABIAI
CALAO
M$C)
2
MAMMIFERE
OISEAU
RND (1) donne un nombre toujours
correspond. Une erreur ? La machine ne compris entre 0 et 0.9999... En multipliant 3 CAROLIN OISEAU
vous mettra pas une mauvaise note mais ce dernier par 10 et en ne prenant que 4 CARABE INSECTE
donnera simplement la réponse exacte. la partie entière (c'est le rôle de la 5 CARNELET POISSON
Côté programme, c'est très simple. Tous fonction INT), on obtient un nombre 6 CASOAR OISEAU
les noms sont placés dans un tableau à entre 0 et 9. Il suffit de lui ajouter 1, et le 7 CHABOT POISSON
deux dimensions. La première colonne tour est joué. Pour le ZX-81, la fonction 8 MACHAON INSECTE
donne les noms masculins, la deuxième RND (1) doit être remplacée par RND. 9 CHEVECHE OISEAU
leurs correspondants féminins. 10 CICINDELE INSECTE

240 REM ......... ... Le tableau M$ est ici limité à dix


10 REM LES FEMININS éléments. Il est possible d'augmenter ce
20 R E M --- --------- 250 REM QUESTIONS
30 DIM MJ(10,2) 260 LET P=INT(RND(1)#10)+1 nombre, dans les limites de l'ordinateur.
40 LET MJ(1,1 )= "BELIER" 270 PRINT La liste des mots peut ainsi s'allonger
50 LET M$C1, 2) ="BREBIS" jusqu'à 30 ou 40 mots, voire 100 si
60 LET MJ(2,1)=”CERF"
70 LET MÎ(2,2)="BILHE" Maintenant que ce chiffre « aléatoire » possible.
00 LET MJ(3,1)="LEVRIER" est en votre possession (dans la A vous maintenant de créer de
nouveaux tableaux !
30 LET M$(3,2)="LEVRETTE" variable P, bien évidemment !), on
100 LET M$(4,1)="5RNGLIER"
110 LET MJ(4,2)="LAIE" affiche le mot du tableau M$ qui y
120 LET MJ(5,1)="VERRAT" □ LE MALE: CERF
correspond. Prenons un exemple. Si
130 LET MJ(5,2)="TRUIE" P=6, on affiche M$(6,l) c'est-à-dire □ LA FEMELLE?
140 LET MJ(6,1)="BGUC" ?BICHE
1S0 LET MJ(6,2)="CHEVRE" « BOUC », le féminin à trouver étant
□ OUI. CEST LA BICHE
160 LET MJ(7,1)="CHEVREUIL" « CHEVRE » (dans M$(6,2).
□ LE MALE : CHEVREUIL
170 LET MJ(7,2)="CHEVRETTE" La fonction INPUT de la ligne 300 saisit □ LA FEMELLE?
100 LET MJ(8,1)="ETALON" votre réponse dans la variable R$. Il
130 LET MJ(8,2)="JUMENT" Æ ? ?BICHE
200 LET MJ(9,1)="LIEVRE" suffit de comparer R$ et M$(P,2) pour □ NON. CESTLA CHEVRETTE
210 LET MJ(9,2)="HASE" savoir s'il s'agit d'une réponse correcte. n LE MALE : LIEVRE
220 LET MJ(10,1)="SINGE" Le programme se sépare alors en deux □ IA FEMELLE?
230 LET MJ(10,2)=“GUENON" parties (fonction IF de la ligne 310).
Quelle que soit l'issue de votre réponse,

VOTREORDINATEUR 81
ê? s -è F IC H E P R O O R H Iin E
J feg

:n

10 F LES F E M IN IN 5
20 F
30 l M$( 1 0 (2)
40 l M * ( 1 , 1 ) = 'B E L IE R "
50 l M $ ( 1 , 2 ) = 'B R E B IS "
60 l M $ ( 2 , 1 ) = 'C E R F "
70 l M $ ( 2 , 2 ) = 'B IC H E "
60 l .E T M $ ( 3 , 1 ) = " L E V R I E R "
30 l .E T M $ ( 3 , 2 ) = " L E V R E T T E "
100 L E T M $ ( 4 , 1 ) = " S A N G L I E R "
110 L E T M $ ( 4 , 2 ) = " L R I E "
120 L E T M $ ( 5 , 1 ) = " V E R R A T "
130 LET M $ (5 ,2 )= " T R U IE "
140 LET M $ ( 6 , 1 )= "B 0 U C "
150 LET M $ (6 ,2 )= " C H E V R E "
1 6 0 L E T M $ ( 7 , 1 ) = "C H E V R E U IL"
1 7 0 L E T M $C7 , 2 ) = "CHEVRETTE"
160 LET M $ (ô ,1 )= " E T A L O N "
(U 1 9 0 L E T M S ( 8 , 2 ) = "JUMENT"
200 L E T M $ C 9 , 1 ) = " L I E V R E "
210 L E T M S ( 9 , 2 ) = " H A S E "
220 L E T M S C 1 0 , 1 ) = " S I N G E "
2 3 0 L E T M S ( 1 0 , 2 ) = "GUENON"
2 4 0 R E M ----------------------------------------
2 5 0 REM Q U E S T I O N S
2 6 0 LET P = IN T (R N D C 1 )K 1 0 )+ 1
2 7 0 PR IN T
2 6 0 P R IN T " L E MALE: " ; M $ ( P , 1 )
2 9 0 P R IN T " L A FEMELLE ? "
3 0 0 I N P U T R$
3 1 0 I F R $ = M $ ( P , 2 ) T H E N GOTO 3 4 0
3 2 0 P R IN T "N O N . C 'E S T LP " ; M $ C P ,2 )
O CD
3 3 0 GOT O 2 5 0
a 3 4 0 P R IN T " O U I. C 'E S T LP " ; M $ ( P , 2 )
0)
3 5 0 GOT O 2 5 0

Listedesvariables
M$(,) Tableau des questions et des réponses
& eu P Position aléatoire dans le tableau M$(,)
<p ü RS Réponse du joueur

VOTREORDINATEUR
I
I

BUDGET FAMILIAL
10 REM BUDGET FRMILIRL 100 LET NJC5)="VETEMENTS"
20 REM --- 110 LET NJ(6)="NOURRITURE"
30 DIM NUS) 120 LET NJC7)="ASSURANCES"
40 DIM DC8) 130 LET NJ(8)="DIVERS"
Avez-vous déjà remarqué 50 DIM PC8) 140 PR INT"TOTAL
l'importance de certaines 60 LET N$C1) ="IMPOTS" DES DEPENSES"
70 LET NU2) ="LOYER" 150 INPUT T
dépenses par rapport 80
90
LET
LET
NU3) ="VOITURE " 160 LET M=0
NJ(4 )="VACANCES" 170 LET D =0
à votre budget ?
Connaissez-vous les La deuxième partie du programme dépensée (variable T). Dans ce cas, le
proportions de vos impôts place dans le tableau D la valeur des message de la ligne 270 apparaît à
dépenses saisies au clavier (instruction l'écran et les dépenses diverses devien­
ou de vos frais INPUT de la ligne 220). Il peut arriver nent automatiquement nulles. Le ta­
de voiture ? que la somme des dépenses saisies bleau D constitué, on place dans le
(variable D) soit supérieure à la somme tableau P le pourcentage de chaque
Ce genre de calcul que vous pensiez avoir réellement dépense par rapport à la variable M.
qui, jusqu'à présent, ( a ES DÉPENSES^
paraissait des plus 180 REM - - - - - - - - - - - - - - - - - - - ? 10 000
fastidieux, 190 REM SAISIE DES DEPENSES □ IMPOTS
200 FOR 1=1 TO 7 ^ ? 2 5 000
devient désormais 210 PRINT NUI) □ LOYER
220 INPUT DCI)
un nouveau jeu 230 IF D(I)<M THEN GOTO 250 ? 17 ooo
passionnant 240 LET M=D(I) □ VOITURE
250 LET D=D+D(I) ^ ? 13 000
260 IF D< =T THEN GOTO 290
270 PRINT "TOTRL > RUX DEPENSES" □ VACANCES
260 LET T=D ? g 000
290 NEXT I O VETEMENTS
300 LET DC8)=T-D ^ ? 2 500
par Jean-François Sehan 310 IF D(8)>M THEN LET M=D(8)
320 FOR 1=1 TO 8 □ NOURRITURE
C e programme simple permet 330 LET P(I)=INT((D(I)/(M/100))#.15) ^ 7 15 000
340 NEXT I O ASSURANCES
d'obtenir un histogramme clair
de l'ensemble des dépenses ? 6 700___________ ^
pour sept postes différents ; le reliquat La troisième et dernière partie du dant aux valeurs du tableau P.
du budget, utilisé ou non, reste placé programme affiche à l'écran le dessin Le nombre des dépenses est fixé à huit
dans la case « divers ». En le lançant, de l'histogramme. On utilise une boucle dans le programme, mais rien ne vous
vous aurez peut-être la surprise de FOR/NEXT pour passer en revue les empêche d'en ajouter, d'en retrancher
découvrir que vous dépensez plus pour huit dépenses et imprimer leurs libellés ou tout simplement de modifier les titres
votre voiture que pour votre nourriture. (tableau N$). Puis une seconde boucle si vous n'avez pas de voiture ou si vous
La première partie du programme place imbriquée affiche les étoiles correspon- ne partez jamais en vacances.
dans le tableau alphanumérique N$ le
libellé des huit postes. N$ est déclaré 350 REM ---- - - - - - - ---
par une instruction DIM à la ligne 30. La 3B0 REM HISTOGRAMME
370 PRINT TABC15);"I------ ■ >"
première information demandée par le 380 FOR 1=1 TO 6
programme est le total des dépenses 3 9 0 P R IN T N J ( I ) ; TRB( 1 5 ) ; * I " j
possibles, soit votre salaire annuel 400 FOR J=1 TO PCI)
duquel vous aurez retranché vos écono­ 410 PRINT"#";
420 NEXT J
mies (1NPUT de la ligne 150). 430 PRINT
La plus importante des dépenses est 440 NEXT I
utilisée comme référence pour la taille
de l'histogramme. Elle est placée dans
la variable Met remise à zéro à la ligne n 5 r I > VETEMENTS I*
IMPOTS J************** NOURRITURE I********
160. Il en est de même pour les J********** ASSURANCES I*“ *
dépenses totales à la ligne 170 (somme LOYER
VOITURE J******* DIVERS r**‘*
de toutes les dépenses à l'exception des ^ VACANCES J****
divers).

VOTREORDINATEUR 83
F IC H E P R O E R P , H H E
BUDGET FAMILIAL - BUDGET F
■w
h 7:
10 REM BUDGET FAMILIAL
20 REM
30 DIM N$(8)
40 DIM DC8)
50 DIM P(8)
60 LET N$C1)="IMPOTS"
70 LET N$(2)="LOYER"
80 LET N$(3)="VOITURE"
90 LET N$(4)="VACANCES"
100 LET N$(5)="VETEMENTS"
110 LET N$(6)="NOURRITURE"
120 LET N$(7)="RSSURRNCES"
130 LET N$(8)="DIVERS"
140 PRINT"TOTAL DES DEPENSES"
150 INPUT T
160 LET M=0
170 LET D=0
180 REM---------------
190 REM SAISIE DES DEPENSES
200 FOR 1=1 TO 7
210 PRINT N$(I)
220 INPUT DCI)
230 IF D(I)<M THEN GOTO 250
240 LET M=D(I)
250 LET D=D+D(I)
260 IF D<=T THEN GOTO 290
270 PRINT "TOTRL > AUX DEPENSES"
280 LET T=D
290 NEXT I
300 LET D(8)=T-D
310 IF D(8)>M THEN LET M=D(8)
320 FOR 1=1 TO 8
330 LET P(I)=INT((D(I)/(M/100))#.1S)
340 NEXT I
W
§ 1Ûh,I 350 REM---------------------
U w 360 REM HISTOGRAMME
(D
w "0
370 PRINT TABC15) ;"I----------->"
380 FOR 1=1 TO 8
«u 390 PRINT N$C13;TAB(15);"I";
400 FOR J=1 TO PCI)
410 PRINT"#'
420 NEXT J
430 PRINT
en 440 NEXT I

Listedesvariables
Dépenses totales (saut divers) Valeur maximale des dépenses
Valeurs des dépenses Libellés des dépenses
Indice de boucle Pourcentages des dépenses
Indice de boucle Total des dépenses

84 VOTREORDINATEUR
TRICOT
A la iin de chaque groupe de mesures, le nombre de mailles des augmentations
le programme les transiorme en nombre et des diminutions à effectuer de chaque
de mailles et de rangs. Il calcule aussi côté du tricot.
A vos aiguilles !
200 LET N 1 = IN T ( M 2 * L 1 ) 358 LET P2=INT(M2*P1 )
Finis les longs calculs 210
220
LET
LET
N2=INT(M 2*L2)
N 3 = IN T(R 2 *H 1 )
360 LET E2 = INT(M2*E1 )
370 LET N5=INT(R2*H3)
fastidieux 230
240
LET
LET
N4=IN T( R2*H2}
0 = IN T ((N l-N 2 )/2 )
380
390
LET
LET
N 6 = IN T ( R2*H4)
A = IN T (( E2-P2) / 2 )
pour connaître
le nombre de mailles Les deux dernières parties du pro­ affichent également le nombre de mail­
et de rangs à monter gramme affichent à l'écran toutes les les qu'il restera à rabattre en fin de
valeurs précédemment calculées. Elles tricot.
et à tricoter,
en adaptant 400 REM-------- ------------ ------------ ---------------------
410 REM RESULTATS DOS ET DEVANT
les modèles standard 420 PRINT “ *-= MONTAGE DOS OU DEVANT = - * “
à la taille 430
440
PRINT --MONTER";NI;"MAILLES,SOIT",L1 ; "CMS.“
PRINT --TRICOTER-;N3;-RANGS,SOIT"; H1; "CMS.*
de chaque personne. 450 PRINT - -A"; Hl ; "CMS, RABATTRE DE CHAQUE COTE"
460 PRINT D;"MAILLES, EN PLUSIEURS F OIS, "
470 PRINT ■ POUR LES EMMANCHURES."
480 LET N7=N4-N3
490 LET C=H2-H1
500 PRINT "-TRICOTER ENCORE"; N 7 ; - RANGS, SOIT"
par Jean-François Sehan 510 PRINT C;"CMS. "
520 PRINT "-A“;H2;"CMS,FERMER SELON L'ENCOLURE."
530 REM --------------------------------------------------------
I l suffit de donner à l'ordinateur le 540 REM RESULTATS MANCHES
nombre de mailles et de rangs d'un 550 PRINT ■ *- = MONTAGE DES MANCHES =-**
échantillon de 10 cm sur 10 (variable 560 PRINT ”-MONTER“;P2;"MAILLES,S0IT“;P1;"CMS."
Ml et RI). L'unité de calcul étant le 570 PRINT "-TRICOTER";N5;"RANGS,SOIT";H3;"CMS,"
580 PRINT “ EN AUGMENTANT REGULIEREMENT"
centimètre, on divise par avance ces 590 PRINT " CHAQUE COTE DE"; A;"MAILLES. ■
valeurs par 10. 600 LET N8=( P2+( A*2))
610 LET N9=INT( N8/ 2 )
10 REM TRICOT 620 PRINT "-A";H3;"CMS,RABATTRE LES’ ; N8; “MAILLES“
20 REM ---------------------------------------------- 630 PRINT " RESTANTES REGULIEREMENT,SOIT"; N9
30 PRINT “ ECHANTILLON 10 CMS SUR 10 640 PRINT " MAILLES DE CHAQUE COTE.*
40 PRINT “ NOMBRE DE MAILLES’ 650 PRINT --A";H4;"CMS,FERMER LE TRICOT."
50 INPUT Ml
60 PRINT “ NOMBRE DE RANGS“
70 INPUT RI
80 LET M2=M1/1 0
90 LET R2=R1/10 □
MONTAGE DOS OU DEVANT ^ □ MONTAGE DES MANCHES
MONTER 124 MAILLES, SOIT MONTER 57 MAILLES, SOIT
Le programme vous demande toutes les 48 CM 22 CM
coordonnées du pull à tricoter : largeur TRICOTER 136 RANGS, 40 CM TRICOTER 146 RANGS, SOIT
et hauteur du dos, du devant et des A 40 CM, RABATTRE DE CHAQUE 43 CM EN AUGMENTANT REGU­
manches. COTE 10 MAILLES, EN PLU­ LIEREMENT CHAQUE COTE DE
SIEURS FOIS 18 MAILLES
100 REM ----------------------------------------------
110 REM MESURES DEVANT ET DOS POUR LES EMMANCHURES. A 43 CM, RABATTRE LES 93 MAIL­
120 PRINT “ LARGEUR DOS/DEVANT A LA TRICOTER ENCORE 61 RANGS, LES RESTANTES REGULIERE­
130 INPUT L1 BASE"
140 PRINT “ LARGEUR POITRINE" SOIT 18 CM MENT, SOIT 46 MAILLES DE CHA­
150 INPUT L2 QUE COTE
160 PRINT "HAUTEUR SOUS LES BRAS■ A 58 CM, FERMER SELON L'EN-
170 INPUT H1 ^ COLURE / A 56 CM, FERMER LE TRICOT J
180 PRINT “ HAUTEUR TOTALE DOS/DEVANT"
190 INPUT H2
250 REM — ............. ................. - ............... .
260 REM MESURES MANCHES
270 PRINT “ LARGEUR POIGNET"
280 INPUT PI
290 PRINT “ LARGEUR MANCHE A L ’ EPAULE"
300 INPUT El
310 PRINT "HAUTEUR MANCHE A L ’ EPAULE-
320 INPUT H3
330 PRINT “ HAUTEUR TOTALE MANCHE"
340 INPUT H4

67
I V O T R E O R D IN A T E U R
FICHEPROGRRlinE
10 REM T R I CO T
2 0 REM ---------------------------------------------------------------------------
30 P R I N T “ E C H A N T I L L O N 10 CM SUR 10 CM “
4 0 P R I N T "NOMBRE DE M A I L L E S "
50 INPUT Ml
6 0 P R I N T "NOMBRE DE RANGS"
7 0 I N P U T RI
80 LET M2=M1/ 1 0
9 0 L E T R2 = R1 / 1 0
1 0 0 REM -------------------------------------------------------------------------
1 1 0 REM MESURES DEVANT ET DOS
1 2 0 P R I N T “ LARGEUR D O S/ DE VA NT A LA BA SE "
1 3 0 I N P U T L1
1 4 0 P R I N T " LARGEUR P O I T R I N E "
150 INPUT L2
1 6 0 P R I N T " HAUT EUR SOUS LES BRAS"
1 7 0 I N P U T H1
1 8 0 P R I N T “ HAUTEUR T OT AL E D O S / D E V A N T "
1 9 0 I N P U T H2
2 0 0 LET N I = I N T ( M 2 * L 1 )
2 1 0 LET N 2 = I N T ( M 2 * L 2 )
2 2 0 LET N 3 = I N T ( R 2 * H 1 )
2 3 0 L ET N 4 = I N T ( R 2 * H 2 )
2 4 0 L ET D = I N T ( ( N l - N 2 ) / 2 )
2 5 0 REM ------------------------------------------------------------------------
2 6 0 REM MESURES MANCHES
2 7 0 P R I N T " L ARGEUR P O I G N E T "
28 0 INPUT P I
2 9 0 P R I N T " LARGEUR MANCHE A L ' E P A U L E "
300 INPUT E l
3 1 0 P R I N T " HAUT EUR MANCHE A L ' E P A U L E "
3 2 0 I N P U T H3
3 3 0 P R I N T " HAUT EUR TOT AL E MANCHE"
3 4 0 I N P U T H4
3 5 0 L ET P 2 = I N T ( M 2 * P 1 )
3 6 0 L ET E 2 = I N T ( M 2 * E 1 )
3 7 0 L ET N 5 = I N T ( R 2 * H 3 )
3 8 0 L ET N 6 = I N T ( R 2 * H 4 )
O T3 390 LET A = I N T ( { E 2 - P 2 ) / 2 )
4 0 0 REM -------------------------------------------------------------------------
4 1 0 REM R E S U L T A T S DOS ET DEVANT
4 2 0 P R I N T " * - = MONTAGE DOS OU DEVANT = - * “
4 3 0 P R I N T " - M O N T E R " ; N I ; " M A I L L E S , S O I T " ; L 1 ; "CM "
440 PRINT " - T R I C O T E R " ; N 3 ; “ R A N G S , S O I T " ; H l ; " C M "
4 5 0 P R I N T ’ —A * ; H l ; " C M , RABATTRE DE CHAQUE COT E"
4 6 0 P R I N T D ; " M A I L L E S , EN P L U S I E U R S F O I S , "
4 7 0 P R I N T " POUR LES EMMANCHURES. "
4 8 0 L ET N 7 = N 4 - N 3
4 9 0 L ET C = H 2 - H 1
500 PRINT "-T RICO TE R E N C O R E ";N 7;"R A N G S ,S O IT "
510 PRINT C;"CM "
5 2 0 P R I N T " - A “ ; H 2 ; "CM . FERMER SELON L ’ E N C O L U R E . "

0 0 , 5 3 0 REM -------------------------------------------------------------------------
m 5 4 0 REM R E S U L T A T S MANCHES
5 5 0 P R I N T " * - = MONTAGE DES MANCHES = - * "
C <1>
<D"T3 5 6 0 P R I N T " - M O N T E R " ; P 2 ; " M A I L L E S , S O I T " ; P I ; "CM "
w (1) 570 PRINT " - T R I C O T E R " ; N 5 ; " R A N G S , S O I T " ; H 3 ; " C M . "
<d -a 5 8 0 P R I N T “ EN AUGMENTANT R E G U L I E R E M E N T "
Ë <D 5 9 0 P R I N T “ CHAQUE COTE D E “ ; A ; " M A I L L E S . ■
d w 60 0 LET N 8 = ( P2+ ( A * 2 ) )
§'Ë, 6 1 0 L ET N 9 = I N T ( N 8 / 2 )
620 PRINT " - A " ; H 3 ; " C M S , R A B A T T R E L E S " ; N 8 ; " M A I L L E S '
o o 6 3 0 P R I N T " RESTANTES R E G U L I E R E M E N T , S O I T " ; N 9
g a 6 4 0 P R I N T " M A I L L E S DE CHAQUE C O T E . "
6 5 0 P R I N T “ - A " ; H 4 ; " CMS, FERMER LE T R I C O T . "
Wy 1
<1) G
O g

68 V O T R E O R D IN A T E U R
MISSIONNAIRES ET CANNIBALES
berge on se trouve (B= 0 pour la berge (vous avez gagné !) ou si les missionnai­
de gauche, et B= 1 pour celle de droite). res ne sont pas en minorité (vous avez
Pourrez-vous perdu !).
faire traverser 1 0
20
REM
REM
M I S S I O N N A I R E S E T C A N N I B A L E S
--------------------------------------------------------------------------------------------------
2 6 0 G O S U B 3 6 8

les trois missionnaires 3 0


4 0
D IM
L E T
N { 4 )
N { 1 ) = 3
2 7 0
2 8 0
I F
I F
N ( 3 ) + N ( 4 ) = 6
N ( 1 ) < = N ( 2 )
T H E N
T H E N
G O T O
G O T O 3 0 0
3 4 0

5 0 L E T N ( Z ) =3

et les trois cannibales 6 0 L E T B = 0


2 9 0
3 0 0

3 1 0
I F
I F

I F
N ( 2 ) < > 0
N ( 3 ) < = N ( 4 )

N ( 4 ) = 0
T H E N

T H E N
T H E N
G O T O

G O T O
G O T O

8 0
3 2 0
8 0

de l'autre côté 3 2 0

3 3 0
P R I N T

END
* V O U S A V E Z P E R D U "

Après avoir affiché le numéro de la 3 4 0 P R I N T " V O U S A V E Z G A G N E "

de la rivière, berge, le programme demande le nom­


3 5 0 EN D

compte tenu du fait bre de missionnaires et de cannibales


que les missionnaires qui doivent traverser, tout en vérifiant Le sous-programme des lignes 360 à 560
les impossibilités éventuelles. affiche à l'écran les deux berges et les
ne doivent être lettres C pour les cannibales et M pour
à aucun moment 7 0 G O S U B 3 6 0 les missionnaires. On utilise un sous-
8 0 P R I N T
programme car, deux fois dans le dé­
en minorité sur 9 0
1 0 0
1 1 0
P R I N T
P R I N T
I N P U T
- V O U S

C
"N O M B R E
E T E S
DE
SU R

roulement du programme, on a besoin


LA
C A N N I B A L E S
B E R G E " ; B + l
"

l'une des deux berges ? 1 2 0

1 3 0
I F

P R I N T
de l'affichage du jeu complet (aux li­
C > N ( l + ( B * 2 ) )

"N O M B R E DE
T H E N G O T O

M I S S I O N N A I R E S
7 0

"
1 4 0 I N P U T M
gnes 70 et 260).
C'est un jeu d'aventure... 1 5 0
1 6 0
1 7 0
I F
I F
I F
M > N ( 2 + ( 8 * 2
C + M > 2
C + M < 1
T H E N
T H E N
) )
G O TO
G O T O
T H E N
7 0
7 0
G O TO 7 0

historique, bien entendu, 3 6 0 REM .. ................................................................................................................

puisque les cannibales 3 7 0


3 8 0
RE M
P R I N T
A F F I C H E L E J E U
* -------------------------------------------------- ----------------------- ................................*

ont disparu de la ( □ BERGE 1 BERGE 2 ^ 3 9 0


4 0 0
P R I N T
FO R 1 = 1
" B E R G E
T O 4
1 B E R G E 2 "

CCC MMM 4 1 0 I F I / 2 = I N T ( I / 2 ) T H E N G O T O 4 4 0

planète... de même 4 2 0
4 3 0
L E T
G O T O
C $ = " C "
4 5 0
4 4 0 L E T C $ = " M "

que les missionnaires ! VOUS ETES SUR LA BERGE 1 4 5 0 FO R J = 1 T O 3

□ NBRE DE CANNIBALES 4 6 0
4 7 0
I F N ( I ) < J
P R I N T C S ;
T H E N G O TO 4 9 0

?J 4 8 0

4 9 0
G O T O

P R I N T
5 0 0

"

□ NBRE DE MISSIONNAIRES 5 0 0 N E X T J

par Jean-François Sehan ?j 5 1 0


5 2 0
I F I < > 2
P R I N T "
T H E N G O TO 5 3 0

5 3 0 P R I N T " *;
5 4 0 N E X T I
5 5 0 P R I N T

Les lignes 180 à 250 modifient le ta­ 5 6 0 R E T U R N

bleau N( ) en fonction des deux valeurs


saisies au clavier (variable C et M) et
L es trois missionnaires et les trois changent le contenu de B pour la nou­
cannibales ont à leur disposition velle berge. f h l BERGE 1 BERGE 2^
une barque pour traverser, mais CC MM CM
celle-ci ne peut prendre que deux pas­
sagers au maximum. Il est donc néces­ 1 8 0
1 9 0
N ( 1 + ( B * 2 ) )
VOUS ETES SUR LA BERGE 2
= N ( 1 ♦ ( B * 2 ) ) - C
N ( 2 + ( B * 2 ) ) = N ( 2 + ( 8 * 2 ) ) - M

saire d'effectuer plusieurs passages 2 0 0

2 1 0
1 F

L E T
B = 1

B = 1
T H E N
□ NBRE DE CANNIBALES
G O T O 2 3 0

pour que tout le monde se retrouve sur 2 2 0 G O T O 2 4 0 ?o


2 3 0 L E T B = 0
la berge de droite. A chaque passage le 2 4 0 D NBRE DE MISSIONNAIRES
N ( 1 + ( B * 2 ) ) = N ( 1 + ( B * 2 ) ) + C

programme demande le nombre de 2 5 0


?1
N ( 2 + ( B * 2 ) ) = N ( 2 + ( B * 2 ) ) + M

cannibales et de missionnaires. Le total


de ces deux nombres ne doit pas être Avant de saisir au clavier de nouvelles □ BERGE 1 BERGE 2
nul ou supérieur à deux. Si les mission­ données, on vérifie si tous les antagonis­ CC MMM C
naires deviennent minoritaires (2 canni­ tes ne sont pas arrivés à destination
bales contre 1 missionnaire, par exem­
ple), vous perdez. A vous de trouver la Liste des variables
bonne tactique ! NQ Nombre de cannibales et de mis­ M Nombre de missionnaires à
Pour connaître le nombre des mission­ sionnaires sur chaque berge déplacer
naires et des cannibales à tout instant, B Numéro de la berge I Indice de boucle i'OK/NEXT
on définit un tableau N( ) dans lequel C Nombre de cannibales à C$ Caractère à afficher
on place les quantités de départ. La déplacer I Indice de boucle FOR/NEXT
variante B permet de savoir sur quelle v _

V O T R E O R D IN A T E U R 69
ri n ^ ’~ ~ m m
FICHEPROGRfflllE
“ m m m ^ “““ “ ““

CANNIBALES

70 VOTRE ORDINATEUR
I
I

LA FONCTION RND
10 REM TEST DE LA FONCTION RND
20 REM--------------- ---------- --------------
La fonction RND 30 DIM R( 10)
40 FOR 1=1 TO 30000
du Basic est 50 LET A=INT(RND(1 ) * 1 0 )+1
60 LET R( A) =R( A) + 1
très importante 70 IF I N T ( I / 1 0 0 0 ) O I / 1 0 0 0 THEN GOTO 340
dans l'élaboration
de la plupart Pour connaître la plus grande et la plus une valeur supérieure à 0.
petite valeur du test, on initialise aux Les compteurs Tl et T2 cumulent le total
des jeux lignes 120 et 130 les variables P et G. P de tirages et de pourcentages. Il est
sur ordinateur. contient 100 car on trouvera toujours une toujours égal à la variable I, mais il est
valeur inférieure à 100 tandis que G possible que T2 ne soit pas égal à 100 à
Mais les nombres contient 0 car il existe automatiquement cause des calculs de la ligne 190.
quelle donne
80 REM -----------------------------------------
sont-ils vraiment 90 REM AFFICHE LE RESULTAT
aléatoires ? 100 LET T l =0
110 LET T2=0
120 LET P=100
130 LET G=0
140 PRINT " --------------- -------------- ------------------
150 PRINT “ APRES*;I;“FONCTIONS RND"
160 PRINT “ ------ -----------------------------------------
par Jean-François Sehan 170 PRINT “LE NB"," EST SORTI"," SOIT"

P our tester cette fonction, le pro­ l'écran le contenu du tableau R( ) ainsi


( □ APRES 15 000 FONCTIONS RND que les pourcentages correspondants.
gramme qui suit tire trente mille
nombres aléatoires compris entre On stocke dans la variable G ou P les
LE NB EST SORTI SOIT
1 et 10. Après totalisations, le pro­ valeurs supérieures ou inférieures à
gramme affiche le nombre et le pour­ La boucle des lignes 180 à 270 affiche à leurs contenus actuels.
centage obtenus tous les mille tirages,
ainsi que l'écart entre le plus petit et le 180 FOR J=1 TO 10 230 LET P=B
190 LET B=R( U ) / ( I / 1 0 0 ) 240 IF B<G THEN GOTO 260
plus grand. 200 LET T1=T1+R(J) 250 LET G=B
Pour trente mille, l'écart obtenu ne de­ 210 LET T2=T2+B 260 PRINT 0 , R( J ) ; "FOIS",B;"X"
vrait pas être supérieur à 1 %. 220 IF 1B>P THEN GOTO 240 270 NEXT J
Pour obtenir des nombres entiers de 1 à
10, on multiplie RND par 10. En effet,
RND ne donne que des nombres entre 0 ftj 1 1 473 FOIS 9.82 % □ 6 1 498 FOIS 9.986667 %^
et 1 non compris. En multipliant par dix, 2 1 483 FOIS 9.886666 % 7 1461 FOIS 9.74%
on obtient des nombres entre 0 et 10 non 3 1 500 FOIS 10 % 8 1 480 FOIS 9.866667 %
compris. Il suffit alors d'ajouter 1 et de 4 1 544 FOIS 10.29333 % 9 1 553 FOIS 10.35333 %
garder uniquement la partie entière 5 1 551 FOIS 10.34 % 10 1 457 FOIS 9.713333 %J
(rôle de la fonction INT).
Les possesseurs de Sinclair ou de TI-99 La dernière partie du programme affi- maximales rencontrées ainsi que leur
devront taper RND et non RND(l) che les totaux, les valeurs minimales et différence (G-P).
comme dans le listing. Pour plus de
sécurité, vérifiez dans le manuel de 280 PRINT , " ............. ", “ ------- " 320 PRINT "ECART:"; G-P;"X"
votre machine la syntaxe exacte. 290 PRINT "TOTAL",T1,T2;"%“ 330 PRINT
Le résultat étant placé dans la varia­ 300 PRINT "MINI : "; P ; “X" 340 NEXT I
ble A, on incrémente la case correspon­ 310 PRINT "MAXI :"; G;"X" 350 END
dante du tableau R( ) (dimensionné à la
ligne 30) à chaque tirage. Si vous voulez affiner les résultats, il est
Dans le but de ne pas ralentir l'exécu­ D TOTAL 15 000 100 % N toujours possible d'augmenter la bou­
tion du programme, on affiche les résul­ MINI : 9.713333 % cle I jusqu'à cent mille en modifiant la
tats intermédiaires tous les mille tirages MAXI : 10.35333 % ligne 40 :
uniquement. La fonction IF de la li­ ECART : .6400003 %
gne 70 teste cette éventualité. v ___________ ______________ / FOR 1=1 TO 100000

V O T R E O R D IN A T E U R 71
3
« Q 5 FICHEPROGRRflflE

TEST DE LA FONCTION RND


R(18)
1=1 TO 30000
A=INT(RND(1)*10)+1
R(A)=R(A)+1
INT (1/1000)01/1000 THEN GOTO 340
REM
REM AFFICHE LE RESULTAT
I LET T1=0
' LET T2=0
I LET P=100
l LET G=0
I PRINT "
l PRINT " APRES":I:"FONCTIONS RND
l PRINT " —
) PRINT “LE NB",■ EST SORTI SOIT
l FOR 0=1 TO 10
l LET B=R(0)/(I/100)
l LET T1=T1+R(J)
I LET T2=T2+B
l IF B>P THEN GOTO 240
LET P=B
IF B<G THEN GOTO 260
LET G=B
PRINT J,R(J);"FOIS",B;
NEXT J _ h si
PRINT ts
PRINT TOTAL" ,Tl|T2; "%
PRINT MINI :";P;
PRINT MAXI :H; G; "%"
PRINT ECART: ";G-P;
PRINT
NEXT I
END

Liste des variables


Nombre aléatoire entre 1 et 10 Pourcentage le plus grand
Pourcentage Total des tirages par nombre aléa­
Indice de boucle FOR/NEXT toire
Indice de boucle FOR/NEXT Total des tirages
Pourcentage le plus petit Total des pourcentages

72 VOTRE ORDINATEUR
ALERTE A LA BOMBE
on définit aux lignes 30 et 40 deux la bombe, on incrémente alors le
tableaux numériques X( ) et Y( ). compteur R.
Puis on place dans le tableau M$( ) les
quatre messages possibles et dans X( )
Une bombe 260 IF Y(I )<>X(I ) THEN GOTO 280
des nombres aléatoires compris entre 1 270 LET S=S+1
a été déposée et 20. 280 IF Y(X)<X(I)-5 THEN GOTO 310
290 IF Y(I)>X(I)+5 THEN GOTO 310
dans un immeuble Le temps qui vous est imparti étant de 300 LET R=R+1
cinquante secondes (ou essais), on attri­ 310 NEXT I
de vingt étages. bue à la variable T cçtte même valeur.
Saurez-vous Si le compteur S contient 3 après la
boucle, le programme va en ligne 440
la désamorcer 10 REM ALERTE A LA BOMBE pour afficher le message « OUF ! » (fin
en moins de 20 REM -------------------------------------- du jeu).
30 DIM X(3) Dans le cas contraire, on affiche un des
cinquante secondes ? 40 DIM Y(3)
quatre messages de M$ suivant la va­
50 DIM M$(4)
Évidemment, 60 LET MS( 1 ) = "GLACIAL“ leur de R, ainsi que le nombre de
70 LET M$(2)="FROID“ coordonnées justes.
on ne peut pas dire 80 LET MS( 3 ) = “CHAUD“
90 LET MS( 4 ) = “BRULANT"
que l'intitulé du jeu 100 FOR 1=1 TO 3 320
330
I F S=3 THEN GOTO 440
LET R=R+1
110 LET X(I)=INT(RND(1)*20)+1
soit du meilleur 120 NEXT I
340
350
PRINT " * - = ";M ${R ); ■ =- * "
PRINT S; “ COOROONNEE(S) JUSTE(S)
goût, mais l'humour 130 LET T=50

noir n'a-t-il pas □ FROID


toujours été Après avoir affiché le temps qu'il vous 0 COORDONNEE(S) JUSTE(S)
un recours reste (variable T), le programme saisit
au clavier vos trois coordonnées (en les Avant de retourner à une nouvelle sai­
pour survivre plaçant dans le tableau Y) et vérifie sie, on teste le contenu de la variable T
dans des quelles ne soient ni inférieures à zéro ni pour vérifier qu'il vous reste du temps.
supérieures à vingt.
situations parfois
360 PRINT
dramatiques ? 370 LET T =T -1
160 REM------------------- -------- ------ 380 I F T > 0 T H EN GOTO 180
170 REM LE JEU
180 LET S=0
190 LET R=0 Si ce n'est plus le cas, on affiche le
par Jean-François Sehan
200 PRINT “IL VOUS RESTENT; message « BOUM ! » et les coordonnées
“SECONDES" qu'il fallait trouver.
210 FOR 1=1 TO 3
220 PRINT“COORDONNEE";I
230 INPUT Y( I ) 390
400
R E M ................................................................................... -
REM P E R D U OU GAGNE ?
240 IF Y( I )>20 THEN GOTO 220 410 P R IN 1 "BO U M ! A L A P R O C H A IN E ____ ■
250 IF Y( I )<1 THEN GOTO 220 420 P R IN T " L A BO M BE E T A I T E N " ; X ( 1 ) ;

430 END
X (2);X (3)
440 P R IN T "O U F ! VO US L 'A V E Z TROUVEE"
450 END

□ IL VOUS RESTE 50 SECON­ / \


DES □ IL VOUS RESTE 49 SECON­
COORDONNEE 1 DES
C haque étage comporte quatre Æ P ? 10
cents appartements (20X20). COORDONNEE 1
□ COORDONNEE 2
Pour trouver l'emplacement de ^P?10
la bombe, il suffit de donner à votre O COORDONNEE 2
□ COORDONNEE 3 d û ? ? 10
détecteur trois coordonnées pour obtenir dHF?10
un des quatre messages (glacial, froid, □ COORDONNEE 3
chaud ou brûlant) et déterminer ainsi sa dBP?15
position. Si une des coordonnées est correcte, on □ BRULANT
Pour stocker les coordonnées de la incrémente le compteur S. Dans le cas 0 COORDONNEE(S) JUSTE(S)
bombe et celles proposées par le joueur, où elle se trouve à moins de six cases de V_____________________ J

■ V O T R E O R D IN A T E U R 73
C D

,kt%
FICHEPROGRRMIE
1111
&

<d ^
PQ a>
CLT- ALERTE A LA BOMBE
PQ > §
w G>
DI M X ( 3 D
d w
S w DI M Y ( 3 )
S ^ a) DI M M $ ( 4 ) ( 7)
J2 w .ET M $( 1 ) = " G L A C IA L "
O CD g
"3 o .ET M $( 2 ) = " FR O ID 0
P Q -vV c<D .ET M $ (3)= "C H A U D "
.ET M $( 4 ) = "BRULANT0
TJ
■S G FOR 1 = 1 TO 3
• < G LET X ( I ) = I N T ( R N D ( 1 ) * 2 0 ) + 1
w >
NEXT I
■ — 1 üS i0 LET T = 5 0
G fi P R I N T " L A BOMBE EST DANS UNE DES 8 0 0 0 P I E C E S 0
a fi
* <
"G g P R I N T " VOU S A V E Z 50 SECONDES POUR L A T R O U V E R "
^
o s R E M -----------------------------------------------------------------------
CD
PQ M O O
H REM L E J E U
LET S=0
£ -----1 >
L ET R=0
P Q S ^CD
O P R I N T " I L VOUS R E S T E ° ; T ; " S E C O N D E S
FOR 1 = 1 TO 3
PQ PRINT"COORDONNEE";I
1___ ]
S
tr
U1
|
8
u INPUT Y ( I ) i va) - f PU
£ CD I F Y ( I ) > 2 0 TH EN GOTO 2 2 0
I F Y ( I ) < 1 T H E N GOTO 2 2 0
• < W J
»H fi I F Y ( I ) < > X ( I ) THEN GOTO 2 8 0
1 ^ O LET S=S+1
M'G
{H 2 I F Y ( I ) < X ( I ) - 5 THEN GOTO 3 1 0
PQ CD 0
fi fi I F Y ( I ) > X ( I ) + 5 THEN GOTO 3 1 0
2 <D L ET R=R+1
PQ OTJ
NEXT I
U1
I F S = 3 THEN GOTO 4 4 0
S B 5 LET R=R+1
PRINT " *-= "jM $ (R );
O -1 3
ui o PRIMT S;"COOR DONNEE(S) J U S T E ( S ) "
g. c PRINT
PQ fi ■■
Ow LET T = T - 1
O 'CD
■ ■ ■ rH I F T > 0 THEN GOTO 1 8 0
fi « R E M -----------------------------------------------------------------------
ow J2
fi REM PERDU OU GAGNE ?
3
o -a
•rH “î- * P R I N T " BOUM ! A LA P R O C H A I N E ____ "
«i ü P R I N T " L A BOMBE E T A I T E N " ; X ( 1 ) ; X ( 2 ) ; X ( 3 )
pq0 8a END
• <
fi C D P R I N T " O U F ! VOUS L ' A V E Z T R O U V E E "
CDTJ END
PQ W CD
E— « fi «
C CD
fi ?
PQ a 2 ^ Liste des variables
X( ) Coordonnées de la bombe T Temps restant
PQ o CD
^ fi Y( ) Coordonnées proposées S Nombre de coordonnées correc-
i T M$( ) Messages tes
WO I Indice de boucle FOR/NEXT R Nombre de coordonnées proches
CD 0
• < u a

74 VOTRE ORDINATEUR
PRONOSTICS
50 PRINT"NOMBRE DE CHEVAUX (+ ■ □
N»DU CHEVAL 1 ^
EN COURSE " ?5
Comment 60 INPUT N □ N° DU CHEVAL 2
70 FOR 1=1 TO N étfp* ? 23
obtenir un tiercé unique 80 LET R(I )= I
90 NEXT I N° DU CHEVAL 3
en se référant à plusieurs 100 PRINT’NBRE DE PRONOSTICS" ^ ?... etc... y
pronostics. 110 INPUT P
120 PRINT "NOMBRE DE CHEVAUX
PAR PRONOSTIC ■ 2 3 0 R E M

130 INPUT C 2

2
4

5
0

0
R

L
E

E
M

T
C

0
L

=
A

0
S S E M E N T

par Jean-François Sehan 2


2

7
6

0
0 F

I F
O R

1 r
1

(
=

I
1

) >
T

=
O

T ( 1
N

+
- 1

1 ) T H E N 3 5 0

L e programme proposé donne une Puis c'est le tour des pronostics eux-
2

2
8

9
0

0
L

L E
E

T
T B

T
=

(
T

I )
( I

= T
)

( 1 + 1 )

note pour chaque cheval, en fonc­ mêmes. Le programme affiche le nu­


3 0 0 L E T T ( 1 + 1 ) = B

tion de la place attribuée par


3 1 0 L E T E = R ( I )

méro du pronostic et vous demande de 3 2 0 L E T


R ( I ) * R ( 1 + 1 )

chaque pronostiqueur. On trie ces notes taper au clavier les numéros des che­
3

3
3

4
0

0
L

L
E

E
T

T
R

D =
( 1

1
+ 1 ) = B

pour obtenir un classement, comme on vaux les uns à la suite des autres. On 3 5 0 N E X T I

le fait avec les notes des élèves pour place alors dans le tableau T le nombre
3 6 0 I F D = 1 T H E N 2 5 0

connaître le premier de la classe, le de points. S'il y a trois chevaux par


deuxième, etc. pronostic, le premier obtient 3 points, le La dernière partie du programme af­
Pour vous permettre de faire votre choix, second 2 points et le dernier un seul fiche les deux tableaux R et T (numéro
le programme affiche non seulement la point. de cheval et nombre de points) dans
liste des chevaux avec leurs notes, mais l'ordre où ils ont été classés. Les li­
suggère aussi quatre tiercés différents, gnes 450 à 540 vous proposent quatre
composés des premiers chevaux de la 140 FOR 1=1 TO P combinaisons possibles de tiercé.
liste précédente. 150 PRINT "PRONOSTIC No";I
160 FOR J=1 TO C
Mais parlons plutôt du programme. Les 170 PRINT "No DU CHEVAL ";J
pronostics sont placés dans des ta­ 180 INPUT A 370 REM - - - - - - - - - - - - - - -
bleaux. Il faut donc préciser au Basic le 190 LET T(A)=T(A)+C-J+l 380 REM RESULTATS
200 NEXT J 390 PRINT "CHEVAUX","POINTS"
nom et la grandeur de ceux-ci. C'est le 210 PRINT 400 FOR 1=1 TO N
rôle des instructions DIM des lignes 30 220 NEXT I 410 IF T(I )=0 THEN 430
et 40. La taille maximale (le nombre de 420 PRINT R(I),T(I)
chevaux, bien sûr) est fixée à 30, comme
430 NEXT I
La deuxième partie du programme 440 PRINT
on peut le vérifier sur les tickets de PMU. 450 PRINT "VOUS POUVEZ JOUER"
classe le tableau T par ordre croissant 460 FOR 1=1 TO 4
de points. On compare pour cela la 470 FOR J=0 TO 2
10 REM PRONOSTICS case 1 avec la case 2. Si la case 2 est 480 IF J+I<=4 THEN 510
20 R E M --------- ------- inférieure, on échange alors le contenu 490 PRINT R(J+I-4 ),
30 DIM T (30 ) 500 GOTO 520
40 DIM R (30) des deux cases (idem pour le tableau R) 510 PRINT R(J+I)
et on met le drapeau à 1 (variable D= 1 520 NEXT J
en ligne 340). Puis on compare la case 2 530 PRINT
Pour mener à bien l'opération de classe­ avec la case 3, la 3 avec la 4, etc. Si l'on 540 NEXT I
550 END
ment, le programme a besoin des don­ a effectué au moins une inversion (le
nées suivantes : drapeau D est à 1), on recommence le
* nombre de chevaux en course : pour classement, et ceci tant que le dra­ □ CHEVAUX POINTS A
être plus rapide dans nos calculs, on ne peau D n'est pas à 0. 25 10
tient compte que du nombre de partants. 15 8
* nombre de pronostics : donnez sim­ 12 7
plement le nombre de pronostics en □ NOMBRE DE CHEVAUXEN 6 6
votre possession (journaux, radio ou COURSE 23 5
télévision). 4&S? ? 25 3 3
□ NOMBRE DE PRONOSTICS 8 3
* nombre de chevaux par pronostics : ?4 9 3
les pronostiqueurs donnent leurs tiercés □ NOMBRE DE CHEVAUXPAR VOUS POUVEZ JOUER
en 5 ou 6 chevaux, voire 8. Vous devez PRONOSTIC 25 15 12
taper au clavier, en réponse à cette ?5 15 12 6
question, le nombre de chevaux du □ PRONOSTIC N» 1 ► 12 6 25
pronostiqueur qui en propose le moins. v ___________ ______________ / ^ 6 25 15 J

VOTRE ORDINATEUR N° 4
73
H 1] S F IC H E P R O G R F M r iE

% - ■$ >

10 REM PRONOSTICS
20 R E M --- - - - - - - - - - - - - - - - - - - - - - - - - -
30 DIM T (30 )
PRONOSTICS - PRONOSTICS

40 DIM R (30 )
50 PRINT“NOMBRE DE CHEVAUX EN COURSE “
60 INPUT N
70 FOR 1=1 TO N
80 LET R (I )= I
90 NEXT I
100 PRINT"NOMBRE DE PRONOSTICS H
110 INPUT P
120 PR 1NT "NOMBRE DE CHEVAUX PAR PRONOSTIC
130 INPUT C
140 FOR 1=1 TO P
150 PRINT "PRONOSTIC No";I
160 FOR J=1 TO C
170 PRINT "No DU CHEVAL *;J
180 INPUT A
190 LET T (A )=T(A )+C-J+l
200 NEXT J
210 PRINT
220 NEXT I
230 REM - - - - - - - - - - - - - - -
240 REM CLASSEMENT
250 LET D=0
260 FOR 1=1 TO N-l
270 IF T (I )> = T(1+ 1 ) THEN 350
280 LET B = T (I )
290 LET T(I)=T(1 + 1 )
300 LET T(1+ 1 )=B
310 LET B = R (I )
320 LET R (I )=R(I+ 1 )
330 LET R (1 + 1 )=B
340 LET D=1
350 NEXT I
360 IF D=1 THEN 250
370 REM - - - - - - - - - - - - - - - -
380 REM RESULTATS
390 PRINT “CHEVAUX",“POINTS"
400 FOR 1=1 TO N
410 IF T (I )=0 THEN 430
420 PRINT R (I ),T ( I )
430 NEXT I
440 PRINT
450 PRINT "VOUS POUVEZ JOUER"
460 FOR 1=1 TO 4
470 FOR J=0 TO 2
480 IF J+I<=4 THEN 510
490 PRINT R (J + I-4 ),
500 GOTO 520
510 PRINT R (J+I ),
520 NEXT J
530 PRINT
540 NEXT I
550 END

L iste d e s v a r ia b le s
A numéro de cheval dans un pro­ I indice de boucle FOR/NEXT
nostic I indice de boucle FOR/NEXT
utilisée pour le classement N nombre de chevaux en course

I
B
C nombre de chevaux par pronostic P nombre de pronostics
<D D drapeau ; D = 1 si le classement RO numéro de chaque cheval
est incomplet TO total des points de chaque cheval

74 VOTRE ORDINATEUR N - 4
JO U E Z A U C O M P T E EST B O N
« Le compte est bon » utilise les chiffres est supérieur à 10, on en retranche 10 et
de 1 à 10 mais aussi les nombres 25, 50, on le multiplie par 25 pour obtenir les
75 et 100. quatre nombres supérieurs à 10 (RND(l)
On ne compte plus La fonction RND de la ligne 90 donne un s'écrit RND pour le TI99 et le ZX 81/
les adeptes du nombre compris entre 1 et 14. Si celui-ci Spectrum).
célèbre jeu télévisé
« Le compte est bon ». 70 PRINT “JE PROPOSE : " 110 LET C (I )= (C (I )-10)*25
80 LET 1=1 120 IF I>1 THEN 150
Manque d'entraînement ? 90 LET C(I)=INT(RND(1)*14)+1 130 LET R=C(I)
100 IF C (I )<11 THEN 120 140 GOTO 290
Votre ordinateur
familial doté de ce La fonction RND de la ligne 150 donne correcte, le nombre choisi et le total sont
programme original vous un chiffre entre 1 et 4 pour le type placés respectivement dans les ta­
sera d'un grand secours. d'opération à effectuer. Après calcul, le bleaux S() et T().
résultat est stocké dans la variable R. Quand les sept opérations ont été effec­
Cette dernière est vérifiée en ligne 290 tuées, on vérifie en dernier lieu que le
et 300, car le résultat doit rester dans la résultat obtenu est supérieur à 100 (rè­
par Jean-François Sehan fourchette de 1 à 999. Si l'opération est gle du jeu).

150 LET 0(I)=INT(RND(1)*4)+1 260 IF C(I )=1 THEN 80


160 IF 0(I)=1 THEN 210 270 IF INT(R/C(I))<>R/C( I )THEN80
170 IF 0(I )=2 THEN 230 280 LET R=R/C(I)
S i le résultat est le même que celui 180 IF 0(I)=3 THEN 260 290 IF R>999 THEN 80
du jeu télévisé, la démarche pour 190 LET R=R+C(I) 300 IF R<1 THEN 80
obtenir la solution est tout autre. 200 GOTO 290 310 LET S(I )=C(I )
210 LET R=R-C(I) 320 LET T(I )=R
En effet, le problème est pris à l'envers. 220 GOTO 290 330 LET 1=1+1
Le programme ne recherche pas une 230 IF C(I )= 1 THEN 80 340 IF I<8 THEN 90
solution pour un nombre donné, mais 240 LET R =R*C(I ) 350 IF R<100 THEN 80
effectue une suite de calculs avec des 250 GOTO 290
nombres et des opérations pris au ha­
sard pour obtenir le nombre que vous Pour tromper le joueur, on affiche de La troisième partie du programme af­
devrez trouver. Rechercher une solution façon aléatoire le tableau C(). Dès qu'un fiche à l'écran la solution à l'aide des
avec le raisonnement d'un joueur est des éléments de ce tableau a été choisi tableaux S, O et T.
une tâche beaucoup plus compliquée, par la fonction RND de la ligne 390, on
qui mériterait un programme bien plus met celle-ci à zéro (ligne 420). 4 8 0 R E M .......................................................................................................................................................................................................................................................

« lourd ». 4 9 0 R E M S O L U T I O N

Dès le lancement, l'ordinateur affiche à 5

5 1
0 0

0
P

F O
R

R
I N T

1 = 2
“ O N

T O
C O

7
M M E N C E A V E C * ï S < 1 )

l'écran les sept nombres tirés au hasard 360- REM -. . . . . . . . . . . . .... 5 2 0 P R I N T T ( I - 1 ) ;

et le nombre qu'il faut trouver, calculé 370 REM MELANGE/EDITION 5 3 0 I F 0 ( I ) = 1 T H E N 5 8 0

380 FOR 1=1 TO 7 5 4 0 I F O ( I ) = 2 T H E N 6 0 0

par combinaison des sept nombres pré­ 390 LET A=I NT (RND(1)*7) +1 5 5 0 I F 0 ( I ) = 3 T H E N 6 2 0

cédents. Quand vous avez une solution, 400 IF C (A )= 0 THEN 390 5 6 0 P R I N T ' + “ ;

appuyez sur la touche ENTER (RETURN 410 PRINT C (A ); 5

5
7

8
0

0
G

P
O

R
T

I
O

N T
6

'
3

-
0

' ;

420 LET C (A )=0


ou NEW LINE pour certains ordinateurs) 430 NEXT I
5

6
9

0 0
0 G

P
O

R
T

I
O

N T
6

'
3

.
0

' ;

pour obtenir celle du programme. Tou­ 440 PRINT 6 1 0 G O T O 6 3 0

450 PRINT 'POUR TROUVER: ';R


tes les opérations devant être conser­
6 2 0 P R I N T ' / ' ;

460 PRINT'TAPEZ SUR UNE TOUCHE' 6 3 0 P R I N T S ( I ) ; 1 ( 1 )

vées, on dimensionne quatre tableaux à 470 INPUT Z$ 6 4 0 N E X T I

cet effet (lignes 30 à 60). Les chiffres de


départ sont placés dans le tableau C().
□ ON COMMENCE AVEC 9
9 * 75 = 675
10 REM LE COMPTE EST BON
20 REM - - - - - - - - - - - - - - - □ JE PROPOSE : 675 / 25 = 27
30 D IM C ( 7 ) 27 - 10 = 17
40 DIM S < 7) 75 25 100 9 100 10 75 17 + 100 = 117
50 DIM 0(7) POUR TROUVER: 142 117 - 75 = 42
60 DIM T (7) TAPEZ SUR UNE TOUCHE 42 + 100 = 142

VOTRE ORDINATEUR N” 4 75
F IC H E P R O G R F fM lE
=112 5 '
*04 -< g>

10 REM LE COMPTE EST BON


20 R E M -- --- - - - - - - - - - - -
30 DIM C (7 )
40 DIM S(7)
50 DIM 0(7)
60 DIM T(7)
70 PRINT “JE PROPOSE :"
80 LET 1=1
90 LET C(I)=INT(RND(1)*14)+1
100 IF C(I )<11 THEN 120
110 LET C(I)=(C(I)-10)*25
120 IF I>1 THEN 150
130 LET R=C(I )
140 GOTO 290
150 LET 0(I)=INT(RND(1)*4)+1
160 IF 0(I)=1 THEN 210
170 IF 0(I)=2 THEN 230
180 IF 0(I)=3 THEN 260
190 LET R=R+C(I)
200 GOTO 290
210 LET R=R-C(I)
220 GOTO 290
230 IF C(I )= 1 THEN 80
240 LET R=R«C(I)
250 GOTO 290
260 IF C(I )= 1 THEN 80
270 IF INT(R/C(I))<>R/C(I) THEN 80
280 LET R=R/C(I)
290 IF R>999 THEN 80
300 IF R<1 THEN 80
310 LET S(I )=C(I)
320 LET T(I )=R
330 LET 1=1+1
340 IF I<8 THEN 90
350 IF R<100 THEN 80
360 R E M ..... . . . . . . ... .
370 REM MELANGE/EDITION
380 FOR 1=1 TO 7
390 LET A=INT(RND(1)*7)+1
400 IF C(A)=0 THEN 390
410 PRINT C(A);
420 LET C(A )=0
430 NEXT I
440 PRINT
450 PRINT “POUR TROUVER: “;R
460 PRINT'TAPEZ SUR UNE TOUCHE*
470 INPUT Z$
480 REM - - - - - - - - - - - - - - - - -
490 REM SOLUTION
500 PRINT “ON COMMENCE AVEC"; S(1)
510 FOR 1=2 TO 7
520 PRINT T(I-1);
530 IF 0(I)=1 THEN 580
540 IF 0(I )=2 THEN 600
550 IF 0(I)=3 THEN 620
560 PRINT *+ ",
570 GOTO 630
580 PRINT"-";
590 GOTO 630
600 PRINT"*";
610 GOTO 630
620 PRINT"/";
630 PRINT S(I ); "= ";T(I)
640 NEXT I

L iste d e s v a r ia b le s
utilisée pour le mélange S () liste des solutions
liste des chiffres proposés T() total de chaque opération
indice de boucle FOR/NEXT Z$ variable du INPUT d'attente
liste des opérations effectuées qu'une touche soit enfoncée
résultat d'une opération

76 VOTRE ORDINATEUR N -4
CUISINE
Les lignes 1170 à 1240 affichent à
10RFM CUISINE l'écran quelques consignes pour la pré­
Pour les gourmets.
20
30
REM --- - - - - - - - - - - - - - - - -
DIM 0 ( 2 0 ) paration de votre gâteau.
40
50
DIM Q(20)
DIM U(20 ) Remarque : pour une utilisation réelle, il
Votre Ordinateur, 60
70
DIM A (20 )
DIM U$(7)
est préférable de vérifier que le mé­
toujours pratique, 80
90
DIM G (7)
DATA FARINE,100,2,3,SUCRE,50,2,2,
lange des ingrédients proposés est vrai­
LAIT,10,4,2,EAU,10,4,2,OEUF,1,1,3 semblable, cela évitera les indiges­
contribue 100 DATA VANILLE,.5,5,2,HUILE,1,3,2,
BEURRE,50,2,2,LEVURE,.5,5,2 tions...
110 DATA BEURRE,50,2,2,RAISINS,50,2,2,
à l'amélioration RHUM,.5,6,1,NOIX,50,2,2
120 DATA CHOCOLAT,50,2,2,POMMES,200,2,2,
du quotidien SEL, 1,7,2,CREME,25,2,2
130 DATA AMANDES,50,2,2,FRUITS C.,50,2,2, 1178
1188
PRINT
PRINT
- « L A N G E R FARINE, SUCRE ET LAIT
"POUR OBTENIR LA P ATE.■
NOISETTES,50,2,2
en proposant 140 DATA ,GRAMMES,CUILLERE(S),CLS,
SACHET,VERRE,PINCEE(S)
1190
1200
PRINT
PRINT
"AJOUTER LES AUTRES INGREDIENTS.
"METTRE LA PATE OBTENUE DANS"
150 FOR 1=1 TO 20 1210 PRINT "DANS UN MOULE BEURRE."
cette fiche-cuisine. 160 READ CS(I),Q (I ),U (I ),A (I )
170 NEXT I
1220
1230
PRINT
PRINT
"PLACER LE MOULE AU FOUR"
"PENDANT 30 MINUTES."
1240 END
Elle vous permettra 180 FOR 1=1 TO 7
190 READ U$(I) 1250 PRINT C $(N ),■ : - ;Q (N )-INT(RNO( 1 )
200 NEXT I •A(N)*1),US(U{N))
de réaliser de 1260 RETURN

somptueux gâteaux.
Le programme prend toujours comme
base de départ pour la pâte les trois / -----------------------------------------\
premiers ingrédients (farine, sucre et □ RECETTE
par Jean-François Sehan lait). Les lignes 1010 à 1060 font appel FARINE : 100 GRAMMES
au sous-programme en 1250 pour obte­ SUCRE : 100 GRAMMES
T outes les données concernant les nir une quantité aléatoire. Le tableau Q LAIT : 20 CLS
ingrédients sont placées dans les donne la quantité de base (100 gram­ CRÈME : 25 GRAMMES
tableaux dimensionnés aux li­ mes pour la farine par exemple) et le RHUM : 5 VERRES
gnes 30 à 80. Ces données sont placées tableau A donne le multiplicateur maxi­ ŒUF : 3
dans des instructions DATA. Si votre mum (3 pour la farine). Ainsi, la quantité POMMES : 400 GRAMMES
ordinateur ne possède pas cette instruc­ de farine sera comprise entre 100 et NOISETTES : 50 GRAMMES
tion, vous devez remplacer les lignes 90 300 grammes. □ FRUITS C. : 100 GRAMMES
à 200 par : On effectue la même opération pour les MÉLANGER FARINE, SUCRE
autres ingrédients. Le nombre d'élé­ ET LAIT POUR OBTENIR
ments supplémentaires est donné par la LA PÂTE.
90 LET C$ (1)=“FARINE" variable S (nombre aléatoire entre 4 et AJOUTER LES AUTRES
100 LET Q (1)=100 6). La boucle FOR/NEXT des lignes 1110 INGRÉDIENTS.
110 LET U ( 1 )= 2 METTRE LA PÂTE OBTENUE
120 LET A (1)=3 à 1130 vérifie dans le tableau G les
130 LET C$ (2) = "SUCRE " éléments déjà sortis pour éviter les dou­ DANS UN MOULE BEURRE.
140 LET Q ( 2 )= 5 0 blons. Comme pour les autres fiches PLACER LE MOULE AU FOUR
150 LET U(2)=2 PENDANT 30 minutes.
160 LET A (2)=2 programmes, il faut remplacer les ins­
170 LET C$ (3 )="LAIT“ tructions RND(l) par RND pour le v ____________ ______________ y
etc ... j usqu ’à TI99/4A et les ordinateurs Sinclair.
880 LET A (20 )=2
et pou r 1 e tableau des unités:
890 LET U $ (1 )= * " L iste d e s v a r ia b le s
900 LET U S (2) = "GRAMMES “
910 LET U$(3) = "CUILLERE(S) " 1000 PRINT "RECETTE” A() liste des multiplicateurs
920 LET U $ (4) = “CLS " 1010 LET N=1
etc ... j usqu 1à 1020 GOSUB 1250 aléatoires
950 LET U$(7) = "PINCEE(S) " 1030 LET N=2 c$o liste des composants
1040 GOSUB 1250
1050 LET N=3 G() liste des éléments déjà utilisés
1060 GOSUB 1250 I indice de boucle FOR/NEXT
1070 LET S = INT(RND(1)«3 )+4
Les possesseurs de ZX81 doivent rem­ 1080 FOR 1=1 TO S indice de boucle FOR/NEXT
placer les lignes 30 et 70 par : 1090 LET N=INT(RND(l)*17)+4 N numéro d'élément
1100 IF 1=1 THEN 1140 QO liste des quantités de base
1110 FOR J=1 TO 1-1
1120 IF N=G(J) THEN 1090 S nombre d'éléments supplé
1130 NEXT J mentaires
30 DIM C $ ( 2 0 , 1 0 ) 1140 GOSUB 1250 U() liste des unités
1150 LET G(I)=N
70 DIM U $ ( 7 , 1 2 ) 1160 NEXT I U$() liste des noms des unités

VOTRE ORDINATEUR N” 4 77
Kl 1 Q ^ F IC H E ,P R O G R fm
txi l O ^
>> £ï7

ù
CUISINE - CUISINE - CUISINE
.ïï
O
S O
G 1 0 REM CUI SI NE
t/3 tJl f l 20 REM
'Ôj ' w 30 DIM C $ ( 2 0 )
,3 M
40 DIM Q(20)
> 50 DIM U (20 )
T) 60 DIM A (20 )
P
•H
U1
70 DIM U$(7)
f-i
3
80 DIM G( 7 )
CD 90 DATA FARINE,100,2,3,SUCRE, 50, 2, 2,
L A I T , 10,4,2, E A U , 10,4,2,OEUF,1,1,3
.3 O 100 D A T A V A N I L L E , .5,5,2,HUILE,1, 3, 2,
T? "TJ
*-• G
BEURRE,50,2,2,LEVURE, .5, 5, 2
° o 110 DATA BEURRE,50,2,2,RAISINS,50,2,2,
w p RHUM, .5,6, 1, NOIX, 50,2,2
s S 120 DATA CHOCOLAT,50,2,2,POMMES,200, 2, 2,
s P
w
SEL,1,7,2,CREME,25,2,2
O
7<1> >o
130 DATA AMANDES,50,2,2,FRUITS C.,50,2,2,
NOISETTES,50,2,2
er § 140 DATA ,GRAMMES,CUILLERE(S),CLS,
w 2
C Do SACHET,VERRE,PINCEE(S)
Ï-H C
tX _
150 FOR 1=1 TO 20
160 READ C$(I),Q(I),U(I),A(I)
p o
w u 170 NEXT I
(-i 180 FOR 1=1 TO 7
P
(D 190 READ U$(I)
f-H u 200 NEXT I
d P 1 0 0 0 PRINT “RECETTE"
o
_ O
1 0 1 0 LET N=1
P •■ 1 0 2 0 GOSUB 1250
U
8 w h s Q J
1030 LET N=2
t/2
^ P(-H
h 1040 GOSUB 1250
g, 0 1050 LET N=3
o o
1060 GOSUB 1250
(J P3 1070 LET S=INT(RND(l)*3)+4
f-i 1080 FOR 1=1 TO S
P 0
ow 1090 LET N=INT(RND(1)* 17) +4
M
U <D 1 1 0 0 IF 1=1 THEN 1140
•t-H r-P
m T3 1110 FOR J=1 TO 1-1
1 1 2 0 IF N=G(J ) THEN 1090
P «D
1130 NEXT J
<D 1140 GOSUB 1250
1150 LET G(I)=N
®I
P 1160 NEXT I
S
1170 PRINT “MELANGER FARINE, SUCRE ET LAIT“
B
1180 PRINT "POUR OBTENIR LA PATE.“
tji w 1190 PRINT "AJOUTER LES AUTRES INGREDIENTS.
O
t-i '<(-i
D 1 2 0 0 PRINT “METTRE LA PATE OBTENUE DANS"
a a 1210 PRINT "DANS UN MOULE BEURRE."
w (D 1220 PRINT •PLACER LE MOULE AU FOUR"
r8 P
° ;s
1230 PRINT ■PENDANT 30 MINUTES."
— o 1240 END
Q(N)*INT(RND(1)*A(N)+1);U$
1250 PRINT C $(N );

I
p 8
.2 S 1260 RETURN (U (N ) )
p o
û) j-j
S O
C > W

78 VOTRE ORDINATEUR N» 4
LOTO
rifie, dans le tableau N, si le nouveau Pour que les nombres soient plus facile­
nombre n'a pas déjà été tiré (ce test ment utilisables, on classe le tableau N
n'est pas effectué pour N(l) bien en­ dans Tordre croissant. Pour cela, on
Si vous ne voulez plus tendu). Si c'est le cas, on met le dra­ compare la case 1 avec la case 2. Si la
jouer la date de naissance peau D à 1. A la fin de cette boucle case 2 est inférieure, on échange les
(variable J), on vérifie le contenu de D. contenus des deux cases. Puis on
de votre concierge, Si celui-ci est égal à 1, le nombre stocké compare la 2 avec la 3, la 3 avec la 4,
si vous manquez dans A est déjà sorti, on retourne alors à etc.
la ligne 90 pour un nouveau tirage.
d'idées pour remplir Dans le cas contraire, on place le
les grilles de Loto, contenu de A dans le tableau N.
laissez ce soin
40 PRINT "NOMBRE DE CHIFFRES A TIRER"
à votre ordinateur. 50 INPUT M
60 IF M<6 THEN 40
70 IF M>10 THEN 40
80 FOR 1=1 TO M
90 LET A«INT(RND(1)*49)+1
100 IF 1=1 THEN 170
110 LET 0=0
par Jean-François Sehan 120 FOR J=1 TO 1-1
130 IF A O N (J) THEN 150
140 LET 0=1
150 NEXT J
C e programme n'oublie pas les 160 IF 0=1 THEN 90
adeptes des grilles multiples. 170 LET N ( I) =A
180 NEXT I
Dès son lancement, il vous de­
mande d'entrer au clavier le nombre de
chiffres désiré. La réponse est placée r □ NOMBRE DE CHIFFRES A Si Ton a effectué au moins une inversion
dans la variable M, après vérification. TIRER (le drapeau D est à 1), on recommence
?7___________________ J le classement et ceci tant que le dra­
□ NOMBRE DE CHIFFRES À peau n'est pas à 0.
TIRER

□ GRILLE MULTIPLE : 7 NU­ 190 REM


MÉROS 200 REM CLASSEMENT
LE 3 210 LET D=0
LE 10 220 FOR 1=1 TO M-1
LE 11 230 IF N(I)<N(1+1) THEN 280
LE 12 240 LET A=N(I)
LE 30 250 LET N(I)=N(1+1)
LE 32 260 LET N(I+1)=A
LE 49 270 LET D= 1
280 NEXT I

£ £ / ?0
UNE AUTRE GRILLE (O/N) 290 IF D=1 THEN 210
xlll
Les chiffres du tirage étant conservés La dernière partie du programme édite / ---------------------------------------- N
dans le tableau N(), on dimensionne à, l'écran les nombres choisis pour une
celui-ci en ligne 30 (instruction DIM). □ GRILLE MULTIPLE :
grille simple ou multiple.
7 NUMÉROS
LE 4
10 REM LOTO 300 r e m ......... ................................... LE 6
310 REM EDITION
20 REM - - - - - - - - - - - 320 PRINT LE 25
30 OIM N (10) 330 IF M>6 THEN 360 LE 32
340 PRINT "GRILLE SIMPLE: 6 NUMEROS"
350
360
GOTO 370
PRINT "GRILLE MULTIPLE:• ; M:"NUMEROS
LE 36
Pour remplir ce tableau N() avec des 370 FOR 1=1 TO M LE 40
380 PRINT "LE " ;N ( I )
nombres aléatoires, on utilise deux bou­ 390 NEXT I LE 43
cles FOR/NEXT imbriquées. La pre­ 400 PRINT

mière, allant de 1 à M, place dans la


410
420
PRINT-UNE AUTRE GRILLE (O/N) -
INPUT R$
□ UNE AUTRE GRILLE (O/N)
430 IF R$="O" THEN 80 ? o
variable A un nombre aléatoire compris
entre 1 et 49. La deuxième boucle vé-
40 END
V ___________ J
VOTRE ORDINATEUR N” 4 79
KJ F IC H E P R O O R F tm
14
%
:° 4
LOTO - LOTO - LOTO - LOTO

REM LOTO
REM----------------
DIM N(10)
PRINT “NOMBRE DE CHIFFRES A TIRER"
INPUT M
IF M<6 THEN 40
IF M>10 THEN 40
FOR 1=1 TO M
LET A=INT(RND(1)*49)+1
I IF 1=1 THEN 170
I LET D=0
I FOR J=1 TO 1-1
I IF A O N ( J ) THEN 150
I LET D=1
I NEXT 0
I IF D=1 THEN 90
I LET N (I )= A
) NEXT I
J REM-----------------
) REM CLASSEMENT
) LET D=0
) FOR 1=1 TO M-l
) IF N(I)<N(1+1) THEN 280
) LET A=N(I )
I LET N(I)=N(I+1)
I LET N(1+1)=A
l LET D=1
l NEXT I
I IF D=1 THEN 210
, R E M ---------------------------------------------
I REM EDITION
I PRINT
I IF M>6 THEN 360
l PRINT "GRILLE SIMPLE: 6 NUMEROS"
I GOTO 370
m I PRINT “GRILLE MULTIPLE:“;M;"NUMEROS“
I FOR 1=1 TO M
I PRINT “LE "; N (I )
I NEXT I
I PRINT
l PRINT“UNE AUTRE GRILLE (O/N) “
O I INPUT R$
I IF R$="O" THEN 80
I END

L iste d e s v a r ia b le s

I
nombre tiré au hasard J i ndi ce de boucl e FOR/
drapeau ; si D = 1 nombre déjà NEXT
tiré M nombre de chiffres à tirer
i ndi ce de boucl e FOR/ N() liste des chiffres proposés
NEXT RS réponse du joueur

VOTRE ORDINATEUR N» 4
MINI-ANNUAIRE TÉLÉPHONIQUE
la partie d e program m e perm ettant une
recherche à partir des nouvelles infor­ 200 REM RECHERCHE PAR NOM
r>1#-) REM ” —
' -—
mations introduites. ■L 1 U

220 P R IN T "TAPER LE NOM”


Un agenda, 230 IN P U T N *
c'est bien pratique. 10 REM MINI ANNUAIRE TELEPHONIQUE 24»:)
250
FOR I * 1 TO 10
READ A * , B *
20 REM ------------------------------------------------
Cela peut être aussi 30
40
REM LISTE DE VOS CONNAISSANCES
REM ------------------------------------------------
260 IF A * = N * THEN PRINT
270 NEXT I
très amusant 50 DATA L O U IS ,là 34 22 61 OS,JULES,
16 61 33 5 6 7 2 , ETIENNE,16 1 3 2 5 36
280 RESTÜRE
290 GOTO 120
si, en plus des données 3 5 , SO PH IE,16 1 541 2 2 09
•FREDERIOUF.16 I 327 4 5 21
habituelles 60 DATA OCTAVE,16 5 5 13 2 2 76,ESTHER,
16 33 7 2 10 12,RAVM0ND,16 1 2 3 2 34
3 4 , AMELIE, 16 76 0 2 0 3 0 4 . Prem ière option : rechercher un numéro
(nom, adresse, STEPHANE,16 2 3 4 5 5 6 28
de téléphone à partir d 'u n nom. Celui-ci
numéros de téléphone), est introduit d a n s une variab le N$. Le
on met en mémoire Ces lignes (en particulier les lignes 50 et fichier tout entier est alors exploré et un
60) contiennent les informations p résen ­ test est effectué sur ch aq u e nom (li­
des détails tes d an s le fichier, limité d a n s cet gne 260) pour savoir s'il correspond au
plus fantaisistes, tels exemple à dix personnes et deux patronym e concerné. Si c'est le cas, on
informations pour ch acu n e (nom et affichera simultanément le nom et le
que date de numéro de téléphone). Il est possible num éro d e téléphone.
naissance, taille, d'introduire d av an tag e d e renseigne­ En fin d e lecture, le pointeur d e DATA
pointure des ments d an s ch aq u e DATA (en pren an t est remis à 0 (instruction RESTORE),
g ard e à ne p a s faire des lignes trop cela afin que la prochaine exploration
chaussettes, couleur longues) et de mettre d 'au tres lignes de commence d e nouveau en début de
des yeux... DATA : 70, 80... Si l'on a peur de fichier.
m anquer d e p lace, il est bon de savoir S'il y a plus d e dix personnes d an s le
que les lignes DATA peuvent être fichier, il fa u d ra modifier les boucles
inscrites aussi bien en fin de pro­ des lignes 240 et 340, rem placer 10 p a r
gram m e q u 'en début, et même éventuel­ le nom bre d e personnes désirées.
p a r Jacques Deconchat lement les deux à la fois.
300 REM RECHERCHE PAR TELEPHONE
100 REM DEBUT DU MENU
110 REM ----------------------- 320 P R IN T "NUMERO CHERCHE"
120 PRINT 330 IN P U T N *
130 PRINT "RECHERCHE: 1 PAR NOM" 340 FÜR I = 1 TO 10
140 PRINT " 2 PAR TELEPHONE" 350 READ
150 PRINT " 3 FIN"
360 I F 0 * = N * THEN F'R IN T A $ ,B *
160 INPUT R
170 IF R < > 1 AND R < > 2 AND 370 NEXT I
R < > 3 THEN 120 380 GOTO 2 8 0
180 PRINT
190 ON R GOTO 2 0 0 ,3 0 0 , 400

La recherche p art ici du numéro de


Cette partie est en g én éral désignée en téléphone (qui d ev ra être entré exacte­
inform atiq u e sous le v o c a b le d e ment d e la même façon que d an s le
rès simplifié, ce program m e n'est

T p a s pour au tan t simpliste. Tel


quel, il vous donne la possibilité
de trouver le num éro de téléphone à
partir d'un nom ou un nom à partir d'un
« menu ». C 'est d an s ces quelques
lignes d'affichage que sont proposées
les principales possibilités d'un pro­
gramme, souvent (comme ici) num éro­
fichier).
La fin du program m e est réalisée en
ligne 400, p a r une instruction END ; on y
acc è d e en ta p a n t 3 en réponse à la
tées, ce qui perm et de n'avoir qu'un question RECHERCHE.
numéro de téléphone ; deux personnes,
ou plus, portant le même patronym e chiffre à tap er pour a c c é d e r à telle ou
seront autom atiquem ent trouvées et telle fonction (les risques d e faute sont L is te d e s v a r ia b le s
affichées. ainsi diminués). Dans notre exemple, R variab le d e recherche
Il sera, en outre, assez facile de l'option choisie est enregistrée d an s une I variab le d e boucle
l'étendre, en conservant le principe de variable R et contrôlée en ligne 170 (on A$ nom
départ, pour ajouter des informations ne peut tap er que 1, 2, 3). B$ téléphone
sur les personnes répertoriées (adresse, Selon le choix, on sera dirigé sur la ,N$ variab le utilisée pour la recherche
ville, départem ent, âge, etc.) et d'écrire ligne 200, la ligne 300 ou la ligne 400.

VOTRE ORDINATEUR N» 5 73
FICHE PR0GRRM1E
I 15! '

10 REM MINI ANNUAIRE TELEPHONIQUE


20 REM - - - - - - - - - - - - - - - - - - - - - -
30 REM LISTE DE VOS CONNAISSANCES
40 REM - - - - - - - - - - - - - - - - - - - - - -
50 DATA LOUIS,16 34 22 61 08,JULES,
16 61 33 56 72,ETIENNE,16 1 325 36 OUcr j,
SOPHIE,16 1 541 22 09 ,
0 FREDERIQUE,16 1 327 45 21
60 DATA OCTAVE,16 55 13 22 76,ESTHER,
16 33 22 10 12,RAYMOND,16 1 232 34 34,
AMELIE,16 76 02 03 04,
STEPHANE,16 2 345 56 28
100 REM DEBUT DU MENU
110 REM - - - - - - - - - - -
120 PR INT
130 PRINT "RECHERCHE: 1 PAR NOM"
140 PRINT " 2 PAR TELEPHONE"
150 PRINT " 3 FIN"
160 INPUT R
170 IF R < > 1 AND R < > 2 AND
R < > 3 THEN 120
180 PR INT
190 ON R GOTO 200,300,400
200 REM RECHERCHE PAR NOM
210 REM - - - - - - - - - - - - - -
220 PRINT "TAPER LE NOM"
230 INPUT m
240 FOR I = 1 TO 10
250 READ A$,B$
260 IF A4 = m THEN PRINT A$,B$
270 NEXT I
280 RESTORE
290 GOTO 120
300 REM RECHERCHE PAR TELEPHONE
310 REM -------------------
320 PRINT "NUMERO CHERCHE"
330 input m
340 FOR I = 1 TO 10
350 READ A$,B$
M 0
© 3 60 IF B$ = N$ THEN PRINT A$,B$
ü -a 370 NEXT I
380 GOTO 280
400 END

74 VOTRE ORDINATEUR N» 5
JONGLEZ AVEC LES MONNAIES
parties. On commence p a r ce que l'on Le calcul du résultat du ch an g e est fait
pourrait a p p e le r « l'initialisation ». L'or­ en ligne 220, p a r une formule qui permet
dinateur affiche les questions indispen­ d'obtenir un affichage n 'ay an t p as plus
Combien de sucres, de sables pour établir la parité monétaire de deux chiffres d errière la virgule (on
colons, de gourdes ou entre les diverses devises. p ren d le résultat exact, on le multiplie
de roupies pour mon p a r 100 ; on p ren d alors sa partie
entière, ce qui élimine tous les chiffres
petit billet de cent 10
20
REM CHANGE
REM ---------- qui pourraient se trouver derrière la
francs ? Avant de 30
40
PRINT "MONNAIE A CHANGER"
INPUT A*
virgule, et on redivise p a r 100 pour
retrouver le résultat initial, avec au plus
partir pour l'Equateur, 50
60
PRINT "POUR OUELLE MONNAIE"
INPUT B* deux chiffres d errière la virgule).
le Costa Rica, Haïti ou 70
BO
PRINT “COMBIEN DE " ;A * ;“ POUR UN
INPUT C Le résultat d u calcul est présenté par
l'Inde, avec escale à V a une p hrase, puis on rep art pour une
nouvelle conversion (on termine en
Sanhsonay (les On entre le nom d e l'une des deux tap an t 3).
célèbres roupies de monnaies, le nom d e l'autre et enfin la
parité (sous la forme : com bien de
Sanhsonay, bien sûr !), francs faut-il pour obtenir un dollar, p a r 300 REM CHANGE 2
310 REM ------
devisons gaiement au exemple). Les noms des deux m onnaies 320 LET T = INT (100 * S * C) / 100
clavier de notre sont enregistrés d an s deux variables, 330 PRINT “POUR "iS;” “;B*S
A$ et B$, et la parité est conservée d an s " vous aurez “;t ;" ";a *
340 GOTO 90
ordinateur. une troisième variable, C.
On entre ensuite d an s la seconde partie
du program m e (« m enu »), qui propose Cette partie, identique à la précédente,
les trois options : ch an g e d an s un sens, perm et d'effectuer le ch an g e dans
p a r Jacques Deconchat chang e d an s l'autre, ou fin. On répon­ l'autre sens.
d ra en tap an t le chiffre correspondant à
l'option choisie, puis l'on introduira la / ---------------------------------------------------\
somme à changer, qui se ra enregistrée □ MONNAIE A CHANGER
d an s une variab le S. "FRANCS
□ POUR QUELLE MONNAIE
?DOLLARS
90 PRINT "CHANGE : K D E " ; A $ ; □ COMBIEN DE FRANCS POUR UN
“ VERS " ; B * 5")5 2 (DE " ; B * ;
“ VERS " ; A $ ; " > ; 3 ( F I N ) "
DOLliAR
^ p ? 85
100 INPUT R
110 IF R == 3 THEN END □ CHANGE : 1(DE FRANCS VERS DOL­
120 PRINT "SOMME A CHANGER" LARS); 2(DE DOLLARS VERS
l vous est certainem ent déjà arrivé, 130 INPUT S FRANCS); 3(FIN)

I lors d e voyages à l'étranger, de


vous trouver conlronté à de redouta­
bles problèm es d e change : à l'aller, on
y arrive san s trop de mal, mais au
140 ON R GOTO 200,300

La seule difficulté réside d a n s l'aiguil­



?2
SOMME A CHANGER
?100
POUR 100 DOLLARS VOUS AUREZ
lage de la ligne 140, qui dirige sur deux
retour... 850 FRANCS
program m es différents selon la valeur
Ce program m e vous perm ettra de □ CHANGE : 1(DE FRANCS VERS DOL­
introduite d an s la variab le R d e la
surmonter ces difficultés quelles que LARS); 2(DE DOLLARS VERS
ligne 100. Sur certains ap p areils (ZX 81
soient les m onnaies concernées, et cela FRANCS); 3(FIN)
ou Spectrum, en particulier), la ligne 140
d a n s tous les sens. Il sera bien sûr plus
devra être rem placée p a r
attrayant de l'utiliser sur un portable, O SOMME A CHANGER
140 GOTO 100+R 100.
pour vous en servir en temps réel, ?10000
lorsque vous salivez devant un magnifi­ □ POUR 10000 FRANCS VOUS AUREZ
que m anteau de cuir italien ou le 200 REM CHANGE 1 1176.47 DOLLARS
dernier g a d g e t électronique japonais. 210 REM ------ □ CHANGE : 1(DE FRANCS VERS DOL­
220 LET T = INT (100 * S / C)
Le prix en est-il vraiment intéressant? 230 PRINT "POUR "ïSj" * ï
LARS); 2(DE DOLLARS VERS
Votre b udget supportera-t-il un tel " VOUS AUREZ "ïT;'' ";b » FRANCS); 3(FIN)
achat ? 240 GOTO 90 ?3

Le program m e s'articule autour de trois v ____ ;____________________________ y

V O T R E O R D IN A T E U R N » 5 75
FICHE PROORFtnnE %
ï 16#

REM CHANut

PRINT "MONNAIE A CHANGER"


IMF'UT A$
PRINT "POUR QUELLE MONNAIE"
INF'UT B$
PRINT "COMBIEN DE "?
A $ ; " POUR UN " ; B$
IN P U T C

PRINT "CHANGE :
K D E " ;A 3 ; " VERS " ; B $ ; " ) ,
2 ( DE " ; B $ ; " VERS " ; A 3 ; " ) ;

INF'UT R
I r R — 3 THEN END
PRINT "SOMME A CHANGER"
T K ir.i iT i—.
1 v ir u I o
ON R GOTO 2 0 0 ,3 0 0
REM CHANGE 1
REM ---------------
V f ) LET T =
INT (10 0 * S / C) / 100
PR IN T "POUR " ; S ; " " ; A 3 ;
" VOUS AUREZ " ; T ; " " ; E t
U4 O GOTO 90
._ t ’._i RL M CHANGE 2
REM ---------------
LET T = INT
(1 0 0 * S * C) / 100
330 PRINT "POUR " ü S ï "
B 3 ; " VOUS AUREZ " ; T ; ....... A3
4U UUT 0 9 u

L is te d e s tr a r ia b le s

A$ prem ière devise R choix de l'option


B$ deuxièm e devise S somme initiale
C taux de ch an g e T somme a p rè s le ch an g e ^

76 VOTRE ORDINATEUR N" 5


| 17 5

pièce, le second a u côté pile. Vous les lignes 170 et 180. Le résultat est
devez essay er d e deviner la suite ainsi co m p aré avec le tirage d e l'ordinateur
obtenue. Si vous recevez régulièrem ent et le score est établi en conséquence
P lu s d e g u i la mention « brillant », alors il fau d ra (ligne 190).
n i d e s e r p e s d 'o r réellem ent vous poser des questions sur
vos capacités divinatoires !
p o u r l e s P a n o r a m ix On commence p a r quelques p h rases 210 LET F = IN T ( SQR ( S ) )
P R IN T
d e s te m p s d'explication concernant les règles du 220
230 P R IN T "VOUS ETES UN D E V IN "i
jeu proposé.
in fo r m a tiq u e s ! 240 ON F GOTO 3 0 0 , 3 2 0 , 3 4 0 , 3 6 0
300 P R IN T "N U L "
V o tr e O r d in a te u r 30 PRINT "CE PROGRAMME VA 310 END
LANCER 20 FIECES DE MONNAIE" 320 P R IN T "M E D IO C R E "
p r o p o s e p lu tô t u n b o n 40 PRINT "APRES CHAQUE LANCER .
330 END
IL VOUS PROPOSE DE DIRE"
p e tit p r o g r a m m e 50 PRINT "SI LA PIECE EST TOMBEE
SUR PILE (F) OU FACE (F )"
340 P R IN T "MOYEN"
END
350
p o u r jo u e r a u d e v in . 40 PRINT "VOTRE CAPACITE DE DEVIN
SERA AFFICHEE EN FIN DE PARTIE"
360 P R IN T "B R IL L A N T "
370 END
Et ta n t m ie u x 70
80
PRINT "ETES-VOUS PRET ( 0/N ) ?"
INPUT R»
90 IF R* < > " 0 “ THEN RUN
p o u r v o u s si,
La ligne 210 permet, en prenant la
e n p lu s , v o u s ê t e s p artie entière d e la racine carrée de S,
La ligne 70 utilise un « truc » pour vous
t é lé p a t h e ! laisser le tem ps de lire les lignes d'obtenir un nom bre pouvant aller de 0
précédentes. Il suffira d e ta p e r 0 en à 4 (0 est très im probable, une seule
réponse à la question « ETES-VOUS réponse exacte suffisant pour avoir 1).
PRET » pour q ue le jeu commence. En fonction d e ce nombre, un m essage
p a r Jacques D econchat se ra affiché, qui tiendra compte du total
d es bonnes réponses que vous aurez
100 REM DEBUT DES LANCERS d o n n ées (il faut a u moins seize réponses
110 LET S = O correctes pour se voir attribuer la
120 FOR I = 1 TO 2 0 mention « BRILLANT »). Sur le ZX 81 et
130 LET H = IN T ( RND ( 1 ) * 2 )
le Spectrum, la ligne 240 doit être
140 P R IN T "LANCER NO. " M i
" - F’ ( I L E ) OU F (AC E) ? " rem p lacée p a r 240 GOTO 300+F 20.
150 IN P U T R *
160 I F R$ < > " P " AND
RS < > " F " THEN GOTO 1 4 0 Æ T CE PROGRAMME VA LANCER
170 I F RS = " P " THEN LET E = 1 20 PIECES DE MONNAIE
180 I F RS = " F " THEN LET E = 0
APRES CHAQUE LANCER, IL
190 I F E = H THEN LET S = S + 1
200 NEXT I
VOUS PROPOSE DE DIRE SI LA
PIECE EST TOMBEE SUR PILE
(P) OU FACE (F)
VOTRE CAPACITE DE DEVIN
ous êtes enfermé dans une pièce La variable S, mise à 0 en ligne 100,

V
SERA AFFICHEE EN FIN DE
complètement noire. D ans la servira à tenir le compte des résultats PARTIE
pièce voisine, votre partenaire se exacts. ETES-VOUS PRET (O/N)?
concentre sur un nombre qu'il essaie de La boucle I (lignes 120 à 200) assure la ,(tfaS??0
vous transm ettre p a r la seule puissance série d e vingt lancers. □ LANCER NO. 1 - P(ILE) OU
de son cerveau. Soudain, vous sortez et Le tirage de la pièce p a r l'ordinateur est l F(ACE)? _______________ J
annoncez aux spectateurs éberlués LE fait p a r la ligne 130, à l'aid e d'une
nom bre ! Qui de nous n 'a p a s un jour variable H qui peut prendre les valeurs
voulu vérifier ses dons de transmission 0 ou 1. Cette ligne d ev ra être modifiée L is te d e s v a r ia b le s

de pensée ? M ais faut-il réellem ent qu'il sur certains ap p areils selon le type de R$ réponse OUI ou NON
y ait pensée à transm ettre ? Ne s'agit-il v a ria b le a lé a to ire d éfin ie p a r le S score
p a s plutôt d'une intuition géniale ? Pour constructeur. I variab le d e boucle
le savoir, vous pouvez faire ap p e l à La ligne 140 affiche le numéro du lancer H tirage d e l'ordinateur (0 ou 1)
votre ordinateur. et dem ande a u joueur de préciser sa E prévision du joueur
Ce petit program m e va tirer vingt fois le réponse p a r un P ou un F qui se ra saisi F variab le utilisée pour l'affichage
chiffre 0 ou 1, le prem ier associé d an s une v ariable R$ puis transformé en d es m essag es d e fin
sym boliquem ent au côté face d'une nom bre d an s une v ariable E (1 ou 0) p a r

VOTRE ORDINATEUR N» 5 77
REM SERIEZ-VOUS UN BON DEVIN

30 PR INT "CE PROGRAMME VA LANCER


20 PIECES DE MONNAIE"
40 PR INT "APRES CHAQUE LANCER ,
IL VOUS PROPOSE DE DIRE"
50 PR INT "S I LA PIECE EST TOMBEE
SUR PILE (P) OU FACE ( F ) "
60 PR INT "VOTRE CAPACITE DE DEVIN
SERA AFFICHEE EN FIN DE PARTI
70 PR INT "ETES-VOUS PRET ( 0/N ) ?"
80 INPLJT R$
90 IF R$ < > "0 " THEN RUN
100 REM DEBUT DES LANCERS
.110 LET S = 0
120 FOR I = 1 TO 20
130 LET H = INT ( RND (1) * 2)
140 PR INT "LANCER N O ." ; I ; "
- P ( ILE) OU F(ACE) ?"
150 IN PUT R$
160 IF R$ < > "P " AND R$ < >
"F " THEN GOTO 140
170 IF R$ = -"P " THEN LET E = 1
180 IF R$ = "F " THEN LET E = 0
190 IF E = H THEN LET S = S + 1
200 NEXT I
210 LET F = INT ( SQR (S ))
220 PR INT
; <fl) 230 PR INT "VOUS ETES UN DEVIN " ï
240 ON F GOTO 3 0 0 ,3 2 0 ,3 4 0 ,3 6 0
300 PR INT "NUL"
310 END
320 PR INT "MEDIOCRE"
330 END
1/1 Q) 340 PR INT "MOYEN"
® c
ü -a 350 END
360 PR INT "BRILLANT"
370 END

78 VOTRE ORDINATEUR N" 5


L'ESPIONNITE
En .Logo, une p h rase est une liste de Une p h rase tap ée normalement a p p a ­
mots (voir leçon de Logo p. 68). Nous raîtra en code et inversement. Ainsi,
nommerons p notre phrase, m un mot, c l'expression PAR EXEMPLE donnera
Du nouveau dans un caractère. SEWLFNWAXR, a p rè s avoir été codée.
les fiches programmes Problème n° 1 : coder une phrase.
de V.O. L'espionniteest
p o u r c o d e r .p h r a s e :p
entièrement réalisée
s i :p — [ ] [re to u rn e [ ] ]
à partir du Logo. re to u rn e p h r a s e

Ce langage informatique, c o d e r .m o t p r e m ie r :p c o d e r .p h r a s e s p :p

très apprécié des fin

pédagogues, a recours
aux services de la célèbre C oder une p h rase consiste à reconsti­ enlevé - coder.phrase saufpremier (sp) :
tuer une p h rase à partir du co d ag e de p - , et ce jusqu'à ce qu'il n'y ait plus de
tortue. Logo a été ses mots. mots à coder, c'est-à-dire lorsque p est
développé par Seymour On prend donc le premier mot de p - vide - si :p = [ ]... -
premier :p - . O n le code et on recom­ Problème n° 2 : coder un mot.
Papert, informaticien mence le même processus avec le premier Le co d ag e d'u n mot utilise le raisonne­
en renom, d'après les théories mot de p lorsque l'élément codé a déjà été ment an aly sé d an s le problèm e n° 1
du psychologue suisse
Jean Piaget. Les non- p o u r c o d e r .m o t :m

initiés consulteront s i :m = " [re to u rn e " ]

re to u rn e m o t
avec profit la c o d e r .c a r a p r e m ie r :m c o d e r .m o t s p :m
rubrique permanente fin
de Votre Ordinateur
qui présente Problème n° 3 : coder un caractère. constante k, puis d e le retourner sous
ce langage. Pour coder un caractère, il suffit de forme d e caractère.
prendre son code et de lui ajouter une

p o u r c o d e r .c a r a :c :k
p a r M a x im e M eystre
d o n n e " c l a s c ii :c + :k

s i :c l > 91 [d o n n e “ c l :c l - 2 6 ]

re to u rn e c a r :c l

fin

Il ne reste plus q u 'à définir une loi pour dures, au moyen d'u n test de fin de
k et à l'introduire d an s nos trois procé- codage.

p o u r c o d e r
orsqu'un ordinateur échange des

L informations avec un autre ordina­


teur, il ém et une série de « bruits »
caractéristiques que tout espion peut
cap ter pour p ercer le secret des m essa­
d o n n e

s i :1

a ffic h e
” 1 lis lis te

= [F IN ] [s to p ]

c o d e r .p h r a s e :1

c o d e r
ges. Un seul recours : ne p a s les confier
fin
aux m achines sans les coder, sous peine
p o u r c o d e r .p h r a s e :p
de voir le produit de votre dur labeur
d'apprenti program m eur p asser aux s i :p = [ ] [re to u rn e [ ] ]

mains d'indélicats pirates des temps re to u rn e p h r a s e c o d e r .m o t p r e m ie r :p SUITE —»


modernes.

VOTRE ORDINATEUR N° 5 79
S u ite
com p te p rem ier :p cod er.p h rase sp :p
fin
pour cod er.m ot :m :k
si :m = "[retourne"]
retourne m ot cod er.cara p rem ier :m :k
cod er.m ot sp :m :k + 1
fin
pour co d er.ca ra :c :k
d o n n e " cl a sc ii :c + :k
si :cl > 9 1
[retourne car ( :cl — 26)]
[retourne car :c l]
fin

Nous avons introduit la constante k Ce qu’il faut savoir


comme p aram ètre de coder.mot et nous * pour et fin servent à définir le début
lui avons donné comme valeur intitiale et la fin d'une procédure.
compte prem ier :p. Ainsi pour coder le * donne c ré e une v a ria b le et lui
mot AVION, k a u ra la valeur 5, nombre donne une valeur.
de lettres d'avion, k évolue ensuite en * "k est la v ariable k, :k est son
ajoutant 1 à c h aq u e caractère. contenu.
AVION : A d écalé de 5, V d écalé de 6... * retourne élabore un résultat et le
N d écalé de 8 retourne à la procédure appelante.
* lisliste transforme une p h rase tapée
Le d éco d ag e relève de la même logi­
a u clavier en liste.
que : simplement, on retranchera k au
* ascii donne le code du caractère,
lieu de l'ajouter, et on ajoutera a u
car donne le caractère correspondant
résultat 26 si le nom bre obtenu est
au code.
inférieur à 65 - code de A.
* mot, p hrase, prem ier, saufprem ier,
compte : voir la leçon Logo d e ce
numéro.
pour d éco d er .c a ra :c :k
Le program m e a été écrit pour Dr Logo
d o n n e " cl a sc ii :c — :k
(Digital Research, actuellem ent sur IBM-
s i :cl < 65 PC). Tout est écrit en minuscules. Tous
[retourne car (:cl + 26) les autres Logo (sauf Logo EN1) s'écri­
[retourne car :1] vent en majuscules. De plus, une ligne
fin qui commence p a r une e sp a c e est la
suite de la ligne précédente, ce qui n'est
p a s vrai d an s les autres versions.

VARIANTES

lisliste —> LISLIGNE (C om m odore-Q , TI-Logo, Edi-Logo)


LISLISTE (A pple-L ogo)
LL (T hom son)
* si ... [ ] [ ] —> s i ... alors [ ] ... sin on [ ] (Logo EN1)
S I ... [ ] [ ] (A pple-L ogo, T hom son, G oupil)
SI ... ALORS ... SIN O N (C om m odore-Q ' TI-
Logo, Edi-Logo)
* retourne —* RETOURNE (C om m odore-Q , A pple-L ogo)
SORS (TI-Logo, Edi-Logo)
RET (T hom son)
ren d s (Logo EN1)

Les am ateurs de Logo consulteront bénéfiquem ent le « Dictionnaire Logo » de


G érard Bossuet publié aux éditions Sybex, 250 FF environ.

78 VOTRE ORDINATEUR N° 5
LE TAQUIN
On mélange les numéros en permutant I (variable V). Cent vingt-huit permuta-
deux cases désignées par un nombre tions sont nécessaires pour mélanger
aléatoire et le pointeur de la case vide I correctement le taquin.
Vous vous rappelez
le « pousse-pousse » sur 140 LET V=16
lequel vous vous crispiez 150 FOR 1=1 TO 128
les doigts, profitant 160 LET A=INT(RND(1)*4)+l
du vide d'une case 170 IF V+D(A)<1 OR V+D(A)>16 THEN 160
pour replacer les autres 180 IF INT V/4)=V/4 AND A=3 THEN 160
190 IF INT(V/4)=(V-l)/4 AND A=4 THEN 160
dans le bon ordre ? 200 LET T(V)=T(V+D(A))
210 LET T(V+D(A))=0
220 LET V=V+D(A)
par Jean-François Sehan
230 NEXT I
On affiche le jeu à l'écran dans le | nouvel ordre - ou plutôt désordre !
e taquin ou puzzle à 15 g été

L inventé par Sam Lloyd, aux États-


Unis, dans les années 1880. Il se
compose d'un plateau et de quinze
plaquettes numérotées de 1 à 15 que
l'on dispose en désordre (plus de vingt
240
250
260
270
REM----- ---- --------
REM DESSIN DU TAQUIN
PRINT:PRINT
PRINT "+- - +-- +-- +-- +"
mille milliards de possibilités). Une 280 FOR 1=1 TO 13 STEP 4
case vide sur le plateau permet de 290 FOR J=0 TO 3
bouger, les plaquettes pour remettre les 300 IF T(I+J)=0 THEN 330
chilfres dans un ordre croissant. Seules 310 PRINT TAB((J*5)+1);-I-;T(I+J);
les plaquettes voisines de celle-ci peu­ 320 GOTO 340
vent se déplacer. 330 PRINT TAB((J*5)+1):*1";
Il ne s'agit pas ici du jeu original de 340 NEXT 0
Sam Lloyd. Ën conséquence, toutes les
positions de départ permettent une re­ 350 PRINT TAB(21);"I"
constitution de l'ensemble du jeu. 360 PRINT “+-- +-- +-- +-- +"
Le tableau T correspond aux seize 370 NEXT I
cases du taquin. Après son dimension­
nement, on y place les numéros de 1 à On déplace le numéro tapé par le A chaque essai, on vérifie qu'il reste
15 (lignes 100 à 130). Le tableau D joueur en vérifiant qu'il n'est pas infé­ des plaquettes dans le désordre. Si
correspond aux déplacements des pla­ rieur à 1 ou supérieur à 15, et qu'il est c'est le cas, on retourne à la ligne 260
quettes (moins une case pour la gau­ bien placé à côté de la case vide. Le pour un nouvel essai.
che, plus quatre cases pour le bas, déplacement est calculé avec le ta­
etc.). bleau D.
550 REM FIN DE PARTIE ?
10 REM TAQUIN 380 r e m ----------------- -------- --------------- 560 FOR 1=1 TO 15
20 REM ------------------------------------ 390 REM DEPLACEMENT 570 IF T( I ) <>I THEN 260
400 PRINT 'QUEL NUMERO ?* 580 NEXT I
30 OIM T ( 16) 410 INPUT R 590 END
40 OIM 0 ( 4 ) 420 IF R<1 OR R>15 THEN 400
50 LET D ( 1 ) = - 4 430 FOR 1=1 TO 16
60 LET D( 2 ) = 4 440 IF R=T( I ) THEN 460
70 LET D( 3 ) = 1 450 NEXT I □ 2 6 8 3
460 LET R=I
80 LET D ( 4 ) = - l 470 FOR 1=1 TO 4 1 4 7
90 REM------------------------------------ 480 IF R+D( I )>16 OR R+D(I)<1 THEN
100 REM MELANGE DU TAQUIN 500 12 5 14 15
490 IF T( R+D( I ) ) =0 THEN 520
110 FOR 1=1 TO 15 500 NEXT I 9 13 10 11
120 LET T ( I )=1 510 GOTO 400
130 NEXT I 520 LET T(R+D( I) ) =T( R) & & QUEL NUMÉRO ?
530 LET T{R)=0 □ ?7

VOTRE ORDINATEUR N° 6
61
FICHEPROORRIWE
519 5

(1) fl
O ~0' 10 REM TAQUIN
> 20 REM --------------------------------------------------------
30 DIM T( 1 6)

E-
w .b
40 DIM 0 ( 4 )
D 50 LET D(1 ) =-4
s 60 LET D( 2 ) = 4
70 LET D{3 ) = 1
w w 80 LET D ( 4 ) * - l
2 O 90 REM------------------ -------------- ...................... —
W 100 REM MELANGE DU TAQUIN
T!
■ r a) 110 FOR 1=1 TO 15
.£ 'D 120 LET T( I ) = I
J TJ H- 130 NEXT I
d d 1 140 LET V=16
— D
i w > 150 FOR 1=1 TO 128
160 LET A=INT(RND(1 ) * 4 ) + l
b_ 170 IF V+D(A)<1 OR V+D(A)>16 THEN 160
0) o
180 IF I N T( V/ 4 ) = V / 4 AND A=3 THEN 160
a C
cj ^ 190 IF INT( V / 4 ) = ( V - l ) / 4 AND A=4 THEN 160
S
£ 0 200 LET T( V) =T( V+D( A) )
^ S 210 LET T(V+D(A))=0
° 0) 220 LET V=V+D(A)
w -b 230 NEXT I
<D O 240 REM------------------------------------------ -----------
î= > —' > 250 REM DESSIN DU TAQUIN
Ul !-< 260 PRINT:PRINT
b ai 270 PRINT ■ + -------+------- +------- +-------+*

a o a:

2
b
b
280 FOR 1=1 TO 13 STEP 4
290 FOR J=0 TO 3
300 IF T{ I + J ) = 0 THEN 330
&l/l 8 310 PRINT T A B ( ( 0 * 5 ) + l ) i "I “i T ( 1+0);
CD CD 320 GOTO 340
« c 330 PRINT TAB( ( J*5) + l ) i *1",
w 340 NEXT 0
E -h bb o^ 350 PRINT TAB(21 ) ; * I "
360 PRINT • + -------+------- + ------- +-------+"
w -3 370 NEXT I
fi S 380 REM..........................................- ................... —
<D D 390 REM DEPLACEMENT
M S s 400 PRINT "QUEL NUMERO ?"
3 0) 410 INPUT R
o^s 420 IF R<1 OR R>15 THEN 400
J ~ w 430 FOR 1=1 TO 16
t-, b
b o 440 IF R=T( I ) THEN 460
o > 450 NEXT I
I &i M 460 LET R=I
470 FOR 1=1 TO 4
30 480 IF R + D ( I ) >16 OR R+D( I )<1 THEN 500
L)o ^ 490 IF T(R+D( I ) ) = 0 THEN 520
2 b ■■
O W 500 NEXT I
o '0) 510 GOTO 400
. ■ r-H 520 LET T ( R + D (I ) ) =T( R )
530 LET T ( R )=0
o -2 540 REM---------------- -----------------------------------
M 3
t D 550 REM FIN DE PARTIE ?
0 -5 560 FOR 1=1 TO 15
Mb 570 IF T( I ) < > I THEN 260
C0Q Q,
OhII 580 NEXT I
590 END
a w
b ai
ai -â
w ai
<
bb "S
E- a>
t/2 Liste d es variables

W
HDi
'01
O fn
a
o ai
b c
R
T()

V
Choix du joueur
Tableau des emplacements des
plaquettes
Pointe la case vide sur le pla­
A

D()
Nombre aléatoire pour le mé­
lange
Tableau des déplacements des
plaquettes
« y teau I Indice de boucle FOR/NEXT
ai D
l- J u a

62 VOTRE ORDINATEUR N» 6
LE SOUS-MARIN
submersible pourchassé se déplace sous-marin, que l'on ne sort pas du jeu.
d'une case et le jeu reprend normale­ Si les coordonnées du bateau et du
Un sous-marin ment. Si le sous-marin est touché, le sous-marin sont différentes, on retourne
programme affiche le message : « sous- au déplacement du sous-marin (li­
de nationalité inconnue marin coulé ». Mais la bataille continue gne 90).
s'est introduit inexorablement, car un autre intrus
dans les eaux arrive à la rescousse. 230 rem . . . . . . . . . . . . . . . . . . .
Les variables X et Y correspondent aux 240 REM DEPLACEMENT BATEAU
territoriales. Partez vite coordonnées du bateau. On place dans 250
260
PRINT ‘COORDONNEES BATEAU:"
PRINT ‘X=‘iX;■ Y= ‘;Y
à sa recherche. les variables V et W (coordonnées du 270
280
PRINT ‘NOUVELLE VALEUR DE X ?•
INPUT X
sous-marin) des nombres aléatoires 290 IF X<1 OR X>20 THEN 270
compris entre 3 et 19 pour que les deux 300 PRINT ‘NOUVELLE VALEUR DE Y ?‘
310 INPUT Y
bâtiments soient assez distants l'un de 320 1F Y<1 OR Y>20 THEN 300
par Jean-François Sehan l'autre. 330 IF X O V OR Y O W THEN 90

10 REM SOUS-MARIN f \
20 REM--------------------- -------- - □ DISTANCE : -14
30 LET X=1
40 LET Y=1 COORDONNÉES BATEAU :
50 LET V= INT( RND ( l) *1 7) +3 X = 1 Y =1
60 LET W=INT(RND(l)*17)+3 NOUVELLE VALEUR DE X?
? 10
O NOUVELLE VALEUR DE Y ?
Les lignes 90 à 140 incrémentent les ? 10___________________ ^
coordonnées du sous-marin en ajoutant
à celles-ci un nombre aléatoire compris Lorsqu'elles sont les mêmes, on saisit
entre -1 et 1, tout en vérifiant que l'on au clavier la profondeur d'explosion
ne sort pas de la grille du jeu. des grenades. Si cette valeur corres­
pond à la profondeur du sous-marin
(variable S), on affiche le message
70 REM---------------- - ................................... « sous-marin coulé » avant de revenir
80 REM DEPLACEMENT S.-MARIN au début du programme (ligne 30).
90 LET A=INT(RND(1 )*3 ) -1
100 IF V+A< 1 OR V+A>20 THEN 90 Dans le cas contraire, on continue le
110 LET V*V+A jeu normalement.
120 LET A=INT(RND( 1 ) » 3 )-1
130 IF H+A<1 OR W+A>20 THEN 120
140 LET W=W+A
340 REM ............................................................
W 350 REM PROFONDEUR
360 LET S=INT(RND(1 )*3)+l
a partie se déroule sur une grille 370 PRINT ‘ SOUS-MARIN A LA VERTICALE"

L de 20 cases sur 20. Vous avez Les lignes 170 à 200, elles, calculent la
toute liberté dans vos déplace­ distance entre le bateau et le sous-
marin. On prend comme distance la
ments (toutes directions et toutes distan­
ces). A chaque essai, la distance entre
votre bateau et le sous-marin s'affiche,
différence la plus importante entre les
coordonnées. Cette distance (varia­
380
390
400
410
420
430
440
PRINT "PROFONDEUR ?"
INPUT P
IF P<1 OR P>3 THEN 380
IF P<>S THEN 100
PRINT ‘ SOUS-MARIN COULE"
PRINT . . . . . . . . . . . . . . . . . .
GOTO 30

ainsi que vos coordonnées du moment. ble D) est affichée à la ligne 220.
La distance étant relative, il est possi­
ble quelle soit négative (c'est toujours L is t e d e s v a r i a b l e s
150 REM..........................................................
le cas en début de partie). 160 REM DISTANCE A Nombre aléatoire pour le
Sentant le danger, le sous-marin se 170 IF ABS(X—V)>A8S(Y—W) THEN 200
180 LET D=Y-W
déplacement du sous-marin
déplace d'une case, dans n'importe 190 GOTO 220 D Distance bateau/sous-marin
quelle direction, à chacun de vos mou­ 200 LET D=X-V
P Profondeur choisie par le
210 PRINT
vements. Et dès qu'il est repéré, le 220 PRINT ‘ DISTANCE:*;D joueur
programme affiche le message : « sous- S Profondeur du sous-marin
marin à la verticale ». Il suffit alors de V et W Coordonnées du sous-ma-
rentrer au clavier la profondeur d'ex­ Après affichage des anciennes coor­ rin
plosion de la grenade (un chiffre entre données, on saisit au clavier les nouvel­ et Y Coordonnées du bateau j
1 et 3). Si ce chiffre est incorrect, le les valeurs en vérifiant, comme pour le

VOTRE ORDINATEUR N° 6 63
FICHEPROORFtm

£JS(U

< 5 >
M.2
°fl
'S w1 10 REM SOUS-MARIN
28 REM - - - - - - - - - - - - -
s ^MJ2
W
Q)
30 LET X=1
1 2o 40 LET Y=1
3c 50 LET V=INT(RND(l)*17)+3
CO ■r; O - 60 LET W=INT(RND(1)*17)+3
70 REM
T£S3fl0 —

D M>- 88 REM DEPLACEMENT S.-MARIN


90 LET A*INT(RND(1)*3)-l
flC
D_ fl)
100 IF V+A<1 OR V+A>20 THEN 90
O M og 110 LET V*V+A
V , o 120 LET A*INT(RND(1)*3)-l
CO ° Bo 130 IF W+A<1 OR W+A>20 THEN 120
<D>
en - f l 140 LET W*W+A
— '
O
150 R E M - - - - ---- -- - - - ----
w flA W
<4ü (h
160 REM DISTANCE
—flO
170 IF ABS(X-V)>ABS(Y-W) THEN 200
hJ 180 LET D=Y-W
çL0
tr u 190 GOTO 220
1 1 < > <D 200 LET D**X-V
en
210 PRINT
fl 220 PRINT “DISTANCE:“;D
s fl

t-i S
w
O
-3 230 R E M - - - - - - - - - - - - - - - - - -
<D 0 240 REM DEPLACEMENT BATEAU
S
fl O S 250 PRINT “COORDONNEES BATEAU:“
pc; 260 PRINT "X*"; X;" Ys"; Y
h
floo fl 270 PRINT “NOUVELLE VALEUR DE X ?“
< > 280 INPUT X
CX en
290 IF X<1 OR X>20 THEN 270
fl ° 300 PRINT “NOUVELLE VALEUR DE Y ?"
!s fl0 310 INPUT Y
i C J'<Ü
en
320 IF Y<1 OR Y>20 THEN 300
fllrS 330 IF X<>V OR Y o W THEN 90
CO O
w 3 340 R E M - - - - - - - - - - - - - - - - -
O
é nfl
U
- ja 350 REM PROFONDEUR
0 360 LET S=INT(RND(1)*3)+l
ED PQ& n .
370 PRINT “SOUS-MARIN A LA VERTICALE'
fl(D-d
<D
en
380 PRINT “PROFONDEUR ?“
O 1 en (D 390 INPUT P

<) -fl
400 IF P<1 OR P>3 THEN 380
CO f l en 410 IF P O S THEN 100
fl,
Dio
f l '<ü

ex 420 PRINT “SOUS-MARIN COULE"


430 PRINT ■****************"
w fl*2c
O

440 GOTO 30
mac
Ces

64 VOTRE ORDINATEUR N° 6
LE P'TIT BAC
réponses devront commencer par la posant davantage de questions et en
lettre sortie (c'est ce qui fait l'intérêt du laissant à chacun des joueurs un temps
jeu). On peut augmenter la difficulté en limité pour répondre.
Ce jeu de société classique
n'a pas fini de déployer ses
70 P R IN T "DONNEZ UN PRENOM DE F IL L E "
charmes à qui veut tromper SO IN P IIT P *
l'attente. Ce programme 90 IF L E F T * <P$,1> < > L $ THEN GOTO 7 0
propose de l'agrémenter 100 P R IN T "DONNEZ UN PRENOM DE GARÇON"
d'une trouvaille qui 110 INPUT G$
120 IF LEFT * ( G $ , 1) < > L $ THEN GOTO 100
permettra de jouer au 130 P R IN T "DONNEZ UNE V IL L E "
« cadavre exquis » du 140 INFTJT V$
mouvement surréaliste. 150 IF L E F T * < V $ ,1 ) < > L $ THEN GOTO 130

Les trois lignes 90, 120 et 150 permettent participants, jusqu'à ce que l'un d'eux
de s'assurer que la réponse proposée reste coi et soit de ce fait éliminé du jeu.
par le joueur commence bien par la Il m'a semblé plus intéressant de
lettre indiquée ; si ce n'est pas le cas, la réaliser une version légèrement diffé­
question sera posée de nouveau. rente où l'ordinateur intervient pour
par Jacques Deconchat
Sur les ZX 81 et Spectrum, on devra afficher une petite phrase fabriquée à
remplacer LEFT$(X$,1) par X$(l) ; sur partir des réponses et d'un verbe tiré au
TI 99 par SEG(X$,1,1). hasard d'une liste préétablie.
Le jeu de société qui a inspiré le Bien entendu, la liste proposée pourra
programme consiste usuellement à po­ être modifiée en vue de résultats plus
ser les mêmes questions à chacun des farfelus ou plus amusants.
a règle est assez élémentaire, du

L moins dans la version qui est


proposée ici.
L'ordinateur affiche une lettre, prise
dans une liste (non limitative) établie en
début de programme.
160 Z =
170
ISO
190
IN T ( RND (1 ) * 10 + 1)
FUR I = 1 TO Z
READ Ll$
NEXT I
200 P R IN T
30 LET fi* = "ABCDEILMNQPR" 210 P R IN T P * ; " ET " ; G $ ; " " ; U $ ; " A " ; V $
40 LET X = IN T ( RND (1 ) * 12 + 1) 220 RESTORE
5 0 L$ = M ID * ( A t . X . l )
60 P R IN T "LA LETTRE TIREE EST : " ; L * 230 GOTO 10
240 DATA HABITENT,MANGENT,DORMENT,SONT NES,
La ligne 30 propose une liste de lettres. NE REV I ENDRClNT .1A M A IS , S 7 A I MENT, ONT OLJBLIE
La ligne 40 assure le tirage au sort de LEURS PORTEFEU ILLES
l'une de ces lettres. Si l'on désire ajouter 250 DATA .VONT EN VOYAGE,SE SONT RENCONTRES,
ou ôter des lettres, il faudra changer la ONT L ’ HONNEUR DE VOUS F A IR E PART DE LEUR
variable A$ et modifier en ligne 40 le Hm RI AGE
nombre de lettres inscrites (ici 12).
Sur certains appareils, le tirage au
sort devra être fait avec RND ou Si l'on enlève ou si Ton rajoute des
encore RND(O). De même, la ligne 50 verbes, il sera prudent de changer, en 160 Z=INT(RND 10+1)
(L$=MID$(A$,X,1) devra être remplacée ligne 160, le nombre 10, qui indique le 170 B$="HABITENT, MANGENT,.... DELEURM
ARIAGE"
180 LETUS* "»
par L$=A$(X) (sur ZX 81 ou Spectrum) nombre de verbes disponibles. 190 FOR1=1 TOLEN(BS)
200 IF B$(I) - V THENLETZ=Z- 1
ou par L$=SEG(A$,X,1) sur TI 99. Le ZX 81 ne dispose pas des trois 210 IF Z=1THENLETUS=
220 IF Z=0 THENGOTO250
Après l'affichage de la lettre tirée, le instructions DATA, READ, et RESTORE. 230 LETUS- US- BS(I)
programme pose trois questions : un 240 NEXTI
On peut cependant les simuler, dans de 250 PRINTPS." ET"|G$(" "jUS," A",VS
prénom de fille, un prénom de garçon, nombreux cas, en faisant les modifica­ 260 GOTO10
un nom de ville. Bien entendu, les tion suivantes :

VOTRE ORDINATEUR N” 6 65
1 21S
:ICHEPROGRmnE

REM LE JE U DU BACCALAUREAT
REM
LE T A $ = "A B C D E ILM N O P R "
L.ET ' = IN T ( RND ( 1 ) * i : ! + 1 )
$ = M ID$ < A $ , X , 1 )
P R IN T " L A LE TT R E T IR E E EST : " ; L $
P R IN T "DONNEZ UN PRENOM F IL L E "
IN F'U T P$
IF L E F T $ < P $ , 1) < > L $ THEN GOTO 7 0
P R IN T "DONNEZ UN PRENOM DE GARÇON"
IN P U T G$
IF LEFT$ ( G $ , 1 ) > L.$ THEN GOTO 1 0 0
P R IN T "DONNEZ UNE V I L L E "
IN PU T V$
IF L E F T $ < V $ ,1) > L $ THEN GOTO 1 3 0
= IN T ( RND ( 1 ) * 1 0 + 1)
FOR I 1 TO Z
READ IJ$
NEXT I
PR IN T
P R IN T P $ i ET " ; G $ ; " " ; U $ ; "■ A " ; V $
RESTORE
GOTO 10
DATA H A B IT E N T , MANGENT, DORMENT, SONT N E S .
NE R EVIEN D R O N T J A M A I S , S 7A I M ENT, ONT
OLJBL. I E LEURS PO RT EF E 1JILLE S
DATA VONT EN V O Y AG E,S E SONT RENCONTRES,
ONT L 7 HONNEUR DE VOUS F A IR E PART
DE LEUR M ARIAG E

MH
Ch ^
5
D t-i r Liste des variables
& & A$ lettres à afficher V$ ville
o o X tirage d'une lettre au hasard Z tirage d'un verbe au hasard
£ s I variable de boucle
w m o
L$
P$
lettre tirée
premier prénom U$ verbe
<D 0 G$ deuxième prénom
J O B

66 VOTRE ORDINATEUR N° 6
1

SUPER NO M BRE SECRET


10 REM SUPER NOMBRE SECRET ►370 GOTO 460
20 R E M --------------------------------------- 380 IF R*S>99 THEN 160
Découvrez 30 DIM A( 9) 390 LET R=R*S
40 LET C= 0 400 GOTO 460
le nombre secret 50 FOR 1=1 TO 9
60 LET A( I )=1
410
420
IF INT(R/S)<>R/STHEN 160
IF R/ S<1 THEN 160
proposé par 70 NEXT I
80 LET N=I NT( RND( 1) *99) +1
430 LET R=R/S
votre ordinateur en 90 PRINT "PREMIER CHIFFRE ? ”
100 INPUT S
effectuant des 110 IF S<1 OR S>9 THEN 90 □ NOMBRE CHOISI :
120 LET R=S
opérations 130 GOTO 460 ?9
en cascades. □ OPÉRATION(+,-,* OU/)
?*

/ \ Les lignes 470 à 480 comparent votre


□ PREMIER CHIFFRE ? solution au nombre secret et renvoient
par Jean-François Sehan ïéui? ? 5 au message correspondant. Si vous
□ NOMBRE PROPOSÉ : 5 avez eu de la chance, la ligne 580 vous
C'EST TROP PETIT félicitera, sinon un message « trop pe­
tit » ou « trop grand » apparaîtra.
Les lignes 160 à 200 affichent le tableau La ligne 530 incrémente le compteur de
A(l) à A(9) pour les chiffres restants. jeu (variable C) et remet à 0 le chiffre
que vous avez utilisé (dans le tableau
140 REM -------------------------
A0).
150 REM LE JEU Si C = 9, on affiche la solution (varia­
e nombre choisi est compris entre 160 PRINT "IL VOUS RESTE: " ble N), puisqu'il ne reste plus de chiffre

L 1 et 99. A chaque solution erronée


proposée, le programme répond :
« trop petit » ou « trop grand », vous
situant ainsi par rapport au nombre à
trouver.
170
180
190
200
FOR 1=1 TO 9
IF A( I ) = 1 THEN PRINT I,
NEXT I
PRINT
utilisable.

440
450
460
470
R E M ..... .......
REM SOLUTION
PRINT "NOMBRE PROPOSE : "iR
IF R=N THEN 570
"\ 480 IF R<N THEN 510
Première difficulté du jeu : toute propo­ r 490 PRINT"C1EST TROP GRANO"
sition doit être le résultat d'une opéra­ n IL VOUS RESTE : 508 GOTO 520
tion. Par exemple : 6 X 3 = 18 (nombre v ___ 12346789
que vous proposez).
J 510
520
530
540
PRINT“C 1EST TROP PETIT"
LET A<S)=0
LET C=C+1
IF C=9 THEN 590
Pour commencer, vous choisissez deux Le programme saisit alors le chiffre et 550 GOTO 160
chiffres différents de 1 à 9, que vous l'opération à utiliser. Si vous avez tri­ 560 R E M ........ .. . .
570 REM RESUL#ATS
multipliez, divisez, additionnez ou sous­ ché, on retourne en ligne 160 pour une 580 PRINT "VOUS AVEZ TROUVEZ !"
trayez l'un de l'autre. Tout au long du nouvelle saisie. 590 PRINT "C'ETAIT ";N
^ 1 ^
jeu, les opérateurs seront les chiffres de Les lignes 250 à 430 recherchent le
1 à 9. En revanche, vous devez vous signe que vous voulez utiliser et effec­
servir du résultat de votre première tuent les calculs.
□ NOMBRE PROPOSÉ : 45
opération pour effectuer la deuxième,
puis du résultat de la deuxième pour
210 PRINT "NOMBRE CHOISI: "
^ C'EST TROP GRAND J
effectuer la troisième... 220 INPUT S
Seconde difficulté : il est interdit d'utili­ 230 IF S<1 OR S>9 THEN 210 \
240 IF A( S ) =0 THEN 160 Liste d e s variables
ser deux fois le même chiffre comme 250 PRINT "OPERATION ( + , - , *
opérateur. Les lignes 30 à 70 remplis­ 260 INPUT 0$ OU / ) " A() Tableau des chiffres restants
sent le tableau A(l) à A(9) avec le 270 IF 0$="+" THEN 320
280 IF 0 $ = “- " THEN 350 C Nombre d'essais
nombre 1 pour connaître les chiffres 290 IF 0 $ = “* “ THEN 380 I Indice de boucle FOR/NEXT
déjà employés. La ligne 80 place dans 300 IF 0 $ = " / “ THEN 410
310 GOTO 160
N Le nombre secret
la variable N le nombre secret (nombre 320 IF R+S>99 THEN 160 o$ Opération choisie
aléatoire). Puis l'on saisit le premier 330 LET R=R+S R Résultat de la dernière
340 GOTO 460
des chiffres et l'on va directement en 350 IF R-S<1 THEN 160 opération
ligne 460 : ce chiffre est peut-être le
nombre à découvrir.
360 LET R=R-S ► Chiffre choisi
J
VOTRE ORDINATEUR N° 6 67
KJ y FICHE
°4
22
B
<D i-i émmum
M <D
PC 0
fl
C

H
n 10 REM SUPER NOMBRE SECRET
W 1/1 20 REM - - - - - - - - - - - - - - - -
in 30 DIM A (9)
<1)
P L , 40 LET C=0
m î2 50 FOR 1=1 TO 9
60 LET A (I)=1
ÏD 'l O
T3 C
■fl <D
70 NEXT I
80 LET N=INT(RND(1)*99)+1
CO T) —
fl f l
90 PRINT "PREMIER CHIFFRE ?"
100 INPUT S
d 110 IF S<1 OR S>9 THEN 90
hw d
>
I 120 LET R=S
fl „
CD d)
130 GOTO 460
140 R E M - - - - - - - - - -
E- d
fl
P
fl
d
a
150 REM LE JEU
160 PRINT "IL VOUS RESTE:*
170 FOR 1=1 TO 9
W CD
H' 180 IF A {I )= 1 THEN PRINT I,
O
-f— 190 NEXT I
PC — >
1/2 !-i
fl CD
200 PRINT
210 PRINT "NOMBRE CHOISI:"
220 INPUT S
S 3 230 IF S<1 OR S>9 THEN 210
O 240 IF A (S )=0 THEN 160
2 fl
&8 250 PRINT "OPERATION (+,-,* OU /)"
w w 260 INPUT 0$
<D Q) 270 IF 0$="+" THEN 320
CO U fl
w 280 IF 0$="-“ THEN 350
290 IF 0$="*“ THEN 380
fl O 300 IF 0$="/" THEN 410
w -g
i-, Ü 310 GOTO 160
S d 320 IF R+S>99 THEN 160
fl ë 330 LET R=R+S
a O 340 GOTO 460
C/2 350 IF R-S<1 THEN 160
t—i fl 360 LET R=R-S
fl O 370 GOTO 460
O >
d< w 380 IF R*S>99 THEN 160
390 LET R=R*S
2 o 400 GOTO 460
0> F! 410 IF INT(R/S)<>R/S THEN 160
fl ••
O w 420 IF R /S<1 THEN 160
O 'O 430 LET R=R/S
-*-* ’rl 440 R E M - - - - - - - - - - - - -
§02 »^ 450 REM SOLUTION
460 PRINT "NOMBRE PROPOSE : ";R
ü -jj 470 IF R=N THEN 570
02 480 IF R<N THEN 510
0 Q
PQ a 490 PRINT“C 1EST TROP GRAND"
02 500 GOTO 520
f l CD
(D T3
510 PRINT"C’EST TROP PETIT"
c r ; 02 CD
520 LET A (S )=0
530 LET C=C+1
w
fl
fl
«
CD 540 IF C=9 THEN 590
S 'CD
02 550 GOTO 160
Ph O li
A,
D' Oh
O ©
560 REM - - - - - - - - - - - - -
570 REM RESULTATS
580 PRINT "VOUS AVEZ TROUVEZ !"
fl P 590 PRINT "C’ETAIT ”;N
! = >
02 O
(D d
c o o a

68 VOTRE ORDINATEUR N° 6
I
I

LA PESÉE
10 REM PESEE
20 REM - - - -
Si vous continuez 30 PRINT "L’ORDINATEUR DISPOSE D ’UNE BOITE DE POIDS DE 1
A 500 GRAMMES"
de vous servir de la 40 PRINT "VOUS POUVEZ LUI DEMANDER DE REALISER UNE PESEE"
balance de votre 50 PRINT "POUR N ’IMPORTE QUELLE MASSE COMPRISE ENTRE
1 GRAMME ET 1000 GRAMMES"
grand-mère, 60 PRINT "ATTENTION : IL N ’ACCEPTE QUE DES ENTIERS"
70 PRINT
demandez-donc à 80 PRINT "DONNEZ VOTRE MASSE"
votre ordinateur les 90 INPUT M

poids qu'il convient de Dans ce « préambule », l'ordinateur af­ rée avec la masse introduite initiale­
choisir pour procéder fiche un texte expliquant en quelques ment. Si elle est trop grande, on la
à une pesée. Mais lignes ce que réalise le programme. La refuse pour prendre la suivante. Si elle
attention aux tares lecture se termine sur une question, en est égale ou plus petite, on l'affiche et
ligne 80 : « DONNEZ VOTRE MASSE ». on la soustrait de la masse initiale. La
cachées... Il convient de répondre par un nombre ligne 190 permet de vérifier aisément si
entier compris entre 0 et 1000 - ce l'on a ou non terminé ; en effet, la
sont les limites extrêmes des possibilités, différence, contenue dans M, sera nulle
de la boîte de masses. si Ton a fini.
par Jacques Découchât
100 IF M < > IN T i
OR M > 10 0 0 THEN 210 P R IN T "VOULEZ-VOUS
GOTO 80 UNE AUTRE
110 P R IN T PESEE ( O /N ) ? "
120 P R IN T " I L VOUS 220 INPUT R$
FAUDRA LES MASSES 230 IF R$ < > " 0 " THEN
S U IVAN TES"
END
240 RUN
ous souvenez-vous des balances La ligne 100 permet de vérifier si la
V d'autrefois, les bonnes vieilles
balances encore utilisées de nos
jours, au moins dans les écoles ? Avec
variable M, contenant la masse à pe­
ser, répond bien aux conditions impo­
sées : variable entière, non supérieure
C'est la fin du jeu, où Ton pose tradi­
le système' du double plateau, la tionnellement la question : « VOULEZ-
à 1000. Si ce n'est pas le cas, la VOUS REJOUER?». Une réponse "O"
grande précision importait peu, il suffi­ question « DONNEZ VOTRE MASSE » relance le programme.
sait que les masses de pesée soient sera reposée. La ligne 250 contient la liste des masses
justes. Cette fiche programme ne per­ La ligne 120 est un titre servant à disponibles.
mettra pas de réaliser une vraie pesée, annoncer la réponse. Sur le ZX 81, qui ne connaît pas les
elle indiquera simplement les massses
à utiliser. instructions READ et DATA, il sera plus
Le programme est conçu pour la tradi­ simple d'enregistrer en début de pro­
tionnelle boîte de masses : 500, 200,100, 140 FOR I = 1 TO 13 gramme les masses dans une table N(I)
50, 20, etc. Une petite restriction, toute­ 150 READ B (avec N (1)=500, N(2)=200, N(3)=100,
fois : afin de simplifier, il n'y a que des 160 I F M < B THEN NEXT I etc.). Il faudra alors remplacer la ligne
masses entières. Mais il vous sera pos­ 1 70 LET M = M - B 150 READ B par 150 LET B=N(1) pour
sible de le modifier à votre guise pour, 180 P R IN T B ; " ° que le programme fonctionne.
par exemple, vérifier la justesse de vos 190 IF M < > O THEN
conceptions en matière de pesée. NEXT I
On pourrait concevoir une boîte plus Liste d e s variables
astucieuse, permettant toutes les pesées M masse à peser
avec encore moins de masses au dé­ C'est ici que se trouve la principale I variable de boucle
part; il suffit de modifier les masses, partie du programme, c'est-à-dire l'al­ B masse lue dans la boîte
enregistrées en DATA en fin de pro­ gorithme de calcul. R$ saisie de la réponse O ou N
gramme. Chaque masse de la boîte est compa-

VOTRE ORDINATEUR N- 7 89
S 23 fiche PRom nriE

VOTRE ORDINATEUR N” 7
LABYRINTHIX
dent, seule la partie de trajet BBBB GG ► m
était possible. PRES*PP INT s p r i n t “ VOUS
296 *vEZ S? “ Cm S'ES L I

Le programme, donné ici en Basic Mi­ 3 8 0 INPUT"SOLUTION <QsN>."jR$


3 1 8 I F L E F T # ( R $ , 1 ) * " N “ THEN X « A * Y * B ï T » T +

Il faut être crosoft standard, pourra poser quelques 1 : GOTO 2 0 0

aussi fou que Thésée petits problèmes d'adaptation sur cer­


tains appareils : la ligne 12 est indispen­
pour imaginer d'aller sable pour ceux qui ne disposeraient C'est le « corps » du programme : l'affi­
se perdre volontairement pas d'une fonction RANDOMIZE (en chage du labyrinthe est réalisé après un
effet, le générateur aléatoire risque effacement d'écran par une simple bou­
dans un impossible alors de donner toujours la même va­ cle placée en ligne 200 ; la méthode
labyrinthe, avec en prime leur, ce qui supprime l'intérêt du jeu). utilisée permet de ne pas imposer de
le risque de tomber La première partie du programme réa­ ligne ou de colonne particulière pour
lise le dessin d'un labyrinthe ; tout autre l'affichage, cela afin de faciliter l'adap­
sur un horrible monstre dessin sera possible, en changeant les tation sur plusieurs machines (seul l'ef­
affamé de chair et de sang. lignes 30 à 150 ; sur les ZX, la ligne 20 facement d'écran sera à modifier, en
(effacement d'écran et dimensionnement fonction de votre appareil).
Notre labyrinthe ne vous du tableau A$) devra être modifiée avec Le décodage du déplacement est effec­
posera pas autant de DIM A$ (13,21) (21 représente ici la tué par une boucle, de la ligne 230 à la
problèmes. La seule chose longueur de la chaîne). ligne 280 ; la ligne 260 contrôle si la
case considérée est libre ou non. Si ce
qui vous est demandée, n'est pas le cas, on part en ligne 290
c'est de dire où vous êtes, 20 h* 1 3 .' pour afficher le nombre de cases libres.
30 ABCDEFGHIJKLMNQPQR"
40 h*C1>«" *##»»##****»**######" Une réponse « non » à la question « so­
avec le moins d'essais 56
66 ~ î ' 3 = ' l *
3* «
* # ####»*« «*»« «"
* #"
lution (O/N) » provoque un nouveau
possible. Ce ne sera pas 76 w*i4i« '2# # # #♦ # *’ dessin du labyrinthe et fait avancer le
56 * 5 >*"3# #
h i # * * •» * ###*"
30 h*<6'=“4» *### * * # *“ compteur d'essai d'une unité.
toujours très facile. 106
lie
A *i.7 > * " 5 •
A * ( 8 > -“ 6# # # M # #
# « • # * # # "
# #” Si l'on répond « oui », on entre alors
126 « *(? :> *” '» # « # # « * * #"
130 A * i. 1 0 > * " 8 # # # # # » M # #" dans la partie fin du programme, de la
140 A * i 11 > * " 9 # » # # # # » »'•
156 A * i 1 2 '= " * * # • » » * » * « • » # * * * * * * « ligne 320 à 350.

326 1 NPUT"LIGNE i"J X !X *X + E


par Jacques Découchât Confedion du labyrinthe. Les 3 lignes 3 3 0 INPUT"COLONNE ! ■ ; R* iŸ « AS C< R » > - 6 2
3 4 0 I F X*A AND V=B THEN P RI NT "B RA V O .. . " !
160, 170 et 180 réalisent le tirage aléa­ T l " ESSAI S " : END
3 5 0 PRINT-PEROU . C’ ETAIT LIGNE " I A - 2 1 " ,
toire d'une position dans le labyrinthe, COLONNE " ! C H R * < 6 2 +B)

la ligne 180 permettant de vérifier que la


ous êtes dans un labyrinthe qui case tirée est effectivement libre (sinon,
V comporte une sortie, visible sur on tire une autre case).
votre plan. Vous pouvez vous
déplacer en donnant une suite de let­
Les lignes 320 et 330 demandent la ligne
et la colonne : la ligne sera entrée sous
forme d'un nombre, de 0 à 9. La colonne
tres, avec la convention suivante : G 1 6 6 X * I N T < R N D * 1 6 +£>
sous forme d'une lettre, de A à R; elle
pour aller à gauche, D pour aller à 1 7 0 Y * I N T ( RND*2 0 + 2 )
1 3 0 IF M ID t< À $ < X > , Y, 1 ) T HEN 1 7 0
est ensuite transformée en nombre.
droite, H pour le haut et B pour le bas. 190 A *X *B *Y *T =6 La ligne 340 contrôle si l'on a gagné, et
Ainsi, à la question « votre déplace­ affiche dans ce cas le nombre d'essais
ment », la réponse BBBB GGG HH, effectués. Si l'on a perdu, le bon résultat
signifie que vous allez essayer de vous La ligne 190 enregistre les deux valeurs est affiché par la ligne 350.
déplacer de quatre cases vers le bas, tirées et met à 0 le compteur d'essai. Le labyrinthe proposé a été limité à
de trois vers la gauche et de deux vers douze lignes et vingt colonnes pour
le haut. Mais, malheureusement, vous ne permettre une transposition aisée sur
savez pas où vous êtes au départ. Vous 2 0 0 CLS*FOR 1 * 0 TO 1 2 * PR INT « t < I > * N E X T I plusieurs machines (certains affichages
2 1 0 PRINT:INPUT-VOTRE DEPLACEMENT : U; R *
risquez donc de vous heurter à un mur. 2 2 8 S* 0
2 3 0 FOR 1 * 1 TO LEN<Rt
ne permettant pas d'aller au-delà de
L'ordinateur vous indiquera alors de 2 4 0 X - X + < M I D f < R * , 1 ,1
«"B ")
>- i.MID*< R * , 1 , 1 ) seize lignes) ; on pourra facilement mo­
combien de cases vous avez pu vous 2 5 0 Y »Y +< H ID $ (R « , I , 1 > - “ G" W M I D * < R * , I , 1 >
* " D '* )
difier le programme pour élaborer des
déplacer sans toucher un mur. 2 6 0 I F M I D * < A * ( X > , Y , 1 ) * " # " THEN 2 9 3
2 7 0 S»S *1
labyrinthes plus complexes, en tenant
La réponse « 6 cases libres » vous indi­ 2 8 0 NEXT I ^ compte des possibilités de chaque ap­
que que, pour le déplacement précé­ pareil.

VOTRE ORDINATEUR N° 7 91
3 24 s FICHEPROORmnE

üa> a
PQ (1)
O Ti
> C
w tr>(
•< •ri ••—

S
a w
w
<
10

R EM
I NF UT D
L A B Y R IN T H IX
0 NNE Z UN E N T IE R “ ï J : F 0 R 1= 1 T 0
<D i s3 :.."
•J =RNDï M EXI I
J2 w
fl) 3 C L L S ;D IM A $ ( 1 3 >
T3 c! 30 P $< 8 >= " A B C D E F G H I J K L M N 0 P Û R i!'
'> d) 48 A $(. 1 > = " # # # # # # # # # # # # # # # # # # # # "
T5 ^ 58 h $ (. £ > = !i 8 # # # # "
fi fl
m O
68 A $ <3 >= " 1 # # # # # # * # # # # # # # # H
t-i > 70 A $ < 4 > = M£ # # # ## # # "
fl O
<D (U 88 A $ c . 5 > = 1,3 # # # # # #4 4 # # # # “
O fl
fl fl
9 0 H $ <6 >= ” 4 # # # # # # # # # "

T! O
■ f-H
18 0 K i> :7> = " 5 # * # # ## # # "
O S n e A $< 8 >= " 6 # * # # # # # # #"
<D 1£8 A $< 9> = " 7 # # # # # * # # * "
m f-H H
d) O 1 i 0 f t $ ( 1 8 ) = " 8 l # # # # # ## # #
> 148

A $ ( 1 1 ) = "9 # # # # # * # #
2 •- 5i
§£ 158 A$ (1 £ >= ” # # # * # # # # # # # # # * * # # # # #
~ a 168 X = IN T C R N D *1 0 + £ >
S a 178 Y = IM T <R ND * £ 8 + £ >
Er
C/J °
U î1 O r_
pi! IF M ID $< A $< X > , Y, 1) = “ # " THE M 178
a) <d A = X : B= Y : T = 8
190
T
W £ 8 0 C LS ïFO R 1=8 TO 1 £ s PR IN T A $ < I> î MEYT i
fi C
3 O £ 1 0 P R IN T : IM P UT " V 0 T R E D E P L A C E ME N T î ".ï R $
£ £ 8 8=8
C
<d a £ 3 8 FOR 1=1 TO LE N <R *>
g b
d O £ 4 8 X= X + <M ID $ (. R $ , 1 , 1 >= " H n >- <M ID $ <R $ , I , 1 ‘i
— H Z j !»
O T 3 — D
w
£ 5 8 Y= Y + <M ID $ <R $ , I , 1 >= " G " >- <M ID %< K * î~. J-
p
T
i ? 1
J
’i
Ü 3
5 o = '* D " ) .
2 >
fi* w £ 6 8 IF M I D $ < A $ < X > , Y , 1> = " # " THEM £ 9 8
w o £ 7 8 8=8+ 1
o> C £ 8 0 ME Y T I
fl ••
O M £ 9 8 PR IN T : PR IN T " V0 US AVEZ 11 î S ; " CA SES L i
O ' 0 il
BRES
fl « 3 8 8 IN P UT " S0 L O T I 0 N <0 N > " î R $
W3 3 1 8 IF L E F T $< R $ , 1 > = 1! N " THEM K = A î Y = B ; T = T +
o .2
•H "t"- 1 î GOTO £ 8 0
M fa
02 3 £ 8 IN P U T " LIG N E : !! ? Y : Y = Y + £
PQ
_ w
Û h
3 3 8 I N P U T " C 0 L 0 MME : " R i $
: Y = A S C C R $> - 6 ü

PQ fl 0)
d)
d)
3 4 8
T.ï "
IF X=A AMD
E S S A I S " : END
Y=B THEM P R IN T "B R A n \s !î Z
Z

m
o * iîj — * - Pof
> - B
C
d)
3 5 8
COLONNE
P R IN T "P E R D U
" î CHR$ <6£+B >
. C *E T A IT LIG N E " ? H i—

B M

PQ oin d)
en a
O d)
b s
a IS
« y
<D o
o B

92 VOTRE ORDINATEUR N- 7
LES VERBES EN "ER"
fectuée, on retourne poser la question
10 REM CONJUGAISON D ’UN VERBE DU initiale : « DONNEZ VOTRE VERBE »>.
PREMIER GROUPE
Mais non, ce n'est pas 20 PRINT "DONNEZ VOTRE VERBE" 200 REM CONJUGAISON A L’IMPARFAIT
fastidieux de réviser 30 INPUT V*
40 IF LEN (V*) < 3 OR RIGHT*
210
220
PRINT "IMPARFAIT DE "SV$
PR INT "-----------------
ses conjugaisons ! <V*,2> < > "ER" THEN GOTO 20
50 R* = LEFTt (V*. LEN <V*> - 2)
230
240
PRINT "JE ";R*;"AIS"
PRINT "TU ";R*j"AIS"
Cela peut même 60 RRINT "1(PRESENT),2 (IMPARFAIT) 250 PRINT "IL ";R$;"AIT"
3 (FUTUR) ,4(FIN)" 260 PRINT "NOUS ";R$;"I0NS“
devenir très amusant si 70 INPUT T 270 PRINT "VOUS ";R$j"IEZ"
280 PRINT "ILS "ïR*i“AIENT"
l'on suit ce petit 80 IF T < > 1 AND T < > 2
AND T < > 3 AND T < >
290 GOTO 10
300 REM CONJUGAISON AU FUTUR
programme. Il 4 THEN GOTO 60 310 PRINT "FUTUR DE "; V*
enseignera à votre 90 ON T GOTO 100,200,300,400 320
330
PRINT "-----------------
PRINT "JE "îR$ï"ERAI"
enfant les finesses 340
350
PRINT "TU "ïR$î"ERAS"
PRINT "IL ";R$;"ERA"
des terminaisons des Cette partie s'occupe de l'introduction
360
370
PRINT "NOUS ";R*;"ER0NS"
PRINT "VOUS "SR*;"EREZ"
verbes du premier du verbe qui sera enregistré dans une 380
390
PRINT "ILS ";R*:"ERONT"
GOTO 10
mémoire V$. On vérifie qu'il a plus de
groupe, à trois temps trois lettres et qu'il se termine bien par
de l'indicatif. "er" (ligne 40). Ces deux parties vont réaliser la conju­
Si ce n'est pas le cas, il faut alors gaison à l'imparfait et au futur, en
demander un autre verbe. Puis le radi­ suivant la même technique que précé­
cal (obtenu en retranchant la terminai­ demment. Seules les terminaisons
par Jacques Deconchat son "er") est enregistré dans une mé­ changent (on pourrait d'ailleurs simpli­
moire R$. fier le programme en tenant compte de
Le programme demande ensuite (li­ cette remarque).
gne 60) le temps désiré. On devra alors Il faut remarquer que le programme
répondre 4 si l'on désire pas continuer proposé recèle, pour les questions de
à conjuguer. La réponse est enregistrée longueur, une petite imperfection : en
dans une variable T, la ligne 80 servant effet, si le verbe à conjuguer commence
à vérifier que la valeur frappée corres­ par une voyelle, la première personne
pond bien aux seules options propo­ sera incorrecte (on ne dit pas « je
sées. aime », mais « j'aime »). A vous de
La ligne 90 (aiguillage) dirige alors sur remédier à cette lacune en introduisant
la ligne correspondant à l'option choi­ un test sur la première lettre du verbe
sie, en fonction de la valeur de T. introduit.
La ligne 400, bien sûr, est la ligne de fin
de programme. Pour le ZX 81 ou le
100 REM CONJUGAISON ZS Spectrum, il conviendra de modifier
AU PRESENT les lignes 40, 50 et 90 de la façon
110 P R IN T "PRESENT DE " ? V$ suivante :
120 P R IN T >■ Il en ligne 40, remplacer RIGHT$(V$,2)
130 PR IN T "J E " ; r $ ; " E " par V$(LEN(V$)-2 TO)
140 P R IN T "TU " ; R $ ; " E S " en ligne 50, rem placer LEFT-
e fonctionnement est très simple : 150 P R IN T " I L " ; r $ ; " E " $(V$,LEN(V$)-2) par V$(TO LEN(V$)-2)
L on choisit un verbe du premier
groupe (ceux qui se terminent en
"er" à l'infinitif) que l'on entre dans
160
170
180
PR IN T "NOUS " ; R $ ; " 0 N S "
P R IN T "VOUS " ; R $ ; " E Z "
P R IN T " I L S " ; R $ ; " E N T "
la ligne 90 enfin sera simplement rem­
placée par GOTO T* 100.
l'appareil. On obtient alors l'affichage 190 GOTO 10
des quatre options possibles : (
Liste d e s variables
^
- 1 (présent),
- 2 (imparfait), Le verbe est conjugué au présent, en V$ contient le verbe à conjuguer
- 3 (futur), utilisant le radical conservé dans R$. R$ contient le radical du verbe
- 4 (fin). Un titre «PRESENT DU VERBE» est V variable permettant l'aiguillage
On tape alors, 1, 2, 3 ou 4, selon le cas. affiché. Lorsque la conjugaison est ef­ V______________ __________ /

VOTRE ORDINATEUR N” 7 93
KJ
cICHEPROGRFMdE
25
^4

94 VOTRE ORDINATEUR N- 7
SUITES LOGIQUES
La suite logique étant placée dans le Dans le cas contraire, la même suite est
tablea A(l) à A(6), A(l) prend la valeur affichée avec un chiffre supplémentaire
1dès le début du jeu. (ligne 260). La ligne 280 saisit votre
Une suite de trois deuxième solution (même méthode
qu'en ligne 230).
chiffres sur votre Après avoir testé votre proposition, la
10 REM SUITES LOGIQUES ligne 300 renvoie en 410 si celle-ci est
écran. Vous désirez 20 REM ------------------------------ juste.
connaître le 30 DIM A <6)
40 L LT A (1 ) = 1
quatrième ? Un
raisonnement logique 260 P R IN T " S U I T E : " ; A ( 1 ) , A ( 2 ) ; A ( 3 ) ; A ( 4 )
270 P R IN T "L E C IN Q U IE M E C H IF F R E ? "
vous le donnera. Les lignes 50 à 80 placent dans les 280 IN P U T S
290 I F S = 0 THEN 2 6 0
variables I, J, K et L quatre nombres 300 I F S = A ( 5 ) THEN 4 1 0

aléatoires qui détermineront la suite


logique.

par Jean-François Sehan / 'N


50 LET I=INT(RND(1)*10)+1
□ SUITE: 1-12-38-90
60 LET J=INT(RND(1)*10)+1 LE CINQUIÈME CHIFFRE ?
pp» ? -186
70
80
LET
LET
K=I NT( RND( 1 ) * 1 0 ) + l
L=INT(RNO(1)*10)+1 V__ _ _ _ _ _ _ _ _ _ _ _ J
Sinon les lignes 320 à 380 affichent la
Les lignes 90 à 170 calculent la suite bonne solution.
logique (6 chiffres au total).
La ligne 230 saisit votre première solu­
ans prétendre à la comparaison tion (variable S). Si S=0, on retourne à 310 REM - - - - - - - - - - - - - - - - - -

S l'affichage. Si votre proposition est 320 PRINT "PERDU !“


avec un test poussé de quotient 330
340
PRINT "SUITE: ";A(1);A(2);A(3);A(4):A(5)
PRINT "SIXIEME CHI FFRE: ":A(6)
intellectuel, ce programme de bonne, la ligne 250, après un test, 350 IF L>5 THEN 380
suites logiques peut constituer un bon envoie en ligne 410 pour un message 360
370
PRINT "( \ A(5);
GOTO 390
I; • )+ (" J J; ")"

entraînement au raisonnement. de félicitations. 380


390
PRINT "(";A(5); "+ J; "))*";I
GOTO 50
400 REM - - - - - - - - - - - - - - - - - -
Son but est de trouver le nombre décou­ 410
420
PRINT"GAGNE !"
GOTO 50
lant d'une suite alfichée à l'écran. Pour
cela, il propose trois nombres dans un 90 IF K>5 THEN LET J=-J
100 IF L >5 THEN 150
ordre donné, obéissant à un algorithme 110 FOR U=2 TO b
utilisant l'addition, la soustraction ou la 120 LET A (U )=A<U-1) *1 +J / -------------------------------------- \
130 NEXT U
multiplication. A vous de trouver les 140 GOTO 200
nombres suivants. 150 FOR U=2 TO 6 □ PERDU!
160 LET A(U)=<A(U-1)+J)»I SUITE: 1-12-38-90- 194
170 NEXT U
180 REM - - - - - - - - - - - - - - - - - -
190 REM VOTRE SOLUTION
SIXIÈME CHIFFRE : -402
200 PRINT *. . . . . . . . . . . . . . (-194+(-7))*2
J *********************** 210 PRINT “SUITE:";A(l)iA(2);A(3)
220 PRINT-LE QUATRIEME CHIFFRE ?"
230 INPUT S
V.____ J
SUITE : 1 3 19 240 IF S=0 THEN 210
LE QUATRIÈME CHIFFRE? 250 IF S=A (4) THEN 410
étïüi? ? 66 r
Liste d e s variables
O SUITE : 1 3 19147
LE CINQUIÈME CHIFFRE ? N
A() Contient la suite logique
m / ? 1542 | **★★★*******★★**★****★★ LJ Nombres aléatoires pour
□ PERDU! K et le calcul de la suite
SUITE: 13 19 147 1171 SUITE: 1-12-38 L logique
SIXIÈME CHIFFRE : 9363 LE QUATRIÈME CHIFFRE ? S Solution proposée
(1171 * 8)+( —5) ? _g6 U Indice de boucle FOR/NEXT
V _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ ) V _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ) V _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ J
VOTRE ORDINATEUR N“ 7 95
| 26 | F I C H E 0 0

SUITES LOGIQUES - SUITES LO


2 fi
_fcj CD
° Tl
> fi
w
'3 ’w 10 REM SUITES LOGIQUES
2** <wD
20 REM
J2 w 30 DIM A (6)
CD S
fi O 40 LET A (1)=1
■> CD
50 LET I = 1 NT(RND(1)*10)+1
60 LET J=INT(RND(1)*10)+1
.S c
o
70 LET K=INT(RND(1)*10)+1
w > 80 LET L = INT(R N D (1)*10) + 1
S
C
D
« 90 IF K>5 THEN LET J=-J
d 100 IF L >5 THEN 150
T3
fi
j r"H 110 FOR U = 2 TO 6
C
O
h 120 LET A (U )= A (U - l )*1 + J
Wjn
CD 130 NEXT U
CD O
>
140 GOTO 200
“ C
H 150 FOR U=2 TO 6
fi ® 160 LET A(U)=(A(U-1)+J)*I

~ d 170 NEXT U
§ fi 180 REM
&g
C
g
fl U
CD
190 REM VOIRE SOLUTION
200 PRINT
h 3
Xfl
210 PRINT "SUITE: " ;A ( 1 ) ;A (2 );A (3 )
fi O 220 PRINT"LE QUATRIEME CHIFFRE ?"
Il fi
CD d
230 INPUT S
S a 240 IF S = 0 THEN 210
3 C
O ^d
D
250 IF S=A(4) THEN 410
**
b
w
fi
260 PRINT "SUITE: " ;A (1 ) ;A (2 ) ;A (3 ) :A (4 )
2o o> 270 PRINT "LE CINQUIEME CHIFFRE ?"
M
280 INPUT S
w 2 290 IF S=0 THEN 260
g. fi
fi ■■
300 IF S = A (5) THEN 410
O M 310 REM - - - - - - - - - - - - - - - - - - -
U '(D
. . ■ r—I 320 PRINT"PERDU ! "
fi w 330 PRINT "SUITE:";A(1);A(2);A(3);A(4);A(5)
w 3 340 PRINT "SIXIEME CHIFFRE:";A (6)
0 -2 350 IF L >5 THEN 380
m 3
m ^
d 0 360 PRINT " ( " ;A (5 ) ; "* " : I ; ") + (": J ï " ) "
_ w 370 GOTO 390
fi C
CD 'O
D
380 PRINT " ( " ;A (5); "+ (":J: "))*":I
w CD 390 GOTO 50
C
S
D -fi
CD
400 REM
w 410 PRINT"GAGNE ! "
Ë
U C
C
'CD
h CL
di
O C
h

D
420 GOTO 50
2 fi
w 9
CD d
o a

96 VOTRE ORDINATEUR N° 7
I
I

L 'A S T R O L O G I E
140 REM - - - - - - - - - -
150 REM CALCUL OU SIGNE
Bélier ? Lion ? Scorpion ? 160 LET S=1
170 LET C=C+P(S )
Ou peut-être Sagittaire ? Entrez une date 180 IF N<C THEN 210
de naissance, et ce programme nous dira tout, du signe 190 LET S=S+1
200 GOTO 170
zodiacal correspondant aux traits généraux 210 LET S=S-1
220 IF S>0 THEN 240
caractérisant les natifs de ce signe. 230 LET S=12

p ar Jean-François Sehan
Il ne reste plus, aux lignes 260 à 290,
qu'à afficher le signe du tableau S$()
ainsi que la dominante contenue dans le
deux signes, dans S$() les douze signes tableau D$().
L 'appel du sous-programme en
ligne 330 place dans le tableau J()
le nombre de jours de chaque
du zodiaque et dans D$() la dominante
de chacun de ces signes.
mois, dans P() le nombre de jours entre 240 REM - - - - - - - - - - - - - -
250 REM SIGNE ASTROLOGIQUE
260 PR INT :PR INT■“-ASTROLOGIE
3ie r e h -- r. . . . . . . . . . . . . . . . . PRINT
320 REH DONNEES 270 PRINT"VOTRE SIGNE:“;S$(S )
330 FOR 1=1 TO 12 280 PRINT:PRINT“DOMINANTE:"
340 REAO J(I),P(I),S»(I),D0(I) 290 PRINT "SIGNE “;DS(S)
350 NEXT I 300 END
360 LET P(13)=29
376 RETURN
380 DATA 31,20,VERSEAU,"D'AIR. ALTRUISTE, SENSIBLE, INDEPENDANT, ANTICONFOR --------- ---------- ------------- -
MISTE ET LUCIDE, IL CHERCHE A SE REALISER DANS LE DOMAINE MORAL OU SOCIAL."
390 DATA 28,30,POISSONS,"D'EAU. SECRET, IMAGINATIF, EMOTIF, IMPRESSIONNABLE
ET SENSIBLE, IL SE VEUT PARTIE INTEGRANTE DE L'UNIVERS."
400 DATA 31,38,BELIER,"DE FEU. HOMME OU FEMME D 'ACTION,PLEIN DE VITALITE ET
D JOUR ET MOIS DE NAISSANCE
DE TONUS, IL AIME L'EFFORT.* 4 ^ ? 4,1
410 DATA 30,30,TAUREAU,"DE TERRE. PASSIONNE, CHARNEL, SENSUEL. IL FAIT □ -ASTROLOGIE-
PREUVE D'UNE ACTIVITE TENACE."
420 DATA 31,31,GEMEAUX,"D'AIR. TRES VIF, DOUE, IL MANIFESTE UNE GRANDE VOTRE SIGNE : CAPRICORNE
FACULTE D'ADAPTATION ET BEAUCOUP DE RAPIOITE DANS SON TRAVAIL."
430 DATA 30,32,CANCER,"D'EAU. DOUX, CALME, CHARMEUR, IL AIME FLANER, REVER, DOMINANTE :
SE REFUGIER DANS L'IMAGINAIRE."
440 DATA 31,31, LION, "DE FEU.VOLONTAIRE,GENEREUX, ACTIF, IL POSSEOE LE GOUT DE SIGNE DE TERRE. FLEGMA
SE REALISER DANS LES GRANDES ENTREPRISES. TIQUE, PASSIONNE, REFLECHI
450 DATA 31,31,VIERGE,"DE TERRE. METHODIQUE,METICULEUX, CURIEUX, IL RECHERCHE ET METHODIQUE, ILEST AUSSI
LE CALME DE L'ESPRIT ET LA SECURITE."
460 OATA 30’, 31.BALANCE, "D'AIR. OUVERT, SENSIBLE, AFFECTUEUX, SUBTIL, INTUITIF, PROFOND, GRAVE ET
IL EST A LA RECHERCHE DE SON EQUILIBRE."
470 DATA 31,30,SCORPION,"D'EAU. PASSIONNE. COMBATIF, ALTRUISTE, C'EST UN TRA DISCIPLINE.
VAILLEUR ACHARNE."
480 DATA 30,30,SAGITTAIRE,"DE FEU. BRILLANT,EQUILIBRE, SERIEUX, IL EPROUVE LE
BESOIN DE FRANCHIR SES LIMI TES MATERIEL LES ET SPIRITUELLES."
490 DATA 31,30.CAPRICORNE,"DE TERRE. FLEGMATIQUE, PASSIONNE, REFLECHI ET
METHODIQUE, IL EST AUSSI PROFOND, GRAVE ET DISCIPLINE."
r
Liste d es variables
A
c total du nombre de jours
d'écart entre les signes
Si votre ordinateur ne possède pas les 10 REM ASTROLOGIE
instructions DATA et READ, il faut 20 R E M . . . . . . . . . . . . . . . . . . . . . . . D$() liste des dominantes de
remplacer les lignes 330 à 490 par : 30 DIM P (13)
40 OIM J(12)
chaque signe
50 DIM S$(12) I indice de boucle FOR/NEXT
330 J(l)=31 60 DIM DS(121
J jour de naissance
340 P(l)=20
350 S$(l)=«VERSEAU»
70 GOSUB 330
80 PRINT'JOUR ET MOIS DE NAISSANCE"
90 INPUT J,M
100 FOR 1=1 TO M-l
JO nombre de jours par mois
M mois de naissance
360 D$(l)=« D'AIR. ALTRUISTE,... ETC 110 LET N=N+J(I)
120 NEXT I N nombre de jours vécus depuis
370 J(2)=28 130 LET WÊÊÊÊÊ/ÊÊÊFA le 1erjanvier
etc,, en prenant les données des DATA
des lignes 380 à 490. Ce sont les lignes 160 à 230 qui PO tableau des écarts entre deux
signes
déterminent le signe zodiacal, en
Puis les lignes 80 à 130 saisissent le jour comparant le nombre de jours vécus N S numéro du signe
et le mois de naissance et calculent le avec la somme des écarts entre chaque S$() liste des douze signes du
nombre de jours vécus depuis le signe (renseignements pris dans le zodiaque
1er janvier (variable N). tableau P). )

VOTRE ORDINATEUR N° 8 87
F IC H E P R O G R
|Z 7 |

10 REM ASTROLOGIE
20 REM - - - - - - - - - - - - - - - - - - - - - -
30 DIM P(13)
40 DIM J( 12 )
50 DIM S $(12)
60 DIM D$(12)
70 GOSUB 330
80 PR INT"JOUR ET MOIS DE NAISSANCE"
90 INPUT J,M
100 FOR 1=1 TO M-l
110 LET N=N+J(I )
120 NEXT I
130 LET N=N+J
140 R E M - - - - - - - - - - - - - - - - - - - -
150 REM CALCUL DU SIGNE
160 LET S=1
170 LET C=C+P(S)
180 IF N<C THEN 210
190 LET S=S+1
200 GOTO 170
210 LET S=S-1
220 IF S>0 THEN 240
230 LET S=12
240 REM - - - - - - - - - - - - - - - - - - - - -
250 REM SIGNE ASTROLOGIQUE
260 PRINT:PRINT "-ASTROLOGIE-":PRINT
270 PRINT"VOTRE SIGNE:";S$(S )
280 PRINT:PRINT'DOMINANTE:"
290 PRINT "SIGNE ";D$(S)
300 END
310 R E M -- - - - - - - - - - - - - - - - - - -
320 REM DONNEES
330 FOR 1=1 TO 12
340 REAO J(I),P(I),S$(I),D$(I)
350 NEXT I
360 LET P(13)=29
370 RETURN
380 DATA 31,20,VERSEAU, "D'AIR. ALTRUISTE, SENSIBLE, INDEPENDANT, ANTI
CONFORMISTE ET LUCIDE, IL CHERCHE A SE REALISER DANS LE DOMAINE
MORAL OU SOCIAL."
390 DATA 28.30,POISSONS,*D'EAU. SECRET, IMAGINATIF, EMOTIF, IMPRES
SIONNABLE ET SENSIBLE, IL SE VEUT PARTIE INTEGRANTE DE L'UNIVERS."
400 DATA 31,30,BELIER, "DE FEU. HOMME OU FEMME D'ACTION, PLEIN DE VITA
LITE ET DE TONUS, IL AIME L ’EFFORT."
410 DATA 30,30,TAUREAU,"DE TERRE. PASSIONNE, CHARNEL, SENSUEL. IL
FAIT PREUVE D 'UNE ACTIVITE TENACE."
420 DATA 31,31,GEMEAUX,"D'AIR. TRES VIF, DOUE,IL MANIFESTE UNE GRANDE
FACULTE D ’ADAPTATION ET BEAUCOUP DE RAPIDITE DANS SON TRAVAIL."
430 DATA 30,32,CANCER,"D'EAU. DOUX, CALME, CHARMEUR, IL AIME FLANER,
REVER, SE REFUGIER DANS L'IMAGINAIRE."
440 DATA 31,31,LION,"DE FEU. VOLONTAIRE, GENEREUX, ACTIF, IL POSSEDE
LE GOUT DE . SE REALISER DANS LES GRANDES ENTREPRISES.
450 DATA 31,31, VIERGE,"DE TERRE. METHODIQUE, METICULEUX, CURIEUX, IL
RECHERCHE LE CALME DE L'ESPRIT ET LA SECURITE."
460 DATA 30,31,BALANCE,"D'AIR. OUVERT,SENSIBLE, AFFECTUEUX, SUBTIL,
INTUITIF, IL EST A LA RECHERCHE DE SON EQUILIBRE."
470 DATA 31,30,SCORPION,"D'EAU.PASSIONNE, COMBATIF, ALTRUISTE, C ’EST
UN TRAVAILLEUR ACHARNE."
480 DATA 30,30,SAGITTAIRE,"DE FEU. BRILLANT,EQUILIBRE, SERIEUX, IL E
PROUVE LE BESOIN DE FRANCHIR SES LIMITES MATERIELLES ET SPIRITUELLES."
490 DATA 31,30,CAPRICORNE,"DE TERRE. FLEGMATIQUE, PASSIONNE, REFLECHI
ET METHODIQUE, IL EST AUSSI PROFOND, GRAVE ET DISCIPLINE "

VOTRE ORDINATEUR N°
LES C R Y P T O G R A M M E S
de transcription, on code une à une
toutes les lettres du message M$ à l'aide 170 R E M --- - - - - - - - - ---
d'une boucle FOR/NEXT. Seules les 180 REM DECODAGE
Si vous aimez les messages lettres sont réellement codées, les autres
190
200
GOSUB 310
PRINT'MESSAGE DECODE:"
secrets, les informations signes sont ignorés. Il faut remplacer 210
220
FOR 1=1 TO LEN(M$)
IF MID$(M$,I,1)<"A“ OR
codées, les encres l'instruction MID$(M$,I,1) par M$(I) pour
230
MID$(M$,I,1)>"Z“ THEN 270
FOR 0=1 TO 26
le ZX81 et le Spectrum, et par
sympathiques, bref, si vous SEG$(M$,I,1) pour le TI 99/4A (lignes
240 IF ASC(MI0$(M$,I,1))
-64<>C(J) THEN 260
êtes féru de cryptographie, 130 et 140). 250
260
PRINT CHRS(J+64);
NEXT J
vous pourrez donner libre 80 R E M . . . . . . . . . . . . . . . . . . .
270
280
NEXT I
END
cours à votre passion en 90 REM CODAGE
100 GOSUB 310
échangeant des textes 110 PRINT"MESSAGE CODE: *
120 FOR 1=1 TO LEN(M$) Les lignes 310 à 490 créent dans le
indécodables... sauf pour 130 IF MIDS(M$,I, 1)<"A* OR MID5
(M$,I, 1)>"Z" THEN 150 tableau C() les codes de transcription.
celui qui en connaît la clef ! 140 PRINT CH R S (C (ASC(MI DS Dès que le mot de passe est saisi, on
(M$, 1,1))-64 )+64 ); place dans le tableau C() la
150 NEXT I
160 END correspondance de chaque lettre en
p a r Jean-François Sehan
fonction du mot de passe P$. Un
Décodage : Comme pour le codage, on exemple : si C(l) = 3, la lettre A devient
n effet, le programme vous fait d'abord appel au sous-programme C ; si C(26) = 5, la lettre Z devient E ; A
E demande s'il s'agit d'un message
à coder ou à décoder, puis le mot
en 310, puis on décode une à une toutes
les lettres du message M$ à l'aide d'une
étant la lie lettre de l'alphabet, C la 3e, Z
la 26e et E la 5e. Les instructions
de passe (la clef du message). Vous boucle FOR/NEXT. Il faut aussi MID$(P$,I,1) seront remplacées par P$(I)
devez taper un message quelconque, remplacer les MID$ des lignes 220 et sur les Sinclair et par SEG$(P$,1,1) sur
par exemple « VOTRE ORDINATEUR » 240. —» les Texas Instruments.
ou « DE NORBERT A MARCEL». Sans
cette clef, il n'est pas possible de 290 REM - - - - - - - - - - - - - - - - - - - - - - - - -
décoder un message. 300 REM CREATION CODES
310 PRINT"MOT DE PASSE"
^13CODAGE OU DECODAGE (C/D) 320 INPUT P$
330 IF P$=”" THEN 310
^?C 340 LET D= 1
O MOT DE PASSE 350 FOR 1=1 TO LEN(P$)
? IF THEN ELSE 360 IF MID$(P$, I, 1)<“A" OR M I D$(P$,1,1)>"Z" THEN 400
□ MESSAGE 370 IF C(ASC(MID$(P$,I,1 ) )-64)<>0 THEN 400
VOTRE ORDINATEUR 380 LET C(ASC(MID$(P$,I,1))—64)=D
□ MESSAGE CODE : 390 LET D=D+1
MRCOEROWAFZCENO 400 NEXT I
410 FOR 1=26 TO 1 STEP -1
420 IF C (I )<>0 THEN 450
La ligne 50 saisit le type d'opération 430 LET C (I )= D
à effectuer : codage ou décodage. 440 LET D=D+1
Les lignes 60 et 70 envoient aux 450 NEXT I
programmes concernés. 460 PRINT"MESSAGE"
470 INPUT M$
480 IF M$ = “" THEN 460
18 REM CRYPTOGRAMMES 490 RETURN
20 REM -r- - - - - - - - - - - - - - - -
36 DIM C(26)
40 PRINT-CODAGE
OU DECODAGE (C/D)" r
50 INPUT R$ Liste d es variables
60 IF R$="D" THEN 190
70 IF R $ o “C" THEN 40
C() tableau de transcription J indice de boucle FOR/NEXT
D nombre de lettres déjà dans le M$ message à coder ou à décoder
Codages : Après l'appel du sous- tableau PS mot de passe
programme de saisie du mot de passe, I indice de boucle FOR/NEXT R$ choix de l'utilisateur
du message et de la création du tableau

VOTRE ORDINATEUR N” 8 89
V7 F IC H E P R O G R H m
S 28

V M
_fc! Q)
O ° Tl
> d
[ — 1 M tJl
■ri ■
REM CRYPTOGRAMMES
P h
^S w
Q)
REM------------------------------------------------------
DIM C(26)
a> 3 PRINT-CODAGE OU DECODAGE (C/D)"
> - d 2
fi INPUT R$
o c ■> 0)
£ 'TJ
IF R$="D" THEN 190
IF R$ <> " C" THEN 40
^ - REM----------------------------------------------------
.S fi
O d REM CODAGE
w >
S-, d
d 0 > GOSUB 310
3 1 > PRINT-MESSAGE CODE:"
CO d d ) FOR 1=1 TO LEN(M$)
d d I IF MID$(M$f I , 1) <"A" OR MID$(M$, I, 1)>MZ" THEN 150
w 3 g I PRINT CHR$(C(ASC(MID$(M$,I,1 ) ) - 6 4 ) + 6 4 ) :
0) I NEXT I
1— ^ W Jh I END
JV o I REM----------------------------------------------------
>
1 £ <- I REM DECODAGE
I GOSUB 310
~ d : I PRINT-MESSAGE DECODE:"
CO (D «
3 c I FOR 1=1 TO LEN(M$)
w Ul u I IF MID$(M$, I, 1 ) <“A" OR MID$(M$,i ' 1)>"Z" THEN 270
I FOR J=1 TO 26
I IF ASC(MID$(M$,I,1 ) )-64<>C(J) THEN 260
U1 I I PRINT CHR4( J + 6 4 );
s S 1 l NEXT J
l NEXT I
t-,
<
fi ? i END
s dD (-1
d jï
) REM----------------------------------------------------
b H 1
3 <1> 1 ) REM CREATION CODES
o~d l
c ) PRINT-MOT DE PASSE"
ü fi F ) INPUT P$
P C fi O
O > i ) IF P$="" THEN 310
^ w1 I LET D=1
w o ) FOR 1=1 TO LEN(P$)
O g, 8 I IF MI D$ ( P $ , I , 1 )<"A" OR MID$( P $ , I , 1 ) > "Z" THEN 400
fi
O w!
■■ s I IF C(ASC(MID$(P$, I, 1) )-64)<>0 THEN 400
O x(D 1 I LET C(ASC(MID$(P$, I, 1 ) ) —64) =D
O -♦—
H— *
< 'J-* l LET D=D+1
C M 1 I NEXT I
° J2 s
CO 2 i FOR 1=26 TO 1 STEP -1
u .a i IF C(I)<>0 THEN 450
p u . 2L -*-« I
l LET C( I ) =D
d L! I LET D=D+1
> - PQ ftl
l NEXT I
d tu I
PC »7)
w (D 1
d) "d g
i PRINT-MESSAGE"
i INPUT M$
i IF M$ = “ - THEN 460
O S CD 1 i RETURN
S “ 1
d '2 1
b, a l
CO o o g
^ fi
w I
“(D D3 1
i T U S1

90 VOTRE ORDINATEUR N“ 8
KJ y
£ 29 S
^4

LES TO U R S D E H A N O I
350 FOR 1=1 TO N
120 REH - - - - - - - - - - - - - - - - 360 IF 0(3,I)=0 THEN 140
130 REM LE JEU 370 NEXT I
Faire passer sur la tour 140 GOSUB 510 380 GOSUB 510
150 PRINT“TOUR DE DEPART: "
de droite, et dans le 168 INPUT TD
390
400
P R W R E U S S I EN" iE; "COUPS "
END
170 IF TD<1 OR TD>3 THEN 150
même ordre, des disques 180 LET J =TD
empilés sur 190 GOSUB 430 C'est le sous-programme des lignes 510
200 IF Q=1 THEN 150
la tour de gauche, en vous 210 LET 00=1 à 650 qui dessine sur l'écran les
W Ê Ê Ê Ê K Ê Ê Ê Ê Ê Ê Ê IÊ K Ê W trois tours à partir du tableauD().
aidant de la tour du
milieu... un jeu qui demande Le sous-programme en 430 trouve le 490 R E M ------- ---- ------ -
500 REM AFFICHE LES 0ISQUES
510 PRINT"TOUR 1 TOUR 2 TOUR 3"
patience et réflexion. numéro de ce disque. Si cette tour ne 520 FOR J=7 TO 1 STEP -1
comporte aucun disque, on met le dra­ 530 FOR 1=1 TO 3
peau à 1 (variable Q). Au retour du 540 FOR K=7 TO 1 STEP -1
550 IF K>0(I,J) THEN 580
sous-programme, si Q= 1on revient à la 560 PRINT
p a r Jean-François Sehan
saisie de la tour de départ. 570 GOTO 590
580 PRINT" ",
590 NEXT K
600 PRINT"I
410 R E M - - - - - - - - - - - 610 NEXT I
ous pouvez choisir le nombre de
V disques à manœuvrer, entre trois
420 REM NUMERO OU DISQUE
SUPERIEUR
620
630
640
PRINT
NEXT J
PRINT
et six.
Le programme demande la tour de
430 LET Q=0
440 FOR 1=7 TO 1 STEP -1
450 IF D( J, 1 ) 0 0 THEN 480
650 RETURN WÊÊÊÊÊÊEB
départ du mouvement, puis la tour d'ar­ 460 NEXT I
rivée : entrer 1, 2 ou 3 numéros (des 470 LET Q=1 ( TOUR 1
TOUR 2 TOUR 3 ^
480 RETURN I I I
tours). Il refuse les ordres impossibles à
exécuter : on ne peut poser un disque I I I
sur un autre moins large. Mais un dis­ I I I
que peut aller de la tour 1 à la tour 3, On utilise le même principe pour la tour I I I
d'arrivée. Au retour du sous-programme *****J I *1
puis revenir à la .tour 2. Il affiche aussi ******!
tout au long du jeu le nombre d'essais. en 430, on teste si le disque du dessus I *T
n'est pas plus petit , auquel cas on *******! ****j ***j
Un petit conseil : il faut mieux pour vos
nerfs commencer par trois disques ! reviendrait à la saisie de la tour de □ TOUR DE DEPART :
départ. 3
La ligne 40 saisit le nombre de disques
à jouer (trois à sept). Puis on dimen­ □ TOUR D'ARRIVEE :
sionne un tableau D pour connaître 4 2
pendant le jeu l'emplacement des dis­ 220 PRINT"T0UR D'ARRIVEE:" V P ESSAIS: 11 ____ )
ques sur les trois tours. On remplit le 230 INPUT TA
240 IF TA<1 OR TA>3 THEN 220 \
tableau de départ en mettant tous les 250 IF TA=TD THEN 150 Liste d e s variables
disques sur la première tour, le disque 260 LET J=TA D() emplacement des disques sur
le plus grand étant placé à la position 1. 270 GOSUB 430
280 IF Q=1 THEN 300 les tours
290 IF 0(T0,00)>D(TA,I) DA emplacement du disque sur la
THEN 150 tour d'arrivée
10 REH TOURS OE HANOI 300 LET DA=I+1
20 R E H .... . . . . . . . . . .... 310 LET 0(TA,DA)=0(TD,D0) DD emplacement du disque sur la
30 PRINT'NOMBRE OE DISQUES" 320 LET D (TD,00)=0 tour de départ
40 INPUT N 330 LET E=E+1
50 IF N<3 OR N>7 THEN 30 340 PRINT"ESSAIS: ";E E nombre d'essais
60 DIH 0(3,7) I indice de boucle FOR/NEXT
70 FOR 1=1 TO 7 I indice de boucle FOR/NEXT
80 IF I>N THEN 100
90 LET 0(1,1)=8-I K indice de boucle FOR/NEXT
100 NEXT I Les lignes 350 à 370 testent sur la N nombre de disques
110 LET E=0 troisième toiir si tous les disques sont si Q= 1, il y a erreur de
déjà placés. Si ce n'est pas le cas, on Q déplacement
Les lignes 150 à 210 saisissent le numéro retourne à la ligne 140 pour l'essai TA tour d'arrivée
de la tour de départ (on déplace dans suivant, sinon on affiche le message tour de départ
ce cas le disque supérieur). «REUSSI »et le nombre d'essais. VP )

VOTRE ORDINATEUR N" 8 91


KJ F IC H E P R O G R R m
29 y
]S
%

m > -i

PJ £ <U

— 10 REM TOURS DE HANOI


> C
20 R E M - - - - - - - - - - - - - - - - - - - - - - - -
Û w
• g
.£ ?
w
CO
30 PRINT'NOMBRE DE DISQUES"
40 [NPUT N
i^ i <D 50 [F N<3 OR N>7 THEN 30
CQ c /i w
60 OIM 0(3,7)
70 FOR 1=1 TO 7
80 IF I>N THEN 100
cr; T i
-j-|
§ O

C
o
90 LET 0(1,I )=8-1
100 NEXT I
110 LET E=0
T 3 -fl
120 REM - - - - - - - - - - - - - - - - - - - - - - -
f l f l
D 130 REM LE JEU
140 GOSUB 510
O Ifl
150 PRINT"TOUR DE DEPART: "
160 INPUT TD
E—• 0 û > o

3 170 IF TD<1 OR TD>3 THEN 150


180 LET J=TD
1 . S
IJ
H
U
190 GOSUB 430
CO ^

°
a

0 )
200 IF Q = 1 THEN 150
210 LET DD=I
220 PRINT"TOUR D'ARRIVEE: "
w û)
— '
w - b
o
> 230 INPUT TA
240 IF TA<1 OR TA>3 THEN 220
w t- i
f l 0 ) 250 IF TA=TD THEN 150
~
O H 260 LET J=TA
1
f l
270 GOSUB 430
2 f l 280 IF Q=1 THEN 300
290 IF D (TD,D D )>D(TA,I ) THEN 150
0
300 LET DA=I+1
û ) )
310 LET D (TA,DA)=D(TD,D D )
O >H
in
f l
320 LET D (T D ,D D )=0
330 LET E=E+1
f l O 340 PRINT’ESSAIS:*;E
S w

U
-5
f l
350 FOR 1=1 TO N
360 IF D (3,I )=0 THEN 140
S o
370 NEXT I
< £

f
O
l ^
^
s
380 GOSUB 510
390 PRINT"REUSSI EN";E;"COUPS"
K (-.
f l
en
f l
O
400 END
410 REM ---- -----------------
420 REM NUMERO DU DISQUE SUPERIEUR
04 h>
430 LET Q=0
w fX

w
w

O
440 FOR 1=7 TO 1 STEP -1
450 IF D(J,I)<>0 THEN 480
g . § 460 NEXT I
û
f l
0
’ • 470 LET Q = 1
w
480 RETURN
490 R E M - - - --- - - - - - - - - - - - - - - - -
CO i
Ifl
l
500 REM AFFICHE LES DISQUES
510 PRINT“TOUR 1 TOUR 2 TOUR 3"
£
520 FOR J=7 TO 1 STEP -1
PS CO LJ
530 FOR 1=1 TO 3
540 FOR K=7 TO 1 STEP -1
0 CL 550 IF K>D(I,J ) THEN 580
P Q
Ifl
a
560 PRINT
570 GOTO 590
e ;
n

580 PRINT" ";


O
e

590 NEXT K
t e
î s

600 PR INT " I ";


E- a
f l
f l
(D
W
610 NEXT I
620 PRINT
0 8 630 NEXT J
CO t i
& >
O

fl
a

a>
640 PRINT
650 RETURN
PJ 2
]
«
CD O
1 — u a

I
92 VOTRE ORDINATEUR N"
I
F IC H E P R O E R R f lf lE ----------- Æ t
----------------------------------------------

LE M O R S E
( □ 1ALPHABET Æ ? ? VOTRE ORDINATEUR \
□ 2 MESSAGE □
Futurs □ VOTRE CHOIX □
ggï? ?2 □ MESSAGE
radios amateurs, □ MESSAGE gjg? ?
/
voilà Le programme place dans la variable quatre caractères ; des blancs sont
le plus court A$ la liste des codes morse de tout ajoutés pour les codes ne comprenant
chemin pour l'alphabet. Chaque code doit prendre qu'un, deux ou trois points ou tirets.
devenir
un bon « pianiste » 10 REM MORSE
20 REM--------------------------------------------- ------------
30 LET A$=". - ....................«
40 LET A$=A$+ ".............................. ■
50 LET A$=A$+"-. --- ... -
p a r Jean-François Sehan 60 LET A$=A$+". . - . . . - . ------ . --------------

Puis la ligne 130 saisit au clavier l'option Les lignes 330 à 350 placent dans M$
désirée. l'alphabet que l'on fait interpréter par le
sous-programme des lignes 190 à 300.

70 REM - - - - - - - - - - - 310 REM - - - - - - - -


80 REM MENU 320 REM ALPHABET
90 PRINT 330 LET M$=’ABCDEFGHI
100 PRINT ’1 ALPHABET’ JKLMNOPQRSTUVWXYZ"
110 PRINT "2 MESSAGE’ 340 GOSUB 190
120 PRINT "VOTRE CHOIX ■
130 INPUT W 350 GOTO 90
140 IF W=1 THEN 330
150 IF W»2 THEN 380 Les lignes 380 à 420 demandent à
160 GOTO 120
l'utilisateur de taper au clavier un mes­
sage. Il est interprété comme l'alphabet
Le sous-programme des lignes 190 à 300 par le sous-programme en 190.
édite le message contenu dans la varia­
ble M$. 360 REM -------------
Chaque caractère est pris séparément 370 REM MESSAGE
(boucle I) et retranscrit en morse (bou­
cle K) en prenant dans la variable A$ la 380 P R I N T "MESSAGE’
390 INPUT M$
u lancement du programme, un correspondance des lettres.
A menu vous est proposé : 1
ALPHABET 1.2 MESSAGE 2.
Vous choisissez une option en en tapant
178 REM ---. . . . -. . . . . .
188 REM EDITION MESSAGE
400 IF M $ = "" THEN 90
410 GOSUB 190
420 GOTO 380
le numéro. 198 FOR 1=1 TO LEN(Mî)
Alphabet : L'alphabet complet s'affiche 200 LET P=ASC(MID$(M$,I,1)) / \
.sur votre écran en code morse ; puis le
210 IF P<65 OR P>90 THEN 280 Liste d e s variab les
220 LET P=P-65
programme retourne au menu. 230 FOR K=l+P*4 TO 4+P*4 AS liste des codes morse
Message : Vous entrez votre message 240 IF MID$(A5,K,1) = * " I
THEN 268 indice de boucle FOR/NEXT
puis, en tapant sur ENTER (RETURN ou K indice de boucle FOR/NEXT
ENTREE sur d'autres machines), vous 250 PRINT MI0$(A$,K,1):
260 NEXT K MS message à émettre
obtenez sa traduction en code morse. 270 PRINT * ■; P pointeur de liste des codes
Vous pouvez ensuite soit redemander un 280 NEXT I morse
message, soit retaper sur ENTER pour 290 PRINT
300 RETURN W choix de l'utilisateur
revenir au menu. v__ J

VOTRE ORDINATEUR N- 8 93
F IC H E P R O G R m E
J 30 R

1 2 ^

> fi
P J .2 Cn

CO S
0
S
JD
w
10 REM MORSE
20 R E M - - - - - - - - - - - - - - ---- - - - - -
PC <1) 3
30 LET A$=".- — . "
fi O
X! G
40 LET A$=A$+". . . . . . . . . "
O ’ > <D
50 LET A$=A$+ "-. --- ... -
60 LET A$=A$+"..- ...-.-- - - - - - - -
■S "S 70 REM - - - - - - - - - - - - - - - - - - - - - - - - -
g g 80 REM MENU
g o
<D ■— > 90 PRINT
w
w <D
S 3
100 PRINT "1 ALPHABET"
.S s
x g
110 PRINT "2 MESSAGE"
S s
120 PRINT "VOTRE CHOIX "
1
» 2 130 INPUT W
i o
>
140 IF W=1 THEN 330
ca ,
150 IF W=2 THEN 380
w o

3
£
160 GOTO 120
CO 0) ca
3 G
170 REM - - - - - - - - - - - - - - - - - - - - - - - -
CT1 O 180 REM EDITION MESSAGE
PC ca

2 a»
a x i
U
190 FOR 1=1 TO LEN(M$)
200 LET P=ASC(MID$(M$,1,1))
ca

O 3 C 210 IF P<65 OR P>90 THEN 280


(A O
Xi
f-i 3
220 LET P=P-65
2 §
230 FOR K=l+P*4 TO 4+P*4
s § £ 240 IF MID$(A$,K,1 )= " " THEN 260
§ •3 250 PRINT MID$(A$,K,1);
w h
3
a
5
260 NEXT K
°
a >
>
270 PRINT ■
w
ca
3
280 NEXT I
1
G
y fi
O 290 PRINT
f i ..
O w
300 RETURN
O '(D
._, •iH1
310 REM - - - - - - - - - - - - - - - - - - - - - - - -
3 fi 320 REM ALPHABET
CO O r5
CA 3 330 LET M$="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
O
U
340 GOSUB 190
PC M fi
,5 rv
CQ a
350 GOTO 90
360 R E M - - - - - - - - - - - - - - - - - - - - - - - -
ca

O
f i d)
ü) X
370 REM MESSAGE
CA (1)
380 PRINT-MESSAGE"
fi «
f i û)
390 INPUT M$
fi W
« 'CD
400 IF M $ = "" THEN 90
0
a
410 GOSUB 190
w O <D
420 GOTO 380
fi ü
CA *0
a
<d IL
1 U 2 W

94 VOTRE ORDINATEUR N-
LA BOÎTE AUX LETTRES
Cette option permet de lire la totalité
100 CLS des m essages disponibles, il s'agit
110 PRINT
d'une simple boucle d'affichage. L'arrêt
120 PRINT " MESSAGERIE"
Sylvie, un Joseph, un 130 PRINT en fin d'affichage est obtenu par un
140 PRINT INPUT (ligne 350) : on devra taper un
Antoine et un Pierre-Louis 150 PRINT " VOUS FOUVEZ caractère quelconque pour revenir au
ont téléphon é pour 160 PRINT menu.
170 PRINT "1 LIRE TOUS MESSAGES"
t'em m ener au ciné-club ISO PRINT "2 LIRE VOS MESSAGES"
c e soir. Patou, p a sse 190 PRINT "3 LAISSER UN MESSAGE”
200 PRINT "4 ANNULER UN MESSAGE" 400 REM LECTURE DE VOS
chez le b ou lan ger : deux 210 PRINT "5 FIN" MESSAGES
220 PRINT 405 CLS
b agu ettes... M orceaux de 230 PRINT ” VOTRE CHOIX" 410 PRINT "QUEL EST VOTRE NOM"
p ap ier é p in g lé s qui 240 INPUT R 420 INPUT R$
250 IF R<1 OR R>5 THEN GO 430 FOR 1=1 TO N
s'envolent ou se déchirent, 60 0 .7 0 0
*40 IF Ri= N $( I ) OR N $ ( I ) =
260 ON K GO TO 3 0 0 , 4 0 0 ,5 0 0 ,
ardoise qui s'efface ? Fini ! TO 100 "TOUS" THEN PRINT I î "
: “;N * ( I > ; “ : “ î MS( I )
Voici la m essa g erie 450 NEXT I
fam iliale, boîte aux lettres C'est la partie principale du pro­ 4 6 0 INPUT PS
gramme, appelée menu. Elle propose 4 7 0 GO TO 1 0 0
sur ordinateur. cinq options (il sera facile d'en ajouter
d'autres), chacune de ces options pou­
vant être obtenue par un numéro de 1 à C'est la boucle de lecture sélective des
5. En début d'utilisation, c'est évidem­ messages. Vous devrez donner votre
par Jacques Deconchat ment l'option 3 qu'il faudra choisir pour nom. Les messages qui vous sont préci­
entrer vos messages. sément adressés, ainsi d'ailleurs que les
el quel, ce programme vous per­ messages collectifs (« TOUS »), seront

T mettra d'enregistrer et de restituer


une trentaine de messages de lon­
gueur quelconque, en désignant pour
chacun d'entre eux un destinataire (il
500 REM LAISSER UN MESSAGE
510 CLS
520 PRINT "QUEL EST LE
alors affichés. La sélection est assurée
par la ligne 440.
On pourra n'obtenir que les messages
DESTINATAIRE" collectifs en tapant un nom inconnu ou
est prévu ici dix destinataires différents, 530 INPUT N$(N+1) « TOUS »».
les m essages adressés à la collectivité 550 LET N=N+1
ayant comme destinataire : « Tous »). Le 560 PRINT "QUEL EST LE MESSAGE"
programme est d'une grande facilité 570 INPUT M$(N) 600 REM SUPPRIMER UN MESSAGE
d'utilisation, un menu vous désignant les 560 GO TO 100 610 CLS
620 PRINT “NUMERO A SUPPRIMER"
cinq options possibles. Et après chaque
630 INPUT L
utilisation, il revient systématiquement L'option 3 envoie à la ligne 500, l'écran 640 FOR I=L TO N -l
au menu. Si, par accident, on quitte le est effacé (ici CLS, en 510) et le nom du 65 0 LET NS <I ) =N $(1 + 1)
programme et que Ton veuille y revenir destinataire est demandé en ligne 520. Il 66 0 LET MS(I)=MS<I+1>
sans effacer les messages en cours, il faut répondre « TOUS » si le message 67 0 NEXT I
conviendra de taper : s'adresse à tous les membres de la col­ 68 0 LET N=N-1
GOTO 100 lectivité. Le compteur de messages N est 69 0 GO TO 1«0
ensuite incrémenté d'une unité, le mes­ 70 0 REM FIN
sage est tapé, et on retourne au menu.
10 REM MESSAGERIE FAMILIALE La suppression d'un message sera faite
20 DIM M* (30)
30 DIM N*(10» 300 REM LECTURE DE TOUS en donnant le numéro du message à
40 LET N=0 fl LES MESSAGES supprimer. Le programme réalise alors
310 CLS un décalage de tous les numéros (si, par
320 FOR 1=1 TO N exemple, on veut supprimer le message
330 PRINT 15 » ! “ ; N $ ( I ) i n° 5, l'ancien n° 6 portera le n° 5, le n° 7
Les quatre lignes permettent de réserver
n : M;M*<I)
la place pour trente messages (variable deviendra le n° 6, etc.).
340 NEXT I
indicée M $) pour dix noms (variable 350 INPUT R* La ligne 700 indique la fin du pro­
N $) et de mettre à 0, en début de pro­ 360 GO TO 100 gramme. Elle correspond aussi à la fin
gramme, le compteur de messages N. d'utilisation, obtenue par l'option 5.

VOTRE ORDINATEUR N” 9 105


F IC H E P R 0 G R R M 1 E

<D »i
S CD m lÉ & 'ïliM

10 REM MESSAGERIE FAMILIALE


20 DIM M$(30)
30 DIM N*<10)
40 LET N=0
100 CLS
110 PR INT
120 PRINT " MESSAGERIE"
130 PR INT
140 FRI NT
150 PRINT " VOUS POUVEZ :"
160 FRI NT
170 PRINT "1 LIRE TOUS LES MESSAGES"
180 PRINT "2 LIRE VOS MESSAGES"
190 PRINT "3 LAISSER UN MESSAGE"
200 PR INT "4 ANNULER UN MESSAGE"
210 PRINT "5 FIN"
220 PF:INT
230 PRINT " VOTRE CHOIX"
240 INF'UT F:
250 IF R<1 OR R>5 THEN GO TO 100
260 ON F: GO TO 300,400,500,600,700
300 REM LECTURE DE TOUS LES MESSAGES
310 CLS
320 FOR 1=1 TO N
330 PRINT I;" :";N$(I);":";M$(I>
340 NEXT I
350 INPUT R$
360 GO TO 100
400 REM LECTURE DE VOS MESSAGES
405 CLS
410 PRINT "QUEL EST VOTRE NOM"
420 INF'UT R$
430 FOR 1=1 TO N
440 IF F;$=N$ (I OR N$<I)="TOUS" THEN PRINT I;"
) :";N
$m ":"; MS <I>
450 NEXT I
460 INF'UT RS
470 GO TO 100
500 REM LAISSER UN MESSAGE
510 CLS
520 FRINT "QUEL EST LE DESTINATAIRE"
530 INF'UT NS(N+l)
550 LET N=N+1
560 PRINT "QUEL EST LE MESSAGE'"
570 INF'UT MS (N)
580 GO Tu 100
600 REM SUPPRIMER UN MESSAGE
610 CLS
620 PRINT "NUMERO A SUPPRIMER"
630 INF'UT L
w CD
640 FOR I=L TO N-l
g •S
G CD 650 LET N$ CI)=N$(1+ 1)
S W'CD 660 LET M$(I)=MS(1+1)
670 NEXT I
680 LET N=N-1
690 GO TO 100
700 REM FIN
W O Êm ÊÊm Ê
CD O
o a

106 VOTRE ORDINATEUR N» 9


LE FLAMBEUR
du programme, les affichages étant
10 REM MINI POKER
20 DIM C (3 2 ) e ffe c tu é s par a p p e l d'un sous-
30 DIM A *(1 2 ) prpgramme spécifique commençant en
40 DATA “TR EFLE",“COEUR" "CARREAU".
ligne 300. Lorsque A = 1, les dix pre­
Las B a sica s, 1 heure du " P IQ U E " ." 7 " . " 8 " . “9 " . " 1 0 " ,
mières cartes sont affichées (soit cinq
"V A LFT"."D A M E","R O I","A S”
matin. La fum ée vous 50 FOR 1*1 TO 12 cartes pour le joueur et cinq pour l'ordi­
60 READ A * (I)
em p ê c h e d e distinguer 70 NEXT I nateur) ; si l'on répond « oui » à la ques­
80 FOR 1= 1 TO 32 tion « Voulez-vous un autre tirage ? », la
clairem ent l'écran de votre 90 LET C ( I ) =1
variable A reçoit la valeur 6, ce qui
100 NEXT I
partenaire. Un léger 110 FOR' 1= 1 TO 31 permet de tirer dix nouvelles cartes
120 LET N=INT (RND*( 3 3 - 1 ) + 1 )
dans les vingt-deux restantes (si l'on ne
clignotem ent sur les d iod es 130 LET J=C (N )
140 LET C (N )= C ( I ) répond pas « oui », les mêmes cartes
de contrôle la isse deviner sa 150
160
LET C <I )= J
NEXT I
seront réaffichées).
nervosité. La tension monte... Pour choisir les cartes à garder, il fau­
Comme c'est souvent le cas, la première drait faire des permutations sur les
Soudain, le dram e. Toutes cartes à garder, avant d'entrer dans le
partie du programme effectue ce que
les lum ières s'éteignent. La l'on appelle l'initialisation : deux deuxième sous-programme d'affichage.
pan ne. Cette fois encore, tableaux sont définis. Un tableau numé­
rique C, dimensionné à 32, recevra les 3 0 0 >CLS
vous vous en tirez san s trop 3 1 0 PRINT "VOS CARTES LES MIENNES"
cartes, représentées chacune symboli­
3 2 0 PRINT
d e c a ss e . M ais il lui faudra quement par un nombre entier de 1 à 3 3 0 PRINT
sa revanche, et alors... 32. Un tableau alphanumérique A$, 3 4 0 FOR I=A TO A+4
3 5 0 PRINT I -A + l ; " ï A 4 (C ( I ) -8 * IN T
dimensionné à 12, recevra les noms des ( (C <I ) /8 )> + 5 > î A* ( I NT ( C ( I ) / 8 ) + l ) i
cartes et de leurs couleurs, ceci pour 3 6 0 PRINT TAB ( 1 6 ) ; " -
permettre un affichage en clair des jeux " ïA < ( C ( 1 + 1 0 ) -8 # IN T ( ( C ( 1 + 1 0 ) /B
))+ 5 ) ;A * ,( I N T ( C ( I + 1 0 ) /B ) + 1 )
tirés (ainsi A$(l) = « trèfle », A$(5) 3 7 0 NEXT I
= « 7 », etc.). 3 8 0 RETURN
par Jacques Découchât
La boucle I (lignes 80 à 100) réalise une
première distribution du jeu, non
b ro u illé. La d eu x ièm e b o u c le I Le so u s-p rogram m e d 'a ffich a g e
(lignes 110 à 160) effectue le brouillage, constitue la partie la plus délicate de ce
par l'échange de deux cartes au programme. La ligne 350 effectue l'affi­
on , v o tr e o r d in a te u r ne chage en clair des cinq cartes tirées par

N
hasard, ceci étant réalisé avec l'aide
deviendra pas un brillant joueur d'une variable auxiliaire J qui permet le joueur, et les cartes de l'ordinateur
d e p o k e r a v e c c e m in i­ de mettre de côté la carte à échanger. sont affichées par la ligne 360. Le déco­
programme. Il s'agit seulement de s'im­ dage du nom des cartes et de la couleur
iter à une technique simple permettant est fait au cours de l'affichage, à l'aide
170>LET A=1
de brouiller un jeu de cartes, de tirer 180 GO SUB 300 de deux formules (il faut extraire le reste
des cartes au hasard et de refaire, un 190 PRINT de la division par 8 du numéro de la
2 0 0 PRINT
tirage si nécessaire. Les possibilités de 2 1 0 PRINT "VOÜLE7-VOUS carte pour avoir sa hauteur, 7, 8, 9, 10,
retirage seront d'ailleurs strictement UN AUTRE TIRAGE ? " valet, dame, roi, as ; la partie entière de
2 2 0 INPUT R*
limitées dans cet exemple au remplace­ 2 3 0 IF R»=“OUI" THEN LET A=6
la division permettra d'afficher la cou­
ment des cinq cartes tirées par cinq 2 4 0 GO SUB 3 0 0 leur, trèfle, carreau, cœur ou pique).
autres, choisies dans les cartes restant 2 5 0 STOP Si votre appareil le permet, on pourra
disponibles. Il sera néanmoins possible définir des sous-programmes pour une
de modifier le programme de façon à Ces quelques lignes constituent le corps représentation plus réaliste des cartes.
pouvoir choisir les cartes que l'on désire
garder (un repérage par numéro a été L E S
UOS CR RTE M IE N N E S
prévu à cet effet). Il n'y a pas non plus
d'analyse du jeu, et l'ordinateur ne 1 : RS P IQ U E - RO I CO EUR
saura pas vous dire s'il est ou non vain­ S : U R L E T P IQ U E - 10 CO EUR
queur. 3 : R O I P IQ U E - U R L E T C R R R ER U
Ce programme constitue cependant une 4- : 9 P IQ U E — i CO EUR
bonne façon d'aborder les techniques à S : S T R E F L E - 10 T R E F L E
maîtriser dans ce type de simulation.

VOTRE ORDINATEUR N» 9 107


K}
£
32 JS
y F IC H E P R 0 G R R M 1 E

^ 4 >

Q
E) © |-*— • r — i

< g
■ 1 .«3.21
2

10 REM MINI POKER


GM w 20 DIM C (32)
P h 1^ © 30 DIM A$ <12)
C fl *3 40 DATA "TREFLE","COEUR","CARREAU","PIQUE",
w 'l O "7","8", "9","10","VALET","DAME",
T i ü

.ai t—
T ( "ROI","AS"
1 co0 50 FOR 1=1 TO 12
*2 60 READ A$(I)
£° 70 NEXT I
P C®O
e3 8 0 FOR 1=1 TO 32
T 5 c0 90 LET C(I)=I
G!
£

f - t

PQ ° © 100 NEXT I
©1> 0 1 1 0 FOR 1=1 TO
PQ —
il

G CD 120 LET N=IMT (RND*(33-1)+1)


O Æ
~(i) Ï2
fl 130 LET J=C(N)
s 140 LET C(N)=C(I)
i < wo fl fl
tr u 150 LET C(I)=J
<u© 160 NEXT I
1__ J

^ c l / l

170 LET A=1


P -, « fl -ôO 180 GO SUB 300
oo 190 PR INT
P Q g6© a. 200 PR INT
210 PRINT "VOULEZ-VOUS UN AUTRE TIRAGE
L
flhO P l / l

220 INPUT R$
i
« 230 IF R$="OUI" THEN LET A=6
P C §
Pv,flo ■ i 240 GO SUB 300
flOW ■■ 250 STOP
t D U '©
._ ■H 300 CLS
P Q gja 310 PRINT "VOS CARTES LES MIENNES"
W3 320 PRINT
PQ P wb
•a 330 PRINT
P0 QQ Oh , 340 FOR I=A TO A+4
s fl©^© l / l

350 PRINT I-A+l;":";A$(C(I)-8*INT


3 ((C(I)/8))+5);A$(INT (C(I)/8)+l);
< w ©
S
S fl 360 PRINT TAB (16);"- ";A$(C (I+10)-8*INT
fl © w ((C(1+10)/8 ))+5);A$(INT (C(1+10)/8)+1)
d (i
P - .
d> 370 NEXT I
8c 380 RETURN
P Q
Hï .

n
Ces

1__}
VOTRE ORDINATEUR N° 9
QUI ÊTES-VOUS ?
La première partie du programme (l'ini­ Le corps principal du programme com­
tialisation) contient sous forme de porte tout d'abord une mise à zéro du
données (instruction DATA) les ques­ compteur de points S, puis la définition
^Pourriez-vous tuer ? tions à poser, chacune suivie des quatre d'une variable indicée A(I), dimen­
réponses proposées et des points sionnée à 4 (ce sera facultatif sur la plu­
Êtes-vous intelligent ? affectés selon la réponse. part des machines), qui servira à lire les
, Savez-vous séduire ? points affectés à chaque réponse .
Êtes-vous un bon mari ? Une boucle I (de la ligne 120 à la
10 R E M U N T E S T ligne 260) permettra ensuite la lecture et
Aim ez-vous Brahms ? La E)
20 DA T A "VOUS A TTENDEZ AU C O I N DE L A RU E VO T R E A M I (
, OU I D O I T A R R I V E R D A N S U N Q U A R T D ’H E U R E . P O U R T U
E R L E T E M P S , V O U S E N T R E Z « \ " 1 D A N S U N B A R " , “2 D A N S
l'affichage des questions (pour rallonger
m ode est aux tests de tout U N E S A L L E D E J E U " , “3 D A N S U N M A G A S I N D E V E T E M E N T S " , "4
D A N S U N B O U T I Q U E D ’E L E C T R O N I Q U E " , 1 , 5 , 1 3 , 9
le questionnaire en ajoutant des lignes
3 0 D A T A " D IMANCHE A P R E S MIDI . VOU S E T E S SEUL(E) .
de DATA, il conviendra de modifier la
poil. R evues, journaux, UN(E) A M I ( E ) V I E N T V O U S V O I R . V O U S L U I P R O P O S E Z t " , ”
1 U N E P R O M E N A D E A L A C A M P A G N E " , ‘2 D E R E G A R D E R L ’E M I S S
valeur finale de l'indice de boucle ; ici 4
IO N S P O R T I V E A L A T E L E " , "3 D ’E C O U T E R U N D I S Q U E E N P R E

h eb d o m a d a ires sont remplis N A N T U N V E R R E " , “4 U N E P A R T I E D E P I N G - P O N G " , 1 4 , A , 2 , 1 0


4 0 D A T A "IL E S T 4 H E U R E S . L E B U R E A U F E R M E D A N S U N E puisqu'il n'y a que quatre questions à
D EMI H E U R E . T R O I S R A P P O R T S T R E S U R G E N T S A T T E N D E N T .

d e c e s questionnaires plus .VOTRE C H E F D E S E R V I C E E N T R E E T V O U S D O N N E U N D O S S I E R lire).


U R G E N T " , "1 V O U S C O M M E N C E Z T O U T D E S U I T E " , "2 V O U S M E T
TEZ L E N O U V E A U D O S S I E R A U D E S S U S DE L A P I L E " , "3 V O U S La ligne 130 permet de lire les rensei­
ou moins sérieux, dont le but A T T E N D E Z Q U ’ IL S O I T S O R T I P O U R R A N G E R V O S A F F A I R E S " , "
4 V O U S L ’E M P O R T E Z A L A M A I S O N " , 1 5 , 7 , 3 , 1 1 gnements (au nombre de 9) contenus
5 0 D A T A “V O T R E E N F A N T A D E S D I F F I C U L T E S A L ’E C O L E .
est la plupart du tem ps de IL V O U S D E M A N D E D E L U I V E N I R E N A I D E " , " 1 V O U S L U I EX
P L I Q U E R Q U E V O U S A V E Z R E U S S I T O U T S E U L " , "2 V O U S L U I F
dans chaque ligne DATA, et les lignes
A I T E S R E C I T E R S E S L E Ç O N S " , "3 V O U S F A I T E S S O N E X E R C I C E 140 à 210 effectueront les divers affi­
distraire ou d e faire sourire. ","4 V O U S LUI C O N SEILLER DE FA I R E AUTRE C H O S E " , 8,16,1
chages nécessaires.
Ils peuvent être traités W KEÊÊËÊÊÊÊÊÊÊÊÊÊÊB
Le choix effectué par le joueur, enre­
par un ordinateur. gistré dans une variable R en ligne 220,
Pour obtenir un programme relative­ et contrôlé en ligne 230. Le nombre de
ment court, le nombre des réponses points correspondant à ce choix sera
envisageables a été fixé à quatre. On ajouté dans S par la ligne 240.
pourrait faire varier ce nombre pour Puis l'écran est effacé (ligne 250 : ins­
par Jacques Découchai chacune des questions, par exemple en truction CLS ou autre, selon les appa­
introduisant une donnée chiffrée supplé­ reils) et on pose la question suivante.
mentaire, en début de DATA, qui indi­
a seule ambition du programme querait à l'ordinateur le nombre de

L présenté ici : offrir un modèle per­


mettant de réaliser très simple­
ment un questionnaire du type test. Il
réponses à proposer. Une boucle de lec­
ture sera alors nécessaire pour afficher
les réponses. Dans l'exemple retenu,
2 7 0 > I F S < 15 T H E N P R I N T
NSULTER UN PSYCHIATRE"
280
" V O U S F E R I E Z M I E U X D ’A L L E R C O

IF S > = 1 5 A N D S < 2 2 T H E N P R I N T "VOUS PRENEZ L A VIE


D U B O N C O T E , M A I S V O U S P O U R R I E Z TOUT DE («M E TRAVAI
LLER UN P E U PLUS"
sera très facilement adaptable pour des chaque donnée comporte neuf rensei­ 2 9 0 IF S > = 2 2 A N D S < 3 0 T H E N P R I N T " D O M M A G E Q U E V O U S N
' A Y E Z P A S U N P E U P L U S D ’A M B I T I O N "
questionnaires plus complets (ou plus gnements : le texte de la question, les 3 0 0 IF S > = 3 0 A N D S < 3 8 T H E N P R I N T "VOTRE PHILOSOPHIE
DE LA VI E ES T INTERESSANTE . F A I T E S V O U S AUSSI DU YOG
sérieux) sur tout appareil. La seule quatre réponses proposées, les points A?"
3 1 0 IF S > = 3 8 A N D S < 4 5 T H E N P R I N T ‘V O U S E T E S P L U T O T B
condition est de disposer d'une instruc­ attribués pour chacune des réponses. Il I E N D A N S V O T R E P E A U . C ’E S T R A R E "
3 2 0 IF S > = 4 5 T H E N P R I N T " B R A V O . V O U S E T E S Q U E L Q U ’U N
tion de lecture de données (DATA), qui sera bien sûr possible de découper les D'EXCEPTIONNEL"

peut éventuellement être simulée (pour lignes de DATA si votre appareil impose
le ZX 81 par exemple; voir les précé­ une limitation dans la longueur des
dentes fiches programmes). lignes ; par exemple en remplaçant En fin de questionnaire, une batterie de
Le mode d'emploi est très simple : une 30 DATA ....... par 30 DATA .. puis tests est prévue pour afficher le com­
fois le programme lancé, la première 31 DATA .., 32 DATA ... etc. mentaire final, qui est fonction du
question apparaît sur l'écran. Dans telle nombre de points que vous aurez
situation, comment réagissez-vous ? 100 LET S=0 obtenu.
Quatre réponses possibles, chacune 110 DIM A(4)
120 FOR 1=1 TO 4
étant précédée d'un numéro d'ordre. On 130 READ A*,R$,Ct, Dt,E*.A(1),A(2),A(3),A(4)
IL E S T 4 H E U R E S . L E B U R E A U F E R M
140 PRINT A*
devra taper le numéro (1, 2, 3 ou 4) cor­ 150 PRINT E D A N S U N E D E M I H E U R E . T R O I S RR
160 PRINT B* PRORTS TRES URGENTS ATTENDENT .
respondant à la réponse choisie. Une 170 PRINT C* U O T R E C H E F DE S E R V I C E E N T R E ET U
nouvelle question s'affiche alors. A la fin 180 PRINT D* DUS DONNE UN DOS S I E R URGENT
190 PRINT E* 1 V O U S C O M M E N C E Z T O U T DE S U I T E
du déroulement du questionnaire (qui 200 PRINT 2 V O U S M E T T E Z LE N O U V E A U D O SSIER
210 PRINT "VOTRE CHOIX (1,2,3,4)" RU DES S U S DE LA PILE
ne comprend que quatre questions, pour 220 INPUT R 3 V O U S A T T E N D E Z O U 'IL S O I T S O R T I
ne pas trop allonger la liste), un com­ 230 IF R<1 OR R>4 THEN GO TO 210 POUR RANGER VOS AFFAIRES
240 LET S=S+A(R> 4- V O U S L 'E M P O R T E Z fi Lfi M A I S O N
mentaire résumant les choix effectués 250 CLS
260 NEXT I UOTRE CHOIX (1,2,3,4)
sera proposé, et le programme s'arrête.

VOTRE ORDINATEUR N” 9 109


IC I C H E P R 0 G R R M 1 E
KJ
33 ^ *

10 REM UN TEST
20 DATA "VOUS ATTENDEZ AU COIN DE LA RUE VOTRE AMI(
E) , QUI DOIT ARRIVER DANS UN QUART D'HEURE . POUR TU
ER LE TEMPS , VOUS ENTREZ : 1 DANS UN BAR","2 DANS
UNE SALLE DE JEU","3 DANS UN MAGASIN DE VETEMENTS","4
DANS UN BOUTIQUE D ’ELECTRONIQUE”,1,5', 13, 9
30 DATA "DIMANCHE APRES MIDI . VOUS ETES SEUL(E) .
UNIE) AMI(E) VIENT VOUS VOIR . VOUS LUI PROPOSEZ
1 UNE PROMENADE A LA CAMPAGNE","2 DE REGARDER L ’EMISS
ION SPORTIVE A LA TELE","3 D’ECOUTER UN DISQUE EN PRE
NANT UN VERRE","4 UNE PARTIE DE PING-PONG",14,6,2,10
40 DATA "IL EST 4 HEURES . LE BUREAU FERME DANS'UNE
DEMI HEURE . TROIS RAPPORTS TRES URGENTS ATTENDENT ,
VOTRE CHEF DE gERVICE ENTRE ET VOUS DONNE UN DOSSIER
URGENT","1 VOUS COMMENCEZ TOUT DE SUITE","2 VOUS MET
TEZ LE NOUVEAU DOSSIER AU DESSUS DE LA PILE","3 VOUS
ATTENDEZ QU’IL SOIT SORTI POUR RANGER VOS AFFAIRES","
4 VOUS L ’EMPORTEZ A LA MAISON",15,7,3,11
50 DATA "VOTRE ENFANT A DES DIFFICULTES A L ’ECOLE
IL VOUS DEMANDE DE LUI VENIR EN AIDE","1 VOUS LUI EX
PLIQUER QUE VOUS AVEZ REUSSI TOUT SEUL","2 VOUS LUI F
AITES RECITER SES LEÇONS","3 VOUS FAITES SON EXERCICE
4 VOUS LUI CONSEILLER DE FAIRE AUTRE CHOSE",8,16,1
2,4
100 LET S=0
110 DIM A (4)
120 FOR 1=1 TO 4
130 READ AS,BS,CS,DS,ES,A(1),A (2),A (3),A (4)
140 PRINT AS
150 PRINT
160 PRINT BS
170 PRINT CS
180 PRINT DS
190 PRINT ES
200 PRINT
210 PRINT "VOTRE CHOIX (1,2,3,4)"
220 INF'UT R
230 IF R<1 OR R>4 THEN GO TO 210
240 LET S=S+A(R)
250 CLS
260 NEXT I
270 IF S<15 THEN PRINT "VOUS FERIEZ MIEUX D’ALLER CO
NSULTEF: UN PSYCHIATRE"
280 IF S>=15 AND S<22 THEN PRINT "VOUS PRENEZ LA VIE
DU BON COTE , MAIS VOUS POURRIEZ TOUT DE MEME TRAVAI
LLER UN PEU PLUS"
290 IF S >=22 AND S<30 THEN PRINT "DOMMAGE QUE VOUS N
•'AYEZ PAS UN PEU PLUS D’AMBITION"
300 IF S>=30 AND S<38 THEN PRINT "VOTRE PHILOSOPHIE
DE LA VIE EST INTERESSANTE , FAITES VOUS AUSSI DU YOG
A?"
310 IF 3>=38 AND S<45 THEN PRINT "VOUS ETES PLUTOT B
IEN DANS VOTRE PEAU . C ’EST RARE"
320 IF S>=45 THEN PRINT “BRAVO . VOUS ETES QUELQU’UN
D’EXCEPTIONNEL"

110 VOTRE ORDINATEUR N° 9


ET VOS CLASSIQUES ?
L'Avare, de Molière). Malheureusement, vous voulez jouer honnêtement, de ne
les phrases proposées ne sont pas dans pas la regarder de trop près puisque
l'ordre, et le dialogue tel qu'il est affiché c'est elle qui détermine pour l'ordina­
M ais qu 'a donc répondu n'a pas beaucoup de sens. Il vous est teur l'ordre correct.
simplement demandé de retrouver
La Flèche lorsque H arpagon l'ordre initial (et logique !) du dialogue.
- L'Avare - lui a Pour cela, en réponse à la question
130 FOR 1=1 TO 9
« Quel est le bon ordre ? », vous devez
dem an dé... ? Sauriez-vous taper une série de chiffres, en indiquant
140
150
PRINT I I ” " î A 4 ( I ï
NEXT I
remettre un p eu d'ordre d'abord le numéro de la phrase que 160
170
PRINT
PRINT «QUEL EST LE BON ORDRE ?"
d a n s un texte - connu - un vous croyez être la première, puis le 180 INPUT C4
numéro de la deuxième et ainsi de suite.
p eu ch am b ou lé ? San s vous Quand vous avez fini, vous tapez
précipiter sur vos petits RETURN (ou ENTER, ou ENTREE, selon
les appareils) et l'ordre que vous aurez La boucle I (lignes 130 à 150) permet
c la ssiq u es illustrés, bien sûr. d'afficher les phrases dans le désordre,
proposé s'affiche. Si ce n'est pas le bon,
M ais en vous aidan t d e votre la même question sera de nouveau chaque phrase étant précédée d'un
bon sens, éventuellem ent. posée, et cela jusqu'à ce que vous ayez numéro (donné par I) permettant de la
trouvé l'ordre convenable. désigner aisément.
La première partie du programme (de La question « Quel est le bon ordre ? »
la ligne 10 à la ligne 120) permet sim­ est affichée, et la suite des chiffres que
plement de donner les phrases à affi­ vous allez taper sera enregistrée dans
par Jacques Deconchat cher, dans un ordre quelconque. une variable C$ (en ligne 180).
La ligne 190 efface ensuite l'écran (l'ins­
truction d'effacement, ici CLS, peut
varier d'un appareil à l'autre).
10 REM CONNAISSEZ VOUS VOS CLASSIQUES ?
15 LET SM)
20 DIM A«(9>
30 LET A* < 1 )="LA FLECHE sLES AUTRES ? " 190 CLS
40 LET A 4<2)="LA FLECHE : HE BIEN , 200 PRINT "VOICI VOTRE ORDRE”
JE SORS" 210 PRINT
5 0 LET A * ( 3 ) -"HARPAGON :O U I" 220 FOR 1=1 TO LEN <C4>
6 0 LET A * ( 4 ) * "HARPAGON s SORS D’ I C I " 230 PRINT A 4 ( V A L ( M ID 4 (C 4 ,I ,1 ) ))
70 LET A 4 ( 5 ) ■"HARPAGON :LES AUTRES" 240 NEXT I
8 0 LET A 4(6>="LA FLECHE lQUE VOUS 250 IF C4=B4 THEN GO TO 3 1 0
EMPORTERAIS-JE ? " 260 LET S - S + l
9 0 LET A4<7>*"LA FLECHE :L E S VOILA" 270 PRINT "CE N’ E%T RAS-LE BON ORDRE"
100 L E T -A * ( 8 ) -"HARPAGON : ATTENDS . 280 FOR 1=1 TO 1000s -NEXT I
N’ EMPORTES TU RIEN ? ” 290 CLS
300 GO TO 130
110 LET A 4 ( 9 ) = "HARPAGON : VIENS CA , QUE
310 PRINT
JE VOIS . MONTRE MOI TES MAINS" 320 PRINT "VOUS AVEZ TROUVE L ’ ORDRE EN
120 LET B 4 = "4 2 8 6 9 7 5 1 3 " " ; S ; " ESSA IS"

Une table A$ est dimensionnée à 9 en Une deuxième boucle I (lignes 220 à


ligne 20 pour contenir les neuf phrases 240) affiche les phrases dans l'ordre que
à afficher. Sur le ZX 81 et le ZX Spec- vous avez proposé. La ligne 270 servira
trum, il conviendra d'écrire DIM à indiquer que l'ordre choisi n'est pas le
A$(9,60), 60 représentant la plus grande bon, si vous vous êtes trompé. Une petite
C e programme est construit sur longueur nécessaire pour une phrase. temporisation est prévue pour ce cas en
une idée tout à fait banale, mais Sur la plupart des appareils, ce dimen­ ligne 280 (boucle vide), et l'on recom­
le même principe pourra aisé­ sionnement serait inutile (avec moins de mence alors au début, non sans avoir
ment donner lieu à toute une série de dix phrases). La variable S, définie en oublié d'ajouter 1 dans le compteur
petits exercices, amusants ou utiles.- ligne 15, servira à comptabiliser les d'essais (ligne 260). La ligne 320 termine
Votre Ordinateur vous présente ici un essais (on pourra d'ailleurs écrire S le programme en affichant le nombre
court extrait d'un texte on ne peut plus = 1, au lieu de S = 0). Quand à la d'essais, dans le cas d'une réponse
classique (vous reconnaîtrez facilement variable B$ (ligne 150), il conviendra, si exacte.

VOTRE ORDINATEUR N» 9 111


n jZ
F IC H E P R G G R i m
134 5 %

1 Lfl FLECHE :LE5 AUTRES 3 ô LA FLECHE :QUE UOUS EMPORTERA


15 -JE ?
2 LA FLECHE :HE BIEN , JE SORS 7 LA FLECHE :LES UOILA
3 HARPAGON OUI 3 HARPAGON :ATTENDS . N 'EMPORTE
S TU RIEN ?
4. HARPAGON SORS D'ICI 9 HARPAGON :UIENS CA , QUE JE U
OI S . MONTRE MOI TES MAINS
5 HARPAGON LES AUTRES
QUEL EST LE BON ORDRE T

1 12 VOTRE ORDINATEUR N-9

Vous aimerez peut-être aussi