Uvod u programiranje 1 PROGRAMSKI JEZIK P A

  • Slides: 162
Download presentation
Uvod u programiranje 1 PROGRAMSKI JEZIK P A S C A L Nebojša Lazarević,

Uvod u programiranje 1 PROGRAMSKI JEZIK P A S C A L Nebojša Lazarević, prof. inf Informatika, Aleksinacka gimnazija

Elementi proc. jezika u sintaksi Pascal 2 PRIPREMA ZA PROGRAMIRANJE Informatika, Aleksinacka gimnazija

Elementi proc. jezika u sintaksi Pascal 2 PRIPREMA ZA PROGRAMIRANJE Informatika, Aleksinacka gimnazija

UVOD 3 Osnovni zadatak nastave programiranja je sticanje fundamentalnih znanja i veština iz ove

UVOD 3 Osnovni zadatak nastave programiranja je sticanje fundamentalnih znanja i veština iz ove oblasti. Dakle, znanja koja burna informatička revolucija neće učiniti beskorisnim. Često se postavlja pitanje zašto se izbegava korišćenje nekog popularnog i moćnog programskog jezika? Zato, što: Ø jezik koji je danas popularan sutra već nije; Ø većina profesionalnih jezika ima vrlo komplikovanu sintaksu i strukturu, koji početniku "zamagljuju" algoritme kao osnovni cilj učenja, Ø U nekim sredinama koje pretenduju da budu moderne, algoritmi se uče u C++-u ili Javi. Rezultat takvog učenja najčešće je da učenici jedva da su u stanju da napisu program malo složeniji od čuvenog "Hallo world". Informatika, Aleksinacka gimnazija

Podaci, informacije, znanje 4 U praksi se često ukazuje potreba za opisivanjem nekog dela

Podaci, informacije, znanje 4 U praksi se često ukazuje potreba za opisivanjem nekog dela realnog sveta koji nas okružuje, i u tu svrhu se koristi sledeći način. Uočavaju se realni ili apstraktni ob]ekti, koji se nazivaju objekti posmatranja ili entiteti, a koji su bitni za određenu primenu ili rešavanje nekog problema. To mogu biti fizički objekti, pojam, proces, pojava, događaj, instrukcija i el. Svaki uočeni objekat se sadržajno opisuje svojim atributima, pri čemu atributi predstavljaju obeležja (svojstva), odnosno bitne osobine koje ga karakterišu i na osnovu kojih se on prepoznaje. Radi proučavanьa, obrade ili drugih potreba sliku objekta posmatranja formiramo i opisujemo pomoću podataka i koji se definiše na sledeći način: q Podaci su činjenice, pojmovi ili događaji predstavljeni (zapisani, registrovani) na unapred dogovoren, formalizovan način. U praksi se često kao sinonim za termin podaci koristi i termin informacija. Međutim, termin informacija u mnogim primenama nema isto značenje. Od više definijaa pojma informaci]a navodimo sledeću: q Informacija su podaci obrađeni u obliku koji za primaoca ima neko značenьe, i ima stvarnu ili potencijalnu vrednost u tekućim ili budućim odlučivanjima. Kada je reč o odnosu podataka i informacija, može se reći da su podaci nešto objektivno postojalo u prirodi jer oni predstavljaju registrovane činjenice o nekom objektu posmatranja. Informacija je subjektivna, jer kažemo da poruka sadrži informaciju ako primaocu saopštava

Podaci, informacije, znanje 5 memorija PODACI INFORMACIJA obrada neznanje ZNANJE Transformaciй podataka u informaci.

Podaci, informacije, znanje 5 memorija PODACI INFORMACIJA obrada neznanje ZNANJE Transformaciй podataka u informaci. Je U računarstvu se često koristi i termin znan. Je. Od više mogupih definicija znanja navodimo sledeću: Znanje predstavlja formalizovanu informaciju na koju se poziva i koja se koristi u procesu zaključivanja. Znanje predstavlja rezultat spoznaje i razumevanja stvarnosti proveren u praksi.

Predstavljanje i obrada podataka 6 Svakodnevne promene oko nas zahtevaju prikupljanje, pamćenje (skladištenje), obradu,

Predstavljanje i obrada podataka 6 Svakodnevne promene oko nas zahtevaju prikupljanje, pamćenje (skladištenje), obradu, dostavljanje (distribuciju) i korišćenje podataka i informacija o svim tim promenama. Sistematska primena operacija nad podacima naziva se obrada podataka ili obrada informacija. Obradom se vrši transformisanje (pretvaranje) podataka i informacija u oblik koji će moći da se koristi za određenu namenu. Ako se obrada obavlja automatskim sredstvima ona se naziva automatska obrada podataka. Da bi se podaci mogli obrađivati, oni se prethodno moraju predstaviti (zapisati, registrovati, zapamtiti) na određeni način, koji je i čoveku i računaru prihvatljiv. U tom cilju dogovoreno se usvaja skup znakova ili apstraktna azbuka - konačan neprazan skup različitih elemenata, koji obično uključuje mala i velika slova azbuke, znake decimalnih cifara, znake interpunkcije i neke druge specijalne znake. Svaki element skupa znakova naziva se znak. Konačan broj redom napisanih znakova iz skupa znakova naziva se niska (niz znakova) ili reč nad tim skupom znakova. Broj znakova niske naziva se dužina niske. Niska koja ne sadrži ni jedan znak ima dužinu nula i naziva se prazna niska. Način predstavlэanьa podataka, i u računaru i van njega, diktira priroda elektronskih kola i drugih komponenata ko]e se koriste za realizaciju računara. Kako su za praktično korišćenje najjednostavnija i najpouzdanija elektronska kola kod kojih se koriste dva različita stanja, to se za predstavljanje podataka i informacija isključivo koristi azbuka V od dva elementa. Ova azbuka naziva se binarna azbuka, a njeni elementi najčešće se označavaju znacima „ 0" i „ 1", tj. V = {0, 1}. Kodiranьe podataka rečima binarne azbuke naziva se binarno kodiranje, a odgovarajući kod binarni kod.

7 Racunari Hardver Struktura memorije Informatika, Aleksinacka gimnazija

7 Racunari Hardver Struktura memorije Informatika, Aleksinacka gimnazija

Rešavanje problema korišćenjem računara 8 U procesu rešavanja bilo kog problema korišćenjem računara, može

Rešavanje problema korišćenjem računara 8 U procesu rešavanja bilo kog problema korišćenjem računara, može se izdvojiti nekoliko etapa. Vreme koje će biti provedeno u realizaciji bilo koje od njih zavisi od složenosti i specifičnosti problema. Neke etape se mogu propustiti ili proći "neprimetno“; u većoj ili manjoj meri svesno ili nesvesno, prolaze sledeće etape: 1) 2) 3) 4) 5) 6) 7) 8) 9) Postavka problema. Analiza, formalni opis problema, izbor modela. Izbor ili razrada algoritma koji rešava zadatak. Projektovanje opšte strukture programa. Kodiranje. Testiranje programa. Analiza rezultata izvršavanja programa, njihova interpretacija i, ako je potrebno, modifikacija modela Publikovanje ili isporuka programa naručiocu. Održavanje i modernizacija programa. Informatika, Aleksinacka gimnazija

Rešavanje problema korišćenjem računara 9 1. Postavka problema potiče od naručioca, mada se precizna

Rešavanje problema korišćenjem računara 9 1. Postavka problema potiče od naručioca, mada se precizna formulacija postiže u saradnji sa programerom koji treba da realizuje projekat. U ovoj etapi problem koji treba resiti korišćenjem računara formuliše se na prirodnom jeziku (srpskom, kineskom, plemena "mvonga-tvonga", . . . ). Ovde je važno da se naručiocu argumentuje da je korišćenje računara optimalan put da se dođe do traženih rezultata. Vrlo je važno da naručilac posla (ma koje struke da je) ima bar elementarnu programersku pismenost kako bi precizno, jasno i u granicama realnog, formulisao šta traži od programera. Statistika kaže da od 60 do 90% grešaka u složenim programskim projektima potiče od nepotpune i pogrešne formulacije zahteva. 2. Analiza problema 3. Izbor ili razrada algoritma koji rešava problem realizuje se na osnovu prethodnih etapa. Pod algoritmom se podrazumeva konačan uređen niz precizno formulisanih pravila kojima se uključuje definisanje ulaznih i izlaznih podataka, mogućih ograničenja njihovih vrednosti i obično se završava formalnim opisom problema, što se najčešće svodi na matematičku formulaciju. Ako se radi o modeliranju pojava ili procesa, u ovoj etapi se razrađuje matematički model procesa (pojave). rešava jedan ili čitava klasa problema. Kako se mnogi problemi mogu resiti na razne načine, neophodno je pažljivo proanalizirati sve varijante i izabrati optimalnu. U ovoj etapi, algoritam se izražava na nekom od jezika za zapis algoritma (može i u vidu blok-šeme). Odluka o izboru Informatika, Aleksinacka gimnazija

Rešavanje problema korišćenjem računara 10 4. Projektovanje opšte strukture programa - u svojoj prvoj

Rešavanje problema korišćenjem računara 10 4. Projektovanje opšte strukture programa - u svojoj prvoj fazi mora predvideti izbor 5. Kodiranje - je zapis algoritma na programskom jeziku. Ako su algoritam rešenja zadatka, struktura programa i 6. Testiranje treba da obezbedi otklanjanje grešaka u programu. Radi toga se formira sistem testova - specijalno 7. Analiza rezultata izvršavanja programa, njihova interpretacija i, ako je potrebno, 8. Publikovanje ili isporuka programa naručiocu - je trenutak rođenja programa, 9. Održavanje i modernizacija programa - podrazumeva obuku korisnika i konsultacije programskog jezika i pomoćne programske podrške. Na ovoj etapi se bira programski jezik koji je najpogodniji za kodiranje, jer razni programski jezici imaju svoje specifičnosti i svoje oblasti primene. Zatim se pristupa razradi "arhitekture" programa i definiše način čuvanja informacija (skup promenljivih, nizova podataka i drugih struktura). struktura podataka dobro promišljeni i precizno zapisani, smanjuje se vreme potrebno za kodiranje, kao i verovatnoća pojave grešaka. pripremljenih kontrolnih parametara za koje je poznato rešenje problema. Testiranje treba da obuhvati sve moguće grane u programu, pa i situacije kada nema rešenja problema. Ako se dobijeni rezultati poklapaju sa očekivanim, to može se smatrati da program radi korektno. modifikacija modela. Kada je konačno program proveren, većina grešaka otklonjena i ima osnova da se smatra da, u okvirima izabranog modela, radi korektno, ipak je neophodno da se dobijeni rezultati stave "pod lupu". kada se on iznosi na tržište, stavlja na ftp-server radi slobodne distribucije ili predaje naručiocu radi eksploatacije. o radu programa. Nedostaci i uočene greške se obično otklanjaju besplatno. Kod tiražnih programa, vrši se stalna analiza reakcije korisnika i izrađuju nove verzije u skladu sa primedbama i željama korisnika. Informatika, Aleksinacka gimnazija

Programski jezici 11 U opštem slučaju, termin JEZIK označava sredstvo komuniciranja i sporazumevanja. To

Programski jezici 11 U opštem slučaju, termin JEZIK označava sredstvo komuniciranja i sporazumevanja. To je sistem znakova kojima se prenosi informacija. Komuniciranje se može odvijati između ljudi, između ljudi i mašina ili između mašina. Jezici kojima se sporazumevaju ljudi, tzv. prirodni Jezici, predstavljaju sisteme izražavanja misli koji imaju određena glasovna i gramatička pravila i služe kao na]važnije sredstvo za sporazumevanje među ljudima. Postoje i tzv. veštački jezici, koji se takođe koriste. To su Jezici čija se pravila definišu unapred, pre nego što počnu da se koriste. U cilju omogućavanja komuniciranja ljudi sa računarima razvijeni su posebni veštački Jezici, koji se nazivaju programski Jezici.

Programski jezici 12 Programski Jezik predstavlja notaciju (sistem označavanja) namenjenu izražavanju programa na način

Programski jezici 12 Programski Jezik predstavlja notaciju (sistem označavanja) namenjenu izražavanju programa na način koji računar može da prihvati. To je skup osnovnih elemenata Jezika - leksičkih simbola (završnih simbola) sa definisanim pravilima građenja pravilnih konstrukcija programskog Jezika od tih elemenata.

Programski jezici 13 Razlog za uvođenje programskih Jezika je sledeći: Računar je konstruisan tako

Programski jezici 13 Razlog za uvođenje programskih Jezika je sledeći: Računar je konstruisan tako da prihvata samo mašinski Jezik, юji je potpuno različit od prirodnog Jezika koji ljudi koriste. S obzirom na to da, računar ne može da prihvati i razume prirodan jezik, programski jezici predstavljaju neku sredinu - oni su mnogo bliži čoveku od mašinskog jezika, a istovremeno su bliži mašinskom jeziku od prirodnog Jezika. Programski Jezik je nameren opisivanju računskih postupaka, tj. zapisivanju rešenja zadatka pomoću programa koji treba da se izvrši na računaru. Postoji veliki broj programskih Jezika, a stalno se razvijaju i uvode i novi. Međutim, široku primenu u praksi ima vrlo mali broj programskih jezika. Informatika, Aleksinacka gimnazija

Programski jezici 14 Osobine programskih Jezika Programski Jezici su razvijeni s ciljem da se

Programski jezici 14 Osobine programskih Jezika Programski Jezici su razvijeni s ciljem da se olakša rad potreban programeru za pripremu programa i njegovo prenošenje na računar. Oni treba da omoguće lako komuniciranje sa računarom. U tom cilju svaki programski Jezik treba da ima sledeće osnovne osobine: ü da bude što sličniji ljudskom načinu izražavanja, ü da bude formalno definisan, kako bi se njime mogli jednoznačno izražavati postupci rešavanja problema, ü da omogući kompaktan i jasan zapis postupka rešavanja, ü da bude lak za usvajanje, ü da omogućava formalno prevođenje s programskog Jezika na računar razume i prihvata - mašinski jezik. Informatika, Aleksinacka gimnazija

Programski jezici 15 Programski jezik je skup sredstava i pravila predstavljanja algoritma u obliku

Programski jezici 15 Programski jezik je skup sredstava i pravila predstavljanja algoritma u obliku pogodnom za izvršavanje na računaru. Program je zapis (realizacija) algoritma na jeziku programiranja. Postupak pisanja programa se naziva programiranje. Razlikuju se četiri nivoa programiranja, i to na: ü Mašinskom jeziku; ü Asembleru; ü Jezicima visokog nivoa ü Jezicima vrlo visokog nivoa. Informatika, Aleksinacka gimnazija

Programski jezici 16 Neproceduralni programski jezici Proceduralni programski jezici Simbolički programski jezik Neproceduralni programski

