• Tidak ada hasil yang ditemukan

Bahasa pemrograman VB.NET Bahasa Pemrograman VB.Net

N/A
N/A
Protected

Academic year: 2017

Membagikan "Bahasa pemrograman VB.NET Bahasa Pemrograman VB.Net"

Copied!
80
0
0

Teks penuh

(1)

Bahasa Pemrograman VB.Net

Oleh : Hendra, ST.

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

(2)

Dasar program Visual Basic

Program VB.NET anda yang pertama.

Sebagaimana tradisi dari proses belajar pemrograman komputer adalah membuat sebuah program Hello World yang memiliki struktur yang paling sederhana sehingga kita dengan mudah dapat melihat struktur dasar program dari bahasa pemrograman tersebut.

Module Hello Sub Main()

System.Console.WriteLine("Hello World !") End Sub

End Module

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

(3)

for Microsoft (R) .NET Framework version 1.1.4322.573

Copyright (C) Microsoft Corporation 1987-2002. All rights reserved.

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.

Struktur program Visual Basic

Sebagai bahasa yang telah dirancang kembali dari awal, suatu program Visual Basic memiliki urutan berikut yang merupakan struktur dari program:

1. Option statements 2. Imports statements 3. Main procedure

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.

(4)

Module Modmain Sub Main() a = 100000 End Sub

End Module

Yang jika dikompilasi akan menyebabkan kesalahan sebagai berikut :

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(5) : error BC30451: Name 'a' is not declared. a = 100000

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 Explicit On Option Strict On Module Hello Sub Main()

(5)

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 ~

Sebaliknya jika digunakan Option Strict Off:

Option Explicit On Option Strict Off Module Hello Sub 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

(6)

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) 'False End Sub

End Module

(7)

Tetapi jika :

Option Compare Text Module Hello

Sub Main()

Dim a,b As String a = "ABC"

b = "abc"

System.Console.WriteLine(a = b) 'True End Sub

End Module

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

Yang setelah adanya Imports System penulisan Console.WriteLine menjadi sebagai berikut.

Imports System Module Hello Sub Main()

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

(8)

• 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

Yang kalau dieksekusi dengan

Coba Hello World Jumlah Parameter :2

Parameter :0 adalah :Hello Parameter :1 adalah :World

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

(9)

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.

! " #$%

& ' ' & ' (

! " ) * + #$%

& ' ' & ' (

*) ! , ! " )+ " ))

- " #$% #$% .% ) % * ! ,) %*

% & & ' & .#

%' ' ' ' ' ''.% ' , /

/ ) + ' ' ' ' ' ''.% '

& & ' & .# , * /

/ )

' % '& ' ' '& ' '&

)

! % & ' &&

& ' && &

" # " # !) ' 0 * ! / ) , *

" #

$ % & & &

) % * ! ,) %* ' % ' .# % ' .%' , / / ) + ' .%' ' .# , * / / ) / ) % ) !) * "*) " *) , "

** 1 " ) )) 2 ! ! !

% & ' (

, " *

"*) " *) , "

. ! " " , !

" * * ,

(10)

!

!

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 Harga, Jumlah As Single Dim Kuantitas As Integer = 10 Dim Lanjutkan As Boolean = True

Dim Keterangan As String = "Visual Studio .NET"

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

(11)

Contoh :

Module Test Sub Main()

Dim intValue As Integer = 123 Dim longValue As Long = intValue

Console.WriteLine(intValue & " = " & longValue) End Sub

End Module

Sedangkan secara Explicit dilakukan dengan menggunakan fungsi bantu casting.

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

Yang kalau dikompilasi akan menghasilkan error sebagai berikut

Microsoft (R) Visual Basic .NET Compiler version 7.10.3052.4 for Microsoft (R) .NET Framework version 1.1.4322.573

(12)

implicit conversions from 'Integer' to 'Short'. b = a

~

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 Purpose

3 4 ) 5 / / ) 4 ) 3 6 )

3 4 5 / / ) % 4

3 5 5 / / ) % 2 ! ! !

3 3 " 5 / / ) 3 " 7 !

3 ! " ) 5 / / ) % ! " )

3 ) 5 / / ) % )

3 8 5 / / ) % 9

3 8 5 / / ) '% 8

3 8 ' 5 / / ) % 8

3 94 5 / / ) % / ) : &

3 9 ) 5 / / ) '% 9 )

3 9 5 / / ) 9 *

3 28 5 / / ) % 9

3 28 5 / / ) '% 8 ' ' &

3 28 ' 5 / / ) % ) 8

'' &'' & &

Catatan :

(13)

) *

; ; . .

; ;

; ;

; ; . .

;< ; . .

;< ; . .

;=>66; ?4 1 , 1 / ) 66 . .

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.

Operator pengabungan : &

