Uvod u programiranje matematika I i II predavanje

  • Slides: 33
Download presentation
Uvod u programiranje - matematika – I i II predavanje Vesna Veličković vesna@pmf. ni.

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

Cilj predmeta • Upoznavanje sa osnovnim konceptima i metodama programiranja • Sistematizacija razmišljanja •

Cilj predmeta • Upoznavanje sa osnovnim konceptima i metodama programiranja • Sistematizacija razmišljanja • Korišćenje progamskog jezika – pisanje programa, testiranje, ispravljanje grešaka • Rešavanje jednostavnih zadataka 2 časa predavanja i 2 časa vežbi

Distribucija poena • • Domaći zadaci – 25 poena Kolokvijum – 20 poena Pismeni

Distribucija poena • • Domaći zadaci – 25 poena Kolokvijum – 20 poena Pismeni deo ispita – 30 poena Usmeni deo ispita – 25 poena

Anketa • • • Ime, prezime, broj indeksa e-mail Srednja škola Dostupan računar i

Anketa • • • Ime, prezime, broj indeksa e-mail Srednja škola Dostupan računar i Internet? Za koje aktivnosti koristite računar? Šta ste učili iz Informatike u školi (ocena)? Da li ste imali Programiranje u školi (ocena)? Koje programske jezike znate (ocena)? Dodatne informacije

Programski jezik • U gimnazijama – Pascal • Programski jezik je JEZIK – Gramatika

Programski jezik • U gimnazijama – Pascal • Programski jezik je JEZIK – Gramatika - nauka o jeziku i njegovim zakonitostima • Sintaksa – skup pravila za obrazovanje pravilnih konstrukcija jezika • Semantika – skup pravila za utvrđivanje značenja jezičkih konstrukcija

Opis sintakse • Bekusova notacija < > meta promenljiva koja se definiše : :

Opis sintakse • Bekusova notacija < > meta promenljiva koja se definiše : : = po definiciji je | ili ( ) grupisanje [ ] opciono pojavljivanje { } ponavljanje nula ili više puta <ceo broj> : : = [ (+|-) ] <cifra> {<cifra>} • Sintaksni dijagrami

Struktura programa u Pascalu Deklaracija programa ; Blok. Struktura bloka: • Deklaracije labela •

Struktura programa u Pascalu Deklaracija programa ; Blok. Struktura bloka: • Deklaracije labela • Definicije konstanti • Definicije tipova • Deklaracije promenljivih • Deklaracje potprograma • Izvršni blok naredbi (begin <naredbe> end ; složena naredba)

 • Ime (identifikator) počinje slovom i može sadržati slova, cifre i znak “_”.

• Ime (identifikator) počinje slovom i može sadržati slova, cifre i znak “_”. • Ključne reči podvlačimo • Deklaracija program <ime programa> ; • Definicija konstanti const <ime konstante> = <konstanta> ; Konstanta određenog tipa • “; ” se piše posle deklaracija, definicija i između dve naredbe u složenoj naredbi (begin. . . end) • Ne pravi se razilika između malih i velikih slova • Komentari između zagrada { } ili (* *).

Prvi program {komentar} program prvi; const pi = 3. 1415; begin write (‘Zdravo!’); write

Prvi program {komentar} program prvi; const pi = 3. 1415; begin write (‘Zdravo!’); write (pi); end.

Tipovi u Pascalu • Definicija tipa type <ime tipa> = <tip> ; Vrste tipova

Tipovi u Pascalu • Definicija tipa type <ime tipa> = <tip> ; Vrste tipova u Pascalu Prosti (nestruktuirani) Složeni (struktuirani) Redni tipovi INTEGER CHAR BOOLEAN intervalni nabrojani pointer REAL array record string file set

Redni tipovi • Elemente možemo poređati po redosledu • Funkcije ORD PRED SUCC redni

Redni tipovi • Elemente možemo poređati po redosledu • Funkcije ORD PRED SUCC redni broj predcessor, predhodni element succesor, sledeći element • Relacije <, <=, >, >=, =, <>

INTERGER • Skup celih brojeva u određenom opsegu – 16 -bitni računari – opseg

INTERGER • Skup celih brojeva u određenom opsegu – 16 -bitni računari – opseg -215. . +215 – 32 -bitni računari – opseg -231. . +231 Konstante -345, +25, 3456 • Skup mogućih funkcija: ord (x) = x abs (x) = | x | pred (x) = x-1 sqr (x) = x 2 succ(x) = x+1 • Skup mogućih relacija: <, <=, >, >=, =, <> • Skup mogućih operacija: +, -, *, div, mod 7 div 3 = 2 7 mod 3 = 1

