BABI PROSEDUR DAN FUNGSI 1.

1 Pengertian prosedur dan fungsi Prosedur adalah sedereta instruksi algoritmik yang diberi nama, dan akan menghasilkan efek neto yang terdefinisi. Prosedur menyatakan suatu aksi dalam konsep algoritma. Mendefinisikan prosedur berarti menentukan nama prosedur serta parametemya jika ada, dan mendefinisikan keadaan awal (initial state, IS) dan keadaan akhir (final state, FS) dari prosedur tersebut. Secara sederhana, dapat diartikan bahwa sebuah prosedur yang terdefinisi "disimpan" ditempat lain, dan ketika "dipanggil" dengan menyebutkan namanya seakan - akan teks yang tersimpan ditempat lain itu menggantikan teks pemanggilan. Pada saat itu terjadi asosiasi parameter (jika ada). Dengan konsep ini, maka IS dan FS dari prosedurlah yang menjamin bahwa eksekusi program akan menghasilkan efek neto yang diharapkan. Fungsi hampir sarna dengan prosedur, hanya fungsi harus dideklarasikan dengan tipenya. Tipe deklarasi ini menunjukkan tipe hasil dari fungsi. Tipe tersebut ditulis pada akhir deklarasi fungsi yang didahului dengn titik koma, sebagai berikut. 1.2 Contoh Algoritma Prosedur dan Fungsi Contoh Algoritma menggunakan Prosedur : 1: Program Tutoria14 _Prosedur; 2: 3: Procedure Tampil; 4: begin 5: 6: 7: 8: writeln(,Hi ... '); writeln('Apakabar'); end; Begin

9: Tampil; 10: writeln('ini contoh algoritma menggunakan prosedur ... '); 11: End. Baris ke-3 sampai 7 itulah yang disebut prosedur. Program utamanya mulai dari baris ke 8 sampai 11. Pada baris ke 9 prosedur yang kita buat sebelumnya dipanggil dan dieksekusi. Outputnya: Hi ... Apakabar ini contoh algoritma menggunakan prosedur. ..

Craatod wlth

nit!roPDF' professi anal
download the free trial online at nitrcpdf.ecmzprofeesiona I

Bagaimana jika ditulis "hitung( 4. secara otomatis a akan mendapat nilai 7 dan b mendapat 9. Sedangkan fungsi bisa mengembalikan nilai untuk di tampilkan dilayar atau diolah lagi. 3: Function hitung(a. 9)".6)"? lelas tidak bisa karena dialokasikan hanya 2 variabel. ada pendeklarasian variabel a dan b dan baris ke 9 itu adalah ketika fungsi hitung dipanggil. Di sana tertulis "hitung(7. Perhatikan contoh penggunaan Craatod wlth nit!roPDF' professi anal download the free trial online at nitrcpdf. b : integer) : integer. 7: end.. Tapi perhatikan bentuk fungsinya.Hasil 7 + 9 sarna dengan " hasil). fungsi di bawah ini: 1: Program Tutoria14 _Fungsi. 4: begin 5: hitung:=a+b.perbedaan antara Prosedur dan fungsi yaitu Prosedur hanya bisa menjalankan perintah dan tidak mengembalikan nilai (lihat kembali contoh program prosedur sebelumnya). 8: Begin 9: hasil:=hitung(7.9). 11: End. 10: writeln(.Contoh Algoritma menggunakan Fungsi Selain itu prosedur dan fungsi bisa di taruh variabel lohh.ecmzprofeesiona I . 2: var hasil: integer. Output: Hasil 7+9 sarna dengan 16 ladi. Baris 3 sampai 7 adalah fungsi.. Hasil penjumlahan a + b ditampung di fungsi hitung (lihat baris ke-5) dan hasil itu diberikan ke variabel hasil (baris 9).5.

1..2.10] of real. Didalam suatu array jumlah komponen banyaknya adalah tetap. Craatod wlth nit!roPDF' professi anal download the free trial online at nitrcpdf.5] of string.BABIl ARRAY 2. Deklarasi Array Didalam penulisan bahasa pemograman setiap penggunaan array harus dideklarsikan terlebih dahulu. C: array[1. diikuti dengan kata cadangan of dan tipe data yang dibutuhkan.1. Index dari setiap komponen array menunjukan urutan data atau identitas yang mewakili data yang ada didalamnya.. Contoh: Var A : array[ 1.B. untuk membedakan antara nama yang satu atau dengan nama yang lain maka diberikan initial tambahan untuk setiap nama. B : array[1. yang menunjukan banyaknya data yang mampu disimpan.C merupakan tanda pengenal/ nama variabel dari array.tipe index .. Pendeklarasian array diawali dengan nama variabel array diikuti dengan indeks array yang dituliskan didalam tanda "[]" . Bentuk Umum Penulisan Tanda _pengenal : array [.4] of integer.4 : merupakan tipe indek dari array.. Didalam suatu larik atau array setiap kompoenen ditunjukan oleh suatu index yang unik.. Keterangnan : A.] of tipe data. Logika sederhananya array itu bisa disamakan dengan dua orang dengan nama yang sarna didalam suatu komunitas. 2.ecmzprofeesiona I . Pengertian Array Array (larik) merupakan tipe data tersetruktur dimana didalamnya terdiri dari komponen komponen yang mempunyai tipe data yang sarna..