Operator bit shift : << dan >>

Contoh :

" 0 9 @ A 4 *

(14)

B ) @ CC A B )

B ) @ CC ' A B ) &

B ) @ CC A B ) % &

B ) ' @ CC & A B ) '

B ) @ CC % A B ) , *) ! ) ,

" 0 9 @ A 4 *

" B ) B ) B ) B ) ' B ) 0 9

B ) @ DD A B )

B ) @ DD ' A B )

B ) @ DD A B )

B ) ' @ DD A B ) '

B ) @ DD % A B ) , *) !

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 SizeMask

Byte 7 (&H7)

Short 15 (&HF) Integer 31 (&H1F)

Long 63 (&H3F)

Perhatikan kembali contoh diatas

" 0 9 @ A 4 *

Perintah shift right 18 untuk tipe Short akan menghasilkan operasi yang sama dengan shift right 2 ( hasil operasi 18 And 15 = 2).

B ) ' @ DD A B ) '

Operator perbandingan Like, dengan aturan sebagai berikut :

• Karakter ? mewakili satu karakter sembarang.

• Karakter * mewakili tidak ada karakter atau sekumpulan karakter sembarang. • Karakter # mewakili satu sembarang digit (0–9).

• Suatu daftar karakter dalam kurung siku ([ab ]) mewakili salah satu karakter

dalam daftar tersebut.

• Suatu daftar dari karakter dalam kurung siku dan diawali dengan suatu tanda ! ([!ab ]) mewakili satu karakter yang tidak ada dalam daftar tersebut.

Contoh :

" " 5 !E 0 4 )

" 5 !E @ ;6; F E ;6; ;6; " ! ;6;G B 3

" 5 !E @ ;6; F E ;,; ;6; " ! ;,;G B 6 )

(15)

" 5 !E @ ; 444 ; F E ; H ; ; 444 ; / ; ; ; ;

" , ! !

( G B 3

" 5 !E @ ;6; F E ;I0%JK; ;6; !! , ! ! , " 0

JG B 3

" 5 !E @ ;6; F E ;IL0%JK; ;6; MN3 !! , ! ! , " 0

JG B 6 )

" 5 !E @ ; ; F E ; O ; ; ; ( ; ; /

) % " ( G B 3

" 5 !E @ ; ; F E ; IF% KOIL!% K; ; ; , , )) ( * 4 (

; ; ! ! , " F

, )) ( ) % " , ))

! ! ! 1!) , " ! !

! B 3

" 5 !E @ ;403 E ; F E ;4G3H; ;403 E ; , , )) ( * 4

( ;4; , )) ( ) ! ! , )) (

;3; , )) - " ! ! ,

* B 3

" 5 !E @ ;503 E ; F E ;4G3H; ;503 E ; , , )) ( * 4

( ;4; , )) ( ) ! ! , )) (

;3; , )) - " ! ! ,

* B 6 )

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)

(16)

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.

Konstanta pada VB.NET

Pemakaian konstanta sangat membantu dalam pengembangan program yang terstruktur, dengan adanya konstanta, pemeliharaan program menjadi lebih sederhana, dan biasanya konstanta dideklarasikan pada awal program, sehingga jika terjadi perubahan besaran pada konstanta, kita cukup mengubahnya pada awal program tanpa harus memeriksa koding seperti yang harus dilakukan kalau kita tidak menggunakan fasilitas konstanta.

Const GRAVITASI As Single = 9.8

Catatan :

Sebaiknya konstanta diketik semuanya huruf besar untuk memudahkan pembedaan antara variabel dengan konstanta, dan penamaan konstanta hendaknya disesuaikan dengan konteks yang diwakili oleh konstanta tersebut.

Enumerated pada VB.NET

Pemakaian enumerated type akan sangat membantu dalam pekerjaan pemrograman sehingga menjadi lebih mudah ditulis, dibaca, dan dimaintain dari pada menggunakan tipe data primitif.

(17)

Firebrick = &H2222B2& End Enum

Perintah input Output Console

Salah satu bentuk program yang dapat dikembangkan dengan menggunakan Visual Basic adalah program Console. Program Console adalah program yang menggunakan basis teks pada lingkungan Command Prompt (bentuk ini tidak tersedia pada Visual Basic versi sebelumnya).

Program Console adalah salah satu fasilitas yang sangat memudahkan bagi pemula yang ingin mempelajari bahasa Visual Basic dengan baik, karena program Console

menggunakan perintah I/O yang cukup sederhana dan bersih dari perintah input output yang rumit sehingga kita dapat lebih terfokus.

System.Console.Write(ekspresi) System.Console.WriteLine(ekspresi) Variabel = System.Console.ReadLine()

Jika anda melakukan imports namespace system, maka penulisan dapat disingkat menjadi