Programski jezici 16 Neproceduralni programski jezici Proceduralni programski jezici Simbolički programski jezik Neproceduralni programski jezici omogćavaju pisanje programa na znatno većem nivou apstrakcije postupka rešavanja problema. Neproceduralni jezici specifiku šta treba uraditi, umesto kako to treba uraditi, zbog čega se nazivaju i ]ezici vrlo visokog nivoa. Proceduralni ili viši programski jezici predstavljaju jezike nezavisne od mašine. Način pisanka programa je blizak načinu ljudskog izražavanja, a napor pri programiranju je znatno manji. Zadavanje postupka rešavanja zadatka sastoji se u opisu načina korak po korak kako program treba da se izvršava. Proceduralni programski ]ezici mogu se podeliti u dve grupe: a) algoritamski programski jezici namenjeni za opis algoritama široke klase problema, b) problemski orjentisani jezici ili specijalni programski ]ezici koji raspolažu sredstvima posebno karakterističnim i pogodnim za određene oblasti primene. Korišćenje osmišljenih naziva umesto cifarskih kodova operacija i memorijskih adresa značajno je uprostilo proces programiranja i modifikaciju programa. Nažalost, osnovni nedostatak mašinskog jezika - zavisnost programa od konkretnog procesora - pri prelasku na Asembler nije bio otklonjen. Program zapisan na Asembleru procesor nije u stanju da izvršava, jer on "razume" samo kodove operacija i adrese napisane korišćenjem binarnih cifara. Zato se program napisan na Asembleru mora prethodno transformisati na mašinski jezik. To se realizuje pomoću specijalnog programa, koji se naziva translator, a proces prevođenja programa u mašinski oblik naziva se Mašinski programski jezik Informatika, Aleksinacka gimnazija procedure TForm 1. Button 1 Click(Sender: TObject); begin end; temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; lw $15, lw $16, sw sw 0($2) 4($2) $16, 0($2) $15, 4($2)c translacija. Programi na mašinskom jeziku (ili jeziku niskog nivoa) predstavljaju niz komandi koje sadrže kodove operacija koje računar treba da izvrši i adrese operanda. Mašinski jezik predstavlja skup mašinskih instrukcija (naredbi) kojima se zadaju računaru elementarne operacije koje on može direktno raspoznati i izvršiti. Svaka mašinska naredba predsta vlja binarni kod koji služi za upravljanje radom računara. 0000 1001 1100 0110 1010 1111 0101 1000 0000 1001 1100 0110

17 Visual C++ Asembler – simbolički jezik C# Odjel za matematiku C Masinski jezik

17 Visual C++ Asembler – simbolički jezik C# Odjel za matematiku C Masinski jezik Pascal DELPHI

LINIJSKA STRUKTURA ALGORITMA 18 Odjel za matematiku

LINIJSKA STRUKTURA ALGORITMA 18 Odjel za matematiku

RAZGRANATA STRUKTURA ALGORITMA 19 Odjel za matematiku

RAZGRANATA STRUKTURA ALGORITMA 19 Odjel za matematiku

CIKLICNA STRUKTURA ALGORITMA 20 Odjel za matematiku

CIKLICNA STRUKTURA ALGORITMA 20 Odjel za matematiku

SINTAKSA I SEMANTIKA 21 Kao Što svaki govorni jezik ima svoje gradivne elemente (slova,

SINTAKSA I SEMANTIKA 21 Kao Što svaki govorni jezik ima svoje gradivne elemente (slova, reci i rečenice), tako se i za kreiranje osnovnih konstrukcija programskih jezika koriste sledeći elementi: Simboli - osnovni, nedeljivi znakovi, od kojih se gradi tekst programa na datom jeziku. Skup svih simbola obrazuje alfabet jezika. Alfabet programskih jezika je nešto širi od alfabeta prirodnih jezika, i uključuje latinska slova, cifre, znake aritmetičkih operacija, znak-razdvajanja (prazninu) i skup specijalnih simbola. Lekseme - nizovi simbola alfabeta (elementarne konstrukcije) koji imaju određeno značenje. Lekseme se mogu sastojati i od samo jednog simbola jezika, na primer, znaka operacije. Skup leksema i pravila njihovog formiranja predstavljaju leksiku jezika. Izrazi - nizovi leksema zapisanih u strogoj korespodenciji sa pravilima jezika. Oni zadaju poredak izračunavanja neke vrednosti. Naredbe (operatori, instrukcije ili komande jezika) zadaju potpun opis neke akcije, koja treba da se izvrši. Za opis složene akcije može se formirati grupa naredbi, koje se objedinjavaju u složenu ili blok naredbu. Akcije koje se zadaju naredbama izvršavaju se nad podacima. Podatak je bilo koja informacija predstavljena u formalnom obliku i pogodna za obradu korišćenjem računara. Konstrukcije jezika kojima se opisuju podaci nazivaju se opisne. Skup opisa i naredbi jezika programiranja, koji realizuju algoritam rešenja konkretnog problema, obrazuju program na datom jeziku. Skup pravila za građenje pravilnih konstrukcija jezika od njegovih elemenata (leksema, izraza, operatora) predstavlja sintaksu. Semantika definiše značenje sintaksno ispravnih konstrukcija jezika. Drugim recima, sintaksa jezika definiše oblik pojedinih konstrukcija ("kako one izgledaju"), dok semantika ukazuje na akcije koje treba da izvrši računar na osnovu njihovog značenja ("šta one rade"). Informatika, Aleksinacka gimnazija

Registrovanje podataka - bit i bajt Sve informacije (programi, i njegovi podaci) se Čuvaju

Registrovanje podataka - bit i bajt Sve informacije (programi, i njegovi podaci) se Čuvaju u memoriji računara u binarnom obliku - kao niz bitova (bit je mnemonička skraćenica od binary digit -binarna cifra). Svaki bit može dobiti vrednost jedne binarne cifre - nule i jedinice. Osam bitova obrazuje bajt. Bajt je minimalna adresibilna jedinica memorije, tj. svaki bajt operativne memorije ima svoj redni broj, koji se naziva adresa bajta (adrese počinju od nule). Maksimalni broj koji se može zapisati korišćenjem binarnih cifara u jednom bajtu je: 1111 - Što odgovara dekadnom broju 255; minimalan broj je 0000 - Što odgovara dekadnoj nuli. Prema tome, vrednost bajta može biti ceo broj od Odo 255. Razni podaci mogu zauzimati jedan ili više bajtova. Deo memorije u kome se čuva jedna vrednost naziva se registar (ili memorijska lokacija). Međutim, treba imati u vidu da između registara ne postoji precizna granica u memoriji. Adresa registra je adresa njegovog prvog bajta. To znači da svaki podatak ima svoju adresu u memoriji. Mašinski program u svojim instrukcijama sadrži konkretne memorijske adrese na koje smešta i odakle uzima podatke. Prirodno, postavlja se pitanje Šta je sa registrovanjem negativnih brojeva, realnih itd. Odgovor na ova pitanja zahteva mnogo više prostora i vremena nego što je predviđeno ovim kursom, tako da priču o registrovanju podataka nećemo produbljivati.

Klasifikacija programskih jezika 23 Tipična klasifikacija programskih jezika je najčešće zasnovana na sledećim faktorima:

Klasifikacija programskih jezika 23 Tipična klasifikacija programskih jezika je najčešće zasnovana na sledećim faktorima: Ø stepenu bliskosti jezika arhitekturi računara; Ø načinu prevođenja; Ø oblasti primene; Ø načinu rešavanja problema (ili proceduralnosti). Prema stepenu bliskosti jezika arhitekturi računara, oni se dele na jezike niskog nivoa ili mašinski zavisne jezike (mašinski jezik, Assembler) i na jezike visokog nivoa ili mašinski nezavisne jezike (Fortran, Pascal, ADA, Basic, C, C++, Java). Kada se kaže "jezik niskog nivoa" to ne treba shvatiti kao niske mogućnosti jezika, već kao tesnu vezu sa hardverom računara. Prednost korišćenja programskih jezika visokog nivoa (kao što je npr. PASCAL) je u tome što se program na nekom od takvih jezika može koristiti na bilo kom računam koji raspolaže odgovarajućim translatorom Informatika, Aleksinacka gimnazija

Klasifikacija programskih jezika 24 Prema načinu prevođenja programa i procesu njegovog izvršavanja , programski

Klasifikacija programskih jezika 24 Prema načinu prevođenja programa i procesu njegovog izvršavanja , programski jezici se dele na kompajlerske i interpretatorske. Kod kompajlerskih programskih jezika proces izvršavanja programa se realizuje nakon što je prevođenje potpuno završeno. Zbog toga translator kompajler (koji je preveo program) u toku izvršavanja programa nije potreban, pa se i ne nalazi u operativnoj memoriji. Ovo doprinosi ekonomičnijem korišćenju operativne memorije. Interpretatorske programske jezike karakteriše izvršavanje svake naredbe programa neposredno posle translacije. U toku izvršavanja programa, translator interpretatorskog tipa se nalazi u operativnoj memoriji. Osim toga, izvršavanje programa usporava stalna predaja kontrole translatoru (da bi preveo naredbu). Interpretator možemo uporediti sa "usmenim prevodiocem", koji svaku izgovoreno rečenicu prevodi neposredno. Kompajler je kao "pismeni prevodilac", koji prevede ceo tekst pa ga tek onda daje na Čitanje. Informatika, Aleksinacka gimnazija

Klasifikacija programskih jezika 25 Debugger Editor SOURCE F- Povezivač Prevodilac PREVEDEN SOURCE je OS

Klasifikacija programskih jezika 25 Debugger Editor SOURCE F- Povezivač Prevodilac PREVEDEN SOURCE je OS Program. exe Punilac Priprema programa za izvršenje Informatika, Aleksinacka gimnazija RAM

Nivoi programske reprezentacije Program u VPJ Apstrakcije temp = v[k]; 26 v[k] = v[k+1];

Nivoi programske reprezentacije Program u VPJ Apstrakcije temp = v[k]; 26 v[k] = v[k+1]; v[k+1] = temp; Compiler lw lw sw sw Program u asembleru Assembler Mašinski program 0000 1010 1100 0101 1001 1111 0110 1000 $15, $16, $15, 1100 0101 1010 0000 0110 1000 1111 1001 0($2) 4($2)c 1010 0000 0101 1100 1111 1000 0110 0101 1100 0000 1010 Mašinska interpretacija Specifikacija kontrolnih signala Jezik registrarskog prenosa Informatika, Aleksinacka gimnazija ALUOP[0: 3] <= Inst. Reg[9: 11] & MASK 1000 0110 1001 1111

Klasifikacija programskih jezika 27 Prema oblasti primene, programski jezici se dele na specijatizovane i

Klasifikacija programskih jezika 27 Prema oblasti primene, programski jezici se dele na specijatizovane i univerzalne. Specijalizovani rešavaju usku klasu problema. Među njima su najpopularniji: Fortran (za naučno - tehničke proračune); Cobol (za komercijalne probleme); Refal, Lisp (za obradu simbola); Modula, Ada (za programiranje aplikacija koje rade u realnom vremenu); Ø Među jezicima opšte namene, ili univerzalnim, najpopularniji su: • Basic - kreiran je 1964 g. s namerom da privuče izučavanju tehnologije programiranja što širi krug ljudi. Savremene verzije jezika omogućavaju rešavanje složenih problema profesionalnog nivoa. Prve verzije Basic-a su bile interpretatorskog tipa, što je omogućavalo lak razvoj programa. Na njegovoj osnovi je napravljen savremeni jezik Visual Basic, koji se koristi kao prost i udoban jezik Široke namene. Međutim, mnogi mu zameraju zbog slabe čitljivosti koda ("Visual Basic (VB) je vezan za Basic, koji nije projektovan da bude proširiv jezik, tako da su sva proširenja nagomilana u VB-u proizvela zaista zastrašujuću sintaksu koja se veoma teško održava" Informatika, Aleksinacka gimnazija

Klasifikacija programskih jezika 28 Ø Pascal - kreirao ga je specijalno za obuku u

Klasifikacija programskih jezika 28 Ø Pascal - kreirao ga je specijalno za obuku u programiranju švajcarski matematičar Niklaus Virt, 1974 g. U njemu su zaživele ideje strukturnog programiranja. Velika zasluga za razvoj jezika pripada specijalistima firme Borland, koji su razvili ćelu seriju efikasnih translatora Pascal-a i uneli niz dopuna u sam jezik, tako da je po mogućnostima prevazišao osnovnu namenu. Pascal je bio i ostao ne samo osnovni jezik za učenje principa programiranja, već i najrasprostranjeniji jezik na mnogobrojnim olimpijadama iz programiranja. Firma Borland je završila liniju proizvoda Turbo Pascal i na njegovoj osnovi razvila izuzetno moćno integrisano okruženje za brzi razvoj aplikacija - Delphi, koji uživa veliku popularnost širom sveta. Ipak, jezik Turbo Pascal se i dalje smatra odličnim sredstvom za prvo upoznavanje sa svetom "ozbiljnog" programiranja. Za to su zaslužni njegova jasna logička struktura i mogućnost rešavanja raznovrsnih problema (naučno-tehničkih, računarske grafike, rad sa zvukom, sistemsko programiranje). Informatika, Aleksinacka gimnazija

Klasifikacija programskih jezika 29 C - razvijen je 1972 g. u Belovim Laboratorijama sa

Klasifikacija programskih jezika 29 C - razvijen je 1972 g. u Belovim Laboratorijama sa ciljem da zameni Asembler u problemima sistemskog programiranja. On omogućava pisanje efikasnih programa, ali bez korišćenje složenog kodiranja koje je prisutno u Asembleru. C++ - je objektno-orijentisana verzija jezika koju je 1980 g. razvio Bjorn Straustrup u Belovim Laboratorijama. Danas to je najpopularniji jezik profesionalaca. U C++ je razvijen najpopularniji savremeni operativni sistem Windows. Danas se pojavljuju novi programski jezici čija je osnova C/C++. Java i C# - su u velikoj meri nasledili sintaksu i stil programiranja C/C++. Zadržane su njegove najbolje osmišljene konstrukcije, a uklonjene kompleksne. Projektantima ovih jezika kao da je bio najvažniji cilj smanjenje vremena i napora za pravljenje robusnih programa. Na Žalost, programi pisani na Javi ili C# su znatno sporiji od C/C++ programa, tako da su male mogućnosti za njihovo korišćenje u oblasti sistemskog programiranja. S druge strane, koriste se sa velikim uspehom u sferi Internet programiranja. Pri radu sa Java interpretatorom, kod programa se trans lira u pseudokod virtuelne Java mašine. Treba imati u vidu da virtuelna Java-maŠina stvarno ne postoji u smislu realnih mikrošema i drugih uređaja, već predstavlja programski emulator (imitator), koji se izvršava na raspoloživom hardveru. Pseudokod se često naziva bajt-kod. Ada - je programski jezik napravljen po narudžbini Ministarstva odbrane USA. To je odlično struktuiran jezik, ali vrlo kompleksan, zbog čega nema širu popularnost. Jezik Ada se koristi za izradu softvera računarskih sistema koji se ugrađuju u samonavodeće rakete, kosmičke objekte i avione Informatika, Aleksinacka gimnazija

Klasifikacija programskih jezika 30 Prema načinu rešavanja problema, dele se na proceduralne i neproceduralne

Klasifikacija programskih jezika 30 Prema načinu rešavanja problema, dele se na proceduralne i neproceduralne (ili deskriptivne). Proceduralne jezike karakteriše visoka al gori trn ičnost, tj. važnost preciznog planiranja poretka akcija koje se izvršavaju. Takvi jezici su: Asembler, Fortran, Basic, Pascal, Ada, C/C++, . . Neproceduralne jezike karakteriše mogućnost apstrahovanja detalja algoritma rešenja problema. Takvi su programski jezici Prolog i Lisp koji su razvijeni za rešavanje problema u oblasti veslačke inteligencije. Informatika, Aleksinacka gimnazija

 A L G O R I T M I Informatika, Aleksinacka gimnazija

A L G O R I T M I Informatika, Aleksinacka gimnazija

Uvod u programski jezik PASCAL Programski jezik PASCAL razvio je Švajcarski matematičar Niklaus Virt

Uvod u programski jezik PASCAL Programski jezik PASCAL razvio je Švajcarski matematičar Niklaus Virt (Nik. Jaus Wirth) 1974 g. Ime mu je dao po čuvenom francuskom fizičaru, matematičaru i filozofu Blaise Pascal-u, tvorcu prve mehaničke mašine koja je imala mogućnost izvođenja operacije sabiranja. Virt je imao za cilj da napravi programski jezik pogodan za učenje programiranja kao logične i sistematične discipline, koji bi se mogao implementirati na većini računara. PASCAL nije samo najpogodniji za obuku u programiranju, već se dosta koristi kao jezik sistemskog programiranja i predstavlja bazu za građenje moćnijih programskih jezika (npr. DELPHI). Informatika, Aleksinacka gimnazija

Osnovni simboli jezika Kao i u svakm drugom jeziku, i u PASCAL-u se konstrukcije

Osnovni simboli jezika Kao i u svakm drugom jeziku, i u PASCAL-u se konstrukcije grade od skupa osnovnih simbola jezika - koje čine slova, cifre i specijalni znaci. U PASCAL-u se koriste sledeća slova: ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz cifre: 01 23456789 i specijalni znaci: + -*/ = <>[]■, ; : *()'{} Specijalni znaci su i neštampajući znaci (praznina, znak za novu liniju, znak za tabulaciju itd. ). Osnovni elementi jezika koji imaju fiksirano značenje (koje ćemo upoznati kasnije) su i takozvane rezervisane ili ključne reci: and « array, begin, case, const, div, downto, do, else, end, file, for, ftinction, goto, if, in, label, mod, nil, not, of, or, procedure, program, record, repeat, set, then, to, type, until, var, while, vvith. Značenje navedenih simbola biće objašnjeno u toku izučavanja konstrukcija jezika. Skup osnovnih simbola PASCAL-a je uređen i konačan, tj. svaki simbol, osim rezervisanih reci, ima redni broj koji zavisi od implementacije jezika. Informatika, Aleksinacka gimnazija

Osnovni simboli jezika Imena u Pascal-u Imena ili identifikatori se koriste za označavanje osnovnih

Osnovni simboli jezika Imena u Pascal-u Imena ili identifikatori se koriste za označavanje osnovnih objekata jezika: konstanti, tipova, promenljivih, procedura i funkcija. Ime je proizvoljan niz slova i cifara koji počinje slovom. U TURBOPASCAL-u je u imenu dozvoljeno koristiti i znak za podvlačenje. Obično se koristi da (kada se ime sastoji od više reci) zameni prazninu koja je nedozvoljen simbol. Prema tome, nekorektno je ako u svojstvu imena uvedemo: Porez na promet. Umesto toga može se staviti: Porez. Na. Promet, Porez_na_promet ili poreznapromet. Poželjno je da ime iskazuje što potpuniju informaciju o objektu na koji se odnosi, tako da imena treba formirati od više reci kao u navedenim prirnerima. U PASCAL-u se u svojstvu imena ne smeju koristiti rezervisane reci i standardna imena kojima se označavaju standardne konstante, fajlovi, funkcije, procedure i tipovi. Informatika, Aleksinacka gimnazija

Osnovni simboli jezika Dozvoljena upotreba imena: Škola Zatezna_kamata A 2 bc Abc 3 a

Osnovni simboli jezika Dozvoljena upotreba imena: Škola Zatezna_kamata A 2 bc Abc 3 a nedozvoljena: Real -standardno ime; 3 dan -počinje cifrom; X+y -sadrži nedozvoljen znak + Begin -rezervisanarec; End -rezervisanareč. 1. Utvrdite koja od navedenih imena su dozvoljena, a koja nisu. a) Disk b) 8086 Proccsor c)Rok d)R*d*s e)P 4 f) Program g)$xyz h) 626 -828 2. Objasnite zašto naredna imena nisu dozvoljena: a) 2004 e) case b) Prihod-Rashod f)type c)while d) 1 end g) repeat h)%cash Informatika, Aleksinacka gimnazija