3 Alokasi Penggunaan Array a. b.. Nilai yang digunakan untuk menentukan jangkauan pada umumnya bemilai integer. BentukUmum array[indexTypel. indexTypen] of base Type Keterangan = index type menunjukan tipe data ordinal yang menunjukan batasan atau elemen maksimul terhadap seberapa besar variabel tersebut menyimpan komponen.Integer: menunjukan bahwa data yang diinput berupa bilangan bulat. Array Static juga bisa disebut Array dengan deklarasi tipe indeks subrange integer..5] of char Ataujuga type jangkauan = 1. .. Array Dinamis (Dynamic arrays) Larik atau array dinamis merupakan array yang tidak mempunyai suatu jangkauan atau ukuran yang tetap. Dynamic-Array jenis ditandai oleh konstruksi (menyangkut) format BentukUmum Craatod wlth nit!roPDF' professi anal download the free trial online at nitrcpdf.5..ecmzprofeesiona I . Array Static (Static Array) Array static adalah model pendeklarasian array dimana tipe data yang digunakan mempunyai nilai yang tetap. Contoh Var arrayku : array[1. Tetapi ketika program dijalankan maka memori untuk suatu array dinamis direalokasikan ketika kita menugaskan suatu nilai kepada array. var nilai : array[j angkauan] of integer.. 2.