Console.Write(ekspresi) Console.WriteLine(ekspresi) Variabel = Console.ReadLine()

Catatan :

Perbedaan antara Write dengan WriteLine adalah pada WriteLine pencetakan akan diakhiri dengan suatu Carriage Return.

Format pada WriteLine

Visual Basic telah melengkapi berbagai fasilitas format yang sangat berguna untuk melakukan pencetakan data, terutama data type numerik yang kadang-kadang perlu diformat sedemikian rupa untuk memudahkan pembacaan.

Format pencetakan pada WriteLine dapat menggunakan place holder {x}, dimana x adalah nomor urutan dari parameter berikutnya yang dihitung mulai dari 0 (nol)..

Contoh :

Console.WriteLine("The number is {0}", 3 + 7)

(18)

Masing-masing akan menghasilkan

The number is 10

The result of 3 + 7 = 10 See decimal 0.1

See decimal 0.123456789 The value is 001.23 The value is 1234.57

Contoh Format String :

"

5 %29 ' & < '

5 % . ' & '

%29 ' '

%29 ' '

. %29 ' & ' .# '

. %29 ' & ' & .# '

. , %6B ' & ' .# '

' %29 ' & ' # '

6 %29 ' & '

6 %.9 ' & '

6 %29 ' & '

6 %29 ' & ' &

P %29 ' & ' &

P& %29 ' & '

P %29 .%

P %29

P %29 ' .

P %29 8 ' &

M %29 ' & '

M /%9. ' & '

M' %29 ' & ' &

%29 Q

%29 8 ' &

1 %29 1 !' !'

R %29 1 !' 5' .

R %29 1 !' 5' .

1 %29 ' & & !

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

(19)

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

Simpan dengan nama file persegi.vb

Set path=%path%;c:\windows\microsoft.net\framework\v1.1.4322 VBC persegi.vb

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. Persegi

2. Buatlah program untuk menghitung luas lingkaran dengan pemakaian konstanta.

Option Explicit On Imports System

Public Module lingkaran

Const PI As Single = 3.14 Sub Main()

Dim R As Single

(20)

!

Console.Write("Masukkan Jari-jari :") R = Console.ReadLine()

Luas = PI * R^2

Console.WriteLine("Luas : {0, 10:f2}",Luas)'10 tempat 2 desimal End Sub

(21)

Struktur Keputusan dan Perulangan

Perintah If...Then...Else

Salah satu tujuan pemrograman komputer adalah mengambil tugas rutin manusia untuk dalam mengambil keputusan-keputusan yang dapat diprogram. Misalnya seorang Dosen dalam menentukan Grade (A,B,C,D, atau E) nilai akhir mahasiswa dengan kondisi sebagai berikut :

Jika Nilai >= 85 Kemudian Cetak "A"

Jika tidak dan Jika Nilai >= 70 Kemudian Cetak "B"

Jika tidak dan Jika Nilai >= 60 Kemudian Cetak "C"

Jika tidak dan Jika Nilai >= 25 Kemudian Cetak "D"

Jika tidak Cetak "E" Akhir dari keputusan

Logika keputusan diatas dapat diprogram pada Visual Basic dengan menggunakan syntax penulisan sebagai berikut :

If condition [ Then ] [ statements ]

[ ElseIf elseifcondition [ Then ] [ elseifstatements ] ]

[ Else

[ elsestatements ] ]

End If

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

(22)

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

(23)

Dim Angka As Integer

Console.Write("Masukkan Angka 1 s/d 9 :") Angka = Console.ReadLine()

Select Case Angka Case Is < 1

Console.WriteLine("Terlalu kecil") Case 1 To 5

Console.WriteLine("Berada antara 1 dan 5") Case 6,7,8,9

Console.WriteLine("Berada antara 6 dan 9") Case Else

Console.WriteLine("Terlalu besar") End Select

End Sub End Module

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 For…Next 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 'Defaultnya Step 1

Console.WriteLine(I) Next I

Atau

For I As Integer = 1 To 100 'Defaultnya Step 1

Console.WriteLine(I) Next I

Akan mencetak daftar bilangan 1 s/d 100

Catatan :

Dari segi looping pemakaian :

(24)

For I = 1 To 100 'Defaultnya Step 1 Console.WriteLine(I)

Next I

Tidak berbeda dengan

For I As Integer = 1 To 100 'Defaultnya Step 1

Console.WriteLine(I) Next I

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 'Defaultnya Step 1

Console.WriteLine(I) Next I

Console.WriteLine(I) 'Akan tercetak 101

Sedangkan

For I As Integer = 1 To 100 'Defaultnya Step 1

Console.WriteLine(I) Next I

Console.WriteLine(I) 'Terjadi error pada saat kompilasi

Dimana pesan error adalah error BC30451: Name I is not declared.

