Sesi
Array & String
4
4.1 Array Array merupakan sekumpulan elemen berindeks yang memiliki tipe yang sama (base type). Pendefinisian array ditunjukkan dengan format: array [
,...,] of
yang mana melebihi dari 2GB.
merupakan suatu tipe bilangan (ordinal) yang tidak boleh
Contoh yang sederhana adalah array satu dimensi yang hanya memiliki satu indexType. Contoh pendeklarasian, var Larik: array [1..255] of char;
mendeklarasikan suatu variabel bernama Larik yang menampung 255 karakter (255 bytes). Sehingga, Larik[11] berarti karakter ke-11 dari Larik. Jika kita membuat array tetapi tidak mengisikan nilai pada semua elemennya, elemen yang tidak terpakai masih tetap dialokasikan di memori tetapi datanya belum diinisialisasi. Selain yang sederhana (satu dimensi), ada juga array multidimensi yang merupakan array dari array, dengan kata lain memiliki lebih dari satu indeks. Contohnya: type Matriks = array [1..3] of array [1..5] of longint;
Bentuk di atas sama juga dengan bentuk berikut: type Matriks = array [1..3, 1..5] of longint;
Bentuk yang manapun sama saja efeknya, mengalokasikan array sebanyak 15 longint (15*4 = 45 bytes).
4.2 Penghitung Karakter Vokal Program berikut akan membaca masukan string, kemudian dihitung jumlah huruf vokalnya. Yang termasuk huruf vokal antara lain A,I,U,E,O. DAD – Sesi 4: Array & String
1
Gambar 1. Program Pembaca Masukan String.
Komponen Edit1, Edit2 Label1 Label2 BitBtn1
Properti Text Caption Caption Kind Caption Kind Caption Caption
BitBtn2 Form1
Nilai
(kosongkan) String Jumlah Vokal bkOK Hitung bkClose Tutup Program Pembaca Masukkan String
Kode program untuk event OnClick pada komponen BitBtn1 adalah sebagai berikut : procedure TForm1.BitBtn1Click(Sender: TObject); var i, vokal: integer; teks: string; begin teks := Edit1.Text; vokal := 0; for i:=1 to begin if UpCase if UpCase if UpCase if UpCase if UpCase end;
Length(teks) do (teks[i]) (teks[i]) (teks[i]) (teks[i]) (teks[i])
= = = = =
'A' 'I' 'U' 'E' 'O'
then then then then then
vokal vokal vokal vokal vokal
:= := := := :=
vokal+1; vokal+1; vokal+1; vokal+1; vokal+1;
Edit2.Text := IntToStr(vokal); end;
DAD – Sesi 4: Array & String
2
Gambar 2. Program Pembaca Masukan String setelah dieksekusi.
Dari contoh eksekusi di atas huruf vokal yang muncul adalah e,a,a,o,a,e, dan i, sehingga berjumlah 7 buah. Penjelasan :
Variabel teks yang bertipe string dapat diperlakukan sebagai array. Ini dikarenakan string merupakan array dari karakter. Perintah UpCase() digunakan untuk merubah suatu karakter menjadi huruf besar. Sehingga tidak peduli huruf kecil atau besar, semua akan menjadi huruf besar dan dianggap sebagai huruf vokal yang bersesuaian dengan kondisi if-nya. Perlu diketahui, ada juga perintah UpperCase() yang digunakan untuk mengkonversi semua abjad dalam satu kalimat (string) menjadi huruf kapital semua. Kebalikannya adalah fungsi LowerCase(). Catatan :
Baris :
if if if if if
UpCase UpCase UpCase UpCase UpCase
(teks[i]) (teks[i]) (teks[i]) (teks[i]) (teks[i])
= = = = =
'A' 'I' 'U' 'E' 'O'
then then then then then
vokal vokal vokal vokal vokal
:= := := := :=
vokal+1; vokal+1; vokal+1; vokal+1; vokal+1;
dapat diubah menjadi : if UpCase(teks[i]) in [‘A’, ‘I’, ‘U’, ‘E’, ‘O’] then vokal := vokal + 1;
Kemudian, pernyataan: vokal := vokal + 1;
bisa disederhanakan menjadi: inc(vokal,1);
atau
inc(vokal);
DAD – Sesi 4: Array & String
3
4.3 Pembalik Kalimat Pada program berikutnya, kita akan membalikan kalimat yang diinputkan oleh user. Siapkan 2 buah Label, 2 Edit, dan 2 BitBtn. Atur masing-masing propertinya sebagai berikut: Komponen Edit1, Edit2 Edit2 Label1 Label2 BitBtn1 BitBtn2 Form1
Properti Text Color Caption Caption Kind Caption Kind Caption Caption
Nilai (kosongkan) clBtnFace Masukkan sembarang kalimat Hasil pembalikan bkRetry Balikkan bkClose Tutup Program Pembalik Kalimat
Rancanglah agar tampak seperti gambar berikut ini:
Gambar 3. Rancangan Program Pembalik Kalimat.
Masukkan kode berikut ke event OnClick pada tombol yang bertuliskan “Balikkan”: procedure TForm1.BitBtn1Click(Sender: TObject); var kalimat, hasil: string; i, panjang: integer; temp: string[1]; begin //Inisialisasi kalimat := Edit1.Text; hasil := ''; panjang := Length(kalimat); for i := 1 to panjang do begin temp := Copy(Kalimat, panjang+1-i, 1); hasil := Concat(hasil, temp); end; Edit2.Text := hasil; end;
DAD – Sesi 4: Array & String
4
Gambar 4. Tampilan program setelah dieksekusi.
Penjelasan :
Perintah Length(x) digunakan untuk mengetahui jumlah karakter yang terkandung dalam variabel x. Perintah Copy(S, P, I) digunakan untuk menyalin karakter-karakter di variabel S mulai dari posisi P sebanyak I. Perintah Concat(A, B) digunakan untuk menggabungkan kalimat yang terkandung pada variabel A dan B. Perintah ini akan sama hasilnya dengan pernyataan A+B. Sebagai catatan, parameter dalam perintah ini bisa berjumlah berapa saja. Misalnya untuk menggabungkan empat string dapat digunakan perintah: Concat(A, B, C, D). Catatan :
Pada program di atas, pernyataan : temp := Copy(kalimat, panjang+1-i, 1); hasil := Concat(hasil, temp);
dapat disederhanakan menjadi : temp := Kalimat[panjang+1-i]; hasil := hasil + temp;
DAD – Sesi 4: Array & String
5
4.4 Menghitung Jumlah Masing-Masing Karakter Pada contoh berikut, akan dibuat program yang akan menghitung jumlah dari masing-masing karakter dalam satu kalimat. Pertama-tama masukkan terlebih dahulu komponen Panel, kemudian tempatkan semua komponen yang tampak pada gambar ke dalam panel tersebut:
Gambar 5. Rancangan program penghitung jumlah karakter.
Komponen Edit1, Edit2 Label1 Label2 Label3 ComboBox1 BitBtn1 BitBtn2 Form1 Panel1
Properti Text Caption Caption Caption Style Kind Caption Kind Caption Caption
Nilai (kosongkan) Kalimat Indeks Jumlah csDropDownList bkOK Proses bkClose Program Pencacah Karakter (kosongkan)
Pada event OnClick BitBtn1, masukkan kode berikut: procedure TForm1.BitBtn1Click(Sender: TObject); var i: byte; kalimat: string; karakter: char; begin //inisialisasi for karakter := Spasi to Tilde do jumkar[karakter] := 0; kalimat := Edit1.Text;
DAD – Sesi 4: Array & String
6
//perhitungan jumlah per karakter for i := 1 to length(kalimat) do begin karakter := kalimat[i]; jumkar[karakter] := jumkar[karakter] + 1; end; //masukkan indeks ke ComboBox ComboBox1.Clear; for karakter := Spasi to Tilde do ComboBox1.Items.Add(karakter); end;
Kemudian pada event OnChange ComboBox1, masukkan juga kode program berikut: procedure TForm1.ComboBox1Change(Sender: TObject); var kar: char; begin kar := ComboBox1.Text[1]; Edit2.Text := IntToStr(jumkar[kar]); end;
Namun, sebelumnya deklarasikan dulu konstanta di bawah ini di atas pernyataan type: const Spasi = #32; Tilde = '~'; type TForm1 = class(TForm)
Kemudian, deklarasikan juga variabel jumkar di dalam deklarasi type tersebut: type TForm1 = class(TForm) Panel1: TPanel; BitBtn1: TBitBtn; BitBtn2: TBitBtn; Edit1: TEdit; Label1: TLabel; ComboBox1: TComboBox; Edit2: TEdit; Label2: TLabel; Label3: TLabel; procedure BitBtn1Click(Sender: TObject); procedure ComboBox1Change(Sender: TObject); private { Private declarations } jumkar: array[Spasi..Tilde] of byte; public { Public declarations } end;
DAD – Sesi 4: Array & String
7
Gambar 6. Tampilan program setelah dijalankan.
Penjelasan :
Pada program di atas, kita menggunakan array dengan indeks bertipe karakter. Range Spasi..Tilde dimaksudkan agar semua karakter pada keyboard bisa tercakup (lihat tabel ASCII), sehingga kita bisa mengakomodasi semua karakter yang ditekan oleh user. Event OnChange terjadi ketika isi yang ditampilkan dari objek yang bersangkutan (dalam hal ini ComboBox1) berubah. Pada program di atas, ketika user memilih suatu karakter yang terdapat dalam ComboBox, program akan mencarikan jumlah karakter yang tersimpan di array jumkar untuk ditempatkan di kolom jumlah (Edit2).
Latihan : Buat program untuk merubah kalimat yang diinputkan menjadi huruf kecil semua atau huruf besar semua, menggunakan pilihan RadioButton. Catatan: gunakan perintah UpperCase() dan LowerCase(). Buat program untuk menghitung jumlah huruf kecil dan huruf besar.
DAD – Sesi 4: Array & String
8
4.5 Tabel ASCII
DAD – Sesi 4: Array & String
9