You are on page 1of 59

PANEVROPSKI UNIVERZITET APEIRON

FAKULTET POSLOVNE INFORMATIKE




Vanredne studije
Smjer Poslovna informatika

Predmet
Vii programski jezici i RAD alati programiranje u Visual
Basic-u


"Rjeavanje zadataka u Visual Basic-u"
(seminarski rad)



Predmetni nastavnik
Prof. dr Zoran . Avramovi, dipl.in.elek.



Student
Bojan uri
Indeks br. 37-10/vpi



Banja Luka, juli 2013.



1

Sadraj
1. Uvod ........................................................................................................................ 2
2. Zadaci ...................................................................................................................... 5
2.1. Prikazati broj dana u mjesecu histogramom .................................................... 5
2.2. Iscrtati Pitagorinu tablicu ................................................................................. 7
2.3. Broj n podijeljen sa 2 daje ostatak 1... ............................................................. 8
2.4. Kalkulator sa etiri osnovne radnje i faktorijelom ......................................... 10
2.5. Pronai najvei potreban kapacitet autobusa ................................................. 12
2.6. Bouble sort ..................................................................................................... 15
2.7. Podijeliti dva broja na odreeni broj decimala .............................................. 17
2.8. Pronai najvei i najmanji lan niza .............................................................. 18
2.9. Pronai najvei zajedniki djelilac ................................................................. 20
2.10. Pronai najmanji zajedniki sadrilac ............................................................ 21
2.11. Ispisati brojeve Fibbonacijevog niza ............................................................. 24
2.12. Pronai aritmetiku, geometrijsku i harmonijsku sredinu ............................. 26
2.13. Pronai prvi manji lan od harmonijske sredine ............................................ 28
2.14. Ispisati n prostih brojeva ................................................................................ 30
2.15. Prikazati histogramom generator sluajnih brojeva ....................................... 32
2.16. Ispisati proste brojeve izmeu m i n .............................................................. 33
2.17. Ispisati djelioce broja ..................................................................................... 35
2.18. Ispisati savrene brojeve ................................................................................ 36
2.19. Iscrtati krug unutar kvadrata .......................................................................... 39
2.20. Korijen iz e, koristei Tajlerov teorem .......................................................... 40
3. Domaa zadaa ...................................................................................................... 43
3.1. Program: Microsoft Visual Basic 2010 Express, Windows Xp 32-bit ......... 43
3.2. Program: Microsoft Visual Basic 2010 Express, Windows Xp 32-bit ......... 45
3.3. Program: Microsoft Visual Basic 2010 Express, Windows Xp 32-bit ......... 47
3.4. Program: Microsoft Visual Basic 2010 Express, Windows Xp 32-bit ......... 52
4. Zakljuak ............................................................................................................... 57
5. Bibliografija .......................................................................................................... 58




2






1. Uvod
Visual Basic je proizvod Microsofta, koji omoguava programiranje koritenjem RAD -
Rapid Application Development (okruenja za brzo razvijanje aplikacija). Postoji i besplatna
verzija okruenja, koja se naziva Visual Studio Express. Ona ima neto slabije mogunosti, ali
je dovoljna za poetak.

Tip varijabli u programskom okruenju Visual Basic 2010, Windows XP, 32-bit. izvor:
(Microsoft)
Visual Basic
type
Common
language
runtime type
structure
Nominal
storage
allocation
Value range
Boolean Boolean Depends
on
implementi
ng
platform
True or False
Byte Byte 1 byte 0 through 255 (unsigned)
Char (single
character)
Char 2 bytes 0 through 65535 (unsigned)
Date DateTime 8 bytes 0:00:00 (midnight) on January 1,
0001 through 11:59:59 PM on
December 31, 9999
Decimal Decimal 16 bytes 0 through +/-
79,228,162,514,264,337,593,543,9
50,335 (+/-7.9...E+28)

with no
decimal point; 0 through +/-
7.922816251426433759354395033
5 with 28 places to the right of the
decimal;
smallest nonzero number is +/-
0.000000000000000000000000000

3

1 (+/-1E-28)


Double (doubl
e-precision
floating-point)
Double 8 bytes -1.79769313486231570E+308
through -4.94065645841246544E-
324

for negative values;


4.94065645841246544E-324
through
1.79769313486231570E+308

for
positive values
Integer Int32 4 bytes -2,147,483,648 through
2,147,483,647 (signed)
Long (long
integer)
Int64 8 bytes -9,223,372,036,854,775,808
through
9,223,372,036,854,775,807
(9.2...E+18

) (signed)
Object Object (class) 4 bytes on
32-bit
platform
8 bytes on
64-bit
platform
Any type can be stored in a
variable of type Object
SByte SByte 1 byte -128 through 127 (signed)
Short (short
integer)
Int16 2 bytes -32,768 through 32,767 (signed)
Single (single-
precision
floating-point)
Single 4 bytes -3.4028235E+38 through -
1.401298E-45

for negative
values;
1.401298E-45 through
3.4028235E+38

for positive
values
String (variabl
e-length)
String (class) Depends
on
implementi
ng
platform
0 to approximately 2 billion
Unicode characters
UInteger UInt32 4 bytes 0 through 4,294,967,295
(unsigned)
ULong UInt64 8 bytes 0 through

4

18,446,744,073,709,551,615
(1.8...E+19

) (unsigned)
User-
Defined(struct
ure)
(inherits
fromValueTy
pe)
Depends
on
implementi
ng
platform
Each member of the structure has a
range determined by its data type
and independent of the ranges of
the other members
UShort UInt16 2 bytes 0 through 65,535 (unsigned)

In scientific notation, "E" refers to a power of 10. So 3.56E+2 signifies 3.56 x 10


2
or 356, and 3.56E-2
signifies 3.56 / 10
2
or 0.0356.




5


2. Zadaci
2.1. Prikazati broj dana u mjesecu histogramom
Nainiti broj koji prikazuje broj dana u mjesecu histogramom. Obratiti panju na
prestupne godine.



Public Class Form1
Private Sub btnIzracunaj_Click(sender As System.Object, e As System.EventArgs)
Handles btnIzracunaj.Click, cmbGodina.SelectedValueChanged
'dodatna podesavanja za chart objekat koja mozemo odrediti
'chartareas.../axes/collection.../x axis/interval/interval=1 , da prikaze
oznake za sve mjesece na x osi
'series/label/isValueShownAsLabel=true, prikazemo rezultat a vrhu kolumni
'legends/collections/enabled=false, bez legend sa desne strane
'series.../series1/appearance/pallete=pastel, za boje
'chart areas/axes/grid tick marks/major grid/enabled=false, iskljucuje
vertikalne linije/grid

'deklarisemeo dve matrice, velicine 12 elemenata
Dim arrMjeseci(11) As Integer
Dim arrMjeseciImena(11) As String

'dodijelimo vrijednosti elementima matrica
arrMjeseci = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}

6

arrMjeseciImena = {"jan", "feb", "mar", "apr", "maj", "jun", "jul", "avg",
"sep", "okt", "nov", "dec"}

'provjera da li je godina prestupna. ako jeste, februar ima 29 dana
If prestupna(cmbGodina.Text) Then
arrMjeseci(1) = 29
End If

'povezemo chart element sa matricama
Chart1.Series(0).Points.DataBindXY(arrMjeseciImena, arrMjeseci)

End Sub


Private Function prestupna(godina As Integer) As Boolean

'1700 nije
'2000 jeste

'ako je godina djeljiva sa 400 onda je prestupna
If godina Mod 400 = 0 Then
Return True
End If

'ILI

'ako je godina djeljiva sa 4 I NIJE djeljiva sa 100, onda je prestupna
If godina Mod 4 = 0 And godina Mod 100 <> 0 Then
Return True
End If

Return False

End Function

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles
MyBase.Load

'po ucitavanju programa, dodamo vrijednosti u combobox sa godinama

For index = DateAndTime.Year(Now) To DateAndTime.Year(Now) - 15 Step -1
cmbGodina.Items.Add(index)
Next
cmbGodina.Text = cmbGodina.Items(0)

End Sub

End Class


Za grafiki prikaz je koriten chart element Microsoft Visual Basic-a, koji omoguuje
izmjenu izgleda i predstavljanje podataka grafiki.
U sluaju promjene podataka u comboboxu, pokree se subrutina btnIzracunaj_Click,
koja se moe pokrenuti i pritiskom na dugme "Izraunaj"



7


2.2. Iscrtati Pitagorinu tablicu

Nainiti program koji iscrtava Pitagorinu tablicu.

Kod Pitagorine tablice po X osi i po Y osi su ispisani brojevi od 1 do 10. Na mjestima
gdje se ose presjecaju ispisan je proizvod brojeva iz X i Y ose.

Public Class Form1

Private Sub btnIscrtaj_Click(sender As System.Object, e As System.EventArgs)
Handles btnIscrtaj.Click
'deklarisemo matricu kao dvodimenzionalnu matricu sa 10 x 10 elemenata
Dim arrD(9, 9) As Integer

'deklarisemo matricu kao 1-dimenzionalnu matricu sa 10 elemenata
'koja ce cuvati citavu liniju elemenata
'kao string, zato sto ima razmake
Dim ln(9) As String


'pripremimo listbox objekte za koristenje
ListBox1.Items.Clear()
lstColumn.Items.Clear()
lstRow.Items.Clear()



'popunimo matricu sa elementima
For x = 0 To 9
For y = 0 To 9

'dodijelimo vrijednosti elementima matrice
'uvecano za 1, jer nam trebaju 1 2 3 .. 10, a ne 0-9

8

arrD(x, y) = (x + 1) * (y + 1)

