Presentation is loading. Please wait.

Presentation is loading. Please wait.

Uvjetne petlje.

Similar presentations


Presentation on theme: "Uvjetne petlje."— Presentation transcript:

1 Uvjetne petlje

2 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). Sanda, 2019.

3 while petlja Osnovni oblik: Sanda, 2019.

4 Primjer 54 Potrebno je unesenom prirodnom broju prebrojiti znamenke.
Upisi prirodni broj: Broj … ima … znamenaka. Sanda, 2019.

5 #include<iostream> using namespace std; int main() { int br,b,a;
Sanda, 2019. #include<iostream> using namespace std; int main() { int br,b,a; cout<<"Upisi prirodni broj: "; cin>>b; a=b; br=0; while(b>0) b=b/10; br=br+1; } cout<<"Broj "<<a<<" ima "<<br<<" znamenki."<<endl; return 0;

6 Primjer 54 Broj znamenaka broja B nije unaprijed poznat.
Algoritam bi trebao funkcionirati na sljedeći način: Sanda, 2019.

7 Primjer 54 Uvjet petlje: B>0. U petlji:
Od vrijednosti varijable B odvaja se znamenka najmanje težinske vrijednosti, a potom se dobiveni rezultat vraća u varijablu B. Varijabla koja prebrojava znamenke uvećava se za 1. Provjerava se uvjet petlje. Sanda, 2019.

8 Pohrana vrijednosti unesenog broja.
Varijablu koja će prebrojavati znamenke valja isprazniti. Sanda, 2019.

9 Primjer 54 Provjera programa: Sanda, 2019.

10 Primjer 55 Test je pisalo N učenika (N NIJE unaprijed poznat!!). Maksimalan broj bodova je 100. Za ocjenu odličan treba postići bar 80 bodova. U programu se za svakog učenika unose bodovi osvojeni na testu (broj bodova NE MOŽE biti negativan). Po unosu broja bodova prvo treba provjeriti da li je broj bodova iz dozvoljenog raspona. Ako nije, takav se unos zanemaruje. Potom se unos ponavlja. Unos traje sve dok korisnik ne upiše -1. Program ispisuje koliko je učenika pisalo test, te koliko ih je ocijenjeno ocjenom odličan. * DM Sanda, 2019.

11 Primjer 55 Upisi osvojeni broj bodova (raspon bodova je 0-100):
Test je pisalo … ucenika. Ocjenom odlican ocijenjeno ih je …. * DM Sanda, 2019.