Osnovni simboli jezika Brojevi Za predstavljanje brojeva koristi se dekadni zapis. Brojevi u PASCAL-u

Osnovni simboli jezika Brojevi Za predstavljanje brojeva koristi se dekadni zapis. Brojevi u PASCAL-u mogu biti celi i realni. Znak + se može izostaviti ako je broj pozitivan. Sledeči sintaksni dijagram opisuje broj: Celi brojevi se predstavljaju nizom cifara kojima može prethoditi znak + ili -, na primer: +4, 4, -100, 1987, -1001. Realni brojevi imaju dva oblika zapisa: sa fiksnom i pokretnom decimalnom tačkom. Brojevi sa fiksnom decimalnom tačkom sastoje se iz celog i razlomljenog dela, i decimalne tačke koja ih razdvaja. Na primer, 2. 34, -11. 657, 0. 5, -0. 6. Zapis broja ne sme počinjati i završavati se decimalnom tačkom. Brojevi sa pokretnom decimalnom tačkom se koriste za zapis brojeva sa širokim dijapazonom vrednosti (od vrlo malih do vrlo velikih). Simbol E u zapisu broja izražava decimalni poredak i čita se "pomnožiti sa 10 na". Na primer: Zapis u PASCAL-u. Matematički zapis 2. 36 E 6 2. 36*106 -0. 35 E-4 -035* 10 -4 ili- 0. 000035 123. 45 E-2 123. 45* 10 -2 ili 12345 -2. 9 E 5 -2. 9* 105 i 7 r — 290 000 3. Koji od navedenih brojeva su korektno zapisani u PASCAL-u? a) 33. b). O 33 c)-0. 033 d)33. O e) 4. 7 E-06 f) 9. E-06 g) +7. 1 E 2 h) 15 E 1 4. Objasniti zašto su sledeći brojevi nekorektno zapisani. a) 202. b). 303 c)-3. 4 E 2. 9 d) 15. 25 e)9. E-O 3 f)2. 7 l. „. 5. Kako treba u PASCAL-u zapisati sledeće brojeve? a)4. 4 M 03 b)0. 215*10 -4 c)1. 2 l * IO 10 d)202. 4* 10 -8 Informatika, Aleksinacka gimnazija

Osnovni simboli jezika Stringovi String je niz znakova jezika između apostrofa. Apostrofi ne ulaze

Osnovni simboli jezika Stringovi String je niz znakova jezika između apostrofa. Apostrofi ne ulaze u sastav stringa, već samo ukazuju da svi simboli koji se nalaze između njih predstavljaju jednu celiinu - sthng konstantu. Ako string treba da sadrži znak apostrof, tada se pišu dva apostrofa. Na primer, stringovi su: 'fite 1 'k' '0. 5+3' Nekorektno su zapisani sledeći stringovi: 'Klupa -nema apostrof sa desne strane; Rasa -nema apostrofe ni levo ni desno; '2. 3 E 0'2 -nema apostrof na kraju; Koji od navedenih zapisa predstavlja string? a) ? b)'? c) 'JUGA' d) '123451 e) 'abrakadabra' Informatika, Aleksinacka gimnazija

Struktura Pascal programa zaglavlje programa (počinje rezervisanom reci program iza koje se navodi ime

Struktura Pascal programa zaglavlje programa (počinje rezervisanom reci program iza koje se navodi ime programa) odeljak za definisanje konstanti - moze se izostaviti odeljak za opis promenljivih - moze se izostaviti odeljak naredbi programa (počinje rezervisanom reci begin i završava rezervisanom reci end) ne može se izostaviti;

Struktura Pascal programa • iza odeljka naredbi obavezno navodi tačka kao oznaka kraja programa.

Struktura Pascal programa • iza odeljka naredbi obavezno navodi tačka kao oznaka kraja programa. Zaglavlje programa, ako se navede, od ostatka programa se odvaja tačka -zapelom. Sa dijagrama se vidi da se i naredbe programa međusobno odvajaju tačka-zapetom. Ali. primetićete da se tačka-zapeta ne navodi iza poslednjc naredbe. To se mora poštovati u standardnom PASCAL-u, dok TURBO PASCAL ne zabranjuje tačka-zapetu iza poslednje naredbe programa. U skladu sa prethodnim dijagramom, korektan PASCAL program je: begin writeln('ZDRAVO SVIMA! ! ! ' ) end; Ovaj program sadrži samo odeljak naredbi i na ekranu ispisuje poruku: ZDRAVOSVIMA!!!. Radi pojašnjavanja smisla pojedinih deiova programa, može se koristiti komentar. On se stavlja između vitičastih zagrada i može se naći u bilo kom delu programa. Za ilustraciju, možemo se poslužiti malo složenijim PASCAL programom kojim se realizuje sumiranje:

Struktura Pascal programa program Suma; var prvi, drugi, rezultat: integer; begin write( 'Unesi prvi

Struktura Pascal programa program Suma; var prvi, drugi, rezultat: integer; begin write( 'Unesi prvi broj '); readln(prvi); Write ( 'Unesi drugi broj '); Readln (drugi); rezultat: =prvi+drugi; Writeln ('Rezultat= '. rezultat) end. {"zaglavlje programa*} {* odeljak za opis promenljivih *} {* odeljak naredbi "} {* ispisuje na ekranu dati tekst *} {* unetu vrednost dodeljuje promenljivoj prvi *} {*kraj programa*} Navedeni program prema dijagramu ima: zaglavlje programa, odeljak za opis promenljivih i odeljak naredbi. Šta je promenljival To je objekat jezika koji ima ime i kome se mogu dodeljivati različite vrednosti. Svakoj promenljivoj se dodeljuje registar (ili memorijska lokacija) operativne memorije u kome se Čuva vrednost promenljive. Registar se sastoji iz niza bajtova. Adresa registra je adresa njegovog prvog bajta. Program na maštnskom jeziku u svojim instrukcijama sadrži konkretne memorijske adrese, gde se smeštaju i odakle se uzimaju podaci. Srećom, u programskim jezicima podacima operišemo pomoću simboličkih imena -promenljivih, a translator preuzima zadatak da svakoj promenljivoj dodeli memorijski prostor u kome će biti čuvane njene vrednosti. To znači, promenljiva^V registar operativne memorije kome je dodeljeno ime. Sadrzaj registra (vrednost promenljive) može se menjati u toku izvršavanja programa. Svaka nova vrednost, upisana u registar, "potire" prethodnu vrednost, tako da u svakom vremenskom trenutku promenljiva ima samo jednu, tekuću, vrednost. Treba imati u vidu da ono stoje u matematici netačno, na primer, konstrukcija a: =a+1 (ako znak : = tretiramo kao jednakost), u programiranju ima smisla. Ovo je za programera apsolutno ispravna Informatika, Aleksinacka gimnazija konstrukcija: izračunava sumu vrednosti koja se

Struktura Pascal programa nalazi u registru u kome se čuva promenljiva a i brojne

Struktura Pascal programa nalazi u registru u kome se čuva promenljiva a i brojne konstante 1, i dobijeni rezultat upisuje u isti registar (dodeljen promenljivoj a). Sve vrednosti moraju pripadati nekom od tipova koji su definisani u jeziku. Tipom se zadaje: Ø skup mogućih vrednosti promenljivih; Ø skup operacija koje se mogu izvršiti nad promenljivim tog tipa; Ø način registrovanja promenljivih u računam. Na primer. vrednosti 1 i 3 pripadaju celobrojnom tipu (integer) i nad njima se mogu izvršavati proizvoljne aritmetičke operacije. Vrednosti 'odličan' i 'uspeh' pripadaju tipu string, nad njima se može izvršiti samo operacija konkatenacije (dopisivanja) koja se označava znakom +. Od tipa podatka zavisi kakvo će biti njegovo unutrašnje (mašinsko) predstavljanje i broj bajtova koji će se koristiti za njegovo registrovanje. Iz ovoga možemo zaključiti da svi tipovi podataka imaju ograničen dijapazon vrednosti. Što odstupa od naše matematičke predstave o bekonačnosti skupova celih i realnih brojeva. U programu Suma. odeljkom za opis promenljivih opisuju se tri promenijive: prvi, drugi i rezultat, i precizno definiše tip podataka koji im se mogu dodeliti u toku izvršavanja programa (samo ćeli brojevi - integer). Informatika, Aleksinacka gimnazija

Struktura Pascal programa oblast programskog koda i oblast podataka programa. Pri izvršavanju programa, instrukcije

Struktura Pascal programa oblast programskog koda i oblast podataka programa. Pri izvršavanju programa, instrukcije i podaci se donose u registre procesora. Posle izvršavanja tekuće instrukcije, dobijeni rezultati ili se šalju na čuvanje u operativnu memoriju ili ostaju u registrima, a procesor prelazi na analizu i izvršavanje sledeće instrukcije. Proces se nastavlja dok se ne dođe do instrukcije kraja programa ili prekida izvršavanja zbog neočekivane greške. Ovaj proces je u uprošćenom obliku predstavljen slikom 3. Operativna memorijaulazni podaci. Ulazni uređaj. Procesorpodaci. Oblast podataka programa. Registri (memorija)Kodprograma. Izlazni uređajinstrukcijerezi. Hali. Operativni sistem i drugi sistemski programi. Slika 3. Podaci predviđeni za obradu, nazivaju se ulazni podaci i obično se zadaju (učitavaju) na početku izvršavanja programa. Program u toku izvršavanja može tražiti ucrtavanje podataka koji mu nedostaju. Ulazni podaci se mogu preuzimati od raznih ulaznih uređaja. Uglavnom se zadaju koriscenjem tastature, mada i klik mišem na neko dugme u grafičkom okruženju može obezbeđivati unos podataka. Osim toga, program može učitavati podatke iz fajlova na disku, preuzimati ih od skenera ili drugih ulaznih uređaja. Nezavisno od načina učitavanja, ulazni podaci se obavezno smeštaju u oblast podataka programa u operativnoj memoriji i tu se po pravilu čuvaju dok traje izvršavanje programa (ili dok su potrebni programu). U procesu izvršavanja programa, izlazni podaci se transformišu u rezultate. Rezultati se obično prvo donose u operativnu memoriju, a zatim šalju na neki od perifernih izlaznih uređaja: ekran, štampač, upisuju u fajl na disku, šalju elektronskom poštom itd. U toku izvršavanja programa, u operativnu memoriju se mogu smestiti medurezultati obrade koji tamo ostaju dok god su potrebni. Informatika, Aleksinacka gimnazija

Apstrakcije podataka i prosti tipovi podataka U PASCAL-u se svaka promenljiva karakterise tipom. Pod

Apstrakcije podataka i prosti tipovi podataka U PASCAL-u se svaka promenljiva karakterise tipom. Pod tipom se podrazumeva skup vrednosti koje moze dobiti promenljiva i skup opcracija dozvoljenih nad datom promenljivom. PASCAL je tipiziran jezik. To zna. Ci da se tip promenljivjh definite pri njenom opisu i da se ne moze menjati. Promenljiva moze u£estvovati samo u operacijama dozvoljenim za njen tip. Tipovi podataka u PASCAL-u mogu bili prosti i slozeni (ili strukturirani). Prosti (skalarni ili slandardnj) tipovi podataka: integer (celobrojni), real (realni), boolean (logi. Ski) i char (znakovni), predstavljaju osnovu za gradenje slozenih tipova. Kada se kaze da su to skalarni tipovi, zeli se istaci da se ne mogu razlagati na elementarnije tipove. Informatika, Aleksinacka gimnazija

Apstrakcije podataka i prosti tipovi podataka podaci u programskim jezicima mogu posmatrati na tri

Apstrakcije podataka i prosti tipovi podataka podaci u programskim jezicima mogu posmatrati na tri navedena nivoa: apstraktni nivo - kao misaona koncepcija o dijapazonu vrednosti i fundamentalnim operacijama. Stavlja se akcenat na bitna svojstva i funkcionalnosi, a zanemaruje nacin predstavljanja u racunaru. nivo programskog jezika (simbolicki nivo) - sastoji se u simbolickom predstavljanju tipova podataka u zavisnosti od sintakse i ogranicenja konkretnog prograjnskog jezika; nivo predstavljanja u memoriji racunara (fizicki nivo) – nacin na koji se vrednosti datog tipa Cuvaju u memoriji racunara. Informatika, Aleksinacka gimnazija

Celobrojni tip na apstraktnom nivou je njegova matemati. Cka karakterizacija: to je prost prebrojivi

Celobrojni tip na apstraktnom nivou je njegova matemati. Cka karakterizacija: to je prost prebrojivi uredeni skup brojeva: . . . , -2 , -1, 0, +1, +2, . . . ; obtast vrednosti celobrojnog tipa su nula i sve negativne i pozitivne celobrojne vrednosti; aritmeti. Cke operacije: sabiranje, oduzimanje, mnozenje i celobrojno deljenje. u kojima u. Cestvuju dve vrednosti i kao rezultat dobija se ceo broj; operacije poredenja; Celobrojni tip na simbolickom, ili nivou programskog jezika, je definisan sintaksom koja zadaje njegov simboiic'ki zapis u programskom jeziku (niz cifara dekadnog brojnog sistema ispred koga je znak plus ili minus). Od nacina registrovanja celog broja u memoriji radunara - fizicki nivo - zavisi njegov dijapazon vrednosti. Ako je 16 -bitno registrovanje (2 bajta), najvedi ceo broj se predstavlja binarno na sledeci na£in: 01111 III Hill 111, Dekadna vrednost ovog broja je 215 - 1=32767. Ovu vrednost ima imenovana konstanta programskog jezika PASCAL maxint Informatika, Aleksinacka gimnazija

Celobrojni tip Prema tome, celobrojni tip (integer tip) je podskupa celih brojeva koji se

Celobrojni tip Prema tome, celobrojni tip (integer tip) je podskupa celih brojeva koji se mogu registrovati u konkretnoj verziji programskog jezika. U matematici je skup celih brojeva beskonacan, dok u PASCAL-u celobrojnom tipu pripadaju sledece vrednosti: Informatika, Aleksinacka gimnazija

Celobrojni tip Nad celobrojnim operandima se mogu izvoditi sledece aritmetifke operacije, koje daju celobrojni

Celobrojni tip Nad celobrojnim operandima se mogu izvoditi sledece aritmetifke operacije, koje daju celobrojni rezultat: * - mnozenje, div - celobrojno deljenje, mod - izdvajanje ostatka pri celobrojnom deljenju, + -sabiranje, -oduzimanje. Obratimo paznju na operacije div i mod: a) a div b. Rezultat izvr. Savanja operacije div (od engl. division - deljenje) je ceo deo pri deljenju a sa b. Operacija je definisana za b * 0. Na primer: 15 div 2=7; 2 div 4=0 17 div -5=-3 -17 div 5=-3 -17 div -5=3 b) a mod b. Rezultat operacije mod (od engl. modulus - mera) je ostatak dobijen pri celobrojnom deljenju a sab. Operacija je definisana za b ^ 0. 15 mod 2=1 2 mod 4=2 17 mod -5=2 ■ 17 mod 5=-2 -17» Od -5=-2 Prioritet operacija je slededi: *, div i mod imaju visi prioritet od + i -. Operacije istog prioriteta se izvrsavaju sleva nadesno, na primer: 18 div 2 * 3=27, a ne 3. Informatika, Aleksinacka gimnazija

