MODUL PRAKTIKUM I -...

21
1

Transcript of MODUL PRAKTIKUM I -...

Page 1: MODUL PRAKTIKUM I - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../Modul-Praktikum-Algoritma-dan-Pemrograman... · 2 Universitasriwijaya FakultasIlmu Komputer Laboratorium LEMBAR PENGESAHAN

1

Page 2: MODUL PRAKTIKUM I - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../Modul-Praktikum-Algoritma-dan-Pemrograman... · 2 Universitasriwijaya FakultasIlmu Komputer Laboratorium LEMBAR PENGESAHAN

2

Universitas riwijayaFakultas IlmuKomputerLaboratorium

LEMBARPENGESAHAN

MODULPRAKTIKUM

SISTEMMANAJEMENMUTU ISO9001:2008

No. Dokumen Tanggal 4 AGUSTUS 2011Revisi Halaman 2 DARI 48

MODUL PRAKTIKUM

Mata Kuliah Praktikum : Algoritma dan Pemrograman IIKode Mata Kuliah Praktikum : FIK124004SKS : 1Program Studi : SISTEM INFORMASISemester : 2 (Genap) 2016/2017

DIBUAT OLEH DISAHKAN OLEH DIKETAHUI OLEH

DOSEN PENGAMPU

Dwi Rosa Indah, M.T.

KETUA JURUSAN

Endang Lestari R, M.T.

WAKIL DEKAN 1BIDANG AKADEMIK

Syamsuryadi, S. SI., M. Kom

Page 3: MODUL PRAKTIKUM I - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../Modul-Praktikum-Algoritma-dan-Pemrograman... · 2 Universitasriwijaya FakultasIlmu Komputer Laboratorium LEMBAR PENGESAHAN

3

DAFTAR ISI

DAFTAR ISI............................................................................................................................... 1Bab 1. Array ............................................................................................................................... 21.1. Definisi............................................................................................................................. 21.2. Deklarasi.......................................................................................................................... 21.3. Mengakses Elemen Array .............................................................................................. 21.4. Inisialisasi ........................................................................................................................ 31.5. Array String..................................................................................................................... 41.6. Array Berdimensi Dua ................................................................................................... 51.6.1. Deklarasi ................................................................................................................... 5

Latihan Program ................................................................................................................... 6Bab 2. Pointer............................................................................................................................. 82.1. Definisi............................................................................................................................. 82.2. Deklarasi.......................................................................................................................... 82.3. Operator Pointer ............................................................................................................. 8Latihan Program ................................................................................................................... 9

Bab 3. Tipe Bentukan............................................................................................................... 103.1. Definisi........................................................................................................................... 103.2. Enumerasi...................................................................................................................... 103.3. Struktur.......................................................................................................................... 113.3.1. Deklarasi Suatu Struktur ....................................................................................... 113.3.2. Mengakses Elemen-Elemen Struktur ................................................................... 12

3.4. typedef............................................................................................................................. 133.4. Abstract Data Type ......................................................................................................... 13Latihan Program ................................................................................................................. 14

Bab 4. Pencarian....................................................................................................................... 154.1. Definisi........................................................................................................................... 154.2. Metode Pencarian ........................................................................................................ 154.3. Sequential Search ............................................................................................................ 154.4. Binary Search .................................................................................................................. 16

Bab 5. Pengurutan ................................................................................................................... 185.1. Definisi........................................................................................................................... 185.2. Metode Pengurutan...................................................................................................... 185.2.1. Bubble Sort ............................................................................................................... 185.2.2. Selection Sort............................................................................................................ 19

Latihan Program ................................................................................................................. 19

Page 4: MODUL PRAKTIKUM I - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../Modul-Praktikum-Algoritma-dan-Pemrograman... · 2 Universitasriwijaya FakultasIlmu Komputer Laboratorium LEMBAR PENGESAHAN

4

Bab 1. Array

1.1.Definisi

