Z.bab 6
Z.bab 6
ARRAY (LARIK)
A. Pengertian
Array atau larik adalah tipe data terstruktur yang terdiri dari sejumlah komponen-
komponen yang mempunyai tipe sama. Array sering juga disebut dengan sekumpulan
kotak “variabel” yang dapat menyimpan sekumpulan elemen bertipe sama secara
berurutan (sequential). Komponen-komponen tersebut disebut sebagai komponen tipe
yang mempunyai jumlah tetap. Array dapat juga dikatakan sebagai suatu tipe data
terstruktur yang mempunyai komponen dalam jumlah yang tetap, dimana setiap
komponen mempunyai tipe data yang sama. Posisi masing-masing komponen dalam
array dinyatakan dengan nomor indeks.
Banyaknya komponen dalam array ditunjukkan oleh suatu indeks, dimana tiap
komponen array dapat diakses dengan menunjukkan nilai indexnya atau subskript. Array
dapat bertipe data sederhana seperti byte, word, integer, real, bolean, char, string dan
tipe data skalar atau subrange. Tipe indeks ini dapat berbentuk satu dimensi, dua dimensi
hingga n dimensi. Array mempunyai ciri-ciri sebagai berikut:
1. Setiap elemen data array diakses melalui indeksnya
2. Indek array harus suatu tipe data yang mempunyai keterurutan , maksudnya adalah
indeks data mempunyai suksesor dan predecessor, karena setiap elemen data
disimpan secara berurutan. Contoh bertipe data yang mempunyai sifat keterurutan
tersebut adalah integer, charakter atau tipe data enumerasi.
3. Jika indeks berupa bilangan integer, maka keterurutan indeks sesuai dengan urutan
bilangan integer yaitu (0,1,2,3,4,5,6,..)
4. Jika indeks karakter, maka keterurutan indeks sesuai dengan urutan karakter
(a,b,c,d,e ….).
Contoh1
Type
x:array[1..11] of integer;
Var
Gaji : array[1..10] of Real;
165
Contoh 2 :
Var
Vektor : array[1..50] of Integer;
Pada contoh 2, array dengan nama Vektor telah dideklarasikan dengan tipe
integer, dengan jumlah elemen maksimum 50, nilai dari elemen array Contoh 2 di atas
harus bertipe integer.
Bagi para pemrogram, efisiensi dalam menulis program merupakan hal utama
yang harus diperhatikan, baik itu dalam hal kecepatan jalannya program, memori yang
digunakan, banyak baris kode yang dituliskan dan juga ketepatan algoritma yang
digunakan. Salah satu komponen yang harus dikuasai untuk memperoleh program yang
baik adalah pengetahuan tentang array. Sebagai contoh, misalkan terdapat kumpulan
data berbentuk array, katakanlah A yang memiliki 10 buah elemen nilai yang bertipe
integer, dapat dipresentasikan seperti Gambar 35 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
Setiap elemen array di atas menyimpan nilai bertipe integer dan akan menempati
alamat memori yang berbeda, hal ini akan menyebabkan array tersebut memiliki ukuran
40 byte, yang berasal dari 10 x 4. Nilai 10 menunjukkan banyaknya elemen array
sedangkan nilai 4 merupakan ukuran dari tipe data integer (dalam 32 bit).
166
nama_array = ARRAY[bawah..atas] of tipe_data;
Var
Variabel_array : nama_array;
atau dengan menggunakan statemen var dapat ditulis sebagai berikut:
Var
Variabel_array : ARRAY[bawah..atas] of tipe_data;
Deklarasi di atas mempunyai pengertian bawah dan atas menyatakan batas untuk
array, tipe_data adalah merupakan tipe variabel yang dipunyai array (misalnya
Integer, char, real, dan sebagainya. Bentuk lain juga dapat ditulis sebagai berikut:
Type
Indeks = 1..50;
namaarray = array [indeks] of tipedata ;
Var
namavariabel : namaarray ;
167
A A A A A A A A A . . A
1 2 3 4 5 6 7 8 9 . . 50
Begin
…
…
End.
168
Jika indeks dari larik tidak sampai dengan 255, maka indeis dari array ini dapat
dideklarasikan dengan tipe byte. Caranya mendeklarasinya adalah sebagai berikut:
Var
X : array [0..255] of real ;
Karena nilai 0 sampai 255 merupakan nilai subrange byte, maka deklarasi ini dapat
ditulis :
Var
X : array [byte] of real ;
169
Jumlah : array [(Jan, Peb, Mar)] of integer ;
Begin
Jumlah[Jan] : = 125 ;
Jumlah{Peb] : = 75 ;
Jumlah[Mar] : = 18 ;
Writeln ( ‘Jumlah untuk bulan maret = ‘, Jumlah{Mar});
End.
Output dari program di atas adalah :
Jumlah untuk bulan Maret = 18
Contoh di atas dapat ditulis menjadi :
Type
Bulan = (Jan, Peb, Mar) ;
Var
Jumlah : array [Bulan] of integer ;
170
Nilai Konstanta larik ke 2 = 25
Nilai Konstanta larik ke 3 = 375
Nilai Konstanta larik ke 4 = 5
Nilai Konstanta larik ke 5 = 2
Contoh 2
171
Program Contoh_Array;
uses crt;
var
a : array[1..10] of byte;{maksimum jumlah elemen=10}
BEGIN
a[1]:=10;
a[2]:=15;
a[3]:=a[1]+a[2];
writeln(a[1]);
writeln(a[2]);
writeln(a[3]);
END.
Contoh 3 merupakan contoh lain untuk mengakses nilai ke dalam suatu komponen
array.
Program Contoh_Array_Input;
Uses Crt;
Var Bilangan : array[1..50] of Integer;
Begin
ClrScr;
Bilangan[1]:=3;
Bilangan[2]:=29;
Bilangan[3]:=30;
Bilangan[4]:=31;
Bilangan[5]:=23;
Writeln('nilai varibel bilangan ke 3 =',Bilangan[3]);
Readln;
End.
Array juga dapat dideklarasikan bersama dengan tipe yang beragam seperti
contoh 4. Contoh 4 merupakan array yang dideklarasikan bersama dengan tipe yang
beragam seperti contoh dibawah ini :
172
Program Contoh_Deklarasi_Array_Beragam;
Uses Crt;
Var
NIM : array[1..20] of string[10];
Nama : array[1..20] of string[25];
Nilai : array[1..20] of real;
Umur : array[1..20] of byte;
banyak,i : integer;
BEGIN
ClrScr;
Write('Isi berapa data array yang diperlukan :');Readln(banyak);
For i := 1 to banyak Do
Begin
Write('NIM =');Readln(NIM[i]);
Write('Nama =');readln(Nama[i]);
Write('Nilai=');readln(Nilai[i]);
Write('Umur =');readln(Umur[i]);
End;
{cetak varibel array}
Writeln('NIM NAMA NILAI UMUR ');
For i:= 1 to banyak Do
Begin
Writeln(Nim[i]:10,Nama[i]:25,Nilai[i]:3:2,' ',Umur[i]:3);
End;
Readln;
End.
Untuk deklarasi array dapat digunakan beberapa cara seperti berikut ini :
Type
Angka = String[20];
173
Var
Nama : Array [1..50] of Angka;
Begin
.
.
End.
Deklarasi tipe indeks subrange integer indeks pada array dapat tipe skalar atau
subrange, tetapi tidak bisa real.
Contoh:
Var
Nilai : Array[1..10] of Integer;
pada contoh ini array nilai mempunyai 10 buah elemen yaitu dari 1 sampai 10. Array
tersebut dapat dideklarasikan dengan type seperti berikut ini :
Type
Skala = 1..10;
Var
Nilai : Array [skala] of Integer;
atau :
Type
Skala = 1..10;
Y = Array[skala] of Integer;
Var
Nilai : Y;
atau :
Type
Y = Array[1..10] of Integer;
Var
Nilai : Y;
atau :
Const
Atas =1;
Bawah = 5;
type
174
Y = Array[Atas..Bawah] of Integer;
Var
Nilai : Y;
Program Constanta_Array_String;
Uses Crt;
Type
176
A = Array [1..5] of String;
Const
Nama : A = ('basic','pascal','cobol','paradox','dbase');
Var i : Integer;
Begin
For i:= 1 to 5 Do
Writeln('Nilai Array ke-',i:2,'= ',Nama[i]);
readln;
End.
String dalam pascal juga merupakan array dari elemen- elemen karakter. Caranya
mendeklarasinya dalam bentuk program sederhana adalah sebagai berikut;
Program String_Adalah_Array_Tipe_Char;
Uses Crt;
Var
Nama : string;
i : Integer;
Begin
Nama:='Turbo Pascal';
For i:= 1 to Length(nama) Do
Writeln('Elemen ',i,' dari ',Nama,'= ',Nama[i]);
Readln;
End.
Berikut ini akan diberikan contoh program bilangan prima dengan menggunakan
bantuan array sebagai untuk memperjelas bagaimana penting tipe data terstruktur
dalam pemograman dengan menggunakan tipe data berindeks.
Program Mencari_Bilangan_Prima_Dengan_Array;
Uses Crt;
Var
177
Prima : Array[1..100] of Integer;
i,j : Integer;
bil : Integer;
Begin
ClrScr;
For i := 2 to 100 Do
Begin
Prima[i]:=i;
For j:= 2 to i-1 Do
Begin
bil := (i mod j); {* i dibagi j dicek apakah 0*}
If bil = 0 then Prima[i]:=0; {*jika habis dibagi,berarti bkn prima*}
End;
If Prima[i]<> 0 Then
Write(Prima[i],' '); {*cetak array yg prima*}
End;
Readln;
End.
Berikut ini adalah sebuah program pengurutan atau shorting yang merupakan
proses untuk menyusun kembali kumpulan entri-entri data yang telah dimasukkan
dengan suatu aturan tertentu. Secara umum ada 2 macam pengurutan yaitu pengurutan
secara menaik (ascending) dan pengurutan secara menurun (descending). Salah satu
metodanya adalah metode gelembung (buble sort). Metode penukaran (Exchange
Sort) adalah metoda yang berdasarkan kepada penukaran elemen untuk mencapai
keadaan urut yang diinginkan. Algoritma mengurutan data menggunakan metoda
gelembung adalah sebagai berikut:
178
- langkah 2 : Kerjakan langkah 3 untuk j = 1 sampai N- i
- langkah 3 : Tes apakah A[j] > A[j +1] ? Jika ya, tukarkan nilai kedua elemen
ini
- langkah 4 : Selesai
Algoritma di atas dapat diterjemahkan dalam bentuk program dalam bahasa Turbo
Pascal adalah sebagai berikut:
Program Sorting_data;
Uses Wincrt;
const N=10;
type
Vektor = Array [1..N] of integer;
Var
bil : vektor;
cad,i,j : integer;
Procedure Sorting( bil : vektor);
Begin
for i := 1 to n do
begin
for j := i+1 to n do
begin
if (bil[J] < bil[I] )then
begin
cad := bil[J];
bil[J] := bil[I];
bil[I] := cad;
end;
end;
end;
end;
BEGIN
179
writeln('masukkan sepuluh bilangan integer.');
for i:= 1 to 10 do
begin
write('masullan bila ke ',i); readln(bil[i]);
end;
writeln('Isi dari sebelum disorting array ini adalah');
for i := 1 to 10 do
begin
writeln('bil[', i:2,'] adalah ',bil[i] );
sorting(bil);
writeln('Isi dari setelah disorting array ini adalah');
for i := 1 to 10 do
begin
writeln('bil[', i:2,'] adalah ',bil[i] );
end;
END.
C. Array Multidimensi
Array dalam pascal dapat berdimensi lebih dari satu yang disebut dengan array
dimensi banyak (multidimensional array). Mengingat keterbatasan ruang dan
kebutuhan dalam pemograman secara umum, berikut ini akan dibahas array 2 dimensi
saja. Array 2 dimensi dapat mewakili suatu bentuk tabel atau matrik, yaitu indeks
pertama menunjukkan baris dan indeks ke dua menunjukkan kolom dari tabel atau
matrik. Array multidimensi lainya dapat dikembangkan dari pengertian dan cara
mengoperasikan array dua dimensi. Array dua dimensi terdiri atas baris (row) dan
kolom (column). Indeks pertama menyatakan baris dan indeks kedua menyatakan
kolom. Bentuk umum deklarasi array dua dimensi adalah sebagai berikut:
Nama_larik = array [tipe index1] of array [tipe index2] of tipe larik
atau
Nama_larik = array [tipe index1, tipe index2] of tipe larik
180
Ada beberapa sintaks dalam mendeklarasikan array dua dimensi antara lain :
Type
nama_array =ARRAY[bawah..atas, bawah..atas] of tipe_data;
var
variabel_array : nama_array;
atau dengan menggunakan statemen Var
var
variabel_array : ARRAY[bawah..atas, bawah..atas] of tipe_data;
Contoh penggunaan array dua dimensi untuk pemograman operasi aritmatika untuk
matrik adalah seperti potongan program berikut:
Tabel : Array[1..3] of Array[1..2] of Byte;
atau :
Type
Matrik = Array[1..3,1..2] of Byte;
Var
Tabel : Matrik;
atau
Type
Baris = 1..3;
Kolom = 1..2;
Matrik = Array[Baris,Kolom] of Byte;
Var
Tabel : Matrik;
atau
Type
Baris = 1..3;
Kolom=1..2;
Matrik= Array[Baris] of Array[Kolom] of Byte;
Var
Tabel : Matrik;
181
Contoh program berikut merupakan cara mengakses elemen secara langsung pada
saat pembuatan program.:
Var
Tabel : array [1..3, 1..2] of byte ;
I, J : byte ;
Begin
Tabel[1,1] : = 5 ;
Tabel[1,2] : = 25 ;
Tabel[2,1] : = 200 ;
Tabel[2,2] : = 22 ;
Tabel[3,1] : = 75 ;
Tabel[3,2] : = 50 ;
For I : = 1 to 3 do
Begin
For J : = 1 to 2 do
Write ( table [I,J] : 10 ) ;
Writeln ;
End ;
End.
D. Parameter Array
Array dapat digunakan sebagai parameter yang dikirimkan baik secara nilai
atau secara acuan ke prosedur atau ke fungsi. Prosedur yang menggunakan parameter
berupa array harus dideklarasikan di dalam judul prosedur dengan menyebutkan
parameternya bertipe aray. Caranya mendeklarasinya adalah sebagai berikut;
Type
Matriks = array [1..50, 1..50] of real ;
Var
I, J, K : byte ;
Procedure inverse (Var X : matriks ; N : byte ) ;
182
….
….
Begin
….
…
End.
Statemen array [1..50,1..50] berarti bahwa suatu pernyataan membentuk suatu array
real dengan nama matriks 50 x 50, yang berarti variabel matrik memiliki 2.500
elemen dengan tipe data real.
Untuk mengakses elemen setiap elemen matrik diperlukan suatu prosedur yang
menggandung parameter dengan mempergunakan struktur pengulangan for ...do
tersarang seperti diagram alir Gambar 36 berikut:
Baca Tulis
Matriks Matriks
i..jb i..jb
i..jk i..jk
Baca Tulis
mtr[I,j] mtr[I,j]
End End
(a) (b)
Diagram alir pada Gambar 36a di atas merupakan diagram alir membaca elemen
matriks dari papan ketik yang dapat diterjemahkan ke dalam program dalam Turbo
Pascal sebagai berikut:
183
Begin
For I:=1 To M Do
Begin
For J:=1 To N Do
Begin
Write(‘A[‘,i,’ ,‘,j,’]’); Readln(A[I,J]);
End;
Readln ; {Ini Memungkinkan Kita Menulis Tiap Baris Elemen}
End;
Diagram alir pada Gambar 30b di atas merupakan diagram alir menampilkan
elemen yang dapat diterjemahkan ke dalam program dalam Turbo Pascal sebagai
berikut.
Procedure TULIS_MATRIK(AKU:matriks; m,n:integer);
Var
I,J: Integer; {Faktor Pengulang}
Begin
For I:=1 To M Do
Begin
For J:=1 To N Do
Begin
Write(A[I,J]:6);
End;
Writeln ; { Untuk Menulis Elemen Dalam Baris Dan Kolom }
End;
End;
Untuk meningkatan pemahaman tentang aplikasi tipe data array berikut ini
diberikan diagram alir dan listing program penggunaan array dua dimensi dalam
aplikasi penjumlahan matrik seperti Gambar 37 .
184
Jumlah
Matrks
1 2 3
Baca
Jb,Jk
Matriks-1
jb,jk
Matriks-2 Matriks-1
Jb,Jk jb,jk
Matriks-1
M=1..jb
jb,jk
M=1..jb Matriks-1
jb,jk
Z[m,n] =x[m,n] +
y[m,n]
1 2 3
Procedure Penjumlahan_Matrik;
Var
Matrik1,Matrik2,
Hasil : Array[1..3,1..2] of Integer;
i,j : Integer;
Begin
For i := 1 to 3 Do
Begin
For j:= 1 to 2 Do
Begin
Hasil[i,j]:=Matrik1[i,j]+Matrik2[i,j];
185
End;
End;
End;
MatKali
jb,jkx,jky,x,y,z Mulai
Baca
m = 1. .jkx
jb, jky, jkx
z[m,n] = 0 Baca-1
jkx,jky,y
k = 1. . jkx MatKali
jb,jkx,jky,x,y,z
Tulis-2
jb,jky,y
Tulis-1
jb,jky,z
END END
188
matrik=array[1..50,1..50] of real;
var
m,n, p, q: integer; {dimensi dari matrik}
A,B,C: matrik; {matrik A, B sebagai input, C sebagai hasil}
{ Membaca Elemen Matrik}
Procedure bacamatrik(var A:matrik; m,n:integer);
Var
i,j: integer; {faktor pengulang}
begin
for i:=1 to m do
begin
for j:=1 to n do
read(A[i,j]);
readln;
end;
end;
Procedure tulismatrik (A:matrik; m,n:integer);
Var
i,j: integer; {faktor pengulang}
begin
for i:=1 to m do
begin
writeln;
for j:=1 to n do
write(A[i,j]:6:2);
end;
writeln;
end;
Procedure check_matrik(A,B,C:matrik; m,n,p,q:integer);
Var i,j :integer;
189
Begin
if (m=p) and (n=q) then
begin
for i:=1 to m do
begin
for j:=1 to n do
begin
C[m,n]=A[m,n]+B[m,n])
end;
end;
end
else
writeln('Dimensi Matrik Tidak Cocok')
end;
Procedure perkalian_matrik(A,B,C:matrik; m,n,p,q:integer);
Var i,j, k :integer;
C1: matrik;
Begin
if (n=p) then
begin
for i:=1 to m do
begin
for j:=1 to p do
begin
C1[i,j]:=0;
for k:=1 to n do
C1[i,j]:=C1[i,j]+A[i,k]*B[k,j];
end;
end;
n:=q;
190
for i:=1 to m do
for j:=1 to n do
C[i,j]:=C1[i,j];
end
else
writeln('Dimensi Matrik Tidak Cocok')
end;
procedure Transpose(A,B:matrik; m,n,p,q:integer);
var i,j:integer;
begin
for i:=1 to n do
begin
for j:=1 to m do
begin
B[m,n]=A[n,m]
end;
end;
end;
Program Operasi_Contoh2;
Uses Wincrt;
Var
NamaSiswa : Array[1..10] Of String[30];
192
i : integer;
Begin
for i := 1 to 5 do
Begin
Write('nama siswa ke ',i); Readln(namasiswa[i]);
end;
Writeln(Namasiswa[1]);
Writeln(Namasiswa[7]);
Writeln(Namasiswa[5]);
End.
Apabila program ini kita running dengan memasukan nama Badu, Mince,
Roselina, Fajar, Suci, maka akan menghasilkan Badu dan Suci. Kenapa demikian ?,
Pelajarilah contoh 2 dengan baik. Tentu anda mendapatkan jawabannya. Pada Turbo
Pascal juga terdapat beberapa fungsi bawaan Pascal yang dapat digunakan untuk oprasi
string. Adapun fungsi pembantu tersebut antara laian adalah :
1. Length
Length berfungsi untuk mendapatkan panjang string yang telah didefenisikan,
dengan sintaks pemakaiannya adalah sebagai berikut:
Syntax : length(s)
Contoh : : n:=length(s);
Misalnya s:='Apa kabar ?'; n akan berisi 11.
2. Copy, mendapatkan bagian dari suatu string.
Syntax : copy(s,from,howmuch)
Contoh : : st:=copy(s,5,5);
Menggambil 5 character mulai posisi ke 5
Misalnya s:='Apa kabar ?'; st akan berisi 'kabar'.
3. Pos
Pos berfungsi untuk mengambil posisi substring dari suatu string yang telah
didefenisikan, dengan sintaks pemakaiannya adalah sebagai berikut:
Syntax : Pos(substr,s)
193
Contoh : : n:=pos('kabar','Apa kabar ?'); { n:=5; }
Jika substring tidak ditemukan, maka akan mengembalikan 0.
4. Val
Val berfungsi untuk mengkonversi tipe data string menjadi tipe data numeric,
dengan sintaks pemakaiannya adalah sebagai berikut:
Syntax : val(strvar,numvar,errorcode)
strvar adalah suatu variabel string yang akan di konversi numvar adalah variabel
integer atau real. Errorcode adalah variabel integer yang akan berisi nilai
kesalahan, jika berisi 0 sukses. Contoh : :
Program String_Contoh;
Uses Wincrt;
Var
s : string;
e : integer;
r : real;
Begin
Write('Masukan sebuah bilangan : '); readln(s);
val(s,r,e);
if e<>0 then writeln('Kesalahan pada posisi : ',e)
else
writeln('Hasil konversinya adalah : ',r:4:3);
End.
5. Str
Fungsi Str berfungsi untuk mengkonversi numerik menjadi string, dengan sintaks
pemakaiannya numvar,strvar).
Contoh :
Var
s : string;
i : integer;
BEGIN
194
write('Masukan Bilangan bulat : '); readln(i);
str(i,s);
writeln('Bilangannya adalah : ',s);
END.
Jika anda bekerja dengan type real, anda perlu melakukan pemformatan sebelum
konversi ke string.
Contoh : :
Var
s : string;
r : real;
Begin
write('Masukan Bilangan real : '); readln(r);
str(r:4:3,s);
writeln('Bilangannya adalah : ',s);
End.
6. Concat,
Concat berguna untuk mengabung dua string atau lebih, dengan sintaks :
concat(s1,s2,...,sn)
Contoh : st:=concat(s1,s2);
Jika s1 adalah 'Penta', dan s2 adalah 'COM', maka st menjadi 'PentaCOM'
Sebenarnya kita juga dapat menggunakan operator + untuk mengabung string.
Contoh : st:=s1 + s2; atau sama dengan st:=concat(s1,s2);
7. Insert berguna untuk menyisip suatu string kedalam string lain dari posisi
tertentu,denga sintaks : insert(source,target,index).
Contoh :
Var
s1, s2 : string;
Begin
s1:='not ';
195
s2:='I do love you';
insert(s1,s2,6);
writeln(s2); { I do not love you }
End.
8. Delete
Delete berguna menghapus sejumlah character dari string mulai posisi ke I,dengan
sintaks delete(s,i,n);
Contoh:
Var
s : string;
Begin
s:='I am not responsible for that !';
delete(s,6,3);
writeln(s); { I am responsible for that }
End.
Sebagai program tambahan, perhatikan program berikut ini
Program String_tambahan;
Uses WinCrt;
var nama : string;
urutan, posisi: integer;
Begin
nama:='Dijas Keren';
writeln('Yang ini delete');
for urutan:=1 to 11 do
Begin
posisi:= 13 - urutan;
delete(nama, posisi, 1);
writeln(nama);
End;
writeln;
196
nama:='DijasKeren';
writeln('Yang ini insert');
writeln('Sebelum di Insert : ', nama);
insert('-', nama, 6);
writeln('Setelah di Insert : ', nama);
readln;
End.
Jadi isi penggunaan delete itu maksudnya menghapus (string, posisinya, jumlah
yang di hapus). Sedangkan insert berguna untuk menyisip (apa yang mau
disisipkan, string, posisinya).
9. Upcase.
Upcase berfungsi untuk merubah huruf kecil menjadi huruf kapital untuk
mudahnya perhatikan contoh berikut ini:
Program convert_upper;
USES Wincrt;
Var
text : string;
i : integer;
BEGIN
Clrscr;
writeln ('Input some text in all lowercase letters'); readln (text);
for i := 1 to length(text) do
begin
text[i] := upcase(text[i]);
end;
writeln ('The uppercase text is: ');
writeln (' ', text);
readln;
END.
197
Berikut ini diberikan tambahan program pemakaian array untuk melewatkan
parameter nilai dan parameter acuan. Contoh Program :
Program Contoh_Pengiriman_Parameter_Array_Di_Procedure;
Uses Crt;
Const Garis ='---------------------------------------------------';
Type
Vektor = Array[1..10] of String[15];
Bulat = Array[1..10] of Integer;
Mutu = Array[1..10] of Char;
Var
i, Banyak : Integer;
Procedure Proses(Nama:Vektor ; Nilai:Bulat);
Var
Keterangan : String;
Huruf : Char;
Begin
Writeln(Garis);
Writeln('Nama Nilai Huruf Keterangan');
Writeln(Garis);
For i := 1 to Banyak Do
Begin
If Nilai[i] > 90 Then
Begin
Huruf :='A';
Keterangan :='Istimewa';
End;
If (Nilai[i]<90) And (Nilai[i]>70) Then
Begin
Mutu:='B';
Keterangan :='Memuaskan';
End;
If (Nilai[i]<70) And (Nilai[i]>60) Then
Begin
Mutu:='C';
Keterangan :='Cukup';
End;
If (Nilai[i]<60) And (Nilai[i]>45) Then
Begin
Mutu:='D';
Keterangan :='Kurang';
End;
If Nilai[i]< 45 Then
Begin
198
Mutu:='E';
Keterangan :='Sangat kurang';
End;
Writeln(Nama[i]:15,' ',Nilai[i]:4,' ',Mutu,' ',Keterangan:15);
End;
Writeln(Garis);
End;
Procedure Masuk_Data;
Var
Nama : Vektor;
Nilai : Bulat;
Begin
Write('Banyak data =');Readln(Banyak);
For i:= 1 to Banyak Do
Begin
ClrScr;
Writeln('Data ke - ',i);
Write('Nama ='); readln(Nama[i]);
Write('Nilai =');readln(Nilai[i]);
End;
End; {modul Utama}
Begin
Masuk_Data;
Proses(Nama,Nilai);
Readln;
End.
G. Soal Latihan 6
199
0 0 3 4
0 0 0 4
7. Buatlah perintah pokok yang digunakan untuk pengisian matriks A sebagai berikut :
1 0 0 0
2 2 0 0
3 3 3 0
4 4 4 4
8. Diberikan suatu Array X[1..4] dan Y[1..4], dengan nilai X=4,6,8,10 dan Y=2,3,4,5.
Suatu Algoritma :
Hasil = 0
For i = 1 to n
Hasil= hasil+X[i]/Y[i]
End_i
Bila Algoritma ( dengan n=4 ) dikerjakan, maka nilai dari hasil adalah :
9. Buat algoritma dan program untuk menjumlahkan dua matriks A dan matriks B,
dimana hasilnya disimpan pada array C
10. Menuliskan isi array A,B dan C, dengan menggunakan sebanyak mungkin program
pembantu (subprogram).
11. Buatlah algoritma dan program yang dapat digunakan untuk mengurutkan dari harga
terkecil sampai dengan nilai terbesar, program dibuat dalam bentuk subprogram yang
terdiri dari
Procedure yang terdiri dari:
a. Procedure Masukkan_data
b. Procedure Mengurutkan_data
c. Procedure Penampilkan_hasil
12. Apakahan dimaksud dengan string ?
13. Jelaskan hubungan antara string dan character pada pascal !
14. Buat program animasi teks, dengan menampilan kalimat pada tengah-tengah layar
dan yang sebelumnya bergerak dari kiri ke kanan dan kanan ke kiri.
15. Buat program animasi teks, dengan menampilan kalimat pada tengah-tengah layar
dengan huruf muncul satu per satu.
200
16. Palindrom adalah sebuah kalimat yang jika dibaca dari belakang sama dengan dibaca
dari depan. Contoh “murah ada harum”, atau “ kasur ini rusak”, Rencanglah
program untuk mengetahui apakah sebuah kalimat merupakan palindrome atau tidak
17. Buatlah program untuk menentukan apakah kata yang kita inginkan terdapat dalam
sebuah kalimat yang ditulis.
201