Download presentation
Presentation is loading. Please wait.
1
OSNOVE PROGRAMIRANJA U PROGRAMSKOM JEZIKU
C++ OSNOVE PROGRAMIRANJA U PROGRAMSKOM JEZIKU 6. dio
2
Programska struktura petlje
U programu je često potrebno ponoviti neku radnju više puta. Takva se programska struktura naziva petlja ili iteracija. Ponavljati se može: unaprijed zadani broj puta, sve dok je ispunjen zadani uvjet.
3
Petlje for, while, do – while.
Struktura petlje se može ostvariti naredbama: for, while, do – while.
4
for petlja for petlja se najčešće koristi ako se dijelovi programa trebaju ponoviti unaprijed poznati broj puta. Sintaksa:
5
for petlja Svaka for petlja ima svoju kontrolnu varijablu.
Njena se vrijednost svakim prolaskom kroz petlju mijenja ovisno o vrijednosti prirasta. Kontrolnu varijablu petlje potrebno je prije ulaska u petlju deklarirati. U petlji se najprije zadaje vrijednost početnog stanja kontrolne varijable petlje (početno stanje).
6
for petlja Po zadavanju početnog stanja kontrolne varijable petlje zapisuje se uvjet. Blok naredbi se izvršava sve dok je vrijednost uvjeta jednaka logičkoj istini (1). Kad vrijednost uvjeta postane neistina (0) petlja se prekida.
7
for petlja Prirast je iznos za koji se mijenja vrijednost kontrolne varijable petlje.
8
for petlja
9
Primjer 1 Potrebno je ispisati brojeve od 1 do 20.
Ispis brojeva od 1 do 20:
10
Primjer 1
11
#include<iostream> using namespace std; int main() { int brojac; cout<<"Ispis brojeva od 1 do 20:"<<endl; for (brojac=1;brojac<=20;brojac++) cout<<brojac<<" "; } cout<<endl; return 0;
12
Primjer 2 Potrebno je dopuniti prethodni primjer tako da se ispisuju brojevi iz raspona od M do N (raspon unosi korisnik). Ispis pocinje od broja: Ispis zavrsava brojem: Ispis brojeva od ... do ...:
13
Primjer 2 unos početne i završne vrijednosti raspona
14
#include<iostream> using namespace std; int main() { int brojac,m,n; cout<<"ispis pocinje od broja:"; cin>>m; cout<<"ispis zavrsava brojem:"; cin>>n; for (brojac=m;brojac<=n;brojac++) cout<<brojac<<" "; } cout<<endl; return 0;
15
Beskonačna petlja Potrebno je ovako promijeniti prethodni program:
for (brojac=m;brojac<=n;) { cout<<brojac<<" "; }
16
Beskonačna petlja
17
Beskonačna petlja Petlja se izvodi neograničen broj puta jer je uvjet uvijek ispunjen. Ako se dogodi da se pokrene program u kome je beskonačna petlja, program se može prekinuti zatvaranjem prozora u kom se izvršava program.
18
Beskonačna petlja Da bi se izbjegla beskonačna petlja treba:
zadati uvjet koji jamči konačan broj ponavljanja petlje, navesti sva tri izraza u zagradi naredbe for, izbjegavati promjenu vrijednosti kontrolne varijable unutar bloka naredbi for petlje.
19
Primjer 3 Ispisati parne brojeve iz intervala od 50 do 100.
Parni brojevi iz intervala od 50 do 100 su:
20
Primjer 3
21
#include<iostream> using namespace std; int main() { int brojac; cout<<"Parni brojevi iz intervala od 50 do 100 su:" <<endl; for (brojac=50;brojac<=100;brojac+=2) cout<<brojac<<" "; } cout<<endl; return 0;
22
Primjer 5 Ispisati parne brojeve u rasponu od 100 do 50.
Parni brojevi iz intervala od 100 do 50 su:
23
Primjer 5 prirast
24
#include<iostream> using namespace std; int main() { int brojac; cout<<"Parni brojevi iz intervala od 100 do 50 su:" <<endl; for (brojac=100;brojac>=50;brojac-=2) cout<<brojac<<" "; } cout<<endl; return 0;
25
Primjer 6 Treba potražiti pa ispisati brojeve djeljive sa 7 unutar raspona od M do N. Raspon pocinje od broja: Raspon zavrsava brojem: Brojevi djeljivi sa 7 iz raspona od … do … su:
26
Primjer 6 Napomene: Blok naredbi u petlji se izvršava za svaki broj iz zadanog raspona. Ispisuju se samo brojevi djeljivi s brojem 7. Djeljivost brojeva se provjerava operatorom modulo (%).
27
Primjer 6
28
#include<iostream> using namespace std; int main() { int brojac,m,n; cout<<"Raspon pocinje od broja:"; cin>>m; cout<<"Raspon zavrsava brojem:"; cin>>n; cout<<"Brojevi djeljivi sa 7 iz raspona od "<<m <<" do "<<n<<" su:"<<endl; for (brojac=m;brojac<=n;brojac++) if(brojac%7==0) cout<<brojac<<" "; } cout<<endl; return 0;
29
Primjer 6 Provjera:
30
Ugniježdene for petlje
for petlje mogu biti ugniježdene jedna unutar druge. Pri ulazu u vanjsku petlju, njena se kontrolna varijabla postavi na početnu vrijednost. S tom se vrijednošću ulazi u unutarnju petlju.
31
Ugniježdene for petlje
32
Ugniježdene for petlje
Pri ulazu u unutarnju petlju, kontrolna varijabla unutarnje petlje se postavi na početnu vrijednost i sve dok je uvjet zadovoljen, izvršava se blok naredbi unutarnje petlje. Po završenoj unutarnjoj petlji, kontrolna varijabla vanjske petlje se mijenja za vrijednost prirasta i provjerava se uvjet vanjske petlje. Za svaku vrijednost kontrolne varijable vanjske petlje izvodi se cjelokupna unutarnja petlja.
33
Primjer 7 Vrijednost kontrolne varijable vanjske petlje mijenja se od 1 do 3, a unutarnje od 1 do 5. U programu se ispisuju trenutne vrijednosti kontrolnih varijabli vanjske i unutarnje petlje.
34
kazalo se pomiče na početak sljedećeg redka
Primjer 7 vanjska petlja kazalo se pomiče na početak sljedećeg redka unutarnja petlja
35
Primjer 7 Vanjska petlja omogućit će : ispis teksta: Vanjska petlja:
ispis trenutne vrijednosti kontrolne varijable vanjske petlje (i) ispis teksta: Unutarnja petlja: Unutarnja petlja : ispisuje trenutne vrijednosti kontrolne varijable unutarnje petlje (j, od 1 do 5). Po ispisu svakoga od redaka, kazalo se prebacuje na početak novog redka i postupak se ponavlja.
36
#include <iostream> using namespace std; int main() { int i, j; for ( i = 1; i <= 3; i++ ) cout<<endl<<"Vanjska petlja: i="<<i<<endl; cout<<"Unutarnja petlja: "; for ( j = 1; j <= 5; j++ ) cout<<" j="<<j; } cout<<endl; return 0;
37
Primjer 7 Provjera:
38
Manipulatori Ispis se može oblikovati manipulatorima (operatorima za rukovanje ispisom). Da bi ispis bio u pravilnim stupcima, koristi se manipulator: setw(int) setw(int) određuje koliki će se prostor predvidjeti za ispis podatka koji slijedi u izlaznom toku.
39
setw(int) Svi su manipulatori za rukovanje ispisom definirani u biblioteci iomanip koju u datoteku izvornog koda treba uključiti naredbom include. setw(int) se upotreblajva unutar naredbe izlaznog toka, npr.:
40
Primjer 8 Potrebno je zbrojiti prvih 100 prirodnih brojeva.
Zbroj prvih 100 prirodnih brojeva je ....
41
Primjer 8 Prije ulaska u petlju treba:
Deklarirati varijablu koja će sadržavati trenutne vrijednosti kontrolne varijable petlje (npr. zbroj) pri svakom prolasku kroz petlju. Varijabli zbroj pridružiti vrijednost 0. Naredba u bloku omogućava uvećavanje vrijednosti varijable zbroj za tekuću vrijednost kontrolne varijable petlje (brojac).
42
Primjer 8 blok početna vrijednost
43
#include<iostream> using namespace std; int main() { int brojac,zbroj; zbroj=0; cout<<"Zbroj prvih 100 prirodnih brojeva je:"; for (brojac=1;brojac<=100;brojac++) zbroj=zbroj+brojac; } cout<<zbroj<<endl; return 0;
44
Primjer 8 Provjera:
45
Primjer 9 Treba prebrojiti koliko brojeva unutar raspona od M do N ima znamenku jedinice vrijednosti 9.
46
Primjer 9 Prije ulaska u petlju treba:
Deklarirati varijablu (npr. N) u kojoj će se prebrojavati pronađeni brojevi koji zadovoljavaju uvjet. Varijabli N pridružiti vrijednost 0. Naredba u bloku omogućava uvećavanje vrijednosti varijable N za 1 svaki put kada se pronađe broj koji zadovoljava uvjet.
47
Primjer 9
48
#include<iostream> using namespace std; int main() { int brojac,m,n,N; cout<<"Raspon pocinje od broja:"; cin>>m; cout<<"Raspon zavrsava brojem:"; cin>>n; N=0; for (brojac=m;brojac<=n;brojac++) if(brojac%10==9) N=N+1; } cout<<"U rasponu od "<<m<<" do "<<n<<" ima "<<N <<" brojeva sa znamenkom jedinice vrijednosti 9. " <<endl; return 0;
49
Primjer 9 Provjera:
50
while petlja while petlja se najčešće koristi ako broj ponavljanja bloka naredbi u petlji nije unaprijed poznat. Izvršava se sve dok je ispunjen zadani uvjet. Uvjet je logički izraz čiji rezultat mora biti tipa bool. Kada rezultat postane logička neistina (false, 0), preskače se blok naredbi petlje i program se nastavlja od prve naredbe nakon bloka naredbi petlje.
51
while petlja Sintaksa:
52
while petlja
53
Primjer 10 Uporabom while petlje potrebno je ispisati brojeve od 1 do 20.
54
Primjer 10 Petlja while može zamijeniti for petlju.
Za rješenje ovog problema potrebno je, prije ulaska u petlju: zadati početnu vrijednost varijable koja se koristi u uvjetu (brojac=1), zadati uvjet (brojac<=20), U bloku naredbi u petlji uz ostalo zadati i prirast (brojac++).
55
Primjer 10 prirast uvjet početna vrijednost
56
#include<iostream> using namespace std; int main() { int brojac; brojac=1; cout<<"Ispis brojeva od 1 do 20:"<<endl; while(brojac<=20) cout<<brojac<<" "; brojac=brojac+1; } cout<<endl; return 0;
57
Primjer 11 Potrebno je unesenom prirodnom broju prebrojiti znamenke.
Upisi prirodni broj: Broj … ima … znamenaka.
58
Primjer 11 Broj znamenaka odabranog broja nije unaprijed poznat. Pomoći će petlja while. Početna vrijednost varijable koja se koristi u uvjetu je uneseni broj (b). Da bi se izvršavao blok naredbi u petlji vrijednost varijable b mora biti veća od 0 (b>0).
59
Primjer 11 U bloku naredbi petlje:
Od vrijednosti varijable b valja odvojiti znamenku najmanje težinske vrijednosti pa dobiveni rezultat vratiti u varijablu b. Varijablu koja prebrojava znamenke uvećati za 1. Provjeriti uvjet petlje.
60
Primjer 11 Kada se prebroji posljednja znamenka (znamenka najveće težinske vrijednosti), uvjet više neće biti zadovoljen. Petlja se prekida i ispisuje se rezultat. Primjerice:
61
Primjer 11
62
#include<iostream> using namespace std; int main() { int br,b; cout<<"Upisi prirodni broj: "; cin>>b; br=0; while(b>0) b=b/10; br=br+1; } cout<<"Broj ima "<<br<<" znamenki: "<<endl; return 0;
63
Primjer 11 Provjera:
64
Primjer 12 Treba unijeti N realnih brojeva pa izračunati njihovu srednju vrijednost. Unos brojeva traje sve dok korisnik ne upiše 0. Nakon posljednjeg broja unesi nulu. Unesi broj: ... Uneseno je ... brojeva. Srednja vrijednost je ....
65
Primjer 12 Problem se rješava while petljom.
Prije ulaska u petlju treba zadati početnu vrijednost varijable koja se koristi u uvjetu. U ovome slučaju unosi se prvi broj (N). U uvjetu se uspoređuje sadržaj varijable u koju se pohranjuje uneseni broj s 0 (N==0).
66
Primjer 12 Ako je uvjet ispunjen, izvršava se blok naredbi u petlji.
U bloku je potrebno: uneseni broj N pribrojiti varijabli zbroj (zbrajanje), varijablu broj uvećati za jedan (prebrojavanje), unijeti sljedeći broj N. Unos se nastavlja sve dok je uvjet ispunjen, tj. dok se ne unese 0.
67
Primjer 12 Kada korisnik unese 0, uvjet više nije ispunjen, program se nastavlja od prve naredbe nakon petlje. Nakon petlje treba izračunati i ispisati srednju vrijednost unesenih brojeva.
68
#include<iostream> using namespace std; int main() { float N,broj,zbroj; broj=0; zbroj=0; cout<<"Nakon posljednjeg broja unesi nulu."<<endl; cout<<"Unesi broj:"; cin>>N; while(N!=0) { broj=broj+1; zbroj=zbroj+N; } cout<<"Uneseno je "<<broj<<" brojeva. Srednja \ vrijednost je "<<zbroj/broj<<endl; return 0;
69
Primjer 12 Provjera:
70
do-while petlja do-while petlja se također koristi ako broj ponavljanja bloka naredbi u petlji nije unaprijed poznat. Za razliku od do sad opisanih petlji kod do-while petlje se uvjet ispituje nakon izvođenja bloka naredbi u petlji.
71
do-while petlja Sintaksa:
72
do-while petlja
73
Primjer 13 Primjer 11 riješiti do-while petljom (unesenom prirodnom broju prebrojiti znamenke).
74
#include<iostream> using namespace std; int main() { int br,b; cout<<"Upisi prirodni broj: "; cin>>b; br=0; do b=b/10; br=br+1; } while(b>0); cout<<"Broj znamenki: "<<br<<endl; return 0;
75
Naredba break Naredba break se rabi kada treba prekinuti izvođenje nekog bloka naredbi unutar petlje, a sastavni je dio i switch–case naredbe. Nakon naredbe break program izvršenje nastavlja od prve naredbe iza programske petlje.
76
Primjer 14 Treba unijeti 10 prirodnih brojeva pa ih zbrojiti.
U slučaju unosa broja 5, unos se prekida. Ispisuje se poruka o unosu broja 5, a potom i broj unesenih brojeva do unosa petice te njihov zbroj. Upisi broj: … Uneseno je … ispravnih brojeva. Njihov je zbroj …
77
Primjer 14 Ako je uvjet ispunjen, prekida se izvođenje bloka naredbi u petlji, i nastavlja se s prvom naredbom nakon bloka.
78
#include <iostream> using namespace std; int main () { int n,A,zbroj,broj; zbroj=0; broj=0; for (n=1; n<=10; n++) cout <<"Upisi broj:"; cin>>A; if (A==5) cout<<"Prekid zbog unosa broja 5"<<endl; break; } broj=broj+1; zbroj=zbroj+A; cout<<endl<<"Uneseno je "<<broj<<" ispravnih \ brojeva. Njihov je zbroj "<<zbroj<<endl; return 0;
79
Naredba continue Ponekad je potrebno preskočiti dio bloka naredbi do kraja programske petlje, pa nakon toga petlju nastaviti. U tu se svrhu koristi naredba continue.
80
Primjer 15 Treba unijeti 10 prirodnih brojeva, pa ih zbrojiti.
U slučaju unosa broja 5, ispisuje se poruka o unosu broja 5, preskače se dio bloka do kraja programske petlje pa se nakon toga petlja nastavlja. Na kraju se ispisuje broj ispravno unesenih brojeva te njihov zbroj.
81
Primjer 15 Upisi broj: … Uneseno je … ispravnih brojeva. Njihov je zbroj … Ako se unese broj 5, ispisat će se poruka: Unesen je broj 5. On se ne pribraja i ne prebrojava.
82
Primjer 15 Ako je uvjet ispunjen, preskače se dio bloka naredbi do kraja programske petlje, a nakon toga se petlja nastavlja.
83
#include <iostream> using namespace std; int main () { int n,A,zbroj,broj; zbroj=0; broj=0; for (n=1; n<=10; n++) cout <<"Upisi broj:"; cin>>A; if (A==5) cout<<"Unesen je broj 5. On se ne \ pribraja i ne prebrojava.“<<endl; continue; } broj=broj+1; zbroj=zbroj+A; cout<<endl<<"Uneseno je "<<broj<<" ispravnih \ brojeva. Njihov je zbroj "<<zbroj<<endl; return 0;
84
Primjer 60 Provjera:
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.