5. Počítanie: + - * / ^, INT, ABS, SGN, SQR

Na čo to je

BASIC je aj kalkulačka. Všade, kde môže stáť číslo, môže stáť výraz – výpočet z čísel, premenných, znamienok a funkcií.

Ako sa to píše

ZnakVýznamPríkladVýsledok
+sčítanie7+310
-odčítanie7-34
*násobenie7*321
/delenie7/32.33333333
^umocnenie7^249
( )zátvorky: to vnútri sa počíta najprv(2+3)*420

Funkcia je hotový výpočet s menom. Číslo, s ktorým má počítať, sa píše za ňu do zátvoriek:

FunkciaČo vrátiPríkladVýsledok
INT(x)najbližšie celé číslo smerom nadolINT(2.7)2
ABS(x)číslo bez znamienkaABS(-8)8
SGN(x)znamienko: -1, 0 alebo 1SGN(-8)-1
SQR(x)druhú odmocninuSQR(16)4

Celý program

Súbor examples/expr.abas:

Atari BASIC
10 REM Arithmetic
20 PRINT "7+3 = ";7+3
30 PRINT "7-3 = ";7-3
40 PRINT "7*3 = ";7*3
50 PRINT "7/3 = ";7/3
60 PRINT "7^2 = ";7^2
70 PRINT "2+3*4 = ";2+3*4
80 PRINT "(2+3)*4 = ";(2+3)*4
90 PRINT "INT(7/3) = ";INT(7/3)
100 PRINT "INT(-2.5) = ";INT(-2.5)
110 PRINT "ABS(-8) = ";ABS(-8)
120 PRINT "SGN(-8) = ";SGN(-8)
130 PRINT "SQR(16) = ";SQR(16)
140 REM The remainder after dividing 17 by 5
150 A=17:B=5
160 PRINT "17 = ";INT(A/B);"*5 + ";A-INT(A/B)*B
170 REM Rounding to two decimal places
180 X=3.14159
190 PRINT INT(X*100+0.5)/100

Preklad a spustenie

Basic26 expr.abas --sim

Čo uvidíš

7+3 = 10
7-3 = 4
7*3 = 21
7/3 = 2.33333333
7^2 = 49
2+3*4 = 14
(2+3)*4 = 20
INT(7/3) = 2
INT(-2.5) = -3
ABS(-8) = 8
SGN(-8) = -1
SQR(16) = 4
17 = 3*5 + 2
3.14

Ako to funguje

Poradie počítania

Riadok 70 dá 14, nie 20: BASIC počíta ako v škole, násobenie a delenie pred sčítaním a odčítaním. Celé poradie:

  1. zátvorky,
  2. umocnenie ^,
  3. násobenie a delenie * /,
  4. sčítanie a odčítanie + -.

Rovnako silné znamienka sa počítajú zľava doprava: 10/4*2 je (10/4)*2, teda 5. Keď si nie si istý, daj zátvorky – nič nestoja a program je čitateľnejší.

Delenie nie je celé

7/3 je 2.33333333. BASIC na Atari nemá zvláštne „celé čísla“, každé číslo môže mať desatinnú časť. Keď chceš celý podiel, odrež zvyšok funkciou INT.

INT ide nadol, nie k nule

INT(2.7) je 2, ale INT(-2.5) je -3: najbližšie celé číslo, ktoré je menšie. Pri kladných číslach je to to isté ako „odrezať desatinnú časť“, pri záporných nie.

Dva užitočné triky s INT

Časté chyby

Čo sa staloČo sa stane
delenie nulouprogram skončí s ERROR- 11 AT LINE 20
odmocnina zo záporného číslaERROR- 3 AT LINE 20
výsledok je väčší než 9.99999999E+97ERROR- 11
chýba zátvorka (PRINT (2+3)error B26041: expected ')'
výraz nie je dokončený (PRINT 5+)error B26040: expected a value, found end of line
násobenie bez hviezdičky (2(3+4))BASIC to neuhádne: vypíše 27 – dvojku a za ňou sedmičku
-3^2je 9, nie -9: mínus pred číslom má v BASICu prednosť pred umocnením. Píš -(3^2)

ERROR- s číslom je chyba za behu: program sa preložil, ale počas behu narazil na niečo, čo sa vypočítať nedá. Vypíše číslo chyby a riadok programu, na ktorom sa stala, a skončí. Čísla sú v prílohe C; kapitola 17 ukáže, ako chybu zachytiť.

Vyskúšaj si

  1. Vypočítaj, koľko sekúnd má deň a koľko rok.
  2. Obdĺžnik má strany A a B. Vypíš jeho obvod, obsah a dĺžku uhlopriečky (SQR(A*A+B*B)).
  3. Rozmeň 187 sekúnd na minúty a sekundy pomocou INT a zvyšku.

Zhrnutie

Späť: 4. Premenné a čísla · Ďalej: 6. Reťazce