NET
Abdul Azis
Buku ini membahas tentang bahasa pemrograman Visual Basic .Net, dan ditujukan
kepada siapa saja yang serius untuk mempelajari bahasa pemrograman VB.Net. Untuk
memfokuskan pada bahasa VB.Net, buku ini akan menggunakan pendekatan program
Console, sehingga fokus pembelajaran lebih terfokus kepada bahasa itu sendiri.
Untuk mempelajari buku ini anda tidak perlu menginstalasi Visual Studio .Net, tetapi
anda cukup menginstalasi .Net Framework yang dapat didownload secara gratis dari
website Microsoft.
Semua contoh dan latihan dibuku ini dapat dikompilasi langsung dari Dos prompt dengan
menggunakan kompiler Visual Basic yang langsung tersedia setelah anda menginstalasi
.Net Framework.
AZISDOTNET.WORDPRESS.COM
Abdul Azis
Ketiklah program diatas dengan text editor (notepad pada Windows ataupun edit pada
Dos Prompt), dan kemudian simpan dengan nama hello.vb (anda wajib menyimpannya
dengan ekstension .vb).
Proses Kompilasi
Agar program yang kita buat diatas dapat dijalankan oleh komputer, maka diperlukan
suatu kompiler untuk menterjemahkan perintah-perintah yang telah kita buat menjadi
instruksi yang dapat dikenali oleh sistem komputer.
Kompiler Visual Basic dapat diperoleh dengan melakukan instalasi Microsoft .NET
framework sdk v1.1.
Sesaat setelah instalasi .NET framework, maka kompiler VB telah tersedia pada
komputer anda, dan proses kompilasi dapat dilakukan dengan :
1. Mengatur path environment pada Command Prompt
path=%path%;c:\windows\microsoft.net\framework\v1.1.4322
2. Selanjutnya anda dapat mengkompilasi program anda dengan perintah :
Vbc <nama file>.vb
Pada saat kompilasi, anda wajib menulis lengkap nama file dan ekstension
Contoh :
vbc hello.vb
Microsoft (R) Visual Basic .NET Compiler version 7.10.3052.4
AZISDOTNET.WORDPRESS.COM
Abdul Azis
Jika proses kompilasi tidak menampilkan adanya kesalahan, maka akan terbentuk suatu
hello.exe yang dapat dijalankan langsung pada Command Prompt.
Sesuatu hal yang perlu anda pahami adalah file hello.exe hanya dapat dijalankan pada
komputer yang sudah terinstalasi Microsoft .NET framework.
Kemudian suatu hal yang perlu anda ketahui adalah file hello.exe bukanlah berisi binari
yang merupakan kode mesin, melainkan merupakan binari yang berisi Intermediate
Language (IL) yang pada saat dijalankan akan dikompilasi menjadi bahasa mesin oleh
kompiler Just In Time (JIT) yang terdapat pada Common Language Runtime (CLR) yang
merupakan salah satu komponen dari .NET framework.
Option Statements
Perintah Option akan menentukan aturan dasar penanganan kode dalam program pada
saat kompilasi.
Option Explicit
Option Explicit On/Off, menentukan apakah variabel-varibel yang digunakan dalam
program harus dideklarasikan terlebih dahulu atau tidak (defaultnya adalah On).
Contoh :
Option Explicit Off
Module Modmain
Sub Main()
a = 100000
End Sub
End Module
Yang jika di kompilasi tidak menyebabkan kesalahan walaupun variabel a tidak pernah
dideklarasikan.
Option Explicit On
AZISDOTNET.WORDPRESS.COM
Abdul Azis
Module Modmain
Sub Main()
a = 100000
End Sub
End Module
Agar terhindar dari kesalahan maka variabel a harus dideklarasikan terlebih dahulu sesuai
dengan setting Option Explicit On.
Option Explicit On
Module Modmain
Sub Main()
Dim a As Integer
a = 100000
End Sub
End Module
Option Strict
Option Strict On/Off, menentukan apakah kompiler memperbolehkan konversi nilai
implicit yang berpotensi menyebabkan kehilangan data (default adalah Off), misalnya
kita memasukan nilai dari suatu variabel dengan tipe data yang lebih lebar ke variabel
dengan tipe data yang lebih sempit (lihat pada kolom nominal storage allocation pada
tabel tipe data).
Contoh :
Option
Option
Module
Sub
Explicit On
Strict On
Hello
Main()
Dim a As Integer
Dim b As Short
a = 100000
b = a
End Sub
End Module
AZISDOTNET.WORDPRESS.COM
Abdul Azis
Yang jika dikompilasi akan menyebabkan pesan kesalahan berikut ini karena variabel b
yang bertipe short (16 bit), tidak dimungkinkan menampung nilai dari tipe integer (32
bit), yang memiliki potensi kehilangan data pada saat runtime, sehingga pemakaian
Option Strict On akan menampilkan pesan kesalahan pada saat kompilasi.
Microsoft (R) Visual Basic .NET Compiler version 7.10.3052.4
for Microsoft (R) .NET Framework version 1.1.4322.573
Copyright (C) Microsoft Corporation 1987-2002. All rights reserved.
D:\BELAJA~1\coba.vb(8) : error BC30512: Option Strict On disallows
implicit conversions from 'Integer' to 'Short'.
b = a
~
Explicit On
Strict Off
Hello
Main()
Dim a As Integer
Dim b As Short
a = 100000
b = a
End Sub
End Module
Maka pada saat kompilasi tidak terjadi kesalahan, tetapi pada saat runtime akan
menimbulkan runtime error (System.OverflowException), karena variabel a yang bertipe
short hanya memiliki jangkauan daya tampung dari -32767 s/d 32768.
AZISDOTNET.WORDPRESS.COM
Abdul Azis
Option Compare
Perintah Option Compare Binary/Text akan menentukan bagaimana bertipe data string
akan dibandingkan antara satu dengan lainnya (default adalah Binary).
Adapun aturan perbandingan pada masing-masing setting adalah sebagai berikut :
Pada Option Compare Binary : A < B < E < Z < a < b < e < z < < < < <
<
Pada Option Compare Text : (A=a) < (= ) < (B=b) < (E=e) < (= ) < ( = )
< (Z=z)
Contoh :
Option Compare Binary
Module Hello
Sub Main()
Dim a,b As String
a = "ABC"
b = "abc"
System.Console.WriteLine(a = b)
End Sub
End Module
'False
Yang jika dijalankan akan menghasilkan False, karena perbandingan data berdasarkan
nilai biner dari masing-masing data string (lihat aturan untuk Binary).
AZISDOTNET.WORDPRESS.COM
Abdul Azis
Tetapi jika :
Option Compare Text
Module Hello
Sub Main()
Dim a,b As String
a = "ABC"
b = "abc"
System.Console.WriteLine(a = b)
End Sub
End Module
'True
Yang jika dijalankan akan menghasikan True, karena sebagai text-nya "ABC" dianggap
sama dengan "abc" tanpa melihat huruf besar atau kecil (lihat aturan untuk Text).
Imports Statements
Perintah Imports berfungsi memudahkan pengetikan tanpa harus mengetik nama class
didalam namespace yang di import.
Contoh :
Module Hello
Sub Main()
System.Console.WriteLine("Hello World !")
End Sub
End Module
Dalam hal ini kita tidak perlu lagi mengetik System.Console.WriteLine, tapi cukup
Console.WriteLine, karena kita telah melakukan Imports System.
Main Procedure
Procedure Main merupakan titik awal dari program anda merupakan procedure yang
pertama kali dieksekusi ketika anda menjalankan kode anda. Jadi apa yang ingin anda
jalankan pertama kali pada program anda ditempatkan pada procedure main ini. Ada
empat cara penulisan Main, yaitu sebagai Sub atau Function yang memiliki parameter
atau tidak.
AZISDOTNET.WORDPRESS.COM
Abdul Azis
Sub Main()
Sub Main(ByVal CmdArgs() As String)
Function Main() As Integer
Function Main(ByVal CmdArgs() As String) As Integer
Bentuk procedure yang paling sering digunakan adalah Sub Main( ) seperti pada contoh
yang sudah-sudah.
Contoh Sub Main dengan parameter :
Imports System
Module Hello
Sub Main(ByVal CmdArgs() As String)
Dim i As Integer
Console.WriteLine("Jumlah Parameter :" & CmdArgs.Length())
For i = 0 to CmdArgs.Length()-1
Console.WriteLine("Parameter :" & i.ToString() & "adalah :"
& CmdArgs(i))
Next
End Sub
End Module
Dalam hal ini kita menjalankan program Coba.exe pada command prompt dengan
mengirim dua parameter yaitu kata Hello dan World yang dianggap sebagai array bertipe
string.
Catatan :
Index Array dimulai dari 0, sehingga pada contoh diatas looping dimulai dari 0 s/d
CmdArgs.Length()-1.
Program yang menggunakan parameter jarang digunakan pada lingkungan Windows, dan
sering digunakan pada program di lingkungan Console.
Pemberian komentar
Jika kita hari ini membuat program, dan pada saat yang sama semua logika serta rumusan
dapat kita ingat dengan baik, tetapi bagaimana kalau kita membaca kembali program
yang pernah kita buat untuk 3 bulan yang lalu, apakah anda masih mengingatnya ?
Bagaimana kita membuat program kita mudah di pahami kembali ? Tentu saja dengan
memberikan keterangan secukupnya.
AZISDOTNET.WORDPRESS.COM
Abdul Azis
Pada Visual Basic pembuatan keterangan dapat menggunakan simbol ' (petik tunggal)
maupun keyword REM.
Contoh :
' Ini adalah keterangan
REM Ini adalah keterangan
Type Data
Sebagaimana bahasa pemrograman lainnya, Visual Basic menyediakan berbagai type
data yang dapat digunakan oleh pemrogram sesuai dengan konteks pemakaiannya. Type
data pada Visual Basic dibagi atas dua kelompok besar yaitu Value Type (Tipe data
primitif) dan Reference (String, Array dan Objek).
Berikut ini adalah tabel tipe data pada VB disertai dengan alokasi storage yang
dibutuhkan serta jangkauan nilai yang dapat ditampung oleh masing-masing tipe.
Visual Basic
type
Boolean
Common language
runtime type
structure
System.Boolean
Nominal
storage
allocation
2 bytes
True or False.
Byte
System.Byte
1 byte
Char
System.Char
2 bytes
Date
System.DateTime
8 bytes
Decimal
System.Decimal
16 bytes
Double
(doubleprecision
floating-point)
System.Double
8 bytes
Integer
System.Int32
4 bytes
-1.79769313486231570E+308 through
-4.94065645841246544E-324 for negative
values; 4.94065645841246544E-324 through
1.79769313486231570E+308 for positive
values.
-2,147,483,648 through 2,147,483,647.
Long
(long integer)
System.Int64
8 bytes
-9,223,372,036,854,775,808 through
9,223,372,036,854,775,807.
Object
System.Object (class)
4 bytes
Short
System.Int16
2 bytes
Single
(singleprecision
floating-point)
System.Single
4 bytes
String
(variablelength)
System.String (class)
Depends on
implementing
platform
UserDefined
Type
(inherits from
System.ValueType)
Depends on
implementing
platform
AZISDOTNET.WORDPRESS.COM
Value range
Abdul Azis
(structure)
Walaupun dewasa ini, memori dan media penyimpanan data tidak menjadi masalah
seperti pada awal kelahiran komputer, tetapi hendaklah programmer bijaksana dalam
pemakaian type data berkaitan dengan perfomance yang dihasilkan.
Deklarasi Variabel
Pemrogram yang baik tentu saja menggunakan pendekatan yang terstruktur dalam
pengembangan program, salah satu ciri dari program yang terstruktur adalah
mendeklarasikan semua variabel yang digunakan dalam program.
Pada Visual Basic printah Dim digunakan untuk mendeklarasikan variabel dan
memberikan nilai awal kepadanya.
Contoh :
Dim
Dim
Dim
Dim
Catatan :
Pada Visual Basic pemakaian variabel harus dideklarasikan terlebih dahulu, jika tidak
anda akan mendapatkan kesalahan kompiler, karena default setting Explicit pada Visual
Basic adalah Option Explicit On.
Kemudian Jika anda tidak memberikan nilai awal pada suatu variabel pada
dideklarasikan, maka nilai berikut akan diberikan sebagai nilai awal variabel tersebut :
0 untuk semua tipe data numerik (termasuk Byte).
Binary 0 untuk Char.
Nothing untuk semua tipe reference (termasuk Object, String, dan semua array).
False untuk Boolean.
12:00 AM pada 1 Januari 1 untuk Date.
Sesuatu hal yang perlu anda perhatikan adalah daya tampung variabel berdasarkan tipe
yang ditentukan, jika anda memasukan nilai diluar dari daya tampung variabel, suatu
kesalahan overflow exception akan terjadi.
Konversi Tipe
Konversi Tipe pada Visual Basic dapat dilakukan secara Implicit maupun Explicit,
konversi secara Implicit dilakukan tanpa menggunakan fungsi bantu casting tertentu
seperti Cbool, Cbyte, Cchar, Cdate, Cdec, CDbl, Cint, CLng, Cobj, Cshort, CSng, CStr.
AZISDOTNET.WORDPRESS.COM
10
Abdul Azis
Contoh :
Module Test
Sub Main()
Dim intValue As Integer = 123
Dim longValue As Long = intValue
Console.WriteLine(intValue & " = " & longValue)
End Sub
End Module
Module Test
Sub Main()
Dim longValue As Long = 134
Dim intValue As Integer = CInt(longValue)
Console.WriteLine(longValue & " = " & intValue)
End Sub
End Module
Pada konversi secara Implicit, setting Option Strict akan mempengaruhi apakah konversi
dari tipe yang lebih lebar ke tipe yang lebih sempit (Misalnya dari Integer 32 bit ke Short
16 bit) diperbolehkan oleh kompiler atau tidak.
Contoh berikut akan melakukan konversi dari Integer 32 bit ke Short 16 bit.
Option Strict On
Option Explicit On
Imports System
Public Module ModKali
Sub Main()
Dim i, j As Byte
Dim a As Integer = 40000
Dim b As Short
b = a
Console.WriteLine(b)
End Sub
End Module
AZISDOTNET.WORDPRESS.COM
11
Abdul Azis
~
Hal tersebut dapat diperbaiki dengan menggunakan fungsi ToInt16 yang terdapat pada
System.Convert yang artinya konversi memang dikehendaki oleh programmer
Contoh :
Option Strict On
Option Explicit On
Imports System
Public Module ModKali
Sub Main()
Dim i, j As Byte
Dim a As Integer = 40000
Dim b As Short
b = System.Convert.ToInt16(a)
Console.WriteLine(b)
End Sub
End Module
Tetapi karena nilai 40000 tidak dapat ditampung oleh type data short, maka akan
menghasilkan error pada saat runtime : System.OverflowException.
Konversi data secara Explicit dapat juga memanfaatkan fungsi bantu casting yang
terdapat pada Objek System Convert sebagai berikut :
Function
ToBoolean
ToByte
ToChar
ToDateTime
ToDecimal
ToDouble
ToInt16
ToInt32
ToInt64
ToSByte
ToSingle
ToString
ToUInt16
ToUInt32
ToUInt64
Purpose
Converts a value to a Boolean (True or False).
Converts a value to an 8-bit Byte in the range 0 to 255.
Converts a value to a 2-byte Unicode character.
Converts a value to a DateTime object.
Converts a value to a 12-byte Decimal.
Converts a value to an 8-byte Double.
Converts a value to a 2-byte Short.
Converts a value to a 4-byte Integer.
Converts a value to an 8-byte Integer.
Converts a value to an 8-bit signed value in the range 128 to 127.
Converts a value to a 4-byte Single.
Converts a value to its String representation.
Converts a value to a 2-byte unsigned Short in the range 0 to 65,535.
Converts a value to a 4-byte unsigned Integer in the range 0 to 4,294,967,295.
Converts a value to an 8-byte unsigned long Integer in the range 0 to
18,446,744,073,709,551,615.
Catatan :
Berdasarkan uji coba yang dilakukan fungsi bantu konversi tipe seperti Cint, Cdate,
CSng,CDbl, Cdec dan kadang-kadang fungsi bantu konversi memiliki unjuk kerja yang
lebih baik seperti yang ditunjukan oleh tabel berikut ini adalah hasil konversi dengan
Integer.Pars, Convert.ToInt32, dibandingkan dengan CInt
AZISDOTNET.WORDPRESS.COM
12
String
Abdul Azis
Integer.Parse
Convert.ToInt32
Cint
"12,500"
Error
Error
12500
"12"
12
12
12
"12500"
12500
12500
12500
"12500.00"
Error
Error
12500
"$12,500.00"
Error
Error
12500
"$12,500.10"
Error
Error
12500
"&HFF"
Error
Error
Operator
Berdasarkan pengalaman pemrograman, pemakaian operator tidak dapat dilepaskan dari
pekerjaan pemrograman, adapun operator pada Visual Basic adalah sebagai berikut :
Operator aritmatika : *, /, \, ^, Mod, +, dan
Operator relasi : =, <>, <, >, <=, and >=
Catatan :
Pada tipe data string, prilaku perbandingan sangat dipengaruhi oleh setting dari Option
Compare. (default adalah Option Compare Binary)
Pada Option Compare Binary : A < B < E < Z < a < b < e < z < < < < < <
Pada Option Compare Text : (A=a) < (= ) < (B=b) < (E=e) < (= ) < ( = ) < (Z=z)
Operator logika And, AndAlso, Or, OrElse, and Xor
Catatan :
Jika operand pertama pada suatu operasi AndAlso adalah False, maka hasil
ekspresi tersebut adalah False. Sebaliknya, suatu operasi logika And dilakukan
terhadap kedua operand.
Jika operand pertama dari operasi OrElse adalah True, maka hasil ekspresi
adalah True. Sebaliknya, suatu operasi logika Or akan dilakukan terhadap kedua
operand.
Dim Pattern As Short = 192 ' Bit pattern is 0000 0000 1100 0000.
Dim Result1, Result2, Result3, Result4, Result5 As Short
AZISDOTNET.WORDPRESS.COM
13
=
=
=
=
=
Pattern
Pattern
Pattern
Pattern
Pattern
<<
<<
<<
<<
<<
0
4
9
17
-1
'
'
'
'
'
Result
Result
Result
Result
Result
Abdul Azis
is
is
is
is
is
Dim Pattern As Short = 2560 ' Bit pattern is 0000 1010 0000 0000.
Dim Result1, Result2, Result3, Result4, Result5 As Short
Result1 = Pattern >> 0 ' Result is 2560 (0000 1010 0000 0000).
Result2 = Pattern >> 4 ' Result is 160 (0000 0000 1010 0000).
Result3 = Pattern >> 10 ' Result is 2
(0000 0000 0000 0010).
Result4 = Pattern >> 18 ' Result is 640 (0000 0010 1000 0000).
Result5 = Pattern >> -1 ' Result is 0
(shifted 15 places to right).
Operator bit shift bekerja pada tingkat bit, yang artinya jika 192 pada tipe data short
(desimal/basis sepuluh) maka representasinya dalam bentuk biner adalah 0000 0000 1100
0000 (16 bit).
Kemudian hal lain yang perlu diketahui adalah bit mask untuk masing-masing tipe data
adalah berbeda, berikut ini adalah tabel bitmask :
LeftOperand Type
Byte
Short
Integer
Long
SizeMask
7 (&H7)
15 (&HF)
31 (&H1F)
63 (&H3F)
Perintah shift right 18 untuk tipe Short akan menghasilkan operasi yang sama dengan
shift right 2 ( hasil operasi 18 And 15 = 2).
Result4 = Pattern >> 18 ' Result is 640
Contoh :
Dim myCheck As Boolean
myCheck = "F" Like "F"
myCheck = "F" Like "f"
myCheck = "F" Like "FFF"
AZISDOTNET.WORDPRESS.COM
14
Abdul Azis
Operator assignment : =, ^=, *=, /=, \=, +=, -=, <<=, >>=, &=
Contoh :
Dim a As Integer = 2
Dim b As Integer = 3
a += b
// akan menghasilkan 5 pada variabel a, atau sama dengan a = a+b
Catatan :
Sesuatu hal yang penting bagi programmer pemula adalah memahami urutan operasi dari
operator, pada Visual Basic menggunakan urutan operasi berikut ini :
Operator Aritmatika dan Pengabungan
Exponentiation (^)
Unary negation ()
Multiplication and division (*, /)
Integer division (\)
Modulus arithmetic (Mod)
Addition and subtraction (+, ), string concatenation (+)
String concatenation (&)
Arithmetic bit shift (<<, >>)
Operator Perbandingan
All comparison operators (=, <>, <, <=, >, >=, Like, Is, TypeOf...Is)
Operator Logika dan Bitwise
Negation (Not)
Conjunction (And, AndAlso)
Disjunction (Or, OrElse, Xor)
AZISDOTNET.WORDPRESS.COM
15
Abdul Azis
Contoh :
Dim A, B, C, D, E, F, G As Double
A = 3.0
B = 6.0
C = 4.0
D = 2.0
E = 1.0
F = A + B - C / D * E
' The previous line sets F to 7.0. Because of natural operator
' precedence, it is exactly equivalent to the following line:
F = (A + B) - ((C / D) * E)
' The following line overrides the natural operator precedence:
G = A + (B - C) / (D * E)
' The previous line sets G to 4.0.
Dengan memahami urutan operasi akan sangat membantu untuk menghindari kesalahan
dalam penulisan rumus yang dapat menyebabkan logika error.
AZISDOTNET.WORDPRESS.COM
16
Abdul Azis
Firebrick = &H2222B2&
End Enum
AZISDOTNET.WORDP
RESS.COM
number is {0}", 3 + 7)
result of {0} + {1} = {2}", 3, 7, 3+7)
decimals {0, 12:f1}", 0.123456789)
decimals {0, 12:f9}", 0.123456789)
value is {0, 0:000.00}", 0.123456789)
value is {0, 0:###.##}", 1234.56789)
17
Abdul Azis
number is 10
result of 3 + 7 = 10
decimal 0.1
decimal 0.123456789
value is 001.23
value is 1234.57
Culture
en-US
Data type
Double
Value
12345.6789
Output
$12,345.68
de-DE
Double
12345.678
12.345,68 DM
en-US
Int32
12345
12345
D8
en-US
Int32
12345
00012345
en-US
Double
12345.6789
1.234568E+004
E10
en-US
Double
12345.6789
1.2345678900E+004
fr-FR
Double
12345.6789
1,234568E+004
e4
en-US
Double
12345.6789
1.2346e+004
en-US
Double
12345.6789
12345.68
es-ES
Double
12345.6789
12345,68
F0
en-US
Double
12345.6789
123456
F6
en-US
Double
12345.6789
12345.678900
en-US
Double
12345.6789
12345.6789
G7
en-US
Double
12345.6789
12345.68
en-US
Double
0.0000023
2.3E-6
en-US
Double
0.0023
0.0023
G2
en-US
Double
1234
1.2E3
en-US
Double
Math.PI
3.14159265358979
en-US
Double
12345.6789
12,345.68
sv-SE
Double
12345.6789
12 345,68
N4
en-US
Double
123456789
123,456,789.0000
en-US
Double
.126
12.60 %
en-US
Double
Math.PI
3.141592653589793
en-US
Int32
0x2c45e
2c45e
en-US
Int32
0x2c45e
2C45E
X8
en-US
Int32
0x2c45e
0002C45E
en-US
Int32
123456789
75bcd15
Latihan :
1. Buatlah program untuk menghitung luas persegi panjang.
Jawab :
Option Explicit On
Public Module modmain
Sub Main()
Dim Panjang As System.Int32
Dim Lebar As System.Int32
Dim Luas As System.Int64
System.Console.Write("Masukkan Panjang :")
AZISDOTNET.WORDPRESS.COM
18
Abdul Azis
Panjang = System.Console.ReadLine()
System.Console.Write("Masukan Lebar :")
Lebar = System.Console.ReadLine()
Luas = Panjang*Lebar
System.Console.WriteLine("Luas Persegi Panjang adalah :" &
Luas.ToString())
End Sub
End Module
atau
Option Explicit On
Imports System
Public Module modmain
Sub Main()
Dim Panjang As Integer
Dim Lebar As Integer
Dim Luas As Long
Console.Write("Masukkan Panjang :")
Panjang = Console.ReadLine()
Console.Write("Masukan Lebar :")
Lebar = Console.ReadLine()
Luas = Panjang*Lebar
Console.WriteLine("Luas Persegi Panjang adalah :" & Luas.ToString())
End Sub
End Module
AZISDOTNET.WORDPRESS.COM
19
Abdul Azis
AZISDOTNET.WORDPRESS.COM
20
Abdul Azis
Contoh :
Option Explicit On
Imports System
Module ModIf
Sub Main()
Dim Nilai As Single
Console.Write("Masukkan Nilai Akhir :")
Nilai = Console.ReadLine()
If Nilai >= 85 Then
Console.WriteLine("A")
ElseIf Nilai >= 70 Then
Console.WriteLine("B")
ElseIf Nilai >= 60 Then
Console.WriteLine("C")
ElseIf Nilai >= 25 Then
Console.WriteLine("D")
AZISDOTNET.WORDPRESS.COM
21
Abdul Azis
Else
Console.WriteLine("E")
End If
End Sub
End Module
Perintah Select...Case
Jika statement If melakukan pemilihan berdasarkan kondisi, maka perintah Select
melakukan pemilihan berdasarkan nilai ekspresi dengan syntax sebagai berikut :
Select [ Case ] testexpression
[ Case expressionlist
[ statements ] ]
[ Case Else
[ elsestatements ] ]
End Select
Contoh :
Option Explicit On
Imports System
Module ModHari
Sub Main()
Dim Hari As Byte
Console.Write("Masukkan No Hari :")
Hari = Console.ReadLine()
Select Case Hari
Case 1
Console.WriteLine("Senin")
Case 2
Console.WriteLine("Selasa")
Case 3
Console.WriteLine("Rabu")
Case 4
Console.WriteLine("Kamis")
Case 5
Console.WriteLine("Jumat")
Case 6
Console.WriteLine("Sabtu")
Case 7
Console.WriteLine("Minggu")
Case Else
Console.WriteLine("No Hari tidak sah")
End Select
End Sub
End Module
Contoh Lain :
Option Explicit On
Imports System
Module ModHari
Sub Main()
AZISDOTNET.WORDPRESS.COM
22
Abdul Azis
Perintah For...Next
Salah satu keunggulan komputer dibandingkan dengan manusia adalah dapat
mengerjakan sesuatu secara berulang-ulang tanpa mengalami penurunan kualitas
terhadap hasil kerja.
Salah satu perintah perulangan di Visual Basic ada ForNext Statements yang
merupakan perulangan dengan menggunakan sistem counter dengan menggunakan
syntax sebagai berikut :
For counter [ As datatype ] = start To end [ Step step ]
[ statements ]
[ Exit For ]
[ statements ]
Next [ counter
Contoh :
Dim I As Integer
For I = 1 To 100
Console.WriteLine(I)
Next I
'Defaultnya Step 1
Atau
For I As Integer = 1 To 100
Console.WriteLine(I)
Next I
'Defaultnya Step 1
23
For I = 1 To 100
Console.WriteLine(I)
Next I
Abdul Azis
'Defaultnya Step 1
'Defaultnya Step 1
Tapi jika ditinjau dari lingkup pemakaian variabel, maka variabel I pada contoh pertama
adalah variabel local Sub Main, sedangkan variabel I pada contoh kedua adalah variable
local untuk blok looping.
Contoh :
Dim I As Integer
For I = 1 To 100
Console.WriteLine(I)
Next I
Console.WriteLine(I)
'Defaultnya Step 1
Sedangkan
For I As Integer = 1 To 100
Console.WriteLine(I)
Next I
Console.WriteLine(I)
'Defaultnya Step 1
AZISDOTNET.WORDPRESS.COM
24
Abdul Azis
Perintah Do...Loop
Jika perintah For Next melakukan looping berdasarkan counter, maka perintah Do
Loop melakukan looping berdasarkan kondisi, adapun tata cara penulisannya adalah
sebagai berikut :
Do { While | Until } condition
[ statements ]
[ Exit Do ]
[ statements ]
Loop
AZISDOTNET.WORDPRESS.COM
25
Abdul Azis
Atau
Do
[ statements ]
[ Exit Do ]
[ statements ]
Loop { While | Until }
condition
Perbedaan antara kedua struktur perulangan diatas adalah posisi pemeriksaan kondisi
yang akan diuji, pada struktur yang pertama pengujian kondisi dilakukan sebelum
statements dikerjakan, sedangkan pada struktur yang kedua pengujuan dilakukan setelah
statement dikerjakan.
Sebagaimana dengan Exit For, perintah Exit Do akan mengakhiri Looping tanpa
bersyarat, yang artinya jika perintah Exit Do ditemukan, maka proses Looping akan
segera dihentikan dan dilanjutkan ke Statement dibawah Loop.
Contoh :
Option Explicit On
Imports System
Module DoLoop
Sub Main()
Dim Dat() As Integer
Dim Jd,DTemp As Integer
Jd = 0
Do
Console.Write("Data Ke-{0} :", Jd+1)
DTemp = Console.ReadLine()
If DTemp <> 0 Then
ReDim Preserve Dat(Jd)
Dat(Jd) = DTemp
Jd+=1
End If
Loop Until DTemp = 0
'Ulangi sampai Dtemp diisi 0
For I As Integer = 0 To Jd-1
Console.WriteLine("Data Ke-{0} adalah {1}",I+1, Dat(I))
Next I
End Sub
End Module
Pada contoh diatas, mula-mula kita mendeklarasikan suatu array tanpa diikuti dengan
ukuran, kemudian proses akan dilanjutkan dengan pembacaan data ke variabel Dtemp,
dab jika nilai Dtemp bukan 0 (nol), maka ukuran array akan dialokasi ulang dengan
perintah ReDim Preserve yang akan mempertahankan isi array, dan pembacaan data akan
terus diulang sampai Dtemp diisi dengan 0 (nol).
AZISDOTNET.WORDPRESS.COM
26
Abdul Azis
Selain struktur DoLoop, juga tersedia perintah perulangan dengan tata cara penulisan
sebagai berikut.
While condition
[ statements ]
End While
Pada prinsipnya struktur While End While sama dengan Do While Loop.
Next [ element ]
Contoh :
Option Explicit On
Imports System
Module DoLoop
Sub Main()
Dim Dat() As Integer
Dim Jd,DTemp As Integer
Jd = 0
Do
Console.Write("Data Ke-{0} :", Jd+1)
DTemp = Console.ReadLine()
If DTemp <> 0 Then
ReDim Preserve Dat(Jd)
Dat(Jd) = DTemp
Jd+=1
End If
Loop Until DTemp = 0
For Each Data As Integer In Dat
Console.WriteLine("Data pada array {0}", Data)
Next
End Sub
End Module
Array pada Visual Basic merupakan collection pada System.Array, sehingga pemakaian
perintah For Each akan mendapatkan elemen 0 s/d element terakhir dari array.
AZISDOTNET.WORDPRESS.COM
27
Abdul Azis
Latihan :
1. Buatlah program mencetak tabel perkalian 1x1 = 1 s/d 10 x 10 = 100
Option Explicit On
Imports System
Public Module ModKali
Sub Main()
Dim i, j As Byte
For i = 1 To 10
For j = 1 to 10
Console.WriteLine("{0,3} x {1,3} = {2,3}",i,j,i*j)
Next j
Next i
End Sub
End Module.
AZISDOTNET.WORDPRESS.COM
28
Abdul Azis
7. Buatlah program yang dapat mencetak faktor prima dari suatu bilangan
bulat (Contoh 100 = 2 x 2 x 5 x 5)
AZISDOTNET.WORDPRESS.COM
29
Abdul Azis
=
=
=
=
=
0
1
4
9
16
Array dapat juga diberi nilai awal pada saat deklarasi dengan penulisan sebagai berikut:
Private a As Integer() = { 0, 2, 4, 6, 8 }
AZISDOTNET.WORDPRESS.COM
30
Abdul Azis
Private b As Integer(,) = { { 0, 1 }, { 2, 3 }, { 4, 5 }, { 6, 7 }, {
8, 9 } }
0)
0)
0)
0)
0)
=
=
=
=
=
0
2
4
6
8
:
:
:
:
:
b(0,
b(1,
b(2,
b(3,
b(4,
1)
1)
1)
1)
1)
=
=
=
=
=
1
3
5
7
9
LongLength
Rank
Contoh :
Option Explicit On
Imports System
Imports Microsoft.VisualBasic
Public Module ModArr
Public Arr(3,3) As Integer
Sub Main()
Console.WriteLine(Arr.Length())
Console.WriteLine(Arr.LongLength())
Console.WriteLine(Arr.Rank())
End Sub
'16
'16
'2
End Module
GetLength
GetLongLength
Contoh :
Option Explicit On
Imports System
Imports Microsoft.VisualBasic
Public Module ModArr
AZISDOTNET.WORDPRESS.COM
31
Abdul Azis
'4
'4
End Module
GetLowerBound
GetUpperBound
Contoh :
Option Explicit On
Imports System
Imports Microsoft.VisualBasic
Public Module ModArr
Public Arr(3,3) As Integer
Sub Main()
Console.WriteLine(Arr.GetLowerBound(0))
Console.WriteLine(Arr.GetUpperBound(0))
End Sub
'0
'3
End Module
IndexOf
LastIndexOf
Contoh :
Option Explicit On
Imports System
Imports Microsoft.VisualBasic
Public Module ModArr
Public Arr() As Integer = {0,1,2,3,4,3,2,1,0}
Sub Main()
Console.WriteLine(Array.IndexOf(Arr,3))
Console.WriteLine(Array.LastIndexOf(Arr,3))
End Sub
'3
'5
End Module
Reverse
Option Explicit On
AZISDOTNET.WORDP
RESS.COM
32
Abdul Azis
Imports System
Imports Microsoft.VisualBasic
Public Module ModArr
Public Arr() As Integer = {0,1,2,3,4}
Sub Main()
Dim I As Integer
For I = Arr.GetLowerBound(0) To Arr.GetUpperBound(0)
Console.Write(Arr(I))
'01234
Next I
Console.WriteLine()
Array.Reverse(Arr,0,4)
For I = Arr.GetLowerBound(0) To Arr.GetUpperBound(0)
Console.Write(Arr(I))
'43210
Next I
End Sub
End Module
Sort
Contoh :
Option Explicit On
Imports System
Imports Microsoft.VisualBasic
Public Module ModArr
Public Arr() As Integer = {0,4,3,1,2}
Sub Main()
Dim I As Integer
For I = Arr.GetLowerBound(0) To Arr.GetUpperBound(0)
Console.Write(Arr(I))
'04312
Next I
Console.WriteLine()
Array.Sort(Arr,0,4)
For I = Arr.GetLowerBound(0) To Arr.GetUpperBound(0)
Console.Write(Arr(I))
'01234
Next I
End Sub
End Module
BinarySearch
Option Explicit On
Imports System
Imports Microsoft.VisualBasic
Public Module ModArr
Public Arr() As Integer = {0,4,3,1,2}
Sub Main()
Dim Nilai = 3
AZISDOTNET.WORDPRESS.COM
33
Abdul Azis
Array.Sort(Arr,0,4)
Console.WriteLine(Array.BinarySearch(Arr,Nilai))
End Sub
'2
End Module
Perintah ReDim
Perintah ReDim digunakan untuk mendefinisi ulang jumlah elemen pada Array dengan
atau tanpa mempertahankan data array sebelumnya.
ReDim [ Preserve ] name(boundlist)
Preserve
Sifatnya optional, jika digunakan maka data pada array tersebut akan
dipertahankan pada array ukuran baru
Contoh :
Pada contoh berikut menggunakan perintah ReDim untuk mengalokasi ualang ukuran
variabel array.
Dim I, MyArray() As Integer
ReDim MyArray(5)
For I = 0 To UBound(MyArray)
MyArray(I) = I
Next I
Perintah berikut mengubah ukuran dari array dengan mempertahankan isi elementnya.
ReDim Preserve MyArray(15) ' Resize to 16 elements.
Contoh berikut mengalokasi ulang array sesuai dengan data yang dimasukan pemakai :
Option Explicit On
Imports System
Module DoLoop
AZISDOTNET.WORDPRESS.COM
34
Abdul Azis
Sub Main()
Dim Dat() As Integer
Dim Jd,DTemp As Integer
Jd = 0
Do
Console.Write("Data Ke-{0} :", Jd+1)
DTemp = Console.ReadLine()
If DTemp <> 0 Then
ReDim Preserve Dat(Jd)
Dat(Jd) = DTemp
Jd+=1
End If
Loop Until DTemp = 0
'Ulangi sampai Dtemp diisi 0
For I As Integer = 0 To Jd-1
Console.WriteLine("Data Ke-{0} adalah {1}",I+1, Dat(I))
Next I
End Sub
End Module
Perintah Erase
Perintah Erase digunakan untuk membebaskan array dan memory yang digunakan
elemennya, dengan tata cara penulisan sebagai berikut :
Erase arraylist
Catatan
Perintah Erase akan memberikan nilai Nothing ke variabel array.
Contoh
Pada contoh berikut menggunakan perintah Erase untuk membebaskan memori dua array
(1000 dan 100 tempat elemen yang bersesuaian). Kemudian menggunakan perintah
ReDim untuk memberikan ukuran baru untuk ketiga dimensi dari array.
Dim Int3DArray(9, 9, 9), Int2DArray(9, 9) As Integer
' ...
Erase Int3DArray, Int2DArray
' ...
ReDim Int3DArray(4, 4, 9)
AZISDOTNET.WORDPRESS.COM
35
Abdul Azis
Pengolahan data array dapat juga menggunakan beberapa fungsi bantu yang berkaitan
dengan array yang tersedia pada Namespace Microsoft.VisualBasic, berikut ini adalah
beberapa fungsi bantu tersebut :
Fungsi IsArray
Mengembalikan nilai Boolean yang menunjukan apakah suatu variabel menunjuk pada
suatu array.
Pada contoh ini fungsi IsArray memeriksa apakah variabel-variabel mengacu pada suatu
array.
Dim MyArray(4), YourArray(3) As Integer
Dim MyString As String
Dim MyCheck As Boolean
MyCheck = IsArray(MyArray)
MyCheck = IsArray(YourArray)
MyCheck = IsArray(MyString)
LBound Function
Mengembalikan index terendah untuk dimensi tertentu dari suatu array
Pada contoh berikut menggunakan fungsi LBound untuk mendapatkan index terendah
suatu dimensi dari array.
Dim Lowest, MyArray(10, 15, 20), AnyArray(6) as Integer
' Returns 0.
Lowest = LBound(MyArray, 1)
' Returns 0.
Lowest = LBound(MyArray, 3)
' Returns 0.
Lowest = LBound(AnyArray)
Error number
9
9
Condition
Array is Nothing.
Rank < 1 or Rank is greater
than the rank of Array.
Fungsi UBound
Mengembalikan index yang terbesar dari suatu dimensi pada array.
Pada contoh berikut menggunakan fungsi Ubound untuk menentukan index yang terbesar
dari suatu dimensi pada array.
Dim Highest, MyArray(10, 15, 20), AnyArray(6) as Integer
AZISDOTNET.WORDPRESS.COM
36
Abdul Azis
Catatan :
Untuk memanfaatkan fungsi IsArray, Lbound dan Ubound anda perlu mencantumkan
Imports Microsoft.VisualBasic
Pada awal program
Latihan :
1. Buatlah program yang menbaca sejumlah data dari pemakain, dan menampilkan
kembali dalam keadaan berurut dari kecil ke besar, nilai total, rata-rata, nilai
terbesar, dan nilai yang terkecil dengan pemanfaatan array.
2. Perbaiki program diatas untuk menampilkan kembali dalam keadaan berurut dari
besar ke kecil.
3. Tambahkan kemampuan program untuk mencari suatu nilai yang dimasukan dan
menampilkan posisinya dalam array.
4. Buatlah program yang mencetak suatu segitiga Pascal.
AZISDOTNET.WORDPRESS.COM
37
Abdul Azis
Contoh :
Option Explicit On
Imports System
Imports Microsoft.VisualBasic
Public Module GenapGanjil
Function IsGenap(x As Long) As Boolean
If (x Mod 2) = 0 Then
Return True
Else
Return False
End If
End Function
REM program utama
Sub Main()
Dim bil As Long
Console.Write("Masukan Bilangan :")
bil = Console.ReadLine()
If IsGenap(bil) Then
Console.WriteLine("Bilangan {0} adalah Genap",bil)
Else
Console.WriteLine("Bilangan {0} adalah Ganjil",bil)
End If
End Sub
End Module
AZISDOTNET.WORDPRESS.COM
38
Abdul Azis
Misalnya kita ingin menghitung akar persamaan kuadrat dengan menggunakan rumus
ABC. Yang mana X1 dan X2 yang kemungkinan akar imaginier, dimana function akan
mengembalikan suatu nilai true (ada solusi) atau false (tidak ada solusi).
Contoh :
Option Explicit On
Imports System
Imports Microsoft.VisualBasic
Public Module AkarKuadrat
Function CariAkar(A as Long, B as Long ,C As Long, _
ByRef X1 as single ,ByRef X2 as single) As Boolean
Dim D as Long
D = B^2 - 4*A*C
If D < 0 Then
'Akar Imaginier
Return False
'Tidak ada solusi
Else
X1 = (-B + Math.Sqrt(D))/(2*A)
'argumen X1
X2 = (-B - Math.Sqrt(D))/(2*A)
'argumen X2
Return True
'Ada solusi
End If
End Function
REM program utama
Sub Main()
Dim A,B,C As Long
Dim X1,X2 As Single
Console.WriteLine("Mencari akar persamaan kuadrat")
Console.Write("Masukan A :")
A = Console.ReadLine()
Console.Write("Masukan B :")
B = Console.ReadLine()
Console.Write("Masukan C :")
C = Console.ReadLine()
If CariAkar(A,B,C,X1,X2) Then
Console.WriteLine("Akar X1={0} X2={1}",X1,X2)
Else
Console.WriteLine("Akar imaginier")
End If
End Sub
End Module
Catatan :
Perintah Return digunakan untuk mengembalikan nilai ke pemanggil, dan jika suatu Exit
Function digunakan, maka function akan mengembali nilai defaut berupa 0 for Byte,
Char, Decimal, Double, Integer, Long, Short, and Single; Nothing for Object, String,
and all arrays; False for Boolean; and #1/1/0001 12:00 AM# for Date.
Jika kita perlu melewatkan suatu array sebagai argumen pada function, maka dapat
digunakan keyword ParamArray untuk melewatkan nilai array secara by value, contoh :
AZISDOTNET.WORDPRESS.COM
39
Abdul Azis
Option Explicit On
Imports System
Imports Microsoft.VisualBasic
Public Module ModArr
Function sumArray(ByVal Paramarray Dat() As Byte)
Dim Total As Long = 0
For I As Integer = 0 To UBound(Dat)
Total += Dat(I)
Next I
Return Total
End Function
Dim Digit() As Byte = {0,1,2,3,4,5}
Sub Main()
Console.WriteLine(sumArray(Digit))
End Sub
End Module
Sub Statement
Pada bagian sebelumnya kita telah membahas tentang function dan pemakaiannya,
selanjutnya kita akan melihat Sub yang menyerupai Function, dimana perbedaannya
adalah jika function digunakan untuk proses yang mengembalikan nilai kepada
pemanggil, sedangkan Sub cenderung digunakan untuk proses yang tidak mengembalikan
nilai.
Sub name [(arglist)]
[ statements ]
[ Exit Sub ]
[ statements ]
End Sub
Catatan :
Sebagaimana function, sebenarnya sub juga dapat digunakan untuk proses yang
mengembalikan nilai melalui argumen yang dikirim secara ByRef.
Jika Exit Sub digunakan, maka Sub akan kembali ke pemanggil secara tidak bersyarat.
Contoh :
Option Explicit On
Imports System
Imports Microsoft.VisualBasic
Public Module ModArr
Public Arr() As Integer
Public Jd As Byte
Sub BacaJd()
Console.Write("Masukkan Jumlah Data :")
Jd = Console.ReadLine()
End Sub
Sub BacaData()
AZISDOTNET.WORDPRESS.COM
40
Abdul Azis
ReDim Arr(Jd-1)
For I As Byte = 0 To UBound(Arr)
Console.Write("Data Ke -{0} :",I+1)
Arr(I) = Console.ReadLine()
Next I
End Sub
Sub CariRataRata()
Dim Total As Long = 0
For I As Byte = 0 To UBound(Arr)
Total +=Arr(I)
Next I
Console.WriteLine("Nilai Rata-rata : {0}",Total/Jd)
End Sub
Sub Main()
BacaJd()
BacaData()
CariRataRata()
End Sub
End Module
Latihan :
AZISDOTNET.WORDPRESS.COM
41
Abdul Azis
1. Buatlah function IsKabisat yang akan mengembalikan nilai True jika tahun yang
dikirim sebagai argumen adalah Kabisat, dan False jika sebaliknya.
2. Buatlah function IsPrima yang akan mendeteksi apakah suatu bilangan yang
diberikan adalah Prima atau tidak.
3. Dengan pemanfaatan teknik rekursi, buatlah function yang dapat menghitung
suku yang ke n dari barisan fibonacci.
4. Buatlah program yang mencetak faktor prima dari suatu bilangan dengan
pemanfaatan Sub secara rekursi.
AZISDOTNET.WORDPRESS.COM
42
Abdul Azis
String
Variabel string pada Visual Basic disimpan sebagai urutan dari angka 16-bit (2 byte)
yang memiliki jangkauan dari 0 sampai 65535. Masing-masing angka merupakan suatu
karakter tunggal Unicode. Suatu string dapat mengandung sampai dengan 2 Milyar
(2^31) karakter Unicode.
128 kode pertama (0-127) dari Unicode berkaitan dengan huruf dan simbol pada
keyboard standard U.S yang mana sama dengan karakter set yang terdefinisi pada ASCII,
kemudian 128 karakter berikutnya (128255) merupakan karakter spesial, seperti huruf
alphabet Latin, accent, simbol mata uang, dan pecahan. Kemudian karakter sisianya
digunakan untuk berbagai simbol, termasuk karakter teksual didunia, dan simbol teknis,
dan metematika.
Pada dasarnya String pada Visual Basic mengacu pada String Class.
Contoh :
Option Explicit On
Imports System
Public Module modStr
Dim Nama As String = "Hendra Soewarno"
Sub Main()
Console.WriteLine(Nama.ToUpper())
Console.WriteLine(Nama.ToLower())
End Sub
End Module
Pada contoh diatas akan mencetak HENDRA SOEWARNO dan hendra soewarno.
Public Properties
Chars
Length
Contoh :
Option Explicit On
Imports System
Public Module modStr
AZISDOTNET.WORDPRESS.COM
43
Abdul Azis
'Akan
'Akan
'Akan
'Akan
mencetak
mencetak
mencetak
mencetak
H
e
n
12
End Module
Public Methods
PadLeft
Mengisi spasi atau karakter lain disebelah kiri string sampai string
mencapai panjang tertentu.
PadRight
ToLower
ToUpper
Trim
TrimEnd
TrimStart
Substring
Contoh :
Option Explicit On
Imports System
Public Module modStr
Dim Nama As String = "Hendra Soewarno"
Dim Kota As String = " Medan "
Sub Main()
Console.WriteLine(Nama.PadLeft(20,"-"))
Console.WriteLine(Nama.PadRight(20,"-"))
Console.WriteLine(Nama.ToLower())
Console.WriteLine(Nama.ToUpper())
Console.WriteLine(Kota.TrimEnd())
Console.WriteLine(Kota.TrimStart())
AZISDOTNET.WORDPRESS.COM
'-----Hendra Soewarno
'Hendra Soewarno----'hendra soewarno
'HENDRA SOEWARNO
'____Medan
'Medan_____
44
Abdul Azis
'Medan
'dra
Insert
Remove
Replace
Contoh :
Option Explicit On
Imports System
Public Module modStr
Dim Nama As String = "Santo"
Sub Main()
Console.WriteLine(Nama.Insert(1,"us")) 'Susanto
Console.WriteLine(Nama.Remove(0,1)) 'anto
Console.WriteLine(Nama.Replace("o","i")) 'Santi
End Sub
End Module
IndexOf
IndexOfAny
LastIndexOf
LastIndexOfAny
StartsWith
EndsWith
Contoh :
Option Explicit On
Imports System
Public Module modStr
'
0
1
2
'
012345678901234567890123456
Dim Nama As String = "ebook karya Hendra Soewarno"
AZISDOTNET.WORDPRESS.COM
45
Abdul Azis
'True
'False
'True
'False
Option Explicit On
Imports System
Public Module modStr
'
0
1
2
'
012345678901234567890123456
Dim Nama As String = "ebook karya Hendra Soewarno"
Sub Main()
Console.WriteLine(Nama.IndexOfAny("e"))
Console.WriteLine(Nama.LastIndexOfAny("e"))
Console.WriteLine(Nama.IndexOf("e",2))
Console.WriteLine(Nama.LastIndexOf("e",15))
End Sub
End Module
'0
'21
'13
'13
'72
'72
'H
'H
End Module
AZISDOTNET.WORDPRESS.COM
46
Abdul Azis
'15
'hendra soewarno
'HENDRA SOEWARNO
End Module
'H
'Hendra
'Soewarno
'dra
End Module
AZISDOTNET.WORDPRESS.COM
47
Abdul Azis
Lset(x,y), mengembalikan string rapat kiri dengan panjang y dengan menambah spasi
dibelakang string x.
Contoh :
Option Explicit On
Imports System
Imports Microsoft.VisualBasic
Public Module modStr
Sub Main()
Dim Nama1 As String = "Hendra"
Dim Nama2 As String = "Soewarno"
Console.WriteLine(Nama1 & Space(5) & Nama2) 'Hendra
Console.WriteLine(RSet(Nama1,9))
'___Hendra
Console.WriteLine(LSet(Nama1,9))
'Hendra___
End Sub
Soewarno
End Module
'Susan
'nasuS
End Module
InStr(y, x, z), mencari dari depan posisi keberadaan substring z dalam string x mulai
posisi y.
InStrRev(x, z, y), mencari dari belakang posisi keberadaan substring z dalam string x
mulai posisi y.
Contoh :
AZISDOTNET.WORDPRESS.COM
48
Abdul Azis
Option Explicit On
Imports System
Imports Microsoft.VisualBasic
Public Module modStr
Sub Main()
Dim Nama As String = "Felicia Fortuna"
Console.WriteLine(InStr(1,Nama,"i"))
Console.WriteLine(InStr(5,Nama,"i"))
Console.WriteLine(InStrRev(Nama,"F",10))
Console.WriteLine(InStrRev(Nama,"F",7))
End Sub
'4
'6
'9
'1
End Module
'0
'1
End Module
Catatan :
Pada metode Binary, perbandingan dilakukan berdasarkan nilai ASCII, dimana ASCII
huruf kecil > dari huruf besar, contoh A = 65, dan a = 97.
Split(x,y), mengembalikan array string yang merupakan hasil pemisahan dari string x
dengan delimeter y
Option Explicit On
Imports System
Imports Microsoft.VisualBasic
Public Module modStr
Sub Main()
Dim Nama As String = "Felicia Fortuna"
Dim aNama() As String = Split(Nama," ")
Console.WriteLine(aNama(0))
AZISDOTNET.WORDPRESS.COM
'Felicia
49
Abdul Azis
'Fortuna
End Module
Join(x,y), mengembalikan string yang merupakan hasil gabungan array string x dengan
delimeter y
Option Explicit On
Imports System
Imports Microsoft.VisualBasic
Public Module modStr
Sub Main()
Dim aNama() As String = {"Felicia","Fortuna"}
Console.WriteLine(Join(aNama,", ")) 'Felicia, Fortuna
End Sub
End Module
StrConv(x,y), menghasilkan string yang merupakan hasil konversi dengan metode y dari
string x, dimana y (VBStrConv.UpperCase, VBStrConv.LowerCase,
VBStrConv.ProperCase)
Contoh :
Option Explicit On
Imports System
Imports Microsoft.VisualBasic
Public Module modStr
Sub Main()
Dim Nama As String = "Hendra"
Console.WriteLine(StrConv(Nama,VbStrConv.UpperCase))
'HENDRA
Console.WriteLine(StrConv(Nama,VbStrConv.LowerCase))
'hendra
Console.WriteLine(StrConv(Nama,VbStrConv.ProperCase)) 'Hendra
End Sub
AZISDOTNET.WORDPRESS.COM
50
Abdul Azis
End Module
'$100,000.00
'100,000.00
'10.00%
End Module
Format(x,y), menghasilkan string yang merupakan format dari argumen x dengan format
y, dengan format yang dapat dilihat pada lampiran 1.
Contoh :
AZISDOTNET.WORDPRESS.COM
51
Abdul Azis
'10,000.00
End Module
Filter(x,y,[1],[2]), menghasilkan array yang berisi string dari array string x yang mana
elemen yang mengandung substring y, dengan ketentuan [1] (true=contain, false =
exclude), dengan compare method [2].
Contoh :
Option Explicit On
Imports System
Imports Microsoft.VisualBasic
Public Module modStr
Sub Main()
Dim aNama1() As String = {"Hendra","Susan","Felicia Fortuna"}
Dim aNama2() As String =
Filter(aNama1,"r",true,CompareMethod.Binary)
For Each A As String In aNama2
Console.WriteLine(A)
'Hendra & Felicia Fortuna
Next
End Sub
End Module
Latihan :
1. Buatlah program yang dapat menghasilkan terbilang dari suatu bilangan, contoh
123,456,789 (Seratus dua puluh tiga juta empat ratus lima puluh enam ribu tujuh
ratus delapan puluh sembilan).
AZISDOTNET.WORDPRESS.COM
52
Abdul Azis
Dimana akan memberikan nilai Tanggal 30 Mei 2005 Pukul 8:29:59.900 ke variabel
Tanggal.
TimeOfDay
Day
Month
Year
Hour
Minute
Second
Millisecond
DayOfWeek
DayOfYear
Ticks
Now
Today
UtcNow
Contoh :
Option Explicit On
Imports System
Public Module ModDate
AZISDOTNET.WORDPRESS.COM
53
Abdul Azis
Sub Main()
Dim Tanggal As Date = New Date(2005,5,30,8,29,40,900)
Console.WriteLine(Tanggal.Date())
'30-05-2005
Console.WriteLine(Tanggal.TimeOfDay()) '08:29:40.9000000
Console.WriteLine(Tanggal.Day())
'30
Console.WriteLine(Tanggal.Month())
'5
Console.WriteLine(Tanggal.Year())
'2005
Console.WriteLine(Tanggal.Hour())
'8
Console.WriteLine(Tanggal.Minute()) '29
Console.WriteLine(Tanggal.Second()) '40
Console.WriteLine(Tanggal.MilliSecond()) '900
Console.WriteLine(Tanggal.DayOfWeek()) '1
Console.WriteLine(Tanggal.DayOfYear()) '150
Console.WriteLine(Tanggal.Ticks())
'632530385809000000
Console.WriteLine(DateTime.Now())
'30-05-2005 08:30:29 PM
Console.WriteLine(Tanggal.Today())
'30-05-2005
Console.WriteLine(Tanggal.UTCNow()) '30-05-2005 1:37:20 PM
End Sub
End Module
Visual Basic menyediakan berbagai fungsi bantu yang merupakan member dari
namespace Microsoft.VisualBasic
AddDays
AddMonths
AddYears
AddHours
AddMinutes
AddSeconds
AddMilliseconds
Option Explicit On
Imports System
Public Module ModDate
Sub Main()
Dim Tanggal As Date = New Date(2005,5,30,8,29,40,900)
Console.WriteLine(Tanggal.AddDays(-10)) '20-5-2005 8:29:40.900
End Sub
End Module
Parse
Option Explicit On
Imports System
Public Module ModDate
Sub Main()
Dim Str As String = "30-5-2005 08:30:50.900"
AZISDOTNET.WORDPRESS.COM
54
Abdul Azis
Compare
DaysInMonth
IsLeapYear
Option Explicit On
Imports System
Public Module ModDate
Sub Main()
Dim Tanggal1 As Date = New Date(2005,5,30)
Dim Tanggal2 As Date = New Date(2005,5,31)
Console.WriteLine(DateTime.Compare(Tanggal1,Tanggal2))
Console.WriteLine(DateTime.DaysInMonth(2005,5))
Console.WriteLine(DateTime.IsLeapYear(2005))
End Sub
End Module
Subtract
'-1
'31
'False
Option Explicit On
Imports System
Public Module ModDate
Sub Main()
Dim Tanggal1 As Date = New Date(2005,5,30)
Dim Tanggal2 As Date = New Date(2005,5,31)
Console.WriteLine(Tanggal1.Subtract(Tanggal2))
End Sub
End Module
ToLocalTime
ToLongDateString
ToLongTimeString
ToShortDateString
ToShortTimeString
ToString
ToUniversalTime
AZISDOTNET.WORDPRESS.COM
'-1 00:00:00
55
Abdul Azis
AZISDOTNET.WORDPRESS.COM
56
Abdul Azis
String
DateInterval.Day
DateInterval.DayOfYear
DateInterval.Hour
DateInterval.Minute
DateInterval.Month
DateInterval.Quarter
DateInterval.Second
DateInterval.Weekday
DateInterval.WeekOfYear
ww
DateInterval.Year
yyyy
AZISDOTNET.WORDPRESS.COM
57
Abdul Azis
Nama
Tugas
Mid
Semester
Catatan :
Sebagaimana telah dinyatakan sebelumnya bahwa secara default string pada Visual Basic
adalah variable length, dan untuk membentuk string dengan fixed length kita
membutuhkan vbFixedStringAttribute Class, dimana pada awal deklarasi string kita
mencantumkan <VBFixedString(ukuran)>
Salah satu keunggulan pada Structure di Visual Basic adalah kita dapat menambahkan
koding kedalamnya untuk membuat metoda dan property, contoh misalnya kita akan
menambah property Rata-rata untuk menghitung nilai rata-rata Tugas, Mid dan Semester,
sehingga deklarasi Structure dapat ditulis menjadi :
Option Explicit On
Imports System
Imports Microsoft.VisualBasic
Public Module ModStruct
Structure Ujian
<VBFixedString(10)> Public Nim As String
<VBFixedString(30)> Public Nama As String
Public Tugas,Mid,Semester As Single
Public ReadOnly Property RataRata() As Single
Get
Return (Tugas+Mid+Semester)/3
End Get
End Property
End Structure
Dim DaftarUjian As Ujian
Sub Main()
DaftarUjian.Nim = "920403024"
AZISDOTNET.WORDPRESS.COM
58
Abdul Azis
Nama
AZISDOTNET.WORDPRESS.COM
")
59
Abdul Azis
Console.WriteLine("----------------------------------------------------------------------")
Latihan :
1. Kembangkan program diatas untuk mencetak Daftar Ujian Mahasiswa, dimana
ditampilkan nilai rata-rata diikuti dengan nilai Huruf (A, B, C, D, atau E), serta
tampilkan jumlah yang Lulus (C Keatas), dan Rata-rata kelas, serta NIM
mahasiswa peringkat pertama, dengan pendekatan terstruktur.
Catatan : Kategori nilai Huruf dicetak dengan membuat Properti NilaiHuruf pada
Structure Ujian.
AZISDOTNET.WORDPRESS.COM
60
Abdul Azis
File Class
Menyediakan metode-metode static untuk pembuatan, menduplikasi, menghapus, dan
membuka file. Berikut ini adalah beberapa member File Class :
File.Exists(namafile), mendeteksi keberadaan file
File.Delete(namafile), menghapus file yang ditentukan
File.Copy(asal,tujuan), menduplikasi file asal ke file tujuan
File.Move(asal,tujuan), memindahkan file ke lokasi baru dengan nama baru
File.GetAttributes(namafile), mendapatkan attribut dari file, dimana mengembalikan
salah satu nilai dari member FileAttributes :
Member name
Description
Value
Archive
32
Compressed
2048
Device
64
Directory
16
AZISDOTNET.WORDPRESS.COM
61
Abdul Azis
Encrypted
The file or directory is encrypted. For a file, this means that all
data in the file is encrypted. For a directory, this means that
encryption is the default for newly created files and directories.
16384
Hidden
Normal
The file is normal and has no other attributes set. This attribute is
valid only if used alone.
128
NotContentIndexed
8192
Offline
The file is offline. The data of the file is not immediately available.
4096
ReadOnly
ReparsePoint
1024
SparseFile
The file is a sparse file. Sparse files are typically large files whose
data are mostly zeros.
512
System
The file is a system file. The file is part of the operating system or
is used exclusively by the operating system.
Temporary
The file is temporary. File systems attempt to keep all of the data
in memory for quicker access rather than flushing the data back
to mass storage. A temporary file should be deleted by the
application as soon as it is no longer needed.
256
62
Abdul Azis
AZISDOTNET.WORDPRESS.COM
63
Abdul Azis
Menulis ke FileStream
Kemudian dapat digunakan metoda write untuk menulis data terhadap FileStream
Tertulis = Fs.Write(buffer,index,count)
Menutup FileStream
Anda dapat menggunakan metoda Close untuk menutup FileStream yang terbuka.
Fs.Close
Contoh Program simulasi perintah copy pada dos:
Option Explicit On
Imports System
Imports System.IO
Public Module ModFS
Sub Main(ByVal CmdArgs() As String)
Dim Buffer(511) As Byte
If CmdArgs.Length < 2 Then
Console.WriteLine("Pemakaian : duplikat <fileasal>
<filetujuan>")
End
End If
If File.Exists(CmdArgs(0)) Then
Dim FSS As FileStream = File.OpenRead(CmdArgs(0))
Dim FST As FileStream = File.Create(CmdArgs(1))
Dim Terbaca As Integer = 0
Dim I As Integer
Do
Terbaca = FSS.Read(Buffer,0,Buffer.Length())
FST.Write(Buffer,0,Terbaca)
Loop Until Terbaca < 512
AZISDOTNET.WORDPRESS.COM
64
Abdul Azis
FSS.Close()
FST.Close()
Else
Console.WriteLine("File asal tidak ditemukan !")
End If
End Sub
End Module
Contoh Program simulasi perintah copy pada dos dengan constructor FileStream:
Option Explicit On
Imports System
Imports System.IO
AZISDOTNET.WORDPRESS.COM
65
Abdul Azis
Nama
Tugas
Mid
Semester
AZISDOTNET.WORDPRESS.COM
66
Abdul Azis
Get
Return (Tugas+Mid+Semester)/3
End Get
End Property
End Structure
Fs.Seek(10,SeekOrigin.Current)
Fs.Seek(-10,SeekOrigin.Current)
Pada pengolahan random file, kita dapat menggunakan formula berikut untuk
menghitung offset pada stream :
Offset = (recno 1) * ukuran tiap record
Contoh :
Fs.Seek((1-1)*Len(Record))
Fs.Seek((10-1)*Len(Record))
AZISDOTNET.WORDPRESS.COM
67
Abdul Azis
AZISDOTNET.WORDPRESS.COM
68
Abdul Azis
Get
Return (Tugas+Mid+Semester)/3
End Get
End Property
End Structure
Dim
Dim
Dim
Dim
Jd As Integer = 0
Record As Ujian
Ukuran As Integer = Len(Record)
Fm As New BinaryFormatter
Sub Main()
Dim Fs As FileStream = new
FileStream("c:\ujian.dat",FileMode.OpenOrCreate, FileAccess.ReadWrite,
FileShare.None)
Record.Nim = "123"
Fm.serialize(Fs,Record)
'Menulis record ke FileStream
Record.Nim = "234"
Fm.serialize(Fs,Record)
'Menulis record ke FileStream
Fs.Seek(0,SeekOrigin.Begin) 'Pindah stream ke record 1
Record = Fm.deserialize(Fs) 'Membaca record
Console.WriteLine(Record.Nim)
Record = Fm.deserialize(Fs) 'Membaca record
Console.WriteLine(Record.Nim)
Fs.Close()
End Sub
End Module
Latihan :
1. Buatlah program yang dapat mengkonversi semua huruf dalam text file ke huruf
besar.
2. Buatlah program yang dapat menghitung jumlah baris dan kata yang terdapat
pada suatu text file.
3. Kembangkan program untuk melakukan enkripsi/dekripsi terhadap fileasal dan
menghasilkan filetujuan yang sudah tersandi dengan suatu kata kunci (dengan
menggunakan filestream).
4. Buatlah program yang dapat menyimpan data ujian mahasiswa berdasarkan input
dari pemakai dalam bentuk record.
5. Buatlah program yang dapat membaca record dari file yang sudah dibuat pada
soal nomor 4, dan mencetak kembali dalam bentuk laporan.
Jawaban :
Option Explicit On
Imports System
Imports System.IO
Imports Microsoft.VisualBasic
Public Module ModFS
Sub Main(ByVal CmdArgs() As String)
AZISDOTNET.WORDPRESS.COM
69
Abdul Azis
AZISDOTNET.WORDPRESS.COM
70
Abdul Azis
Try...Catch...Finally Statements
TryCatchFinally merupakan cara baru penanganan error di Visual Basic pada saat
runtime, adapun tata penulisannya adalah sebagai berikut :.
Try
[ tryStatements ]
[ Catch [ exception [ As type ] ] [ When expression ]
[ catchStatements ] ]
[ Exit Try ]
...
[ Finally
[ finallyStatements ] ]
End Try
Contoh :
Option Explicit On
Imports System
Imports System.IO
Public Module ModFS
Sub Main(ByVal CmdArgs() As String)
Dim Buffer(511) As Byte
If CmdArgs.Length < 2 Then
Console.WriteLine("Pemakaian : duplikat <fileasal>
<filetujuan>")
End
End If
Dim FSS As FileStream
Try
FSS = File.OpenRead(CmdArgs(0))
Catch ex As Exception
Console.WriteLine("Gagal buka file " + CmdArgs(0))
End
End Try
Dim FST As FileStream = File.Create(CmdArgs(1))
Dim Terbaca As Integer = 0
Dim I As Integer
Do
Terbaca = FSS.Read(Buffer,0,Buffer.Length())
FST.Write(Buffer,0,Terbaca)
Loop Until Terbaca < 512
AZISDOTNET.WORDPRESS.COM
71
Abdul Azis
FSS.Close()
FST.Close()
End Sub
End Module
AZISDOTNET.WORDPRESS.COM
72
Abdul Azis
Lampiran 1
Fixed, F, or f
Standard, N, or n
Percent
P, or p
Scientific
E, or e
D, or d
X, or x
Yes/No
AZISDOTNET.WORDPRESS.COM
Description
Displays number with no thousand
separator.
Displays number with thousand separator, if
appropriate; display two digits to the right
of the decimal separator. Output is based on
system locale settings.
Displays at least one digit to the left and two
digits to the right of the decimal separator.
Displays number with thousand separator, at
least one digit to the left and two digits to
the right of the decimal separator.
Displays number multiplied by 100 with a
percent sign (%) appended immediately to
the right; always displays two digits to the
right of the decimal separator.
Displays number with thousandths separator
multiplied by 100 with a percent sign (%)
appended to the right and separated by a
single space; always displays two digits to
the right of the decimal separator.
Uses standard scientific notation, providing
two significant digits.
Uses standard scientific notation, providing
six significant digits.
Displays number as a string that contains
the value of the number in Decimal (base
10) format. This option is supported for
integral types (Byte, Short, Integer, Long)
only.
Displays number as a string that contains
the value of the number in Hexadecimal
(base 16) format. This option is supported
for integral types (Byte, Short, Integer,
Long) only.
Displays No if number is 0; otherwise,
displays Yes.
73
Abdul Azis
True/False
On/Off
(#)
Description
Displays the number with no formatting.
Digit placeholder. Displays a digit or a zero. If the expression has a digit
in the position where the zero appears in the format string, display it;
otherwise, displays a zero in that position.
If the number has fewer digits than there are zeros (on either side of the
decimal) in the format expression, displays leading or trailing zeros. If the
number has more digits to the right of the decimal separator than there are
zeros to the right of the decimal separator in the format expression, rounds
the number to as many decimal places as there are zeros. If the number
has more digits to the left of the decimal separator than there are zeros to
the left of the decimal separator in the format expression, displays the
extra digits without modification.
Digit placeholder. Displays a digit or nothing. If the expression has a digit
in the position where the # character appears in the format string, displays
it; otherwise, displays nothing in that position.
This symbol works like the 0 digit placeholder, except that leading and
(.)
(%)
trailing zeros aren't displayed if the number has fewer digits than there are
# characters on either side of the decimal separator in the format
expression.
Decimal placeholder. The decimal placeholder determines how many
digits are displayed to the left and right of the decimal separator. If the
format expression contains only # characters to the left of this symbol;
numbers smaller than 1 begin with a decimal separator. To display a
leading zero displayed with fractional numbers, use zero as the first digit
placeholder to the left of the decimal separator. In some locales, a comma
is used as the decimal separator. The actual character used as a decimal
placeholder in the formatted output depends on the number format
recognized by your system. Thus, You should use the period as the
decimal placeholder in your formats even if you are in a locale that uses a
comma as a decimal placeholder. The formatted string will appear in the
format correct for the locale.
Percent placeholder. Multiplies the expression by 100. The percent
AZISDOTNET.WORDPRESS.COM
74
(,)
Abdul Azis
the decimal separator or the rightmost position in the string are treated
simply as specifying the use of a thousand separator. In some locales, a
period is used as a thousand separator. The actual character used as the
thousand separator in the formatted output depends on the Number
Format recognized by your system. Thus, You should use the comma as
the thousand separator in your formats even if you are in a locale that uses
a period as a thousand separator. The formatted string will appear in the
format correct for the locale.
(:)
Time separator. In some locales, other characters may be used to represent
the time separator. The time separator separates hours, minutes, and
seconds when time values are formatted. The actual character used as the
time separator in formatted output is determined by your system settings.
(/)
Date separator. In some locales, other characters may be used to represent
the date separator. The date separator separates the day, month, and year
when date values are formatted. The actual character used as the date
separator in formatted output is determined by your system settings.
(E- E+ e- e+) Scientific format. If the format expression contains at least one digit
placeholder (0 or #) to the left of E-, E+, e-, or e+, the number is
displayed in scientific format and E or e is inserted between the number
and its exponent. The number of digit placeholders to the left determines
the number of digits in the exponent. Use E- or e- to place a minus sign
next to negative exponents. Use E+ or e+ to place a minus sign next to
negative exponents and a plus sign next to positive exponents. You must
also include digit placeholders to the right of this symbol to get correct
formatting.
-+$()
Literal characters. These characters are displayed exactly as typed in the
format string. To display a character other than one of those listed,
AZISDOTNET.WORDPRESS.COM
75
Abdul Azis
(\)
("ABC")
Example
The following table contains some sample format expressions for numbers. (These
examples all assume that your system's locale setting is English-U.S.) The first column
contains the format strings for the Style argument of the Format function; the other
columns contain the resulting output if the formatted data has the value given in the
column headings.
Format (Style)
"5" formatted as
Zero-length string
("")
-5
0.5
0
0.00
5
5.00
-5
-5.00
1
0.50
#,##0
$#,##0;($#,##0)
5
$5
-5
($5)
1
$1
$#,##0.00;
($#,##0.00)
$5.00
($5.00)
$0.50
0%
500%
-500%
50%
0.00%
0.00E+00
500.00%
5.00E+00
-500.00%
-5.00E+00
50.00%
5.00E-01
0.00E-00
5.00E00
-5.00E00
5.00E-01
Description
Displays a date and/or time. For real numbers, display a date and
AZISDOTNET.WORDPRESS.COM
76
Long Date, or D
Medium Date
Short Date, or d
Long Time, or T
Medium Time
Short Time, or t
F
F
G
M, m
R, r
S
U
U
Y, y
Abdul Azis
(/)
(%)
Description
Time separator. In some locales, other characters may be used to represent
the time separator. The time separator separates hours, minutes, and
seconds when time values are formatted. The actual character used as the
time separator in formatted output is determined by your system's
LocaleID value.
Date separator. In some locales, other characters may be used to represent
the date separator. The date separator separates the day, month, and year
when date values are formatted. The actual character used as the date
separator in formatted output is determined by your locale.
Used to indicate that the following character should be read as a singleletter format without regard to any trailing letters. Also used to indicate
AZISDOTNET.WORDPRESS.COM
77
Abdul Azis
dd
Displays the day as a number with a leading zero (for example, 01).
ddd
dddd
MMM
MMMM
gg
MM
hh
H
HH
m
mm
s
ss
F
Uses the 12-hour clock and displays an uppercase A for any hour before
noon; displays an uppercase P for any hour between noon and 11:59 P.M.
Use %t if this is the only character in your user-defined numeric format.
AZISDOTNET.WORDPRESS.COM
78
tt
y
yy
yyy
yyyy
z
Abdul Azis
Uses the 12-hour clock and displays an uppercase AM with any hour before
noon; displays an uppercase PM with any hour between noon and 11:59
P.M.
Displays the year number (0-9) without leading zeros. Use %y if this is
the only character in your user-defined numeric format.
Displays the year in two-digit numeric format with a leading zero, if
applicable.
Displays the year in four digit numeric format.
Displays the year in four digit numeric format.
zz
Displays the timezone offset without a leading zero (for example, -8).
Use %z if this is the only character in your user-defined numeric format.
Displays the timezone offset with a leading zero (for example, -08)
zzz
Example
The following are examples of user-defined date and time formats for December 7,
1958, 8:50 PM, 35 seconds:
Format
Displays
M/d/yy
12/7/58
d-MMM
d-MMMM-yy
7-Dec
7-December-58
d MMMM
7 December
MMMM yy
hh:mm tt
December 58
08:50 PM
h:mm:ss t
H:mm
8:50:35 P
20:50
H:mm:ss
20:50:35
M/d/yyyy H:mm
12/7/1958 20:50
AZISDOTNET.WORDPRESS.COM
79
Abdul Azis
Daftar Pustaka
.NET Framework SDK documentation
AZISDOTNET.WORDPRESS.COM
, Microsoft Corporation
80