Dim I As Integer For I = 1 To 100 Step 2 Console.WriteLine(I) Next I

Akan mencetak daftar bilangan ganjil 1 s/d 99

Catatan : Step tidak selamanya harus berupa bilangan bulat, tetapi juga dapat berupa bilangan floating point.

For I As Single = 1 To 10 Step 0.1 Console.WriteLine(I)

Next I

(25)

Bagaimana dengan perulangan dari besar ke kecil ?

Perulangan dari besar ke kecil dapat dilakukan dengan menentukan nilai Step negatif.

Contoh :

For I As Integer = 100 To 1 Step -1 Console.WriteLine(I)

Next I

Akan mencetak daftar bilangan 100, 99. 98, …, 1

Dapatkah anda menerangkan fungsi dan contoh pemakaian Exit For ?

Exit For merupakan perintah keluar dari looping tanpa bersyarat, artinya kalau perintah Exit For ditemukan maka proses program dilanjutkan ke perintah dibawah Next.

Adapun contoh pemakaian Exit For adalah misalnya kita ingin membuat password dengan jumlah kesempatan coba sebanyak 3 kali.

Option Explicit On Imports System

Module ModPass Sub Main()

Dim I As Integer

Dim Pass As String

For I = 1 To 3 Step 1

Console.Write("Password :") Pass = Console.ReadLine()

If Pass.ToUpper() ="INDOPROG" Then 'Jika Password Benar

Exit For 'Keluar dari Looping

End If

Next I

If I > 3 Then

Console.WriteLine("Proses Login Gagal !") Else

Console.WriteLine("Welcome !") End If

End Sub End Module

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 ]

(26)

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

(27)

Selain struktur Do…Loop, 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.

Perintah For Each...Next

Perintah For Each…Next digunakan untuk melakukan iterasi berdasarkan collection tertentu, misalnya kita ingin mencetak semua elemen dalam suatu array, penulisan dengan perintah For Each dapat dilakukan sebagai berikut :

For Each element [ As datatype ] In group

[ statements ] [ Exit For ] [ statements ]

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

(28)

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.

2. Buatlah program untuk konversi data desimal ke binary dengan pemakaian operator bit shift

Option Explicit On Imports System

Module ModBiner Sub Main()

Dim D As Integer

Dim I As Short

Console.Write("Bilangan Desimal :") D = Console.ReadLine()

For I = 15 to 0 Step -1

If ((D >> I) And 1) = 1 Then

Console.Write(1) Else

Console.Write(0) End If Next

End Sub End Module

3. Buatlah program yang menentukan bilangan bulat yang dimasukan pemakai Genap atau Ganjil.

4. Buatlah program yang menentukan tahun yang dimasukan pemakai

termasuk tahun Kabisat atau bukan.

5. Buatlah program yang mencetak barisan bilangan fibonacci sesuai dengan jumlah suku yang ditentukan oleh pemakai.

(29)
(30)

!

Array pada Visual Basic

Deklarasi variabel Array

Sebagaimana yang telah disinggung pada bagian 1 bahwa tipe data pada Visual Basic terbagai atas dua kelompok yaitu Value Type dan Reference.

Suatu array merupakan Reference Type yang mengandung banyak variabel-variabel yang dapat diakses satu persatu sesuai dengan urutannya dalam array, dimana indexnya

dimulai dari 0. Variabel-variabel yang terkandung dalam array disebut juga elemen dari array, dan semuanya harus memiliki tipe yang sama. Setiap tipe array mewarisi (inherits) semua member yang dideklarasikan pada System.Array.

Pada contoh berikut ini mendeklarasikan suatu array integer berdimensi tunggal, memberi nilai pada masing-masing elemen array, dan mencetak-nya.:

Module Test Sub Main()

Dim arr(5) As Integer Dim i As Integer

For i = 0 To arr.GetUpperBound(0) arr(i) = i * i

Next i

For i = 0 To arr.GetUpperBound(0)

Console.WriteLine("arr(" & i & ") = " & arr(i)) Next i

End Sub End Module

Program diatas akan menghasilkan output:

arr(0) = 0 arr(1) = 1 arr(2) = 4 arr(3) = 9 arr(4) = 16

Array dapat juga diberi nilai awal pada saat deklarasi dengan penulisan sebagai berikut:

Private a As Integer() = { 0, 2, 4, 6, 8 }

Atau penulisan yang sama adalah dengan :

Private a As Integer() = new Integer() { 0, 2, 4, 6, 8 }

(31)

Private b As Integer(,) = { { 0, 1 }, { 2, 3 }, { 4, 5 }, { 6, 7 }, { 8, 9 } }

Sama dengan deklarasi berikut:

Private b(4, 1) As Integer

Dan diikuti dengan pemberian nilai berikut :