Array adalah kumpulan dari nilai-nilai data bertipe sama dalam urutan tertentu yangmenggunakan sebuah nama yang sama. Nilai-nilai data di suatu array disebut dengan elemen-elemen array. Letak urutan dari suatu elemen array ditunjukkan oleh suatu subscript atau suatuindex.Elemen-elemen array tersusun secara sekuensial dalam memori komputer. Array dapatberdimensi satu, dua, tiga atau lebih. Array dimensi satu (one-dimensional array) mewakili bentuksuatu vektor. Array dimensi dua (two-dimensional array) mewakili bentuk dari suatu matrik atautabel. Array dimensi tiga (three-dimensional array) mewakili bentuk suatu ruang.

1.2.Deklarasi

Suatu array dapat dideklarasikan dengan menyebutkan jumlah dari elemennya yang ditulisdiantara tanda ‘[ ]’. Contoh :

Algoritma :

Page 5: MODUL PRAKTIKUM I - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../Modul-Praktikum-Algoritma-dan-Pemrograman... · 2 Universitasriwijaya FakultasIlmu Komputer Laboratorium LEMBAR PENGESAHAN

5

x : array [1...5] of integer

Program :

int x[5];

menunjukkan suatu array dimensi satu dengan nama X dideklarasikan dengan tipe data int yangmempunyai lima buah elemen. Tipe data yang digunakan pada array dapat berupa tipe datadasar, tipe seperti abstract data type atau bahkan kelas. Gambaran array :

Elemen ke- 0 1 2 3 4

Nilai 23 34 32 12 25

Terlihat bahwa pendeklarasian array meliputi :1. tipe data elemen array2. nama array3. jumlah elemen array

1.3. Mengakses Elemen Array

Setelah suatu array dideklarasikan, elemen array dapat diakses dengan bentuk :

nama_array[subscript]

sebagai contoh, untuk mengakses nilai 34, dapat diakses dengan menyebutkan :

X[1]

Dalam bentuk yang lebih umum :

X[i]

Catatan : i menunjukkan subscript atau indeks yang ingin diakses. Subscript dari array selalu

dimulai dari 0.

1.4. Inisialisasi

Array dapat diberi nilai awal (inisialisasi) pada saat dideklarasikan. Misalnya :

int X[5] = {25, 64, 5, 78, 51}; .....(1)

atau

int X[] = {25, 64, 5, 78, 51}; .....(2)

Page 6: MODUL PRAKTIKUM I - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../Modul-Praktikum-Algoritma-dan-Pemrograman... · 2 Universitasriwijaya FakultasIlmu Komputer Laboratorium LEMBAR PENGESAHAN

6

Inisialisasi juga dapat dilakukan tanpa menyebutkan jumlah elemennya (cara 2). Array ini disebutdengan array yang tidak berukuran. Untuk memberikan nilai 0 terhadap seluruh elemen arraypada saat didefinisikan, dapat dilakukan dengan memberikan nilai 0 terhadap elemen pertama.Contoh :

int tmp[100] = { 0 };

sama saja memberikan nilai 0 dari subscript bernilai 0 hingga 99.

Contoh Program :

1.5. Array String

Bahasa C dan bahasa C++ tidak menyediakan tipe data khusus untuk nilai string. Akan tetapi,nilai suatu string dapat dibentuk dari array karakter berdimensi satu.

Suatu konstanta string ditulis dengan awalan dan akhiran tanda petik ganda (“). Misalnya :

char teks[4]= “C++”;

Konstanta string seperti di atas disimpan dalam memori secara berurutan, dengan susunan :

Page 7: MODUL PRAKTIKUM I - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../Modul-Praktikum-Algoritma-dan-Pemrograman... · 2 Universitasriwijaya FakultasIlmu Komputer Laboratorium LEMBAR PENGESAHAN

7

indeks 1 2 3 4Karakter C + + \0

