4. Premenné a čísla: LET

Na čo to je

Premenná je pomenované miesto v pamäti, do ktorého si program odloží číslo, aby ho mohol neskôr použiť alebo zmeniť. Predstav si škatuľku s menovkou: APPLES a v nej číslo 5.

Ako sa to píše

Atari BASIC
LET meno=hodnota
meno=hodnota
SlovoVýznam
LET„nech je“ – slovo je nepovinné a skoro nikto ho nepíše
menomeno premennej: začína písmenom, ďalej písmená a číslice
=priradenie: vypočítaj pravú stranu a ulož ju do premennej vľavo
hodnotačíslo, iná premenná alebo výpočet

Premennú netreba vopred ohlasovať. Vznikne tým, že ju použiješ, a kým do nej nič neuložíš, je v nej nula.

Celý program

Súbor examples/variables.abas:

Atari BASIC
10 REM Variables: boxes with a name
20 LET APPLES=5
30 PRICE=0.25
40 PRINT "Apples: ";APPLES
50 PRINT "Price of one: ";PRICE
60 COST=APPLES*PRICE
70 PRINT "Together: ";COST
80 APPLES=APPLES+1
90 PRINT "One more apple: ";APPLES
100 BIG=1500000000000
110 PRINT BIG
120 THIRD=1/3
130 PRINT THIRD
140 PRINT EMPTY

Preklad a spustenie

Basic26 variables.abas --sim

Čo uvidíš

Apples: 5
Price of one: 0.25
Together: 1.25
One more apple: 6
1.5E+12
0.333333333
0

Ako to funguje

Čísla môžu byť od približne 1E-98 po 9.99999999E+97, kladné aj záporné.

Na mene záleží

Meno môže byť dlhé, ale nesmie sa začínať slovom, ktoré BASIC pozná ako príkaz. Atari BASIC totiž medzery nepotrebuje – PRINTX číta ako PRINT X. Preto:

Atari BASIC
10 LETTER=4
20 PRINT LETTER

vypíše 0. Riadok 10 sa prečíta ako LET TER=4, takže štvorka skončí v premennej TER, a riadok 20 vypíše inú, prázdnu premennú LETTER. Program je správny, len robí niečo iné, než si chcel. Prekladač na to upozorní, lebo meno LETTER program inde používa:

warning B26236: LETTER is read as LET TER here, as the interpreter reads it: a statement begins with the statement word its text begins with, and LETTER elsewhere in the program is another variable

Väčšinou sa však na také meno príde hneď, lebo zvyšok riadka prestane dávať zmysel:

RiadokAko ho BASIC čítaČo povie prekladač
10 ONE=1ON E=1error B26017: expected GOTO, GOSUB, EXEC or GO# after ON
10 FORM=7FOR M=7error B26017: expected TO in FOR
10 IFFY=2IF FY=2error B26043: expected THEN
10 ENDING=5END ING=5error B26017: expected ':' or end of line, found variable ING
10 NOTE=5príkaz NOTEerror B26017: expected #channel

Meno sa teda nesmie začínať slovom, ktorým sa môže začínať príkaz (LET, ON, FOR, IF, END, REM, DIM, RUN, GET, PUT, POP, NEW, DOS, BYE … – všetky sú v prílohe A). Uprostred mena slovo nevadí (COST, SCORE, TOTAL sú v poriadku).

Zvláštny prípad je slovo NOT (kapitola 8). Na začiatku príkazu sa meno s NOT na začiatku berie ako meno, ale vo výpočte ho BASIC rozdelí:

Atari BASIC
10 NOTHING=5
20 PRINT NOTHING

vypíše 1. Riadok 10 uloží päťku do premennej NOTHING; riadok 20 sa však číta ako PRINT NOT HING – „opak“ prázdnej premennej HING, teda 1. K svojej päťke sa už nedostaneš. Tak to robia oba interpretery a tak to preloží aj Basic26, s upozornením:

warning B26230: NOTHING is read as NOT HING here, as the interpreter reads it: a name that begins with NOT is one only where a value is stored

Keď program počíta čudne, podozrievaj najprv meno.

Dobové programy mávajú premenné s jedným-dvoma písmenami (A, X1, SC). Šetrilo to pamäť. V programe pre prekladač si pokojne dovoľ meno, ktoré niečo hovorí.

Časté chyby

Čo sa staloČo sa stane
desatinná čiarka (PRICE=0,25)error B26017: expected ':' or end of line, found ','
meno malými písmenami (price=5)error B26017: Atari BASIC takes no lower case in "price"
preklep v mene (APLES)nič nehlási – vznikne nová premenná s nulou a výpočet vyjde zle
meno sa začína príkazom (LETTER, ONE)hodnota skončí v inej premennej (prekladač upozorní, B26236), alebo chyba prekladu
meno sa začína na NOT (NOTHING)vo výpočte sa číta ako NOT HING; prekladač upozorní (B26230)
číslo vľavo (5=A)error B26017: a statement cannot start with number 5 – vľavo od = musí byť premenná

Atari BASIC unesie v jednom programe najviac 128 rôznych premenných.

Vyskúšaj si

  1. Pridaj premennú PEARS s počtom hrušiek a vypíš, koľko je ovocia spolu.
  2. Zmeň cenu na 0.3 a pozri, čo vyjde. Potom skús PRICE=1/3.
  3. Vymeň hodnoty dvoch premenných A a B. (Budeš potrebovať tretiu, pomocnú.)

Zhrnutie

Späť: 3. Výpis · Ďalej: 5. Počítanie