bab6 tatasusunan

13
BAB ENAM: TATASUSUNAN KAWALAN TATASUSUNAN Apabila butang pilihan (option button) atau kotak pilihan (check box) dikumpulkan di dalam satu kumpulan, ini bermaksud anda membina suatu kawalan tatasusunan. Kawalan Tatasusunan adalah suatu kumpulan kawalan yang mempunyai nama yang sama. Kebaikan menggunakan kawalan tatasusunan berbanding kawalan yang berasingan, ialah kawalan tatasusunan akan berkongsi suatu Event Click. Di dalam tatasusunan event click, struktur Case digunakan bagi menentukan butang atau kotak pilihan yang dipilih. Contoh : Katakan kita ingin membuat pilihan warna pada butang pilihan. Untuk memudahkan penulisan aturcara kita gunakan objek yang sama dan nama yang sama. Apabila diberikan nama yang sama, satu mesej akan dipaparkan untuk memberi pilihan untuk membina kawalan tatasusunan. Apabila butang `Yes' diklik, satu kawalan tatasusunan bernama optWarna telah dibina. Kawalan tatasusunan menggunakan index untuk mewakilkan objek. Berdasarkan contoh, kita telah membina optWarna(0) untuk objek yang pertama, optWarna(1) bagi yang kedua dan seterusnya optWama(2), optWarna(3). Index bermula dengan 0 sekiranya tidak diberi nilai awal. Nilai (?) akan bergantung kepada bilangan butang pilihan atau kotak pilihan yang dibina. Struktur Case Dalam Bab 5, pernyataan If digunakan bagi pengujian pemilihan dan keputusan. Apabila ingin menguji pembolehubah tunggal dengan pelbagai nilai, struktur Case akan digunakan kerana ianya fleksibel dan mudah. Dengan kata lain, Case membolehkan suatu proses dilakukan mengikut cabang tindakan yang ditetapkan.

Upload: anas-assayuti

Post on 19-May-2015

783 views

Category:

Technology


6 download

TRANSCRIPT

Page 1: Bab6 tatasusunan

BAB ENAM: TATASUSUNAN

KAWALAN TATASUSUNAN

Apabila butang pilihan (option button) atau kotak pilihan (check box) dikumpulkan di dalam

satu kumpulan, ini bermaksud anda membina suatu kawalan tatasusunan. Kawalan Tatasusunan

adalah suatu kumpulan kawalan yang mempunyai nama yang sama. Kebaikan menggunakan

kawalan tatasusunan berbanding kawalan yang berasingan, ialah kawalan tatasusunan akan

berkongsi suatu Event Click. Di dalam tatasusunan event click, struktur Case digunakan bagi

menentukan butang atau kotak pilihan yang dipilih.

Contoh : Katakan kita ingin membuat pilihan warna pada butang pilihan. Untuk memudahkan

penulisan aturcara kita gunakan objek yang sama dan nama yang sama. Apabila diberikan nama

yang sama, satu mesej akan dipaparkan untuk memberi pilihan untuk membina kawalan

tatasusunan. Apabila butang `Yes' diklik, satu kawalan tatasusunan bernama optWarna telah

dibina.

Kawalan tatasusunan menggunakan index untuk mewakilkan objek. Berdasarkan contoh, kita

telah membina optWarna(0) untuk objek yang pertama, optWarna(1) bagi yang kedua dan

seterusnya optWama(2), optWarna(3). Index bermula dengan 0 sekiranya tidak diberi nilai

awal. Nilai (?) akan bergantung kepada bilangan butang pilihan atau kotak pilihan yang dibina.

Struktur Case

Dalam Bab 5, pernyataan If digunakan bagi pengujian pemilihan dan keputusan. Apabila

ingin menguji pembolehubah tunggal dengan pelbagai nilai, struktur Case akan

digunakan kerana ianya fleksibel dan mudah. Dengan kata lain, Case membolehkan suatu

proses dilakukan mengikut cabang tindakan yang ditetapkan.

Page 2: Bab6 tatasusunan