b(0, 0) = 0 : b(0, 1) = 1 b(1, 0) = 2 : b(1, 1) = 3 b(2, 0) = 4 : b(2, 1) = 5 b(3, 0) = 6 : b(3, 1) = 7 b(4, 0) = 8 : b(4, 1) = 9

Member pada Class Array

Setiap array pada Visual Basic mewarisi member yang terdefinisi pada Class Array, adapun beberapa member tersebut adalah sebagai berikut ini :

F * E 7 ") ) " ) " 0 8 %

F F * E 7 ") ) " ) " 0 8 '%

B E * E 7 ") " ) " 0

Contoh :

Option Explicit On Imports System

Imports Microsoft.VisualBasic

Public Module ModArr

Public Arr(3,3) As Integer

Sub Main()

Console.WriteLine(Arr.Length()) '16 Console.WriteLine(Arr.LongLength()) '16 Console.WriteLine(Arr.Rank()) '2 End Sub

End Module

P F * E 7 ") ) " ) " 0 * "

8 %

P F F * E 7 ") ) " ) " 0 * "

8 '%

Contoh :

Option Explicit On Imports System

Imports Microsoft.VisualBasic

(32)

Public Arr(3,3) As Integer

Sub Main()

Console.WriteLine(Arr.GetLength(0)) '4 Console.WriteLine(Arr.GetLongLength(0)) '4 End Sub

End Module

P F ( 4 * E ) 1 ( 0 * "

P 2** 4 * E ) 1 0 * "

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)) '0 Console.WriteLine(Arr.GetUpperBound(0)) '3 End Sub

End Module

8 1N, * E 1 * ) ( ) ) * 0

"

F 8 1N, * E 1 * ) E ) * 0

"

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)) '3 Console.WriteLine(Array.LastIndexOf(Arr,3)) '5 End Sub

End Module

B / " ) E ) " ) " 0 "

(33)

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

9 ) " ) " 0 "

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

4 9 ! ! M ) * 0 ) "

4 9 !

Option Explicit On Imports System

Imports Microsoft.VisualBasic

Public Module ModArr

Public Arr() As Integer = {0,4,3,1,2} Sub Main()

(34)

Array.Sort(Arr,0,4)

Console.WriteLine(Array.BinarySearch(Arr,Nilai)) '2 End Sub

End Module

Perintah Visual Basic untuk Array

Visual Basic menyediakan berbagai perintah khusus untuk pengolahan string sebagai berikut ::

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 ' Declare variable and array variable. ReDim MyArray(5) ' Allocate 6 elements.

For I = 0 To UBound(MyArray)

MyArray(I) = I ' Initialize array. Next I

Perintah berikut mengubah ukuran array tanpa mempertahankan isi elemennya..

ReDim MyArray(10) ' Resize to 11 elements. For I = 0 To UBound(MyArray)

MyArray(I) = I ' Initialize array. 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

(35)

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)

(36)

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 ' Declare array variables. Dim MyString As String

Dim MyCheck As Boolean

MyCheck = IsArray(MyArray) ' Returns True. MyCheck = IsArray(YourArray) ' Returns True. MyCheck = IsArray(MyString) ' Returns False.

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 Lowest = LBound(MyArray, 1) ' Returns 0.

Lowest = LBound(MyArray, 3) ' Returns 0. Lowest = LBound(AnyArray) ' Returns 0.

Suatu Exception/Error akan terjadi kalau kondisi berikut ini ditemukan :

Exception type Error number Condition

ArgumentNullException 9 Array is Nothing.

RankException 9 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.

(37)

Highest = UBound(MyArray, 1) ' Returns 10. Highest = UBound(MyArray, 3) ' Returns 20. Highest = UBound(AnyArray) ' Returns 6.

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.

(38)

Fungsi dan Sub

Perintah Function

Dalam pembuatan program yang besar, tentu saja harus dikembangkan secara terstruktur sehingga program menjadi lebih mudah dikembangkan dan dimaintenance. Salah satu usaha yang dapat dilakukan adalah memecah program menjadi kesatuan logika yang lebih kecil dimana proses yang sama dikelompokan menjadi sub program yang diberi nama, dan dapat dipanggil pada saat yang dibutuhkan.

Pemakaian function digunakan untuk proses maupun rumus yang perlu mengembalikan nilai kepada pemanggil, adapun tata cara penulisan function adalah sebagai berikut :

Function name[(arglist)] [ As type ] [ statements ]

[ Exit Function ] [ statements ]

End Function

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

Defaultnya parameter pada function dikirim secara ByVal, kadang-kadang kita

(39)

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

(40)

!

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

(41)

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

Teknik Rekursi pada Visual Basic

Dalam matematika, kita sering menjumpai formula yang mengandung rekursi, misalnya pada perhitungan nilai faktorial dari suatu bilangan yang dapat diformulasikan sebagai berikut :