Setiap karakter menempati memori sebesar 1 byte. Setelah karakter yang terakhir terdapatkarakter NULL (karakter dengan nilai ASCII sama dengan nol atau disimbolkan dengan ‘\0’,yaitu tanda \ diikuti dengan nol). Bila suatu string hanya berisi karakter NULL, string disebutsebagai string kosong.

Contoh Program :

1.6. Array Berdimensi Dua

Matriks adalah sekumpulan informasi yang setiap individu elemennya terdefinisi berdasarkandua buah indeks (yang biasanya dikonotasikan dengan baris dan kolom). Setiap elemen matriksdapat diakses secara langsung jika kedua indeks diketahui, dan indeksnya harus bertipe yangmempunyai keterurutan (suksesor), misalnya integer.

Karena matriks sebenarnya adalah array, maka konsep umum dari array juga berlaku untukmatriks yaitu :

1. kumpulan elemen yang bertipe sama. Tipe elemen matriks dapat berupa tipe dasar(integer, real, boolean, char, dan string), atau tipe terstruktur seperti record.

2. setiap elemen data dapat diakses secara langsung jika indeksnya (baris dan kolom)diketahui, dalam hal ini indeks menyatakan posisi relatif di dalam kumpulannya.

3. merupaka struktur data statik, artinya jumlah elemennya sudah dideklarasikan terlebihdahulu dan tidak bisa diubah selama pelaksanaan program.

1.6.1.Deklarasi

Mendeklarasikan matriks artinya menentukan nama matriks, tipe data, dan ukurannya.Pendeklarasian matriks di dalam teks algoritma ditulis dalam bagian DEKLARASI. Kata kunciyang dipakai untuk matriks tetap array.Ada beberapa cara pendeklarasian matriks :

1. sebagai nama peubahAlgoritma :DEKLARASI

M : array [1..5, 1..4] of integer

Program ://deklarasi

Page 8: MODUL PRAKTIKUM I - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../Modul-Praktikum-Algoritma-dan-Pemrograman... · 2 Universitasriwijaya FakultasIlmu Komputer Laboratorium LEMBAR PENGESAHAN

8

int M[5][4];

2. sebagai tipeAlgoritma :DEKLARASI

type Mat : array [1..5, 1..4] of integerM : Mat

Program ://deklarasi

typedef int Mat[5] [4];Mat M;

3. mendefinisikan ukuran maksimum matriks sebagai sebuah konstantaAlgoritma :DEKLARASI

const NbarisMaks = 20 {jumlah baris maksimum}const NkolomMaks = 20 {jumlah kolom maksimum}M : array [1..NbarisMaks, 1..NkolomMaks] of integer

Program ://deklarasi

const int NbarisMaks = 20;const int NkolomMaks = 20;int M[NbarisMaks][NkolomMaks];

Algoritma Pemrosesan Matriks :

procedure InputMatriks (input/output M : MatriksInt, input Nbar, Nkol : integer){Mengisi elemen matriks M[1..Nbar, 1..Nkol] dari papan ketik dengan menggunakanpetunjuk pembacaan.}

{K. Awal : Nbar dan Nkol sudah terdefinisi dengan banyaknya baris dan kolommatriks}{K. Akhir : Seluruh elemen matriks M sudah berisi nilai yang dibaca dari pirantimasukan}

DEKLARASIi : integer {indeks baris}j : integer {indeks kolom}

ALGORITMAfor i ß 1 to Nbar do

for j ß 1 to Nkol dowrite (‘Ketikkan Elemen M[‘,i,’,’,j,’] : ‘) {petunjuk pembacaan}read (M[i,j])

endforendfor

procedure CetakMatriks (input M : MatriksInt, input Nbar, Nkol : integer){Mencetak elemen matriks M[1..Nbar, 1..Nkol] ke piranti keluaran.}{K. Awal : elemen-elemen matriks sudah terdefinisi harganya.}{K. Akhir : seluruh elemen matriks sudah tertulis ke piranti keluaran.}

