You are on page 1of 38

Visual Basic – Drugi primjer

 Zadatak
Za zadane brojeve A, B i C izračunati
rješenja jednadžbe

Ax2+Bx+C=0
Visual Basic – Drugi primjer
 Zadatak
Za zadane brojeve A, B i C izračunati
rješenja jednadžbe

Ax2+Bx+C=0
 Znamo da je opća jednadžba za
izračunavanje rješenja ove jednadžbe

 B  B2  4 AC
x1,2 
2A
Visual Basic – Drugi primjer
 No, imamo nekoliko slučajeva koje želimo
riješiti posebno:
 Ako je A=0, i B0 onda je formula na
prethodnom slajdu neprimjenjiva.
 Tada je jednadžba koju rješavamo

Bx+C=0

a njeno je jedino rješenje


C
x 
B
Visual Basic – Drugi primjer
 No, imamo nekoliko slučajeva koje želimo
riješiti posebno:
 Ako je A=0, i B=0 onda imamo jednadžbu

C=0

i ovisno o tome je li C nula ili nije jednadžba će


imati beskkonačno mnogo rješenja, ili pak neće
imati rješenja
Visual Basic – Drugi primjer
 No, imamo nekoliko slučajeva koje želimo
riješiti posebno:
 Ako je A0, možemo primijeniti opću formulu,
ako je

D=B2-4AC0
 Ako je D<0, onda su rješenja kompleksni brojevi
Visual Basic – Drugi primjer
 Učitati A, B, C
 Ako je A=0 i B=0 i C=0 onda
 ispiši "Jednadžba ima beskonačno mnogo
rješenja"
 Ako je A=0 i B=0 i C<> 0 onda
 ispiši "Jednadžba nema rješenja"
 Ako je A=0 i B<>0 onda
 ispiši rješenje –C/B
 Ako je A<>0 onda
 D=B^2-4*A*C
 Ako je D>=0
 ispiši realna rješenja
 inače
 ispiši kompleksna rješenja
Visual Basic – Drugi primjer
 Varijable koje ćemo trebati jesu A, B, C,
koje ćemo učitati. Nadalje, trebat ćemo
varijablu D, u kojoj ćemo pohraniti
vrijednost diskriminante i Varijable X1 i X2,
u kojima ćemo čuvati rješenja. Te će
varijable biti decimalni brojevi, pa ćemo za
njih koristiti tip Single
 Osim toga, imat ćemo varijablu Rj tipa
String u kojoj ćemo pripremati ispis i
pomoću koje ćemo ispisivati rješenje.
Visual Basic – Drugi primjer
Dim A, B, C, D, X1, X2 As Single, Rj As String
A=InputBox("A=")
B=InputBox("B=")
C=InputBox("C=")
 Ako je A=0 i B=0 i C=0 onda
Rj = "Jednadžba ima beskonačno mnogo rješenja"
 Ako je A=0 i B=0 i C<> 0 onda
Rj = "Jednadžba nema rješenja"
 Ako je A=0 i B<>0 onda
 ispiši rješenje –C/B
 Ako je A<>0 onda
 D=B^2-4*A*C
 Ako je D>=0
 ispiši realna rješenja
 inače
 ispiši kompleksna rješenja
MsgBox(Rj)
Visual Basic – Drugi primjer
 Prošli smo puta radili If...Else selekciju.
Ovdje ćemo koristiti jednostavniju
selekciju:
If logički_uvjet Then
.
.
.
End If
 Blok naredbi u ovoj selekciji se izvodi ako
je logički uvjet ispunjen, a inače se ne
izvodi ništa.
Visual Basic – Drugi primjer
 Osim toga, imamo još jedan problem.
 Prošli smo puta naučili kako napisati
jednostavan logički uvjet pomoću
operacije uspoređivanja.
 No, kako istovremeno izvesti više
