You are on page 1of 10

’21./’22.

Kolokvij 2 – 1. Ispitni rok:

1) Deklarirati i inicijalizirati trodimenzionalni niz proizvoljne duljine i tipa te ga napuniti proizvoljnim


vrijednostima različitim od podrazumijevanih vrijednosti. Objasniti na primjeru razliku između plitkog i
dubokog kopiranja toga niza. (12%)
Dim niz As Integer(,,) = New Integer(1, 1, 1) {{{0,1}, {2,3}}, {{4,5}, {6,7}}}
Kod plitkog kopiranja se kopira upućivanje, a ne sami objekt. Prosljeđuje se sa array.clone. Kod dubinskog
kopiranja kopira se upućivanje, zajedno s objektom.

2) *Objasniti pojmove čahurenja, mnogoobličnosti, nasljeđivanja i minimalne zavisnosti! (10%)*


Klase koriste apstrakciju kako bi učinile raspoloživim jedino elemente bitne za definiranje objekta, a
čahurenje radi nametanja apstrakcije.
Apstrakcija je selektivno odbacivanje, ignoriranje nebitnog i fokusiranje na bitno.
Kod čahurenja kombiniraju se podaci i postupci u jednu čahuru.
Koristi se proceduralno programiranje, podaci su odvojeni od procedura.
Granica čahure oblikuje unutrašnji dio i vanjski dio.
Kontroliranje pristupne vidljivosti se radi na način da su postupci Public (dostupni su izvan granica), a
podaci su Private (dostupni jedino unutar granica).
Čahurenje omogućuje:
- kontrolu korištenja, tj. korištenje objekata jedino preko javnih postupaka
- promjene (korištenje objekata se ne mijenja kada se mijenjaju privatni tipovi
Nasljeđivanje
- Oblik programskog iskorištavanja u kojem se klase stvaraju apsorbiranjem podataka i ponašanja
postojećih klasa.
• štedi vrijeme razvoja
• više klasa dijeli iste atribute i operacije
Nasljeđivanje je veza “is a kind of”.
• objekt izvedene klase može biti tretiran i kao objekt njegove bazne klase
 na nivou klase
 bazna klasa (superklasa)
 izvedena klasa (podklasa)
Jednostruko i višestruko nasljeđivanje
Primjer
• Kupac “is a kind of is a kind of” osobe
• Zaposlenik “is a kind of” osobe
Mnogoobličnost
- Ista operacija se ponaša različito kada se primjeni na objekte različitih klasa.
- Moguće je pozivanje istih operacija za višestruke objekte instancirane iz različitih izvedenih klasa koji
proizvode različito ponašanje.
- Ime postupka se nalazi u baznoj klasi
- Implementacija postupka je u izvedenoj klasi
Postoje dva različita pristupa postizanja mnogoobličnosti:
• korištenjem sučelja (Interfaces)
• korištenjem nasljeđivanja.
Minimalna zavisnost:
• što je manja zavisnost o nečemu, manju su promjene kada se to mijenja
3) Navesti poznate postupke sortiranja nizova, te objasniti tehniku sortiranja umetanjem! (7.5%)
- Mjehurićasto sortiranje

U svakom prolazu se uspoređuju parovi susjednih elementa. Ako su vrijednosti para u porastu (ili su
jednake), program ostavlja elemente na svojim mjestima. Ako su vrijednosti u padajućem slijedu,
elementi para zamjenjuju mjesta.
Manje vrijednosti elemenata niza postepeno prodiru prema vrhu liste, poput mjehurića zraka u vodi, a
veće vrijednosti propadaju prema dnu liste.
Radi dobro sa kratkim listama stavki i sa djelomično sortiranim listama.
Tehnika zahtjeva broj prolazaka proporcionalan s N^2 , gdje je N broj stavki, što je loš rezultat.
Algoritam je brz za djelomično sortirani niz ili za niz s malim brojem stavki. Ako je u nizu veliki broj
stavki izvan bilo kojeg reda, nije optimalan izbor.

- Selekcijsko sortiranje
Radi se pretraživanje niza kako bi se pronašla stavka s najmanjom vrijednošću. Takva stavka se postavlja
na prvo mjesto niza. Postupak se ponavlja, zanemarujući već sortirane stavke, sve dok sve stavke niza
nisu sortirane.
Vrijeme izvođenja zanemarivo ovisi o stupnju sortiranosti niza. Otprilike jednako vrijeme je potrebno za
sortiranje djelomično sortiranog niza i u cijelosti sortiranog niza.
Koristi se za male nizove, i velike nizove malog raspona vrijednosti.