Celobrojni tip Operacija poredenja primenjena na cele operande daje vrednosti logifkog (boolean) tipa: true

Celobrojni tip Operacija poredenja primenjena na cele operande daje vrednosti logifkog (boolean) tipa: true ("istina") ili false ("lai"). Operacije poredenja su : s - jednako -O-razlifiito; < - manje; > ' - vece; <=- manje ili jednako; >=-vede ili jednako. Na primer, a>b je true za a=9 i b=5, a false za a=2 i b=6. Nad argumentima celobrojnog tipa mogu se prhneniti sledede standardne funkcije, koje daju celobrojni rezultat: abs(x) - apsolutna vrednost od x; sqr(x) - kvadrat od x; succ(x) - sledbenik od x, tj. x+1; pred(x) - prethodnik od x, tj. x-1; -funkcije koje daju realan rezultat: sin(x) - sinus od x; cos(x) -kosinusodx; arctan(x) - arkus tangens od x; Informatika, Aleksinacka gimnazija

Celobrojni tip ln(x) - prirodni logaritam od x; exp(x) - stepen x za osnovu

Celobrojni tip ln(x) - prirodni logaritam od x; exp(x) - stepen x za osnovu e; sqrt(x) - kvadratni koren iz x; i funkcija odd(x) ciji je rezultat logi. Ckog tipa: odd(x) ima vrednost true ako je x -neparno, u protivnom false. Pazite! Operacije nad celim operandima se izvode korektno ako i samo ako su argumenti i medurezultati iz oblasti definisanosti za celobrojni tip podataka. li standardu programskog jezika PASCAL postoji jedinstven celobrojni tip podataka koji se oznacava sa integer. Medutim, savremene realizacije jezika imaju nekoliko celobrojnih tipova koji se razlikuju po intervalu na kom su definisani, i broju bajtova koje zauzimaju: Informatika, Aleksinacka gimnazija

Celobrojni tip Tip byte shortint integer word longint Interval Broj bajtova 0. . 255

Celobrojni tip Tip byte shortint integer word longint Interval Broj bajtova 0. . 255 1 -128. . 127 1 -32768. . 32767 2(4) 0. . 65535 2 -2147483648. . 2147483647 4

Celobrojni tip Na primer, za promenijive promenljivih. sa: var x: byte; y: shortint; z:

Celobrojni tip Na primer, za promenijive promenljivih. sa: var x: byte; y: shortint; z: word; naredbe x: =2000; y: = -200; z: = -2 su nekorektne, jer x ne moze prihvatiti vrednost vec'u od 255, y ne moze biti manje od -128, z mora biti nenegativno. Zadaci za veibu 1. Izracunajte vrednosti sledecih izraza: a) 16 div 3 -16 mod 3 b) 4 mod 2*5+4 d) 4 mod 7 + 7 mod 4 e) 7 mod 2+3 div 3 -2 2. Koja od sledecih tvnlenja su netacna: a) za interval 1. . 260 najpogodniji je tip byte; b)za interval 0. . 75000 najpogodniji je tip word; c) vrednost 32000 pripada tipu integer. c) 4+24 mod (2*3) 03*5 div 2 mod Informatika, Aleksinacka gimnazija

Realni tip Realm tip (real) je podskupa realnih brojeva koji se mogu registrovati u

Realni tip Realm tip (real) je podskupa realnih brojeva koji se mogu registrovati u konkretnoj verziji programskog jezika. Nad realnim operandima se mogu izvoditi sledede operacije koje daju realan rezultat: * - za mnozenje; / -zadeljenje; + - za sabiranje; -zaodu/. imanje. Dozvoljeno je da jedan operand u ovim operacijama bude ceobroj. Izraz, sastavljen od celobrojnih i realnih promenljivih, daje realnu vrednost. Realnoj promenljivoj se mogu dodeliti vrednosti izraza koje su celobrojne, ali celobrojnoj promenljivoj nije dozvoljeno dodeliti vrednosti koje su realne. Pazite! Treba imati na umu da se realni brojevi ne registruju apsolutno ta£no, tako da izvodenje operacija nad pribliznim vrednostima moie dati neo. Cekivane rezultate. Na primer, za realne x i y matematic'ki tacan izraz: (x/y)*y=x ne mora biti tafian u rafunarskoj aritmetici. Na primer, pri izracunavanju (l/3)*3 vrednost 1/3=0. 3333333. . se registruje na konucnom broju decimala. Ako je registrovanje na 8 decimala, dobija se: 0. 3333, sto mnozenjem sa 3 daje 0. 9999, a ne I (§to je matemati£ka vrednost datog izraza).

Realni tip Nad realnim argumentima se mogu primeniti funkcije koje daju reafne vrednosti: abs(x),

Realni tip Nad realnim argumentima se mogu primeniti funkcije koje daju reafne vrednosti: abs(x), sqr(x), sin(x), cos(x), arctan(x), ln(x), exp(x), sqrt(x). Nad tim argumentima se mogu primeniti funkcije trunc(x) (od truncation) i round(x) (od rounding), koje daju celobrojne rezultate. Funkcija trunc(x) izdvaja ceo deo real nog argumenta x. Na primer, trunc(4. 1)daje 4, trunc(-4. 1)daje-4. Funkcija round(x) zaokruzuje argument x do najblizeg celog broja. Ova funkcija se moze definisati preko funkcije trunc(x): trunc(x + 0. 5), x > 0 rouna(x) = < [trunc(x -0. 5), j< 0 Na primer, round(5. 6)daje 6, round(5. 2)daje 5, round(-7. 6)daje-8, round(8. 5)daje 9, round(-8. 5)daje-9. Funkcija frac(x) vraca razlomljeni deo od x. Argument i rezultat su tipa real. Na primer, frac(3. 75) daje 0. 75.

Realni tip . Izracunajte vrednosti sledecih funkcija: b) -b-yb 2 — 4 ac 2

Realni tip . Izracunajte vrednosti sledecih funkcija: b) -b-yb 2 — 4 ac 2 a a) sqrt(25); d) trunc(101. 1); g) ab 8(-i 2); b) round(2 O. 8); e) trunc{-20. 8) h) succ(-2) c) round(-4. 9); f) sqr(4); i) trunc(6. 6)-round(6. 6); 5. Izracunajte vrednosti slededih aritmetic'kih izraza: a) 1+sqr(4)-io+trunc(4. 7 - 2. 2); b) 5*sqrt(9 mod 7*10 div 5); c) 3+2*6 div 3*round(1. 362)-3*4; d)( trune(12. 5} -round(4. 6))*2; Na kolikodecimala izraz: round(x*100)/!00 zaokruzuje rea. Jan broj x? Pored konstanti napi. Site njihov tip: a) -12. 35_ b) 920_ C) 1. 42 E-2.

Realni tip Tip Interval 11 -12 Single 1. 5 E-45. . 3. 4 E

Realni tip Tip Interval 11 -12 Single 1. 5 E-45. . 3. 4 E 38 7 -8 Double 5. 0 E-324. . 1. 7 E 308 15 -16 Extended 3. 4 E-4932. . 1. 1 E 4932 19 -20 Comp -2 E+63+1. . 2 E 63 -1 19 -20 Real 2. 9 E-39. . 1. 7 E 38 Znacajne cifre Broj bajtova 6 4 8 10 8

Logicki tip (boolean) definite podatke koji mogu imati vrednosti logi. Ckih konstanti true ili

Logicki tip (boolean) definite podatke koji mogu imati vrednosti logi. Ckih konstanti true ili false. Nad operandima logi. Ckog tipa mogu se primeniti logic'ke operacije: not - negacija, and konjunkcija, or - disjunkcija. Ako su p i q logicke promenljive, vrednosti izraza not p, p and q, p or q su definisane na sledeci nacin: P q not p p and q p or q false false true true false true

Logicki tip Operacija not ima vi§i prioritet od and, a and vi§i od or.

Logicki tip Operacija not ima vi§i prioritet od and, a and vi§i od or. Prema tome, p or q and r je isto §to i p or (q and r). Za logic"ki tip u PASCAL-u val'i: false<true, 5 to omoguc'ava da se nad logi. Ckim operandima izvode sve operacije porcdenja. Po. Sto su konstante logickog tipa uredene, to im se pridruzuju redni brojevi, i to: false je pridruzena 0, a true je pridruzena 1. To su i vrednosti koje se dobijaju primenom funkcije ord. Operacije poredenja imaju nizi prioritet u odnosu na prethodne operacije, tako da je p<=q and r isto 5 to i p<=(q and r). Rezuliat izvodenja operacija poredenja nad celobrojnim i realnim tipom je vrednost logifikog tipa. Na primer, 9<3 je false, a 33. 33 o 22. 2 je true. Pomenuto je da slandardna funkcija odd(x) daje vrednosti Iogi£kog tipa. U TURBO PASCAL-u je definisana i operacija ekskluzivne disjunkcije xor. Rezultat p xor q je true ako se p i q razlikuju. Vrednosti logickog tipa zauzimaju jedan bajt. Zadaci za vezbu 8. 0 drediti logicku vrednost izraza: a) false>true b) ord(true)=1 c) odd(rouncl<i. O"p)) za p=0. 599 9. 0 drediti logicku vrednost izraza: a) 61>91; b) (3>2) and (5>6); c) (60>70) or (100 O 0); d) not (3 O>1 O); e) 5 mod 2 =0; f) (2>1) and (2<3). 10. Napisati izraze u PASCAL-u koji su ta. Cni ako su ispunjeni sledeci uslovi i netatni u protivnom: obe logifike promenljive p i q imaju vrednost true; l<x<5; sve tri numeridke vrednosti a, b i c su pozitivne. d)x=min(x, y, z);

Logicki tip Znakovni tip (char) definise uredeni skup osnovnih znakova PASCAL jezika dozvoljenih u

