ARRAY
Array : variabel berindeks (punya beberapa tempat, tergantung deklarasinya) Variabel : mempunyai hanya 1 tempat
Deklarasi Array
arrInt : array [1..10] of integer; Cara pengaksesan elemen array
arrInt[1] := 2;
artinya mengassign 2 ke array arrInt yang indeksnya 1. x := arrInt[‘C’];
artinya mengassign nilai array yang berindex ‘c’ ke variabel x. program cobaarray;
var
tab : array [1..5] of integer; i : integer; begin tab[1] := 5; tab[2] := 4; tab[3] := 3; tab[4] := 2; tab[5] := 1; write('Masukkan integer[1..5] '); read (i);
if (i > 0) and (i <= 5) then writeln ('Isi tab[', i, '] : ', tab[i]) else writeln ('masukan tidak valid');
end.
program conditional2; var
arrHari : array [1..7] of string;
idx : integer; begin arrHari[1] := ‘Minggu’; arrHari[2] := ‘Senin’; arrHari[3] := ‘Selasa’; arrHari[4] := ‘Rabu’; arrHari[5] := ‘Kamis’; arrHari[6] := ‘Jumat’; arrHari[7] := ‘Sabtu’; writeln(‘Masukkan indeks 1..7 : ’); readln(idx);
writeln (‘Hari ini hari ’ + arrHari[idx]); end.
Var
Batas : real;
I,J,Jumlah : word;
Cari : array[1..100] of char; Begin Batas : sqrt(100); Jumlah :=0; For I:= 2 to 100 do Begin If cari[i] <>’*’ then Begin Write(I:5); Jumlah :=jumlah +1; If I < batas then Begin J:=I; While J <100 do Begin J:=J+I; Cari[J] := ‘*’; End; End; End; End; Writeln;
Writeln (‘ditemukan sejumlah ‘,jumlah); End.
Array Dimensi 2
Æ mewakili suatu table atau matrik yaitu indeks pertama dapat menunjukkan baris dan indeks kedua menunjukkan kolom dari table/matrik.
Bentuk deklarasi
Nama-larik=array[tipe-indeks1] of array[tipe indeks2] of tipe larik Atau
Nama-larik=array[tipe-indeks1, tipe indeks2] of tipe larik Contoh :
Table : array[1..3,1..2] of byte; I,J : byte; Begin Tabel[1,1] : = 15; Tabel[1,2] : = 35; Tabel[2,1] : = 25; Tabel[2,2] : = 75; Tabel[3,1] : = 65; Tabel[3,2] : = 95; For I := 1 to 3 Do Begin For J := 1 to 2 Do Write (Tabel[I,J]:6); Writeln; End; End. Alternatif Deklarasi Type X = array [1..3,1..2] of byte; Var Tabel : x; Latihan :
Buatlah program untuk menampilkan hasil penjualan barang-barang kebutuhan pokok (beras, gandum, kedelai, terigu) untuk 3 tahun anggaran (
2000,2001,2002)
Contoh 2 Perkalian Matrik Uses Crt;
Type
Larik = array[1..25,1..25] of real; Var I,J,K : byte; M,N,L :byte; A,B,C : larik; Begin ClrScr;
Write (‘Jumlah Baris Matrik 1’); readln(M);
Write (‘Jumlah kolom Matrik 1/Baris Matrik 2’); readln(N); Write (‘Jumlah Kolom Matrik 2’); readln(L);
Writeln;
{input isi matrik 1} For I:= 1 to M Do Begin
Begin
Write (‘Nilai [‘,I,’,’,J, ‘] ? ‘); readln (A[I,J]); End;
End;
{input isi matrik 2} For I:= 1 to N Do Begin
For J:= 1 to L Do Begin
Write (‘Nilai [‘,I,’,’,J, ‘] ? ‘); readln (B[I,J]); End; End; {perkalian Matriks} For I:= 1 To M Do Begin For J:= 1 To N Do Begin C[I,J]:=0; For K :=1 To L Do C[I,J]:= C[I,J]+A[I,K]*B[K,J] ; End; End;
{Mencetak Hasil Perkalian } Clrscr;
Writeln;
For I := 1 to M Do Begin
For J := 1 To L Do Write (C[I,J] :9:2); Writeln;
End; End.
Latihan : kerjakan untuk penjumlahan Matriks RECORD
Tipe data terstruktur untuk beberapa item data yang masing-masing dapat memiliki tipe data yang berbeda. Masing-masing item data disebut field. Misal Record langganan terdiri dari field kode_langganan, nama_langganan,
telp,utang, dll. Contoh : Type Lgn = record Kode : integer; Nama : string [35]; Alamat : string [45]
Utang : real ; End;
Var
Langganan : lgn;
Cara lain deklarasi Var langganan : record Kode : integer; Nama : string [35]; Alamat : string [45] Utang : real ; End;
Memakai Tipe Data Record
Pengenal-record.pengenal-field[.pengenal-field] Pengenal record Æ langganan
Pengenal field Æ kode, nama, alamat, utang
Jika Field nama akan diisi suatu nilai misal ’JONI’ maka ditulis dengan Langganan.nama := ’JONI’; Contoh : Type Hasil = Record Jarijari :real; Keliling : real; Luas : real ; End; Var Lingkaran : Hasil; Begin
Write (’Jari-jari Lingkaran’); readln(Lingkaran.Jarijari); Lingkaran.keliling := 2*3.14*Lingkaran.Jarijari;
Lingkaran.luas := 3.14 * sqr(Lingkaran.Jarijari); Writeln (’Keliling Lingkaran ’, Lingkaran.keliling);
Writeln (’Luas Lingkaran ’, Lingkaran.luas); End. Statement WITH Æ penyederhanaan penulisan Begin With Lingkaran Do Begin
Write (’Jari-jari Lingkaran’); readln(Jarijari);
Writeln (’Keliling Lingkaran ’, keliling); End;
End.
Contoh Implementasi Banyak Record Type DataMhs = Record Nomor : integer; Nama : 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 :‘); readln (Nomor); Write (‘Nama mahasiswa :‘); readln (Nama); Write (‘IP mahasiswa :‘); readln (IP);
End; End;
For I:= 1 to JumlahMhs Do Begin
With Mahasiswa[I] Do
Writeln(Nomor :5, nama:20, IP:11:2);
End; End.
PENGURUTAN DENGAN METODE BUBBLE SORT Proses Pengurutan
• Bubble Sort adalah nama yang diberikan pada prosedur untuk mengatur sekelompok bilangan dengan urutan dari kecil ke besar.
• Untuk mengurutkan bilangan diperlukan variabel array yang digunakan untuk menampung semua bilangan yang akan diurutkan.
• Proses pengurutan dilakukan dengan membandingkan semua elemen array satu persatu.
Dalam metode bubble sort, pengurutan demulai dengan membandingkan elemen pertama untuk mendapatkan angka terbesar. Lalu angka tersebut ditempatkan pada elemen terakhir.
Bubble Sort tidak lain adalah pengulangan prosedur hingga bilangan – bilangan yang ada tersusun menurut urutan dari yang kecil ke yang besar.
Contoh Buble Sort 6 5 8 3
Putara Pertama :
Pada akhir proses pertama ini, bilangan yang terbesar menempati tempat yang sesuai.
Putaran Kedua :
Pada akhir proses kedua ini, bilangan terbesar kedua menempatkan tempat yang sesuai.
Putaran Ketiga :
Bila proses ini dilanjutkan, tidak ada pertukaran tempat lagi bagi bilangan – bilangan tersebut, sebab bilangan tersebut telah selesai disusun.
Lakukan tracing terhadap program di bawah ini, lakukan perbaikan jika ditemukan kesalahan
Program Penggunaan_Array_Untuk_Sortir_Buble_Sort; Uses Crt;
Var
nil1 : Array[1..100] of Integer; n,i,j,dum : Integer;
Begin
ClrScr;
Write('mau isi berapa data acak (integer) ='); readln(n); For i := 1 to n Do Begin Write('Data Ke ',i,':');Readln(nil1[i]); End; {* penyapuan proses} for i:= 1 to n-1 do begin for j:= i to n do begin if nil1[j]<nil1[i] then begin dum:=nil1[j]; nil1[j]:=nil1[i]; nil1[i]:=dum; end; end; 6 5 8 3 5 6 8 3 5 6 8 3 5 6 3 8 5 6 3 8 5 6 3 8 5 3 6 8 5 3 6 8 5 3 6 8 3 5 6 8 3 5 6 8 3 5 6 8
end; writeln; writeln('Hasil Sortir'); for i := 1 to n do write(nil1[i]:3); readln; end.
Perbaikan program (optimalisasi Æ pada perulangan ke- j (untuk suatu nilai i pada nilai j yang pertama) tidak perlu membandingkan dirinya sendiri
for j:=( i+1) to n do begin if nil1[j]<nil1[i] then begin { sama } end; end; Hasil Eksekusi
Æ Program ini bekerja dengan mencari nilai terkecil untuk ditempatkan pada array ke -1 untuk semua putaran dari i = 1 sampai ke n-1
I= 1 Æ nilai terkecil pertama, i=2 Æ nilai terkecil kedua, dst
Program Penggunaan_Array_Untuk_Sortir_Buble_Sort2; Uses Crt;
Var
nil1 : Array[1..100] of Integer; n,i,j,k,dum,terbesar : Integer; Begin
ClrScr;
Write('mau isi berapa data acak (integer) ='); readln(n); For i := 1 to n Do
Begin
Write('Data Ke ',i,':');Readln(nil1[i]); End;
{* penyapuan proses} for i:= 1 to n do begin
for j:= 1 to (n-1) do begin
if nil1[j] > nil1[(j+1)] then begin dum:=nil1[j]; nil1[j]:=nil1[(j+1)]; nil1[(j+1)]:=dum; end; end;
writeln('selesai sorting putaran ke',i); for k:=1 to n do write(nil1[k]:3); writeln; end; writeln; writeln('Hasil Sortir'); for i := 1 to n do write(nil1[i]:3); readln; end.
SUB PROGRAM A. Parameter Formal dan Aktual
Parameter formal adalah parameter yang terdapat pada pendeklarasian judul subprogram, baik pada fungsi maupun prosedur. Contoh :
Function Tambah ( A, B : real) : real; A dan B Æ parameter formal
Parameter aktual adalah parameter pada pemanggilan fungsi atau prosedur. Contoh : Hasil := Tambah(Bil1, Bil2);
Bil1 dan Bil2 Æ parameter aktual B. Variabel Lokal dan Global
Variabel lokal adalah variabel yang dideklarasikan di suatu fungsi atau prosedur, tetapi hanya dikenali oleh fungsi atau prosedur tersebut dan bagian pernyataan program utama tidak dapat mengakses variabel ini.
Variabel global adalah variabel yang dideklarasikan pada bagian deklarasi program utama. Baik fungsi atau prosedur dapat mengakses variabel ini.
C. Fungsi
Mempunyai sifat memberikan nilai pada saat dipanggil. Umumnya mempunyai argumen atau parameter yang ditulis di dalam tanda kurung. Deklarasinya adalah :
FUNCTION nama_fungsi(daftar_parameter) : tipe; Bagian_deklarasi;
Bagian_pernyataan;
♦ daftar_parameter Æ berisi sejumlah parameter, bentuknya : daf_parameter_1 : tipe_1; .... ; daf_parameter_n : tipe_n;
♦ tipe Æ tipe dari hasil fungsi
♦ Jika fungsi tidak memiliki parameter, tanda ( ) tidak perlu disertakan. D. Prosedur
Mempunyai sifat tidak memberikan nilai saat dipanggil. Deklarasinya adalah : PROCEDURE nama(daftar_parameter);
Bagian deklarasi; Bagian pernyataan;
Pembuatan daftar_parameter, bagian deklarasi dan bagian pernyataan seperti pada pembuatan fungsi.
E. Contoh
1. Program yang menggunakan fungsi sederhana Program Fungsi1;
{ --- } { Contoh pembuatan fungsi yang sederhana } { --- }
Uses WinCrt; Var
Bil1, Bil2, Hasil : integer;
Function Tambah(A , B : integer) : integer; Begin
Tambah := A + B;
End; { Akhir dari fungsi Tambah }
Begin { Program Utama }
Write (‘Masukkan nilai bilangan pertama : ‘); Readln (Bil1);
Write (‘Masukkan nilai bilangan kedua : ‘); Readln (Bil2);
Hasil := Tambah(Bil1, Bil2); { Pemanggilan fungsi } Writeln(‘Hasil penjumlahan = ‘, Hasil);
End.
Jika program diatas dieksekusi, hasilnya adalah :
2. Program yang menggunakan fungsi sederhana yang melibatkan variabel lokal dan global dengan nama yang sama
Program Fungsi2;
{ --- } { Contoh pembuatan fungsi yang sederhana } { yang melibatkan variabel lokal dan global } { dengan nama yang sama } { --- } Uses WinCrt;
Var
Bil1, Bil2, Hasil : integer; { Variabel global } Function Tambah(A , B : integer) : integer;
Var
Hasil : integer; { Variabel lokal } Begin
Hasil := A + B; Tambah := Hasil;
End; { Akhir dari fungsi Tambah }
Begin { Program Utama }
Write (‘Masukkan nilai bilangan pertama : ‘); Readln (Bil1);
Write (‘Masukkan nilai bilangan kedua : ‘); Readln (Bil2);
Hasil := 23;
Writeln (Tambah(Bil1, Bil2)); { Pemanggilan fungsi } Writeln (‘Hasil = ‘, Hasil);
12 Jika program diatas dieksekusi, hasilnya adalah :
3. Program yang menggunakan fungsi sederhana yang melibatkan variabel lokal dan global
Program Fungsi3;
{ --- } { Contoh pembuatan fungsi yang sederhana } { yang melibatkan variabel lokal dan global } { --- } Uses WinCrt;
Var
Bil1, Bil2, Hasil : integer; { Variabel global } Function Tambah(A , B : integer) : integer;
Begin
Hasil := A + B; Tambah := Hasil;
End; { Akhir dari fungsi Tambah } Begin { Program Utama }
Write (‘Masukkan nilai bilangan pertama : ‘); Readln (Bil1);
Write (‘Masukkan nilai bilangan kedua : ‘); Readln (Bil2);
Hasil := 23;
Writeln (Tambah(Bil1, Bil2)); { Pemanggilan fungsi } Writeln (‘Hasil = ‘, Hasil);
End.
Jika program diatas dieksekusi, hasilnya adalah :
4. Program yang menggunakan sebuah prosedur Program Prosedur;
Uses WinCrt; Var
13 Procedure CelKeFahren;
{---} { Konversi dari Celcius ke Fahrenheit } {---} Begin
Fahrenheit := ((9/5)*Celcius)+32; End;
Begin
Writeln('Konversi dari Celcius ke Fahrenheit'); Write('Celcius = ');
Readln(Celcius); CelKeFahren;
Writeln('Fahrenheit = ',Fahrenheit:0:2); End.