Tatasusunan

Mohd Farid JaafarJSM, FSKTM, UPM

78

Sebarang pengujian bagi pemilihan dan keputusan dengan pengekodan struktur Case

juga boleh dikodkan menggunakan pernyataan If, tetapi penggunaan struktur Case adalah

lebih mudah dan lebih jelas.

Bentuk am:

Select Case Ungkapan

Case constant list 1

Tindakan 1

Case constant list 2

Tindakan2

.

.

.

Case Else

Tindakan seterusnya

End Select

Ungkapan bagi struktur Case terdiri daripada pembolehubah atau properti yang akan diuji.

Constant list pula adalah nilai yang akan disepadankan; yang mungkin terdiri daripada

pembolehubah atau pemalar tetap bagi numerik atau string, operator perbandingan, suatu

lingkungan nilai dan mungkin juga penggabungan nilai-nilai tersebut. Tiada had ditentukan

bagi bilangan Case ini.

Pengujian Butang Pilihan dengan Struktur Case

Struktur Case sangat sesuai digunakan apabila hendak membuat pengujian untuk memilih

butang pilihan. Apabila suatu butang dipilih ini akan menyebabkan event Click

dilaksanakan. Berdasarkan contoh berikut, Visual Basic mengumpukkan Index yang

berjenis data Integer kepada event Click. Index memegang nombor butang yang dipilih

(0, l, 2 atau 3). Nilai bagi Index ini boleh digunakan di dalam struktur Case.

Page 3: Bab6 tatasusunan

Tatasusunan

Mohd Farid JaafarJSM, FSKTM, UPM

79

Contoh:

Private Sub optWarna_Click (Index As Integer)

’Setkan warna berdasarkan butang yang akan dipilih

Select Case Index

Case 0 ‘Butang pertama dipilih

lblMesej.Caption = "Warna yang dipilih ialah" & _

UCase(optWarna(0).Caption)

lbIMesej.ForeColor = vbRed

Case 1 ‘Butang kedua dipilih

lbIMesej.Caption = "Warna yang dipilih ialah" & _

UCase(optWama(1).Caption)

lblMesej.ForeColor = vbBlue

Case 2 ‘Butang ketiga dipilih

lblMesej.Caption = "Warna yang dipilih ialah" & _

UCase(optWama(2).Caption)

lbIMesej.ForeColor = vbYellow

Case 3 ‘Butang keempat dipilih

lbIMesej.Caption = "Warna yang dipilih ialah" & _

UCase(optWarna(3).Caption)

lbIMesej.ForeColor = vbBlack

End Select

End Sub

TATASUSUNAN 1 DIMENSI

Kita telah mempelajari bagaimana tatasusunan telah digunakan pada kawalan. Sekarang kita ingin

membina tatasusunan pada pembolehubah. Pembolehubah tatasusunan boleh mengandungi

beberapa nilai, sama seperti list box atau combo box. Bagi list box atau combo box, Visual Basic

telah menyimpan nilai di dalam Property List menggunakan tatasusunan. Dengan menggunakan

konsep yang sama, kita ingin membina tatasusunan bagi pembolehubah.

Page 4: Bab6 tatasusunan

Tatasusunan

Mohd Farid JaafarJSM, FSKTM, UPM

80

Sebagai contoh, kita ingin menyimpan senarai kod kursus. Di sini, kita boleh menggunakan

tatasusunan bagi menyimpan senarai tersebut. Tatasusunan merupakan senarai nilai yang

diwakilkan dengan nama yang sama, juga dikenali sebagai jadual (table) atau subscripted

variables. Katakan kita menggunakan nama strKodKursus, setiap data dalam tatasusunan akan

dirujuk menggunakan nama strKodKursus(0), strKodKursus(2) dan seterusnya.

Setiap pembolehubah tersebut dipanggil elemen bagi tatasusunan, Subscript (juga

dipanggil index) mewakilkan kedudukan elemen di dalam tatasusunan. Rajah dibawah