Bilangan[2] :=29. End. earanya adalah dengan memanfaatkan fungsi dari perintah sellength.ecmzprofeesiona I . Uses Crt. Begin ClrSer. Se111ength(nilai. Craatod wlth nit!roPDF' professi anal download the free trial online at nitrcpdf. Readln.20) Dari penggalan program tersebut nilai untuk array nilai tersebut mempunyai range sebanyak atau eakupan 20 untuk tipe data real. tetapi hanya diberikan batasan sebagai tipe data real. dengan indeex dimulai dari 0 sampai dengan 20. Contoh array: Program Contoh _Array_Input.array of base Type Contoh: var nilai: array of Real. Writeln(. Bilangan[ 4]:=31.50] ofInteger. Dari deklarasi tersebut nilai yang merupakan deklarasi array belum memperoleh nilai yang tetap. Bilangan[3] :=30. Bilangan[5]:=23.nilai varibel bilangan ke 3 ='.Bilangan[3]). Bilangan[1]:=3.. Untuk mendeklarasikan array tersebut kita hams menempatkan array didalam suatu memori. Var Bilangan: array[1.

Sorting secara ascending adalah cara mengurutkan data mulai data bemilai terkecil sampai terbesar.1 Insertion Sort Salah satu algoritma sorting yang paling sederhana adalah insertion sort. Seluruh kartu diletakkan pada meja.2 Jenis Sorting Ada dua bentuk sorting yaitu secara ascending dan descending. Kemudian kita mempunyai meja yang lain. bandingkan dengan kartu yang berada pada mej a kedua. dimana kartu yang diurutkan akan diletakkan. Beberapa macam algoritma sorting telah dibuat karena proses tersebut sangat mendasar dan sering digunakan. kemudian letakkan pada urutan vanz Craatod wlth sort. Hampir seluruh pengguna pada sistem akan memilih tampilan daftar berurutan secara ascending demi kenyamanan dalam penelusuran data. satu set kartu dari kartu yang bemilai paling kecil hingga yang paling besar.ecmzprofeesiona I . 3. Memahami dan menjelaskan algoritma dari insertion sort.BAB III SORTING 3. Membuat implementasi pribadi menggunakan algoritma yang ada 3. Oleh karena itu. meja kedua. Sedangkan descending mengurutkan data mulai dari data terbesar sampai terkecil. Sebagai contoh misalkan diberikan data berupa bilangan berikut ini: 391402 Hasil sorting ascending adalah 0 1 2 3 4 9.algoritma yang ada sangatlah berguna. Ambil kartu pertama yang terletak pada pojok kiri atas meja pertama dan letakkan pada mej a kedua. anda diharapkan mampu : 1. merge nit!roPDF' professi anal download the free trial online at nitrcpdf. Ide dari algoritma ini dapat dianalogikan seperti mengurutkan Anggaplah anda ingin mengurutkan kartu. sebutlah meja ini sebagai meja pertama. Penjelasan berikut ini menerangkan bagaimana algoritma insertion sort bekerja dalam pengurutan kartu. disusun dari kiri ke kanan dan atas ke bawah. pemahaman atas algoritma .2. Aplikasi tersebut mampu menampilkan daftar account yang aktif. Ambil kartu kedua dari mej a pertama.1 Pengertian Sorting Sorting adalah proses menyusun elemen . selection sort dan quick sort.elemen dengan tata urut tertentu dan proses tersebut terimplementasi dalam bermacam aplikasi. Setelah menyelesaikan pembahasan pada bagian ini. 2. Kita ambil contoh pada aplikasi perbankan. dan hasil secara descending adalah 9 4 3 2 1 o.

compareTo(array[j]»O) k = J. Langkah ini dilakukan secara berulang hingga tidak ada lagi elemen yang tersisa pada bagian array yang belum diurutkan. Tukarkan kartu yang baru tersebut saja terpilih hingga posisi dengan kartu pada posisi posisi kedua. Layaknya insertion sort. } } { 3. terakhir Ulangi langkah dibandingkan dan langkah kedua sebelum dapat digeser dengan kartu yang bemilai lebih rendah.j < endIdx. anda mungkin akan menemukan sebuah algoritma yang mirip dengan selection sort.j++) { if (((Comp~rable) array[k]). algoritma ini sangat rapat dan mudah untuk diimplementasikan. yang belum diurutkan (meja pertama) dan yang sudah diurutkan (meja kedua).ecmzprofeesiona I . int startIdx.sesuai setelah perbandingan. Pada rendah. i++) { int k = i. kanan.2 Selection Sort Jika anda diminta untuk membuat algoritma sorting tersendiri. kemudian awalnya.2. Algoritma insertion sort pada dasamya memilah data yang akan diurutkan menjadi dua bagian. Ide utama dari algoritma selection sort adalah memilih elemen dengan nilai paling rendah dan menukar elemen yang terpilih dengan elemen ke-i. Proses tersebut akan berlangsung hingga seluruh kartu pada mej a pertama telah diletakkan berurutan pada mej a kedua. tukarkan posisi kartu ini dengan kartu yang terletak pada pojok kiri atas meja. Lalu cari kartu dengan nilai paling rendah diantara sisa kartu yang tersedia. kartu tersebut akan disusun secara linier pada sebuah meja dari kiri ke Pilih nilai kartu yang paling dan dari atas ke bawah. Contoh algoritma Insertion sort : void insertionSort(Object array[]. kemudian Elemen pertama diambil dari bagian array yang belum diurutkan dan diletakkan sesuai posisinya pada bagian lain dari array yang telah diurutkan. } } swap(array[i]. i < endIdx.array[k]). Mari kita kembali menelusuri bagaimana algoritma ini berfungsi terhadap satu paket kartu. Nilai dari i dimulai Craatod wlth nit!roPDF' professi anal download the free trial online at nitrcpdf. int endIdx) { for (int i = startIdx. for (intj = i + l. Asumsikan bahwa kartu tersebut akan diurutkan secara ascending.

mari kita mengetahui garis besar dari konsep divide and conquer karena merge sort mengadaptasi pola tersebut. Contoh algoritma selection sort: void selectionSort(Object array[]. for (int i = startldx. pendekatan penyelesaian secara langsung akan lebih efektif 3. for (int j = i + 1. int startldx. yang akan membimbing menuju penyelesaian atas permasalahan utama Permasalahan kemudian dipecah menjadi kemudian solusi dari sub-masalah akan membimbing menuju solusi permasalahan Craatod wlth nit!roPDF' professi anal download the free trial online at nitrcpdf. Divide Memilah masalah menjadi sub masalah 2. utama. i < endldx. Kombinasi Mengkombinasikan solusi dari sub-masalah. Pada setiap tingkatan rekursi.compareTo( array[j]»O) { mm s=j. } } swap(array[min]. i++) { mtn==r. j < endldx. array[i]). dimana n adalah jumlah total elemen dikurangi 1. } } 3. Conquer Selesaikan sub masalah tersebut secara rekursif. 1. int endldx) { int min.3 Merge Sort Sebelum mendalami algoritma merge sort. j++) { if (((Compara~le )array[ min ]). Jika sub-masalah tersebut cukup ringkas dan sederhana.2. permasalahan. Pola Divide and Conquer Beberapa algoritma mengimplementasikan utama konsep rekursi untuk menyelesaikan sub-masalah.dari 1 ke n.ecmzprofeesiona I . pola tersebut terdiri atas 3 langkah.

q-I] dan A[q+ 1. Proses rekursi berhentijika mencapai elemen dasar. 2.elemen dari rangkaian data menjadi dua bagian. Seperti pada merge sort. Kombinasi Mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkan rangkaian data berurutan. int startldx. rightArr).4 Quicksort Quicksort ditemukan oleh C. Divide Memilah rangkaian data menjadi dua sub-rangkaian A[p . Contoh algoritma Merge Sort : void mergeSort(Object array[]. startldx.. midldx+ 1.. r] adalah lebih besar atau sarna dengan Berbeda dengan merge sort.2. Berikut menjelaskan langkah kerja dari Merge sort.ecmzprofeesiona I . Conquer Conquer rekursif 3. Divide Memilah elemen . rightArr dan leftArr mergeSort(1eftArr . } } 3.1ength != 1) { 11M emb agi rangkaian data... int endldx) { if (array. 1. merupakan salah satu bagian dari prosedur pemisahan. Sisa pengurutan satu elemen tersebut menandakan bahwa bagian tersebut telah terurut sesuai rangkaian. q-I] adalah pada A[ q]. Merge sort menggunakan pola divide and conquer. algoritma inijuga berdasar pada pol a divide-and-conquer. combine(1eftArr. 2. Conquer Craatod wlth nit!roPDF' professi anal download the free trial online at nitrcpdf. mergeSort( rightArr. endldx). 1. A[ q] disebut kurang sebagai dari atau elemen pivot.R Hoare. Hal ini terjadi bilamana bagian yang akan diurutkan menyisakan tepat satu elemen. sarna Perhitungan dengan pada elemen A[q] q dan setiap elemen pada A[q+ 1. midldx). .. algoritma ini hanya mengikuti langkah .Memahami Merge Sort Seperti yang telah dijelaskan sebelumnya. r] dimana setiap elemen elemen A[p .. .A.langkah sebagai berikut : setiap bagian dengan memanggil prosedur merge sort secara Dengan hal ini deskripsi dari algoritma dirumuskan dalam 3 langkah berpola divide-and-conquer.

langkah "kombinasi" tidak di lakukan karena telah terjadi pengurutan elemen . int rightIdx) { int pivotIdx. rightIdx). quickSort( array. pivotIdx+ 1. pivotIdx -1). 1* Kondisi Terminasi *1 if (rightIdx > leftIdx) { pivotIdx partition(array. quickSort( array. leftIdx. } } Craatod wlth nit!roPDF' professi anal download the free trial online at nitrcpdf. rightIdx).ecmzprofeesiona I . int leftIdx.Mengurutkan elemen pada sub-rangkaian secara rekursif Pada algoritma quicksort.elemen pada sub-array Contoh algoritma quick sort : void quickSort(Object array[]. leftIdx.

ecmzprofeesiona I . x ) {Mencari data x pada array A yang elemennya sebanyak N} read (x) 1+-1 yang ada pada while x <> A(I) AND <= N DO 1+-1+1 end Pengaturan Hasil (Output) Sesuai permasalahan pada pencarian yang di kemukakan di atas maka output yang di inginkan dari proses pencarian tersebut bisa disesuaikan dengan permasalahan di atas. Jika yang di inginkan berupa komentar bahwa data x di temukan atau tidak : if I <= N then write (x. Algoritma pencarian 4.BABIV SEARCHING Pencarianl Searching adalah proses mencari suatu data di tentukan suatu kumpulannya. atau pada kumpulan data yang lain. misal pada suatu array.1 Pencarian Beruntun ( Linear Searching) Ide Pencarian : Elemen yang dicari dibandingkan dengan element-element kumpulan data temp at pencarian satu persatu mulai dari element pertama. file. Algoritma : CARl ( A. N. linked-list. yaitu : a.' Found') else Craatod wlth nit!roPDF' professi anal download the free trial online at nitrcpdf.

Jika hasil yang di inginkan berupa indeks data x pada array A: if I <= N then Hasil else Hasil end 4. jika tidak sama (belum ditemukan) maka data yang dicari itu dibandingkan lagi dengan elemen tengah tersebut. Jika hasil yang di inginkan berupa status bahwa data x ditemukan atau tidak : if I <= N then Ketemu else Ketemu end c.write(x. N.2 Pencarian Biner/ Bagi Dua (Binary Searching) Ide Pencarian : Elemen yang dicari dibandingkan dengan elemen tengah dari kumpulan data pencarian.' Not Found') end b. Jika sama maka data yang dicari ditemukan. x ) {Mencari data x pada array A yang elemennya sebanyak N} ++++- TRUE FALSE 1 0 { Jika tdk di temukan di beri variabel 0 } Craatod wlth nit!roPDF' professi anal download the free trial online at nitrcpdf. Algoritma : CARl ( A. Sebaliknya jika lebih besar maka pencarian dilanjutkan di sebelah kanan elemen tengah. Jika lebih kecil maka pencarian dilanjutkan kebagian array sebelah kiri (bagian yang lebih kecil dari elemen tengah).ecmzprofeesiona I . Ulangi langkah tersebut sampai di temukan atau kumpulan data tidak bisa dibagi lagi menjadi dua bagian.

Jika hasil yang di inginkan berupa status bahwa data x ditemukan atau tidak : if Ketemu = TRUE then Ketemu +.T .T + 1 end Pengaturan Hasil (Output) a.FALSE Craatod wlth nit!roPDF' professi anal download the free trial online at nitrcpdf. Jika yang di inginkan berupa komentar bahwa data x di temukan atau tidak : if Ketemu = TRUE then write (x.FALSE while ketemu and a < b do T +.TRUE else Ketemu +.' Found') else write(x.(a+b) mod 2 if x = A(T) then Ketemu TRUE +.read (x) a+-l Ketemu +.' Not Found') end b.1 else a +.ecmzprofeesiona I .TRUE else if x < A(T) then +.

Jika hasil yang di inginkan berupa indeks data x pada array A: if Ketemu = TRUE then Hasil else Hasil end ++- T 0 { Jika tdk di temukan di beri variabel 0 } Craatod wlth nit!roPDF' professi anal download the free trial online at nitrcpdf.ecmzprofeesiona I .end c.