330 likes | 538 Views
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 S istematizacija razmišljanja Korišćenje progamskog jezika – pisanje programa, testiranje, ispravljanje grešaka
E N D
Uvod u programiranje- matematika –I i II predavanje Vesna Veličković vesna@pmf.ni.ac.rs
Ciljpredmeta • 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 deo ispita – 30 poena • Usmeni deo ispita – 25 poena
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 - 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 ::=po definiciji je | ili ( )grupisanje [ ]opciono pojavljivanje { }ponavljanje nula ili više puta <ceobroj> ::= [ (+|-) ] <cifra> {<cifra>} • Sintaksni dijagrami
Strukturaprograma u Pascalu Deklaracija programa ; Blok . Struktura bloka: • Deklaracije labela • Definicijekonstanti • Definicijetipova • Deklaracijepromenljivih • Deklaracjepotprograma • Izvršni blok naredbi (begin<naredbe>end; složena naredba)
Ime (identifikator) počinje slovom i može sadržati slova, cifre i znak “_”. • Ključne reči podvlačimo • Deklaracija programa 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 (pi); end.
Tipovi u Pascalu • Definicija tipa type <ime tipa> = <tip> ; Vrste tipova u Pascalu Prosti (nestruktuirani)Složeni (struktuirani) Redni tipovipointer INTEGER REAL array CHAR record BOOLEAN string intervalni file nabrojani set
Redni tipovi • Elemente možemo poređati po redosledu • Funkcije ORD redni broj PRED predcessor, predhodni element SUCC succesor, sledeći element • Relacije <, <=, >, >=, =, <>
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 pred (x) = x-1 succ(x) = x+1 abs (x) = | x | sqr (x) = x2 • 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,... Konstante -3.45, +0.25, 2.0, 0.7e-3, -2E45, +1E Automatska konverzija INTEGER u REAL, 3=3.0 • Skup mogućih funkcija (real nije redni tip): abs (x) = | x | sqr (x) = x2 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 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,...) • 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 apostrofa • Konstante: ‘Ana voli Milovana’, ‘Nis ‘’13’
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 { <naredba> ; }end Između dve naredbe u složenoj naredbi se pise “;” • Prazna naredba
Š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 (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 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> ::= <č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, 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 kombinovanje.
Sekvenca Naredbe se izvršavaju redom jedna za drugom. Realizuje se složenom naredbom. begin <nareba1> ; <nareba2> ; <nareba3> end. Struktuirano pisanje (uvlačenje naredbi unutar struktuiranih naredbi)
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 <naredba1> [ else <naredba2> ] • 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 ta vrednost tačna, izvrši se naredba1. • Ako nije tačna i postoji else grana, izvrši se naredba2. • 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 više od jedne naredbe, stavljamo ih u složenu naredbu. if <logički izraz> thenbegin <naredba1> ; <naredba2> elsebegin <naredba3> ; <naredba4> end
Ugnježdavanje IF naredbi If <uslov1> then if <uslov2> then <naredba1> else <naredba2> else if <uslov3> then <naredba3> else <nareedba4>
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 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 ona pripada • Krugu k1: x2+y2 <= 9 • Krugu k2: (x-3)2+(y+2)2 <= 4 • Njihovom preseku • Nijednom od krugova k1 i k2.