menunjukkan tatasusunan yang mengandungi 10 elemen dengan subscript dari 0-9.

Tatasusunan strKodKursus

(0) SAK 1110

(1) SAK 1111

(2) SAK 2401

(3) SAK 2309

(4) MGM 1191

(5) MGM 2191

(6) POL 2409

(7) FAL 2221

(8) MTK 1111

(9) MTK 2111

Penisytiharan Tatasusunan

Dim ArrayName ([LowerSubscript To] UpperSubscript) [As DataType]

Contoh:

Dim strKodKursus (0 To 10) As String

Dim strNama (0 To 25) As String

Dim curBalance (10) As Currency

Dim mintValue (-10 To 10) As Integer

Page 5: Bab6 tatasusunan

Tatasusunan

Mohd Farid JaafarJSM, FSKTM, UPM

81

Tatasusunan juga boleh didimensikan dengan kurungan tanpa nilai (empty parenthesis)

Public strNama 0 As String

Sekiranya diisytiharkan seperti di atas, tatasusunan dipanggil dynamic array kerana bilangan

elemen akan berubah setiap kali program dilarikan menggunakan pernyataan Redim.

Redim strNama (1 To 10)

Subscript

Penggunaan tatasusunan tidak akan bermakna sehingga kita menggunakan subscript bagi

mencapai elemen. Subscript boleh terdiri daripada constant, variables dan pemyataan numerik.

Contoh:

Option Explicit

Dim strKodKursus(0 To 9) As String

Dim num As Integer

Private Sub DaftarKursus()

For num = 0 To 9

strKodKursus(num) = InputBox ("Masukkan Kod Kursus")

lstKursus.Addltem strKodKursus(num)

Next num

End Sub

Private Sub cmdDaftarKursus_Click()

DaftarKursus

End Sub

Private Sub cmdKeluar_Click()

End

End Sub

Page 6: Bab6 tatasusunan

Tatasusunan

Mohd Farid JaafarJSM, FSKTM, UPM

82

Private Sub lstKursus_Click()

lblKursus.Caption = "Subscript bagi Kursus " &

strKodKursus(1stKursus.Listlndex) & " yang dipilih ialah strKodKursus (" &

1stKursus.Listlndex & “)”

End Sub

Pernyataan For Each / Next

Bagi merujuk kepada setiap elemen yang terdapat di dalam tatasusunan, pernyataan For

Each/Next amat sesuai digunakan. Kelebihan menggunakan pernyataan ini ialah kita tidak

perlu memanipulasi subscript bagi tatasusunan.

Bentuk am:

For Each ElementName In ArrayAame

`laksanakan arahan di dalam loop

Next [ElementName]

Visual Basic secara automatik akan merujuk setiap elemen yang terdapat di dalam tatasusunan.

Arahan yang biasa diberikan seperti memberi nilai kepada setiap elemen. Sekiranya

tatasusunan mengandungi 12 elemen, gegelung akan dilaksanakan sebanyak 12 kali. Jenis data

bagi ElementName mestilah berjenis Variant. Berikut ialah contoh pernyataan For Each/ Next

bagi tatasusunan strName dan intTotal yang telah diisytiharkan dan mengandungi data.

Dim vntOneName As Variant

For Each vntOneName In strName

Printer.Print vntOneName 'Cetak data bagi setiap elemen

Next vntOneName

Dim vntTotal As Variant

For Each vntTotal In intTotal

vntTotal = 0 `Beri nilai awal (0) pada setiap elemen

Next vntTotal

**Sekiranya ingin keluar awal dari pernyataan For, gunakan pemyataan Exit For.

Page 7: Bab6 tatasusunan

Tatasusunan

Mohd Farid JaafarJSM, FSKTM, UPM

83

TATASUSUNAN 2 DIMENSI DAN MULTI-DIMENSI

Tatasusunan 2 dimensi atau lebih, membenarkan kita untuk merujuk kepada lebih daripada 2

data. Bagi tatasusunan 2 dimensi, 2 subscript akan digunakan bagi mewakili satu elemen, dimana