'dodajemo vrijednosti u 'liniju' matrice
'dodajemo razmak ako je broj manji od 10
If arrD(x, y) < 10 Then
ln(x) = ln(x) & " " & " " & arrD(x, y)
Else
ln(x) = ln(x) & " " & arrD(x, y)
End If
Next
Next


For index = 0 To 9
'dodajemo linije u glavnu listbox kontrolu
ListBox1.Items.Add(ln(index))

'dodajemo brojeve u kolumn listbox, koja se nalazi sa lijeve strane
lstColumn.Items.Add(index + 1)
Next

'dodajemo liniju u red listbox, koja se nalazi iznad glavne listbox kontrole
'ista je kao prvi red glavne listbox kontrole
lstRow.Items.Add(ln(0))
End Sub
End Class

Za ovaj program je koriten listbox element, i matrice za skladitenje podataka.

2.3. Broj n podijeljen sa 2 daje ostatak 1...
Broj n podijeljen sa 2 daje ostatak 1, sa 3 ostatak 2, sa 4 ostatak 3, ... sa x daje ostatak x-
1, za x = 2 do 9.


Public Class Form1
Private Sub btnPrviBroj_Click(sender As System.Object, e As System.EventArgs)
Handles btnPrviBroj.Click

'deklarisemo varijable
Dim broj As Integer

9


'naci prvi broj takav da n mod 2 = 1, n mod 3 = 2 ... n mod x = x-1

'pocetna vrijednost broja 1
broj = 1

'testiramo u petlji dok funkcija provjera ne vrati true
Do Until provjera(broj)
'povecavamo broj
broj = broj + 1
Loop

End Sub



Private Function provjera(ByVal broj As Integer) As Boolean

'provjeravamo da li broj ispunjava sve uslove
' broj mod 2 = 1, broj mod 3 = 2 ... broj mod 9 = 9-1
For index = 2 To 9

'ako ne ispunjava uslov(e), vracamo se u glavni program
If broj Mod index <> index - 1 Then
'vracamo false, izlazimo iz funkcije
Return False
End If

Next

'Ako prodje test, dodajemo ga u listbox, zajedno sa brojem i ostatkom za
svako djeljenje

'obrisemo podatke iz liste
ListBox1.Items.Clear()

'dodajemo broj u listu
ListBox1.Items.Add("Broj koji se trazi je: " & broj)

'dodamo rezultate podjele
For index = 2 To 9
ListBox1.Items.Add(broj & " podijeljen sa " & index & " daje ostatak " &
broj Mod index)
Next

'vracamo true kao rezultat funkcije i izlazimo iz funkcije
Return True

End Function

Private Sub btnBrojManjiOd_Click(sender As System.Object, e As System.EventArgs)
Handles btnBrojManjiOd.Click

ListBox1.Items.Clear()

'naci prvi broj manji od milijardu, takav da n mod 2 = 1, n mod 3 = 2 ... n
mod 9 = 9-1


10

'u petlji for, idemo prema 1, koristeci step -1
For index = 1000000000 To 1 Step -1
'ako funkcija provjera vrati true, dodajemo broj u listbox.
If provjera(index) Then
Exit For
End If
Next
End Sub

End Class

Koristi se for petlja za ispitivanje funkcije, pri emu svaki broj provjeravamo da li je
djeljiv sa zadanim nizom brojeva.


2.4. Kalkulator sa etiri osnovne radnje i faktorijelom

Nainiti program za izraunavanje etiri osnovne matematike radnje (+,-,/,*), i za
izraunavanje faktorijela.

Public Class Form1


Private Sub btnIzracunaj_Click(sender As System.Object, e As System.EventArgs)
Handles btnIzracunaj.Click
'deklarisanje varijabli
Dim dblPrvi, dblDrugi, dblRes As Double

'deklarisanje operacije kao string
Dim strOp As String

'citanje vrijednosti prvog i drugog broja iz tekst boksa
'provjera da li su numeric
If IsNumeric(txtPrvi.Text) Then
dblPrvi = txtPrvi.Text

11

End If

If IsNumeric(txtDrugi.Text) Then
dblDrugi = txtDrugi.Text
End If

If cmbOp.Text = "" Then
MessageBox.Show("Molim odaberite operaciju")
Exit Sub
End If

'citanje odabrane operacije iz combo boksa
'odabran je DropDownStyle=DropDownList, tako da se ne moze unositi druge
operacije
strOp = cmbOp.SelectedItem
Select Case strOp
'racunanje razultata, i ispis vrijednosti u tekst boks txtRes
Case "+"
dblRes = dblPrvi + dblDrugi
txtRes.Text = dblRes
Case "-"
dblRes = dblPrvi - dblDrugi
txtRes.Text = dblRes
Case "*"
dblRes = dblPrvi * dblDrugi
txtRes.Text = dblRes
Case "/"
'rezultat se zaokruzuje na 3 decimale, koristenjem math.round
funkcije
dblRes = Math.Round(dblPrvi / dblDrugi, 3)
txtRes.Text = dblRes
Case "!"

'Faktorijel
'provjera da li je broj manji od 1
If dblPrvi < 1 Then
MessageBox.Show("Molim odaberite broj koji nije manji od 1")
txtRes.Text = ""
Exit Sub
End If

'faktorijel broja 1 = 1
If dblPrvi = 1 Then
dblRes = 1
txtRes.Text = dblRes
Exit Sub
End If

'dodijelimo pocetnu vrijednost rezultatu
dblRes = 1

'definisemo brojac kao tip integer, ne mnozimo sa 1, jer n*1 = n
For intBrojac As Integer = 2 To dblPrvi
dblRes = dblRes * intBrojac
Next

'zbog nacina zapisa promjenjivih double, moguc je gubitak
preciznosti na vise od 15 decimala.

12

