13
Ciklusi u Pajtonu Kao što vam je već poznato, kod linijske strukture programa naredbe (izrazi) se izvršavaju redosledom kako su napisane i svaka se izvršava samo po jednom. Kod razgranate strukture programa naredbe (izrazi) se izvršavaju redosledom kako su napisane i svaka samo po jednom, ali se izvršavaju samo naredbe u onoj grani za koju je logički uslov ispunjen (tačan), dok se naredne u granama za koje uslov nije ispunjen (netačan), uopšte ne izvršavaju. Pored linijske i razgranate strukture u programiranju se često koristi ciklična strukrura u kojoj se neka naredba ili blok naredbi ponavlja više puta uzastopno, ako je ispunjen odgovarajući uslov. Ciklične strukture programa se nazivaju ciklusi ili petlje. Niz naredbi koji se mogu izvršavati više puta nazivaju se telo ciklusa. Jedan ciklus (jedna petlja) se zove iteracija. U Python-u se koriste dve vrste ciklusa: - brojački ciklusi (koristi se for naredba) - cklusi sa uslovom (koristi se while naredba) Kod brojačkih ciklusa brojač broji cikluse. Broj ciklusa koji će se izvršiti je unapred poznat i određen je opsegom ili skupom vrednosti za brojač. Kod ciklusa sa uslovom, broj ciklusa koji će se izvršiti nije poznat unapred. Ciklus se izvršava samo kada je uslov tačan (Da). Kada je uslov netačan (Ne) ciklus se završava (prekida).

Ciklusi u Pajtonu - Гимназија у Куршумлији...2020/05/08  · - U svakom ciklusu se na prethodnu vrednost za proizvoda množi sa vrednošću brojača u tom ciklusu

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Ciklusi u Pajtonu - Гимназија у Куршумлији...2020/05/08  · - U svakom ciklusu se na prethodnu vrednost za proizvoda množi sa vrednošću brojača u tom ciklusu

Ciklusi u Pajtonu

Kao što vam je već poznato, kod linijske strukture programa naredbe (izrazi) se izvršavaju redosledom kako su napisane i svaka se izvršava samo po jednom.

Kod razgranate strukture programa naredbe (izrazi) se izvršavaju redosledom kako su napisane i svaka samo po jednom, ali se izvršavaju samo naredbe u onoj grani za koju je logički uslov ispunjen (tačan), dok se naredne u granama za koje uslov nije ispunjen (netačan), uopšte ne izvršavaju.

Pored linijske i razgranate strukture u programiranju se često koristi ciklična strukrura u kojoj se neka naredba ili blok naredbi ponavlja više puta uzastopno, ako je ispunjen odgovarajući uslov. Ciklične strukture programa se nazivaju ciklusi ili petlje.

Niz naredbi koji se mogu izvršavati više puta nazivaju se telo ciklusa. Jedan ciklus (jedna petlja) se zove iteracija.

U Python-u se koriste dve vrste ciklusa:

- brojački ciklusi (koristi se for naredba)

- cklusi sa uslovom (koristi se while naredba)

Kod brojačkih ciklusa brojač broji cikluse. Broj ciklusa koji će se izvršiti je unapred poznat i određen je opsegom ili skupom vrednosti za brojač.

Kod ciklusa sa uslovom, broj ciklusa koji će se izvršiti nije poznat unapred. Ciklus se izvršava samo kada je uslov tačan (Da). Kada je uslov netačan (Ne) ciklus se završava (prekida).

Page 2: Ciklusi u Pajtonu - Гимназија у Куршумлији...2020/05/08  · - U svakom ciklusu se na prethodnu vrednost za proizvoda množi sa vrednošću brojača u tom ciklusu

Brojački ciklusi – for naredba Brojački ciklusi su posebna vrsta uslovnih ciklusa. Ovakavi ciklusi podrazumevaju postojanje jedne kontrolne promenljive, brojačke promenljive (brojača), koja obavlja "brojanje" ciklusa od neke početne do neke krajnje vrednosti. Broj ciklusa je unapred poznat. Koliko se različitih vrednosti dodeli brojačkoj promenljivoj, u obliku nekog opsega vrednosti ili skupa vrednosti, toliko puta se izvrši i sam ciklus.