N! = N x (N-1)!

Dimana 1! = 1.

Sehingga secara pemrograman komputer dapat ditulis sebagai berikut :

Option Explicit On Imports System

Public Module modFak

Function Fak(N as Byte) If (N > 1) Then

Return N * Fak(N-1) Else

Return 1 End If

End Function

Sub Main()

Console.WriteLine("Faktorial dari {0} adalah {1}",5,Fak(5)) End Sub

End Module

(42)

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.

(43)

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 (128–255) 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.

Member pada Class String

Semua string di Visual Basic memiliki member sebagai berikut yang dapat digunakan untuk melakukan pengolahan data String.

Public Properties

5 * E E E * *

F * E 7 ") ! ! ) "

Contoh :

Option Explicit On Imports System

(44)

Dim Nama As String = "Hendra Soewarno" Sub Main()

Console.WriteLine(Nama.Chars(0)) 'Akan mencetak H Console.WriteLine(Nama.Chars(1)) 'Akan mencetak e Console.WriteLine(Nama.Chars(2)) 'Akan mencetak n Console.WriteLine(Nama.Length()) 'Akan mencetak 12 End Sub

End Module

Public Methods

F , * E E ) ) E "*

" ! * * 7

B * E E ) ) E "*

" ! * * 7

3 F ( " ) E ) E , E ! )

3 2** " ) E ) E ,

3 " " ) E " " * *

) E

3 ". " ) E " " * ) E

3 "9 " ) E " " * *

9 " ) E

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,"-")) '---Hendra Soewarno Console.WriteLine(Nama.PadRight(20,"-")) 'Hendra Soewarno--- Console.WriteLine(Nama.ToLower()) 'hendra soewarno Console.WriteLine(Nama.ToUpper()) 'HENDRA SOEWARNO Console.WriteLine(Kota.TrimEnd()) '____Medan

(45)

Console.WriteLine(Kota.Trim()) 'Medan Console.WriteLine(Nama.SubString(3,3)) 'dra End Sub

End Module

8 * E ) " E

* *

B " / * 7 ") E E ) "

B *) ! 7 ") E E

* E

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

8 1N, " ) E * ( )

* E " ) *

8 1N,0 " ) E * ( )

* E

F 8 1N, " ) E * E

* E E " )

*

F 8 1N,0 " ) E * E

* E

9 S * E * E " )

. S * E * E E

Contoh :

Option Explicit On Imports System

Public Module modStr

' 0 1 2

' 012345678901234567890123456

(46)

Sub Main()

Console.WriteLine(Nama.StartsWith("e")) 'True Console.WriteLine(Nama.StartsWith("a")) 'False Console.WriteLine(Nama.EndsWith("o")) 'True Console.WriteLine(Nama.EndsWith("i")) 'False End Sub

End Module

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")) '0 Console.WriteLine(Nama.LastIndexOfAny("e")) '21 Console.WriteLine(Nama.IndexOf("e",2)) '13 Console.WriteLine(Nama.LastIndexOf("e",15)) '13 End Sub

End Module

Module String pada Namespace Microsoft.VisualBasic

Selain pengolahan data string dengan menggunakan String Member, Visual Basic juga menyediakan berbagai fungsi bantu yang terdefinisi pada Namespace

Micorosoft.VisualBasic, berikut ini adalah beberapa fungsi bantu yang dapat digunakan untuk pengolahan data string.

Asc(x), mengembalikan nilai ASCII dari huruf pertama dalam string x

AscW(x), mengembalikan nilai ASCII dari huruf pertama dalam string x

Chr(x), mengembalikan character dari suatu nilai ASCII x

ChrW(x), , mengembalikan character dari suatu nilai ASCII x

Contoh :

Option Explicit On Imports System

Imports Microsoft.VisualBasic

Public Module modStr Sub Main()

Console.WriteLine(Asc("H")) '72 Console.WriteLine(AscW("H")) '72 Console.WriteLine(Chr("72")) 'H Console.WriteLine(ChrW("72")) 'H End Sub

(47)

Len(x), mengembalikan panjang string x dalam karakter.

Lcase(x), mengembalikan string yang telah diubah menjadi huruf kecil.

Ucase(x), mengembalikan string yang telah diubah menjadi huruf besar.

Contoh :

Option Explicit On Imports System

Imports Microsoft.VisualBasic

Public Module modStr Sub Main()

Dim Nama As String = "Hendra Soewarno"

Console.WriteLine(Len(Nama)) '15

Console.WriteLine(LCase(Nama)) 'hendra soewarno Console.WriteLine(UCase(Nama)) 'HENDRA SOEWARNO End Sub

End Module

GetChar(x,y), mendapatkan character posisi ke y dalam string x.

Left(x,y), mengembalikan substring dari string x sebanyak y karakter dari depan.