data di atur dalam bentuk baris dan lajur.

Aplikasi yang biasa menggunakan tatasusunan 2 dimensi ialah aplikasi menggunakan jadual

untuk mewakilkan data seperti jadual Taburan Hujan, jadual Cukai dan jadual Kadar Insurans.

Untuk menghasilkan tatasusunan 2 dimensi, pernyataan Dim akan menentukan bilangan baris dan

lajur. Contoh di bawah merupakan jadual yang mengandungi 3 baris dan 4 lajur.

Pengisytiharan Tatasusunan 2 Dimensi

Dim ArrayName ([LowerLimit To] UpperLimit, [LowerLimit To] UpperLimit) [As DataType]

Contoh:

Dim strNama (2, 3) As String

Dim strNama (0 To 2, 0 To 3) As String

Kedua-dua contoh di atas akan menghasilkan tatasusunan yang mengandungi 12 elemen, dengan

3 baris dan 4 lajur.

(0,0) (0,1) (0,2) (0,3)

(1,0) (1,1) (1,2) (1,3)

(2,0) (2,1) (2,2) (2,3)

Page 8: Bab6 tatasusunan

Tatasusunan

Mohd Farid JaafarJSM, FSKTM, UPM

84

Apabila ingin merujuk elemen di dalam tatasusunan, kita mesti menentukan kedua-dua subscript

elemen tersebut. Subscript yang pertama ialah baris (row) dan subscript kedua ialah lajur

(column). Berikut ialah contoh rujukan yang sah:

strName (1,2) = "Value"

strName(intRowlndex, intCollndex) = "Value"

lblDisplay.Caption = strName (1,2)

Printer.Print strName (intRowlndex, intCollndex)

Rujukan kepada elemen adalah tidak sah sekiranya (bagi contoh strName) nilai subscript pertama

lebih dari 2 dan subscript kedua lebih dari 3.

Memberi nilai awal Kepada Tatasusunan 2-Dimensi

Biasanya nilai awalan elemen bagi tatasusunan numerik ialah 0 dan elemen string disetkan

kepada string kosong, tetapi bagi sesetengan kes, kita perlu memberi nilai awal kepada

tatasusunan. Bagi tujuan ini, pernyataan For/Next Tersarang atau For Each/Next boleh digunakan.

Contoh:

Dim intRow As Integer

Dim intCol As Integer

For intRow = 1 To 3

For intColumn = 1 To 4

strName (intRow, intColumn) = “” ‘Initialize each element

Next intColumn

Next intRow

Dim vntName As Variant

For Each vntName In strName

vntName 'Initialize each element

Next vntName

Page 9: Bab6 tatasusunan

Tatasusunan

Mohd Farid JaafarJSM, FSKTM, UPM

85

Mencetak Jadual 2 Dimensi

Apabila ingin mencetak kandungan jadual 2 dimensi, kita juga boleh menggunakan pernyataan

gegelung For Each/Next.

Dim vntName As Variant

For Each vntName In strName

Printer.Print vntName

Next vntName

Jika ingin mencetak keseluruhan baris pada satu garisan, gunakan gegelung For/Next dan

setkan arahan print untuk multi elemen.

For intRowlndex = 0 To 2

Printer.Print strName(intRowIndex,0); Tab(15); strName(intRowIndex,1); _

Tab(30); strName(intRowIndex,2), Tab(45); strName(intRowlndex,3)

Next intRowIndex

Menambah nilai elemen bagi Tatasusunan 2 Dimensi

Berikut merupakan contoh untuk menambah nilai elemen tatasusunan. Bagi menambah nilai

kesemua elemen, setiap lajur mestilah mempunyai satu medan jumlah dan setiap baris juga

mempunyai medan jumlah.

Contoh:

Dim curAmount (1 To 4, 1 To 6) As Currency

Dim curRowTotal (1 To 4) As Currency

Dim curColTotal (I To 6) As Currency

Dim intRowIndex As Integer

Dim intCollndex As Integer