Brojački ciklusi u pajtonu se realizuju korišćenjem for naredbe, na dva načina:

- Brojač (brojačka promenljiva) je i. Kao brojač najčešće se koriste slova i, j, k, … itd, a može biti i neka reč. - Brojač je uvek celobrojnog tipa, zato što je broj izvršenih ciklusa ceo broj. - Brojač se menja po vrednostima, od početne do krajnje, koje su definisane u opsegu ili skupu vrednosti. - Iza definisanog opsega ili skupa vrednosti za brojač, obavezno treba napisati dvotačku. - Blok narebi se pri pisanju obavezno uvlači 1 tab (4 spejsa) u odnosu na naredbu for. - Blok naredbi može da bude jedna ili više naredbi koje čine neku logičku celinu.

Opseg se definiše funkcijom range(). Primer, range(5) daje vrednosti: 0, 1, 2, 3, 4. Opseg kreće od 0, a vrednosti se uvećavaju za 1, ako drugačije nije napisano u zagradama funkcije range.

Skup može biti neka lista, string, skup, torka, ili neka druga struktura podataka.

Page 3: Ciklusi u Pajtonu - Гимназија у Куршумлији...2020/05/08  · - U svakom ciklusu se na prethodnu vrednost za proizvoda množi sa vrednošću brojača u tom ciklusu

Primer, primene naredbe for u programu koji ispisuje 10. puta “Kuršumlija”.

brojač opseg od 0 do 9 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

for i in range(10):

print (i+1, "– Kuršumlija")

1 tab

Nakon pokretanja programa, u konzoli kao rezultat dobićemo:

1 – Kuršumlija 2 – Kuršumlija 3 – Kuršumlija 4 – Kuršumlija 5 – Kuršumlija 6 – Kuršumlija 7 – Kuršumlija 8 – Kuršumlija 9 – Kuršumlija 10 – Kuršumlija

Izvršenje programa na repl.it:

Kada se program startuje, program postavlja brojač i na 0, zatim se izvrši naredba u ciklusu (naredba print koja štampa redni broj, crtu i tekst “Kuršumlija”). Program se zatim vraća na početak ciklusa, a brojač i se povećava za 1. Sve se ovo ponavlja još 9. puta i svaki put se brojač povećava za 1. U poslednjem ciklusu brojač i ima vrednost 9, a naredba print se izvrši poslednji put, a ciklus se prekida (završava).

Verovatno vam je malo čudno što brojač i počinje sa 0, umesto sa 1. U programiranju kod savremenih programskih jezika, brojanje uvek počinje sa nulom, pa se na to treba privići.

Page 4: Ciklusi u Pajtonu - Гимназија у Куршумлији...2020/05/08  · - U svakom ciklusu se na prethodnu vrednost za proizvoda množi sa vrednošću brojača u tom ciklusu

Funkcija range()

Vrednost koju stavimo u range funkciju određuje koliko će puta biti ponovljen ciklus (petlja). Brojač u ciklusu se menja po vrednostima iz opsega koga generiše funkcija range.

Funkcija range ima tri parametra: početnu vrednost, krajnju vrednost i korak promene. Početna vrednost je podrazumevano (po difoltu) 0, a korak promene je po difoltu 1, ako se ne upišu druge vrednosti kao argumenti funkcije.

početva krajnja korak - korak promene je 1 ako nije napisan vrednost vrednost promene - početna vrednost je 0 ako nije napisana

range(pv, kv, p)

Funkcija range proizvodi niz brojeva počev od nule pa do broja koji smo stavili u funkciju umanjenog za jedan. Tako, na primer, range(5) proizvodi niz: 0, 1, 2, 3, i 4. Funkcija range se zaustavlja za jedan manje nego što je broj u zagradi.

Ako želimo da brojač počinje sa nekom drugom vrednošću, a ne 0, to možemo postići tako što tu početnu vrednost zadamo u funkciji. Primer, naredba range(1,5) će proizvesti listu 1, 2, 3, 4.