- *Sortiranje umetanjem*
Razmatra odjednom samo jedan element i ubacuje ga na prikladno mjesto između već razmotrenih
elemenata, ostavljajući ih sortiranima.
Najprije pravi prostor za element koji će biti umetnut pomicanjem većih elemenata jednu poziciju
udesno, a zatim ubacuje element na prazno mjesto.
Elementi lijevo od trenutnog elementa su u sortiranom redoslijedu, ali ne i na svojoj konačnoj poziciji
jer mogu biti pomaknuti kako bi napravili mjesto manjem elementu koji će biti pronađen kasnije.
-

Brzo sortiranje (Quicksort)


- koristi rekurzivne pozive
- implementiran u Array.Sort

- Prebrojavajuće sortiranje broji broj ponavljanja iste stavke.

4) *Objasniti prosljeđivanje niza kao parametra funkcije/procedure (vrijednošću i referencom – karakteristike i


razlike)! (10%) (x4)*
Prosljeđivanjem ByVal (vrijednošću):
• parametar niza je kopija varijable niza, ne kopija primjera niza
• mijenja se originalni primjer niza
• Nije moguće pridružiti upućivanje na drugi primjer niza

Prosljeđivanjem ByRef (referencom)


• moguće promijeniti ili poništiti upućivanje
Prosljeđivanje sa Array.Clone je plitko kopiranje, kopira se upućivanje a ne sami objekt.

5) Objasniti pojmove nepromjenjivosti i optimizacije string varijable! Navedeno ilustrirati primjerom! (10%)
Nepromjenjivost-jednom inicijalizirani String primjer ne može biti promijenjen na istoj memorijskoj lokaciji.

Optimizacija:
6) Što su svojstva i zašto se upotrebljavaju (kod klasa)? (10%)
Polja – javne varijable klase
• direktan pristup podacima
Svojstva se koriste za izvođenje akcija čitanja i pisanja atributa objekta.
Svojstva osiguravaju:
- koristan način čahurenja informacija unutar klase
- jasniju sintaksu
- fleksibilnost
- pristup kao da se radi o polju
Korištenje svojstava:
- Deklaracija se sastoji od imena i tipa podatka te sadrži jedan ili dva bloka koda:
• Set blok – postavlja vrijednost svojstva
• Get blok – vraća vrijednost svojstva

7) Navesti i objasniti tri temeljna pojma vezana za Windows forme (tj što forma izlaže)? (10%)
Forma je osnovni element grafičkog korisničkog sučelja.
- Predstavlja informacije korisniku
- Uzima informacije od korisnika
Forma izlaže:
- svojstva (definiraju pojavljivanje forma)
- postupke (definiraju ponašanje forme)
- događaje (definiraju interakciju sa korisnikom)

8) **Objasniti pojam i karakteristike konstruktora! Napisati isječak koda za proizvoljnu klasu s vlastitim
konstruktorom. Kako bi se sada u glavnom kodu kreirao objekt klase (jedna linija koda)? (12%)*
Konstruktori su postupci koji se koriste za inicijalizaciju objekata u memoriji.
Karakteristike podrazumijevanog konstruktora:
- Javna dostupnost
- Ne očekuje argumente
- Inicijalizira polja na 0, False ili Nothing
- Nema povratnu vrijednost

Public Class CPoint


Private x, y As Integer
Public Sub New (ByVal xValue As Integer, ByVal yValue As Integer )
x = xValue
y = yValue
End Sub
'...
End Class

Sub Main
Dim tocka as CPoint = New Cpoint()
End Sub

9) Kreirati klasu Osoba koja sadrži 4 podatkovna polja: Ime, prezime, godinu rođenja i adresu stanovanja.
Promjena varijabli je moguća samo putem odgovarajućih funkcija). Zatim koristeći svojstvo naslijeđivanja
kreirati dvije nove klase: učenik i učitelj. Klasi učenik dodati svojstvo za pisanje i čitanje prosjeka ocjena, u
klasi učitelj dodati proceduru čijim pozivanjem se ispisuje ime, prezime i adresa stanovanja. Na navedenom
demonstrirati primjer mnogoobličnosti! (22%)

Kolokvij 2:

10) Objasniti razliku između klase i objekta.


Klasa je nacrt ili predložak koji opisuje objekt i definira atribute i operacije za objekt, a objekt je primjer ili
instanca klase.
Objekti izlažu:
identitet - objekti su međusobno različiti
ponašanje - mogu izvesti zadatke
stanje - pohranjuju informacije

11) Objasniti strukturne tipove podataka i deklarirati proizvoljnu strukturu za pohranu podataka o studentima.
(5%)
Strukture su vrijednosni tipovi podataka I tako se ponašaju. To su grupe povezanih podataka različitog tipa.
Dostupnost može biti Public, Private (dostupna samo unutar tog modula), Friend (dostupna van modula, ali
unutar projekta), Protected (jedino u klasama) (Dim = public!!!)
Nije dozvoljeno inicijaliziranje Nije dozvoljeno inicijaliziranje članova strukture unutar same strukture, samo
preko varijable deklarirane strukturnim tipom.
Varijabla strukture se deklarira bez New.
Elementima strukture se pristupa navođenjem imena strukture, pa točka, pa ponuđeno svojstvo.

