Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Pojam algoritma predstavlja temelj za razumijevanje računarstva!
Osnovni pojmovi algoritma
Priča o algoritmima
Priču o algoritmima možemo započeti kao i sve priče:
Nekada davno u Bagdadu živio je pisac, matematičar, astronom i geograf
imenom Muhammed ibn Musa al Khowarizmi. I te daleke 852. godine
kada je pisao knjigu Kitab al jabr w'al-muqubala nije ni sanjao da će se
spominjati stoljećima kasnije.
Tako i riječ algoritam potječe od tog perzijskog matematičara, astronoma i geografa iz
9. stoljeća. U svojoj knjizi opisao je postupke za računanje u indijskom brojevnom sustavu.
Original na arapskom nije sačuvan, a latinski prijevod proširio se Europom pod naslovom
Algoritmi de numero Indorum (Al-Khwarizmi o indijskim brojevima).
Prema tom naslovu postupke za sustavno rješavanje problema danas nazivamo
algoritmima.
U svakodnevnom životu smo zapravo stalno u doticaju s algoritmima, a često i postupamo po
algoritmima da toga nismo niti svjesni. Znati "algoritamski" razmišljati dobro je bez obzira
bavili se vi poslije programiranjem ili ne.
U klasičnom razdoblju indijske matematike (400. - 1200.) zabilježena su značajna
postignuća. Dekadski brojevni sustav koji se danas koristi prvi put koristio se u
indijskoj matematici. Indijski matematičari su dali rani doprinos proučavanju
koncepta nule kao broja, negativnih brojeva, aritmetike i algebre. Uz to se u Indiji
razvila i trigonometrija, uključujući suvremene definicije sinusa i kosinusa. Ti
matematički koncepti su se kasnije prenijeli na Bliski Istok, Kinu i Europu te bitno
pridonijeli razvoju koncepata koji danas tvore temelj mnogih područja matematike.
%
Svojstva algoritma
Pojam algoritma i njegova svojstva Algoritam mora udovoljiti nekoliko kriterija (svojstava), a između ostalih i:
Kriterij Opis
OpćenitostAlgoritam mora biti pogodan za rješavanje određenog tipa problema, a ne samo
jednog konkretnog problema.
KonkretnostAlgoritam mora prihvatiti konačan broj ulaznih veličina koje u potpunosti određuju
konkretni problem koji treba riješiti.
Svrhovitost Algoritam mora dati barem jedan rezultat rješenja problema.
Konačnost Algoritam mora dati rješenje problema u konačnom broju koraka odnosno postupaka.
Efikasnost Postupak mora završiti u prihvatljivom vremenu i utrošku drugih resursa.
Ponovljivost Ponovljeni postupak uz iste ulazne veličine mora dati isti rezultat.
Razumljivost Postupci određeni algoritmom moraju biti poznati izvršitelju.
Formaliziranost Svaki postupak mora biti jednoznačno i nedvosmisleno definiran.
Instruktivnost Postupci trebaju biti iskazani u formi naredbi izvršitelju.
Algoritam je uređeni skup jednoznačnih (nedvosmislenih) izvedivih koraka, odnosno niz
preciznih uputa koje nas korak po korak vode do rješenja nekog problema.
Algoritam izvodi neke operacije nad nekim podacima, u obliku niza koraka, i daje neko
rješenje.
o Cilj algoritma je cjelokupni zadatak svesti na niz jednostavnih, manjih radnji.
o Izvršavanjem osnovnih radnji moguće je na temelju ulaznih podataka dobiti rezultat.
Ulazni podaci
Algoritam
Rezultat
Pojednostavljeno
Ulaz
Obrada
Izlaz
Izrada algoritma u programiranju prethodi samom pisanju programa. Pri pisanju programa
prvo mora biti jasno što se od programa očekuje. Kao i kod rješavanja zadataka u bilo
kojem području morate ići nekim redom, što znači da najprije morate:
o Postaviti problem
o Izraditi grubu skica rješenja
o Izraditi algoritam.
Ako je algoritam dobro napravljen, pisanje programa nije ništa drugo nego prepisivanje
algoritma u neki programski jezik.
Kada to učinite, dobit ćete program, a program “govori" računalu da radi ono što mi želimo.
%
%
Koliko je 2 i 2? Pitanje u naslovu jedno je od najčešće postavljanih pitanja upućenih djetetu kojeg
iskušavamo u znanju računanja. Postoji i uzrečica da je sve "jasno kao dva i dva".
No, je li baš sve jasno?
Nema ničeg jednostavnijeg od utipkavanja "dva i dva" na džepnom računalu ili nekom od
programa na mobitelu, tabletu, ... i dobivanja rješenja, ali, već i pri tom jednostavnom
zadatku nailazimo na prvi problem.
A gdje je i?. Mi podrazumijevamo da je "dva i dva" zapravo dva više dva, da se radi o
matematičkoj operaciji zbrajanja.
Džepno računalo to ne zna. Znači - moramo biti precizniji i reći 2+2.
Tipkate 2 + 2 i ništa se ne događa.
Mogli smo to očekivati - džepno računalo je isključeno. Nitko nije rekao da prvo provjerimo
je li džepno računalo uključeno!
Ili ste u žurbi prstom zakačili i tipku iznad 2 i utipkali 52... Što sad? Jednostavno je - treba
pritisnuti tipku CE i zadnji će unos biti poništen. Sada ponovno upišite 2.
Pokušajmo sve ovo što smo u objašnjavanju zapetljali prepisati u obliku natuknica:
Tek smo riješili prvi problem kad se javlja drugi.
Provjerite da li je džepno računalo uključeno!
ako nije uključite ga
upišite 2
ako ste pogriješili pritisnite tipku CE i ponovite radnju iz prethodne natuknice
upišite +
ako ste pogriješili pritisnite tipku CE i ponovite radnju iz prethodne natuknice
upišite 2
ako ste pogriješili pritisnite tipku CE i ponovite radnju iz prethodne natuknice
pritisnite tipku =
ako ste pogriješili ponovite sve radnje počevši od trećeg reda
pročitajte rezultat
isključite džepno računalo
Mislite da je tu kraj? Stvari se mogu još zakomplicirati. Što ako je to model džepnog računala
bez tipke CE koja poništava zadnji unos?
A što ako džepno računalo ima solarnu ćeliju i ne gasi se na tipku već se samo isključi ako se
neko vrijeme ne rabi?
Razmislite o ovome prije nego što za nešto kažete da je jednostavno kao "dva i dva".
Dva najčešća zapisa algotitma su pseudokod i dijagram toka.
Da nam se ne bi događale situacije kao u prethodnom primjeru koristit ćemo algoritam.
Algoritam o kojem smo do sada govorili može se zapisati na više načina, i to:
Tekstualno
Dijagramom toka
Pseudokodom
Strukturogramom
Zapisuje se preciznim rečenicama govornog jezika a najčešće se rabi kod početnog korištenja algoritma.
Koriste se određeni grafički simboli za predstavljanje pojedinih aktivnosti u algoritmu.
Piše se u govornom jeziku ali u obliku “naredbi” tako da su “slične” naredbama programskog jezika.
Kombinacija grafičkog i pseudo koda. Koristi se kao prikladna dokumentacija za već završene programe.
Program se piše uz popunjavanje određene geometrijske slike.
P s e u d o k o d je algoritam zapisan riječima.
o Pseudo dolazi od grčkog laž, lažni, nadri, nazovi, tobožnji ...
o Kod je skup dogovorenih znakova kojima se prenosi neka poruka.
U programiranju se pod kodom podrazumijeva izvorni program napisan u nekom
programskom jeziku.
Jer upute ne pišemo u nekom od programskih jezika već dogovorenim riječima i znakovima
iz govornog jezika.
Prema tome, za pseudokod bismo mogli reći da je program "lažnjak".
Zašto pseudo? Zašto lažnjak?
%
%
Pseudokod:
Primjer
Potrebno je upisati prirodan broj x pa odrediti da li je paran ili neparan.
Unijeti broj.
Provjeriti da li je broj paran.
Ako je paran ispisati „Paran broj”.
Ako nije paran ispisati „Neparan broj”.
Tekstualni zapis: Strukturogram:
#include "stdafx.h"#include<iostream>using namespace std;
int main(){int x;cout<<"Upišite prirodni broj: ";cin>> x;
if (x % 2 == 0){cout << "Parni broj";
}elsecout<< "Neparni broj";
cout<<endl;system("pause");
return 0;}
Dijagram toka:
Program:
Etape izrade računalnog programa?
Analiza problema
Definicija i opis ulaznih i izlaznih podataka
Određivanje algoritma
Crtanje dijagrama toka
Pisanje programa u nekom programskom jeziku
Prevođenje programa i ispravak formalnih pogrešaka
Izvršavanje i testiranje programa te ispravak logičkih pogrešaka
Korištenje programa Održavanje programa Pis
an
je p
ro
gr
am
sk
e d
ok
um
en
tac
ije
Logičan slijed radnji u nekom programu je: ulaz, obrada i izlaz podataka.
Prema tome prikladne riječi koje ćemo rabiti su:
Početak Svaki algoritam ima samo jedan početak.
Upiši/Ulaz/Unesi/UčitajUnos podataka preko tipkovnice, miša, bar-kod čitača ili nekedruge ulazne jedinice.
Ispiši ili Izlaz Ispis podataka na zaslonu monitora, pisaču...
KrajBroj instrukcija u algoritmu mora biti konačan, svakialgoritam mora imati kraj i to samo jedan.
U tablici nema riječi za obradu podataka jer za to obično koristimo izraze koji nisu ništa
drugo nego prepisane, primjerice, matematičke formule.
Logičan slijed radnji u programu
Pseudokod za 2 i 2
Početak
Upiši 2
Upiši 2 - napisani program, prema ovakvom algoritmu, cijelo će vrijeme zbrajati samo 2 + 2
i neće moći zbrojiti druge vrijednosti. To svakako nije dobro.
Algoritam moramo napisati tako da prema njemu napisani računalni program bude što
općenitiji.
U našem slučaju bilo bi dobro napisati algoritam za općenito zbrajanje dva broja a ne samo
za zbrajanje određenih vrijednosti.
Kako se ne može unaprijed predvidjeti koja će dva broja korisnik htjeti zbrojiti, umjesto
brojeva potrebno je koristiti varijable.
U matematici varijabla je neka promjenjiva veličina, a u programu to je rezervirano mjesto u
radnoj memoriji.
Razmislimo malo. Što će se dogoditi ako napišemo Upiši 2?
U našem primjeru trebat će nam tri takva mjesta u memoriji računala. Neka to budu varijable
Br1 i Br2 za brojeve koje zbrajamo i Rez za rezultat.
Početak
Upiši Br1, Br2
Rez = Br1 + Br2
Ispiši Rez
Kraj
U trećem redu pseudokoda izraz za zbrajanje varijabli Br1 i Br2 napisan je različito od
načina na koji bismo dva broja zbrojili na papiru i nećemo ga pročitali kao u matematici:
Rez je jednako Br1 + Br2.
Sada rabimo mjesta rezervirana u radnoj memoriji i zato sadržaj mjesta u radnoj memoriji
rezerviran za rezultat Rez postaje jednak zbroju sadržaja mjesta u kojima su spremljeni
brojevi Br1 i Br2 i čitamo:
Rez poprima vrijednost (postaje) Br1 + Br2.
c = 5 + 6 c = 11
c = 11 + (6 - 5) c = 11+ (1) = 12
c = 12 * 2 c = 24
Varijable - primjer
a b c
24
#include "stdafx.h"#include<iostream>using namespace std;int main(){int a, b, c;a=5;b=6;c= a + b;c= c+(b-a);c=c*2;cout<< c <<endl;system("Pause");return 0;}
Dijagram tijeka
Već smo rekli da se algoritmi najčešće zapisuju kao Pseudokod i Dijagram tijeka.
Oni pripadaju u klasu tzv. umjetnih jezika i nemaju stroga pravila zapisivanja instrukcija kao
viši programski jezici, ali su ipak detaljno definirani tako da se sve potrebne operacije mogu
jednoznačno opisati.
Za Dijagram tijeka možemo reći da je grafički prikaz algoritma.
Takav način zapisivanja ima nekoliko prednosti pred pseudokodom:
o zapisivanje se vrši međunarodno dogovorenim simbolima,
o ne ovisi o govornom jeziku sastavljača algoritma,
o prikaz je jednostavan, pregledan i lako se pronalaze pogreške,
o problem se može jednostavno analizirati,
o troši se manje vremena na pronalaženje rješenja.
Najvažnije konstrukcije algoritma
Ponavljanje – Struktura petlje (iteracija)
Ponavljanje u algoritmu (tzv. petlje) omogućava višestruko izvođenje određenog broja naredbi
u zavisnosti od uvjeta koji govori do kada se taj niz naredbi mora uzastopno ponavljati.
Oprez!Na dvije stvari se posebno mora obratiti pažnja:
o granični uvjet petlje (odluka kada će se petlja prestati "vrtjeti"),
o mogućnost lošeg zadavanja uvjeta ponavljanje koji za posljedicu
ima beskonačno ponavljanje tog dijela koda!
Slijed – Pravocrtna struktura (sekvenca)
Instrukcije se odvijaju jedna iza druge, odnosno izvode se pravocrtno jedna iza druge.
Grananje – Struktura grananja (selekcija)
Osnova grananja u algoritmu je ispitivanje logičkog uvjeta. Logički uvjet može poprimiti
samo dva uvjeta: istina ili laž, te u zavisnosti od te vrijednosti izvodi se određeni dio koda.
Osnovni simboli
Dijagrama tijeka:
Najava (deklaracija) varijabli i konstanti.
Postavljanje na početnu vrijednost.
Obrada podataka.
Početak / Kraj
Izlaz podataka
Ulaz podataka
Odluka
Priključna točka
Informacijski tijek
Vanjski modul
Samo u slučaju rješavanja najjednostavnijih zadataka, programska struktura je
pravocrtna i program se uvijek izvršava istim slijedom naredbi.
Opis Pseudo jezik
Unos ulaz
Ispis izlaz
Operator pridruživanja :=
Zadatak 1
Unijeti dva cijela broja a i b, zbrojite ih i ispisati njihov zbroj c. Algoritam zadatka napisati
pseudokodom i nacrtati dijagram tijeka.
Pseudokod
Početak
a, b
c = a + b
Kraj
Dijagram tijeka
#include "stdafx.h"#include<iostream>using namespace std;int main()
{int a,b,c;cout<<"Unesite prvi broj: ";cin>>a;cout<<"Unesite drugi broj: ";cin>>b;c = a + b;cout<< c <<endl;system("Pause");return 0;}
Zadatak 2
Potrebno je unijeti cijenu proizvoda c i postotak sniženja p pa izračunati cijenu proizvoda s
nakon sniženja i ispisati je.
Pseudokod
Početak
c, p
s = (c – (c*p/100));
Kraj
Dijagram tijeka
#include "stdafx.h"#include<iostream>using namespace std;int main(){float c,p,s;cout<<"Unesite cijenu: ";cin>>c;cout<<"Unesite sniženje u %: ";cin>>p;s = (c-(c * p /100));cout<<"Nova cijena: "<< s <<endl;system("Pause");return 0;}
Zadatak 3
Potrebno je unijeti realni broj veći od 0 (nije potrebna provjera) te:
o Izračunati drugi korijen broja.
o Zaokružiti uneseni broj na najbliži veći cijeli broj.
o Zaokružiti uneseni broj na najbliži manji cijeli broj.
o Ispisati dobivene vrijednosti.
Pseudo kod
Početak
x
a:= sqrt (x);b:= ceil (x);c:= floor (x);
Kraj
Dijagram tijeka
Zadatak 4
Potrebno je unijeti dva broja pa izračunati i ispisati njihov kvocijent, cjelobrojni dio kvocijenta
i cjelobrojni ostatak dijeljenja ta dva broja.
Pseudokod
Početak
x, y
a = x / y;b = x % y;
Kraj
Dijagram tijeka
a,b
#include "stdafx.h"#include <iostream>using namespace std;
int main(){int a, b, kvocjent, ost;float dj;cout << "Upišite broj koji dijelite: ";cin >> a;cout << "Upišite broj kojim dijelite: ";cin >> b;
kvocjent = a / b;ost = a % b;dj = float (a) / float (b);
cout <<endl << "Vrijednost izraza a / b iznosi: " << kvocjent << endl; cout <<endl << "Vrijednost izraza a % b iznosi: " << ost << endl;cout <<endl << "Vrijednost izraza a / b iznosi: " << dj << endl<< endl;
system ("pause");return 0;}
Zadatak 5
Potrebno je zamijeniti sadržaj dvije varijable a i b.
Pseudo kod
Početak
a, b
c = a;a = b;b = c;
Kraj
Dijagram tijeka
Grananje uvijek ima jedan ulaz i najmanje dva izlaza. Ako su samo dva izlaza, onda je riječ
o jednostrukom grananju, a odgovori na postavljeni logički uvjet mogu biti Da ili Ne,
odnosno T ili F (True i False).
Ako je moguće odabrati više odgovora, onda govorimo o višestrukom grananju.
Nažalost, u životu zbivanja ne teku jednostavno kao što je slučaj s pravocrtnim algoritmima.
Ponekad treba stati, razmisliti, usporediti neke stvari i donijeti odluku kako dalje. Takvo
mjesto u algoritmu zove se grananje.
Grananje je programska struktura koja omogućuje različit tijek programa, ovisan o rezultatu
postavljenog uvjeta. To je važna struktura bez koje bi mogućnost rješavanja zadataka
računalom bila vrlo ograničena. Rezultat postavljenog uvjeta mora biti jedno od dva stanja:
True/False, da/ne, istina/laž, 1/0.
Vrijednost rezultata uvjeta bit će 1 ako je uvjet zadovoljen i 0 ako uvjet nije zadovoljen.
Dijelovi programa koji se uvjetno izvode, grupiraju se u skupine ili blokove naredbi. Svaki se
blok naredbi u ovoj inačici pseudo jezika omeđuje parom otvorene i zatvorene vitičaste
zagrade ({ }). Ako blok naredbi ima samo jednu naredbu zagrade se mogu izostaviti. Blokovi
naredbi se obično pišu uvučeno zbog preglednosti.
U dijagramu tijeka se za grananje koristi geometrijski lik romb:
Opis Pseudo jezik
Grananje
ako je uvjet ondanaredba 1
inačenaredba 2
Blok naredbiC++
{}
Zadatak 1
Potrebno je upisati prirodan broj x pa odrediti da li je paran ili neparan. Rezultat ispisati.
Algoritam zadatka napisati pseudo jezikom i nacrtati dijagram tijeka.
Pseudokod Dijagram tijeka
a = x % 2
Pseudokod
Zadatak 2
Nakon unesena dva broja x i y odrediti i ispisati dali je x > y, x < y ili x = y.
Pseudokod Dijagram tijeka
Zadatak 3
Upisati prirodni broj x i provjeriti da li je x istodobno djeljiv sa 7 (s) i s 9 (d). Ispisati rezultat.
Pseudokod Dijagram tijeka
s =x % 7d =x % 9
Pseudokod
Primjer uporabe uvjetnog grananja
Napisati program za unos tri broja te izračunavanje razlike između najvećeg i zbroja ostala
dva broja.
IF
ELSEIF
ELSE
Treba upisati vrijednosti dva broja a i b te ispisati poruku o tome koji je veći.
Grananje – usporedba
Početak
a, b
a > b
a > bb > a
DaNe
Kraj
Stvar izgleda vrlo jednostavna. Ali, što ako netko
upiše dva ista broja, primjerice 5 i 5? U uvjetu će
biti pitanje da li je 5 > 5. Odgovor je Ne i
sukladno tome izvršit će se lijeva grana, a kao
rezultat ispisat će se: Broj 5 je veći od broja 5.
Ova poruka baš i nema logike!
Zato ljudi koji rade na razvoju informacijskih
sustava moraju predvidjeti što više situacija, pa i
onih najekstremnijih, koje bi se pri radu s
programom mogle dogoditi. Dobra kontrola
podataka pri unosu sprječava do 90% pogrešaka
koje bi se naknadno u radu programa mogle
dogoditi.
Zato ćemo rješenje zadatka malo promijeniti:
Početak
a, b
a = b
b > a
a = b
Da Ne
Kraj
a > bDaNe
a > b
Ponavljanje
Ponavljanje (petlje) služe za višestruko ponavljanje dijela koda. Pa, zapetljajmo stvari još
malo.
Nekada su nastavnici imali običaj učenike kažnjavati tako da su im zadali 100 puta napisati u
bilježnicu: "Neću nikada više ….!". Zamislite da danas dobijete takvu kaznu.
Naravno, računalo će nas spasiti i odraditi kaznu umjesto nas. Treba mu samo zadati da 100
puta ispiše jednu te istu poruku. Ništa jednostavnije. Evo rješenja:
Morate priznati da ovakvo rješenje baš i nije nešto s čime bi se mogli pohvaliti.
Početak
„Neću nikada ...”
„Neću nikada ...”
„Neću nikada ...”
Ovo je već bolje!
Brojač
Početak
i = 1
i > 100Da
Ne
Kraj„Neću nikada ...”
i = i + 1
Petlja
Neki zlobnici tvrde da napredak možemo zahvaliti
samo ljudskoj lijenosti. Naime, ljudi će svašta
izmisliti samo da ne moraju raditi. Tako je netko
izmislio još jednostavnije rješenje za naš primjer s
ispisom 100 poruka.
Kraj„Neću nikada...”
Pravokutnik ispod simbola za početak je naredba
For koja je sama po sebi petlja. Brojač, kao i uvjet
već su sadržani u naredbi, pa ne treba voditi brigu
oko brojača. Taj red u algoritmu čitamo:
"Za i koji ide od 1 do 100 učini slijedeće:".
For i = 1 to 100
Početak
Kada je u programu potrebno ponoviti neku radnju više puta rabi se programska struktura
petlje koja omogućuje ponavljanje jedne ili više naredbi.
Petlja može biti:
o Bezuvjetna - izvršava se unaprijed zadan broj puta.
o Uvjetna - broj ponavljanja petlje ovisi o postavljenom uvjetu.
Naredbe ove inačice pseudo jezika za strukturu petlje su:
Opis Pseudo jezik
Petlja s unaprijed poznatim brojem ponavljanjaza i = a do b činiti
naredba;
Petlja kod koje nije unaprijed poznat broj ponavljanja, a uvjet se provjerava na početku petlje
dok je uvjet činitinaredba;
Petlja kod koje nije unaprijed poznat broj ponavljanja, a uvjet se provjerava na kraju petlje
ponavljatinaredba;
dok je uvjet;
Da ponovimo
U ovom se primjeru petlja ponavlja sto puta.
To je ostvareno naredbom:
za k = 1 do 100 činiti
Pri svakom prolazu petlje vrijednost varijable k se
poveća za jedan (od početne vrijednosti 1 do
krajnje vrijednosti 100).
Zadatak 1
Potrebno je upisati 100 cijelih brojeva. Prije svakog unosa broja ispisati tekst “Unesi broj”.
Algoritam zadatka napisati pseudokodom i nacrtati dijagram tijeka.
Pseudokod
Početak
x
Kraj
Dijagram tijeka
Petlja se p
on
avlja 1
00 p
uta
Zadatak 2
Potrebno je ispisati parne brojeve u rasponu od 1 do 100.
Pseudokod
Početak
Kraj
Dijagram tijeka
Petlja se p
on
avlja 1
00 p
uta
i % 2=0
i
Da
Ne
i = 1 to 100
Zadatak 3
Potrebno je unositi brojeve. Unos traje sve dok je zbroj unesenih brojeva manji od 1000.
Nakon što zbroj unesenih brojeva postane veći ili jednak 1000 unos se prekida. Ispisuje se
zbroj unesenih brojeva i podatak o broju unesenih brojeva.
U ovom se primjeru rabi uvjetna petlja. Unaprijed
nije moguće odrediti koliko će se puta petlja
izvršiti. To ovisi o brojevima koje će unositi
korisnik. Ovakav tip zadataka rješava se tako da se
rabe pomoćne varijable. U ovom primjeru to su
varijable s i n. Te su pomoćne varijable na početku
prazne, a tijekom odvijanja petlje sadržaj im se
mijenja. Ako se uneseni brojevi žele zbrajati, oni
se tijekom odvijanja petlje pribrajaju pomoćnoj
varijabli s. Ako se uneseni brojevi žele prebrojiti,
sadržaj pomoćne varijable n se svakim prolaskom
kroz petlju uvećava za 1.
Pseudokod
U ovom primjeru petlja će se izvršiti barem jednom
zbog uvjeta koji se ispituje na kraju.
Zadatak 4
Potrebno je unositi parove brojeva x i y. Samo u slučaju ako su oba broja pozitivna treba
ispisivati njihov umnožak. Unos traje sve dok se za vrijednost varijable x ili varijable y ne
unese 0.
Pseudokod
Dijagram tijeka