Definisi Array
Array (larik) adalah sebuah variabel yang dapat menyimpan lebih dari satu nilai sejenis (memilikii tipe data sama). Hal ini berbeda dengan variabel biasa yang hanya mampu menampung satu buah nilai. Setiap nilai yang disimpan di dalam array disebut dengan elemen array, sedangkan nilai urut yang digunakan untuk mengakses elemennya disebut dengan indeks array. Sebagai contoh, misalkan terdapat array A yang memiliki 10 buah elemen nilai yang bertipe integer, maka dapat dipresentasikan sebagai berikut :
A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] A[10]
1 2 3 4 5 6 7 8 9 10
10 20 30 40 50 60 70 80 90 100
Nilai elemen array
Index array
Inelemen array
• Deklarasi Array
Sama seperti variabel lain, array juga dideklarasikan di dalam bagian deklarasi variabel. Bila akan didefinisikan sebagai tipe bentukan, maka array juga akan dideklarasikan di bagian definisi tipe (di bawah kata kunci type). Dalam bahasa Pascal,
pendeklarasian array dilakukan dengan menggunakan kata kunci array dan tipe data yang akan disimpan di dalamnya, selai itu juga harus disertai dengan batas-batas indeksnya yang diapit oleh tanda bracket ([ ]). Berikut ini bentuk umum pendeklarasian array.
NamaArray : array [Indeks Awal . . IndeksAkhir] of tipe data; Gambar 1.2 Bentuk Umum Pendeklarasian array(sumber:Rahardjo)
Sebagai contoh, apabila kita ingin mendeklarasikan array dengan nama A yang berisi 10 buah elemen bertipe integer, maka kita harus mendeklarasikannya dengan cara berikut.
Var
A : array [1 . . 10] of integer;
Pada kode tersebut, indeks array diulai dari satu. Perlu diperhatikan bahwa bahasa Pascal berbeda dengan bahasa C yang indeks array-nya selalu dimulai dari nol. Pada bahasa Pascal, indeks array dapat dimulai dari bilangan berapapun. Selain itu, indeks array juga dapat bertipe karakter maupun tipe enumerasi. Berikut ini contoh-contoh kode yang dapat digunakan untuk mendeklarasikan 10 buah elemen array bertipe integer sebagai pengganti kode di atas.
Var
A1 : array [0 . . 9] of integer; A2 : array [5 . . 15] of integer; A3 : array [’a’ . . ’j’] of integer; A4 : arrat [’A’ . . ’J’] of integer;
Dalam bahasa Pascal, tersedia dua buah fungsi yang dapat digunakan untuk mengambil indeks terendah dan tertinggi dari sebuah array, yaitu fungsi Low dan High. Adapun parameter dari kedua fungsi tersebut adalah nama array yang akan dicari indeksnya. Perhatikan contoh kode berikut.
Var
A: array [1 . . 100] of integer; terendah, tertinggi : integer; Begin
terendah := Low (A); {akan menghasilkan nilai 1}
tertinggi := High (A) {akan menghasilkan nilai 100}
• Mengakses Elemen Array
Setelah mengetahui cara pendeklarasian array, selanjutnya kita harus mengetahui bagaimana cara untuk memanipulasi array terse Langkah pertama yang harus dilakukan adalah mengisikan nilai ke dalam elemen-elemen array bersangkutan. Bentuk umum untuk pengisian elemen array adalah sebagai berikut.
NamaArray [indeks] := nilai;
Gambar 1.3 Bentuk Umum Pengisian Elemen Array(sumber:Rahardjo)
Untuk lebih memahaminya, coba perhatikan contoh kode di bawah ini. Var
A: array [1..100] of integer; Begin
A[1] :=1; {mengisi elemen pertama dengan nilai 1}
A[2] :=2; {mengisi elemen kedua dengan niali 2}
A[3] :=3; {mengisi elemen ketiga dengan niali 3}
....
A[100] :=100; {mengisi elemen keseratus dengan nilai 100}
end.
Kode tersebut akan melakukan pengisian 100 elemen array dengan nilai 1 sampai 100 sehingga kode tersebut akan lebih sederhana apabila dituliskan dengan menggunakan struktur pengulangan seperti yang terlihat pada kode berikut.
Var
A: array [1..100] of integer; i : integer;
Begin
For i:= 1 to 100 do Begin
A[1] := i; end;
End.
• Mengapa Harus Menggunakan Array
Bagi seorang pemula, mungkin akan mucul pertanyaan mengapa kita perlu mendeklarasikan array? Untuk menjawab pertanyaan tersebut, coba perhatikan contoh kasus berikut.
Apabila kita akan membuat program untuk menyimpan sekumpulan data, misalnya data-data hasil penelitian yang berupa bilangan, dimana jumlah dari data tersebut puluhan, ratusan atau bahkan ribuan, apakah akan menggunakan variabel sebanyak data yang ada? Jawabannya tentu tidak, karena hal tersebut merupakan hal yang sangat tidak efisien. Sebagai contoh, asumsikan bahwa banyak data tersebut.
Var
N1, n2, n3, n4, n5, n6, n7, n8, n9, n10 : real; Begin
Writeln(’masukkan data ke-1 : ’); readln(n1); Writeln(’masukkan data ke-2 : ’); readln(n2); Writeln(’masukkan data ke-3 : ’); readln(n3); Writeln(’masukkan data ke-4 : ’); readln(n4); Writeln(’masukkan data ke-5 : ’); readln(n5); Writeln(’masukkan data ke-6 : ’); readln(n6); Writeln(’masukkan data ke-7 : ’); readln(n7); Writeln(’masukkan data ke-8 : ’); readln(n8); Writeln(’masukkan data ke-9 : ’); readln(n9); Writeln(’masukkan data ke-10 : ’); readln(n10); End.
Hal ini tentu akan merepotkan diri kita. Apabila dilihat, program di atas memang masih pendek karena datanya hanya 10, bagaimana bila ratusan ata bahkan ribuan?
Untuk mengatasi masalah ini, seharusnya kita menggunakan array untuk menyimpan data-data tersebut sehingga program akan jauh lebih sederhana dan mudah dalam pengerjaannya. Berikut ini perbaikan program di atas apabila kita menampung data-datanya ke dalam sebuah array.
Const max = 10;
•Definisi Record
Record adalah jenis tipe data terstruktur yang berisi beberapa data, yang masing-masing dapat berlainan tipe. •Mendeklarasikan Record
Suatu tipe record dideklarasikan dengan bentuk sebagai berikut :
RECORD
Daftar_field_1 : tipe_1; Daftar_field_2 : tipe_2; . . .
daftar_field_n : tipe_n; END
RECORD Gambar 2.1 Pendeklarasian Record
Daftar_field_1 : tipe_1; (sumber:Kadir)
Daftar_field_2 : tipe_2; . . .
daftar_field_n : tipe_n; END
Masing-masing daftar_field dapat berupa satu atau beberapa nama pengenal dan masing-masing dinamakan field. Bila
Berikut contoh pendeklarasian record : Type
RecBarang = Record
Nama : String; Kualitas : Char; Harga : LongInt End;
Var
Barang : RecBarang;
Dengan mendeklarasikan seperti di atas, Barang akan mengandung tiga buah field, yaitu :
Nama,
Kualitas,
Harga.
-Cara Mengakses Field
Field dari suatu record diakses dengan bentuk :
Variabel.field
Variabel.field
Gambar 2.2 Mengakses Field(sumber:Kadir)
Sebagai contoh : Barang.Nama
Berarti “field Nama dari variabel record bernama Barang“. Contoh penugasan nilai ke field tersebut :
Barang.Nama := ’Ubin TISKA 20x20’;
Dengan cara seperti di atas, field Nama dari record Barang berisi string ’Ubin TISKA 20x20’.
Contoh :
Writeln (Barang.Nama);
Merupakan perintah untuk menampilkan isi field Nama dari record Barang.
Contoh program yang memberikan gambaran pendeklarasian record, pengisian terhadap field-field serta menampilkan isi masing-masing field dapat dilihat di bawah ini.
Program Rec1; Uses crt; Type
RecBarang = Record Nama: String[25]; Kualitas : Char; Harga : LongInt End;
Var
Barang : RecBarang; {variabel bertipe record}
Begin Clrscr;
{Penugasan nilai terhadap field-field}
Barang.Nama := ’Ubin TISKA 20x20’; Barang.Kualitas := ’A’;
Barang.Harga := 14000;
{menampilkan isi field}
writeln (’Nama Barang : ’, Barang.Nama);
writeln (’Kualitas : ’, Barang.Kualitas);
writeln (’Harga : ’, Barang.Harga);
Readln End.
Hasil program :
Nama Barang : Ubin TISKA 20x20 Kualitas : A
•Record Di Dalam Record
Mungkin saja sebuah record berisi record. Sebagai gambaran hal ini, perhatikan deklarasi berikut :
Program Rec3; Uses crt; Type
RecTanggal = Record Tanggal, Bulan,
Tahun : Integer End;
RecPegawai = Record
Nomor : LongInt; Nama : string [35]; TglLahir : RecTanggal;
Gaji : longInt
End; Var
DataPeg : RecPegawai; {variabel betipe record}
Begin Clrscr;
Penugasan nilai terhadap field-fiedl}
DataPeg.Nomor := 56789; DataPeg.Nama := ’Badu’; DataPeg.TglLahir.Tanggal := 24; DataPeg.TglLahir.Bulan := 12; DataPeg.TglLahir.Tahun := 1972; DataPeg.Gaji := 750000;
{menampilkan isi field}
Writeln (’Nama Pegawai : ’, DataPeg.Nama);
Writeln (’Tanggal Lahir : ’, DataPeg.TglLahir.Tanggal, ’/’, DataPeg.TglLahir.Bulan, ’/’, DataPeg.TglLahir.Tahun); Readln
End.
Hasil dari program di atas adalah sebagai berikut :
Nama Pegawai : Badu
•Pernyataan With
Untuk menyederhanakan notasi seperti : DataPeg.TglLahir.Tanggal
Turbo Pascal menyediakan pernyataan WITH. Bentuk pernyataan ini adalah sebagai berikut :
With nama_record do pernyataan
Gambar 2.3 Bentuk Umum Pernyataan With(sumber:Kadir)
Pada bentuk ini, field-field yang terletak pada bagian pernyataan dapat disebutkan tanpa perlu menyertakan lagi nama record dan tanda titik. Untuk lebih jelasnya, perhatikan program berikut yang merupakan alternatif lain dari program di atas.
Program Rec4; Uses crt; Type
RecBarang = Record
Nama : String [25]; Kualitas : Char; Harga : LongInt End;
Var
Barang : RecBarang; {variabel bertipe record}
Begin Clrscr;
{penugasan nilai terhadap field-field}
With Barang do Begin
Nama := ’Ubin TISKA 20x20’;
RecTanggal = Record Tanggal, Bulan,
Tahun : Integer End;
RecPegawai = Record
Nomor : LongInt; Nama : string [35]; TglLahir : RecTanggal;
Gaji : LongInt
End; Var
DataPeg : RecPegawai; {variabel bertipe record}
Begin Clrscr;
{Penugasan nilai terhadap field-field}
With DataPeg do With TglLahir do Begin
Nomor := 56789; Nama := ’Badu’;
{menampilkan isi field}
With DataPeg do
With TglLahir do Begin
Writeln (’Nama Pegawai :’, DataPeg.Nama); Writeln (’Tanggal lahir :’, DataPeg.TglLahir.Tanggal,
’/’, DataPeg.TglLahir.Bulan ’/’, DataPeg.TglLahir.Tahun) End;
Readln End.
Pernyataan seperti : With DataPeg do
With TglLahir do Dapat ditulis menjadi : With DataPeg, TglLahir do
Contoh program : Program Rec6; Uses crt; Type
RecTanggal = Record Tanggal, Bulan,
Tahun : Integer End;
RecPegawai = Record Nomor : LongInt; Nama : string [35]; TglLahir : RecTanggal; Gaji : LongInt End;
Var
DataPeg : RecPegawai; {variabel bertipe record}
Begin Clrscr;
{Penugasan nilai terhadap field-field}
With DataPeg, TglLahir do Begin
Nomor := 56789;
Nama := ’Badu’; Tanggal := 24; Bulan := 12;
Tahun := 1972; Gaji := 750000; End;
{menampilkan isi field}
With DataPeg, TglLahir do Begin
Writeln (’Nama Pegawai :’, DataPeg.Nama);
Writeln (’Tanggal lahir :’, DataPeg.TglLahir.Tanggal, ’/’, DataPeg.TglLahir.Bulan
’/’, DataPeg.TglLahir.Tahun) End;