37
MODUL PRAKTIKUM ALGORITMA II

Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

  • Upload
    ngohanh

  • View
    287

  • Download
    4

Embed Size (px)

Citation preview

Page 1: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

Modul PraktikuM algoritMa ii

Page 2: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

iii

Daftar Isi

1. Larik/Array ......................................................................... 1

2. Array Dua Dimensi: Matriks ................................................ 7

3. Pencarian/Searching ..........................................................17

4. Modul Dalam Program .......................................................23

5. Pengurutan/Sorting ............................................................33

6. Penggabungan/Merging Array ..........................................53

7. Record ...............................................................................59

8. File Teks .............................................................................63

Modul PraktikuM algoritMa iiTim Dosen Program Studi Teknik Informatika

Copyright © 2012, indraPrasta Pgri PrEss.

Hak cipta dilindungi undang-undang

All rights reserved

Cetakan I: Mei 2012

ISBN: 978-602-9346-**-*

indraPrasta Pgri PrEss.*******

******

Page 3: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

iv 1

Modul Praktikum Alogaritma II

Array (Larik) adalahSuatu struktur data yang bisa menyimpan lebih dari satu data yang bertipe sama. Struktur data berbentuk larik ini diwakili oleh suatu nama variabel. Satu variabel bisa menyimpan banyak data, maka setiap data yang disimpan digunakan bilangan yang menunjukkan urutan atau disebut juga indeks, sehingga variabel array ini disebut juga variabel berindeks.

• Array (Larik) berdimensi satu disebut vektor.• Array (Larik) berdimensi dua disebut matriks.• Array (Larik) berdimensi tiga disebut tensor.

Bentuk umum atau deklarasi dari array pada Pascal adalah sebagai berikut:Var nama_array : array [a . . b] of tipe_data;

Dengan a : nilai indeks pertamab : nilai indeks terakhira dan b harus bertipe integer, dengan nilai a < nilai b.

Dengan deklarasi tersebut maka program akan mengalokasikan memori yang akan digunakan untuk menyimpan elemen-elemen array sebanyak maksimum (b-a+1).

Contoh definisi array / larik :a. nama_array : array [ 1 . . n ] of tipe_data;

contoh = A : array [1..10] of integer;b. tipe_data nama_array [n];

contoh = integer A[10];c. type larik : array [1 . . n ] of tipe_data;

nama_array : larik;contoh = type larik : array [1..10] of integer;

A : larik;

Larik/array

1

Page 4: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

2 3

Modul Praktikum Alogaritma II Larik/Array

Pemberian nilai untuk Array pada Pascal.1. Contoh pemberian nilai untuk satu elemen array.

a. A[5] ← 51; artinya elemen kelima dari array A diberi nilai integer 51.b. B[18] ← 2.67; artinya elemen ke-18 array B diberi nilai bilangan real 2,67.c. C[6] ← ‘a’; artinya elemen ke-6 array C diberi nilai karakter / huruf a.d. C[i] ← ‘#’; artinya elemen ke-i array C diberi nilai karakter #.

2. Contoh pemberian nilai untuk beberapa elemen array yang berurutan.a. for i ← 1 to n do

A[i] ← random (1000)

endfor

artinya: elemen-elemen array A dari elemen pertama s.d. elemen ke-n diisi oleh hasil randomisasi bilangan 1 s.d. 1000

b. for i ← 11 to 25 do

A[i] ← 3*i+2

endfor

artinya: elemen-elemen array A dan elemen pertama s.d. elemen ke-n diisi oleh hasil perhitungan 3i + 2, dimana i adalah nilai indeks yang bersesuaian.

Pengaksesan Elemen-elemen Array.1. Contoh mengakses satu elemen array

a. X ← A[5]; artinya variabel x diberi nilai elemen kelima dari array A. b. Y ← B[18]; artinya variabel y diberi nilai elemen ke-18 dari array B.c. Z ← C[i]; artinya elemen ke-i dari array C diberikan kepada variabel Z.

2. Contoh mengakses beberapa elemen array yang berurutan.a. for i ← 1 to n do

P[i] ← A[i+l]

endfor

artinya : array P diberi nilai elemen array A dengan indeks ditambah satu.

b. for j ← 11 to 25 do

Z[j] ← B[j - 10]

endfor

artinya : elemen-elemen array A dan elemen ke-11 s.d. elemen ke-25 diisi oleh elemen-elemen array A dengan indeks dikurangi sepuluh.

