uvod u programiranje - matematika -nasport.pmf.ni.ac.rs/materijali/179/1. i 2. uvod u program… ·...
TRANSCRIPT
Uvod u programiranje- matematika –I i II predavanje
Vesna Veličković[email protected]
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 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
<ceo broj> ::= [ (+|-) ] <cifra> {<cifra>}• Sintaksni dijagrami
Struktura programa u PascaluDeklaracija 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 “_”.
• 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 PascaluProsti (nestruktuirani) Složeni (struktuirani)
Redni tipovi pointerINTEGER REAL arrayCHAR recordBOOLEAN stringintervalni filenabrojani set
Redni tipovi
• Elemente možemo poređati po redosledu• Funkcije
ORD redni brojPRED predcessor, predhodni elementSUCC 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+1abs (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, +1EAutomatska konverzija INTEGER u REAL, 3=3.0
• Skup mogućih funkcija (real nije redni tip):abs (x) = | x | sqr (x) = x2 sqrt (x) = √ xsin (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 naredbabegin { <naredba> ; } endIzmeđ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 vrednostix: 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 charc: 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 promenljiveX := 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• PetljeMoguć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> then begin <naredba1> ; <naredba2>else begin <naredba3> ; <naredba4>end
Ugnježdavanje IF naredbiIf <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.