Ako smo želeli da lista sadrži brojeve od 1 do 5 ( uključujući 5), onda smo trebali da napišemo range(1,6).

Moguće je kao argument pri pozivu range faunkcije da se upiše bilo koji broj za korak promene. Primer, ako želimo promenu za 2, kao argumen za korak promene se upiše 2, pa će se naredbom (1,10,2) napraviti lista 1, 3, 5, 7, 9.

Page 5: Ciklusi u Pajtonu - Гимназија у Куршумлији...2020/05/08  · - U svakom ciklusu se na prethodnu vrednost za proizvoda množi sa vrednošću brojača u tom ciklusu

Da bi dobili listu koja će ići unazad, moramo koristiti treći argument (korak promene) sa negativnim predznakom, na primer -1. Tako će range(5,1,-1) napraviti vrednosti 5, 4, 3, 2, tim redosledom. Range funkcija se zaustavila pre završne vrednosti 1.

Evo još nekoliko primera:

Naredba Generisane vrednosti

range(1,10) 1,2,3,4,5,6,7,8,9

range(1,10) 1,2,3,4,5,6,7,8,9

range(3,7) 3,4,5,6

range(2,15,3) 2,5,8,11,14

range(9,2,-1) 9,8,7,6,5,4,3

Primer: programa koji broji unazad od 5 a zatim štampa brojeve od 5 do 0.

Opcija end=' ' čini da sve ostane u istoj liniji.

Page 6: Ciklusi u Pajtonu - Гимназија у Куршумлији...2020/05/08  · - U svakom ciklusu se na prethodnu vrednost za proizvoda množi sa vrednošću brojača u tom ciklusu

ZADACI ZA VEŽBANJE

C1: Napiši program koji će da štampa sve cele brojeve od 10 do 20.

C2: Napiši program koji će da štampa sve neparne brojeve u opsegu od 10 do 20.

C3: Napiši program koji će da štampa pravougaonik dimenzija 15x5 korišćenjem *.

C4: Napiši program koji će da štampa pravougli trougao dimenzija 5x5 korišćenjem *.

Ili ovako:

Page 7: Ciklusi u Pajtonu - Гимназија у Куршумлији...2020/05/08  · - U svakom ciklusu se na prethodnu vrednost za proizvoda množi sa vrednošću brojača u tom ciklusu

C5: Napiši program koji će da sabere sve cele brojeve od 1 do 100.

- Suma (s) je uvek pre početka sumiranja jednaka nuli.

- Brojač (i) se menja u opsegu od 1 do 100 (ne uključuje 100).

- U svakom ciklusu se na prethodnu vrednost za sumu dodaje vrednost brojača u tom ciklusu (iteraciji).

C6: Napiši program koji će da pomnoži sve parne brojeve od 10 do 20.

- Proizvod (p) je uvek pre početka množenja jednaka jedinici.

- Brojač (i) se menja u opsegu od 10 do 20 (ne uključuje 20).

- U svakom ciklusu se na prethodnu vrednost za proizvoda množi sa vrednošću brojača u tom ciklusu (iteraciji).

C7: Napiši program koji će da štampa sve brojeve od 10 do 50 deljive sa 3.

- Broj je deljiv sa brojem 3 ako je ostatak pri deljenju tog broja sa brojem 3 jednak nuli (i%3==0).

Page 8: Ciklusi u Pajtonu - Гимназија у Куршумлији...2020/05/08  · - U svakom ciklusu se na prethodnu vrednost za proizvoda množi sa vrednošću brojača u tom ciklusu

C8: Napiši program koji će da prebroji koliko je brojeva od 10 do 50 deljivo sa 3.

C9: Napišite program koji traži od korisnika da unese broj x i eksponent n. Program treba da izračuna stepen x na n.

C10: Napišite program koji štampati tablicu množenja dimenzija 10x10.

Ili ovako:

Page 9: Ciklusi u Pajtonu - Гимназија у Куршумлији...2020/05/08  · - U svakom ciklusu se na prethodnu vrednost za proizvoda množi sa vrednošću brojača u tom ciklusu

C11: Napišite program koji štampati sate i minute.

Korišćenje skupa u brojačkom ciklusu

