Uvod u programiranje - matematika – VI predavanje

Slides:



Advertisements
Similar presentations
Strange jobs Jelena Maksimovic VIII-3 Jovana Maksimovic VIII-3 Ljubica Radenkovic VIII-3 Milena Jovanovic VIII-3.
Advertisements

Programiranje kroz aplikacije
Programi zasnovani na prozorima
Petlje WHILE – WEND.
Ponavljanje gradiva 2. razreda
Algoritamske/programske strukture
Programiranje - Blokovi naredbi i logički tipovi –
Struktura petlje.
Java Petlje i logika - 1.
Teorema o 4 boje(Four color theorem)
Naredbe ciklusa.
The Present Perfect Continuous Tense
IF NAREDBA – naredba grananja
Uvod u programiranje - matematika – XI predavanje
Microsoft Office 2007 MS Office je programski paket koji sadrži više programa: MS Word – program za obradu teksta MS Excel – program za izradu tabela sa.
Petlje FOR - NEXT.
REPEAT…UNTIL Naredbe ciklusa.
PROGRAMSKE PETLJE Milenković Gabrijela.
Komponente izbora i kontejnerske komponente
Explore-plots Katarina Jeremić 143/2011 Jovana Vulović 33/2011
Објектно орјентисано програмирање
Java Script.
Europski dan programiranja
Uvod u programiranje - matematika – X predavanje
RAZGRANATA STRUKTURA Zadaci i rešenja
RAZGRANATA STRUKTURA Zadaci i rešenja
Reference ćelije i opsega
14 UNUTRAŠNJE I ANONIMNE KLASE
SQL: naredba SELECT (nad jednom tabelom)
Naredba Case Višestruko grananje.
Element form Milena Kostadinović.
InputBox i naredba IF.
MessageBox.
Pojmovi digitalnog zapisa
Ključne reči,identifikatori, konstante i promenljive
PROGRAMSKI JEZIK PASCAL
MATEMATIČKI FAKULTET, UNIVERZITET U BEOGRADU
ELEKTRONIČKA POŠTA ( ) OTVARANJE RAČUNA.
Lazarus okruženje TIPOVI UNIT-a
Osnovni simboli jezika Pascal
Do While ... Loop struktura
TEST II razredi.
Programiranje – Small Basic
OSNOVE PROGRAMIRANJA U PROGRAMSKOM JEZIKU
Strukture podataka i algoritmi 5. VRIJEME IZVRŠAVANJA ALGORITMA
Nizovi.
C++ WORKSHOP Šimec Tino - FOI.
- metodom zamjene susjednih elemenata niza
Naredbe u php-u.
Programski jezik C++ - Vježbe - 5. dio
Programski jezik Python
Vježba- grananje-naredba if
Programiranje - Naredbe za kontrolu toka programa – 1. dio
Programski jezik C++ - Vježbe - 4. dio
Naredbe u php-u.
Programiranje - Naredbe za kontrolu toka programa – 3. dio
Programski jezik C++ - Vježbe - 1. dio
Discipleship in Action
LimeSurvey Uvjetni prikaz pitanja Internetska istraživanja
Oduzimanje brojeva od 1 do 5.
Ponavljanje Pisana provjera
Vježbanje.
Programiranje - Naredbe za kontrolu toka programa – 1. dio
INTERPOLACIJA PO DIJELOVIMA POLINOMIMA
Vježbenica 2: struktura grananja – 2.dio
Uvjetne petlje.
Višestruko grananje.
Programski jezik C++ - Vježbe - 2. dio
Iracionalni brojevi
Presentation transcript:

Uvod u programiranje - matematika – VI predavanje Vesna Veličković vesna@pmf.ni.ac.rs

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

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

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

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 + 1 end { posle petlje važi negacija uslova: not Prost or (k > koren)}

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 > koren then writeln (‘Broj je prost’) else writeln (‘Broj nije prost’)

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>

Ispitivanje samo neparnih if 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

Domaći zadatak 9 Ispitati da li je dati prirodan broj prost.

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 2 6 2 3 3 1

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

Tok izvršenja programa Upravljačke strukture Sekvenca Grananje Petlje Moguće je proizvoljno kombinovanje.

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

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.

REPEAT petlja Uslov je logički izraz. 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.

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!

Beskonačna petlja k := 1; repeat writeln (k); until k > 10 Izvrš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.

Ispravan primer Naredba u petlji mora da menja uslov! k := 1; repeat writeln (k); k := k+1; until k > 10

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

FOR i REPEAT i := 1; repeat writeln (i); i := i + 1; end i>10 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.

WHILE i REPEAT i := 1; while i <= 10 do begin writeln (i); i := i + 1; end {negacija uslova: i>10} i := 1; repeat writeln (i); i := i + 1; end i > 10 {uslov: 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.

FOR i WHILE Nekada su while i repeat zgodnija, čak i ako znamo tačan broj prolazaka kroz petlju. Odštampati sve parne brojeve do n. for i:=1 to n div 2 do writeln (2*i) i := 2; while i<=n do begin writeln (i); i := i + 2; end i := 2; repeat writeln (i); i := i + 2; until i > n

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 mesec repeat write (‘m=‘); read (m) until (1<=m) and (m<=12) Učitati rečenicu ch : char; repeat read (ch); until ch = ‘.‘

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

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 = ‘.’

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

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 = PrvaCifra then writeln (‘Jednake su’) else writeln (‘Nisu jednake’)

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)

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. Učitati prirodne brojeve n i p i ispitati da li je n p-broj. Odštampati sve petocifrene p-brojeve.