If dblRes.ToString.Length > 15 Then
MsgBox("Rezultat ima vise od 15 cifara, moguce je da rezultat
nije tacan")
End If
txtRes.Text = dblRes
End Select

End Sub
End Class


Za rezultat je koristena tip promjenjive double, zbog operacije dijeljenja.

2.5. Pronai najvei potreban kapacitet autobusa
Na jednoj prevoznoj liniji unaprijed je pozat broj prodatih karata izneu svake 2 stanice.
Pronai kapacitet prevoznog sredstva kojim treba realizovati prevoz.
Ako podatake predstavimo matricom

bitno je primjetiti da na prvoj stanici (koordinate a1,b1, broj je 0) putnici kupe:
8 karata za 2. stanicu
6 karata za 3.
7 karata za 4.
5 karata za 5. stanicu.
U autobusu je 8 + 6 + 7 + 5 + 26 putnika. (Zbir prvog reda matrice)

-Na drugoj stanici izau svi oni koji su kupili karte za drugu stanicu, 8 putnika. Od
ukupnog broja putnika u autobusu oduzmemo drugu kolonu. (Na prvoj stanici nije niko izaao,
tako da nismo oduzimali prvu kolonu)
Trenutno je u autobusu 26-8 = 18 putnika.

-Na drugoj stanici (a1,b2, broj je 8), putnici kupe
7 karata za 3. stanicu
9 karata za 4. stanicu
5 karata za 5. stanicu.
-U autobus ue 7 + 9 + 4 putnika (Ukupnom broju putnika dodamo drugi red matrice).
U autobusu se nalazi 18+ (7+9+4)+38.

13

Ovo ponavljamo do kraja, odnosno 5.stanice. Dodajemo broj putnika koji ulaze
(redovi), i oduzimamo broj putnika koji izlaze (kolone).



Public Class Form1

Private Sub btnIzracunaj_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnIzracunaj.Click
'deklarisemo tipove promjenjivih, matricu koja sadrzi sve elemente
'velicine 5 * 5
Dim arrMatrica(4, 4) As Integer

'dodijelimo vrijednosti elementima matrice
arrMatrica = {{0, 8, 6, 7, 5}, {0, 0, 7, 9, 4}, {0, 0, 0, 8, 5}, {0, 0, 0,
0, 4}, {0, 0, 0, 0, 0}}


'deklarisemo matrice koje ce sadrzavati zbir redova i zbir kolona
'i broj putnika na svakoj stanici
Dim arrZbirRedova(4) As Integer
Dim arrZbirKolona(4) As Integer
Dim arrStanica(4) As Integer
Dim str As String = ""

'zbir redova
For x = 0 To 4
For y = 0 To 4
'arrzbir Redova ide od 0-4, x stoji, y se mijenja
arrZbirRedova(x) = arrZbirRedova(x) + arrMatrica(x, y)
Next
Next

'zbir kolona
For y = 0 To 4
For x = 0 To 4
'arrzbir kolona ide od 0-4, y stoji, x se mijenja
arrZbirKolona(y) = arrZbirKolona(y) + arrMatrica(x, y)
Next
Next

14


'na prvoj stanici je kupljeno 8 karata za 2.stanicu, 6, za trecu ...

'na drugoj stanici izadje 8 putnika koji su putovali do 2. stanice,
'i udje 7 + 9 + 4. 7 ljudi je kupilo kartu za 3. stanicu, 9 za 4. stanicu
...
'ukupno svi sa prve stanice - 8 koji su izasli + 7 + 9 + 4 koji su kupili
nove karte


'arrStanica(0) = arrZbirRedova(0) - arrZbirKolona(0)
'arrStanica(1) = arrStanica(0) - arrZbirKolona(1) + arrZbirRedova(1)
'racunamo koliko putnika je na svakoj stanici

'za prvu je isto kao zbir 1. reda, odnosno, niko ne izlazi
arrStanica(0) = arrZbirRedova(0)

'racunamo za ostale stanice
For x As Integer = 1 To 4
arrStanica(x) = arrStanica(x - 1) - arrZbirKolona(x) + arrZbirRedova(x)
Next

ListBox1.Items.Clear()

'ispisujemo elemente matrice u listbox
For a = 0 To 4
For b = 0 To 4

'provjeravamo da li je linija listboxa prazna
'ako jeste dodajemo (prvu) vrijednost u matricu
'ako ne radimo update.
'listbox.items(0) prijavi gresku ako linija 0 ne postoji. ako je
count = 0, onda nema ni te linije
If ListBox1.Items.Count = a Then
ListBox1.Items.Add(arrMatrica(a, b))
Else
ListBox1.Items(a) = ListBox1.Items(a) & " " & arrMatrica(a, b)
End If
Next
Next


'dodajemo i broj putnika po stanicama na listu
For a = 0 To ListBox1.Items.Count - 1
ListBox1.Items(a) = ListBox1.Items(a) & " /" & arrStanica(a)
Next

'dodijeljujemo najvecu vrijednost label kontroli za ispis
'funkcija imeMatrice.Max, vraca najveci element matrice
lblRezultat.Text = "Najveci broj putnika je " & arrStanica.Max
End Sub


End Class



15

Zakljuak je da je najvei broj putnika bio 38, tako da nam treba prevozno sredstvo koji
ima barem 38 mjesta.

2.6. Bouble sort
Sortirati niz koritenjem bouble sort algoritma.

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'po ucitavanju programa, popunimo combobox brojevima
For index = 1 To 50
cmbBroj.Items.Add(index)
Next
End Sub


Private Sub btnDodaj_Click(sender As System.Object, e As System.EventArgs)
Handles btnDodaj.Click, cmbBroj.SelectedValueChanged
'kada kliknemo na dugme dodaj, dodamo broj.
'provjerimo da li je unesen broj
If IsNumeric(cmbBroj.Text) Then
lstRezultat.Items.Add(cmbBroj.Text)
End If
End Sub



Private Sub btnSortriraj_Click(sender As System.Object, e As System.EventArgs)
Handles btnSortriraj.Click

'deklarisemo varijable
Dim temp, x, y, intMaxIndex As Integer

'dimenzionisemo matricu koliko ima elemenata u listbox-u
'-1, jer count daje broj elemenata, a ne max index

16

Dim arrLista(lstRezultat.Items.Count - 1) As Integer


'dodijelimo vrijednosti iz listbox-a u matricu
For index As Integer = 0 To lstRezultat.Items.Count - 1
arrLista(index) = lstRezultat.Items(index)
Next


'funkcija ubound vraca najveci index dimenzije matrice, a ne broj elemenata
'za 3 elementa, vraca broj 2
intMaxIndex = UBound(arrLista)


'za 4 elementa y = 0 pa 1 pa 2
'brojac kojim odredjujemo da svaki put smanjimo broj parova koje
usporedjujemo
For y = 0 To intMaxIndex - 1

'usporedjujemo clan sa lijeve strane sa desnim
'ako je veci, mijenjaju mjesta
'-y jer svaki put smanjujemo broj parova koje usporedjujemo
'za 4 elementa xMaxInd = 01,12,23; 01,12(y=1); 01 (y=2)

For x = 0 To intMaxIndex - 1 - y
If arrLista(x) > arrLista(x + 1) Then
temp = arrLista(x)
arrLista(x) = arrLista(x + 1)
arrLista(x + 1) = temp
End If
Next

Next


'ispis u listbox
lstRezultat.Items.Clear()
For index = 0 To intMaxIndex
lstRezultat.Items.Add(arrLista(index))
Next
End Sub

Private Sub btnObrnuto_Click(sender As System.Object, e As System.EventArgs)
Handles btnObrnuto.Click

'kreiramo privremenu matricu. ovdje smo koristili tip object da bi smo mogli
koristiti array copy
' koji zauzima puno memorije.

'odredimo velicinu matrice
Dim temparray(lstRezultat.Items.Count - 1) As Object

'kopiramo sadrzaj listboxa u array
lstRezultat.Items.CopyTo(temparray, 0)

'zamijenimo mjesta elementima
Array.Reverse(temparray)


17

'dodamo u listbox
lstRezultat.Items.Clear()
lstRezultat.Items.AddRange(temparray)
End Sub

Private Sub btnObrisiListu_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnObrisiListu.Click
lstRezultat.Items.Clear()
End Sub
End Class


2.7. Podijeliti dva broja na odreeni broj decimala
Nainiti program koji dijeli dva broja na zadani broj decimala.

Public Class Form1

Private Sub btnIzracunaj_Click(sender As System.Object, e As System.EventArgs)
Handles btnIzracunaj.Click

'deklarisemo tip promjenjivih
Dim intPrvi, intDrugi, intBrojDecimala, intBrojac, intRezultat As Integer

'provjera unesnih vrijednosti
If Not IsNumeric(txtPrviBroj.Text) Or Not IsNumeric(txtDrugiBroj.Text) Then
MsgBox("Molim unesite brojeve")
Exit Sub
End If

If txtDrugiBroj.Text = 0 Then
MsgBox("Dijeljenje sa nulom nema smisla")
Exit Sub
End If

'dodjela vrijednosti promjenjivim
intPrvi = Int(txtPrviBroj.Text)
intDrugi = Int(txtDrugiBroj.Text)


18

intBrojDecimala = Int(txtBrojDecimala.Text)

'podijelimo prvi sa drugim
'cijelobrojnu vrijednost dodamo u rezultat
txtRezultat.Text = intPrvi \ intDrugi & ","

'izracunamo ostatak kod dijeljenja prvog sa drugim
intRezultat = intPrvi Mod intDrugi

'petlja se ponavlja dok rezultat dijeljenja ne bude 0, ili dok ne dodjemo do
broja decimala
Do Until intRezultat = 0 Or intBrojac = intBrojDecimala

'smjestamo ostatak dijeljenja u varijablu intRezultat
intRezultat = intPrvi Mod intDrugi

'ostatku dopisemo 0 i podijelimo sa drugim
'ovo postaje prvi broj
intPrvi = intRezultat * 10

'potreban nam je cjelobrojni ostatak
'20/7 = 3 (2.85), 20\7 = 2. moze i int(20/7)

'dodamo rezultat u listu
txtRezultat.Text = txtRezultat.Text & intPrvi \ intDrugi
'povecamo brojac decimala za 1
intBrojac = intBrojac + 1

'uslov za izlazak iz liste je ili da je re
Loop

End Sub

End Class

Rezultat se dodaje u tekst box.

2.8. Pronai najvei i najmanji lan niza


19


Public Class Form1

Private Sub btnUnesi_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnUnesi.Click
'deklarisemo varijable
Dim intBrojClanova, index As Integer

'trazimo od korisnika da unese broj clanova
intBrojClanova = InputBox("Unesite broj clanova niza")


'kreiramo matricu velicine broj clanova koji nam treba
'-1 zato sto index clanova krece od 0
Dim arrNiz(intBrojClanova - 1) As Integer

'pripremimo listbox za upotrebu
ListBox1.Items.Clear()

'unosimo clanove
For index = 1 To intBrojClanova
arrNiz(index - 1) = InputBox("Unesite " & index & ". clan")
ListBox1.Items.Add(arrNiz(index - 1))
Next

'deklarisemo promjenjive za index najveceg i najmanjeg broja
Dim intMaxIndex, intMinIndex As Integer

'dodijelimo im vrijednosti
intMaxIndex = 0
intMinIndex = 0

'usporedjujemo svaki clan niza sa najmanjim. ako je clan manji od najmanjeg,
index trenutnog clana, postaje index najmanjeg clana
'isto radimo i za najveci clan
'getupperbound(0) nam vraca najveci index u matrici. (da bi smo saznali do
kojeg indexa elementa matrice da idemo)
'0 oznacava dimenziju. 0 je prva dimenzija.

For index = 0 To arrNiz.GetUpperBound(0)
If arrNiz(index) < arrNiz(intMinIndex) Then
intMinIndex = index
End If

If arrNiz(index) > arrNiz(intMaxIndex) Then
intMaxIndex = index
End If
Next

txtNajmanji.Text = arrNiz(intMinIndex)
txtNajveci.Text = arrNiz(intMaxIndex)

End Sub

End Class


20

Program koristi matricu za skladitenje podataka. Provjerava koji je broj manji, i njemu
daje index najmanjeg. Slinios se radi i za pronalaenje najveeg broja.

2.9. Pronai najvei zajedniki djelilac
Nainiti program koji ispisuje najvei zajednici djelilac dva broja.
Najvei zajedniki djelilac je broj sa kojim moemo da podijelimo oba broja bez
ostatka. Odnosno najvei broj c, takav da a/c i b/c ne daje ostatak


Public Class Form1

Private Sub btnIzracunaj_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnIzracunaj.Click

'deklarisemo promjenjive
Dim intPrvi, intDrugi, intRezultat As Integer

'da li su uneseni brojevi
If Not IsNumeric(txtPrvi.Text) Or Not IsNumeric(txtDrugi.Text) Then
MsgBox("Molim unesite brojeve vece od 0")
Exit Sub
End If

'da li su uneseni brojevi veci od 0
If txtPrvi.Text <= 0 Or txtDrugi.Text <= 0 Then
MsgBox("Molim unesite brojeve vece od 0")
Exit Sub
End If

'dodijelimo vrijednosti promjenjivim
intPrvi = txtPrvi.Text
intDrugi = txtDrugi.Text
txtRezultat.Text = ""

'KORAK 1. Podeliti m sa n i ostatak zapamtiti u r

21

'KORAK 2. Ukoliko je r jednako 0, NZD je n i KRAJ, u suprotnom prelazimo na
KORAK 3
'KORAK 3. Zameniti m sa n, n sa r, i prei na KORAK 1


Do

'KORAK 1. Podeliti m sa n i ostatak zapamtiti u r
intRezultat = intPrvi Mod intDrugi