Skup može biti neka lista, string, skup, torka, ili neka druga struktura podataka. Brojačka promenljiva uzima vrednosti iz definisanog skupa, redom kako su napisane u skupu.

Primeri:

C12: Napiši program koji će da štampa sve brojeve iz liste: [3,56,-5,4,43,-32,5].

C13: Napiši program koji će omogućiti unos nekog imena i štampane slova unetog imena, slovo po slovo.

Page 10: Ciklusi u Pajtonu - Гимназија у Куршумлији...2020/05/08  · - U svakom ciklusu se na prethodnu vrednost za proizvoda množi sa vrednošću brojača u tom ciklusu

C14: Napiši program koji će omogućiti unos početnog i krajnjeg broja unutar kojih se ispisuju svi celi brojevi.

C15: Napiši program koji će omogućiti unos nekog teksta i štampane slova unetog teksta, slovo po slovo.

Ili ovako, sva slova u jednom redu:

Page 11: Ciklusi u Pajtonu - Гимназија у Куршумлији...2020/05/08  · - U svakom ciklusu se na prethodnu vrednost za proizvoda množi sa vrednošću brojača u tom ciklusu

Primena naredbe else

Naredbom else moguće je definisati šta se dešava pri izlasku programa iz ciklusa. Primer:

Naredbe break i continue

Naredba break se koristi za prekidanje ciklusa pre njegovog završetka. Progra prekida započetu iteraciju (započetu petlju), izlazi iz cikusa i nastavlja sa izvršenjem naredbi ispod ciklusa.

Primer 1: Program koji sabira sve cele brojeve od 0 do 100 i prekida sabiranje čim suma postane veća od 1000.

Primer 2: Program koji koji omogućava korisniku da pogodi tajni broj iz najviše tri pokušaja. Tajni broj je slučajno generisani broj u opsegu od 0 do 9.

Page 12: Ciklusi u Pajtonu - Гимназија у Куршумлији...2020/05/08  · - U svakom ciklusu se na prethodnu vrednost za proizvoda množi sa vrednošću brojača u tom ciklusu

Naredba continue se koristi za prekidanje započete iteracije (započete petlje, započetog ciklusa) i povratak na novi ciklus (iteraciju). Pri ovome se ciklus ne završava kao kod naredbe break, već se nastavlja sledećom iteracijom (petljom).

Primeri 1: Program koji štampa sve neparne brojeve od 1 do 20.

Kada je brojač i paran (i%2==0), prekida se aktuelni ciklus (iteracija) i program prelazi na novi ciklus (iteraciju). Time se preskače štampanje parnih brojeva, a štampaju se samo neparni brojevi.

Primeri 2: Program koji će štampati sate i minute samo kada su sati jednaki minutama.

Page 13: Ciklusi u Pajtonu - Гимназија у Куршумлији...2020/05/08  · - U svakom ciklusu se na prethodnu vrednost za proizvoda množi sa vrednošću brojača u tom ciklusu

DOMAĆI ZADATAK

1. Napiši program koji štampa 10 linija, sa brojevima od 1 do 10 na početku linije i tvojim imenom

u svakoj liniji. Izlaz treba da izgleda ovako:

1 Tvoje ime 2 Tvoje ime 3 Tvoje ime 4 Tvoje ime ... 10 Tvoje ime

2. Napiši program koji štampa listu celih brojeva od 1 do 20 i njihove kvadrate. Izlaz treba da

izgleda ovako:

1 --- 1 2 --- 4 3 --- 9 ... 20 --- 400

3. Iskoristi for petlju da štampa trougao kao ovaj prikazan dole na slici.

**** *** ** *

4. Iskoristi for petlju da štampa trougao kao ovaj prikazan dole na slici. Omogući korisniku da

specificira (unese) visinu trougla.

* *** ***** *******

5. Napiši program koji koristi for petlju da štampa brojeve 100, 98, 96, …, 4, 2.

6. Napiši program koji za unos 20 brojeva i sabiranje samo pozitivnih.

7. Napiši program za unos broja x i računanje njegovog faktorijela. Faktorijel broja x se računa

po formuli: F=1*2*3* …*x