Professional Documents
Culture Documents
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.
-
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
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:
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.
Razlike:
Postupak Equals:
Operator ‘=‘:
Kod usporedbe dvaju nizova znakova korištenjem operatora '=', poziva se postupak Equals. Povratni
rezultat usporedbe je Boolean vrijednost True ili False.
- 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
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%)
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.
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%)