Professional Documents
Culture Documents
PROGRAMSKE PETLJE
SEMINARSKI RAD
PROGRAMSKE PETLJE
SEMINARSKI RAD
Potpis studenta:
1
1. UVOD
U tom procesu kreiranja programa, odnosno izvravanja algoritma kroz kd, programer
mora sa kdom opisati algoritam, bilo da se radi o linijskoj, razgranatoj ili ciklinoj
strukturi algoritma.
U ovom seminarskom radu upravo elimo obraditi ciklinu strukturu, odnosno strukturu
petlje, kroz primjere implementacije u programskom jeziku C++, a poseban naglasak
kroz ovaj rad elimo staviti na znaaj petlje u programiranju kao i njenu kompleksnost
u smislu implementacije ali i samog odabira tipa petlje u odreenom programskom
problemu.
1
Wikipedia, http://bs.wikipedia.org/wiki/Programiranje, (27.03.2013)
2
Dakle, cilj rada jeste:
- dokazati ogroman znaaj programskih petlji u jednom programu,
- dokazati kompleksnost pri odabiru tipa petlje i primjeni petlje u programiranju.
A da bi uspjeli u tom pokuaju potrebno je detaljno obraditi svaki aspekt ove teme,
upoznati petlje, njihovu svrhu i nain na koji se koriste.
3
- Znanstvene metode,
- Struktura rada.
Peto poglavlje, Zakljuak, daje generalnu ocjenu o programskim petljama kao i odgovor
na prihvatanje radne i pomone hipoteze.
- Linijska (sekvencija)
- Razgranata (selekcija)
- Ciklina (iteracija)
4
se odvijaju u nizu jedan za drugim bez ponavljanja ili "skretanja".
Slika 1. Linijska struktura
Algoriram C++ kd
#include<iostream>
using namespace std;
int main()
{
int A,B,C;
cin >> A >> B;
C=A+B;
cout << C;
system("Pause");
}
Razgranata struktura e se pojaviti kod algoritma koji ima blok odluivanja kao to su
IF i CASE, pri emu se vri testiranje odreenog uslova, a prema rezultatu (obino
TRUE ili FALSE), algoritam se grana i nastavlja tok jednom od grana - opcija.
Primjer na slici (Slika 2.) je tipian, gdje se vri provjera da li je prvi broj vei od drugog
broja (A>B). Ako je uslov istinit, to jeste ako je prvi uneseni broj vei od drugog
unesenog broja, onda e se izvriti ono to je u tijelu funkcije IF, u suprotnom e se
ispisati poruka: Ne mogu izvrsiti radnju!.
Slika 2. Razgranata struktura
Algoriram C++ kd
#include<iostream>
using namespace std;
int main()
{
int A,B,C;
cin >> A >> B;
C=A-B;
if (A>B)
{
cout << C;
}
else
{
cout << "Ne mogu
izvrsiti ovu radnju!";
}
system("Pause");
}
5
3. TIPOVI PROGRAMSKIH PETLJI
Ciklini algoritam e se pojaviti kada treba isti posao uraditi vie puta i odavde ve
govorimo o programskim petljama, ili o strukturi petlje, odnosno ciklinoj strukturi.
Slika 3. Ciklina struktura (Struktura for petlje)
Algoriram C++ kd
#include <iostream>
using namespace std;
int main()
{
int A;
cin >> A;
for (A; A<=10; A++)
{
cout << A << endl;
}
system("Pause");
}
Postoji vie varijanti struktura petlje, a podijelu bi mogli svesti na tri osnovne:
- FOR
- WHILE
- DO WHILE
FOR petlju koristimo kada je broj iteracija (ponavljanja) unaprijed poznat. Primjer
ove petlje je na slici iznad (Slika 3.).
Kada govorimo o tipu petlje FOR u programskom jeziku C++, onda je to petlja sa tri
izraza, to je zajedniko svim programskim jezicima koji dijele zajedniku batinu sa C
programskim jezikom.
6
Slika 4. Izrazi u FOR petlji
Prvi izraz je inicijalizacija i u njemu moemo deklarisati varijablu i dati joj vrijednost,
drugi izraz je u stvari jedini pravi uslov, a definiemo ga pomou poredbenih operatora,
dok je trei izraz korak, a njega definiemo sa aritmetikim operatorima. Znak A++ na
primjeru u stvari znai A=A+1 i ovo je takozvani inkrement, dok A-- ili A=A-1
predstavlja dekrement.
for (;A<=10;)
Izostavljanje srednjeg izraza, koji je uslov, podrazumjeva da onda uslov dobije vrijednost
1, pa bi onda for (;;), predstavljao beskonanu petlju.
Kod WHILE tipa petlje iteracija se vri dok se ne zadovolji odreeni uslov koji je
definisan izrazom, sa provjerom na poetku petlje.
U ovom tipu petlje kao uslov koji se treba ispuniti dozvoljeno je koristiti samo jedan izraz
i to poredbeni izraz, odnosno izraz sa poredbenim operatorima, kao na primjer:
while (A<=10)
7
3.3. USPOREDBA FOR I WHILE PETLJE
Za poetak usporedbe moemo predstaviti tri implementacije istog problema sa ova dva
tipa petlji u C++ programskom jeziku.
- U tabeli iznad (Tabela 5), u prvoj koloni vidimo klasian primjer FOR petlje
sa sva tri izraza. Primjeujemo da je prvi izraz samo A varijabla, jer smo je
deklarisali prije petlje, a nismo joj odredili vrijednost jer smo ostavili mogunost
da to unese korisnik programa.
- U drugoj koloni je primjer FOR petlje u kom smo izostavili prvi i trei izraz,
prvi kao nepotreban jer ne daje nikakvu vrijednost, a trei smo izostavili, ali smo
u tijelo petlje unijeli A++; koja je u ovom sluaju naredba.
- U treoj koloni vidimo WHILE petlju koja je gotovo identina FOR petlji iz
prvog primjera sa jedinom razlikom u sedmoj liniji kda u kljunoj rijei poetka
petlje i izostavljenim znakovima taka-zarez.
8
WHILE petlja ima oblik:
Naredba e se izvravati sve dok izraz ima vrijednost istine. Naredba moe biti i blok
naredbi koje se onda stavljaju izmeu vitiastih zagrada i to je tijelo petlje.
izraz1;
while (izraz_2)
{
naredba;
izraz_3;
}
Kod DO WHILE tipa petlje iteracija se vri dok se ne zadovolji odreen uslov, sa
provjerom na kraju petlje.
DO WHILE petlja ima oblik:
do
naredba;
while (izraz);
9
mora proi barem jedanput kroz itav blok. Za ovu vrstu petlje u veini programa se
koristi kljuna rije "DO WHILE" prilagoena sintaksi programskog jezika.
Ovaj tip petlje koristimo ukoliko broj ponavljanja petlje nije unaprijed poznat, nego ovisi
o ispunjenju zadanog uslova i ukoliko elimo bar jednom provjeriti, odnosno uporediti
unesenu vrijednost sa uslovom u izrazu.
Na primjeru tabele iznad (Tabela 6.) moemo vidjeti jasnu razliku WHILE i DO
WHILE petlje. Obje petlje na primjeru iznad, daju isti rezultat, a jedina razlika u
rezultatu je ukoliko je ulazni podatak nula (0).
10
Dakle. iako smo kao ulazni podatak upisali broj nula (0) izvrila se jedna iteracija,
odnosno jedan prolaz kroz petlju, jer se provjera izvrava na izlazu iz petlje, to je
karakteristika DO WHILE petlji..
Meutim ukoliko budemo htjeli napraviti situaciju u kojoj elimo da nam se prvo izvede
neka operacija te da se, ovisno o njenom ishodu, ta operacija eventualno ponavlja, u tu
svrhu e svakako posluiti DO WHILE petlja.
11
4. UGNJEDENA PETLJA
FOR petlje se mogu pisati jedna unutar druge, onda takve petlje zovemo ugnijeene
FOR petlje. Naveden je primjer (Slika 8.) jedne ugnjedene FOR petlje i detaljno
opisano ta se deava kada pokrenemo ovaj dio programa.
Algoritam C++ kd
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int kolona,red;
for(red=1;red<=10;red++)
{
for(kolona=1;kolona<=5;kolona++
)
{
cout<<setw(5)<<red*stup;
}
cout<<endl;
}
system("Pause");
return 0;
}
12
- Kada uslov unutranje petlje nije ispunjen izlazi se iz unutranje petlje i ponovo
se pone izvravati vanjska petlja. Vrijednost varijable vanjske petlje se mijenja
za vrijednost inkrementa red ++, provjerava se uslov vanjske petlje pa ako je
ispunjen, ulazi se u unutranju petlju. Sada se ponovo ponavlja opisan postupak
izvravanja unutranje petlje.
- Sve se ponavlja do trenutka kada uslov vanjske petlje vie nije ispunjen. Moe se
vidjeti da se za svaku vrijednost varijable vanjske petlje izvodi cjelokupna
unutranja petlja.
5. BESKONANA PETLJA
Moe se dogoditi da je uslov petlje uvijek ispunjen. Petlja e se tom sluaju izvoditi
beskonano. To su beskonane petlje.
13
- Izbjegavati promjenu vrijednosti kontrolne varijable petlje unutar bloka naredbi
petlje.
Blok naredbi unutar tijela petlje izvodi se beskonano mnogo puta, ako taj blok naredbi
ne sadri neku od naredbi za izlazak iz petlje kao to je recimo naredba break.
Naredba break se koristi kad treba prekinuti izvoenje bloka naredbi unutar petlje.
Nakon naredbe break program prelazi na prvu naredbu iza programske petlje.
Naredba break je i sastavni dio switch-case naredbe.
Ponekad je potrebno preskoiti dio bloka naredbi do kraja programske petlje pa nakon
toga nastaviti petlju. U tu se svrhu koristimo naredbu continue. Nepaljiva upotreba
naredbe continue moe izazvati beskonanu petlju, zato preporuka da kao zamjenu
ove naredbe koristimo naredbu grananja.
14
6. ZAKLJUAK
Vidjeli smo da u procesu programranja, kombinacijom vie petlji ili petlji sa drugim
naredbama, operatorima, drugim petljama, petljama u petljama itd., moemo kreirati
sloene programske procese u kojima e se program izvravati i raditi odreene radnje,
ako, ili dok se ispune odreeni uslovi.
Sve ovo nas navodi na zakljuak da su petlje neizostavni i neminovni dio programiranja,
te bi bez upotrebe petji posao programiranja bio sveden na runo upisivanje narebi, to
na kraju ne bi rezultiralo uspjehom i u krajnjem sluaju ne bi imalo smisla.
Ukoliko smo proitali rad i shvatili smisao i nain na koji fumkcioniu programske petlje,
shvatili smo i to koliko su bitne. Dakle, dokazali smo glavnu hipotezu da implementacija
petlji u programiranju direktno utie na mogunost realizacije veine postavljenih
problema, koji se na drugi nain ne mogu rijeiti pa zato moemo konstatovati da
programiranje bez upotrebe petlji kao takvo ne bi postojalo.
Takoer, ono to moemo rei o tipovima petlji je da su to tri tipa koja se ne razlikuju
mnogo. Recimo, FOR petlja moe biti WHILE i obrnuto, DO WHILE petljom
moemo rijeiti neke programske probleme, koje moemo rijeiti i sa WHILE, petljom,
ali sa DO WHILE petljom moemo provjeriti neki podatak barem jednom, to nije
izvodivo sa WHILE petljom. Dakle, njihove velike slinosti, ali i specifine razliitosti
su veoma bitne, jer utiu na krajnji odabir tipa petlje za odreenu vrstu programskog
15
problema. Sam odabir petlje je posao i odluka programera, pa je utoliko i ovaj posao
donoenja odluke vaan i kompleksan, jer od ovog odabira zavisi u kom smjeru e tei
posao programiranja. I iz ovoga moemo zakljuiti da smo potvrdili i nau drugu,
postavljenu sporednu hipotezu, u kojoj smo istakli da primjena odgovarajueg tipa petlje
utie na kvalitet programa kojeg kreiramo.
7. LITERATURA
Knjige :
Tekstovi s interneta :
1.) http://bs.wikipedia.org/wiki/Programiranje
16