Array, Record, sorting : Elektro Unud (MSU) Page 1 of 13 ARRAY Array : variabel berindeks (punya beberapa tempat, tergantung deklarasinya) iabel : 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; 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; 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);
Array, Record, sorting : Elektro Unud (MSU) Page 2 of 13 end. writeln ( Hari ini hari + arrhari[idx]); Batas : real; I,J,Jumlah : word; Cari : array[1..100] of char; Batas : sqrt(100); Jumlah :=0; For I:= 2 to 100 do If cari[i] <> * then Write(I:5); Jumlah :=jumlah +1; If I < batas then J:=I; While J <100 do J:=J+I; Cari[J] := * ; Writeln; Writeln ( ditemukan sejumlah,jumlah); 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 :
Array, Record, sorting : Elektro Unud (MSU) Page 3 of 13 Table : array[1..3,1..2] of byte; I,J : byte; 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 For J := 1 to 2 Do Write (Tabel[I,J]:6); Writeln; Alternatif Deklarasi Type X = array [1..3,1..2] of byte; 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; I,J,K : byte; M,N,L :byte; A,B,C : larik; 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 For J:= 1 to N Do
Array, Record, sorting : Elektro Unud (MSU) Page 4 of 13 Write ( Nilai [,I,,,J, ]? ); readln (A[I,J]); {input isi matrik 2} For I:= 1 to N Do For J:= 1 to L Do Write ( Nilai [,I,,,J, ]? ); readln (B[I,J]); {perkalian Matriks} For I:= 1 To M Do For J:= 1 To N Do C[I,J]:=0; For K :=1 To L Do C[I,J]:= C[I,J]+A[I,K]*B[K,J] ; {Mencetak Hasil Perkalian } Clrscr; Writeln; For I := 1 to M Do For J := 1 To L Do Write (C[I,J] :9:2); Writeln; 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]
Array, Record, sorting : Elektro Unud (MSU) Page 5 of 13 Utang : real ; Langganan : lgn; Cara lain deklarasi langganan : record Kode : integer; Nama : string [35]; Alamat : string [45] Utang : real ; 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 ; Lingkaran : Hasil; 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); Statement WITH penyederhanaan penulisan With Lingkaran Do Write ( Jari-jari Lingkaran ); readln(jarijari); Keliling := 2*3.14*Jarijari;
Array, Record, sorting : Elektro Unud (MSU) Page 6 of 13 Writeln ( Keliling Lingkaran, keliling); Contoh Implementasi Banyak Record Type DataMhs = Record Nomor : integer; Nama : string[20]; IP : real ; JumlahMhs.,I,J : byte; Mahasiswa : array [1..50] of DataMhs; Write( Jumlah mahasiswa: ); readln(jumlahmhs); For I:= 1 to JumlahMhs Do With Mahasiswa [I] Do Write ( Nomor mahasiswa : ); readln (Nomor); Write ( Nama mahasiswa : ); readln (Nama); Write ( IP mahasiswa : ); readln (IP); For I:= 1 to JumlahMhs Do With Mahasiswa[I] Do Writeln(Nomor :5, nama:20, IP:11:2); Proses Pengurutan PENGURUTAN DENGAN METODE BUBBLE SORT 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
Array, Record, sorting : Elektro Unud (MSU) Page 7 of 13 Putara Pertama : 6 5 8 3 5 6 8 3 5 6 8 3 5 6 3 8 Pada akhir proses pertama ini, bilangan yang terbesar menempati tempat yang sesuai. Putaran Kedua : 5 6 3 8 5 6 3 8 5 3 6 8 5 3 6 8 Pada akhir proses kedua ini, bilangan terbesar kedua menempatkan tempat yang sesuai. Putaran Ketiga : 5 3 6 8 3 5 6 8 3 5 6 8 3 5 6 8 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; nil1 : Array[1..100] of Integer; n,i,j,dum : Integer; ClrScr; Write('mau isi berapa data acak (integer) ='); readln(n); For i := 1 to n Do Write('Data Ke ',i,':');readln(nil1[i]); {* penyapuan proses} for i:= 1 to n-1 do for j:= i to n do if nil1[j]<nil1[i] then dum:=nil1[j]; nil1[j]:=nil1[i]; nil1[i]:=dum;
Array, Record, sorting : Elektro Unud (MSU) Page 8 of 13 end. writeln; writeln('hasil Sortir'); for i := 1 to n do write(nil1[i]:3); readln; 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 if nil1[j]<nil1[i] then { sama } 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; nil1 : Array[1..100] of Integer; n,i,j,k,dum,terbesar : Integer; ClrScr; Write('mau isi berapa data acak (integer) ='); readln(n); For i := 1 to n Do Write('Data Ke ',i,':');readln(nil1[i]);
Array, Record, sorting : Elektro Unud (MSU) Page 9 of 13 {* penyapuan proses} for i:= 1 to n do for j:= 1 to (n-1) do if nil1[j] > nil1[(j+1)] then dum:=nil1[j]; nil1[j]:=nil1[(j+1)]; nil1[(j+1)]:=dum; 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;
Array, Record, sorting : Elektro Unud (MSU) Page 10 of 13 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. iabel Lokal dan Global iabel 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. iabel 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 } { --------------------------------------------------- }
Array, Record, sorting : Elektro Unud (MSU) Page 11 of 13 Uses WinCrt; Bil1, Bil2, Hasil : integer; Function Tambah(A, B : integer) : integer; Tambah := A + B; { Akhir dari fungsi Tambah } { 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); 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; Bil1, Bil2, Hasil : integer; { iabel global } Function Tambah(A, B : integer) : integer; Hasil : integer; { iabel lokal } Hasil := A + B; Tambah := Hasil; { Akhir dari fungsi Tambah } { 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);
Array, Record, sorting : Elektro Unud (MSU) Page 12 of 13 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; Bil1, Bil2, Hasil : integer; { iabel global } Function Tambah(A, B : integer) : integer; Hasil := A + B; Tambah := Hasil; { Akhir dari fungsi Tambah } { 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); Jika program diatas dieksekusi, hasilnya adalah : 4. Program yang menggunakan sebuah prosedur Program Prosedur; Uses WinCrt; Celcius, Fahrenheit : Real; 12
Array, Record, sorting : Elektro Unud (MSU) Page 13 of 13 Procedure CelKeFahren; {-------------------------------------} { Konversi dari Celcius ke Fahrenheit } {-------------------------------------} Fahrenheit := ((9/5)*Celcius)+32; Writeln('Konversi dari Celcius ke Fahrenheit'); Write('Celcius = '); Readln(Celcius); CelKeFahren; Writeln('Fahrenheit = ',Fahrenheit:0:2); Jika program diatas dieksekusi, hasilnya adalah : 13