LEMBAR PENGESAHAN. SISTEM MANAJEMEN MUTU ISO 9001:2008 No. Dokumen Tanggal 4 AGUSTUS 2011 Revisi Halaman 2 DARI 48 MODUL PRAKTIKUM

dokumen-dokumen yang mirip
MODUL IV PENCARIAN DAN PENGURUTAN

Kuliah ke : 4 Algoritma & Stuktur Data. Pengurutan (Sorting)

Pengurutan (Sorting) Keuntungan Data Terurut. Pengurutan Terbagi Dua Kelompok:

Yaitu proses pengaturan sekumpulan objek menurut urutan atau susunan tertentu Acuan pengurutan dibedakan menjadi :

Algoritma Pemrograman

Pengurutan (Sorting) Algoritma Pemrograman

Algoritma Pemrograman

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

Algoritma Pemrograman

Algoritma Brute Force

PENGURUTAN (SORTING) 1. Introduction 2. Bubble Sort 3. Selection Sort 4. Insertion Sort

STRUKTUR DATA. Pengajar. Jaidan Jauhari, M.T. Alamat

AlgoritmaBrute Force. Desain dan Analisis Algoritma (CS3024)

Algoritma Pemrograman

SORTING. Struktur Data S1 Sistem Informasi. Ld.Farida

ALGORITMA PENGURUTAN & PENCARIAN

1. Tipe Data Sederhana Hanya dimungkinkan untuk menyimpan sebuah nilai data dalam sebuah variabel Ada 5 macam : int, float, double, char, boolen

1 Pencarian. 1.1 Tinjauan Singkat Larik

BAB VI SEARCHING (PENCARIAN)

SEQUENTIAL SEARCH 11/11/2010. Sequential Search (Tanpa Variabel Logika) untuk kondisi data tidak terurut

DATA SORTING. Altien Jonathan Rindengan, S.Si, M.Kom

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT

Searching [pencarian] Algoritma Pemrograman

Abstract Data Type (ADT)

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari

TIPE, NAMA, DAN NILAI

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

BAB V SORTING (PENGURUTAN) INTERNAL

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

1. Kompetensi Mengenal dan memahami notasi-notasi algoritma yang ada.

Algoritma Brute Force

Algoritma dan Pemrograman 2 PENGURUTAN

Pert 3: Algoritma Pemrograman 1 (Alpro1) 4 sks. By. Rita Wiryasaputra, ST., M. Cs.

ARRAY STATIS. Type namatype_array = array [1..maks_array] of tipedata. nama_var_array : namatype_array {indeks array dari 1 sampai maksimum array}

PERTEMUAN 8 MATRIX. Introduction Definition How is matrix stored in memory Declaration Processing

Kompleksitas Algoritma

MATRIKS. Dapat disimpan secara linier dan kontigu dengan dua alternatif sebagai berikut : a. Per baris

Kompleksitas Algoritma

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

MAKALAH STRUKTUR DATA. DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH ( )

Algoritma Pemrograman

Array dan Matriks. IF2121 / Algoritma dan Struktur Data Sem / /7/2017 IF2121/sem /2018 1

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

Kompleksitas Algoritma (1)

Array (Tabel) Tim Pengajar KU1071 Sem /11/3 TW/KU1071 1

Algoritma Pemrograman

TYPE. Inggriani Liem : Catatan Kuliah Algoritma & Pemrograman, Jurusan teknik Informatika - ITB TYPE.doc/TYPE- 21/08/03 16:04

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2

CCH1A4 / Dasar Algoritma & Pemrogramanan

Tipe data dasar merupakan tipe data yang disediakan oleh kompailer, sehingga dapat langsung dipakai Dalam algoritma dan pemrograman yang termasuk dala

Dasar Komputer dan Pemrograman. Konsep Tipe Data dan Operator Nama dan Nilai Data

AnalisisFramework. Mengukur ukuran atau jumlah input Mengukur waktu eksekusi Tingkat pertumbuhan Efiesiensi worst-case, best-case dan average-case

Algoritma dan Pemrograman Array/Tabel[2] Oleh: Eddy Prasetyo N

Tipe Data dan Operator

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

Algoritma Pemrograman

Algoritma dan Pemrograman 1. By. Rita Wiryasaputra, ST., M. Cs.

PEMROGRAMAN BERORIENTASI OBJEK. Tipe Data. Budhi Irawan, S.Si, M.T

