29
Uvod u programiranje - matematika – VI predavanje Vesna Veličković [email protected]

Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

Embed Size (px)

Citation preview

Page 1: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

Uvod u programiranje- matematika –VI predavanje

Vesna Veličković[email protected]

Page 2: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

Prost broj

• Prirodan broj je prost ako je deljiv samo sa jedinicom i samim sobom i veći je od 1.

• Za dati prirodan broj ispitati da li je prost.

Prost := true;for k := 2 to n-1 do if n mod k = 0 then Prost := false

Page 3: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

Ispitivanje do n/2

• Nema potrebe ispitivati brojeve veće od n/2.• Najmanji mogući delioc je 2, a najveći n/2.

Prost := true;for k := 2 to n div 2 do if n mod k = 0 then Prost := false

Page 4: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

Ispitivanje do sqrt(n)• Neka je n = a*b.• Bar jedan od brojeva a i b je manji od sqrt(n).• Kad bi bilo a, b > sqrt(n), onda a*b>n.

koren := trunc(sqrt(n));Prost := true;for k := 2 to koren do if n mod k = 0 then Prost := false

Page 5: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

Ispitivanje dok se ne nadje prvi delioc• Kada se nadje prvi delioc nema potrebe da se ispituje dalje

(for -> while).

koren := trunc(sqrt(n));Prost := true;k := 2;while Prost and (k <= koren) do begin if n mod k = 0 then Prost := false; k := k + 1end{ posle petlje važi negacija uslova: not Prost or (k > koren)}

Page 6: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

• Izvršenje: Ispituje se uslov (k <= koren) i ako je on tačan, ispituje se uslov (n mod k = 0). Ako taj uslov nije tačan, izlazi se iz petllje.

koren := trunc(sqrt(n));k := 2;while (k <= koren) and (n mod k <> 0) do k := k + 1;{ posle petlje: prost (k>koren) ili nije prost (n mod k <> 0) }{štampanje izveštaja}if k > korenthen writeln (‘Broj je prost’)else writeln (‘Broj nije prost’)

Page 7: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

Ispitivanje samo neparnih• Polazimo od varijante

koren := trunc(sqrt(n));k := 2;while (k <= koren) and (n mod k <> 0) do k := k + 1; <štampanje izvestaja>

Page 8: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

Ispitivanje samo neparnihif n = 2 then writeln (‘Broj je prost’)else if n mod 2 = 0 then writeln (‘Broj nije prost’) else {broj je neparan} begin koren := trunc(sqrt(n)); k := 3; while (k <= koren) and (n mod k <> 0) do k := k + 2; <štampanje izvestaja> end

Page 9: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

Domaći zadatak 9

• Ispitati da li je dati prirodan broj prost.

Page 10: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

Prosti činioci broja n

• Odrediti sve proste činioce prirodnog broja n i i odštampati ih onoliko puta koliko puta se javljaju u razvoju broja n.

12 26 23 31

Page 11: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

Prosti činioci broja n

k := 2;while n <> 1 do if n mod k = 0 then begin writeln (k); n := n div k end else k := k + 1

Page 12: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

Tok izvršenja programa

Upravljačke strukture• Sekvenca• Grananje• PetljeMoguće je proizvoljno kombinovanje.

Page 13: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

Petlje

Naredbe u petlji se izvršavaju nula ili više puta.

U Pascal-u postoje tri naredbe koje realizuju petlje (cikluse):

• For• While• Repeat

Page 14: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

Izbor naredbe za petlju

• Ako znamo tačan broj prolazaka kroz petlju, biramo FOR.

• Ako ne znamo tačan broj prolazaka kroz petlju, pitamo se da li se kroz petlju mora proći bar jedanput.• Ako se kroz petlju mora proći bar jedanput,

biramo REPEAT.• Ako se kroz petlju ne mora proći ni

jedanput, biramo WHILE.

Page 15: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

REPEAT petlja

repeat <naredba> { ; <naredba> } until <uslov>Uslov je logički izraz.Primenjuje se kada ne znamo broj prolazaka kroz

petlju, ali znamo da se kroz petlju mora proći bar jedanput.

Izlazak iz petlje mora biti definisan nekim uslovom.

Ako imamo više naredbi u petlji, nije potrebna složena naredba jer imamo okvir repeat...until.

Page 16: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

Izvršenje REPEAT naredbe

Naredbe u petlji se izvršavaju sve dok se ne ispuni uslov.

• Prvo se izvrše naredbe u petlji.• Zatim se izračuna vrednost uslova.• Ako je ta vrednost FALSE, ponovo se izvršavaju

naredbe u petlji. Zatim se ponovo ispituje uslov.

• Ako je je ta vrednost TRUE, izlazi se iz petlje.Napomena: I sa repeat naredbom možemo napraviti