12 #include<iostream>
using namespace std; int main() { int b,bb,bu,b5; b5=0; bu=0; cout<<"Nakon posljednjeg broja bodova upisi -1."<<endl; while(bb!=-1) { p:cout<<"Upisi osvojeni broj bodova (raspon bodova je 0-100): "; cin>>bb; if((bb<-1)||(bb>100)) cout<<endl<<"Pogreska pri unosu bodova. Ponovi!"<<endl; goto p; } bu++; if(bb>=80) b5++; bu=bu-1; cout<<endl<<"Test je pisalo "<<bu<<" ucenika.\ Ocjenom odlican ocijenjeno ih je"<<b5; return 0; Sanda, 2019.

13 Primjer 55 U uvjetu petlje se sadržaj varijable bb uspoređuje s -1 (bb!=-1). U petlji: unosi se broj bodova bb, varijabla bu uvećava se za jedan, uneseni broj bodova bb uspoređuje se s 80 (bb>=80), ako je veći od 80, varijabla b5 uvećava se za jedan (prebrojavanje odličnih), Nakon petlje, sadržaj varijable bu umanjuje se za 1 (nula se ne broji). Sanda, 2019.

14 Pomoćne varijable valja isprazniti.
Uvjet petlje. Provjera za ocjenu odličan. Da li je ocjena iz zadanog raspona vrijednosti? -1 se ne smije prebrojiti! Sanda, 2019.

15 Primjer 55 Provjera programa: Sanda, 2019.

16 Do - while petlja do-while petlja se najčešće koristi ako broj ponavljanja bloka naredbi u petlji nije unaprijed poznat. Uvjet se ispituje nakon izvođenja bloka naredbi u petlji. Blok naredbi u ovoj petlji izvodi se bar jednom bez obzira je li uvjet ispunjen ili ne. Sanda, 2019.

17 Do - while petlja Osnovni oblik: Sanda, 2019.

18 Primjer 56 Restoran želi kupiti ribe. U program se unosi masa svake pojedine ribe, sve dok ukupna masa ne prijeđe kg. Program ispisuje ukupan broj kupljenih riba i njihovu ukupnu masu (riješiti do-while petljom). Upisi masu ribe (u kg): Kupljeno je … komada ribe. Ukupna masa riba iznosi … kg.. * DM Sanda, 2019.

19 #include<iostream> using namespace std; int main() {
Sanda, 2019. #include<iostream> using namespace std; int main() { float riba,suma,b; suma=0; b=0; do cout<<"Upisi masu ribe (u kg): "; cin>>riba; suma=suma+riba; b++; } while(suma<=100); cout<<endl<<"Kupljeno je "<<b<<" komada ribe. Ukupna\ masa riba iznosi "<<suma<<" kg."<<endl; return 0;

20 Unos vrijednosti težine, pribrajanje i prebrojavanje.
Provjera uvjet petlje. Sanda, 2019.

21 Primjer 56 Provjera programa: Sanda, 2019.

22 Primjer 57 Korisnik unosi realne brojeve. Unaprijed nije poznato koliko će tih brojeva biti. Nakon posljednjeg broja unosi se 0. Program pronalazi pa ispisuje najveći uneseni broj. Za prekid unosa brojeva treba unijeti broj 0. Upisi realni broj: Najveci broj je … Sanda, 2019.

23 #include<iostream>using namespace std;
int main() { float b,max; cout<<endl<<"Program pronalazi najveci broj iz\ skupa brojeva koje unosi korisnik. Za prekid\ unosa brojeva treba unijeti broj 0."<<endl<<endl; cout<<"Upisi realni broj: "; cin>>b; if(b==0) goto k; max=b; do if(b>max) } while(b!=0); cout<<endl<<"Najveci broj je: "<<max<<endl; k:return 0; Sanda, 2019.

24 Primjer 57 Uvodi se pomoćna varijabla (npr. max) u koju se na početku sprema broj unesen prije početka petlje. Da bi se izvršavao blok naredaba u petlji, vrijednost varijable b mora biti različita od 0 (b!=0). U bloku naredaba petlje treba: Unijeti sljedeći broj. Uneseni broj usporediti sa sadržajem varijable max. Ako je taj broj veći od sadržaja varijable max, njegova vrijednost postaje novi sadržaj varijable max. Sanda, 2019.

25 Ako je prvi broj nula, program će stati.
Svaki od unesenih brojeva uspoređuje se s vrijednošću varijable max. Početna vrijednost. Uvjet. Sanda, 2019.

26 Specifična situacija zahtijeva ovaj dodatak.
Potencijalni problem! Korisnik na početku unosi negativan broj, a potom unosi nulu! Specifična situacija zahtijeva ovaj dodatak. Sanda, 2019.

27 Primjer 57 Provjera programa: Sanda, 2019.

28 Naredba break Naredba break rabi se za prekidanje izvođenja programske petlje. Nakon naredbe break program izvršenje nastavlja od prve naredbe iza programske petlje. Sanda, 2019.

29 Primjer 58 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: Prekid zbog unosa broja 5. Uneseno je … brojeva. Njihov je zbroj … Sanda, 2019.

30 #include <iostream> using namespace std; int main () {
Sanda, 2019. #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<<" brojeva. Njihov \ je zbroj "<<zbroj<<endl; return 0;

31 U slučaju unosa broja 5, unos se prekida i iskakuje se iz petlje.
Sanda, 2019.

32 Primjer 58 Provjera programa: Sanda, 2019.

33 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. (Bolje je, umjesto naredbe continue rabiti naredbu grananja if jer nepažljiva uporaba naredbe continue može uzrokovati beskonačnu petlju.) Sanda, 2019.

34 Primjer 59 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. Sanda, 2019.

35 Primjer 59 Upisi broj: Uneseno je … brojeva koji nisu 5. Njihov je zbroj … Ako se unese broj 5, ispisat će se poruka: Unesen je broj 5. On se ne pribraja i ne prebrojava. Sanda, 2019.

36 #include <iostream> using namespace std; int main () {
Sanda, 2019. #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<<" brojeva koji \ nisu 5. Njihov je zbroj "<<zbroj<<endl; return 0;}

37 U slučaju unosa broja 5, preskače se dio bloka, a potom se unos nastavlja.
Sanda, 2019.

38 Primjer 59 Provjera programa: Sanda, 2019.


Download ppt "Uvjetne petlje."

Similar presentations


Ads by Google