JENIS DATA SEDERHANA & INPUT/OUTPUT DATA

*** SELAMAT MENGERJAKAN

Array (Tabel) bagian 2

Struktur Program. Rinta Kridalukmana

Array. Teknik Informatika Politeknik Negeri Batam

Algoritma dan Pemrograman Sorting (Pengurutan) IS1313. Oleh: Eddy Prasetyo N

Algoritma & Pemrograman 1. Muhamad Nursalman Pendilkom/Ilkom Universitas Pendidikan Indonesia

Algoritme dan Pemrograman

ALGORITMA (KOMPUTER) : ATURAN PENULISAN DAN STRUKTUR DASARNYA

Algoritma Pemrograman

Algoritma dan Pemrograman 2 PENCARIAN

BAB I PENGENALAN STRUKTUR DATA DAN ALGORITMA

Soal hari Jumat (16/10) Latihan 10 MS

PRAKTIKUM 9 ARRAY. ARRAY BERDIMENSI SATU Suatu array berdimensi satu dideklarasikan dalam bentuk umum berupa :

BAB IV MATRIKS (ARRAY MULTI DIMENSI)

DASAR PEMROGRAMAN. Institut Teknologi Sumatera

BAB IV MATRIKS (ARRAY MULTI DIMENSI)

Pendahuluan. Sebuah algoritma tidak saja harus benar, tetapi juga harus efisien. Algoritma yang bagus adalah algoritma yang efektif dan efisien.

Pencarian. 1. Memahami konsep pencarian 2. Mengenal beberapa algoritma pencarian 3. Menerapkan algoritma pencarian dalam program

Langkah Mudah Belajar Struktur Data Menggunakan C/C++

Tipe Data dan Operator dalam Pemrograman

Pencarian pada Array. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

BAHASA PEMROGRAMAN 1 (PERTEMUAN 3)

ALUR PROGRAM. SELEKSI KONDISI Statement If a. Bentuk If tunggal sederhana Sintaks : if ( kondisi ) statement ;

Nama, Tipe, Ekspresi, dan Nilai

Larik/ Array int a1, a2, a3, a4, a5;

Pertemuan Ke-3 (Tipe Data dan Nama) Rahmady Liyantanto. S1 Teknik Informatika-Unijoyo

SORTING. Brigida Arie Minartiningtyas, M.Kom

c. Hasil pencarian berupa nilai Boolean yang menyatakan status hasil pencarian. Versi 1 (Pembandingan elemen dilakukan sebagai kondisi pengulangan)

Algoritma Pemrograman

Algoritma Pemrograman

ARRAY. contoh : A[1] := 10; var A : array[1..10] of integer; A[nomer_indeks]

ARRAY (LARIK) Altien Jonathan Rindengan, S.Si., M.Kom.

CCH1A4 / Dasar Algoritma & Pemrogramanan

Bubble Sort (Pengurutan Gelembung / Pemberatan)

Algoritma dan Pemrograman Array/Tabel[1] Oleh: Eddy Prasetyo N

Algoritma dan Struktur Data

Cara pertama adalah pada saat deklarasi variabel ditambahkan ke- yword const sebelum nama tipe data seperti

Array. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

Turbo C adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C

Algoritma dan Pemrograman 2 PENGURUTAN

MATRIKS P E N G E N A L A N P R O G R A M S T U D I. Institut Teknologi Sumatera

Transkripsi:

1

Universitas riwijaya Fakultas Ilmu Komputer Laboratorium LEMBAR PENGESAHAN MODUL PRAKTIKUM SISTEM MANAJEMEN MUTU ISO 9001:2008 No. Dokumen Tanggal 4 AGUSTUS 2011 Revisi Halaman 2 DARI 48 MODUL PRAKTIKUM Mata Kuliah Praktikum : Algoritma dan Pemrograman II Kode Mata Kuliah Praktikum : FIK124004 SKS : 1 Program Studi : SISTEM INFORMASI Semester : 2 (Genap) 2016/2017 DIBUAT OLEH DISAHKAN OLEH DIKETAHUI OLEH DOSEN PENGAMPU KETUA JURUSAN WAKIL DEKAN 1 BIDANG AKADEMIK Dwi Rosa Indah, M.T. Endang Lestari R, M.T. Syamsuryadi, S. SI., M. Kom 2

