racunari i programiranje test 2

7
1. Navedi primjere deklarisanja i objasni u čemu je razlika između subroutine i funkcije u fortranu? Korisnička funkcija je procedura čiji je rezultat jedna varijabla proizvoljnog tipa, koja je deklarisana preko imena funkcije. Subroutine može imati kao rezultat više argumenata. Ime također ne mora biti deklarisano. Poziva se preko „call“ i može biti bez liste argumenata. function ime (lista argumenata) deklaracijski dio izvršni dio End [function(name)] REAL FUNCTION polinom ( x, a ) IMPLICIT NONE REAL:: x, a(0:3) polinom = a(0) + x*(a(1)+x*(a(2)+x*a(3))) ! efikasnije vrednovanje polinoma END FUNCTION polinom subroutine ime(lista argumenata) deklaracijski dio izvršni dio return (opcijski) End subroutine (ime) 2. Quick sort radi na principu slučajnog odabira jednog vodećeg člana i ostale članove poredi sa njim. Veće prebacuje na lijevu stranu od njega, dok manje prebacuje na desnu. To se ponavlja i sa podskupinama “veći” i “manji” 3. Dinamička biblioteka za povezivanje (dll) je blok koda, izdvojen i kompajliran nezavisno od glavnog programa. Može sadržavati samo subroutinu ali ne i glavni program. Vrlo je korisna u organizovanju velikih programa. Ista se dodaje glavnom programu u fazi izvrsenja (run-time) čime se postiže niz prednosti. Ista dll može se koristiti od strane više pozivnih programa, izvršni file pozivnog programa je manji, bolji je menadžent memorijom, update programa je jednostavan jer nije potrebno ponovno kompajliranje ili instaliranje programa nego samo zamjena postojeće dll novom. Enkapsulacija (umotavanje) Osigurava da programski kod izvan klase (tj. druga klasa) vidi samo funkcionalne (šta može da radi), ali ne i implementacijske detalje klase (kako je to programirano).

Upload: amermahmutbegovic

Post on 05-Jan-2016

246 views

Category:

Documents


0 download

DESCRIPTION

Racunari i Programiranje Test 2

TRANSCRIPT

Page 1: Racunari i Programiranje Test 2

1. Navedi primjere deklarisanja i objasni u čemu je razlika između subroutine i funkcije u fortranu? Korisnička funkcija je procedura čiji je rezultat jedna varijabla proizvoljnog tipa, koja je deklarisana preko imena funkcije. Subroutine može imati kao rezultat više argumenata. Ime također ne mora biti deklarisano. Poziva se preko „call“ i može biti bez liste argumenata.

function ime (lista argumenata)deklaracijski dioizvršni dioEnd [function(name)]

REAL FUNCTION polinom ( x, a ) IMPLICIT NONE REAL:: x, a(0:3) polinom = a(0) + x*(a(1)+x*(a(2)+x*a(3))) ! efikasnije vrednovanje polinoma

END FUNCTION polinom

subroutine ime(lista argumenata)deklaracijski dioizvršni dioreturn (opcijski)End subroutine (ime)

2. Quick sort radi na principu slučajnog odabira jednog vodećeg člana i ostale članove poredi sa njim. Veće prebacuje na lijevu stranu od njega, dok manje prebacuje na desnu. To se ponavlja i sa podskupinama “veći” i “manji”

3. Dinamička biblioteka za povezivanje (dll) je blok koda, izdvojen i kompajliran nezavisno od glavnog programa. Može sadržavati samo subroutinu ali ne i glavni program. Vrlo je korisna u organizovanju velikih programa. Ista se dodaje glavnom programu u fazi izvrsenja (run-time) čime se postiže niz prednosti. Ista dll može se koristiti od strane više pozivnih programa, izvršni file pozivnog programa je manji, bolji je menadžent memorijom, update programa je jednostavan jer nije potrebno ponovno kompajliranje ili instaliranje programa nego samo zamjena postojeće dll novom.Enkapsulacija (umotavanje)Osigurava da programski kod izvan klase (tj. druga klasa) vidi samo funkcionalne (štamože da radi), ali ne i implementacijske detalje klase (kako je to programirano).Time se “skriva” ponašanje objekta od njegove implementacije (data hiding),odnosno „vanjski svijet“ samo zna kako se objekt ponaša ali ne i kako implementirasvoje ponašanje (kako je programiran). Niko osim programera objekta ne može znatikako “iznutra” taj objekt izgleda, tj. na koji način izvršava svoj zadatak. Rezultatenkapsulacije je da svaki objekt prema „vanjskom svijetu“, tj ostalim klasamapokazuje svoje sučelje tj. skup poruka (metoda) na koje odgovara = interface