DEKLARASIi : integer {indeks baris}j : integer {indeks kolom}

ALGORITMAfor i ß 1 to Nbar do

for j ß 1 to Nkol do

Page 9: MODUL PRAKTIKUM I - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../Modul-Praktikum-Algoritma-dan-Pemrograman... · 2 Universitasriwijaya FakultasIlmu Komputer Laboratorium LEMBAR PENGESAHAN

9

write (M[i,j])endfor

endfor

Latihan Program :1. Buatlah program untuk menghitung nilai total, rata-rata, dan deviasi standar dari

sekumpulan nilai (input user manual):n

Total = Xii 1

mean = Total / NN (Xi

standar deviasi = i 1

mean)2

n

2. Buatlah program untuk memasukkan nama, NIM, dan alamat anda. Setelah itu tampilkannama, NIM, dan alamat yang telah anda masukkan.

3. Buatlah program untuk menjumlahkan dua buah matriks dengan menggunakan prosedurprocedure JumlahMatriks (input A, B : MatriksInt, Nbar,

Nkol : integer,output C : Matriks)

{Menjumlahkan matriks A dan B, yaitu A + B = C.}{K. Awal : Matriks A dan B sudah terdefinisi elemen-elemennya.}{K. Akhir : Matriks C berisi hasil penjumlahan A dan B.}

DEKLARASIi : integer {indeks baris}j : integer {indeks kolom}

ALGORITMAfor i ß 1 to Nbar do

for j ß 1 to Nkol doC[i,j] ß A[i,j] + B[i,j]

endfor endfor

Page 10: MODUL PRAKTIKUM I - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../Modul-Praktikum-Algoritma-dan-Pemrograman... · 2 Universitasriwijaya FakultasIlmu Komputer Laboratorium LEMBAR PENGESAHAN

10

Bab 2. Pointer

2.1.DefinisiSuatu pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat lokasi suatu memoritertentu. Jadi, suatu pointer bukan berisi suatu nilai data, tetapi berisi suatu alamat.

Pointer merupakan tipe data berukuran 32 bit yang berisi satu nilai yang berpadanan denganalamat memori tertentu. Sebagai contoh, sebuah variabel P bertipe pointer bernilai 0x0041FF2A,berarti P menunjuk pada alamat memori 0041FF2A.

2.2.DeklarasiVariabel pointer dideklarasikan dengan diawali suatu asterik ( * ).

Contoh :char *x;

Statement di atas mendeklarasikan variabel x yang merupakan pointer. Penyebutan tipe data charberarti bahwa alamat memori yang ditunjuk oleh x dimaksudkan untuk berisi data bertipe char.

Contoh Program :

2.3. Operator Pointer

Ada 2 buah operator untuk operasi pointer, yaitu ‘*’ dan operator ‘&’. Operator ‘&’ digunakanuntuk mendapatkan alamat memori dari operandnya. Sedangkan operator ‘*’ digunakan untukmendapatkan nilai dari variabel yang ditunjuk oleh operandnya. Operand untuk operator ‘*’adalah variabel pointer.

Page 11: MODUL PRAKTIKUM I - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../Modul-Praktikum-Algoritma-dan-Pemrograman... · 2 Universitasriwijaya FakultasIlmu Komputer Laboratorium LEMBAR PENGESAHAN

11

Contoh Program :Program 1:

Program 2:

Latihan Program :Buatlah program untuk mengetahui alamat memori setiap karakter dari suatu string “komputer”

Page 12: MODUL PRAKTIKUM I - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../Modul-Praktikum-Algoritma-dan-Pemrograman... · 2 Universitasriwijaya FakultasIlmu Komputer Laboratorium LEMBAR PENGESAHAN

12

Bab 3. Tipe Bentukan

3.1.DefinisiTipe bentukan adalah suatu tipe yang dirancang / dibentuk (dan diberi nama) dari beberapakomponen bertipe tertentu. Jadi, tipe bentukan merupakan sekumpulan elemen bertipe dasar ataubertipe yang sudah dikenal. Tipe bentukan seringkali disebut sebagai tipe komposisi, agregat.