Page 10: Bab6 tatasusunan

Tatasusunan

Mohd Farid JaafarJSM, FSKTM, UPM

86

For intRowIndex = 1 To 4

For intCollndex = 1 To 6

curRowTotal(intRowlndex) = curRowTotal(intRoxlndex) + _

curAmount(intRowIndex, intCollndex)

curRowTotal(intRowlndex) = curRowTotal(intRoxlndex) + _

curAmount(intRowlndex, intCollndex)

Next intCollndex

Next intRowIndex

Contoh:

Option Explicit

Dim mcPrice(0 To 2, 0 To 2) As Currency 'Table to store coffee prices

Private Type CoffeeSale

stType As String

stQuantity As String

cPrice As Currency

End Type

Dim mTransaction(20) As CoffeeSale 'Store transactions for report

Dim miNumberTransactions As Integer

Dim mlWeight As Long

Private Sub cmdClear_Click()

'Remove the selection from the lists and clear the price

Dim iIndex As Integer

cboType.ListIndex = -1 'Clear selection

lblPrice.Caption = “”

mlWeight = 0

Page 11: Bab6 tatasusunan

Tatasusunan

Mohd Farid JaafarJSM, FSKTM, UPM

87

For ilndex = 0 To 2

optWeight(ilndex).Value = False

Next iIndex

End Sub

Private Sub cmdExit_Click()

'Print report and terminate the project

Dim iIndex As Integer

Dim stPrintPrice As String

Printer.Print Tab(45); "Sales Report"

Printer.Print ""

Printer.Print Tab(15); "Type"; Tab(40); "Quantity"; Tab(60); "Price"

Printer.Print ""

For iIndex = 0 To miNumberTransactions – 1

stPrintPrice = Format$(mTransaction(iIndex).cPrice, "Currency")

Printer.Print Tab(10); mTransaction(ilndex).stType; Tab(35); _

mTransaction(ilndex).stQuantity; Tab(65 - Len(stPrintPrice)); _

stPrintPrice

Next iIndex

End Sub

Private Sub cmdFindPrice_Click()

'Lookup the price using the quantity and type

Dim iRow As Integer

Dim iCol As Integer

Dim cPrice As Currency

iRow = mlWeight

Page 12: Bab6 tatasusunan

Tatasusunan

Mohd Farid JaafarJSM, FSKTM, UPM

88

If miNumberTransactions <= 20 Then 'Allow only 20 transactions

If cboType.Listlndex <> -1 Then

iCol = cboType.Listlndex

Select Case mlWeight

Case 0

mTransaction(miNumberTransactions).stQuantity = "Quarter Pound"

Case 1

mTransaction(miNumberTransactions).stQuantity = "Half Pound"

Case 2

mTransaction(miNumberTransactions).stQuantity = "Full Pound"

Case Else

'Default to quarter pound

mTransaction(miNumberTransactions).stQuantity = "Quarter Pound"

End Select

cPrice = mcPrice(iRow,iCol)

lblPrice.Caption = Format$(cPrice, "Currency")

mTransaction(miNumberTransactions).stType = cboType.List(iCol)

mTransaction(miNumberTransactions).cPnce = cPrice

miNumberTransactions = miNumberTransactions + 1

Else

MsgBox "Select a type and quantity", vbExclamation, "Entry Error"

End If

End If

End Sub

Private Sub Form_Load()

'Load prices into the table

mcPrice(0, 0) = 2.6

mcPrice(0, 1) = 2.9

mcPrice(0. 2) = 3.25

mcPrice(1, 0) = 4.9

mcPrice(1, 1) = 5.6

Page 13: Bab6 tatasusunan

Tatasusunan

Mohd Farid JaafarJSM, FSKTM, UPM

89

mePrice(l., 2) = 6.1

mcPrice(2. 0) = 8.75

mcPrice(-2- 1) = 9.75

mcPrice(2. 2) = 11.25

End Sub

Private Sub optWeight_Click(Index As Integer)

'Find the selected weight

mlWeight = Index

End Sub