1 / 120

Struktura petlje

Struktura petlje. © S. Šutalo i D.Grundler, 2009. Programska struktura petlje. Često je u programu potrebno ponoviti neku radnju više puta (iterirati). Takva se programska struktura naziva petlja . Ponavljati se može: unaprijed zadani broj puta, sve dok je ispunjen zadani uvjet.

nikki
Télécharger la présentation

Struktura petlje

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Struktura petlje © S. Šutalo i D.Grundler, 2009.

  2. Programska struktura petlje • Često je u programu potrebno ponoviti neku radnju više puta (iterirati). Takva se programska struktura naziva petlja. • Ponavljati se može: • unaprijed zadani broj puta, • sve dok je ispunjen zadani uvjet. (c) S.Šutalo i D.Grundler, 2009.

  3. Programska struktura petlje • Kao primjerprogramske strukture petlje može poslužiti zadatak: • Korisnik treba unijeti 100 cijelih brojeva, a prije svakog unosa broja ispisuje se tekst "Unesi broj". (c) S.Šutalo i D.Grundler, 2009.

  4. Petlje • Struktura petlje se može ostvariti naredbama: • for, • while, • do – while. (c) S.Šutalo i D.Grundler, 2009.

  5. for petlja • for petlja se najčešće koristi ako se dijelovi programa trebaju ponoviti unaprijed poznati broj puta. • Osnovni oblik for petlje: (c) S.Šutalo i D.Grundler, 2009.

  6. 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). (c) S.Šutalo i D.Grundler, 2009.

  7. for petlja • Po zadavanju početnog stanja kontrolne varijable petlje zapisuje se uvjet. • Rezultat uvjeta je podatak tipa bool (0 ili1). • Blok naredbi se izvršava sve dok je vrijednost uvjeta jednaka logičkoj istini (1). • Kad vrijednost uvjeta postane neistina (0)petlja se prekida. (c) S.Šutalo i D.Grundler, 2009.

  8. for petlja • Prirast je iznosza koji se mijenja vrijednost kontrolne varijable petlje. (c) S.Šutalo i D.Grundler, 2009.

  9. for petlja

  10. Ispis brojeva od 1 do 20: 1 2 3 4 5 6 7 8 9 .............20 Primjer 45 • Potrebno je ispisati brojeve od 1 do 20. (c) S.Šutalo i D.Grundler, 2009.

  11. Primjer 45 • Treba zadati početnu vrijednost kontrolne varijable petlje (brojac=1), postaviti uvjet (brojac<=20) i zadati prirast (brojac++). • Naredba koja se izvodi konačan broj puta je ispis trenutne vrijednosti varijable brojac. (c) S.Šutalo i D.Grundler, 2009.

  12. Primjer 45 (c) S.Šutalo i D.Grundler, 2009.

  13. #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; }

  14. Primjer 45 • Provjera: (c) S.Šutalo i D.Grundler, 2009.

  15. Ispis pocinje od broja: Ispis zavrsava brojem: Ispis brojeva od ... do ...: ... ... ... ..... ... Primjer 46 • Potrebno je dopuniti prethodni primjer tako da se ispisuju brojevi iz raspona od M do N (raspon bira korisnik). (c) S.Šutalo i D.Grundler, 2009.

  16. Primjer 46 • Napomena: • Početna vrijednost kontrolne varijable brojac je ovisna o unesenoj početnoj vrijednostiraspona (M), a uvjet o unesenoj završnoj vrijednosti raspona (N). Izraz prirasta (brojac++) se ne mijenja. (c) S.Šutalo i D.Grundler, 2009.

  17. unos početne i završne vrijednosti raspona Primjer 46 (c) S.Šutalo i D.Grundler, 2009.

  18. #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; }

  19. Primjer 46 • Provjera: (c) S.Šutalo i D.Grundler, 2009.

  20. Oprez - beskonačna petlja • Potrebno je ovako promijeniti prethodni program: for (brojac=m;brojac<=n;) { cout<<brojac<<" "; } (c) S.Šutalo i D.Grundler, 2009.

  21. Oprez - beskonačna petlja (c) S.Šutalo i D.Grundler, 2009.

  22. Oprez - beskonačna petlja • Petlja se izvodi neograničen broj puta jerje 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. (c) S.Šutalo i D.Grundler, 2009.

  23. Oprez - 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. (c) S.Šutalo i D.Grundler, 2009.

  24. Parni brojevi iz intervala od 50 do 100 su: 50 52 54 56.... 98 100 Primjer 47 • Treba ispisati parne brojeve iz intervala od 50 do 100. (c) S.Šutalo i D.Grundler, 2009.

  25. Primjer 47 • Napomene: • Pošto je razlika dva susjedna parna broja 2, problem je moguće riješiti tako da se vrijednost kontrolne varijable petlje mijenja za 2 (prirast 2). (Neće trebati provjeravati parnost!) (c) S.Šutalo i D.Grundler, 2009.

  26. Primjer 47 (c) S.Šutalo i D.Grundler, 2009.

  27. #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; }

  28. Primjer 47 • Provjera. (c) S.Šutalo i D.Grundler, 2009.

  29. Parni brojevi iz intervala od 100 do 50 su: 100 98 96 94 ....... 52 50 Primjer 48 • Treba ispisati parne brojeve u rasponu od 100 do 50. (c) S.Šutalo i D.Grundler, 2009.

  30. Primjer 48 • Napomene: • Prirast može biti i negativan pa se tada vrijednost kontrolne varijable petlje smanjuje. • U ovom primjeru početna vrijednost kontrolne varijable petlje mora biti veća od završne. • Npr. prirast može biti: (c) S.Šutalo i D.Grundler, 2009.

  31. prirast Primjer 48 (c) S.Šutalo i D.Grundler, 2009.

  32. #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; }

  33. Primjer 48 • Provjera: (c) S.Šutalo i D.Grundler, 2009.

  34. Raspon pocinje od broja: Raspon zavrsava brojem: Brojevi djeljivi sa 7 iz raspona od … do … su: ... ... ... ... ... Primjer 49 • Treba potražiti pa ispisati brojeve djeljive sa 7 unutar raspona od M do N. (c) S.Šutalo i D.Grundler, 2009.

  35. Primjer 49 • 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 (%). (c) S.Šutalo i D.Grundler, 2009.

  36. Primjer49 (c) S.Šutalo i D.Grundler, 2009.

  37. #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;

  38. for (brojac=m;brojac<=n;brojac++) { if(brojac%7==0) cout<<brojac<<" "; } cout<<endl; return 0; }

  39. Primjer 49 • Provjera: (c) S.Šutalo i D.Grundler, 2009.

  40. Ugniježđene for petlje • for petlje mogu biti ugniježđene 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. (c) S.Šutalo i D.Grundler, 2009.

  41. Ugniježđene for petlje

  42. Ugniježđene for petlje • Pri ulazu u unutarnju petlju, kontrolna varijabla unutarnje petlje se postavi na početnu vrijednosti sve dok je uvjet zadovoljen, izvršava se bloknaredbi 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. (c) S.Šutalo i D.Grundler, 2009.

  43. Primjer 50 • 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. (c) S.Šutalo i D.Grundler, 2009.

  44. vanjska petlja unutarnja petlja kazalo se pomiče na početak sljedećeg redka Primjer 50 (c) S.Šutalo i D.Grundler, 2009.

  45. Primjer 50 • Vanjska petlja omogućit će : • ispis teksta: Vanjska petlja: • ispis trenutne vrijednostikontrolne 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. (c) S.Šutalo i D.Grundler, 2009.

  46. #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; }

  47. Primjer 50 • Provjera: (c) S.Šutalo i D.Grundler, 2009.

  48. Primjer 51 • Treba ispisati tablicu množenja za brojeve od 1 do 10. (c) S.Šutalo i D.Grundler, 2009.

  49. Primjer 51 • Napomene: • Vanjska petlja omogućit će stvaranje 10 redaka. • Unutarnja petlja će u svakome redku stvoriti 10 stupaca. • Naredba koja se izvršava u unutarnjoj petlji je ispis umnoška trenutnih vrijednosti kontrolnih varijabli vanjske i unutarnje petlje. • Po ispisu svakoga od redaka, kazalo se prebacuje na početak novog redka. (c) S.Šutalo i D.Grundler, 2009.

  50. unutarnja petlja vanjska petlja kazalo se pomiče na početak sljedećeg redka Primjer 51 (c) S.Šutalo i D.Grundler, 2009.

More Related