Anda di halaman 1dari 77

I

Logikcr&
Algoritmcr
unluk Pemulcl
Logikcr&
Algorilmcr
unluk Pemulei

Wahyu Eko Susanto


Akhmad Svukron

@ GRAHA ILMU
LOGIXA & ALGORITMA UNTUK PEMULA
oleh 'vVo,h11Lt. Eko &rsanto. Akltrnctcl Sgul;ron

Hak Cipta t: 2A2O paLda Penr-r1is

Edisi Perta:'r'ra: Cetakal Pertama - 2C2A

M GRAHA ILMU
al
Ruko Jambus 7A Y ogral<arta 55283
T elp O27 4- 889 39 8 ; O27 4 -8a2262 ; F ax: O27 4 - 8890 57 ;

Hak Cipta dilindungi undang-undang. Dilarang memperbarryak atau memindahkan setragian


atau seiuruh isi buku ini dalam bentuk apa pun, secara elektronis maupun mekanis,
termasuk memfotokopi, merek4m, atau dengal teknik perekamal lainnya, tanpaizin tertulis
dari penerbit.

ISBN: 978-623-228 4A8-1

Buku ini tersedia sumber elektronisnya

DATA BUKU:
Format: 17 x24 cm; Jml. Hal.: x + 76;Kerlas Isi: HVS 70 gratn; Tinta Isi: BW/Colour;
Kertas Cover: Ivori 260 gram; Tinta Cover: Colour; Finishing: Perfect Binding: Laminasi Doff.
IMTA PTIIGAIIIIR

uku Loglka dnn Algorihnn tmttLk Pemuln, ini bukan menjadi buku
T)
yang pertama. Buku ini menggunakan berbagai surnber yang
11
t-, penulis cantumkan di daftar pustaka. Buku tidak bermaksud
n-renggantikan buku logika algoritma yang sudah ada, pembuatan buku ini
':rertujuan sebagai pendamping matakuliah logika dan algorihna
',rersamaan dengan buku terbitan vang lain. Sebagai penambah reverensi
-.agi pembaca.

Dengan selesainya buku ini penulis berterima kasih kepada semua


:rhak, kepada bapak akhmad svukron sebagai partner, kepada Universitas
irra sarana Informatika, dan semua pihak vang telah berkontribusi besar
'r,jga buku ini selesai.

Buku ini tentu saja masih memiliki kekurangan, kelemahan dan


'=sa1ahan. Karena intu penulis sangat mengharapkan masukan kritik dan
-r r.r1r vang
membengun demi perbaikan selanjutn_va. Sehingga buku logika
-rritma ini dapat mudair di mengerti oleh para pembacanya.

Yogvakarta, 25 April 2019

Penulis
1

IIAFTAR ISI

KATA PENGANTAR v
DAFTAR ISI vii
DAFTAR GAMBAR ix
BAB 1 KONSEP DASAR ALGORITMA 1,

1.1 Pentingnya Logika dan Algoritma 1


1.2 Definisi Logika 2
1.3 Definisi Algoritma 2
1.4 Kriteria Algoritma J
1.5 Struktur Algoritma 4
1.6 Bagaimana Menyusun Algoritrna yang Baik? 5

B \B 2 ALCORITMA DALAM PEMROGRAMAN 7


2.1, BahasaPemrograman 7
2.2 Penulisan Algoritma dalam Pemrograman 9

J \B 3 VARIABEL DAN TIPE DATA 17


3.1 Variabel 17
3.2 Tipe Data 20

- \B ] DASAR ALGORITMA PEMROGRAMAN 25


4.1, Percabangan 25
4.2 Perulangan 32
4.3 Rekursif 36
vlll Logika dan Algoritma untuk Pemula

39
BAB 5 LARIK ATAU ARRAY
39
5.1 Pengertian Larik atau ArraY
40
5.2 Arrav Dimensi Satu
5.3 Arrav Dimensi Dua (Multidimensi) 41,

43
BAB 6 METODE DEVIDE DAN CONQUER
43
6.1 Pengertian Metode Deaide nnd Conqt'ter
44
6.2 Pengertian Metode Sorting
45
6.3 Algoritma Sorting
45
6.4 Algoritma Selection Sort
46
6.5 Algoritma Insertion Sort
47
6.6 Algoritina Quick Sort
48
6.7 Algoritma Buble Sort
48
6.8 Algoritma Merge Sort
49
6.9 Latihan Soal
51
BAB 7 METODE SEARCHINC
51
7.1 Pengertian Metode Senrchittg
51
7.2 Metode Linearf Sequentinl Senrclt
7.3 Metode Binnnl Searclr 52

7.4 Latihan Soal 55

57
BAB 8 METODE GREEDY
61
BAB 9 KNAPSACK PROBLEM (PROGRAM GREEDY )
9.1 Pengertian Knnpsttck Prttblem (Program Greeil1) 61,
65
9.2 Trnttelling Snlesn'tntt
66
9.3 Slrcrtest Problent
9.4 N4inimum SPnnningTree 66

69
DAFTAR PUSTAKA
71
GLOSARIUM
75
INDEKS

-oo0oo-
IIATIAR GATIIBAR

Cambar 1.1 Prinsip Algotirma 2


Cambar 2.1 Tahapan Eksekusi Program B
Gambar 2.1 Simbol Input or.ttptLt 71
Can:rbar 2.2 Manual lnptLt 71
Gambar 2.3 Simbol Proses 11
Gambar 2.4 Simbol Stornge 11
Gambar 2.5 h4agnetic Disc 1"2
Garnbar 2.6 Terminal 12
Cambar 2.7 Preparntion 12
Gambar 2.8 Procesing 12
r,ambar 2.9 Simbol Proses Input OtLtput 13
-ambar 2.10 De cision
13
-ambar 2.11 Predefined Proces 13
.ambar 2.12 Connector
13
-arntrar 2.13 Off Page Connector 14
.-.-lrnbar 2.14 Arrou 14
-:r-r-rbar 2.15 Floutchnrt Luas persegi 14
.,.irnbar 5.1 Array Dimensi 1 40

-oo0oo-
BAB I

I(OIISEP IIISAN AlG ORITilIA

n 1 Pentingnya Logika dan Algoritma


ada dasarnya semua program komputer yang dibuat merupakan
T)
implementasi dari proses yang ada di kehidupan nvata yang cli
J-l- transformasikan ke dalam bentuk kode program sehingga dapat
..:nkan di komputer untuk membantu user dalam menjalankan
- :'.rc1nf-lyd. Karena kode program merupakan implementasi dari dunia
i,-: Lrleh karenanva setiap program vang dibuat oleh satu urang dengan
-: lainnva dapat berbeda dalam langkah penvelesaiannya karena setiap
' -: memiliki cara solusi pemecahan permasalahan yang berbeda-beda
. - Jengan kemampuan orang tersebut melogika dan menvusun urutan

-, -.:r atau Algoritma untuk menvelesaikan permasalahan yang di


: Oieh karenanya kemampuan seseorang dalam melogika dan
---rat urutan langkah untuk menyelesaikan suatu persoalan dengan
'-:'g efektif dan efisien akan sangat memengaruhi kualitas program
- -:. L'uahrva. sebelum kita membahas lebih lanjut mengenai Logika
-- :trritma pada pemrograman mari kita pahami terlebih dahulu
- -rari Logika dan Algoritma itu sendiri.
2 Logika dan Algoritma untuk Pemula

1.2 Definisi Logika


,,Marilah kita berfikri dengan logis" atau "N4ari kita menggunakan logika
kita" kiranya perkataan seperti ini kerap kali kita dengar di kehidupan
sehari-hari. Secara umum kalimat "logika" atau logis merujuk kepada cara
seseorang clalam berfikir dengan cara vang waiar serta memiliki alasan dan
memiliki hubungan yang rasional serta dapat dimengerti w'alaupun belum
tentu apa yang dilakukann,va disetujui sebagai suatu yang benar atau
salah.

1.3 Definisi Algoritma


Algoritma pertama kali diperkenalkan oleh seorang ahli matematika .Yang
bernama Abu Abdullah Muhammad Ibn Musa al-kn'arizmi berasal dari
Persia yang berasal dari kata nl-klut',nriznti dan kini lebih dikenal dengan
sebutan Algoritlm sebagai nama atas temuannya tersebut.

Algoritma secara umumnya merupakan cara dan urutan langkah


atau tahapan yang diatur secala sistematis untuk menYelesaikan suatu
kegiatan. Sehingga proses vang akan diseiesaikan dapat sesuai dengan
algoritma atau urutan langkah vang telah disusun. Pada prinsipnl'a
algoritn-ra dari sebuah proses ada 3 tahapan seperti pada Gambar 1.1.
terdapat inputan 1,ang dimasukkan ke dalam Proses dan dari proses akan
menghasilk an outpttt atau keluaran.

tvlasuke n Srcs*s i{ei.arar':

Sumber: (Sitorus, 2015)

Gambar 1..L PrinsiP Algotirmn

Sebagai contoh algoritma dalam kehidupan sehari-hari ketika kita


membuat mie instan maka kita dapat menvusun urutan sebagai berikut:

1.. Nvalakan kompor.


2. Masukkan air ke panci, rebus air sampai mendidih'
3. N4asukkan tnie instan, tunggu hingga matang.
" 3nsep Dasar Algoritma 3

- Tuangkan mie ke mangkuk


: Masukkan bumbu ke mangkuk.
Mie instan siap dihidangkan.
Secara sederhana Algoritma dapat kita gambarkan seperti di atas,
,,goritma memasak mie instan di mana proses-proses vang ada kita
..erjakan secara berurutan mulai dari inptttan memasukkan air dan
:remasukkan mie instan kemudian dilanjutkan proses merebus sampai
:r.rtang kemudian memasukkan bumbu hingga menghasilkan out1tutan
--crupa Mie instan siap untuk dihidangkan. Secara normal proses
-'embuatan mie instan dapat kita lakukan seperti langkah langkah di atas.
l',amun terkadang adi keadaan keadaan tertentu yang tidak semestinya
.ei-ringga kita harus membuat " decision" . Hal ini akan kita bahas lebih
:njut pada bab selanjutnya.
I

1,4 Kriteria Algoritma


1
leberapa kriteria yang harus dimiliki oleh suatu algoritma sehingga bisa di
. atakana sebagai algoritma vang baik menurut Donald E. Knuth adalah:
'I

lnpttt
suatu algoritma harus memiliki inputan baik 0 (nol) inputan atau lebih.
'l
Jadi suatu algoritma dapat rnemiliki lebih dari satu irtptrtan atau
bahkan tidak memiliki inputan sama sekali dari usernva dan data
irtputan didapatkan dari dalam algoritma itu sendiri.
- Outpr,rt
Outputan harus dihasilkan oleh sebuah algoritma. Karena akan
menjadi sia-sia apabila sebuah algoritma tidak menghasilkan keluaran
sama sekali. Karena algoritma disusun dengan tujuan unfuk meng-
i-rasilkan suatu hasil atau keluaran.
- Finitenes-c
Suatu proses pasti akan berhenti ketika hasil yang diharapkan sudah
tercapai. Demilikan pula dengan algoritma vang dibuat harus memiliki
titik akhir ketika proses yang diharapkan telah selesai dikerjakan.
4 Logiko don Algoritma untuk Pemula

4. Definiteness
Algoritma vang dibuat tidak menimpulkan makna ganda sehingga
setiap proses yang clijalankan tidak menimbulkan multi tafsir kepada
pelakunva agar hasil vang dicapai sesuai dengan yang diharapkan.
5. EJfectiaeness
Setiap proses dalam algoritrna harus dibuat seefektif mungkin. Karena
setiap proses dalam algoritma memerlukan waktu untuk dieksekusi
sehingga kita harus memastikan tidak ada proses yang sia-sia dalam
algoritma kita seperti contohnya kita tidak perlu menambahkan garam
ke dalam air laut untuk mendapatkan rasa asin dari air laut. Proses
menambahkan garam ke dalam air laut adalah proses'yang sia-sia.

1.5 Struktur Algoritma


Algoritma Secara umum memiliki 3 struktur dasar yaitu Perulangan,
Percabangan dan terurut atau sequential:

1. Perulangal
Perulangan atau looping. Pada kehidupan sehari hari banyak pekerjaan
,vang kita lakukan secara berulang ulang seperti makan, minum,
mencuci dan lain sebagainya di mana pekerjaan tersebut akan kita
lakukan sampai pada b;rtas tertentu sehingga proses tersebut di
hentikan. Misalnya cuci semua baju kotor sarnpai semuanYa bersih, ini
berarti proses mencuci akan dilakukan sampai semua baju kotor
menjadi bersih. Perulangan ini akan dibahas lebih lanjut pada bab
selanjutnya.
2. Percabangan
Percabangan merupakan proses pemilihan proses selaniutnya pada
keadaan tertentu. Hal ini terjadi karena pada suatu algoritma bisa
terjadi keadaan vang tidak pada semestinrra sehingga kita diminta
untuk menentukan proses apa yang akan dilakukan selanjutnya
apabila keadaan tersebut terjadi. Misalnva kita memiliki algoritma
Berangkat Kuliah kemudian terjadi kondisi Cuaca "HLt1an" maka kita
akan diminta untuk memilih proses selanjutnya "Pesan Taxi" atau
"Menggunakan Mantel" atau "Tidak Jacli berangkat" . pada saat Cuaca
Konsep Dasar Algoritma 5

"hLt1ar1" di sinilah
terjadi Branchtg atau percabangan di mana kita
diminta untuk memilik proses selanjutnva.
3. Terurut (Squential)
Terurut atau sqtLentinl merupakan proses urutan algoritma sesuai
dengan urutannva di mana dalam algoritma ini memiliki kondisi yang
ideal atau tidak terjadi kondisi perulangan ataupun percabangar-r
sehingga proses akan berjalan urut mulai dari proses ke 1 sampai
dengan proses ke -n.

7.6 Bagaimana Menyusun Algoritma yang Baik?


\da dua hal yang penting ketika kita membaut program aplikasi vang
Lre'rtama adalah Algoritma vang kedua adalah Struktur Data, kedua hai ini
nLeniadi penting karena kita tidak dapat menghasilakan program vang baik
retika hanya memiliki Algoritma yang baik namun dengan pemilhan
.truktur data vang buruk demikian pula sebaliknva. untuk membuat
:lgoritma yang baik kita harus benar-benar memahami dari bisr-ris
'.rrosesnya dan mengidentifikasi segala kernungkinan yang dapat terjadi.

-oo0oo-
a

\
BAB2

AlG OR ITMA IIAIAIII PETII B llc RAMA]I

