6. Premenné: BYTE, CARD, INT, CHAR
Na čo to je
Premenná je pomenované miesto v pamäti, do ktorého si program odloží hodnotu, aby ju mohol neskôr použiť alebo zmeniť. Bez premenných by program vedel len vypisovať to, čo máš napísané v zdrojáku.
Ako sa to píše
Premennú treba najprv deklarovať – povedať, ako sa volá a aký druh hodnoty v nej bude:
BYTE age
CARD year, score ; viac premenných toho istého typu, oddelené čiarkou
INT temperature
CHAR grade
BYTE lives=[3] ; premenná, ktorá má hodnotu hneď od začiatku
Druh hodnoty sa volá typ. Action! má štyri základné:
| Typ | Veľkosť v pamäti | Aké hodnoty | Na čo sa hodí |
|---|---|---|---|
BYTE | 1 bajt | 0 až 255 | malé čísla: vek, počet životov, súradnica na obrazovke |
CHAR | 1 bajt | 0 až 255 | jeden znak; je to to isté ako BYTE, len meno hovorí, že ide o znak |
CARD | 2 bajty | 0 až 65535 | väčšie čísla bez znamienka: rok, skóre, adresa |
INT | 2 bajty | −32768 až 32767 | čísla, ktoré môžu byť záporné |
CARD je skratka z cardinal (číslo bez znamienka), INT z integer (celé číslo).
Hodnotu do premennej vloží priradenie: meno=hodnota.
Deklarácie patria na začiatok procedúry, pred prvý príkaz.
Celý program
Súbor examples/variables.act:
; Variables of the four basic types
PROC Main()
BYTE age ; 0 to 255
CARD year ; 0 to 65535
INT temperature ; -32768 to 32767
CHAR grade ; one character
BYTE lives=[3] ; a variable with a value from the start
age=12
year=1983
temperature=-5
grade='A
Print("Age: ") PrintBE(age)
Print("Year: ") PrintCE(year)
Print("Temperature: ") PrintIE(temperature)
Print("Grade: ") Put(grade) PutE()
Print("Lives: ") PrintBE(lives)
age=13 ; a variable can change
Print("Next year: ") PrintBE(age)
RETURNPreklad a spustenie
action26 variables.act --simČo uvidíš
Age: 12
Year: 1983
Temperature: -5
Grade: A
Lives: 3
Next year: 13Ako to funguje
- Prvých päť riadkov procedúry sú deklarácie. Až po nich idú príkazy.
age=12uloží do premennejagečíslo 12. Odvtedy sa dáagenapísať všade, kde by mohlo stáť číslo – napríklad vPrintBE(age).- Typ premennej určuje, ktorou rutinou ju vypíšeš:
BYTEcezPrintB,CARDcezPrintC,INTcezPrintI,CHARcezPut. lives=[3]v deklarácii dá premennej hodnotu už pri nahraní programu. Hranaté zátvorky sú tu povinné.age=13starú hodnotu prepíše. Premenná si pamätá vždy len poslednú.
Ako vybrať typ
- Zmestí sa hodnota vždy do 0 až 255? Použi
BYTE. Je najrýchlejší a zaberie najmenej miesta – procesor Atari počíta po jednom bajte. - Môže byť hodnota záporná? Použi
INT. - Inak
CARD.
Časté chyby
| Čo sa stalo | Čo povie prekladač alebo program |
|---|---|
| premenná nie je deklarovaná, alebo je v mene preklep | error ACT008: undeclared name 'ag' |
| deklarácia až za príkazom | error ACT006: declaration error: declarations must come before the statements |
chýba čiarka medzi menami (BYTE a b) | chyba na prvom príkaze, ktorý premennú použije |
hodnota sa do typu nezmestí (age=300) | warning ACT215: value 300 does not fit into a BYTE; v premennej bude 44 |
INT t a t=40000 | prekladač mlčí; v premennej bude −25536 |
BYTE lives=3 bez hranatých zátvoriek | prekladač mlčí – a je to niečo celkom iné |
Posledný riadok je najzákernejší. BYTE lives=3 nedá premennej hodnotu 3. Znamená „premenná lives leží v pamäti na adrese 3“. Na to sa hodí pri práci s pamäťou počítača (kapitola 24), ale začiatočník tým prepíše niečo, čo patrí systému. Počiatočná hodnota sa píše vždy do hranatých zátvoriek: BYTE lives=[3].
Premenná, ktorej si nič nepriradil, má po nahraní programu hodnotu 0. Nespoliehaj sa na to – keď program spustíš druhýkrát bez nového nahrania, ostane v nej to, čo tam bolo naposledy.
Vyskúšaj si
- Pridaj premennú
CARD scores počiatočnou hodnotou 1000 a vypíš ju. - Zmeň
temperaturena typBYTEa pozri, čo sa vypíše pritemperature=-5. (PoužiPrintBE. Vyjde 251 –BYTEzáporné čísla nemá.) - Priraď do
gradeznak'Ba potom číslo66. Líši sa výpis?
Zhrnutie
- Premenná sa deklaruje typom a menom na začiatku procedúry.
BYTEaCHAR0–255,CARD0–65535,INT−32768 až 32767.meno=hodnotado premennej uloží hodnotu; stará sa stratí.- Počiatočná hodnota je v hranatých zátvorkách:
BYTE lives=[3]. Bez nich je to adresa. - Hodnota, ktorá sa do typu nezmestí, sa skráti – prekladač to pri číslach v zdrojáku ohlási varovaním.
Späť: 5. Čísla, znaky a texty · Ďalej: 7. Počítanie