'zamijeniti prvi sa drugim, a drugi sa rezultatom
'buduci da nam prvi vise ne treba, a drugi prima vrijednost rezultata,
'mozemo direktno da dodijelimo vrijednosti

intPrvi = intDrugi
intDrugi = intRezultat

Loop Until intRezultat = 0


'rezultat je u prvom, buduci da su prvi i drugi vec zamijenili mjesta
txtRezultat.Text = intPrvi


End Sub


End Class


Za izraunavanje najveeg zajednikog delioca koristi se Euklidov algoritam
1. Podeliti m sa n i ostatak zapamtiti u r
2. Ukoliko je r jednako 0, NZD je n i KRAJ, u suprotnom prelazimo na KORAK 3
3. Zameniti m sa n, n sa r, i prei na KORAK 1
1


2.10. Pronai najmanji zajedniki sadrilac

Nainiti program koji pronalazi najmanji zajedniki sadrilac.

1
(Avramovic)

22



Prvi nain je da pronaemo broj sa kojim se prvi moe podijeliti bez ostatka, a zatim
provjerimo da li se i drugi broj moe podijeliti sa njim bez ostatka.
Drugi nain je da koristimo Euklidov algoritam, kao dio formule za pronalaenje
najveeg zajednikog djelioca.
Formula je

Public Class Form1

Private Sub btnIzracunaj_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnIzracunaj.Click
'deklarisemo tip varijabli
Dim a, b, temp, i As Integer

'pripremimo polje txtRezultat za unos
txtRezultat.Text = ""

'provjerimo da li su uneseni brojevi
If Not IsNumeric(a) Or Not IsNumeric(b) Then
MsgBox("Molimo unesite brojeve vece ili jednake 0")
Exit Sub
End If

'provjerimo da li su uneseni brojevi veci od nule
If a < 0 Or b < 0 Then
MsgBox("Molimo unesite brojeve vece ili jednake 0")
Exit Sub
End If

'dodijelimo vrijednosti promjenjivim
a = txtPrvi.Text
b = txtDrugi.Text



23

If a = 0 Or b = 0 Then
txtRezultat.Text = 0
MsgBox("Po definiciji, ako je a ili b = 0, nzs je 0")
Exit Sub
End If


'ako je b > a, mijenjaju mjesta
If b > a Then
temp = a
a = b
b = temp
End If


'" ()
"
'npr za 3 i 5 = 15
'provjeravamo da li je a djeljivo sa nekim brojem bez ostatka
'ako jeste, provjeravamo da li je b djeljivo sa istim brojem bez ostatka
For i = a To a * b
If i Mod a = 0 Then
If i Mod b = 0 Then
txtRezultat.Text = i
'ispisujemo rezultat i izlazimo iz petlje
Exit For
End If
End If
Next
End Sub


Private Sub btnIzracunajuzNZD_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnIzracunajuzNZD.Click
'deklarisemo tip varijabli
Dim a, b As Integer

'pripremimo polje txtRezultat za unos
txtRezultat.Text = ""

'provjerimo da li su uneseni brojevi
If Not IsNumeric(a) Or Not IsNumeric(b) Then
MsgBox("Molimo unesite brojeve vece ili jednake 0")
Exit Sub
End If
'provjerimo da li su uneseni brojevi veci od nule
If a < 0 Or b < 0 Then
MsgBox("Molimo unesite brojeve vece ili jednake 0")
Exit Sub
End If

'dodijelimo vrijednosti promjenjivim
a = txtPrvi.Text
b = txtDrugi.Text

If a = 0 Or b = 0 Then
txtRezultat.Text = 0
MsgBox("Po definiciji, ako je a ili b = 0, nzs je 0")

24

Exit Sub
End If

'ispisemo rezultat, koristeci funkciju nzd.
'po definiciji formule, u nazivniku se koristi apsolutna vrijednost
proizvoda dva clana
txtRezultat.Text = Math.Abs(a * b) / nzd(a, b)
End Sub
End Class

Private Function nzd(ByVal intPrvi As Integer, ByVal intDrugi As Integer) As
Integer
'deklarisemo varijable
Dim intRezultat As Integer

'KORAK 1. Podeliti m sa n i ostatak zapamtiti u r
'KORAK 2. Ukoliko je r jednako 0, NZD je n i KRAJ, u suprotnom prelazimo na
KORAK 3
'KORAK 3. Zameniti m sa n, n sa r, i prei na KORAK 1

Do
intRezultat = intPrvi Mod intDrugi
intPrvi = intDrugi
intDrugi = intRezultat

Loop Until intRezultat = 0

Return intPrvi

End Function


2.11. Ispisati brojeve Fibbonacijevog niza
Nainiti broj koji ispisuje brojeve Fibonaccijevog niza.


25



Public Class Form1


Private Sub btnIzracunaj_Click(sender As System.Object, e As System.EventArgs)
Handles btnIzracunaj.Click
'deklarisemo tip varijabli
'decimal moze da ispise vrijednosti do 10^28, ali zauzima puno memorije, 16
byta
'matrica sa 100 clanova
Dim a(99) As Decimal

'prva dva clana niza su 0 i 1
a(0) = 0
a(1) = 1

'pripremimo listbox, i dodamo prva dva clana
ListBox1.Items.Clear()
ListBox1.Items.Add(a(0))
ListBox1.Items.Add(a(1))

'petlja se izvrsava od 2 do 99
'racunamo clanove od 3. to 100., odnosno sa indeksom od 2 do 99
For i = 2 To 99
'clan 3 je jednak zbiru clanova 1 i 2, odnosno a = (a - 1) + (a - 2)
a(i) = a(i - 1) + a(i - 2)
'dodamo u listbox
ListBox1.Items.Add(a(i))
Next

'ispisemo broj clanova, i broj cifara najveceg clana

26

Label1.Text = ListBox1.Items.Count & " clanova, " &
ListBox1.Items(ListBox1.Items.Count - 1).ToString.Length & " cifre."

End Sub
End Class

Koriten je tip varijable decimal, koji moze da ispise vrijednosti do 10^28, ali zauzima
puno memorije, 16 bajta.


2.12. Pronai aritmetiku, geometrijsku i harmonijsku sredinu
Nainiti program koji ispisuje aritmetiku, geometrijsku i harmonijsku sredinu.
Aritmetika sredina je

Geometrijska sredina je:

Uz napomenu da se 2. korijen is broja a moe napisati kao a
1/2
.

Harmonijska sredina je



Public Class Form1


Private Sub btnDodaj_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnDodaj.Click
'dodajemo brojeve iz textboxa u listbox, ako su brojevi a ne slova

27

If IsNumeric(txtUlaz.Text) Then
lstUlaz.Items.Add(txtUlaz.Text)
End If
End Sub

Private Sub btnIzracunaj_Click(sender As System.Object, e As System.EventArgs)
Handles btnIzracunaj.Click
'deklarisemo tip promjenjivih
Dim intZbir, intProizvod As Integer
'zbir reciprocnih vrijednosti elemenata
Dim dblRecZbir As Double

'racunamo zvir clanova za aritmeticku sredinu
For x = 0 To lstUlaz.Items.Count - 1
intZbir = intZbir + lstUlaz.Items(x)
Next

'dodijeljujemo varijabli intProizvod neutralnu vrijednost za mnozenje
intProizvod = 1
'racunamo proizvod clanova, potreban za geometrijsku sredinu
For x = 0 To lstUlaz.Items.Count - 1
intProizvod = intProizvod * lstUlaz.Items(x)
Next

'racunamo zbir reciprocnih vrijednosti elemenata, zaharmonijsku sredinu
For x = 0 To lstUlaz.Items.Count - 1
dblRecZbir = dblRecZbir + (1 / lstUlaz.Items(x))
Next

'a sredina x1+x2+x3 / 3
'g sredina: 3 clana = '(x1*x2*x3) ^ (1 /3)
'h sredina: 3 / (1/prvi + 1/drugi+ 1/treci)

'ispisujemo rezultate
lstIzlaz.Items.Clear()
lstIzlaz.Items.Add("Zbir clanova: " & intZbir)
lstIzlaz.Items.Add("Aritmeticka sredina: " & Math.Round(intZbir /
lstUlaz.Items.Count, 3))
lstIzlaz.Items.Add("Geometrijska sredina: " & Math.Round(intProizvod ^ (1 /
lstUlaz.Items.Count), 3))
lstIzlaz.Items.Add("Harmonijska sredina: " & Math.Round(lstUlaz.Items.Count
/ dblRecZbir, 3))



End Sub


Private Sub btnIzbrisi_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnIzbrisi.Click
'brisemo sadrzaj ulaznih elemenata
txtUlaz.Clear()
lstUlaz.Items.Clear()
lstIzlaz.Items.Clear()
End Sub


End Class

28




2.13. Pronai prvi manji lan od harmonijske sredine

Nainiti program koji za niz brojeva pronalazi prvi manji lan od harmonijske sredine.
Harmonijska sredina je .


Public Class Form1

Private Sub btnDodaj_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnDodaj.Click

'provjeravamo da li je unesen broj
'dodajemo ga u listbox
If IsNumeric(txtUlaz.Text) Then
ListBox1.Items.Add(txtUlaz.Text)
End If
End Sub



Private Sub btnPronadji_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnPronadji.Click
'deklarisemo matricu i promjenjive
'matricu deklarisemo da ima isti broj elemenata kao i listbox
Dim arrNiz(ListBox1.Items.Count - 1) As Integer

'deklarisemo ostale promjenjive
Dim x, y, temp As Integer


29


'unosimo elemente is listboxa u matricu
For index = 0 To ListBox1.Items.Count - 1
arrNiz(index) = ListBox1.Items(index)
Next