Nasljeđivanje (inheritance)mehanizam koji omogućuje da klasa (podklasa) redefinira (promijeni) ponašanje iosobine naslijeđene neke druge klase (nadklase). Podklasa (subclass) ima sve što inadklasa (superclass), ali i (ako je potrebno) još nešto što je specifično samo za nju.Nasljeđivanje se može definisati i kao nadređena-podređena relacija između klasa u

Page 2: Racunari i Programiranje Test 2

kojoj podređena (dijete, child) klasa ima isto ponašanje kao i nadređena (roditelj, parent) klasa.Klasaje apstrakcija (zajednički opis) za skup objekata s istim atributima i operacijama, odnosno to je predložak (engl.template) iz koga se kreiraju pojedinačni objekati. Zbog toga se kaže da je objekt instanca (konkretni oblik,primjerak) klase. Svaki objekt jedne klase nasleđuje njene osobine (metode i atribute).

Polimorfizampotječe od grčkih riječi poly – mnogo i morph-oblik. U objektno orijentisanom programiranju to znači da jednaporuka može uzrokovati različite oblike odgovora u zavisnosti kako je objekat kome se šalje interpretira.Polimorfizam je ponašanje koje se mijenja zavisno od toga koja klasa ga uzrokuje, što znači da dva ili više objekatamogu reagovati potpuno različito na istu poruku, odnosno da je objekt primatelj poruke odgovoran za njenuinterpretaciju a ne sama poruka.

Prednosti OOP• jednostavno korištenje dijelova koda u različitim programima, štedeći vrijeme u analizi, dizajnu, razvoju,testiranju, i otklanjanju grešaka, Jednostavnije modeliranje složenih problema upotrebom apstraktnijih elemenata = objekata• mogućnost kupovine dijelova postojećeg, testiranog koda da bi se u razvoju omogućio komponentnozasnovanipristup,• smanjeni troškovi razvoja,• mogućnost podjele velikih projekata na više programskih dijelova koje radi različiti programeri,• poboljšane karakteristike debagiranja i testiranja,Za probleme koji se svode na manipulaciju sa prostim tipovima podataka (numerički tipovi) po prethodnodefinisanoj proceduri (algoritmu), algoritamski (proceduralni) pristup je jednostavniji i efikasniji.

Osnovni programski koncepti (paradigme, metodologije)Programska paradigma određuje način modeliranja problema ali i način izvršavanja programa. Većina višihprogramskih jezika podržava samo jednu programsku paradigmu, onu kojoj pripadaju ali neki (npr. C++) podržavadvije programske paradigme. Osnovne paradigme (koncepti) su: proceduralno programiranje modularno programiranje strukturirano programiranje objektno-orijentisano programiranje OOP

Proceduralno programiranjePrethodno specificiranje koraka (naredbi) koje program mora izvršiti (procedure manipulisanja sa podacima zadatesu algoritmom). Procedure se mogu pozvati u bilo kojoj točki izvršavanja programa, ali i iz samih procedura.Osnovni princip izgradnje inženjerskih programa vezanih za numerička računanja.

Najvažnije osobine: Fokusirani na algoritam koji manipuliše ulaznim podacima Svi podaci (varijable) su “vidljive” i dostupne iz glavnog programa Teški za modificiranje i proširivanje Imaju složenu strukturu za kompleksne probleme

Prednosti:• mogućnost ponovnog korištenja istog koda na različitim mjestima unutar programa• jednostavnije praćenje programskog toka (grafički prikaz=dijagram toka)• osnova za razvoj modula, odnosno osiguranja strukturiranog pristupa.

Modularno programiranjeKod velikih i složenih programa, da bi se osigurala, čitljivost programa i olakšalo njegovo razumijevanje iodržavanje, modularnost postaje nužna. Modularnost u programiranju je jedan od osnovnih principa, nezavisno

Page 3: Racunari i Programiranje Test 2