3.2.Enumerasi

Enumerasi adalah suatu tipe data yang mempunyai elemen-elemen bernilai konstanta denganurutan yang sudah tertentu. Nilai-nilai dari konstanta elemen ini berupa nilai-nilai integer yangdiwakili oleh nama-nama pengenal yang ditulis di antara kurung ‘ { ‘ dan kurung ‘ } ‘. Tipe dataenumerasi dapat dideklarasikan dengan menggunakan kata kunci enum dan berguna untukmendefinisikan dengan lebih jelas suatu himpunan nilai yang pasti.

Contoh :{tipe hari menyatakan enumerasi nama hari dalam minggu}

tipe hari : (senin, selasa, rabu, kamis, jumat, sabtu, minggu)

Jika dideklarasikan sebuah variabel H sebagai berikut :H : hari {artinya : H adalah Hari}

Contoh Program :

Page 13: MODUL PRAKTIKUM I - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../Modul-Praktikum-Algoritma-dan-Pemrograman... · 2 Universitasriwijaya FakultasIlmu Komputer Laboratorium LEMBAR PENGESAHAN

13

3.3.Struktur

Struktur merepresentasikan suatu tipe komposisi dalam konsep algoritmik, yaitu pengelompokanvariabel-variabel yang bernaung dalam satu nama yang sama. Berbeda dengan suatu array yangberisi kumpulan elemen-elemen array yang bertipe sama dalam satu nama, suatu struktur dapatterdiri dari kumpulan variabel-variabel yang berbeda tipenya dalam satu nama. Variabel-variabelyang membentuk struktur ini selanjutnya disebut dengan elemen-elemen atau anggota struktur.Dengan demikian, suatu struktur dimungkinkan dapat berisi elemen-elemen data bertipe int,float, char, dan lainnya.

3.3.1. Deklarasi Suatu Struktur

Suatu struktur dapat dideklarasikan dengan menggunakan kata kunci struct.

Contoh :

struct [<nama struct>]{/* definisi komponen struktur */

tipe_elemen nama_elemen;tipe_elemen nama_elemen;

} [<nama variabel struktur>];

Page 14: MODUL PRAKTIKUM I - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../Modul-Praktikum-Algoritma-dan-Pemrograman... · 2 Universitasriwijaya FakultasIlmu Komputer Laboratorium LEMBAR PENGESAHAN

14

3.3.2. Mengakses Elemen-Elemen Struktur

Elemen-elemen dari suatu variabel struktur dapat diakses secara individual dengan menyebutkannama variabel strukturnya diikuti oleh operator titik (‘ . ‘) dan nama dari elemen strukturnya.Contoh :

//Deklarasi sebuah Variabel bertipe nama_structnama_struct nama_variabel;

<nama variabel struktur>.nama_elemen;

Contoh Program Struct :

Page 15: MODUL PRAKTIKUM I - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../Modul-Praktikum-Algoritma-dan-Pemrograman... · 2 Universitasriwijaya FakultasIlmu Komputer Laboratorium LEMBAR PENGESAHAN

15

3.4.typedef

Bahasa C++ memungkinkan pembuat program untuk mendefinisikan kembali suatu nama tipedata yang baru berdasarkan nama tipe data yang lama. Ini bukan berarti bahwa suatu tipe databaru dibuat, tetapi hanya mendefinisikannya menjadi nama yang baru saja. Untukmendefinisikan nama tipe data yang baru dapat digunakan kata kunci typedef.

Bentuk Umum :typedef <tipe diturunkan> <nama tipe>

Contoh :

typedef float Pecahan;Pecahan nilai;

Artinya : akan membuat nama tipe data yang baru, yaitu Pecahan yang ekuivalen dengan namatipe data float. Selanjutnya nama tipe data yang baru ini dapat digunakan untukmendeklarasikan variabel yang bertipe float.

