16. Matematika a náhoda: SIN, COS, ATN, DEG, RAD, EXP, LOG, CLOG, RND

Na čo to je

Funkcie pre všetko, čo nejde štyrmi základnými znamienkami: uhly (kreslenie kruhov, pohyb po oblúku), mocniny a logaritmy – a RND, bez ktorého by nebola žiadna hra, lebo dáva náhodné číslo.

Ako sa to píše

SlovoČo robí
SIN(x), COS(x)sínus a kosínus uhla x
ATN(x)arkustangens: uhol, ktorého tangens je x
DEGpríkaz: odteraz sú uhly v stupňoch (celý kruh je 360)
RADpríkaz: odteraz sú uhly v radiánoch (celý kruh je 2π); tak program začína
EXP(x)číslo e (2,718…) umocnené na x
LOG(x)prirodzený logaritmus – opak EXP
CLOG(x)desiatkový logaritmus: CLOG(1000) je 3
RND(0)náhodné číslo od 0 (vrátane) po 1 (bez nej)

Tangens BASIC nemá, je to SIN(X)/COS(X). Číslo π tiež nie – ulož si ho do premennej.

Celý program

Súbor examples/math.abas:

Atari BASIC
10 REM Mathematics and chance
20 DEG
30 PRINT "SIN(30) = ";SIN(30)
40 PRINT "COS(60) = ";COS(60)
50 PRINT "ATN(1) = ";ATN(1)
60 RAD
70 PI=3.14159265
80 PRINT "SIN(PI/2) = ";SIN(PI/2)
90 PRINT "EXP(1) = ";EXP(1)
100 PRINT "LOG(10) = ";LOG(10)
110 PRINT "CLOG(1000) = ";CLOG(1000)
120 PRINT "2^10 = ";2^10
130 REM Throwing a die: a whole number from 1 to 6
140 FOR I=1 TO 10
150   PRINT INT(RND(0)*6)+1;" ";
160 NEXT I
170 PRINT

Preklad a spustenie

Basic26 math.abas --sim

Čo uvidíš

SIN(30) = 0.499999999
COS(60) = 0.50000001
ATN(1) = 45.0000003
SIN(PI/2) = 1
EXP(1) = 2.71828179
LOG(10) = 2.30258509
CLOG(1000) = 3
2^10 = 1024
5 6 1 2 2 3 6 2 1 2 

Ako to funguje

Atari BASIC
INT(RND(0)*N)+1

je náhodné celé číslo od 1 do N. Na čísle v zátvorke RND nezáleží, zvykne sa písať nula.

Náhoda v simulátore a v emulátore

V simulátore dostaneš pri každom spustení tie isté „náhodné“ čísla – preto môže táto kapitola ukázať, čo program vypíše. Na Atari a v emulátore sú zakaždým iné.

Hádanka s náhodným číslom

Hra z kapitoly 9 potrebovala zmeniť jediný riadok:

Atari BASIC
20 SECRET=INT(RND(0)*100)+1:TRIES=0

Časté chyby

Čo sa staloČo sa stane
uhol v stupňoch bez DEGSIN(30) vyjde -0.988…, lebo 30 sa berie ako radiány
logaritmus nuly alebo záporného číslaERROR- 3 AT LINE 10
EXP príliš veľkého čísla (EXP(300))ERROR- 3 – výsledok sa nezmestí
RND(0)*6 bez INTdesatinné číslo, nie hod kockou
INT(RND(0)*6) bez +1čísla 0 až 5
premenná PI bez priradeniaje nula, a s ňou všetky výsledky

Vyskúšaj si

  1. Vypíš tabuľku sínusov pre uhly 0, 15, 30 … 90 stupňov.
  2. Hoď dvoma kockami stokrát a spočítaj, koľkokrát padol súčet 7. (Spusti v emulátore viackrát.)
  3. Vyber náhodné písmeno abecedy: náhodné číslo 0–25, pripočítaj 65 a daj do CHR$.

Zhrnutie

Späť: 15. Znaky a čísla · Ďalej: 17. Chyby za behu