beskonačnu petlju!

Page 17: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

Beskonačna petljak := 1;repeat writeln (k);until k > 10Izvršenje: K se postavi na 1. Odštampa se ta vrednost.

Ispita se uslov k > 10. Kako je k=1<10, uslov nije zadovoljen i ponovo se izvršava se naredba u petlji (odštamta se k=1). Ponovo se ispituje uslov. I dalje je k=1<10, pa se ponovo štampa k=1. Ponovo se ispituje uslov...

Na ovaj način smo napravili beskonačnu petlju.

Page 18: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

Ispravan primer

Naredba u petlji mora da menja uslov!

k := 1;repeat writeln (k); k := k+1;until k > 10

Page 19: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

Naredba u petlji se mora izvršiti bar jednom

Pre ispitivanja uslova u repeat naredbi izvršavaju se naredbe u petlji.

Ako je uslov odmah zadovoljen, izlazi se iz petlje, ali smo kroz naredbe u petlji već jednom prošli.

k := 1;repeat writeln (k); k := k+1;until k > 0

Page 20: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

FOR i REPEAT

for i:=1 to 10 do writeln (i)

i := 1;repeat writeln (i); i := i + 1;end i>10

Ako se kroz for petlju prolazi bar jedanput, ona se može realizovati i preko repeat. Inače ne može.

Page 21: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

WHILE i REPEATi := 1;while i <= 10 dobegin writeln (i); i := i + 1;end{negacija uslova: i>10}

Ako se kroz while petlju prolazi bar jedanput, ona se može realizovati i preko repeat. Primetite da je uslov u repeat naredbi negacija uslova u while naredbi.

i := 1;repeat writeln (i); i := i + 1;end i > 10{uslov: i>10}

Page 22: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

FOR i WHILE

for i:=1 to n div 2do writeln (2*i)

i := 2;while i<=n dobegin writeln (i); i := i + 2;end

Nekada su while i repeat zgodnija, čak i ako znamo tačan broj prolazaka kroz petlju.• Odštampati sve parne brojeve do n.

i := 2;repeat writeln (i); i := i + 2;until i > n

Page 23: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

Učitavanje elemenata koji zadovoljavaju neki uslov

Tipičana situacija u kojoj se primenjuje repeat naredba je pri učitavanju elemenata koji treba da zadovolje neki uslov.

• Učitati mesecrepeat write (‘m=‘); read (m)until (1<=m) and (m<=12)

• Učitati rečenicuch : char;repeat read (ch);until ch = ‘.‘

Page 24: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

Učitavanje brojeva dok se ne učita odredjeni broj

• Izračunati aritmetičku sredinu brojeva učitanih sa tastature.• Poslednji učitani broj je 0.S := 0;n := 0;repeat read (x); S := S + x; n := n + 1 until x = 0;AritmetičkaSredina := S / n

Page 25: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

Rečenica se završava tačkom

• Koliko cifara se nalazi u datoj rečenici?• ch : char;

BrojCifara := 0;repeat read (ch); if (‘0’ <= ch) and (ch <= ‘9’) then BrojCifara := BrojCifara + 1; until ch = ‘.’

Page 26: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

Izdvajanje cifara broja

• Odštampati sve cifre broja n.• Broj ima bar jednu cifru.repeat cifra := n mod 10; n := n div 10; writeln (cifra)until n = 0

Page 27: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

Izdvajanje cifara broja• Da li su prva i poslednja cifra broja n jednake.

PrvaCifra := n mod 10;repeat Cifra := n mod 10; n := n div 10; until n = 0;{poslednja odredjena cifra je posljednja cifra broja n}if Cifra = PrvaCifrathen writeln (‘Jednake su’)else writeln (‘Nisu jednake’)

Page 28: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

Svi k-tocifreni brojevi čije cifre zadovoljavaju uslov

• Odrediti sve četvorocifrene brojeve čije cifre zadovoljavaju dati uslov.

for i := 1 to 9 do for j := 0 to 9 do for k := 0 to 9 do for l := 0 to 9 do if <uslov za i, j, k, l> then writeln (i:1, j:1, k:1, l:1)

Page 29: Uvod u programiranje - matematika - - Наставнички …nasport.pmf.ni.ac.rs/materijali/179/6. Uvod u programira… · PPT file · Web viewUvod u programiranje- matematika

Domaći zadatak 10

• Prirodan broj n je p-broj ako je zbir njegovih cifara deljiv sa p.

• Na primer 123 je 3-broj jer je 1+2+3=6, a 6 je deljiv sa 3.

a) Učitati prirodne brojeve n i p i ispitati da li je n p-broj.

b) Odštampati sve petocifrene p-brojeve.