o programskoj paradigmi i ako ne postoji opšta saglasnost o tome šta je modul. Različiti autori imaju i različitepristupe i definicije modula:S. McConnell: modul je "skup rutina koje zajedno obavljaju neku globalnu funkciju poput formatiranog izlaza,čitanja podataka iz datoteka ili pristupa glavnim strukturama podataka"Stevens, Myers, Constantine: Modul je “skup jednog ili više bliskih programskih izraza koji imaju svoj naziv pokojem ih ostali dijelovi sustava mogu pozvati, i poželjno je da imaju vlastiti poseban skup imena varijabli. [1974]Modul je logički nezavisna i logički zaokružena programska cjelina

Moduli se mogu nezavisno programirati i testirati Mogu se formirati moduli zajednički za sve Ispravak, testiranje i dokumentiranje je jednostavnije i brže Veze između modula trebaju biti jednostavne i vidljive Modul u pravilu treba imati jednu ulaznu i jednu izlaznu tačku Nakon izvršavanja modul vraća kontrolu na mjesto pozivanja

Strukturirano programiranje - podskup proceduralnog programiranja.[E.W. Dijkstra]: Strukturirano programiranje je specifičan način “pisanja” programa gdje se za kreiranje logičkeprogramske strukture primjenjuju standardizovani elementi.Programiranje uz upotrebu standardizovanih elemenata i prema utvrđenim pravilima povećava produktivnost,smanjuje pogreške, povećava čitljivost i olakšava testiranje i održavanje programa.

Svaka logička programska struktura može se proizvesti od 3 osnovne strukture:- sekvencija- selekcija- iteracija

Sekvencija – niz naredbi koje se izvršavaju jedna za drugom, onim redoslijedom kako su napisane Selekcija – uslovno (logičko) grananje (npr. IF-THEN-ELSE) Iteracija – ciklična struktura –petlja - višestruko izvršavanje skupa naredbi DO, DO WHILE” petlja

OBJEKTNO ORIJENTISANO PROGRAMIRANJE (OOP)Vladajuća, vodeća, najnaprednija metodologija za izradu složenih, velikih programskih aplikacija. Kvadratna jednačina (proceduralni pristup) – najvažniji je algoritam (procedura,) podaci su manje bitni Program za manipulisanje bazom podataka: podaci su bitni, način manipulisanja (algoritam) je manje bitan OOP – i algoritam i podaci su jednako bitni i pakuju se zajedno u „objekte“

Objektno orijentirano programiranje polazi od toga da se program posmatra kao skup pojedinačnih dijelova, iliobjekata, koji surađuju (rade) jedan s drugim međusobno izmjenjujući poruke. Svaki objekt ima sposobnostprimanja poruke, obrade podataka i slanja poruke drugim objektima. Poruka utiče na promjenu stanja objekta.

Svaki objekt ima: stanje u kojem se nalazi, ponašanje (operacije koje može da izvrši) i identitet Stanje objekta definisano je unutrašnjim varijablama (podacima, data members, atributi) Ponašanje (behavior) definisano je funkcijama (member functions, methods). Funkcije se aktiviraju porukama. Poruka je formalna komunikacija (poziv, zahtjev) poslana od strane jednog objekta drugom a koja zahtjevaneki servis (uslugu).

Objekti se sastoje od članova (Members ): Attributes (Data) – npr. objekt auto: sjedala, vrata, motor, točkovi… Methods (Functions) – kreni, stani, zakoči, ubrzaj, upali svjetla…

Razvoj OO jezika: Simula (Simulation programming language), definisan kasnih 60-tih (O.J. Dahl Kristen Nygaard ) Smalltalk nastao početkom 1970-tih (Alan Kay). Prvi uspješni, široko prihvaćeni OO jezik. Još u upotrebi

Page 4: Racunari i Programiranje Test 2