3.4. Abstract DataType

Abstract data type (ADT) adalah definisi tipe dan sekumpulan primitif (operasi dasar) terhadaptipe tersebut. Definisi tipe dari sebuah ADT dapat mengandung sebuah definisi ADT lain.

Tipe diterjemahkan menjadi tipe terdefinisi dalam bahasa yang bersangkutan, misalnya menjadikata struct dalam bahasa C dan C++ . Primitif dalam konteks prosedural, diterjemahkan menjadifungsi atau prosedur.

Contoh :ADT Jam

{ Definisi TYPE JAM <HH:MM:SS> }

TYPE Hour : integer [0..23]TYPE Minute : integer [0..59]TYPE Second : integer [0..59]

TYPE JAM : < HH : Hour, { Hour [0..23] }MM : Minute, { Minute [0..59] }SS : Second, { Second [0..59] }

>

Page 16: MODUL PRAKTIKUM I - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../Modul-Praktikum-Algoritma-dan-Pemrograman... · 2 Universitasriwijaya FakultasIlmu Komputer Laboratorium LEMBAR PENGESAHAN

16

{DEFINISI PRIMITIF }{konstruktor : membentuk sebuah JAM dari komponen-komponennya}

function MakeJam (HH : integer, MM : integer, SS : integer) à JAM{ Membentuk sebuah JAM dari komponen-komponennya yang valid }{ Pre cond : HH, MM, SS valid untuk membentuk JAM }

( Operasi terhadap komponen ){ Selektor }

function Hour (J : JAM) à integer{ Mengirimkan bagian HH (Hour) dari JAM }

function Minute (J : JAM) à integer{ Mengirimkan bagian Menit (MM) dari JAM }

function Second (J : JAM) à integer{ Mengirimkan bagian Second (SS) dari JAM }

{ Kelompok Baca / Tulis }

procedure BacaJam ( input/output J : JAM ){ I . S . : J tidak terdefinisi }{ F . S. : J tedefinisi dan merupakan jam yang valid }{ Proses : mengulangi membaca komponen H, M, S sehingga membentuk J yang valid}

procedure TulisJam ( input J : JAM ){ I. S. : J sembarang }{ F. S. : Nilai J ditulis dengan format HH : MM : SS }{ Proses : menulis nilai ke layar }

{ KELOMPOK KONVERSI TERHADAP TYPE }

function JamToDetik ( J : JAM ) à integer{ Diberikan sebuah JAM, mengkonversi menjadi Detik }{ Rumus : detik = (3600 * hour) + (menit * 60) + detik }{ nilai maksimum = (3600 * 23) + (59*60) + (59*60) }{ hati-hati dengan representasi integer pada bahasa implementasi kebanyakan }{ sistem mengimplementasi integer, bernilai maksimum kurang dari nilai }{ maksimum hasil konversi }

function DetikToJam (N : integer) à JAM{ Mengirim konversi detik ke JAM }{ pada beberapa bahasa, representasi integer tidak cukup untuk menampung N }

Latihan Program :

1. Buatlah sebuah struct bernama mahasiswastruct mahasiswa < nama : char [1..25],

NIM : char [1..20],nilai : integer [1..3],

>elemen nilai dapat menampung sebanyak 3 nilai MK. Data dimasukkan secara manual olehuser, banyaknya data mahasiswa yang dapat dimasukkan oleh user maksimal 25.

Page 17: MODUL PRAKTIKUM I - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../Modul-Praktikum-Algoritma-dan-Pemrograman... · 2 Universitasriwijaya FakultasIlmu Komputer Laboratorium LEMBAR PENGESAHAN

17

Bab 4. Pencarian

4.1. efinisi

Pencarian (searching) merupakan proses yang fundamental dalam pengolahan data. Prosespencarian adalah menemukan nilai (data) tertentu di dalam sekumpulan data yang bertipe sama(baik bertipe dasar atau bertipe bentukan).

