Bab |
Rentetan |
5 |
Rentetan
Dalam bab ini anda akan belajar mengenai rentetan (string) dan bagaimana ia boleh diolah dengan menggunakan operator & (ampersand) dan beberapa fungsi rentetan.
Setelah mengikuti modul ini anda akan dapat
mengolah sebarang rentetan dengan menggunakan operator, fungsi dan acara (event)
berikut:
1)
Operator cantuman: &
2)
Fungsi:
LCase(string)
UCase(string)
StrComp(string1,string2,
[compare])
StrConv(string, conversion)
Len(string)
Trim(string)
Str(string)
3)
Acara:
Change
4)
Property:
TabIndex
Gabungan beberapa aksara menghasilkan satu rentetan. Rentetan boleh dikatakan sebagai sebarang data yang bukan nombor. Oleh sebab ia bukan nombor, operasi matematik tidak boleh dilakukan ke atasnya.
Berikut adalah beberapa contoh rentetan:
Contoh:
Negeri
Kucing dan Tikus
Kassim Selamat
Berikut bukan rentetan kerana ia
adalah nombor
34
56,890
Dalam VB, rentetan ditandakan
dengan pembuka dan penutup kata.
“Negeri”
“Kucing dan Tikus”
“Kassim Selamat”
Nombor boleh dijadikan rentetan
apabila ia ditandakan sedemikian.
“34”
“56,890”
Apabila nombor telah ditukarkan
kepada bentuk rentetan operasi matematik tidak boleh dilakukan ke atasnya.
Contoh:
Dim kedudukan As String
Dim tanda As Integer
kududukan = “45”
tanda = 45
2 * kedudukan à menghasilkan Ralat
2 * tanda à menghasilkan 90
Pembolehubah rentetan ialah nama
yang diberi kepada sesuatu rentetan. Nilai sesuatu pembolehubah rentetan boleh
diumpukkan atau diubah dengan pernyataan umpukan (assignment statements).
Rentetan dan pembolehubah rentetan
boleh dipaparkan dengan menggunakan:
·
method Print bagi control Picture Box,
·
property Text bagi control Text Box, dan
·
property Caption bagi control Label
Contoh:
Dim test As String
test = "Ini contoh"
Print test ß bagi form
txtTest.Text = test
ß bagi
control Text Box
lblTest.Caption = test
ß bagi
control Label
picTest.Print test
ß bagi
control Picture Box
Ia juga boleh dipaparkan terus
tanpa menggunakan pembolehubah rentetan
Print “Ini contoh” ß bagi form
txtTest.Text = “Ini contoh” ß bagi
control Text Box
lblTest.Caption = “Ini contoh” ß bagi
control Label
picTest.Print "Hello" ß bagi
control Picture Box
Pembolehubah jenis rentetan boleh
diisytiharkan seperti berikut:
Dim nama As String
Nilainya pula boleh diumpukkan
seperti:
Nama = “Maktab Perguruan”
Beberapa rentetan boleh
dicantumkan (concatenate) dengan menggunakan operator &.
Contoh:
“Mohammad” & “Ali” à
MohammadAli
Perhatikan
bahawa tidak terdapat ruang (space) di antara 2 rentetan di atas. Ruang
boleh ditambah di antara 2 rentetan dengan menggunakan salah satu kaedah
berikut:
“Mohammad
“ & “Ali” à Mohammad
Ali
“Mohammad”
& “ Ali” à Mohammad
Ali
“Mohammad”
& “ “ & “Ali” à Mohammad Ali
Aktiviti ini akan menunjukkan kepada anda bagaimana sesuatu rentetan boleh dipaparkan pada sesuatu control atau objek.
Mulakan satu projek baru dan wujudkan satu form seperti pada Rajah 5.1. Setkan semua control (objek) mengikut spesifikasi pada Jadual 5.1
Rajah 5.1
Object |
Name |
Properties |
Form |
frmTest |
Gunakan nilai default |
Text Box |
txtTest |
sda |
Picture Box |
picTest |
sda |
Label |
lblTest |
sda |
Command Button |
cmdTest |
sda |
Jadual
5.1
Masukkan aturcara berikut ke dalam
butang Command1
Private Sub cmdTest_Click()
Dim test As String
test = "Ini Contoh"
Print test 'cetak atas Form
frmTest.Caption = test 'untuk tajuk Form
txtTest.Text = test 'untuk Text Box
lblTest.Caption = test 'untuk Label
picTest.Print test 'untuk Picture Box
cmdTest.Caption = test 'untuk Command Button
End Sub
Laksanakan aturcara dan klik
butang Command1. Hentikan aturcara dengan mengklik butang End di Toolbar.
Hasil yang harus anda perolehi
adalah seperti pada Rajah 5.2.
Rajah 5.2
Dalam aktiviti ini akan akan mencantumkan 2 rentetan dan memaparkan hasil cantuman ini di atas form dengan menggunakan arahan Print.
Mulakan satu projek baru dan wujudkan satu form seperti pada Rajah 5.3. Setkan semua control (objek) mengikut spesifikasi pada Jadual 5.2.
Rajah 5.3
Object |
Name |
Properties |
Form |
frmRentetan |
Caption: Cantum 1 |
Command Button |
cmdCantum |
Caption: &Cantum |
cmdKeluar |
Caption: &Keluar |
Jadual
5.2
Masukkan kod berikut ke dalam kedua-dua
butang tersebut:
Private Sub cmdCantum_Click()
Print “Kassim “ & “Selamat”
End Sub
Private Sub cmdKeluar_Click()
End
End Sub
Laksanakan aturcara dan klik butang Cantum untuk mendapatkan hasil berikut:
Rajah 5.4
Aktiviti ini adalah lanjutan daripada Aktiviti 2. Perbezaannya ialah Aktiviti 3 menggunakan pembolehubah rentetan.
Ubahsuai kod pada butang Cantum seperti di bawah dan kemudian laksanakan aturcara:
Private Sub cmdCantum_Click()
Dim nama As String
Dim bapa As String
nama = "Kassim"
bapa = "Selamat"
Print nama & " " & bapa
End Sub
Hasil perlaksanaan aturcara adalah
sama seperti Rajah 5.4
Aktiviti ini membantu anda
bagamana mengekstrak beberapa rentetan daripada Text Box dan
mencantumkannya. Hasil cantuman kemudian dipaparkan di Text Box yang
lain.
Mulakan satu projek baru dan wujudkan satu form seperti pada Rajah 5.5. Setkan semua control (objek) mengikut spesifikasi pada Jadual 5.3.
Rajah 5.5
Object |
Name |
Properties |
|
Form |
frmRentetan |
Caption |
Cantum 1 |
Command Button |
cmdCantum |
Caption |
&Cantum |
cmdKeluar |
Caption |
&Keluar |
|
Label |
lblAnda |
Caption |
Masukkan Nama Anda: |
lblBapa |
Caption |
Masukkan Nama Bapa Anda: |
|
lblHasil |
Caption |
Nama Anda Ialah: |
|
Text Box |
txtAnda |
Text |
kosongkan |
TabIndex |
0 |
||
txtBapa |
Text |
kosongkan |
|
TabIndex |
1 |
||
txtHasil |
Text |
kosongkan |
Jadual 5.3
Masukkan kod berikut di dalam
butang Cantum:
Private Sub cmdCantum_Click()
txtHasil.Text = txtAnda.Text & " " & txtBapa.Text
End Sub
Private Sub cmdKeluar_Click()
End
End Sub
Laksanakan aturcara. Contoh hasil
yang harus anda perolehi adalah seperti berikut:
Rajah 5.6
Catatan:
Apabila anda melaksanakan aturcara
di atas, kursor akan berada di objek (control) yang mempunyai TabIndex
0. Menekan kekunci Tab akan
menggerakkan kursor ke TabIndex 1 dan seterusnya.
Jika anda ingin, kursor berada di
sesuatu kontrol semasa aturcara dilaksanakan, setkan TabIndex-nya dengan
nilai 0.
Aktiviti-aktiviti di atas semuanya
menggunakan acara (event) Click. Aktiviti ini mengajar anda bagaimana
menggunakan acara Change untuk menyalin satu rentetan dari satu Text
Box ke Text Box yang lain.
Acara Change akan tercetus
apabila terdapat sebarang perubahan (change) dalam sesuatu control.
Mulakan satu projek baru dan wujudkan satu form seperti pada Rajah 5.7. Setkan semua control (objek) mengikut spesifikasi pada Jadual 5.4.
Rajah 5.7
Object |
Name |
Properties |
|
Form |
frmSalinan |
Caption |
Salin Saya |
Label |
lblAsal |
Caption |
Asal: |
lblSalinan |
Caption |
Salinan: |
|
Text Box |
txtAsal |
Text |
kosongkan |
TabIndex |
0 |
||
txtSalinan |
Text |
kosongkan |
|
TabIndex |
1 |
Jadual
5.4
Masukkan
kod berikut ke dalam control Text Box, txtAsal.
Private Sub txtAsal_Change()
txtSalinan.Text = txtAsal.Text
End Sub
Laksanakan aturcara dan taipkan
sebarang teks di medan Asal. Teks yang sama akan disalin secara automatik di
medan Salinan.
Ini berlaku kerana sebarang perubahan
teks dalam medan Asal akan mencetuskan acara Change (Change Event).
Contoh hasil yang harus anda
diperolehi:
Rajah 5.8
Untuk menghentikankan aturcara,
klik butang End pada Toolbar.
Case merujuk kepada huruf besar dan kecil pada huruf abjad.
Case Rentetan ada 3 bentuk:
Bentuk 1
(semua huruf kecil) - saya gemar visual basic
Bentuk 2
(semua huruf besar) - SAYA GEMAR VISUAL BASIC
Bentuk 3 (huruf besar pada huruf
pertama bagi setiap perkataan)
- Saya Gemar Visual Basic
Rentetan boleh ditukar daripada satu bentuk kepada bentuk yang lain dengan menggunakan fungsi berikut:
Tukar Ke
Bentuk |
Guna
Fungsi |
1 |
LCase(rentetan) ATAU StrConv(rentetan, vbUpperCase) |
2 |
UCase(rentetan) ATAU StrConv(rentetan, vbLowerCase) |
3 |
StrConv(rentetan, vbProperCase) |
Contoh:
Dim tajuk As String
tajuk = “Saya gemar VISUAL BASIC”
UCase(tajuk) à
menghasilkan à SAYA
GEMAR VISUAL BASIC
LCase(tajuk) à
menghasilkan à saya
gemar visual basic
StrConv(tajuk, vbUpperCase) à SAYA GEMAR VISUAL BASIC
StrConv(tajuk, vbLowerCase) à saya
gemar visual basic
StrConv(tajuk, vbProperCase) à Saya
Gemar Visual Basic
Perhatikan:
Fungsi UCase(rentetan) sama
dengan StrConv(tajuk, vbUpperCase) dan
fungsi LCase(rentetan) sama
dengan StrConv(tajuk, vbLowerCase).
Aktiviti ini mengajar anda
bagaimana menggunakan beberapa fungsi rentetan. Apabila anda menginput sesuatu
rentetan ia akan dipapar ke dalam 3 bentuk. Acara Change digunakan untuk
tujuan ini.
Mulakan satu projek baru dan wujudkan satu form seperti pada Rajah 5.9. Setkan semua control (objek) mengikut spesifikasi pada Jadual 5.5.
Rajah 5.9
Object |
Name |
Properties |
|
Form |
frmTukarKes |
Caption |
Tukar Saya |
Text Box |
txtInput |
Text |
kosongkan |
txtBentuk1 |
Text |
kosongkan |
|
txtBentuk2 |
Text |
kosongkan |
|
txtBentuk3 |
Text |
kosongkan |
|
Label |
lblInput |
Caption |
Input Anda: |
TabIndex |
0 |
||
lblBentuk1 |
Caption |
Bentuk 1: |
|
lblBentuk2 |
Caption |
Bentuk 2: |
|
lblBentuk3 |
Caption |
Bentuk 3: |
|
Commad Button |
cmdPadam |
Caption |
&Padam |
cmdKeluar |
Caption |
&Keluar |
Jadual
5.5
Masukkan kod berikut ke dalam control
(objek) yang berkaitan:
Private Sub txtInput_Change()
txtBentuk1.Text = LCase(txtInput.Text)
txtBentuk2.Text = UCase(txtInput.Text)
txtBentuk3.Text = StrConv(txtInput.Text, vbProperCase)
End Sub
Private Sub cmdKeluar_Click()
End
End Sub
Private Sub cmdPadam_Click()
txtInput.Text = ""
txtBentuk1.Text = ""
txtBentuk2.Text = ""
txtBentuk3.Text = ""
End Sub
Laksanakan aturcara dan taipkan sebarang teks di dalam medan “Input Anda” misalnya : Saya gemar VISUAL BASIC. Contoh hasil yang akan anda perolehi:
Rajah 5.10
Dua rentetan boleh jadi sama atau berlainan. Fungsi StrComp( ) biasanya digunakan untuk menentukan sama ada kedua-dua rentetan itu adalah sama atau sebaliknya.
Antara kegunaan membandingkan rentetan adalah:
·
Menyemak sama ada kata laluan yang diberi oleh pengguna
adalah betul
·
Menyemak sama ada sesuatu jawapan itu betul atau salah
Penggunaan
StrComp(rentetan1, rentetan2, [perbandingan])
Perbandingan |
Case |
Contoh |
0 atau
ditiadakan (omitted) |
Case sensitive |
StrComp(rentetan1,
rentetan2, 0) |
1 |
Case insensitive |
StrComp(rentetan1,
rentetan2, 1) |
Parameter perbandingan
digunakan agar penyemakan rentetan dijalankan secara case sensitive atau
case insensitive.
Apabila
fungsi StrComp( ) dilaksanakan, ia akan mengembalikan satu nilai dan ini
boleh ditafsirkan seperti berikut:
Nilai
Dikembalikan |
Makna |
-1 |
rentetan1 < rentetan2 |
0 |
rentetan1 = rentetan2 |
1 |
rentetan1 > rentetan2 |
Null |
rentetan1 dan/atau rentetan2
adalah Null |
Sesuatu
rentetan itu kurang atau lebih besar daripada satu rentetan yang lain berdaser
nilai ASCII-nya. Perbandingan dilakukan dari kiri ke kanan rentetan secara
aksara demi aksara di antara kedua-dua rentetan. Apabila terdapat perbezaan 1
aksara, perbandingan akan terhenti dan nilai dikembalikan.
Contoh:
Rentetan1
= “Jelapang”
Rentetan2
= “JelaPANG”
StrComp(Rentetan1,
Rentetan2, 0)
Perbandingan
akan berterusan sehingga ke aksara ke-5 sahaja yakni huruf p. Oleh sebab nilai
ASCII bagi huruf kecil p lebih esar daripada nilai ASCII bagi huruf besar P,
maka Rentetan1 dianggap lebih besar daripada Rentetan2 dan nilai 1 akan
dikembalikan.
Contoh:
StrComp(“Komputer”,
“KOMPUTER”) atau
StrComp(“Komputer”,
“KOMPUTER”,0)
Kedua-dua
fungsi di atas mengembalikan nilai 1 yang bermakna “Komputer” lebih besar
daripada “KOMPUTER”. Ini kerana huruf kecil o lebih besar nilai ASCII-nya
daripada huruf besar O. Perbandingan dilakukan hanya setakat aksara kedua
sahaja yakni huruf o.
Contoh:
StrComp(“Komputer”,
“KOMPUTER”,1)
Fungsi ini
mengembalikan nilai 0 yang bermakna kedua-kedua rentetan adalah sama. Ini
kerana perbandingan dibuat secara case insensitive.
Contoh:
Aturcara ini menyemak sama ada kata laluan pengguna betul atau salah. Jika betul ia dibenarkan menggunakan sistem. Sebaliknya jika salah ia dikehendaki mencuba lagi.
Dim InputPengguna As String
Dim kataLaluan As String
Dim nilaiBanding As String
InputPengguna = “jum45k”
kataLaluan = “i45sat”
nilaiBanding = StrComp(inputPengguna, kataLaluan, 0)
If nilaiBanding = 0 Then
Print “Selamat Datang Ke Sistem Biodata”
Else
Print “Kata Laluan anda SALAH!, cuba lagi”
End If
Aktiviti ini mengajar anda
bagaimana fungsi StrComp( ) boleh digunakan. Pelaksanaan fungsi ini akan
mengembalikan satu nilai integer yang akan dipaparkan. Tafsiran nilai ini
menentukan sama ada kedua-dua rentetan yang diuji sama ada sama atau
sebaliknya.
Mulakan satu projek baru dan wujudkan satu form seperti pada Rajah 5.11. Setkan semua control (objek) mengikut spesifikasi pada Jadual 5.6.
Rajah 5.11
Object |
Name |
Properties |
|
Form |
frmBanding |
Caption |
Perbandingan Rentetan |
Text Box |
txtRentetan1 |
Text |
kosongkan |
TabIndex |
0 |
||
txtRentetan2 |
Text |
kosongkan |
|
TabIndex |
1 |
||
txtNilaiKembali |
Text |
kosongkan |
|
Frame |
fraKes |
Caption |
Kes |
Option Button |
optCaseSensitive |
Caption |
0 – Case Sensitive (Default) |
optCaseInSensitive |
Caption |
1 – Case Insensitive |
|
Catatan: Pastikan anda wujudkan Frame
dahulu dan kemudian baru masukkan kedua-dua Option Button. Mengapa? |
|||
Label |
Gunakan control Label
untuk melabelkan seperti yang terdapat pada form. Gunakan nilai default bagi Nama
dan Properties. |
||
Commad Button |
cmdBanding |
Caption |
&Bandingkan Rentetan |
cmdKeluar |
Caption |
&Keluar |
Rajah
5.6
Masukkan kod berikut ke dalam control
yang berkaitan:
Dim Kes As Integer
Private Sub cmdBanding_Click()
Dim Rentetan1 As String
Dim Rentetan2 As String
Rentetan1 = txtRentetan1.Text
Rentetan2 = txtRentetan2.Text
txtNilaiKembali = StrComp(Rentetan1, Rentetan2, Kes)
End Sub
Private Sub cmdKeluar_Click()
End
End Sub
Private Sub optCaseInsensitive_Click()
Kes = 1
End Sub
Private Sub optCaseSensitive_Click()
Kes = 0
End Sub
Laksanakan aturcara dan taipkan sebarang teks di dalam medan “Rentetan 1” dan “Rentetan2”. Berikut adalah contoh hasil yang akan anda perolehi:
Rajah 5.12
Panjang sesuatu rentetan boleh ditentukan dengan menggunakan fungsi Trim( ). Fungsi ini akan mengembalikan satu nilai yang menunjukkan bilangan aksara yang terdapat pada rentetan berkenaan.
Contoh:
Nama = “Rahmat Johari”
Panjang = Len(Nama)
Pembolehubah Panjang akan memberi
nilai 13 termasuk 1 ruang yang dianggap sebagai 1 aksara.
Nama = InputBox (“Taipkan Nama
Anda”)
PanjangNama = Len(Nama)
Antara kegunaannya adalah:
·
Menyemak sama ada panjang kata laluan yang diberi oleh
pengguna mesti tidak lebih atau kurang daripada bilangan tertentu.
Kadangkala, sistem memerlukan panjang kata laluan pengguna tidak kurang
daripada 6 aksara untuk tujuan keselamatan.
Ada kalanya terdapat ruang (space) di depan atau di belakang sesuatu rentetan. Arahan Print sentiasa memaparkan nombor yang bukan negatif dengan leading space. Arahan Print ini juga memaparkan trailing space bagi setiap nombor (nombor positif dan negatif)
Contoh:
Nombor 5 dan - 5 mempunyai ruang
seperti berikut:
|
5 |
|
||||
- |
5 |
|
Untuk membuang ruang ini, salah satu 3 fungsi boleh digunakan:
Fungsi |
Ruang
yang dibuang |
LTrim(rentetan) |
Kiri (Left) rentetan |
RTrim(rentetan) |
Kanan (Right) rentetan |
Trim(rentetan) |
Kiri dan kanan rentetan |
Antara kegunaan membuang ruang pada rentetan adalah:
·
Menyemak sama ada pengguna telah memasukkan data atau belum
Contohnya, ada kalanya medan tertentu perlu diisikan.
Contoh:
If eMail <> “ ” Then
MsgBox “Tanpa e-mail kami tidak dapat
memproses belian anda”
End If
Kod di
atas tidak dapat mengecam rentetan yang terdiri daripada ruang. Katakan
pengguna menekan beberapa Space Bar dan ini memberi satu rentetan yang
hanya terdiri daripada ruang sahaja (empty string)
Sebaliknya, fungsi Trim( ) dapat mengatasi masalah ini.
If Trim(eMail) <> “ ” Then
MsgBox “Tanpa e-mail kami tidak dapat
memproses belian anda”
End If
Fungsi Val(rentetan)
boleh menukar rentetan kepada satu nombor. Manakala Str(nombor) menukar
nombor kepada rentetan
Contoh:
kedudukan
= “98”
Val(kedudukan) à akan
mengembalikan nombor 98
Val(“52”) à akan
mengembalikan nombor 52
Str(52) à akan mengembalikan rentetan 52
Aktiviti
ini membantu anda mengira rentetan di samping mengajar anda bagaimana
menggunakan fungsi Len( ).
Mulakan satu projek baru dan wujudkan satu form seperti pada Rajah 5.13. Setkan semua control (objek) mengikut spesifikasi pada Jadual 5.7.
Rajah 5.13
Object |
Name |
Properties |
|
Form |
frmPanjangRet |
Caption |
Kalkulator Panjang Rentetan |
Text Box |
txtInput |
Text |
kosongkan |
TabIndex |
0 |
||
txtHasil |
Text |
kosongkan |
|
Label |
Guna nilai default |
Caption |
Seperti terdapat pada rajah |
Command Button |
cmdKira |
Caption |
Kira &Panjang Rentetan |
TabIndex |
1 |
||
cmdKeluar |
Caption |
&Keluar |
|
TabIndex |
2 |
Jadual
5.7
Masukkan kod berikut ke dalam
control cmdKira dan cmdKeluar masing-masing:
Private Sub cmdKira_Click()
txtHasil.Text = Len(txtInput.Text)
End Sub
Private Sub cmdKeluar_Click()
End
End Sub
Laksanakan aturcara dan taipkan sebarang teks di dalam medan “Taipkan Sebarang Rentetan” dan kemudian klik butang “Kira Panjang Rentetan”. Berikut adalah contoh hasil yang akan anda perolehi:
Rajah 5.14
Aktiviti
ini adalah lanjutan Aktiviti 8. Tetapi kali ini ia membuang ruang sebelum dan
selepas rentetan.
Ubahsuai
form di atas dengan menambah contol: butang, text box dan label
yang berkaitan seperti yang ditunjukkan di Rajah 5.15 dan mengikut spesifikasi
seperti pada Jadual 5.8.
Rajah 5.15
Object |
Name |
Properties |
|
Text Box |
txtTrim |
Text |
kosongkan |
txtHasilTrim |
Text |
kosongkan |
|
Label |
Guna nilai default |
Caption |
Seperti terdapat pada rajah |
Command Button |
cmdTrim |
Caption |
&Trim Ruang |
TabIndex |
3 |
Jadual
5.8
Masukkan kod berikut ke dalam
control cmdTrim.
Private Sub cmdTrim_Click()
txtHasilTrim.Text = Len(Trim(txtInput.Text))
End Sub
Laksanakan
aturcara ini dan masukkan sebarang text. Berikan beberapa ruang sebelum dan
selepas teks berkenaan. Kemudian klim butang Trim Ruang.
Hasil yang
akan anda perolehi dengan menaipkan perkataan “ bpg kpm “ mempunyai 2 ruang sebelum dan selepasnya
adalah seperti berikut:
Rajah 5.16
Latihan
ini menggabungkan perkara-perkara yang telah anda pelajari dan menggunakannya
untuk membina satu projek. Anda dikendaki menghasilkan satu form untuk
login ke dalam sistem. Jika terdapa kesilapan, salah satu mesej akan dipaparkan
untuk membantu pengguna. Untuk tujuan itu, anggapkan kata laluan yang sebenar
ialah abcd1234.
Paparkan
borang ini sebaik sahaja aturcara dilaksanakan:
Jika nama
pengguna kurang daripada 6 askara atau lebih daripada 8 aksara paparkan mesej
ini:
Jika nama kata laluan kurang daripada 8 askara atau lebih daripada 8 aksara paparkan mesej ini:
Jika nama
kata laluan adalah 8 aksara tetapi salah paparkan mesej ini:
Jika
pengguna tidak mengisikan medan Pengguna, paparkan mesej ini:
Jika
pengguna tidak mengisikan medan Kata Laluan, paparkan mesej ini:
Jika
semuanya betul berikan kata alauan dengan memaparkan mesej ini: