Professional Documents
Culture Documents
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 B0 onda je formula na
prethodnom slajdu neprimjenjiva.
Tada je jednadžba koju rješavamo
Bx+C=0
C=0
D=B2-4AC0
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)
X1 = .....
X2 = .....
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)