operacija uspoređivanja?
Osnovni logički uvjeti
 Operatori uspoređivanja:
Operator Značenje Primjer
< Manje A<B
<= Manje ili jednako A <= B
= Jednako A=B
>= Veće ili jednako A >= B
> Veće A>B
<> Različito A <> B
!= Nije jednako (različito) A != B
!< Nije manje (veće ili jednako) A !< B
!> Nije veće (manje ili jednako) A !> B
Osnovni logički uvjeti
 Logički operatori:
Operator Značenje Primjer
And Konjunkcija (logički i) A And B
Or Disjunkcija (Logički ili) A Or B
Not Negacija (Logičko ne) Not A
Visual Basic – Drugi primjer
 Logički operatori And i Or su binarni
(primaju dva operanda) i njihovi
operandi moraju biti tipa Boolean
(upravo onog tipa kojeg je odgovor
koji dobijamo nakon operacija
uspoređivanja)
 Logički operator Not je unaran (prima
jedan argument), a argument mu
mora biti tipa Boolean
Visual Basic – Drugi primjer
A B A And B A B A Or B
False False False False False False
False True False False True True
True False False True False True
True True True True True True

A Not A
False True
True False
Visual Basic – Drugi primjer
Dim A, B, C, D As Single, Rj As String
A = InputBox("A=")
B = InputBox("B=")
C = InputBox("C=")
If A = 0 And B = 0 And C = 0 Then
Rj = "Jednadžba ima beskonačno mnogo rješenja"
End If
If A = 0 And B = 0 And C <> 0 Then
Rj = "Jednadžba nema rješenja"
End If
If A = 0 And B <> 0 Then
X1 = -C / B
 ispiši rješenje –C/B
End If
Visual Basic – Drugi primjer
If A <> 0 Then
D = B^2-4*A*C
If D >= 0 Then
 ispiši realna rješenja
Else
 ispiši kompleksna rješenja
End If
End If
MsgBox(Rj)
Visual Basic – Drugi primjer
 Sljedeći problem s kojim se susrećemo u
ovom zadatku jest problem izračunavanja
kvadratnog korijena
 Naravno možemo napisati
D ^ (1/2)

 No, ono što ovdje želimo objasniti jesu


ugrađene matematičke funkcije. Npr,
kvadratni korijen se može izračunati s
Math.Sqrt(D)
Visual Basic – Drugi primjer
 Funkcije klase Math
Funkcija Objašnjenje
Abs Absolutna vrijednost broja
Atan Arkus tangens broja
Cos Kosinus broja
Exp Prirodna eksponencijalna funkcija
Log Prirodni logaritam broja
Round Najbliži cijeli broj
Sgn Signum broja (-1, 0, 1)
Sin Sinus broja
Sqrt Kvadratni korijen broja
Tan Tangens broja
Visual Basic – Drugi primjer
 Sve funkcije iz klase Math su unarne
(primaju jedan argument), osim
funkcije Round.
 Funkcija Round može biti
 Round(X) - Unarna – vraća najbliži cijeli
broj
 Round(X, N) – Binarna – zaokružuje
broj na N decimala
Visual Basic – Drugi primjer
 Sada je jasno da će, u slučaju da su rješenja realna,
biti
X1 = (-B + Math.Sqrt(D)) / (2 * A)
X2 = (-B - Math.Sqrt(D)) / (2 * A)

 Kako ne bismo dva puta izračunavali kvadratni korijen


od D, možemo ga izračunati posebno. Za to nam nije
potrebna nova varijabla, već ćemo korijen opet
zapisati u varijablu D
D = Math.Sqrt(D)
X1 = (-B + D) / (2 * A)
X2 = (-B - D) / (2 * A)
Visual Basic – Drugi primjer
Dim A, B, C, D, X1, X2 As Single, Rj As String
A = InputBox("A=")
B = InputBox("B=")
C = InputBox("C=")
If A = 0 And B = 0 And C = 0 Then
Rj = "Jednadžba ima beskonačno mnogo rješenja"
End If
If A = 0 And B = 0 And C <> 0 Then
Rj = "Jednadžba nema rješenja"
End If
If A = 0 And B <> 0 Then
X1 = -C / B
 ispiši rješenje –C/B
End If
Visual Basic – Drugi primjer
If A <> 0 Then
D = B^2-4*A*C
If D >= 0 Then
D = Math.Sqrt(D)
X1 = (-B + D) / (2 * A)
X2 = (-B - D) / (2 * A)
 ispiši realna rješenja
Else
 ispiši kompleksna rješenja
End If
End If
MsgBox(Rj)
Visual Basic – Drugi primjer
 Kada su rješenja kompleksni brojevi, onda
ćemo varijable X1 i X2 koristiti drugačije. U
X1 ćemo zapisati realni dio rješenja, a u X2
imaginarni.
X1 = -B / (2 * A)
X2 = Math.Sqrt(-D) / (2 * A)

 Sada je će rješenja jednadžbe biti oblika


X1 + X2 i
X1 – X2 i
Visual Basic – Drugi primjer
Dim A, B, C, D, X1, X2 As Single, Rj As String
A = InputBox("A=")
B = InputBox("B=")
C = InputBox("C=")
If A = 0 And B = 0 And C = 0 Then
Rj = "Jednadžba ima beskonačno mnogo rješenja"
End If
If A = 0 And B = 0 And C <> 0 Then
Rj = "Jednadžba nema rješenja"
End If
If A = 0 And B <> 0 Then
X1 = -C / B
 ispiši rješenje –C/B
End If
Visual Basic – Drugi primjer
If A <> 0 Then
D = B^2-4*A*C
If D >= 0 Then
D = Math.Sqrt(D)
X1 = (-B + D) / (2 * A)
X2 = (-B - D) / (2 * A)
 ispiši realna rješenja
Else
X1 = -B / (2 * A)
X2 = Math.Sqrt(-D) / (2 * A)
 ispiši kompleksna rješenja
End If
End If
MsgBox(Rj)
Visual Basic – Drugi primjer
 Preostaje nam još kreirati varijablu Rj
koju ćemo ispisivati.
 Za to ećmo trebati spajanje dva ili
više nizova znakova u jedan
 Za to se koristi operator
konkatenacije & (ili +)
Visual Basic – Drugi primjer
 Ispis kakav želimo jest

X1 = .....
X2 = .....

 Može li vrijednost varijable tipa String


biti tekst u više redova?
 Kako dodati znak za novi red?
Visual Basic – Drugi primjer
 Svi znakovi koji se mogu ispisati
imaju brojevnu vrijednost (kod) u
Unicode (ili ASCII) tablici. Znak za
novi red ima kod 13.
 Funkcija koja prihvaća kod i vraća
znak koji ima taj kod je Chr. Dakle,
koristit ćemo

Chr(13)
Visual Basic – Drugi primjer
 Drugi problem koji trebamo riješiti jest to
što je varijabla Rj tipa String, dok su naše
varijable X1 i X2 tipa Single.
 Osim matematičkih funkcija, VB ima čitav
niz funkcija koje pretvaraju vrijednosti
jednog tipa podataka u drugi. Funkcija koja
pretvara bilo koji brojevni tip podataka u
String zove se Str. Dakle, koristit ćemo

Str(X1)
Visual Basic – Drugi primjer
 Funkcije konverzije tipova (Num-String)
Funkcija Značenje Primjer
Asc Vraća ASCII kod znaka Asc(chr)
AscW Vraća UNICODE kod znaka AscW(chr)
Chr Vraća znak s zadanim Chr(byte)
ASCII kodom
ChrW Vraća znak sa zadanim ChrW(short)
UNICODE kodom
Format Pretvara bilo koji tip Format(izraz
podataka u String [, format])
Visual Basic – Drugi primjer
 Funkcije konverzije tipova (Num-String)