2,1 Bahasa Pemrograman

:.1.1 Definisi Bahasa Pemrograman

ahasa pemrograman adalah bahasa yang digunakan untuk

B memberikan instruksi kepada perangkat keras agar dapat


melakukan sesuai dengan apa yang diinstruksikan. Sama halnya
. :r'.{dl-r interaksi kita sehari-hari agar orang lain mengerti dengan apa \/ang
-:l inginkan maka kita memerlukan rnedia komunikasi vang disepakati
.---r'sama agar dapat saling mengerti.

Sebagai contoh saat kita meminta seseorang untuk membuat mie


.:',stc1fl, saat itu kita rnelakukan pemrograman terhadap orang lain untuk
rnelakukan serangkaian kegiatan sehingga mie instan siap untuk disajikan.

Karena manusia memiliki pengalaman, rasa dan daya kreativitas


maka tanpa kita memberikan instruksi secara detail dan terstruktur pun
kegiatan tersebut dapat diselesaikan. Namun berbeda halnva dengan
.'rerangkat dalam hal ini Komputer, kita harus rnemberikan
perintah secara
rinci, benar dan mendetail sehinga apa vang kita perintahkan dapat di
'alankan oleh komputer dan menghasilkan luaran seperti
yang diharapkan.
8 Logika dan Algoritma untuk Pemula

2.1..2 |enis Bahasa Pemrograman


Bahasa pemrograman dapat dikelompokkan menjadi dua macam ber-
dasarkan tingkatannya yaitu bahasa tir-rgkat tinggi dan bahasa tingkat
rendah:

1. Bahasa Tingkat Rendah


Bahasa ini merupakan bahasan yang dirancang untuk langsung dapat
dimengerti oleh mesin yang menganut kode biner (0 dan 1) tanpa
harus melalui bahasa penterjemah namun bahasa ini cenderung tidak
"manusiawi" karena sulit dipahami oleh rnanusia'
2. Bahasa Tingkat Tinggi
Bahasa tingkat tinggi ini merupakan bahasa vang lebih manusiawi dari
bahasa tingkat rendah karena bahasa tingkat tinggi lebih dekat
penggunaannva dengan bahasa sehari hari' Namun bahasa ini
memerlukan conryiler untuk menterjemahkannya ke daiam bahasa
mesin agar dapat dieksekusi oleh Komputer. Sebagai contoh bahasa
tingkat tinggi adalah Turbo pascal, (++, PHP, ]ava'

Translasi

Compailer + Linker

Diterjemahkan Oleh CPU

Opcrasi Aritmatika, baca, tulis dsb

Sumber: (Sisrnoro, 2004)

Gambar 2.1, Tnhnpntt Eksekusi Progrnnl

Pada bagian selanjutnva kita akan bahas PHP sebagai salah satu
contoh bahasa pemrograman tingkat tinggi'
: ?oritmo dolam Pemrograman 9

1.1.3 Php
:lP rnerupakan salah satu bahasa tingkat tinggi yang saat ini popular
' -.-rnakan untuk mendeuelolt utebsite. PHP, C++, C# memiliki kesamaan
. r'r'ilc1 merupakan bahasa yang serumpun yaitu bahasa C. Bahasa PHp
.-.::amakali diperkenalkan pada tahun 1994 perkembangan PHP menjadi
I
-.:-gat massif dengan terbukti sudah lebih dari 50.000 situs telah meng-
t

I -'..:'akan PHP hanva dalam waktu kurang dari 3 tahun.


Hingga 2018 PHP telah memasuki versi PHP 7. Beberapa kelebihan
,rg dimiliki oleh bahasa PHP ini:
l Tidak ber bavar, PHP hadir sebagai bahasa pemrograman yang fi.ee
I

t
atau gratis sehingga setiap dneloper yang menggunakan bahasa
i pemrograman ini untuk di kembangkan secara bebas.
1 - PHP Mudah di pelajari, hal ini karena banya yang telah menggunakan
I bahasa PHP sehingga ketika kita mencari reverensi dengan settrch di
senrch engine akan dengan mudah kita temukary selain itu tata bahasa
vang digunakan mudah di mengerti.
Support terhadap hampir semua basis data, PHP dapat stLpport hampir
semua basis data seperti M_vSQL, Oracle, Interbase dll. Bahkan MySeL
sendiri terhubung langsung dengan PHP.
-- Php dapat dijalankan di semua platform seperti Linux, windows,
\4acos. sehingga mernudahkan developer dalam mengembangkan
aplikasinya.

2.2 Fenulisan Algoritma dalam Pemrograman


. .'nggambaran algoritma secara umumnva dapat disajikan dalam dua cara
r aitu dengan teks dan dengan gambar. Penvajian algoritma dengan
lnenggunakan tulisan dapat disajikan dengan bahasa tertentu misalnva
bahasa Inggris atau bahasa Indonesia maupun dengan pesetrdocotle.

sedangkan penyajian denga. gambar dapat disajikan dengan


Jlon,
-irnrt, namun sebenarnva /lorttclmrt bukan merupakan cara satu satunlra
10 Logiko don Algoritmo untuk Pemula

dalam penggambaran algoritma dengan gambar dapat juga menggunakan


d,ata lToro diagram, HIPO (Hierarclial Inpnt Process Output) maupun dengarr
menggunakan st nt c ttrr e clmr t.

2.2J1, Pesudocode
Pseudocodeadalah suatu kode vang ditulis mirip dengan kode yang
sebenarnVa dan ditulis berdasarkarr bahasa pemroglaman tertentu
sehingga lebih mudah di komunikasikan dengan proglammer karena lebih
terperinci.
Contoh Kasus:
Algoritma Menghitung Luas Persegi
1. Nlasukkan nilai Panjang
2. Masukkan Nilai Lebar
3. Tentukan rumus menghitung Luas adalah Panjang kali Lebar
4. Lakukan perhitungan
5. Tampilkan Hasil

Penr.elesaian dengan Peseudocode


inpuL Panjang (P)
Input Lebar (L)
l,uas=PXL
Hitung Luas
HASIL

2.2.2 Flowchart
Floroclurt adalah penggambaran algoritma dengan menggunakan media
gambar atau symbol untuk menvelesaikan suatu permasalahan. Dengan
mengganrbarkan suatu permasalahan menggunakan rnedia flowclnrt kita
dapat mengkomunikasikan algoritma vang kita buat kepada seluruh tim
pengembang sehingga sistem yang dibangun dapat sesuai dengan vang
diinginkan.
Secara umum Jlotttchnrt dibagi menjadi dua macam yailu Flotttchnrt
Sistem dan Jlontchnrt Program. Flouclnrl sistem adalah penggambaran
suatu sistem perangkat Komputer berbentuk diagram yang meng-
Algori tma dalam Pemrograman 11

gambarkan keterhubungan antara masing-masing perangkat. Adapun


;ontoh simbol- simbol vang digunakan untuk menggambarkannya adalah:
'- lnTttLt Outprlt

Sumber : (Sitorus, 2015)

Gambar 2.L Simbol InptLt otttpr.Lt

simbol ini digunakan untuk menggambarkan piranti masukan dan


piranti keluaran, seperti kevboard, mouse, scanner, sensor maupun
piranti keluaran seperti monitor, printer dan lain lain-lain.
2. Manual lnput

SumLrer: (Sitorus, 2015)

Gambar 2.2 MnntLal lnptLt

symbol ini untuk menggambarkan inputan data secara manual online


keyboard.
l. Proses

Sumber; (Sitorus, 2015)

Gambar 2.3 Sirnbol Proses


:1

simbol persegi panjang ini untuk menggambarkan pengolahan vang di


.1
lakukan oleh komputer.
l. Penvimpanan File
:

Sumber: (Sitorus, 201 5)

Gambar 2.4 Sintbol Stornge


12 Logiko dan Algoritma untuk Pemula

syntbol ini digunakan untuk menggambarkan storttge atau online


Storttge, berfungsi untuk menggambarkan inputan data vang berasal
dari disc atau penyimpanan data ke disc.
5. It4.ngnetic Disc

Sumber: (Sitorus, 2015)

Gambar 2.5 Mngretic Disc

simbol input atau otttpttt vang menggunakan media mngnetic disc.

Flozuchart Prograg, adalah pengambaran suafu algoritma untuk


menrecahkan suatu permasaiahan. Beberapa contoh symbol yang di
gunakan untuk menggambarkan algoritma dengan foz ttchart adalah:

1. Terminal

Sumber: (Sitorus, 201 5)

Gambar 2.6 Tenninnl

Terminal digunakan untuk menggambarkan awal dan akhir suati


algoritrna dalam sebuah Program.
2. Preparntiort

Sumber: (Sitorus, 2015)

Gambar 2.7 Preparntion

Simbol ini digunakan untuk memberi nilai an'al pada suatu ttnriable
atat cottnter.
3. Procesing

Sumber: (Sitorus, 2015)

Gambar 2.8 Procesing


Algori tma dalam Pemrograman 13

digunakan untuk menunjukkan pengolahan secara aritmatika terhadap


I data yang dimasukkan atau dapat juga mengg;ambarkan proses
pemindahan data.
l. Inptttf Outpttt

Sumber: (Sitorus, 2015)

Gambar 2.9 Simhol Proses Input OtttptLt

Simbol ini digunakan untuk menggambarkan proses input atau outytut


k data.
il r. Decision

-
Sumber: (Sitorus, 2015)

Gambar 2.10 Decision

Siimbol ini digunakan untuk menggambarkan operasi percabangan


pada sebuah logika.
ii
r. Predefined Process

Sumber: (Sitorus, 2015)

Gambar 2.1L Predefined Proces

Simbol ini digunakan untuk menggambarkan sub progrsm vang


kadang dikenal dengan istilah fungsi atau prosedur.
Connector
=.-
:
:
=
Sumber: (Sitorus, 2015)

Cambar 2]1,2 Connector


14 Logika dan Algoritma untuk Pemula

simbol yang digunakan untuk menghubungkan /lowchttrt pada


halaman yang sama.
B. Ot'f Pnge Contrcctor
:
-:E=
Sumber: (Sitorus, 2015)

Gambar 2.13 Ot'f Pnge Connector

siimbol yang digunakan untuk menghubungkan lTontchnrt pada


halaman 1.ang berbeda.
9. Arrow

Sumber: (Sitorus, 2015)

Gambar 2.14 Arroro

Simbol Jloutchnrt vang digunakan untuk rnenggambarkan arah atau


alur proses.
contoh pada studi kasus perhitungan lebar persegi panjang apabila
digambarkall menggun akan f oa' clrnr t adalah:

Gambar 2.\5 Flowchart Luas Persegi


,o
Algor i tm o dolam Pe mrogr am an 15

.a Latihan Soal
1. Buatlah sebuah Algoritma Perhitungan Segi riga, gambarkan Floutclmrf
serta Peseudocodenva.
2. Buatlah sebuah algoritma Memasak Mie Instan berikut ini dengan
men ggunakan p seu do co de dan fl ow ch n r t .

Nyalakan kompor.
Masukkan air ke panci,
Ia Rebus air sampai mendidih.
Jika Air Sudah Mendidih Masukkan mie instan
Tuangkan mie.ke mangkuk
Masukkan bumbu ke mangkuk.

-oo0oo-
u

la
BAB 3
I

UARIABE1 IIA]I IIPI IIAIA

3,1 Variabel
i.1.1 Definisi Variabel
t- ecara umurn esrinble dapat kita artikan sebagai container vang
memiliki nama, seperti halnva sebuah contniner dapat menyiman
\
\J/ barang, pada anriable juga dapat di gunakan untuk menvimpan.
-r,anva kalau container dalam pengertian umumnya digunakan untuk
. - r impan barang pada variable digunakan untuk menyimpan data.
Dalam PHP, variabel diawali dengan tanda dollar ($ ) sedangkan
' .':trtent dengan menggunakan operator rr-rr. Selanjutnva, semua
''. ataan diakhiri dengan tanda titik koma (;). Sebagai contoh dalam
-r'rrerirl1&r1 kita dapat membuat sebuah variabel dengan nama buah dan
-:lsi variabel tersebut dengan apel:

l-ol z

Sama halnva der-rgan sebuah tempat penvimpanan yang kaclang


.'.mpunya kekhususan untuk menyimpan jenis barang tertentu. Misal
.a1au kita akan menvimpan air atau benda cair kita dapat menggunakan
'i-,otol,
gelas, ember, mangkuk atau jerigen namun untuk menvimpan benda
gas seperti gas LPG, Oksigen, dan benda gas lainnya kita tidak dapat
18 Logika dan Algoritma untuk Pemula

menggunakan gelas atau ember dapat menggunakan botol. Karena setiap


benda memiliki sifatnva masing-masing. Demikian pula Pada penggunaan
variabel kita juga dapat tnenentukan tipe data atau ienis data apa Vang
dapat kita masukkan ke dalam variabel tersebut. Namun dalam Php
variabel tidak bertipe sehingga bisa dimasuki dengan tipe data apa saja.
Untuk memanggil nilai dari variabel pada php kita dapat menggunakan
perintah " echo" atau "print", seperti berikut "
. ?php
iues^rrpsf= rlrr ' -
a( la-ah B:dh
$buah="APel";
print $deskripsi;
echo $buah;

Hasil vang dapat kita lihat adalah:


Inl adalah Buah Apel

pada php peniulisan variabel memiliki beberapa aturan:

1. Bersifat cttse sensiti-oe, di mana penggunaan huruf besar dan kecil


sanagat berpengaruh terhadap pemanggilan variabel itu sendiri.
2. Neme variabei tidak boleh menggunakan angka, misal $1buah.
3. Nama variabel boleh menggunakan tmderscore (_) baik pada awal
tengah maupun akhir.
4. Nama r,.ariabel boleh mengandung angka, misal $buahL

3.1..2 )enis Variabel dan Implementasinya