Right(x,y), mengembalikan substring dari string x sebanyak y karakter dari belakang.

Mid(x,y,z) mengembalikan substring dari string x mulai posisi y sebanyak z karakter.

Contoh :

Option Explicit On Imports System

Imports Microsoft.VisualBasic

Public Module modStr Sub Main()

Dim Nama As String = "Hendra Soewarno" Console.WriteLine(GetChar(Nama,1)) 'H Console.WriteLine(Left(Nama,6)) 'Hendra Console.WriteLine(Right(Nama,8)) 'Soewarno Console.WriteLine(Mid(Nama,4,3)) 'dra End Sub

End Module

Space(x), mengembalikan string yang terdiri dari spasi sejumlah x karakter.

(48)

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 Soewarno Console.WriteLine(RSet(Nama1,9)) '___Hendra

Console.WriteLine(LSet(Nama1,9)) 'Hendra___ End Sub

End Module

Ltrim(x), mengembalikan string dengan menghilangkan spasi didepan string x.

Rtrim(x), mengembalikan string dengan menghilangkan spasi dibelakang string x.

Trim(x), mengembalikan string dengan prilaku gabungan Ltrim dan Rtrim.

StrReverse(x), mengembalikan string yang membalikan karakter dalam string x.

Contoh :

Option Explicit On Imports System

Imports Microsoft.VisualBasic

Public Module modStr Sub Main()

Dim Nama As String = "Susan"

Console.WriteLine(Nama) 'Susan Console.WriteLine(StrReverse(Nama)) 'nasuS End Sub

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.

(49)

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")) '4 Console.WriteLine(InStr(5,Nama,"i")) '6 Console.WriteLine(InStrRev(Nama,"F",10)) '9 Console.WriteLine(InStrRev(Nama,"F",7)) '1 End Sub

End Module

StrDup(y, x), mengembalikan string yang merupakan duplikasi character x sebanyak y.

StrComp(x,y,z), mengembalikan nilai -1, 0, atau 1 yang merupakan perbandingan antara string x dengan string y, dengan metode z, dimana -1 (x < y), 0 (x =y), dan 1 (x > y), dan metode z adalah CompareMethod.Text dan CompareMethod.Binary.

Contoh :

Option Explicit On Imports System

Imports Microsoft.VisualBasic

Public Module modStr Sub Main()

Dim Nama1 As String = "felicia" Dim Nama2 As String = "FELICIA"

Console.WriteLine(StrDup(10,"-")) '--- Console.WriteLine(StrComp(Nama1,Nama2,CompareMethod.Text)) '0 Console.WriteLine(StrComp(Nama1,Nama2,CompareMethod.Binary)) '1 End Sub

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," ")

(50)

!

Console.WriteLine(aNama(1)) 'Fortuna End Sub

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

Replace(x,y,z,[1],[2],[3]), mengembalikan string yang merupakan pengantian string y dengan z dalam string x mulai posisi [1] sampai sejumlah karakter [2], dengan metode perbandingan [3].

Contoh :

Option Explicit On Imports System

Imports Microsoft.VisualBasic

Public Module modStr Sub Main()

Dim Nama As String = "Hendra"

Console.WriteLine(Replace(Nama,"a","o")) 'Hendro 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"

(51)

End Module

FormatDateTime(x,y), menghasilkan string hasil konversi date x dengan format sesuai dengan setting pada komputer, dimana y (DateFormat.GeneralDate,

DateFormat.LongDate, DateFormat.ShortDate, DateFormat.LongTime, DateFormat.ShortTime)

Contoh :

Option Explicit On Imports System

Imports Microsoft.VisualBasic

Public Module modStr Sub Main()

Console.WriteLine(FormatDateTime(Now,DateFormat.LongDate)) 'Sunday, May 22, 2005

End Sub

End Module

FormatCurrency(x,y), menghasilan string yang merupakan format currency dari angka x dengan jumlah desimal y.

FormatPercent(x,y), menghasilkan string yang merupakan format percent dari angka x dengan jumlah desimal y.

FormatNumber(x,y), menghasilkan string yang merupakan format angka dari angka x dengan jumlah desimal y.

Contoh :

Option Explicit On Imports System

Imports Microsoft.VisualBasic

Public Module modStr Sub Main()

Dim Angka As Decimal = 100000 Dim PPN As Single = 0.1

Console.WriteLine(FormatCurrency(Angka,2)) '$100,000.00 Console.WriteLine(FormatNumber(Angka,2)) '100,000.00 Console.WriteLine(FormatPercent(PPN,2)) '10.00% End Sub

End Module

Format(x,y), menghasilkan string yang merupakan format dari argumen x dengan format y, dengan format yang dapat dilihat pada lampiran 1.

(52)

Option Explicit On Imports System

Imports Microsoft.VisualBasic