Logicki tip Znakovni tip (char) definise uredeni skup osnovnih znakova PASCAL jezika dozvoljenih u konkretnoj verziji programskog jezika. Znakovnom tipu pripada praznina, iako nema graficku interpretaciju. Vrednost znakovne promenljive ili 44 Racunarstvo i inform atika konstante je znak iz osnovnog skupa znakova, pri Cemu se znakovna konstanta mora navesti izmedu apostrofa. Na primer. 'd 'y 7 V='9 Znakovna konstanta koja sadrzi apostrof moru imali dva apostrofa, npr. "". Za promenljive i konstante znakovnog tipa. defmisane su funkcije koje znak povezuju sa rednim brojem u uredenom skupu znakova: ord(c) jc redni broj (kod) znaka c u skupu znakova ( c - je proizvoljan znak iz skupa znakova ili znakovna promenljiva). Na primer, ASCII kodovi za 'A 'B 'C i 'D 1 su: ord(l. A')=65, ord('B')=66, ord(/C)=67, ord('D>68. chr(i) je znak ciji je redni broj (kod) i, pod uslovom da postoji. To znaci da je: chr(65)='A'. chr(66)="B chr(67)='C chr(68)='D'. U TURBO PASCAL-u postoji funkcija ekvivalentna navedenoj koja se oznafava sa ft. Npr. #66='B #67='C U ASCII - tabeli kodovi slova formiraju neprekidan niz. U implementaciji sa ASCU-kodom, redni brojevi cifara su: ord('0')=48, ordf. TM^orc. K^SO ord('9')=57.

Logicki tip Funkcije ord i chr su invcrznc, tj. chr(ord(c))=c, a ord(chr(i))=i. Po. Sto

Logicki tip Funkcije ord i chr su invcrznc, tj. chr(ord(c))=c, a ord(chr(i))=i. Po. Sto je skup osnovnih znakova i njihovih rednih brojeva ureden, to se nad znakovnim tipom moze primeniti operacija poredenja. Ako je R oznaka za bilo koju operaciju poredenja: =, o, <, >, <=, >=, to kazemo da je Ct R C 2 ako i samo ako jc ORD(Ci) R ORD(C 2). Na primer, V<V je true, jer je ord('X')<ord('Z'), a '3'='5' je false, zbog toga Sto ord('3')=ord(*5') daje false. Nad argumentima znakovnog tipa mogu sc primeniti i funkcije pred i succ kojedaju prethodni i sledeci znak. Na primer, pred('d')=V, a succ('x')=*y'. Za registrovanje u memoriji vrednosti promenljivih tipa char, koristi se jedan bajt. Sledeci odeljak za opis promenljivih: var ch, Letter, Symbol: char; opisuje tri promenljive char lipa. Zadaci za vezbu 11. Odrediti vrednost sledecih izraza: a) ord{'C) - ord('A'); b) A'<'B'; c) chr(ord{'B')+1). 12. Da li su tac"ni sledeci izrazi: a) pred(c)=chr(ord(c) -1); b) succ(c)=chr(ord(c) + 1).

Tip string Za rad sa nizovima simbola u TURBO PASCAL-u koristi se tip string.

Tip string Za rad sa nizovima simbola u TURBO PASCAL-u koristi se tip string. Niz simbola, izmedu apostrofa. predstavlja string konstantu i pripada tipu string. Pri deklarisanju promentjivih ovog tipa (opis promenljivih demo upoznati u sledecoj glavi) koristi se rezervisana rec string za kojom se u kvadratnim zagradama navodi maksimalna duzina stringa. Ako se, na primer, upotrebi deklaracija string|80], tada je duzina stringa u granicama od 0 do 80 znakova. Ako se izostave kvadratne zugrade sa specifikacijom duzine stringa, tj. navede samo string, tada duzina stringa moze biti od 0 do 255. Na primer, string konstante su: 'string' 'i ovo je string' 'abrakadabra' Prazan string se pise sadvaapostrofabez simbola izmedu apostrofa: ".

Tip string Primer 1. Ako je data deklaracija: var s: string; i dodela: S:

Tip string Primer 1. Ako je data deklaracija: var s: string; i dodela: S: ='ZDRAVO'; pojedinim simbolima stringa moze se pristupiti koriscenjem imena string promenljive i indeksa (rednog broja) simbola u stringu. Tako je s|l|='Z', s|2|='D'. itd. Pri radu sa stringovima mogu se koristiti sledece futikcije: • length(st) - izratiunava broj simbola stringa st. Na primer, lengthf '123456789') daje vrednost 9. • copy(st, poz, n) - izdvaja iz stringa st podstring duzine n simbola, poc"ev od pozicije poz. Na primer, naredbe: s 1 : = 'Turbo Pascal"; *J s 2: =copy(s 1, 1, 5); s 3: =copy(s 1, 7, 3); dodeljuju: s 2 ='Turbo'; s 3='Pas'; • concat(str 1, str 2, . . . , strn) - nadovezuje stringove u poretku u kom su dati u spisku parametara. Na primer: s: =concat( 'AA', B 8' , C'); dodeljuje s='AABBC'; Funkcija concat izvr. Sava iste akcije kao i operacija konkatenacije stringova: +. Na primer, prethodnadodela moze serealizovati i sa: s: = 'AA' + "BB' + 'C'; • pos(str 1, str 2) - odrcduje poziciju prvog pojavljivanja stringa str 1 u stringu str 2. Ako u str 2 ne postoji string stri rezultal je 0. Na primer, naredbe; S 1 ni n 2 = 'Turbo Pascal'; =pos( Pascal', si); =pos('pascal', s 1);

Tip string dodeljuju: rn =7; n 2=0(jersu Pascal i pascal ra/li. Citi stringovi). Uklanjanje

Tip string dodeljuju: rn =7; n 2=0(jersu Pascal i pascal ra/li. Citi stringovi). Uklanjanje dela stringa i umetanje u string realizuju sledece procedure: • delete(st, poz, n) - uklanja n simbola stringa st. po£ev od pozicije poz. Ako je vrednost poz vece od broja simbola stringa nema uklanjanja. Na primer: st: =' reka Sava' , ■ delete (st, 1, 5); daje kao rezultat st=' Sava'; ' insert(str 1, str 2, poz) - umece string str 1 u string str 2, podev od pozicije poz. Na primer: 46 Ra&inarstvo i informatika si : = 'Ja pisem program' ; s 2: ='Pascal '; insert(s 2, s 1, 10); dajekao rezultat: si = 'Ja pisem Pascal program'. Nad podacima tipa string, definisano je poredenje koje daje rezultate logi. Ckog tipa. Rezultat poredenje zavisi od poretka prvog para znakova koji nije u relaciji jednako. Na primer, vazi: 'ABCD'<'ABCE', jer je prvi par znakova (D i E) koji nije u relaciji jednako u relaciji manje. Znakovi se porede pomocu vrednosti svojih kodova. Poredenja mogu dati i neo. Cekivane rezultate. Na primer, iako za numeri. Cke podatke vazi: 3 OO>32, za stringove vazi: '3 OOV 32', jer za prvi par znakova koji se razlikuje vazi: 'O'-c. T. Zadaci za vezbu 13. Ako je dat opis string promenljive: var s: stringl 2]; da li su korektne dodele: a)s: ='ANA'; b)s: ='DA'; c)s: ='Y'. d)s: = '"; 14. Za opis iz prethodnog zadatka i dodelu: s: ='ANA'; sta je vrednost logidkih izraza: a) s[il=s[2]j b) s(1]=s[3]; c> s(1]>s[2].

Prioriteti operacija Prioritet operacija definite redosled izvr. Savanja operacija u izrazu. Prioritet operacija je

Prioriteti operacija Prioritet operacija definite redosled izvr. Savanja operacija u izrazu. Prioritet operacija je dat sledecom tabelom: Operacija-♦ not Nivo prioritet a Hrvi (najviii)Tip operacije. Uuurna operacija*J, div, mod, and. Drugi. Muttiplikativna operacija+, - , or, xor. Tredi. Aditivna operacija-t o, <, >, <=^=Cetvrti. Operacija poredenja. Pri odredivanju prioriteta, po. Stuju se slede(5 a Cetiri osnovna pravila: Operand koji se nalazi izmedu dve operacije razlicitog prioriteta. povezuje se sa operacijom vi&eg prioriteta. Operand koji se naluzi izmedu dve operacije istog prioriteta, povezuje se sa operacijom koja mu je sa leve strane. lzraz, tzme<tu zagrada, se izrafiunava kao poseban operand. Operacije istog prioriteta se izvr. Savaju sleva nadesno uz mogue'e regulisanje prioriteta kori. Sdenjem zagrada.

Programiranje 68 Razrada logike (konstrukcija algoritma) Pisanje izvornog oblika (implementacija algoritma u programski jezik)

Programiranje 68 Razrada logike (konstrukcija algoritma) Pisanje izvornog oblika (implementacija algoritma u programski jezik) Ispravljanje grešaka (debugging) Izrada dokumentacije za primjenu Odjel za matematiku

Algoritam 69 Algoritam – opis postupka koji nakon konačnog broja koraka dovodi do rezultata

Algoritam 69 Algoritam – opis postupka koji nakon konačnog broja koraka dovodi do rezultata Primjer 1: “Popij mlijeko” 1. Otvori hladnjak. 2. Provjeri ima li mlijeka. 3. Ako ima, natoči u čašu i popij inače, odi u trgovinu i kupi. 5. Ponovi korake 2. , 3. sve dok nisi zadovoljan količinom popijenog mlijeka. 6. Spremi mlijeko u hladnjak Odjel za matematiku Primjer 2: “Babilonsko računanje ”

Prikaz algoritma 70 Dijagram toka Strukturni dijagram tipova naredbi - sekvencija Učitati - selekcija

Prikaz algoritma 70 Dijagram toka Strukturni dijagram tipova naredbi - sekvencija Učitati - selekcija uvjet Računati Da Ako je Ne Odjel za matematiku - iteracija uvjet

Prikaz algoritma 71 Pseudo-code Rečenice pisane u govornom jeziku ali u obliku “naredbi” tako

Prikaz algoritma 71 Pseudo-code Rečenice pisane u govornom jeziku ali u obliku “naredbi” tako da su “slične” naredbama u programskom jeziku Zadati (učitati) podatak n Ako je n>=0 onda Za svaki i=1 do n postavi n=n * i Ispisati rezultat n U suprotnom Ispisati poruku o pogreški Kraj selekcije Odjel za matematiku Sekvencija Selekcija Iteracija

Elementi proceduralnog jezika 72 riječi znakovi Imena, podaci, operatori, ključne riječi alfanumerički, posebni Elementi

Elementi proceduralnog jezika 72 riječi znakovi Imena, podaci, operatori, ključne riječi alfanumerički, posebni Elementi vanjske programske strukture funkcije i procedure blokovi rečenice komentari, naredbe Odjel za matematiku tekst naredbe deklarativne, izvršne

Tipovi podataka 73 Tipovi podataka ugrađeni tipovi osnovni tipovi cjelobrojni tip boolean tip znakovni

Tipovi podataka 73 Tipovi podataka ugrađeni tipovi osnovni tipovi cjelobrojni tip boolean tip znakovni tip izvedeni tipovi prazan tip realni tip cjelobrojni tip user-defined tipovi reference Pokazivači strukturirani tip pobrojani tip Nizovi unije strukture klase float double bool char short int long double unsigned char unsigned short int signed char signed short int wchar_t int long int Odjel za matematiku tipovi podataka u C++

1. 1. naredbe sekvencije 74 NAREDBE PRIDRUŽIVANJA ULAZNO-IZLAZNE FUNKCIJE Potrebno predznanje: Øtipovi podataka Øformatiranje

1. 1. naredbe sekvencije 74 NAREDBE PRIDRUŽIVANJA ULAZNO-IZLAZNE FUNKCIJE Potrebno predznanje: Øtipovi podataka Øformatiranje upisa/ispisa Øoperatori Odjel za matematiku

Naredbe pridruživanja 75 varijabla operator izraz ; izraz: konstante, varijable, (poziv) funkcije, operatori Primjer:

Naredbe pridruživanja 75 varijabla operator izraz ; izraz: konstante, varijable, (poziv) funkcije, operatori Primjer: y=2*a*sin(x+3. 5); Operatori: -pridruživanja: = *= /= += -= &= |= ^= -aritmetički: + - * / % ++ -- za razdvajanje/grupiranje: . -> ( ) [ ] : : - relacijski: < > == != <= >= ( ? : ) - logički: ! || && - adresni: * & - bit-logički: ~ | & ^ Odjel za matematiku

Upis i ispis na konzolu 76 Neke od funkcija za unos i ispis podataka

Upis i ispis na konzolu 76 Neke od funkcija za unos i ispis podataka (sadržani u stdio. h i conio. h datotekama) koje ćemo koristiti učitavanje podataka scanf(“%format”, &var) fscanf(dat, ”%format”, &var) getch() gets() upisivanje podataka printf(“%format”, broj) fprintf(dat, ”%format”, broj) putch(); puts() %format – predstavlja oblik podatka koje Format: unosimo odnosno ispisujemo. &var – predstavlja adresno mjesto varijable u kojoj spremamo podatak Odjel za matematiku d ld f c s cijeli broj(integer) dugi cijeli broj(long) realni broj (float) znak niz znakova

“Hello, World” 77 Primjer 1. 1 A: “Hello, World” u C-u # include <stdio.

“Hello, World” 77 Primjer 1. 1 A: “Hello, World” u C-u # include <stdio. h> /*predprocesorska naredba*/ int main() /* funkcija main()*/ { printf(“Hello, World!”); /*izvršna naredba*/ } predprocesorska naredba koja u izvršenje našega programa uključuje datoteku za rad s konzolom. funkcija main – sve naredbe sadržane u ovoj funkciji se izvršavaju printf(“%s”, %var) – ispis u konzolu vrijednost varijable var Odjel za matematiku

“Hello, World” 78 Primjer 1. 1 B: “Hello, World” u C++-u #include <iostream> /*predprocesorska

“Hello, World” 78 Primjer 1. 1 B: “Hello, World” u C++-u #include <iostream> /*predprocesorska naredba*/ using namespace std; int main() /* funkcija main()*/ { cout << “Hello, world!” <<endl; } predprocesorska naredba koja u izvršenje našega programa uključuje datoteku za rad s konzolom: iostream. h funkcija main – sve naredbe sadržane u ovoj funkciji se izvršavaju. cout – objekt koji nam pomaže da ispisujemo tekst na konzolu Odjel za matematiku

“Dobrodosli, %s u. . . ” 79 Primjer 1. 2 A: “Moje ime ”

“Dobrodosli, %s u. . . ” 79 Primjer 1. 2 A: “Moje ime ” u C-u #include <cstdlib> #include<stdio. h> int main() { char ime[20]; printf("Upišite svoje ime: "); scanf("%s", &ime); printf("Dobrodosli, %s u svijet programiranjan ", ime); system("PAUSE"); /*(ako konzola nema pauzu)*/ } “%s” – format ispisa u konzolu Odjel za matematiku

Zadaci 80 Primjer 1. 3 A: “Moj. Kalkulator” u C-u #include<cstdlib> #include<stdio. h> int

Zadaci 80 Primjer 1. 3 A: “Moj. Kalkulator” u C-u #include<cstdlib> #include<stdio. h> int main(){ float a, b; printf("--------Moj. Kalkulator----------n"); printf("Upišite I. broj: "); scanf("%f", &a); printf("Upišite II. broj: "); scanf("%f", &b); printf("n Zbroj ta 2 broja je %3. 2 f", a+b); /**/ Razlika ta 2 broja je %3. 2 f", a-b); Umnozak ta 2 broja je %3. 2 f", a*b); Kvocijent ta 2 broja je %3. 2 f n", a/b); system("PAUSE"); } Odjel za matematiku

Zadaci 81 Primjer 1. 4 A: “Moj. Znan. Kalkulator” u C-u Napravi C/C++ program

Zadaci 81 Primjer 1. 4 A: “Moj. Znan. Kalkulator” u C-u Napravi C/C++ program koji će za dani poz. broj dati ispis: a)njegovog korijena b)apsolutne vrijednosti c)vrijednost logaritma d)vrijednost trigonometrijskih funkcija Primjer 5 A: u C-u Napravi C/C++ program koji za dane 3 stranice trokuta računati površinu trokuta. Odjel za matematiku

1. 2. naredbe selekcije 82 IF. . . ELSE. . . SWITCH Potrebno predznanje:

1. 2. naredbe selekcije 82 IF. . . ELSE. . . SWITCH Potrebno predznanje: Øoperatori Odjel za matematiku

If. . . else. . . 83 Naredba koje nam omogućuje ovisno o vrijednosti

If. . . else. . . 83 Naredba koje nam omogućuje ovisno o vrijednosti varijable odrediti tok programa. if (uvjet) blok 1; else blok 2; uvjet: Jednostavni uvjet izraz 1 relacijski operator izraz 2 npr. x +5 != exp(z) Složeni uvjet 1 logički operator uvjet 2 npr. b==0 && (a+x)/2 > t ternarni operator: varijabla=(logički izraz) ? izraz 1: izraz 2; Odjel za matematiku U C/C++ sintaksi: if (uvjet){ naredba 1; naredba 2; . . . } else { naredba 1’ naredba 2’. . . }

Switch 84 U slučaju više mogućnosti nad nekom varijablom koristimo ključnu riječ switch (varijabla){

Switch 84 U slučaju više mogućnosti nad nekom varijablom koristimo ključnu riječ switch (varijabla){ case vrijednost 1: naredba 1. 1; naredba 1. 2; case vrijednost 2: naredba 2. 1; naredba 2. 2; . . . } Odjel za matematiku U C/C++ sintaksi: switch (varijabla){ case vrijednost 1: naredba 1; naredba 2; . . . } case vrijednost 2: naredba 1’ naredba 2’. . . }

“if. . . else. . . ” 85 Primjer 2. 1 A: “Parnost” u

“if. . . else. . . ” 85 Primjer 2. 1 A: “Parnost” u C-u #include<cstdlib> #include<stdio. h> int main(){ int n; printf("Upišite prirodni broj: "); scanf("%d", &n); if (n%2==0){ printf("Broj %d je paran", n); } else{ printf("Broj %d nije paran", n); } system("PAUSE"); } Odjel za matematiku

“if. . . else. . . ” 86 Primjer 2. 2 A: “najveci” u

“if. . . else. . . ” 86 Primjer 2. 2 A: “najveci” u C-u Napišite C program koji će za unesene brojeve a, b, c ispisati najveći broj oda ta 3 broja. Primjer 2. 3 A: “Kvadratna jednadžba” u C-u Za kvadratnu jednadžbu oblika napisati C program koji će naći sva rješenja. Odjel za matematiku

“if. . . else. . . ” 87 Primjer 2. 4 A: “Ispit 2”

“if. . . else. . . ” 87 Primjer 2. 4 A: “Ispit 2” u C-u Napiši C/C++ program koji će za unesenu ocjenu ispisati raspon bodova u kojoj je student mogao ostvariti bodove. a)za nedovoljan: od 0 -50 bodova b)za dovoljan: od 51 -60 bodova c)za dobar: od 61 -75 bodova d)za vrlodobar: od 75 -90 bodova e)za odličan: od 91 -100 bodova Primjer 2. 5 A: “Apsolutna vrijednost” u C-u Napiši program koji će za uneseni broj ispisivati njegovu apsolutnu vrijednost. Odjel za matematiku

“if. . . else. . . ” 88 Primjer 2. 2 A: “Ispit 1”

“if. . . else. . . ” 88 Primjer 2. 2 A: “Ispit 1” u C-u Napišite C program koji će za za unos imati broj bodova između 1 -100, a izlaz ocjena tako da vrijedi: a)za nedovoljan: od 0 -50 bodova b)za dovoljan: od 51 -60 bodova c)za dobar: od 61 -75 bodova d)za vrlodobar: od 75 -90 bodova e)za odličan: od 91 -100 bodova Primjer 2. 2 A: “Dan_u_Tjednu” u C-u Napišite C program koji će za uneseni datum u mjesecu (3. mjesec, 2009) ispisati koji je to dan u tjednu bio. Npr. 05. 02. ispis: nepoznat unos 05. 03. ispis: četvrtak Odjel za matematiku

1. 3. naredbe iteracije 89 WHILE DO. . . WHILE FOR Potrebno predznanje: Øoperatori

1. 3. naredbe iteracije 89 WHILE DO. . . WHILE FOR Potrebno predznanje: Øoperatori Odjel za matematiku

For petlja 90 for (početne vrijednosti; krajnji uvjet; iterativne radnje) blok (ili naredba) Početne

For petlja 90 for (početne vrijednosti; krajnji uvjet; iterativne radnje) blok (ili naredba) Početne vrijednosti: popis naredbi pridruživanja npr. i=0, sortiran=1; Krajnji uvjet: uvjet - itraracija(petlja) se ponavlja sve dok je ovaj uvjet ispunjen npr. i<=n-1; Odjel za matematiku U C/C++ sintaksi: for(i=1; i<=n; i++){ naredba 1; naredba 2; . . . }

For petlja 91 Primjer 3. 1 A: “Zbroj prvih n brojeva” u C-u #include<cstdlib>

For petlja 91 Primjer 3. 1 A: “Zbroj prvih n brojeva” u C-u #include<cstdlib> #include<stdio. h> int main(){ int n, sum=0; printf("Upišite prirodni broj: "); scanf("%d", &n); for(i=1; i<=n; i++){ sum+=i; } system("PAUSE"); } Odjel za matematiku

For petlja 92 Zadatak 3. 2 A: “n kvadrata” u C/C++-u Napiši program koji

For petlja 92 Zadatak 3. 2 A: “n kvadrata” u C/C++-u Napiši program koji će za uneseni prirodni broj n ispisati sumu prvih n kvadrata. Zadatak 3. 3 A: “Trokut” u C/C++-u Za uneseni prirodni broj n ispisi u konzolu trokut oblika * **. . . ***** Odjel za matematiku

For petlja 93 Zadatak 3. 4 A: “Pokušaj” u C/C++-u Napišite program koji će

For petlja 93 Zadatak 3. 4 A: “Pokušaj” u C/C++-u Napišite program koji će za zamišljeni broj omogućiti 3 pokušaja pogađanja i ispisati rezultat pogađanja. Zadatak 3. 5 A: “Tablica množenja” u C/C++-u Za uneseni prirodni broj n program ispisuje tablicu množenja. Odjel za matematiku

While 94 while (uvjet) blok Uvjet se ispituje prije izvođenja prve naredbe u bloku.

While 94 while (uvjet) blok Uvjet se ispituje prije izvođenja prve naredbe u bloku. Ako je uvjet ispunjen, blok se izvodi i nakon toga ponavlja se ispitivanje uvjeta do blok while (uvjet) Uvjet se ispituje nakon izvođenja zadnje naredbe u bloku. Ako je uvjet ispunjen, blok se izvodi ponovo. Naredba break uzrokuje skok iz petlje. Odjel za matematiku U C/C++ sintaksi: while (uvjet){ naredba 1; naredba 2; . . . } do { naredba 1’ naredba 2’. . . } while (uvjet)

While 95 Primjer 3. 6 A: “Zbroj s konzole” u C/C++-u #include<cstdlib> #include<stdio. h>

While 95 Primjer 3. 6 A: “Zbroj s konzole” u C/C++-u #include<cstdlib> #include<stdio. h> int main(){ float x; float sum=0. 0; while(cin>>x) sum +=x; scanf("%d", &n); cout<<“Zbroj je ”<<sum<<endl; } Odjel za matematiku

While 96 Zadatak 3. 8 A: “GCD” u C/C++-u Napišite program koji će računati

While 96 Zadatak 3. 8 A: “GCD” u C/C++-u Napišite program koji će računati najmanji zajednički dijelitelj 2 broja. Zadatak 3. 9 A: “Prost” u C/C++-u Napiši program koji će za uneseni prosti broj n ispisati da li je taj broj prost ili složen. Zadatak 3. 10 A: “Fibonacci” u C/C++-u Napiši program koji će za uneseni prirodni broj dati niz Fibonaccijevih brojeva. Odjel za matematiku

While 97 Numerički problem 1: Primjenom iterativnih metoda aproksimirajte exp(x) funkciju // Program koji

While 97 Numerički problem 1: Primjenom iterativnih metoda aproksimirajte exp(x) funkciju // Program koji aproksimira eksponencijalnu funkciju e^x /* Program koristi niz sukcesivnih aproksimacija oblika E_n=1+x+x^2/2!+. . . +x^n/n! koji se zaustavlja nakon zadovoljenja uvjeta |x^n|(n!<=eps */ #include<iostream> using namespace std; #include<math. h> #include<cstdlib> #include<iomanip> int main(){ float x, eps, E=1. 0, slijedeci=1. 0, n=1. 0; cout<<"x="; cin>>x; cout<<"eps="; cin>>eps; cout<<"Program aproksimira za dani x="<<x<<" funkciju exp(x) uz uvjet pogreske eps"<<endl; while(fabs(slijedeci)>eps){ slijedeci=(x*slijedeci)/n; E+=slijedeci; cout<<"E= "<<E<<setw(5)<<" n="<<n<<endl; n++; } system("PAUSE"); } Odjel za matematiku

2. Funkcije 98 FUNKCIJE I PROCEDURE Potrebno predznanje: ØOperatori ØNaredbe iteracije i selekcije Odjel

2. Funkcije 98 FUNKCIJE I PROCEDURE Potrebno predznanje: ØOperatori ØNaredbe iteracije i selekcije Odjel za matematiku

Funkcije 99 Funkcije su potprogrami koji se izvršavaju prilikom poziva unutra neke druge funkcije.

Funkcije 99 Funkcije su potprogrami koji se izvršavaju prilikom poziva unutra neke druge funkcije. Funkcije koje ne vraćaju vrijednost zovemo procedure (funkcije praznog tipa). Funkcija se deklarira prije poziva po tipu, imenu i listom parametara. Proslijeđivanje parametra može biti po vrijednosti ili po referenci. Modularizacija programa Odjel za matematiku U C/C++ sintaksi: int func(formalni parametri){ naredba 1; naredba 2; . . . return vrijednost; } void swap(int& x, int& y){ //procedura float t=x; x=y; y=t; }

Funkcije 100 Primjer 2. 1: “Power funkcija” u C/C++-u #include<cstdlib> #include<stdio. h> double power(double

Funkcije 100 Primjer 2. 1: “Power funkcija” u C/C++-u #include<cstdlib> #include<stdio. h> double power(double y, int n){ double x=1. 0; for (int i=0; i<n; i++) y*=x; for (int i=0; i>n; i--) y/=n; return y; } int main(){ cout << power(7. 4, 3)<<endl; cout<<power(7. 4, -3)<<endl; } Odjel za matematiku

Funkcije 101 Primjer 2. 2: “Faktoriel” u C/C++-u #include<iostream> using namespace std; #include<cstdlib> #include<iomanip>

Funkcije 101 Primjer 2. 2: “Faktoriel” u C/C++-u #include<iostream> using namespace std; #include<cstdlib> #include<iomanip> int factorial(int n){ int f=1; assert(n>=2); if (n<2) return 1; while(n>1) f*=n--; return f; } int main(){ cout<<factorial(5)<<endl; system("PAUSE"); } Odjel za matematiku

Funkcije 102 Primjer 2. 3: “Is_Prime” u C/C++-u Napravite funkciju koja će za uneseni

Funkcije 102 Primjer 2. 3: “Is_Prime” u C/C++-u Napravite funkciju koja će za uneseni prirodni broj provjeravati da li je broj prost ili nije. Primjer 2. 4: “F(x)” u C/C++-u Napravite funkciju F(x) koja će za unesenih n vrijednosti ispisati tablicu vrijednosti, ako je tablica zadana u algebarskom obliku: Odjel za matematiku

Funkcije 103 Primjer 2. 3: “ekstremi polinoma 3. stupnja” u C/C++-u Odjel za matematiku

Funkcije 103 Primjer 2. 3: “ekstremi polinoma 3. stupnja” u C/C++-u Odjel za matematiku

Proslijeđivanje argumenata u funkciju 104 Proslijeđivanje parametara funkciji preko vrijednosti. Sadržaj proslijeđenih varijabli se

Proslijeđivanje argumenata u funkciju 104 Proslijeđivanje parametara funkciji preko vrijednosti. Sadržaj proslijeđenih varijabli se kopira u sadržaj formalnih varijabli. int addition(int a, int b){ return a+b; } int x=5, y=3, z; z = addition ( x , y ); Odjel za matematiku

Proslijeđivanje argumenata u funkciju 105 Proslijeđivanje parametara funkciji preko referenci. U funkciju se proslijeđuju

Proslijeđivanje argumenata u funkciju 105 Proslijeđivanje parametara funkciji preko referenci. U funkciju se proslijeđuju adrese varijabli, pa u funkciji možemo mijenjati proslijeđenu varijablu. void swap(int& x, int& y) { temp=x; x=y; y=temp; } a=2; b=3; swap(a, b); Odjel za matematiku

106 Birano poglavlje: Numerička intergracija Pravilo pravokutnika Pravilo srednje točke Trapezidno pravio Simpsonovo pravilo

106 Birano poglavlje: Numerička intergracija Pravilo pravokutnika Pravilo srednje točke Trapezidno pravio Simpsonovo pravilo Odjel za matematiku

107 Birano poglavlje: Numerička intergracija Pravilo pravokutnika Pravilo srednje točke Trapezidno pravio Simpsonovo pravilo

107 Birano poglavlje: Numerička intergracija Pravilo pravokutnika Pravilo srednje točke Trapezidno pravio Simpsonovo pravilo Odjel za matematiku

108 Birano poglavlje: Numerička intergracija Pravilo pravokutnika Pravilo srednje točke Trapezidno pravio Zadatak BP

108 Birano poglavlje: Numerička intergracija Pravilo pravokutnika Pravilo srednje točke Trapezidno pravio Zadatak BP 1: Pravilom pravokutnika nađite vrijednost integrala I usporedite dobiveni rezulat s rezultatom direktnog nalaženja integrala. Simpsonovo pravilo //izračun integrala preko pravila pravokutnika float rectangle(float a, float b, int n) float h=(b-a)/(n+1); float x=a; float vrijednost=f(x); for (int i=1; i<=n; i++){ x=x+h; vrijednost=vrijednost+f(x)*h; } return vrijednost; Odjel za matematiku

3. složeni tipovi podataka 109 NIZOVI N-DIM. NIZOVI Potrebno predznanje: ØNaredbe iteracije ØFunkcije Odjel

3. složeni tipovi podataka 109 NIZOVI N-DIM. NIZOVI Potrebno predznanje: ØNaredbe iteracije ØFunkcije Odjel za matematiku

Nizovi 110 Niz je slijed elemenata istog tipa smješteni slijedno u memoriji koji se

Nizovi 110 Niz je slijed elemenata istog tipa smješteni slijedno u memoriji koji se dohvaćaju putem cjelobrojnog indeksa. U C/C++ sintaksi: float a[100]={0} //inicijalizacija niza sa svim vrijednostima 0 int b[3]={3, 1, -10} //niz cjelobrojnog tipa veličine 3 s postavljenim //vrijednostima for(i=0; i<max; i++) cout<<a[i]; //ispis elemenata niza Odjel za matematiku

Nizovi 111 Primjer 3. 1: “Suma vektora” u C++-u Napravite program koji će za

Nizovi 111 Primjer 3. 1: “Suma vektora” u C++-u Napravite program koji će za unesena 2 niza brojeva ispisati u 3. niz sumu prethodna 2 niza. //Program definira proceduru koja će za dva unesena niza ispisati treći niz koji je zbroj ta dva niza. void suma_vektora(float a[ ], float b[ ], float c[ ], int n) { for(int i = 0; i < n; i++) c[i] = a[i] + b[i]; } Odjel za matematiku

Nizovi 112 Zadatak. 3. 1: “Aritmetička sredina” u C++-u Napravite program koji će za

Nizovi 112 Zadatak. 3. 1: “Aritmetička sredina” u C++-u Napravite program koji će za uneseni niz podataka ispisati aritmetičku sredinu njegovih elemenata. Zadatak 3. 2: “Standardna devijacija” u C++-u Napravite program koji će za uneseni niz podataka ispisati standardnu devijaciju njegovih elemenata. Zadatak. 3. 3: “Polinomi” u C++-u Napravite program koji će definirati funkciju kojom ćemo evaluirati polinom Hornerovim pravilom. Definirajte funkciju Pol_der kao prvu derivaciju danog polinoma. Odjel za matematiku

Nizovi 113 Zadatak 3. 4: “Eratosten” u C++-u Napravite program koji će vam ispisati

Nizovi 113 Zadatak 3. 4: “Eratosten” u C++-u Napravite program koji će vam ispisati sve proste brojeve od 1 do 1000 Zadatak 3. 5: “Reverse” u C++-u Definirajte funkciju koja će u danom nizu obrnuti elemente. Zadatak 3. 6: “Min - max” u C++-u Za uneseni realni vektor proizvoljne veličine pronaći najmanji i najveći element tog vektora. Odjel za matematiku

Nizovi 114 Dvodimenzionalni nizovi Dvodimenzionalni niz je niz koji ima 2 nezavisna indeksa. Sintaksa

Nizovi 114 Dvodimenzionalni nizovi Dvodimenzionalni niz je niz koji ima 2 nezavisna indeksa. Sintaksa deklaracije je <type> <name> [<num-rows>][<num-coloms>] U C/C++ sintaksi: int M[3][6]; M[0][4]={88}; M[2][1]=44; -----------M[3][6]={{77, 55, 11, 33, 88}, {99}, {66, 44, 22}}; Odjel za matematiku

Nizovi 115 Zadatak. 3. 7: “Matrica” u C++-u a) Napravite proceduru Upis. Mat(float M[][])

Nizovi 115 Zadatak. 3. 7: “Matrica” u C++-u a) Napravite proceduru Upis. Mat(float M[][]) koja će upisivati matricu s konzole. b) Napravite proceduru Ispis. Mat(float M[][]) koja će ispisivati zadanu M matricu. Zadatak 3. 8: “Množenje vektora s matricom” u C++-u Napravite C++ program koji će za upisanu matricu A i vektor x ispisati produkt Ax. Produkt matrice s vektorom definirajte kao proceduru matvec(). Zadatak. 3. 9: “Diada” u C++-u Definirajte dijadski produkt 2 vektora x*y u proceduri dyadic(x, y). Odjel za matematiku

4. Stringovi i datoteke 116 C-STRINGS ULAZ/IZLAZ S DATOTOTEKE Potrebno predznanje: Ønizovi Øfunkcije i

4. Stringovi i datoteke 116 C-STRINGS ULAZ/IZLAZ S DATOTOTEKE Potrebno predznanje: Ønizovi Øfunkcije i procedure Odjel za matematiku

C-stringovi 117 C-string biblioteka i string objekti Osim numeričkih podataka, u C++ postoji standardna

C-stringovi 117 C-string biblioteka i string objekti Osim numeričkih podataka, u C++ postoji standardna C-string biblioteka i posebni objekt string koji manipuliraju s tekstualnim podacima. C-string je niz elemenata tipa char i predstavljaju standardni tip koji se koristi za obradu teksta u C++. U C/C++ sintaksi: char s 1[20]; s[]=“ABCDEFG”; cout<<s<<endl; s[4]=‘*’; cout<<s<<endl; cin>>s; cout<<s<<endl; Odjel za matematiku output

<cstring> biblioteka 118 <cstring> Library C++ naslijeđuje iz C-a kolekciju posebnih funkcija koji rade

<cstring> biblioteka 118 <cstring> Library C++ naslijeđuje iz C-a kolekciju posebnih funkcija koji rade s C-stringovima. #include<cstring> //C++ sintaksa #include<string. h> //C sintaksa Neke od funkcija koje se nalaze u <cstring> biblioteci. Funkcije opis strcap() Dodaje string s 2 stringu s 1. strchr() vraća pokazivač na prvu pojavu znaka c u stringu s strcmp() Uspoređuje string s 1 sa podstringom s 2. strcpy() Zamijenjuje string s 1 sa stringom s 2. strlen() vraća veličinu stringa Odjel za matematiku

Stringovi i datoteke 119 C-stringovi se predaju kao parametri funkciji preko reference char* //Program

Stringovi i datoteke 119 C-stringovi se predaju kao parametri funkciji preko reference char* //Program racuna broj velikih slova u C-stringu int caps(char* s){ int c=0; while(*s++) //povecavaj indeks adresnog mjesta if (*s>=‘A’ && *s<=‘Z’) ++c; return c; } Odjel za matematiku

Primjeri 120 Primjer Primjena nekih funkcija iz <cstring> biblioteke #include<cstring> int main(){ char* s

Primjeri 120 Primjer Primjena nekih funkcija iz <cstring> biblioteke #include<cstring> int main(){ char* s 1="peer"; char* s 2="peech"; int cmp=strcmp(s 1, s 2); cout<<"cmp= "<<cmp<<endl; if (cmp<0) cout<<s 1<<"<"<<s 2<<endl; else if(cmp==0) cout<<s 1<<"="<<s 2<<endl; else cout<<s 1<<">"<<s 2<<endl; } Odjel za matematiku #include<cstring> int main(){ char* s 1="peer"; char* s 2="peech"; strcpy(s 1, s 2); cout<<s 1<<“ ”<<strlen(s 1); cout<<s 2; //kopirani sadrzaj s 1 }

Standardni ulazi i izlazi 121 <stdio> Library Standardna C++ biblioteka koja nam je omogućava

Standardni ulazi i izlazi 121 <stdio> Library Standardna C++ biblioteka koja nam je omogućava ulaze i izlaze s konzole #include<stdio. h> Neke od funkcija koje se nalaze u <stdio> biblioteci. Funkcije opis printf() funkcija ispisa na konzolu iz C biblioteke scanf() funkcija upisa s konzole iz C biblioteke getchar() dohvati znak s konzole putchar() upiši znak u konzolu Odjel za matematiku

Standardni ulazi i izlazi 122 <iostream> Library Standardna C++ biblioteka koja nam je omogućava

Standardni ulazi i izlazi 122 <iostream> Library Standardna C++ biblioteka koja nam je omogućava ulaze i izlaze s konzole #include<iostream> Neke od funkcija koje se nalaze u <iostream> biblioteci. Funkcije opis cout ispisuje operand na konzolu cin s konzole unosi vrijednost u operand. cout. get() metoda objekta cout koji učitava neformatirani znak. cout. getline() metoda objekta cout koji učitava neformatirani niz znakova. cin. put() metoda objekta cin koja ispisuje znak na konzolu. Odjel za matematiku

Zadaci 123 Zadatak. 4. 1: “UPPER” u C++-u Napiši program koji će s konzole

Zadaci 123 Zadatak. 4. 1: “UPPER” u C++-u Napiši program koji će s konzole učitati string i ispisati ga u uppercase obliku. Zadatak. 4. 2: “Palindrom” u C++-u Definirajte logičku funkciju is_palindrom(string s) koja će vam za dani string s vratiti ili true ako je string palindrom ili false ako nije palindrom. Odjel za matematiku

Ulazi i izlazi s datoteke 124 Datoteke U C++ rad s datotekama osigurano je

Ulazi i izlazi s datoteke 124 Datoteke U C++ rad s datotekama osigurano je s 2 vrste objekata: ifstream – omogućuje ulaz iz datoteke ofstream – omogućuje ulaz na datoteku. #include<fstream> Odjel za matematiku U C rad s datotekama osigurano je s 2 vrste funkcija iz <stdio. h> biblioteke: fprintf() – upis u datoteku fscanf() - ispis iz datoteke getc() - uzima jedan znak iz datoteke putc() - stavlja jedan znak u datoteke #include<stdio. h>

Stringovi i datoteke 125 <stdio. h> biblioteka #include<cstdlib> #include<stdio. h> int main(){ int n,

Stringovi i datoteke 125 <stdio. h> biblioteka #include<cstdlib> #include<stdio. h> int main(){ int n, i=0, duljina=0; FILE *ulaz; FILE *izlaz; char imedat[20]; int podaci[100]; if(fopen("input. txt", "r")==NULL) printf("Nema datoteke!n"); else { ulaz=fopen("input. txt", "r"); izlaz=fopen("output. txt", "w"); while(!feof(ulaz)){ duljina++; fscanf(ulaz, "%d", &podaci[i++]); } for(int i=0; i<duljina; i++) fprintf(izlaz, "%d ", podaci[i]); system("PAUSE"); } } Odjel za matematiku Osnovni upis iz datoteke i upis u datoteku.

Stringovi i datoteke 126 <fstream> biblioteka #include<fstream> //ulaz iz datoteke #include<iostream> using namespace std;

Stringovi i datoteke 126 <fstream> biblioteka #include<fstream> //ulaz iz datoteke #include<iostream> using namespace std; int main(){ ifstream infile("input. txt"); //definiraj ulaznu datoteku ofstream outfile("output. txt"); // -||- izlazna datoteka string word; //tip string char c; while (infile>>word) { if (word[0]>='a' && word[0]<='z') word[0]=word[0]+'A'-'a'; outfile<<word; infile. get(c); //uzmi razmak iza svake rijeci outfile. put(c); //upisi razmak u novu datoteku } system("PAUSE"); } Odjel za matematiku Program iz ulazne datoteke uzima riječi i ispisuje ih u izlaznu datoteku s velikim početnim slovima riječi.

Zadaci 127 Zadatak. 4. 3: “stats 1” u C++-u U datoteku generirajte niz slučajnih

Zadaci 127 Zadatak. 4. 3: “stats 1” u C++-u U datoteku generirajte niz slučajnih brojeva, i zatim iz te datoteke izračunajte aritmetičku sredinu i standardnu devijaciju. Zadatak. 4. 4: “stats 2” u C++-u Napišite C++ program koji će iz datoteke učitati znakove i napisati relativne frekvencije svakog slova. Odjel za matematiku

Pokazivači 128 POKAZIVAČI DINAMIČKO PROGRAMIRANJE Odjel za matematiku

Pokazivači 128 POKAZIVAČI DINAMIČKO PROGRAMIRANJE Odjel za matematiku

