4. Výpis: Print, Put a výpis čísel
Na čo to je
Program, ktorý nič nevypíše, nevieš skontrolovať. Rutiny na výpis preto potrebuješ v každej kapitole. Sú súčasťou knižnice – netreba ich deklarovať, stačí ich zavolať.
Ako sa to píše
| Rutina | Čo vypíše | Príklad |
|---|---|---|
Print("text") | text; kurzor ostane za ním | Print("Name: ") |
PrintE("text") | text a koniec riadka | PrintE("Hello") |
Put('A) | jeden znak | Put('*) |
PutE() | len koniec riadka | PutE() |
PrintB(číslo) | číslo 0 až 255 | PrintB(200) |
PrintC(číslo) | číslo 0 až 65535 | PrintC(50000) |
PrintI(číslo) | číslo so znamienkom, −32768 až 32767 | PrintI(-150) |
Písmeno E na konci mena (z anglického End of line) znamená „a potom prejdi na nový riadok“. Majú ho aj rutiny na čísla: PrintBE, PrintCE, PrintIE.
Prečo sú na čísla tri rutiny, vysvetlí kapitola 6: písmená B, C a I sú tri druhy čísel – BYTE, CARD a INT.
Celý program
Súbor examples/print.act:
; Writing texts, characters and numbers
PROC Main()
Print("One ") ; a text, the cursor stays on the line
Print("line.")
PutE() ; the end of the line
PrintE("A line of its own.")
Put('A) ; one character
Put('B)
Put('C)
PutE()
Print("A small number: ")
PrintBE(200) ; BYTE: 0 to 255
Print("A big number: ")
PrintCE(50000) ; CARD: 0 to 65535
Print("A number below zero: ")
PrintIE(-150) ; INT: -32768 to 32767
PrintB(1) Put(' ) PrintB(2) Put(' ) PrintB(3)
PutE()
RETURNPreklad a spustenie
action26 print.act --simČo uvidíš
One line.
A line of its own.
ABC
A small number: 200
A big number: 50000
A number below zero: -150
1 2 3Ako to funguje
- Dva
Printza sebou píšu na ten istý riadok. AžPutE()riadok ukončí. PrintErobí oboje naraz: text aj koniec riadka.Put('A)vypíše jeden znak. Znak sa píše s jedným apostrofom pred ním a žiadnym za ním – viac v kapitole 5.Put(' )je apostrof a medzera: vypíše medzeru.- Posledný riadok ukazuje, že na jednom riadku môže byť viac príkazov. Stačí ich oddeliť medzerou; žiadna bodkočiarka ani čiarka medzi ne nepatrí.
Časté chyby
| Čo sa stalo | Čo povie prekladač alebo program |
|---|---|
číslo sa do PrintB nezmestí (PrintB(300)) | warning ACT215: value 300 does not fit into a BYTE a vypíše sa 44 |
znak s apostrofom aj za ním (Put('A')) | error ACT018: unmatched parentheses – druhý apostrof začal nový znak ) |
text v Put (Put("A")) | prekladač mlčí, program vypíše nezmysel |
číslo v PrintE (PrintE(5)) | prekladač mlčí, program vypíše nezmysel |
Posledné dva riadky stoja za zapamätanie: Action! nekontroluje, či rutine dávaš to, čo čaká. Text patrí do Print, znak do Put, číslo do PrintB, PrintC alebo PrintI. Keď program vypíše niečo čudné, pozri najprv, či si nepomiešal tieto rutiny.
Odkiaľ sa vzalo 44? Do BYTE sa zmestí 256 hodnôt (0 až 255). 300 je o 44 viac ako 256, a práve ten zvyšok ostane.
Vyskúšaj si
- Vypíš svoje meno a vek na jeden riadok:
Name: … Age: …. - Vypíš pomocou
PutaPutEtrojuholník z hviezdičiek na tri riadky. - Zmeň
PrintIE(-150)naPrintCE(-150). Čo sa vypíše? (65386 –PrintCnepozná záporné čísla a to isté číslo číta inak.)
Zhrnutie
Printpíše text,Putjeden znak.PrintB,PrintC,PrintIpíšu čísla – podľa toho, aké veľké číslo to je a či môže byť záporné.Ena konci mena pridá koniec riadka; samotný koniec riadka jePutE().- Na riadku môže byť viac príkazov oddelených medzerou.
- Prekladač nekontroluje, či rutine dávaš správny druh údaja.
Späť: 3. Rutiny · Ďalej: 5. Čísla, znaky a texty