DAFTAR ISI DAFTAR ISI... 1 Bab 1. Array... 2 1.1. Definisi... 2 1.2. Deklarasi... 2 1.3. Mengakses Elemen Array... 2 1.4. Inisialisasi... 3 1.5. Array String... 4 1.6. Array Berdimensi Dua... 5 1.6.1. Deklarasi... 5 Latihan Program... 6 Bab 2. Pointer... 8 2.1. Definisi... 8 2.2. Deklarasi... 8 2.3. Operator Pointer... 8 Latihan Program... 9 Bab 3. Tipe Bentukan... 10 3.1. Definisi... 10 3.2. Enumerasi... 10 3.3. Struktur... 11 3.3.1. Deklarasi Suatu Struktur... 11 3.3.2. Mengakses Elemen-Elemen Struktur... 12 3.4. typedef... 13 3.4. Abstract Data Type... 13 Latihan Program... 14 Bab 4. Pencarian... 15 4.1. Definisi... 15 4.2. Metode Pencarian... 15 4.3. Sequential Search... 15 4.4. Binary Search... 16 Bab 5. Pengurutan... 18 5.1. Definisi... 18 5.2. Metode Pengurutan... 18 5.2.1. Bubble Sort... 18 5.2.2. Selection Sort... 19 Latihan Program... 19 3

Bab 1. Array 1.1. Definisi Array adalah kumpulan dari nilai-nilai data bertipe sama dalam urutan tertentu yang menggunakan sebuah nama yang sama. Nilai-nilai data di suatu array disebut dengan elemenelemen array. Letak urutan dari suatu elemen array ditunjukkan oleh suatu subscript atau suatu index. Elemen-elemen array tersusun secara sekuensial dalam memori komputer. Array dapat berdimensi satu, dua, tiga atau lebih. Array dimensi satu (one-dimensional array) mewakili bentuk suatu vektor. Array dimensi dua (two-dimensional array) mewakili bentuk dari suatu matrik atau tabel. Array dimensi tiga (three-dimensional array) mewakili bentuk suatu ruang. 1.2. Deklarasi Suatu array dapat dideklarasikan dengan menyebutkan jumlah dari elemennya yang ditulis diantara tanda [ ]. Contoh : Algoritma : 4

x : array [1...5] of integer Program : int x[5]; menunjukkan suatu array dimensi satu dengan nama X dideklarasikan dengan tipe data int yang mempunyai lima buah elemen. Tipe data yang digunakan pada array dapat berupa tipe data dasar, 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 array 2. nama array 3. 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) 5

Inisialisasi juga dapat dilakukan tanpa menyebutkan jumlah elemennya (cara 2). Array ini disebut dengan array yang tidak berukuran. Untuk memberikan nilai 0 terhadap seluruh elemen array pada 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 : 6

indeks 1 2 3 4 Karakter C + + \0 Setiap karakter menempati memori sebesar 1 byte. Setelah karakter yang terakhir terdapat karakter 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 disebut sebagai string kosong. Contoh Program : 1.6. Array Berdimensi Dua Matriks adalah sekumpulan informasi yang setiap individu elemennya terdefinisi berdasarkan dua buah indeks (yang biasanya dikonotasikan dengan baris dan kolom). Setiap elemen matriks dapat diakses secara langsung jika kedua indeks diketahui, dan indeksnya harus bertipe yang mempunyai keterurutan (suksesor), misalnya integer. Karena matriks sebenarnya adalah array, maka konsep umum dari array juga berlaku untuk matriks 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 terlebih dahulu 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 kunci yang dipakai untuk matriks tetap array. Ada beberapa cara pendeklarasian matriks : 1. sebagai nama peubah Algoritma : DEKLARASI M : array [1..5, 1..4] of integer Program : //deklarasi 7

