Vous êtes sur la page 1sur 108

I

1
{
I j"""'i;J
T
fl 7r ,

=irrcl=ir

lmportant
Ne jamaisconnecter ou déconnecter un
périphériquelorsque le micro-ordina-
teur estalimenté.
Direcolnternational
responsabilité
Sinclairdéclinetoute
en cas de non respectde
cetteinstruction.
zx8 I
1,âEdition COURS
BASIC
DE PROGRAMMATION I
I
I

O 1980 par Sinclair ResearchLimited par Steven Vickers


Table des matières

CHA P I T RE1 CHAPITRE


9
Raccordementdu ZX81 Page5 Continuonsla programmationPage55
et utilisation du manuel en fonction de votre lnstructions
: GOTO,CONT,INPUT,NEW,
connaissance du BASIC. R EM ,PR IN T
STOPdansINPUT données
BREAK
CHA P I T RE
2
Pour dire à l'ordinateur ce qu'il doit fairc Page 11
Commententrerdeschosesdansl'ordinateur C H A P I T R E1 O
Q, O,RUBOUT.NEWLINE f nstructionlF (Sl...l Page65
lnstructions : lF, STOP
Opérations : :, (,), (,:,),=,().
CHA P I T RE
3 AND, OR
Une leçon d'histoiro Page 19 Fonctions: NOT

CHA P I T RE
4
Pour employet le ZX81 comma uno calculette
C H A P I T R E1 1
Page23 Le jeu de ærcËtàrosPage 75
Instruction: PRINT,avecvirgules et Fonctions: CODE,CHR$
points-virgules Trèsdifférentde celui que nousutilisons
O p é r a t i o n s '.*, - , * ,/,* * habituellement.
Expressions et notationscientifique GRAPHICS

CHA P I T RE5 C H A P I T R E1 2
FonctionsPage29 BoucfesPage8l
Instruction: RAND Instructions
: FOR,NEXT
Fonctions: ABS, SGN, SlN, COS,TAN, ASN, TO, STEP
A C S ,ATN , L N , EXP,SOR ,IN T.PI,
RND
FUNCTION C H A P I T R E1 3
NORMAL 6t RAPIDEPage87
lnstructions: SLOW,FAST
CHA P I T RE6 Le ZX81 travaille à deux vitesses: normaleet
Variables Page 35 raDide.
Instructions: LET, CLEAR
Variablesnumériquessimples
C H A P I T R E1 4
Sous-programmesPageI 1
CHA P I T RE7 Instructions
: GOSUB,RETURN
ChaTnæPage41
Opération: * (pour leschaînes)
Fonctions: LEN,VAL, STR$ C H A P I T R E1 5
Chaines,variableschalnesimples
Pour que vos programmasmarchentPagegg
organigrammes et miseau point
CHA P I T RE
8
Programmationde l'ordinateur Page47
Instructions: RUN, LIST C H A P I T R E1 6
Programmes Stockage sur trande magnétique Page 105
l l l u stra t ionde la c ouve rtu reré a l i s é eD a r J o h n H a rri s à Edition de programmes avecô, €', et EDIT I nstructions : SAVE, LOAD
l' i n te n ti onde S inc lair
I dutË uË5 tltauvlËù

C H A PITRE17 CHA P IT RE
27
Affinons l'6criture Page 113 Organisationde la m6moire Page | 69
I nstructions: CLS,SCROLL
Rubriques de PRINT : AT, TAB
CHA P IT RE
28
VariabfesrystàmerPage 175
C H A PITR E18
LesgraphiquesPage 117
I nstructions: PLOT, UNPLOT A NNE XE S
A Le jou de anactàtesPage 181
B Codesdo3comptor nndw Page 189
C H A PITR Ë19 C Lo ZX81 pour ceux qui comptonnont
Tômps ot mouvomonl Page 125 fe BASIC Page | 9 |
lnstruction: PAUSE lndex Page203
Fonction: INKEY$

C H A PITR E
20
L'imprimante de l'ordinateur ZX81 Page 131
Instructions
:LPRINT,LLIST,COPY

C H A PITRE
21
Page 135
Lessous-chalnes
DécoupageavecTO

C H APIÏR E22
L€stabfo.ux Page 141
lnstruction: DIM

C H A PITR E
23
Lorque l'ordinateurest plein Page147
Deschosescurieusesseproduisent.

C H A PITR E
24
Comptonssur nos doigts Page 153
Comptagesbinaireet hexadécimal.

C H A PITR E
25
Comment fonctionne l'ordinatew Paoe 159
Rôlede chaquepuce.
lnstruction: POKE
Fonction: PEEK

C H A PITRE
26
Pourutiliserle langagemachinoPage 165
lnstruction: NEW
Fonction : USR
Chapitre1

RACCORDEMENT
DU ZX81
Lorsquevousavezdéballéle 2X81, vousaveztrouVé:

1. C e manuel .

2. L'ordinateur.Le ZX81 comportetrois embases de jacks (avecleslégendesgVDC lN,


EAR & MIC). une prised'antenneet une partieexposéede soncircuit imprimépour vous
permettrede connecterd'autreséquipements. Le ZX81 ne comportepasde commande
marchdarrêt; pour le mettre soustension,il suffit de le raccorderà l,alimentation
élec-
trique.

3. A l i mentati on.
L'unité d'alimentationtransformele courantdu secteurpour le mettreà la valeuruti-
liséepar leZX81. Si, par erreur,vousconnectezl'alimentationà la mauvaiseembasede
l'ordinateur,ce dernier ne serapasendommagé. Si vousvoulezutiliservotre propreali-
mentation,elle doit fournir une tensionnon réguléede 9 V DC à 700 mA et comporter
un jack de 3,5 mm à extrémitépositive.

4. Un câbled'antenned' 1,20m pour relierl'ordinateurà un téléviseur.

Pr ised'ant enneUHF =inclair


ooo

_l EAR
zxEr

I EEilEdEEilG TE I
9VDCI I G EËG EEBI G I il I]
I EÉilEEBI EEI I
EEEETTTETD
Lll

Co.dond' al i me nt at ion Unit éd'alim enttl,r o n


OU téléviseur
de l'ordinateur

,/

électrioue
Réseau
Chapitre1 Chapitrel

Si I'ordinateursebloque,rappelez-vous qu'il esttoujourspossiblede le remettreà zéro


5. Une pairede conducteursmesurant30 cm environéquipésde prisesjack de 3,5 mm à
leurs deux extrémités.Cesconducteurspermettentde relierl'ordinateurà un magnéto- et d'obtenir à nouveaucette imageen sortantla prise(9V DC lN> et en la remettant
phone. ensuite.Cette opérationdoit être faite seulementdansles casexceptionnels puisqu'elle
Vous devezégalementutiliser un téléviseur; l'ordinateurZX81 peut travaillersans provoquela pertede toute l'informationque contientla rnachine.
téléviseur, maisvous ne pourrezpasvoir ce qu'il est en train de faire I Ce téléviæurdoit Maintenantque votre ordinateurest installé,vousallezvouloir vousen servir.Si vous
être du type UHF ; en France,si le posrcne peut pasrecevoirla 2e chaîne,il ne peut pas connaissez déjà le langageBASIC, il voussuffit de lire l'annexeC et de vousreporterau
restedu manuelpour précisercertainspointsqui pourraientdemeurervagues.
êtreu ti l is éav ecle Z X 81 -
Ultérieurement,vous devrezutiliserun magnétophone à cassette.En effet, lorsque
vous mettez le ZX81 hors tension,toute l'informationqu'il contientest définitivement
ll
ll
Si vousêtesnéophvte,l'essentiel de ce manuela été écrit à votre intention,Ne laissez
pasles exercicesde côté, beaucoupd'entreeux permettentde traiter des points intéres-
perdue. La seulefaçon de la préærverest de l'enregistrersur une cassette- cette opéra- '/ santsqui ne sont pasétudiésdansle texte.Vousdevezdonc bien lesétudieret fairetous
tion vousseraexpliquéeau chapitre16. Bienentendu,vouspouvezégalement acheterdes ceux qui vous intéressent ou qui semblentporter sur des pointsque vous ne comprenez
pasbien.
bandesqui ont été préparées par d'autrespersonnes et exécuterleursprogrammes.
Lorsquevousaveztout rassemblé (à l'exceptiondu lecteurde cassette), il faut connec- Et continueztoujours à utiliservotre machine.Si vousvous posezune questiondu
ter lesélémentsen resoectantle schémacidessus. genre(que va-t-ilvaire si je lui dis ceci et cela ?>, vous pouvezfacilementrépondre-
Si votre téléviseurcomporte deux prisesd'antenne(UHF et VHF), il faut utiliserla il suffit d'entrer les donnéescorrespondantes et de voir ce qu'il se passe.Lorsquele
p ri seUHF . manuel vous dit d'entrer quelque chose,vous devez toujours vous poser la question
Mettre soustensionet allumerle téléviseur.Maintenant,vousdevezréglervotretélévi- < Que pourrais-jef rapperà la place? > et effectuerensuite u netentativeavecvotreréponse.
seur.Le ZXBl travaillesur le canal36 en UHF et, aprèsmisesoustensionet réglage.vous Plusvousécrirezvous-même et mieux vouscomprendrez le 2X81. (cette méthodes'ap-
devezobtenirl'imagesuivante:
pelle la formation non programmée). Ouellesque soient les entréesque vous décidez
d'essayer, vousne risquezen aucuRcasd'endommager l'ordinateur.

PendantI'emploide l'ordinateur,la plupart desgensmettentla commandede volume


à sap o s it ionm inim ale.
Si la commanded'accordde votretéléviseur estdu type variableen continu,vousdevez
la réglerjusqu'aumoment où vous obtenezcette image.Toutefois,de nombreuxtélévi-
seurscomportentun poussoirdistinct pour chaquechaîne.Vous devezdonc choisirun
poussoirinutiliséet effectuerle réglage
correspondant.

8
s
Chapitre2

I P O URDI REA L ' O R D I N A T E U R


C E O U ' I L D O I TF A I R E
Mettezl'ordinateursoustension(en le reliantà l'alimentation); vousdevezmaintenant
obtenir l'écranblanc avecla lettreKen blancsur fond noir (voir I'illustrationdu chapi-
tre 1). Pour que la machinefassequelquechose,vousdevezentrer un message qu'elle
comprend; par exemple,
le message :

PRI NT 2 + 2

lui dit de calculerla somme2 * 2 et de mettrela réponsesur l'écrandu téléviseur.


Un message de ce type qui ordonneà l'ordinateurde faire quelquechoseimmédiate-
ment est une gglgne-1ç!g. ; dans le cascidessus,il s'agit d'une commandePRINT, mais
égalementd'une instructionPRINT. Le fait de l'appelerinstructionPRINT est une réfé-
rence à la forme sanspréciserla manièredont l'ordinateurva I'utiliser.Ainsi, chaque
commande revêt la forme d'une instruction. mais d'autres chosesaussi revêtent cette
forme - par exempleles lignesd'un programmecomme nous le verronsau chapitre8.
Pourentrercettecommande:

1. Entrez d'abord PRINT. Attention : Bien que le claviercomporte une touche pour
chaquelettre, vousne devezpasentrerlesdifférenteslettresconstituantle mot PRINT. ll
vous suffit d'appuyersur la touche P et le mot apparaîtsur l'écranavecun espacede
présentation ; l'écranse présentealorscommesuit :

Ceciest dû au fait que l'ordinateurattend un motclé au début de chaquecommande


- un mot{lé précisele type de la commande.Les mots-cléssont écrits au-dessus des
toucheset, en vous reportantau clavier.vouspouvezvoir que 'PRtNT' estécrit au-dessus
de la touche P ; par con#quent,pour écrire'PRINT', vousdevezappuyersur la toucheP.

IJ
Chapitre2 Chaoitre2

Po u rv ousindiquerqu ' i l a tte n du n mo t-c l é ,l ' o rd i n a teur met sur l ' écranl ' i ndi cati onE 5. Maintenantet c'estlà uneopérationqu'il ne fautjamaisoublier,appuyer sur NEWLINE,
qui a constituévotre point de départ.L'écrancomportepresquetoujoursune lettre]blan- rFlrJ-î
c'est-àdire sur la toucl)e l"tf,t I . Cette manæuvreveut dlre (messagecomplet>ou
ch e su r f ond noir ( v idé oi n v e rs é ,eE ) o u E, (o u c o mmenousl e verronspl ustard,rGl ou
G) a p p eléec ur s eur .La l e ttre Bs i g n i fi e< q u e l l eq u e s oi t l a touchemanæ uvrée, j e..| " i nter- encore<bon. c'estmaintenantà l'ordinateurde travailler>.L'ordinateurlit le message.
en
prèteraicommeun motrlé>. Commevousavezpu le constater,lorsquevousavezappuyé déduitce qu'il doit faireet le fait. Dansle casci-dessus,
l'écrandevient:
s u r P p o ur obr enirP RI N T ,l e El e s t d e v e n uE.
La possibilitéd'appuyersur une touche pour obtenir plus d'un seulsymboleest très
u ti l i sé es ur le Z X B 1. Da n sl a s u i ted e c e rn a n u e l ,l emots
s pour l esquelexi s steunetouche
sont imprimésen CARACTÈneSCRnS.
Souvenez-vous qu'il est inutile d'entrer ces mots lettre par lettre car l'ordinateurne
comprendrapasce que vousvoulezfaire.

2. Appuyez maintenantsur la touche2. Cecine doit pasprovoquerde difficulté.Dansce


caségalement,vousallezvoir le chiffre 2 apparaîTre sur l'écranet la lettre L sedéplacer
d 'un e p os it ion.
Remarquezausi qu'un espaceest intercaléautomatiquement entre PRINT et 2 pour
faciliterla lecture.Cette insertionintervientassezfréquemmentde sorteque vousn'avez
pratiquementjamaisbesoind'entrerun espace. Toutefois,si vousentrezun espace,il sera
affi ch és ur l' éc r an,m aisi l n ' a u raa u c u n ei n fl u e n c es u r l a si gni fi cati on Le résultatest donc 4 ; bien entendu,vous n'avezpasbesoind'un ordinateurpour
du message.
obtenir cette réponse.
3. Appuyez maintenantsur *. Ce caractèrecorrespondà la position MAJUSCULES. 0/0 représentele compte-rendudesopérationseffectuéespar l'ordinateur. (Remarquez
(ces indicationssont en rouge- c'est-àdirela couleurde sHIFT - MAJUscuLEs - que le chiffre zéro est toujours traversépar une barreobliquepour le distinguerdu 0.
su r l a to uc he- dans le c o i n s u p é ri e udr e d ro i te d e c h equetouche); pour obteni r' * ' , Cette représentationest couranteen informatique.)Le premier0 veut dire <tout va bien,
pasde problème>.(A l'annexeB, voustrouverezune listed'autrescodesde compte-rendu
vousdevezmaintenirla touche mm en positionbasseet, simultanément, appuyersur contenant,entre autres,ceux qui peuventapparaîtresi une opérationsedéroulemal.) Le
txl
-::I- deuxième0 veut dire < la dernièreligneque j'ai effectuéeétait la ligne0>. Vousverrez
.tN
plus loin - lorsquenouspasserons à l'écrituredesprogrammes
- qu'une instructionpeut
4. EnTrezà nouveaule chiffre2. L'écranse présentecommesuit : être désignéepar un numéro et mémoriséepour exécutionultérieure:dans ce cas,elle
devientune ligne de pægramme.Ën réalité,lescommandesn'ont pasde numéromais,
pour facilitercescomptesrendus,l'ordinateurprétendqu'ellessont la ligne0.
lmaginonsun compterenduqui cachele curseurEl- Si vousappuyezsur P {PRINT),
le compte-rendu disparaîtet l'écranse présentecommesuit :

PR|NT2+2 A
I

Ch a p i tre2 Chapitre2

Le curseurpeut égalementêtre utilisé pour corrigerdeserreurs: appuyezsur **2 La touche 0 (8 en positionbasse)a la mêmefonctionque la touche 0 maiselledéplace
po u ro b tenir le curseurversla droite et non vers la gauche.

PRINT++2]I Résumé
Ce chapitrea expliquél'entréedes messages destinésauZX81 ; vousavezpu étudier:
sur la dernièrelignede l'écran.Ceciest incompréhensible
et, si vousappuyezsur la touche
Le systèmepermettantd'entrer un mot en mancsuvrantune seuletouche,
NEWLINE,vousobtenez
LescurseursB et E ,
Lescomptes-rendus,
Le marqueurd'erreurde syntaxeEl,
Et la correctiondeserreurspar lestouches 0 , 0 , et RUBOUT.

Le clavier
Voici une photographie
du clavier.

PRTNTE
++2ll

Le Elest la marquedésignantune erreurde syntaxe(la syntaxeest la grammairedes


messages, elle préciseceux qui sont autoriséset ceuxqui ne le sont pas).elle indiqueque
l'o rd i n a te ures t alléjus qu ' à' PR IN T ' e t q u e ,e n s u i te i, l a déci déque l e messagequevous
lui aviezfourni était incorrect.
Bien entendu,vousvoulezmaintenanteffacerle premier* et le remplacer, par exem-
ple, par 3. Vous devezd'abord déplacerle curseurpour le ramenerimmédiatementà
dro i te d u pr em ier *; deux to u c h e s - 0 e t 0 - (Se tB e n p osi ti onmaj uscul es) permettent
que pour utiliserSHIFT. vousdevezmaintenircettetoucheen position
Rappelez-vous
de déplacerle curseurà gaucheet à droite.MaintenezSHIFT en positionbasseet appuyez
bassependantque vous appuyezsur une autretouche.Ne confondezpasle chiffre 0et la
deux fois sur la touche 0. Le curseurse déplacede deux positionsversla gaucheet vous
lettre O.
obtenez:
PRINT +ETZ I

Appuyezmaintenantsur la toucheRUBOUT (0 en positionbasse)et vousavez: [t


PRINT
II+ 2
RUBOUT efface le caractère(ou le motclé) présentimmédjatementà gauchedu curseur.
Si vousappuyezmaintenantsur la touche3, le chiffre "3" est inscritimmédiatement
à gauchedu curseur;vousobtenezdonc :

PRINT 3g'+ 2
et si vous appuyezsur NEWLINE, vous obtenezla réponse: 5.

16
U N E LE çON D'H|STO |RE
Les messagesque vousentrezsontécritsdansun langage spécialappeléBASIc (enanglais
Beginners' All-purposeSymbolic InstructionCode).En réalité,
i,àrOinateur
doit réaliser
un certainnombred'opérationspour décomposerles messages
écritsen BASICen opéra-
tions élémentaires,mais,tout compte fait, c;estrà une partiede son travair.Lesmesages
du BASICcontiennentassezpeu de mots anglais(commePRINT) pour qu.il
soit facileà
un non anglophone de lesapprendre.
Le langageBASIC a été conçu au coilege de Dartmouth,
dans re New Hampshire,
Etats-unis,en 1964 et, depuiscette époqueic'estle langage
informatiquere plus utilisé
par lesdébutantset par lespassionnés de l'informatique.cecl résultedu fait que ce langage
est particulièrement bien adaptéau travailen lignedanslequell'utilisateurentrequelque
chosedansl'ordinateuret dernierrépoÏo immediatement. ll existed.autreslangages
- comme l ' A L G oL ( en r9ù.9e
éar it ér our e une f am iiled, ALG oLs) et r e PASCAL_ dont r a
structureest beaucoupplus éraboréeet la puissance plusgrandeque le BASIc, maisquer-
ques-unsseulementcomme ApL & pop-2 sont
facilesÀ utilisei en ligne.Nous devons
quandmêmement ionner d'aut r eslangages com m ele FoRTRAN, pli et coBoL.
De nombreuxmagazines consacrés à l'ordinateurindividueidiffusentdesprogrammes
en BASIC qui peuventêtre intéressants à étudterpour y trouverdes idées.Vous devrez
certainementprocéderà une petiteadaptationde cesprogrammes parceque chaqueordi_
nateurutilisantle langage EAS|c emploieson propredialectequiest différentde tous les
autres.

21
I
I
a
tI

Il
Chapitre4

POUR EMPLOYER l:EZ](S1 COMME UNE CALCULATRICE


Mettezvotre ordinateursoustension.Vous pouvezmaintenantl'utilisercommeunecal-
culettecomme il a été dit au chapitre2 : Vous entrezPRINT, lesdonnéesdu problèmeà
résoudreet, enfin, vous appuyezsur NEWLINE (dansla suite,nousomettronsla plupart
du tempsde vousdire d'appuyersur la toucheNEWLINE).
Comme vous êtes en droit de l'espérer,le ZX81 ne se contentepasd'additionner,il
æit égalementsoustraire,multiplier (avecle symbole* au lieu du symbolehabituel,
commec'estsouventle cassur les ordinateurs) et diviser(avec!e symbole/ au lieu de +).
Essayonsmai ntenantd'effectuer cesopérations.
+, -, * et / sont desgpérateursarithmétiques. tandisque lesvaleursnumériquessur
lesquellescessymbolesagissentsont lesgpérandes.
L'utilisateurpeut égalementéleverun nombre à une puissance par l'opérateurtt
(touche H en position majuscules. Nota : Ne pasentrer *- B en position majuscules -
deux fois) : entrez:

PRINT 2**3 (N'oubliezpasd'appuyersur NEWLINE).

et vous obtenezla réponse8 (2 élevéà la puissance3 ou 23 ou 2 au cube).


Le ZX81 donneégalementle résultatde combinaisons d'opérations.Exemple:

PRfNT 20-2*3**2+4/2*3

donne le résultatB. Pour donner ce résultat,l'ordinateureffectueplusieursopérations


puisqu'ilcalculed'abordtouteslespuissances (**) de gaucheà droite,il faitensuitetoutes
les multiplicationset les divisions("&/), Oe gaucheà droite également,puis il fait les
additionset soustractions(*&-) égalementde gaucheà droite. Ainsi, l'exécutionde
l'exemplecidessusêst la suivante:
2A -2* 3* * 2+412*3
-f- d'abord lespuissances
2A -2* 9 +412*3
f ensuitelesmultiplicationset lesdivisions
I
I
I
2a-18 +!93
I

2W18 +2 *3
T-
I
I
+6
enfinlesadditions
et lessoustractions
+6

25
Chapitre4 Chapitre4

Nous réalisonsce qui précèdeen donnant à chaqueopérateurune priorité,c'est-à- une virgule (,), le nombre suivantest présentéde deux façonspossibles: soit commen-
dire un numérode 1 à 16. Lesopérationsqui ont la priorité la plus hautesontévaluées çant à l a marg ede gauche,soit au m ilieude la ligneà la 16ecolonne.Si vousut ilisezun
en premieret lesopérationsde mêmeprioritésont évaluées
de gaucheà droite. point virgule,le nombresuivantest affiché immédiatement aprèsle précédent.Essayez
d'entrer':
** a la pr ior it é1 0
* eI I ont la pr ior i té8 P RI NT 1 ; 2; 3; 4; 5; 6; 7; 8; 9; 10
êf
+ &- ont la pr iori té6
P RTNT1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Lorsquele signe"-" est utilisé pour rendrenégativeune valeur(par exemplequand pour voir quellessont les différences.
Si vous le désirez,vous pouvezmettredesvirgules
v o u sé criv ez- 1) , s a pr io ri téd e v i e n t9 . (C e c ie s t l e m o i nsunai repar opposi ti onau moi ns
et despointsvirgulesdansune seuleinstructionPRINT.
binairede 3-1 ; une opérationunairecomporteun seul opérande,tandisqu'une opéra-
t io n b i n air een a deux . N o te r q u e s u r l e Z XB l v o u s n e pouvezpasuti l i ser" + " comme
Résumé
op é ra te urunair e) .
lnstructions: PRINT,avecvirguleset pointsvirgules
Cet ordre est absolumentrigide,maisvous pouvezle modifieren utilisantdes paren-
Opérateur *, - , *, / , **
thèses: les expressions entre parenthèses sont évaluéesen premierpour être traitées Expressions,notationscientifique
ensuitecommeun seulnombrede sorteque :

P RI NT 3" 2 + 2 Exercices
1. Essayez:
don n el e r és ult at6 I 2 : 8 , ta n d i sq u e
PRINT 234E4
P RT NT3. ( 2 + 2 l PRINT 2.3481
PRINT 2.34E2
do n n el e rés ult at3*4: 12.
et la suitejusqu'à
Une combinaisonde ce type est appeléeexplessjon; dansle cas précédent,il s,agit PRINT 2.34815
d'une expressionarithmétiqueou numériqggpuisquele résultatest un nombre.En géné-
r a l , l o rsq uel' or dinat eura tte n d q u e v o u s l u i fo u rn i s si ezun nombre,vous pouvezl ui Vous verrezqu'au bout d'un moment,le ZX81 commenceaussià utiliserla notation
don n e ru neex pr es s ion, c ' e s tl u i q u i c a l c u l ea l o rsl e ré s u l t at. scientifique.Ceciest dû au fait qu'il n'utilisejamaisplus de 14 positionspour écrireun
Vous pouvezécriredes nombrescontenantune marquedécimale(utilisezle point) et nombre.De même,essayez:
vous pouvezégalementemployer la notation scientifique- c'est souventle cassur les
calculatrices de poche.Après un nombre normal (avecou sansmarquedécimale) P RI NT 2. 348_ 1
, vous
pouvezécrireune partieexpqentielle composée de la lettre E, peut-êtrede * ou de -, et PRINT 2,348 _ 2
d'u n n o m br es ansm ar qued é c i ma l eD . a n sc e c a s ,E s i g n i fi ettx19tr* * ttl " foi sdiàx l a pui s-
et ai nside sui te .
s a n ced e ").et

2 3 4 E4 = 2. 34* 1A * * A = 2 .3 4 2. Essayez:
2 .3 4 8 3 : 2. 34 * 1ô* * 3 :2 3 4 A
P RTNT1, , 2, , 3, , , 4, , , , 5
2 .3 4 E- 2 = 2. 34 * 1A * * -2 : û .A2 3 4 e t a i n s id e sui te.
( Essa yed' z éc r ir elesex pr e s s i o ncsi -d e s s ussu r l e Z X8 1 ). Une virguleprovoquetoujoursun petit déplacement
du nombresuivant.Essayez
main-
tenant:
L e ra i s onnem ent le plu s s i m p l ee s t d ' i m a g i n e qr u e l a parti eexponenti el l décal
e el a
marquedécimalevers la droite (exposantpositif) ou versla gauche(exposantnégatif). pRt NT i; ; 2; ; 3: ; ; 4; ; ; ; 5
Vous pouvezégalementécrire plusieurschosesà la fois en les séparantsoit par des
virg u l e s(,) s oit par des p o i n ts v i rg u l e s(; = X e n p o s i t i onmaj uscul es). S i vousuti l i sez Pourquoiplusieurspointsvirgulesne donnent-ilspasun résultatdifférentqu'un seul?

26 -1
Chapitre4

3. PRINT donneseulement
8 chiffressignificatifs.
Essayez
:
\}
pR I NT 4294967 295, 4294967 295 - 429E7

Ceci prouveque I'ordinateurpeut contenirtous leschiffresde4294967295mêmes'il


n'estpasdisposéà lesaffichertous simultanément.

4. Si vousavezdestablesde logarithmes,essayezde vérifier cette règle: '


-Le fait d'élever10 à la puissance
d'un nombreestéquivalentau logarithmeinversede
ce nombre.Parexemple,entrez:

P RT NT10* * û .3 0 1 0

et regardez
ensuitele logarithmeinversede0.3û10. Pourquoilesdeux résultatsnesont-ils
pasexactementégaux?

5 . L e ZX 81 t r av ailleen a ri th m é ti q u e n v i rg u l efl o tta n t e,ce qui veut di re qu' i l fai t une


distinctionentre les chiffresd'un nombre (la mantisse)et la positionde la marque(l'ex-
posant).Cecin'estpastoujoursexact,mêmepour lesnombresentiers.Entrez:

P RT NT1E 1 0 + 1 -1 E 1 0 , 1 E 1 0 -1 E1 0 + 1

Les nombressont préservés avec une préèisionde g 112chiffreset, par conséquent,


1E10 est trop grand pour être mémoriséentièrement.L'imprécision(2 environ)estsupé-
rieureà 1, de sorteque pour l'ordinateur'l E 10 et 1il4 +1 semblentégaux.
Voici un exempleencorepluscurieux,entrez.

P RI NT 5E 9 + 1 _ 5 E 9

lci ,l'imprécisionde 5E9 est seulementde 1 environet le 1 ajoutéest en réalitéarrondi


à 2. Dansce cas,lesnombres5E9+1 et 5E9+2 semblentégauxpour I'ordinateur.-
Le plus grand entier qui peut être mémoriséavec une précisionabsolueest 232-1
(4 294961 2951.


Chapitre5

Fonctions
Mathématiquement, une fonctionest une règlepermettantde donnerun nombre(le résul-
tat) en échanged'un autre (l'argumentou l'opérande)et, en réalité,il s'agitdonc d'une
opérationunaire. Le ZX81 contient certainesfonctions,leursnoms sont les mots écrits
sur lestouches.Parexemple,SOR est la < racinecarrée>bienconnue,et

PRINT SOR 9

donne le résultat3, c'est-àdirela racinecarréede 9. Pour obtenir SOR, il faut d'abord


appuyersurla toucheFUNCTION- toucheNEWLINEen positionmajuscules. Le curseur
se transformealorsen El Appuyezmaintenantsur SOR (H) : SOR apparaîtsur l'écranet
le curseurredevient[l . La même méthodepermetd'utilisertous lesmots quisont écrits
souslestouches(cesmotsétant presquetousdesnomsde fonctions).
Essayez

PRINT SOR 2

Vous pouvezvérifierla précisiondu résultaten utilisant

PRINT SOR 2*SOR 2


qui doit donner le résultat2. Notez que les deux SQR sont calculésavant* et, en prati-
que, toutes les fonctions (avec une exception - NOT) sont élaboréesavant les cinq
opérateurs+, -, *, / et **.lci également, vous pouvezcontournercette règleen utili-
santdes parenthèses :

P R TNTSO R ( 2*2)

donnele résultat2.
Voici d'autresfonctions (voir la liste complèteà l'annexeC). Si vos connaissances
mathématiques ne vous permettentpas de les comprendre,c'estsansimportance,vous
pourrezquandmêmeutiliservotre ordinateur.
SGN Fonctionde signe(ne pasconfondreavecSIN). Le résultatest -1,0 ou *1 selon
que l'argumentest négatif,nul ou positif.
ABS Valeur absolueou modulo. Le résultatest que l'argumentest rendupositif,c'est.à-
di re

ABS-3.2 = ABS3.2:3.2
stN
cos
TAN Fonctionstrigonométriques.
en radianset non en degrés.
ASN arcstn
ACS arccos
ATN arctan
LN Iogarithme naturel (base2,718281828459445.. c'est-àdi re e).

31
Chapitre5
Chapit r e5

EXP fonction exponentielle Résumé


SOR racinecarrée Instruction: RAND
INT partie entière. Cette fonction est toujours arrondie par défaut de sorte que Fonctions : SGN, ABS, SlN, COS,TAN, ASN, ACS, ATN, LN, EXp, SOR, lNT, pl,
INT 3.9 = 3 et INT -3.9 - - 4. (Un entier est un nombreentier qui peut évàn_ RND
tuellementêtre négatif.)
Pf = 3,14159265358979...Longueurde la circonférenced'un cerclepar FUNCTION
rapport à son
diamètre.Pl n'a pas d'argument.(Dix chiffres seulementsont mémorisésdans
l'ordinateuret seulsleshuit premierssont affichéssur l,écran.) Exercices
RND Cette fonction est égalementdépourvued'argument. Elle donne un nombre aléa-
1. Pour obtenir des logarithmesnaturels(base10) qui sont ceux que vous recherchiez
toire entre"0" lvaleurpossible)et "1" (valeurimpossible). dansune tablede logarithmes,divisezle logarithmenaturelpar LN M. parexemple,pour
Pour reprendrele jargon du dernier chapitre,toutes ces fonctions à l'exceptiondepl calculerlog 2 :
et RND sont des opérationsunairesde priorité 11. (Pl et RND sont des opérationsnul-
P R INT LN 2/ LN 1O
lairesparcequ'ellesn'ont pasd'opérande.)
Les fonctions trigonométriquesainsique EXP, LN et SOR sont généralement calculées donnele résulrar0.30103.
avecune précisionde huit chiffres. Essayezde faire des multiplicationset des divisionsavecdes logarithmes en vous ser-
RND et RAND : Lesdeux sont sur la mêmetouche,maisalorsque RND est une fonction, vant du ZX81 commed'un ensemblede tablesde logarithmes(poui leslogarithmes inver-
RAND est un mot-clé comme PRINT. RAND sert à contrôler le caractèrealéatoirede ses,voir l'exercice3 du chapitre2). Contrôlerlesrésultatsen utilisant* el / qui sont à la
RND. fois plus faciles,plus rapides,plus préciset. en général,doiventêtre préférés.
RND n'est pasvéritablementaléatoirepuisquecette fonction suit une séquencefixe de
65 536 nombresqui sont mélangésde façon à sembleraléatoires(RND est pseudo-aléatoi- 2. EXP et LN sont des fonctions mutuellementinversesce qui veut dire que si vous
re). Vous pouvezutiliserRAND pour faire démarrerRND à un endroirdetôrmineOe la appliquezla premièreet ensuitel'autre,vous revenezà votre premièrevaleurnumérique.
séquenceen appuyant sur RAND et en entrant ensuiteun nombreentre 1 et 6bb3b puis E xempl e:
en manceuvrant NEWLINE. ll n'est pas très important de savoiroù un nombredonné
démarre RND car ce même nombre placé aprèsRAND fait toujours démarrerRND au LN EXP2=EXPLN2=2
mêmeendroit.Parexemple,entrez:
ceci est égalementvrai pour lesfonctionsslN et ASN, pour cos et ACS, ainsique
pour TAN et ATN. Vous pouvezutilisercet exercicepour vérifierla précision
de calcul
RAND 1 (etNEWLINE) de l'ordinateurpour cesfonctions.
et ensuite
PRINTRND 3. zr radianségalent180o.Pour passerde degrésen radians,vousdivisezpar lg0etvous
multipliezpar zr : ainsi
et entrêrcesdeux lignesalternativement
à plusieurs (N,oubliez
reprises. pasd,utiliær P R INT TAN ( 451180*PI )
FUNCTIONpour obrenirRND.) Le résutrat de RND seraroujours0.0022735596 ce
qui n'estpasvraimentuneséquence
aléatoire. donnetan 45" (1).
Pourtransformerdesradiansen degrés,il faut diviserpar 7ret multiplierpar 1g0.
RAND O
4. Essayez

(vous pouvezd'ailleursomettre le 0) a un comportementlégèrementdifférent : ce mot- P R INT RND


clé décidede l'endroit auquelRND démarreen fonction du tempsécoulédepuisla mise quelquesfois pourvoir de quellefaçonvariele résultat.Pouvez-vous
soustensiondu ZX81 et, pâr conséquent,le résultatdoit être véritablement détecterune rèqlede
aléatoire. variation? (c'estpeu vraisemblable).
Nota : Danscertainsdialectesdu BASIC, l'argumentd'une fonction doit toujoursêtre
Commentutiliseriez-vous RND et INT pour obtenirun nombreentieraléatoireentre 1
entreparenthèses.Cecine s'appliquepasau BASICdu ZXB1. et 6, afin de représenter
le jet d'un dé ? (Réponse: INT (RND " 6) + 1.).
32
33
C h a pit r e5

5. Vérifiercetterègle:
Suppos ons que v o u sc h o i s i s s i euzn n o mb ree n tre1 etS T2erquevousentri ezensui te:

RA ND s u i v id e v o rren o m b re(e t N E WLIN E )

L a pr oc haine
v ale u rd e R N D d o i t ê tre
( 75 * ( v o tren o m b re+ 1 ) _ 1 ) / 6 b b 3 6
I..
6 . (Pourlesm at hém a ti c i e n ses u l e me n t)
Soit p un f ac t eurp re m i e ri mp o rta n et t s o i t u n e raci nepri mi ti vemodurop.
Si b; es t le r es t ede a i mo d u l op (1 < b i ( p - 1 ), la séquence

b i -1
p -l
e st u n e s équenccey c l i q u ed e p - 1 n o mb re sd i s ti n ctsde l a fourchette0 à 1 (' l excl u).
Si
a a été choisicorrectement, lesnombrespeuventsembleraléatoires.
6 5 537es t un f ac t e u rp re m i e rd e M e rs e n n e2,1 6 - 1. U ti l i sezce facteuretl a l oi de réci -
p ro cit équadr at iqued e G a u s sp o u r d é mo n tre rq u e 75 est une raci nepri mi ti ve
modul o
65537.
L e z x 81 ut ilis ep : 6 5 b 3 7 e t a : 7 5 e t mé mori seaprèsl es b;-1 en mémoi re.La
fonction RND provoquele remplacementen mémoirede b1- 1 par b;
* 1 - 1 ce qui
d o n nele r és ult at( bi* r -1 )/ (p -1 ). R AN D n (a v e c1 ( n (6b53b) rendb1égalà n * 1.

7 ' IN T es t t oujour sa rro n d ip a r d é fa u t.Po u r a rro n di rà l ' enti erl e pl us proche,aJoutez


d 'a b o r d0, 5. E x em pl e:

INT (2.9*0.5):3 : 2
,NT 12.4+b.5)
INT (-2.9+0.5): -3 INT l-2.4+û.5): *2
comparezce qui précèdeet les résultatsque vous obtenezsi vous n,ajoutezpas
0.b.
8. Essavez
pRt NT p t, p t_ 3 , p t _ 3 .1 ,p t _ 3 .1 4 ,p t _3.141

Cet exercicemontrela précisionde mémorisation


de zr par l,ordinateur.
Chapitre6

Variables
Vous vous dites peut-être<Ma calculatricepeut stockerun nombreet s'ensouvenirplus
tard>. Est-ceque le ZX81 peut en faireautant?
OUl. En réalité, grâceà l'instructionLET, le ZX81 peut conserverdes centainesde
nombres.Supposonsque les æufs coûten-t5,80 F la douzaineet que vousvouliezvous
souvenirde cette information.Entrez:

LETOEUFS:5.80 ( et bienent endu.NEWLI NE)

E n premi e rlieu, I 'or dinat eura r éser véun endr oit <danslui- m êm e)pour que vous
pui ssi ezy ran gerun nom br eet , ensuit e.il a désignécet endr oitpar le nom ( oEUFS)
pour que vous puissiezle citer ultérieurement. Cette combinaisond'un espacemémoire
et d'un nom est appeléevariable.Ensuite,il a rangéle nombre5,80 danscet espace: nous
di sonsqu' i l a donnéla valeur580 à la var iable( dont le nom esr )O EUFS.O EUFSestune
variablenumériquepuisquesavaleurest un nombre.
Si vousvoulezsavoircombiencoûtentlesæufs,il faut entrer

P RI NT O EUFS

Si vousvoulezconnaîtrele coût d'unedemi douzained'æufs.vousentrez

PRI NT O EUFS/ 2

et si vousvoulezaller plusavantpour connaî t r ele car r édu sinusdupr ix d'un æuf , vous
pouvezenlrer

PRINT COS(OEU FSI 12\**2

Vous devezvous dire que tout ceci est très facile,maisque le prochainproblèmeva
être de savoirce que vousdevezfaire lorsquevousallezapprendreque lesæufssontpassés
à 6,10 F l a dou zaine.
Ne perdezpasde temps,entrez

LET O EUFS= 6. i0

Cette opération ne réservepas un autre espacemémoire,elle remplacel'ancienne


valeur5,80 par la nouvelle6,10. Maintenant,vouspouvezentrer

P RI NT O EUFS

en sachantque l'informationque vousallezobtenircorrespondbienau dernierprix de ce


oroduit.
Entrezmaintenant:

P RI NT LAI T

Le compte-renduque vousallez obtenir esT.2/A


et, si vousvousreportezà l'indication

31
Ch a p i t r e6 Chapit r e6

"2 " d e l' annex eB , v o u s v e rre zq u e c e c h i ffres i g n i f i e< vari abl enon trouvée> P . ui sque Nota : Danscertainesversionsdu langageBASIC,vous pouvezomettrele libelléLET et,
vo u sn e le luiav ezpasi n d i q u é l,' o rd i n a te unr ' a p a sl a moi ndrei déedupri x du l ai t. E ntrez par exemple,entrer :
ma i n tenant
O EUFS: 58

LE T LA I T: 1 .8 5 C ettepossibilit é n'exist e@ sur le 2X81. De t out eslesf açons,il ser aitext r êm em ent
difficiled'entrerce message.
e t to u t r ent r edansl' or d re . Dansd'autresversionsencore,seulslesdeux premierscaractèresd'un nom sontvérifiés.
(Entrez P arconséque ntRADI , O 3 et RADI O 33 ser aientt r ait éscom m eun seulet m êm enom ;
enfi n, dans d' a ut r esencor e,le nom d'une var iabledoit êt r e com poséd'une let t r esuivie
P RI NT LA IT d'un chiffre. Le ZXBl ne comporteaucunedes limitationsprécédentes. Toutefois,dans
d'autresversionsencoredu langageBASIC, si une variablen'est pas encoreapparueà
à n o u v eau. ) gauchede l ' i nst r uct ionLET, elle est considér ée
im plicit em entcom m eayant la valeur0.
ll n'est pas nécessaire de désignerlesvariablespar des nomsde produitsalimentaires, C ommevousl ' avezvu cidessusavecPRI NT LAI T, il n'enestpasainsidansnot r em achine.
vous pouvezutiliserdescombinaisons de lettresou de chiffresmaisle premiercaractère
d o i t to u jour sêt r e une l e ttre .Vo u s p o u v e zé g a l e m e nuti pourfaci l i terl a
t l i serdesespaces
l e ctu re,m aisils ne s ontp a sc o m p té sc o mmeu n ep a rti edu nom. Résumé
Parexemple,desvariablespeuventêtre désignées par lesnomssuivants:
V ari abl es
U N K I LO DE P O M M E S Instructi on :sLET, CLEAR
R AD I O 3
R AD I O 33
X
Exercices
K9 P
1. P ourquoil esnom sde var iables
doivent - ils par une I et t r e?
com m encer
s o n t i n te rd i ts:
s uiv a n ts
ma i sl e sex em ples

3 OU RS( c om m ence p a r u n c h i ffre ) 2. S i vous n' avezpasl'habit udede t r availleravecdespuissances ( **, H en posit ionm ajus-
TAL B O T ? ( ? n' es tn i u n e l e ttre ,n i u n c h i ffre ) cul es)fai tesl ' e xer cice.
trllElEI O I ElU E I N Oll El (ter caractèresen vidéo inverséesont i nterdits). A son ni vea uI e plusélém ent air e, 'A**B'signif ie'Am ult ipliépar lui m ém eB f ois';
JEA N- P I E RRE( le t ra i t d ' u n i o nn ' e s tn i u n e l e ttre ,n i un chi ffre). bi en évi demm entcet n'a de sensque si B est un nom br eent ier posit if .
, t e expr ession
P our trouver u ne déf init ionapplicableaux aut r esvaleur sde B, voyons m aint enantla
Entrezmaintenant règle:
** /D _L l/-\ - *
\u I u/-ô v
CLE A R ^ ^**Q ^*ta

et Vous n'avezsansdoute pas besoind'autresrenseignements pour être convaincuque


P RI NT O EU F S cette opérationest possiblelorsqueB et C sont desnombresentierspositifsmais,si nous
déci donsque cet t e opér at iondoit donnerun r ésult atexactm êm elor squeB et C ne sont
A nouveau , le compte-rendu que vousobtenezesT" 2" (Variablenon trouvée).CLEAR pasdesentierspositifs,noussommesobligésd'accepterleshypothèses suivantes:
a pour effet de libérertout l'espacemémoirequi avaitété réservépour des variableset,
par con#quent, lesvariablesse présententmaintenantcommesi ellesn'avaientjamaisété ** r^
^
. m is ehor st e n s i o nd e l ' o rd i n a te uar é g a l e m ent
d é fi n i e sLa ce résul tat,mai s,danscederni er A ** ( - B) -- 1/^**Q
ttn

ca s,l a m ac hine ne s es o u v i e n a
t b s o l u m e ndt e ri e n l o rs q u' e remi sesoustensi on.
el lest ** /'l tl /Dt
\ ul : la Bièm er acinede A
^
Un e ex pr es s ion peut c o n te n i rl e n o m d ' u n ev a ri a b l eà tous l esendroi tsauxquel speut
** /Q*a\ --\nul / ^ * * a \ * * a
fi g u re run nom br e. ^ \U U/ v

3B
Ch a p i t r e6
,i
Si vous n'avezjamaisété confrontéauparavant
à ce qui précède,ne tentezpasde vous
seulementque :
en souvenir; rappelez-vous rd. \3'
** I
^

e1
A ** nl2\ = l a ra c i n ec a rré ed e A

et, vousvous rendrezcompte plus tard que lorsquevous aurezbienassimilécettepartie,


le restevoussemblera évident.
Fa i tesm aint enantq u e l q u e se x p é ri e n c essu r c e q u i précèdeen di santà l ' ordi nateur
d 'i mp r im erdif f ér ent eesx p re s s i o ncso n te n a n*t t :
o a r e xe m ple:

PRfNT 3x*(2+0), 3**2*3*r0


PRTNT4**-1 ,114 :*

3 . En tr ez

LETE:EPX1
E a la valeur2.118281828.la basedesloqarithmes
naturels.Vérifiezla rèqle

EX P u n n o m b re : E * * l e nombre

pour d ifférentsnombres.
Chaoitre7

Chaînes
ne le peu-
L'une des opérationsque le ZX81 est capablede fairealorsque lescalculatrices
vent pasest de travaillersur du texte. Entrez

P R IN T " S ALUT, JE SUI SVO TRE zx81. " ( " est P en posit ionm ajuscules. )

La formulede politesse entreguillemetsestappeléechaîne(cequi veut dire unechaîne


de caractères). elle peut contenir le caractèrede votre choix à l'exception.duguillemetde
l a chaîne.(Maisvouspouvezut iliserla pr ét endueim agedu guillem et" " ( O en posit ion
maj uscul es)quiest écr it esousla f or m e" par une inst r uct ionPRI NT')
L'une des fautesde frappe les plus courantesdansle casdeschaînesestd'oublierl'un
desguillemets.Dansce cas,la machinevousrenvoiela marqueEl.
Si vous écrivezdesvaleursnumériques, vouspouvezutiliserdeschaînespour expliquer
la significationdesnombres.Parexemple,enTrez

LET O EUFS: 6. 1
et --iÀ rrur
---ensuite
; E U F S";F B A N CLSA D o u z A l N E . "
EST"o
" L EP R t xD E So E U F S
(N evousi nquiét ezpassi vousallezplusloir ique la f in de la ligne. )
Cette instructiondonne trois informations(lesélémentsde PRINT), à savoirla chaîne
" LË P R IX DES O EUFSEST", le nom br e 6. 1 ( la valeurde lavar iableO EUFS) et enf in
l a chaîne" FRANCSLA DO UZAINE. " En r éalit é,vouspouvezécr ir ePRI NT un nom br e
quelconqued'éléments,un nombrequelconquede chaîneset de nombres(ou d'expres-
sions), mais il ne faut pasoublier de noter que lesespaces d'une chaîneen font partieau
mêmetitre que leslettres.lls ne sont pas même
ignorés, à la fin.
Leschaînesvouspermettentde faireun grandnombrede choses.
1. Vous pouvezles affecter à des variables.Toutefois,le nom de la variabledoit être
particulierpour indiquer que sa valeurest une chaîne et non un nombre : la variable
doit être désignéepar une seulelettre suiviedu signe$ (U en posilion majuscules).
Par
exemple.entrez
LET AS : , , DEUX PLATS''
e1
PRI NT AS

2. Vous pouvezles additionner.Cette opérationest souventappeléeconcaténation, ce


qui veut dire chaînageet c'estexactementde celaqu'il s'agit.Essayez
, 'G , ' , , N
PRI NT + O BJETS''
Toutefois,vous ne pouvezsoustraire,multiplierou diviserdes chaînesni leséleverà
despuissances.

3. Vous pouvezappliquerdes fonctionsà des chaînespour obtenir des valeursnuméri-


oueset vice versa.
A')
r
Chapitre7 Chapit r e7

LEN s'appliqueà une chaîneet donne un résultatqui est sa longueur.Par exemple, Exercices
,,
L EN ', F RoM A G E : 7. 1. E ntrez
VAL s'appliqueà une chaîneet le résultatest ce que donne la chaîne lorsqu'elleest
com m euneex p re s s i oanri th m é ti q u eP. a re x e m p l e(siA : 9), V A L " 1/2+ S OR A "
é va l u é e LETA$: "2+2"
= 3.5. Si la chaîneà laquelleVAL s'appliquecontientdesvariables, deux règlesentrent et ensuite
en jeu. P RI NT A$; "=", VAL A$
(i) Si la fonction VAL fait partie d'une expressionplus importante,elle doit être en
p rem ièr epos it ion; p a r e x e mp l e ,i 0 L E T x Tentez maintenantde transformerA$ en quelquechosede plus compliquéayant la
- V A L + 7" Y " doi t être modi fi ée
p o ur dev enir10 LE T x = VA L " Y" + 7 . mêmefonction,par exemple
(ii) VAL peut seulementfigurerdansla premièrecoordonnéed'une instructionPRINT
AT, PLOT ou UNPLOT (voir leschapitres17 et 18). LET A$: , , ATN 1*4''
Exem ple: (Dansce cas,le résultatdoit être 7r.)
10 PLOT 5, VAL "X" doit être modifiéepour devenir
1 0 LE T Y : V A L" X " tt
2. La chaîne " san, caractères est appeléechaînevide ou nulle. C'est la seulechaîne
1 5 P LO T 5, Y que les espacessont comptéset qu'une chaîne
dont la longueurest 0. Souvenez-vous
STR$ s'appliqueà un nombreet le résultatest ce qui apparaîtraitsur l'écransi le nom- vide n'estpasla mêmechosequ'unechaînecontenantdesespaces... ..
bre était affichépar une instructionPRINT. ParexempleSTRS 3.5: "3.5". Attention de ne pasvous tromper et de la prendrepour l'image" " (uneseulemanæu-
vre, touche O en positionmajuscules). Cette marqueparticulièrea été conçuepour tenir
4. Commepour les nombres,vous pouvezcombinercesfonctionspour fairedesexpres- compte du fait que vous ne pouvezpasécrireun guillemetclassique de chaîneau milieu
sionsde chaînes,comme d'une chaîne (Pourquoipas ?). Lorsquecette imageapparaîÎdansune chaînecommen-
Ç antet se terminantpar un guillem et( parexem pledansla list ed'un pr ogr am m e)elle
, se
vAL (ST R$LE N " i234 5 6 " + " -4 " 1 présentesous la forme de deux symbolesguillemet pour la distinguerdu guillemet
dont l'évaluationest la suivante normal; mais,lorsqu'elleest affichéepar une instructionPRINT, elle n'estplusconstituée
qued' un symb oleguillem et .
Essayez
LEN" 123456"
vAL (STR$ +" -4"1
\-J
f PRI NT"X" , "" , "X", """" ""
VAt (STR$6. +" -4"1
Tl- 3. Si vousavezenvied'humiliervotre machine,entrez
vAL("6" +" -4"1
I-
vAL("6-4" )
PRfNT " 2+2: " :2+1

vAL"6-4"
;r.
l-
-

Résumé
Chaînes
Opération: * (pour leschaînes)
Fonctions: LEN. VAL, STRS

44
Chapitre8

de l'ordinateur
Programmation
Vous allez enfin pouvoir écrire un programmeordinateur.Mettez l'ordinateurhors
lensionpour vousassurer
tension/sous qu'il est bien remisà zéro.Maintenant,entrez

10 LETBEURRE=75 (& NEWLINE)

Surl'écran,
vousobtenez
:

= 75
10E LETBEURRE

Cettepréæntation 6; si vousentrez
decelledesOEUFSdu chapitre
estdifférente
PRINTBËURRE
vgusverrez(parle compte-rendu 2) quela variableBEURREn'apasétéétablie. (Appuyez
à nouveau surNEWLINE, l'écranvadevenirà nouveau semblableà l'illustration
ci-dessus).
t
L'instructionLET ayantun numéro(10) placédevantelle.l'ordinateur ne l'a pas
exécutéedirectement,il l'a préservéepourla suite.10 estsonnumérode ligne,il sertaux
de la mêmefaçonquelesnomsservent
citations Plusieurs
à citerlesvariables. instructions
. .l'
mémorisées de cetypesontappelées plggramme. Entrezmaintenant
I
20 PRINTBEURRE
Chapitre8 Chapitre8

Et l'écrandoit présenterlesindicationssuivantes
:
Appuyezsept fois sur la touche 0 pour amenerle curseurE à la fin de la ligneet entrez
ensuite

LEVURE (sans NEWLINE)


manæuvrer
16 LET BEURRE: 75
20 El PR|NTBEURRE
Maintenant,la lignedu basdoit être

20 P R IN T B EURRE, LEVURE
E

Appuyez sur NEWLINE et la nouvelleligne remplacel'ancienneligne20. Maintenant,


l'écrancontientlesindicationssuivantes:

10 LETBEURRÊ =75
15 LETLEVURÊ:4e
20 EI PRINTBEURRE,LEVURE
Ceciest la liste de votre programme.Pour que ce programmesoit exécuté,vousdevez
entrer
RUN (n ' o u b l i e zp a sd ' a p p u y esr u r N E W LIN E )

e t l e rés ult at75 appar a îtd a n sl e c o i n s u p é ri e ugr a u c hede l ' écran.D ansl e coi n i nféri eur
gauche,le compte-renduû120 apparaît.Commevousle savez,0veutdire "tout va bien"
e t 2 0 d és ignele numé rod e l a l i g n e à l a q u e l l es ' e s ttermi néel ' exécuti on.A ppuyezà
nouveausur NEWLINEpour faire réapparaître la liste.
Notezque lesinstructionsont été exécutées dansl'ordrede leursnuméros.
Supposonsmaintenantque vousvous rappelezenfin que vousdevezenregistrer le prix
de la levure.ll faut entrer:
Exécutez(RUN) ce programmepour provoquerl'affichagedesdeux prix.
15 LE T LEV U R E:4 0 (Voici un petit truc utile de EDIT qui vouspermetd'effacertout le basde l'écran.
Appuyez sur EDIT et la ligne en cours est sortie du programmeet mise en position
Cette opérationauraitété beaucoupplus difficile si
et cette informationest enregistrée. basse,remplaçantce que vous vouliez supprimer.Si vous appuyez maintenantsur
lesdeux premièreslignesavaientété numérotées1 et 2 au lieu de 10 et 20 (lesnuméros NEWLINE,la ligneest remisedansle programmequi n'a donc subi aucunemodification
des lignesdoivent être des nombresentiersde la fourchette 1-9999),c'est pour cette et le basde l'écranest complètement vide,à l'exceptiondu curseur.)
raisonqu'il est toujoursrecommandéà la premièreentréed'un programmede laisserdes lmaginonsmaintenantque voussoyezdistraitet que vousentriez
numéroslibresentre lesnumérosdeslignes.
Maintenant,vousdevezmodifier la ligneZ0 qui devient 12LÊT LEVURE=40

20 P RI NT BE U R R E ,L EV U R E Cette indication est ramenéedans le programmeet vous pouvezdonc réaliservotre


erreur.Poursupprimercette ligneinutile,entrez
Vous pourriezentrer la totalité des données,mais il est possibleet plus faciled'utiliser
cellesqui se trouventdéjà dansla machine.Vous voyez le petit signell à la ligne 15 ? 12 (enappuyantensuitesur NEWLINE)
C'est le curseurdu programme,il indiquela ligneen coursde ce programme.Appuyez
Vous remarquerezsansdoute que le curseurdu programmea disparu.Vous en dédui-
sur la toucheo (6 en positionmajuscules) et le curseurpasseà la ligne20. (La touche
permetde le ramenerà la positionprécédente.) Appuyezmaintenantsur la louche EDIT rez qu'il est probablementcachéentre les lignes10 et 15, et par conséquent,si vous
à la
appuyezsurô , il r em ont eà la ligne'i0 alor sque si vousappuyezsur ç, il descend
(1 en positionmajuscules),et une reproductionde la ligne20 apparaîten basde l'écran.
l i gne15.
50 tr1
Chapitre8 unapr t r eu

En fi n,ent r ez Entrezmaintenant

Lt s T i 5 3A
L'écranafflchemaintenant: Cette fois, le curseurest cachéaprèsla fin du programme; si vousappuyezsur EDIT
l a l i gne20 estd escendue.
15Ë LE T L EV U R E:4 0
2û P RI N T BE U R R E ,L EV U R E af in qu'il ét ablisse
5. Mettezune inst r uct ionLI ST dansle pr ogr am m e lui- m êm esa list
l orsqu' iest
l exé cut é.
L a l i gne10 ne s e t r o u v ep l u ss u r l ' é c ra nm
, a i se l l ee stencoredansvotreprogramme -
Vous pouvezvousen assureren appuyantà nouveausur NEWLINE. Lesseulseffetsde
L IST 1 5 s ont de pr odu i reu n e l i s teà p a rti r d e l a l i g n e15 et d' amenerl e curseurdu pro-
gra mmeà c et t em êm eli g n e1 5 .

LIST

utiliséeseulefait commencerla listeau début du programme.

Résurné
Pro gr am m es
Ed i ti ondespr ogr ammeàs l ' a i d eo , c , e t ED IT .
In str uc t ions
: RUN, L IS T

Exercices
1 . Mo d i f iezle pr ogr ammea fi n d ' o b te n i rn o n s e u l e mentl es deux pri x, mai ségal ement
desmessages précisantà quelsproduitscorrespondchaqueprix.

2. Utilisezla toucheEDIT pour changerle prix du beurre.

3. Exécutezle programmeet entrer

P RI NT B E U R R E,L E VU R E

sont encoreprésentes
Lesvariables alorsque le programmeest terminé.

4. Enirez

12 (e t N EW L IN E)

Dansce caségalement,le curseurdu programmedemeurecachéentreleslignes10 et 15.


A p p u yezm aint enants u r E D IT p o u r fa i re d e s c e n d re
l a l i gne15; l orsquel e curseurdu
programmeest cachéentre deux lignes,l'instructionEDIT fait descendre la deuxième.
Appuyezsur NEWLINE pour vider le basde l'écran.

52
Chapitre9

Continuonsla programmation
Entrez

N EW

Cette fonctioneffacelesanciensprogrammes que contientleZX81. (L'ins-


et variables
truction NEW ressemble beaucoupà CLEAR, mais cette dernièreeffaceseulementles
variables.)Maintenant,entrezle programmesuivant:

1O REM CE PRO G RAM M EEXTRAI T LES RACI NESCARRÉES


20 I NPUTA
30 PRI NTA, SO R A
4û GOTO 20
(V ousdevre zt aper vous- m êmlae plupar tdesespaces de la ligne10. )
E xécutezma int enantle pr ogr am m e.L'écr ansem blese vider et r ien ne se pr oduit ;
regardezmaintenantle curseurqui se trouve dans le coin inférieurgauche; contraire-
ment au K que vousat t endiez,le cur seurest un[ ] , ce qui veut dir e que la m achineest
passée en mode entrée.Ceciest la conséquence de l'instructionINPUT de la ligne20. La
machi neattend que vous ent r iezun nom br e ( ou une expr ession)elle , ne va plus r ien
faireavantcetteentrée.Après,vousobtiendrez

20 LET A: ... ce que vousavezindiqué

A ttenti on,et qu'estdonc devenuela ligne1A ?. ll sem bleque l'or dinat eur l'a com plè-
tement ignorée.C'estexact. REM de la ligne 10 veutdire remarqueou rappelet saseule
fonction est de vous rappelerce que fait le programme.Une instructionREM est com-
poséede R E M suivide ce que vousvoulez,m aiselleest ignor éepar la m achine.
B i en,nousso m m esdonc en m odeent r éepour la ligne20.Ent r ezun nom br equelcon-
que, 4 par exemple,et appuyezsur NEWLINE. Le chiffre 4 et sa racinecarréeapparais-
sent sur l ' écran,m ais n'en déduisezpas que t out est t er m iné.Non, la m achinesem ble
vouloir un autre nombre.Ceci résultede la ligne40 dont le contenuGOTO 20 veutdire
" allezà 20". Au lieu de terminerle programmeet de s'arrêter,l'ordinateurretourneà la
ligne 20 et recommence.Vous devezdonc entrer maintenantun autre nombre (2 par
éxempl e,mai sn'oubliezpasqu'il doit êt r eposit if ) .
A prèsquel quesexer cices vousallezsansdout evousdem ander
sim ilair es, si la m achine
ne va passe lasserde ce jeu ; n'en croyezrien.Dèsqu'ellemanifesae une nouvellefois son
côté insatiable, en demandantun autre nombre,entrezSTOP(A en positionmajuscules) ;
elle comprendratrès bien de quoi il s'agit.L'ordinateurrenvoiemaintenantle compte-
renduDl20 - regardez la signif icationdu D dansla Iistedescomptes-rendus de l'annexeB.
à
20 estla ligne laquelle elle attendait une entréelorsque vousl'avezarrêtée.
Si vousvous rappelezmaintenantd'autresnombresdont vousvoulezcalculerla racine
carrée.entrez

CONT
ChapitreI
Chapitre9

(l 'a b ré v iat ion


de CO NTIN U ER ); l ' o rd i n a te u e r ffa c el ' écranet vous demandeun autre Entrezmaintenantleslignessuivantes:
n o mb re. 1OOREM CE PRO G RAM M EM ESURELESCHAI NES
Avec CONT, l'ordinateurse souvientdu numéro de ligne figurant dans le dernier 110 I NPUTAS
compte-renduqu'il vous a transmiset qui contenaitun code autre que 0 et il sauteà 120 PRI NTAS, LENAS
cette ligne. Puisquele derniercompte-renduétait Dl2A (et que D est différent de 0) 130 G O TO 110
dansnotrecas,GONTest identiqueà GOTO20.
Entrez maintenantplusieursnombresjusqu'aumomentoù l'écranest presqueplein. tous lesdeux dans
Ce programmeest séparédu derniermaisvouspouvezlesconserver
Dès que l'écran est plein, I'ordinateurs'arrêteet vous envoiele compte-rendu5/30. la machineen mêmetemps.Pourexécuter le programme,
nouveau entrez
5 si g n if ie" éc r an plein " , e t 3 0 e s t l e n u mé rod e l ' i n structi onP R IN T que l a machi ne
tentait d'exécuterlorsqu'elles'estrenduecompte qu'il n'y avait plus de place.Entrezà R U N'I O O
nouveau Ce programmeentre une chaîneà la placed'un nombre,et écrit ensuitela chaÎneet sa
longueur.Entrez
CONT
C H AT ( et NEWLI NE.com m ed'habit ude)
pour effacerl'écranet, cettefois, continuezlesopérations. CONT signifieGOTO 30.
Puisquel'ordinateurattend une chaîne,il écrit deux guillemets de chaîne- à titre de
Notez que l'écranest effacénon pas parcequ'il s'agitd'une instructionCONT, mais
rappelet pour vouséconomiseraussi quelques manæuvres. Mais vous ne devezpasnéces-
parceque nous sommesen présence d'une commande.Touteslescommandes(à l'excep-
sairementvous limiter à des constanteschaîne (deschaînes explicites avecguillemets de
tion de COPY. dont la descriptionfigure au chapitre20) provoquentd'abord l'efface-
me n td e l' éc r an. entrecesguillemets); l'ordinateurévaluetoutesles
début et de fin et tous leurscaractères
Lorsquevous en aurez assezde ce petit jeu, arrêtezle programmeà l'aidede STOP expressions chaîne,par exemplecellescontenantdes variablesde chaîne.Dansce cas,
e t a p p uy ezs ur NE W LI N Ep o u r o b te n i rl a l i s te . vous allezpeut€tre être obligéd'effacerlesguillemetsque l'ordinateura mis sur l'écran.
R e g ar dez l' ins t r uc t i o nPR IN T d e l a l i g n e3 0 . C h a q uefoi s que l e coupl ede nombresA Essayezd'effacerles guillemets.Pour faire cette opération,appuyezsur 0 et RUBOUT
et SORA est écrit, il apparaîtsur une nouvelleligneparceque l'instructionPRINT ne se deux fois ; ensuite,entrez
te rmi n epaspar une v irg u l eo u p a r u n p o i n t v i rg u l e D P R IN T sui -
. ansce cas,l ' i nstructi on
(Par pour'insérer une ligne A$
vantecommenceà écriresur une nouvelle ligne. conséquent,
vi d e ,i l fa ut ut ilis erune i n s tru c ti o nP R IN Td a n sl a q u e l lei l n' y a ri en à écri re- c' est-à-di re pui squeA $ a encor ela valeur"CHAT", l'or dinat eurr épondencor eCHAT 4.
PRINTseulem ent . ) Entrezmaintenant
Toutefois,une instructionPRINT peut se terminer par une virguleou par un point
virguleet, dans ce cas, la prochaineinstructionPRINT poursuitl'écriturecommesi les A$
de u xn e c om pos aient qu ' u n es e u l ei n s tru c ti o nl o n g u e .
mai s,cette.foi s,sansef f acerlesguillem etdes la chaî ne.M aint enantA$ a la valeur"A$"
Parexemple,en utilisantdesvirgules,remplacez 30 par
et la réponseest 2.
30 P RI NTA, Si vous voulez utiliserSTOPpour entrer une chaîne,vousdevezd'abord remettrele
curseurau débutde la ligneà l'aidede la t ouche0.
R evenonsmaint enantà l'exem pleRUN 100 pr écédentPuisque . cet exem plepr ovo-
et exécutezle programmepour voir commentplusieursinstructionsPRINT successives à la place? Dansle
que un sautà l a ligne100 n'aur iez- vous pas pu ut G
iliser O TO 100
peuvents'écriresur la mêmelignetout en étant répartiessur deux colonnes.
cas qui nous préoccupe, il se trouve que la réponse est positive,
mais il y a quandmême
Parcontre,avecdespointsvirguleset
une différence.RUN 100 commenced'abord par effacertoutes les variables(comme
30 P RI NT A; CLEAR au chapitre6) et, apr$ cette opération,se comportecommeGOTO 10û.Par
contre, GOTO 1ûû n'effacerien. Et, il est bien possibleque dans certalnscas,vous
tous lesélémentssont rassemblés. souhaitiezexécuterun programmesanseffacerlesvariables.Dansce cas,il faut utiliser
GOTO alors que RUN pourrait avoir des conséquences désastreuses; c'est pour cette
Essayez également sur RUN pour
rai sonqu' i l ne faut pas pr endr el'habit uded'appuyeraut om at iquem ent
exécuterun programme.
30 PRINTA
59
Ch a p i t r e9 Chapitre9

Une autre différencerésidedansle fait que vous pouvezentrer RUN sansnumérode Bienentendu,X$ est une variableindéfinieet la machinevousrenvoielecompte-rendu
l i g n e tandis
, queG O T Od o i t to u j o u rsa v o i ru n n u mé ro . 21110.
Ces deux programmesse sont arrêtésparceque vous avezentré STOP sur la ligne Si vousentrezmaintenant
INPUT ; toutefois,il se peut que parfois- par erreur- vousécriviezun programmeque
vousne pouvezpasarrêteret qui ne s'arrêtepasde lui-même. LET X$ : , , O UANTI TE DEFI NI E"
Entrez
(qui comporteson proprecompte-rendu
0/01 et
2û0coTo20a
RUN 20O CONT

Ceci sembleêtre tout ce qu'il faut pour créer le mouvementperpétuelsi vous ne vousvous rendezcompteque vouspouvezutiliserX$ commedonnéed'entréesansaucun
d é b ra nc hez pas la m ac h i n e ; h e u re u s e me nit, l e x i s teun " frei n" moi ns brutal . l l suffi t probl ème.
d 'a p p uy er s ur lat ouc h e S PA C E q u i e s ts u rmo n té e del ' i ndi cati on" B R E (i A
nterrupti
K" on). Le point importantde cet exerciceestque COI\ITa le mêmeeffetqueGOTO11@. Cette
Le programmes'arrêteet lancele compte-rendu D/200. fonction ne tient pascomptedu compte-rendu ûlA à causedu code 0 et elle prendson
Au bout de chaqueligned'un programme, l'ordinateurtente de savoirsi cettetouchea numérode lignedansle compte-renduprécédent21114.Elle a été conÇuedansun esprit
été manæuvrée. Dansl'affirmative,la machines'arrête.La toucheBREAK peut également utilitaire. Si un programmes'arrêtesur une erreur,vous pouveztenter toutessortesde
ê treu ti l is éelor s quev ou se m p l o y e zl e m a g n é to p h o noeu l ' i mpri mante. manceuvrespour essayerde le remettre en état, et CONT peut néanmoinstravailler
Vo u s dis pos ezm ai n te n a n td ' u n e s é ri e i mp o rta nted' i nstructi ons- P R IN T, LE T, normalement aprèsvosopérations.
INPU T ,RUN, LI S T , G OT O,C O N T ,C L EA R , N E W e t R E M - qui , pour l a pl upart,peu-
ventêtreutiliséescommecommandes ou commelignesde programrRe - ceciestvrai pour
presquetoutes les instructionsdu BASIC. La seuleexceptionmajeureest INPUT qui ne 3. Essayezce programme:
p e u t p a sêt r e ut ilis éeco mmec o m m a n d e(l a m a c h i n evousrenvoi el e compte-rendu 8 si 1O I NPUTA$
vousessayez ; cecl résultedu fait que dansla machine,la mêmezoneest utiliséepour les
20 PRI NT A$; ": "; VAL A$
co mmandes et pour lesd o n n é e sd ' e n tré ee t q u e , p o u r une commandeIN P U T,i l y aurai t
30 G O TO 10
u n e co nf us ion)RUN,. L IST , C ON T ,C L E AR e t N E W n e sontpastrèsuti l esdansun pro-
g ra mm e,m aisil es t néa n m o i npso s s i b l d e e l e su ti l i s e r. (voi rl e chapi tre7, exer cice1. )
MettezdesPRINT supplémentaires afin que l'ordinateurprécise
ce qu'il fait et demande
la chaîned'entréeavecune grandepolitesse.
Résumé
In struc t ions
: G O T O ,C ON T , IN P U T ,N E W,R E M ,PR IN T
STOPdanslesdonnéesd'entrée 4. Êcrivezun programmed'entréede prix et d'écriturede la TVA (au taux de 15 7o).
BR E A K Dansce caségalement,mettezdes instructionsPRINT pour que la machinevousdisece
qu'ellefait. Modifiez'ensuitele programmede façon à pouvoirentrer le taux de la TVA
(pourpermettreun taux zéro ou pour calculerdesbudgetsprévisionnels).
Exercices
1. Dans le programmede calculde racinescarrées,essayez de remplacerla ligne4A par
GOTO 5, G O T O 10 ou GOT O 1 5 - c e re mp l a c e me nt nedevrai tpasprovoquerdedi ffé- 5. Ecrivezun proqrammedont la fonction serad'écrirele total courantdesnombresque
re n ceper c ept ibleà l' e x é c u ti o nd u p ro g ra mmeSi . l e numérode l i gned' une i nstructi on vousentr& . (duggest ion TO TAL - m iseà 0 au débutet UNI TE.
: ut ilisezdeux var iables
GOTO cit e une lignequ i n ' e x i s tep a s ,l e s a u ts efa i t a u profi t de l a l i gnesui vante.C eciest à
Entrez UNITE, ajoutezsa valeur TOTAL, imprimez lesdeux résultatset recommencez
v r ai pour RU N . E n ré a l i téR
é g a l e m ent , U N s a n ss u ffi x enuméri que si gni fi eR U N 0. avecun autrechiffre).

2. Exécuïezle programmede calculde longueurdeschaîneset, lorsquel'ordinateurvous


demandedesinformations.entrez par une instructionLIST)
6. Les listesautomatiques(cellesqui ne sont pas provoquées
ont pu vous étonner.Si vousentrezun programmede 50 lignescomposéexclusivement
XS (a p rè sa v o i re n l e v él e sg u i l l e mets) d'instructionsREM.

ot
Chapitre9 Chapitre9

1 RE M
Parexemple,entrez
2 RE M
3 RE M LIST
::
:: pour obtenir la liste de LIST et appuyezensuiteà nouveausur NEWLINE pour que la
49 REM ligne0 deviennela premièreligne.Sur l'écran,vousdevezavoir les lignes1 à22.Entrez
5O REM
LtsT 22
vouspourrezperfectionnervos connaissances. pour obtenirleslignes22 à 43; lorsquevousappuyezà nouveausur la toucheNEWLINE,
La premièrechosedont il faut voussouvenirest que la ligneen cours(avecEl ) apparaît courtsque
vousobtenezencoreles lignes1 à 22. Ceciest plusutile pour lesprogrammes
toujours sur l'écranet, de préférence,prèsdu centrede l'écran. pour lesprogrammes longs.
Entrez
7. Ouelleserait l'action de CONT, CLEAR et NEW dansun programme? Pouvez-vous
LIST (et NEWLINEbien entendu) pour cesinstructions?
trouverdesemoloisintéressants
appuyezune deuxièmefois sur NEWLINE. Les lignes1 à 22 doiventmaintenantêtre sur
l'écran.Entrez

23 REM

vousdevezpouvoirlire maintenantleslignes2 à 23 surl'écran; entrez

28 RE M

et vous obtenezles lignes27 à 48. (Dansles deux cas, l'entréed'une nouvellelignea


provoqué le déplacementdu curseur du programme,entraînant l'élaborationd'une
nouvelleliste).
Est-ceque ce qui précèdevous paraît un peuarbitraire? En réalité,la machineessaye
de vous donnerexactementce quevousvoulez,maislesêtreshumainsétant descréatures
imprévisibles, la machinene devinepastoujoursexactementce qu'il faut.
L'ordinateurse souvientnon seulementde la ligneen cours- cellequi doit apparaître
sur l'écran- maiségalement de la premièrelignede l'écran.Lorsqu'ilessayed'établirune
liste,il commencepar comparerla premièreligneet la ligneen cours.
Si la premièrelignesetrouveaprès,il est inutilede commencerici, et la machineutilise
donc la ligneen courscommenouvellepremièreligneet établitensuitesa liste.
Autremenl,il tente d'abordde faire la listeen commençantpar la premièreligne.Si la
ligne en coursse trouve aussisur l'écran,tout va bien; si la ligneen coursest juste en-
dessous de l'écran,il décalela premièreligned'une positionversle baset retenteson opé-
ration ; si la ligneen coursest très loin du basde l'écran,il changela premièrelignepour
qu'elledeviennela lignequi précèdela ligneen cours.
Pourvousexercerà déplacerla ligneen cours,amusez-vous à entrer

num ér ode l i g n eR E M

LIST déplacela ligneen cours,maisnon la premièreligneet, de cefait, leslisteséta-


bliesultérieurementpeuventêtre différentes.

62
Chapitre10

I nstructionI F
(st...)
Tous les programmesque nousavonsétudiésjusqu'à maintenantont été relativementpré-
visibles - ils effectuaient directement l'exécution de toutes les instructions et, dans
certainscas, revenaientparfoisà leur point de départ.Ceci n'est pastoujoursutile. En
pratique,on attend d'un ordinateurqu'il prennedes décisionset agisse en conséquence;
la machineprenddesdécisions grâceà l'instructionlF.
Remettez l'ordinateur à zéro (avec NEW) ; ensuite,entrez et exécutezle petit pro-
grammesuivantquiest trèsamusant:

10 PRINT,,JEVOUSEN RACONTE UNEDROLE''


20 INPUTA$
30 IF A$=,,NoNMERCI,,THEN
GoTo2b6
4b PRINT,'COMBIENDE PATTES
A UN CHEVAL?,,
50 INPUTPATTES
60 lF PATTES:6THENGOTO100
7A PRINT,,NON,6,
oUATREVERSL,AVA[.\T,'
,,'ET DEUXPoUR
RUER''.
80 sroP
1OOPRINT,'oUI,,'JERECoMMENCE
?,,
110 coTo 20
2OO PRINT''OK,JE NE RECOMMENCE
PAS.,'

Avantde passerà l'étudede l'instructionlF, vousdevezd'abordexaminer lesinstruc-


tionssroP de la ligne80 : une instruction sroP arrêtel'exécution du programme et
provoquele lancement du compte-rendu 9.
Commevouspouvezle voirmaintenant, uneinstruction
lF revêtla forme

lF conditionTHEN instruction

Dansd'autrescas,les instructionssont desGOTO maisellespourraientêtre différentes


et mêmeêtre d'autresinstructionslF. La conditionestquelquechosequi va être résolu
pour être confirmé ou infirmé (vrai ou faux) ; si la conditionest vérifiée,l'instruction
placégaprèsTHEN est exécutée; autrement,cette instructionest laisséede côté.
Lesconditionslesplusutilescomparentdeux nombresou deux chaînes: ellesvérifient
si les deux nombressont égauxou si I'un est plusgrandque l'autre; ellespermettentéga-
lementde vérifiersi deux chaînessontégalesou si l'une précèdeI'autreen ordrealphabé-
tique. Lesopérateursde comparaison sont lessuivants: :, (, ), (=, ):, et().
Le signe: que nous avonsutilisé deux fois dans le programme(une fois pour des
nombreset une fois pour deschaînes)veut dire égal.Ce n'est pas le mêmeque: dans
une instructionLET.

67
Chapitre10 Chapitre10

Le signe( signifie"est inférieurà", par exemple une relationAND une autrerelation


1<2 estvérifiéequandlesdeux relationssont vérifiées.
-:2(:-1
er -'3<1 une relationOR autre

vraies,mais
sontdescomparaisons estvérifiéelorsquel'unedesdeux relationsestvérifiée(ou lesdeux).

1<0 NOT relation


0<-2
est vérifiée lorsquela relation est fausseet n'est pas vérifiée lorsquela relationest vraie.
sont fausses. Les expressionslogiquespeuventêtre constituéesavecdes opérateursde comparaison
Voyons maintenantle fonctionnementde ce qui précède; écrivonsun programme ainsiqu'avecAND, oR, et Nor de la mêmefaçonque lesexpressions numériques peuvent
permettantd'entrerdes nombreset d'afficherle plus grandparmi tous ceux qui ontété être composéesde nombreset de +, -, etc ; si nécessaire, vous pouvezmêmeutiliser des
entrés. parenthèses. Les prioritésdes opérateurslogiquessont 4 pour NOT,3 pour AND et 2
pour OR .
Puisque(contrairementaux autresfonctions)NOT a une priorité relativementbasse,
1CI P RI N T ,,N OMB R E,,,L,, E PL U SG R A N DJU S OU ' AMA IN TË N A N T' ' son argumentne doit pascomporterde parenthèses saufs'il contientAND ou oR ; par
2A I NP U TA conséquent, Nor A = B signifieNor (A : B) (c'est-àdirela mêmechoseque A <> B).
3A LE T L E P L U SGR AN D :A lllustronsce qui précèdeen remettantl'ordinateurà zéroet en exécutantle program-
40 P RI N T A . L E P L U SG R AN D me suivant.
5a I NP U TA
60 I F LË PL U SG R AN D < A T H EN L ET LE P LU SGR A N D :A 1 O I NPUT FS
70 GOTO 40. 2@ I NPUTAG E
30 lF F$= "x" AND AG E<19 oR FS: "AA" AND AG E < 14
THEN PRI NT
La partieessentielle de ce programmese trouve à la ligne60 qui met à jour LE PLUS ,'NE
PAS, , ;
GRAND si son anciennevaleurétait plus petiteque le nouveaunombreA qui vient d'être 40 PRI NT, 'LAI SSERENTRER. "
entré. 50 G O TO 10
) (M en positionmajuscules) signifie"est supérieurà", c'est-àdirel'inversede(. Pour
voussouvenirduquel il s'agit,rappelez-vous que la pointe de la flèchedésignele nombre Dansce programme,FS représente la classification
d'un film -X pour lespersonnesde
qui estcenséêtre le plus petit. 18 anset pl us,AA pour les 14 anset pluset A ou U pour t ous publics; r e pr ogr am m e
(: ( R en pos it ionma j u s c u l e s -v o u s n e d e v e z p a sentrer(enuti l i santl estouches( i ndi quesi une p er sonne d'un âgedonnépeutvoir le f ilm .
et :) signifie"est inférieurou égalà" ; par conséquent, la significationest la mêmeque Enfin, nous pouvons..comparer non seulementdes nombres,maiségalementdeschaî-
cellede ( sauf que la relationdemeurevralelorsquelesdeux nombressont égaux: ainsi, nes.N ousavonsvu ": " ut ilisédans 'F$: "x"', et vouspouvezbienent enduut iliserles
21=2 estvrai, mais212 ne l'estpas. I cinq autres,(, etc.
) = (Y en positionmajuscules) signifie"est supérieurou égalà" c'est-à-dire estsem- oue si gni fie"inf é. r ieurà" pour deschaî nes? En pr em ierr ieu, cesym bole
neveutpas
t'plus
blableà ). dire court que" et c'estlà une faute à ne pascommettre.Nousavonspréciséqu'une
< > (T en positionmajuscules) signifie"est différent de" ou "n'est paségalà",c'est- chaîneest inférieureà une autre si elle la précededansl'ordre alphabétique. Exemples:
e la s ign i fi c a ti odne = .
àd i re I'inv er s de
Cessix opérateurs de comparaison ont la priorilé 5. "sMlrH " ,,SMYTHE,,
Les mathématiciens écriventhabituellement <=, )= et ( ) sousla forme()et *. "sMYTHE" "sMlrH "
lls écriventégalementdes relationscomme "2<3<4" pour désignerles relations"2(3 " BLoGGS" " BLoccs-BLAcKBERRY"
et 3<4" maisce type d'écritureest impossible en BASIC. ,,MILLE,,
"MlLLloN"
Cesrelationspeuventêtre combinéesen utilisantles opérateurslogiquesAND, OR et "TCHAlKowsKy" ,,WAGNER,,
NOT. " DoLLAR" " RouBLE"

68
Chapitre10
Chapitre'10

2. Le langageBASICs'écarteparfoisde la langueparlée.Considérons par exemplela clau-


Toutes les relationsci-dessussont vérifiées.(= signifie "est inférieur ou égal à" etc., se en languefrançaise" si A n'est paségal à B ou C". Comment feriez-vouspour écrire
commepour lesnombres. cetteclauseen BASIC? (La réponseest NON).
Nota : Danscertainesversionsdu langageBASIC - maispasdansleZX81 - l'instruction
lF peut revêtirla forme ' t FA < > B o R c ' n i ' t F A < > Bo R A < > c '
lF c ondit io nT H EN n u mé rod e l i g n e Ne vous inquiétezpassi vous ne comprenezpas lesexercices3, 4 et 5 ; lespointsqu'ils
traitent sont d'un niveaurelativementélevé.
La significationde l'instructioncidessusest la mêmeque
3. (Pourlesexperts)
lF conditionTHEN GOTO numérode ligne
Essayez

PRI NT 1=2, 11>- 2

Résumé dont, au premierabord,vous pourriezattendreune erreurde syntaxe.En réalité,en ce


Instructions: lF, STOP qui concernel'ordinateur,il n'existerien de tel qu'unevaleurlogique.
Opérations: :,1,),(:, )=, <>, AND,OR (i ) :,(,),(:,): et ( ) sont desopér at ionsbinair esàvaleur num ér iquedepr ior i-
Fonction : NOT té5.Lerésul ta t est l ( c'est - àdir evér if ié=VRAI lsilar elat ionest conf ir m éeet 0( c'es
àdi re i nfi rmé: FAUX) si ellene l'estpas.
(i i ) dans

Exercices lF conditionTHEN instruction


1. () et: sont gpposésen ce sensque NOT A:B veut dire la mêmechose
la conditionpeut être une expressionnumériquequelconque.Si sa valeurest 0, elle est
que A ( ) B
considérée commefausseet n'importequelleautrevaleurest considéréevraie.Ainsi, l'ins-
et
truction lF signifieexactementla mêmechoseque
NOT A<>B veut dire la mêmechoseque A:B
(= est le contrairede ) lF condition <> 0 THEN instruction
Essayezde vous convaincreque ): est l'opposéde ( et que
afin de pouvoir vous débarrasserde NOT placé devant une relation en transformant (iii) AND, OR et NOT sont également
desopérationsà valeurnumérique.
cette dernièreen son contraire.
Et, I
x AND y a ta vateur tiJ est non,nul(cequi veut dire vrai)
{ }
NOT (unepremièreexpression logiqueAND une deuxième) t 0 si Y est nul (cequi veut dire faux)

est la mêmechoseque
x oRY aravareur{ Li,i::liii ""'
NOT (la première)OR NOT (la deuxième),
ef EI
logiqueOR une deuxième)
NOT (unepremièreexpression Nor x a la valeur { o si x est non nul
lisixesr nul
est identiqueà
Relisezce chapitre en tenant maintenantcompte des informationscidessusafin
NOT (la première)AND NOT (la deuxième)' d'être bien sûr que tout se passebien.
Danslesexpressions X AND Y, X OR Y et NOT X, X et Y prennenthabituellemen
Grâce à ce qui précède,vous pouvez faire évoluer les NOT à l'aide de parenthèses, la valeur0 ou 1, ce qui veut dire vrai ou faux. Mettezau point dix combinaisons diffé-
jusqu'aumoment où tous lesnomss'appliquentaux relations,ce qui vouspermetde vous renteset vérifiez qu'ellesdonnent bien le résultatque vousattendezdesfonctions respec-
Ln débarrasser.Ainsi, logiquementparlant,NOT est inutile.Toutefois,NON peut néan- tivesdesopérateursAND, OR et NOT.
moinsfacilitervotre travailen améliorantla lisibilitéd'un programme.
71
IU
Chapitrel0 Chapitre10

4. Essayezle programmesuivant :
1OINPUTA$
20 INPUTB$
1O I NP UTA 30 lF A$<:B$ THENGOTO70
20 I NP UT B 4a LETC$=A$
30 P RI NT (A AN D A ):B )+ (B AN D A <B ) 50 LETA$=B$
4b GOTO 10 60 LETB$=C$
70 PRINT AS;" ";("<" ANDA$<B$)+(":"ANDA$:B$);"";B$
A chaqueexécution,le programmeécrit le plus granddes deux nombres- A et B - 80 GOTO10
Pourquoi7 le programme
6. Essayez suivant:
Essayez de vousconvaincreque vouspouvezadmettreque
1OPRINT,'X,'
XANDY 20sroP
30 PRI NT, , Y, ,
signif ie
A l'exécution,ce programmemet "X" sur l'écranen lançantle compte-rendug/20.
'X si Y (autrement,le résultatest 0) '
Entrezmaintenant
er que
CONT
XOR Y
Vous pensezpeut€tre que le programmeva se comporter comme si vous aviezécrit
t'Y"
signif ie 'GOTO 20' , donc,que la machineva s'arrêtersansmettre sur l'écran; cecine serait
pastrès utile et, pour cetteraison,la rnachineest conçuepour que à la suited'un compte
'X ou bien Y (et dansce casle résultatest 1)' renduavecle code9 (l'instructionSTOPexécutée)le numérode la lignesoit augmentéde
1 pour une i n st r uct ionCO NT. Ainsi, dansnot r eexem ple, 'CO NT'ale m êm er ôle que
Exem-
conditionnelle.
Une expressionqui contientAND et OR est appeléeexpression 'GOTO 21 ' (qui, puisqu'iln'y a aucuneligneentre20 et30, secomportecomme'GOTO
de O R :
o l e d 'u tilis at ion 3a' ]t.

L ET P RI X DE DE T A IL :PR IX MOIN ST V A* (1 .1 5O R V $ :,' P R IX H OR STA X E ,' ) 7. Plusieursversionsdu BASIC (pascelle duZX81) contiennentune instructionON de
la forme

Noter la relationentre AND et l'addition (parceque sa valeurpar défaut est 0) et la


ON expres sion G O TO ,num ér ode ligne,num ér ode ligne. . .num
num ér ique, , ér odeligne
relationentreOR et la multiplication(parceque savaleurpar défautest 1).
l
Danscette instruction,l'expression numériqueestévaluée; si la valeurde l'expression
est
'n', l'instructiona l'effet suivant

à valeurde chaîne,mais GO TO le num ér ode la nièm eliqne


5. Vous pouvezégalementécriredesexpressions
conditronnelles
seulementavecAND. P arexempl e,
x$ si Y est non nul
x$ AND y$ a la valeur {( PO URA G O TO 1t û, 200, 340, 440, 540
st Y esl nul

l'expresionveut donc dire 'X$ si Y (autrementla chaînevide)'. BASIC2X81,


Dansce cas,si A a la valeur2, 'GOTO 2bb' estexécutée.Dansle langage
Essayezensuitele programmeci-dessous dont le rôleest d'entrerdeux chaîneset de les cecipeut être remplacépar
mettreen ordrealphabétique. GOTO100*A
72
Chaoitrel0

Essayezd'imaginercommentvous pourriezutiliser l'instructionsuivantelorsqueles


numérosdeslignesne sont pasau niveaude la centaine

GOTO u ne expression
conditionnelle.
Chapit r e11

Jeu de caractères
Les lettres,chiffres, signesde ponctuationet autresqui peuventapparaîtredansleschaî-
nes sont appeléscaractères, ils constituentl'alphabetou jeu de caractères utilisépar le
ZX81 . La plupart de ces caractèressont desqy_plqlepsimplesmais certainsd'entre eux
appelésjgj6 représententdesmots complets,par exemplePRINT, STOP,**, etc.
En tout, il existe 256 caractères; chaquecaractèrea un code comprisentre 0 et 255.
La liste complète des caractères et descodescorrespondants est à l'annexeA. Deux fonc-
tions - CODE et CHR$'- permettentde passerdescodesaux caractères et descaractère
aux cooes.

CODE s'utilisesur une chaîneet donne le code du premiercaractèrede lachaîne(ou


0 si cettedernièreestvide).
CHR$ s'appliqueà un nombreet donne lo chaîneà un seulcaractère
dont le codeest
ce nomore.

Le programmesuivantimprimetout le jeu de caractères.


10 L ETA=0
20 PRINTCHR$A;
30 LETA: A+1
4A V A<256 THENGOTO 20
Le début de la liste comporteles symboles" , g, $ et ainside suitejusqu'àZ quisont
tous sur le clavieret peuventêtreentrésavecle curseur[l . Plusloin, vouspeuvezvoir les
mêmescaractèresen vidéo inversée(caractèresnoirs sur fond blanc); cescaractèrespeu-
vent également être obtenusà partir du clavier.Si vousappuyezsur la toucheGRAPHICS
(9 en position majuscules) , le curseurdevientGl; il signifiemode graphique.È-r\oq
appuyezsur la touched'un symbole,ce dernierapparaîten vidéo inversée et cetteprésen
tation se poursuitjusqu'aumomentoù vousappuyezà nouveausurGRAPH|CSousim-
pl ementsur N EWLI NE.RUBO UTa sa signif icat ion habit uelle.Veillezà nepasper dr el
curseurGparmitous lescaractères en vidéo inversée que vousvenezd'entrer.
Lorsquevousaurezfait quelquesexpériences, vousaurezquandmêmele jeu de carac
tèresen haut; s'il n'en est pas ainsi.exécutezà nouveaule programme.Au début,vous
trouverezdesespaces et dix formescomposées de marquesnoires,blanches et grises.Vous
en trouverezonze autresun peu plus loin. Cescombinaisons sontappelées symbolesgra-
phiques; lessymbolesgraphiques sont utiliséspour fairedesdessins et desschémas. Vous
pouvezles entrer par le clavieren utilisantle mode graphique(à l'exceptionde l'espac
qui est un symbolenormalavecle curseurE; le carrénoir est l'espace en vidéo inversée
Vous devezutiliserles 20 touchessur lesquelles sont écrits les symbolesgraphiques. Par
exemple,si vous voulezle symbolef,qui est sur la toucheT, il faut appuyersur GRA.
P H IC Spour ob t enirle cur seur @etappuyerensuit esur la t oucheT ( en posit ionm ajus
cules).La descriptionqui précèdedu mode GRAPHICSdoit vous donner à penserque
vous allez avoir un symboleen vidéo inversée; toutefois,T en positionmajuscules est
habituellement <>, c'est-àdireun jeton, et les jetons n'ont pasd'inverse:pour cette
raison,vousobtenezdonc le symbolegraphique[|l.

77
11
Chapitre Chapitre11

graphiques.
Voiciles22 symboles Fleportez-vousà nouveau au jeu de caractères.Les jetons constituent un groupe
Symbole Code Pour I'obtenir Symbole Code Pour I'obtenir composéde deux blocs facilesà distinguer: un petit groupe de trois (RND, INKEYS
et Pf) aprèsZ, et un groupeplus important (commençantpar l'imagedu guillemetcom-

n r
plet aprèsB et se poursuivantde AT jusqu'à COPY).
Les autres caractèressemblentêtre des "?". C'est bien sous cette forme qu'ils sont
0 Kor ll 128 GI écrits, le vrai point d'interrogation étant entre : et (. Parmi les autres,certainscorres-
SPACE SPACE pondent à des caractèresde contrôle comme 0 , EDIT et NEWLINE, tandis que les

t
qui n'ont pasde signification spécialepour le 2X81.

T
autressont réservés à descaractères
G 129 GI
1 en positionmajuscules O en posi ti on maj uscul es

tr
Résumé

GI
2 en positionmajuscules E i 30 G
W en posi ti on maj uscul es
Fonctions: CODE,CHR$

Exercices

E GI
7 en positionmajuscules E 131 GI
6 en positionmajuscules
1. lmaginezque l'espacecorrespondantau symboled'une touche soit diviseen quatre
carrés: B . Si chaquecarré peut être blanc ou noir, il y a 2*2*2*2: 16 possibilités.
Trouvez-lesdansle jeu de caractères.

il
2. lmaginezque l'espaced'un symbole soit divisé en deux partieshorizontales: ! . Si
GI
4 en positionmajuscules il 132 GI
R en positionmajuscules
chaquemoitié peut être de couleurblanche,noire ou grise,il y a donc 3*3 : 9 possibi-
lités.Trouvezcespossibilités.

tr
3. Les caractèresde l'exercice2 sont conçuspour être utilisésdans les schémasà barres

fl GI
5 en positionmajuscules
133 GI
8 en positionmajuscules
horizontalescomposésde deux couleurs,gris et noir. Ecrivezun programmeréalisant
l'entréede deux nombres{ et B (entre0 et 32) etdessinezun diagrammeà barrespour
lesdeux nombres.

E G
T en positionmajuscules H tJ l + G
Y en positionmajuscules

E GI
E en positionmajuscules
tr tJ c GI
3 en posi ti on maj uscul es

ffi G
A en positionmajuscules ffi tJ o G
H en posi ti on maj uscul es
Vous devezcommencerpar écrire "E", et changerensuitepour avoir
selonque A est m ou O ou inférieurà B.
t'8",
ou "E1",

m
Que fait votre programmesi A et B ne sont pasdes nombresentiers? Ou bien s'ils ne

G
sont pas dansI'intervalle0-32 ? Un bon programme- sympathiquepour I'utilisateurest
G 137 G l'expressionà la modequi sert à le désigner-- doit fairequelquechosede senséet d'utile.
D en positionmajuscules G en position majuscules
4. Le clavier comporte deux caractèresentièrementgris sur A et H. Si vous les regardez

H
de très près,vousverrezque celuiqui èstsur H ressernble

ffi
à un échiquierminiaturetandis
10 GI 138 G que celui qui est sur A ressemble à unéchiquierendiagonale.Et écrivezleslfun à côtéde
S en positionmajuscules F en positionmajuscules l'autre et vous verrez qu'ils ne se connectentpas correctement.Celui de A se connecte
correctementavecEl et El (sur S et D), tandis que celui de H se connectetrès bien avec
E et d (surF et G ) .

79
Chapitrei 1

5. Exécutezce programme:

1O I NP UTA
\tY
20 P RI NTGH R $A ;
30 G O T O 1 0

Si vous procédezà des expérimentations avec ce prqgramme,vous vous rendrez


co mp te que pour CHRS ,A e s t a rro n d ià l ' e n ti e rl e p l usvoi si n; et, si A n' estpasdans
0 - 255, le pr o g ra m mse' a rrê tee t l a n c el e c o m pte-rendu
l' i n te rvalle B.

6. En employantles codescorrespondant aux caractères, nouspouvonsélargirle concept


d u "cl a ss em ent alphabé ti q u e "p, o u r q u ' i l s ' a p p l i q u ea ux chaînescontenantn' i mporte
quels caractères, et pas seulementdes lettres.Si, au lieu de nous situer seulementau
n i ve a ud e l' alphabetà 26 l e ttre s n , o u su ti l i s o n sl ' a l p h a bet l e même
à 256 caractèresdans
ordre que leurs codes,le principe est exactementle même. Par exemple,les chaînes
su i va n tess ontdansl' or dr ea l p h a b é ti q udeu 2 X8 1 .
,,
Z A CHA F Y"
"Jt'
, , ( A S I DE ) "
, 123
T A X IS ER VIC E"
,,AASVOGEL"
,,AA EEMEEK"
, , Z A CHA B Y' '
"AElnlvanr"
Voici la règle.La comparaison porte d'abordsur le premiercaractère desdeux chaînes.
Si cescaractères sont différents,le codede l'un est inférieurà celuide l'autreet la chaîne
dont il est le premiercaractèreest la premièredes deux. Si les deux caractères sont les
mêmes,une comparaison est effectuéesur lescaractères suivants.Si, pendantcettesucces-
a v a ntl ' autre,el l eestconsi dérée
l' u, n ed e sc h a în e se s té p u i s é e
s i o n d e com par ais ons com-
me précédente. Autrement,ellesdoiventêtre égales.
En trezà nouv eaule p ro g ra m m e 4 d u chapi tre10 (cel uiqui entredeux
d e l ' e x e rc i c e
chaîneset lesécrit en ordre)et utilisez-lepour fairedesexpériences.

graphiquesnoirset blancsprésen-
7. Le programmesuivantremplit l'écrande caractères
tés de façonaléatoire:

10 LE TA = IN T (1 6 * R N D )
20 I F A > : B T H ENL ET A--A + 1 2 4
30 PRINTCHR$A;
40 GOTO10

(Commentce programmefonctionne-t-il?).

80
Chapitre12

Boucles
Supposonsmaintenantque vous voulez entrer cinq nombreset les additionner.L'une
des façons d'opérer (mais ne le faites pas à moins de vous considérerpuni) consisteà
écrire

10 LETTOTAL:0
20 INPUTA
30 LETTOTAL:TOTAL+A
40 INPUTA
50 LETTOTAL=TOTAL+A
60 INPUTA
7A LETTOTAL:TOTAL+A
80 INPUTA
90 LETTOTAL:TOïAL+A
1OOINPUTA
110 LETïOTAL=TOTAL+A
120 PRINTTOTAL

Cetteméthodeneconstituepasunebonnepratiqueen programmation. Elleestencore


à peu prèsacceptable pouradditionner cinq nombres,maisvouspouvezfacilement imagi-
ner le caractère d'un programme
fastidieux conçupouradditionner
similaire 10 nombres
et, s'ils'agitd'unecentaine quasiment
ou plus,la tâchedevient impossible.
ll estbeaucoup plusagréable
decalerunevariable pourqu'ellecomptejusqu'àcinqet
d'arrêterensuitele programme, commesuit (ce programme est celui que vousdevriez
entrer):

10 LETTOTAL:0
20 LETCOMPTË:1
30 INPUTA
40 REMCOMPTE:NOMBRE D,ENTREES DEA
EFFECTIVES
50 LETTOTAL: TOTAL* A
60 LET COMPTE + 1
+ COMPTE
(: 5 THENGOTO30
70 lF COMPTE
80 PRINTTOTAL

ll faut tout de suiteremarquer quril est extrêmementfacilede modifierla ligne70


pourqueceprogramme puisseadditionnerdix nombresou mêmecent'
Ce type de calculest tellementutile que deux instructions ont été conçues
spéciales
FOR et NEXT.Cesdeux instructions
oour le faciliter: les instructions sonttoujours
utiliséesensemble.Avec ces deux instructionsle programmeque vous avez entré
donneexactement le mêmerésultatque :

83
Chapitre'12 Chapitre12

10 LE T T O T A L :0 commesuit:
l'autre,
20 F O R C:1 T O 5
30 INPUT A 10 FORM:0 TO 6
40 RE M C = N O MB R ED ' EN T R E ESË F F EC TIV E SD E A 2A FORN:0 TO M boucleM
50 LE T T O T A L : T OT A L * A MAUVAIS 30 PRINTM;":";N;" "; )
60 NEXT C 40 NEXTM boucleN
B OP RI NT TOT A L 50 PRINT
60 NEXTN
(Pourobtenir ce programmeà partir du précédent,il voussuffit d'éditerleslignes20,
4û ,6 6 e t7A . T O es t4 en p o s i ti o nma j u s c u l e s .)
Deux bouclesFOR-NEXT doiventêtre soit l'une à l'intérieurde l'autre,soit complè-
Noterque COMPTEestdevenuC. La variablede comptage- ou variablede contrôle-
tement séparées. ll faut égalementéviterde sauterau milieu d'une boucleFOR-NEXT
d'uneboucleFOR-NEXT doit être désignée par un nom composéd'une seulelettre.
à partir d'un point extérieur.La variablede contrôleprendseulement une valeurcorrecte
Ce programmea pour effet que C prendsuccessivement les valeurs1 (valeurinitiale),
lorsqueson instructionFOR est exécutéeet, si vous faites une bourdeà ce niveau,la
2,3 ,4 e t 5 ( la lim it e)et q u e p o u rc h a c u n el ,e sl i g n e s 3 040
, et50 sontexécutées. E nsui te,
prochaineinstructionNEXT va jeter la machinedansla plusgrandeconfusion.Vous rece-
lorsqueC est parvenuà la fin de sescinq valeurs,la ligne80 estexécutée.
vrez sansdoute le compte-rendu d'erreur1 ou 2 (pourvousdire qu'une instructionNEXT
Ce qui précèdecomporteun autre avantagesubtil : le fait que la variablede contrôle
ne contientpasune variablede contrôlereconnue)si vousavezde la chance.
ne doit pas augmenterde 1 à chaquepas, la valeur" 1 t' peut être transforméeen une
autre valeuren util isantune partieSTEPdansl'instructionFOR. La forme la plusgénéra-
Résumé
le de l'instructionFOR est la suivante:
Instructions: FOR, NEXT,
FOR variablede contrôle: valeurinitialeTO limite STEp pas
TO, STEP
danslaquellela variablede contrôleest une seulelettreet où la valeurinitiale,la limite et
le passont desexpressions
numériques. Ainsi, si vousremplacez la ligne20 du programme Exercices
par la lignesuivante 1 . Récrivezle programmedu chapitre 11 (celui qui imprime le jeu de caractères)
en
uti l i santune boucleFO R- NEXT ( Réponse
au chapit r e13) .
2A FOR C=1 TO 5 STEP3/2

c prend les valeurs1, 2,5 et 4. Notez que vous n'êtespasobligéde vous limiter à des 2. Par oppositionà une variablenormale,une variablede contrôlen'a passeulementun
nombresentierset que la valeurde contrôle ne doit pascoïnciderexactementavecla nom à une valeur,maiségalementune limite, un paset un numérode lignepour revenir
limite - ellecontinuesa boucletant qu'elleest inférieureou égaleà la limite (exercice en arrière (la lignesuivantl'instructionFOR où elle a été établie).Vous deveztoujours
4).
Vous devezapporter une attention particulièreaux opérationslorsquevous exécutez être convaincudu fait qu'à l'exécutionde l'instructionFOR, tous ces renseignements
deux bouclesFOR-NExr, l'une dansl'autre.Essayezle programmesuivantqui impri- sont bi en di sp onibles( sansoublier d'ut iliserla valeurinit ialecom m e pr em ièr evaleur
me une sériecomplètede dominosà 6 points. prisepar la variableet, ensuiteque (enutilisantà titre d'exemples, le deuxièmeprogram-
meet le troisième)cesinformationssont suffisantes pour la conversion de la ligne
10 FORM:0 TO 6 NEXT C
20 FORN:0 TO M )
30 PRINTM;":";N;tt"; boucleN
I en deux l i gnes
4ONEXTN boucleM
50 PRINT LET C: C*1
60 NEXT M l F C( =5 THEN G O TO30
Vous pouvezvoir que la boucleN est entièrementcontenuedansla boucleM - l'em- (En réalité,nousavonsun petit peu triché, car il faudrait ici écrireGOTO 21 au lieu
boîtement des bouclesest correct. En revanche,il faut éviter que deux bouclesFOR- de GOTO 30. Cette écriture différenteaurait exactementle même résultatsur notre
NEXT se recouvrentc'est-àdireque I'une d'ellesne soit pasentièrementcontenuedans programme.

84
3. Exécutezle troisièmeprogrammeet entrezensuite:

P RI NT C \cÉ\}
Pourquoile résultatest-il6 et non 5 ?
( Ré p o n s e: l' ins t r uc t ionN E XT d e l a l i g n e6 0 e s t e x é cutée5 foi s et l a val eur" .l " est
ajoutéeà C à chaqueexécution).
Ouese passe-t-il si vousécrivezSTEP2 à la ligne20 ?

4. Mo d i fiezle t r ois ièm ep ro g ra mme d e fa ç o n à o b te n i rqu' aul i eud' addi ti onner automa-
tiquement 5 nombres,il vous demanded'entrer le nombrede nombresque vousvoulez
additionner.A l'exécutionde ce programme, que sepasse-t-il si vousenTrez0,ce qui veut
di re q u e v ousne v ouleza d d i ti o n n ear u c u nn o mb re? Pourquoipensez-vousquececi peut
provoquerdes problèmespour la machinealorsque vousprécisezexactementce que vous
vo u l e z? ( L' or dinat eurd o i t re c h e rc h elr' i n s tru c ti o nN EX T C qui , habi tuel l ement,
n' est
pasnécessaire). En réalité,tout cecia été prévu.

le programme
5. Essayez pourimprimer
suivant lesnombres
1-10 enordredécroissant.

10 FORN:10 TO 1 STEP-1
20 PRINTN
30 NEXTN

Transformezce programmeen un programmesansboucle FOR-NEXT de la même


façon que vous convertiriezle programme3 pour en faire le programme2 (voir exer-
cice2). En quoi le pasnégatifrend-illégèrement
différent?
Chapit r e13

Normaleet rapide
Le ZX81 peut travaillerà deux vitesses- normaleet rapide.A la mise soustension,
l ' ordi nateurtravailleen m ode NO RM AL, il peut simultanémentcalculeret mettre les
informationssur l'écran.Ce mode convient parfaitementpour les présentations évolu-
U V eS .
Toutefoi s,l ' or dinat eurPeut aller quatre fois plus vite ; mais, pour ce faire, il ne se
préoccupeplus de la représentation sur \ 'écr an,sauf lor squ'iln'a r ien d'aut r eà f air e.
Pourutiliserla vitesserapide,entrez
)
FAST

Maintenant,lorsquevous appuyezsur une touche, l'écran clignote - ceci résulte


du fait que l'ordinateurarrêted'afficherune imagependantqu'il se concentreunique-
ment sur la toucheque vousavezmanæuvrée.
E ntrezun progr am m e,
Parexem Ple:

10 FO R N: 0 TO 255
2O PRI NTCHR$ N;
3O NEXT N

A l'exécution,tout l'écranprend une couleurgrisâtrejusqu'àla fin du programmeoù


le résultatde l'instructionPRINT estaffichésur l'écran.
L'imageesi égalementprésentependantune instructionINPUT,pendantque l'ordina-
teur attendque vousentriez(INPUT)lesdonnées.Essayez le programmesuivant:

1OINPUTA
20 PRINTA
30 GOTO10

en modenormal( calculet af fichaggsim ult anés)ent


Pourrevenir , r ez

SLOW
Le choix du mode de travait- calculet affichagepour bien voir ce que vous faites,
ou calculseulement(moderapide)pour gagnerdu temps- estquelquechosede person-
nel, mais.de façongénérale, vousutiliserezle mode rapidelorsque
(i ) votre progr am m econt ientbeaucoupde calculsnum ér iques, en par t iculiers'il n'en
écrit pas beaucoup,bienqu'étanten modecalculet affichage,le tempsne semblepastrès
longsi vouspouvezvoir desrésultatsprésentés sur l'écranassezfréquemment,ou
(ii) vous entrez un programmelong. Vous avezdéjà remarquéque la liste est refaite
chaquefois que vousentrezune nouvellelignede programme,à la longue,cetteopération
peut être fastidieuse.
Vous pouvezutiliserdesinstructionsSLOWet FAST dansdesprogrammes, sansaucun
problème.

89
Chapitre
13

Parexemple
:
10 SLOW
2û FORN:1 TO64
30 PRINT,'A',;
40 lF N:32 THENFAST
50 NEXTN
60 coTo 10

Résumé
Instructions
: FAST,SLOW

90
Chapitre14

Sous-programmes
U pr{ieque différentespartiesde votre programmesoientchargéesd'exécuterdestravaux
fsez similaireset, de ce fait, vous êtes amenéà entrer les mêmeslignesdeux fois ou
' davantage; cette entréerépétitiveest inutile.Vous pouvezentrerleslignesune seulefois.
sousforme d'un sous-programme et, ensuite,les utiliserou lesappelerà n'importequel
autreendroitdu programmesansavoirà refaireleurentrée.
Pource faire,vousdevezutiliserlesinstructions GOSUBet RETURN.
DansGOSUBn
n est le numérode la premièrelignedu sous-programme; cetteinstructionest semblable
à GOTO n maisdansle casde GOSUBn, la machinese souvientdu numérode lignede
l'instructionGOSUBafin de pouvoir y reveniraprèsavoir exécutéle sous-programme.
Pour se souvenirde ce numéro,l'ordinateurplace le numéro de la ligne (l'adresse de
(la pile de GOSUB).
retour),en haut d'une pile d'adresses

B ETURN
prélèvele premiernumérode lignede la pile GOSUBet passeà la lignedésignée.
Premierexemple
1OPRI NT, , CECIEST LE PRO G RAM M EPRI NCI PAL''
2û cosuB1000
30 PRINT,,ENCORE''
40 GOSUB1000
TOUT,,
50 PRINT,,C'EST
60sroP
E M M ENCEI CI , '
| OO OREM , , LE SO US. PRO G RAM MCO
1O1OPRI NT "CECI EST LE SO US- PRO G RAM M E"
1O2ORETURN

L'instructionSTOP de la ligne 60 est très importanteparceque, si elle était omise,


le programmepasserait directementau sous-programme et provoqueraitune erreur7 à la
détectionde l'instructionRETURN.
Prenonsun exemplemoinstrivial et supposons que vousvoulezécrireun programme
qui doit manipulerdes livressterling,des shillinget des pence.(Le systèmeutiliséen
Grande-B retagne avant1971 ; une livr eét ait diviséeen 20 shillings( 1 shillingét aitdonc
égalà 5 pence) et un shillingétait subdiviséen 12 ancienspence.En Angleterre,l'ancien
penny était désignépar l'abréviation"d".) Lestrois variablessont L, S et D (et peut-être
d'autrescomme L1, S1, Dl , etc.) et lescalculssonttrèsfaciles.lls sont d'abordexécutés
séparément sur leslivres,lesshillinget lespence.Parexemple,pour ajouterdeux sommes,
vous ajoutez les pence,ensuiteles shillinget enfin les livre. Pour doublerun montant
quelconque,vous doublez le nombre de pence,le nombre de shillinget le nombrede
livre,etc. Lorsquetoutes cesopérationsÔnt été exécutées, il faut lesajuster,c'est-à-dire
les mettre en forme correcte,afin que le nombrede pencesoit comprisentre 0 et 11 et
le nombrede shillingentre 0 et I9. La dernièrephaseétant communeà toutes lesopé-
rations,elle peut revêtirla forme d'un sous-programme.

93
IT
I Chapitre14

It
Chapitre14

Pour le moment laissons de côté la notion de sous-programme lsolément,ceci ne sert pasà grandchosepuisqu'il n'y a pasde programmepour établir
; essayezd'écrirele pro-
gramme.Soit les nombresarbitrairesL, S et D, commentallez-vous L, S 9_tD à l'avanceet qu'il n'y a pasnon plus quelquechosepour les utiliserensuite.
lesconvertiren livres.
shillingset pence? Une partiedu problèmeest que vousallezréfléchirà descasde plus E2téz le programmeprincipal suivantet un autre sous-programme pour écrire L, S et D.
en plusbizarres.
Le premierexemplequi va sansdoute vous venir à l'espritest du genref,1..2bs..11d, ' 10 TNPUTL
que vousdevezconvertirpour obtenir f 2..6s..5d.Pastrès difficile. Maisque sepasse-t-il 20 INPUTS
dansle casde nombresnégatifs? une dettede 1,1..25s..i7dsoit f,*1..-2bs..-17d. peut 30 INPUT D
très bien devenirû-3..13s..7d,ce qui est une façon plutôt curieusede le dire (commesi 40 GOSUB 2000
les gensse prêtaientseulementdes sommesen livres).Et les fractions? Si vousdivisez 45 REM ECRI RELESVALEURS
î'1..25s..17dpar
2, vous obtenezf,0.5..12.bs..8.b.d. Bienque ce résultatdonne g,5 pour 50 PRINT
les pence,c'est-àdireentre 0 et 1 1 et 12,s pour lesshillingsc'est-àdireentre0 et 1g, il 60 PR|NT "l-[t-l =,.;
n'est pasaussibon que l'indicationt1..3s.,2.5d.Essayezmaintenantde trouvervos répon- 70 GOSUB 1000
ses à tout ce qui précèdeet utilisez-les dans un programmeavant de continuervotre 75 REM AJUSTEM ENT
lecture. 80 GOSUB 2000
85 REM ECRI RELESVALEURS
Voici une solution. 90 PRINÏ
100 GoTo 10

2OAAREM SO USPRO G RAM M ED'ECRI TUREDE L, S ET D


1OOûBEMSOUS-PROGRAMME D'AJUSTEMENT
DESL,S.DEN 201 0 PRI NT" î . " : L: " . . "; S; "S. . "; D;"D" ;
FORMENORMALE POURLESLIVRES, SHILLINGS
ET PENCE 2O2ORETURN
1010 LET D=240*L* 12*S+ D
1b2OREMMAINTENANT TOUTLE MONTANT ESTENPENCE (Rappelez-vous - chapitre9 - que I'instructionPRINT vide de la ligne50 imprime
1030LET E:SGN D unel i gnevi de).
1040LÊT D=ABSD
1O5O REMNOUSTRAVAILLONS SURD POSITIF,
ENCONSERVANT ll est bienévidentque le sous-programme d'écriturede la ligne2000 a permisde dimi-
SONSIGNEDANSE nuer la quantité de programmation; ceci constitueun emploi très commun des sous-
1û60LETS=lNT (D/12) programmes- le raccourcissement des programmes principaux.Toutefois,en réalité,le
1070LETD:(D-12*S)*E sousfrogrammed'ajustementaugmentela longueurdu programme- incidenced'une
1080LET L:lNT (S/ZA\*E GOSUBet d'une RETURN ; ainsi,il apparaîtque la longueurdes programmes n'estpas
1090LETS:S*E-20*u le seul élémentcritique.Utilisésavecintelligence, lessous-programmes peuventfaciliter
11OO RETURN la compréhension des programmes pour le participantle plus important- l'êtrehumain.
Grâceaux instructionsplus puissantes qu'il contient,le programmeprincipalest sim-
plifié : chaqueGOSUB représentedu BASIC compliqué,mais vous pouvezl'oublier,
seul le résultatcompte.Ainsi, il devientbeaucoupplus facilede comprendrela structu-
re généraledu programme.
Par ailleurs,lessous-programmes sont simplifiéspour une raisontout-à-faitdifférente,
ils sont pluscourts.lls utilisentlesinstructionsclassiquesLET et PRINT,maispuisqu'elles
ne font qu'unepartiedu travail,ellessont plusfacilesà écrire.
L'astuceæ situedansle choix du ou desniveauxauxquelsdoiventêtreécritslessous-
programmes.lls doivent être assezimportantspour avoir une incidencenotablesur le
programmeprincipal, mais demeurerassezpetits pour être plus facilesà écrire qu'un
programme complet, sanssous-programme. Les exemplessuivants (non recommandés)
illustrentce point.

95
Chapitre14 Chapitre14

D'abord, Exercices
1. Le programmedonné commeexempleest presqueun calculateuruniverseldesvaleurs
1A GOSUB 1000
L. S et D. Commentl'utiliseriez-vous ?
20 GOTO 10 (i) Pourconvertirdeslivreset desnouveauxpenceen livres,shillingset pence?
lAAA INPUT L (i i ) P ourconv er t irdesguinées( uneguinée: 1 livr e1 s. . : 21 s) en livr eset shillings
?
1014INPUT S (iii) Pourcalculerdesfractionsde livres? (parexempleun tiersde livre,soit 6s..8d.).
1024 INPUT D
Ecrivezégalementune lignepour arrondirlespenceau farthing(1/4 dl le plusproche.
1A3AP R|N T" " ;L ;" .." ;S;" S .." ;D ;" D " ;T A B 8; " =
104@LE T D = 2 4 A* L + 1 2 * S + D
: 2. Ajoutezdeux instructionsau programme:

4 LETAJUSTMENT= 1040
2OOORETURN
:2ûb6
7 LET LSDECRIRE
et ensuite et transformez
1A G O S U B 1 0 1 0 GOSUB1000 en G O SUBAJUSTEM ENT
zu) G O S U B 1 0 2 0 GOSUB20û0 en G O SUBLSD ECRI RE
30 G O S U B1 0 3 0
4A G O S U B 1 O 4 O Le résultatest exactementceluiquevousattendiez;en pratique,le numérode la ligne
d'uneGOSUB(ou de GOTO ou de RUN) peut êtreuneexpression numériquequelconque.
5A G O S U B1 0 5 0
(Attention, ceci est vrai seulementsur le ZX81 et passur d'autresmachines;n'oubliez
:
pasque le BASICdu ZX8'l n'estpasle BASICstandard).
30 GOTO10 Ce genred'opérationpeut jouer un rôle important au niveaude la lisibilitéde vos
programmes.
1O1O INPUÏL
1015RETURN
1O2O INPUTS 3. Récrivezle programmeprincipalde l'exemplepour qu'il fassequelquechosed'autre
1025RETURN tout en utilisantencorelesmêmessous-programmes.
1O3O INPUÏD
1035RETURN
1040PR| NT" ":L;"..";S;"S..";D;"D";TAB
8, ": "; 4. ... GOSUBn
1045RETURN ... RETURN
1050 LETD=24A*L+12*S+D par
peuventêtre remplacées
écritessur deslignesconsécutives
1055RETURN
.... ... G O TO n
::
P ourquoi?
Le premierprogramme et sonseulsous-programmepuissant et le second
avecsesdiffé-
rentssous-progràmmessansimportance démontrentdespointstout à fait opposés. 5. Un sous-programme peut comporterplusieurs@-d'accès. Parexemple.du fait des
Un sous-programme peutaisément en appeler
un autreou mêmes'appeler lui-même d'emploi des instructionsGOSUB par notre programmeprincipal- GOSUB
modalités
qui s'appelle
{un sous-programme lui-même est1éculenl); parconséquent,vousnedevez 10AA suivie immédiatementpar GOSUB 2û40 - nous pouvonsremplacernos deux
pasavoirpeurd'enutiliserplusieurs. par un sous-programme plus importantdont le rôle est d'ajusterL, S et
sous-programmes
D et d'écrirecesvaleurs.Cesous-programme comportedeux pointsd'accès- un au début
Résumé le
de tout sous-programme et un autre,plus loin, pour la seulepartieécriture.
Instructions RETURN
: GOSUB. Procédez aux modificationsvoulues.

96 97
Chapitre14

6. Exécutezce programme:

1O GOSUB20
20 G O S U B1 0

Les adresses de retour sont misesdans la pile de GOSUB mais elles ne sont jamais
prélevées une nouvellefois et, tôt ou tard,l'ordinateurne peut pasen mémoriserd'autres.
A cet instant,le programmes'arrêteet l'ordinateurlanceun compte-rendud'erreur4
(vo i rl 'a nnex eB ) .
Vous pouvezavoir du mal à les extrairesansperdretoutes les données,maiscette
opérationest néanmoinspossibleen procédantcommesuit :

(i ) S uppr im ezlesde u x i n s tru c ti o nG s OS U B


(i i ) In s ér ez
lesdeux n o u v e l l elsi g n e ss u i v a n te s

1. I RE T UR N
21 RE T UR N
(i i i ) Ent r ez

RE T URN

Lesadresses de retoursont"éjectées"lusqu'aumomentoù la machinelancel'erreur7.


(i v) M aint enantm, od i fi e z v o tre p ro g ra mme p o u révi terqueceti nci dentnesereprodui se.

Exp l i q u ezen dét ail.

98
Chapitre15

Pourque vosprogrammes
marchent
Pour savoir programmerles ordinateurs,il ne faut pas se contenter de connaître le rôle
de chaqueinstruction.Vous vous êtes déjà probablementrendu comptedu fait que la
plupartde vosprogrammes comportaientdesanomalies ou erreursà leur premièreentrée:
dans certainscas,il peut s'agirde simplesfautesde frappe ou d'erreursdansvotre concep-
tion de ce que le programmedoit faire. Vous pouvezimputer ceserreursà votre inexpé-
rience- il n'en est rien,vousvoustromperiezvous-même.

C H A OU EP RO G RAM M ECO M M ENCEPAR DESERREURS.

De nombreux programmesse terminent égalementpar des erreurs. Les deux corol-


laires correspondantssont : d'abord, vous deveztester tous vos programmesimmédiate-
ment et, ensuite, il est inutile de perdre votre sang-froidlorsque ceci se produit. Le
cheminement généralà suivrepeut être illustrépar un organigramme:

Testerle programme

Estce qu'il marche

Ne vousénervezpas

Corrigezet essayez
de ne pasen introduire
de nouvelles
Chapitre15 Chapit r e15

Pour utiliser l'organigrammecidessus,il suffit de suivreles flèchesreliant lesdiffé- vous aident égalementà corrigerles erreursque vous avez commisescar ils facilitent
rentes"boîtes" entre elleset de faire ce qui est écrit danschacune.Nousavonsutilisé la vérificationdes programmes.Vous vous rendrezrapidementcompte qu'il est plus
différentstypes de dessinspour lesdiverstypes d'instructions: facile de tester les sous-programmes individuellement et de vous assurerensuitequ'ils
fonctionnentbien ensemble que de faire le contrôlede tout un programmenon-structuré.
Cette représentation
C:) i n di quel e débutou l a fi n. Ainsi, les sousprogrammes vous aidentau stadede l'encadré"trouver leserreurs"et
c'est bien là que vousavezle plus besoind'aide,car ce stadeest souventle plusexaspé-
rant.Pourfacilitervotre recherche deserreurs:
Ce cadrerectangulaire désigneune instructionsimple. (i) Assurez-vousqu'il n'y a pasde fautesde frappe.Nejamaisomettrecetterecherche.
(ii) Essayezde savoirce que lesvariables doiventdevenirà chaqueétape- si possible,

Un losange

(Cesdessins
+ vousdemandede prendreune
décisionavantde continuer.

sont largementutilisés,maisils ne sont pasobligatoires.)


expliquezceci dansdes instructionsREM. Vous pouvezcontrôlerlesvariables
déterminédu programmeen insérantune instructionPRINT à cet endroit.
à un point

(iii) Si le programmepersisteà s'arrêteren lançantun compte-rendud'erreur,vous


devezutilisercette informationautant que fairese peut. Regardez le codecorrespondant
Bien sûr, les organigrammes ne conviennentpas bien pour décrire les activitésde au compte-renduet déterminezensuitepourquoi l'arrêt est intervenuà cette ligne.Si
l'homme; la réflexionen lignedroite n'est pastout à fait ce qu'il faut pour la créativité nécessaire, écrivezlesvaleursdesvariables.
ou la souplese. Par contre, cette structure convient parfaitementpour les ordinateurs. (iv) Vous pouvezégalementprogresser lignepar lignedansun progrâmmeen entrant
Elle est la mieux adaptéeà la descriptionde la structuredes programmes, lessous-pro- seslignescommedescommandes.
grammesétant inclus dans les différentslypes d'encadrés;par exemple,l'organigram- (v) Faitessemblantd'être vous-mêmel'ordinateur:exécutezle programmesur une
me illustrantle programmede conversion deslivres,desshillingset despencedu chapitre feuillede papieren notant lesvaleursdesvariables.
précédentpourrait être : Lorsquevous avezdécouvertleserreurs,leur correctionressemble beaucoupà l'écri-
ture du programmeoriginal,maisn'oubliezquand mêmepasde procéderà nouveauau
test de votre programme.ll est extrêmementfacile de corriger une erreur...et d'en
introduireune autre.

Exercices
Entréede L,Set D. 1. L'organigramme du calculateurLSD ne comportepasde cadre"fin ". Est-ceimportant?
Si vousvouliezen mettreun, où le mettriez-vous
?
2. Dessinezlesorganigrammes desprogrammes de bouclesdu chapitre12.
Ecriturede L,S et D.

rdeL.setD

Ecrituredesnouvelles
valeursde L, S et D.

Ainsi, au niveauconceptuel , les cadresrectangulaires


correspondent à des GOSUB;
en réalité,on constateque certainsencadrés- comme celui réservéà l'entréede L, S et
D - sont traduitsdirectementen instructionsBASIC,sanssous-programme.
Touteslesaides* par exemplelesorganigrammes, lessous-programmes et lesinstruc-
tions REM - qui améliorentla lisibilitéde programmesvous permettentde mieux les
comprendre; et, de ce fait, vous fêrez moins d'erreurs.De plus, les sous-programmes

102
Chapitre16

Stockagesur bandemagnétique
Commeil a été dit au chapitre1 et commevousvousen êtesindubitablement aperçupar
la suite,la misehors tensiondu ZX81 provoquela pertede tous lesprogrammes et varia-
blesque votre machinecontenait.La seulefaçonde lespréserver estde lesenregistrer sur
une bande magnétique(une cassette)par l'ordinateur;ultérieurement, vous pouvezles
remettredans la machinequi se trouve remiseà peu prèsdansle mêmeétat que celui
qu'elleavaitlorsqu'ellea fait l'enregistrement.
Le ZX81 est accompagné d'une paire de conducteurs(v du chapitrei) dont le rôle
est de connecterle ZX81 à un magnétophoneà cassette.Vous devezutiliser votre magné-
tophone,sansoublierque certainsfonctionnentmieuxque d'autres.
Pour le 2X81, lespetitsenregistreurs portatifset bon marchésontau moinsaussibons
que les puissantes machinesstéréoprovoquentd'ailleursmoinsde difficultés.Un comp-
teur est un accessoiretrès utile.
Deuxièmement,votre magnétophonedoit comporter une embased'entréepour le
micro et une embasede sortie pour le casqueou l'écouteur (s'il n'y en a pas,essayez
l'embasedu haut-parleurextérieur). Ces prisesdoivent être de préférenceprévuespour
desjacks3,5 mm (c'est-àdirepour correspondre aux jacksdesconducteurs fournis)parce
que lgsautrestypesne donnentpasun signalassezpuissantpour le 2X81.
Tôuteslescassettes doiventdonnerdesrésullatscorrects,maisil est préférable d'utiliser
desbandesà faibleniveaude bruit.
Vous disposezmaintenantd'un magnétophone corlect,il suffit de le raccorderà l'ordi-
nateur : l'un des fils doit relier l'embased'entréedu microphonede l'enregistreur et
l'embaseportant l'indication"MlC" du ZX81 et l'arftrerelierl'embasede sortiede l'écou-
teur de l'enregistreuret l'embase"EAR" du 2X81. Mêmesi vouscroisezlesconducteurs,
vous ne réussirezpasà endommagervotre ZX81l,.
Entrezun programmedansl'ordinateur.par exempleceluidu jeu de caractères du cha-
pitre 11. Pour sauvegarder un programme,il faut lui donnerun nom qu'il estsouhaitable
d'in#rer dansle programmeafin qu'il soit présentdansleslistes- le moyen le plusfacile
estd'utiliserune instructionREM.
Entrez :

5 REM "CARACTERES, ,

Maintenant,nous allonsfaire un essai"à blanc" pour voir ce qui se passe.Entrez :

SAVE ',CARACTERES,'

et observezl'écran de votre téléviseur.Pendant 5 secondesenviron, il est de couleur


grisâtre pour ensuite (pendant 6 secondesenviron) présenterune structure évolutive
de minces raies noires et blanches; enfin, l'écran devient blanc et affiche le compte-
rendu 0/6. L'ordinateur était en train de transmettreun signalà l'embase"MlC" tout
en lançant égalementle même signalau téléviseur,pour produire l'image que vous avez
vue. La partie griseétait une entrée en matièresilencieuse,tandis que la partie noire et
blanchereprésentaitle programme.

107
C h a p i t r e16 Chapit r e16

Bien entendu,ce qui vous intéressemaintenantest de mettre le signalsur la bande Pour chargerun programmedésignépar un nom
magnétique- faisonscetteopérationcorrectement' 1. Rebobinezla bandepour la remettreà l'endroitauquelvousavezcommencé.
2. Assurez-vousque l'embase"EAR" de la machineest bien connectéeà l'embasedu
casquede l'enregistreurà cassette.
Pour sauvegarderun programme
1. positionnezla bandeen un endroit du ruban qui est viergeou en un endroitque vous 3. Mettez la commandede volume du magnétophoneà environ 314 de sa puissance
êtesprêt à surcharger. maximale; si votre magnétophone est équipéde commandesde tonalité, réglez-les en
mettant les aiguesen position haute et les gravesen positionbasse(pour avoir un son
2. Utilisez le microphonepour vous enregistreren disant "caractères".Ceci n'est pas pl ussi ffl ant).
essentiel, mais cet enregistrement faciliterala recherchedu programmeultérieurement'
4. Entrez
Rebranchez l'ordinateuret !e magnétophone.
L O AD "CARACTERES"( sansappuyersur NEWLI NE)
3. Entrez
5. Mettez l'enregistreuren marche.
S A V E " CAR AC T ER ES "(s a n sa p p u y e rs u r N E W LIN E ) 6. Appuyezsur NEWLINE.
Vous allezde nouveaupouvoirobserversurl'écrandesimagesde I'enregistrement mais
en positionEnregistrement.
4. Mettezle magnétophone cettefois ellesserontdifférentes,ellesrevêtirontla forme d'unestructurenoireet blanche.
Les deux parties- le silenceet le programme- serontmoins facilesà distinguer,mais
5 . Ap p u y ezs ur NE W LI N E. vous devez quand même être capablede constater que la partie programmecomporte
des lignesplus larteset mieux définies(essayez aussià un moment quelconquede faire
6. Observezle téléviseur.Lorsqu'ila terminéson travail (compte-rendu ûlÔ1, arrêtezle
l'exercice1).
magnétophone. Après quinze secondesenviron, le chargementdoit être terminé, la machinedoit être
Pour être sûr que cesopérationsse sont bien déroulées,vousdevezmaintenantécouter arrêtéeavec le compte-renduû/0 sur l'écran.Autrei'nent,il faut appuyer sur la touche
la bandemagnétiqueau moyendu haut parleurincorporédu magnétophone (vousdevrez
BREAK (espace) pour débloquerla machine.
probablementdébrancherle conducteurde l'embaseécouteurdu magnétophone). Rebo-
Dans la plupart des cas, le problèmese situe au niveaude la commandecjevolume : le
binez la bande oour la remettre à l'endroit auquel vous avez commencé et lisez ensuite
volumedoit être :
cette bande. {i} Assezfort pour que la partie programmesoit bien reçuepar l'ordinateur.
D'abord, vous entendrezvotre propre voix disant "caractères".Ensuite.vous enten- (ii) Pastrop fort, car un excèsde puissancerisquede déformer la partie programme.
drez un ronronnement légèrementamorti. Ceci ne fait pas vraiment partie de l'enregis- (Ceciest extrêmementrare.)
trement, il s'agit de la fin du signaldestinéeau téléviseur(avantd'avoir manæuvréNEW- et (iii) Assezbaspour que la partie silencesoit reconnuecomme telle par l'ordinateur.
LINE) qui a été également transmisau magnétophone. Le meilleure réglageconsisteà agir sur la commandede volume pour la réglerà un
La partie suivanteest composéede 5 secondesde silence,le début du signaldestinéà niveau assezfort mais sans rendre bruyante la partie silencieuse; vous pouvezfaire ce
l'enregistreur.Ce silencecorrespondà la périodependantlaquellel'écranétait gris. réglageen écoutant cet enregistrementpar le haut-parleur.Si le silenceest vraiment
Ensuite,pendant6 secondes environ,vous entendrezune sériede tonalitésaiguesqui trop bruyant, il se peut que vousayezd'autresproblènres:
à plein volume, doivent être désagréablement Ceci constitue l'enregistrement
ressenties.
du programmeet correspondà la structure de lignesnoireset blanchessur le téléviseur. Certainsenregistreursforment une bouclede feedbackavecle 2X81. Ceci peut se pro-
Enfin, vous allez encoreentendrele ronronnementamorti. Si vous n'entendezpasces duire seulementlorsque les conducteursEAR et MIC sont connectéssimultanémentet,
différentesbruits, vousdevezd'abord vérifier que l'ordinateuret le magnétophoneétaient dans ce cas, le remèdeconsisteà effectuer une sauvegarde(SAVE) aprèsarcir déconnecté
bien connectés.Sur certainsenregistreurs, les prisesne donnent pas un bon contact lors- l e fi l " E A R " .
qu'ellessont enfoncéesà fond. Vous devezdonc essayerdans ce casde sortir votre prise Certainsmagnétophones peuventenregistrerle ronflement du réseauélectrique.Pour
d'un ou deux mm - il arrive que l'on puissesentir que la nouvelleposition est plus supprimerce ronflement, il suffit de lesalimenterpar despilesélectriques.
naturelle que l'ancienne. D'autresenregistreurs(en particulierlesmodèlesancienset usés)sont intrinsèquement
Supposonsmaintenant que l'enregistrementsemble bien concorder à la description bruyants.Ce problème peut être partiellementrésoluen utilisant une bandede meilleure
qualité,maisceci ne devrait pasêtre nécessaire.
ci-dessus;vousallezessayerde remettrele programmedansl'ordinateur.

108 109
Chapitre16 Chapit r e'16

Essayezausi de nettoyer la tête du magnétophone,il se peut qu'elle soit sale. le programmes'estsauvegardé, il continueà fonctionner.Vousconstaterez plustard que
Enfin, il se peut égalementque la miseen placede la prisedansl'embasedu casque le E final du mot inutile de la ligne 106 a été transformé,il est maintenantprésentéen
provoquele même problèmeque celui que nous avonsmentionnépour l'embasedu vidéoinversée, maisvousn'avezpasà vousen inquiéter.
micro. Pour procéderau chargement,rebobinezla bandepour la rameneravant le début
Si vous avez mis un programmesur bande et que vous ne vous souvenezpas de son du programmeet entrez
nom, vous pouvez quand même le charger. (Essayezavec le programme"caractères"
que vousavezutiliséauparavant.) LoAD " lNUTlLE" ( sansNEWLI NE) ,

et orocédezmaintenantà la transmission du contenu de la bandevers l'ordinateuret


appuyez ensuitesur NEWLINE. Une fois le chargementterminé, la machinecontinue
Pour chargerun pnogrammenon désignépar un nom l'exécutionà la ligne110, vousn'avezabsolumentpasà intervenir.
soit en facede la tête du Notez que I'inærtionde l'instructionSAVE à la fin du programmesignifieque pour
1. Rebobinezla cassettepour que la bandeamorcesilencieuse
l'exécutersansSAVE, il vous suffit d'entrerRUN - vous n'avezpas à contournerI'ins-
magnétophone.
truction SAVE.
2. Contrôlez tout votre équipementet réglez les commandescomme vous l'avez déjà Toutefois,vous ne devezpas lancerune sauvegarde (une instructionSAVE) de l'inté-
fait. Vous vous rendrezpeutétre compte que vous devezfaire plus attention au niveaudu rieurd'une routineGOSUB- ça ne marchepascorrectement.
volumeque lorsqueyousconnaissez le nom du programme. Ne mettez pas de caractèresen vidéo inverséedansle nom d'un programme.La partie
du nom qui se trouve aprèsle caractèreinverséseraitperdue.
3. Entrez
Le nom d'un programmene doit pasêtre composéde plus de 124 caractères.
LOAD "" (sansappuyersur NEWLINE) Le nom figurant dans LOAD ou dans SAVE ne doit pasêtre une constantechaîne,ce
peut être n'importequelleexpression du type AS ou CHRS 100.
4. Mettez le magnétophoneen marche.
5. Appuyezsur la toucheNEWLINE. Résumé
' Poursauvegarderun programmesur bandemagnétique
6. Lesautresopérationssont lesmêmesque précédemment. Pourchargerun programmedésignéà partir d'une bande
Dansce cas.le nom du programmedont vousvoulezle chargement est la chaînevide
Chargementdu premierprogrammedisponibled'une bande
et l'ordinateurchargele premierprogrammequ'il trouve. Notez égalementque lorsque
d'un programmequi réaliseralui-mêmeson chargementet son exécution.
Sauvegarde
vousSauvegardez un programme,vous ne pouvezpas le désignerpar une chaînevide; si
voustentezde le désignerpar un nom composéd'unechaînevide,l'ordinateurvoussigna- I nstructions: SAVE, LOAD
le une erreurF.
Les instructions LOAD et SAVE peuvent aussiêtre utiliséesdans des programmes. Nota
Avec SAVE, le programmese sauvegarde dans un état tel que, dès qu'il est rechargé,il Vous ne pouvezpas chargerdesprogrammesqui ont été sauvegardés sur un autre type
reprendimmédiatement l'exécutionà la lignesuivantl'instructionSAVE. d'ordinateurou sur le ZX80 avecson proprelangageBASIC.Vos programmes sauvegardés
Parexemple,entrez ne peuvent pas être chargésdans d'autres types d'ordinateursou dans le ZX80 avec le
BASIC qui lui est propre. Par contre le ZX80 utilisé avecle BASIC du ZX81 est bien
, ' IN U T IL E
5 RE M ', évidemmentcompatibleavecle ZX81 ; lesprogrammes sauvegardéssur l'unedesmachines
1OP RI NT ,,C ' E STT O U T C E O U ' IL F AIT,' peuventêtre mis dans l'autre.Si vouschargezun programmeprovenantd'un 2X80, votre
20 sToP ZX81 setrouveautomatiquement en mode rapide.
,'
1OOSAVE INUTILE',
110GOTO10
Exercices
Connectez et entrez
le magnétophone 1. Réalisezune bandecomposéede plusieursprogrammes
courts,commencezla transmis-
sionversl'ordinateuret entrez
RUN 100 (sans
appuyer surla toucheNEWLINE).
AppuyezsurNEWLINE.Lorsque
en positionenregistrement.
et mettezle magnétophone LOAD, , PASLE NO M D'UN PRO G RAM M E"

110
:
C h a p i t r e' 16

Sur le téléviseur, vous devezvoir aisémentla différenceentre lespartiesvidesde la bande


(structurerelativementfloue de blancset noirs)et lesprogrammes (lignesnettementplus ïe" \}*'
définies).Les deux structuresdiffèrentde ce que vouspouvezobserverpendantla sauve-
g a rd e .Si v ousdim inue zl e v o l u mep e n d a n tl e p a s s a ge d' un programme, vousverrezque
s ou sfo rme d e " v i d e s " d è sq u e l e si gnaldevi enttrop fai bl epourêtre
l 'i ma g es e pr és ent e
c om m eun pr o g ra mme .
i n te rp r ét é
2 . Ré a lis ez l e premi erprogramme
une bandes u r l a q u e l l eà, s o n c h a rg e me nt, i mpri meun
me n u (unelis t ede t ous l e sa u tre sp ro g ra mmedse l a b ande)qui vousdemande de choi si r
un programmeet le charge.
" C A R A C T E R E S"et entrezensui te
3 . En tr ezà nouv eaule p ro g ra mme
:l

l- E T X : 7 '
p o u r q ue - bien que c e l a n e fi g u re p a s d a n s l e p ro gramme- l ' ordi nateurconti enne
ma i n te nantune v ar iab l eX d e v a l e u r7 . S a u v e g a rd ez l e programme, mettezl ' ordi nateur
h o rs te ns ion,puis s ou ste n s i o n(p o u r ê tre s û r q u ' i l n ' y a aucunepossi bi l i té
de tri cher)
et rechargez le programme.Entrez

P RI NT X

et vousobtenezla réponse7. L'instructionSAVE n'a paspréservé seulementle program-


me ,e l l eagitégalem ensu t r to u te sl e sv a ri a b l e-s X y c o mpri s.
Si vousvoulezsauvegarder les variablesà l'exécutiondu programme,vousdevezvous
so u ve n irqu' il f aut ut ili s e rGOT O e t n o n R U N (c o m m ei l a été di t au chapi tre9). V ous
pouvezéviter d'avoir à vous souvenirde cette caractéristique en agissantde manièreà
o b te n i r que le pr ogr ammes ' e x é c u te l u i -m ê m ec, ' e s t- àdi reen empl oyantS A V E comme
l i g n ed u pr ogr am m e.
4. Entrez un programmetrès long et débranchezmomentanémentvotre alimentation.
Ce genred'incident intervientparfoisspontanément; ce n'est plus une erreur,mais un
incident. Vous ne pouvez faire qu'une chose - pleurer. Si cet incidentse reproduit
trop souvent,il y a probablementquelquechosed'anormalet il vaut mieux sauvegar-
der votre programmeincompletsur bande- par exemplequand vous en avezécrit la
mo i ti é .

112
Chapitre17

Affinons l'écriture
Vous vousrappelezque l'instructionPRINT comporteune listede rubriquesdont chacune
est une expressionlou peut-être même rien) séparéespar des virgulesou des points-
virgules.ll existedeux autrestypes de rubriquesutiliseesdansPRINT pour dire à l'ordi-
nateurnon pasce_qu'ildoit écr ir e,m aisoù le f air e.Parexem ple: PRI NT AT 11, 16; "*"
ll provoquel'affichaged'uneétoileau milieude l'écran.

AT ligne,colonne
déplacela position d'écriture(PRINT) (l'endroit auquella rubriquesuivanteva être
écrite)pour la mettre à la ligneet à la colonneprécisées.
Les lignessont numérotéesde
0 (en haut) à 21 et lescolonnesde 0 (à gauche)à 31.

TAB colonne
provoquele passage de la positiond'écriture(PRINT)à la colonneindiquée.L'écriture
u se fait à la mêmeligneou bien,si un espace arrièredoit intervenir,provoquele passage
à
la ligne suivante.Notez que l'ordinateurréduit le numéro de la colonne modulo 32
(c'est-àdire qu'il divise ce numéro par 32 et se sert du reste); par conséquentTAB 33
signifiela mêmechoseque TAB 1.

Parexemple

PRI NTTAB 30;1; TAB12; , 'CO NTEN U'';AT 3, 1; '' CHAPI TRE, ';TAB
24;" PAGE"
(Vous pourriezécrirede cettefaçon le titre d'une page"CONTENU" I étant le numé-
ro de la page).
Ouelques détails:
(i ) l l est s ouhait able r ubr iquespar despoint s- vir gulescom -
de t er m inerles nouvelles
me nous l'avonsfait cidessus.Vous pouvezutiliserdesvirgules(ou mêmene rien mettre
à la fin des instructions). maiscecivousoblige,une fois établiela positiond'écriture,à la
redéplacer immédiatement - ce qui n'estpasvraimenttrèsutile.
(ii) Bien que AT et TAB ne soientpasdesfonctions,vousdevezappuyersur la touche
de fonction (NEWLINEen positionmajuscules) pour lesobtenir.
(iii) Vous ne pouvezpasécriresur lesdeux lignesdu bas (22 et 23) de l'écranparce
qu'ellessont réservées aux commandes,aux donnéesd'entrée (INPUT), aux comptes-
rendus,etc.-L'expression "ligne du bas" veut donc habituellement dire ligne21.
(iv) Vous pouvezutiliserAT pour modifier la positiond'écriture,même lorsquequel-
que choseest déjàécrit sur l'écran; l'indicationécriteestsurchargée.
Deuxautresinstructionssont liéesà PRINT - CLS et SCROLL.
CLS effacel'écran(c'esttout).
SCROTL fait remontertout le contenu de l'écrand'une ligne (la ligne du haut est
perdue)et déplacela positiond'écriture(PRINT)qui est miseau début de la lignedu bas.

115
unaprtre| /

Pourvisualiser exécutezce programme:


cesopérations,

10 scRoLL
20 INPUTAS
30 PRINTA$
4a GOTO16
Résurné
RubriquesdePRINT: AT, TAB
: CLS.SCROLL
lnstructions

Exercices
1- Essayez ceprogramme
d',exécuter :
10 FORl:0 TO20
20 PRINTTAB8* l; l;
30 NEXTI
,:
ll vouspermetde comprendre exactement modulo32 du
cequeveutdirela réduction
numéro associé à TAB. Vouspouvez plusélégant
obtenirun exemple par
en remplaçant l
un 6 le 8 de la ligne20.
it

Chapitre18

Lesgraphiques
Passonsmaintenantà l'étude de quelques-unes des fonctions les plus élégantes du
ZXB\ ; ces fonctionsfont appel à desélémentsd'image.L'écranque vous pouvezem-
ployer est composéde 22 ligneset de 32 colonnes,c'est-à-dire 22,*32:744 positions
dont chacunecontient4 élémentsd'image.
Un élémentd'imageest caractérisé par deux valeursnumériques, sescoordonnées. La
première- la coordonnéex - précisesa position par rapport à la colonnede gauche
(rappelez-vous que X va de gaucheà droite) et la deuxième- la coordonnéey - précise
sa distancepar rapport à la lignedu bas.Généralement, lescoordonnées sontécritessous
forme de deux valeursnumériquesentre parenthèses. Exemples: (0,0) læ,41,@,43l,et
(63,43)représentent le coin inférieurde gauche,le coin inférieurde droite, le coin supé-
rieurde gaucheet le coin supérieurde droite.
L' i nstructi on

PLOT coordonnée-x,
coordonnée-y
i
met en noir lesélémentsd'imagecorrespondantaux coordonnées
alorsque l'instruction lt
UNPLOTcoordonnée-x.
coordonnée-y
provoqueleur effacement.
Essayezle programmesuivantdit programmede la "varicelle":

10 PLO T t NT ( RND*64) ,t NT ( RND*44)


20 I NPUTAS
30 G O TO 10

Ce programmeinscritsur l'écranun point aléatoirechaquefois que vousappuyezsur


N E W LIN E .
V oi ci un progr am m eplus ut ile. ll t r acela cour bede la f onct ionSI N ( unesinusoï de)
pour sesvaleursentre0 et 2zr.

i 0 FoR N: 0 TO 63
2t PLO T N, 22+20*St N ( N/ 32*Pl)
30 NEXT N

Le suivantdessinela courbede SOR (unepartiede parabole)entre0 et 4.

10 FO R N: 0TO 63
2ûPLO T N, 20*SO R( N/ 16)
30 NEXT N

Notez que les coordonnéesdes élémentsd'imagesont assezdifférentesdu numéro


de ligne et de colonned'une rubriqueAT. A la fin de ce chapitrevous trouverezun
schémaquivousaideraprobablementà déterminerlescoordonnées desélémentsd'images
ainsique lesnumérosdesligneset descolonnes.

119
t

Chapitre18
Chaoitre
18
r
Exercices
ltLbLET U:C-A
1. l l e xi s t et r ois dif f ér e n c e s e n tre l e s n o m b re s fi g u r antdansunerubri queA Tetl escoor-
lOO5REMU INDIOUELE NOMBRE DEPASA FAIRE
donnéesd'un élémentd'image; quellessont cesdifférences ?
1010LETV:D-B
Si une positiond'écriturePRINT correspondà AT L,C (ligneet colonne)démontrez
que les quatreélémentsde cette positionont lescoordonnées suivantes:Coordonnées x 1015REMV INDIOUELE NOMBRE DEPASPARCOURU
1020LÊTDiX=SGNL
2* C o u 2 *C+ l et c oor do n n é e s v2 * (2 1 -L l o u 2 * (2 1 -L ) * 1. (R eportez-vousau schéma.)
1030LETD1Y=SGNV
1035REM(DlX,D1Y)ESTUNSEULPASDANSLA DIRECTION
2. Vous pouveztransformerle programmeprécédenten un grignoteur;c'est-à-dire que DIAGONALE
l'écrandevientd'abordentièrementnoir (un carré noir est un espaceen vidéo inversée) 1040LET D2X: SGNU
et que la machineblanchit ensuitedes points aléatoires.Si vous disposezseulement 1050LETD2Y:0
d'une mémoired'1 K - la machinestandardsansmémoiresupplémentaire - vous allez 1055REM(D2X,D2YT ESTUNSEULPASA GAUCHE OUA DROITE
manquerde placedansla mémoire,et vousdevrezdonc modifierle programmepour qu'il 1064LETM=ABSU
une partiede l'écran.
utiliseseulement 107ûLET N=ABS V
1b8ûIF M>N THENGOTO1130
3. Modifiez le programmede traçagede la fonction SIN pour que, avantde dessinerla 1b90LÊTD2X:0
courbe,le programmetrace une lignehorizontalede "-" pour former l'axedesx et une 1100LET D2Y=SGNV
li g n eve rt ic alede" + " po u r l ' a x ed e sy . 1105REMMAINTENANT (D2X,D2Y)
ESTUN SEULPASVERSLE
HAUTOU LE BAS
1110LETM:ABS V
4. Ecrivezd'autres programmespour tracer d'autres fonctions comme COS, EXP, LN,
1120LETN:ABS U
ATN, INT etc. Danschaquecas,assurez-vous que le schémapeut s'inscriresur l'écran;
1130REMM ESTLE PLUSGRANDDEABSUETABSV,N ESTLE
vousdevezdonc vous assurerde ce qui suit :
PLUSPETIT
(i) sur quelleplageallez-vous faire évoluerles fonctions(cetteplagecorrespondà la
114ûLETS:lNT (M/2)
fourchetteû-2n pour la courbeSIN).
1145REMNOUSVOULONS PASSERDE (A,B)A (C,D)ENM PASPAR
(i i ) su r l' éc r an,où all e z -v o ums e ttrel ' a x ed e sx (q u icorrespond
à22 sur l a l i gne20 du
N PASVERSLE HAUT.BAS OU A DROITE-GAUCHE DE
programmede traçagede SIN).
GRANDEUR D2,ET PARM-NPASDIAGONAUX DE LONGUÊUR
(iii) commentallez-vous placerl'axe des y du dessin(correspondant à 20 sur la ligne
D1,DISTRIBUESAUSSIREGULIEREMENT OUEPOSSIBLE
2û du programme de traÇage de SIN).
1150FORl:0 TO M
Vousvousrendrezrapidementcompteque la fonctionCOSest la plusfacile,commela
1160PLOTA,B
fonctionSlN.
17b LET S: S*N
180 S<M THENGOTO1230
5. Exécutezle programmesuivant: 'F S: S- M
19 0 LET
12CI0 LETA:A*D1X
10 P LO T21 ,2 1
1210LETB=B*D1Y
20 P RI NT " GU IL L EME T SGR AS ,'
i215 REMPASDIAGONAL
30 PLOT 46,21
122bGOTO1250
PLOT fait passerà la positiond'écriture(UNPLOTégalement). 1230LETA:A*D2X
124ûLET B:B*D2Y
dessineune lignerelativement droiteentrel'élémentd'image(A,B)
1245REMPASVERSLE HAUT-BAS
OUA DROITE-GAUCHE
6. Ce sous-programme
1250NEXTI
e t l 'é l é m ent( C, D) .Ut it is e z -ldea n su n p ro g ra m m e
p ri n c i palqui donnel esval eursde A , B ,
1260RETURN
Ce tD.
(Sivousne disposezpasd'un modulede mémoiresupplémentaire, vousdevrezproba-
blementomettrelesinstructions REM).

120
121
lf

Chapitre18
Chapitrel8 :
V ou sne pouvezpasECRI RE( PRI NT) out r acer( PLO T)
La dernièrepartie (la ligne1150 et les sur lesdeux lignesdu bas.
suivantes)mélangeles M-N PASde lon- l'-ecp dc

gueurD1 régulièrement aveclesN PASde ----)
départ Lignes 5'
longueurD2. lmaginezun jeu de Mono- 4 f, 6 7 8 o @@ ! ooèo N- o@ Ô! oo à@ N-o tr
poly comportant M carrésen bord, ces
casesétant numérotéesde 0 à M-1. La \
çÀ.
casesur laquellevousêtesà un moment R ilQ

quelconqueest le numéro S, à partir du tt

1 ,.I
'lo
x oO
coin opposéà GO. Chaquejet de désvous
fait avdncerde N casesautour du jeu et, 2 E 5l
q ._o
sur la ligne droite de l'écran,vousfaites (ù
un pas de gauchedroite/ vers le haut-bas
(si vous passezsur GO du jeu) ou, autre- t1
:J
-l I

me n t,u n pasdiagonal.P u i s q u lea l o n g u e u r


Continuez,
vous avez
_: 6 :l I

totale parcouruesur le jeu est M*N pas


gagné
2O0 poinls
14 13 12
!
:t
-T I
I
ou N fois le tour du jeu, vous passezGO 0 l5
E
(D
@
N
6 I
I
N fois et, régulièrement espacés dansvos l
âl
"li
I
pasM, il y a N pasgauchedroite/haut-bas. I
tl
I
I
I
Ajustezle programmede manièreque si un autre paramètre(E) est à 1,la ligneest I

en I
dessinée en noir (commedansnotre cas)tandisque s'il est à zéro,la ligneestdessinée I
t @6
b l a n c (av ec UNP LO T ) .V o u s p o u v e z é g a l e m e n te ffa cerunel i gnequevousvenezdetracer.
t5
@6

o_.
o -
@

@ @
e

s-,
o
=: X
-
ô
Ë ( '. .

:;l Ës'
- -(D
o

!-

r\ s. N(D.

t
t,r'l
:to
-3
@o

\9 u *l o
È oN À- @ ËË Ë ; Ë g S È B
60N AO ts èÈ
-o o { @ --N N N N 3e
f @ o! @ r@ 6!
Eq ô
y
Coordonnées desélémentsd'image .--+

123
122
Chapit r e19

Tempset mouvement
Vous voudrezparfoisque le programmeait une certaineduréeet, pour l'obtenir.vous
PAUSEquiest par t iculièr em ent
pourrezuti l i serl'inst r uct ion ut ileen m oder apide:

PAUSEn

arrêtelescalculset affiche l'imagependantn tramesde la télévision(à raisonde 50 tra-


mespar secondeen Franceet de 60 aux Etats-Unis). Ce systèmepeut prendrela valeur
maxi mal e3276 7,ce qui vousdonnet out just eun peu m oinsde l l m inut es.Si n estplus
grandque 32767, l'inst r uct ionveutdir e"PAUSEpour t oujour s".
Une pausepeut toujoursêtre arrêtéeparla manæuvre d'unetouche(notezqu'un espace
ou le signef provoqueégalementune interruption).Vous devezappuyersur la touche
aprèsle commencement de la pause.
A, la fin de la pause,l'écranclignote.Si une instructionPAUSEest inséréedansun pro-
grammequi ser aexécut éen m oder apide,ou sur l'ancienZX80 équipédu m odulede m é-
PAUSEdoit êt r esuivieparPO KE 16437, 255.L'inst r uct ion
rrroi remorte8K, l'inst r uct ion
PAUSEsembleraopérercorrectementsansce complément,maisceci provoqueraproba-
blomentl'effacement de votre programme.
C e programm calcule
e l'heur eindiquéepar la gr andeaiguille( dansnot r ecas,un point
placéen bord) d'unehorloge.

5 REM DESSI NO NS L'AVANT DE L'HO RLO G E


1 0 FO RN=1 TO 12
2 0 pRt NTAT 10- 10*CO S( N/ 6*Pt ) 0+
, 1 1O *SI N( N/ 6*Pl) ; N
30 NEXT N
3 5 REM DEM ARRO NSL'HO RLO G E
4 0 FO Rr =ATO |AAAA
4 5 REMT EST LE TEM PSEN SECO NDES
50 LET A=T/3O*PI
6 0 LET SX: 2i +18*SlN A
7 A LÊT SY=22+1B*CO SA
2OOPLOTSX,SY
3OOPAUSE42
310 POKE 16437,255
320 UNPLOTSX,SY
4OONEXT T

(Vous devezmettre les instructionsREM seulementsi vousdisposezd'un modulede


rnénruiro supplémentaire.)
l.'horloges'arrêteau bout de 2 heures3/4 environà causede la ligne40 maisvous
Frnuvolaisémentla faire fonctionnerplus longtemps.Notez l'action de contrôle de la
llUrre300. Vous pouvezpenserque PAUSE 50 va faire avancerl'horlogeune fois par
ær:ondn,maislescalculsprenantun peu de temps,il faut le prévoir.La meilleuremétho-
r.lecel do procéderpar essaispour synchroniserI'horlogede l'ordinateursurune horloge

127
Ch a p i tr e19 Chapit r e19

réelleet ajusterensuitela ligne300 jusqu'aumoment où lesdeux horlogesconcordent. 1A PAUSE4AAAA


(l l e st dif f ic ile,s inon im p o s s i b l d
e e fa i re c e tte o p é ra ti ontrès préci sément;un aj uste- 2A POKE 16437,255
ment d'unetramepar secondereprésente 2 %, softune demi heurepar jour.) 30 PRINTINKEY$;
La fonction INKEYS (sansargument)lit le clavier.Si vousappuyezexactementsur 40 coTo 10
u n e to u c he( ou bien s ur l a to u c h eSH IF T e t s u r u n ea u tretouche),vousobtenezcomme
résultatle caractèreque cette touchedonnèen mode[l; autrement.le résultatest une Pour être sûrque ce programmea fonctionné,pourquoiest-ilessentiel qu'unepausene
chaÎnevide. Lescaractères de contrôlen'agissent pasde la façon habituelle,ils donnent se termine pas si elle vous trouve déjà en train d'appuyersur une touche lorsqu'elle
d e s ré sult at sc om m e c H R s 1 1 8 p o u r N E WL IN E- l e ur écri tureest de l a forme " ?" . commence?
Essayez ce programmequi opèrecommeune machineà écrire. Cette méthodea un inconvénient- l'écranclignote; toutefois,en mode rapide,c'est
la seulefaçon de faire cette opération.Exécutezce programmeen mode rapideet remar-
1O I F I NK EY $ < > " " T H ENG OT O 1 O quezque l ' ordinat eur pr of it ed'unepausepour m et t r el'im agesur l'écr an.
20 lF I NK EY $ -" " T H E NG OT O2 0
4. Celui-civa vous fairesortir de vosgonds.L'ordinateurafficheun nombreque vous (ou
30 PRINTINKEY$: toute autrevictime innocente)devezré-entrer.Pour commencer,il faut savorrque vous
40 G O T O 1 0 rJisposez d'une secondepour faire cette entrée,maisque, si vousvoustrompez,vousdis-
posezd'un temps plus long pour le nombre suivant,alors que si vous réussissez. vous
Da n scet t es équenc el a, l i g n e1 0 a tte n dq u e v o u sn ' a gi ssi ez
pl ussur l e cl avi eret l a l i gne
disposezd'un temps plus court pour la prochaineentrée. L'idée recherchée est d'aller
20 atTendque vousappuyiezsur une nouvelletouche.
uussivite que possibleet d'appuyerensuitesur la touche O pour connaîtrevotre score
Rappelez-vous que contrairementà INPUT, INKEYS ne vous attendpas.Vous n'avez * l e ol usfort est le m eilleur .
d o n c p a sà appuy ers ur N EW L IN E,m a i s ,p a r c o n tre ,s i vousn' avezri enentré,vousavez
ratéune possibilité. 1OLETT:50
Exercices 15 REMT:NOMBRE
DETRAMESPARcO-INITIALLEMENT
50
1 . Ou e s epas s e- t -sili v ou sra te zl a l i g n e1 0 d a n sl e p ro g r amme PAR SECO NDE
machi neà écri re?
2A SCROLL
2. Pourquoine pouvez-vous pas entrer un espaceou f, dans le programmemachineà 30 LETA$: CHR$ I NT ( RND- 10+CO DE"0")
écrire? 35 REM A$ ESTUN NO M BREALEATO I RE
Vo i ci un pr ogr am m em o d i fi éq u i v o u sd o n n eu n e s pacesi vousappuyez
sur l a touche 4A PRINTA$
de déplacement du curseurversla droite (8 en positionmajuscules). 45 PAUSET
5A POKE16437,255
1O iF I Î ' I K E Y$ < > " " T H ENGOT O 1 O 60 LET B$=INKEY$
20 lF INKEY$="" THEN GOTO 20 70 lF B$="O " THENG O TO200
30 LE TA $ :IN K EY $ 8A I F A$: B$ THENG O TO 150
a0 lF A $= C H R $11 5 T H E NG OT O 11 0 9A PRI NT" RATE, '
90 PRINTA$; 1AA LETT=T* 1. 1
100 G oT o 1 0 11 4 GOTO 20
110 P RI NT" " ; 154 PRI NT"O K"
12A GOTO 1A 16 0 LETT: T*0. 9
17 4 GOTO 20
No te zde quellem ani è ren o u sm e tto n sIN K EY $ d a n sA $ dansl a l i gne30. l l est i mpos- 2AA SCROLL
si b l ed e r at erc et t eopér a ti o ne t d e re m p l a c eAr $ p a r IN K E yS aux l i gnes40et90, mai s 21 4 PRI NT ''VO TRESCO REEST, , ; I NT ( 5O O / T)
il y a toujoursle risqueque INKEYS puissechangerentredeux lignes.
Co mplét ezla pr ogr am m a ti odne m a n i è req u e l a ma n æ uvrede N E W LIN E(C H R S119)
vo u sd o nneune nouv ellel i g n e . b, (Seulementsi vous disposezd'un module de mémoiresupplémentaire.) Vous devez
utl l i serl a routinelinéair edu chapit r e15 pour m odif ier le pr ogr am m ede la deuxièm e
3. Une autre façon d'utiliser INKEY$ est en association
avecPAUSEcommedanscet al gui l l ede l ' hor loge,af in que ce pr ogr am m e - celledesheur eset
af f ichedeux aiguilles
autreprogrammemachineà écrire. collesde minutes- et les dessine chaqueminute.(Vousdevezrendrel'aiguilledesheures

128 129
plus courte.)Si vousêtesambitieux,faitesle nécessaire pour que tous lesquartsd'heure
la ma ch i n ef as s equelquec h o s ed e p a rti c u l i e r.
6. Pourvousamuser,essayez
la séquence
suivante:
10 lF I NK E Y $= " " T H E NG OT O 1 0
20 P RI NT AT 1 1 ,1 4 ;" A tE"
30 I F I NK E Y $ < > " " T H E NG OT O3 0
40 P RI NTA T ,11.1 4 :
50 coTo 10

't,:
l
:
-l
Chapitre20

L'imprimantede l'ordinateurZX81
Si vousavezune imprimanteZXBl, elleestaccompagnée de sesconsignes d'utilisation.Ce
chapitreest consacréaux principalesinstructionsBASICqui permettentde la fairefonc-
ti onner.
Lesdeux premières - LPRINT et LLIST - sont semblables à PRINT et LIST avecune
différencenéanmoins, ellesutilisentl'imprimanteà la placedutéléviseur.(La lettre L est
un accidenthistorique.Lorsquele langage BASICa été inventé,il actionnaitgénéralement
une machineà écrire électriqueà la placed'un téléviseuret, pour cette raison,PRINT
voulait véritablementdire imprimer. Si vous aviezvoulu à cette époquedes résultats
i mpri mési mpo r t ant s,vous aur iez ut ilisé une im pr im ant er apide,im pr im antlignepar
ligne,connectéeà l'ordinateuret une instructionLPRINTvoulantdire en langueanglaise
" Ii ne pri nterP RI NT". )
Parexemple,essayez ce programme:

10 LPRI NT, , CEPRO G RAM M E : , '. . .


20 LLI ST
3û LPRI NT, , , 'ECRI T
LE JEU DE CARACTERES,. .' .
40 FO R N: 0 TO 255
50 LPRI NTCHR$ N ;
6û NEXT N

La troisièmeinstructionCOPY écrit une copie du contenu de l'écrandu téléviseur.


Parexemple,mettezsur l'écranla listedu programmeci-dessus
et entrezensuite:
COPY

Vous pouveztoujoursarrêterl'imprimanteen appuyantsurla toucheBREAK (espace).


Si vousexécutezces instructionssansconnecterl'imprimante,vous allezperdrevotre
sortieet passerà l'instructionsuivante.Toutefois,il se peut qu'un blocageintervienne
et,
dansce cas,la toucheBREAK permetde revenirà l'état normal.
R6sumé
Instructi ons
: LPRI NT,LLI ST,CO PY
Nota : Aucune des instructionsci-dessus ne figure dans le BASIC standard,bien que
LPRINT soit parfoisutiliséedansd'autresordinareurs.

Exercices
i. Essayezce programme:
10 FO RN: 31 TO 0 STEP- 1
20 LPRI NTAT 31- N, N, CHR$( CO DE"0"+N) ;
30 NEXT N
Vous verrezapparaîtreune sériede lettresprésentées diagonalementà partir du coin
supérieurde droite et jusqu'aubasde l'écran; ensuite,le programmes'arrêteet lancele
compte-rendu 5.

IJJ
Chaoitre20

Tra n s f or m ezm aint en a n t' A T 3 1 -N ,N ' d e l a l i g n e2 0 en ' TA B N ' . Le programme


résultanta exactementle mêmeeffet que le précédent.
TransformezmaintenantPRINT de la ligne20 en LPRINT.Cettefois, lecompte-rendu
d'erreur5 n'est paslancé (il ne doit pas interveniravecl'imprimante)et la forme précé-
denteva contenirdix lignessupplémentaires composées de chiffres.
m aint en a n 'tT AB N ' e n ' A T 2 1 -N ,N ' e n uti l i santLP R IN T.C ettefoi s,
Tra n s f or m ez
vo u so b tenez unes eule l i g n e d e s y m b o Ll easd. i ffé re n c erésul tedufai tquel asorti ecausée
par LPRINT n'est pasécritedirectement,elle est misedansun bulfer qui conserveune
ima g ed 'u ne lignede lon g u e u rc o m p o s é ed e c e q u e l ' o rdi nateurva i mpri merl orsquel e
momentestvenude fairecetteopération.L'impression a lieu :

(i ) L or s quele t am po ne s t p l e i n ,
(i i ) Ap r ès une ins t r u c ti o nL P R IN T q u i n e s e te rmi nepaspar une vi rgul eou par un
p o i n tvi rgule,
v ir gu l eo u u n e ru b ri q u ed e T A B e x i g eune nouvel l el i gne,ou
(i i i ) L or s qu' une
(iv) A la fin du programme, s'il resteencoredesdonnéesà imprimer.
(iii) Nous allons vous expliquer maintenantpourquoi notre programmeavec ÏAB
opère comme il le falt. Commepour AT, le numérode la ligneest ignoréet la position
LPR INT ( c om m ela pos i ti o nPR IN T m a i sp o u r l ' i mp ri m ante et non pour l e tél évi seur)
est
transforméeen numérode colonne.Une rubriqueAT ne provoquejamaisla transmission
d 'u n el i g neà l' im pr im an te(E . n ré a l i té ,l en u mé rod e l i g n eécri taprèsA T n' estpasenti ère-
ment ignoré; il doit être comprisdansl'intervalle-21 l-121 ; si cet intervallen'est pas
respecté,l'ordinateurlanceun message d'erreur.C'estpour cetteraisonqu'il est toujours
p l u s sû r de s péc if ierla l i g n e 0 . L a ru b ri q u e ' A T 2 1 -N ,N ' de l a versi onfi nal ede notre
programmeserait préférable- mais moins informative- si elle était remplacéepar
'AT 0 , N ' . ) .
2. Faitesun schémaimpriméde la fonction SIN en exécutantle programmedu chapltre
18 et en employantensuiteCOPY.

IJI
Chapit r e21

Les sous-chaînes
Si nouspartonsd'unechaîne,une sous-chaîne estcomposée de plusieurscaractèresconsé-
cuti fs de ce' ttechaî nedans leur or dr e init ial.Ainsi "CHAI NEt ' est une sous- chaî ne
de
" cH A l N E LoNG UE", m ais"B ABC" et "BoRD FRANC" ne sontpasliées.
U ne notati o npar t iculièr ele découpage per m etde décr ir elessous- chaî nes,
elle peut
ôtreappl i quée aux expr essions For m atqénér al:
chaî near bit r air es.

chaî ne( débutTO f in)


expr ession

de sorteque,par exem ple:

" A BCDEF" ( 2To 5) : "BCDE"

Si vous omettez 'début', la valeur implicite correspondante est 1 ; sr vous omettez


' fi n' , l a val euri m plicit eestcellede la longueurde la chaî ne.Ainsi :

" A BCDEF"( TO 5) , , ABCDEF"


( 1 TO 5) "ABCDE"
,,ABCDEF" ( 2 TO ) , , ABCDEF" , , BCDEF"
( 2 TO 6)
,,ABCDEF"
{ TO ) : "ABCDEF"( 1 TO 6) : "ABCDEF"

(l a derni èrepeut égalem ents'écr ir e"ABCDEF" 0, si t out ef oiscelavautquelquechose. )


U neforme l ég èr em ent
dif f ér ent eévit ed'ut iliserTO et ne com pof t equ'unseulnom br e:

" A BCDEF" ( 3) : "ABCDEF" ( 3 To 3l : " c"

B i enque déb utet f in doiventhabit uellem ent cit er des par t iesexist ant es
de la chaî ne,
cette rêgleest outrepassée par une autre : si le début setrouveau-delàde la fin. le résultat
cst unechaînevide.Ainsi :

" A BCDEF" ( b r o 7)
(l onnel e compte - r endu
d'er r eur3 ( er r eurd'indice)par ceque la chaî necont ient
seulem ent
(j caractèreset que 7 est au-delàde cettevaleurmais

"ABCDEF"(gro7\:" "

" A BCDEF" ( 1

Le débutet l a f in ne doiventjam aisêt r enégat if;saut r em entla


, m achinelancel'er r eurB.
Le programmesuivanta pour rôle de rendreB$ égalà A$ en omettantlesespaces
de
f i n.
Chapitre21
Chapitre21

1OI NP UTA $
20 FORN=LEN A$ TO 1 STEP-1 Les expressions
chaînescompliquéesdoivent être misesentre parenthèses
avant d'être
30 tF A$(N)<>" " THEN GOTO 50 découpées.Parexemple:
40 NEXT l.r
50 LET B$:A$( TO N) ,,ABC" "DEF"( 1 , , ABCDE"
+ TO 2) :
60 pRt NT" " " " ,A$ ,"" " " ," " ' , " .8 9 . " " " " X1 2) : "AB"
(,, 48C, , +, , DEF, , TO
70 G O T O 1 0

Résumé
Notez que si A$ est composéuniquementd'espaces, à la ligne50 nousavonsN :0 Découpage
avecTO. Notezque cettenotationn'estpasstandard.
e r A$ (TO =
N) A $ ll T O 0 l :" " .
Pour lesvariableschaîne,nous pouvonsnon seulement mais
extrairedessous-chaînes,
procéderà desaffectations. Exercices
également Parexemple,entrez
BASI C ( m aispasceluidu ZX81) ont desf onct ionsappelées
l . C ertai nsl angages LEFT$,
R l GH TS ,Ml D $ et TLS.
LETA$ =,'LAUREAIMEUN CANARD'' LEFT$ (AS,N)donnela sous-chaîne de A$ composée desN premierscaractères.
et ensuite R IGH TS(A $, N)donnela sous- chaî nedeA$ com poséedescar act èrpar
esàt ir duNièm e.
t'****+*tt
L ET AS (5 TO 8) - MIDS (AS,N1,N2) donnela sous-chaîne de A$ composée de N2 caractères à partir du
eï N 1ème.
PRINT AS TLS (AS)donnela sous-chaîne de A$ composée de toussescaractèresà l'exceptiondu
premi er.
comment écririez-vous ce qui précèdeen BASICzx81 ; est-ceque vos réponses pour-
Remarquezque puisquela sous-chaîne AS (5 TO 8) contientseulement4 caractères,
raientopérersur deschaînesde longueurA ou 1 ?
seulesles quatrepremièresétoilesont été utilisées.Ceciest une caractéristique de l'affec-
tation dessouschaînes: la sous-chaîne doit avoir aprèsl'opérationexactementla même 2. Essayez
cettesuitede commanoes:
longueurqu'avantcelleci. Pour être sûr que ceci se produit bien,la chaînepour laquelle
l'affectationintervientest coupéesur la droite si elle esttrop longue,ou remplied'espaces LETAS: "X*+*Y'
si elle est trop courte - ceci s'appellel'affectationde Procrustre; elle a été nomméedu LETA$( 2) : CHR$11 (le caractère
guillemetde chaîne)
nom de l'aubergiste Procrustequi s'assurait que seshôtesétaientbien de la mêmetaille LETA$( 4) : CHR$11
que leur lit, soit en les raccourcissant en leur coupantles pieds,soit encoreen lesallon- PRINTAS
geantavecun instrumentde torture.
Si vousessayezmaintenant A$ est maintenantune chaÎnecontenantdesguillemetsde chaîne! Bienentendu,rien
,,C O R ne vousempêchede faire cette opérationsi vous persévérez
assezlongtemps,mais,bien
LE T A $ ( } : B L IM EY ,,
A1
évidemment,
si vousaviezinitialemententré :
P RI NTA $; " ." LET A$: "X" +'yu
vous verrezque la mêmechosese reproduit (cettefois avecune insertiond'espaces)
parce la partie situéeà droite du signalégalauraitété traitéecommeune expression,
donnantà
que A$ 0 estcomptécommeune souschaîne. A $ l a val eur" xY" .
Entrezmaintenant:
LE T A $: , , C O R BL IME Y,,
LET B$: "X't n +nilyn
fait le travail correctement.
Le découpagepeut être considérécommeayant la priorité 12 ; par conséquent: Vous vous rendrezcompte que mêmesi A$ et B$ ont le mêmeaspectlorsqu'elles
sont
écrites,ellesne sont paségales- essayez
LE N " A B C D E F " 1 2T O b ) : L EN (" AB C D E F" (2 TO b)) :4
P RI NTA$: B$
Ch a p i tre21

Al o rs que B S c ont ien ts i mp l e m e ndt e sc a ra c tè reismagegui l l emet{avecl e code192),


A$ co n tientde v ér it ablecsa ra c tè regsu i l l e medt e c h a în e(code1' 1). *_î

c e pr ogr am m e
3. Ëxé cu t ez :

1OLE TA $ : " L E N " " A BC D " "' '


100P RI NTA$ ;" : " ;V AL A $

Ce p r ogr am m ees t f a u x p a rc eq u e VA L n e tra i te p a sl ' i magede gui l l emet" " comme


u n g u i l l e m etde c haî ne.
Aj o u tezdesligness up p l é m e n ta i re e ns tre 1 A e t 1 û A p our rempl acer
l esi mages de gui l -
leme td e A $ par desgui l l e me ts d e c h a în e(q u ev o u sd e vezappel erC H R S11) et essayez
à n o u veau.
Fa i tesle m êm et y pe d e mo d i fi c a ti o ns u r l e p ro g ra mme du chapi tre9, exerci ce3, et
f ai te se n suit edesex pér ime n ta ti o na sv e cc e p ro g ra mme .

4 . Ce sous - pr ogr am m
sue p p ri m eto u te sl e s a p p a ri ti o n sde l a chaîne" C A R l H A GO" de
A$ .

1000F O RN :1 T O L E NA $ -7
1O 2AE A $(NT O N + 7 ):" C AR T H A G O"T H E NLE T
A $( NT O N+ 7 ):
1O 3O NE X T N
1O 4O RE T U R N

Ecri v ezun pr ogr am m e v a l e u rsà A $ (parexempl e" D E LE N D A E S T


d o n n a n tp l u s i e u rs
|
CAR IHA^ G O
^^lllt '
) et qui ut i l i s el e s o u s -p ro g ra mme .
ChapiTre22

Tableaux
Supposons que vous disposiezmaintenantd'une liste de nombresparexemplele nombre
de percepteurs décédéschaqueannéependantl'annéefiscaleen cours.Pour les mettre
dans l'ordinateur,vous pourriezétablir une seulevariablepour chaquemois maisceci
serai ltrèscompliqué.Vous pour r iezdéciderd'appelerlesvar iables HELAS PLUS DE 1,
', 12,
m aisle pr ogr am m equi per m et -
H E LA S P LU S DE 2, et c. jusqu'àHELAS PLUS DE
trait d'écrirecesdouzenombresseraitlong et ennuyeuxà entrer.llserait beaucoupplus
agréable d'entrerle programmesuivant:

5 REM CE PRO G RAM M ENE VA PASM ARCHER


10 FO R N: l TO 12
20 PRI NT HELASPLUSDE N
30 NEXT N

Mai sc' esti m oossible.


Voici maintenantun mécanisme qui vouspermetd'utilisercette idéeen employantdes
tableaux.Un tableauest composéd'une sériede variables, seséléments.portant tous le
68fr-e nom et distingués par
seulement un numéro (l'indice)écrit entre parenthèses
après
le nom. Dans notre exemple; le nom seraitA (comme lesvariablesde contrôle desboucles
FOR-NEXT. le nom d'un tableaudoit être composéd'une seulelettre) et les douze
serai ent
vari abl es alor sA( 1l, ,A( 2\ , et c.jusqu'àA( 12t , .
Lesélémentsd'un tableausont appelésvariablesindicéespar oppositionaux variables
simplesque vous connaissez déjà. Avant d'utiliserun tableau,vousdevezlui réærverde
i'espacedansI'ordinateuren utilisantune instructionDIM (l'abréviation de dimensions)'

Dt M A( 12)

établit un tableauappeléA de dimension12 (c'est-à-dire qu'il existei2 variables


indicées
A(1)..., A(12]l]l
, et initialiseles 12 valeursà 0. Cette instruction supprime également un
tableauappeléA s'il existaitauparavant. (Cen'estpasle caspour une variablesimple'Un
tableauet une variablenumériquesimpledu même nom peuventco-existeret il ne doit
pas y avoir de confusionentre les deux parceque la variabledu tableaua touioursun
i ndi ce.)
L'indicepeutêtre une expression numériquearbitraire; vouspouvezdonc écrire:

1 0 FO R N: 1 TO 2
20 PRI NTA( N)
30 NEXT N

Vous pouvezégalementcréerdestableauxà plusieursdimensions.Dansun tableauà


deux dimensions.vous avez besoinde deux nombrespour désignerl'un des éléments
- comme l e;rum ér o de la ligneet celui de la colonnepour pr éciserla posit iond'un
caractèresur l'écrande télévision- et, dansce cas,le tableauest vraimentun tableau.
Vous pouvezégalementimaginerque les numérosde la ligneet de la colonne (lesdeux
dimenbions)citent une pageimpriméeet que vouspouvezavoirune autredimensionpour

143
Chaoitre 22 Chapitre 22

les numérosdes pages.Bien entendu,nous parlonsde tableauxnumériques ; dansce cas, et P RI NTAS ( 2) ,AS ( 2, 7)
lesélémentsne sont pasdescaractères impriméscommedansun livre,ce sontdesvaleurs Vous obtenez
n u mé ri q uesP. ens ezaux é l é m e n tsd ' u n ta b l e a uà tro i s d imensi ons C ; pour l esdécri re,i l 1234561890 7
f au t i n d iquerC ( num ér od e l a p a g e n
, u mé rod e l a l i g n e ,n umérode l a col onne).
Pour le dernierindice (celuique vous pouvezrater)vous pouvezégalementeffectuer
Par exemple,pour créer un tableauB à deux dimensions(3 et 6) vous utilisezune
un découpage pour que,par exemple:
instructionDIM
A$ (2,4 TO B) : A$ (2) (4 TO 8) : " 456J8"
Dt M B ( 3, 6)
Rappelez-vous :
Al n si ,v ousobt enez3" 6 :1 8 v a ri a b l eisn d i c é e s
Dansun tableaude chaînes,toutesleschaînesont la mêmelongueurfixe.
B ( 1, 1)B, ( 1, 2 ),.. , B(1 ,6 ) L'instructionDIM comporte un nombre supplémentaire (le dernier)pour spécifier
B ( 2, 11,
B \ 2,2 t, . . B(2 ,6 ) cettelongueur.
B ( 3, 1)B, ( 3,2 ),.. , B(3 ,6 ) Lorsquevous écrivezune variableindicéepour un tableaude chaînes,vous pouvez
ajouter un nombre supplémentaire (le facteurde découpage)
pour qu'il corresponde
au
L e mêm epr inc ipes ' ap p l i q u à
e u n n o mb req u e l c o n q ude
e di mensi ons. nombresupplémentaire écrit dansl'instructionDlM.
Bien que vous puissiezdésignerun nombreet un tableaupar le mêmenom, vous ne
pouvezpasdésignerdeux tableauxpar le mêmenom, mêmes'ilsont un nombredifférent
de dimensions. Résumé
ll existeaussides tableauxde chaînes.Les chaînesd'un tableaudiffèrentdeschaînes Tableaux(la façondont le ZX81 traite lestableauxde chaînesest légèrement
différen-
simpleslorsqu'ellessont de longueurfixe et que l'affectationest toujours du type de te de la méthodestandard).
Procruste- une autre façon de les imaginerest de dire qu'il s'agitde tableaux(avecune l nstructi ons:DI M
dimensionsupplémentaire) de caractères seuls.Le nom d'un tableaude chaîneest une
seulelettre suiviede $ ; un tableaude chaîneset une variablechaînesimplene peuvent
Exercices
pasavoirle mêmenom (contrairement au casdesnombres).
1. Etablissezle tableauMS de douzechaînesdanslequelMS (N) est le nom du Nième
Supposonsmaintenantque vous vouliezun tableauA$ de cinq chaînes.Vous devez
mois. (Pourvousaider,noter que l'instructionDIM seraDIM M$ (12,5]). Essayezcette
déciderde la longueurque devrontavoir les chaînes.Supposons que 10 caractèressuffi-
instructionen écrivanttous lesMS (N) (utilisezune boucle).
sentpour chacune.Vous ditesalors:
Ecrivez
DrMA$ (5,10) (entrezcette instruction)
P RI NT, , NO USSO M M ES AU M O I S DE "; M $( 5) ; , 'EM PS";
,,oU
El l e é tablitun t ablea ud e 5 * 10 caractères,
maisvouspouvezégalementimaginerque LES ENFANTSJoYEUX JoUENT
c h a q u el i gnees tunec haîn e:
Oue pouvez-vous
faire au sujet de tous cesespaces?

A $( 1) = lA S (1 ,1 )A$ (1 ,2 ) AS (1,1 0) 2. Vous pouvezavoirdestableauxde chaînessansindicationde dimension.Entrez


A $( 2)= lA $(2 ,1 ) A$ (2 ,2 ) A$ (2 ,1
0)
D I M AS( 10)
A $( 5) :
et vousvousrendrezcompteque A$ secomporteexactementcommeune variablechaîne,
Si vo us donnezle m ê me n o m b red ' i n d i c e s(d e u xd a nsce cas)qu' i l exi stede di men- saufquesalongueuresttoujours10 et que l'affectationesttoujoursdu typede Procruste.
sions dans l'instructionDlM, vous obtenezun seul caractère;mais,si vous manquezle
3. Oui a besoi nd e READ. DATA et RESTO RE?
dernier,vousobtenezune chaînede longueurfixe. Par exemple,ASl2,7lest le septième
La plupartdeslangages BASIC (maisnon celuidu ZX81) comportenttrois instructions
caractèrede la chaîne n$ (2) ; grâceà la notation "découpée", nous pouvonségale-
appel ées: R E A D, DATA et RESTO RE.
ment écrirececisousla forme AS (2) (7). Entrezmaintenant
Une instruction DATA est une liste d'expressions et l'ensembledes instructions
:",rtouï7\gT"
LETA$(21 DATA du programmedonneune longuelisted'expressions, la listedesDATA.

144 145
Chapitre 22

LesinstructionsREAD permettenT uneà une à desvariables:


d'âffectercesexpressions

RE A D X

a, par exemple,l'effet d'affecterl'expression courantede la listede DATA à la variableX


eTd e p a s s er p o u r l a p ro c h ai ne
ens uit eà I ' e x p re s s i osnu i v a n te i nstructi onR E A D .
(REST O REoer m etde re v e n i a r u d é b u td e l a l i s ted e sD A TA .)
En théorie,vous pouveztoujoursremplacerles instructionsREAD et DATA par des
LET;to u t ef ois , l' une d e l e u rs p ri n c i p a l e sfo n c ti o n sest l ' i ni ti al i sati ondes tabl eaux,
co mmedansle pr ogr am me s u i v a n t:

5 RE M C E P R OGR AMMEN E PE U TPA SFON C TION N E RE N B A S IC


zx81
10 Dr MMs(12,3)
20 F O R N :l T O tz
3O RE A D M $ (N )
40 NE X T N
I--,,|t x"^"nil lt
50 DA T A ' ,J AN ' ' , F L V,IVIAh ,AVI- i il
^\,^tl
Û t,,^,i l il ttttl t
6û DA T A " MA I" , JUI\ , JUI , A\JU
^^ttl l

n ar - Ttt r r la' t\/l'


7O DA T A ,,S EP ,,, vu | , " r \vv " f- t]lll

Si vousvoulezexécuterce programmeune seulefois, il estsouhaitable de remplacerla


l i g n e3 0 par une ins t r uc ti o nIN PU Te t l e p ro g ra mme
d e v i ent:

10 Dt M M $ (1 2 .3 )
2A F O RN:1 T O 1 2
30 I NP UTM $ (N )
40 NEXT N

et vouséviterezainsiune partiedu travailde frappe.Toutefois,si vousvoulezsauvegarder


le programme,vous ne voudrezcertainementpas entrer Ies mois chaquefois que vous

Nousvoussuggérons la méthodesuivante:
(i ) In it ialis ezle t able a uà l ' a i d ed ' u n p ro g ra m m see mbl ablau e
n ' u ti l i s e zpasN E W puisquevousvoulezpré-
(i i ) E dit ezle pr ogr a m m ed ' i n i ti a l i s a ti o (n
se rve lre t ableau) .
(iii) Entrezle restedu programmeet sauvegardez le tout. Vous préserverezégalement
le sva ri ablesy, c om pr isle ta b l e a u .
(iv) Lorsquevousrechargerez le programme, vouschargerez égalementle tableau.
(v) Lorsquevous exécuterezle programme,n'utilisezpas RUN qui effacelesvaria-
bl e s.U tilis ezG O T Oav e cu n n u mé rod e l i g n e .
Vous pouvezégalementmettre en æuvrela techniqueLOAD et exécutiondu chapitre
16 (e xe r c ic 3) e . E ns uit e à, l ' é ta p e(i i i ) c i -d e s s uvso, u smettrezune i nstructi onS A V E dans
le programmeet l'étape(v) setrouvealorsentièrementsupprimée.

't46
Chapitre23

Lorsquel'ordinateurestplein
Le ZX 81 n' a qu'ur iem ém oir eint er nelim it éequ'il n'estguèr edif f icile de r em plir .En
général,la meilleureindicationde l'effet de remplissage est un compte-rendud'erreur4;
d'autreschosespeuventnéanmoinsse passeret certainessont particulièrement bizarres.
Le comportementexactde la machinedépendde la présence d'un modulesupplémentaire
de mémoire;nousallonscommencerpar supposerque vousn'enavezpas.si vousen avez
un, enlevez-le (aprèsla premièremisehorstensionde l,ordinateur).
Le fichier d'affichage,c'est-à-dire
la partieintérieurede l'ordinateuroù ce derniermet
l ' i magede l a tél évision,
estconçupour occuperseulem ent la placede ce quia ét é im pr im é
.i usqu' àmai nten ant: une ligne de l'écr ancom poséede 32 car act èr es au m axim umet
d'un caractèreNEWLINE.ceci veut dire que vous pouveztomber en pannede mémoire
on écrivantquelquechoseet que le risquele plusgrandsesitueau momentde l'établisse-
mentd'une liste.Entrez
NEW
D tM A( 150)
10 FO RN: 1 TO 15
20 PRINTN
Et voici la premi.ère
surprise: la ligne 10 disparaîtde la liste. La listedoil nécessaire-
m0nt contenir la ligne en cours - la ligne20, maisil n'y a pasde placepour lesdeux
llgnes.Entrezmaintenant:

30 NEXT N

Encoreune fois, la placedisponibledansla listeest seulement


cellede la ligne 3û. Entrez
mai ntenant
:

40 REM X ( sansappuyersur NEWLI NE)

€t vousvoyez la ligne30 disparaîtreet la ligne40 sauteren haut de l'écran.Elle n'a oas


été misedansle programme- vousdisposez encoredu curseurElquevouspouvezdépla-
g€r,Tout ce que vousavezconstatéest l'existence d'un mécanismecurieuxqui donneà la
mclitiéinférieurede l'écran24 lignesqui lui donnent priorité par rapport à la moitié
Ëupérieure. Entrezmaintenant

XXXXXX (toujourspasde NEWLINE)

et le curseurdisparaît- il n'y a pasde placepour le mettresur l'écran.Entrezun autreX


æ ns N E W LIN E ,e t l'un des X dispar aî t Ent
. r ezNEWLI NE.Tout dispar aî alor
t sque le
programmeest encoredansla machine,commevous pouvezle constateren supprimant
l e l l gne10 et en ut ilisantlest ouchese et ô. M aint enant
ent r ez
10 FO R N=1 TO 15
A rrOuveau - cette ligne vient se placeren haut de l'écrancomme l'a fait la ligne 40.
Mel s,l orsquevou s appuyezsur NEWLI NE,elle n'est pas ent r ée,bien qu, il n, y ait pas

149
C h a p i tr e23
Chapit r e23

de message d'erreurou de marqueBpour vous dire que quelquechosene va pas.Ceci


ré su l ted u f ait qu' il n' y a p a s d e p l a c ep o u r v é ri fi e rl a syntaxed' une l i gne; ce curi eux l c modul eS i nclair16K équipevot r e m achined'une m ém oir e16 f ois plus im por t ant e
phénomènese manifesteseulementpour les lignescontenantdes nombres(autresque rl ut:cel l ede l ' ordinat eur
de base.
le n u mé r ode ligneau dé b u t). N ota : S i vousavezun m odule3K zxB0, vousne pouvezpasl, ut iliseravecle ZXgl.
L e seulr em èdees t de re n d red e l a p l a c ed i s p o n i b l ed ' un façonou d' une autre; com- Avec le module de mémoire.le comportementconstatéest très différent puisque
le
m e n ce zpar s uppr im erla l i g n e1 0 q u i n e v e u t p a sre n trer.A ppuyezsur E D IT, l ' écranse l i t;hi erd' affi cha geest r emd'espacesaf
pli inquechaqueligneait unelongueur de32car ac-
vi d ep u i squ' iln' y a pasde p l a c ep o u rfa i red e s c e n d rel a l i gne. t()res(N otezque SCRO LLva à l'encont r ede ceci_ voir le chapit r e27) . M aint enant ,
les
LorsqueEDIT n'a passon effet habituel, il est parfoispossiblede fairede la placeen rl pérati ons d' écrit ur es
et d'ét ablissem ent
de list esne r isquentpasde pr ovoquerune penu-
e n tra n tu n nom br ed' es p a c ej us s q u ' a umo me n to ù l e c u rseurmontesur l ' écran. ri c de mémoi reet vous n'aur ezplusà subirde list esr accour cies et de saut s;m aisil vous
Ap p uy ezs ur NE W LIN Ee t v o u so b te n e zà n o u v e a uune parti ede l a l i ste.S uppri mez ;trri veraquand mêm ede per dr edes lignesou de lesvoir se bloqueret , ici égalem ent ,
le
ma i n te n ant la ligne40 ( q u ev o u sn e v o u l i e zp a sv ra i me ntde toute façon)en entrant r;culremèdeestde trouverde l'espace de réserve.
Si vousdisposezd'une carted'extensionmémoire,connectez-la et refaiteslesentrées
40 ( et NE WL IN E)
tl c ce chapi treà l 'aideoe
Essayezmaintenantd'entrer à nouveaula ligne 1A - ça marchetoujourspas ! Effa-
D IM A( 3069)
c e z-l au ne nouv ellef ois . Vo u s d e v e zq u a n dmê metro u verde l ' espace quel quepart,N ' ou-
b l i e z p a sque la r ais onp o u r l a q u e l l el a l i g n e1 A a é É re j etéeest probabl ementqu' i l n' y pour rempl acer DI M A( 1b0) .
ava i t p a s de plac epour v é ri fi e rl a s y n ta x ed e s d e u xv al eursnuméri ques, 1 et i 5 : par E n résumé, tou t e l'hist oir eestassez
sim pleet la m or aleest ,si vousle pouvez,de ne pas
con#quent, si vous supprimezla ligne20 du programme, vous aurezpeut-êtrela place l rourrervotre ordinat eurde données.Cet t e hist oir ecom por t eune deuxièm em or ale.
re q u i sep our ent r er la li g n e 1 0 e t q u a n dmê mea s s e zd e pl acepour ré-entrerl al i gne20 r;()uvent,l eschoses ne sont pasaussim auvaises qu, ellespar aissent .
(q u i n e cont ientauc unno m b re )e n s u i teEs . s a y eezn e n tr ant
-2 ô 1. S i une l i ste est t r onquéeou si leschosescom m encentà saut erà dr oit e eï à gauche,
vr-russubissez lesconséquences d'un manqued,espace.
10 F O R N :1 T O 5
2Ô P RI NT N 2. si N E W LIN Esem blesansef f et à la f in d'uneligne,il n'y a pr obablem enï
pasassez
de
et le programmeest bienentrécorrectement. l rl acepour trai terun nom br e.Ef f acezla ligneà l'aidede EDI T- NEWLI NE
ou RUBouT.
Ecri v ez l J. l l est possi bl qu'une
e m anæuvr dee NEWLI NEpr ovoquela per t ed, unelignecom plèt e.
GOTO10 D anstous l escascur ieuxdécr it sci- dessus, le r em èdeest le m êm e.Ne vousaf f olezpas,
rr'lcherchez de l'espaceinoccupé.
et, une feis encore,vous vous rendezcompteque la Iigneest refuséelorsquesa syntaxe
Le premi ermo yen à envisager est CLEAR. Si vousut ilisezquelquesvar iables et que
ne peut pasêtre vérifiée.Toutefois,si vouseflacezet entrez
vousn' avezpaspeurde lesper dr e,il f aut ut iliserCLEAR.
RUN A utrement,i l f aut r echer cher
les inst r uct ions inut ilesdu pr ogr am m e,
par exem ple,les
R E M et en supprim erunepar t ie.
t o u t ma r c hebien. ( RUN e ffa c el e ta b l e a ure
, ndana t i n s iun i mportantespace di sponi bl e).
En tre zm aint enantla m ê m es é q u e n cqeu ' a u p a ra v a nde t, N E Wà l a l i gne30 et, ensui te
Résumé
4û RE M XX XX XX XX XX XX Lorsquel a mémoir ese r em plit ,deschoses peuventavoirlieu.Habit uellem ent ,
bizar r es
r;r;schosesne sont pasfatales.
(1 2 ca ra c t èr es
X ) , qui, e n fi n d e c o m p te ,a l ' a s p e c t4 0R E . Lorsquevous appuyezsur
NEWL INE ,la lis t es er as e u l e me nct o m p o s é e d e l a l i g n e3 0 et, en pratl que,l a l i gne40 est
complètementperdue.Ceci est dû au fait que cette ligneétait trop longuepour le pro-
gramme.Les conséquences sont encoreun peu plus mauvaises lorsquela ligneest une
ve rsi o nallongée d' unelig n eq u i s e tro u v ed é j àd a n sl e p ro gramme car danscettesi tuati on,
vo u sp e r dezà la f ois l' an c i e n n lei g n ed u p ro g ra m m e t l a nouvel l equi devai tl a rempl acer.
Le meilleurremèdeconsisteà acheterun modulesupplémentaire de mémoireet à le
connecterà l'arrièrede votre ordinateur.

15 0
151
Chaoitre 24

eomptonssurnosdoigts
Le chapitresuivantva nous permettred'allervoir un petit peu ce qui se passedansl'ordi-
Rsteur; avantde regarderles particularités physiquesde la machine,il est quand même
préférablede décrirede quellefaçon lesordinateurscalculent;les ordinateurstravaillent
on systèmebinaire,ce qui veut dire qu'ilsn'ont pasde doigts,seulement oespouces.
Dansla plupart deslangues européennes, le comptagesefait suivantune structureplus
ou moins régulièrede dizaines- par exemple,en anglaiset en français,bienque le début
soit un peu erratique,la structuresestabiliserapidementen groupesréguliers:
vingt, vingt-et-un, vingt-deu x, ...,vingt-neuf
trente, trente-eÎ-un. t rente-deu x, ... trente-neuf
quarante,quarante€t-u n, quarantedeux,... quaranteneuf
e1c.
cette structure est rendue encoreplus systématiquepar les nombresarabesque nous
utilisons.Toutefols,la seuleraisonpour laquellenous utilisonsla dizaineest que nous
avonscinq doigtsà chaquemain,soit dix doigtsen tout.
supposonsmaintenantque les martiensaient trois doigts de plus à chaquemain
(dansla mesureoù on peut lesappelerdoigts) ; au lieu d'utiliserno{re systèmedécimal
à base10, ils utilisentun systèmehexadécimal (hex,en abrégé)à baseseize.lls ont donc
besoinde six chiffres hexadécimaux supplémentaires en plus de dix que nousutilisons
ot, il se trouve qu'ils lesécriventsousla forme A, B, c, D, E et F. ouel est le chiffreaprès
F 7 P ui squ' avecn os dix doigt snousécr ivons10 pour dix, lesm ar t iensqui t r availlent en
baseI6 écrivent10 pour seize.'Leursystèmenumériquecommencecommececi :
Hex Français
O Zéro
1U n
2 Deux

:
I Neuf
€xactementcommele nôtre.maisil se poursuitcommesuit :
A Dix
B Onze
Douze
D Treize
E Ouatorze
F Q uinze
10 Seize
1',1 Dix-sept
:
: ..
tv Vingt-cinq
1A Vingt-six
Chapitre 24 Chapitre24

Hex Français l.e point importantest que seizeestégalà deux élevéà la quatrièmepuissance, ce qui
1B Vingt-sept vctrldire que lesconversions entre l'hexadécimal et le binairedeviennenttrèssimples.
I'our convertir une valeurhexadécimale en binaire,vous deveztransformerchaque
:: rl ri l fre hexadéc im al Pourpasser
en quat r ebit s à l'aidede la t able pr écédent e. du binair e
1F Trente-et-un ,) l'hexadécimal,divisezle nombre binaireen groupesde quatre bits en commençant
20 Trente-deux lr,rr la droite et transformezensuitechaquegroupepour en faire le chiffre hexadécimal
21 Trente-trois r orrcspondant.
: : l)our cette raison,bien qu'à strictementparler, les ordinateursutilisent un système
: : l rrrrl i repur, l es h um ainsécr iventsouventen not at ionhexadécim al lesnom br esdest inésà
9E Centcinquante*ruit l ' rrrrli nateur.
9F Centcinquante-neuf l)e l'ordinateur,les bits sont les plus souventgroupésen sériede huit, chaquesérie
AO Centsoixante r',l,rrrt appeléeoctet. Un octet peut représenter un nombrequelconqueentrezéroet deux
A1 Cent soixante-et-un rcnl ci nquante- cinq ( 11111111en binair eou FF en hexadécim al) ou, bien ent endu,un
.. : , ,rr;rr;tère quelconquedu jeu de caractères du 2X81. Sa valeurpeut être écriteavecdeux
: .. r I riI l rcshexadécim aux.
FE Deuxcent cinquante{uatre [ )cux octetspeuventêtre associés pour constituerce que nousappelonstechniquement
FF Deuxcent cinquante-cinq rrrrrnot. Un mot peut être écrit aveci6 bits ou quatrechiffreshexadécimaux, il représente
100 Deux cent cinquante+ix rrrrn< rmbre entre0 et ( endécim alJ 2t o- r : 65535.
et que vousvoulezpréciserce fait de [,n octeta toujour shuit bit s,m aislesm ot svar ientd'un or dinat eurà l'aut r e.
Lorsquevous utilisezla notation hexadécimale
façon claire,vousdevezécrire"h" à la fin de chaque.valeu.r numériqueet dire "hex". Par Rôrumé
e xe mp l e,pourc entc inq u a n teh u i t, v o u sd e v e zé c ri re" g E h" et di re " neuf E hex" . liystèmesdécimal, hexadécimal et binaire
Maisvousvousdemandezpeut-êtrequ'est-ceque tout ce qui précèdea à voir avecles llils et octets(ne lesconfondezpas)et mots.
ordinateurs.Voilà : les ordinateursse comportentcommes'ils n'avaientque deux doigts
représentés respectivement par une bassetension (hors : 0) et par une hautetension Exsrcices
(en 1). Ce systèmes'appellele systèmebinaireet lesdeux chiffresbinairessont appelés
: I I ir devisemartienneest la livre que vous divisezen seizeonces.Commentferiez-vous
bi ts : a i ns i,un bit es ts oi t à l a v a l e u r0 s o i t à l a v a l e u r1 . lrotrrcffectu€rune conversionafin de passerde livreset oncesà desoncesetvice-versa.
Danslesdifférentssystèmes, le comptagecommencecommesuit (i) Lorsqueïous lesnombressontécritsen systèmedécimal?
Français Décimal Hexadécimal Binaire (ii) Lorsquetous lesnombressont écritsen systèmehexadécimal ?
Zéro 0 0 0 or 0000
Un 1 1 1 or0001 -' (lornmentferiez-vous pour convertirdes nombresdécimauxen hexadécimaux et vice
De u x 2 2 10or 00' 10 vl r :" r ? (U nei ndicat ion: l'exer cice
1) .
Trois 11 or0011 I r;rivezdes programmesassurantla conversionde valeursnumériquespour qu'elles
Ouatre 4 A 100or 0' 100 ,11y1111111s61 des chaînesdonnant leur représentation et vice versa(c'estce
hexadécimale
Cinq 6 5 101or0101 rlrrclolrt STR$ et VAL aveclesreprésentations décimales).
Si x  6 110or0110
Qpnt 7 1 11' 1or0111 { :;uF)posons que les Vénusiens aientI doigt sau t ot al, sanspouces,quelleut ilit é peut
H ui t 8 8 1000 ;rvr)ir lcur systèmeoctal (baseB) dansle casdesordinateurs?
Neuf v I 1001
Dix 10 A 1010
Onze 11 B 1011
Douze 12 c 100
Treize IJ D 101
Ouatorze 14 E 110
Ou i n ze 15 F 111
Seize 16 10 10000

156 157
Chapitre25

Commentfonctionnel'ordinateur
manuel'
L'illustrationsuivantemontre l'intérieurdu ZX81 (ne la séparezpasdu restedu
car il seraittrès difficile de la ensuite
rem'ettre danscet ouvrage)'
des
Commevous pouvezle voir, chaqueélémentcomporteune abréviationcomposée
lettresTLA.
Les petits bouts de plastiquemontéssur de nombreuses pattesmétalliquessont les
merveilieuses puces de tlli"irt qui ont rendu possible les montres digitaleset le Sinclair
2X81. Chaquemorceaude matièreplastiquecontient un bout de siliciumdont la taille
pattesmétal:
est voisinede celledu curseurKet cet élémentde siliciumestconnectéaux
Iiquespar.desconducteurs.
Le cerveauqui assurel'exécution des opérationsest la puce microprocesseur, souvent
(unité Celui que vous observez est un processeur 280 (en réalité
appelée UC centrale).
un Z80A qui est plusrapideque le précédent).
est
Le processeurpilote tout l'ordinateur,exécute les opérationsarithmétiques,
averti des touches que vous manæuvrez, décide de ce qui doit être fait en conséquence
peut
et coordonnel'imagesur le téléviseur.Bien qu'il soit extrêmementintelligent,il ne
pasfaire tout ceci seul. Laisséà lui-même,il ne sait rien du BASIC, de l'arithmétique en
virgule flottante ou des téléviseurs, il doit donc recevoir toutes ses instructions d'une
autre puce - la mémoiremorte ou mémoireinaltérable(ROM). Cettemémoirecontient
programmeordi-
une longueliste de toutes les instructionsqui permettentde réaliserun
nateur complet pour clire au processeur ce qu'il doit faire dans tous les casprévisibles'
pas écrit en langage BASIC, il est rédigé en code machine 280, qui
Ce programmen'est
revêt la forme d'une longue série d'octets. (Souvenez-vous qu'un octet est un nombre
del ' i nterval l e0- 255) . Chaqueoct et est associéàuneadr esseindiquant oùilset r ouve
dans la mémoireinaltérable; le premieroctet a l'adresse 0, le deuxièmel'adresse1 et
ainside suite jusqu'à 8191. En tout, nous avons donc 8192:8"1024 octetset c'estpour
à1024ou
cette raisonque le BASIc ZX81 est parfoisappeléBASIC 8K. Un K est égal
2ro ou 400 h.
partl-
Bien que les pucesdes différentesmachinessoient similaires,cette séquence
culièred'instructionsest unique auZX81, elle a été écrite spécialement à son intention
par une petitesociétéde mathématiciens de Cambridge.
pour connaîtrel'octet qui se trouve à une adresse donnée,vousdevezutiliserla fonc-
tion PEEK. Par exemple,le programme suivant écrit les 21 premiersoctetsde la mémoire
(et
inaltérable leursadresses).
,,ADR ,,
1OPRINT TAB 8; BYTE,,
ESSE,,;
2û FORA= 6 TO 20
3 0 PRI NT A; TAB 8; PEEKA
40 NEXT A
que le
La puce suivanteest la mémoireà accèssélectifou mémoire RAM. C'estlà
pro""rr"r, range l'information qu'il désireconserver- votre programme BASIC, les
et différentesnotes (les système)
variables qui
variables,l'imale destinéeau téléviseur
précisentla situationde l'ordinateur.

tol
L napttre 25
Chaoit r e25
6
.OU
OC
O,.
:o C omme l a mém oir einalt ér able,la m ém oir eRAM est or ganisée en oct et squi ont
chacunune adresse: lesadresses sontcomprises dansl'intervalle16384-11401\et parfois
.- F
mêmej usqu' à32767- si vot r em achineestéquipéedu m odulede m ém oir e16K) .Com m e
tr ( J dans l e cas de la m ém oir einalt ér able, vous pouvezconnaî t r eles valeur sdesoct et sen
'O -Y
s' c) P E E K, m ais la dif f ér enceim por t ant epar r appor t à la m ém oir einalt ér able
est
uti l i sant
a) que vous pouvezégalem entm odif ierles valeur s.( Bienent endu, lam ém oir einalt ér able
G
e m ele dit sonnom . )
est i nal térablcom
c E ntrez
O

.= PO KE 17304, 57
= l
c
O
o
17300a la valeur57. Si vous
C etteopérat iona pour ef f et que l'oct etqui est à l'adr esse
O
c)
entrezmaintenant
!

l PBINT PEEK 17300


-
ô
o l a machi nevou sr envoiele nom br e57. ( Tent ezla m êm eopér at ionavecd'aut r esvaleur s
J
pour vousassu r er quecet t em ét hodeestbiengénér ale. )
N otezque l 'adr esse doit êt r e dansl'int er valle0 - 65635; la plupar tdesadr esses cit ent
des octetsde la m ém oir einalt ér able ou qui n'exist entpas et sont donc sansef f et . La
val eurdoi t êtrecom pr isedansl'int er valle - 2551 I 255 et , si elleest négat ive,la valeur256
l ui estaj outée.
é ablirdesvaleur svousper m etde m anipulerl'or dinat eursi voussavez
La possi bi lit d'ét
bien tirer partie de cette fonction. Toutefois,les connaissances requisessont nettement
au-del àde ce qui peutêt r edécr itdansun m anuelde pr ésent at ion com m ecelui- ci.
La derni èrepucec'estla pucelogique- la logiquede calcul.Cet t epucea égalem ent
été conçueet fabriquéespécialernent pour le ZX81, elleest connectéeaux autrespuces
= d' une façon ast ucieuseaf in que ces der plusqu'elles
nièr es, f assent nef er aientnor m alem ent .
Le modul at eurt r ansf or m elessignauxde l'or dinat eurdest inés au t éléviseur pour leur
t"J_
ï faire revêtir une forme convenantà ce dernier et le régulateurconvertit les 9V non
l régul és de l'alim ent at ion
mai sl i s sés en 5V r égulés.
f,
c)
P
Co Résumé
T
f
i Lespuces
c l nstructi on :sPO KE
.9 Foncti ons: PEEK
c
CJ
0)

! -o
o
f
CJ
P
=o
o. c^
'- 6J
:J
o)
.: cJ
E

162
Chapitre26

Pour utiliser le langage machine


Ce chapitreest écrit à l'intentionde ceux qui comprennentle code ou langagemachine
ZSO,lejeud'instructionsutilisépar le processeurZS0. Si vousne faitespaspartiede cette
catégoriede lecteurs,maisque voussouhaiteriez être dansce groupe,plusieursouvrages
existentdéjà sur ce sujet; deux manuelsde présentation ont déjà été publiésen anglais
(' P rogrammi ng th e Z8O 'écr it par RodnayZakset publiépar Sybexet "Zg0 ana gAgA
A ssembl yLangu age pr ogr am m ing" de Bat heSpar cklen. publiépar Hyden) .
Le nec plus uitra est composéde deux ouvrages:"286 AssemblyLanguage program-
ming Manual"eT"ZBA-CPIJ,ZBAA-CPU TechnicalManual"publiésparZilo,g,maisil serait
présomptueux de lesrecommander à desdébutants.
Les routinesen langagemachine peuventêtre exécutéesà partir d'un programme
BASIC par la fonction USR. L'argumentde la fonction USR est l'adresse de début de la
routine, le résultatcorrespondant étant un entier sanssignecomposéde deux octets,
c'est-àdirele contenu de la paire de registresbc au retour. L'adresse de retour versle
B A S ICest conse r vée de la f açonhabit uelle et le r et oursef ait par une inst r uct ionduZBA.
l l exi stecertaines lim it espour lesr out inesUSR :
(i ) A u retour,lesr egist r es iy et idoiventcont enirles4û00h et 1 Eh.
(i i ) La routi ned'af f ichageut iliselesr egist r es a', f ', ix et r et , de ce f ait , une r out ine
USR ne doit pas utiliser ces registressi les fonctions de calcul et d'affichageopèrent
simultanément (il n'estmêmepasrecommandé de lire lesregistres af').
Lesbusde commande,desdonnéeset desadresses sont tousvisibles à l'arrièredeZX81
et, par conséquent. vous pouvezavecle ZX81 faire à peu prèstout ce que vous pouvez
fai reavecl eZ86. ll se peut néanm oins que le m at ér ieldu ZX81 vousgênedanscer t ains
cas,en parti cul i e pour r le calculet l'af f ichagesim ult ané. Voici un schém adesconnexions
vi si bl es à l ' arri èrede la m achine.

d- no l r nz a: A r5 4 1 4 A r3 A t 2 A t l A 1 0 A 9 A8 A7 A6 A5 A4

INALTERABLE
234

DO' D1' D2' D6' D5' D3' D4' NI NAYHALT lORO BD WR R E S É T R E FS H

vne ô BLJSAK BUSîô' r\,1

U n él émenten langagem achinequi se t r ouveau m ilieude la m ém oir er isqued'êt r e


surchargé par le systèmeBASIC.Lesendroitslesplussûrssont :
(i ) D ans une inst r uct ionREM : Ent r ez une inst r uct ionREM com poséed'assezde
caractères pour contenir votre langagemachineque vous pouvezalorsexaminer.Cette
partie doit devenirla prernièreligne du programmepour qu'elle ne soit pas déplacée.
Eviter les instructionsd'arrêt qui serontreconnuescomme la fin de l'instructionREM.

167
Chapitre26

(ii) Dansune chaîne : Etablissezune chaîneassezlongueet affectezensuiteun octet


de code machineà chaquecaractère.Les chaînespeuventtoujoursse déplacerdansla
mémoire.
Dans l'annexe A consacréeau jeu de caractères,vous trouverez les caractèreset les
instructionsdu 280 écritscôte à côte en ordre pour vousfaciliterle travaillorsquevous
entrezdu code.
(iii) En haut de la mémoire.LorsqueleZXBI estmissoustension, il procèdeaucontrôle
de la'quantitéde mémoireprésente et placeensuitela pile machineen haut de la mémoire;
il n'y a donc pasd'espaceà cet endroit pour lesroutinesUSR. La machinemet l'adresse
du premieroctet nonêxistant(parexemple17K ou 174t8 avec1 K de mémoire)dansune
variablesystèmeappeléeRAMTOP.dansles deux octetsdont les adresses sont i6388 et
16389. Par contre, NEW n'effectuepas un contrôle mémoirecomplet; la vérification
porte seulementsur ce qui précèdel'adressedans RAMTOP.Ainsi, si vous examinez
l'adressed'un octet existantdans RAMTOP, pour NEW toute la mémoireà partir de
cet octet est en dehorsdu systèmeBASIC et est donc laisséetranquille.Parexemple.
supposonsque vousayez une mémoirede 1 K et que vousveniezde mettre l'ordinateur
soustension:
P RI NTP E EK 1 6 3 8 8 + 2 5 6 * PE EK1 6 3 8 9
vousindiquel'adresse(174b8\du premieroctet non-existant.
Supposonsmaintenantque vous disposiezd'une routine USR de longueur20 octets.
Vous voulezporter BAMTOP à 17388:236 + 256*67 (commentréaliserez-vous cette
opérationsur la machine?) ; entrez
POKE 16388,236
POKE 16389,67
et ensuiteNEW.Maintenant,lesvingt octetsde mémoirecomprisentre l'adresse 17388et
l'adrese 17407 voussont réservés,vous pouvez en faire ce que vous voulez.Si vous entrez
à nouveauNEW, les20 octetscidessusne sont pasaffectés.
Le haut de la mémoireest un bon endroit pour lesroutinesUSR, un endroitsûr (même
vis-à-visde NEW) et statique.Son principal inconvénientest que le contenu de cette
par SAVE.
partie n'est passauvegar:dé

Résumé
Fonctions: USR
lnstructions: NEW

Exercices
1. RendezRAMTOPégaleà 16700et exécutezensuiteNEW.Vous aurezainsiun aperçu
de ce qui se passelorsquela mémoirese remplitcomplètement.
Chapitre 2-l

Organisation de la mémoire
La mémoireest subdivisée en plusieurszonesqui permettentde stockerdifférentstypes
d'informations.La tailledeszonesestcalculéepour concorderexactementavecl'informa-
ti on qu' el l esco nt iennentr éellem entet , si à un point donné.vousen insér ezdavant age
(parexempl een ajout antune var iableou une lignede pr ogr am m e) de l'espace
estr endu
di sponi bl een dé calantt out ce qui se t r ouveau- dessus de ce point . En r evanche,
si vous
supprimezlesinformations,tout ce qui setrouveau-dessus est amenéversle bas.

Octet contenant 80h

I
Variables F i chi e r Lignesen cour sd'ent r ée z
Programme Var iables L
système d'aff ichage * espacede travail

116384 1
16509
1
D. FI LE
1 1 ISTKBOT
VABS LLI NE

\ Pilede la Pilede Rout ines


\ P i l edu cal culat eurRéserve
m achine GOSUB USR

1 1 1 1
STKBOT STKEND Point eurde la ERR_SPRAM TO P
pilede la
m achine( sp)
Les variablessystèmecontiennentdifférentesinformationsdont le rôle est de dire à
l'ordinateurdansquel état il est. Cesvariablessont reprisesexhaustivement au prochain
chapi tre,mai s p our le m om ent ,il vous suf f it de not er qu'il y en a cer t aines( appelées
D -Fl LE , V A R S, E- LI NE et c. ) qui cont iennentlesadr esses deslim it esent r e lesdif f é-
renteszonesdan sla m ém oir e.Cesvar iables ne sont pasdesvar iables BASI C,leur snom s
ne sont pasreconnus par la m achine.

Octetl e pl u ssignificat if
le m oinssignificat ir
i 9.r..
YV

N uméro Longueurdu Texte NEWLI NE


de Ia text e+ NEWLI NE
l i gne

171
Chapitre27
Chapitre 27

Noterque,contrairementà tous lesautrescasde nombresà deuxoctetsdansleZBA,b


numéro de ligne (ceci s'appliqueégalementaux variablesde contrôle FOR-NEXT),est Tableaudesnombres
stockédansl'ordreoctet le plussignificatif/octet
le moinssignificatif: en d'autrestermes,
dansl'ordresuivantlequelvouslesécririez.
Dans le programme,une constantenumériqueest suiviede sa forme binaireavecle -_ } Y t
caractère CHRS 126 suivide cinq octetspour le nombrelui-même. lll I I
2 octets 5 octetschaque I
Le fichier d'affichageest la copie en mémoirede l'imagepréæntéesur le téléviseur. 1A @ 2 octets 1 octel
Ce fichier commencepar un caractèreNEWLINE et comporteensuite24 lignesde texte lI I I JÈI
se terminantchacunepar NEWLINE. Le systèmeest conçu pour qu'une lignede texte
n'ait pas besoinde tout I'espacerequispour mettre 32 caractères:lesespacesde fin Lettre- 20h Longueur Nombre 1èredim. Dernière Elérnents
peuventêtre omis. Ceci permetd'économiser de la mémoirelorsquela quantitéde mé- totaledes de dim .
moiredisponibleestfaible. élémentset dimensions
Lorsquela mémoiretotale du système(conformément à la variablesystèmeRAMTOP) dim ensions
est inférieureà 3 114K,un écranvide - tel qu'il a été établi au débutou par CLS - est * 1 Pourle
composéde 25 NEWLINE seulement.Lorsquela mémoireest plusgrande,un écranvide nombrede
est garni de 24*32 espaceset, dansl'ensemble,il resteà sa taille maximale; toutefois, dim ensions
SCROLL et d'autresconditionsspécifiquesprovoquantl'agrandissement de la partie
inférieurede l'écranà plus de deux lignespeuventperturberce qui précèdepar l'intro-
ductionde lignescourtesen bas. L'ordredesélémentsest le suivant:
Lesvariables ont deux formatsdifférents'enfonctionde leur nature. d'abordlesélémentspour lesquels le premierindiceest 1
ensuite,lesélémentspour lesquels le premierindiceest 2
Nombredont le nom estcomposéd'uneseulelettre : lesélémentspour lesquels le premierindiceest 3
et ainside suitepour to,uteslesvaleurspossibles du premierindice.
bit de signe de la mêmefaçon
d'un premierindicedonné sont classés
Les élémentsaccompagnés
I --è avecle deuxièmeindice,etc. jusqu'à la fin.

s---l Exemole: les élémentsdu tableauB 3 x 6 du chapitre22 sonTrangésdansI'ordre


sui vant:

T'0"''iï }, ( 3, 1) ,B ( 3, 2) , . '.( 3, 6)
B (1,1),8n, 21, . . .B ( 1, 6) ,B( 2, 11, 8( 2, 21, . . . 8( 2, 6] B

Variablede contrôled'une boucleFOR'NEXT :

Octet le plussignificatif
I
I octet le moins
Nombredont le nom comporteplusd'unelettre : I I ifibatif
sign
YV

: JI I
2 octets
5 octets I 111 5 octets 5 octets 5 octets
!ÈJ I
Lettre Dernier V al eur Lettre Valeur Lim it e Pas Lignede
caractère la boucle

173
Chapitre 27

Cha îne

++
Lettre-20h Nombrede Tex t e de la c haî n e ( p e u t ê t r e v i d e )
caractères

Tableaude caractères
:

||t I I ès - __l
11A 2 octets 1 octet 2 octets octet chacun I
lll I I f
\ :l
U
+++
L e t t r e- 2Ùh Nom b re N o m b re 1 è re D erni ère E l éments
t ot a l de dimension di mensi on
d' élé m e n tsd i m e n s i o n s
et dim e n s i o n s
* 1 pourle
nom b red e
d im e n s i o n s

L a p a r t iequi c om m e n c eà E -L IN E c o n ti e n tl a l i g n een coursd' entrée(sousforme


d'u n e co m m ande,d' une l i g n ed e p ro g ra m m eo u IN PU T)ai nsiqu' unecertai nequanti té
d'e sp a ce de t r av ail.
L e ca l c ulat eur es t la p a rti ed u s y s tè m eBA SICtra i ta n tde l ' ari thméti que et l esnombres
su r Ie sq u els il t r av ailles on t p o u r l ' e s s e n ti e
d la n sl a p i l ed u cal cul ateur.
La partieréserve contientl'espace demeuréinutiliséà cet instant.
La pile de la machineest celleutiliséepar la puce Z8Ô pour conserver lesadressesde
r e ro u r,e lc .
L a p i l e G O S UBa ét é me n ti o n n éaeu c h a p i tre1 4 .
L'espaceque doiventoccuperles routinesUSR doit être mis de côté par vous-même à
l'ai d ed e N E Wc om m eil a é té d i t a u c h a p i trep ré c é d e n t.

17 4
Chapitre28

Lesvariablessystème
Les octets de I'intervalle16384 - 16508 de la mémoiresont mis de côté pour emploi
spécial par le système.Vous pouvez les examiner pour découvrir différentes choses
concernantle systèmeet certainesd'entre ellespeuventêtre modifiéesutilement.
Ellessont listéescidessousavecleur utilisation.
Appeléesvariablessystème,cesvariablessont désignées par des noms,mais il ne faut
pas lesconfondreaveclesvariablesutiliséespar le BASIC.L'ordinateurne reconnaîtpas
les noms commedésignantlesvariables système,cesnomssontdonnésseulementcomme
mnémoniques à l'usagedesêtreshumains.
Lesabréviations de la colonne1 signifient:
X La variablene doit pas être modifiéecar cette opérationrisqueraitde bloquer le
système.
N La modificationde cettevariablen'aurapasd'effet durable.
S par SAVE'
Cette variablepeut être sauvegardée
Le nombre inscritdansla colonne1 est le nombred'octetsde la variable.Pour deux
octets,le premierest le moinssignificatif,c'est-àdirel'inversede ce que.vousattendiez
sansdoute. Ainsi,pour transformerunevaleurx en une variableà deux octets,à l'adresse
n, i l faut uti l i ser

POKEn,v-256*INT (vl256l
POKEn*1,lNT (vi256)

et pourconnaître
savaleur,il faututiliser

PEEKn*256"PEEK(n*1)

Adresse Nom Contenu

16384 ERR_NR 1 moins le codede compte-rendu. Commenceà


255 (pour -1) et, par conséquent,si PEEK
16384 donne un résultat,ce résultatest 255.
POKE 16384.npeut servirpour forcer un arrêt
sur er r eur: 0 ( n ( 14 donnel'un descom pt es-
r endushabit uels,15( n ( 34 ou 99 ( n ( 127
donne un compte-rendunon standardet 35 ( n
( 98 risquefortement de perturberle fichier
d'affichage.
X1 16385 FLAG S Les différentsdrapeauxqui contrôlent le sys-
t èm e BASI C. -
x2 16386 ER R_SP Adressede la premièrerubriquede la pile ma-
chine (aprèslesretoursde GOSUB).

177
Chapit r e28
Chapitre28

Notes Adresse Nom Contenu


Notes Adresse Nom Contenu
SN1 1642 4 M ARG IN Nombrede lignesvidesen-dessus ou en-dessous
16388 RAMTOP Adressedu premieroctet au-dessus de la zone de l'im age: 55 en G r andeBr et agne,31 aux
du systèmeBASIC.Vous pouvezeffectuerune Etats-U n is.
POK Ep o u r o bteni rdu nouvel(N E W )espace de SX2 16425 NXTLI N Adr essede la pr ochainelignede pr ogr am m eà
réserveau-dessus de cette zone (voir le chapitre exécuter.
26]t ou pour que CLS établisseun fichier d'af- S2 16427 O LDPPC Num ér ode la ligneà par t irde laquelleCO NTa
fi c h a g em i n i m al (chapi tre27). U ne foncrj on effectuéson saut.
P O K E s u r R A MTOP est sanseffet tant oue SN1 16429 FLAG X Différentsdrapeaux.
l'une desdeux n'a pasété exécutée. SN2 16430 STRLEN Longueurde la dest inat iondu t ype de chaî ne
N1 16390 MOD E C u rs e u K, r L , F ou G spéci fi é. en affectation.
N2 16391 PP C N u mé ro d e l a l i gne de l ' i nstructi onen cours SN2 16432 T- ADDR Adr essede la r ubr iquesuivant e dansla t ablede
d ' e x é c u ti o nPOK. E est sanseffet durabl e,sauf synt axe( génér alem ent inut ile) .
d a n sl a d e rn i è rel i gnedu programme. >z 16434 SEED Base de RND. Cette variableest établie Dar
ùl 16393 V ER SN 0 i d e n ti fi el e BA S ICZX 81 dansl esprogrammes RAND.
sauvegardés. S2 16436 F BAN/ ES Comptelestramesaffichéessur le téléviseur. Le
S2 16394 tr_ Pp a N u m é rod e l a en cours.avecl e curseurdu bit 15 està l. Lesbit s0 à 14 sontdécr ém ent és
p ro g ra mme . à chaquetrame transmiseau téléviseur.Cette
SX2 I o Jvo D_FI LE Voir le chapilre27. par t icular itpeut
é êt r eut iliséepourlasynchr oni-
16398 A d re s s ed e l a posi ti ond' écri tureP R IN Tdansl e sation mais PAUSE en fait égalementusage.
fi c h i e rd ' a ffi c h age.P eutêtre modi fi éepour que PAUSEr em etle bit 15 à 0 et m et la dur éede la
l a s o rti eà é c ri resoi t transmi se ai l l eurs. pausedansles bits A à 14. Lorsquecesbits ont
SX2 16400 V AR S V o i r l e c h a o i t re2T. été ramenésà A , b pauseest terminée.Si la
SN2 16402 D ES T Adressede la variableen affectation. pauseestarrêtéepar la manæuvre d'une touche,
SX2 16404 E- L I N E Voir le chapitre27 . le bit 15 est à nouveaum is à 1.
SX2 16406 C H -A D D Adressedu caractèresuivantà interpréter.Le S1 16438 CO O RDS Coordonnée x du dernierpoint tracéPLOT.
c a ra c tè re a p rèsl ' argument de P E E Kou N E W LI- S1 16439 Coordonnée y du dernierpoint tracéPLOT.
N E à l a f i n d ' u nei nstructi onP OK E . 5l 1644û PR_" Octet le moinssignificatifde l'adresse de la po-
S2 16408 X _ PT R L'adresse du caractère précédantle marqueur$t. sit ion suivant eà laquelleLPRI NT doit écr ir e
SX2 16410 S T KB O T Voir le chapirre27. ( dansPRBUFF) .
SX2 16412 S T KE N D \/nir lo ehani+
,v Yr !,v
ra 27
ê, r b^l 16441 S- PO SN Num ér ode colonnede la posit ionde PRI NT.
SN1 t04 t4 BER G R e g i s tre b d u cal cul ateur. SX1 16442 Num ér ode lignede la posit ionde PRI NT.
SN2 16415 ME IV Ad re s s ed e l a z one uti l i séecommemémoi redu CDFLAG Différentsdrapeaux.Le bit 7 est en (1) en mo-
c a l c u l a te u(h
r a bi tuel l ement
ME N /B OT.mai spas
5l
L9!+z de calculet affichage.
to uj o urs ). s33 16444 PRBUFF Tam pon de l'im pr im ant e( le 33èm ecar act èr e
5l 16417 l n u ti l i s é e esrNEWLI NE) .
SX1 16418 D F _ SZ N o mb red e l i g nes(y compri sune l i gnevi de)de S N 3O 16471 M EM BO T Zone de mémoiredu calculateur ; sert pour ran-
l a p a rti ei n fé rieure
de l ' écran. ger des nombresqui ne sont pas pratiquesà
>Z 16419 S_TOP L e n u m é rod e l a pl ushautel i gnedu programme m et t r edansla piledu calculat eur :
d a n su n e l i s teautomati que. S2 16541 Inut ilisée
SN 2 to 4 zl LAST_K Préciseles touches qui ont été manæuvrées.
SN 1 16423 Eta t d ' a n ti -re bonddu cl avi er.

179
178
Chapitre28
r AnnexeA

Exercices Le jeu de caractères


ce programme
1. Essayez Le jeu de caractères ci-dessous est le jeu completdu ZX80 aveÇsescodesen décimalet
en hexadéci malSi. vousvoulezbien considér er que lescodessontlesinst r uct ions
en lan-
10 F O R N: 0 T O 2 ' l gagemachi neZ8O, la colonnede dr oit e vousdonneles m ném oniques cor r espondanten
2O P RI NTP E EK (PE EK1 6 4 0 û + 2 5 6 * PE EK16401+ N ) langaged'assemblage. Comme vous le savezsansdoute si vous comprenezces choses,
3O NEXT N certai nesi nstructionsdu 280 sont com posées avecle suf f ixeCBh ou EDh; ces inst r uc-
ti onscompl exes sontr epr ises
danslesdeuxcolonnes de dr oit e.
Ce programmevous indique les 22 premiersoctetsde la zone des variables: essayez Code Caractère Hex Assembleur 280 - aprèsCBh
tl'adapterla variablede contrôleN à la descriptiondu chapitre2T.
0 espace 00 nop rlc ll
2. Dansle programmecidessus,transformezla ligne20 en 1 fl 01 ld bc, NN rlcc
2 tr 02 ld ( bc) , a r lcd
20 P RI NTP E EK (1 6 5 0 9 + N ) 3 . 03 r ncbc rlce
Le nouveauprogrammevous indique les 22 premiersoctets de la zone programme.
4 tr 04 r ncb ncn
5 f 05 oeco fl c I
concorderavecle programmeà proprementparler.
Faites-les 6 fI
ll 06 r db, N r lc( hl)
1 E 01 r lca r lca
8 OB ^. , ^{
u^dt,dl ^{ r
rrcb
I m 09 addhl, bc rrc c
10 LI OA ld a, ( bc) rrc d
11 OB oec oc rrce
12 e OC incc rrch
13 s OD decc rrc I
14 OE ld,c, N r r c( hl)
I 15 ? OF rrca rrc a
I 16 ( 10 dinz ôlQ rl b
I 1l ) 11 l d d e ,N N r lc
I 18 12 l d ( d e ) ,a no
19 13 r n cd e rl e
20 : 14 r n cd nn
21 + 15 oec o rl I
22 16 r dd, N r l ( hl)
23 17 rla rl a
24 ; 1B jr DI S rrb
25 19 addhl, de rrc
26 1A lda, ( de) rrd
27 Itt :ugu
^^:uc
^ rre
28 0 1C ince rrh
29 1 1D dec e rrl
30 2 tr l d e ,N r r ( hl)
31 3 1F rra rra
32 4 20 j r n z,D IS sr ao
33 5 21 rdht,NN slac
34 6 22 rd(NN),hl slad
180
AnnexeA AnnexeA

Code Caractère Hex Assembleur 280 - après CBh - après EDh Code Caractère Hex Assembleur280 - après CBh -. après EDh
35 7 a2 i n ch l slae 77 4D ldc, l bit 1, 1 retl
36 8 t+ In ch slan 78 4E ldc, ( hl) bit 1, ( hl)
2-7 v 25 oec n slaI 79 4F r ac, a bit 1, a ldr , a
38 26 td ,h ,N s l a(hl ) 80 50 r dd, b bit2, b in d, ( c)
39 B 27 oaa ^t^ d
Jtd ^ 81 t dd, c bit2, c out ( c) , d
40 28 j r z ,D l S srab 82 52 r dd, d bit2, d sbchl, de
41 D 29 a d dh l ,h l srac 83 53 r dd, e bit2, e ld ( NN) , de
4l E rdh r,(N N ) JI d U 84 54 t dd, h bir2, h
4J F 28 d e ch l srae a 55 ldd, l bit2, 1
44 z\, rn cI srah do 56 r dd, ( hr ) bir2, ( ht ) tml
45 H 2D d e cI sraI ô/ 57 t dd, a bir2, a ld a, i
46 I 2E td ,t,N s ra(hl ) 88 58 lde, b bir3, b in e, ( c)
47 2F cpl sraa 89 59 r oe, c bit3, c out ( c) , e
48 K 30 p n c ,D l S 90 5A ld e, d bit3, d adchl, de
49 L JI l d s p ,N N 91 5B t^oo bir3, e ld de, ( NN)
50 M rd(N N ),a 92 5C ld e, h bir3,h
cl N JJ i n cs p 93 5D lde, l br t3,I
52 o 34 i n c(h l ) 94 i nutilisés Âtr lde, ( hl) bit3, ( ht ) rm2
53 P 35 d e c(h l ) 95 5F lde, a bir3, a lda, r
54 36 rd(hr),N 96 60 t dh, b bit4, b in h, ( c)
55 R 37 ^^{ 97 61 t dh, c bit4, c out ( c) , h
56 38 j r c ,D IS srlb 98 oz r dh, d bit4, d sbchl, hl
5l T 39 a d dh l ,s p srlc 99 OJ r dh, e bit4, e r d( NN) , hl
58 U JA l da ,(N N ) srld 100 64 t dh, h brt4,h
59 3B decsp srle 101 65 ld h, l bir4, 1
60 rn ca sfln 102 oo r dh, ( hr ) bit4, ( ht )
6',l X 3D deca snI 103 ol t dh, a bit4, a rro
62 Y Jtr. l d a ,N srl(hl) 104 68 rdt,b bit5, b in l, ( c)
63 Z 3F ccf sna 105 t dt , c br t5, c out ( c) , 1
64 RND 40 rdb ,b b ir0,b i n b,(c) 106 6A r dt , d br t5, d adchl, hl
65 INKEY$ 41 rdb ,c b ito,c out (c),b 107 6B t dt , e bit5, e ld de, ( NN)
oo PI 42 rdb ,d b ir0,d sbchl ,bc 108 6C t dI , h bir5, h
o/ 43 rdb ,e b ir0,e rd(N N ),bc 109 ol--/ t dt , l bir5,I
68 44 tdb ,h b it0,h neg 110 6E rdr,(hr) bit5, ( ht )
o:, l d b ,l b it0,1 retn 111 6F ld t , a bir5, a rld
70 z+o rdb,(hr) b it0,(ht) i m0 112 monteecur seurô 70 rd(hr),b bit6, b
71 47 rdb,a b a 0,a
t tdi ,a 113 descentecurseurç 71 ld(hl),c bit 6,c
-74 inut ilis és 114 curs.versla gaucheQ tz rd(hr),d
48 l dc ,b b ir 1,b i nc,(c) bir6, d sbchl, sp
73 AO l d c ,c b it 1,c out (c),c 115 curs.versIa droite 0 IJ rd(hr),e bir6, e ld ( NN) , sp
74 4A l d c ,d b r t1,d adchl ,bc tto GRAPHICS 74 rd(ht),h bit6,h
75 4B l d c ,e b it 1,e l d bc,(N N ) 117 EDIT 75 rd(hr),1 bit6, 1
t6 l d c ,h b ir' 1,h 118 NEWLINE 76 halt bit6, ( ht )

182
AnnexeA AnnexeA

Code Caractère Hex Assembleur280 - aprèsCBh - après EDh Code Caractère Hex Assembleur 280 - après CBh - après EDh
11 9 RUB O UT 77 rd(hr),a bi t6,a ro I c tnve r se A1 andc r es4, c cpi
12O m ode8\ E 78 lda,b b i r7,b i na,(c) 162 6 inversé A2 andd r es4, d ini
121 FUNCTION 79 lo a, c bi t7,c out (c),a 163 7 inversé A3 ande r es4, e out i
122 inut ilis é 7A ld a, d b i r7,d edc hI en 164 8 inversé A4 anon res4,h
123 inut ilis é 7B id a, e b i t7,e l d sp,(N N ) 165 9 inversé A5 anoI r es4, 1
12 4 inut ilis é 11 ld a, h b i t7,h 166 A inversé A6 and( hl) r es4, ( hl)
12 5 inut ilis é 7D ld a, l bi r7,I 167 B inversé A7 anda r es4, a
126 nombre 7E ld a, ( hl) b i t7,(hr) 168 C inversé A8 xoro r es5, b ldd
12 7 c ur s eur r o a, a b i r7,a 169 D inversé A9 xorc res5,c cpd
128 I 80 add a, b res0,b 170 E inversé AA xord r es5, d ind
12s [| 81 add a, c r es0,c 171 F inversé ^a
xore r es5, e out d
130 E 82 add a, d res0,d | /z b rnverse AC xorh r es5, h
131 E 83 add a, e res0,e 173 H inversé AD xorI r es5, t
132 il 84 add a, h r es0,h 174 l i nversé AE xor( hl) r es5, ( hl)
133 [ a add a, l res0,1 | /5 J InVerSe AF xora r es5, a
134 E 86 add a, ( hl) r es0,(hl ) 176 K inversé BO or b r es6, b ldir
135 tl 87 add a, a res0,a 111 L inversé B1 or c r es6, c cpir
136 w 88 adc a, b res1,b 118 M inversé B2 or d r es6, d inir
137 d 89 adc a,c res1,c 179 N inversé B3 or e r es6, e ot ir
138 E 8A adc a, d r es1,d 180 O inversé B4 or h r es6, h
139 " inversé 8B adc a, e res1,e 181 P i nver sé B5 or l r es6, 1
140 t inversé 8C adc a, n res1,h 182 O inversé B6 or ( hl) r es6, ( hl)
141 $ inversé 8D adc a, l r es1,l 183 R i nve r sé 87 or a r es6, a
142 : inversé 8E adc a, ( hl) res1,(hl ) 184 S inversé B8 cpb r es7, b lddr
143 ? inversé 8F duu o,o r es1,a 185 T inversé B9 cpc r es7, c cpdr
144 ( inversé qn subb r es2,b 186 U i nve r sé BA cpd r es7, d indr
145 ) inversé
ql
subc res2,c 181 V inversé BB cpe r es7, e ot dr
146 ) inversé 92 subd res2,d 188 W inversé cph r es7, h
147 ( inversé 93 sube res2,e 189 X inversé BD cpl r es7, 1
148 : inversé 94 SUDN res2,h 190 Y inversé BE cp ( hl) r es7, ( hl)
149 * inversé 95 s u bI res2,1 191 Z i nve r sé BF cpa r esT, a
ntl
150 - inversé 96 s u b(h l ) res2,(hl ) lJz CO ret nz set0, b
151 " inv er s é 97 s u ba r es2,a 193 AT C1 popbc set0, c
152 98 s b ca ,b res3,b 194 TA B C2 jp nz, NN set0, d
/ inversé
153 99 s b ca ,c res3,c 195 i nuti l i sé LJ jp NN set0, e
; inversé '196
154 9A s b ca ,d r es3,d CODE C4 callnz, NN set0, h
, inversé
155 9B res3,e 197 VAL C5 pusnoc set0, 1
. inversé SDC A,C

156 0 inversé 9C SDC A, N res3,h 198 LE N C6 adda, N ser0, ( hl)


157 qn r es3,1 199 sl N C7 rst 0 set0, a
1 inversé SDC A,I
i 58 2 inversé 9E s b ca ,(h l ) r es3,(hl ) 200 cos C8 ret z set 1, b
159 3 inversé 9F s b ca ,a res3,a 201 TAN C9 ret set 1, c
160 4 inversé AO a n db res4,b tdi 2O2 ASN CA jp z, NN set l, d

184 tôc
AnnexeA AnnexeA

Code Caractère Hex Assembleur 280 - après CBh Code Caractère Hex Assembleur 280 - après CBh

zvJ ACS \-tr 244 POKE callp, NN set6, h


204 ATN c a l lz ,N N set 1,h 245 PRINT F5 pushaf set 6,1
205 LN CD callNN set 1,1 246 PLOT t-o or N set 6, ( hl)
206 EXP CE a d ca ,N set 1,(hl ) 247 RUN F7 rst 48 set 6,a
207 INT UT rst 8 eêt 1 a 248 SAVE F8 ret m set7, b
208 soR DO ret nc set2,b 249 RAND F9 ld sp, hl cêf7
^
209 SGN D1 popoe col? e 250 IF FA lp m , NN set 7,d
210 ABS D2 j p n c ,N N set2,d cLs FB set 7,e
211 PEEK n2 o u t N ,a ^^+a 4,ç^
)YL 252 UNPLOT FI
callm , NN set7, h
212 USR D4 c a l ln c ,N N set2,h 253 CLEAR FD préfixelesins-
213 STR$ D5 p u s no e set2,1 turctionsaveciy set7, 1
214 CHR$ D6 s u bN set2,(hl ) 254 RETURN FE cpN ser7, ( hl)
NOT D7 rs t tb ) Yt z,d 255 COPY FF rst 56 set7. a
216 ** D8 ret c set3,b
217 OR D9 EXX set3,c
218 AND DA j p c ,N N set3,d
219 <: DB i na ,N set3,e
220 >: DC c a l lc ,N N set 3,h
221 DD p ré fi x el e si n s -
tructionsavecix set 3,l
222 THEN DE s b ca ,N ser3,(hl )
223 TO DF rs l 2 4 set3,a
aa^
STEP EO ret po set4,b
225 LPRINT r4
tr l popnl set4,c
zzo LLIST trz tp p o ,N N set4,d
227 STOP trJ e x (s p ),h l A
^^+ 9,ç
5V( ^

228 SLOW c a l l p o ,N N set4,h


zzJ FAST E5 p u s hh l set4,I
z.5v NEW E6 a n dN set4,(hl )
zJl SCROLL E7 rst 32 ^^+ t +,o
)E ^ ^

232 CONT E8 reï pe set5,b


DIM E9 J p(h l ) set5,c
zJ4 REM EA j p p e ,N N set5,d
235 FOR EB e x d e ,h l na+E
JçL J,g
n

t ôo GOTO EC c a l lp e .N N set 5,h


zJl GOSUB ED setb,l
238 INPUT EE xor N set 5,(hl )
239 LOAD EF rst40 set 5,a
240 LIST FO ret p set6,b
a4
241 LET TI p o pa f set6,c
z4z PAUSE F2 j p p ,N N set6,d
l.+ô NEXT F3 ol set6,e

186
AnnexeB

Codesdescomptes{endus
La table suivanteest une liste descodesdescomptes-rendus accompagnée d'une descrip-
tion généraleet d'une liste des cas dans lesquélschaquecompte-rendupeut intervenir.
L'annexeC contientune descriptionplus détailléede la signification
descomptes-rendus
pour chaqueinstructionou fonction.

Code Signif ication Situation(s)


0 Achèvementréussi,ou saut à un numérode ligne Non spécifique
plus grandque les numérosexistants.Un compte-
renduavecun code0 ne modifiepasle numérode
l i gneutiliséparCO NT.
i La variablede contrôle n'existepas (n'a pas été NEXT
établ i ep ar une inst r uct ionFO R) m aisil exist eune
variablestandardportant le mêmenom.
2 La variablequi a été utiliséeest indéterminée. Nonspécifique
P our u ne var iablesim ple,ceci int er vientsi la
variableest utiliséeavantd'avoirété l'objet d'une
affectationdansune instructionLET.
Pour une variableindicée,ceci se produit si la
variableest utiliséeavantd'avoirété dimensionnée
dansune instructionDlM.
Pour une variablede contrôle,ceci se produit si la
variableest utiliséeavantd'avoirété établiecomme
variable de contrôle dans une instructionFOR.
lorsqu'il n'existepas de variablesimplestandard
oortant le mêmenom.
3 l ndi ceh or sint er valle. Variablesindicées
Si l'indice est en dehors de l'intervalleautorisé
(négatifou supérieur à 65535),l'erreurB estlancée.
4 Pasassezde placeen mémoire.Noterque le numéro LET, I NPUT,DI M , PRI NT,
de la ligne écrit dans le compte-rendu(aprèsle LIST, PLOT, UNPLOT,
symbole/) peut être incompletsur l'écranà cause FOR, GOSUB.Parfoispen-
de l a pénur iede m ém oir e: par exem ple, 412û peut dant l'évaluationd'une
se présentersousla forme412.Voir le chapitre23. fonction.
P ourGO SUB,voir l'exer cice 6 du chapit r e14.
5 Plusde placesur l'écran.CONT permetde dégager PRI NT,LI ST.
de la placeen effaçantl'écran.
6 Dépassement de capacitéarithmétique: lescalculs N'importequelle opération
ont donnéun nom br esupér ieur à 1038envir on. ar it hm ét ique.
7 ll n'y a pas de GOSUB correspondant à une ins- RETURN
tructi onRETURN.
AnnexeB Annexe C

Code Signification Situation(s) Le ZX81 pour ceuxqui comprennent


le BASIC
8 Vous aveztenté d'utiliserINPUT commecomman- IN P U T Généralités
de ( c ec es
i t inte rd i t). Si vousconnaissez déjà le BASIC,vous n'aurezcertainement pasbeaucoupde problèmes
CONT ne tente STOP pour utiliserle ZX81 ; toutefois,il faut quandmêmesignalerune ou deux idiosyncrasies.
9 L'instructionSTOPa été exécutée.
S TOP .
pasune nouv e l l ee x é c u ti o nd e l ' i n s tru c ti o n (i) Les mots ne doivent pas être orthographiés, ils disposentd'une touchequi leur
est propre- ce point est traité au chapitre2 (pour les motscléset lestouchesen posi-
A A r gum entint e rd i tp o u r c e rta i n efo
s n c ti o n s . S OR ,LN , A S N , A C S
tion majuscules) et au chapitre5 (pour le nom des fonctions).Dansle texte, ces mots
B R U N , R A N D , P OK E ,
E nt ierhor s in te rv a l l eL. o rs q u ' u ne n ti e re s t requi s, sontécrirsen CARACTÈBESGRAS.
l' ar gum ent D IM, GOTO,GOS U B ,
en v i rg u l efl o tta n tee s ta rro n d ià l ' enti er (i i ) Le B A S I Cdu ZX81 est dépour vudesinst r uct ions READ, DATAet BESTO RE( à
LIS T, LLIS T,P A U S E ,
le plusv ois in .Si l e ré s u l taet s t e n d e h o rsd ' u n i n- ce sujet,voyez l'exercice3 du chapitre22),desfonctionsdéfinies par I'utilisateur(FN et
t er v alleaut or i s é ,l ' e rre uBr e s t l a n c é e . P LOT,U N P LOT,C H R $, DEF; maisVAL peut parfoisêtre utilisée)et deslignesà plusieursinstructions.
P E E K ,U S R (iii) Les fonctionsde traitementdeschaînessont complètesmaisnon standard(voir le
Pour I'accèsdestableaux,voir également lecompte- Accèsde tableau chapi tre21 ai ns ique le chapit r e22 pour lest ableauxde chaî nes) .
rendu3. (iv) Le jeu de caractères du ZX81 estspécifiqueà cettemachine.
C Le texte de l'argument(chaîne)de VAL n'estpas VAL (v) De façongénérale, l'affichagesur le téléviseurne correspondpasà un topogramme
u ne ex pr es s i onnu mé ri q u ea u to ri s é e . mémoi re.
(vi )S i vousa vezl'habit uded'ut iliserPEEK et PO KE sur uneaut r em achine, n'oubliez
D ( i) P r ogr am mien te rro m p up a r B R E AK . A l a f i n de n' i mportequel l e
pasque touteslesadresses sont différentessur le 2X81.
instructionou dansLOAD,
S A V E , LP R IN T,LLIS TOU
COPY. Vitesse
( ii) La ligneI N P U Tc o mme n c ep a rST OP . IN P U T La machinetravailleà deux vitesses- normaleet rapide,c'est-àdiremode calcul et
affichageet mode rapide.
lnut ilis é En mode calculet affichage,l'imageprésentée sur le téléviæurest générée en continu
Le nom donn ép o u r l e p ro g ra m m e s t u n e c haîne SAVE et lescalculssont faits pendant
les parties
videsen haut et en basde l'image.
v r de. En mode rapide,l'imageest misehorsfonctionpendantlescalculs,elleapparaÎtseule-
ment à la fin d'un programme.pendantque la machineattend une entréede donnée
INPUT ou pendantune pause; voir l'instructionPAUSE.
Le moderapidetravailleenviron4 fois plusvite, il doit être utilisépour lesprogrammes
comportantde nombreuxcalculset non des résultatsvolumineuxou bien pour entrer
desprogrammes longs.
LesinstructionsFAST et SLOWpermettentde passerd'unevitesseà l'autre.

Le clavier
Les caractères du ZX81 ne comprennentpas seulementles symboles(lettres,chiffres,
etc.) maiségalement lesjetonscomposés(mots-clés, nomsde fonctions,etc.).Dansce qui
suit, ils sont imprimésen majuscules CARACTÈRESGRAS,et leur entréesefait toujours
par le clavieret non lettreà lettre.Pourpermettrece gainde temps,certaines touchesont
jusqu'à cinq significationsdifférentesqui s'obtiennenten partie en manæuvrantles
touchesen positionmajuscules (c'est-àdireen appuyantsur la touchemajuscules SHIFT
en même temps que sur la touche requise)eten partiepar la sélectiondu modede travail
de l a machi ne.
Le mode est indiqué par le curseur,une lettre en vidéo inversée, dont le rôle est de
montrerla positionà laquelleserainséréle prochaincaractèreprovenantdu clavier.

191
AnnexeC
AnnexeC

A u fur et à m esur ede l'ent r éede lignesde pr ogr am m e, une list eest af f ichéesur la
Le modeEl (K représentemot-cléen anglais- keyword)est mis en æuvreautomatique-
moi ti é supérieur de e l'écr an.Lesm odalit ésd'élabor at ion de la list esont plut ôt com pli-
ment lorsquela machineattend une commandeou une lignede programme(plutôt que
quées,l ' expl i cat ionplusdét ailléede cet t eopér at ionf igur eà l'exer cice6 du chapit r e9.
desdonnéesd'entrée)et, à partir de sa positionsur la llgne,le mode sait s'il doit atten-
dre un numéro àe ligne ou un motclé. Ceciest vrai en début de ligne,immédiatement La derni èrel i gneà ent r ers'appellela [ gne en cour sou lignecour ant e,elle est indiquée
par l e symboleEl, m ais une m odif icat ionpeut int er veniren m anceuvr ant lest ouches'>
aprèsquelqueschiffresau début de la ligne ou tout de suite aprèsTHEN. En position
normale,la prochainetouche manæuvrée serainterprétéesoit commeun motclé (écrits
(6 en posi ti o nm ajuscules) et o ( 7 en posit ionm ajuscules) Si. vousappuy€zsur EDI T
pour la plupartendessusdestouches),soit commeun chiffre.
(1 en posi ti onm ajuscules) la, ligneen cour sestdescendue e isedansla par t ie
c'est - à- dirm
i nféri eure de l ' écr an.elleoeut m aint enant êt r eédit ée.
Le mode ll (la lettre L représentele mot lettre) est habituellementutilisé à d'autres Lorsqu' unecom m andeest exécut ée,ou bien à l'exécut iond'un pr ogr am m e, l'écr an
moments.En position normale,la touche suivanteest interprétéecomme le symbole est d'abordeffacéet le résultatest ensuiteaffichésur sa partie supérieure où il demeure
principalqu'elle porte. j usqu' à l ' entréed'une ligne de pr ogr am m eou jusqu'aum om ent où vous m anæuvr ez
Dans les modesK et ll, lestouchesen positionmajuscules sont interprétées comme N E W LIN E ave cune lignevide, ou encor ejusqu'à la m anæuvr ede c ou ô. La par t ie
le caractèrerougesubsidiaire inscritdansle coin supérieurde droite de la touche. inférieureprésentealors un compte-rendude la forme m/n où m est un code précisant
ce qui est arri vé( voir l'annexeB) et n est le num ér ode la der nièr eligneexécut ée- ou
Le modeH (fonctions)entre en jeu aprèsune manæuvrede FUNCTION (NEWLINE
0 pour une co m m ande.Le com pt e- r endu dem eur esur l'écr anjusqu'àI a pr ochainem a-
en positlon majuscules) et dure seulementpendantune manæùvred'une touche.Cette
nceuvre d' unet ouche( et indiquele m odeE) .
touche est interprétéecomme un nom de fonction; les noms de fonction sont écrits
D anscertainscas,la t oucheSPACEjoue le r ôle de BREAK,c'est - àdir equ'ellear r êt e
souslestouches.
l'ordinateuren lançantle compte-rendu D. Ceciest reconnu:
Le mode G (mode graphique)est mis en ceuvrelorsquela touche GRAPHICS(9 en (i ) à l a fi n d'une inst r uct ionpendantl'exécut ion d'un pr ogr am m e,
position majuscules) a été utilisée,il demeureen activitéjusqu'à la prochainedépres- (i i ) penda ntque la m achiner echer che un pr ogr am m sure bande,
sion de cette touche. Une touche en positionnormaledonnela vidéo inverséede son ou (i i i ) pendantque l'or dinat eur ut iliseI 'im pr im ant e( ou encor elor squ'ilessaye parer r eur
interprétationen mode ll. Une touche en position majuscules donne le même résultat de l ' uti l i ser,al o r squ'ellen'est pas r eliée au syst èm e) .
s'il s'agitd'un symbole,maissi en positionmajuscules, cettetouchedonnenormalement
un j e to n,en m odegr aph i q u èe,l l ed o n n el e s y mb o l eg ra p hi que
i nscri tdansl e coi ni nféri eur
de droite de la touche. Le BASIC
Les nombressont stockésavecune précisionde 9 à 10 chiffres.Le plus grandnombre
L'écran est 1038envir onet le pluspet it nom br e( posit if )est4*10- 3eenvir on.
uti l i sabl e
L'écranest composéde 24 lignescontenantchacune32 caractères ; de plus, il est divisé D ansl e 2X81, les nom br essont st ockésen binair een vir gulef lot t ant eavecun oct et
en deux parties.La partie supérieurepeut avoir 22lignesau maximumpour afficherune
exoosante (1 ( e ( 255) et quat r eoct et sde m ant issem \ 112( m ( 1) . Cecir epr ésen-
liste ou le résultatd'un programme.La partieinférieuredeux lignesau moins- sertpour
te le nombre
l'entréedes commandes, deslignesde programmeet desdonnéesainsique pour la présen- ^62e-r28
P ui squenous avonsla r elat ion1124 m ( 1, le bit le plussignif icat ifde la m ant isse
tation descomptes-rendus.
m est toujours 1. Parconséquent, en pratique,nouspouvonsle remplacerpar un bit pour
EnTrées oar le clavier: cesdonnéessont affichéessur la partieinférieurede l'écranau indiquerle signe- 0 pour lesnombrespositifs,1 pour lesnégatifs.
fur et à mesurede leur entrée,chaquecaractère{symbolesimpleou jeton composé)étant Zérobénéficied'une représentation spéciale danslaquelleles5 octetssont à 0.,
inséréimmédiatementavant le curseur.Le curseurpeut être déplacévers la gaucheen Lesvariablesnumériquesont des noms de longueurarbitraire; cesnomscommencent
manæuvrantla touche 0 (5 en positionmajuscules) ou versla droite avec0 (8 en position par une lettre et æ poursuiventpar des lettreset des chiffres.Tous lescaractères sont
majuscules). Le caractère quiest avantle curseurpeut être suppriméà l'aidede RUBOUT de sor t eque, par exem ple,LO NG NAM Eet LO NG NAM ETO O
si gni fi cati fs sontdesnom s
(0 e n p os it ionm ajus c u l e s(N
). o ta : u n e l i g n ec o mp l è t epeut êtresuppri méeen appuyant différents.Lesespaces sont ignorés.
su r EDI T ( 1 en pos it io nm a j u s c u l e se)t e n s u i tes u r N E W LIN E ; ou encore,s' i l s' agi tde Lesvariablesde contrôledes bouclesFOR-NEXT sont désignées par desnomsd'une
donnéesd'entréeINPUT,en manceuvrant seulementEDIT). seule lettre.
Les tableauxnumériquessont désignés par des noms d'une seulelettre, le nom d'un
el l eest mi sedansl e programme
L o rsquev ousut ilis e zN E WL IN E,Ial i g n ee s te x é c u tée,
ou utiliséecommedonnéed'entréeINPUT suivantle cas.saufsi ellecontientune erreur tabl eaunumér iquepeut êt r e le m êm eque celuid'une var iablesim ple.lls peuventavoir
de syntaxe.Dansce cas,le symboleElapparaîtjusteavantl'erreur. arbi trai rement plusieur dim
s ensions de longueurar bit r air e.Les indicescom m encentà 1.

193
192
AnnexeC AnnexeC

La longueurdes chaînesest variable.Le nom d'une chaîneest composéd'une seule Fonction Type de l'o1Érande Résultat
lettre ,su i v ide $. ( x)
Les tableauxde chaînespeuventavoir arbitrairementplusieursdimensionsde taille
ar b i tra i re.Le nom es t une s e u l el e ttres u i v i ed e $ . m a i sl e nom d' un tabl eaude chaînes ABS nomDre Valeurabsolue
ne p e u t p a sêt r e le m êm eq u e c e l u id ' u n ec h a în e .T o u te sl eschaînesd' untabl eaudonné nomore Arc cosinusen radians.
ACS
doivent être de la même longueurfixe ; cette longueurest spécifiéecommedimension Er r eurA si x n'estpasdansl'int er valle
- 11+1.
su p p l é ment airf inale
e dansl ' i n s tru c ti o nD l M . L e si n d i c e scommencentà 1.
Découpage: Des sous-chaînes de chaînespeuventêtre spécifiéesen utilisant des AND opér at ionbinair e,
séoarateu rs. opérandede droite
Un séparateur peutêtre toujours
un nom br e
(i )vi d e
ou num ér ique
opér ande
(i i ) u n eex pr es s ion
num é ri q u e Asi B*0
de gauche: AANDB: f
ou i os i g:o
(iii) une expression numériquefacultativeTO expression numériquefacultative opérandechaîne
et s'utilisepour exprimerune sous-chaîne,
soit par de gauche ASANDg: JA$si B*0
\ "t 'si B: 0
(a) une expression de chaîne(séparateur)
soit ASN nombre Arc sinusen radians.
(b ) p a r unev ar iablede ta b l e a u xd e c h a în e s(i n d i c e ,...
i ndi ce,séparateur) Er r eurA si x n'estpasdansI 'int er valle
- 11+1.
ATN nom br e Arc tangenteen radians.
qu i si g n i fi ela m êm ec hos eq u e
CHR$ nomore Le caractère dont le codeestx,arrondià l'entier
variablede tableaude chaînes(indice,... indice)(séparateur) le pluspr oche.
ErreurB si x n'estpasdansl'intervalle01255.
En (a ),s uppos ons que l' e x p re s s i ocnh a în ea l a v a l e u rs $.
CODE chaî ne Le code du premiercaractèredans x (ou 0 si
Si le séparateur est vide, le résultatest s$ qui est considérée cornmeune sous-chaîne. x est la chaînevide).
Si le séparateurest une expressionnumériquede valeur m, le résultatest le mième
caractère de s$ (unesouschaînede longueur1). cos nombre(en radians) Cosinus
Si le séparateur estde la forme (iii), supposons que la premièreexpression numériquea EXP nom br e e"
la va l e u rm ( la v aleurpar d é fa u te s t 1 ), e t l a d e u x i è m en, (l aval eurpar défautest l a l on- INKEY$ néant lit les claviers.Le résultatest le caractèrerepré-
gue u rd e s$ ) . sentant(en mode[l) la touchemanæuvrée s'il y
Si 1 < m ( n longueurde s$, le résultatest la souschaînede s$ qui commenceau en a une exactement,ou, autrement,la chaîne
mièmecaractère et setermineau nième. vide.
Si 0 < n ( m. le résultatest la chaînevide.
INT nombre Partieentière(toujoursarrondiepar défaut).
Autrement,le compte-rendu d'erreur3 est lancé.
Le découpageest exécutéavant l'évaluationdes fonctionsou des opérations,sauf si LEN chaîne Longueur
desparenthèses modifientcet ordre. LN nombre Logarithmenaturel(basee). Une erreurA Inter-
Lessouschaînes peuventfaire l'objet d'affectations(voir LET). vient six( 0.
L'argumentd'unefonction peut être dépourvude parenthèses si c'estune constanteou NOT nombre 0six*0, 1six: 0.
unevariable(éventuellement indicéeou séparée). NOT a la priorité4.
OR opérationbinaire AO R B: ! l siB+û
lesdeux opérandessont lAsi B: 0
desnombres O R a la pr ior it é2.

195
AnnexeC AnnexeC

Fonstion Type de l'opérande Résultat Supérieurou égalà


PEEK nombre Différentde.
La valeur de l'octet en mémoire dont l'adresse
est x (arrondià l'entierle plusproche).
Lesprioritésdesfonctionset des opérationssont lessuivantes:
L'erreur B est lancée si x est en dehors de
l'intervalleA/65535.
Opération Priorité
PI néant r (3 .1 4 1 5 9 2 6 5 ).
lndiçageet découpage 12
RN D néant Le prochain nombre pseudo-aléatoire y dans
TouteslesfonctionssaufNOT et le moinsunaire 11
une séquencegénéréeen prenant lespuissances ** 10
de 75 (modulo 65537, en soustrayant1 et en Moi nsunai re I
d i v i s a npt a r6 5 5 36.)0 ( y ( 1. * ,1 g
SGN nombre S i g n e: l e s i g n e(-1, 6 ou * 1) de x. *,- (-binaire) 6
srN nombre(en radians) Sinus =, ), (, (:, ): , () 5
soR nombre Racinecarrée
NOT 4
AND
L'erreurB intervientsi x < 0.
OR 2
STRS nombre La chaîne de caractèresoui serait affichée si
x était écrit. Instru_Qtions
TAN nombre(en radians) Tangente
Dansla listesuivante,
USR nombre Appelle le sous-programmeen langagemachi-
a représenteune æule lettre
ne dont l'adressede début est x (arrondie à
représenteune variable
l'entier le plus proche).Au retour, le résultat
x,Y,z représententdesexpressionsnumériques
est le contenude la pairede registresbc.
m,n représentent desexpressions
numériques arrondiesà l'entierle plus proche.
L'erreur B est lancéesi x n'est pas dansl'inter-
e représenteu ne expression
valle0/65535.
f représenteune expressionvaloriséeen chaîne
chaîne Evalue x (æns ses guillemetsde séparation) représenteune instruction
commeune expression numérique.
L'erreurC intervientsi x contientune erreurde Notez que lesexpressions partout (saufle numérode ligne
arbitrairessont autorisées
syntaxeou donneunevaleurde chaîne. qui doit être au début d'une instruction).
D'autres erreurs sont possibles,selon l'expres- Toutesles instructionsà l'exceptionde INPUT peuventêtre utiliséescommecomman-
sion. desou dansdes programmes(bien qu'ellespuissentêtre plus utilesdansun casque dans
nombre Négation l ' autre).

La liste suivantereprendlesopérationsbinaires:
C LE A R Supprime toutes les variableset libère l'espacequ'elles
+ Addition (de nombres)ou concaténation (dechaînes) )
occupaient.
Soustraction
* M ult iplic at ion cLs (Clear Screen: effacementécran) efface le fichier d'affi-
Division chage.Voir au chapitre 27 les explicationsrelatives.au
** Ëlévationà une puissance.L'erreur B est lancéesi l'opérandede gaucheest négatif. fichierd'affichage.

:l Egal Lesdeux opérandesdoivent être CONT Si p/q était le dernier compte-renduavec une indication
Supérieur à du rnêmetype. Le résultatest un autreque zéro,CONT a l'effet suivant
lnférieurà nombre,1 si la comparaison est I G O TO qsip#9
(=[ Inférieur ou égalà vérifiéeet 0 si elle ne l'estpas. t G O TOq*1 si p: 9 ( inst r uct ion
STO P)

196 197
A n n e xeC AnnexeC

COPY E n v o i eà I' i m p ri ma n te(s i e l l e est connectée) une copi edu IN P U Tv Arrête (sansmessage particulier)et attend que l'utilisateur
contenude l'écran; autrement,cettefonction n'agitpas. entre une expression; la valeur de cette expressionest
Contrairementà toutes les autrescommandes,une com- af f ect éeà v. En m ode r apide,le f ichierd'af f ichage
est m is
mandeCOPY n'effacepasd'abordl'écran.Lesespaces sont sur l'écr an.I NPUT ne peut oasêt r e ut iliséecom m ecom -
interditsavantCOPY. mande; l'erreur8 intervientsi vousessayez cetteopération.
Le compte-renduD est lancé si la touche BREAK est Si le premiercaractère de la ligned'entréeINPUT estSTOP,
manæuvree. le programmes'arrêteet lancele compte-rendu D.
Dl Ma (n 1, . . . , nr ) Su p p ri m el e ta b l e a ud é s i gnépar l e nom o et établ i t un LE Tv:e Affecte la valeurde e à la variablev.
ta b l e a ua d e n o mb re sà k di mensi ons o1, ,nk. Met LET ne peutpasét r eom ise.
touteslesvaleursà zéro Une var iablesim pleest indét er m inée jusqu'aum om entoù
L'erreur4 intervients'il n'y a pasassezde placepourcaser sonaffectationintervientoarune instructionLET ou I NPUT.
l e ta b l e a u .U n ta b l e a ud e meurei ndétermi né j usqu' aumo- Si v est une variablechaîneindicéeou une variablechaîne
me n to ù i l e s td i m e n s i o n ndans
é une i nstructi onD l M. séparée(souschaîne), l'affectationestdu typede Procruste;
Dl Me $ (nr , . . . , nr ) Su p p ri m el e ta b l e a uo u l a chaînedési gnépar l e nom a$ et la valeur chaîne de e est tronquée ou remplie avec des
é ta b l i tu n ta b l e a uq $ d e c a ractères à k di mensi onsn1, . . . nk. espaces à dr oit e pour lui donnerla m êm elongueurque la
Met touteslesvaleursà " ". Cecipeutêtre considérécomme var iablev.
u n ta b l e a ud e c h a în e d s e l ongueurfi xe np à k-r dl mensi ons LIS T LI ST O
llr ,...l' lk- r .
LIS T N Et ablit la list edu pr ogr am m esur la t élévision
à par t irde la
L'erreur4 est lancées'il n'y a pas de place pour caserle
j usqu' aumomentoù i l
. n ta b l e a ue s t i n d étermi né
ta b l e a u U lettren et fait de n la ligneen cours.
e s td i me n s i o n ndéa n su n e i nstructi onD l M. L'erreur4 ou 5 est lancéesi la liste est trop longuepour
être mise sur l'écran; CONT refait exactementla même
FAST Lancele mode rapidedanslequelle fichier d'affichageest chose.
t i s s u r l ' é c ra nà l a fi n du programme,
s e u l e m e nm pendant
LLIS T LLI ST O
l'entréeINPUTde donnéesou pendantune pause.
LLIS Tn Com m eLI ST, m aisavecl'im pr im ant eau lieudu t éléviseur .
FOR q :x T O y F OR c :x T C y S T EP1 .
Doit demeurer sanseffet si l'imprimanten'estpasconnectée.
FOR c:x T O y S T E Pz Su p p ri m en ' i mp o rteq u e l l evari abl esi mpl eo, et établ i tune Arrêt avec lancementdu compte-renduD si la touche
v a ri a b l ed e c o n trô l eà l a v a l eurx, avecl a l i mi tey, au pasz BREAK est manæuvrée.
et dont l'adresse de boucleest 1 de plus que le numérode
LOA D f Recherche sur la bandemagnétique un programmeappeléf
l i g n ed e l ' i n s tru c ti o nF OR (-1 s' i l s' agi td' unecommande).
et le chargeavecsesvariables.
V é ri fi e s i l a v a l e u ri n i ti a l eest supéri eure(si pas> - ûl ou
si f : "", le programmechargéest le premierprogramme
i n fé ri e u re(s i p a s < û \ à l a l i mi te et, dans l ' affi rmati ve,
d isponible.
s a u teà l ' i n s tru c ti o nN E XT c au débutd' unel i gne.
Si vousut ilisezBREAK ou si uneer r eurde bandeestdét ec-
V o i r N E XT o . +6a
L ' e rre u r4 i n te rv i e nst ' i l n ' y a pasde pl acepour l avari abl e ( i) si un pr ogr am m en'a pasencor eét é lu sur la ban-
de contrôle. de, un arrêt intervientavecun compte-renduD et l'ancien
Me t l e n u m é ro d e l i g n e de l ' i nstructi onGOS U Bdans l a pr ogr am m e;
( ii) si unepar t ied'un pr ogr am m a
e déjàét é m isedans
p i l e ; p u i s ,c o mmeGOT O n .
la m achine,il y a exécut ionde NEW.
L ' e rre u 4 r p e u t i n te rv e n isr ' i l n' y a pasassez
de R E TU R N .
LP R IN T Com m ePRI NT, m aisavecI 'im pr im ant eau lieu du t élévi-
Sa u teà l a l i g n en (o u b i e n,s' i l n' y en a pas,à l a premi ère
seur .Une lignede t ext eestt r ansm ise à l'im pr im ant e
Iignesuivante).
( i) lor squel'écr it ur edébor ded'uneligneà lasuivant e,
I FxTHEN S S i x e s t v é ri fi é ,(n o n -n u l )s est exécuté.La forme " l F x ( ii) apr èsune inst r uct ionLPRI NT qui ne se t er m ine
T H E N n u mé rod e l i g n e "e st i nterdi te. paspar unevir guleou par un point vir gule,

199
A n n e xeC AnnexeC

(i i i ) l o rs q u ' u n ev i rg ul eou une rubri quede TA B exi ge


Une rubriquePRINT peut être
une nouvelleligneou encore (i) vide,c'est-àdirerien.
(iv)à la fin du programme, s'il resteencoredeschoses
( ii) uneexpr ession num ér ique.
non écrltes.
Un signemoinsestécrit au début si la valeurest néga-
Dansune rubriqueAT, seulle numérode colonnea un effet. x le m odulode la valeur .
t ive.Soit m aint enant
Le numéro de ligne est ignoré (sauf que les mêmescas Si x ( 10- s ou x) ; - 1013, l'écr it ur esef ait ennot at ion
d ' e rre u rq u e p o u r P R IN Tont l i eusi l e numéroesten dehors scientifique.La partie mantisse contient8 chiffresau maxi-
d e l ' i n te rv a l l a e u to ri s é ). U ne rubri queA T netransmet j amai s
m um ( sanszér osde f in) et la m ar quedécim ale( om ises'il
u n e l i g n ed e te x teà l ' i mp ri mante. n'y a qu'un chiffre) est placéeaprèsle premierchiffre. La
Cette instructiondoit être sanseffet si l'imprimanten'est partieexposantest E suivide * ou - suivid'un ou de deux
pas connectée.Arrêt avec le compte-renduD si la touche chiffres.
BREAK est manceuvrée. Autrement,x est écrit en notationdécimalenormale
NEW Provoqueun démarrage"à neuf" du systèmeBASIC et avecI chiffres significatifsau maximum,pas de zérosde
s u p p ri m a n tl e s p ro g ra mmes et l es vari abl es et uti l i santl a fin aprèsla marquedécimale.Une marquedécimaleplacée
mémoire jusqu'à l'octet (non compris)dont l'adresseest immédiatementau début est toujours suivied'un zéro de
dansla variablesystèmeRANBOT (octets16388et 16389). sorte que, par exemple,.A3 et 0.3 sont imprimésde cette
N EXTA (i ) T ro u v el a v a ri a b l ed e contrôl ec. façon.
(ii) Ajoute son pasà savaleur. 0 est im pr im ésousf or m ed'un seulchif f r e0.
(i i i ) S i l e p a s è 0 e t l a v a l e ur) l a l i mi te,ou ( iii) uneexpr ession chaî ne.
s i l e o a s1 û e t l a v a l e ur( l a l i mi te, Lesjetonsde la chaînesont agrandis, éventuellement
e t p a s s e n s u l teà l a l i gnede l a boucl e. au moyend'un espaceavantou après.
L ' e rre u r1 e s t l a n c é es ' i l y a unevari abl esi mpl eo. Le caractèreimageguillemets'écritsousla forme'".
L ' e rre u r2 i n te rv i e n st ' i l n ' v a ni vari abl esi mpl eni vari abl e Les caractèresinutiliséset les caractères de contrôle
d e c o n trô l ec . sontécritssousla forme ?.
PAUSEn Arrê te l e ' c a l c u l e t m e t l e fi chi er d' affi chagesur l ' écran ( iv) AT m , n
oendant n trames (à raisonde 50 tramespar seconde)ou La posit iond'écr lt ur epasseà la lignelm l ( com pt ée
jusqu'aumomentoù une toucheest manæuvrée. à partir du haut) et la colonne n (comptéeà partir de la
0 ( n < 65535 ou autrement,lancementde l'erreur B si gauche) .
n 2 32761,la duréede la pausen'estpascomptéeet celle- 0 ( lm l < 21. aut r em entl'er , r eur5 est lancéesilm l : 22
ci dure jusqu'aumoment où vous manceuvrez une touche. ou 23, autrement l'erreur B est lancée.
(l ml ,l n ); met l a posi - 0 ( lnl ( S1, aut r em entI,'er r eurB int er vient .
PL OTm , n F a i t d e v e n i rn o i r l ' é l é m e nt' d' i mage
(v) TAB n
ti o n d ' é c ri tu reP R IN T à cel l equi est i mmédi atement après
n est réduit modulo32. Ensuite,la positiond'écriture
cet élémentd'image.
PRI NT est m iseà la colonnen, sur la m êm eligne,saufs'il
0 l ml ( 0 3 ,0 | n l < 4 3 ; autrementl ' erreurB est l ancée.
entraîneun déplacement en arrière; dansce cas,.laposition
POKEm , n Ecrit la valeurn à l'octet de mémoiredont I'adresseest m.
d'écriturepasseà la lignesuivante.
0 ( m < 6 5 5 3 5 .-2 5 5 < n ( 255 ; autrement,l ' erreurB
0 ( n ( 255, autrement,l'erreurB est lancée.
est lancée.
t' L'inser liond'un point vir guleent r e deux r ubr iques
PRINT. . . Les ." représententune séquencede rubriquesde laissela positlond'écritureinchangée, de sorteque la deu-
PRINT séparées par des virgulesou des points virgules; xièmerubriqueest placéeimmédiatement aprèsla première.
ces rubriquessont écrites sur le fichier d'affichagepour Parcontre.unevirguledéplace la position d'écriturePRINT
présentation sur le téléviseur.La position(ligneet colonne) d'une posit ionau m oinset . ensuit e,du nom br ede posit ions
à laquellele prochaincaractèredoit être écrit est appelée r equises'pour qu'ellesoit dans la colonnezér o ou dansla
p o s i ti o nd ' é c ri tu re(P R IN T). colonne16, avecune nouvellelignesi nécessaire.

201
AnnexeC I ndex

A l a fi n d ' u n e i n s tru c ti onP R IN T qui ne se termi ne lndex


p a s p a r u n p o i n t v i rg u l eo u par une vi rgul e,une nouvel l e
Cet index reprendlestouchesdu clavieret la façon de s'enservir- 81 ,tr, Eou G
l i g n ei n te rv i e n t.
en positionmajuscules
ou non) ainsique leurscodes.
L ' e rre u r4 (h o rsm é m o i re )p eut i ntervenisi r l a capaci téde
une indicationn'est citée qu'une fois par chapitre; par conséquent,
Habituellement,
mé mo i ree s td e 3 K o u m o i n s.
lorsquevous aveztrouvé une référence,vous devezlire le restedu chapitre,exercices
L ' e rre u r5 s i g n i fi eq u e l ' é c ranestpl ei n.
comori s.
Danslesdeux cas,le remèdeestCONT,qui effacel'écranet
d é c l e n c hlea c o n ti n u a ti o nd e sooérati ons.
RAND RAND O
RANDn E ta b l i t l a v a ri a b l es y s tè me(a ppel ée S E E D: base)qui sert A
à g é n é re rl a v a l e u rs u i v a n tede R N D . S i n # 0 S E E Dest ABS E, surG.code210 JI
mi s eà l a v a l e u rn i s i n : 0 , el l e est mi seà l a val eurd' une ACS El . surS.code203Arc cosinus 31
a u tre v a ri a b l es y s tè m e(a p p el éeFR A ME S - trames)qui A ddi ti onde chaî nes 43
compte les tramesdéjà misessur le téléviseuret doit être Adresse tol
relativement aléatoire. - d'unroctet t0l
L ' e rre u rB i n te rv i e nst i n n ' e stpasdansl ' i nterval l 0 e 65535. - de retour 93
REM. . . Pasd'effet. ' . " peut être une séquence quelconquede Affecté 37
caractères à l'exceptionde NEWLINE. Aléatoire 32
Algèbre 21
RETURN E x tra i tu n n u mé rod e l i g n ede l a pi l ede GOS U Bet sauteà
A LGOL 21
l a l i g n eq u i l e s u i t.
A l i mentati o n 25,1
L ' e rre u r7 i n te rv i e n st ' i l n' y a pasC enumérode l i gne
d a n sl a p i l e . Vo tre p ro g ra mme doi t conteni runeerreur; l es AND K, ou l! 2 en positionmajuscule.
code2'l8 218
APL 68
GOSUB ne correspondentpas exactementaux RETURN.
Appel 21
R UN RUNO A rgument 93
R UNn C L EA R .e t e n s u i teGOT O n . Arrondissement (y compris à l'entierle plusproche) 28,34,80
SAVEf E n re g i s tres u r b a n d e l e p ro grammeet l es vari abl es et l es ASN El , surA. code202Arc sinus 31
d é s i g n ef. S AV E n e d o i t p a sêtre uti l i séedansune routi ne AT El. surC.code193 44, 115,133
GOS U B . ATN E, surD. code204 Arctangente 31
L'erreurF irrtervientsi f est la chaînevide,ce qui est
i n te rd i t.
S C ROL L F a i t re mo n te rl e fi c h i e rd ' a ffi chaged' unel i gne,provoquant
B
l a p e rted e l a p re mi è rel i g n ee t i nsérantunel i gnevi deenbas.
N B : L a n o u v e l l el i g n ee s t v éri tabl ement vi de, pui squ' el l e Bandemagnétique
n'est composéeque d'un caractèreNEWLINE sansaucun - stockagesur'bandemagnétique 8, 107
e s p a c e(v o i rl e c h a p i tre2 7 ). - enregistreur
à bandemagnétique 101
B A S IC 21,193
Me t l ' o rd i n a te uer n mo d ec a l culet affi chagepour l equell e
B i nai re
fichierd'affichageest présenté en continuet l'exécutiondes 26,71
- opération
calculscorrespondaux espaces en haut et en basde l'image. - ^.,^+À-^
ùyùtslllç 155
STOP Arrête le programmeet lance le compte-rendu9. CONT Bir 156
re p re n dl ' e x é c u ti o n
à l a l i g n esui vante. Boucle 83
UNPL OTm , n C o m m ePL OT , m a i se n l è v el a coul eurd' un él émentd' i nfor- BREAK sur SPACEreconnuecommeBREAK
ma ti o na u l i e ud e l e re n d ren o i r. danscertainscasseulement 60,109

202 203
I ndex lndex

c D
Calculet affichage 89 145
DATA
Caractères gras 14,19 33
Degré
Caractères gris 79 143
DIM El, surD.code
233
Caractères(s) 143
Dimension
- positionde 119
- jeu de 77,181
- de contrôle 79 E
C ha în e(s)
EDIT K, oull , 1 en positionmajuscules.
- a d d it ionde 43 50
code117
- expression de 44 173
- guillemetsde Elément
43,59 Elément d'information 119
- va ri a blede 11 85
Ch a în evi denulle
Emboîtement
43,71 En- ligne 21
C HR S E, surlJ.code214 77 28
Cl a vi e r
Entier
17 - dansla partieexposant 26,40
C LEAR E, surX.code 253 38,57 101
cLs Erreur
El, surV.code251 ttc Espace 151
C O BOL a1
ZI 50
CODE
Exécution
E , surl.code196 1-
tt 32,40
Code
EXP fl, surX.code206
77,161,167 Exposant 26
CodeMachine 161,167 172
'13,60 - octet
Co mma n d e 26
- partie
Comparaisons 67 26
- de nombres
Expression
67 Expression arithmétique 26
- de chaînes 67 72
Expression le
conditionnel
Compte-rendu 15.103,189 69
Expression logique
Concatenation 43 26
Expression numérique
Co n d i ti o n 67 44
Expression dechaîne
CONT K. surC.code232 5B 26,40
dansla partieexposant
Contrôle
- caractèresde 19
- variables de 84 F
Coordonnées X et Y 119 E mode 149,171
COPY K, surZ.code255 58,133 FAST Bl, ou[l , F en positionmajuscules
cos E, surWcode200 JI code229 89
CPU 161 Faux 68
Curseur 14 Fichierd'affichage 149,171
CurseurEl Fonctioninversée JJ

CurseurGl 77 Fonctiontrigonométrique
e1

CurseurK 14 Fonctionmode JI
Curseur
[l 14 FOR El, surF.code235 84
Curseur (El)
du programme 50 21
FORTRAN
Compte-rendu FUNCTION 121
E, ouE, NEWL|NE.code 31

204 205
I ndex Index

LT Li gnede prog r am m e 15.49,60


Glmode Lignesupérieure oz
77
"Gl i rch '1 LIST El, rur K. code240 52,61
111 50,61
GOSUB K, surH. code237 93,102 Liste
- pile LLIST E, ou [! , G en positionmajuscules
93
GOTO El, surG. code236 code226 t55

Graphiques LN Ef, sur Z. code2O5 31


77,119
- symboles LOAD K, surJ. code239 108
77
- mooe Logarithme 28
77
GR APHICS G, El, ouI! , I enposition
majuscule.
codei 16 Logarithmeinversé 28
77,119
Gui l l e me t s Logi que
43
- i ma gede guillem et s - pucel ogique tol
45
- g u i l l em etde
s c haî ne - opération 68
43,59
LP R IN T K, oull , S en positionmajuscules.
code225 IJJ
H
Hex M
155
Hexadecimal Machi necode 161,167
155 77
Magnétophone à cassette
I Mantisse 28,172
If-si Mémoi re t5 u
67 - modul esupplém ent air e 149
IF K, surU. code250 67
lmp ri ma n t e Menu 111
133 139
I ndice MID $
137,143 14
I NKEY$ E, surB.code65 Mode
127 Modecommandes 14
I NPUT E, surl. code238 57,67
- mode (modeentrée) Modecalculet aff ichage 89
5l 89
I NT E, surR.code207 Moderapide
32
Instruction Modefonction (E) 31
IJ
Modegraphique( G ) ' 77
ModeIN P U T 57
Jeton 77 l\lode mor clé (K) 14
Mode lettre ([l) 14
K Modul o 34
K mode Modul us 31
14
Motcl é 13
L - mooe 14
[!l mode 14
LEFT$ N
139
LEN K, surK. code198 AQ
NEW El, surA. code230 57,168
LET K,sur L.code241 N E W LIN E LOOe I të 14,25
52,61
Ligne NEXT El, surN. code243 84
28
- numéro
de ligne N om
49,119
Ligneencours - d' uneva r iable 3l
50,62
Lignedeboucle - d' un pro gr am m e 107
84

206 207
I ndex I ndex

NOT E, surN. code215 31,68 Prisede jack 1


Notationscientifique 26 Processeu r 161
Nu mé ri q u e Procuste-affectationde IJU
- expression zo Programme
- variable - curseuroe 50
- l i gnede 15, 49,60
o Pseudoaléatoire 32
Octal 157
Octet 157
ON 73
R
R adi an 31
Opérande 25 to l
RAM
Opération 25 to ô
O pé ra ti o nbinair e 26,71 R A MTOP
RAND 149
El,surT,code JZ
Opérationlogique 68 t+ 3
O pé ra ti o nm illair e 32 READ
Recurrent 96
Opérationunaire 26 57,102,101
OR [], ou El , W en positionmajuscules REM B, surE.code234
tl trùtLJntr 145
code217 68 ?1
Organigramme 101 Résultat
R E TU R N El , sur Y. code254 93
P R IGH TS 139
ôô
Parenthèses 26 RND El, surT.code64 ôz
R OM 161
Parti e t5t
PASCAL ll
RUBOUT E,El , ouIl, O enposition
majuscules
code119 16,77
PAUSE K, surM.code242 127
R ubri que 43
P EEK EfsurO.code 211 16i
43
R ubri queP RINT
PI E , surM,n. code66 32 Ân Âo 07
Pi l ed u ca l c ulat eur 171 RUN B, surR.code247
Pi l ed u GO S UB 93,171
Pi l ed e l a mac hine 171
PL .1 21 SAVE E, surS.code248 107
PLOT E, surO.code246 44,119 Schema 119
Pointd'entrée,Pointd'accès 97 Schemaà barres /9
P OKE K,sur O.code244 127,163 SCROLL El, surB.code231 115
POP.2 21 SGN E, surF. code209 31
Po si ti o n 119 S i gne
<t

Pré ci si o n 28 srN E, surO.code199 ?1

Pre mi è re l igne 62 SLOW code228


K, ou ll , D en positionmajuscules. B9
P R INTp o s it ion 115 Sous-programme 93
LP RINTp os it ion 134 Souschaîne 137
PRINT El.surP.code245 13,25,115 soR E , surH. code208 JZ

- ru b rique 43 STEP El , ou l! , E en positionmajuscules.


code224 84
- p o si tion tl c STOP El, ou El. A en position code227
majuscules. 57,67
Priorité 26 STR$ E, sur Y. code 213 M

208 20s
I ndex I ndex

Symb ole 1-7 Kou ll, Code27. Pointou marquedécimale lo


Symbolegraphique 1-7 Elou E, marquedécimaleen positionmajuscules.
Syntaxe to Code26. virgule 26
Systèmedécimal tcc Elou [l X en positionmajuscules. Code25
point vir gule
T Kou [], Z en positionmajuscules. Code14.
TAB El, surP.code194 1 1R 1aA deux points. 26
Tableau Eou E, C en positionmajuscules. Code15.
143
Tampon point d'interrogation. 26
179
TAN El, surE.code201 Eou l!, P en positionmajuscules. Code1 1.
JI
Télévision guillemetsde chaîne. 43
TH EN El, ou[1,3 enposirion majuscules. Blou E, O en positionmajuscules. Code192.
code222 84
imagede guillemet. 45
TO El, ou [1. 4 en posirion
majuscules.
code223 84 Kou [], I en positionmajuscules. Code16.
en positionmajuscules
Touches 1Â Parenthèses de début. 26
Elou [], O en positionmajuscules.Code17.
Parenthèse de fin. 26
U
UNPLOT K, surW. code252 44, 119 t Elou E, espaceen positionmajuscules.
Code 12.
USR Ef,sur L.code212 tol
Livresterling. 95
ç Elou E, U en positionmajuscules.
Code13.
Dollar . 43
VAL Ef, surJ. code197 44 Elou E, K en position majuscules.Code21.
Va l e u r 2-7 plus. 14
V a l e u ri nit iale 84 Bou Il, J en positionmajuscules.
Code22.
V a ri a b l e 37,43,84 M oins. 25
Variableindicée 143 Kou E B en positionmajuscules. Code23.
Va ri a b les im ple 143 M ult iplierpar . 25
Variablesystème 161,177 Bou [], V en position majuscules.Code24.
Variablede contrôle 84 Diviserpar. 25
Va ri a b l enum ér ique 37
t*
Elou [], H en positionmajuscules.
Code216.
Variablechaîne 43 Elevationà une oulssance. 25
Vidéo inversée 32 Eou [], L en positionmajuscules.
Code20.
Virguleflottante zô égal. 49,67
Vrai hx Elou l!, M en positionmajuscules.
Code18.
Supér ieur à. 67
Bou [], N en positionmajuscules.Code19.
Z lnf ér ieurà. 67
zxSo 127 Kou E, R en positionmajuscules. Code219.
Inférieurou égalà. 67
Kou [!, Y en positionmajuscules.Code22O.
Supérieurou égalà. ot
Bou [], T en positionmajuscules.Code221.
Différent de. 67

z tl
In d e x

c Elou E, 5 en positionmajuscules.
Code1 i4.
Curseurversla gauche. Ib
I Elou [], 6 en positionmajuscules.
Codei 13.
Curseurversle bas.
ô Kou 8,7 en positionmajuscules. Codej12.
Curseurversle haut.
0 Code1'l5.
Eou ll. 8 en positionmajuscules.
Curseurversla droite. to