Logikcr&
Algoritmcr
unluk Pemulcl
Logikcr&
Algorilmcr
unluk Pemulei
@ GRAHA ILMU
LOGIXA & ALGORITMA UNTUK PEMULA
oleh 'vVo,h11Lt. Eko &rsanto. Akltrnctcl Sgul;ron
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 ;
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.
Penulis
1
IIAFTAR ISI
KATA PENGANTAR v
DAFTAR ISI vii
DAFTAR GAMBAR ix
BAB 1 KONSEP DASAR ALGORITMA 1,
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
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
-oo0oo-
BAB 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. 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.
-oo0oo-
a
\
BAB2
Translasi
Compailer + Linker
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
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.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
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
1. Terminal
Simbol ini digunakan untuk memberi nilai an'al pada suatu ttnriable
atat cottnter.
3. Procesing
-
Sumber: (Sitorus, 2015)
.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
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
,/,./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 -
=: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
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.
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:
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
Longbool 3 byte
': 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:
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
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
+.1 Percabangan
Tidak
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
Contoh
. ?php
3HasiI=80;
_r, lfldsrr> -^\
/u) T
?>
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
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".
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
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.
: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.
4.2 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,,
echo 'rJalanrr ;
..h^ il- hy /-il.
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>);
?>
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
echo'rLogika Algorltmar, ;
echo Ir .br / r,, ;
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
1. FungsiPangkat
Untuk menghitung Menghitung 10 pangkat n dengan menggunakan
konsep rekursif.
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?
3. Deret Fibonanci
Contoh Deret Fibonancy adalah 0,L,1,,\3,5,8,13,... dst .
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
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
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] ;
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)
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
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.
, 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
::.:''/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
)
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.
::,:::r arral.. merge (quick sort (glow) , array ($pivot) . quick sort ( (ghigh) ) ;
, ,.-.;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) ) ;
-oo0oo-
{ B^t T
\
MEr0Dj sEAfrCflfii0
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:
-ontoh:
l salkan kita mempunyai sederatan data dalam arrav nilai sebanvak 10
:rl€11 dan akan dilakukan pencarian dala 87 terhadap arrav.
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
)
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
-oo0oo-
BAB 8
MTIOB} ENEEDY
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)!" .
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
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
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).
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
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
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
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. :
9.3 ShOfteSt Pf Oblem [penulisan shortestyang benar yung mana? Mhon koreksiunnya)
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).
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.
Sismoro, H., & Iskandar, K. (2004). Striiktur Datn & Perrtrogrnntan Dengmt
Pascnl. Penerbit 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"
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