3. Contoh mencetak / menampilkan satu elemen array.a. write(A[5]) ; artinya menampilkan nilai elemen kelima dari array A. b. write(Elemen ke-18 adalah=`,B[18]) ;

artinya menampilkan nilai elemen ke-18 dari array B.

4. Contoh mencetak / menampilkan beberapa elemen array yang berurutan

a. for i ← 1 to n do

write (A[i])

endfor

artinya : menampilkan nilai array A untuk elemen ke-1 s.d. ke-n.b. for k ← 11 to 25 do

write(’Elemen ke-’,k,’ adalah = ‘B[k])

endfor

artinya : menampilkan nilai array B untuk elemen ke-11 s.d. ke-25.5. Contoh menjumlah beberapa elemen array yang berurutan

a. for i ← 1 to n do

jumlah ← jum1ah + A[i]

endfor

artinya: menjumlah elemen-elemen array A dari elemen ke-1 s.d. ke-n.

b. for k ← 11 to 25 do

jumlah ← jumlah + B[i]

endfor

artinya: menjumlah elemen array B dari elemen ke-l1 s.d. ke-25

Contoh Program dengan menggunakan array:Program HITUNG_RATA;{Contoh Penggunaan array dalam program}var i, k, n : integer;

Jumlah : longint;

RATA : real;

A : array [0. .100] of integer;

begin

{Input Data}while A[n] <> -9 do

begin

n := n + 1;

write(‘Masukkan bilangannya : ’ ); readln(A[n]) ;

end; {end of while} n := n - 1;

writeln (‘ Banyaknya bilangan : ’, n);

Page 5: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

4 5

Modul Praktikum Alogaritma II Larik/Array

{Mencetak Elemen array}write ( ‘Elemen array-nya adalah : ‘);

for i := 1 to n do

write (A[i],’, ‘);writeln;

{Menghitung jumlah e!emen array}for i := 1 to n do Jumlah := Jumlah + A[i];

write(‘Jumlah akhir = ’, Jumlah);

{Menghitung rata-rata}RATA := Jumlah/n;

writeln(‘ dan Rata-rata = ’,RATA);

writeln(‘ --o SELESAI o--’);

readln;

end.

Program Array_Record;

Uses crt;

Type mahasiswa = record

Nama : string;

Npm : string;

Nilai : integer;

end;

Var Mhs : array [1..10] of mahasiswa;

Jum : byte;

I,J : integer;

Procedure Input;

Begin

Writeln (‘Data Mhs’);

Write (‘ Jumlah data : ’);

Readln (Jum);

Writeln;

For I := 1 to Jum do

begin

writeln (‘Data ke- ‘, I);

write(‘Nama : ’); readln (Mhs[I].Nama);

write (‘Npm : ’); readln (Mhs[I].Npm);

write (‘Nilai :’); readln (Mhs[I].Nilai);

writeln;

end;

end;

Procedure Judul;

Begin

Clrscr;

Gotoxy(13,1); writeln(‘ DATA MAHASISWA ’);

Writeln(‘ ------------------------------ ‘);

gotoxy(3,3); write(‘No’);

gotoxy(7,3); write(‘Nama’);

gotoxy(27,3); write(‘Npm’);

gotoxy(45,3); writeln(‘Nilai’);

Writeln(‘ ------------------------------- ‘);

end;

Procedure Tampil;

Begin

for I := 1 to Jum do

begin

gotoxy(3,4 + I); write(I);

gotoxy(7,4 + I); write(Mhs[I].Nama);

gotoxy(27,4 + I); write(Mhs[I].Npm);

gotoxy(45,4 + I); write(Mhs[I].Nilai);

end;

writeln(‘ -------------------------------- ‘);

end;

{program utama}

Begin

Clrscr;

Input;

Judul;

Tampil;

Readln;

end.* * *

Page 6: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

6 7

Modul Praktikum Alogaritma II

Jika array satu dimensi merepresentasikan struktur data berbentuk sederetan bilangan atau bias juga merepresentasikan elemen-elemen vektor, maka array dua dimensi akan merepresentasikan struktur data dari elemen-elemen matriks.

Deklarasi array pada PascalFormat pendeklarasian matriks pada pascal adalah sebagai berikut:

Var nama_matriks : array [a..b,c..d] of tipe data

Dimana a : nilai indeks pertama dimensi pertamab : nilai indeks terakhir dimensi keduaa,b,c dan d harus bertipe integer, dan a < b, serta c < d

Dengan deklarasi tersebut maka program akan mengalokasikan memori (ruang penyimpanan) yang akan digunakan untuk menyimpan data elemen-elemen array A tersebut sebanyak (b – a + 1) x (c – d + 1) buah lokasi.

Contoh:

1.var A : array [1. .8,1. .6) of integer

artinya : deklarasi suatu array 2 dimensi (matriks) yang bernama A yang akan menyimpanMaksimum 8 baris kali 6 kolom data bertipe integer dengan indeks baris 1 s.d. 8 dan indeks kolom 1 s.d. 6

2. var B : array [10. .15,6. .10 1 of real

artinya : deklarasi matriks yang bernama B yang akan menyimpan maksimum 6 baris kali Kolom data bertipe real dengan indeks baris 10 s.d. 15 dan indeks kolom 6 s.d. 10

3.var C : array [50. .100, 25. .50] of char

artinya : deklarasi suatu matriks yang bernama C yang akan menyimpan maksimum 51Baris kali 26 kolom data bertipe karakter dengan indeks baris 50 s.d. 100 dan Dan indeks kolom 25 s.d. 50.

array Dua Dimensi: matriks

2

Page 7: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

8 9

Modul Praktikum Alogaritma II Array Dua Dimensi: Matriks

Notasi Umum untuk elemen matriks : A [i,j]Dimensi pertama, yaitu i, akan merepresentasikan indeks baris dan

dimensi kedua, yaitu j, akan merepresentasikam indeks kolom

Pemberian Nilai untuk Array pada Pascal1. Contoh pemberian nilai untuk satu elemen matriks

a. A[5,3] ← 51; artinya elemen baris kelima kolom ketiga dari matriks A diberi nilai

Integer 51.b. B [14,12] ← 3,25; artinya elemen baris ke-1 4 kolom ke-12 dari matriks B diberi

Nilai bilangan real 3,25c. B[i,j] ← ‘$ ‘; artinya elemen baris ke-i kolom ke-j dari matriks B diberi nilai

Karakter $.

2. Contoh pemberian nilai untuk beberapa elemen matriks yang berurutan a. for i ← 1 to n do

for j ← 1 to n do

write(A[i,j])

endfor

endfor

artinya : elemen-elemen matriks A dari elemen baris dan kolom pertama s.d. ke-n diisi Oleh hasil randomisasi bilangan 1 s.d. 1000

b. for i ← 6 to 20 do

for j ← 11 to 25 do

A[i,j] ← 3*i + 2*j

endfor

endfor

artinya : elemen-elemen matriks A dari baris ke-6 s.d. baris ke-20 dan kolom ke-11 s.d. kolom ke-25 diisi oleh hasil perhitungan 3i + 2j, dimana i dan j adalah nilai indeks baris dan indeks kolom yang bersesuaian.

Jawab : Algoritmanya adalah :For i ← 1 to 5 do

For j ← 1 to 5 doif i = j then A[i,j] ← i*i

else if i > j then A[i,j] ← i+jelse A[i,j] ← i – j

endifendif

endforendfor

Artinya : elemen-elemen matriks z dari kolom Dan baris ke 11 s.d. ke-25diisi oleh Elemen-elemen matriks B dengan Indeks yang sama

Contoh : Buatlah Algoritma untuk membentuk matriks berikut:

Pengaksesan Elemen-elemen Matriks 1. Contoh mengakses satu elemen matriks

a. x ← A[5,6]; artinya variabel x diberi nilai elemen baris kelima kolom ke enam darimatriks A

b. Y ← B[1,8]; artinya variabel Y diberi nilai elemen baris ke-1 kolom ke-8 dari matriks B

c. Z ← C[i,j]; artinya elemen baris ke-i kolom ke-j dari matriks C diberikan kepadaVariabel z.

2. Contoh mengakses beberapa elemen matriks yang berurutan.a. for i ← 1 to n do

for j ← 1 to n do

P[i,j] ← A[i+1,j+2]

endfor

endfor

artinya : matriks P diberi nilai elemen matriks A dengan indeks baris ditarnbah satu, dan Indeks kolom ditambah 2.

b. for i ← 11 to 25 do

for j ← 11 to 25 do

z[i,j] ← B [i,j]

endfor

endfor

1 1 2 3 4

3 4 1 2 3

4 5 9 1 2

5 6 7 16 1

6 7 8 9 25

Page 8: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

10 11

Modul Praktikum Alogaritma II Array Dua Dimensi: Matriks

3. Contoh mencetak / menampilkan satu elemen matriks a. write(A[5,3]); artinya menampilkan nilai elemen baris kelima kolom ketiga

Dari matriks Ab. write(‘Elemen baris ke-1 kolom ke-4 adalah=’,B[18]);

artinya menampilkan nilai elemen baris ke-1 kolom ke-4 dari matriks B.

4. Contoh mencetak / menampilkan beberapa elemen matriks yang berurutan.a. for i ← 1 to n do

for j ← 1 to n do

Write(A[i,j])

endfor

writeln

endfor

b. for k ← ll to 25 do

for j ← 6 to 10 do

write(B[i,j])

endfor

writeln

endfor

Pernyataan writeln di atas merupakan perintah agar elemen-elemen baris berikutnya tercetak pada baris yang baru

5. Contoh menjumlah beberapa elemen matriks yang berurutan a. for i ← 1 to n do

for j ← 1 to n do

jumlah ← jumlah + A[i,j]

endfor

endfor

artinya: menjumlah semua elemen matriks A baris dan kolom ke-l s.d. ke-n

b. for k ← 11 to 25 do

for k ← 6 to l0 do

jumlah ← jumlah + B[i,j]

endfor

endfor

artinya : menjumlah elemen matriks B baris ke-1 1 s.d. ke-25 kolom ke-6 s.d. ke-l0

Artinya : Menampilkan semua elemen matriks A dari baris dan kolom pertama s.d. ke-n

Artinya : Menampilkan elemen matriks B untuk baris ke-11 s.d. ke-25 dan kolom ke-6 s.d. ke-10

b1

b2

. . bn

c1

c2

. . cn

b11 b12 . . b1n b21 b22 . . b2n

. . . . . . . . . . bn1 bn2 . . bnn

c11 c12 . . c1n c21 c22 . . c2n

. . . . . . . . . . cn1 cn2 . . cnn

Algoritma-algoritma Operasi Vektor dan matriks 1. Penjumlah dan Pengurangan Vektor: a ± b = C, a, b, dan c adalah vector yang berdimensi sama

± =

2. Perkalian Vektor (Dot Product):a. b = k, dimana a dan b adalah vector berdimensi sama, k adalah konstanta.

. = k

3. Penjumlah dan Pengurangan Matriks: A ± B = C, A, B, dan C adalah matriks yang berordo sama

± =

Definisi : C[i,j] ← A[i,j] ± B[i,j]

Algoritmanya :for i ← 1 to n do

for j ← 1 to n do

c[i,j] ← A[i,j] ± B[i,j]

endfor

endfor

a1

a2

. . an

Definisi : c(i) = a(i) ± b(i)

Algoritmanya :

for i ← 1 to n do

c[i] ← a[i] ± b[i]endfor

a1

a2

. . an

b1

b2

. . bn

Definisi : k = a1.b1+a2.b2 +a3.b3+. . . +an.bn

Algoritmanya :

k ← 0for i ← 1 to n do

k ← k + a[i]* b[i]endfor

a11 a12 . . a1n a21 a22 . . a2n

. . . . . . . . . . an1 an2 . . ann

Page 9: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

12 13

Modul Praktikum Alogaritma II Array Dua Dimensi: Matriks

a11 a12 . . a1n a21 a22 . . a2n

. . . . . . . . . . an1 an2 . . ann

b1

b2

. . bn

c1

c2

. . cn

a11 a12 . . a1n a21 a22 . . a2n

. . . . . . . . . . an1 an2 . . ann

b11 b12 . . b1n b21 b22 . . b2n

. . . . . . . . . . bn1 bn2 . . bnn

c11 c12 . . c1n c21 c22 . . c2n

. . . . . . . . . . cn1 cn2 . . cnn

4. Perkalian Matriks dengan vector :A x b = c, A adalah matriks berordo n x n, b dan c adalah vector berdimensi n

X =

Definisi : ci = ai1.b1 + ai2.b2 + ai3.b3 + . . . . + ain.bn Contoh : c4 = a4i.b1 + a42.b2 + a43.b3 + . . . . + a4n.bn

Algoritmanya :for i ← 1 to n do

C[i] ← 0

for j ← 1 to n do

c[i] ← c[i] + A[i,j] * b[j]

endfor

endfor

5. Perkalian Matriks dengan Matriks:A x B = C, A, B, dan C adalah matriks yang berordo n x n

X =

Definisi : Perkalian matriks A dan B adalah perkalian antara elemen baris matriks Adengan elemen kolom matriks B untuk indeks yang bersesuaian kemudian hasil masing-masing perkalian tersebut dijumlahkan.

Cij = ai1.bij + ai2.b2j + ai3.b3j + . . . . + ain.bnj Contoh : C43 = a41.b13 + a42.b23 + a43.b33 + . . . . + a4n.bn3

Algoritmanya :for i ← 1 to n do

C[i,j] ← 0

for j ← 1 to n do

C[i,j] ← C[i,j] + A[i,k] * B[k,j]

endfor

endfor

Jika A dan B adalah matriks dengan ordo tidak sama :Misal : Am x p x Bp x n = Cm x n

Maka algoritmanya :for i ← 1 to m do

C[i,j] ← 0

for j ← 1 to p do

for j ← 1 to n do

C[i,j] ← C[i,j] + A[i,k] * B[k,j]

endfor

endfor

endfor

Program Perkalian_Matriks;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(‘Baris matriks pertama ?’);

readln(M);

Write(‘Baris matriks pertama/baris matriks kedua ?’);

readln(N);

Write(‘Kolom matriks kedua ?’);

readln(L);

Writeln;

Page 10: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

14 15

Modul Praktikum Alogaritma II Array Dua Dimensi: Matriks

{masukan data matriks pertama}

Writeln(‘Matriks yang pertama : ’);

for I := 1 to M do

begin

for J := 1 to N do

begin

write(‘Nilai [‘,I,’,’,J,’] ’); readln(A[I,J]);

end;

writeln;

end;

{masukan data matriks kedua}

Writeln(‘ Matriks yang kedua : ’);

for I := 1 to N do

begin

for J := 1 to L do

begin

write(‘Nilai [‘,I,’,’,J,’]?’);

readln(B[I,J]);

end;

writeln;

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(‘ Hasil dari perkalian matriks : ’);

Writeln;

for I := 1 to M do

begin

for J := 1 to L do

write(C[I,J]):9:2);

writeln;

end;

end.

Tugas : Buatlah program-program lainnya yang mengimplementasikan algoritma-algoritma di atas !

* * *

Page 11: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

16 17

Modul Praktikum Alogaritma II

Proses pencarian/searching adalah proses mencari suatu data yang ditentukan pada suatu kumpulannya, misal pada suatu larik/array, linked-list, record, file, atau pada kumpulan data yang lain.

Permasalahan Pada PencarianPermasalahan pada pencarian bisa diklasifikasikan sebagai berikut :1. Dicari suatu data, misal data x, pada suatu kumpulan data, misal A. Hasil pencarian yang

diharapkan adalah suatu komentar bahwa data tersebut ditemukan atau tidak ditemukan.2. Dicari suatu data, misal data x, pada suatu kumpulan data, misal A. Hasil pencarian yang

diharapkan adalah suatu status bahwa data tersebut ditemukan atau tidak ditemukan.3. Dicari suatu data, misal data x, pada suatu larik/array, misal array A. Hasil pencarian yang

diharapkan adalah posisi yaitu nomor urut atau indeks data itu pada array tersebut.

Algoritma Pencarian 1. Pencarian Beruntun (Linear Searching)

Ide pencarian : elemen yang dicari dibandingkan dengan elemen-elemen yang ada padaKumpulan data tempat pencarian satu persatu mulai dari elemen pertama.

Algoritma : CARI(A, N, X)

{Mencari data x pada array A yang elemennya sebanyak N}Read (x)

I ← 1

While x <> A(I) AND I <= N do

I ← I + 1

endwhile

Pengaturan Hasil (output)Sesuai permasalahan pada pencarian yang dikemukakan di atas maka pengaturan hasil/ output yang diinginkan dari proses pencarian tersebut bisa disesuaikan dengan permasalahan di atas, yaitu :

Pencarian/searching

3

Page 12: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

18 19

Modul Praktikum Alogaritma II Pencarian/Searching

1. Jika hasil yang diinginkan berupa komentar bahwa data x ditemukan atau tidak :if I <= N then

write (x,‘ ditemukan’)

else

write(x,‘ tidak ditemukan’)

endif

2. Jika hasil yang diinginkan berupa status bahwa data x dtemukan atau tidak: if I <= N then

Ketemu ← TRUE

else

Ketemu ← FALSE

endif

3. Jika hasil yang diinginkan berupa indeks data x pada array A:if I <= N then

Hasil ← I

else

Hasil ← 0 { misal jika tidak ditemukan maka variabel hasil diberi endif nilai 0

3. Pencarian Biner/Bagi Dua (Binary Searching) (Khusus untuk pencarian pada array yang sudah terurut)

Ide pencarian: elemen yang dicari dibandingkan dengan elemen tengah dari kumpulan data tempat pencarian. Jika sama maka data yang dicari ditemukan, jika tidak sama (dalam ini belum ditemukan) maka data yang dicari itu dibandingkan lagi dengan elemen tengah tersebut. Jika lebih kecil maka pencarian dilanjutkan ke bagian array sebelah kiri (bagian yang lebih kecil dan elemen tengah). Sebaliknya jika lebih besar maka pencarian dilanjutkan di sebelah kanan elemen tengah.

Ulangi langkah tersebut sampai ditemukan alan kumpulan data tidak bisa dibagi lagi menjadi dua bagian .

Algoritma : CARl (A, N, X){Mencari data x pada array A yang elemennya sebanyak N}Read (x)

a ← 1

b ← N

ketemu ← FALSE

while ketemu and a < b do

T ← (a+b) mod 2

if x = A(T) then ketemu ← TRUE

else if x < A(T) then b ← T - 1

else a ← T + 1

endwhile

Pengaturan Hasil (output) 1 .Jika hasil yang diinginkan berupa komentar bahwa data x ditemukan atau tidak:

if ketemu = TRUE then

write (x,‘ditemukan’)

else

write(x,‘tidak ditemukan’)

endif

2. Jika hasil yang diinginkan berupa status bahwa data x dtemukan atau tidak maka variabel ketemu tersebut menunjukkan status bahwa data yang dicari ditemukan atau tidak.’

3. Jika hasil yang diinginkan berupa indeks data x pada array A :if ketemu = TRUE then

Hasil ← T

else

Hasil ← 0 {misal jika tidak ditemukan maka variable hasil diberi nilai 0}

endif

Algoritma Searching Urut

Langkah 0 : Baca Vektor yang diketahui, misalnya sebagai vektor A dengan N elemen.

Langkah 1 : Baca data yang akan dicari, misal DATA.Langkah 2 : (Inisialisasi)

Tentukan : Ada = False

Page 13: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

20 21

Modul Praktikum Alogaritma II Pencarian/Searching

Langkah 3 : (Proses Pencarian)Untuk I = 1 sampai N kerjakan langkah 4

Langakah 4 : Test apakah : DATA = A[I]?Jika Ya, (berarti data ketemu), tentukan ;Ada = True, Posisi = I dan I = N

Langkah 5 : (Menambah data pada vektor, jika diperlukan)Test apakah Ada = False ?Jika Ya, ( data tidak ketemu), tentukan :N = N + 1, dan A[I]= DATA

Langkah 6 : Selesai

Algoritma Searching Biner

Langkah 0 : Baca vektor yang diketahui, misal vektor A dengan N buah elemen, dan urutkan secara urut naik

Langkah 1 : Baca elemen yang akan dicari, misal DATA

Langkah 2 : ( Inisialisasi)

Tentukan Ada = False, Atas = N, dan Bawah = 1

Langkah 3 : Kerjakan langkah 4 dan 5 selama Atas >= Bawah

Langkah 4 : (Menentukan batas subvektor)

Tentukan : Tengah = ( Atas + Bawah ) div 2

Langkah 5 : Test nilai data terhadap A [Tengah]

Jika DATA > A [Tengah], (ada di subvektor 2),

Tentukan: Bawah = Tengah + 1

Jika DATA = A [Tengah], (ada disubvektor 1),

Tentukan : Atas = Tengah – 1

Jika Data = A [Tengah], (ketemu),

Tentukan : Ada = True

Posisi = Tengah, dan

Bawah = Atas + 1

Langkah 6 : Selesai

Contoh Program binary_search;

Uses crt;

Type Tipe_larik = word;

Larik = array [1..8] of tipe_larik;

Procedure caribiner ( x : larik; cari :tipe_larik; Bawah,atas

: word;

Var urutketemu : word);

Var tengah : word;

begin

if bawah > atas then urutketemu := 0

else

begin

tengah := (bawah + atas) div 2 ;

if cari = x[tengah] then

urutketemu := tengah

else

if cari < x[tengah] then

caribiner(x, cari, bawah, tengah-1,

urutketemu)

else

caribiner(x, cari, tengah+1, atas,

urutketemu);

end;

end;

type nama = string[20];

const

npm : larik = (1234, 1235, 1236, 1237, 1238, 1239, 1240,

1241);

nama_mhs : array [1..8] of nama =

(‘arief’,’ani’,budi’,’citra’,dewi’,’erni’,’fanny’,’ghana’)

;

Page 14: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

22 23

Modul Praktikum Alogaritma II

var

cari : word;

ketemu : word;

lagi : char;

begin

lagi := ‘Y’;

while upcase(lagi) = ‘Y’ do

begin

clrscr;

write(‘NPM mahasiswa yang dicari: ’);

readln(cari);

writeln;

caribiner(npm, cari, 1, 8, ketemu);

if ketemu = 0 then

writeln(‘npm mahasiswa ini tidak ada’);

else

begin

writeln(‘ NPM mahasiswa : ’, npm[ketemu]);

writeln(‘Nama mahasiswa : ’, namamhs[ketemu]);

end; writeln;

write(‘cari yang lain lagi (Y/T) ?’); readln(lagi);

end;

end.

Modul dalam program atau disebut juga sub program atau routine atau sub routine adalah bagian program yang mengerjakan sebagian masalah yang akan diselesaikan oleh program tersebut. Suatu program yang akan menyelesaikan suatu masalah yang besar dan kompleks sebaiknya masalah tersebut dibagi-bagi menjadi masalah-masalah yang kecil agar lebih mudah untuk menyelesaikannya. Kemudian dalam implementasinya masalah-masalah yang kecil tersebut diselesaikan dengan pembuatan modul. Sifat dari implementasi suatu program dengan modul-modul disebut sifat modularitas. Program yang baik apabila sifat modularitasnya tinggi.

Keuntungan penerapan modul dalam program :1. Mempermudah dalam pemeliharaan (rnendeteksi kesalahan. perbaikan, modifikasi. dll) 2. .Jika banyak bagian program yang harus dikerjakan berulang-ulang maka hemat dalam .penulisan baris-baris instruksi.3. Mempermudah dalam pembacaan dan pemahaman program.

Pada saat eksekusi program, apabila suatu modul dipanggil (eksekusi program sudahmencapai modul tersebut) maka eksekusi program berpindah ke modul tersebut, kemudian jika sudah selesai maka kembali lagi ke program utama. Suatu modul bisa memanggil maupun dipanggil oleh modul lain.

moDuL DaLam Program

4

* * *

Page 15: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

24 25

Modul Praktikum Alogaritma II Modul Dalam Program

Struktur program dengan modul dalam Pascal :1. Nama Program 2. Deklarasi Variabel Global 3. Penulisan Modul-modul yang dipanggil 4. Program Utama

Struktur modul dalam Pascal: 1. Nama Modul (dan parameter Formalnya) 2. Deklarasi Variabel Lokal 3. Penulisan modul-modul lain yang dipanggil (jika ada) 4. Isi Modul

Beberapa Istilah pada modul :

1. Variabel Global adalah suatu variabel yang dideklarasikan pada awal program utama dan bisa digunakan oleh semua bagian dari program tersebut, termasuk rnodul-rnodulnya.

2. Variabel Lokal adalah suatu variabel yang dideklarasikan pada suatu modul dan hanya bisa digunakan pada modul tersebut.

3. Parameter Formal adalah suatu parameter/variabel yang digunakan pada deklarasi/pende-finisian suatu modul.

Program Utama1. . . . .2. . . . . 3. . . . . 4. . . . . 5. Modul 16. . . . . 7. . . . .8. Modul 29. . . . .10. Modul 111. . . . . 12. . . . . 13. Modul 114. . . . .15. . . . . 16. Modul 317. . . . . 18. . . . .dst

Modul 11. . . .2. . . . 3. . . . dst

Modul 21. . . . . 2. . . . .dst

Modul 31. . . . . 2. . . . .3. Modul 24. . . . . dst

4. ParameterAktual adalah suatu parameter yang digunakan untuk memanggil suatu modul.5. Parameter Input adalah suatu parameter yang digunakan untuk memasukkan data yang

akan diproses oleh modul.6. Parameter Output adalah suatu parameter yang digunakan untuk mengirimkan hasil proses

dan suatu modul kepada yang memanggil modul tersebut.

Modul dalam Bahasa Pemrograman:Pada hampir semua bahasa pemrograman, terdapat dua jenis modul, yaitu : Prosedur (procedure) dan fungsi (Function).

Contoh deklarasi prosedur dan fungsi dalam Pascal:

1. Procedure InputData(var A:array of integer; var I:integer);

arti : deklarasi dari prosedur bernama lnputData dengan parameter formal array Adan Integer I. Parameter A dan I tersebut keduanya merupakan parameter output.

2. Procedure CetakArray(A:array of integer; N:integer);arti : deklarasi dari prosedur bernama CetakArray dengan parameter formal array A

dan integer N. Parameter A dan N tersebut keduanya merupakan parameter input.

3. Procedure HitungJumlah(A:array of integer; X:integer;

var Total:longint);

arti : deklarasi dan prosedur bernama HitungJumlah dengan parameter formal array A dan integer X, dan longinteger Total. Parameter A dan X merupakanparameter input, sedangkan parameter Total adalah parameter output.

4. procedure InputData;

arti : deklarasi dan prosedur bernama InputData tanpa parameter apapun.

5. function Total (B:array of integer; X:integer) :longint;

arti : deklarasi dari fungsi bernama Total dengan parameter formal array B dan integer X. Parameter B dan X tersebut keduanya merupakan parameter input.

Fungsi ini akan mengembalikan hasil suatu data bertipe Long integer.

Pada fungsi tidak ada parameter output, karena suatu fungsi akan selalu mengembalikan hasil kepada yang memanggil.

6. function MAX(D:array of integer; N:integer) :integer;

arti : deklarasi dan fungsi bernama Max dengan parameter formal array D dan integer N. Fungsi ini akan mengembalikan hasil suatu data bertipe integer.

Page 16: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

26 27

Modul Praktikum Alogaritma II Modul Dalam Program

Contoh pemanggilan prosedur dan fungsi dalam Pascal:

1. InputData(A,n);

{ Panggil prosedur InputData dengan parameter aktual A dan n sesuai denganDeklarasi prosedurnya}

2. CetakArray(A,n);

{ Panggil prosedur CetakArray dengan parameter aktual A dan n sesuai dengan deklarasi prosedurnya}.

3. HitungJumlah(A,n,Jumlah);

{ Panggil prosedur HitungJumlah dengan parameter aktual A, n dan Jumlah sesuai dengan deklarasi prosedurnya }.

4. InputData;

{ Panggil prosedur InputData tanpa parameter apapun sesuai dengan deklarasi prosedurnya}.

5. Jumlah := Total(A,n);

{ Panggil Fungsi Total dengan parameter aktual A dan n sesuai dengan deklarasi fungsinya, dan hasil yang diberikan oleh fungsi tersebut akan disimpan dalam variabel Jumlah}.

6. Maksimum : MAX(A,n);

{ Panggil Fungsi MAX dengan parameter aktual A dan n sesuai dengan deklarasi fungsinya, dan hasil yang diberikan oleh fungsi tersebut akan disimpan dalamvariabel Maksimum}.

Pemanggilan Fungsi

Pemanggilan suatu fungsi bisa dilakukan dengan 4 cara:

1. Di simpan (di-assign) dalam suatu variabel, contoh seperti di atas.

2. Dioperasikan dengan variabel lain atau dengan bilangan dan hasilnya Di simpan (di-assign) dalam suatu variabel Contoh : Rata_rata := Total(A,n)/n;

artinya: bahwa hasil pemanggilan fungsi Total langsung dibagi dengan variabel n dan hasilnya disimpan dalam variabel rata-rata.

3. Langsung dicetak, Contoh : write (MAX(A,n)), artinya : bahwa hasil pemanggilan fungsi Max

langsung dicetak. 4. Untuk Uji Kondisi

Contoh: if (MAX(A,n)) < 100 then …….artinya bahwa hasil pemanggilan fungsi Max dijadikan sebagai uji kondisi IF-THEN

Contoh-contoh Program menggunakan modul:

Procedure faktorial(n: byte; var hasil: longint);

Begin

If N <= 1 then hasil := 1

Else Begin

Faktorial(N-1, hasil);

Hasil := N*hasil;

End; end;

Var N : byte; F : longint;

Begin

Write(‘Berapa faktorial? ’); readln(N);

Faktorial(N,F); Writeln(‘Faktorial = ’,F); readln;

End.

Function factorial (N: byte): longint;

Begin

If N <= 1 then faktorial := 1;

Else Faktorial := N*faktorial (N-1);

End;

Var N: byte;

Begin

Write (‘ berapa faktorial? ’); readln(N);

Writeln(‘ Faktorial = ’,Faktorial (N)); readln;

End.

Page 17: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

28 29

Modul Praktikum Alogaritma II Modul Dalam Program

Function Fibonacci (n: word): word;

Begin

If n < 2 then Fibonacci := n

Else Fibonacci := Fibonacci(n-2) + Fibonacci(n-1);

End;

Var n: word;

Begin

Write(‘ suku ke berapa? ’); readln(n);

Writeln(‘nilai suku ke ‘,n,’ adalah ‘, Fibonacci(n));

readln;

End.

Function Fibonacci (n:word):word;

Begin

If n < 2 then Fibonacci := n;

Else begin

Fibobawah := 0;

Fiboatas := 1;

For i := 2 to n do

Begin

X := fibobawah; Fiboatas := fiboatas;

End; Fibonacci := fiboatas;

End; end;

Var n : word;

Begin

Write(‘suku ke berapa? ’);readln(n);

Writeln(‘nilai suku ke ‘,n,’ adalah ‘,Fibonacci(n));

readln;

End.

Program HITUNG_RATA_1;

{ Contoh Penggunaan Procedure dan array)var k, n, bil : integer;

Jumlah : longint;

RATA : real;

A : array[0. .100]of integer;

procedure InputData(var A:array of integer;

var I:integer);

begin

while A[I] <> -9 do begin

I : I + 1;

write (‘Masukkan bilangannya : ‘) ; readln(A[I]);

end; {end of while}

I:= I-1;

end; {end of procedure}

procedure CetakArray(A:array of integer; N:integer);

var i : integer;

begin

for i := 1 to N do write(A[i],‘, ‘);

end;

procedure HitungJumlah( A:array of integer; X : integer;

var Total:longint);

var i : integer;

begin

for i := 1 to X do Total := Total + A(i];

end; {end of procedure}

{Program Utama}

begin

InputData (A,n) ; {Panggil prosedur InputData}

writeln (‘Banyaknya bilangan : ‘ ,n);

write (‘Elemen array-nya adalah : ‘);

CetakArray(A,n); {Panggil prosedur CetakArray}

writeln;

HitungJumlah(A,n,Jumlah); {Panggil HitungJumlah}

write(‘ Jumlah akhir = ‘,Jumlah);

RATA := Jumlah/n; writeln (‘ dan Rata-rata = ‘,RATA);

writeln (‘ --o SELESAI o---’);

readln;

end.

Page 18: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

30 31

Modul Praktikum Alogaritma II Modul Dalam Program

Program HITUNG_RATA_2;

{ Contoh Penggunaan Procedure dan array}

var k, n : integer;

Jumlah : longint;

RATA : real;

A : array[0. .l00]of integer;

procedure InputData;

begin

while A[n] <> -9 do begin

n := n + 1;

write(‘Masukkan bilangannya : ‘) ; readln (A[n]);

end; {end of while}

n := n — 1;

end; {end of procedure}

procedure CetakArray;

var i : integer;

begin

for i := 1 to n do write (A[i],‘, ‘);

end;

procedure HitungJumlah(var Total:longint);

var i : integer;

begin

for i := 1 to n do

Total := Total + A[i];

end; {end of procedure}

begin {Program Utama}

InputData; {Panggil prosedur InputData}

writeln (‘Banyaknya bilangan : ‘,n);

write (‘Elemen array-nya adalah : ‘);

CetakArray; {Panggil prosedur CetakArray}

writeln;

HitungJumlah(Jumlah); {Panggil HitungJumlah}

write (‘Jumlah akhir = ‘ , Jumlah);

RATA := Jumlah/n;

writeln (‘ dan Rata-rata = ‘ ,RATA);

writeln(’ --o SELESAI o--’);

readln;

end.

Program HITUNG_RATA_3;

{Contoh Penggunaan Function dan array)

var k, n, Maksimum, Minimum : integer;

Jumlah : longint; RATA : real;

A : array[0..l00] of integer;

procedure InputData;

begin

while A[n] <> -9 do begin

n := n + 1;

write(‘Masukkan bilangannya : ‘); readln(A[n]);

end; {end of while}

n := n — 1;

end; {end of procedure}

procedure CetakArray;

var i integer;

begin

for i := 1 to n do write(A[i],‘, ‘);

end;

function Total (B:array of integer; X:integer):longint;

var i : integer;

temp : longint;

begin

temp := 0;

for i := 1 to X do temp := temp + B[i];

Total := temp;

end; {end of function}

function MIN(B:array of integer; X:integer):integer;

var i : integer;

temp : integer;

begin

temp := B[1);

for I := 2 to X do if temp > B[i] then temp := B[i);

Page 19: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

32 33

Modul Praktikum Alogaritma II

MIN := temp;

end; {end of function}

function MAX(D:array of integer; N:integer):integer;

var i : integer;

temp : integer;

begin

temp := D[1];

for i:= 2 to N do if temp < D[i] then temp :=D[i];

MAX := temp;

end; {end of function}

begin { Program Utama}

InputData;

writeln(’Banyaknya bilangan : ‘,n);

write(’Elemen array-nya adalah : ‘);CetakArray; writeln;

Jumlah := Total(A,n); write(’Jumlah akhir =

‘,Jumlah);

RATA := Jumlah/n; writeln(’ dan Rata-rata = ‘,RATA);

Minimum := MIN(A,n); writeln(’Elemen terkecil =

‘,Minimum);

Maksimum := MAX(A,n); writeln(’Elemen terbesar =

‘,Maksimum);

writeln(’ --o SELESAI 0--’); readln;

end.

Untuk memudahkan dalam proses pengurutan dan sekumpulan data maka sekumpulan data tersebut disimpan dalam suatu array (larik) atau senarai berkait (link-listed).

1. Pengurutan GELEMBUNG (Bubble Sort).

Ide Pengurutan : misal untuk pengurutan naik (Ascending).Dimulai dari elemen terakhir (paling kanan) kemudian dibandingkan dengan elemen depannya (sebelah kirinya). Jika elemen tersebut lebih kecil dari elemen depannya maka terjadi pertukaran posisi dua elemen tersebut (karena pengurutan naik maka elemen kanan harus lebih besar dari elemen kiri). Kemudian dibandingkan lagi dengan elemen didepannya dan seterusnya sampai dengan elemen paling kiri. Dalam satu langkah ini akan diperoleh satu elemen paling kiri sudah dalam posisi terurut. Langkah tersebut diulangi terus sampai semua elemen dalam posisi terurut.

Contoh :Misal elemen-elemen yang akan diurutkan disimpan dalam array, yaitu A = [6, 2, 9, 3. 7,4]

Langkah 1 : 6 2 9 5 7←4 : 4 < 7 maka terjadi pertukaran6 2 9 3←4 7 : 4 > 3 maka tidak terjadi pertukaran 6 2 9←3 4 7 : 3 < 9 maka terjadi pertukaran 6 2←3 9 4 7 : 3 > 2 maka tidak terjadi pertukaran 6←2 3 9 4 7 : 2 < 6 maka terjadi pertukaran 2 6 3 9 4 7 : Elemen pertama yaitu 2 sudah terurut.

Langkah 2 : 2 6 3 9 4←7 : 7 > 4 maka tidak terjadi pertukaran 2 6 3 9←4 7 : 4 < 9 maka terjadi pertukaran 2 6 3←4 9 7 : 4 > 3 maka tidak terjadi pertukaran 2 6←3 4 9 7 : 3 < 6 maka terjadi pertukaran 2 3 6 4 9 7 : Elemen kedua yaitu 3 sudah terurut.

Pengurutan/sorting

5

* * *

Page 20: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

34 35

Modul Praktikum Alogaritma II Pengurutan/Sorting

Langkah 3 : 2 3 6 4 9←7 : 7 < 9 maka terjadi pertukaran 2 3 6 4←7 9 : 7 > 4 maka tidak terjadi pertukaran 2 3 6←4 7 9 : 4 < 6 maka terjadi pertukaran 2 3 4 6 7 9 : Elemen ketiga yaitu 4 sudah terurut.

Langkah 4 : 2 3 4 6 7←9 : 9 > 7 maka tidak terjadi pertukaran 2 3 4 6←7 9 : 7 > 6 maka tidak terjadi pertukaran 2 3 4 6 7 9 : Elemen keempat yaitu 6 sudah terurut.

Langkah 5 : 2 3 4 6 7←9 : 9 > 7 maka tidak terjadi pertukaran 2 3 4 6 7 9 : Elemen kelima yaitu 7 sudah terurut

Pada akhir langkah kelima ini tinggal satu elemen terakhir (elemen ke-6) yang belum diproses, tetapi karena tinggal satu elemen maka dengan sendirinya sudah menempati urutan yang benar (sudah terurut) sehingga Iangkah tidak perlu dilanjutkan (selesai).

Algoritma : Ascending

algoritma Bubble_Sort (A, n)

1. for i ← 1 to n-1 do

2. for j ← n to I do

3. if A[j] < A[j—1) then TUKAR(A[j],A[j—1])

4. endfor

5. endfor

Algoritma prosedur TUKAR: 6. TUKAR(x,y);

7. Temp ← x; x ← y; y ← Ternp;

8. end;

Contoh Program :

Program Urut_BUBBLE;

uses crt;

var i,j,k,temp,n : integer;

A, B, C : array [1..100] of integer;

begin

clrscr; textcolor(12);

write(’Banyaknya Elemen Array : ‘) ; readln(n);

{Input Data}

for i := 1 to n do A[i]:= random(l000);

{Cetak Array Sebelum Pengurutan}

writeln; textcolor(15);

write(’Sebelum diurutkan : ‘);

for i := 1 to n do write(A[i),’ ‘);

writeln; textcolor(15);

writeln(’Proses Pengurutan Bubble : ‘);

for i := 1 to n-1 do begin

for j := n downto i+1 do begin

if A[j-1] > A[j] then begin

temp := A[j-1];

A[j—1] := A[j];

A[j] := temp;

end;

end;

{Cetak Array tiap langkah pengurutan:}

writeln; write(’Hasil akhir langkah ke-’,i,’ : ‘);

for k := 1 to n do write(A[k],’ ‘);

end;

{Cetak Array Setelah Pengurutan}

writeln; writeln;

textcolor(15) ; write(’Hasil Pengurutan Bubble : ‘)

for i := 1 to n do write(A[i],’ ‘);

readln;

end.

2. Pengurutan GRAVITASI (Gravitasion Sort)

ide Pengurutan: Mirip dengan Bubble Sort tetapi dimulai dari elemen pertama (paling kiri) dan dibandingkan dengan elemen di belakangnya (sebelah kanannya), sehingga pada akhir langkah pertama diperoleh elemen terakhir sudah dalarn posisi terurut. Demikian seterusnya.

Page 21: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

36 37

Modul Praktikum Alogaritma II Pengurutan/Sorting

Contoh: Urutkan naik elemen-elemen array A = [6, 2, 9, 3, 7, 4]

Langkah 1 : 6→2 9 3 7 4 : 6 > 2 maka terjadi pertukaran2 6→9 3 4 7 : 6 > 9 maka tidak terjadi pertukaran2 6 9→3 4 7 : 9 > 3 maka terjadi pertukaran2 6 3 9→4 7 : 9 > 4 maka terjadi pertukaran2 6 3 4 9→7 : 9 > 7 maka terjadi pertukaran2 6 3 4 7 9 : Elemen terakhir yaitu 9 sudah terurut.

Langkah 2 : 2→6 3 4 7 9 : 2 < 6 maka tidak terjadi pertukaran2 6→3 4 7 9 : 6 > 3 maka terjadi pertukaran2 3 6→4 7 9 : 6 > 4 maka terjadi pertukaran2 3 4 6→7 9 : 6 < 7 maka tidak terjadi pertukaran2 3 4 6 7 9 : Elemen kelima yaitu 7 sudah terurut.

Langkah 3 : 2→3 4 6 7 9 : 2 < 3 maka tidak terjadi pertukaran2 3→4 6 7 9 : 3 < 4 maka tidak terjadi pertukaran 2 3 4→6 7 9 : 4 < 6 maka tidak terjadi pertukaran2 3 4 6 7 9 : Elemen keempat yaitu 6 sudah terurut.

Langkah 4 : 2→3 4 6 7 9 : 2 < 3 maka tidak terjadi pertukaran2 3→4 6 7 9 : 3 < 4 maka tidak terjadi pertukaran 2 3 4 6 7 9 : Elemen ketiga yaitu 4 sudah terurut.

Langkah 5 : 2→3 4 6 7 9 : 2 < 3 maka tidak terjadi pertukaran2 3 4 6 7 9 : Elemen kedua yaitu 3 sudah terurut

Pada akhir langkah kelima ini tinggal satu elemen pertama yang belum diproses, tetapi karena tinggal satu elemen maka dengan sendirinya sudah menempati urutan yang benar (sudah terurut) sehingga langkah tidak perliu dilanjutkan (selesai).

Algoritma : Ascending

algoritma Gravitation_Sort (A, n)

1. for i ← 1 to n—i do

2. for j ← 1 ton-i do

3. if A[j] > A[j+1) then TUKAR(A[j],A[+i])

4. endfor

5. endfor

Algoritma prosedur TUKAR:

6. TUKAR(x,y);

7. Temp ← x; x ← y; y ← Temp;

8. end;

Contoh Program :

Program Urut_GRAVITASI;

uses crt;

var i,j,k,temp,n integer;

A, B, C array [1..100] of integer;

begin

clrscr; textcolor(12);

write(’Banyaknya Elemen Array : ‘); readln(n);

{Input Data}

for i := 1 to n do

begin

write(’Elemen ke-’ ,i,’: ‘); readln(A[i]);

end;

{Cetak Array Sebelum Pengurutan}writeln; textcolor(15); write(’Sebelum diurutkan : ‘);

for i := l to n do

write(A[i],’ ‘);

writeln; textcolor(15);

writeln; writeln(’Proses Pengurutan Gravitasi : ‘);

for i := 1 to n-1 do begin

for j := 1 to n-i do begin

if A[j] > A[j+1] then begin

temp := A[j+1];

A[j+1] := A[j];

A[j] := temp;

end;

end;

writeln; textcolor(i);

Page 22: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

38 39

Modul Praktikum Alogaritma II Pengurutan/Sorting

{Cetak Array tiap Iangkah pengurutan :}write(’Hasil akhir langkah ke-’,i,’ : ‘);

for k := 1 to n do

write(A[k],’ ‘);

end;

{Cetak Array Setelah Pengurutan}writeln; writeln; textcolor(15);

write(’Hasil Pengurutan Gravitasi : ‘);

for i := 1 to n do

write(A[i],’ ‘);

writeln; writeln; textcolor(10);

write (’Sudah terurut dengan benar khan ..?‘);

readln;

end.

3. Pengurutan SELEKSI (Selection Sort)

Ide Pengurutan: Pemilihan elemen-elemen ekstrim, paling besar (maksimum) atau paling kecil (minimum), kemudian ditempatkan pada posisi yang sesuai. Langkah tersebut diulangi untuk elemen-elemen sisanya, sampai semua elemen terurut.Berdasarkan ide tersebut maka terdapat 4 variasi dalam pengurutan seleksi ini, yaitu: 1. Pengurutan Naik : Pemilihan maksimum, ditempatkan di bagian akhir. 2. Pengurutan Naik : Pemilihan minimum, ditempatkan di bagian awal. 3. Pengurutan Turun : Pemilihan maksimum, ditempatkan di bagian awal. 4. Pengurutan Turun : Pemilihan minimum, ditempatkan di bagian akhir.

Contoh:

Urutkan naik elemen-elemen array A = [6, 9, 7, 3, 2, 4] dengan pemilihan maksimum.

Langkah 1 : 6 9 7 3 2 4 : maksimumnya 9 (elemen ke-2) ditukar dengan 4 (elemen ke-6)

Hasilnya : 6 4 7 3 2 9

Langkah 2 : Elemen sisanya (yang belum terurut) : 6 4 7 3 26 4 7 3 2 : maksimumnya 7 (elemen ke-3)

ditukar dengan 2 (elemen ke-5) Hasilnya : 6 4 2 3 7 9

Langkah 3 : Elemen sisanya (yang belum terurut) : 6 4 2 36 4 2 3 : rnaksimumnya 6 (elemen ke-l)

ditukar dengan 3 (elemen ke-4) Hasilnya : 3 4 2 6 7 9

Langkah 4 : Elemen sisanya (yang belum terurut): 3 4 23 4 2 : maksimumnya 4 (elemen ke-2)

ditukar dengan 2 (elemen ke-3) Hasilnya : 3 2 4 6 7 9

Langkah 5 : Elemen sisanya (yang belum terurut): 3 23 2 : maksimumnya 3 (elemen ke-l)

ditukar dengan 2 (elemen ke-2) Hasilnya : 2 3 4 6 7 9

Pada akhir langkah ke-5 ini tinggal satu elemen yang belum diproses, tetapi karena sudah pasti menempati posisi yang sesuai maka proses tidak perlu dilanjutkan (selesai).

Algoritma : Ascending dengan memilih maksimum

algoritma Selection_Sort (A, n)

1. for i ← l to n—l do

2. imaks = 1;

3. for j ← 2 to n-i+1 do

4. if A[j] > A[imaks] then imaks ← j

5. endfor

6. TUKAR(A[imaks] ,A[n-i+l)

7. endfor

Algoritma prosedur TUKA R: 8. TUKAR(,y);

9. Temp ← x; x ← y; y ← Temp;

10. end

Silahkan dibuat programnya dan modifikasilah untuk tiga variasi yang lain.

Page 23: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

40 41

Modul Praktikum Alogaritma II Pengurutan/Sorting

Contoh Program:

program Urut_SELEKSI;

uses crt;

var i,j,k,temp,imaks,n : integer ;

A,B,C : array [1. .100] of integer;

begin

clrscr; textcolor(10);

write(’Banyaknya Elemen Array: ‘); readln(n);

{lnputData}for i := 1 to n do begin

write(’Elemen ke-’ ,i, ’: ‘); readln(A[i]);

end;

{Cetak Array Sebelum Pengurutan)writeln; textcolor(15); write(’Sebelum diurutkan : ‘);

for i := 1 to n do write(A[i],’ ‘);

writeln; writeln; textcolor(15);

writeln(’Proses Pengurutan Seleksi : ‘);

for i := 1 to n-1 do begin

imaks := i;

for j := i+1 to n do

if A[j] < A[imaks] then imaks := j;

{Tukar A[j] dengan A[imaks]}temp := A[imaks];

A[imaks] := A[i];

A[i] := temp;

writeln; textcolor(i);

{Cetak Array tiap langkah pengurutan:}write (‘Hasil akhir langkah ke-’ , i ,’ : ‘);

for k := 1 to n do

write(A[k],’ ‘);

end;

{Cetak Array Setelah Pengurutan}textcolor(15); write(’Hasil Pengurutan Seleksi : ‘);

Dari gambar di samping :Misalkan elemen ke -1 s.d. ke-5sudah terurut. Maka sekarang kita ilustrasi-kan langkah pengurutan untuk elemen ke-6 :

for i := 1 to n do write(A[i],’ ‘ );

readln;

end.

4. Pengurutan SISIP (Insertion Sort) Ide Pengurutan : Ambil sembarang elemen (misal secara beruntun mulai dari elemen kedua), bandingkan dengan elemen-elemen didepannya untuk rnendapatkan posisi yang sebenarnya (posisi terurut). Jika posisi yang benar sudah diperoleh maka tempatkan elemen tersebut ke posisi yang benar tersebut.

Langkah untuk pengurutan naik :1. Anggap elemen pertama sudah dalam kondisi terurut. 2. Mulai elemen kedua sampai elemen terakhir lakukan :

2.1. Simpan elemen tersebut dalam variabel temporary 2.2. Bandingkan dengan elemen depannya:

− Jika lebih kecil maka bandingkan lagi dengan elemen depannya lagi − Jika Iebih besar maka lakukan pergeseran elemen-elemen dari elemen sebelum

elemen tersebut sampai elemen setelah elemen yang lebih kecil itu ke kanansatu langkah, dan isilah (assign-lah) posisi yang ditinggalkan oleh elemen yang digeser tersebut yang paling kiri dengan niali variable temporary tadi.

3. Ulangi untuk elemen-elemen berikutnya sampai semua elemen terurut.

Ilustrasi,: Pengurutan naik

Elemen ke : 1 2 3 4 5 6 7 8

Setelah elemen ke-6 dibanding-bandingkan dengan elemen-elemen didepannya ternyata seharusnya elemen ke-6 menempati elemen ke-2, maka elemen ke-2 sampai ke-5 digeser ke kanan satu langkah, dan elemen ke-2 di isi oleh elemen ke-6.

Page 24: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

42 43

Modul Praktikum Alogaritma II Pengurutan/Sorting

Contoh: Urutkan naik elemen-elemen array A = [6 9 7 3 2 4]

Langkah 1 : Ambil Elemen kedua6←9 7 3 2 4 : 9 > 6 maka tidak terjadi pertukaran

Hasilnya 6 9 7 3 2 4

Langkah 2 : Ambil elemen ketiga

6 9←7 3 2 4 : 7 < 9 maka terjadi pertukaran

6←7 9 3 2 4 : 7 > 6 maka tidak terjadi pertukaran

Hasilnya 6 7 9 3 2 4

Langkah 3 : Ambil elemen keempat6 7 9←3 2 4 : 3 < 9 maka terjadi pertukaran6 7←3 9 2 4 : 3 < 7 maka terjadi pertukaran 6←3 7 9 2 4 : 3 < 6 maka terjadi pertukaran

Hasilnya 3 6 7 9 2 4

Langkah 4 : Ambil elemen kelima

3 6 7 9←2 4 : 2 < 9 maka terjadi pertukaran

3 6 7←2 9 4 : 2 < 7 maka terjadi pertukaran3 6←2 7 9 4 : 2 < 6 maka terjadi pertukaran3←2 6 7 9 4 : 2 < 3 maka terjadi pertukaran

Hasilnya 2 3 6 7 9 4

Langkah 5 : Ambil eleman keenam2 3 6 7 9←4 : 4 < 9 maka terjadi pertukaran 2 3 6 7←4 9 : 4 < 7 maka terjadi pertukaran2 3 6←4 7 9 : 4 < 6 maka terjadi pertukaran2 3←4 6 7 9 : 4 > 3 maka tidak terjadi pertukaran

Hasilnya 2 3 4 6 7 9

Algoritma : Ascending

algoritma Insertion_Sort (A, n)

1. for i ← 2 to n do

2. temp ← A[i]; j ← i-1;

3. while (temp < A[j]) and (j > 0) do

4. j ← j-1

5. endwhile

6. for k ← i downto j+1 do

7. A[k] ← A[k-1]

8. endfor

9. A[j+1] ← temp;

10. endfor

Pahami langkah pengurutan tersebut, coba implementasikan algoritmanya, dan modifikasi-lah untuk pengurutan menurun.

Contoh Program:

program INSERTION_SORT;

uses crt;

var i,j,k,temp,n : integer;

A,B,C : array [1. .100] of integer;

begin

clrscr; textcolor(12);

write(’Banyaknya Elemen Array : ‘); readln(n);

{Input Data}for i := 1 to n do

begin

write(’Elemen ke- ’ ,i,’: ‘) ; readln(A[i];

end;

{Cetak Array Sebelum Pengurutan} writeln; textcolor(15);

write(’Sebelum diurutkan : ‘);

for i := l to n do

write(A[i],’ ‘);

writeln; textcolor(15) ; writeln;

Page 25: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

44 45

Modul Praktikum Alogaritma II Pengurutan/Sorting

writeln (‘Proses Pengurutan Insertion : ‘);

for i := 2 to n do begin

temp := A[i);

j := i—1;

while (temp < A[j]) and (j > 0) do

j := j - 1;

for k := i downto j+1 do

A[k]:= A[k-1];

A[j+1]:= temp;

writeln; textcolor(i);

write(’Hasil akhir langkah ke-’ ,i-1,’ : ‘);

{Cetak Array tiap langkah pengurutan :} for k := 1 to n do

write(A[k],’ ‘);

end;

{Cetak Array Setelah Pengurutan}writeln; writeln; textcolor(15);

write(’Hasil Pengurutan Insertion ‘);

for i := 1 to n do

write(A[i),’ ‘);

writeln; writeln; textcolor(10);

write (‘ Sudah terurut dengan benar khan ..? ‘);

readln;

end.

5. Pengurutan SISIP-TUKAR (Swap-Insertion Sort) Ide Pengurutan: Mirip dengan pengurutan SISIP, bedanya jika posisi suatu elemen tidak dalam kondisi terurut maka langsung dilakukan pertukaran. Jadi tidak ada proses pergeseran. Untuk pengurutan naik : Ambil sembarang elemen (misal secara beruntun mulai darielemen kedua), bandingkan dengan elemen didepannya, jika ternyata lebih kecil maka tukarkan, dan lakukan hal yang sama dengan elemen depannya lagi, sampai diperoleh kondisi lebih besar. Ulangi untuk elemen ketiga sampai elemen terakhir.

Langkah untuk pengurutan naik :1. Anggap elemen pertama sudah dalam kondisi terurut. 2. Mulai elemen kedua sampai elemen terakhir lakukan :

2.1. Simpan (assign) variabel indeksnya ke variabel lain. 2.2. Bandingkan elemen tersebut dengan elemen depannya (gunakan variable indeks

yang baru) :- Jika lebih kecil maka tukarkan, kemudian bandingkan lagi dengan elemen depannya lagi

- Jika lebih besar maka berhenti. 3. Ulangi untuk elemen ketiga dan seterusnya sampai semua elemen terurut

Contoh: Urutkan naik elemen-elemen array A [6, 2, 9, 3, 4, 7]

Langkah 1 : Ambil elemen kedua 6←2 9 3 4 7 : 2 < 6 maka terjadi pertukaran dan

Hasilnya : 2 6 9 3 4 7Langkah pertama selesai (sudah sampai elemen terdepan)

Langkah 2 : Ambil elemen ketiga 2 6←9 3 4 7 : 9 > 6 maka tidak terjadi pertukaran dan Langkah kedua selesai, Hasilnya : 2 6 9 3 4 7

Langkah 3 : Ambil elemen keempat 2 6 9←3 4 7 : 3 < 9 maka terjadi pertukaran 2 6←3 9 4 7 : 3 < 6 maka terjadi pertukaran 2←3 6 9 4 7 : 3 > 2 maka tidak terjadi pertukaran dan Langkah ketiga selesai, Hasilnya : 2 3 6 9 4 7

Langkah 4 : Ambil elemen kelima2 3 6 9←4 7 : 4 < 9 maka terjadi pertukaran 2 3 6←4 9 7 : 4 < 6 maka terjadi pertukaran 2 3←4 6 9 7 : 4 > 3 maka tidak terjadi pertukaran danLangkah keempat selesai, Hasilnya : 2 3 4 6 9 7

Langkah 5 : Ambil elemen keenam2 3 4 6 9←7 : 7 < 9 maka terjadi pertukaran 2 3 4 6←7 9 : 7 > 6 maka tidak terjadi pertukaran dan Langkah kelima selesai, Hasilnya : 2 3 4 6 7 9

Page 26: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

46 47

Modul Praktikum Alogaritma II Pengurutan/Sorting

Algoritma : Ascending algoritma Insertion_Swap_Sort (A, n)

1. for i ← 1 to n-1 do

2. j ← i+i;

3. while (A[j] < A[j-l]) and (j > 1) do begin

4. TUKAR(A[j] ,A[j-1]);

5. j ← j - 1;

6. endwhile

7. endfor

Algoritma prosedur TUKAR:

8. TUKAR(x,y);

9. Temp ← x; x ← y; y ← Temp;

10. end;

Contoh Program :

Program INSERTION_SWAP_SORT;

uses crt;

var i,j,k,temp,n : integer;

A,B,C : array [1. .100] of integer;

begin

clrscr; textcolor(12);

write (‘Banyaknya Elemen Array : ‘); readln(n);

{Input Data}for i := 1 to n do

begin write(’Elemen ke-’ ,i,’: ‘) ; readln(A[i]);

end;

{Cetak Array Sebelum Pengurutan}writeln; textcolor(15); write(’Sebelum diurutkan : ‘);

for i := 1 to n do write(A[i], ’ ‘ );

writeln; textcolor(15); writeln;

writeln (‘Proses Pengurutan Swap_Insertion: ‘);

for i := 1 to n-1 do begin

j := i + 1;

while (A[j] < A[j-1]) and (j > 1) do begin

temp := A[j-1];

A[j-1]:= A[j];

A[j]:= temp;

j := j — 1;

end;

writeln; textcolor(i);

write(’Hasil akhir langkah ke-’,i,’ : ‘);

{Cetak Array tiap Iangkah pengurutan:}for k := 1 to n do write(A[k],’ ‘);

end;

{Cetak Array Setelah Pengurutan}writeln; writeln; textcolor(15);

write(’Hasil Pengurutan Insertion : ‘);

for i := 1 to n do write(A[i],’ ‘);

readln;

end.

Contoh Program sorting_bubble_selection;

uses crt;

Type larik = array [1..10] of byte’

objek = object

bykdata : byte;

dataawal : larik;

procedure input;

procedure tukar (var a,b : byte);

procedure bubble (data : larik);

procedure selection (data : larik);

procedure cetak (data : larik);

end;

procedure objek.input;

var I : byte

begin

repeat

write( ‘Banyak Data [max 110] ? ’);

readln (bykdata);

if (bykdata > 10) then

begin

writeln ( ‘Data yang dimasukkan kebanyakan ’);

readkey; writeln;

Page 27: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

48 49

Modul Praktikum Alogaritma II Pengurutan/Sorting

end;

until (bykdata <= 10);

for i := 1 to bykdata do

begin

write(‘ Data ke- ‘,i,’= ’); readln (dataawal[i]);

end;

end;

procedure objek.tukar (var a, b : byte);

var temp : byte;

begin

temp := a; a := b; b := temp;

end;

procedure objek.bubble (data : larik);

var i,j : byte;

begin

clrscr;

writeln (‘ bubble sort ’);

write (‘awal : ‘);

cetak (data);

for i := 1 to bykdata-1 do

begin

if (data [j] > data[j+1] then

tukar(data[j], data[j+1]);

gotoxy (6, wherey);

end; readkey;

end;

write (‘ akhir : ’);

cetak (data); readkey;

end;

procedure objek.selection (data : larik);

var i, j, lok : byte;

begin

clrscr;

writeln(‘selection sort’); write (‘awal ’);

cetak (data);

for i := 1 to bykdata do

begin

lok := i ;

for j := i+1 to bykdata do

if (data[lok] > data [j] then

lok := j; tukar (data [i], data[lok]);

write (‘I = ‘,i,’ lok = ‘, lok);

cetak(data);

end;

procedure objek.cetak (data : larik);

var i : byte;

begin

for i := 1 to bykdata do

begin

gotoxy (i*10, wherey);

write(data[i] : 5);

end; writeln;

end;

var sort : objek;

begin

clrscr;

sort.input;

sort.bubble (sort.dataawal);

sort.selection (sort.dataawal);

end.

Program Sorting_swap_insertion;uses crt;

Type larik = array [1..10] of byte;

Objek = object

Bykdata : byte;

Dataawal : larik;

procedure input;

Page 28: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

50 51

Modul Praktikum Alogaritma II Pengurutan/Sorting

procedure tukar (var a,b : byte);

procedure swa_insertion (data : larik);

procedure cetak (data : larik);

end;

procedure objek.input;

var i : byte

begin

repeat

write(‘Banyak Data [max 110] ? ’);

readln (bykdata);

if (bykdata > 10) then

begin

writeln (‘ Data yang dimasukkan kebanyakan ’);

readkey;

writeln;

end;

until (bykdata <= 10);

for i := 1 to bykdata do

begin

write(‘ Data ke- ‘,i,’= ’);

readln (dataawal[i]);

end;

end;

procedure objek.tukar (var a, b : byte);

var temp : byte;

begin

temp := a; a := b; b := temp;

end;

procedure objek.swap_insertion (data : larik);

var i, j, lok : byte;

begin

clrscr;

writeln (‘ swap insertion sort ’);

write (‘awal ‘);

cetak (data);

for i := 1 to bykdata-1 do

begin

write(‘I = ‘,i,’ ’);

j := i+1;

begin

while (data[j] < data [j-1]) and (j > 1) do

begin

tukar (data[j], data [j-1]); j := j-1;

{gotoxy (6, wherey);}

{write (‘J = ‘,j); }

Cetak (data);

end;

end;

writeln (‘ akhir = ’);

cetak (data);

readkey;

end;

end;

procedure objek.cetak (data : larik);

var i : byte;

begin

for i := 1 to bykdata do

begin

gotoxy (i*10, wherey);

write(data[i] : 5);

end;

writeln;

end;

var sort : objek;

begin

clrscr;

sort.input;

sort.swap_insertion(sort.dataawal);

end.

* * *

Page 29: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

52 53

Modul Praktikum Alogaritma II

Merging adalah proses penggabungan dua array yang elemen-elemennya sudah terurut sehingga array hasil penggabungan tersebut juga terurut.

Contoh: Array A = [2, 5, 10, 12, 15, 17] Array B = [4, 6, 7, 11, 16, 18,20] Misalkan array C adalah hasil proses merging array A dan B tersebut maka :Array C = [2, 4, 5, 6, 7, 10, 11, 12, 15, 16, 17, 18, 20]

TUGAS: Buatlah program Merging dari dua array, misalkan array A dan B denganbanyaknya elemen masing-masing array tidak sama. Hasil Penggabungan simpan pada array C.

Struktur programnya :

Nama program

Deklarasi varabel

begin

1. input bilangan untuk banyaknya elemen array A misal m

2. generate array A : misal dengan random(1l0)

3. proses pengurutan array A

4. cetak array A

5. input bilangan untuk banyaknya elemen array B misal n

6. generate array B : misal dengan random(100)

7. proses pengurutan array B

8. mencetak array B

9. proses penggabungan (merging)

1O. cetak array C (hasil merging))

end.

Penggabungan/merging array

6

Page 30: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

54 55

Modul Praktikum Alogaritma II Penggabungan/Merging Array

Saran : akan lebih baik jika dibuat juga prosedur pengurutan (dengan algoritma apa saja : Bubble atau Selection atau Insertion), sehingga pada proses pengurutan masing-masing array A dan B tinggal panggil prosedur pengurutan tersebut.

Algoritma Merging:

Langkah 0 : Baca kedua vektor yang akan dimerge, vektor A dan vektor B, banyaknya elemen pada kedua vektor, Ca dan Cb. Lakukan proses pengurutan secara urut naik pada kedua vektor ini.

Langkah 1 : (Menentukan subskrib awalan)Tentukan: I = 1, J = 1, dan Cc = 0

Langkah 2 : (Proses merging berlangsung)Kerjakan langkah 3 dan 4 sampai (I > Ca) atau ( J > Cb)

Langkah 3 : Tentukan : Cc = Cc + 1.

Langkah 4 : Test apakah : A[I] < B [J] ?Jika ya, tentukan : C[Cc] = A[I], dan I= I + 1.Jika tidak, tentukan : C[Cc] = B[j], dan J = J +1.

Langkah 5 : Test apakah I > Ca ?Jika ya, berarti semua elemen pada vektor pertama sudah diproses semua, kerjakan langkah 6.Jika tidak, berarti semua elemen pada vektor kedua sudah diproses semua, kerjakan langkah 7.

Langkah 6 : Untuk K = J sampai Cb, Tentukan :Cc = Cc + 1, dan C[Cc] = B[k],Dan melompat kelangkah 8.

Langkah 7 : Untuk K = I sampai Cb, tentukan :Cc = Cc + 1, dan C[Cc] = A[k].

Langkah 8 : Selesai.

Contoh Program :

PROGRAM MERGING_ARRAY;

uses crt;

var i,j,k,m,n,y,Temp : integer;

A,B,C : array[1. .100] of integer;

Procedure Cetak_array(A:array of integer; x:integer);

var i : integer;

begin

write(’ Hasilnya : ‘);

for i:= 0 to x-1 do write(A[i], ’ ‘);

end;

procedure sisip(var A : array of integer; x:integer);

var i,j,temp : integer;

begin

for i := 1 to x-1 do

begin

temp := A[i]; j := i;

while (temp < A[j-1]) and (j > 0) do

j := j — 1;

for k := i downto j do

A[k] := A[k-1];

A[j] := temp;

end;

end;

procedure Gabung(A,B array of integer; m,n : integer;

var C : array of integer; var x : integer);

var i, j, k, y : integer;

begin

i := 0; j := 0; k := 0;

while (i <= m) and (j <= n) do

begin

if A[i] < B[j) then

begin

Page 31: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

56 57

Modul Praktikum Alogaritma II Penggabungan/Merging Array

C[k]:= A[i];

i := i + 1;

end

else

begin

C[k] := B[j];

j := j + 1;

end;

k := k + 1;

write(’i=’,i,’ j=’,j,’ k=’,k,’ ‘);

cetak_array(C,k-1);

writeln;

end;

if i > m then

begin

for y := k-1 to m+n do

begin

C[y] := B[j];

j := j + 1;

end;

end

else

if j > n then

begin

for y := k-1 to m+n do

begin

C[y] := A[i];

i := i + 1;

end;

end;

write(’Setelah penggabungan : ‘); cetak_array(C,y);

x := y;

end;

begin

clrscr;

randomize;

writeln(’ M E R G I N G’);

write(’Banyaknya elemen array pertama : ‘);

readln(m);

write(’Banyaknya elemen array kedua : ‘);

readln(n);

for i := 1 to m do

A[i] := random(100);

for i := 1 to n do

B[i] := random(100);

writeln( ‘Sebelum Penggabungan : ‘);

sisip(A,m);

write(’ Array pertama : ‘);

cetak_array(A,m); writeln;

sisip(B,n);

write(’ Array kedua : ‘);

cetak_array(B,n); writeln;

writeln(’Proses Penggabungan : ‘);

Gabung(A,B,m,n,C,y);

writeln;

write(’Setelah penggabungan : ‘);

cetak_array(C,y);

readln;

end.

Metoda MergeSort

Metoda MergeSort atau yang sering disebut juga dengan metoda MergeSort Dua Arah (Two-way MergeSort). Metoda ini memanfaatkan keteraturan yang diperoleh dari hasil merging dua buah vektor.

Vektor masukan dianggap yang mempunyai elemen dianggap sebagai N buah vektor yang masing-masing terdiri dari sebuah vektor. Untuk setiap pasang vektor kita lakukan proses

Page 32: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

58 59

Modul Praktikum Alogaritma II

merging sehingga akan kitaperoleh N/2 vektor yang masing-masing terdiri dari 2 elemen ( jika ganjil, akan terdapat sebuah vektor dengan 1 elemen). Kemudian dilakukan merging kembali untuk setiap pasang vektor, sehingga kita peroleh N/4 buah vektor. Langkah ini kita teruskan sampai kita memperoleh sebuah vektor yang sudah dalam keadaan urut.

Ilustrasi

15 12 45 56 13 10 43 34 56 65

15 12 45 56 13 10 43 34 56 65

12 15 45 56 10 13 34 43 56 65

12 15 45 56 10 13 34 43

56 65

3415 43131210 45 56 56 65

4543 56 56 653415131210

Dengan tipe data record, dapat dikumpulkan beberapa item data yang masing-masing dengan tipe data berbeda-beda. Masing-masing item data itu disebut field. Jadi record terdiri dari kumpulan field yang dapat berbeda tipe. Biasanya record berisi beberapa field untuk sebuah subyek tertentu.

Deklarasi Record :Type nama_record = Record

field1; field2; ….fieldn;

end;Contoh:Type Mhs= Record

NPM : integer [12];Nama: string[25];Alamat: string[50];End;

Var Mahasiswa: Mhs;

Var Mahasiswa: RecordNPM : integer [12];Nama: string[25];Alamat: string[50];End;

Cara pemanggilannya:Mahasiswa.NPMMahasiswa.NamaMahasiswa.Alamat

Statement with digunakan untuk mempersingkat penulisan record sehingga tidak perlu menuliskan lagi nama recordnya.

Tipe Data Record dapat juga mempunyai Field berupa Tipe Data Record yang lainnya.

recorD

7

Page 33: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

60 61

Modul Praktikum Alogaritma II Record

Contoh Program Type Data Record.

Type Hasil = Record

JariJari : real;

Keliling : real;

Luas : real;

End;

Var Lingkaran : Hasil;

Begin

With Lingkaran Do

Begin

Write (‘Jari-Jari lingkaran? ‘); readln (JariJari);

Keliling := 2*PI*JariJari;

Luas := PI * sqr(JariJari);

Writeln;

Writeln (‘Keliling Lingkaran = ‘, Keliling:7:2);

Writeln(‘Luas Lingkaran = ‘, Luas:7:2);

End;

End;

Contoh mengurutkan data mahasiswa berdasarkan NPM dengan Ascending (Mengurut Naik).

TypeDataMhs = Record

NPM : Integer;Nama : String[20];IP : Real;

End;Var

JumlahMhs, I, J : Byte;Mahasiswa : Array [1..50] of DataMhs;Temp : DataMhs;

Begin{masukkan data mahasiswa}

Write (‘Jumlah Mahasiswa ? ‘); Readln(JumlahMhs);For I := 1 to JumlahMhs Do

BeginWriteln;

With Mahasiswa[I] DoBeginWriteln;Write(‘NPM ke ‘, I:2,’ ? ‘); Readln (NPM);Write (‘Nama Mahasiswa ke ‘, I:2,’ ? ‘); Readln (Nama);Write (‘IP Mahasiswa ke ‘, I:2, ‘ ? ‘); Readln (IP);

End;End;{Mengurutkan data berdasarkan NPM mahasiswa dengan Bubble Sort}For I:= 1 to JumlahMhs-1 Do

For J:= 1 to JumlahMhs-I doIf Mahasiswa[J].NPM > Mahasiswa[J+1].NPM then

BeginTemp := Mahasiswa[J];Mahasiswa [J] := Mahasiswa [J+1];Mahasiswa [J+1] := Temp;

End;{menampilkan hasil}Writeln;Writeln(‘-----------------------------------------------------------------------‘);Writeln(‘ NPM Nama Mahasiswa IP ‘);Writeln(‘-----------------------------------------------------------------------‘);For I := 1 to JumlahMhs DoBegin

With Mahasiswa[I] DoWriteln (NPM:5, Nama:20, IP:11:2);

End;Writeln(‘-----------------------------------------------------------------------‘);End.

Contoh Tipe Data Record dengan Tipe Data Record Lainnya.

Type TglLhr = Record

Hari : 1..31;Bulan : 1..12;Tahun : Word;

Page 34: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

62 63

Modul Praktikum Alogaritma II

End;Almt = Record

Jalan : String[35];Kota : String [25];

End;Mhs = Record

Nama: String[25];Alamat : Almt;TglLahir : TglLhr;

End;Var

DataMhs : Mhs;Begin{masukkan data Mahasiswa}DataMhs.Nama := ‘Intan’;DataMhs.Alamat.Jalan := ‘Muara 2’;DataMhs.Alamat.Kota := ‘Jakarta’;DataMhs.TglLahir.Hari := ‘19’;DataMhs.TglLahir.Bulan := ‘11’;DataMhs.TglLahir.Tahun := ‘198X’;{menampilkan hasil}With DataMhs DoBegin

Writeln (‘Nama Mahasiswa = ‘, Nama);With Alamat DoBegin

Writeln (‘Alamat = ‘, Jalan);Writeln (‘ ‘, Kota);

End;With TglLahir DoBegin

Writeln (‘Tanggal Lahir = ‘,Hari:2, ‘ -‘, Bulan:2, ‘ -‘, Tahun:4);End;End;End.

Bila data yang perlu disimpan mempunyai volume yang cukup besar, maka penggunaan variable atau larik sudah tidak tepat lagi, karena variable dan larik menggunakan memory internal computer yang bersifat terbatas dan volatile (hilang jika aliran listrik terputus). Oleh karena itu File digunakan untuk menyimpan data bervolume yang besar dengan menyimpannya di eksternal memory yang relative punya kapasitas yang besar dan bersifat nonvolatile (data tidak hilang jika aliran listrik putus, permanen).

Prosedur dan Fungsi StandarAssignAssign digunakan untuk menghubungkan nama dari eksternal file ke dalam suatu file variable dengan sintaks:

Assign (f, name : string);Ket: f adalah file variable

Name adalah eksternal file yang akan digunakan.Contoh: Assign(Rekam, ‘A:Data.DAT’);

Assign (Cetak, ‘LPT1’);

RewriteRewrite digunakan untuk membuka file yang baru atau yang belum pernah ada di disk dengan sintaks:

Rewrite (f[:file; recsize : word]);Ket:

f adalah file variable yang sudah dihubungkan dengan eksternal file menggunakan prosedur standar Assign. Recsize adalah ukuran dari record yang digunakan.

Contoh:Assign (Rekam, ‘A: GAJI.DAT’);Rewrite(Rekam);

Rewrite akan menghapus isi yang sebelumnya sudah ada di file.

FiLe teks

8

* * *

Page 35: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

64 65

Modul Praktikum Alogaritma II File Teks

Write dan WritelnWrite dan writeln akan menuliskan data-data yang akan direkamkan ke file teks. Perbedaannya adalah prosedur write belum memberikan tanda akhir baris sedang writeln sudah memberikan tanda akhir baris.

Sintaks:Write ([var f : text;] v1[,v2, …, vn]);Writeln ([var f : text;] v1[,v2, …, vn]);

Contoh:Writeln (TipeFile, KodeBrg:5, NamaBrg:20, UnitBrg, HargaBrg:10:2);CloseClose digunakan untuk menutup file yang telah dibuka dengan prosedur Rewrite, Reset, Append dengan sintaks:

Close (f);Ket: f adalah file variable yang sudah dihubungkan dengan eksternal file menggunakan prosedur Assign.Contoh: Close (Rekam);

Langkah-langkah untuk membuat file teks yang baru:1. deklarasikan sebuah file variable dengan tipe file text.2. Hubungkan file variable ini dengan external file yang akan digunakan dengan

prosedur Assign.3. File teks yang baru dibuka dengan prosedur Rewrite.4. Masukkan data yang akan direkam ke file pada variable-variabel.5. Rekam data yang ada di variable-variabel ke file teks dengan menggunakan prosedur

write atau writeln. 6. Ulangi langkah 4 dan 5 bila rekam data belum selesai.7. tutup file teks bila operasi file telah selesai menggunakan prosedur Close.

Contoh Program File Teks

Uses crt;Var

BerkasTeks : Text; {variable file}KodeBrg : String[5];NamaBrg : String[20];UnitBrg : Integer;HargaBrg : Real;Lagi : Char;

BeginAssign (BerkasTeks, ‘Barang.txt’) {hubungan dengan eksternal file}Rewrite(BerkasTeks); {buka file}

Lagi := ‘Y’;While Upcase (Lagi) = ‘Y’ DoBegin

Clrscr;gotoXY(5,6); Write (‘Kode Barang : ‘);gotoXY(5,8); Write (‘Nama Barang : ‘);gotoXY(5,10); Write (‘Unit Barang : ‘);gotoXY(5,12); Write (‘Harga Satuan Barang: ‘);

{Masukkan data ke variable-variabel}gotoXY(27,6); readln(KodeBrg);gotoXY(27,8); readln(NamaBrg);gotoXY(27,10); readln(UnitBrg);gotoXY(27,12); readln(HargaBrg);

{rekam di file}Writeln(BerkasTeks,KodeBrg:5,NamaBrg:20,UnitBrg,HargaBrg:10:2);gotoXY(5,15); Write(‘Ada data lagi (Y/T) ? ‘ ); Readln(Lagi);end;

{tutup file}Close (BerkasTeks);End.

* * *

Page 36: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

66 67

Modul Praktikum Alogaritma II File Teks

Page 37: Modul PraktikuM algoritMa ii - informatikaunindra.orginformatikaunindra.org/file/ALGORITMA 2/Diktat/MODUL PRAKTIKUM... · Modul Praktikum Alogaritma Array (Larik) adalah ... Struktur

68

Modul Praktikum Alogaritma II