C++ B. Stroustrup je razvio C++ kombinujući „Simula“ jezik koji je bio vrlo funkcionalan sa C jezikom koji je vrloefikasan. C++ je najrašireniji OO programski jezik. Obuhvata klasični C sa OO proširenjima. U njemu je napisanWindows OS i mnoge svakodnvne aplikacije koje koristimo.Java Jezik C++ bio je suviše komplikovan za korištenje svih svojih OO mogućnosti. Uprošćavanjem C++-a, Bill Joy iJames Gosling razvili OAK, prvu verziju Java jezika. Java aplikacije su se mogle koristiti pomoću Sun-ovog webbrowser-a „HotJava“ – apleti čime je znatno ubrzano širenje i uspjeh novog jezika. Java je opšti programski OOjezik, sa korjenom u C++ jeziku ali znatno jednostavnija, bez nepotrebnih i opasnih karakteristika. Zbog toga što jeinterpreterskog tipa, postigla je veliku portabilnost (mogućnost apliacije da radi pod različitim operativnimsistemima).Visual Basic (VB) je postao jedna od najčešćih razvojnih platformi za Windows OS aplikacije. Osnovna mu jeprednost mogućnost brzog razvijanja grafičkog interface-a aplikacije.• VB 1.0 May 1991 for Windows.• VB 6.0 Summer 1998.• VB .NET 2002. Osnovni nedostaci: Radi samo pod windows OS Vlasništvo je Microsoft-a koji ga neprekidno razvija (unaprjeđuje). Novija verzija često nije kompatibilna sa prethodnim. Nije efikasan za numerička računanjaC# (čita se „šarp“) je savremeni objektno orijentisani programski jezik opšte namjene, razvijen od straneMicrosoft-a (Anders Hejlsberg) a prva verzija se pojavila u julu 2000 godine. Nastao kao odgovor na uspjeh Javekoju Microsoft ne podržava. To je moderan OO jezik, vrlo sličan sa Javom i C++. (70% Java, 10% C++, 5% VisualBasic, 15% new)

Struktura podataka je matematički (logički) način organizacije podataka. Ona definiše način njihovog pohranjivanja i upotrebe od strane programa (programera). Pravilo odabrana struktura bitno utiče na efikasnost programa. To se naročito ističe kod složenih aplikacija. Od strukture zavise i algoritmi tj.metodi za obradu podataka. Osnovne strukture: Linearne (članovi su u nizu) , sortiranje, merge 1. Polje (array) – niz, matrica, vektor i nelinearne strukture 2. Slog (record) 3. Lista 4. Stog (stack) 5. Red (queue) 6. Stablo (binarno stablo) 7. Graf

Osnovne operacije nad strukturom podataka: 1. Pristup (čitanje) i modificiranje podataka Matrice: primjer definisanja 2. Pretraživanje 3. Proširivanje (dodavanje novih podataka) 4. Brisanje 5. Sortiranje 6. Spajanje i razdvajanje više struktura

RECORDS (Slog) Sekvenca (niz) podataka različitog tipa, redovi tabele heterogenih podataka (polja ili atributi) Primjer: relacijska baza podataka Integer

String#1 String#2 Real integer

114 Salko Ćosić 14578.25 136.22.35 124 **** **** 124758.256 36.22.55

Page 5: Racunari i Programiranje Test 2

POVEZANE LISTE (linked list)

Struktura čiji element sadrži podatak i pokazivač adrese slijedećeg elementa. Redoslijed elemenata je uređen pokazivačima (pointers) koji sadrže adrese slijedećeg elementa. Spremanje u memoriji ne mora biti u skladu sa redoslijedom elemenata. Svaki element sadrži podatak i pokazivač. Prvi element liste naziva se različitim imenima kao što je glava, početak ili prvi čvor (head, front, first node). Krajnji čvor se naziva rep ili krajnji čvor liste (tail, end ili last node). Zbog linearne strukture liste svaki čvor osim prvog i zadnjeg ima svog predhodnika i sljedbenika. Čvor na kome se trenutno izvodi neka operacija nazivamo tekućim čvorom ili tekuća pozicija u listi.

Osnovne operacije na listi: Insert(L,e): ubacuje čvor sa informacijom prije trenutne pozicije Delete(L): briše trenutni čvor RetrieveInfo(L): vraća informaciju o trenutnom čvoru A. Insertion To insert a node X between the nodes A and B: .Create a link from X to B. .Create a link from A to X,

B. Deletion To delete a node X between A and B: • Create a link from A to B, • Remove node X

Linkovi između čvorova: 1. Single linked lists : Svaki čvor sadrži dva linka – prema prethodnom i slijedećem čvoru 2. Double linked lists : Svaki čvor sadrži samo link prema narednom čvoru

4. Circular lists: rep je linkovan sa glavom (zatvorena lista)5.