'deklarisemo varijable za harmonijsku sredinu
'za rezultat i zbir reciprocnih vrijednosti elemenata
Dim dblHarSre, dblRecZbir As Double


'racunanje harmonijske sredine
'za svaku vrijednost niza, racunamo zbir reciprocnih vrijednosti elemenata
'koristimo for each , koja prolazi kroz sve vrijednosti matrice
For Each item As Double In arrNiz
dblRecZbir = dblRecZbir + (1 / item)
Next

'broj clanova niza / zbir reciprocnih vrijednosti elemenata
'get length(0) sadrzi duzinu prve dimenzije, odnosno broj clanova
dblHarSre = arrNiz.GetLength(0) / dblRecZbir


'potrebno nam je da sortiramo niz opadajuci
'GetUpperBound(0) = max index
For y = 0 To arrNiz.GetUpperBound(0) - 1

For x = 0 To arrNiz.GetUpperBound(0) - 1 - y
If arrNiz(x) < arrNiz(x + 1) Then
temp = arrNiz(x)
arrNiz(x) = arrNiz(x + 1)
arrNiz(x + 1) = temp
End If
Next
Next

'dodamo sortirani niz u listbox
ListBox1.Items.Clear()
For Each item In arrNiz
ListBox1.Items.Add(item)
Next

'trazimo 1 manji clan niza od harmonijske sredine
For Each item In arrNiz
If item < dblHarSre Then
'ispisujemo harmonijsku sredinu, i clan
'zaokruzujemo na 3 decimalna mjesta koristeci math.round funkciju.
broj 3 oznacava broj decimala
lblRezultat.Text = "Prvi manji broj od harmonijske sredine (" &
Math.Round(dblHarSre, 3) & ") je: " & item
'izlazimo iz for petlje, jer ne zelimo ispisati ako ima jos clanova
manjih od harmonijske sredine
Exit For
End If
Next
End Sub



30

End Class




2.14. Ispisati n prostih brojeva
Nainiti program koji ispisuje n prostih brojeva.
Broj je prost ako je djeljiv samo sa 1 i sa samim sobom.





Public Class Form1

Private Sub btnIzracunaj_Click(sender As System.Object, e As System.EventArgs)
Handles btnIzracunaj.Click
'provjera da li je unesen odgovarajuci broj
If Not IsNumeric(txtUkupnoBrojeva.Text) Then
MsgBox("Molim unesite broj veci od 0")
Exit Sub
End If

'da li su broj veci od 0
If txtUkupnoBrojeva.Text <= 0 Then
MsgBox("Molim unesite broj veci od 0")
Exit Sub
End If



'deklarisemo varijable broja i index kao cjelobrojne promjenjive.

31

Dim index As Integer

'dodijelimo pocetne vrijednosti promjenjivima
index = 1

'obrisemo sve stavke iz listboxa.
ListBox1.Items.Clear()


'izvrsavamo program u petlji dok ne izracunamo zadani broj rezultata

Do Until ListBox1.Items.Count = txtUkupnoBrojeva.Text
'ako funkcija prost vrati true, broj dodajemo u listu prostih brojeva
If Prost(index) Then
ListBox1.Items.Add(index)
End If
'provjeravamo sljedeci broj
index = index + 1
Loop

End Sub

Private Function Prost(ByVal broj As Integer) As Boolean
Dim i, max As Integer

'broj 1 nije prost broj
If broj = 1 Then
'return vraca vrijednost i izlazi iz funkcije
Return False
End If

'ako je broj veci od 2 i paran, nije prost
If broj Mod 2 = 0 And broj > 2 Then
'return vraca vrijednost i izlazi iz funkcije
Return False
End If

'izracunamo korijen iz broja za koji provjeravamo da li je prost
max = Math.Sqrt(broj)

'provjeravamo za sve brojeve da li su djeljivi bez ostatka, sa brojevima
manjim od
'zadanog broja. ako je tacno, zadani broj nije prost.
For i = 2 To max
If broj Mod i = 0 Then
Return False
End If
Next


'Ako je prosao test, broj je prost.
'vracamo se u glavni program.
Return True

End Function


End Class

32



2.15. Prikazati histogramom generator sluajnih brojeva

Nainiti progam koji prikazuje generator sluajnih brojeva za 1000 generisanih brojeva.
Rezultat prikazati histogramom.


Public Class Form1

Private Sub btnIspisi_Click(sender As System.Object, e As System.EventArgs)
Handles btnIspisi.Click
'deklarisemo promjenjive
Dim intNumber As Integer
Dim rndDouble As Double

'pripremimo listobx za koristenje
lstGraph.Items.Clear()

'oznacimo brojeve od 1-10 na histogramu
For index = 1 To 10
If index < 10 Then
'dodamo razmak ako je broj manji od 10, da bi bilo poravnano
lstGraph.Items.Add(" " & index & "| ")
Else
'ako ne, samo dodamo broj
lstGraph.Items.Add(index & "| ")
End If
Next

'randomize, da bi smo dobili svaki put razlicite brojeve
Randomize()

'kreiramo rnd brojeve
For index = 1 To 1000
rndDouble = Rnd()
'Koristimo int() da bi smo dobili vrijednosti 0 1 2 ... 9
'Komanda Cint() zaokruzuje 9.8 na 10.
'int() uzima samo cijele vrijednosti
'dodajemo 1 jer nam trebaju 1 2 3 ... 10
intNumber = Int(rndDouble * 10) + 1

33


'dodamo vrijednosti na dijagram. po jednu liniju za svaki put kada se
broj pojavi
lstGraph.Items(intNumber - 1) = lstGraph.Items(intNumber - 1) & "|"

Next


'prebrojimo vrijednosti, -4 za oznake. Upisemo vrijednosti na histogram.
For index = 0 To 9
'ove vrijednosti se mogu smjestiti u matricu, ako su nam potrebni za
kasnije
'dim arrListaBrojeva(0 to 9) as Integer , van petlje
'arrListaBrojeva(index) = lstGraph.Items(index).ToString.Length - 4

'upisemo brojcane vrijednosti na histogram
lstGraph.Items(index) = lstGraph.Items(index) &
lstGraph.Items(index).ToString.Length - 4

Next
End Sub

End Class

Program koristi listobox element za histogram. Pored svakog broja je ispisan i broj
generisanih brojeva.

2.16. Ispisati proste brojeve izmeu m i n

Nainiti program koji ispisuje proste brojeve izmeu m i n.


Public Class Form1



34

Private Sub btnIzracunaj_Click(sender As System.Object, e As System.EventArgs)
Handles btnIzracunaj.Click

'da li su uneseni brojevi
If Not IsNumeric(txtOd.Text) Or Not IsNumeric(txtDo.Text) Then
MsgBox("Molim unesite brojeve vece od 0")
Exit Sub
End If

'da li su uneseni brojevi veci od 0
If txtOd.Text <= 0 Or txtDo.Text <= 0 Then
MsgBox("Molim unesite brojeve vece od 0")
Exit Sub
End If

'obrisemo sve stavke iz listboxa.
ListBox1.Items.Clear()

'izvrsavamo program u petlji dok ne izracunamo proste brojeve u zadanom
rasponu
For index = CInt(txtOd.Text) To CInt(txtDo.Text)
If Prost(index) Then
ListBox1.Items.Add(index)
End If
Next
End Sub


Private Function Prost(ByVal broj As Integer) As Boolean
Dim i, max As Integer

'broj 1 nije prost broj
If broj = 1 Then
'return vraca vrijednost i izlazi iz funkcije
Return False
End If

'ako je broj veci od 2 i paran, nije prost
If broj Mod 2 = 0 And broj > 2 Then
'return vraca vrijednost i izlazi iz funkcije
Return False
End If

'izracunamo korijen iz broja za koji provjeravamo da li je prost
max = Math.Sqrt(broj)

'provjeravamo za sve brojeve da li su djeljivi bez ostatka, sa brojevima
manjim od
'zadanog broja. ako jesu, zadani broj nije prost.
For i = 2 To max
If broj Mod i = 0 Then
Return False
End If
Next


'Ako je prosao test, broj je prost.
'vracamo se u glavni program.

35

Return True


End Function


End Class


2.17. Ispisati djelioce broja
Nainiti program koji ispisuje sve djelioce broja.



Public Class Form1

Private Sub btnIspisi_Click(sender As System.Object, e As System.EventArgs)
Handles btnIspisi.Click
'deklarisemo varijablu kao tip integer
Dim intBroj As Integer

'provjeravamo da li je unesen broj
If Not IsNumeric(txtBroj.Text) Then
MessageBox.Show("Morate unijeti broj veci od 0")
Exit Sub
End If

'provjeravamo da li je unesen broj veci od 0
If txtBroj.Text <= 0 Then
MsgBox("Morate unijeti broj veci od 0")
Exit Sub
End If

'brisemo sadrzaj list boxa od prijasnjih unosa

36

lstListaBrojeva.Items.Clear()


'dodijeljujemo vrijednost promjenjivoj dblBroj iz sadrzaja txtBroja
intBroj = txtBroj.Text

'svaki broj je djeljiv sa 1
lstListaBrojeva.Items.Add(1)

'ako broj podijeljen sa drugim, manjim, brojem nema ostatka, dodajemo ga u
listu
'krecemo od 2

For index = 2 To intBroj / 2
If intBroj Mod index = 0 Then
lstListaBrojeva.Items.Add(index)
End If
Next

End Sub
End Class



