Prije nego li krenemo s rješavanjem jednostavnijih zadataka uz pomoć algoritama, prisjetimo se sljedećim video primjerom kako izgleda algoritam:
Prisjetimo se gradiva petog i šestog razreda. Algoritam je uputa kako riješiti neki problem. Pri tome se problem rastavi na manje dijelove - korake. Rješavanjem algoritma korak po korak dolazimo do rješenja problema. U prethodnom video primjeru, Karlo je koristio algoritam za sastavljanje robota te je uz pomno praćenje koraka došao do rješenja problema, odnosno sastavio je robota.
Kako bi smanjili broj pogrešnih poteza i skratiti potrebno vrijeme, prilikom slaganja Rubikove kocke dobro se voditi provjerenim algoritmom. Prethodna slika prikazuje algoritam za slaganje Rubikove kocke.
Algoritamsko razmišljanje ključno je za rješavanje zadataka programiranjem. U informatici se algoritmi zapisuju pseudojezikom, crtaju pomoću dijagrama toka ili pišu u nekom programskom jeziku. Bez obzira na način zapisa, prilikom algoritamskog rješavanja zadataka koriste se strukture (algoritamski konstrukti) poput slijeda naredbi (sekvenca), programskog grananja (odluke) i ponavljanja naredbi (programske petlje).
Petar želi pokrenuti program Bojanje na računalu. Pomogni Petru ispravno poredati algoritamske korake koji će ga dovesti do rješenja.
Svaki algoritam je slijed, budući da uvijek upute slijede jedna iza druge. Najjednostavniji problemski zadaci mogu se riješiti samo pomoću slijeda ili niza naredbi, pri čemu je bitno kojim se redoslijedom izvršavaju.
Primjer 1.
ZADATAK:
Napiši algoritam koji će na temelju unesene stranice izračunati opseg i površinu kvadrata.
ALGORITAMSKI OPIS RJEŠENJA:
RJEŠENJE PSEUDOJEZIKOM:
Napiši prethodni zadatak u Pythonu!
Pomoć:
Nakon unosa duljine stranice, u varijable o i p smjesti opseg i površinu.
Ispiši vrijednosti unutar jedne funkcije print() tako da prvo ispišeš opseg pa površinu, odvojene zarezom.
Postupak:
o = 4*a
p = a*a
print(o, p)
Što misliš, kako bismo ispravno poredali naredbe pseudojezika za algoritam koji unosi duljine stranice pravokutnika te računa i ispisuje njegov opseg i površinu?
Programsko grananje je struktura kod koje ovisno o istinitosti logičkog uvjeta usmjeravamo tok programa u jednom od dva moguća smjera. Pri tome će se neke naredbe izvršiti ili preskočiti, ovisno o uvjetu.
PSEUDOJEZIK | PYTHON | C/C++ |
---|---|---|
|
Primjer 2.
ZADATAK:
Napiši program u koji se unosi cijeli broj te ispisuje taj broj s porukom je li paran ili neparan!
ALGORITAMSKI OPIS RJEŠENJA:
- Unos broja u varijablu
- provjera logičkog uvjeta iz zadatka:
- ako je a djeljiv s dva ipisuje se da je paran
- ako a nije djeljiv s dva ispisuje se da je neparan
- kraj programa
RJEŠENJE PSEUDOJEZIKOM:
ako je onda
inače
Napiši prethodni zadatak u Pytonu!
Pomoć:
Za rješenje ovog zadatka koristimo grananje koje se u Pythonu zapisuje kao:
if uvjet:
naredba1
else:
naredba2
Uvjet jest provjera je li ostatak pri dijeljenju varijable a s dva jednak nuli.
Pripazi da ispis izgleda jednako kao u prethodnom zadatku!
Postupak:
if a % 2 == 0:
print(a, 'je paran')
else:
print(a, 'je neparan')
Što misliš, kako treba poredati naredbe pseudojezika za algoritam koji unosi brzinu automobila u
a ispisuje kreće li se auto prebrzo u naselju?
Ponavljanje (petlja) je algoritamski konstrukt koji koristimo kada je neku radnju potrebno ponoviti više puta.
Postoje dvije vrste petlji:
OPIS | Petlja s unaprijed poznatim brojem ponavljanja | Petlja kod koje nije unaprijed poznat broj ponavljanja, a uvjet se provjerava na početku petlje. |
PSEUDOJEZIK | ||
PYTHON | ||
C/C++ |
Primjer 3.
ZADATAK:
Napiši program u koji se unosi neki prirodni broj i zatim izračuna i ispisuje zbroj prvih prirodnih brojeva.
OPIS ALGORITAMSKOG RJEŠENJA:
- unos vrijednosti u varijablu
- vrijednost varijable zbroj postavimo na nulu
- iz zadatka se vidi da je broj ponavljanja konačan i unaprijed poznat, pa koristimo petlju s unaprijed poznatim brojem ponavljanja, ponavljamo tako da kontrolnu varijablu mijenjamo od do .
- svaki put vrijednost kontrolne varijable dodajemo varijabli zbroj
- nakon završetka petlje ispišemo rezultat
RJEŠENJE PSEUDOJEZIKOM:
zbroj
za do činiti
zbroj
Napiši prethodni zadatak u Pythonu!
Pomoć:
Za rješenje zadatka potrebna nam je akumulacijska varijabla zbroj koju najprije postavljamo na vrijednost nula.
For petljom koja kreće od 1 i završava s n + 1, u kontrolnu vrijablu i spremit ćemo sve prirodne brojeve od 1 do n, uključujući n.
Unutar petlje treba akumulator zbroj uvećati za i.
Na samom kraju programa potrebno je ispisati varijablu zbroj.
Postupak:
zbroj = 0
for i in range(1, n + 1):
zbroj += i
print(broj)
Primjer 4.
ZADATAK:
Napiši program u koji se unosi neki n-teroznamenksati prirodni broj i ispisuje zbroj njegovih znamenki.
OPIS ALGORITAMSKOG RJEŠENJA:
- unos broja
- vrijednost varijable zbroj postavimo na
- ne znamo koliko znamenki ima broj, koristimo petlju kod koje nije unaprijed poznat broj ponavljanja, ispitujemo je li broj različit od nule te ako je uvjet zadovoljen:
- zadnju znamenku dodajemo zbroju (zadnju znamenku dobivamo računanjem ostatka pri dijeljenju s deset - )
- broj podijelimo cjelobrojno s deset kako bismo uklonili zadnju znamenku iz broja
- ispišemo rezultat
RJEŠENJE PSEUDOJEZIKOM:
zbroj
dok je
Napiši prethodni zadatak u Pythonu!
Pomoć:
Najprije moramo u akumulacijsku varijablu zbroj pohraniti vijednost nula. Zatim napraviti petlju koja se izvršava dok god je a različito od nule. Unutar petlje akumulator zbroj uvećavamo za posljednju znamenku broja a, koju dobivamo tako da izračunamo ostatak cjelobrojnog dijeljenja a s deset. Isto tako, unutar petlje iz varijable a moramo izbaciti posljednju znamenku, a to činimo tako da a cjelobrojno podijelimo s deset.
Postupak:
zbroj = 0
while a != 0:
zbroj = zbroj + a % 10
a = a // 10
print(zbroj)
Zadatak je napisati program koji će na ekranu ispisati sve parne brojeve do nekog broja kojeg je unio korisnik.
Poredajte ispravno naredbe pseudojezika kojima se riješava ovaj zadatak.
LightBot je besplatna obrazovna igrica za mobilne uređaje (Android i iOS) koja pomaže u učenju programske logike i razmišljanja. Zadatak je provesti robota kroz poligon na način da se napišu naredbe za kretanje i usmjeravanje, a pri tome koriste algoritamski konstrukti slijeda, grananja i ponavljanja.
Instalirajte ovu edukativnu igricu na pametni telefon ili tablet i isprobajte ju!
Otvorite mrežnu stranicu code.org i riješite zadatke iz programiranja u Minecraft svijetu. Blok programiranje koje se koristi u ovakvim zadacima slično je pseudojeziku i lako možete prepoznati strukture grananja i ponavljanja koje smo koristili u ovoj jedinici.
Algoritam je uputa za rješavanje nekog zadatka tako da se problem zadatka razdijeli na manje dijelove - korake. Algoritmi se u informatici prikazuju pseudojezikom, dijagramom toka i naredbama nekog programskog jezika.
Osnovne algoritamske strukture pomoću kojih se pišu programi su slijed naredbi, grananje i ponavljanje.
Karlu smo pomogli u pripremi za ozbiljno programiranje. Nadogradi svoje znanje u aktivnostima za samostalno učenje!