Pokazivači 129 Znamo … Svakoj varijabli u programu pridružena je memorijska lokacija (ili blok

Pokazivači 129 Znamo … Svakoj varijabli u programu pridružena je memorijska lokacija (ili blok lokacija) čija veličina ovisi o tipu varijable. Svakoj memorijskoj lokaciji pridružena je jedinstvena adresa. Radi jednostavnosti, možemo zamišljati da je adresa čitavog blokacija = adresa prve lokacije u tom bloku. Tako svaka varijabla ima svoju jedinstvenu adresu. Varijabli se može pristupiti korištenjem: imena varijable — prevoditelj “zna” adresu, adrese varijable — pokazivačem na tu varijablu. Odjel za matematiku

Pokazivači 130 Deklaracija pokazivača Pokazivač na tip je varijabla koja sadrži adresu varijable tog

Pokazivači 130 Deklaracija pokazivača Pokazivač na tip je varijabla koja sadrži adresu varijable tog tipa. Deklaracija pokazivača: tip *p_var Primjer int *pi //pokazivač tipa int na adresu var. pi char *pc // pokazivač tipa char na adresu var. pc float *f // pokazivač tipa float na adresu var. f void *p //generički pokazivač *p=NULL //prazan pokazivač Odjel za matematiku

Pokazivači 131 Operatori pokazivača Adresni operator Operator referenciranja Odjel za matematiku &x= //adresa varijable

Pokazivači 131 Operatori pokazivača Adresni operator Operator referenciranja Odjel za matematiku &x= //adresa varijable x *ptr= // vrijednost spremljena u memorijsku lokaciju na koju pokazuje ptr, sadržaj na adresi spremljenoj u ptr

Pokazivači 132 Inicijalizacija pokazivača int i=5; //cjelobrojna varijabla sa sadržajem 5 int *ptr=&i; printf(“i=%d,

Pokazivači 132 Inicijalizacija pokazivača int i=5; //cjelobrojna varijabla sa sadržajem 5 int *ptr=&i; printf(“i=%d, adresa od i je %pn”, i, pi); Odjel za matematiku

Pokazivači 133 Operacije nad pokazivačima Dozvoljene operacije nad pokazivačima: • svakom pokazivaču možemo dodati

Pokazivači 133 Operacije nad pokazivačima Dozvoljene operacije nad pokazivačima: • svakom pokazivaču možemo dodati ili oduzeti cijeli broj • oduzimanje pokazivača istog tipa • uspoređivanje pokazivača istog tipa relacijskim operatorima ++px --px px + n px – n //px pokazivač i n varijabla tipa n Odjel za matematiku

Pokazivači 134 Primjer 1: Indeksiranje pokazivačem. int main(){ float x[]={1. 0, 2. 0}, *px=x;

Pokazivači 134 Primjer 1: Indeksiranje pokazivačem. int main(){ float x[]={1. 0, 2. 0}, *px=x; // px=&x[0] printf("Vrijednosti: x[0]=%g, x[1]=%gn", x[0], x[1]); printf("Adrese: x[0]=%p, x[1]=%pn", px+1); system("PAUSE"); } Vrijednosti: x[0]=1, x[2]=2 Adrese: x[0]=0012 FF 44, x[1]=0012 FF 48 Odjel za matematiku

Pokazivači 135 Po pokazivačima i vrijednostima na koji pokazuju može se inkrementirati. Primjer 2:

Pokazivači 135 Po pokazivačima i vrijednostima na koji pokazuju može se inkrementirati. Primjer 2: #include <stdio. h> int main(void) { double x[] = {10. 0, 20. 0, 30. 0, 40. 0}, *px; px=&x[0]; printf("%g, %gn", *px+1, *px+2); /* 11, 12 */ px=&x[0]; printf("%g, %gn", *px++, *px+2); /* 10, 22 */ return 0; } Odjel za matematiku

Pokazivači 136 Pokazivači istog tipa mogu se oduzimati. Primjer 3: int d(int a[]) {

Pokazivači 136 Pokazivači istog tipa mogu se oduzimati. Primjer 3: int d(int a[]) { int *pa = a; while (*pa != 0) ++pa; return pa - a; /* razlika pokazivaca */ } -----------… -----------int x[5] = {3, 2, 0, 0, 4}; . . . printf("%dn", d(x)); //output: 2 Odjel za matematiku

Pokazivači i jednodimenzionalna polja 137 Neka je p bilo koji pokazivač osim generičkog. Onda

Pokazivači i jednodimenzionalna polja 137 Neka je p bilo koji pokazivač osim generičkog. Onda p možemo interpretirati i kao: 1. pokazivač na prvi element u polju odgovarajućeg tipa, p=&p[0] 2. koristimo aritmetiku pokazivača u kombinaciji s indeksima Veza između aritmetike pokazivača i indeksiranja je : p+i=&p[i], *(p+i)=p[i] gdje je i cijeli broj. char *px, x[128]; px = &x[0]; *(px + 3) = ’d’; px++; *(px + 1) = ’b’; ekviv. s x[2] = ’b’; */ *(px + 130) = ’z’; Odjel za matematiku /* /* Isto kao kao px = x; */ x[3] = ’d’; */ px = &x[1]; */ px[1] = ’b’; /* NIJE GRESKA, ali prelazimo po memoriji! */

Nizovi 138 Zadatak. 1 “Suma elemenata” primjenom pokazivača Napravite program koji će za uneseni

Nizovi 138 Zadatak. 1 “Suma elemenata” primjenom pokazivača Napravite program koji će za uneseni niz realnih podataka ispisati sumu njegovih elemenata primjenom pokazivača. Odjel za matematiku

Pokazivači i funkcije 139 Polje smije biti argument funkcije. Funkcija tada: 1. ne dobiva

Pokazivači i funkcije 139 Polje smije biti argument funkcije. Funkcija tada: 1. ne dobiva kopiju čitavog polja, već 2. samo kopiju pokazivača na prvi element polja; Unutar funkcije elementi polja mogu se dohvatiti i promijeniti korištenjem indeksa polja ili aritmetike pokazivača f(tip v[]) ili f(tip *v) Zadatak. 2 “Aritmetička sredina” primjenom pokazivača Napravite funkciju koji će za uneseni niz realnih podataka ispisati aritmetičku sredinu njegovih podataka. Primjenite pokazivače. Odjel za matematiku

Pokazivači i funkcije 140 Osim pokazivača na fundamentalne tipove podataka postoje i pokazivači na

Pokazivači i funkcije 140 Osim pokazivača na fundamentalne tipove podataka postoje i pokazivači na funkcije. int (*fptr)(int) U ovom primjeru definiran je pokazivač fptr na funkciju koja prima jedan int argument i vraća int vrijednost. Primjer 3: double integracija(double a, double b, double (*f)(double)) { return 0. 5*(b-a)*((*f)(a)+(*f)(b)); } … printf("Sinus: %fn", integracija(0, 1, sin)); … Odjel za matematiku

Pokazivači i višedimenzionalna polja 141 Analogija jednodimenzionalnog polja. Indeksiranje jednodimenzionalnog polja: double x[10] Indeksiranje

Pokazivači i višedimenzionalna polja 141 Analogija jednodimenzionalnog polja. Indeksiranje jednodimenzionalnog polja: double x[10] Indeksiranje po dvodimenzionalnom polju: double x[10][20] Zadatak. 2 “A. x” primjenom pokazivača Napravite proceduru Mat. Vec koja će kao parametre preuzimati pokazivače na matricu A i x i koja će izračunati njihov umnožak. Odjel za matematiku

Pokazivači i stringovi 142 Analogija jednodimenzionalnog polja – string je niz tipa char. Indeksiranje

Pokazivači i stringovi 142 Analogija jednodimenzionalnog polja – string je niz tipa char. Indeksiranje po stringu: Primjer 4: void strcpy(char *s, char *t){ //kopiranje stringova while((*s=*t)!='') { s++; t++; } } Odjel za matematiku

Dinamičko programiranje 143 Dosad smo upoznali samo objekte za koje se memorija rezervira odmah

Dinamičko programiranje 143 Dosad smo upoznali samo objekte za koje se memorija rezervira odmah prilikom definiranja objekta (varijable). Oni mogu biti: - automatski – rezervacija pri svakom ulasku u programski blok - statički – rezervacija jednom, na početku izvršavanja programa Postoje i treći objekti – dinamički objekti – kreiramo ih po potrebi, za vrijeme izvršenja programa: - dinamičko alociranje memorije – proizvoljna veličina memorije može se staviti na raspolaganje objektima i bude tako alocirana sve dok je eksplicitno ne oslobodimo. Odjel za matematiku

Dinamičko programiranje 144 Dinamička memorija – upotreba: - polja za koje nije unaprijed zadana

Dinamičko programiranje 144 Dinamička memorija – upotreba: - polja za koje nije unaprijed zadana dimenzija - dinamičke strukture: vezane liste, stabla, … Dinamički objekti “žive” u bloku memorije koji se zove “hrpa” (heap). Funkcije za alokaciju i delokaciju memorije su deklarirane u biblioteci <stdlib. h>: - alokacija: funkcije malloc, calloc, realloc, (C) operator new (C++) - delokacija: funkcija free (C) operator delete (C++) Odjel za matematiku

Dinamičko programiranje u C-u 145 malloc size_t cjelobrojni tip bez predznaka n - ukupan

Dinamičko programiranje u C-u 145 malloc size_t cjelobrojni tip bez predznaka n - ukupan broj bajtova koje treba rezervirati Funkcija malloc rezervira blok memorije od n bajtova. Vraća: - pokazivač na rezervirani blok memorije, ili - NULL, ako zahtjev nije mogao biti ispunjen. Vraćeni pokazivač je generički, tipa void* — prije upotrebe treba ga eksplicitno konvertirati u potrebni tip pokazivača (cast operatorom). Odjel za matematiku

Dinamičko programiranje u C-u 146 calloc Funkcija calloc rezervira blok memorije za spremanje: -

Dinamičko programiranje u C-u 146 calloc Funkcija calloc rezervira blok memorije za spremanje: - nobj objekata, od kojih svaki pojedini objekt ima veličinu size, tj. ukupan broj rezerviranih bajtova je nobj * size. - Dodatno, inicijalizira cijeli rezervirani prostor na nule, preciznije, na nul-znakove (’’). Vraćeni pokazivač je generički, tipa void* — prije upotrebe treba ga eksplicitno konvertirati u potrebni tip pokazivača (cast operatorom). Odjel za matematiku

Dinamičko programiranje u C-u 147 Primjer 5: double *p; p=(double *) malloc(128*sizeof(double)); // ili.

Dinamičko programiranje u C-u 147 Primjer 5: double *p; p=(double *) malloc(128*sizeof(double)); // ili. . . p = (double *) calloc(128, sizeof(double)); if(p==NULL) { printf("Greska: alokacija nije uspjela!"); exit(-1); Alokacija za 128 objekata tipa double. Odjel za matematiku

Dinamičko programiranje u C-u 148 free Alociranu memoriju, nakon upotrebe, možemo osloboditi funkcijom free.

Dinamičko programiranje u C-u 148 free Alociranu memoriju, nakon upotrebe, možemo osloboditi funkcijom free. Funkcija free uzima pokazivač p na početak alociranog bloka memorije i oslobađa taj blok memorije. funkcija free ne mijenja pokazivač p. Nakon poziva free(p); taj pokazivač i dalje pokazuje na (sad) oslobođeni dio memorije i ne smije se koristiti. Najbolje je odmah iza poziva free(p); staviti i p = NULL; . Odjel za matematiku

Dinamičko programiranje u C-u 149 Program dinamički kreira polje a tipa int s tim

Dinamičko programiranje u C-u 149 Program dinamički kreira polje a tipa int s tim da se duljina polja n učitava. Ispisuje zbroj elemenata. Primjer 6: #include<cstdlib> #include<stdio. h> int main(){ int *a; int i, n, zbroj; printf("Upisi broj elemenata polja a: "); scanf("%d", &n); if ((a=(int*) calloc(n, sizeof(int)))==NULL){ printf("Alokacija nije uspjela"); exit(-1); } for (i=0; i<n; i++){ printf("Upisi element polja: "); scanf("%d", &a[i]); } zbroj=0; for(i=0; i<n; i++) zbroj=zbroj+a[i]; printf("%d ", zbroj); free(a); system("PAUSE"); } Odjel za matematiku

Dinamičko programiranje u C++-u 150 new float *b=new float[n] float tip podatka n -

Dinamičko programiranje u C++-u 150 new float *b=new float[n] float tip podatka n - ukupan broj bajtova koje treba rezervirati Operator new rezervira blok memorije od n bajtova. Vraća: - pokazivač na rezervirani blok memorije, ili - NULL, ako zahtjev nije mogao biti ispunjen. Ukoliko se ne može rezervirati memorijski prostor C++ podiže iznimku. Odjel za matematiku

Dinamičko programiranje u C++-u 151 delete [ ]b; Operator delete oslobođa rezervirani blok memorije

Dinamičko programiranje u C++-u 151 delete [ ]b; Operator delete oslobođa rezervirani blok memorije od n bajtova. Premda vraća alocirane blokove memorije na ponovo raspologanje korisno je i pokazivač koji je pokazivao na alocirani memorijski sadržaj postaviti na NULL kako bi se izbjegli problemi memorijske redundacije. delete [ ]b; b=NULL; Odjel za matematiku

Dinamičko programiranje u C-u 152 Primjer 7: Program dinamički kreira polje a tipa float

Dinamičko programiranje u C-u 152 Primjer 7: Program dinamički kreira polje a tipa float s tim da se duljina polja n učitava. Ispisuje zbroj elemenata. #include<cstdlib> #include<iostream. h> int main(){ cout<<"Upiste n: "; int i, n; cin>>n; float *a=new float[n]; float suma=0; cout<<"Upisite elemente polja: "<<endl; for(i=0; i<n; i++){ cin>>a[i]; suma=suma+a[i]; } cout<<"Zbroj elemenata polja je "<<suma; delete []a; system("PAUSE"); } Odjel za matematiku

Dinamičko programiranje u C++-u 153 Primjer 8: Množenje matrice s vektorom. void matvec(float **A,

Dinamičko programiranje u C++-u 153 Primjer 8: Množenje matrice s vektorom. void matvec(float **A, float *b, float *x, int n){ for(int i=0; i<n; i++){ float temp=0; for (int j=0; j<n; j++) temp=temp+A[i][j]*x[j]; } } int main(){ int n; int i; printf("Upisite n: "); scanf("%d", &n); float *b=new float[n]; float *x=new float[n]; for(i=0; i<n; i++) x[i]=i; float **A; //A je pokazivac na pokazivac; A=new float*[n]; // alociraj spremanje za n pokazivača for(i=0; i<n; i++) A[i]=new float[n]; //alociraj spremanje za matricu for(i=0; i<n; i++) for(int j=0; j<n; j++) A[i][j]=i+j; matvec(A, b, x, n); printf("%3. 2 f", &b[0], &b[1]); system("PAUSE"); } Odjel za matematiku

Zadaci 154 Zadatak. 5. 1: “Nadji znak” u C++ Napiši program koji će koristiti

Zadaci 154 Zadatak. 5. 1: “Nadji znak” u C++ Napiši program koji će koristiti funkciju locate(s, c) gdje je s string, a c znak za koji želimo znati na kojem se mjestu stringu pojavio prvi puta. Zadatak. 5. 2: “)” u C++-u Napiši C++ program koji će izračunati duljinu stringa pomoću funkcije strlen(const char* s) (Potrebno je definirati takvu funkciju) Odjel za matematiku

Složeni tipovi podataka 155 STRUKTURE Odjel za matematiku

Složeni tipovi podataka 155 STRUKTURE Odjel za matematiku

Strukture 156 Struktura je složeni tip podataka, kao i polje. Za razliku od polja,

Strukture 156 Struktura je složeni tip podataka, kao i polje. Za razliku od polja, koje služi grupiranju podataka istog tipa, struktura služi grupiranju podataka različitih tipova. Svi elementi polja imaju isti tip i zajedničko ime, a razlikuju se po indeksu. To se vidi i u deklaraciji polja. Elementi (ili članovi) strukture mogu, ali ne moraju, biti različitog tipa i svaki element ima svoje posebno ime. Zato u deklaraciji strukture moramo navesti ime i tip svakog člana. Tip strukture možemo deklarirati na dva načina. Odjel za matematiku

Deklaracija strukture 157 struct – rezervirana riječ, a ime je ime strukture, tip_1, tip_2,

Deklaracija strukture 157 struct – rezervirana riječ, a ime je ime strukture, tip_1, tip_2, … tipovi podataka s pripadnim imenima varijabli Primjer 1: struct tocka{ int x; int y; } struct tocka p 1, p 2; Odjel za matematiku typedef struct { int x; int y; } Tocka; . . . Tocka t 1, t 2, *pt 1;

Inicijalizacija strukture 158 struct racun { int broj_racuna; char ime[80]; float stanje; }; struct

Inicijalizacija strukture 158 struct racun { int broj_racuna; char ime[80]; float stanje; }; struct – rezervirana riječ, a ime je ime strukture, int, char, float tipovi podataka s pripadnim imenima varijabli Inicijalizacija: struct racun kupac = { 1234, "Pero Bacilova", -12345. 00 }; struct racun kupci[] = { 2234, "Goga", 456. 00, 1235, "Josip", -234. 00, 436, "Martina", 0. 00 }; Odjel za matematiku

Inicijalizacija strukture 159 Struktura se može definirati i preko strukture: struct pravokutnik { struct

Inicijalizacija strukture 159 Struktura se može definirati i preko strukture: struct pravokutnik { struct tocka pt 1; /* ili Tocka pt 1; */ struct tocka pt 2; /* ili Tocka pt 2; */ }; Deklaracija strukture tocka mora prethoditi deklaraciji strukture pravokutnik. Članovima strukture se može pristupati primjenom. operatora struct tocka{ int x; int y; } struct tocka p 1, p[10]; Odjel za matematiku p 1. x=1 //prvi clan od p 1 p 2. y=0 //drugi clan od p 1 p[5]. x=-2. 3 //prvi clan petog elementa polja tipa tocka

Strukture i funkcije 160 Operacije nad strukturom kao cjelinom su: - Pridruživanje. - Uzimanje

Strukture i funkcije 160 Operacije nad strukturom kao cjelinom su: - Pridruživanje. - Uzimanje adrese, primjena sizeof operatora. - Struktura može biti argument funkcije. Funkcija tada dobiva kopiju strukture kao argument. - Funkcija može vratiti strukturu. Primjer 2: struct tocka { int x; int y; } t, ishodiste = {0, 0}; struct tocka suma(struct tocka p 1, struct tocka p 2){ p 1. x+=p 2. x; p 1. y+=p 2. y; return p 1; } Odjel za matematiku

Strukture i pokazivači 161 Pokazivač na strukturu definira se kao i pokazivač na osnovne

Strukture i pokazivači 161 Pokazivač na strukturu definira se kao i pokazivač na osnovne tipove varijabli. Primjer 4: struct tocka { int x; int y; } p 1, *pp 1; . . . pp 1 = &p 1; (*pp 1). x = 13; (*pp 1). y = 27; *pp 1. x = 13; /* GRESKA */ /* *pp 1. x je isto i *(pp 1. x) */ // ILI … pp 1 ->x = 13; pp 1 ->y = 27; Jednostavniji način korištenja pokazivača na strukture : Odjel za matematiku

Zadaci 162 Zadatak. 6. 1: “Kompleksni” u C++ Napiši program koji će definirati complex

Zadaci 162 Zadatak. 6. 1: “Kompleksni” u C++ Napiši program koji će definirati complex strukturu i načiniti funkciju koja će dati modul od kompleksnog broja. Zadatak. 6. 2: “L 2 u 3 D” u C++-u Napišite program koji će za 2 trodimenzionalne točke dati euklidsku udaljenost između te 2 točke. Koristite strukture. Odjel za matematiku