7. Vstup: INPUT
Na čo to je
Doteraz boli všetky čísla a texty napísané v programe. S INPUT sa program spýta – počká, kým človek niečo napíše a stlačí RETURN, a to, čo napísal, uloží do premennej.
Ako sa to píše
INPUT premenná
INPUT premenná,premenná| Zápis | Význam |
|---|---|
INPUT A | vypíše otáznik, počká na číslo a uloží ho do A |
INPUT A$ | to isté s textom; reťazec musí mať DIM |
INPUT A,B | dve čísla naraz, pri písaní oddelené čiarkou |
INPUT vypíše len otáznik. O čo ide, musí povedať PRINT pred ním – s bodkočiarkou na konci, aby otáznik ostal na tom istom riadku.
Celý program
Súbor examples/input.abas:
10 REM INPUT: the program asks
20 DIM NAME$(20)
30 PRINT "What is your name";
40 INPUT NAME$
50 PRINT "How old are you";
60 INPUT AGE
70 PRINT "Hello, ";NAME$;"!"
80 PRINT "Next year you will be ";AGE+1
90 PRINT "Give me two numbers"
100 INPUT A,B
110 PRINT A;" + ";B;" = ";A+BPreklad a spustenie
Tento program potrebuje klávesnicu, a tú simulátor nemá. Sú dve možnosti.
V emulátore píšeš odpovede sám, na klávesnici Atari:
Basic26 input.abas --runV simulátore dostane program odpovede zo súboru. Súbor examples/input.in má tri riadky – na každý INPUT jeden:
Peter
12
3,4Basic26 input.abas --sim --sim-input input.inČo uvidíš
What is your name?Peter
How old are you?12
Hello, Peter!
Next year you will be 13
Give me two numbers
?3,4
3 + 4 = 7Ako to funguje
- Riadky 30 a 40:
PRINTs bodkočiarkou na konci nechá kurzor za textom,INPUTzaň pripíše otáznik a čaká. Preto v texte otázky otáznik nie je. - Riadok 40: do
NAME$sa uloží celý riadok, ktorý človek napísal – aj s medzerami a čiarkami. Ak je dlhší nežDIM, odreže sa. - Riadok 60:
AGEje číselná premenná, takžeINPUTčaká číslo. S číslom z klávesnice sa dá hneď počítať (riadok 80). - Riadok 100: dve premenné v jednom
INPUT. Človek napíše3,4a RETURN; môže však napísať aj len3, stlačiť RETURN, a program sa na druhé číslo spýta ďalším otáznikom.
Časté chyby
| Čo sa stalo | Čo sa stane |
|---|---|
namiesto čísla príde text (abc) | program skončí s ERROR- 8 AT LINE 60 |
číslo s desatinnou čiarkou (3,5 na jedno číslo) | INPUT A zoberie 3 a zvyšok zahodí; pri INPUT A,B je to 3 a 5 |
INPUT A$ bez DIM | ERROR- 9 |
simulátor bez --sim-input, alebo v súbore je málo riadkov | ERROR- 136 na INPUT, ktorý už nemá čo čítať |
Chyba 8 je nepríjemná: stačí preklep pri písaní a program skončí. Kapitola 17 ukáže, ako ju zachytiť a spýtať sa znova.
Turbo-BASIC XL vie otázku napísať rovno v INPUT (INPUT "Name";N$, kapitola 26). Atari BASIC to nevie.
Vyskúšaj si
- Spýtaj sa na dve strany obdĺžnika a vypíš jeho obsah.
- Spýtaj sa na meno a vypíš, koľko má písmen.
- Spýtaj sa na rok narodenia a vypíš vek. Uprav si
input.inalebo program spusti v emulátore.
Zhrnutie
INPUT premennápočká na riadok z klávesnice a uloží ho.- Do číselnej premennej musí prísť číslo, inak je to chyba 8.
- Otázku vypíše
PRINT "…";pred ním. - V simulátore dáva odpovede súbor:
--sim-input súbor, riadok na každýINPUT.
Späť: 6. Reťazce · Ďalej: 8. Podmienka