x
Učitavanje

2.1 Algoritam slijeda, grananja i ponavljanja

Što ću naučiti?
Europska unija - Zajedno do fondova EU
Sljedeća jedinica
Sadržaj jedinice icon sadržaj jedinice

Na početku...

Marko u kuhinji
Kuhinja s hladnjakom, štednjakom, napom i kuhinjskim elementima. Na štednjaku je lonac iz kojeg izviruje držak kuhače. U kuhinji je i dječak Marko u kuhinji koji u desnoj ruci drži majčin recept za juhu.

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.

Recept
Recept - sastojci i način pripreme - za juhu od cvjetače.

Algoritam

Algoritam

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.

Slijed, grananje i ponavljanje

Koji element dijagrama toka predstavlja grananje?

romb
paralelogram s gornjom većom stranicom
paralelogram s donjom većom stranicom
pravokutnik
null
null

Koji element dijagrama toka predstavlja radnju?

romb
paralelogram s gornjom većom stranicom
paralelogram s donjom većom stranicom
pravokutnik
null
null

Koji element dijagrama toka predstavlja unos podataka?

romb
paralelogram s gornjom većom stranicom
paralelogram s donjom većom stranicom
pravokutnik
null

Koji element dijagrama toka predstavlja ispis podataka?

romb
paralelogram s gornjom većom stranicom
paralelogram s donjom većom stranicom
pravokutnik
null

Algoritamski konstrukti

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
null
null

Na sljedećoj se ilustraciji nalaze sva tri algoritamska konstrukta zapisana dijagramom toka:

Dijagram toka - slijed, grananje i ponavljanje
Primjeri dijagrama toka za slijed, grananje i ponavljanje.

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
null
null

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) 

Vježba

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.

  • U lonac dodamo povrće
  • Začinimo solju i paprom
  • Povrće očistimo i nasjeckamo
  • Dodamo vodu te kuhamo
  • Lagano pržimo dok ne omekša
  • U loncu zagrijemo ulje
  • Dodamo peršin i poslužimo
null
null

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!')

...i na kraju

Za kraj jedan vic. Kako programer svira bubnjeve? Nema ritam, ali ima algoritam!

Programer bubnjar
Prohramer svira bubnjeve. Na prednjoj opni bubnja je dijagram toka grananja.

Procijenite svoje znanje

Povratak na vrh