4.2. Metode Pencarian

Hasil atau keluaran dari persoalan pencarian dapat bermacam-macam, bergantung padaspesifikasi (spek) rinci dari persoalan tersebut, misalnya:a. Pencarian hanya untuk memeriksa keberadaan x. Keluaran yang diinginkan misalnya pesan

(message) bahwa x ditemukan atau tidak ditemukan di dalam array.b. Hasil pencarian adalah indeks elemen array. Jika x ditemukan, maka indeks elemen array

tempat x berada diisikan ke dalam idx. Jika x tidak terdapat di dalam array L, maka idx diisidengan harga khusus, misalnya -1.

c. Hasil pencarian adalah sebuah nilai boolean yang menyatakan status hasil pencarian. Jika xditemukan, maka sebuah peubah bertipe boolean, misalnya ketemu, diisi dengan nilai true,sebaliknya “ketemu” diisi dengan nilai false.

Metode pencarian yang ditemukan, antara lain :1. Metode Pencarian Beruntun (Sequential Search)2. Metode Pencarian Bagi Dua (Binary Search)

4.3.Sequential Search

Metode pencarian beruntun (sequential search) adalah proses membandingkan setiap elemen arraysatu per satu secara beruntun, mulai dari elemen pertama, sampai elemen yang dicari ditemukan,atau seluruh elemen sudah diperiksa.

Algoritma Sequential Search :

procedure search(input L : LarikInt, input x : integer){mencari keberadaan nilai x di dalam array L[1..n] }{K. Awal : x dan array L[1..n] sudah terdefinisi nilainya }{K. Akhir : Bilangan Ditemukan jika x ditemukan. Jika x tidak ditemukan,Bilangan tidak ditemukan }

DEKLARASI :i : integer {pencatat indeks array}

ALGORITMA :

for i ß 1 to

while (i < n) and (L[i] ≠ x)do i ß i + 1

endwhile{i = n or L[i] = x}

if L[i] = x then

Page 18: MODUL PRAKTIKUM I - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../Modul-Praktikum-Algoritma-dan-Pemrograman... · 2 Universitasriwijaya FakultasIlmu Komputer Laboratorium LEMBAR PENGESAHAN

18

ketemu ßtrue else

ketemu ßfalse endif

4.4.Binary Search

Prinsip pencarian dengan membagi data atas dua bagian mengilhami metode pencarian bagidua(binary search). Data yang disimpan di dalam array harus sudah terurut. Pencarian dengan cara iniakan mengurangi waktu pencarian karena pembandingan harga direduksi. Namun carapencarian ini hanya dapat dilakukan jika elemen array sudah terurut. Cara ini tidak mungkindilakukan jika elemen array tidak terurut.

Algoritma Binary Search :procedure BinSearch (input L : LarikInt, input n : integer, input x : integer,

output idx : integer){Mencari x di dalam array L[1..n] yang sudah terurut menurun dengan metodepencarian bagi dua. Keluaran prosedur ini adalah indeks elemen array yangmengandung nilai x; idx diisi 0 jika x tidak ditemukan.}

{K. Awal : L[1..n] sudah berisi data yang sudah terurut menurun, dan x adalahnilai yang akan dicari.}

{K. Akhir : idx berisi indeks elemen array yang mengandung nilai x; tetapi bilax tidak ditemukan, maka idx diisi dengan -1}

DEKLARASI

i, j : integer {indeks kiri dan indeks kanan array}k : integer {indeks elemen tengah}ketemu : boolean {flag untuk menentukan apakah x ditemukan}

ALGORITMA

i ß 1 {ujung kiri array}j ß n {ujung kanan array}ketemu ß false {asumsikan x belum ditemukan}while (not ketemu) and (i ≤ j) do

k ß (i+j) div 2 {bagi dua array L pada posisi k}if (L[k] = x)

then ketemu ßtrue

else {L[k] ≠ x}if (L[k] > x) then