Public Module modStr Sub Main()

Console.WriteLine(Format(10000,"#,##0.00")) '10,000.00 Console.WriteLine(Format(Now,"dd/MM/yyyy HH:MM:SS")) '22-05-2005 20:15:01

End Sub

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 :

(53)

Tipe data Date

Pada Visual Basic variabel date disimpan sebagai integer IEEE 64-bit (8-byte) yang mewakili tanggal dengan jangkauan dari 1 Januari tahun 1 sampai dengan 31 Desember tahun 9999, dan waktu dari 0:00:00 (tengah malam) sampai 23:59:59.

Nilai tanggal harus diapit diantara tanda angka (#) dan diformat dalam M/d/yyyy, sebagai contoh #5/31/1993#.

Anda dapat memberikan nilai awal pada variabel tipe Date dengan penulisan sebagai berikut :

Dim Tanggal As Date = New Date(2005, 5, 30, 8, 29, 59, 900)

Dimana akan memberikan nilai Tanggal 30 Mei 2005 Pukul 8:29:59.900 ke variabel Tanggal.

Member pada Class Date

Date " ) E "* ) !

3 " N, " ) E "* ( E !

" ) " % ) " ) !

" ) E "* ) % !

T " ) E "* !

> " ) E "* 7 " % !

" ) E "* " % !

9 ! " ) E "* E % !

)) ! " ) E "* " ) E % !

N,S E " ) " % ) " " !

N,T " ) " % ) " !

3 !E " ) 7 ") !E !

M ( * E ) ( E E "*

3 * E " * E ) E "*

2 !M ( * E ) (E E "* ) E /

" 7 ! / ) " 235

Contoh :

Option Explicit On Imports System

(54)

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

0 " 7 ") #$% E !

0 " 7 ") ) #$% E !

0 T " 7 ") #$% E !

0 > " 7 ") 7 " #$% E !

0 " 7 "E " #$% E !

0 9 ! " 7 ") E #$% E !

0 )) ! " 7 ") " )) E #$% E !

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

E / ) " E ) ( E E

3 "

Option Explicit On Imports System

Public Module ModDate Sub Main()

(55)

Dim Tanggal As Date

Tanggal = DateTime.Parse(Str) Console.WriteLine(Tanggal) End Sub

End Module

5 "* " E ! 3 " "

" " ) E C 7 E ) C ) @ 7 E

) @ ) D 7 E ) D )

8 " ) E 7 ") ) " )

8 F *T " ) E E * E E E

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)) '-1 Console.WriteLine(DateTime.DaysInMonth(2005,5)) '31 Console.WriteLine(DateTime.IsLeapYear(2005)) 'False End Sub

End Module

9 ! )E ) " !

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)) '-1 00:00:00 End Sub

End Module

3 F ! )3 " U / 8 ! E F ! )3 "

3 F 9 U / 8 ! E 9 , "

F 9

3 F 3 " 9 U / 8 ! E 9 , " F 3 "

3 9 9 U / 8 ! E 9 , " 9

3 9 3 " 9 U / 8 ! E 9 , " 9 3 "

3 9 U / 8 ! E 9

(56)

Module Date pada Namespace Microsoft.VisualBasic

DateSerial

Referensi

Dokumen terkait

Manfaat penelitian ini adalah untuk mengetahui ciri – ciri anak autis sehingga orang tua dapat mengetahui gejala anak autis sejak dini dan dapat merancang media edukasi

Menurut KUH perdata hal tersebut diatas berlaku ketika pembatalan pernikahan yang terjadi karena pelanggaran dalam syarat formal saja seperti : wali yang tidak

Penulisan ini bertujuan untuk mendeskripsikan konsep dan proses penciptaan karakter fantasi sebagai ilustrasi grafis dari tema kepribadian manusia menurut enneagram.

Untuk diangkat sebagaai sumber belajar, hasil peneliitian biologi harus dikaji berdasarkan kurikulum pendidikan biologi yang.. Dari kajian ini akan dapat dilihat

Karena lensa spheris dibentuk dari dua prisma yang Karena lensa spheris dibentuk dari dua prisma yang berhimpitan maka lensa spheris mempunyai kekuatan berhimpitan maka lensa

Hasil analisis GC-MS menunjukkan bahwa biodiesel yang dihasilkan mengandung metil ester yang sesuai dengan asam- asam lemak yang terkandung dalam minyak jarak

Selain keputusan Mahkamah Agung tersebut, dewasa ini pewarisan pada masyarakat Bali telah mengalami perkembangan khususnya terhadap persamaan hak dalam pewarisan bagi

Subang, maka dapat disimpulkan bahwa : Sebagian besar responden pada usia pernikahan &gt;21 tahun sebanyak (52%), Sebagian besar responden yang mengalami kekerasan dalam