Funkcija Značenje Primjer
Hex Vraća string koji Hex(int)
predstavlja heksadecimalni
zapis argumenta
Oct Vraća string koji Oct(int)
predstavlja oktalni zapis
argumenta
Str Vraća tekstualnu Str(num)
reprezentaciju broja
Val Vraća brojevnu vrijednost ChrW(snum)
za zadani string
Visual Basic – Drugi primjer
 Sve su funkcije relativno jednostavne,
osim funkcije Format. Detaljni opis
funckije Format bit će opisan kasnije.
Visual Basic – Drugi primjer
Dim A, B, C, D, X1, X2 As Single, Rj As String
A = InputBox("A=")
B = InputBox("B=")
C = InputBox("C=")
If A = 0 And B = 0 And C = 0 Then
Rj = "Jednadžba ima beskonačno mnogo rješenja"
End If
If A = 0 And B = 0 And C <> 0 Then
Rj = "Jednadžba nema rješenja"
End If
If A = 0 And B <> 0 Then
X1 = -C / B
Rj = "X = " & Str(X1)
End If
Visual Basic – Drugi primjer
If A <> 0 Then
D = B^2-4*A*C
If D >= 0 Then
D = Math.Sqrt(D)
X1 = (-B + D) / (2 * A)
X2 = (-B - D) / (2 * A)
Rj = "X1 = " & Str(X1) & Chr(13) & "X2 =" & Str(X2)
Else
X1 = -B / (2 * A)
X2 = Math.Sqrt(-D) / (2 * A)
Rj = "X1 = " & Str(X1) & "+" & Str(X2) & " i"
Rj = Rj & Chr(13)
Rj = Rj & "X2 = " & Str(X1) & "-" & Str(X2) & " i"
End If
End If
MsgBox(Rj)
Visual Basic – Drugi primjer
 Kada pogledamo ovaj program, vidjet ćemo da imamo mnogo
If...End If naredbi.
 Ovo možemo ljepše napisati koristeći If...Elseif...End If selekciju
If logički_uvjet Then
.
.
ElseIf logički_uvjet Then
.
.
ElseIf logički_uvjet Then
.
.
Else
.
.
End If
Visual Basic – Drugi primjer
 Opis sintakse If...ElseIf...End If
selekcije
 Na početku imamo jednu If klauzulu
 Iza nje ide jedna ili više ElseIf klauzula
 Iz ElseIf klauzula ide jedna (ili ni jedna)
Else klauzula
 N kraju ide točno jedna End If klauzula
Visual Basic – Drugi primjer
Dim A, B, C, D, X1, X2 As Single, Rj As String
A = InputBox("A=")
B = InputBox("B=")
C = InputBox("C=")
If A = 0 And B = 0 And C = 0 Then
Rj = "Jednadžba ima beskonačno mnogo rješenja"
ElseIf A = 0 And B = 0 And C <> 0 Then
Rj = "Jednadžba nema rješenja"
ElseIf A = 0 And B <> 0 Then
X1 = -C / B
Rj = "X = " & Str(X1)
Visual Basic – Drugi primjer
ElseIf A <> 0 Then
D = B^2-4*A*C
If D >= 0 Then
D = Math.Sqrt(D)
X1 = (-B + D) / (2 * A)
X2 = (-B - D) / (2 * A)
Rj = "X1 = " & Str(X1) & Chr(13) & "X2 =" & Str(X2)
Else
X1 = -B / (2 * A)
X2 = Math.Sqrt(-D) / (2 * A)
Rj = "X1 = " & Str(X1) & "+" & Str(X2) & " i"
Rj = Rj & Chr(13)
Rj = Rj & "X1 = " & Str(X1) & "-" & Str(X2) & " i"
End If
End If
MsgBox(Rj)

You might also like