27. Podmienka na viac riadkov: IF, ELSE, ENDIF

Na čo to je

V Atari BASICu patrí k IF len zvyšok jedného riadka a „inak“ sa píše druhým IF s opačnou podmienkou. Turbo-BASIC XL vie podmienku, ktorá má telo cez viac riadkov a vetvu inak.

Ako sa to píše

Turbo Basic XL
IF podmienka
  príkazy, keď platí
ELSE
  príkazy, keď neplatí
ENDIF
SlovoVýznam
IF podmienkabez THEN – tým sa začína blok
ELSE„inak“; táto časť je nepovinná
ENDIFkoniec bloku; povinný

Starý tvar IF … THEN … na jednom riadku platí ďalej. Rozhoduje slovo THEN: keď tam je, ide o jednoriadkovú podmienku; keď nie je, o blok.

Celý program

Súbor examples/else.tbas:

Turbo Basic XL
10 REM IF ... ELSE ... ENDIF
20 INPUT "A number";N
30 IF N<0
40   PRINT "Negative, I turn it round"
50   N=-N
60 ELSE
70   PRINT "Not negative"
80 ENDIF
90 IF N>100
100   PRINT "Big"
110 ELSE
120   IF N>10
130     PRINT "Medium"
140   ELSE
150     PRINT "Small"
160   ENDIF
170 ENDIF
180 IF N=42 THEN PRINT "The answer"

Preklad a spustenie

Basic26 else.tbas --run

alebo v simulátore; súbor examples/else.in odpovie -25:

Basic26 else.tbas --sim --sim-input else.in

Čo uvidíš

A number?-25
Negative, I turn it round
Medium

Ako to funguje

Odsadenie

Medzery za číslom riadka BASIC ignoruje. Odsadením tela o dve medzery je však na prvý pohľad vidieť, čo k čomu patrí – a kde chýba ENDIF. Turbo-BASIC XL takto odsadzoval výpis programu sám.

Na jednom riadku

Blok môže byť aj na jednom riadku, príkazy oddelené dvojbodkou:

Turbo Basic XL
50 IF A>B:PRINT "A":ELSE:PRINT "B":ENDIF

Časté chyby

Čo sa staloČo sa stane
chýba ENDIFerror B26024: IF without ENDIF
ELSE alebo ENDIF bez IFerror B26023: there is nothing for this to close
THEN na konci riadka bloku (IF N<0 THEN a telo na ďalších riadkoch)je to jednoriadkový IF s prázdnym telom; riadky pod ním sa vykonajú vždy
ELSE za jednoriadkovým IF … THENerror B26023 – ELSE patrí len k bloku bez THEN
súbor má príponu .abasELSE a ENDIF sú v Atari BASICu mená premenných: error B26017

Vyskúšaj si

  1. Spýtaj sa na dve čísla a vypíš väčšie z nich; ak sú rovnaké, vypíš Equal.
  2. Prepíš if.abas z kapitoly 8: dvojice IF s opačnými podmienkami nahraď blokmi s ELSE.
  3. Spýtaj sa na známku 1–5 a vypíš slovné hodnotenie. Skús to vnorenými blokmi aj cez ON … GOTO a porovnaj, čo sa lepšie číta.

Zhrnutie

Späť: 26. Turbo-BASIC XL · Ďalej: 28. Slučky s podmienkou