Public Structure Box


Dim Length As Integer 'dužina
Dim Height As Integer 'visina
Dim Breadth As Single 'širina
End Structure
Sub Main()
Dim myBox As Box 'deklaracija varijable
myBox.Length = 10 'pridruživanje vrijednosti
myBox.Height = 20
myBox.Breadth = 3.5
'dohvat vrijednosti
Console.WriteLine("Volumen je: {0}", myBox.Length * myBox.Height * myBox.Breadth)
End Sub

Public Structure Student


Dim ime as String
Dim dob as Short
Dim adresa as String
Dim ects as Short
Dim brKolegija as Short
End Structure
Sub Main()
Dim st1 as Student
st1.ime = “Ivan”
st1.prezime = “Leko”
C.W(“Ime studenta je: {0} {1}”, st1.ime, st1.prezime)
End Sub

12) *Objasniti sličnosti i razlike struktura i klasa! (8%)*


Sličnosti:
- imaju podatkovne članove
- imaju funkcionalne članove
- imaju polja, svojstva, postupke i dogañaje
- dozvoljavaju konstruktor

Razlike:

- Struktura je nacrt za vrijednost (dostupno stanje, uglavnom bez ponašanja)


- Klasa je nacrt za objekt (ima identitet, nedostupno stanje, ima ponašanje)
- Strukture su vrijednosni tipovi i podaci se spremaju na stogu, a kod klasa na stogu se sprema pokazivač
koji pokazuje na podatke koji se nalaze na upravljanoj gomili.
- Objekti klasa moraju biti instancirani s operatorom New, dok varijable strukture ne koriste New.

13) *Objasniti i primjerom ilustrirati binarno pretraživanje! (7%)*


- Binarno pretraživanje se koristi kod sortiranih nizova. Uspoređuje se ključ pretraživanja sa stavkom u
sredini liste. Nakon što se utvrdi je li stavka u sredini liste veća ili manja od ključa pretraživanja,
zanemaruje se ona strana liste koja sigurno (jer je niz sortiran) ne sadrži traženi ključ. Ponovno se ključ
pretraživanja uspoređuje sa stavkom u sredini preostale liste, sve dok ne dođemo do tražene stavke.

- Linearno pretraživanje uspoređuje vrijednost svakog elementa niza s ključem pretraživanja.


Koristi se kad niz nije sortiran.
-
14) *Nabrojati i objasniti sve poznate postupke za usporedbu znakova! (5%)*
Kod usporedbe dvaju stringova, uspoređuju se brojčani Unicode kodovi znakova u nizu.

Postupak Equals:

- Usporedba vrijednosti na jednakost


- Usporedba je osjetljiva na veličinu slova
A(65) < C(67) < a(97) < c(99) < Ć(262) < ć(263) < Č(268) < č(269)
- Postupak vraća True ili False
Postupak Compare:

- Usporedba prema redoslijedu razvrstavanja.


a<A<c<C<č<Č<ć<Ć
- Prazni skup znakova (“ ”) je veći od Nothing
- Dvije String varijable bez upućivanja su jednake
- Povratna vrijednost postupka je:
-1 ako prvi niz znakova dolazi prije drugog;
0 ako su nizovi znakova jednaki.
1 ako prvi niz znakova dolazi nakon drugoga.

Operator ‘=‘:
Kod usporedbe dvaju nizova znakova korištenjem operatora '=', poziva se postupak Equals. Povratni
rezultat usporedbe je Boolean vrijednost True ili False.

- Postupci klase string:


Length
Concat
Trim (TrimStart, TrimEnd)
ToLower, ToUpper
Insert, Replace, Remove,
Substring

- Klasa StringBuilder
Kod učestalog mijenjanja String primjera dolazi do loših performansi. Svaka promjena dovodi do nove
alokacije memorije.
Klasa StringBuilder predstavlja promjenjivi niz znakova ograničenog kapaciteta.
Postupci klase StringBuilder:
- Append – dodaje niza znakova na kraj primjera dodaje niza znakova na kraj primjera
- Insert – dodaje niz znakova na određenu poziciju primjera
- Remove – uklanja specificirani niz znakova iz primjera
- Length – vraća broj znakova u primjeru
- Capacity – maksimalni broj znakova koji mogu biti sadržani u alociranoj memoriji primjera

15) Napiši klasu Motor koja ima ove članice:


boja;
kilometraža;
potrošnja goriva;
ime vlasnika;
marka motora;
Napiši pripadajuća svojstva za pristup (pisanje i čitanje) polju kilometraža, te postupak za ispis svih
podatkovnih članica. U glavnom programu kreiraj objekt i inicijaliziraj ga (pomoću svojstava), te ispiši sva
podatkovna polja (15%).