int M[5][4]; 2. sebagai tipe Algoritma : DEKLARASI type Mat : array [1..5, 1..4] of integer M : Mat Program : //deklarasi typedef int Mat[5] [4]; Mat M; 3. mendefinisikan ukuran maksimum matriks sebagai sebuah konstanta Algoritma : 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 menggunakan petunjuk pembacaan.} {K. Awal : Nbar dan Nkol sudah terdefinisi dengan banyaknya baris dan kolom matriks} {K. Akhir : Seluruh elemen matriks M sudah berisi nilai yang dibaca dari piranti masukan} DEKLARASI i : integer j : integer {indeks baris} {indeks kolom} ALGORITMA for i ß 1 to Nbar do for j ß 1 to Nkol do write ( Ketikkan Elemen M[,i,,,j, ] : ) read (M[i,j]) endfor endfor {petunjuk pembacaan} 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.} DEKLARASI i : integer j : integer {indeks baris} {indeks kolom} ALGORITMA for i ß 1 to Nbar do for j ß 1 to Nkol do 8

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 = Xi i 1 mean = Total / N N (Xi standar deviasi = i 1 n mean) 2 2. Buatlah program untuk memasukkan nama, NIM, dan alamat anda. Setelah itu tampilkan nama, NIM, dan alamat yang telah anda masukkan. 3. Buatlah program untuk menjumlahkan dua buah matriks dengan menggunakan prosedur procedure 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.} DEKLARASI i : integer j : integer {indeks baris} {indeks kolom} ALGORITMA for i ß 1 to Nbar do for j ß 1 to Nkol do C[i,j] ß A[i,j] + B[i,j] endfo r endfor 9

Bab 2. Pointer 2.1. Definisi Suatu pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat lokasi suatu memori tertentu. 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 dengan alamat memori tertentu. Sebagai contoh, sebuah variabel P bertipe pointer bernilai 0x0041FF2A, berarti P menunjuk pada alamat memori 0041FF2A. 2.2. Deklarasi Variabel pointer dideklarasikan dengan diawali suatu asterik ( * ). Contoh : char *x; Statement di atas mendeklarasikan variabel x yang merupakan pointer. Penyebutan tipe data char berarti 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 & digunakan untuk mendapatkan alamat memori dari operandnya. Sedangkan operator * digunakan untuk mendapatkan nilai dari variabel yang ditunjuk oleh operandnya. Operand untuk operator * adalah variabel pointer. 10

Contoh Program : Program 1: Program 2: Latihan Program : Buatlah program untuk mengetahui alamat memori setiap karakter dari suatu string komputer 11

Bab 3. Tipe Bentukan 3.1. Definisi Tipe bentukan adalah suatu tipe yang dirancang / dibentuk (dan diberi nama) dari beberapa komponen bertipe tertentu. Jadi, tipe bentukan merupakan sekumpulan elemen bertipe dasar atau bertipe 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 dengan urutan yang sudah tertentu. Nilai-nilai dari konstanta elemen ini berupa nilai-nilai integer yang diwakili oleh nama-nama pengenal yang ditulis di antara kurung { dan kurung }. Tipe data enumerasi dapat dideklarasikan dengan menggunakan kata kunci enum dan berguna untuk mendefinisikan 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 : 12

3.3. Struktur Struktur merepresentasikan suatu tipe komposisi dalam konsep algoritmik, yaitu pengelompokan variabel-variabel yang bernaung dalam satu nama yang sama. Berbeda dengan suatu array yang berisi kumpulan elemen-elemen array yang bertipe sama dalam satu nama, suatu struktur dapat terdiri dari kumpulan variabel-variabel yang berbeda tipenya dalam satu nama. Variabel-variabel yang 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>]; 13

3.3.2. Mengakses Elemen-Elemen Struktur Elemen-elemen dari suatu variabel struktur dapat diakses secara individual dengan menyebutkan nama variabel strukturnya diikuti oleh operator titik (. ) dan nama dari elemen strukturnya. Contoh : //Deklarasi sebuah Variabel bertipe nama_struct nama_struct nama_variabel; <nama variabel struktur>.nama_elemen; Contoh Program Struct : 14

3.4. typedef Bahasa C++ memungkinkan pembuat program untuk mendefinisikan kembali suatu nama tipe data yang baru berdasarkan nama tipe data yang lama. Ini bukan berarti bahwa suatu tipe data baru dibuat, tetapi hanya mendefinisikannya menjadi nama yang baru saja. Untuk mendefinisikan 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 nama tipe data float. Selanjutnya nama tipe data yang baru ini dapat digunakan untuk mendeklarasikan variabel yang bertipe float. 3.4. Abstract Data Type Abstract data type (ADT) adalah definisi tipe dan sekumpulan primitif (operasi dasar) terhadap tipe tersebut. Definisi tipe dari sebuah ADT dapat mengandung sebuah definisi ADT lain. Tipe diterjemahkan menjadi tipe terdefinisi dalam bahasa yang bersangkutan, misalnya menjadi kata struct dalam bahasa C dan C++. Primitif dalam konteks prosedural, diterjemahkan menjadi fungsi 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] } > 15