REAL • Podskup realnih brojeva – 7 -8 značajnih cifara, eksponent 38, 308, .

REAL • Podskup realnih brojeva – 7 -8 značajnih cifara, eksponent 38, 308, . . . Konstante -3. 45, +0. 25, 2. 0, 0. 7 e-3, -2 E 45, +1 E Automatska konverzija INTEGER u REAL, 3=3. 0 • Skup mogućih funkcija (real nije redni tip): abs (x) = | x | sqr (x) = x 2 sqrt (x) = √ x sin (x) cos (x) atan (x) = arcustangens (x) ln (x) exp (x) = ex • Skup mogućih relacija: <, <=, >, >=, =, <> • Skup mogućih operacija: +, -, *, /

BOOLEAN (BOOL) Logički tip • Skup mogućih vrednosti: TRUE, FALSE True je tačno, a

BOOLEAN (BOOL) Logički tip • Skup mogućih vrednosti: TRUE, FALSE True je tačno, a false je netačno. To su konstante. • Deklaracija promenljivih: var x : bool; • Skup mogućih funkcija (redni): ord, pred, succ ord (false) = 0 ord (true) = 1 • Skup mogućih relacija: <, <=, >, >=, =, <> • Skup mogućih operacija: not , and, or Ekvivalencija je =, a implikacija <=

CHAR • Skup znakova na računaru (slova, cifre, specijalni znaci, . . . )

CHAR • Skup znakova na računaru (slova, cifre, specijalni znaci, . . . ) • Konstante pod apostrofima, ‘A’, ‘ 7’, ’&’ • Apostrof se piše kao dva apostrofa, ‘’’’ • Skup mogućih funkcija: ord (x) = redni broj znaka x (kod znaka x) ord (‘A’) = 65 chr (65) = ‘A’ • Skup mogućih relacija: <, <=, >, >=, =, <>

String • Niska znakova pod apostrofima • Apostrof u stringu se piše kao dva

String • Niska znakova pod apostrofima • Apostrof u stringu se piše kao dva apostrofa • Konstante: ‘Ana voli Milovana’, ‘Nis ‘’ 13’

Promenljive • Služe za čuvanje vrednosti tokom izvršenja programa • Svaka promenljiva ima IME,

Promenljive • Služe za čuvanje vrednosti tokom izvršenja programa • Svaka promenljiva ima IME, TIP i VREDNOST • Deklaracija promenljivih var i, j, k : integer; a, b, c : real; znak : char;

Naredbe • Naredba je algoritamska radnja koja se može izvršiti. • Složena naredba begin

Naredbe • Naredba je algoritamska radnja koja se može izvršiti. • Složena naredba begin { <naredba> ; } end Između dve naredbe u složenoj naredbi se pise “; ” • Prazna naredba

Štampanje vrednosti • write: write (‘x = ‘, x) • writeln štampa oznaku kraja

Štampanje vrednosti • write: write (‘x = ‘, x) • writeln štampa oznaku kraja reda • writeln (‘Ana’) odštampa prvo ‘Ana’ a zatim predje u novi red Write (i: 2) štampa vrednost integer promenljive i na 2 mesta Write (x: 8: 2) štampa vrednost realne promenljive x na 8 mesta sa dve decimale

Učitavanje vrednosti x: integer; ili x: real; • read: write (‘x = ‘); read

Učitavanje vrednosti x: integer; ili x: real; • read: write (‘x = ‘); read (x) • readln: write (‘x = ‘); readln (x) Očitava nisku znakova sa standardnog ulaza (tastature), konvertuje je u brojčanu vrednost i tu vrednost upisuje u promenljivu x • Read i readln se razlikuju samo kod tipa char c: char; readln (c) očitava jedan znak (može da bude i oznaka kraj reda), upisuje ga u promenljivu c, a zatim prelazi u novi red. Sa Readln se ignorišu svi znaci do kraja reda, što nije slučaj kod read.

Naredba dodele vrednosti <ime promenljive> : = <izraz> • Izvršenje: prvo se izračuna vrednost

Naredba dodele vrednosti <ime promenljive> : = <izraz> • Izvršenje: prvo se izračuna vrednost izraza a zatim se ta vrednost upiše u promenljivu na levoj strani naredbe dodeljivanja • Tip vrednosti izraza mora da bude kompatibilan za dodeljivanje tipu vrednosti promenljive X : = 3+5*2; Vrednost promenljive se može menjati samo učitavanjem ili naredbom dodele vrednosti.