16) Deklariraj matricu (niz) od 21 člana (3 retka i 7 stupaca). Napuni matricu nasumičnim brojevima od 1 do 100
(koristeći naredbu 1 + Int(Rnd() * 50) koji je najveći i najmanji član matrice (2 varijable tipa Integer) (nije
dozvoljeno koristiti sortiranje i pretraživanje) te ispiši rezultate (zajedno sa rednim brojem mjesta u matrici)
u konzolnom prozoru. (17%)
Module Module1
Sub Main()
Dim matrica As Integer(,) = New Integer(2, 6) {}
Dim min, max As Integer
For i As Integer = 0 To 2
For j As Integer = 0 To 6
matrica(i, j) = 1 + Int(Rnd() * 50)
Next
Next
For i As Integer = 0 To 2
For j As Integer = 0 To 6
Console.Write(matrica(i, j))
Console.Write(" ")
Next
Console.WriteLine() 'kad se ispune stupci prelazak u novi red matrice
Next
min = matrica(0, 0)
max = min
For i As Integer = 0 To 2
For j As Integer = 0 To 6
If matrica(i, j) >= max Then
max = matrica(i, j)
End If
Next
Next
Console.WriteLine()
Console.WriteLine("{0} {1}", min, max)
Console.ReadKey()
End Sub
End Module

17) Ukratko opisati šta radi slijedeći program na zadanoj formi (pogledaj sliku) za proizvoljno odabrani primjer
unosa. Ukoliko smatrate da program ima grešku, objasniti! (13%)

2. Ispitni rok 26.02.'21.


18) Objasniti podatkovnu strukturu Stog (Stack). (8%)
Stog je LIFO (Last In First Out) zbirka. Posljednje dodana stavka je prva istisnuta stavka.
procedure za rukovanje stogom su:
- Push dodaje stavku na vrh stoga
- Pop uklanja stavku s vrha stoga.

Red (Queue) je FIFO (First In First Out) zbirka. Stavke se dodaju na jedan kraj a uklanjaju sa drugog.
Enqueue – dodavanje stavki na kraj reda
Dequeue – uklanjanje stavki s početka reda

19) Navesti poznate tipove svojstava pri OOP te ih usporediti sa postupcima! (5%)
Tipovi svojstava:
Svojstva i za čitanje i za pisanje (read/write) imaju i Get i Set blok
Svojstva samo za čitanje (read-only) imaju samo Get blok
Svojstva samo za pisanje imaju samo Set blok I ograničeno je korištenje
Zajednička svojstva odnose se na klasu i mogu pristupiti samo zajedničkim podacima
Sličnost svojstava I postupaka je ta da sadrže kod koji se izvodi I mogu biti korišteni za skrivanje
implementacijskih detalja.
Razlika je da svojstva ne koriste zagrade, ne mogu biti Sub I ne mogu prihvaćati promjenjivi broj
parametara.

20) Objasniti I primjerom ilustrirati rukovatelj događaja kod Windows formi!


- Rukovatelj događaja je isječak koda koji se poziva kada je pripadajući događaj podignut.
- To je postupak povezan s određenim događajem. Kada je događaj podignut, kod unutar rukovatelja se
izvodi
- sender - predstavlja objekt koji je podigao događaj
- e – objekt događaja koji sadrži događaju specifične informacije (različiti tipovi: EventArgs,
MouseEventArgs…)
- Handles - deklarira da procedura rukuje određenim događajem I omogućuje navođenje rukovatelja
događaja za vrijeme stvaranja programa.

21) Napisati kod klase koja će biti sposobna pohraniti dimenzije pravokutnog trokuta. Pri tome korisnik
navedenim podacima može pristupiti samo preko svojstava. Pored navedenog klasa treba sadržavati i dvije
procedure. Jedna vraća opseg trokuta, a druga površinu. (25%)
22) Napisati program koji će od korisnika zatražiti da unese string varijablu proizvoljne duljine. Navedenu
varijablu je zatim potrebno pretvoriti u niz znakova (pri čemu nije dozvoljena upotreba već gotovih funkcija
pretvorbe, pretvorbu raditi znak po znak. (15%)
23) Napiši program koji klikom na formu ispisuje brojeve od 1 do n jednog za drugim na formu, a prestaje u
trenutku kada dođe do broja koji so upisali u TextBox. (Obavezno Do… Loop petlja!) (20%)
24) Napisati proceduru koja će pohranjivati koordinate događaja klika mišem na formu u jednodimenzionalni
niz, te izračunati udaljenost kliknute točke od ishodišta forme i izračunatu vrijednost ispisati u zaglavlju
forme. (25%)

You might also like