Tijekom zimskih praznika Marko ima više slobodnog vremena te želi pomoći svojim roditeljima u pripremanju ručka za cijelu obitelj. Marko se s roditeljima dogovorio da za današnji ručak on skuha povrtnu juhu. Međutim, Marko baš i nema nekoga kulinarskog iskustva te nema pojma što činiti. Zbunjen i zabrinut, pokušava dobiti mamu i tatu na poslu, ali svi su njegovi napori bezuspješni. Srećom, u onoj gužvi, na kuhinjskom stolu izvirio je papirić s uputama što treba raditi. Osmijeh mu se vratio na lice jer roditelji dobro poznaju svog sina i sigurni su da će ovaj recept pomoći Marku da skuha ukusnu juhu.
Gdje ste već čuli za izraz "algoritam"? Nema li svaka radnja svoj algoritam? Ne sastoji li se sve oko nas od beskonačnog broja algoritama?
Primjer algoritma koji nam često prvi pada na pamet jest recept za jelo.
Algoritam je skup koraka kojima se rješava neki problem a koji se izvode zadanim redoslijedom.
Algoritam se može zapisati na tri različita načina. Prvi je način da algoritam opišemo riječima govornog jezika. Drugi je način da algoritam prikažemo dijagramom toka, dok je treći način da se koristimo naredbama nekoga programskog jezika. Primjer prvog načina zapisivanja algoritma riječima govornog jezika jest recept koji je Marko našao na kuhinjskom stolu. Drugi je način prikaz algoritma s pomoću dijagrama toka. Dijagram toka algoritam prikazuje grafički na temelju korištenja različitih grafičkih simbola
. Pogledajmo videozapis koji pobliže objašnjava pojam algoritma i njegove konstrukte zapisane dijagramom toka.
Koji element dijagrama toka predstavlja grananje?
Koji element dijagrama toka predstavlja radnju?
Koji element dijagrama toka predstavlja unos podataka?
Koji element dijagrama toka predstavlja ispis podataka?
Pogledajmo kako se prikaz algoritma pomoću riječi govornoga jezika mijenja u grafički prikaz algoritma (dijagram toka) i na kraju u programski kôd:
Upari nazive algoritamskih konstrukta i njihove definicije:
grananje (odluka)
|
koraci se izvode jedan za drugim |
ponavljanje (petlja)
|
dio algoritma se izvršava više puta |
slijed
|
smjer izvođenja algoritma ovisi o uvjetu |
Na sljedećoj se ilustraciji nalaze sva tri algoritamska konstrukta zapisana dijagramom toka:
Poveži dijagrame s prethodne ilustracije s pripadajućim problemima.
slijed
|
računanje površine kvadrata |
ponavljanje
|
ispis manjeg broja |
grananje
|
ispis prirodnih brojeva manjih od n |
Sljedeće tablice sadrže kodove programskog jezika Python za prethodne primjere.
Prikaz programskog kôda koji predstavlja slijed i računa površinu (P) kvadrata duljine stranice a. |
a = int(input('a = ')) P = a * a print(P) |
Prikaz programskog kôda koji predstavlja grananje i ispisuje manji broj između dva unesena (a, b), uporabom if-else naredbi. |
a = int(input('a = ')) b = int(input('b = ')) if a < b: print(a) else: print(b) |
Prikaz programskog kôda koji predstavlja ponavaljanje i ispisuje n-1 prirodnih brojeva, uporabom for petlje. |
n = int(input('n = ')) for i in range (1, n): print(i) |
Na sljedećih nekoliko primjera pokazat ćemo sva tri načina zapisa algoritma.
Poredaj rečenice sljedećeg algoritma opisanog riječima govornog jezika tako da čine slijed. Algoritam predstavlja recept za povrtnu juhu.
Zamislimo neku radnju koju svakodnevno izvodimo. Primjerice, jutarnji ritual pranja zubi. Smislimo sada algoritam za tu radnju. Gdje pronalazimo slijed, gdje grananje ili odluku, a gdje ponavljanje? Sljedeći dijagram toka predstavlja jedan mogući algoritam pranja zubi.
Dovrši program koji će zatražiti da korisnik unese ime i dob te odabere prijevozno sredstvo – romobil ili skejt. Ako korisnik odabere romobil, ispiše se njegovo ime onoliko puta koliko je naveo godina, uz tekst: ", scooter is super!", a ako odabere skejt, ispiše se njegovo ime onoliko puta koliko je naveo godina s tekstom: ", sk8 is gr8!"
Pomoć:
Kako provjeriti je li odabir romobil?
Kako ispisati ime prije zadanog teksta?
Koliko puta ponavljamo petlju?
Ako nije odabran romobil, sigurno je odabran skejt. Trećeg izbora nema.
Pripazi na uvlake!
Postupak:
Za početak moramo dodati provjeru odabira korisnika, a nakon toga grananje, pri čemu se provjerava je li odabran romobil. Unutar grananja moramo pod uvlakom napisati petlju koja se ponavlja onoliko puta koliko je korisnik unio da ima godina, a koja ispisuje uneseno ime i pripadnu poruku. Ako nije odabran romobil, podrazumijeva se da je to skejt te se unutar else dijela programa ponovno piše petlja, no ovaj put s drugim tekstom. Pripazi na uvlake!
Kôd:
if odabir == 'r':
for i in range(godine):
print(ime, ', scooter is super!')
else:
for i in range(godine):
print(ime, ', sk8 is gr8!')
Za kraj jedan vic. Kako programer svira bubnjeve? Nema ritam, ali ima algoritam!