• Tidak ada hasil yang ditemukan

Array, Record, sorting : Elektro Unud (MSU) Page 1 of 13

N/A
N/A
Protected

Academic year: 2021

Membagikan "Array, Record, sorting : Elektro Unud (MSU) Page 1 of 13"

Copied!
13
0
0

Teks penuh

(1)

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);

(2)

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 :

(3)

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

(4)

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]

(5)

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);

(6)

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

(7)

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

(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;

(9)

{* 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.

(10)

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 } { --- }

(11)

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)

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)

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.

Referensi

Dokumen terkait

Seiring dengan rencana redevelopment gedung gereja dan kantor ORPC, yang sedianya akan dilaksanakan pada tahun ini; maka baiklah kita sebagai bagian dari ORPC mendoakan

Dilatar belakangi dari begitu banyaknya nilai dalam sebuah karya sastra salah satunya adalah novel, dimana novel mengandung nilai pendidikan karakter, pendidikan sosial,

Mahasiswa juga diminta membantu mengawasi siswa oleh guru pembimbing di kelas XI TGB dalam mata pelajaran Menggambar dengan Perangkat Lunak (SketchUp) dan kelas

Dasar yang disebutkan di dalam hadits, Nabi SAW diajak shalat asar oleh malaikat Jibril ketika panjang bayangan sama dengan tinggi benda sebenarnya dan pada keesokan harinya

Untuk memperolehi keputusan akhir bagi mendapatkan perhubungan diantara ujian Proba JKR dan Ujian Penusukan Piawai, data-data yang telah dianalisis daripada ketiga-tiga tapak

Rata-rata kadar kelarutan ion kalsium yang paling rendah adalah pada kelompok gigi yang direndam dalam seduhan rosella 4% sebesar 54,2 ppm; lebih rendah dibanding

H 0 : tidak ada pengaruh disiplin terhadap kepuasan anggota Kopsyah BTM Surya Dana.. Dengan demikian, maka H a diterima yang artinya disiplin karyawan berpengaruh

Bandura  (1982)  menjelaskan  bahwa efikasi  diri  yang  tinggi  memprediksi keberhasilan  seseorang  dalam  meraih tujuannya. Meskipun demikian,