{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 mahasiswa struct 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 oleh user, banyaknya data mahasiswa yang dapat dimasukkan oleh user maksimal 25. 16

Bab 4. Pencarian 4.1. efinisi Pencarian (searching) merupakan proses yang fundamental dalam pengolahan data. Proses pencarian 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 pada spesifikasi (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 diisi dengan harga khusus, misalnya -1. c. Hasil pencarian adalah sebuah nilai boolean yang menyatakan status hasil pencarian. Jika x ditemukan, 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 array satu 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 17

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 ini akan mengurangi waktu pencarian karena pembandingan harga direduksi. Namun cara pencarian ini hanya dapat dilakukan jika elemen array sudah terurut. Cara ini tidak mungkin dilakukan 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 metode pencarian bagi dua. Keluaran prosedur ini adalah indeks elemen array yang mengandung nilai x; idx diisi 0 jika x tidak ditemukan.} {K. Awal : L[1..n] sudah berisi data yang sudah terurut menurun, dan x adalah nilai yang akan dicari.} {K. Akhir : idx berisi indeks elemen array yang mengandung nilai x; tetapi bila x tidak ditemukan, maka idx diisi dengan -1} DEKLARAS I i, j : integer {indeks kiri dan indeks kanan array} k : integer {indeks elemen tengah} ketemu : boolean {flag untuk menentukan apakah x ditemukan} ALGORITM A 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 kiri array yang baru} i ß k + 1 else {lakukan pencarian pada array bagian kiri, set indeks ujung kanan array yang baru} j ß k 1 endi f endif endwhile {ketemu = true or i > j} if ketemu then idx ß k else idx ß -1 endif {x ditemukan} 18

Latihan Program : Buatlah program untuk mencari bilangan terbesar dan bilangan terkecil dari sekumpulan nilai yang ada di dalam array L Buatlah program dari algoritma sequential search dan binary search 19

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, antara lain : 1. Bubble Sort 2. Selection Sort 3. Insertion Sort 4. Heap Sort 5. Shell Sort 6. Quick Sort 7. Merge Sort 8. Radix Sort 5.2.1.Bubble Sort Bubble sort atau metode pengurutan apung diinspirasi oleh gelembung sabun yang berada di atas permukaan air. Karena berat jenis gelembung sabun lebih ringan daripada berat jenis air, maka gelembung sabun selalu terapung ke atas permukaan. Prinsip di atas dipakai pada pengurutan apung. Elemen array yang berharga paling kecil diapungkan, artinya diangkat ke atas (ke ujung kiri array) melalui proses pertukaran. Algoritma Gelembung : procedure UrutGelembung (input/output L : Array, input n : integer) Deklarasi i : integer k : integer temp : integer {pencacah untuk jumlah langkah} {pencacah untuk pengapungan setiap langkah} {peubah bantu untuk pertukaran} Algoritm a for i ß 1 to N-1 do for k ß n downto i+1 do if L[k] < L[k-1] then endi f endfor endfor temp ß L[k] L[k] ß L[k-1] L[k-1] ß temp {pertukarkan L[k] dengan L[k-1]} 20

5.2.2. Selection Sort Metode pengurutan ini disebut pengurutan seleksi (selection sort) karena gagasan dasarnya adalah memilih elemen maksimum/minimum dari array, lalu menempatkan elemen maksimum/minimum itu pada awal atau akhir array (elemen terujung). Selanjutnya elemen terujung tersebut diisolasi dan tidak disertakan pada proses selanjutnya. Algoritma Pengurutan Seleksi : procedure SelectionSort (input/output L : LarikInt, input n : integer) Deklarasi i : integer j : integer imaks : integer maks : integer temp : integer Algoritma for i ß n downto 2 do {jumlah pass sebanyak n-1} {cari elemen maksimum pada elemen L[1...i]} imaks ß 1 maks ß L[1] for j ß 2 to i do if endi f endfor endfor L[j] > maks then imaks ß j maks ß L[j] {pertukarkan maks dengan L[i]} temp ß L[i] L[i] ß L[imaks] L[imaks] ß temp Latihan Program : Buatlah program dari algoritma pengurutan seleksi 21