{lakukan pencarian pada array bagian kanan, set indeks ujung kiriarray yang baru}

i ß k + 1else

{lakukan pencarian pada array bagian kiri, set indeks ujung kananarray yang baru}

j ß k – 1endi

f endifendwhile{ketemu = true or i > j}

if ketemu then {x ditemukan}idx ß k

elseidx ß -1

endif

Page 19: MODUL PRAKTIKUM I - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../Modul-Praktikum-Algoritma-dan-Pemrograman... · 2 Universitasriwijaya FakultasIlmu Komputer Laboratorium LEMBAR PENGESAHAN

19

Latihan Program :

Buatlah program untuk mencari bilangan terbesar dan bilangan terkecil dari sekumpulannilai yang ada di dalam array LBuatlah program dari algoritma sequential search dan binary search

Page 20: MODUL PRAKTIKUM I - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../Modul-Praktikum-Algoritma-dan-Pemrograman... · 2 Universitasriwijaya FakultasIlmu Komputer Laboratorium LEMBAR PENGESAHAN

20

Bab 5. Pengurutan

5.1.Definisi

Pengurutan adalah proses mengatur sekumpulan objek menurut urutan atau susunan tertentu.Urutan objek tersebut dapat menaik (ascending) atau menurun (descending).

5.2. Metode Pengurutan

Banyak metode pengurutan yang telah ditemukan. Metode pengurutan yang ditemukan, antaralain :

1. Bubble Sort2. Selection Sort3. Insertion Sort4. Heap Sort5. Shell Sort6. Quick Sort7. Merge Sort8. Radix Sort

5.2.1.Bubble Sort

Bubble sort atau metode pengurutan apung diinspirasi oleh gelembung sabun yang berada di ataspermukaan air. Karena berat jenis gelembung sabun lebih ringan daripada berat jenis air, makagelembung sabun selalu terapung ke atas permukaan. Prinsip di atas dipakai pada pengurutanapung. Elemen array yang berharga paling kecil “diapungkan”, artinya diangkat ke atas (ke ujungkiri array) melalui proses pertukaran.

Algoritma Gelembung :

procedure UrutGelembung (input/output L : Array, input n : integer)

Deklarasii : integer {pencacah untuk jumlah langkah}k : integer {pencacah untuk pengapungan setiap langkah}temp : integer {peubah bantu untuk pertukaran}

Algoritmafor i ß 1 to N-1do

for k ß n downto i+1 doif L[k] < L[k-1] then {pertukarkan L[k] dengan L[k-1]}

temp ß L[k]L[k] ß L[k-1]L[k-1] ß temp

endif endfor

endfor

Page 21: MODUL PRAKTIKUM I - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../Modul-Praktikum-Algoritma-dan-Pemrograman... · 2 Universitasriwijaya FakultasIlmu Komputer Laboratorium LEMBAR PENGESAHAN

21

5.2.2. Selection Sort

Metode pengurutan ini disebut pengurutan seleksi (selection sort) karena gagasan dasarnya adalahmemilih elemen maksimum/minimum dari array, lalu menempatkan elemenmaksimum/minimum itu pada awal atau akhir array (elemen terujung). Selanjutnya elementerujung tersebut “diisolasi” dan tidak disertakan pada proses selanjutnya.

Algoritma Pengurutan Seleksi :

procedure SelectionSort (input/output L : LarikInt, input n : integer)

Deklarasii : integerj : integerimaks :integer maks :integer temp :integer

Algoritmafor i ß n downto 2 do {jumlah pass sebanyak n-1}

{cari elemen maksimum pada elemen L[1...i]}imaks ß 1maks ß L[1]

for j ß 2 to i doif L[j] > maks then

imaks ß jmaks ß L[j]

endif endfor

{pertukarkan maks dengan L[i]}temp ß L[i]L[i] ß L[imaks]L[imaks] ß temp

endfor

Latihan Program :

Buatlah program dari algoritma pengurutan seleksi