A. PENDAHULUAN
Variable dengan tipe data tunggal (skalar) hanya dapat digunakan untuk
menyimpan sebuah nilai saja sehingga untuk menyimpan beberapa nilai sekaligus
dalam suatu variable dibutuhkan suatu variable khusus yang disebut dengan
Variable berindeks atau array adalah variable yang mempunyai tipe data
sejenis, misalnya numeric atau string. Yang mampu menampung banyak nilai, dan
Dari penjelasan di atas, sebuah larik (array) dapat diilustrasikan sebagai berikut :
1 2 3 4 ….. i ….. n
X
Beberapa hal penting yang harus diperhatikan bila ingin memasukkan deretan
a. Tipe data yang akan disimpan ke dalam variable array harus diketahui
sebab variable array numeric hanya dapat menerima data numeric dan
b. Banyaknya data harus lebih kecil atau sama dengan jumlah subskrip
201
c. Untuk memasukkan deretan data dalam suatu variable indeks dapat
Secara garis besar array dibagi menjadi dua kelompok besar, yaitu : linier
array / linier list (array berdimensi tunggal) dan multidimension array (array
perluasan dari tipe data Array, yaitu karena pada array masing-masing
komponennya harus menggunakan tipe data yang sama, maka pada record hal itu
tidak berlaku lagi. Artinya diperbolehkan untuk menggunakan tipe data yang
SASARAN UMUM
SASARAN KHUSUS
202
d. Menuliskan program dengan menggunakan array berdimensi banyak.
C. URAIAN MATERI
Nama_Larik[no.indeks] ;
Misal : x[1] berarti kita mengakses data larik x pada no.indeks ke-1.
Uses crt;
Var
a : array [1..3] of string;
i : integer;
Begin
clrscr;
writeln(‘Masukkan 3 nama mahasiswa : ‘);
for i := 1 to 3 do
begin
write(‘Nama mahasiswa ke-‘,i,’ : ’); readln(a[i]);
203
end;
writeln(‘Nama 3 mahasiswa yang telah Anda masukkan: ‘);
for i := 1 to 3 do
begin
writeln(‘Nama mahasiswa ke-‘,i,’ : ‘,a[i]);
end;
End.
Hasil Run/Eksekusi:
KEUNTUNGAN
Menggunakan data larik adalah bahwa kita tidak akan kehilangan nilai
Contoh :
Program Rata_rata;
Uses crt;
type
larik = array[1..10] of integer;
var
x : larik;
Tot, i, n : integer;
mean : real;
Begin
clrscr;
write('Masukkan jumlah data : '); readln(n);
writeln;
Tot := 0;
for i:= 1 to n do
begin
write('Masukkan Data ke-',i,' ', 'Anda : '); readln(x[i]);
Tot:= Tot + x[i];
end;
writeln;
204
mean:= Tot/n;
write('Dan hasil perhitungan meannya : ');
writeln(mean:8:2);
readln;
end.
KELEMAHAN
Saat ditentukan suatu variable bertipe data array maka ia akan langsung
mengambil tempat pada memory penyimpanannya sesuai dengan tipe data yang
digunakan pada array, baik nantinya semua komponen pada array itu digunakan
ataupun tidak.
mendeklarasikan suatu matriks dengan adanya tipe data array maka masalah itu
dapat diselesaikan, yaitu dengan menggunakan array dengan dimensi dua atau
Array dua dimensi dapat digambarkan sebagai memiliki baris dan kolom.
Array tiga dimensi mungkin dapat digambarkan memiliki baris, kolom dan
Namun perlu diingat bahwa baris, kolom dan halaman itu hanya
205
semua array multidimensi dapat digambarkan seperti diatas, bahkan dapat bersifat
abstrak.
disimpan seolah-olah sebagai array satu dimensi, namun setiap alamat memiliki
1 2 3
1 A B C
2 D E F
A B C D E F
Pemetaan fisik row by row dalam memori terhadap array dua dimensi
diatas.
A D B E C F
Pemetaan fisik row by row dalam memori terhadap array dua dimensi
diatas.
206
Type
Nama_Array = Array[tipe-indeks1,tipe-indeks2,..., tipe-indeks ke n] of tipe data ;
a. Matriks
Matriks adalah suatu kumpulan bilangan yang disusun dalam bentuk baris dan
suatu matriks maka harus memperhatikan jumlah baris dan kolom yang
Program Baca_tulis_matriks ;
uses crt;
Var m,n,i,j : integer;
x: Array[1..100,1..100] of integer;
begin
clrscr;
write('Baca ukuran baris Matriks :',' ');readln(m);
write('Baca ukuran kolom matriks :',' ');readln(n);
writeln('Matriks anda berukuran',' ',m,'x',n,' ');
for i:=1 to m do
for j:=1 to n do
begin
write('Baca nilai :',' ');readln(x[i,j]);
end;
writeln;
writeln('Matriksnya :',' ');
for i:=1 to m do
begin
for j:=1 to n do
write(x[i,j]:3); writeln;
end;
207
writeln;writeln('Matriks tranposenya :',' ');
for j:= 1 to n do
begin
for i:=1 to m do
write(x[i,j]:3);writeln;
end;writeln;
writeln('Matriks anda berukuran',' ',n,'x',m,' ');
readln;
end.
b. Koordinat Kartesius
suatu bidang di mana setiap titik pada suatu bidang didefinisikan dengan
sepasang bilangan real. Untuk menentukan letak suatu titik, system kartesius
menggunakan dua buah garis yang disebut dengan sumbu. Sumbu pertama
adalah sumbu datar yang biasanya disebut dengan sumbu X. Sumbu kedua
208
Var
koordinat : array[1..100,1..50] of integer;
Vector tiga dimensi disebut juga dengan istilah vector ruang. Untuk
menentukan letak suatu titik digunakan system koordinat tiga buah sumbu yang
saling tegak lurus. Ketiga buah sumbu tersebut dinyatakan dengan nama sumbu x,
y, dan z.
vector ruang dengan panjang sumbu x = 20, sumbu y = 20 dan sumbu z = 20,
Var
Vektor3D : array[1..20,1..20,1..20] of integer;
Catatan :
Tipe data Larik (Array) juga berisi tentang kumpulan record, yang biasa
dalam Pascal.
209
TIPE DATA REKAMAN (RECORD).
Tipe data ini merupakan perluasan dari tipe data Array, yaitu karena pada
maka pada record hal itu tidak berlaku lagi. Artinya diperbolehkan untuk
menggunakan tipe data yang berbeda pada masing-masing komponen (field) dari
record tersebut.
Dengan tipe data ini kita dapat mengumpulkan beberapa item data yang
disebut field. Deklarasi tipe ini diawali kata record dan dikuti oleh suatu daftar
Pendeklarasian record :
Type
Nama_record = record
Field1: tipe data1 ;
Field2: tipe data2 ;
…………………
…………………
Fieldn: tipe datan ;
End ;
Contoh :
Type Barang = record
Nama : string[20] ;
Jenis : string [20]
Jumlah : integer ;
End ;
menuliskan
Nama_record.field := (nilainya);
210
Misalkan : dari contoh diatas kita akan mengisikan nama barang dengan Piring,
jenis barang yaitu barang pecah belah dan jumlah barang 3 lusin maka kita harus
Barang.Nama := ‘Piring’ ;
Barang.Jenis := ‘Pecah belah’ ;
Barang.Jumlah:= 36 ;
Nilai-nilai dari field ini akan disimpan dalam record. Untuk melihat apakah benar
data yang dimasukkan telah tersimpan dalah ecord maka pada var kita
Write(X[i].nama);
data dari field yang tersimpan dalam record tersebut akan ditampilkan.
menuliskan:
Pengenal_record.pengenal_field
Contoh:
langganan.Nama := ‘Kurniawan’;
readln(langganan.Kode);
writeln(langganan.Nama);
writeln(langganan.Kode);
211
Kita dapat langsung menuliskan pengenal field tanpa perlu menyertakan
Contoh:
with langganan do
begin
Nama := ‘Kurniawan’;
readln(Kode);
end;
with langganan do
begin
writeln(Nama);
writeln(Kode);
end;
Tipe data record dapat juga mempunyai field berupa tipe data record yang lainnya.
Contoh:
Type
tgl = record
hari : 1..31;
bulan : 1..12;
tahun : word;
End;
almt = record
jalan : string[35];
kota : string[25];
End;
pegawai = record
nama : string[40];
tglmasuk : tgl;
alamat : almt;
end;
Var
Datapegawai : pegawai;
212
Contoh Program menggunakan Record :
Type
Datamhs = record
Nomor : integer;
Nim : string[20];
Ip : real;
end;
var
jumlahmhs,i,j : byte;
mahasiswa : array [1..50] of datamhs;
Begin
write(‘Jumlah mahasiswa ? ‘); readln(jumlahmhs);
for i:=1 to jumlahmhs do
begin
with mahasiswa[i] do
begin
write(‘Nomor mahasiswa’,i,’ ? ‘); readln(nomor);
write(‘Nama mahasiswa’,i,’ ? ‘); readln(nama);
write(‘Ip mahasiswa’,i,’ ? ‘); readln(ip);
end;
end;
write(‘Data mahasiswa keberapa yang Anda ingin lihat ? ‘); readln(i);
with mahasiswa[i] do
begin
writeln(nomor);
writeln(nama);
writeln(ip);
end;
End.
Hasil run/eksekusi :
Jumlah mahasiswa ? 3
Nomor mahasiswa 1 ? 2341
Nama mahasiswa 1 ? Dewi
Ip mahasiswa 1 ? 2.45
Nomor mahasiswa 2 ? 2345
Nama mahasiswa 2 ? Paul
Ip mahasiswa 2 ? 3.1
Nomor mahasiswa 3 ? 2456
Nama mahasiswa 3 ? James
Ip mahasiswa 3 ? 2.76
Data mahasiswa keberapa yang Anda ingin lihat ? 2
2345
Paul
3.1
213
Contoh Program Database menggunakan Record secara Modular :
PROGRAM DATABASE;
Uses crt;
TYPE mahasiswa=record
nama: array[1..20] of string;
nim: array[1..20] of string;
alamat: array[1..20] of string;
ipk: array[1..20] of real;
end;
214
writeln('MENU PILIHAN');
writeln;
writeln('[1] NAMA');
writeln('[2] NIM');
writeln('[3] ALAMAT');
writeln('[4] IPK');
writeln;
write('Pilihan anda : ');readln(no);
case no of
1: begin
write('Masukan Nama Mahasiswa : ');readln(mhs1.nama);
writeln;
writeln('=================================================');
writeln('|','Nama':20,'NIM':10,'Alamat':20,'IPK':10,'|':2);
writeln('=================================================');
for i:=1 to n do
if (mhs1.nama) = (mhs.nama[i]) then
begin
writeln('|',mhs1.nama:20,mhs.nim[i]:10,mhs.alamat[i]:20,mhs.ipk[i]:10:2, '|':2);
end;
writeln('=================================================');
writeln;
end;
2: begin
write('Masukan No. Mahasiswa : ');readln(mhs1.nim);
writeln;
writeln('=================================================');
writeln('|','Nama':20,'NIM':10,'Alamat':20,'IPK':10,'|':2);
writeln('=================================================');
for i:=1 to n do
if (mhs1.nim) = (mhs.nim[i]) then
begin
writeln('|',mhs.nama[i]:20,mhs1.nim:10,mhs.alamat[i]:20,mhs.ipk[i]:10 :2,'|':2);
end;
writeln('================================================');
writeln;
end;
3: begin
write('Masukan Alamat Mahasiswa : ');readln(mhs1.alamat);
writeln;
writeln('================================================');
writeln('|','Nama':20,'NIM':10,'Alamat':20,'IPK':10,'|':2);
writeln('================================================');
for i:=1 to n do
if (mhs1.alamat) = (mhs.alamat[i]) then
begin
writeln('|',mhs.nama[i]:20,mhs.nim[i]:10,mhs1.alamat:20,mhs.ipk[i]:10 :2,'|':2);
end;
215
writeln('================================================');
writeln;
end;
4: begin
write('Masukan IPK : ');readln(mhs1.ipk);
writeln;
writeln('=================================================');
writeln('|','Nama':20,'NIM':10,'Alamat':20,'IPK':10,'|':2);
writeln('=================================================');
for i:=1 to n do
if (mhs1.ipk) = (mhs.ipk[i]) then
begin
writeln('|',mhs.nama[i]:20,mhs.nim[i]:10,mhs.alamat[i]:20,mhs1.ipk: 10:2,'|':2);
end;
writeln('=================================================');
writeln;
end;
end;
write('Ingin mencari data lagi (y/n) ? ');readln(tekan);
writeln;
end;end;end;end;
{=================PROGRAM UTAMA======================}
BEGIN
clrscr;
data(data1,data2);
readln;
end.
216
No. Mahasiswa : 8299
Alamat Mahasiswa : Tegal
IPK : 3.5
DATA MAHASISWA
=============================================
| No Nama NIM Alamat IPK |
=============================================
| 1 Tumpal PS 8051 KalBar 3.50 |
| 2 Sri Sunarwati 8244 Klaten 3.40 |
| 3 Putu Eka A 8239 Bali 3.30 |
| 4 Timotius N 8299 Tegal 3.50 |
=============================================
MENU PILIHAN
[1] NAMA
[2] NIM
[3] ALAMAT
[4] IPK
Pilihan anda : 1
Masukan Nama Mahasiswa : Tumpal PS
==========================================
| Nama NIM Alamat IPK |
==========================================
| Tumpal PS 8051 KalBar 3.50 |
==========================================
Ingin mencari data lagi (y/n) ? y
MENU PILIHAN
[1] NAMA
[2] NIM
[3] ALAMAT
[4] IPK
Pilihan anda : 2
Masukan No. Mahasiswa : 8299
=========================================
| Nama NIM Alamat IPK |
=========================================
| Timotius N 8299 Tegal 3.50 |
=========================================
Ingin mencari data lagi (y/n) ? y
MENU PILIHAN
[1] NAMA
[2] NIM
217
[3] ALAMAT
[4] IPK
Pilihan anda : 3
Masukan Alamat Mahasiswa : Bali
=========================================
| Nama NIM Alamat IPK |
=========================================
| Putu Eka A 8239 Bali 3.30 |
=========================================
Ingin mencari data lagi (y/n) ? y
MENU PILIHAN
[1] NAMA
[2] NIM
[3] ALAMAT
[4] IPK
Pilihan anda : 4
Masukan IPK : 3.4
=========================================
| Nama NIM Alamat IPK |
=========================================
| Sri Sunarwati 8244 Klaten 3.40 |
=========================================
TES MANDIRI
1. Buatlah program untuk menentukan nilai modus (angka yang sering muncul)
218
8. Buatlah program untuk mencari nilai Standar Deviasi, dengan rumus :
(dt[i]rata)
2
SD i 1
n 1
Keterangan :
SD = Standar Deviasi
n = Jumlah data
total nilai akhir mahasiswa pada setiap semester. Beserta tampilkan nilai rata-
rata kelas pada setiap matakuliah yang diambil. Buatlah dalam bentuk subrutin
DAFTAR PUSTAKA
Budi Sutedjo, Michael A.N. 2000., Algoritma dan Teknik Pemrograman. Andi.
Yogyakarta.
Jogiyanto H. 2004. Bahasa Turbo Pascal, Teori dan Aplikasi Program Komputer.
Jilid 1. Andi. Yogyakarta.
219