Dalam 2 tutorial pascal sebelumnya kita telah mempelajari cara membuat tipe data array yang jumlah element-nya bersifat tetap (fixed). Selain itu, pascal juga mendukung array dinamis (dynamic arrays) dimana ukuran array belum ditulis pada saat array dideklarasikan.
Pada lanjutan tutorial pascal di duniailkom ini saya akan membahas tentang cara membuat array dinamis dalam bahasa pemrograman pascal.
Pengertian Fixed Array Pascal
Fixed array adalah sebutan untuk array yang jumlah element-nya bersifat tetap. Contoh-contoh kode program dalam 2 tutorial sebelum ini, saya selalu menggunakan fixed array, dimana ukuran array sudah ditentukan pada saat array dibuat.
Sebagai contoh, kode program:
var  nilai: array[0..9] of integer;
Berarti kita membuat array integer yang terdiri dari 10 element (0, 1, 2, 3 … 9).
Contoh lain, kode program:
var  kata: array[0..2,0..2] of string[20];
Berarti kita membuat array string dengan 9 element, yakni 3 untuk dimensi pertama, dan 3 untuk dimensi kedua (3*3=9). Mulai dari kata[0,0], kata[0,1] hingga kata [2,2].
Dalam kedua contoh ini ukuran array sudah diketahui pada saat array dideklarasikan.
Pengertian Dynamic Array Pascal
Dynamic array adalah tipe array yang jumlah element-nya belum ditentukan (masih nol). Contoh penulisannya adalah sebagai berikut:
var  nilai: array of integer;  kata: array of string[20];
Jadi, berapa jumlah element di dalam array ini? Jumlah element akan ditentukan menggunakan fungsi setlength() di bagian kode program utama. Sebagai contoh, jika saya ingin variabel 'nilai' memiliki 10 element, saya tinggal menulis setlength(nilai, 10). Langsung saja kita masuk kedalam contoh kode programnya:
program tipe_array; uses crt; var  nilai: array of integer; begin  clrscr;  setlength(nilai,10);   nilai[0]:= 1;  nilai[6]:= 2;  nilai[9]:= 4;   writeln('nilai 0: ',nilai[0]);  writeln('nilai 6: ',nilai[6]);  writeln('nilai 9: ',nilai[9]);   readln; end.
Pada saat variabel 'nilai' dideklarasikan sebagai array, kita belum mengetahui berapa jumlah element array tersebut. Barulah di dalam kode program, fungsi setlength(nilai,10) akan menetapkan bahwa array 'nilai' akan berisi 10 element. Perhitungan 10 element ini dimulai dari index 0 hingga 9.
Kalau jumlah element array tetap ditulis, dimana letak dinamisnya?
Di dalam pascal, jumlah element suatu array memang harus ditulis, tapi dalam array dinamis, jumlah element ini ditentukan di dalam kode program utama, bukan pada saat di deklarasikan.
Oleh karena itu nantinya kita bisa menentukan jumlah element array berdasarkan kondisi tertentu (menggunakan struktur logika IF), misalnya jika syarat terpenuhi, set jumlah element 1000, jika tidak set jumlah element array menjadi 10.
Untuk array 2 dimensi, kita tinggal men-set 2 buah batasan element array, seperti contoh berikut:
program tipe_array; uses crt; var  nilai: array of array of integer; begin  clrscr;  setlength(nilai,4,4);   nilai[0,0]:= 34;  nilai[2,3]:= 99;  nilai[3,0]:= 15;   writeln('nilai [0,0]: ',nilai[0,0]);  writeln('nilai [2,3]: ',nilai[2,3]);  writeln('nilai [3,0]: ',nilai[3,0]);   readln; end.
Perhatikan cara penulisan variabel nilai. Kita membuatnya sebagai array of array of integer, yang berarti ini adalah array 2 dimensi dengan tipe integer. Untuk men-set batasan jumlah element array, saya menggunakan fungsi setlength(nilai,4,4). Fungsi ini akan membuat variabel 'nilai' berisi 25 element (hasil dari 5*5 = 25).
Dalam tutorial kali ini kita telah melihat perbedaan antara array tetap (fixed array) dengan array dinamis (dynamic array). Pembahasan tentang array masih belum selesai :)Â Pada tutorial berikutnya saya akan membahas cara membuat array dari tipe data bentukan pascal.
thx banget materinya ya
Mas, cuma mau mastiin aja di paragraf paling akhir ada kalimat "Fungsi ini akan membuat variabel 'nilai' berisi 25 element (hasil dari 5*5 = 25)." Yang bener 5*5=25 atau 4*4=16 ?
Yup benar mas, 25 element. Karena array pascal (dan hampir semua bahasa pemrograman lain), dimulai dari element [0,0]. Jadi angkanya ada lima: 0, 1, 2, 3, 4 :)
Bukannya angkanya tiga ya mas : 0, 1, 2, 3
empat*
Contoh lain, kode program:
kata: array[0..2,0..2] of string[20];
kenapa disebut sebagai 9 element? padahal hanya ada 6 element kan bro?
itu kan [0,1,2] , [0,1,2] , 3X3
karena tiap element memiliki pasangan, (0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)
Terimakasih sudah bantu jawab gan :)
oh iya saya baru paham 3×3
mas mau tanya, pas saya mau run mucul pesan 'exitedcode = 201' itu kenapa ya mas? padahal pas dicompile bisa
Runtime error 201 adalah "range check error". Artinya kode program yang agan tulis ada yang melebih batas maksimalnya. Contohnya seperti nilai angka yang terlalu besar dan melebihi integer, atau menginput data melebihi jumlah element array yang sudah dibuat.
ok terimakasih gan atas jawabannnya
Tapi mas saya buat setlength(nilai,11),truss saya masukkin nilai[11]:=3,gak bisa diRUN,malah ad tulisan exitcode 201,itu ngapa ya mas?????????????padahal elememtnya masih dalam jangkauan.
Karna indexnya cuma 0 sampe 10
Mas, mau nanya nih.
Bisa gak dalam satu array terdapat tipe data lain di antara elemen – elemen tersebut.
misal,
===================================================================================
var
contoh:array[0..5] of string;
begin
contoh[0]:='sembarang';
contoh[1]:='aja';
contoh[2]:=3; //<—- ini maunya integer .
.
.
.
end.
——————————————————————————————————————————–
Trus satu lagi mas, kok aku gak muncul apa – apa yah waktu perintah 'writeln(contoh[4]);', di tutorial sebelumnya disebutkan yang bakalan muncul '0' kalo belum diberi nilai.
Di dalam pascal, sebuah array hanya bisa diisi dengan 1 tipe saja gan, jadi tidak bisa dicampur seperti itu. Ini berbeda dengan bahasa pemrograman lain yang lebih fleksibel seperti PHP atau JavaScript.
Mengenai g muncul apa2, itu karena tipe data array dibuat sebagai string, dimana nilai defaultnya adalah string kosong (tidak muncul apa2). Nilai 0 baru tampil kalau arraynya di set sebagai integer.
Oh iya, satu lagi mas. Kalau dynamic array trus tiga dimensi berarti diubah jadi
'array of array of array of' gitu ya??? atau saat setlengthnya ditambahin jadi setlength(nilai,4,4,4)??
terima kasih untuk jawabannya mas.
nice post.
Betul gan, seperti itu penulisannya untuk array 3 dimensi. Dan untuk setlength tetap harus ditulis (harus keduanya):
var
nilai: array of array of array of integer;
begin
clrscr;
setlength(nilai,4,4,4);
Oh, gitu yah. Oke mas. Thanks jawabannya.
begin
clrscr;
setlength(nilai,4,4);
nilai[0,0]:= 34;
nilai[2,3]:= 69;
nilai[4,0]:= 88;
writeln('nilai [0,0]: ',nilai[0,0]);
writeln('nilai [2,3]: ',nilai[2,3]);
writeln('nilai [4,0]: ',nilai[4,0]);
Pas di bagian nilai[4,0] kok error ya (exitcode). di jelaskan bahwa di dalam index hitungan dari 0. berarti 4 kan 5, tapi kenapa error ya. CMIIW
dicoba sebaliknya, nilainya [4,0] di balik [0,4] juga exitcode. kenapa ya?
Iya gan kayaknya kalau masukin setlength [2,1] angka 2 sama 1 nya jadi exitcode..cuman bisa 0,0, 1,0.. :)
kan dari 0 gan jadinya cuma sampe 3 aja kalo setlengthnya 4,4
sudah buat array of array di deklarasi arraynya gan ?kan ini dua dimensi
Mas saya mau buat program array 2 dimensi dengan output sbb
X O X O X
O X O X O
X O X O X
O X O X O
X O X O X
Ini buatnya gimana y? mohon dibantu buat tugas.
thx
program XOXO;
uses crt;
var
i,j,b,k : integer;
begin
readln (b,k);
for i := 1 to b do
begin
for j := 1 to k do
begin
if (i mod 2 <> 0) then
begin
if (j mod 2 <> 0) then
begin
write ('X');
end
else
begin
write ('O');
end;
end
else
begin
if (j mod 2 = 0) then
begin
write ('X');
end
else
begin
write ('O');
end;
end;
end;
writeln;
end;
readln;
end.
Ini menurut saya (hampir 3 tahun yang lalu, tetapi semoga bermanfaat)
Wahh… Terimakasih untuk tutorialnya, min. Sangat bermanfaat!
program tipe_array;
uses crt;
var
nilai: array of integer;
begin
clrscr;
setlength(nilai,10);
nilai[0]:= 1;
nilai[6]:= 2;
nilai[17]:= 4;
writeln('nilai 0: ',nilai[0]);
writeln('nilai 6: ',nilai[6]);
writeln('nilai 9: ',nilai[9]);
writeln('nilai 17: ',nilai[17]);
readln;
end.
//ini yang aneh array di set 10 tapi ketika diisi array ke-17 tetap keluar hasinya di run
Barusan saya test pakai FreePascal 3.0.4, kode yang dilampirkan ini hasilnya error karena nilai[17] berada di luar jangkauan.
Mau nanya untuk pemakaian perintah perulangan pada saat ketika apa yaa ? Dan dgn cth kode programnya, terimakasih :)