Izraz <izraz> : : = <prost izraz> [ <relacija> <prost izraz> ] <prost izraz>

Izraz <izraz> : : = <prost izraz> [ <relacija> <prost izraz> ] <prost izraz> : : = <član> { <aditivan operator> <član> } <član> : : = <faktor> { <multiplikativan operator> <faktor> } <faktor> : : = <ceo broj> | <realan broj> | <string> | <ime konstante> | <ime promenljive> | <ime funkcije> [ (lista prametara) ] | not <faktor> | (<izraz>)

Prioritet operacija u Pascalu • • Funkcije, not, zagrade Multiplikativni operatori: *, /, div,

Prioritet operacija u Pascalu • • Funkcije, not, zagrade Multiplikativni operatori: *, /, div, mod, and Aditivni operatori: +, -, or Relacioni operatori (relacije): <, <=, >, >=, = , <> Operatori istog prioriteta se izvršavaju jedan za drugim s leva na desno. 2*x - 4*y / z, prioritet (2*x) – ((4*y) / z) ne može 2<x<3, već (2<x) and (x<3)

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

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

Sekvenca Naredbe se izvršavaju redom jedna za drugom. Realizuje se složenom naredbom. begin <nareba

Sekvenca Naredbe se izvršavaju redom jedna za drugom. Realizuje se složenom naredbom. begin <nareba 1> ; <nareba 2> ; <nareba 3> end. Struktuirano pisanje (uvlačenje naredbi unutar struktuiranih naredbi)

Grananje Tok izvršenja programa zavisi od nekog uslova (logičkog izraza). Uslovne naredbe • IF

Grananje Tok izvršenja programa zavisi od nekog uslova (logičkog izraza). Uslovne naredbe • IF za grananje u dve grane • CASE za višestruko grananje

IF naredba If <logički izraz> then <naredba 1> [ else <naredba 2> ] •

IF naredba If <logički izraz> then <naredba 1> [ else <naredba 2> ] • Struktuirano pisanje • Tipična greška je staviti “; ” ispred else. • Moguće je ugnježdavanje if naredbi, kao i svih ostalih struktuiranih naredbi.

Izvršenje IF naredbe • Prvo se izračuna vrednost logičkog izraza (uslova) • Ako je

Izvršenje IF naredbe • Prvo se izračuna vrednost logičkog izraza (uslova) • Ako je ta vrednost tačna, izvrši se naredba 1. • Ako nije tačna i postoji else grana, izvrši se naredba 2. • U oba slučaja, posle izvršenja if naredbe prelazi se na sledeću naredbu u sekvenci.

Složena naredba u IF • Ako je unutar then ili else grane potrebno napisati

Složena naredba u IF • Ako je unutar then ili else grane potrebno napisati više od jedne naredbe, stavljamo ih u složenu naredbu. if <logički izraz> then begin <naredba 1> ; <naredba 2> else begin <naredba 3> ; <naredba 4> end

Ugnježdavanje IF naredbi If <uslov 1> then if <uslov 2> then <naredba 1> else

Ugnježdavanje IF naredbi If <uslov 1> then if <uslov 2> then <naredba 1> else <naredba 2> else if <uslov 3> then <naredba 3> else <nareedba 4>

Domaći zadatak 1 • Učitati jedan znak sa tastature i odštampati njegov ASCII kod.

Domaći zadatak 1 • Učitati jedan znak sa tastature i odštampati njegov ASCII kod.

Domaći zadatak 2 • Studente treba podeliti u k grupa, prema broju indeksa. Ako

Domaći zadatak 2 • Studente treba podeliti u k grupa, prema broju indeksa. Ako je indeks deljiv sa k, pripada prvoj grupi, ako pri deljenju sa k daje ostatak 1, pripada drugoj grupi, i tako redom. • Odštampati svoje ime, prezime i broj indeksa. • Učitati prirodan broj k i odredite kojoj grupi pripadate.

Domaći zadatak 3 • Učitati x i y koordinatu tačke i ispitati da li

Domaći zadatak 3 • Učitati x i y koordinatu tačke i ispitati da li ona pripada • Krugu k 1: x 2+y 2 <= 9 • Krugu k 2: (x-3)2+(y+2)2 <= 4 • Njihovom preseku • Nijednom od krugova k 1 i k 2.