Korišćenje funkcija u izrazima
Da se podsetimo - funkcije takođe mogu učestvovati u izrazima. Druga bitna stvar je da funkcije vraćaju vrednost (iako to nije pravilo). Funkcija se uvek poziva tako što se navede naziv funkcije i odmah potom lista parametara u zagradi (parametri se još nazivaju i "argumenti").
funkcija(parametri)
Funkcija može imati jedan ili više parametara koji se onda odvajaju zarezima. Neke funkcije uopšte nemaju parametre, ali i kod njih moraju da se navedu zagrade.
fun(param) // funkcija sa jednim parametrom
fun(param1, param2, ...) // funkcija sa više parametara
fun() // funkcija bez parametara
Programski jezici obično dolaze "napakovani" brojnim bibliotekama funkcija koje programeri mogu koristiti. Zahvaljujući tome, vreme programiranja se jako skraćuje - jednostavno, ne moramo raditi nešto što je neko već napravio.
Parametri (uobičajeno) moraju imati vrednost. Svaki parametar može biti literal, promenljiva, ponovo poziv neke funkcije ili čitav izraz. U najstriktnijem smislu, moramo zadati tačno onoliko parametara koliko se traži i to tako da pazimo da njihove vrednosti budu odgovarajućih tipova. Funkcija vraća samo jednu vrednost.
Ugrađene funkcije u Algoritmima
Aplikacija Algoritmi na START platformi nam omogućava da koristimo određen broj ugrađenih funkcija u našim blok-dijagramima i ovde dajemo njihovu referentnu listu. Većina ovih funkcija u nekom obliku postoji u različitim programskim jezicima, odnosno okruženjima. Neke smo "pozajmili" iz Pascala, neke iz BASIC-a, a neke iz JavaScripta.
| Aritmetika | |
|---|---|
| abs(x) | Vraća apsolutnu vrednost zadatog broja x |
| sqr(x) | Vraća kvadrat zadatog broja x |
| sqrt(x) | Vraća kvadratni koren zadatog broja x |
| trunc(x) | Vraća vrednost broja x zaokruženog na celi broj, tako što mu se zanemaruju decimale |
| floor(x) | Vraća vrednost broja x zaokruženog na prvi manji celi broj |
| ceil(x) | Vraća vrednost broja x zaokruženog na prvi veći celi broj |
| round(x) | Vraća vrednost broja x, matematički zaokruženog na celi broj |
| rand() | Vraća slučajan broj u intervalu od 0 do 0.9999999 |
| Trigonometrija | |
| sin(a) | Vraća sinus ugla a (izraženog u radijanima) |
| cos(a) | Vraća kosinus ugla a (izraženog u radijanima) |
| tan(a) | Vraća tangens ugla a (izraženog u radijanima) |
| asin(x) | Vraća arkus-sinus broja x |
| acos(x) | Vraća arkus-kosinus broja x |
| atan(x) | Vraća arkus-tangens broja x |
| Logaritmi | |
| ln(x) | Vraća logaritam broja x za osnovu e (prirodni logaritam) |
| exp(x) | Vraća eksponent broja x - ex |
| Stringovi | |
| len(s) | Vraća dužinu zadatog stringa s |
| str(x) | Zadati broj x konvertuje u string |
| val(s) | Zadati string s konvertuje u broj (pod uslovom da je broj zadat u obliku stringa) |
| ord(s) | Vraća numerički kod zadatog znaka s |
| chr(x) | Vraća znak koji odgovara zadatom numeričkom kodu x |
| Strukture podataka | |
| array(n,m,...) | Kreira dinamički niz sa zadatim dimenzijama. Indeksi članova niza zadaju se u uglastim zagradama, npr. a[i,j]. Elementi niza ne moraju biti istog tipa. |
Ovde ćemo predstaviti i nekoliko grafičkih funkcija, koje koristimo za crtanje u grafičkom okviru. Ove funkcije ne vraćaju vrednost (tj. vraćaju 0), tako da ih nema smisla koristiti unutar izraza.
| Grafika | |
|---|---|
| color(boja) | Postavlja boju za iscrtavanje linije. Boja se zadaje kao string u CSS formatu. |
| fill(boja) | Postavlja boju za popunjavanje oblika. Boja se zadaje kao string u CSS formatu. |
| rgba(r,g,b,a) | Ok, ova funkcija vraća vrednost - na osnovu 4 numeričke vrednosti definiše CSS string za boju koji se onda može koristiti u color() ili fill() funkciji. Vrednosti r, g i b su u rangu od 0..255, a vrednost a od 0..1. |
| cls() | Briše grafički okvir |
| pixel(x,y) | Iscrtava tačku na zadatim koordinatama x,y |
| line(x1,y1, x2,y2) | Iscrtava liniju od tačke x1,y1 do tačke x2,y2 |
| rect(x,y, sir,vis) | Iscrtava pravougaonik od tačke x,y za zadatu širinu i visinu |
| ellipse(x,y, rx,ry) | Iscrtava elipsu sa centrom u tački x,y i poluprečnicima rx i ry |
| paint() | Iscrtava ranije zadate grafičke komande. Kada u algoritmu postoji ova funkcija, ništa se ne iscrtava dok se ne dođe do nje. Na taj način se jako ubrzava crtanje i dobijamo glatku i brzu animaciju u grafičkoj konzoli. |
Pored navedenih funkcija, naš sistem za rad sa algoritmima ima i određene "sistemske" konstante koje možemo koristiti:
| Trigonometrija | |
|---|---|
| _PI | Broj PI |
| Grafika | |
| _WIDTH | Širina grafičkog okvira u pikselima |
| _HEIGHT | Visina grafičkog okvira u pikselima |
Primer
Pogledajmo jedan jednostavan primer...
Možete i sami isprobati kako ovaj primer funkcioniše.