2.18. Ispisati savrene brojeve
Nainiti program koji ispisuje savreene brojeve.
Broj je savrsen ako je jednak zbiru svojih djelilaca.
Koriste se dva naina:
pronalazimo djelioce broja saberemo ih, u uporedimo sa zadanim brojem. Ako je
rezultat jednak zadanom broju, broj je savren.
Euklid je dokazao da je 2
(p1)
* ( 2
(p)
1) paran savrsen broj, ako je 2
(p)
1 prost
broj
Da bi 2
(p)
1 bio prost, p mora biti prost broj.
Prva cetiri broja izracunata formulom 2
(p1)
* (2
(p)
1):
(p je prost broj):
za p = 2: 2^1 * (2^2 1) = 6
za p = 3: 2^2 * (2^3 1) = 28
za p = 5: 2^4 * (2^5 1) = 496
za p = 7: 2^6 * (2^7 1) = 8128.
Drugi metod je mnogo bri.
Napomena: potrebno je obratiti panju na veliinu brojeva, pri izraunavanju.


37



Public Class Form1

Private Sub btnIzracunaj_Click(sender As System.Object, e As System.EventArgs)
Handles btnIzracunaj.Click
'deklaracija tipa promjenjivih
Dim intBroj As Integer

'naci savrsen broj manji od milijardu
For intBroj = 1 To 1000000000

'pozivamo funkciju savrsen sa parametrom broja koji provjeravamo
If Savrsen(intBroj) Then

'ako funkcija vrati true, prikazujemo broj

'ako odaberemo cancel, program izlazi iz podrutine
If MsgBox(intBroj, MsgBoxStyle.OkCancel) = 2 Then
Exit Sub
End If

End If
Next


End Sub

Private Function Savrsen(intBroj As Integer) As Boolean
'deklaracija promjenjivih
Dim IntZbir, x As Integer

'trazimo djelioce broja
For x = 1 To intBroj / 2
If intBroj Mod x = 0 Then
'saberemo ih
IntZbir = IntZbir + x
End If
Next

'broj je savrsen ako je jednak zbiru svojih djelilaca
If intBroj = IntZbir Then
Return True
Else
Return False
End If

End Function

38



Private Sub btnIzracunaj2_Click(sender As System.Object, e As System.EventArgs)
Handles btnIzracunaj2.Click

'Euklid je dokazao da je 2^(p1) * ( 2^(p) 1) paran savrsen broj, ako je
2^(p) 1 prost broj (Euclid, Prop. IX.36).
'Da bi 2^(p) 1 bio prost, p mora biti prost broj.
'Prva cetiri broja izracunata formulom 2^(p1) * (2^(p) 1):
'(p je prost broj)

'za p = 2: 2^1 * (2^2 1) = 6
'za p = 3: 2^2 * (2^3 1) = 28
'za p = 5: 2^4 * (2^5 1) = 496
'za p = 7: 2^6 * (2^7 1) = 8128.

'deklarisanje promjenjivih
Dim rezultat, i, prost2 As Decimal

'petlja za prvih 100 brojeva
For i = 1 To 100
'ako je broj prost
If prost(i) Then

'ako je rezultat formule veci od najveceg decimalnog, prijavljujemo
gresku, i izlazimo iz programa.
If 2 ^ i - 1 > 79228162514264337593543950335D Then
MsgBox("prevelik broj" & " " & 2 ^ i - 1 & " " & i)
Exit Sub
End If

'izracunavamo formulu
prost2 = 2 ^ i - 1

'ako je i ovo prost broj, ispisujemo rezultat. napomena: rezultat ne
vazi za 11, zato moramo provjeriti
If prost(prost2) Then

rezultat = 2 ^ (i - 1) * (2 ^ i - 1)

'ako odaberemo cancel, program izlazi iz podrutine
If MsgBox("savrsen broj: " & rezultat &
", broj cifara: " & rezultat.ToString.Length &
", prost broj: " & i, MsgBoxStyle.OkCancel) = 2 Then
Exit Sub
End If

End If
End If
Next
End Sub


Private Function prost(ByVal intBroj As Decimal) As Boolean
'deklaracija promjenjivih
Dim x As Decimal

'provjera da li je broj prost

39

If intBroj = 1 Then
Return False
End If
If intBroj = 2 Then
Return True
End If

'provjeravamo do korijena zadanog broja
For x = 2 To Math.Sqrt(intBroj)
'ako je djeljiv sa nekim drugim brojem, nije prost.
If intBroj Mod x = 0 Then
Return False
End If
Next

Return True

End Function


End Class

2.19. Iscrtati krug unutar kvadrata
U kvadrat smjeten u severozapadnom uglu ekrana, ucrtati krug upola manje povrine.




Public Class Form1

Private Sub btnIscrtaj_Click(sender As System.Object, e As System.EventArgs)
Handles btnIscrtaj.Click

40

'deklarisemo kanvas kao tip bitmap
Dim kanvas As Bitmap

'dodijelimo joj pocetnu vrijednost
kanvas = New Bitmap(PictureBox1.Width, PictureBox1.Height)

'deklarisemo varijablu grafika kao graphics/kazemo da cemo raditi sa
graphics tipom crtanja
Dim grafika As Graphics

'kazemo da cemo crtati na kanvas kontroli
grafika = Graphics.FromImage(kanvas)

'u kvadrat ucrtati krug upola manje povrsine

Dim stranaKvadrata, povrsinaKvadrata As Integer
stranaKvadrata = txtStranaKvadrata.Text
povrsinaKvadrata = stranaKvadrata * stranaKvadrata

'cratamo kvadrat strana 100 * 100
grafika.DrawRectangle(Pens.Black, 0, 0, stranaKvadrata, stranaKvadrata)

'povrsina kvadrata je 100 * 100 = 10000
'povrsina kruga je r^2 p, i mora biti 5000 (upola manja od povrsine
kvadrata)
'r^2 * p = 5000
'znaci da je r = korijen iz (5000/p)
Dim r As Double = Math.Sqrt((povrsinaKvadrata / 2) / Math.PI)


'ako krug ima radijus r, stranica kvadrata u koji je upisan je 2 *r
Dim stranicaUnutrasnjegKvadrata As Double = r * 2

'crtamo elipsu
'ako je unutrasni kvadrat velicine 80, zaljepljen uz jednu stranu, to znaci
da ostane 20 pixela sa strane. 100-80=20
'sto znaci da svake strane treba da ostane 10 pixela. (100-80)/2, ako hocemo
da ga postavimo u sredinu
grafika.DrawEllipse(Pens.Red, CInt((stranaKvadrata -
stranicaUnutrasnjegKvadrata) / 2), CInt((stranaKvadrata -
stranicaUnutrasnjegKvadrata) / 2), CInt(stranicaUnutrasnjegKvadrata),
CInt(stranicaUnutrasnjegKvadrata))

'prikazemo sliku u picturebox-u
PictureBox1.Image = kanvas
Label1.Text = ("Povrsina kvadrata = " & stranaKvadrata ^ 2)
Label2.Text = ("Povrsina kruga = " & (r ^ 2) * Math.PI)

End Sub
End Class

2.20. Korijen iz e, koristei Tajlerov teorem
Nainiti program za raunanje korijena iz e, koristei Tajlorov teorem, uz preciznost
0,00005.

41



Public Class Form1

Private Sub btnIzracunaj_Click(sender As System.Object, e As System.EventArgs)
Handles btnIzracunaj.Click

'formula je e^x = 1 + x/1! + x^2/2! + ... x^n/n!
'trazi se e, kod odredjene preciznosti.
'x^n/n! mora biti manje od tacnosti

'deklarisanje promjenjivih
Dim x, dblRezultat, dblTacnost, dblKolicnik As Double
Dim n As Integer

'2. korijen iz e sa moze napisati kao e ^ 1/2. x = 1/2
x = 1 / txtKorijen.Text


'dodijeljivanje vrijednosti promjenjivoj tacnost
dblTacnost = txtTacnost.Text

'petlja se izvrsava dok kolicnik ne bude manji od tacnosti
'0! =1
'x^0 = 1
Do
dblKolicnik = (stepen(x, n) / faktorijel(n))
dblRezultat = dblRezultat + dblKolicnik
n = n + 1
Loop Until dblKolicnik < dblTacnost

'ispisemo rezultat
lblRezultat.Text = " Korijen iz e = " & dblRezultat
End Sub

Private Function faktorijel(ByVal n As Integer) As Long
'deklarisanje varijabli i dodjela vrijednosti
Dim lngRezultat As Long
lngRezultat = 1

'racunamo faktorijel

42

For index = 2 To n
lngRezultat = lngRezultat * index
Next
'vracamo rezultat
Return lngRezultat

End Function

Private Function stepen(ByVal x As Double, ByVal n As Integer) As Double
'deklarisanje varijabli i dodjela vrijednosti
'x ^ n
'x moze biti i decimalna vrijednost, zato mora biti definisan kao double
(0,5 ...)
Dim dblRezultat As Double
dblRezultat = 1

'racunamo stepen
For index = 1 To n
dblRezultat = dblRezultat * x
Next
'vracamo rezultat
Return dblRezultat

End Function

End Class








43

3. Domaa zadaa
3.1. Program: Microsoft Visual Basic 2010 Express, Windows Xp 32-bit

Pitanje 1 : ta se deava kada deklarisemo vie varijabli u jednom redu?

Public Class Form1

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs)
Handles Button1.Click
'deklarisanje varijabli
Dim a, b, c As Integer

'ispisi tip varijabli
MessageBox.Show("a: " & a.GetType().ToString & " b: " &
b.GetType().ToString & " c: " & c.GetType().ToString)
'program prijavljuje da su sve varijable tipa Integer:
'a: System.Int32 b: System.Int32 c: System.Int32

End Sub
End Class



Pitanje 2: Pokuajte konvertovati tip String u tip Int

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs)
Handles Button1.Click
'deklarisanje varijabli
Dim intVar1 As Integer
Dim strTekst As String

strTekst = "Tekst je poruka"
intVar1 = CInt(strTekst)

