8. Vstup: InputB, InputC, InputI, InputS

Na čo to je

Doteraz program vedel len to, čo si mu napísal do zdrojáka. Rutiny vstupu počkajú, kým používateľ niečo napíše na klávesnici a stlačí RETURN (Enter), a napísanú hodnotu odovzdajú programu.

Ako sa to píše

RutinaČo načítaAko sa použije
InputB()číslo 0 až 255age=InputB()
InputC()číslo 0 až 65535year=InputC()
InputI()číslo so znamienkomtemperature=InputI()
InputS(text)riadok textuInputS(name)

Prvé tri sú funkcie: vrátia hodnotu a tú priradíš do premennej. Písmená B, C, I znamenajú zase BYTE, CARD, INT.

InputS je procedúra: text uloží do premennej, ktorú jej dáš v zátvorkách. Na text nestačí BYTE ani CARD – treba miesto pre viac znakov:

Action!
CHAR ARRAY name(40)

To je pole znakov s miestom pre 40 bajtov: jeden si Action! vezme na dĺžku textu, ostane 39 znakov. Poliam a reťazcom sa venujú kapitoly 18 a 19; tu stačí vedieť, že takto sa deklaruje premenná na text a že sa dá vypísať cez Print(name).

Celý program

Súbor examples/input.act:

Action!
; A program that asks

PROC Main()
  CHAR ARRAY name(40)        ; room for a text of up to 39 characters
  BYTE age
  CARD year

  Print("What is your name? ")
  InputS(name)

  Print("How old are you? ")
  age=InputB()

  Print("What year is it? ")
  year=InputC()

  PutE()
  Print("Hello, ")
  Print(name)
  PrintE("!")

  Print("You were born in ")
  PrintC(year-age)
  PrintE(" or the year before.")
RETURN

Preklad a spustenie

action26 input.act --sim

V simulátore píšeš odpovede na klávesnici svojho počítača. V emulátore (--run) na klávesnici Atari.

Čo uvidíš

Program sa trikrát opýta. To, čo píšeš ty, je v ukážke za otáznikom:

What is your name? Pedro
How old are you? 12
What year is it? 2026

Hello, Pedro!
You were born in 2014 or the year before.

Ako to funguje

Časté chyby

Čo sa staloČo sa stane
používateľ napíše písmená tam, kde program čaká číslofunkcia vráti 0
číslo sa nezmestí (300 do InputB)vráti zvyšok, 44 – ako pri priradení
chýbajú zátvorky (age=InputB)prekladač mlčí; do age sa uloží kus adresy rutiny, nie odpoveď
text je dlhší ako miesto v poliprogram si prepíše vlastnú pamäť a zvyčajne spadne

Rutiny vstupu nekontrolujú, čo používateľ napísal. Číselný vstup číta číslice, kým nenarazí na iný znak: 12abc dá 12, abc dá 0.

Pole na text rob radšej väčšie. Riadok na obrazovke Atari má 40 znakov, ale používateľ môže písať ďalej – jeden vstup môže mať až 120 znakov. Kto chce mať istotu, použije CHAR ARRAY name(121).

Vyskúšaj si

  1. Pridaj otázku na obľúbené číslo a vypíš jeho dvojnásobok.
  2. Načítaj dve čísla a vypíš ich súčet, rozdiel, súčin a podiel.
  3. Zmeň age=InputB() na age=InputI() a zadaj záporný vek. Čo vypíše program a prečo? (Premenná age je BYTE.)

Zhrnutie

Späť: 7. Počítanie · Ďalej: 9. Podmienka