Programiranje u BASIC-u/BKontrolne strukture /IF ... THEN ... ELSE
Uvod
urediIF ... THEN ... ELSE (hrv. IF - AKO, THEN - dakle, ELSE - drukčije) je kontrolna struktura u kojoj je glavna logička ispitna točka postavljena u instrukciji IF odnosno ako, po zadovoljavanju tog uslova poslije riječi THEN postavlja se naredba koja se izvršava. Alternativno, ako glavna logička ispitna točka je negativna tada se naredba iza THEN ne izvršava, i tok izvedbe programa ide na liniju iza naredbe IF ... THEN, osim u slučaju da je postavljena naredba ELSE gdje se tok programa nastavlja poslije naredbe ELSE. Unutar ELSE moguće je ugnjezditi i nova naredba za logički ispit IF ... THEN ... ELSE, itd. U nekim izvedbama BASICa, ako se koriste složenije odnosno ugnježdene naredbe IF THEN ELSE, tada je potrebno završavati svaki stupanj IF THEN ELSE sa ENDIF (hrv. kraj ako), ili sa END (hrv. kraj). U nekim slučajevima ako se koristi naredba IF poslije ELSE, tada je potrebno napisati ELSEIF. Za ove varijacije potrebno je pregledati upute za izvedbu BASICa koji se koristi.
Primjeri
urediSjedeći primjeri napisani su u QBASICu, broj linije nije potreban u QBASICU i tu je radi preglednosti i lakšeg objašnjavanja rada programa.
Prvi
uredi 10 CLS
20 A$ = INKEY$
30 IF A$ = "" THEN GOTO 20
Drugi
uredi 10 CLS
20 B = INT(RND*20)+1
30 PRINT "Igra pogađanja"
40 PRINT "Pogodi broj između 1 i 20"
50 INPUT A
55 IF A<1 OR A> 20 THEN PRINT "Greška u unosu. Upišite broj između 1 i 20" : GOTO 50
60 IF A > B THEN PRINT "Previsoko, pokušaj opet !": GOTO 50
70 IF A < B THEN PRINT "Prenisko, pokušaj opet !" : GOTO 50
80 IF A = B THEN PRINT "Pogodak ! "
Treći
uredi 10 CLS
20 B = INT(RND*20)+1
30 PRINT "Igra pogađanja"
40 PRINT "Pogodi broj između 1 i 20"
50 INPUT A
55 IF A<1 OR A> 20 THEN PRINT "Greška u unosu. Upišite broj između 1 i 20" : GOTO 50
60 IF A = B THEN PRINT "Pogodak ! "
ELSEIF A<B THEN PRINT "Prenisko, pokušaj opet!" : GOTO 50
ELSE PRINT "Previsoko, pokušaj opet!": GOTO 50
END IF
Skraćeniji program, jer u QBASICu je moguće sa INPUT ispisati rečenicu i poslije čekati za upis
10 CLS
20 B = INT(RND*20)+1
30 PRINT "Igra pogađanja"
40 INPUT "Pogodi broj između 1 i 20", A
50 IF A<1 OR A> 20 THEN PRINT "Greška u unosu. Upišite broj između 1 i 20" : GOTO 40
60 IF A = B THEN PRINT "Pogodak ! "
ELSEIF A<B THEN PRINT "Prenisko, pokušaj opet!" : GOTO 40
ELSE PRINT "Previsoko, pokušaj opet!" : GOTO 40
END IF
Objašnjenje
urediPrvi
uredi- Linija 10 CLS - CLS je engleska skraćenica od Clear Screen (hrv. očisti zaslon): ova komanda briše sve sa ekrana. Ovu komandu ima večina inačica jezika BASIC, za one koje ne posjeduju ovu naredbu brisanje ekrana se postiže ispisivanjem nekih kontrolnih znakova
- Linija 20 A$= INKEY$ - čitaj jedan karakter sa tipkovnice (INKEY$) i ubaci taj karakter u tekstovnu varijablu A$
- Linija 30 IF A$="" THEN GOTO 20 - ako A$ je prazno odnosno NULL znak, idi na linju 20 (GOTO 20). Ovim će računalo uvijek biti u petlji na linji 30 na 20, sve dok korisnik ne pritisne jednu tipku na tipkovnici računala