2. Prvý program
Na čo to je
Prejdeš celú cestu od prázdneho súboru po bežiaci program: napísať, uložiť, preložiť, spustiť. Všetky ďalšie kapitoly robia to isté, len s inými príkazmi.
Celý program
Otvor textový editor a napíš (alebo si otvor hotový súbor examples/hello.act):
; My first program in Action!
PROC Main()
PrintE("Hello, Atari!")
RETURNUlož ho ako hello.act. Prípona .act hovorí, že je to zdroják v jazyku Action!.
Pozor pri ukladaní z Poznámkového bloku: v okne Uložiť ako zvoľ typ Všetky súbory, inak sa súbor uloží ako
hello.act.txt.
Preklad a spustenie
V príkazovom riadku prejdi do priečinka, kde súbor leží, a napíš:
action26 hello.act --simPrekladač program preloží a voľba --sim ho hneď spustí vo vstavanom simulátore.
Čo uvidíš
Hello, Atari!To je všetko, čo program robí: vypíše jeden riadok a skončí.
Ako to funguje
; My first program in Action!
Riadok, ktorý začína bodkočiarkou, je komentár. Prekladač ho preskočí. Je to poznámka pre človeka.
PROC Main()PROC začína procedúru – pomenovaný kus programu. Táto sa volá Main. Prázdne zátvorky hovoria, že procedúra nedostáva žiadne údaje. Meno si môžeš zvoliť sám; Main (anglicky „hlavná“) je zvyk.
PrintE("Hello, Atari!")PrintE je hotová rutina z knižnice: vypíše text v zátvorkách a prejde na nový riadok. Text sa píše do úvodzoviek.
RETURNRETURN končí procedúru. Keďže Main je jediná procedúra, končí tým aj celý program.
Medzery na začiatku riadka nie sú povinné. Píšu sa preto, aby bolo vidieť, čo patrí dovnútra procedúry.
Čo vzniklo na disku
Po preklade pribudol vedľa zdrojáka súbor hello.xex. To je hotový program pre Atari – má 277 bajtov. Dá sa skopírovať na disketu alebo spustiť v emulátore.
Keď chceš program len preložiť a nespúšťať, voľbu --sim vynechaj:
action26 hello.actKeď sa preklad podarí, prekladač nevypíše nič. Ticho znamená „v poriadku“.
Spustenie v emulátore
Simulátor ukáže len to, čo program vypíše. Emulátor ukáže celé Atari. Ak ho máš (priečinok atari800 vedľa action26.exe), spustíš program takto:
action26 hello.act --runTento program však skončí hneď po výpise a Atari po skončení programu ukáže svoju vlastnú obrazovku, takže text nestihneš prečítať. Preto sa do programov pre emulátor na koniec pridáva čakanie na kláves (examples/hello-key.act):
; Hello for the emulator: it waits for a key before it ends
PROC Main()
PrintE("Hello, Atari!")
PutE()
Print("Press any key")
GetD(7)
RETURNaction26 hello-key.act --runGetD(7) čaká, kým na klávesnici Atari stlačíš kláves. Čo presne znamená sedmička, vysvetlí kapitola 30; zatiaľ ber GetD(7) ako „počkaj na kláves“.
Keď prekladač nájde chybu
Chyby sú pri programovaní bežné. Skús úmyselne jednu spraviť: zmaž druhú úvodzovku.
PROC Main()
PrintE("Hello, Atari!)
RETURNPrekladač odpovie:
hello.act(2,10): error ACT001: missing double quote in string
hello.act(4,1): error ACT018: unmatched parentheses: expected ')', got 'end of file'Každé hlásenie má štyri časti:
| Časť | V príklade | Čo znamená |
|---|---|---|
| súbor | hello.act | v ktorom súbore je chyba |
| miesto | (2,10) | riadok 2, stĺpec 10 |
| druh a číslo | error ACT001 | error je chyba, warning len upozornenie; číslo sa dá nájsť v prílohe C |
| popis | missing double quote in string | čo prekladaču vadí (po anglicky) |
Dve rady:
- Opravuj vždy prvú chybu. Ďalšie sú často len jej následkom – tu druhé hlásenie zmizne, keď doplníš úvodzovku.
- Chyba je na označenom mieste alebo tesne pred ním. Prekladač si ju všimne, až keď mu prestane dávať zmysel to, čo číta.
Kým má program chybu, súbor .xex nevznikne a nič sa nespustí.
Časté chyby
| Čo sa stalo | Čo povie prekladač |
|---|---|
preklep v mene rutiny (Prit namiesto Print) | error ACT008: undeclared name 'Prit' |
| chýba úvodzovka na konci textu | error ACT001: missing double quote in string |
| chýba zátvorka | error ACT018: unmatched parentheses |
| súbor sa volá inak, ako píšeš v príkaze | fatal error ACT201: file not found: hello.act |
Veľké a malé písmená prekladač nerozlišuje: PrintE, printe aj PRINTE je to isté. V knihe sú slová jazyka veľkými písmenami (PROC, RETURN) a mená rutín s veľkým začiatočným písmenom, aby sa program dobre čítal.
Vyskúšaj si
- Zmeň text v úvodzovkách na svoje meno a program znova prelož a spusti.
- Pridaj druhý riadok
PrintE("…")s iným textom pod prvý. - Zmaž slovo
RETURNa pozri, čo sa stane. (Nič – posledná procedúra programu sa skončí aj tak. Píš ho však vždy; v kapitole 3 uvidíš, prečo.)
Zhrnutie
- Program je textový súbor s príponou
.act. action26 meno.actho preloží domeno.xex;--simho hneď spustí v simulátore,--runv emulátore.- Program je zložený z procedúr:
PROC Meno()…RETURN. PrintE("text")vypíše riadok textu.- Riadok za
;je komentár. - Chybové hlásenie hovorí súbor, riadok, stĺpec a dôvod. Opravuj od prvého.