End Sub
End Class

Ne moe. Pojavi se poruka "Conversion from string "Tekst je poruka" to type 'Integer' is
not valid."



Pitanje 3: Automatska konverzija tipova podataka
Public Class Form1

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs)
Handles Button1.Click
'deklarisanje varijabli
Dim intVar1 As Integer
Dim dblVar1 As Double

'dodijeli vrijednost varijabli intVar1
intVar1 = 3

'dodijeli vrijednost integer + double varijabli dblVar1.

44

dblVar1 = intVar1 + 1.3
'vrijednost intVar1 se automatski konvertuje u double. dblVar1 ima
vrijednost 4.3

End Sub
End Class


Pitanje 4: Razlika izmeu operatora / i \
Public Class Form1

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs)
Handles Button1.Click
'deklarisanje varijabli
Dim a, b, c As Double

'dodjela vrijednosti
a = 10
b = 4

c = a / b
MessageBox.Show(c.ToString())
'rezultat je realan broj, 2.5

c = a \ b
MessageBox.Show(c.ToString())
'rezultat je cjelobrojan, 2

End Sub
End Class


Pitanje 5: Upotreba & i +
Public Class Form1

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs)
Handles Button1.Click
'deklarisanje varijabli
Dim a, b, c, d As Object

'dodjela vrijednosti
a = 11
b = "13.01"
c = a + b
'c ima vrijednost 24.009, i tip double

d = a & b
'd ima vrijednost "1113.01" i tip string

'VB je prepoznao tip varijabli

MessageBox.Show("c: " & c & " " & c.GetType().ToString() & " " &
"d: " & d & " " & d.GetType().ToString())

End Sub
End Class

Isto se deava i ako je varijabla "a" tipa integer, i varijabla "b" tipa string.


45










3.2. Program: Microsoft Visual Basic 2010 Express, Windows Xp 32-bit

Pitanje 1 : ta se deava kada deklarisemo vie varijabli u jednom redu?

Public Class Form1

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs)
Handles Button1.Click
'deklarisanje varijabli
Dim a, b, c As Integer

'ispisi tip varijabli
MessageBox.Show("a: " & a.GetType().ToString & " b: " &
b.GetType().ToString & " c: " & c.GetType().ToString)
'program prijavljuje da su sve varijable tipa Integer:
'a: System.Int32 b: System.Int32 c: System.Int32

End Sub
End Class



Pitanje 2: Pokuajte konvertovati tip String u tip Int

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs)
Handles Button1.Click
'deklarisanje varijabli
Dim intVar1 As Integer
Dim strTekst As String

strTekst = "Tekst je poruka"
intVar1 = CInt(strTekst)

End Sub
End Class

Ne moe. Pojavi se poruka "Conversion from string "Tekst je poruka" to type 'Integer' is
not valid."



Pitanje 3: Automatska konverzija tipova podataka
Public Class Form1

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs)
Handles Button1.Click

46

'deklarisanje varijabli
Dim intVar1 As Integer
Dim dblVar1 As Double

'dodijeli vrijednost varijabli intVar1
intVar1 = 3

'dodijeli vrijednost integer + double varijabli dblVar1.
dblVar1 = intVar1 + 1.3
'vrijednost intVar1 se automatski konvertuje u double. dblVar1 ima
vrijednost 4.3

End Sub
End Class


Pitanje 4: Razlika izmeu operatora / i \
Public Class Form1

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs)
Handles Button1.Click
'deklarisanje varijabli
Dim a, b, c As Double

'dodjela vrijednosti
a = 10
b = 4

c = a / b
MessageBox.Show(c.ToString())
'rezultat je realan broj, 2.5

c = a \ b
MessageBox.Show(c.ToString())
'rezultat je cjelobrojan, 2

End Sub
End Class


Pitanje 5: Upotreba & i +
Public Class Form1

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs)
Handles Button1.Click
'deklarisanje varijabli
Dim a, b, c, d As Object

'dodjela vrijednosti
a = 11
b = "13.01"
c = a + b
'c ima vrijednost 24.009, i tip double

d = a & b
'd ima vrijednost "1113.01" i tip string

'VB je prepoznao tip varijabli

MessageBox.Show("c: " & c & " " & c.GetType().ToString() & " " &

47

"d: " & d & " " & d.GetType().ToString())

End Sub
End Class

Isto se deava i ako je varijabla "a" tipa integer, i varijabla "b" tipa string.

3.3. Program: Microsoft Visual Basic 2010 Express, Windows Xp 32-bit

Pitanje 1: Koliko ugnjedenih funkcija if moe biti

Public Class Form1

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs)
Handles Button1.Click
If txtUnos.Text.Length > 0 Then
MessageBox.Show("duzina teksta je veca od 0")

If txtUnos.Text.Length > 1 Then
MessageBox.Show("duzina teksta je veca od 1")

If txtUnos.Text.Length > 2 Then
MessageBox.Show("duzina teksta je veca od 2")

If txtUnos.Text.Length > 3 Then
MessageBox.Show("duzina teksta je veca od 3")

If txtUnos.Text.Length > 4 Then
MessageBox.Show("duzina teksta je veca od 4")

If txtUnos.Text.Length > 5 Then
MessageBox.Show("duzina teksta je veca od 5")

If txtUnos.Text.Length > 6 Then
MessageBox.Show("duzina teksta je veca od 6")