1. Variabel Lokal
variabel lokal adalah variabel yang didefinisikan di dalam sebuah
fungsi, dan juga hanya dapat digunakan di dalam fungsi tersebut.
berikut merupakan contoh penggunaan r.'ariabel lokal:
. ?php
functicn print angkaO {
$angxa = 11rr
rr -

,/,./variabel local
echo $angka;
,"r'cu-"put isi varlabel local
echo $angka;
i /akan error karena tidak mengenali r-a:ial:eL yang dikeluarkan,
t tvar=re nerinlah ini ber:ada dr iaar :irgsl :expat variabel di
deklaras ikan
?>
" :"iabel don Tipe Data 19

- \-ariabel Global
\-ariabel global adalah variabel vang dideklarasikan di luar sebuah
r iungsi dan ketika ingin menggunakan di dalam fungsi kita tinggal
I rnendeklarasikan di dalam fungsi yang kita buat dan jangan lupa
tambahkan kata "globa1' di depan variabel saat dideklarasikan. berikut
a
aclalah contoh penggunaan variabel global:
. lphp
::ama = 'r Ihsanri -

::nction print nama O {


- rh:- (r:-:.

=:ho $nama;

:rrnt namaO ;
axan mengeluarkan isi darr function yg meng echo variabel nama

::ro $nama;
''nencetak isi variabel nama yang sudah dideklarasikan di awal program
?>

t- : Varinbel Ststic
Vnrinbel Static adalah variabel vang akan menyimpan nilai akhirnya,
jika pada normalnya sebuah variabel dalam suatu fungsi akan di
11 kembalikan nilainva maka dengan menggunakan variabel ststic ini
lidak return atau tidak kembali ke nilai awal. Berikut adalah contoh
penulisan variabel s/aflc dalam PHP:
. ?php
dek-arasi f.:ngsi
::nction berhit-ung O {
static $niiai = t;
echo $niIai;
$niIai++;
. echo " <br> " ;
;---its.,-^/\
::--Lits!,r^11.
; ^-L i ts..-^
!!!rrruulr! /\ l/
I

,/output
./L
iz
,/3
a>
20 Logika dan Algoritma untuk Pemulo

3.1.3 Variabel Konstanta


Konstanta sejatinya sama seperti variabel, diguankan untuk menYimpan
nilai namun antara konstanta dan variabel memiliki perbedaan. Untuk
membuat konstanta pada php memakai fungsi defineO, contoh:
define ('TIM, 'Skor') ;

Penclefinisian konstanta tidak menggunakan dolar ($).

3.2 Tipe Data

3.2J1- Definisi Tipe Data


Tipe clata berfungsi untuk menentukan nilai apa saja yang dapat di
masukkan pada suatu variabel. Sebagai contoh kita memberikan label
angka pada umur, maka ketika kita memberikan nilai huruf atau sfrlng ke
dalam r.aiabel umur akan ditolak.

selain itu tipe data juga menetukan besaran memori vang digunakan
karena setiap tipe data memiliki besaran alokasi memori yang berbeda
beda. Proses menentukan tipe data menjadi hal yang krusial karena akan
memengaruhi kode program yang akan dijalankan .. ketepatan dalam
memilih tipe data akan meningkatkan efektivitas suatu proglam. Tipe data
memiliki 2 jenis: Tipe data dasar atau primitive dan Tipe data terstruktur.
Pada rumpun bahasa C mengenal 5 tipe data primitif, yaitu: char, int,
double, float, dan void.

3.2.2 Macam-macam Tipe Data dan Penggunaannya


PHP merupakan keluarga dari bahasa C di mana ketika kita men-
deklarasikan sebuah variabel Dalam lumpun bahasa C secara umumnva
kitamenyebutkantipedatanl'a'Walaupunsecaraumumpendeklarasian
variabel dalam PHP tidak memerlukan tipe data namun tidak ada saiahnva
kita mengenal lebih dekat mengenai tipe data. Tipe data secala garis besar
di kelornpokkan menjadi 2 jenis tipe data, vaitu:

1.. Tipe data Sederhana


2. Tipe data Terstruktur
' :.iobel don Tipe Doto 21

- Tipe Sederhana (Simple Type)


,-: clata sederhana atau juga di kenal dengan tipe data primitif adalah
l.
-.' elata dasar yang hanva mampu menyimpan satu nilai tiap satu
..rbel. Tipe data sederhana sendiri dapat dikelompokkan menjadi 3 jenis
' r- ieiompokan:
Kelompok llmneric
Pada kelompok data nwneric tipe data dibedakan menjadi 2 jenis yaitu
integer yang merupakan tipe data vang menampung bilangan bulat
elan real yang merupakan tipe data vang manampung bilangan
pecahan.

i) Integer
Integer sendiri memiliki beberapa jenis tipe data, beberapa tipe
data ini dimaksudkan untuk memberikan batasan pada peng-
gunaan memori, agar penggunaan memori menjadi lebih efisien.
seperti pada tabei 3.1 berikut:

Tabel 3.1Tnbel Tipe Data lnteger

Tipe Data Ukuran Tempat Rentang Nilai


Byte l byte 0 s/ d +255
Slnrtmt l byte -28 s/ d +127
Irtteger 2 bytes -32768 s/ d32767
Word 2 bvtes 0 s/d 65535
Lorrgittt 4 bytes 2147483648 s/ d 2147483617

Real
Trp-redata real merupakan tipe data yang digunakan untuk
:nenvimpan bilangan pecahan. Adapun cara penulisannya dapat
lilakukan secara biasa maupun dengan cara yang scienfiJic, contol-r
-lata real 46,98, -89,67 dan 45.675E+12, Beberapa jenis tipe data rear
:eperti pada tabel 3.2 berikut:
22 Logika dan Algoritmo untuk Pemula

Tabel 3.2TipeDataReal

Tipe Data Ukuran Tempat Rentang Nilai


Real 6 bytes 2.9 x 70-39 s/d1,.7 x 1038
single 4 bvtes 1.5 r 1045 s/d3.4 x 1038
Double 8 bvtes 5.0 , 10-324 s/d7.7 x 10308
extended 10 bi.tes 3.4 r 10-4932 s/d7.1 x. 704932
c0fi1p 8 bvtes -9.2 r 1018 s/d9.2 r 1018

b. Kelornpok C/rar (Karakter)


ChLtr atau karakter adalah tipe data yang hanva mampu menyimpan 1
karakter atau sama hanl,a menggunakan tempat 1 bvtes (1 byte: B bit).
Adapun untuk memberlkan nilai pada tipe data ini menggunakan
tanda petik pada karakternya, misal: 'a' ,'b' ,'1'. Pada tipe data ini
dapat menyimpan huruf (a,b,c,d,d11) , angka (1-,2,3,1, dll), tanda baca
(.,?!: dll) dan karakter khusus (@#S%^&.).
c. Kelompok Boiean
Tipe data kelompok Boolean ini merupakan tipe data logika di mana
tipe data ini l'ranva menyimpan benar (True) atau salah (Fnlse) vang
dpat disimbolkan pula dengan angka 0 (Fnlse) dan 1 (Trr.Le). Pada php
kita hanya mengenal 1 tipe clata l.aitu Boolean, namun pada rumpun
bahasa c yang lainnya seperti turbo pascal tipe data boolean ini masih
di bagi lagi menjadi 3 bagian seperti terlihat pada tabel 3.3 berikuti ini:
Tabel 3.3 Tipe Dnta Boolenn

Tipe Data Ukuran Tempat


Boolean l bvte
Wordbool 2 byte

Longbool 3 byte

2. Tipe Terskuktur (Structured Typr)


Tipe data tertstruktur meliputi atray, string, set, record clan file, vang
dalam pembahasannva akan dibahas secara terperinci pada bab
selanjutnya karena memerlukan penjelasan vang lebih terperinci. Dan pada
, -''obel don Tipe Data 23

': ini akan di jelaskan mengenai string yang merupakan salah satu tipe
- .:,r terstruktur.
: ..fitg
-: clata string adalah tipe data yang dapat menampung teks, hampir
- r-r seperti tipe data chnr vang dapat menampung semua jenis karakter
:-'.rn pada string memiliki panjang. Sehingga string dapat menampung
.. Adapaun cara penulisan tipe data string adalah dengan
L-rerupa feks.
. :rLrerikan tanda petik diantara teksnya. Sebagai contoh:

. - -::-='Nangka dan Pisang' ;

l-.
berisi' Nangka dan Pisang'
Pada contoh di atas berarti variabel buah
:rerarti variabel buah memiliki tipe data string, karena dapat
.: ampung teks.

-::rhan Soal
Hlihlah salah satu jawaban yang benar dari pertanyaan berikut ini
1" Yang termasuk tipe data bilangan bulat adalah:
a. char
b. double
c. float
d. int
e. boolean

a. Char
b. Int
c- Boolean
d. Real
e. Byte
3. Panjang ukuran tipe data double adalah
a. 1 Byte
b. 2Byte
c. 3 Byte
t

24 Logika dan Algoritma untuk Pemula

d.4 Bvte
e.5 Bvte
4 Yang dapat menampung lebih clari 1 karakter huruf adalah tipe data
a. Char
b. String
C. Boolean
d. Real
e. Byte
5. Tipe data manakah vang termasuk dalam tipe data terstruktur
a. Char
b. Boolean
c. Real
d. String
e. Byte

-oo0oo-
ic

BA'B 4

B[$AR AlG ORIIMA PTM B lI GRAIIIA]I

+.1 Percabangan

{.1.1 Pengertian Percabangan


ercabangan merupakan salah satu struktur kontrol untuk

P mengatur jalannya program, karena beberapa kasus tidak dapat di


pecahkan secara sekuensial. Di mana Percabangan digunakan
untuk melakukan seleksi terhadap nilai, kemudian dari nilai
,::sebut akan menjalankan perintah atau ststement di bawahnya
--:'rclasarkan pada nilai. Secara umurn Percabangan Apabila digambarkan
,: enganfozo chart, akan tampak sebagai berikut:

Tidak

Gambar 4.1 Flowchart P ercabangan


26 Logika dan Algoritma untuk Pemula

Dari contoh di atas dapat kita terjemahkan terjadi kondisi


percabangan pada "Keluar ?" di mana Print "Kembali" dan Print "Logout
Berhasil" akan dijalankan berdasarkan nilai vang diberikan pada "Keluar?"
apabila di berikan nilai "Tidak" maka statement Print "Ken-rbali" akan
dijalankan namun apabila nilai yang di berikan adalah "Ya" maka
statement vang akan di jalankan adalah Print" Logout Berhasil".

4J1..2 jenis Percabangan dan Implementasinya


Percabangan atau branclting pada rumpun bahasa C memiliki 2 macam
jenis vaitu percabangan dengan svarat dan percabangan tidak bersyarat, di
mana pada percabangan bersvarat memerlukan nilai pada kondisi tertentu
untuk menentukan statement mana vang akan dijalankan. Sedagkan pada
percabangan tidak bersyarat tidak memerlukan nilai tertentu untuk
menjalankann)'a.

1. PercabanganBersyarat
Pada percabangan bersyarat secara garis besar di bagi menjadi 2 r-aitu
percabangan derigan menggunakan IF dan SWITCH ... CASE. Berikut
penjelasan secara pada masing masing percabangannya.

a. Percabangan lF
Percabangan if merupakan bentuk percabangan yang paling
sederhana, karena hanya akan menghasilkan nilai true dan false. Di
mana struktur if akan melakukan perinta pada blok perintah apabila
nilai pada svarat terpenuhi. Secara umum bentuk percabangan if
sebagai berikut:
. ?php
Il .kcndlsl-r t

Sta tement
I
?>

Contoh:
. ?php
$Hasil=80;
_LI (iHaSlr> /U I t
Echo " Selamat Anda Lulus";
)
?>
, :sor Algoritma Pemrogramon 27

Pada contoh di atas kalimat "selamat anda lulus" akan di tampilan bila
nilai dari hasil lebih besar dari 70. Karena kondisi tersebut terpenuhi
maka program akan menampilkan "Selamat Anda Lulus".
I

Bentuk kedua dari percabangan IF ini adalah IF... ELSE, di mana


terdapat penambahan statement yang akan dijalankan apabila
persyaratan tidak terpenuhi atau nilai syarat bernilai false. Adapun
secara umum IF... ELSE dapat dituliskan sebagai berikut:
. ?php
.11-. I l-b^hdi-1-\ )
t

SfaEemena if konaisi = rtJe

r_ Srdremenr if konAisj = ta-Lse

Contoh
. ?php
3HasiI=80;
_r, lfldsrr> -^\
/u) T

Echo " Selamat Anda Lulus";


I etse {
:cho " Maaf Anoa -iagal";

?>

Pada contoh di atas kalimat "selamat anda lulus" akan ditampilan bila
nilai dari hasil lebih besar dari 70. Dan apabila kondisinya tidak
terpenuhi akan menampilkan pesan "Maaf Anda Gagal". Dalam
contoh di atas Karena kondisi tersebut terpenuhi di mana variabel hasil
bernilai 80 maka program akan menampilkan " Selamat Anda Lulus".
Bentuk lain dari lF adalah else IF, di mana percabangan clapat di
menvelesaikan pen abangan lebih dari 1 kondisi dengan me-
nambahkan blok else if, adapun strukturnya sebagai berikut:
. ?php
Il r <kondtsl 1>) l
Staaemena if
kondisi 1 = tt Lle
e-e^ i- {o-to:s-_2, {
Statement lf kondisi 2 = true
le.,e if .ko:.drs; n. I
Staaement lf kondist n - true
e I se 1

Statement jf Semu. Lanji-; t;a-t r^--^svLlhi


l
?>
28 Logika don Algoritma untuk Pemula

Contoh:
. ?php
$Hasil=68;
_Lt(FHaSlr> /Urt
Echo " Selamat Anda Lulus";
) else if ($Hasil> 65 {
Echo " Silakan Lakukan Her";
) erse {
Echo " Maaf Anda Gagal, Coba Lagi";
)
?>

Pada contoh di atas kalimat "selatnat anda lulus" akan di tampilan bila
nilai dari hasil lebih besar dari 70. Dan apabila nilai dari hasilnva lebih
besar dari 65 maka "Silakan LAkukan Het" , apabila semua kondisinva
tidak terpenuhi akan menampilkan Pesan" Maaf Anda Gagal, Coba
Lagi". Dalam contoh di atas r.'ariabel hasil bernilai 68 maka program
akan menampilkan " Silakan Lakukan Her".

Bentuk terakhir dari IF adalah Nested IF atau IF Majemuk, di mana


pada percabangan if didalamnva terdapat if kembali, Secara umum
Nested if dapat dituliskan:
. ?php
If i<kondisi 1>l {
If (Kondisr,a ){
Statemert if kondisi a - ttue
]else {
Statement if kondisi a = false
]

StatemenE if kondisi 1 = fafse

Contoh
. ?php
$Hasil=80;
$presensl=50?;
If ($Hasi1> 70) {
1f Spresen.r -51 {
Echo " Selamat Anda Lulus";
]etse {
Echo " Iulaaf Anda Harus HER" ;
]
) else {
Echo " Maaf Anda Gagai";
)
?>
) osor Algori tma Pemrogromon 29

Pada contoh di atas terdapat dua syarat vang pertama adalan hasil
ujian dan vang kedua adalah presensi kehadiran, di mana untuk
mendapatkan "Selamat anda Lulus" maka variabel nilai harus lebih
besar dari 70 dan variabel kehadiran harus lebih besar dari 7S%. Dari
struktur koding di atas dapat dilihat bahwa di dalam percabangan
terdapat percabangan presentase kehadiran di dalam percabangan
induk vaitu nilai. Di mana untuk menjalankan percabangan prosentase
maka nilai dari percabangan hasil harus terpenuhi terlebih dahulu.
Kalau melihat dari nilai variabel vang diberikan koding program di
atas akan rnenghasilkan tampilan "Maaf anda harus HER" karena
n'alaupun nilai dari r.ariabel hasil sudah lebih dari 70 namun nilai dari
variabel presentase kehadiran kurang dari75%.
SWITCH.....CASE
Perintah SWITCH ... CASE pada dasarnya sarna dengan perintah if,
hanva pada perintah ini setiap CASE harus diakhiri dengan BREAK;
hal ini bertujuan untuk memisahkan antara satu CASE dengan vang
iainnya. Dan pada perintah SWITCH CASE akan menseleksi nilai dari
i-ariabel terhadap nilai CASEnya, berikut struktur dan contoh
penggunaan dari SWITCH ... CASE:

Struktur:
. ?php

srditch ($var)
i
case va-Lue1:
statementl;
break;
case vaiue2:
cF.l-6ahla.

break;
case value_n:
statement n
UA CdK;
I
?>

Pada struktur di atas Variabel harus kita cantumkan setelah kata switclt
vang dimasukkan di dalam kurung ( ), dan memulai perintah switclt
dengan kurung kurawal.
I
30 Logiko dan Algoritma untuk Pemula

Case selaiu diikuti oleh keadaan yang dimungkinkan akan terjadi,


kemudian dituliskan nilai yang akan dibandingkan dengan nilai
r.ariabel vang telah dituliskan pada szulfc/z. Apabila nilai dari kondisi
terpenuhi maka perintah akan dijalankan. Brenk betfungsi untuk
menghentikan perintah pada satu cnse agat case selanjutnva tidak di
periksa dan pembacaan SWITCH CASE ini dibaca secara berurut dari
atas. Untuk memperjelas struktur di atas berikut contohnva:
. ?php
$huruf=C;
swit.ch ($huruf)
i
\ A /
-ro6

echo "Huruf L rr-


break;
case 'B' :
echo "Iluruf
break;
case 'C' :
echo I'Hurul c ";
break;
case 'D' :
echo "Huruf
break;
)
?>

Kode program pada contoh di atas akan melihat nilai dari variabel
$huruf, membelikan keluaran tergantung dari nilai variabel tersebut.
Dari nilai veriabel $huruf vang kita berikan akan didapatkan keluaran
teks "Huruf C". Fungsi Brenk di sini untuk menghentikan pemeriksaan
ke crrse selanjutnya, apabila brenk dlhllangkan maka yang tampil tidak
hanya "Huruf C" namun akan menghasilkan tampilan "Huruf C Huruf
D". Itulah mengapa kita harus menYertak an Brnke di dalam cnse.

2. Percabangan Tak Bersyarat

Berbeda dengan bentuk percabangan sebelumnya untuk


bentuk
percabangan vang kedua adalah percabangan tak bersvarat di mana dalam
aplikasinya akan mengarahkan eksekusi program ke line program vang
dituju, dan menggunakan perintah goto. Namun fungsi ini hanva berjalan
di PHP versi 5.3.
- -sor Algoritma Pemrogreman 31

=cho 'Ja1an Di tempat' ;


=: echo 'ja1an Mundur';

ini dijalankan rnaka perintah echo


Pada contoh ini ketika program
- --an di tempat' ,. tidak akan di jalankan karena ada perintah goto
. ) ang mengarahkan pe perintah yang mengarahkan untuk langsung
=..rmpat ke perintah a yaitu echo ' j alan Mundur , ; tanpa meng
.:ekusi perintah sebelumnya, contoh lainnya apabila dikonginasikan
: '{dr1 perintah IF
.: -

:f ($a==o)
gotc Tangkah a;
--5e
goto Langkah b;
'--^l--L
- 2 t)9 ^a1t
echo 'Zari Di tempat';
-anEkah b:
echo 'Lari Mundur' ;

":ihan
Buatlah kode program berdasarkan tabel berikut ini gunakan fungsi IF
-1an fungsi switch case.

Menu Kategori Jenis Harga


Sarapan Makanan Nasi Coreng Rp.50.000,-
Nasi Uduk Rp.35.000,-
Minuman Teh Panas Rp. 15.000,-
Jeruk Panas Rp. 25.000,-
Makan Makanan Nasi Padang Rp. 55.000,-
Siang
Soto Ayam Rp.45.000,-
Minuman Es Cincau Rp.30.000,-
Es Bajigur Rp.37.000,-

- ,.at sebuah listing program dengan menggunakan fungsi goto, dengan


'.'-rc1i kasus mata kuliah.
32 Logika don Algoritma untuk Pemula

4.2 Perulangan

4.2.1, Pengertian Perulangan


Perulangan atau loop adalah perintah program vang berfungsi untuk
mengulang beberapa baris kode plogram atau perintah sampai pada batas
vang telah ditentukan. Untuk membuat perintah perulangan setidaknva
kita harus mengetahui 3 komponen yang harus ada dalam perulangan
tersebut, yaitu:

1,. Kondisi pada saat awal perulangan


2. Kode Program atau perintah vang akan diulang,
3. Kapan Perulangan iiu akan berhenti.

Penggunaan perulangan dalam bahasa pemrograman dapat lnem-


berikan efisiensi dan memperpendek kode program. Karena dengan
menggunakan perulangary proses yang dilakukan berulang misalnva
menuliskan huruf A sampai 500 dapat dituliskan dengan beberapa baris
koding saja.
Secara umum proses looping atau peruiangan dibedakan menjadi 2
jenis, yaitu:

1". Looping yang jumlah kali perulangannnYa sudah diketahui terlebih


dahulu.
2. Loo?ting vang jumlah kali perulangannnva belum diketahui kapan dia
akan berhenti.

Untuk perulangan 1,ang sudah diketahui kapan dia akan berhenti


akan diselesaikan dengan perulangan for. Sedangkan perulangan vang
belum diketahui kapan perulangan itu akan berhenti diselesaikan dengan
ulile apabila kondisinya diperiksa di alt al dan akan menggunakan do uhile
apabila kondisi perulangannva diperiksa di akhir.

Perulangan secara umum memiliki 2 Struktur utama:

1. Kondisi perulangan, vaitu kodisi vang harus dipenuhi agar perulangan


dapat dilakukan biasanya berupa ekspresi boolean.
2. Bagian Perintah koding vang akan diulang.
o - -:ar Algoritma Pemrogramen 33

I 1,2 Jenis Perulangan dan Implementasinya


. -'r-rapa jenis model perulangan yang umum digunakan pada
' '--:ograman menggunakan php atau jenis pemrograman lainnya adalah
\
\\'hite
- Do \\hile
For
- \ested loop atau perulangan bersarang
- -.:-kut penjelasan dari masing-masing bentuk perulangan

Perulangan \Vhile .
Seperti pada penjelasan sebelumnya struktur perulangan rvhiie di
gunakan untuk kondisi perulangan yangbnnyaknyn pertilnngm titlLtk ,1i
1
ketnhui sebelttmnyn ntnu tidak dapat dipnstiknn pada saat kode progran-L itu
ij.i
dituliskan.
:
.: Sebagai contoh kita akan membuat program untuk mengacak buah-
buahan, kita tidak akan tahu berapa kali nanti trser akan mencoba,
.-rpakah 2, 3, 4 atau 10 kali percobaan sampai hasil yang diharapkaa
clitemukan. secara umum struktur kode unfuk perulangan while dapat
dituliskan.
.:php
:.:ile (<kondisi>) {
Statement //"perintah yang akan diulang,,

Contoh Kode perulangan dengan r,r,,hile


. ?php
$e=1;
wnl-Le ( He <= /l

echo 'rJalanrr ;
..h^ il- hy /-il.

Pada contoh di atas kita membuat perintah perulangan untuk agar


rnenuliskan teks "jalan" selama nilai dari variabel $e kurang sama
.lengan 7, karena kita tidak tahu berapa kali perulangan itu diperlukan
maka kita menggunakan perintah perulangan while.
I

34 Logiko dan Algoritma untuk Pemula

2. Statement Do.....While
Perintah looping dengan while dan dengan perintah do-while pada
prinsipnya hampir sama. Yang rnembedakan hanva pada kapan
pengecekan kondisi perulangan itu dilakukan. Pada struktur
perulangan while kondisi perulangan diperiksa di ar'l'al sehingga
apabila kondisi tidak dipenuhi sejak awal maka perulangan tidak akan
dilakukan sama sekaii. Berbeda dengan do while karena lokasi
pengecekan perulangan dilakukan di akhir maka perintah looping
akan melakukan satu kali perintah sebelum mengecek kondisi
perulangan di belakang. sehingga walaupun kondisinva tidak
terpenuhi perulangan akan dilakukan sekali. Adapun Struktur dasar
dari perintah do while, yaitu:
. ?php
do{
,//pe:intah i,ang akan di ulang
,} while (<kondisi>);
?>

Contoh perintah do-while:


. ?php
Se=500;
do
{
echo "Jalan Kali";
Se=$e+1;
) while ($e .= 1000);
?>

Dengan perintah ini layar tetap akan mencetak 1 kali teks "Jalan Kali"
walaupun nilai dari kondisinva tidak terpenuhi sejak awal.

3. Perulangan FOR
perulangan For digunakan apabila sudah diketahui berapa kali kita
akan melakukan perulangan oleh karenanva untuk kondisi perulangan
for, kita membutuhkan 3 kondisi, vaitu di kor-rdisi awal perulangan,
kondisi pada saat perulangan, dan kapan perulangan harus berhenti.
Adapun struktur penulisan perulangan FOR,vaitu:
for (stal:t; condiilon; increment)
{
z'/Perintah Yang akan di uiang;
)
- :sar Algoritma Pemrogromon 35

Berikut contoh sederhana perulangan For dengan 15 baris kalimat


" Logika Algoritma" . Berikut kode programnva:
.: ?php
:3r: ($e= 1; $e <= 15; ge++)

echo'rLogika Algorltmar, ;
echo Ir .br / r,, ;

- Perulangan bersarang (Nested Loop)


Perulangan bersarang pada dasarnya adalah perulangan di dalam
perulangan. Seperti untuk array adapun perintahnva dapat meng-
gunakan for, while.atau do-while.

Berikut contoh nested loop


.:Irhp
:l: (ge=0; ge <i5; ge++)

for (93=a; ga <15; gj ++)


{
echo ge;
l
i
c-1-O "<Or ,";

Pacla kode perulangan yang di atas terdapat perulangan di dalam


Lrerulangan. variabel Counter $a dipakai untuk melakukan perulnngan
j,tlnrn (inner loop), dan variabel counter
$e dipakai untuk pentlangan
,trnr (outer loop). Nested loop ini biasanva dipakai untuk perulangan
r ang rumit seperti array multi dimensi.

1.2.3 Latihan
t: Buatkan contoh algoritma dengan membuat program dan Flowchart
ln untuk struktur looping Whiie, Do...While dan For.
n : Buatlah algoritma dengan program untuk menentukan sisa hasil
pembagian antara bilangan yang dimasukkan dengan bilangan
pembagi. Apabila sisa baginva=O maka dicetak tidak ada dan jika ada
sisa baginva ditampilkan.
36 Logika dan Algoritma untuk Pemula

4.3 Rekursif
4.3.1, Pengertian Rekursif
Dalam ilmu Komputer rekursif menjadi hal yang sangat penting. Secara
sederhana rekursif dapat disimpulkan sebagai perintah untuk memanggil
dirinl.a sendiri, baik itu secara langsung maupun tidak langsung. Di
pemrograman, rekursif digunakan dalam fungsi Yang memiliki peran
memanggil dirin-va sendiri. Atau dapat diartikan juga sebagai satu teknik
dalam pemroglaman yang memanggil fungsi dari fungsi itu sendiri.
Pemanggilan fungsi rekursif secara langsung berarti clalam fungsi tersebut
terdapat statement untuk memanggil dirin-va sendiri sedangkan secara
tidak langsung berarti fungsi rekursif tersebut memanggil 1 atau lebih
fungsi lain sebelum memanggil dirinya sendiri.
Contoh konsep penggunaan Rekursif

Masalah: Memotong Tempe tipis-tipis sampai habis,


Aigoritma:
1. Jika Tempe sudah habis atau potongannYa sudah paling tipis maka
pemotongan tempe selesai.
2. Jika tempe masih bisa dipotong, potong tipis dari tepi tempe tersebut,
lalu lakukan prosedur 1 dan 2 untuk sisa potongannva.

4.3.2 Implementasi Rekursif


Beberapa contoh implementasi Fur-rgsi rekursif yang seringkali ditemui
dalam pemrograman antara lain:

1. FungsiPangkat
Untuk menghitung Menghitung 10 pangkat n dengan menggunakan
konsep rekursif.

Secara Notasi pemrograman dapat ditulis:

100=1...... .. ....(1 )

10"=10*10 ..(2)
-. -- Algoritmo Pemrograman 37

Contoh:

103=10*102
102=10*101
101=10*100
100=1
: ungsi Faktorial
r_1
-l

\:=Nx(N-1)t UntukN>0
:ecara notasi pemrograman dapat ditulis sebagai:

FAKT (0) = 1
FAKT(N) = N. FAKT (N-1)
Contoh:
FAKT(s) = s. FAKr(4)
FAKT(4) =4*FAKT(3)
FAKr(3) = 3. FAKr(2)
FAKT(2) = 2. FAKr(1)
PAKT(1): 1 E FAKT(O)
Nilai Awal
Contoh Soal:
Berapa Hasil dari 5l?

;r. maka dapat dilakukan secara rekursif dengan cara:


5!=5*4!
b. secara rekursif nilai dr 4l dapat dihitung kembali dengan 4 " g!,
Sehingga 5l Menjadi
5l:5*4*3!
.. secara rekursif nilai dari 3l dapat dihitung kembali dengan 3 * 2!,
Sehingga 5!Menjadi
5l=5*4*3*21
.-1. secara rekursif nilai dari 2! dapat dihitung kembali dengan 2 * 1,
Sehingga 5lMenjadi
5! =5*4*3*2*1,=120.
38 Logika dan Algoritma untuk Pemula

3. Deret Fibonanci
Contoh Deret Fibonancy adalah 0,L,1,,\3,5,8,13,... dst .

Secara notasi pemrograman dapat ditulis sebagai:


Fibo(1) =0&Fibo(2)=1
Fibo (N) = Fibo (N-1) + Fibo (N-2)

Contoh:
Fibo(5) = Fibo(a) + Fibo(3)
Fibo(a) = Fibo(3) + Fibo(2)
Fibo(3) = Fibo(2) + Fibo(1) Nilai

4.3.3 Latihan
1. Tentukan nilai dari 7 I dengan prosedur rekursif .

2. Buat algoritma untuk mencetak deret angka 2,4,6,.... s/d 1000 angka
dengan menggunakan prosedur rekursif.
3. Buat algoritma untuk mencetak nama anda sebanyak 50 kali dengan
prosedur rekursif.

-oo0oo-
1

BAB 5

IARII( IIAU ABRAY

5.1 Pengertian Larik atau Array


i
rrav atau larik adalah suatu peubah hanya dapat menyimpan
A
sebuah nilai saja dan tidak dapat menyimpan beberapa nilai
A
I \
vang bertipe sejenis. sedangkan dalam pemrograman terkaclang
^ita sering mengolah kumpulan data vang memiliki tipe data vang sama.
Sehingga diperlukarr sebuah variabel yang dapat menampung kumpulan
J.-rta dengan tipe data yang sama. oleh karena itu, untuk mengatasi
'-.ermasalahan pemrograman tersebut diperlukan sebuah larik atau Arrav
-rntuk menampung data tersebut. Suatu lokasi memori untuk suatu arrav
:iclak dapat ditambah atau dikurangi selama program dijalankan. untuk
.rengubah ukuran dari lokasi memori suatu array haruslah cliperbaiki
,1alam listirtg programnva, karena array termasuk ke dalam struktur data
. t.rtis.

Array adalah tipe data terstruktur vang terdiri dari kumpulan nilai-
'.rlai data dengan tipe data vang sama vang tersimpan secara berurutan
trenggunakan nama yang sama. Arrav dalam pemrograman juga serir-rg
,'.isebut dengan istilah iarik atau tabel. Pada kehidupan sehari-hari Array
-rapat kita analogikan seperti halnva sebuah lemari yang memiliki
-'ebelapu rak, vang mana masing-masing rak memiliki nomer rak vang
:apat disebut dengan indeks (subscript). Sebuah indeks atau subscript pada
.:-ral' yaitu berupa bilangan di dalam kurung siku yang dimulai dari angka
40 Logika dan Algoritma untuk Pemula

Nol (0) dan seterusnva. Indeks pada arrav haruslah berupa tipe data vang
menyatakan keterurutan, seperti integer dan char. Dalam Array terdapat
bagian-bagian vang menyusun Array'r'ang disebut sebagai Elemen Arrav
atau isi vang mana masing-masing elemen memiliki indeks Arrav yang
dapat diakses tersendiri. Dengan menggunakan Array, kita dapat
menyimpan data dalam jumlah vang banvak pada sebuah variabel.
Penggunaan arlay dalam pemroglaman dig,,rnakan ketika memiliki
sejumlah data dengan tipe vang sama yang memerlukan pen-vimpanan
sernentara sebelum data tersebut diproses. Dengan penggunaan array, kita
dapat menghindari penggunaan variabel vang terlalu banyak. Berikut ini
aclalah gambaran tentarig Arrav.

a
r a
a t-
I
I I
t i
&.9
t
data data 2
@I@ t
a
a
a

Gambar 5.l Arrnq Dirnensi L

Pada beberapa bahasa pemrograman, tipe data pada arrav perlu


didefinisikan, akan tetapi pada pemrograman dengan menggunakan PHP
bisa dilakukan tanpa pendeklarasian tipe datan1,a. Adapun bentuk arrav
berdasarkan dimensinva terbagi menjadi dua, yaitu Array berdimensi satu
dan array berdimensi dua (Multidimensi).

5.2 Array Dimensi Satu


Array satu climensi merupakan sebuah variabel ,vang menvimpan
kumpulan-kumpulan elemen vang memiliki tipe data yang sama dan
hanva memiliki satu indeks. Pengaksesan elemen array dapat diiakukan
secara berurutan ataupun dengan cara acak berdasarkan indeks tertentu
secara langsung. Untuk pengambilan nilai pada indeks tertentu dapat
dilakukan dengan nilai pada indeks vang diinginkan. Sebelum variabel
Larik atau Array 41

,'.rrav digunakan, maka variabel affay tersebut perlu dideklarasikan


..rlebih dahulu.
lentuk umum pendeklarasian Arrav satu dimensi
Type_data nama_Array [ukuran];
Keterangan
- r pe data
: Menvatakan jenis tvpe data pada elemen affay seperti (int,
char, float d11).
Nama Array : Menyatakan nama Arrav yang akan digunakan.
L'kuran : Menunjukkan rnaksimal banvaknva elemen array.
Contoh : Int Nilai [5]; Char nama [8];
Berdasarkan contoh pendeklarasian di atas, rnaka pada contoh satu
:.t Nilai[S] berarti akan memesan tempat di memori untuk variabel array
-'.rnvak 5 tempat dengan indeks dari 0-4, yang mana semua elemennva
::rpe integer. sedangkan untuk contoh dua, Char nama[8] berarti akan
:rr'l€sdr1 tempat di memori untuk variabel arrav sebanyak B tempat
-
:.rn indeks dari 0-7, yang mana semua elemennya bertipe character.
Contoh Penerapan Arrav satu dimensi dalam pefirrograman pHp.
:

-)rray L,2, )-.4,5,6,*, 8,9. 10 ;

r=:;$i<2'$i++) {
:r 3j=0; $j.5, gj++) {
gangkabaru lgil lgj I =gangkabaru
$no++;

-= - ; $t<2; gi++ {
.:r ($j =0; $j <5; $j ++) {
Echo gangkanarut$il [$i] ;

r3 Array Dimensi Dua (Multidimensi)


.,rr-dua dimensi atau arLa\,' multidimensi merupakan pengembangan
-- array dimensi satu, vang sering dikenal
dengan istilah matrik yang
'rr-i dari lebih dari satu baris atau kolom. Jika pada array satu dimensi
- a terdiri dari sebuah baris dengan beberapa kolom elemen maka pada
42 Logika dan Algoritma untuk Pemula

arrav dua dimensi terdiri dari beberapa baris dan beberapa kolom elemen
yang bertipe sama Array berdimensi dua tersusun dalam bentuk baris dan
kolom, Vang mana indeks pertama menunjukan baris dan indeks kedua
menunjukan kolom dari tabel atau matrik.
Bentuk Umum Arrav dua dimensi (Multidimensi)

Type-data Nama-array I ukuranl ] [ukuran2];


Keterangan
Tvpe data : Menyatakan jenis tvpe data pada elemen arraY seperti (int,
char, float dll).
Nama Array : Menvatakan nama Arrav- vang akan digunakan
Ukuranl : Menunjukkan jumlah baris.
Ukuran2 : Menunjukan jumlah kolom.
Contoh Array dua dimensi dengan PHP.
. ?php
$nilar=array(ar:ray(9C, 65, 83), array(90, 78, 97') , arraY\'78, 9a, leli;
Echo"<strong>nilai array ditampilkan scara manual : </strong><br>",'
Echo $nilai[0]' ".$nilaii0J 111." ".$niiai[01 12]."<br>" ;
Echo $nilai t1l " ". $nilai [1J t1] . " ". $nilai [1] l2l ." <bt>" ;
Echo Snilai l2l" " . $nilai [2] t1] . " ".$nilai 121 121 ." <br>" ;
?>

Output
Nilai array ditampilkan secara manual:
90 65 83
90 97
't8 90 78

Latihan Soal
Buatlah array dua dimensi menggunakan bahasa pemlograman php untuk
menampiikan data sis\\'a, Yang terdiri dari NIS, nama, kelas, dan Jurusan?

-oo0oo-
BAB 6
E

ilH0llt nEyfi,E ltAlt cniluaEn

6.1 Pengertian Metode Devide and Conquer

M
etode Dioide nnd ConqtLer adalah suatu metode pemecahan
masalah yang besar dengan cara membagi masalah menjadi
sub-sub masalah yang lebih kecil secara berulang-ulang
:ekursif) sehingga masalah tersebut dapat diselesaikan secara langsung.
::,1usi vang didapat dari setiap sub masalah
kemudian digabungkan untuk
:'embentuk sebuah soiusi yang utuh.

-Japun Langkah-langkah umum Metode Diuide and Conquer

- Diuide: membagi persoalan menjadi beberapa sub masarah yang


rnemiliki kemiripan dengan persoalan awal dengan ukuran yang lebih
kecil atau dengan kata lain (berukuran hampir sama).
Conquer (Sohte): memecahkan atau menyelesaikan masing-masing sub
masalah secara rekursif (secara berulang-ulang).
Contbine: menghubungkan solusi masing-masing sub masalah sehingga
membentuk solusi persoalan semula.
Empat hal penting yang harus dipahami dalam strategi ini: brnnching
'- or, baLmtce, dntn depentlence of diuide function dan seqrtentialit.tl.

, Brnnchirtg factor
factor dalam algoritma diuitle nnd conquer adalair jumlah dari
BrLmching
sub masalah vang akan dibagi dari sebuah masalah alt al. Ha1 lni
44 Logika dan Algoritma untuk Pemula

rnerupakan langkah nyata dari algoritma diaide nnd conquer, di dalam


proses pembagian vang sebenarnya, jumlah dari brnnclring fnctor harus
2 atau lebih, karena jika tidak problem tidak bisa dibagi. Banlzak jenis
algoritma ini termasuk pula algoritma komputasi geonrctric vang
memiliki brnnching faclor berjumlah 2.
a Bnlnnce
Sebualr algoritma di'oide and conquer bisa dikatakan bnlnnce (seimbang)
lika masalah awal dibagi menjadi sub-sub masaiah dengan ukuran
Yang sama. Dengan kata lain jumlah dari keseluruhan ukuran sub
masalah sama dengan ukuran masalah awal. Adapun beberapa contoh
dari Algorrtma Dir:ide mtd Conquer vaitu Algoritma Merge sorf dan
binnry tree.
a Dntn Dependence of dioide Fwtction
Algoritma dioide nnd c\nqL\er memiliki sebuah fungsi pembagian
terhadap data vang merniliki ketergantungan, artinva jika ukuran
relatif dari sebuah algoritma yang tidak seimbang, salah satu
contohnva adalah algoritma quicksort vang akan membagi subproblem
dengan fungsi data-dep endent di oide.
a Contr olarnllelism or sqtLentinly
P

Algoritma diuide nnd conqtLer dikatakan berurutan (seqtLentinl) iika


subproblem dieksekusi sesuai dengan perintah ploglam. Paraleiisasi
dari algoritma dioide snd collquer yang terurut pertama kali
didefinisikan oleh MotL's Dittacon [Mou90] yang terjacli ketika hasii dari
salah satu sub-eksekusi diperlukan oleh sub eksekusi yang lain. Dalam
kasus ini hasil dari subtree pertama diberikan (pnssing) kepada proses
komputasi stLbtree kedua, supaya hasil akhir tersebut bisa digunakan
sebagai nilai awalnva, tetapi sekarang ini contoh di atas tidak dapat
dijadikan ilustrasi Iagi karena teknologi komputer paralel yang
semakin canggih dan kompleks.

6.2 Pengertian Metode Sorting


Sorting merupakan suatu proses untuk menyusun kembali himpunan
obvek menggunakan aturan tertentu. Sortirtg disebut juga sebagai suatu
':?tode Devide don Conquer 45

' loritma untuk meletakkan kumpulan elemen data ke dalam urutan


--:tentu berdasarkan satu atau beberapa kunci dalam tiap-tiap elemen.
-,:la dasarnya
ada dua macam urutan yang biasa digunakan dalam suatu
--r-rses sorting yaitu urut naik (Ascending) dan urut turun (Descending). Di
" -'.rLa tujuan dari sorting adalah untuk mengurutkan
data vang beium
-=:'-tIUt.

5,3 Algoritma Sorting


-- ;oritma sorting adalah kumpulan langkah sistematis
atau secara
'::urutan untuk memperoleh hasil yang diinginkan. Salah satu contoh dari
.oritma untuk langkah ini adalah sorting (pengurutan). sorting dapat
' -'eclakan menjadi dua yaitu Contparnsion Sort (Bubble Sort, Selection Sort,
;.,tiort sort, lv4erge sort, Quick sorf) clan Non-Com:pnrnsion sort (Radix sort,
'iting sort). Comparnsion sortfpengurutan dengan pembandingar-r
,':1ah algoritma vang dalam proses pengurutannya melakukan pem-
'''.tlingan antar data. I'lon-Comparnsiott sort/pengtrutan tar-rpa pem-
'-':'..1ingan adalah algoritma pengurutan di mana
dalam prosesnva tidak
=-akukan perbandingan antar data.

3 + Algoritma Selection Sort


' .:tion short nterupakan algoritma sederhana yang berbasi perbandingan
":rr{d11 memilih elemen dengan nilai paling rendah dan menukar elemen
,:',g terpilih dengan elemen ke-r. Nilai dari I dimulai dari 1.ke n, di mana ru
'.rlah jumlah total elemen dikurangi 1.

- rntoh Algoritma Selection Sort:

::.:''/selection sort,, ;
rr-,:=array (5, 5,3, L, 8,7, 2, 4) ;
---r-:on selecEion sort ($data) {
: _-= -uultL \ PudLdl ,.

. ::i$r = 0;$i+1<$j<gn;gj++) {
sk=$i;
ior Sj=S1-l;$j-Sn;Sj {
If (gdataIgj] <gdaralgt<l ) gk=gj;

SCummy=$data [$i] ;
scara lgil =gdara lgkl
46 Logika dan Algoritma untuk Pemulo

$data [$k1 =$dummy;


)
Return $oata;
)
Print_r (selection_sort ($data) ) ;
?>

6.5 Algoritma Insertion Sort


Salalr satu algoritma sorting yang paling sederhana adalah insertion sort.
Alsorltma insertion sorf pada dasamya memilah data yang akan urutkan
menjadi 2 bagian, yang belum diurutkan dan yang sudah diurutkan.
Eieruen pertama diambil dari bagian arrav vang belum diurutkan dan
kemuclian diletakkan sesuai posisinva pada bagian lain dari arrav yang
telah diurutkan. Langkah ini dilakukan secara berulang hingga tak ada
lagi elemen tersisa pada bagian affay 1,ang belurn diurutkan.
Contoh Algoritma lnsertion Sort
. ?php
echo" //insertion Sort" ;
$data=array(5, 5, 3, L, 8,7, Z, +) ;
F*ncr ' on -nser L -on- sor L sdat a {
gn=count ($data) ;
For $i-1;Si.Sn;Si { Ior Sr=$i;Sr>0;Sk-'{
rf ($data [$k] <$data t$kl ) {
$dummy=$data [$k] ;
sdaEa{ $kl =$d-ca{ $k-11 ;
gdacaJSk ll-Sdummy;
)
)
)

)
Princ r -nserrion sorr $dara' :

?>

6.6 AlgoritmaQuickSort
Quick sorl adalah algoritma penvoltiran Yang sangat efisien dan didasarkan
pada pemartisian arra1, d212 menjadi al.rav Vang lebih kecil. Sebuah arrav
besar dipartisi menjadi dua arraY )'ang salah satu vang menvimpan nilai
lebih kecil dari nilai yang ditentukary katakanlah pivot, berdasarkan pada
mana partisi dibuat dan array lain memiliki nilai lebih besar dari nilai
pivot. Quicksort merupakan Algoritnrc Penrhngi di mana Pertama quicksort
".tode Devide don Conquer 47

'.rrbagi llsf yang besar menjadi dua buah sub list yang lebih kecil:
::r€flt kecil dan element besar. Qrticksort kemudian dapat menyortir sub
, itu secara rekursif.
:-Lgkah-langkah penge{aannva ialah:

\mbil sebuah elemen, vang disebut dengan piztot, pada sebuah daftar.
- L-rutkan kembali sebuah lisf sehingga elemen dengan nilai yang kecil
.1ari pivot berada sebelum pivot, sedangkan seluruh element yang
n.remiliki nilai yang lebih besar dari pivot berada setelahnya (nilai vang
sama dapat berada pada pivot setelahnva). Setelah pemisahan, pivot
berada pada posisi.akhirnva. Operasi ini disebut Partition.
' Sub llsf kemudian disortir secara recursif dari elemen yang lebih kecil
dan sub list dan elemen yang lebih besar.

,-ontoh Algoritma Quicksoft

: -: ' 'rlquick sari,' ;


r:--,:=array i,6, 5,3, !, 8, 7, 2, 4) ;
i r--ron quick_sorL (gdata) {
r: i I count ($data) ) re:urn gdata;
:livot=$data [0] ;
:_cw=ghigh=arrayO;
t:=count ($data) ;
arr 1gi=1; $i<$n; gi++) {
If ($data lgll.=gpivot) {
glow [ ] =gdara l$il ;
)etse{
ghish t I =gdara Igi] ;
)

::,:::r arral.. merge (quick sort (glow) , array ($pivot) . quick sort ( (ghigh) ) ;

::: r (quic.r sort (gdata) ) ;

a,7 Algoritma Buble Sort


':rode pengurutan gelembung atau penukaran dapat dilakukan dengan
=letakkan elemen terbesar pada sebelah paling kanan urutan (N) dan
. :-Ludian elemen terbesar kedua diletakkan pada posisi N-1, begitu
-.Iusnva. Atau sebaliknya dengan mencari elernen terkecilnya diletakkan
, -ng kiri (pertama/i), dan terkecil kedua di i + 1 dan seterusnva.
48 Logika dan Algoritma untuk Pemula

Contoh algoritma Buble Sort


.?php
echo" //bu-bbf e sort" ,'

$dat.a=array (6, 5, 3, L, 8, 7, z,s) ;


function bubble_sorL (gdata) i
$n=count ($data) ;
For(gi=0;$i.$n;$i++) { for($j=$n 1; $jr$i; $j--) {
rf ($data t$j I .$data t$j I -11 ) {
gdummy=gdata t$j I ;
gaata [$j ] =$data t$j -11 ;
$data [$i -1] =$dummy;
)
]
]
Return $data;
)
Print_r (bubbfe_sort ($data) J;
?>

6.8 Algoritma Merge Sort


Ifierge Sorl adalah algoritma vang dijalankan sebagai akibat dari terlalu
ban,vaknva daftar Vang diurutkan, dengan menghasilkan lebih banvak
daftar yang diurutkan sebagai outpLtt. Algoritma nrcrge ini disesuaikan
untuk mesin driue tnpe. PenggunaannYa dalam akses memori acak besar
vang telkait telah menulun, karena ban,vak aplikasi algoritma nrcrge yarrg
mempunvai alternatif lebih cepat ketika kamu memiliki akses memori acak
yang menjaga semua data. Hal ini disebabkan algoritma ini membutuhkan
setidaknva luang atau memori dua kali lebih besar karena clilakukan
secala rekursif dan memakai dua tabel. Algolitma fi1erge -sor/ membagi tabel
menjadi dua tabel vang sama besar. Masing-masing tabel diurutkan secala
rekursif, darr kemudian digabungkan kembali untuk membentuk tabel
yang terurut. Implementasi dasar dari algoritma rnerge,sorf memakai tiga
buah tabel, dua untuk menvimpan elemen dari tabel yang telah dibagi dua
dan satu untuk menvimpan elemen vang telah terurut. Namun algoritma
ini dapat juga dilakukan langsung pada clua tabel, sehingga menghemat
ruang atau tnemori vang dibutuhkan.
'.'?tode Devide dan Conquer 49

[ontoh Algoritma Merge Sort

, ,.-.;17*..g. sort,, ;
r..:a=array (6, 5, 3, I, B, 7, 2, 4) ;
: :::ion merge sort ($data) {
:f(count($data) <=1) return gdata;
rrleft=merge sort (array*splice (gdata, floor (count (gdata) /2) ));
,:uight=merge sorL ($data) ;
Sresult=array ( ) ;
',,;hrle (count ($left) > O && count (grighgI ,O)
{
If (gIeft l0l <= grighr IoJ )
array_push (gresult, array shift (gleft) ) ;
el se
array push (gresu1t, array shift (gright) ) ;
,
':ire (count (g1eft) > 0)
array_push(gresult, array shift (gleft) ) ;
.::rf e (count (gright ) >o )
array_push (gresult, array_shift (gright) ) ;
r::urn $result;
, --, T (merge_sort (gdata) ) ;

D,9 Latihan Soal


- :utkan bilangan berikut ini dengan menggunakan metod e quick sort, buble
. c-ian insertion sort, merge sort

72, 8 ,15,17,5 ,10


+1, 55,1,2, 42,94, L8
4, 12,8,25,30,19
- 35, 1L,20,g,25,10

-oo0oo-
{ B^t T
\

MEr0Dj sEAfrCflfii0

7.1 Pengertian Metode Searching


etode Senrching merupakan suatu proses untuk me-
ngumpulkan sejumlah informasi di dalam pengingat
komputer dan kemudian mencari kembali informasl yang
--rerlukan secepat mungkin. Metode pencarian data dapat dilakukan
.ngan dua cara vaitu pencarian intern al (intemal searching) dan pencarian
, rsternal (external searclting). Pada pencarian internal, semua rekaman yang
--retahui berada dalam pengingat komputer sedangakan
pada pencarian
-.sternal, tidak semua rekaman yang cliketahui berada dalam pengingat
' ,'mputer, tetapi ada sejumlah rekaman yang tersimpan dalam penyimpan
...rr misalnya pita atau cakram magnetis. Aclapun jenis metode senrching
.' ..rntaranva vaitu metode sequentinl senrch, danhinary senrch.

',2 Metode Linear/Sequential Search


letode linear f seqtLentinl senrch disebut juga sebagai metode pencarian urut
-ialah metode pencarian vang paling rnudah. Adalah suatu teknik
. :ncarian data dalam array (1 dimensi) yang akan menelusuri semua
tl'nen-elemen affay dari awal sampai akhir, di mana data-data tidak perlu
. rrutkan terlebih dahulu. Kemungkinan
terbaik (be-st cnse) adalah jika data
'.rg dicari terletak di indeks arrav terdepan (elemen array pertama)
52 Logika dan Algoritma untuk Pemula

sehingga waktu yang dibutuhkan untuk pencarian data sangat sebentar


(minimal). Sedangkan kemungkinan terburuk (toorst case) adalah jika data
yang dicari terletak di indeks arraY terakhir (elemen arlaY terakhir)
sehingga waktu yang dibutuhkan untuk pencarian data sangat lama
(maksimal).

Sequentinl search memiliki proses sebagai berikut:


1. Tentukan banyaknva data yang akan diolah, misal banyak data adalah
N.
2. Tentukan data apa vang akan dicari, misal data yang akan dicari
adalah C.
3. Deklarasikan sebuah cottnter untuk menghitung banyak data yang
ditemukan, misal counternya adalah K.
4. lnisialisasikan K =0
5. Lakukanlah perulangan sebanyak N kali
6. Dalam tiap proses perulangan tersebut periksalah apakah data 1'ang
sedang diolah sama dengan data yang dicari.
7. Jika ternvata sama 6=(+1
B. Jika tidak, ianjutkan proses perulangan.
9. Setelah proses perulangan berhenti, periksalah nilai K.
10. Jika niiai K lebih dari 0, artinya data yang dicari ada dalam dataf arrav
dan tampilkan nilai K ke lat er sebagai jumlah data yang ditemukan'
11. Jika nilai K=0, artinya data yang dicari tidak ditemukan dalam data/
array dan tampilkan ke lavar bahwa data tidak ditemukan
12. Proses selesai.

7.3 Metode Binary Seqrch


Binnry senrch adalah metode pencarian suatu data atau elemen di dalam
suatu arrav dengan kondisi data dalam keadaan terurut. Proses pencarian
binanl search hanya dapat dilakukan pada sekumpulan data vang sudah
diurutkan terlebih dahulu. Algoritma ini menggunakan prinsip tlioide ntr|,
conquer, di mana sebuah masalah atau tujuan diselesaikan dengan cara
mempartisi masalah menjadi bagian vang lebih kecil. Algoritma ini
Metode Seorching 53

rnembagi sebuah tabel menjadi dua dan memproses satu bagian dari tabel
itu saja. Algoritma ini bekerja dengan cara memilih record dengan indeks
tengah dari tabel dan membandingkannya dengan record yang hendak
licari. Jika record tersebut lebih rendah atau lebih tinggi, maka tabel
iersebut dibagi dua dan bagian tabel yang bersesuaian akan diproses
.embali secara rekursif. Penerapan terbanyak dari pencarian biner adalah
-rntuk mencari sebuah nilai tertentu dalam sebuah list terurut. Jika
libavangkan, pencarian biner dapat dilihat sebagai sebuah permainan
:ebak-tebakan, kita menebak sebuah bilangary atau nomor tempat, dari
iaftar (llsf) nilai. Prinsip dari binanJ search terhadap N eiemen dapat
,ti1 elaskan seperti berikut:

- Tentukan posisi awal = 0 dan posisi akhir = N-1.


: Hitung posisi tengah = (posisi awal + posisi akhir)/2.
I Bandingkan data vang dicari dengan elemen posisi tengah.
Jika sama maka catat posisi dan cetak kemudian berhenti.
Jika lebih besar tnaka akan dilakukan pencarian kembaii kebagian
kanan dengan posisi awal = p posisi tengah +1 dan posisi akhir
tetap kemudian ulangi mulai poin 2.
Jika lebih kecil maka akan di lakukan pencarian kembali ke bagian
kiri dengan nilai posisi awal t tetap dan nilai posisi akhir = posisi
tengah-1 kemudian ulangi mulai poin 2.

-ontoh:
l salkan kita mempunyai sederatan data dalam arrav nilai sebanvak 10
:rl€11 dan akan dilakukan pencarian dala 87 terhadap arrav.

. Iai [0..9] = 12,15,23,87,90,55,\5,25,40,21


. '-rtkan elemen arrav secara menaik, sehingga diperoleh:

ai [0..9] = 12,15,21,23,25,40,45,55,87,90
i:f, \'ang akan dicari = S7(bilangan)
Tentukan nilai awal = 0, akhir = N-1=9
Hitung tengah = (9*O)/Z=+
Bar-rdingkan Bilangan < NilaiItengah]->87=25->false
54 Logika don Algoritma untuk Pemula

4. Bandingkan Bilangan < Nilai[ten gah)->87 <1S->false


5. Bandingkan Bilangan < Nilai[tengah]->87>25->true maka pencarian
:
clilakukan ke sebelah kanan dengan nilai awal = tengah+1 5
6. Karena awal masih lebih kecil dari akhir maka ulangi kembali mulai
menghitung tengah
7. Hitung tengah : (9+5)/2=7
8. Bandingkan Bilangan < Nilai[tengah] ->87=55->false
g. Barrdingkan Bilangan < Nilai[Tengah]->87<55->false
10. Bandingkan Bilangan < Nilai[tengah]->87>55->true maka pencarian
dilakukan ke sebelah kanan dengan nilai awal = tengah+1 = 8
11. Karena awal masih.iebih kecil dari akhir maka uiangi kembali mulai
menghitung tengah
12. Hitung tengah = (9+B) /2 = 8
13. Bandingkan Bilangan < Nilai[tengah]->87 =87 ->true
14. Karena sudah di tentukan hasilnya maka proses pencarian berhenti'
Contoh Binary Search dengan PHP
. ?php
function brnarysearch($loopirg, $alrray, $k-ey, $tcw, $hrgh) {
if (giow $hiqh) {
return f; )
A- ^^*l
Ll:uulrf *^
11:--
'
gmiddle=intval I ($iow+$hign),'2i ;
echo"
looping ke $iooPing<br>
middte= { $_low+$hrgh),r2 =$middie >br>" ;
if (garray t$rniddlel = =$keY) {
echo" jika".$array[$middie $key, :naka $middle <bt:>";
ret urn $ ma odr e /'

)
elseif ($key<Sarray [$midd]e1 )

i il,maka kenbali
echo,, lika gkey < ,,.$arrayt$middlel ke fungsi binarysearcho
<br><br> " ;
return brnarysea:ch($looping, $a::ray, $key, $tow, Smiddle 1l;

salraY -sn'ooie-
)
e. se:.f S,iel-
{
echo,'jika $key > ".$arrayl$middfel ",maka l<embali ke fungsr
binarysearch() <br> <br>"i
rer-urn binarisearch( $looping, $array, $key, $high, $middle+1);
i
)
?>
Metode Searching 55

7.4 Latihan Soal


1. Terdapat 8 data pada array dengan data 15, 6, 22, 1.0, ZO, 24, g, 32 ,
lakukan pencarian data dengan nilai 10 pada affay menggunakar-r
metode Binnry senrclt?
2. Terdapat 5 data pada array dengan data 35, 20, S, 26, 15, lakukan
pencarian data dengan nilai 26 pada arrav dengan metode sequetftt,i.i
senrch

-oo0oo-
BAB 8

MTIOB} ENEEDY

Pengertian Metode Greedy

M
etode Creedy merupakan metode vang paling populer vang
digunakan untuk memecahkan persoalar-r optimasi. Greetlrt
sendiri diambil dari bahasa Inggris yang artinya rakus, tamak
,:iau serakah yang pada prinsipnya algoritma greedy adalah: " take whnt qou
-'t
8,et norL)!" .

-irntoh masalah sehari-hari vang menggunakan prinsip Greedy antara lain:


- Memilih beberapa jenis investasi (penanaman modal)
- Mencari jalur tersingkat dari Bandung ke Surabaya
- Memilih jurusan di Perguruan Tinggi
Bermain kartu remi

Persoalan optimasi (optinizntion problems): persoalan yang menuntut


:rcarian solusi optimum. Persoalan optimasi ada dua macam: Maksimasi
'.rrrizntiort) dan Minimasi (minittization) Solusi optimum (terbaik)
''-ah solusi yang bernilai minimum atau maksimum dari sekumpulan
'.:latif solusi vang mungkin. Elemen persoalan optimasi: kendala
.lrnints) dan fungsi objektif (atau fungsi optimasi). Hal ini berarti
-:an metode Greedy kita bemaksud mencari solusi terbaik yaitu solusi
. Lrernilai minimum atau maksimum dari sekumpulan alternatif solusi
- ac1a. Algoritma Greedy membentuk solusi langkah per langkah. Pada
58 Logika don Algoritma untuk Pemula

setiap langkah terdapat banyak pilihan vang perlu dieksplorasi. Sehingga,


pada setiap langkah harus dibuat keputusan )'ang terbaik dalam
menentukan pilihan (keputusan ),ang teiah diambil pada suatu langkah
tidak dapat diubah lagi pada langkah selanjutnya). Pada setiap langkah
membuat pilihan optimum lokal dengan harapan bahwa langkah sisanva
mengarah ke solusi optimum global.

Algoritma Greedy merupakan jenis algoritma. yang menggunakan


pendekatan Penvelesaian masalah dengan mencari nilai maksimum
sementara pada setiap langkahnva. Nilai maksimum sementara ini dikenal
dengan istilah locsl mnxinumt. Pada kebanvakan kasus, algoritma Greedy
tidak akan menghasilkan solusi paling optimal, begitupun algoritma
Greedy biasanva memberikan solusi yang mendekati nilai optirnum dalam
waktu yang cukup cepat. Metode Greedy dapat digunakan dalam
menyelesaikan permasaiahan seperti optimal on fnpe storuge clan Knapsack
Problem.

1. Optinml Storage on Tnpes Problent


Merupakan Permasalahan bagaimana mengoptimalisaslkan storttgef
nrcfircru dalam komputer agar clata vang tersimpan dalam komputer
dapat termuat dengan optimal. N4isalkan terdapat ,7 program Yang
akan disimpan di c1alam pita(tnpe). Pita tersebut mempunvai panjang
maksimal sebesar L, masing-masing program lrang akan disimpan
mempunvai panjang Ll, L2, L3,.... Lr-r. Cara penyimpanan adalah
penyimpanan secara terurut (sekuensial).
Proses Pernecahannya:

Nilai panjang data (L), lvaktu penyimpanan (t) dan n'aktu rata-
rata (MRT) jika ada.
Tentukan urutan penvimpanan datanva.
Hitung total penyimpanan (jika ada kapasitas media penvimpanar-r
maka totai tidak boleh melebihi).
Pilih total vang minimum (sesuai dengan unsur efisiensi dan
efektivitas).
Metode Greedy 59

2. Knnpsack Problem
Knapsnck problem adalah suafu masalah bagaimana cara menentukan
pemilihan barang dari sekumpulan barang di mana setiap barang
tersebut mempunyai berat dan profit masing-masing, sehingga clari
pemilihar-r barang tersebut didapatkan profit yang maksimum.
Knapsnck problenr akan dibahas lebih lanjut pada bab berikutnva.

Latihan Soal
1. Misalkan tersedia koin : 1-, 3, 5. Uang senilai X=8, tukar dengan cara
metode Greetly. Tentukan solusi optimal dari penukaran koin tersebut.?
2. Tinjau persoalan 0f 1 Knnpsnck dengan n = 4. wl. = 6; p7 = 72
w2=5; p1 =15
w3=10; p1 =50
w4=5; p1 =10
Kapasitas knnpsack V'/ = 1-6, selsesaikan dengan metode Greedy.

-oo0oo-
BAB9

IOIMSIGI( PBllBlTilI IPRllGRAilI EfrEEI'N

9.L Pengertian Knapsack Problem (Program Greedy)


merupakan permasalahan oprtimasi kombinatorik
nnpsnck Problem
Tr/
dengan memaksimalkan profit dari item di dalam knopsnck
,(
l- \ (karung) tanpa melebihi kapasitasnva. Knnpsttck problent
merupakan masalah di mana orang dihadapkan pada persoalan optimasi
pada pemilihan benda vang dapat dimasukkan ke dalam sebuah wadah
r-ang memiliki keterbatasan ruang atau daya tampung. Dengan adanva
optimasi daiam pemilihan benda vang akan dimasukkan ke dalam rvadah
tersebut diharapkan dapat menghasilkan keuntungan vang maksimum.

Benda-benda vang akan dimasukkan ini masing-masing memiliki


":erat dan sebuah nilai yang digunakan untuk menentukan prioritasnva
lalam pemilihan tersebut. Nilainya dapat berupa tingkat kepentingan,
:rarga barang, nilai sejaral'r, atau vang lainnya. Wadah yang dimaksud
li sini juga memiliki nilai konstanta yang merupakan nilai pembatas
-rntuk benda-benda yang akan dimasukkan ke dalam wadah tersebut
sehingga harus diambil sebuah cara lnemasukkan benda-benda tersebut
<e dalam wadah sehingga rnenghasilkan hasil optimum tetapi tidak
relebihi kemampuan wadah untuk menampungnya. Knapsnck problent
,1apat diilustrasikan sebagai berikut. Diberikan beberapa barang vang
rasing-masing memiliki berat (rueight) dan keuntungan (profit), dengan
'.etentuan barang yang dimasukkan ke dalam Knnpsnck memiliki total berat
62 Logika dan Algoritma untuk Pemula

barang vang jika dimasukkan tidak boleh melebihi kapasitas Knnpsnck,


maka dapat dikatakan telah mencapai optimal pttcking.

Jenis-jenis Knap sttck P r oblem

1. 0/l Knnpsnckproblen: setiap barang hanya tersedia 1 unit, tske it or lerrce


it.
2. Frnctionnl ktnpsack prohlem: Barang boleh dibawa sebagian saja (unit
dalam pecahan). Versi problem ini menjadi masuk akal apabila barang
yang tersedia dapat dibagi-bagi misalnya gula, tepung, dan
sebagainya.
3. BotLntled Knnpsnck prohlem: Setiap barang tersedia sebanvak N unit
(umlahnya terbatas).
4. Llnbotmtled Knnpsnck problent: Setiap barang tersedia lebih dari 1 unit,
jumlahnya tidak terbatas

Pada aigoritma Greedy ada beberapa strategi vang digunakan untuk


memilih objek yang akan dimasukkan ke dalam Knopsack, vaitu:
1. Greedy by Profit
Pada setiap langkah, diisi dengan objek vang mempunvai
knnTtsnck
keuntungan terbesar. Strategi ini mencoba memaksimumkan
keuntungan dengan memilih objek yang paling menguntungkan
terlebih dahulu. Pertama kali dilakukan adalah menurutkan secara
menurun obvek-obvek berdasarkan profitnya. Kemudian obvek-obvek
yang dapat ditampung oleh Knnpsnck diambil satu persatu sampai
Knnpsnck penuh atau (sudah tidak ada obvek lagi yang bisa
dimasukan).

Contoh
Data Awal:
Wl =6; PI =12
W2 =5; P2 =75
W3 =10; P3 =50
W4 =5; P4 =10
Kapasitas Knapsack W: 16
Knopsack Problem (Program Greedy) 63

Tabel 9Jl, Greedy By Profit

Properti Objek
1 wi Pi Pi/TVi Status
J 10 50 5 Diambil
2 5 15 J Diambil
1 6 12 2 Tidak
4 5 10 2 Tidak
2. Creedy by Weight
Pada setiap langkah, Knapsack diisi dengan objek vang mempunvai
berat paiing ringan. Strategi ini mencoba memaksimumkan
keuntungan dengan memasukkan sebanyak mungkin objek ke dalam
knapsack. Pertama kali yang dilakukan adalah mengurutkan secara
merraik objek-objek berdasarkan zt,eight-nya. kemudian obvek-obr-ek
vang dapat ditampung oleh Knnpsnck diambil satu persatu sampai
Knnpsnck penuh atau (sudah tidak ada obyek lagi yang bisa
dimasukan).

Tabel 9.2 Greedy byWeight

Properti Objek
l wi Pi Pi/vvi Status
a
2 5 15 J Diambil
4 5 10 2 Diambil
1 5 12 2 Diambil
a
J 10 50 3 Tidak
3. Creedy by Densitt1
Pada setiap langkah, Knnpsnck diisi dengan objek vang mempunyai
densitas, pt/toi terbesar. Strategi ini mencoba memaksimumkan
keuntungan dengan memilih objek yang mempunyai keuntungan per
unit berat terbesar. Pertama kali vang dilakukan adalah mencari nilai
profit per unitf densitrl dari tiap tiap objek. kemudian obyek-obvek
diurutkan berdasarkan densitasnva. Kemudian obvek-obvek vang
64 Logika dan Algoritma untuk PemuLc

dapat ditampung oleh Knnpsack diambil satu persatu sampai Knapsack


penuh atau (sudah tidak ada obvek lagi vang bisa dimasukkan).
Tabel 9.3 Greethl bt1 D en -sitY

Properti Objek
I wi Pi Pi/\/Vi Status
J 10 50 5 Diambil
a
2 5 15 J Diambil
4 5 10 2 Tidak
1 6 12 2 Tidak

Tabel 9.4 Perbnndingnn Hnsil


Properti Objek Greedtl by

I Wi Pi Pi vi Profit I{eight clensitrl

1 6 1,2 2 0 1. 0

2 5 15 .l 1. 1. 1

,l 10 50 5 1. 0 L

4 5 10 2 0 1. 0

Total Bobot 15 16 15

Totai Keuntungan 65 .)/ 65

Contoh:
Kapasitas M=20, dengan jumlah barang =3
Berat Wi masing-lnasing barang (W1,W2,W3) a (18,15,,10)
Nilai Profit masing-masing barang (Pl,P2,P3) d, (25,24,15)
Pilih Barang dengan nilai profit maksin.ral
P1=25 i x1=1. batas atas nilai
P2=21 d x2=2/15. :

P3=15 ir r3 =0. batas bawah nilai. I


1

Pilih barang dengan berat rninimal


a
W1= 18 d r1=0. batas baw'ah t
w2=15 at2=2/3 n
W3=10 i "3=1. batas atas.
Knapsack Problem (Program Greedy) 65

Pilih barang dengan menghitung perbandingan vang terbesar dari


profit dibagi Berat
(Pi/Wi) diurut secara tidak naik.
P1/w1=25/18 (1.38) e x1=0. karena terkecil r1=0
P2/w2=24/15 (1.6) d. x2=1-. karena terbesar r2=1
P3/w3=15/10 (1.5) ii x3=1/2 dicari dengan fungsi pembatas
r3=1/2.
Tabel 9.5 Tnbel Hnsil

Solusi (x1,x2,r3) Itoixi lpixi


Pi max 1,2/15,0 20 )9. )

Wi min 0,2/3,1. 20 31,0


Pi/Wi max 0,7/7/2 20 31,5

Nilai profit rnaksimal = 31.5

9.2 Travelling Salesman


Persoalan Trnoelling snlesnrnn merupakan salah satu persoalan optimasi
kombinatorial (kombinasi permasalahan). Banvak permasalahan vang
dapat direpresentasikan dalam bentuk TSP. Persoalan ini sendiri
menggunakan representasi graf untuk memodelkan persoalan yang
diwakili sehingga lebih memudahkan penvelesaiannva. Di antara
permasalahan vang dapat clirepresentasikan dengan TSP adalah pencarian
rute bis sekolah untuk rnengantarkan siswa, pengambilan tagihan telepon,
efisiensi pengiriman surat atau barang, perancangan pemasangan pipa
saluran dan lain-lain. Persoalan yang muncul adalah bagaimana cara
mengunjungi node (simpul) pada graf dari titik awal ke setiap titik-titik
lainnva dengan bobot minimum (biar.a paling murah) dan kembali lagi ke
asal node. Bobot atau biaya ini sendiri dapat melvakili berbagai hal, seperti
berapa biaya minimum, jarak minimum, bahan bakar minimal, w,aktu
minimum, kenvamanan dan lain-lain.
66 Logika dan Algoritma untuk Pemula

Secara ringkas, berikut adalah karakteristik dari permasalahan TSP:

o Perjalanan berawal dan berakhir dari dan ke kota awal


r Ada sejumlah kota vang semuanya harus dikunjungi tepat satu kali
. Perjalanan tidak boleh kembali ke kota awal sebelum semua kota
tujuan dikuniungi
. Tujuan dari permasalahan ini adalah meminimumkan total jarak vang
ditempuh salesman dengan mengatur urut-urutan kota yang harus
dikunjungi

9.3 ShOfteSt Pf Oblem [penulisan shortestyang benar yung mana? Mhon koreksiunnya)

Pernrasalahan = menghitung jalur terpendek dari sebuah grnphberarah dan


bagairnana mencari sebuah jalur pada graf t.ang meminimalkan jumlah
bobot sisi pembentuk jalur tersebut. Ada beberapa macaln persoalan
Iintasan terpendek, Antara lain:
L. Lintasan terpendek antara dua buah simpul tertentu (tt pttir slrcrtets
pnth).
2. Lintasan terpendek antara semua Pasangan simpul (ttll pnirs shortest
pnth).
3. Lintasan terpendek dari simpul tertentu ke semua simpul vang lain
(singl e-sou rc e shoertes p atlt).
4. Lintasan terpendek antara dua buah simpul yang melalui beberapa
simpul tertentu (inte rn't e dinte shortest p ath).
Kriteria untuk permasalahan jalur terpendek/5P problem tersebut:

1.. Setiap ruas pada grnplt harus memPunYai nilai (labd, grnplt)
2. Setiap ruas pada grnph tidak harus terhubung (unconrrected)
3. Setiap ruas pada grnpl'r tersebut harus mempunvai arah (gtaph berarah).

9.4 Minimum Spanning Tree


Minimum spnnning tree adalah teknik mencari jalan penghubung vang
dapat menghubungkan semua titik clalam jaringan secara bersamaan
sampai diperoleh jarak minimum. Masalah pohon rentang minimum
Knapsack Problem (Program Greedy) 67

serupa dengan masalah rute terpendek (shortest route), kecuali bahwa


tujuannva adalah untuk menghubungkan seluruh simpul dalam jaringan
sehingga total panjang cabang tersebut diminimisasi. Jaringan yang
dihasilkan merentangkan (menghubungkan) semua titik dalam jaringan
tersebut pada total jarak (panjang) minimum. Dalam mendapatkan solusi
vang diharapkan maka akan dipilih ruas menurut kriteria optimisasi vang
rnenghasilkan biaya minirnum. Dengan demikian penambahan jumlah
biavanva relatif kecil dari setiap ruas vang telah terpilih dan membentuk
spnnning tree. Untak masalah minimum spanning tree, syaral grnph dapat
dicari minimum, Spnruing treenya adalah.

Grttph harus terhubung


Ruasnva punva bobot/ nilai
Graplnya tidak berarah
Algoritma vang dapat dipakai untuk menentukan minimum spanning
tree adalah. Algoritma Solin, Algoritma Kruskal, Algoritma Prim's.

Latihan Soal
Diketahui 3 barang vang akan disimpan pada suatu tempat yang memiliki
kapasitas n-raksimal sebesar 20Kg. Berat masing-masing barang adalah
18Kg, 15K9, dan L0Kg di marra setiap barang memiliki profit sebesar
nrasing-masing 25, 24, dan 15. Tentukan barang mana saja yang dapat
disimpan ke dalam tempat penvimpanan sehingga diperoleh nilai profit
r.ang maksimal.

-oo0oo-
DAffAR PUSTAIM

Kompruter, n/. (2010). Pnling; Dicnri: PHP Source Corle. Penerbit Andi.

Siarripar, R. H. (2015). PrlP Dnn A,fY,SQt Ltrtgktth Denti Liutgkalr(\,.o1. 1).


Penerbit ANDt.

Sidlrarta, B. A., & Gunarsa, A. (2016). Pengitntnr iogika: sebLitlt langkrtlt


ptertmru TtenTenn!an nrednn telnnh. Refika Aditama.

Sismoro, H., & Iskandar, K. (2004). Striiktur Datn & Perrtrogrnntan Dengmt
Pascnl. Penerbit Andi.

Sitorus, L. (2015). Algoritmn dnn pentrogroftlafi. Penerbit Andi.

Supr.rpto, K. T. Y., Sukarrlivono, T., & Dervanto, A. (2008). Bahasa


Pemrograman Untuk Sekolah lvlenengal-r Kejuruan. Dira!;torst
Petilrinttnn Sekolslt Menengnh Ke iurunn"
Utan-ri, E. (2005). 10 L{tnthnit Belnisr Logiktt dnn Alcoritflttt, nrcnggtmakttit
Baltnstt C dnn C++ di GnuLlirnrr. Per-rerl-.it Andi

-oo0oo-
GI||SIRIUilI

A
Algoritma : Uiutan iogis p:engainbilan keprrtusan uiltul. Fen-Lec.rhai-r
mas"riah
Airar, : i arik
Ascending : ljrut naik
B
Bit Unit satuan terkecil dalam kompr-itasi digital
Byte istilah --vang biasa digr:nakan sebag;-ri satuan clari
penvimpanan data dalam komputer.

C
Cttse Sensititte Suatu aturan prenulisan ejaan vang membedakan antata
huruf kapital clengau huruf kecil.
Clnrtrcter Tipe data vang hanva bisa diisi satu karakter saja.
Cotttpiler Prograrn komputer untuk menerjemahkan progran-t
komprulsl yang ditulis dalrrtl b.rhasa pemrogramal-l
tertentu menjadi program r,'ang diti-riis daiam l:ahasa
penlrograman laaiir"

Contsiner Peti atau kotak vang di gunakan untuk menvirnpan


sesuatu.
72 Logika dan Algoritma untuk Pemula

D
Decision Pengar.biian Keputuser-t
Deueloper pengembang
Descending urut Turun

F
Fnlse : Salah
Float : Tipe data vang brisi bilangan pecahan/desimal
Frutgsi : ke-qun.:atr suaiu i-,ai

I
Input masukan
L- f
j'iiirt -^,i angka yang merepresentasikan posisi urutan eiemen
tersebut pada Arrav.
Integer Tipe data yang digunakan untuk menampung bilangan
bulat positi{ atau negatif

L
Looping kegiatan mengulang suatu statement sampai batas vang
diinginkan
M
Matrir susunan sekelompok bilangan didalam suatu jajaran varrg
berbentuk persegi panjang dan diatur berdasarkan baris
dan kolom

o
Oufyttt Keluaran

P
Peseudocode pemrograman komputer yang mengkonvensi suatu
bahasa pemrograman, agar dapat dibaca oleh manusia.
Php PHP: Hypertert Prepocessor, bahasa pemrograman untuk
membangun aplikasi berbasis web
Prosedur program terpisah dalam blok sendiri yang berfungsi
sebagai subprogram (program bagian)
Glosarium 73

R
Returu Perintah untuk mengirimkan nilai dari suatu fungsi
kepada fungsi yang lain uang memanggilnya
Rekursif proses pengulangan sesuatu dengan cara kesamaan-diri.

s
Scientific secara ilmiah
Search Ertgine Mesin Pencari
Sekuensial Terutur atau berurutan
Sistem Perangkat unsur yang secara teratur saling berkaitan
sehingga membentuk suatu totalitas
Stntic Tetap tidak berubah
Storage Tempat penvimpanan data
Sorting pengurutan
Searcling Pencarian

T
True Bernilai Benar
U
User Pengguna sistem

-oo0oo-
rlrDtr(s

A
Algoritm4 1, 2, 3, 4, 5, 9, 10, 15, I
35, 36,44,45,16, 17,48
lnput, 3,10, 11,13
B
L
Bit, 22
Byte, 21,22 Looping,4, 32, 34, 35

C o
Cnse sensitirle, 78 OtttptLt,2, 12,13, 18, 19, 48
Conrpiler, I P
Contrilner,17
PesetLdocode, 9
D PHP, 9,9,77, 19, 20, 30,40,41, 42
Decision,3 Prosedur, 13,36,38
Detteloper, 9
R
F Retttrn, 19
FALSE,22
Ftmgsi, 13
Fungsi, LB, L9,20,30, 31, 36,44
76 Logika dan Algoritmo untuk Pemula

s T
Scientific, 21 TRUE,22
Senrch engine, 9
U
Sekuensial,25
Sistem, 10 User, L,20, 33
Stntic, 19
Stornge, 12

-oo0oo-
Logiks6.
Algorilmq
untuk Perruls
Buku ini disajikan untuk rnemberikan dasar agar dapat berfikir secara logis
dalam menyusun algoritma utamanya untuk di implementasikan dalam bahasa
pemrograman. Karena berfikir dengan logis dalam menyusun algoritma
menjadi dasar yang penting bagi seorang programmer supaya aplikasi yang
dihasilkan mampu rnemberikan kinerja yang terbaik. Buku ini memberikan
penjelasan teori dan contoh agar pembaca dapat memiliki Eambaran utuh
mengenai materi yangdi bahas serta di lengkapi dengan latihan soal untuk
mengukurlingkat pemahaman pembaca terhadap materi yang dibahas.
Buku ini mernbahas mengenai konsep dasar logika dan algoritma, variabeldan
tipe data, Array, Metode devide & conquer, metode Greedy hingga metode
searching serta beberapa penjelasan lainnya yang wajib di ketahuioleh pemula
mengenai logika dan algoritma. Dalam Pembahasannya Buku ini
menggunakan bahasa PHP sebagai contoh kasusnya sehingga mudah untuk di
fahami dan dipraktikkan.

Wahyu Iko Susanto, M.Kom. Pria kelahiran Punvorejo tahun 1988 putra pertama
dari 6 bersaudara, menyelesaikan 52 di Pragram Pascasarjana Program Studi llmu
Komputer STMIK NUSA MANDlRlJakarta pada tahun 2015. Berkarir sebagai Dosen
di Universitas Bina Sarana lnformatika. Berfokus pada Software Engineering.

Akhmad Syukron, M.Kom, Lahir di Purworejo, tahun 1988 ini telah menyelesaikan
pendidikan S1 Program Studi Sistem lnformasi di STI\4lK Nusa Mandiri Jakarta pada
Tahun 2015 dan menyelesaikan pendidikan 52 bidang llmu Komputer di STIMIK
Nusa llandirijakarta pada tahun 20'18. Saat ini berkarir menjadi dosen di Universitas
Bina Sarana lnformatika dan mengajar di Fakultas Teknik dan lnformatika. Selain
men.iadi dasen juga sebagai Asesor lembaga sertiifikasi Prcfesi di LSP BSl.
Beberapa Publikasi penelilian dibidang software enginering dan juga Data mining telah
diterbitkan di berbagai jurnal.

ISBN : 978.i23"??8-408-1

ffi
ffi
Buku ini diterbitkan atas kerjasama dengan
Universitas Eina Sarana lnformatika iilIjlllltu1[ffi

Anda mungkin juga menyukai