x
Učitavanje

3.4 Rješavanje jednostavnijih zadataka uz pomoć algoritama

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

Prije nego li krenemo s rješavanjem jednostavnijih zadataka uz pomoć algoritama, prisjetimo se sljedećim video primjerom kako izgleda algoritam:

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.

Primjer algoritma
Slikovnica tvrdog uveza gdje je algoritam objašnjen na primjerima Rubikove kocke.

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).

Algoritamske strukture
Shematski prikaz algoritamskih struktura - slijed naredbi, grananje i ponavljanje.

Petar želi pokrenuti program Bojanje na računalu. Pomogni Petru ispravno poredati algoritamske korake koji će ga dovesti do rješenja.

  • Klikni lijevom tipkom miša na izbornik Windows (Start).
  • Upali računalo.
  • Klikni lijevom tipkom miša na program Bojanje.
  • Pronađi u izborniku mapu Pomagala sustava windows.
  • Klikni lijevom tipkom miša na mapu da se proširi u izborniku.
null
null

Slijed naredbi ili sekvenca

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 a  izračunati opseg i površinu kvadrata.

Kvadrat
Kvadrat s označenim stranicama.

ALGORITAMSKI OPIS RJEŠENJA:

  1. Na početku programa treba unijeti vrijednost za varijablu a .
  2. Zatim treba izračunati opseg i površinu.
  3. Na kraju treba ispisati rješenje.

RJEŠENJE PSEUDOJEZIKOM:

ulaz a

o = 4 * a

p = a * a

izlaz o , p

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?

  • izlaz o , p  
  • o = 2 * a + 2 * b  
  • p = a * b
  • ulaz a , b  
null
null

Programsko grananje

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++
a k o   j e   uvjet   o n d a         n a r e d b a 1 i n a č e         n a r e d b a 2  
i f   uvjet   :         n a r e d b a 1 e l s e   :         n a r e d b a 2   i f   ( u v j e t )         n a r e d b a 1   ; e l s e         n a r e d b a 2   ;  

Primjer 2.

ZADATAK:

Napiši program u koji se unosi cijeli broj a te ispisuje taj broj s porukom je li paran ili neparan!

ALGORITAMSKI OPIS RJEŠENJA:

  • Unos broja u varijablu a  
  • 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:

ulaz a

ako je a m o d 2 = = 0 onda

    izlaz a ,   ' j e p a r a n '  
inače

    izlaz a , ' j e n e p a r a n '

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 km/h , a ispisuje kreće li se auto prebrzo u naselju?

  • izlaz ( " V o ž n j a   u   o g r a n i č e n j i m a " )
  • ako je v > 50 onda
  • inače
  • izlaz ( " P r e b r z a   v o ž n j a " )
  • ulaz v
null
null

Ponavljanje naredbi

Ponavljanje (petlja) je algoritamski konstrukt koji koristimo kada je neku radnju potrebno ponoviti više puta.
Postoje dvije vrste petlji:

  • petlja s unaprijed poznatim brojem ponavljanja
  • petlja s uvjetom
OPIS Petlja s unaprijed poznatim brojem ponavljanja Petlja kod koje nije unaprijed poznat broj ponavljanja, a uvjet se provjerava na početku petlje.
PSEUDOJEZIK z a   i = p   d o   k     č i n i t i         n a r e d b a d o k   j e   uvjet     č i n i t i         n a r e d b a
PYTHON f o r   i   i n   r a n g e   ( p ,   k + 1 )   :         n a r e d b a w h i l e     uvjet   :         n a r e d b a
C/C++ f o r   ( i = p ;   i < = k ;   i + + )         n a r e d b a ; w h i l e     ( uvjet )         n a r e d b a ;

Primjer 3.

ZADATAK:

Napiši program u koji se unosi neki prirodni broj n i zatim izračuna i ispisuje zbroj prvih n prirodnih brojeva.

OPIS ALGORITAMSKOG RJEŠENJA:

  • unos vrijednosti u varijablu n
  • 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 1 do n .
  • svaki put vrijednost kontrolne varijable dodajemo varijabli zbroj
  • nakon završetka petlje ispišemo rezultat

RJEŠENJE PSEUDOJEZIKOM:

ulaz n  
zbroj = 0  
za i = 1 do n činiti
    zbroj = zbroj + i  
izlaz 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 0
  • 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 - m o d )
    • broj podijelimo cjelobrojno d i v s deset kako bismo uklonili zadnju znamenku iz broja
  • ispišemo rezultat

RJEŠENJE PSEUDOJEZIKOM:

ulaz a

zbroj = 0

dok je a < > 0 :

{ zbroj = zbroj + a m o d 10 a = a d i v 10 }

izlaz zbroj

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.

  • izlaz i  
  • ako je i m o d 2 = = 0 onda
  • ulaz n  
  • za i = 1 do n činiti
null
null

Zadatak 1.

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!

Zadatak 2.

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. 

...i na kraju

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!

Procijenite svoje znanje

Povratak na vrh