If txtUnos.Text.Length > 7 Then
MessageBox.Show("duzina teksta je veca od
7")

If txtUnos.Text.Length > 8 Then
MessageBox.Show("duzina teksta je
veca od 8")

If txtUnos.Text.Length > 9 Then
MessageBox.Show("duzina teksta je
veca od 9")

If txtUnos.Text.Length > 10 Then
MessageBox.Show("duzina
teksta je veca od 10")
End If

End If

End If

End If


48

End If

End If

End If

End If

End If

End If

End If
End Sub
End Class

Odgovor: nema ogranienja broja ugnijedenih if funkcija.


Pitanje 2: Da li ElseIf zahtijeva da se zatvori sa Endif


Public Class Form1

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs)
Handles Button1.Click
'deklarisemo a i b kao integer tip
Dim a, b As Integer

'a ima vrijednost 0, jer je to default vrijednost za deklarisani integer

'ako je a > 0 i < 10
'a je 0, uslov nije ispunjen
If a > 0 And a < 10 Then
a = a + 1

'a = 0, uslov nije ispunjen
ElseIf a >= 10 Then
b = b + 1
MessageBox.Show("prekoraceno")

'a = 0, ovaj uslov je ispunjen, program ispisuje "prazno"
Else
MessageBox.Show("prazno")
End If

End Sub

Ovako napisana, Elseif je dio pocetne If petlje, i ne zahtjeva dodatni EndIf
Poruka prazno ce se ispisati kada je a manje od 1. Zato to nije zadovoljen ni prvi If
uslov, ni Elseif.

Pitanje 3: Napraviti kalkulator koristnjem select case naredbe

Private Sub btnGo_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnIzracunaj.Click

'deklarisanje varijabli

49

Dim dblPrvi, dblDrugi, dblRes As Double

'deklarisanje operacije kao string
Dim strOp As String

'citanje vrijednosti prvog i drugog broja iz tekst boksa
dblPrvi = txtPrvi.Text
dblDrugi = txtDrugi.Text

'citanje odabrane operacije iz combo boksa
'odabran je DropDownStyle=DropDownList, tako da se ne mogu unositi druge
operacije

strOp = cmbOp.SelectedItem
Select Case strOp
'racunanje razultata, i ispis vrijednosti u tekst boks txtRes
Case "+"
dblRes = dblPrvi + dblDrugi
txtRes.Text = dblRes
Case "-"
dblRes = dblPrvi - dblDrugi
txtRes.Text = dblRes
Case "*"
dblRes = dblPrvi * dblDrugi
txtRes.Text = dblRes
Case "/"

'rezultat se zaokruzuje na 3 decimale, koristenjem Math.Round
funkcije
dblRes = Math.Round(dblPrvi / dblDrugi, 3)
txtRes.Text = dblRes
End Select

End Sub


Slika 1 Izgled kalkulatora

Pitanje 4: Da li kod je kod poreenja varijabli tipa string bitno da li su mala ili velika
slova.


50

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Skretnica("Pas")
'Ako pozovemo subrutinu sa argumentom "Pas",
'subrutina Skretnica je prepozna i ispise "To je pas"

Skretnica("pas")
'Ako pozovemo subrutinu sa argumentom "pas",
'subrutina Skretnica je ne prepozna i ispise "Nepoznato!"
'mala i velika slova su bitna kod poredjenja stringova.

End Sub

Sub Skretnica(ByVal sZivotinja As String)

Select Case sZivotinja
Case "Pas"
MsgBox("To je pas")
Case "Maka"
MsgBox("To je maka")
Case "Ptica"
MsgBox("To je ptica")
Case Else
MsgBox("Nepoznato!")
End Select

End Sub
End Class

Pitanje 5: Ispitati vrijednosti indeksa po izlasku iz for petlje

Public Class Form1

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs)
Handles Button1.Click
Dim i As Integer
For i = 1 To 7 Step 2
MsgBox(i)
'zadnja vrijednost i u petlji je 7
Next
MsgBox(i & " kraj")
'i po izlazu iz petlje ima vrijednost 9


End Sub

Private Sub Button2_Click(sender As System.Object, e As System.EventArgs)
Handles Button2.Click
Dim i As Integer
For i = 1 To 6 Step 2
MsgBox(i)
'zadnja vrijednost i u petlji je 5
Next
MsgBox(i & " kraj")
'i po izlazu iz petlje ima vrijednost 7
End Sub

Private Sub Button3_Click(sender As System.Object, e As System.EventArgs)
Handles Button3.Click

51

Dim i As Integer

For i = 7 To 1 Step -2
MsgBox(i)
'zadnja vrijednost i u petlji je 1
Next
MsgBox(i & " kraj")
'i po izlazu iz petlje ima vrijednost -1
End Sub

Private Sub Button4_Click(sender As System.Object, e As System.EventArgs)
Handles Button4.Click
Dim i As Integer
For i = 7 To 1 Step 2
MsgBox(i)
Next
MsgBox(i & " kraj")
'varijabli i se dodijeljuje vrijednost 7, i nakon toga se odmah ide na
kraj petlje
'vrijednost i je 7
End Sub
End Class

-Vidimo da se petlja izvrava sve dok je vrijednost indeksa manja ili jednaka krajnjoj
vrijednosti. Kada je vrijednost indeksa vea od krajnje vrijednosti, program izlazi iz petlje.
Vrijednost indeksa je vea od krajnje vrijednosti po izlasku iz petlje.

-Kada je korak negativan, petlja se zavrava ako je indeks manji od krajnje vrijednosti.
- Ako je nemoguce ostvariti uslov za izlazak iz petlje, program niti ne izvrava petlju.
(Primjer 4)

Pitanje 6: Provjeriti vrijednost indeksa nakon izlaska iz "for" petlje. Ako je broj jednak
ili manji broju 3, pristup je dozvoljen. Ako je jednak ili veci broju 4, pristup nije dozvoljen.

Public Class Form1

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs)
Handles Button1.Click
If Lozinka2() Then
MsgBox("Pristup dozvoljen")
Else
MsgBox("Pristup nije dozvoljen")
End If
End Sub

Public Function Lozinka() As Boolean
Dim i As Integer
Dim sPWD As String

For i = 1 To 3 Step 1
sPWD = InputBox("Unesite lozinku")
If sPWD = "xxyyzz" Then
Exit For
End If
Next
If i <= 3 Then
Lozinka = True
Else

52

Lozinka = False
End If

End Function

Public Function Lozinka2() As Boolean
Dim i As Integer
Dim sPWD As String

For i = 1 To 3 Step 1
sPWD = InputBox("Unesite lozinku")
If sPWD = "xxyyzz" Then
Exit For
End If
Next
'nakon neuspjesnog pokusaja unoenja ifre, program izlazi iz petlje,
'i ima vrijednost 4
If i >= 4 Then
Lozinka2 = False
Else
Lozinka2 = True
End If

End Function

End Class


3.4. Program: Microsoft Visual Basic 2010 Express, Windows Xp 32-bit

Pitanje 1: Ispitati rezultat programa, korienjem Do petlje, ako su:
poetna vrijednost = 7,
krajnja vrijednost = 1,
korak = 2.

Private Sub btnDoLUntilTest_Click(sender As System.Object, e As
System.EventArgs) Handles btnDoLUntilTest.Click
Dim i, j, k, l As Integer

i = 1 'index
j = 7 'pocetna vrijednost
k = 1 'krajnja vrijednost
l = 2 'korak
i = j

'do petlja sa izlazom na dnu
Do
ListBox1.Items.Add(i)
i = i + l
Loop Until i > k
'program ispisuje broj 7, jer se prvi put izvrsava naredba bez provjere
uslova
End Sub

Private Sub btnDoUntilLTest_Click(sender As System.Object, e As
System.EventArgs) Handles btnDoUntilLTest.Click
Dim i, j, k, l As Integer

i = 1 'index

53

j = 7 'pocetna vrijednost
k = 1 'krajnja vrijednost
l = 2 'korak
i = j

'do petlja sa izlazom na vrhu
Do Until i > k
ListBox1.Items.Add(i)
i = i + l
Loop
'program ne ispisuje nista, jer se provjerava uslov, prije naredbe.
End Sub

Pitanje 2: Prikazati broj ponavljanja sluajnih brojeva u Visual Basicu, koje daje
funkcija Rnd. Rezultat prikazati koritenjem histograma.

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles
Button1.Click
Dim intNumber As Integer
Dim rndDouble As Double

'oznacimo brojeve od 1-10 na histogramu
For index = 1 To 10
If index < 10 Then
'dodamo razmak ako je broj manji od 10, da bi bilo poravnato
lstGraph.Items.Add(" " & index & "| ")
Else
'ako ne, samo dodamo broj
lstGraph.Items.Add(index & "| ")
End If
Next

'randomize, da bi smo dobili svaki put razlicite brojeve
Randomize()

'kreiramo rnd brojeve
For index = 1 To 1000
rndDouble = Rnd()
'Koristimo int() da bi smo dobili vrijednosti 0 1 2 3 ... 9
'Komanda Cint() zaokruzuje 9.8 na 10.
'int() uzima samo cijele vrijednosti, dodajemo 1 jer nam trebaju 1 2
3 ... 10
intNumber = Int(rndDouble * 10) + 1

'dodamo vrijednosti na dijagram. po jednu liniju za svaki put kada se
broj pojavi
lstGraph.Items(intNumber - 1) = lstGraph.Items(intNumber - 1) & "|"

Next


'prebrojimo vrijednosti, -4 za pocetne oznake. Upisemo vrijednosti na
histogram.
For index = 0 To 9
'ove vrijednosti se mogu smjestiti u matricu, ako su nam potrebni za
kasnije
'dim arrListaBrojeva(0 to 9) as Integer , prije petlje
'arrListaBrojeva(index) = lstGraph.Items(index).ToString.Length - 4


54

'upisemo vrijednosti brojeva na histogram, dodajuci broj na kraj
prethodnog sadrzaja
lstGraph.Items(index) = lstGraph.Items(index) &
lstGraph.Items(index).ToString.Length - 4
Next


End Sub




Slika 2 Grafiki prikaz


Pitanje 3:
-Koliko se moe otvoriti kanala prema datoteka.txt fajlu.
-Probati koristiti druga imena za kanale osim brojeva

Private Sub Button3_Click(sender As System.Object, e As System.EventArgs)
Handles Button3.Click
'ako pokusamo otvoriti fajl prije nego sto ga zatvorimo, VB ce prikazati
gresku da moramo da ga prvo zatvorimo, koristenjem naredbe FileClose(brojkanala).
'The process cannot access the file 'c:\1.txt' because it is being used
by another process.

'ako pokusamo koristiti vrijednost 256 za index, VB javlja gresku
'"Bad file name or number". Najveca vrijednost kanala je 255.

For index = 1 To 255
FileOpen(index, "c:\1.txt", OpenMode.Input)
ListBox1.Items.Add(index)

'naredba za zatvaranje fajla.
FileClose(index)
Next

'ako pokusamo dodijeliti ime kanalu 1kanal, VB javi gresku
'Conversion from string "kanal" to type 'Integer' is not valid.
'Dozvoljeno je koristiti samo integer vrijednosti.
'FileOpen("kanal", "c:\1.txt", OpenMode.Input)

End Sub



55

Zakljuak:
-Prije nego to otvorimo fajl koristei drugi kanal, moramo ga zatvoriti korienjem
naredbe FileClose(#kanal)
-Imena kanala moraju biti cjelobrojni brojevi, od 1 do 255. Broj 256 prijavi greku
-Nije dozvoljeno koristiti string za imena kanala.

Pitanje 4: ta se desi ako pokuamo proitati vie redova nego to postoji u fajlu?

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs)
Handles Button1.Click
Dim strLinija As String

'fajl c:\2.txt ima 9 linija teksta
FileOpen(1, "c:\2.txt", OpenMode.Input)

For index = 1 To 10
strLinija = LineInput(1)
Next
FileClose(1)

End Sub

Ako pokuamo proitati vie redova nego to postoji u fajlu, VB prijavi greku: "Input
past end of file."
Ako pokuamo proitati manje redova nego to postoji u fajlu, VB izvri naredbe bez
greke.

Pitanje 5: Da li je mogue da matrica ima negativni indeks?

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs)
Handles Button1.Click
Dim arrayTest(-5 To 5) As Integer
'javlja se greka "Array lower bounds can only be 0"
'Donja granica mora da bude 0

Dim arrayTest(-5) As Integer
''javlja se greka "Array dimensions cannot have a negative value"
'Dimenzije ne mogu imati negativnu vrijednost.

End Sub
-Matrica ne moe imati negativni indeks, i mora donja granica da bude 0.

Pitanje 6: Najvei broj indeksa kod matrica?

Dim arrayTest2(2200000000) As Integer
'greska. "Constant expression not representable in type 'Integer'"
'veci je od vrijednosti za integer, 2 147 483 647

Dim arrayTest3(2100000000) As Integer
'ok

Dim arrayTest4(2147483648) As Integer
'greska.

Dim arrayTest5(2147483647) As Integer
'ok

56


Najvea vrijednost je vrijednost integer tipa podataka, 2147483647. 2147483648
prijavljuje greku.



57

4. Zakljuak
Visual Basic je odlian jezik za uenje programiranja. Omoguuje brz razvoj aplikacija i
ima odlinu dokumentaciju. Rasprostranjen je medju programerima. Postoji veliki broj knjiga i
primjera iz kojih se moe nauiti dosta toga o programiranju u Visual Basicu.







58


5. Bibliografija
Avramovic, p. d. Zadaci sa pripremu programiranja.
Microsoft. (n.d.). Data Type Summary (Visual Basic). Retrieved 07 2013, from MSDN
Library: http://msdn.microsoft.com/en-US/library/47zceaw7(v=vs.100).aspx
N. Bojeti, N. P. (2006). Programiranje i algoritmi. Zagreb.
Thearon Willis, B. N. (2010). Beginning Microsoft Visual Basic 2010. Indianapolis:
Wiley Publishing, Inc.

You might also like