Anda di halaman 1dari 142

ALGORITMA

PEMROGRAMAN

Oleh :

ALGORITMA PEMROGRAMAN i
ALGORITMA
PEMROGRAMAN

Penulis
Sigit Susanto Putro
Devie Rosa Anamisa
Fifin Ayu Mufarroha

Desain Cover & Penata Isi


Tim Media Nusa Creative

Cetakan I, Oktober 2019

Diterbitkan oleh :
Media Nusa Creative
Anggota IKAPI (162/JTI/2015)
Bukit Cemara Tidar H5 No. 34, Malang
Telp. : 0812.3334.0088
E-mail : mncpublishing.layout@gmail.com
Website : www.mncpublishing.com

ISBN 978-602-462-322-7

Hak Cipta dilindungi undang-undang. Dilarang memperbanyak atau


memindahkan sebagian atau seluruh isi buku ke dalam bentuk apapun,
secara elektronis maupun mekanis, termasuk fotokopi, merekam, atau
dengan teknik perekaman lainnya, tanpa izin tertulis dari Penerbit.
Undang-Undang Nomor 19 Tahun 2000 tentang Hak Cipta, Bab XII
Ketentuan Pidana, Pasal 72, Ayat (1), (2), dan (6).

ii ALGORITMA PEMROGRAMAN
KATA PENGANTAR

Alhamdulillah puji syukur kehadirat Allah SWT yang telah


memberikan kekuatan kepada kami sehingga bisa menyelesaikan
buku ajar berjudul Algoritma Pemrograman. Kami berharap buku ini
bisa menjadi panduan bagi mahasiswa, praktisi, akademisi dan
pihak terkait lainnya untuk mengetahui perkembangan dari bidang
ilmu algoritma pemrograman.

Di dalam buku ini terdapat studi kasus permasalahan dalam


membangun algoritma pemrograman.

Masih banyak kekurangan dan kelemahan dalam buku ini,


untuk itu kami mohon maaf sebesar-besarnya.

Tim Penulis

ALGORITMA PEMROGRAMAN iii


iv ALGORITMA PEMROGRAMAN
DAFTAR ISI

KATA PENGANTAR .......................................................................... IIi


DAFTAR ISI............................................................................................... v

BAB I KONSEP PEMROGRAMAN DAN ALGORITMA ........... 1


Pengertian Pemrograman dan Algoritma ....................................... 1
Tahap Pengembangan Algoritma .................................................... 4
Jenis-jenis Error ..................................................................................... 7
Kesimpulan ......................................................................................... 11
Latihan ................................................................................................ 12

BAB II DATA, TIPE DATA, VARIABEL DAN OPERATOR ..... 15


2.1 Pengertian dan Deklarasi Variabel dan Konstanta .............. 15
2.2 Aturan Penamaan Konstanta Dan Variabel ......................... 16
2.3 Jenis Tipe Data dan Operator, Operator Precedence........... 17
2.4 Kesimpulan ................................................................................ 23
2.5 Latihan ........................................................................................ 24

BAB III JENIS-JENIS ALGORITMA: SEQUENTIAL, SELECTION,


ITERASI ............................................................................................ 27
3.1 Pengenalan Algoritma.............................................................. 27
3.2 Penulisan Algoritma ................................................................. 31
3.3 Jenis-Jenis Algoritma ................................................................ 36
3.4 Kesimpulan ................................................................................ 48
3.5 Latihan ........................................................................................ 50

BAB IV FLOWCHART ...................................................................... 53


4.1 Pengertian Flowchart ............................................................... 53
4.2 Simbol-simbol Flowchart....................................................... 54
4.3 Flowchart untuk sequential, Seleksi dan Loop .................... 65
4.4 Kesimpulan ................................................................................ 75
4.5 Latihan ........................................................................................ 76

ALGORITMA PEMROGRAMAN v
BAB V STRING, LIST DAN TUPLE ............................................. 77
5.1 Definisi String, List, dan Tuple ............................................ 77
5.2 Indeks Data ................................................................................ 82
5.3 Sifat Mutable dan Immutable................................................ 84
5.4 Kesimpulan ................................................................................ 86
5.6 Latihan ........................................................................................ 87

BAB VI FUNGSI DAN DICTIONARIES ....................................... 89


6.1 Konsep Fungsi ........................................................................... 89
6.2 Konsep Dictionary .................................................................... 92
6.3 Fungsi Iteratif ............................................................................ 99
6.4 Fungsi Rekursif ....................................................................... 103
6.5 Penyimpanan eksternal File: : open, append, write, close 113
6.6 Kesimpulan .............................................................................. 119
6.7 Latihan ...................................................................................... 120

BAB VII STUDI KASUS SEDERHANA ....................................... 121


7.1 Studi Kasus 1: Menghitung luas dan keliling segitiga sama
sisi ......................................................................................... 121
7.2 Studi Kasus 2: Konversi Angka ke Huruf .......................... 125
7.3 Studi Kasus 3: Menampilkan deret n bilangan genap
pertama ................................................................................. 128

Bab VIII CONTOH MACAM-MACAM FLOWCHART ............. 133


8.1 Flowchart Mencari nilai pangkat ........................................ 134
8.2 Flowchart menampilkan nilai tengah dari kumpulan
bilangan ................................................................................ 135
8.3 Flowchart factorial .................................................................. 136
8.4 Flowchart Mengurutkan bilangan ...................................... 137

DAFTAR REFERENSI .......................................................................... 137

vi ALGORITMA PEMROGRAMAN
BAB I
KONSEP PEMROGRAMAN
DAN ALGORITMA
Pengertian Pemrograman dan Algoritma
Langkah-langkah penyelesaian menggunakan algoritma
memiliki aturan khusus, biasanya menggunakan pendekatan bahasa
pemrograman yang ada, jika targetnya adalah untuk mempelajari
bahasa pemrograman C, maka struktur algoritma juga akan
menggunakan pendekatan struktur dalam bahasa pemrograman C,
begitu juga untuk algoritma bahasa pemrograman lainnya. Struktur
algoritma adalah aturan penulisan algoritma untuk memecahkan
suatu kasus. sebenarnya untuk masalah struktur yang serupa
dengan algoritma tanpa anda sadari anda juga sering terlibat, seperti
misalnya ketika anda diminta oleh guru matematika atau fisika
untuk menyelesaikan kasus matematika dalam bentuk soal cerita,
misalkan dengan menyediakan 1 gelas kosong kemudian pindahkan
isi salah satu gelas misalnya kopi ke gelas yang kosong tersebut, dan
gelas berisi susu tuangkan ke gelas kosong yang sebelumnya berisi
kopi, kemudian gelas yang kosong yang sudah diisi kopi tuangkan
ke gelas kosong yang sebelumnya berisi susu, maka selesai. Dalam
matematika dan ilmu komputer, algoritma adalah urutan atau
langkah-langkah untuk penghitungan atau untuk menyelesaikan
suatu masalah yang ditulis secara berurutan. Sehingga, algoritma
pemrograman adalah urutan atau langkah-langkah untuk
menyelesaikan masalah pemrograman komputer. Dalam
pemrograman, hal yang penting untuk dipahami adalah logika kita
dalam berpikir bagaimana cara untuk memecahkan masalah
pemrograman yang akan dibuat. Sebagai contoh, banyak
permasalahan matematika yang mudah jika diselesaikan secara
tertulis, tetapi cukup sulit jika kita terjemahkan ke dalam
pemrograman. Dalam hal ini, algoritma dan logika pemrograman
akan sangat penting dalam pemecahan masalah.

ALGORITMA PEMROGRAMAN 1
Untuk memahami algoritma dasar maka perlu memahami
konsep dasarnya. Karena sebuah algoritma adalah suatu konsep,
maka tentu setiap orang bisa mempunyai algoritma yang berbeda-
beda terhadap masalah yang sama. Contoh ada suatu permasalahan
X dan solusinya adalah Y, maka tiap orang bisa mendapatkan Y
dengan Algoritma mereke masing-masing, tidak harus sama akan
tetapi menghasilkan output yang sama yaitu Y. Algoritma sendiri
merupakan fondasi yang harus dikuasai oleh setiap orang yang ingin
menyelesaikan suatu masalah secara terstruktur, efektif, dan efisien.
Namun beberapa penelitian sebelumnya, definisi dari algoritma,
terdapat beberapa pendapat, diantaranya adalah algoritma adalah:
(1) Teknik penyusunan langkah-langkah penyelesaian masalah
dalam bentuk kalimat dalam jumlah kata terbatas tetapi
tersusun secara logis dan sistematis.
(2) Suatu prosedur yang jelas untuk menyelesaikan suatu perosalan
dengan mengguanakan langkah-langkah tertentu dan terbatas
jumlahnya. Langkah-langkah tertentu seperti:
(a) Setiap langkah harus DEFINITE (pasti, tertentu), dalam
algoritma terdapat instruksi-instruksi yang jelas dan tidak
ambigu
(b) Minimum mempunyai 1 output (input boleh tidak ada)
(c) Harus ada stoping criteria (bisa berhenti).
(3) Susunan langkah yang pasti, yang bila diikuti maka akan
mentrasformasi data input menjadi output yang berupa
informasi.
Algoritma ditemukan oleh seorang ilmuan timur tengah jaman
peradaban islam bernama Abu Ja’far Muhammad Ibnu Musa Al-
Khwarizmi (780-850 masehi) dan kata Algoritma (Algorithm)
menurut sebagian ilmuan, diambil dari namanya yakni Al-
Khwarizmi. Ditinjau dari bahasa, algoritma berasal dari kata
algorism yang artinya perhitungan dalam angka arab namun para
ahli sejarah kesulitan menemukan asal-usul istilah ini sampai
akhirnya mereka menemukan bahwa Algorithm/Algoritma berasal
dari nama penemunya. Penyajian Algoritma biasanya tertuang
dalam bentuk Pseudocode, Flowchart, dan Diagram-diagram.

2 ALGORITMA PEMROGRAMAN
Pemrograman adalah proses membuat suatu program
dengan algoritm dan diterapkan dalam bahasa pemrograman.
Sebuah Software hanya bisa terwujud jika dibuat dengan Algoritma
dan Bahasa Pemrograman. Penyajian algoritma secara garis besar
dapat dibagi dalam dua bentuk penyajian yaitu tulisan dan gambar.
Algoritma yang disajikan dengan tulisan yaitu dengan struktur
bahasa tertentu (misalnya bahasa Indonesia atau bahasa Inggris) dan
pseudocode. Pseudocode adalah kode yang mirip dengan kode
pemrograman yang sebenarnya seperti Pascal, atau C, sehingga tepat
digunakan dalam menggambarkan algoritma yang akan
dikomunikasikan kepada programmer. Sedangkan untuk algoritma
yang disajikan dengan gambar adalah dengan flowchart. Flowcart
adalah bagan (chart) yang menunjukkan alir (flow) di dalam
program atau merupakan prosedur sistem secara logika. Flowcart
digunakan untuk alat bantu komunikasi dan untuk dokumentasi.
Algoritma juga mempunyai beberapa jenis yaitu : (1) Sequence,
instruksi dikerjakan berurutan (sekuensial). (2) Selection, instruksi
dikerjakan bila kreteria tertentu terpenuhi. (3) Iteration, instruksi
dikerjakan selama memenuhi kondisi tertentu. (4) Concurrent,
mengerjakan banyak instruksi secara bersama. Contoh algoritma
menghitung luas persegi, maka algoritmanya adalah: masukkan sisi
(S), hitung Luas  S * S, dan tulis Luas. Sedangkan paradigma bahasa
pemrograman dapat dilihat pada Gambar 1.

Gambar 1. Paradigma Bahasa Pemrograman

ALGORITMA PEMROGRAMAN 3
Adapun beberapa ciri algoritma, yaitu: (1) Algoritma
mempunyai awal dan akhir, suatu algoritma harus berhenti setelah
mengerjakan serangkaian tugas. Dengan kata lain, suatu Algoritma
memiliki langkah yang terbatas. (2) Setiap langkah harus
didefinisikan dengan tepat sehingga tidak memiliki arti ganda, tidak
membingungkan. (3) Memiliki masukan (input) atau kondisi awal.
Input: Suatu algoritma memiliki input atu kondisi awal sebelum
dilaksanakan, bisa berupa nilai-nilai perubahan yang diambil dari
himpunan khusus. (4) Memiliki keluaran (output) atau kondisi akhir.
Output: Suatu algoritma akan menghasilkan output setelah
dilaksanakan, atau algoritma akan mengubah kondisi awal menjadi
kondisi akhir, dimana nilai output diperoleh dari nilai input yang
telah diproses melalui algoritma. (5) Algoritma harus efektif, bila
diikuti benar-benar maka akan menyelesaikan persoalan.
Effectiveness: Setiap langkah dalam algoritma bisa dilaksanakan
dalam suatu selang waktu tertentu sehingga pada akhirnya
didapatkan solusi sesuai yang diharapkan.

Tahap Pengembangan Algoritma


Dalam membangun suatu program atau aplikasi komputer,
diperlukan strategi dan langkahlangkah sehingga program dapat
berjalan seperti yang diharapkan oleh pengguna. Langkah-langkah
inilah yang menjadi strategi bagaimna masalah dapat dipecahkan. Di
sinilah peran penting algoritma dalam pengembangan aplikasi.
Namun demikian sebelum membuat algoritmaatau langkah-langkah
penyelesaian masalah maka harus terlebih dahulu diketahui apa
permasalahan dan apa saja yang dibutuhkan sebelum memecahkan
masalah. Ketika langkah-langkah penyelesaian masalah sudah
diperoleh maka langkah berikutnya adalah mengimplementasikan
dalam bentuk kode program sehingga menghasilkan program.
Tahapan-tahapan pengembangan algoitma, diantaranya: (1)
Definisikan Masalah, dimana langkah ini harus dilakukan untuk
menentukan masalah yang ada serta ditentukan pula input dan
output program, (2) Mengumpulkan kebutuhan (requirement), (3)
Membuat Algoritma dan Struktur Cara Penyelesaian, (4) Menulis

4 ALGORITMA PEMROGRAMAN
Program dengan bahasa pemrograman, dimana penulisan program
bisa dilakukan dengan menggunakan bahasa pemrograman yang
dikuasai dan memiliki kompabilitas dengan perangkat keras yang
akan menggunakan program tersebut, (5) Testing dan Verifikasi
Program, dimana bila program sudah selesai dibuat, pengujian
diperlukan untuk mengetahui apakah program yang dibuat sudah
layak untuk digunakan., Implementasi/Instalasi Program. Compile,
apabila terjadi “Compile Error” atau “Sintak Error” kita dapat
melakukan pengecekan ulang (perbaikan) pada tahap menulis
program. Jika tidak terjadi “Compile Error” atau “Sintak Error”
maka lanjut pada tahap selanjutnya. Executable code:Run, apabila
terjadi error maka kita dapat melakukan pengecekan ulang
(perbaikan) pada tahap menulis program, merancang algoritma,
membuat model, atau pada tahap mendifinidikan masalah. Jika tidak
terjadi error maka lanjut pada tahap selanjutnya. (6) Dokumentasi
Program, dimana penulisan dokumentasi yang biasanya dilupakan
oleh pemrogram menjadi sangat penting saat akan dilakukan
perubahan pada program yang dibuat. penulisan program ini dapat
dilakukan dengan menulis komentar pada source code tentang
kegunaannya (variabel, parameter, procedur, fungs). (7)
Pemeliharaan Program. Tahapan-tahapan diatas dikenal juga
dengan istilah Model Waterfall (air terjun), dapat dilihat pada
Gambar 2.

Gambar 2. Tahapan Pengembangan Algoritma

ALGORITMA PEMROGRAMAN 5
Algoritma yang baik tidak hanya sekedar benar dalam
menentukan solusi, namun harus efektif dan efisien. Efektif
maksudnya seberapa program optimal penyelesaian yang
dihasilkan, sedangkan efisien yaitu berkaitan dengan waktu
eksekusi penyelesaian masalah. Terdapat beberapa strategi teknik
pemecahan masalah dalam algoritma, untuk suatu permasalahan
yang rumit yaitu:
(1) Divide and Conquer: Memecahkan masalah yang besar
kemudian membaginya menjadi masalah yang lebih sederhana.
Masalah yang lebih sederhana ini diselesaikan dan hasilnya
digabungkan dengan solusi dari masalah sederhana yang
lainnyanya sehingga didapatkan solusi permasalahan utama.
(2) Decrease and Concue: Teknik ini juga membagi masalah utama
menjadi beberapa bagian, namun permasalahan ukuran
permasalahan utama dikurangi terlebih dahulu sehingga
menjadi lebih sederhana.
(3) Transform and Conquer: Merubah penyajian masalah ke dalam
bentuk lain agar lebih mudah diselesaikan, contohnya:
menyelesaikan sistem persamaan linier dengan matriks.

Meskipun algoritma dibilang sebagai sebuah mesin yang


dapat menyelesaikan suatu masalah dengan terstruktur, tetapi
jangan beranggapan bahwa algoritma selalu identik dengan ilmu
komputer saja. Dalam kehidupan sehari-hari, terdapat banyak proses
yang dinyatakan dalam suatu algoritma. Misalnya cara memasak
mie, cara membuat kue, dan lainnya. Jika kita buat algoritma
memasak mie akan seperti di bawah ini:

1. Siapkan 1 bungkus mie instan, 400 ml air (2 gelas), panci,


mangkok, sendok, dan garpu
2. Masukkan 400 ml air kedalam panci
3. Masak air
4. Tunggu hingga mendidih
5. Masukkan mie kedalam panci yang sudah berisi air
mendidih

6 ALGORITMA PEMROGRAMAN
6. Tunggu dan aduk hingga 3 menit
7. Jika sudah matang masukkan bumbu Aduk hingga rata
8. Sajikan mie

Agar algoritma dapat ditulis lebih teratur maka struktur algoritma


sebaiknya dibagi ke dalam beberapa bagian. Salah satu struktur yang
sering dijadikan patokan adalah sebagai berikut:
(1) Bagian Kepala (Header): Memuat nama algoritma serta
informasi atau keterangan tentang algoritma yang ditulis.
(2) Bagian Deklarasi (Definisi Variabel): Membuat definisi nama
variabel, nama tetapan, nama prosedur, nama fungsi, tipe data
yang akan digunakan dalam algoritma.
(3) Bagian Deskripsi (Rincian Langkah): Memuat langkah-langkah
penyelesaian masalah, termasuk beberapa perintah seperti baca
data, tampilkan, ulangi, yang mengubah data input menjadi
output, dan sebagainya.

Jenis-jenis Error
Error handling digunakan untuk mengantisipasi kesalahan
yang bisa saja disebabkan oleh pengguna, hal ini dilakukan agar
program tidak berhenti di tengah jalan. Daripada ketika program
berhenti di tengah jalan kita harus mulai menjalankan program dari
awal lagi, lebih baik jika diantisipasi dengan error handling. Dalam
pemrograman pascal disediakan beberapa penanganan error,
diantaranya yaitu:
(1) Pernyataan Try......Except: Pernyatan ini menjalankan
serangkaian proses dengan perintah Try di depan, kemudian
diikuti Except untuk menandakan kejadian khusus yang
dideteksi sebagai error. Bentuk umum dalam bahasa pascal.

ALGORITMA PEMROGRAMAN 7
Untuk menggunakan pernyataan Try Except sebelumnya
dibagian awal program harus dipanggil dulu unit-unit yang
terkait, contoh:

(2) Pernyataan Try....Finally: Pernyataan ini akan menjalankan


serangkaian proses setelah perintah Try, jika terdapat error
maka error akan dilewati, kemudian perintah setelah finally

8 ALGORITMA PEMROGRAMAN
akan dieksekusi baik terjadi kesalahan ataupun tidak. Sintaks
dapat dilihat dibawah ini:

(3) Pernyataan Raise Exception : Pernyataan ini untuk


mengantisipasi kemungkinan user menginputkan nilai yang
tidak diinginkan program, misalnya variabel bulan seharusnya
bernilai 1-12 saja, jika user menginputkan nilai selain itu berarti
salah. Atau dengan kata lain pernyataan ini dapat digunakan
untuk mendefinisikan suatu niai pada rentang tertentu. Untuk
mengantisipasi hal ini dapat menggunakan pernyataan raise
exception. Contohnya sebagai berikut:

ALGORITMA PEMROGRAMAN 9
(4) Debugging : Kesalahan logika atau kesalahan algoritma
merupakan salah satu kesalahan yang sulit untuk dideteksi
selain syntax error dan run time error. Kesalahan algoritmik
yang sekecil apapun pasti akan mempengaruhi hasil dari
program tersebut. Dan semakin kecil kesalahan semakin sulit
juga untuk mencarinya, sehingga diibaratkan seperti sesulit
mencari kutu. Melakukan debugging program dapat dilakukan
dengan beberapa cara, yaitu:
a. Menjalankan kode program baris demi baris (pernyataan
demi pernyataan). Cara ini yaitu dengan meneliti baris per
baris apakah pada baris tersebut sudah benar atau belum.
Cara ini dapat dilakukan secara manual atau
memanfaatkan tool dari aplikasi, misalnya free pascal.
b. Menjalankan program hingga baris tertentu, dengan
menggunakan breakpoint Jika kode cukup banyak, dan
daripada mengecek baris per baris memerlukan waktu
yang lama. Terdapat cara lain yaitu dengan menggunakan
breakpoint. Caranya letakkan kursor dimana program akan
berhenti kemudian pilih menu dubug, dan pilih breakpoint.

Kesimpulan
Pengertian algoritma adalah suatu urutan dari beberapa
langkah yang logis guna menyelesaikan masalah. Pada saat kita
memiliki masalah, maka kita harus dapat untuk menyelesaikan
masalah tersebut dengan menggunakan langkah-langkah yang logis.
Contoh dari algoritma sederhana dalam kehidupan nyata adalah
pada saat memasak air. Dalam ilmu matematika dan komputer,
pengertian algoritma merupakan prosedur dari beberapa langkah
demi langkah untuk penghitungan. Algoritma dipakai untuk
penghitungan, penalaran otomatis, dan pemrosesan data. Pengertian
algoritma adalah suatu metode yang efektif diekspresikan sebagai
rangkaian yang terbatas dari beberapa instruksi yang telah
dijelaskan dengan baik guna menghitung sebuah fungsi. Susunan
algoritma dimulai dari kondisi awal dan input awal, instruksi
tersebut mendeskripsikan komputasi yang apabila itu dieksekusi

10 ALGORITMA PEMROGRAMAN
serta diproses dengan melewati urutan-urutan kondisi terbatas yang
terdefinisi dengan baik, sehingga dapat menghasilkan output atau
keluaran dan berhenti di kondisi akhir yang telah ditentukan.
Algoritma sangat diperlukan untuk mengolah data yang ada di
komputer. Dalam sistem komputer, pengertian algoritma adalah
logika yang dibuat dengan memakai software oleh para pembuat
perangkat lunak untuk membuat software tersebut menjadi lebih
bagus. Algoritma berbeda dengan algoritma lainnya. Perlu diketahui
juga bahwa logaritma adalah sebuah operasi di ilmu matematika
guna menghitung kebalikan eksponen dari sebuah perpangkatan.
Algoritma sendiri mempunyai tiga 3 bentuk dasar, antara
lain: Algoritma Sekuensial (Sequence Algorithm): merupakan
algoritma yang langkah-langkahnya secara urut dari awal hingga
akhir. Bentuk dari algoritma sekuensial ini salah satu contohnya
seperti algoritma memasak air. Langkah demi langkah yang
dijalankan harus urut dari atas sampai bawah., Algoritma
Perulangan (Looping Algorithm): merupakan suatu algoritma yang
menjalankan beberapa langkah tertentu secara berulang-ulang atau
looping. Pada masalah yang kita hadapi, ada pula sebuah langkah
yang harus kita lakukan secara berulang-ulang., Algoritma
Percabangan atau Bersyarat (Conditional Algorithm): merupakan
algoritma yang menjalankan langkah berikutnya apabila terdapat
syarat yang sudah dapat dipenuhi.
Tahap-tahap pengembangan Algoritma antara lain: (a).
Defenisi Masalah, (b). Membuat Model; (c). Rancangan Algoritma;
(d). Tulis Program; (e). Compile, apabila terjadi “Compile Error” atau
“Sintak Error” kita dapat melakukan pengecekan ulang (perbaikan)
pada tahap menulis program. Jika tidak terjadi “Compile Error” atau
“Sintak Error” maka lanjut pada tahap selanjutnya; (f). Executable
code: =>Run, apabila terjadi error maka kita dapat melakukan
pengecekan ulang (perbaikan) pada tahap menulis program,
merancang algoritma, membuat model, atau pada tahap
mendifinidikan masalah. Jika tidak terjadi error maka lanjut pada
tahap selanjutnya; (g) Dokumentasi.

ALGORITMA PEMROGRAMAN 11
Error handling digunakan untuk mengantisipasi kesalahan
yang bisa saja disebabkan oleh pengguna, hal ini dilakukan agar
program tidak berhenti di tengah jalan. Daripada ketika program
berhenti di tengah jalan kita harus mulai menjalankan program dari
awal lagi, lebih baik jika diantisipasi dengan error handling. Dalam
pemrograman pascal disediakan beberapa penanganan error,
diantaranya: Pernyataan Try......Except, Pernyataan Try....Finally,
Pernyataan Raise Exception, Debugging.

Latihan
1. Sebutkan bentuk dasar dari algoritma dan jelaskan?
2. Buatkan algoritma mencari bilangan terkecil dari dua
bilangan yang dimasukkan!
3. Buatlah rncangan algoritma dari permasalahan berikut ini:
Tentukan akar-akar dari suatu persamaan kuadrat, dapat
dilihat susunan definisi masalah sebagai berikut:

4. Dari gambar rancangan algoritma dibawah ini, sebutkan


model matematikanya:

12 ALGORITMA PEMROGRAMAN
5. Sebutkan macam-macam error dan jelaskan?

ALGORITMA PEMROGRAMAN 13
14 ALGORITMA PEMROGRAMAN
BAB II
DATA, TIPE DATA, VARIABEL
DAN OPERATOR
2.1 Pengertian dan Deklarasi Variabel dan Konstanta
Pada sebagian besar bahasa pemrograman, variabel harus
dideklarasikan lebih dulu untuk mempermudah compiler bekerja.
Apabila variabel tidak dideklarasikan maka setiap kali compiler
bertemu dengan variabel baru pada kode program akan terjadi
waktu tunda karena compiler harus membuat variabel baru. Hal ini
memperlambat proses kerja compiler. Bahkan pada beberapa bahasa
pemrograman, compiler akan menolak untuk melanjutkan proses
kompilasi. Pemberian nama variabel harus mengikuti aturan yang
ditetapkan oleh bahasa pemrograman yang kita gunakan. Deklarasi
variabel adalah suatu deklarasi yang nilai nya sudah pasti, dengan
kata lain Deklarasi jenis ini tidak dapat dirubah lagi atau konstan.
Deklarasi variabel untuk x, y dan z berjenis longint (seperti : bilangan
bulat dari -2147483648 sampai 2147483648) maka dalam program
tersebut, hanya bisa dimasukan tipe data yang berjenis tersebut. Sifat
dari variabel adalah sementara atau tidak permanen, artinya data
atau nilai yang tersimpan dalam variabel akan hilang ketika program
dimatikan. Aturan atau sifat yang dimiliki variabel, diantaranya:
variabel hanya digunakan untuk menyimpan data sementara dan
variabel hanya mampu menyimpan satu data atau nilai.
Konstanta pada dasarnya sama seperti variabel, hanya saja
nilai yang tersimpan dalam konstanta tidak dapat dirubah dalam
proses program. Dengan kata lain: bersifat tetap dan bedanya adalah
bila dalam deklarasi variabel kita hanya mendeklarasikan jenis dari
data yang harus dikerjakan, sedangkan pada deklarasi konstanta kita
langsung menyebutkan nilainya. Deklarasi konstanta tidak
menggunakan tanda titik dua (:) seperti pada deklarasi variabel
tetapi menggunakan tanda sama dengan (=). Konstanta adalah
variabel yang nilai datanya bersifat tetap dan tidak bisa diubah. Jadi

ALGORITMA PEMROGRAMAN 15
konstanta adalah juga variabel bedanya adalah pada nilai yang
disimpannya. Jika nilai datanya sepanjang program berjalan tidak
berubahubah, maka sebuah varibel lebih baik diperlakukan sebagai
konstanta. Pada sebuah kode program, biasanya nilai data dari
konstanta diberikan langsung di bagian deklarasi konstanta.

2.2 Aturan Penamaan Konstanta Dan Variabel


Untuk membuat variabel, maka harus mendeklarasikan-nya
sebelum main program dan sebuah variabel di dalam pascal harus
ditulis sesuai dengan aturan berikut: karakter pertama harus berupa
huruf, karakter kedua dan seterusnya dapat berupa angka atau
underscore (_), tidak boleh menggunakan spasi. Sedangkan untuk
variabel biasanya hanya ditentukan nama variabel dan tipe datanya
tanpa isian nilai data. Aturan penamaan variabel juga berlaku untuk
penamaan konstanta. Demikian juga aturan penetapan tipe data.
Konstanta dibagi menjadi empat, diantaranya:
(1) Konstanta integer, berupa integer biasa, integer panjang
(long int) dan integer tak bertanda (unsigned integer).
Nilainya dapat berupa desimal, oktal atau hexadesimal.
(2) Konstanta floating point, dapat mengandung nilai pecahan,
yang biasa ditulis dalam bentuk pecahan biasa maupun
bentuk eksponensial dan selalu dinyatakan dalam double,
kecuali jika diakhiri dengan F atau f (menyatakan konstanta
float).
(3) Konstanta string, merupakan deretan karakter yang diawali
dan diakhiri dengan tanda petik ganda ("…"). Juga dapat
mengandung karakter yang menggunakan tanda \ yang
disebut karakter escape (escape sequence).
(4) Konstanta karakter, selalu diawali dan diakhiri dengan tanda
petik tunggal ('…'). Beberapa konstanta karakter dapat
diawali dengan tanda \ (penempatannya setelah tanda petik
tunggal).

16 ALGORITMA PEMROGRAMAN
2.3 Jenis Tipe Data dan Operator, Operator Precedence
Tipe data adalah jenis data yang dapat diolah oleh komputer
untuk memenuhi kebutuhan dalam pemrograman komputer. Setiap
variabel atau konstanta yang ada dalam kode program, sebaiknya
kita tentukan dengan pasti tipe datanya. Ketepatan pemilihan tipe
data pada variabel atau konstanta akan sangat menentukan
pemakaian sumberdaya komputer (terutama memori komputer).
Salah satu tugas penting seorang programmer adalah memilih tipe
data yang sesuai untuk menghasilkan program yang efisien dan
berkinerja tinggi. Tipe Data dikelompokkan menjadi dua yaitu
primitive dan composite,dapat dilihat pada Gambar 3. Tipe data
primitive adalah tipe data dasar yang tersedia secara langsung pada
suatu bahasa pemrograman. Sedangkan tipe data composite adalah
tipe data bentukan yang terdiri dari dua atau lebih tipe data
primitive. Tipe data numeric digunakan pada variabel atau
konstanta untuk menyimpan nilai dalam bentuk bilangan atau
angka. Semua bahasa pemrograman menyediakan tipe data numeric,
hanya berbeda dalam jenis numeric yang diakomodasi. Misal tipe
Data Primitive, diantaranya Numeric, Character dan Boolean.
Sedangkan contoh tipe data Composite, diantaranya: Array, Record,
Image, Date Time, Lainnya (Subrange, Enumerasi, dan lain
sebagainya). Jenis yang termasuk dalam tipe data numeric antara
lain integer (bilangan bulat), dan float (bilangan pecahan). Tipe
Numerik digunakan pada variable untuk menyimpan nilai dalam
bentuk angka. Tipe data ini terbagi menjadi “Integer” dan “Real”,
dapat dilihat pada Tabel 1.

ALGORITMA PEMROGRAMAN 17
Gambar 3. Jenis-Jenis Tipe Data

Tabel 1. Kategori Integer


Tipe Data Ukuran Range Nilai
Tempat
Byte 1 byte 0 s/d +255
Shortint 1 byte -28 s/d +127
Integer 2 byte -32768 s/d 32767
Word 2 byte 0 s/d 655355
Longint 4 byte 2147483648 s/d 2147483647

Selain jenis, dalam bahasa pemrograman juga diterapkan


presisi angka yang digunakan, misalnya tipe data single adalah tipe
data untuk bilangan pecahan dengan presisi yang terbatas,
sedangkan tipe data double adalah tipe data untuk bilangan pecahan
dengan presisi yang lebih akurat. Tipe data Character. Bersama
dengan tipe data numeric, character merupakan tipe data yang
paling banyak digunakan. Tipe data character kadang disebut
sebagai char atau string. Tipe data string hanya dapat digunakan

18 ALGORITMA PEMROGRAMAN
menyimpan teks atau apapun sepanjang berada dalam tanda petik
dua ("…") atau petik tunggal ('…'). Tipe data Boolean digunakan
untuk menyimpan nilai True/False (Benar/Salah). Pada sebagian
besar bahasa pemrograman nilai selain 0 menunjukkan True dan 0
melambangkan False. Tipe data ini banyak digunakan untuk
pengambilan keputusan pada struktur percabangan dengan IF …
THEN atau IF … THEN … ELSE. Tipe data composite merupakan
bentukan dari beberapa tipe data. Tipe data ini lawan dari tipe date
primitive, tipe data composite dapat menampung banyak nilai,
diantaranya:
(a) Array atau disebut larik adalah tipe data yang terstruktur,
meskipun sederhana array mampu menyimpan data dengan
tipe yang sama (homogen) didalam sebuah variable. Array
mampu menyimpan sejumlah data dengan tipe yang sama
(homogen) dalam sebuah variabel. Setiap lokasi data array
diberi nomor indeks yang berfungsi sebagai alamat dari data
tersebut.
(b) Record atau Struct, Seperti array, record atau struct termasuk
data komposit. Record biasa dikenal pada bahasa pemrograman
Pascal atau Delphi sedangkan struct lebih dikenal di C++. Lain
hal dengan array, tipe data record menampung tipe data yang
berbeda-beda (heterogen).
(c) Image atau gambar atau citra merupakan tipe data grafik. Pada
bahasa-bahasa pemrograman modern terutama yang berbasis
visual tipe data ini telah didukung dengan sangat baik.
(d) Date and Time Nilai data untuk tanggal (Date) dan waktu
(Time) secara internal disimpan dalam format yang spesifik.
Variabel atau konstanta yang dideklarasikan dengan tipe data
Date dapat digunakan untuk menyimpan baik tanggal maupun
jam.
(e) Tipe data subrange merupakan tipe data bilangan yang
mempunyai jangkauan nilai tertentu sesuai dengan yang
ditetapkan programmer. Biasanya tipe data ini mempunyai nilai
batas minimum dan nilai batas maksimum.

ALGORITMA PEMROGRAMAN 19
(f) Tipe data Enumerasi merupakan tipe data yang mempunyai
elemen-elemen yang harus disebut satu persatu dan bernilai
konstanta integer sesuai dengan urutannya. Nilai konstanta
integer elemen ini diwakili oleh suatu nama variable yang
ditulis di dalam kurung.
(g) Tipe data object digunakan untuk menyimpan nilai yang
berhubungan dengan obyek-obyek yang disediakan oleh Visual
Basic, Delphi dan dan bahasa pemrograman lain yang berbasis
GUI. Sebagai contoh, apabila kita mempunyai form yang
memiliki control Command button yang kita beri nama
Command.
(h) Tipe data Variant hanya ada di Visual Basic. Tipe ini adalah tipe
data yang paling fleksibel di antara tipe data yang lain, karena
dapat mengakomodasi semua tipe data yang lain seperti telah
dijelaskan.

Operator adalah simbol-simbol yang melakukan operasi


khusus yang melibatkan satu, dua, atau tiga operand. Operator yang
didukung bahasa pemrograman dapat dibagi menjadi beberapa
kelompok yaitu operator pemberian (assignment operator), operator
aritmatika (arithmatic operator), operator unari (unary operator),
operator kesamaan dan hububungan (equality and relational
operator), operator bersyarat (conditional operator), dan operator
perbandingan (comparison operator). Operator pemberian nilai atau
disebut assigment, adalah operasi yang bertujuan untuk
mempersingkat pengodean pada operasi aritmatika.
Penggunaannya hampir sama dengan operator pada penambahan
dan pengurangan namun proses pemberian nilainya menggunakan
dua variabel yang berbeda. Operator artimatika adalah untuk
melakukan operasi dasar matematika seperti penambahan,
pengurangan atau perkalian. Operator unary adalah operator yang
digunakan untuk memanipulasi variabel itu sendiri. Hasilnya bisa di
ubah-ubah sesuai operator yang mastah berikan. Operator
perbandingan adalah membandingkan dua nilai dengan operator
berikut. Ketika dua nilai dibandingkan dengan menggunakan

20 ALGORITMA PEMROGRAMAN
operator berikut, hasilnya adalah nilai logika TRUE atau FALSE.
Rangkaian text menggunakan tanda ampersand (&) untuk
menggabungkan, atau menyatukan, satu atau lebih string teks untuk
menghasilkan satu bagian teks, dapat dilihat pada Tabel 2.

Tabel 2. Operator Rangkaian Text


Operator text Arti Contoh
& (ampersand) Menghubungkan, atau (“Terima”&”kasih”)
menyatukan, dua nilai
untuk menghasilkan
satu nilai teks yang
sinambung/kontinu

Operator adalah simbol-simbol yang melakukan operasi


khusus yang melibatkan satu, dua atau tiga operand. Operator yang
didukung bahasa pemrograman Java dapat dibagi menjadi beberapa
kelompok yaitu operator pemberian (assignment operator), operator
aritmatika (arithmatic operator), operator unari (unary operator),
operator kesamaan dan hububungan (equality and relational
operator), operator bersyarat (conditional operator) dan operator
perbandingan (comparison operator). Operand adalah suatu nilai
atau variabel yang akan dioperasikan (diproses) oleh operator untuk
mengetahui hasil. Operator precedence adalah urutan evaluasi
dimana operator yang ada di suatu ekspresi akan dievaluasi
berdasarkan aturan prioritas yang ditentukan. Operator dengan
prioritas lebih tinggi akan dievaluasi terlebih dahulu dibandingkan
dengan operator yang mempunyai prioritas lebih rendah. Apabila
beberapa operator di dalam ekspresi mempunyai prioritas yang
sama, maka operator akan dievaluasi berdasarkan asosiasi dari
operator tersebut (operator association), dapat dilihat pada Tabel 3.
Operator relasi adalah operator perbandingan yang membandikan
suatu nilai numerik atau alfa-numerik untuk menentukan
kebenarannya, dapat dilihat pada Tabel 4. Asosiativitas operator
adalah properti yang menentukan bagaimana operator dengan
prioritas yang sama dikelompokkan dalam ketiadaan tanda kurung.

ALGORITMA PEMROGRAMAN 21
Jika suatu operan didahului dan diikuti oleh operator dan operator
tersebut memiliki prioritas yang sama, maka operan dapat
digunakan sebagai input untuk dua operasi yang berbeda (yaitu dua
operasi yang ditunjukkan oleh dua operator). Pilihan operasi yang
menerapkan operan, ditentukan oleh "asosiasi" operator. Operator
dapat bersifat asosiatif (artinya operasi dapat dikelompokkan secara
sewenang-wenang), asosiatif kiri (artinya operasi dikelompokkan
dari kiri), asosiatif kanan (artinya operasi dikelompokkan dari
kanan) atau non-asosiatif (artinya operasi tidak dapat dirantai,
seringkali karena tipe output tidak sesuai dengan tipe input).
Asosiativitas dan prioritas operator adalah bagian dari definisi
bahasa pemrograman; bahasa pemrograman yang berbeda mungkin
memiliki asosiatif dan prioritas yang berbeda untuk jenis operator
yang sama.

Tabel 3. Operator Precedence atau Prioritas


Operator Deskripsi
: (titik dua), (spasi tunggal), Operator referensi
(koma)
– Negatif (seperti dalam –1)
% Persen
^ Pangkat
* Dan / Perkalian dan pembagian
+ dan – Penambahan dan pengurangan
& Menghubungkan dua string teks
(rangkaian)
= Perbandingan
<>
<=
>=
<>

22 ALGORITMA PEMROGRAMAN
Tabel 4. Operator Relasi
Operator Fungsi Operand
= Sama Dengan Numerik atau alfanumerik
<> Tidak sama dengan Numerik atau alfanumerik
> Lebih besar dari Numerik
< Lebih kecil dari Numerik
>= Lebih besar atau sama Numerik
dengan
<= Lebih kecil atau sama Numerik
dengan

2.4 Kesimpulan
Variabel adalah suatu tempat untuk menampung data yang
nilainya selalu berubah. Sedangkan, Konstanta adalah suatu tempat
untuk menampung data yang nilainya selalu tetap dan tidak pernah
berubah. Deklarasi variabel bisa disebut juga memperkenalkan atau
mendaftarkan variabel ke dalam program. Dalam php, deklarasi
variabel seringkali digabung dengan inisialisasi. Aturan pemberian
nama variabel, diantaranya: Karakter pertama harus huruf atau garis
bawah (_), Karakter berikutnya boleh huruf, angka, atau garis
bawah, Tidak boleh menggunakan spasi, Tidak boleh menggunakan
karakter-karakter khusus(seperti : +, -, *, /, <, >, dan sebagainya).
Kontanta adalah suku dari suatu bentuk aljabar yang berupa
bilangan dan tidak memuat variabel disebut konstanta. Konstanta
dibagi menjadi empat, diantaranya:
(1) Konstanta integer, berupa integer biasa, integer panjang (long
int) dan integer tak bertanda (unsigned integer). Nilainya dapat
berupa desimal, oktal atau hexadesimal.
(2) Konstanta floating point, dapat mengandung nilai pecahan,
yang biasa ditulis dalam bentuk pecahan biasa maupun bentuk
eksponensial dan selalu dinyatakan dalam double, kecuali jika
diakhiri dengan F atau f (menyatakan konstanta float).
(3) Konstanta string, merupakan deretan karakter yang diawali dan
diakhiri dengan tanda petik ganda ("…"). Juga dapat

ALGORITMA PEMROGRAMAN 23
mengandung karakter yang menggunakan tanda \ yang disebut
karakter escape (escape sequence).
(4) Konstanta karakter, selalu diawali dan diakhiri dengan tanda
petik tunggal ('…'). Beberapa konstanta karakter dapat diawali
dengan tanda \ (penempatannya setelah tanda petik tunggal).

Tipe data adalah jenis data yang dapat diolah oleh komputer
untuk memenuhi kebutuhan dalam pemrograman komputer. Setiap
variabel atau konstanta yang ada dalam kode program, sebaiknya
kita tentukan dengan pasti tipe datanya. Tipe Data dikelompokkan
menjadi dua yaitu primitive dan composite.
Operator adalah simbol-simbol yang melakukan operasi
khusus yang melibatkan satu, dua, atau tiga operand. Operator yang
didukung bahasa pemrograman dapat dibagi menjadi beberapa
kelompok yaitu operator pemberian (assignment operator), operator
aritmatika (arithmatic operator), operator unari (unary operator),
operator kesamaan dan hububungan (equality and relational
operator), operator bersyarat (conditional operator), dan operator
perbandingan (comparison operator). Operator precedence adalah
urutan evaluasi dimana operator yang ada di suatu ekspresi akan
dievaluasi berdasarkan aturan prioritas yang ditentukan. Operator
dengan prioritas lebih tinggi akan dievaluasi terlebih dahulu
dibandingkan dengan operator yang mempunyai prioritas lebih
rendah.

2.5 Latihan
1. Tulislah setiap kalimat “Suatu bilangan jika dikalikan 5 kemudian
dikurangi 3, hasilnya adalah 12” dengan menggunakan variabel
sebagai pengganti bilangan yang belum diketahui nilainya.
2. Tentukan konstanta pada bentuk aljabar 2x2 + 3xy + 7x – y – 8!
3. Sebutkan dan jelaskan enam jenis operator, beserta contoh
penggunaannya?
4. Dari script berikut ini, sebutkan identifikasi kesalahannya:

24 ALGORITMA PEMROGRAMAN
5. Pada soal 4 diatas menjalankan operator aritmatika sesuai dengan
input yang dimasukkan dan diproses dengan rumus dari operator
aritmetika tersebut, buatkan script yang benar, dengan flowchart
dibawah ini:

ALGORITMA PEMROGRAMAN 25
26 ALGORITMA PEMROGRAMAN
BAB III
JENIS-JENIS ALGORITMA:
SEQUENTIAL, SELECTION,
ITERASI
3.1 Pengenalan Algoritma
Struktur kontrol digunakan untuk mengatur alur logika
program agar sesuiai dengan kenyataan. Struktur kontrol akan
melibatkan variabel, tipe data, dan operator. Secara mendasar
struktur program memiliki kombinasi struktur kontrol sebagai
berikut:
(1) Urutan (Sequence)
Dalam membuat suatu algoritma, perlu ada ketentuan-
ketentuan tertentu yang perlu dipenuhi agar suatu algoritma
bisa mengeluarkan output sesuai yang kita inginkan. Salah
satu ketentuan dalam algoritma adalah sequence (urutan).
alam membuat suatu algoritma, perlu ada ketentuan-
ketentuan tertentu yang perlu dipenuhi agar suatu algoritma
bisa mengeluarkan output sesuai yang kita inginkan. Salah
satu ketentuan dalam algoritma adalah sequence (urutan).
Sequence terdiri dari satu atau lebih intruksi, diantaranya:
a. Tiap intruksi dikerjakan satu persatu.
b. Tiap intruksi dilaksanakan sekali, dan tidak ada intruksi
yang diulang.
c. Urutan intruksi yang dilaksanakan sama dan sesuai dengan
intruksi yang dibuat
d. Akhir dari intruksi terakhir merupakan akhir algoritma

Dua tipe Sequence, diantaranya : urutan instruksi tidak


berpengaruh terhadap hasil keluaran, dimana urutan instruksi
bergantung pada permasalahan awal. Urutan instruksi yang
berbeda tidak ada pengaruhnya terhadap penyelesaian

ALGORITMA PEMROGRAMAN 27
persoalan tetapi menghasilkan output yang berbeda. Selain
urutan instruksi tidak berpengaruh terhadap hasil keluaran
ada juga tipe urutan Instruksi Berpengaruh Terhadap Hasil
Keluaran, dimana pertukuran nilai akan salah jika kita tidak
benar dalam menuliskan urutan instruksi. Jadi sequence
(urutan) dalam algoritma sangat penting, karena kita bisa lebih
efektif dalam menjalankan suatu algoritma dengan urut dan
sesuai dengan apa yang diinginkan karena jika suatu algoritma
tidak ada sequence (urutan) maka algoritma tersebut akan
kacau dan bisa saja mengeluarkan output yang tidak sesuai.

(2) Pemilihan (Selection)


Pemilihan (selection) dapat menggunakan struktur kontrol
pilihan dalam pseudocode untuk menggambarkan sebuah
pilihan diantara dua atau lebih tindakan, tergantung kepada
sebuah kondisi adalah benar atau salah. Kondisi ini
berdasarkan pada sebuah perbandingan 2 hal, dan biasanya
diekspresikan dengan salah satu operator hubungan/
relational berikut ini :
< kurang dari
= sama dengan
>= lebih besar atau sama
> lebih dari
<= kurang atau sama dengan
<> tidak sama

Struktur pemilihan ini merupakan suatu implementasi


algoritma dalam pemecahan suatu masalah dengan berbagai
alternatif jawaban yang tersedia dan harus mengambil
keputusan untuk memilih salah satu jawaban yang tepat.

(3) Pengulangan (Iteration)


Perulangan/loop adalah instruksi khusus dalam bahasa
pemograman dan algoritma yang digunakan untuk
mengulang beberapa perintah sesuai dengan jumlah yang

28 ALGORITMA PEMROGRAMAN
telah ditentukan. Sebuah proses didalam program yang akan
mengulang satu atau beberapa statement terus menerus
hingga sampai pada kondisi berhenti. Ada 3 jenis bentuk
pengulangan:
a. Pengulangan menggunakan for adalah pengulangan yang
membutuhkan nilai awal dan akhir/ nilai akhir dan awal.
Umumnya digunakan pada perulangan yang jumlah
iterasinya sudah pasti atau sudah diketahui sebelumnya
b. Pengulangan menggunakan While Do adalah perulangan
yang diketahui nilai akhirnya saja (diperiksa dulu
kondisinya baru masuk)
c. Pengulangan menggunakan Repeat Until adalah
perulangan yang diketahui nilai akhir saja(pernah masuk
sebelumnya baru diperiksa).

Pernyataan Kondisional (If Statement)


Pernyataan kondisional adalah pernyataan yang hanya akan
dijalankan jika suatu kondisi bernilai benar, berfungsi untuk
melakukan filter/penyaringan hasil berdasarkan kondisi tertentu.
Berikut adalah macam-macam pernyataan kondisional:
(1) IF: Hanya if, namun dengan inisialisasi atau nilai awal, dapat
dilihat pada Gambar 4.

(a)
(b)
Gambar 4. IF Statement

ALGORITMA PEMROGRAMAN 29
(2) IF..ELSE : Kontrol struktur else merupakan pelengkap dari
kontrol struktur if, digunakan untuk memberikan alternatif
jawaban benar atau salah. Pernyataan pada bagian else akan
dijalankan apabila pernyataan pada bagian if bernilai salah..
Struktur ini perlu memiliki 2 kasus untuk melanjutkan
instruksinya, dapat dilihat pada Gambar 5.

(a)
(b)

Gambar 5. IF ELSE Statement

(3) IF...ELSEIF....ELSE : Nilai hasil suatu ekspresi bisa jadi bukan


merupakan dua nilai, benar atau salah, tetapi bisa bnyak nilai.
Bentuk if... else...digunakan untuk memutuskan suatu blok
perintah yang harus dikerjakan berdasarkan dua macam nilai
yang dihasilkan yaitu benar dan salah. Jika terdapat lebih dari
dua maka harus digunakan struktur kontrol yang dapat
memenuhi kebutuhan ini. Struktur kontrol yang paling tepat
untuk menjawab permasalahan tersebut adalah if... elseif... else...
Dikenal sebagai nested-if. Struktur yang akan memeriksa N
kasus, dengan memeriksa (n - 1) kasus, dapat dilihat pada
Gambar 6.

30 ALGORITMA PEMROGRAMAN
(a)

(b)
Gambar 6. IF ELSEIF ELSE Statement

(4) IF Bersarang
Kombinasi pernyataan IF adalah pernyataan IF yang berisi
banyak kondisi dan beda untuk jenis kondisinya. Setiap
pernyataan bisa menggunakan operator logika AND (DAN)
atau OR (ATAU). Jika kondisi dikombinasikan dengan
menggunakan penghubung AND, kedua kondisi harus bernilai
benar untuk membuat kondisi kombinasi bernilai benar. Jika
kondisi dikombinasikan dengna menggunakan penghubung
OR, salah satu dari konsidi bernilai benar maka pernyataan bisa
dikerjakan, dpat dilihat pada bentuk umum berikut ini:

3.2 Penulisan Algoritma


Penulisan Algoritma tidak dipengaruhi oleh sintaks bahasa
apapun. Tidak ada aturan baku dalam menulis Algoritma. Yang
penting mudah dibaca dan dipahami. Walaupun begitu, untuk
menghindari kekeliruan, ketaatan terhadap notasi perlu

ALGORITMA PEMROGRAMAN 31
diperhatikan. Untuk itu terdapat 3 cara yang digunakan dalam
menuliskan Algoritma yaitu:
(1) Kalimat Deskriptif
Notasi penulisan algoritma menggunakan bahasa deskriptif
biasa juga disebut dengan notasi alami. Penulisan Algoritma
dengan cara ini dilakukan dengan menuliskan instruksi-
instruksi yang harus dilaksanakan secara berurutan dalam
bentuk uraian kalimat deskriptif dengan menggunakan bahasa
yang jelas. Tidak ada aturan yang baku dalam menuliskan
algoritma dengan cara deskriptif, sehingga kamu dapat
membuat aturan penulisan dan notasi algoritma sendiri.
Namun, agar algoritma mudah ditranslasikan ke dalam bahasa
pemrograman, maka sebaiknya kamu menulisnya dengan
bahasa yang koresponden dengan notasi bahasa pemrograman
pada umumnya. Notasi penulisan algoritma dengan cara ini
cocok menuliskan algoritma yang pendek. Tapi untuk
menuliskan algoritma dengan cara ini rasanya kurang efektif.
Cara ini memang paling mudah dibuat, tetapi paling sulit untuk
diterjemahkan ke dalam bahasa pemrograman. Pada dasarnya,
teks algoritma yang disusun dengan bahasa deskriptif disusun
atas 3 bagian utama yaitu:
(a) Bagian Judul (Header)
Judul merupakan bagian yang terdiri atas nama algoritma
dan penjelasan (spesifikasi) tentang algoritma tersebut.
Dibagian ini juga digunakan untuk menentukan apakah teks
algoritma yang dibuat tersebut adalah program, prosedur,
atau fungsi. Nama algoritma sebaiknya singkat namun
cukup menggambarkan apa yang dilalakukan oleh
algoritma tersebut.Berikut saya berikan contoh judul
algoritma penjumlahan disertai dengan penjelasan singkat.

(b) Bagian Deklarasi


Bagian deklarasi atau kamus adalah bagian yang
mendefinisikan semua data yang dipakai di dalam

32 ALGORITMA PEMROGRAMAN
algoritma. Data tersebut dapat berupa variabel, konstanta,
tipe, prosedur atau fungsi. Semua data tersebut dapat
digunakan di dalam algoritma jika telah didefinisikan
terlebih dahulu di bagian deklarasi. Penulisan sekumpulan
nama dalam dalam bagian deklarasi sebaiknya
dikelompokkan menurut jenisnya. Berikut saya berikan
contoh bagian deklarasi algoritma penjumlahan disertai
dengan penjelasan singkat.

(c) Bagian Deskripsi


Bagian deskripsi adalah bagian inti dari suatu algoritma.
Bagian ini berisi uraian langkah-langkah penyelesaian
masalah. Langkah-langkah ini dituliskan dengan notasi
yang lazim dalam penulisan algoritma. Setiap langkah
ditulis secara terurut. Jadi, kalau urutan yang pertama
diubah menjadi urutan kedua maka akan mengakibatkan
algoritma tidak dapat berjalan dengan semestinya. Suatu
algoritma dapat terdiri dari tiga struktur dasar, yaitu
runtunan, pemilihan, dan pengulangan. ketiga struktur
dasar tersebut membentuk suatu algoritma. Pada bagian
deskripsi inilah letak tiga struktur dasar algoritma
tersebut.Berikut saya berikan contoh Deskripsi algoritma
penjumlahan.

(2) Flowchart
Flowchart adalah cara penulisan algoritma dengan
menggunakan notasi grafis. Flowchart merupakan gambar atau
bagan yang memperlihatkan urutan atau langkah-langkah dari
suatu program dan hubungan antar proses beserta
pernyataannya. Penulisan algoritma dengan cara flowchart
dilakukan dengan menggunakan simbol. Dengan demikian

ALGORITMA PEMROGRAMAN 33
simbol menggambarkan proses tertentu. Sedangkan proses
digambarkan dengan garis penghubung. Dengan menggunakan
flowchart, maka akan mudah melakukan pengecekan bagian-
bagian yang terlupakan dalam analisis masalah. Penulisan
algoritma dengan menggunakan cara flowchart kurang efektif
untuk penulisan algoritma yang panjang karena akan
mengbiskan banyak tempat.Dalam pembuatan flowchart tidak
ad rumus atau patokan yang bersifat mutlak. Karena
flowchartmerupakan gambaran hasil pemikir dalam dalam
menganalisis suatu masalah yang nantinya akan diubah
menjadi program komputer. Tetapi, ada beberapa anjuran yang
harus diperhatikan, yaitu:
(a) Flowchart digambarkan di suatu halaman dimulai dari sisi
atas ke bawah atau dari sisi kiri ke kanan.
(b) Aktivitas yang digambarkan harus didefinisikan dengan
menggunakan bahasa dan simbol yang tepat dan definisi ini
harus dapat dimengerti oleh pembaca.
(c) Kapan aktivitas dimulai dan berakhir harus ditentukan
secara jelas. Hanya terdapat satu titik awal dan satu titik
terakhir.
(d) Setiap langkah dari aktivitas harus diuraikan dengan
deskripsi kata kerja, misalkan "menghitung nilai rata-rata".
(e) Setiap langkah dari aktivitas harus berada pada urutan yang
benar.
(f) Lingkup dan range dari aktivitas yang sedang digambarkan
harus ditelusuri dengan hati-hati. Percabangan-
percabangan yang memotong aktivitas yang sedang
digmbarkan tidak perlu pada flowchart yang sama. Simbol
konektor harus digunakan dan percabangannya diletakkan
pada halaman yang terpisah atau hilangkan seluruhnya bila
percabangannya tidak berkaitan dengan sistem.
(g) Gunakan simbol-simbol flowchart yang standar.
(3) Pseudocode
Pseudocode adalah cara penulisan algoritma yang menyerupai
bahasa pemrograman tingkat tinggi. Pseudocode menggunakan

34 ALGORITMA PEMROGRAMAN
bahasa yang hampir menyerupai bahasa pemrograman.
Biasanya pseudocode menggunakan bahasa yang mudah
dipahami secara universal dan juga lebih ringkas dari pada cara
penulisan algoritma sebelumnya. Struktur bahasa yang
digunakan dalam menulis algoritma dengan cara ini berasal dari
beberapa bahasa pemrograman, tetapi bahasa tersebut hanya
ditujukan agar dapat dibaca manusia. Sehingga pseudocode
tidak dapat dipahami oleh komputer. Agar notasi psudocode
dapat dipahami oleh komputer maka harus diterjemahkan
terlebih dahulu menjadi sintaks bahasa pemrograman komputer
tertentu. Tidak ada sintaks standar yang resmi dalam penulisan
algoritma dengan cara penulisan pseudocode. Oleh karena itu,
pseudocode ini dapat diterapkan dalam berbagai bahasa
pemrograman. Tetapi, untuk memudahkan translasi ke dalam
bahasa pemrograman disarankan untuk menggunakan
keyword yang umum digunakan seperti: if, then, whike, do,
else, repeat, for, dan lainnya. Struktur penulisan algoritma
dengan notasi pesudocode sama dengan cara kalimat deskriptif
yaitu:
(a) Judul
(b) Deklarasi
(c) Deskripsi
Contoh pseudocode algoritma penjumlahan dapat dlihat
sebagai berikut:

3.3 Jenis-Jenis Algoritma


Jenis-jenis algoritma:
(1) Algoritma Bellman-Ford: menghitung jarak terpendek pada graf
berbobot, di mana sisi bisa memiliki bobot negatif. Algoritma

ALGORITMA PEMROGRAMAN 35
Bellman-Ford digunakan untuk menghitung jarak terpendek
(dari satu sumber) pada sebuah graf berbobot. Maksudnya dari
satu sumber dan menghitung semua jarak terpendek yang
berawal dari satu titik (node). Algoritma Bellman-Ford hanya
digunakan jika ada sisi berbobot negatif. Munculnya algoritma
ini cukup membantu jika bobot dari suatu graf bernilai negatif.
Berikut ini telah melampirkan langkah-langkah penyusunan
algoritma Bellman-Ford yang akan mengembalikan nilai TRUE
jika pada graf tidak terdapat siklus yang negatif dan akan
mengembalikan nilai FALSE jika sebaliknya, dapat dilihat
dibawah ini.

(2) Algoritme Dijkstra, (sesuai penemunya Edsger Dijkstra), adalah


sebuah algoritma yang dipakai dalam memecahkan
permasalahan jarak terpendek (shortest path problem) untuk
sebuah graf berarah (directed graph). Menurut Andrew
Goldberg peneliti Microsoft Research Silicon Valley,
mengatakan ada banyak alasan mengapa peneliti terus
mempelajari masalah pencarian jalan terpendek. "Jalan
terpendek adalah masalah optimasi yang relevan untuk
berbagai macam aplikasi, seperti jaringan routing, game, desain
sirkuit, dan pemetaan". Algoritma Dijkstra bekerja dengan
membuat jalur ke satu simpul optimal pada setiap langkah. Jadi
pada langkah ke n, setidaknya ada n node yang sudah kita tahu
jalur terpendek. Langkah-langkah algoritma Dijkstra dapat
dilakukan dengan langkah-langkah berikut:

36 ALGORITMA PEMROGRAMAN
(a) Tentukan titik mana yang akan menjadi node awal, lalu beri
bobot jarak pada node pertama ke node terdekat satu per
satu, Dijkstra akan melakukan pengembangan pencarian
dari satu titik ke titik lain dan ke titik selanjutnya tahap
demi tahap.
(b) Beri nilai bobot (jarak) untuk setiap titik ke titik lainnya, lalu
set nilai 0 pada node awal dan nilai tak hingga terhadap
node lain (belum terisi) 2.
(c) Set semua node yang belum dilalui dan set node awal
sebagai “Node keberangkatan”
(d) Dari node keberangkatan, pertimbangkan node tetangga
yang belum dilalui dan hitung jaraknya dari titik
keberangkatan. Jika jarak ini lebih kecil dari jarak
sebelumnya (yang telah terekam sebelumnya) hapus data
lama, simpan ulang data jarak dengan jarak yang baru
(e) Saat kita selesai mempertimbangkan setiap jarak terhadap
node tetangga, tandai node yang telah dilalui sebagai
“Node dilewati”. Node yang dilewati tidak akan pernah di
cek kembali, jarak yang disimpan adalah jarak terakhir dan
yang paling minimal bobotnya.
(f) Set “Node belum dilewati” dengan jarak terkecil (dari node
keberangkatan) sebagai “Node Keberangkatan”
selanjutnya dan ulangi langkah e.
Sebagai contoh hitunglah Jarak terdekat dari V1 ke V7 pada
Gambar 7 dan Hasil setiap stepnya dapat dilihat pada Tabel 5.
Dengan demikian jarak terpendek dari V1 ke V7 adalah 16
dengan jalur V1V2V3V5VV7.

ALGORITMA PEMROGRAMAN 37
Gambar 7. Contoh Pencarian Jalur Terdekat Menggunakan
Dijkstra

Tabel 5. Perhitungan Djikstra Dalam Mencari Jalur


Terpendek

(3) Algoritma Floyd-Warshall: menghitung solusi jarak terpendek


untuk semua pasang titik pada sebuah graf berarah dan
berbobot. Algoritma Floyd Warshall adalah salah satu varian
dari pemrograman dinamis, metode untuk memecahkan
masalah pencarian rute terpendek (sama seperti Algoritma
Dijkstra). Metode ini melakukan pemecahan masalah dengan
memandang solusi yang akan diperoleh sebagai suatu
keputusan yang saling terkait. Maksudnya, solusi-solusi
dibentuk dari solusi yang berasal dari tahap sebelumnya dan
ada kemungkinan solusi lebih dari satu. Algoritma ini juga bisa
diterapkan pada sebuah aplikasi pencari rute jalan yang

38 ALGORITMA PEMROGRAMAN
terdekat dari suatu daerah ke daerah lainnya. dengan metode ini
hasil yang di dapat bisa lebih optimal namun memelukan
resource yang cukup besar jika dipakai untuk pencarian yang
kompleks. Pseudocode untuk algoritma Floyd-Warshall,
sebagai berikut:

(4) Algoritma Kruskal: mencari pohon rentang minimum pada


sebuah graf. Sebuah algoritma dalam teori graf yang mencari
sebuah minimum spanning tree (MST) untuk sebuah graf
berbobot yang terhubung. Langkah-langkahnya, diantaranya:
a. Lakukan pengurutan terhadap setiap sisi di graf mulai dari
sisi yang memiliki bobot terkecil.
b. Pilih sisi yang mempunyai bobot minimum yang tidak
membentuk sirkuit pada pohon, kemudian tambahkan sisi
tersebut ke dalam pohon.
c. Ulangi langkah kedua sebanyak n – 1 kali (n adalah jumlah
simpul graf).
Dalam pembuatan graf algoritma kruskal lintasannya tidak
boleh membentuk circle. Kelebihan dan kekurangan dari
algoritma kruskal, diantaranya:
a. Sangat cocok digunakan saat graf memiliki sisi berjumlah
sedikit namun memiliki sangat banyak simpul, karena
orientasi kerja algoritma ini adalah berdasarkan urutan bobot
sisi bukan simpul.
b. Kurang cocok digunakan saat graf dimana setiap simpul
terhubungkan dengan semua simpul yang lain. Karena

ALGORITMA PEMROGRAMAN 39
algoritma ini menitik beratkan pada pencarian sisi yang
diurutkan.
(5) Algoritma Prim: mencari pohon rentang minimum pada sebuah
graf. Sebuah algoritma dalam teori graf untuk mencari pohon
rentang minimum untuk sebuah graf berbobot yang saling
terhubung. Ini berarti bahwa sebuah himpunan bagian dari
edge yang membentuk suatu pohon yang mengandung node, di
mana bobot keseluruhan dari semua edge dalam pohon
diminimalisasikan. Bila graf tersebut tidak terhubung, maka
graf itu hanya memiliki satu pohon rentang minimum untuk
satu dari komponen yang terhubung. Langkah-langkah untuk
mencari bobot minimum:
a. Ambil sisi dari graph (G) yang berbobot minimum,
masukkan dalam Tree (T).
b. Pilih sisi yang mempunyai bobot minimum dan bersisian
dengan simpul di T ,tetapi sisi tersebut tidak membentuk
sirkuit di T, kemudian tambahkan sisi tersebut ke dalam T.
c. Ulangi langkah 2 sebanyak (N -2 ) kali.
(6) Algoritma Boruvka: mencari pohon rentang minimum pada
sebuah graf. Algoritma Boruvka adalah salah satu algoritma
yang digunakan untuk pencarian jalur. Algoritma ini hanya
bertujuan untuk menghubungkan semua titik, bukan untuk
mencari jalur yang tersambung dari awal sampai akhir.
Pseudocode algoritma Boruvka dapat dilihat dibawah ini:

40 ALGORITMA PEMROGRAMAN
(7) Algoritma Ford-Fulkerson: menghitung aliran maksimal
didalam graf. Algoritma untuk memaksimumkan aliran (flow)
dengan kapasitas dan biaya yang terbatas pada jaringan.
Algoritma Ford-Fulkerson juga merupakan metode yang
dipakai untuk melakukan penambahan aliran dalam suatu
jaringan. Algoritma Ford-Fulkerson menentukan maximum
flow pada jaringan, Jika f merupakan feasible flow dalam G.
maka Edge (i,j) dikatakan : saturasi jika f(i,j) = c(i,j), bebas jika
f(i,j) = 0, dan positifif 0 < f(i,j) < c(i,j). Tiga hal penting yang perlu
diperhatikan dalam kaitannya dengan metode menggunakan
algoritma Ford-Fulkerson, yaitu:
a. Residual network : residual capacity (rc) dari sebuah edge
(i,j) adalah sama dengan c(i,j) –f(i,j) ketika (i,j) adalah forward
edge, atau sama dengan f(i,j) ketika (i,j) adalah backward
edge, contonya dapat dilihat pada Gambar 8.

Gambar 8. Contoh Residual Network

b. Flow Augmenting Path : suatu lintasan yang memungkinkan


terjadinya suatu penambahan aliran. Langkah Flow

ALGORITMA PEMROGRAMAN 41
Aughmenting Path, diantaranya: menaikkan flow forward
link sampai menuju ci,j, dan menurunkan flow arah
backward link sampai menuju 0 (kapasitas terendah).
c. Minimum Cutset : suatu metode pemecahan jaringan
menjadi beberapa subnet. Minimum cut-set akan
membentuk suatu partisi (membentuk dua buah jaringan
baru).
(8) Algoritma Edmonds-Karp: implementasi dari Ford-Fulkerson.
mplementasi metode Ford-Fulkerson untuk menghitung aliran
maksimum dalam jaringan arus pada waktu O ( V E 2 ).
Algoritma ini pertama kali diterbitkan oleh Yefim Dinitz pada
tahun 1970 dan diterbitkan secara independen oleh Jack
Edmonds dan Richard Karp pada tahun 1972. Algoritma ini
mencakup teknik tambahan yang mengurangi waktu berjalan ke
O (V2E). Algoritma ini identik dengan algoritma Ford-
Fulkerson, kecuali bahwa urutan pencarian saat menemukan
jalan augmenting didefinisikan. Jalur yang ditemukan pastilah
jalan terpendek yang memiliki kapasitas yang tersedia. Ini bisa
ditemukan dengan pencarian yang luas , karena kita
membiarkan tepi memiliki panjang satuan. Waktu berjalan O
(VE2) ditemukan dengan menunjukkan bahwa setiap jalur
augmenting dapat ditemukan pada waktu O (E), bahwa setiap
kali setidaknya satu dari ujung E menjadi jenuh (tepi yang
memiliki arus maksimum), bahwa jarak dari tepi jenuh ke
sumber sepanjang jalan augmenting harus lebih lama dari
waktu terakhir jenuh, dan panjangnya paling banyak V. Sifat
lain dari algoritma ini adalah bahwa panjang jalur augmenting
terpendek meningkat secara monoton.
(9) Spring based algorithm: algoritma untuk penggambaran draf
Topological sort. Sebuah topological sort dari sebuah graf tidak
serkuler yang terhubung adalah sebuah pengurutan pada
simpul-simpulnya seperti semua sisi datang dari kiri ke kanan.
Hanya sebuah graf tidak sirkuler dapat memiliki sebuah
topological sort, karena sebuah graf sirkuler yang terhubung
pada akhirnya harus kembali ke awal ke simpul pertama

42 ALGORITMA PEMROGRAMAN
sirkuler tersebut. Langkah-langkah dalam algoritma topological
sort adalah sebagai berikut: a) Mula-mula definisikan 𝑆 sebagai
him-punan seluruh simpul yang ada di dalam graf. b) Cari
sebuah simpul 𝑋 yang mana simpul tersebut tidak memiliki
predecessor. Minimal terdapat satu simpul dengan jenis seperti
ini di dalam graf. Jika tidak, maka akan terjadi cycle dan grafnya
bukan asiklik sehingga algoritma topologi-cal sort tidak bisa
diterapkan. c) Hapus 𝑋 dari 𝑆 dan keterhubungan antara 𝑋
dengan item lainnya. d) Insert 𝑋 sebagai elemen paling belakang
di dalam 𝐿. e) Jika 𝑆 tidak kosong, maka ulangi ke langkah 2. f)
Cetak 𝐿. Hasil yang diperoleh dari penerapan algoritma
topological sort tidaklah tunggal. Sebagai contoh, salah satu
alternatif penyelesaian dari penerapan algoritma topological
sort pada graf berarah asiklik di Gambar 9. Dan Hasil dari
Contoh gambar 9, dapat dilihat pad Tabel 6.

Gambar 9. Graf Berarah Asiklik

Tabel 6.

ALGORITMA PEMROGRAMAN 43
Algoritma pencarian (searching algorithm) adalah algoritma yang
menerima sebuah argument kunci dan dengan langkah-langkah
tertentu akan mencari rekaman dengan kunci tersebut. Setelah
proses pencarian dilaksanakan, akan diperoleh salah satu dari dua
kemungkinan, yaitu data yang dicari ditemukan (successful) atau
tidak ditemukan (unsuccessful). Sedangkan jenis-jenis algoritma
pencarian, diantaranya:
(1) Pencarian linear: mencari sebuah item pada sebuah list tak
berurut. Pencarian (searching) merupakan suatu pekerjaan yang
sering dikerjakan dalam kehidupan sehari – hari. Ada kalanya
kita mencari sesuatu dengan tujuan hanya untuk mengetahui
apakah data tersebut ada dalam sekumpulan data atau tidak,
sementara di lain waktu mungkin kita menginginkan posisi dari
data yang dicari tersebut. Pencarian atau searching adalah
proses untuk menemukan elemen yang spesifik di dalam suatu
array, dan ini adalah hal yang umum dilakukan pada proses
pemrograman. Pencarian Linier atau Pencarian Sekuensial
adalah pencarian data secara linier (garis lurus), artinya adalah
pencarian dilakukan secara teratur (secara sekuensial) dari awal
sampai akhir data (atau bisa juga dari akhir ke awal data). Linear
search digunakan pada sekumpulan item. Metode ini
didasarkan pada teknik melakukan penelusuran dari awal
hingga akhir dengan mengeksplorasi semua properti elemen
yang ditemukan.
(2) Algoritma seleksi: mencari item ke-k pada sebuah list.
Algoritma ini juga memungkinkan untuk menemukan elemen
terkecil ke-k dalam waktu linear yang paling buruk atau orde
statistik berlipat. Seleksi adalah sebuah sub masalah dari
permasalahan yang lebih kompleks seperti permasalahan
tetangga terdekat.
(3) Pencarian biner: menemukan sebuah item pada sebuah list
terurut. Binary search (pencarian biner) adalah algoritme
pencarian yang paling populer. Binary search hanya berfungsi
pada kumpulan elemen yang runtut. Dengan kata lain, agar
dapat menggunakan binary search, kumpulan elemen tersebut

44 ALGORITMA PEMROGRAMAN
harus diurutkan terlebih dahulu. Saat binary search digunakan
untuk melakukan operasi pada kumpulan yang telah diurutkan,
jumlah iterasi selalu dapat dikurangi tergantung dengan nilai
yang dicari. Algoritma ini relatif efisien sehingga
menjadikannya salah satu teknik yang paling banyak digunakan
untuk menyelesaikan beragam persoalan. Pencarian Biner
(Binary Search) dilakukan untuk memperkecil jumlah operasi
pembandingan yang harus dilakukan antara data yang dicari
dengan data yang ada di dalam tabel, khususnya untuk jumlah
data yang sangat besar ukurannya. Prinsip dasarnya adalah
melakukan proses pembagian ruang pencarian secara berulang-
ulang sampai data ditemukan atau sampai ruang pencarian
tidak dapat dibagi lagi (berarti ada kemungkinan data tidak
ditemukan). Syarat utama untuk pencarian biner adalah data di
dalam tabel harus sudah terurut, misalkan terurut menaik.
(4) Pohon Pencarian Biner : adalah sebuah pengorganisasian secara
hirarki dari beberapa buah node, dimana masing-masing node
tidak memiliki child lebih dari dua. Implementasi binary tree
bisa dilakukan menggunakan struktur data linked list. Masing-
masing node terdiri dari tiga bagian yaitu sebuah data/info dan
dua buah pointer yang dinamakan pointer kiri kanan. Untuk
mengubah binary tree (pohon biner) menjadi binary search tree
(pohon pencarian biner), maka data dari semua node yang ada
di sub-tree kiri di mana seharusnya root node berada harus
bernilai ≤ dari data pada root. Data semua node pada subtree
kanan pada root node seharusnya > dari data pada root.
(5) Pencarian Breadth-first: menelusuri sebuah graf tingkatan demi
tingkatan. Breadth-first search adalah algoritma yang
melakukan pencarian secara melebar yang mengunjungi simpul
secara preorder yaitu mengunjungi suatu simpul kemudian
mengunjungi semua simpul yang bertetangga dengan simpul
tersebut terlebih dahulu. Selanjutnya, simpul yang belum
dikunjungi dan bertetangga dengan simpulsimpul yang tadi
dikunjungi, demikian seterusnya. Jika graf berbentuk pohon
berakar, maka semua simpul pada aras d dikunjungi lebih

ALGORITMA PEMROGRAMAN 45
dahulu sebelum simpul-simpul pada arah d+1. Algoritma ini
memerlukan sebuah antrian q untuk menyimpan simpul yang
telah dikunjungi. Simpulsimpul ini diperlukan sebagai acuan
untuk mengunjungi simpul-simpul yang bertetanggaan
dengannya. Tiap simpul yang telah dikunjungu masuk ke dalam
antrian hanya satu kali. Algoritma ini juga membutuhkan table
Boolean untuk menyimpan simpul yang te lah dikunjungi
sehingga tidak ada simpul yang dikunjungi lebih dari satu kali.
Dalam algoritma BFS, simpul anak yang telah dikunjungi
disimpan dalam suatu antrian. Antrian ini digunakan untuk
mengacu simpul-simpul yang bertetangga dengannya yang
akan dikunjungi kemudian sesuai urutan pengantrian. Untuk
memperjelas cara kerja algoritma BFS beserta antrian yang
digunakannya, berikut langkah-langkah algoritma BFS:
(a) Masukkan simpul ujung (akar) ke dalam antrian.
(b) Ambil simpul dari awal antrian, lalu cek apakah simpul
merupakan solusi.
(c) Jika simpul merupakan solusi, pencarian selesai dan hasil
dikembalikan.
(d) Jika simpul bukan solusi, masukkan seluruh simpul yang
bertetangga dengan simpul tersebut (simpul anak) ke
dalam antrian.
(e) Jika antrian kosong dan setiap simpul sudah dicek,
pencarian selesai dan mengembalikan hasil solusi tidak
ditemukan.
(f) Ulangi pencarian dari langkah kedua.
(6) Pencarian Depth-first: menelusuri sebuah graf cabang demi
cabang. Depth-first adalah salah satu algoritma penelusuran
struktur graf / pohon berdasarkan kedalaman. Simpul
ditelusuri dari root kemudian ke salah satu simpul anaknya (
misalnya prioritas penelusuran berdasarkan anak pertama
[simpul sebelah kiri] ), maka penelusuran dilakukan terus
melalui simpul anak pertama dari simpul anak pertama level
sebelumnya hingga mencapai level terdalam. Setelah sampai di
level terdalam, penelusuran akan kembali ke 1 level sebelumnya

46 ALGORITMA PEMROGRAMAN
untuk menelusuri simpul anak kedua pada pohon biner [simpul
sebelah kanan] lalu kembali ke langkah sebelumnya dengan
menelusuri simpul anak pertama lagi sampai level terdalam dan
seterusnya. Urutan algoritma Depth-first:
a) Masukkan simpul root ke dalam tumpukan dengan push.
b) Ambil dan simpan isi elemen (berupa simpul pohon) dari
tumpukan teratas.
c) Hapus isi stack teratas dengan prosedur pop.
d) Periksa apakah simpul pohon yang disimpan tadi memiliki
anak simpul.
e) Jika ya, push semua anak simpul yang dibangkitkan ke
dalam stack.
f) Jika tumpukan kosong berhenti, tapi jika tidak kembali ke
langkah dua.
(7) Pencarian Best-first: menelusuri sebuah graf dengan urutan
sesuai kepentingan dengan menggunakan antrian prioritas. Best
first adalah sebuah metode yang membangkitkan simpul dari
simpulsebelumnya. Best-first search memilih simpul baru yang
memiliki biaya terkecil diantara semua leaf nodes(simpul-
simpul pada level terdalam) yang pernah dibangkitkan.
Penentuan simpulterbaik dilakukan dengan menggunakan
sebuah fungsi yang disebut fungsi evaluasi f(n). Fungsi evaluasi
best-first search dapat berupa biaya perkiraan dari suatu simpul
menuju ke goal ataugabungan antara biaya sebenarnya dan
biaya perkiraan tersebut.
(8) Pencarian Prediktif: pencarian mirip biner dengan faktor pada
magnitudo dari syarat pencarian terhadap nilai atas dan bawah
dalam pencarian. Kadang-kadang disebut pencarian kamus atau
pencarian interpolasi.

3.4 Kesimpulan
Struktur kontrol digunakan untuk mengatur alur logika
program agar sesuiai dengan kenyataan. Struktur kontrol akan
melibatkan variabel, tipe data, dan operator. Secara mendasar
struktur program memiliki kombinasi struktur kontrol sebagai

ALGORITMA PEMROGRAMAN 47
berikut: (a) Urutan (Sequence), (b) Pemilihan (Selection), (c)
Pengulangan (Iteration). Pernyataan kondisional adalah pernyataan
yang hanya akan dijalankan jika suatu kondisi bernilai benar,
berfungsi untuk melakukan filter/penyaringan hasil berdasarkan
kondisi tertentu. Berikut adalah macam-macam pernyataan
kondisional: Kondisi IF, Kondisi IF..ELSE, Kondisi IF..ELSEIF..ELSE,
dan kondisi IF bersarang. Penulisan Algoritma tidak dipengaruhi
oleh sintaks bahasa apapun. Tidak ada aturan baku dalam menulis
Algoritma. Yang penting mudah dibaca dan dipahami. Untuk itu
terdapat 3 cara yang digunakan dalam menuliskan Algoritma yaitu:
(a) Kalimat deskripstif, (b) Flowchart, (c) Pseudocode.
Jenis-jenis algoritma, dianataranya : algoritma Bellman-Ford
digunakan untuk menghitung jarak terpendek (dari satu sumber)
pada sebuah graf berbobot. Maksudnya dari satu sumber dan
menghitung semua jarak terpendek yang berawal dari satu titik
(node). Algoritme Dijkstra adalah sebuah algoritma yang dipakai
dalam memecahkan permasalahan jarak terpendek (shortest path
problem) untuk sebuah graf berarah (directed graph). Algoritma
Floyd Warshall adalah salah satu varian dari pemrograman dinamis,
metode untuk memecahkan masalah pencarian rute terpendek (sama
seperti Algoritma Dijkstra). Sedangkan algoritma kruskal adalah
sebuah algoritma dalam teori graf yang mencari sebuah minimum
spanning tree (MST) untuk sebuah graf berbobot yang terhubung.
Algoritma Boruvka adalah salah satu algoritma yang digunakan
untuk pencarian jalur. Algoritma ini hanya bertujuan untuk
menghubungkan semua titik, bukan untuk mencari jalur yang
tersambung dari awal sampai akhir. Algoritma Ford-Fulkerson
untuk memaksimumkan aliran (flow) dengan kapasitas dan biaya
yang terbatas pada jaringan. Algoritma Ford-Fulkerson juga
merupakan metode yang dipakai untuk melakukan penambahan
aliran dalam suatu jaringan.
Algoritma pencarian (searching algorithm) adalah algoritma
yang menerima sebuah argument kunci dan dengan langkah-
langkah tertentu akan mencari rekaman dengan kunci tersebut.
Setelah proses pencarian dilaksanakan, akan diperoleh salah satu

48 ALGORITMA PEMROGRAMAN
dari dua kemungkinan, yaitu data yang dicari ditemukan
(successful) atau tidak ditemukan (unsuccessful). Salah satu contoh
adalah sequential search adalah suatu cara pencarian data dalam
array satu dimensi. Data yang dicari akan ditelusuri dalam
semuaelemen-elemen array dari asal sampai akhir dan data tersebut
tidak perlu diurutkan terlebih dahulu.

3.5 Latihan
1. Sebutkan dan jelaskan jenis-jenis algoritma pencarian beserta
contohnya?
2. Buatlah sebuah source code yang akan menyimpan nilai integer
input dari user. Gunakan perulangan untuk itu. Selanjutnya
tampilkan kesepuluh isi array dalam urutan terbalik (mulai
indeks terakhir sampai dengan pertama).
3. Buatlah sebuah source code yang akan menyimpan 5 nilai
integer inputan dari user. User dapat memasukkan sembarang
integer tetapi hanya integer genap yang akan disimpan kedalam
array. Perulangan berhenti ketika array sudah penuh (berisi 5
elemen). Terakhir, tampilkan seluruh isi array ke layar.
4. Tentukan besarnya potongan dari pembelian barang yang
diberikan seorang pembeli, dengan kriteria :
a. Tidak ada potongan jika total pembelian kurang dari Rp.
50.000,-
b. Jika total pembelian lebih dari atau sama dengan Rp. 50.000,-
potongan yang diterima sebesar 20% dari total pembelian.
5. Suatu perusahaan memberikan komisi kepada para selesman
dengan ketentuan sebagai berikut:
a. Bila salesman dapat menjual barang hingga Rp. 20.000 ,- ,
akan diberikan uang jasa sebesar Rp. 10.000 ditambah
dengan uang komisi Rp. 10% dari pendapatan yang
diperoleh hari itu.
b. Bila salesman dapat menjual barang diatas Rp. 20.000 ,- , akan
diberikan uang jasa sebesar Rp. 20.000 ditambah dengan
uang komisi Rp. 15% dari pendapatan yang diperoleh hari
itu.

ALGORITMA PEMROGRAMAN 49
c. Bila salesman dapat menjual barang diatas Rp. 50.000 ,- , akan
diberikan uang jasa sebesar Rp. 30.000 ditambah dengan
uang komisi Rp. 20% dari pendapatan yang diperoleh hari
itu.

50 ALGORITMA PEMROGRAMAN
BAB IV
FLOWCHART
4.1. Pengertian Flowchart
Desain pertama flowchart kembali ke tahun 1945 yang
dirancang oleh John Von Neumann. Tidak seperti algoritma,
Flowchart menggunakan simbol yang berbeda untuk merancang
solusi untuk suatu masalah. Ini adalah alat pemrograman lain yang
umum digunakan. Dengan melihat Flowchartone dapat memahami
operasi dan urutan operasi yang dilakukan dalam suatu sistem.
Flowchart sering dianggap sebagai cetak biru dari desain yang
digunakan untuk memecahkan masalah tertentu. Sehingga dapat di
simpulkan, flowchart adalah cetak biru yang secara grafis mewakili
algoritma dan langkah-langkahnya. Pengertian lain menyatakan
flowchart merupakan representasi diagram / representasi grafis dari
urutan langkah-langkah suatu algoritma untuk menyelesaikan
masalah. Langkah-langkah diagram alur tidak memiliki ukuran dan
bentuk tertentu melainkan dirancang dalam berbagai bentuk dan
ukuran (lihat gambar di bawah).

Gambar 10. Diagram Alur

ALGORITMA PEMROGRAMAN 51
Seperti yang ditunjukkan pada gambar di atas, kotak-kotak
dalam berbagai bentuk dan saling berhubungan dengan panah,
secara logis membuat diagram alur. Diagram alir mewakili langkah-
langkah umum dalam suatu proses.
Beberapa manfaat flowchart diantaranya :
 Sederhanakan Logika. Karena menyediakan representasi
bergambar langkah-langkah. oleh karena itu,
menyederhanakan logika dan langkah selanjutnya.
 Menjadikan Komunikasi Lebih Baik. Karena memiliki logika
dan langkah-langkah bergambar yang mudah dimengerti, ini
adalah cara representasi yang lebih baik dan sederhana.
 Analisis yang Efektif. Setelah diagram alur disusun, menjadi
sangat sederhana untuk menganalisis masalah secara efektif.
 Berguna dalam Coding. Diagram alir juga membantu dalam
proses pengkodean secara efisien, karena memberikan
arahan tentang apa yang harus dilakukan, kapan harus
dilakukan, dan di mana harus dilakukan. Itu membuat
pekerjaan lebih mudah.
 Pengujian yang Benar. Lebih lanjut, flowchart juga
membantu dalam menemukan kesalahan (jika ada) dalam
program.
 Dokumentasi yang Berlaku. Terakhir tetapi tidak sedikit,
diagram alur juga membantu dalam menyiapkan dokumen
yang tepat (setelah kode ditulis).

4.2 Simbol-simbol Flowchart


Flowchart memiliki simbol - simbol tersendiri dari setiap
anotasi- anotasi geometri yang digunakan. Beberapa simbol
flowchart sering digunakan dalam pembuatan sebuah sistem,
sedangkan lainnya jarang digunakan kecuali dalam pembuatan
proses yang komplek dan rumit. Berikut akan dijelaskan mengenai
simbol-simbol flowchart yang dibagi kedalam 3 kategori,
diantaranya:

52 ALGORITMA PEMROGRAMAN
1. Simbol Arus
Biasanya simbol yang termasuk kedalam ketegori ini digunakan
sebagai simbol penghubung. Beberapa simbol yang termasuk ke
dalam kategori ini, yaitu :

Tabel 7. Simbol arus flowchart


Simbol Nama Simbol Fungsi
Flow Direction Digunakan untuk
Symbol / menghubungkan antara simbol
Simbol Arus yang satu dengan simbol yang
lain (connecting line). Simbol
ini juga berfungsi untuk
menunjukkan garis alir dari
proses.
Communicatio Digunakan untuk transmisi
n Link data dari satu lokasi ke lokasi
yang lain
Connector Digunakan untuk
(On-page) menyederhanakan hubungan
antar simbol yang letaknya
berjauhan atau rumit bila
dihubungkan dengan garis
dalam satu halaman
Connector Sama seperti on-page
(Off-page) connector, hanya saya simbol
ini digunakan untuk
menghubungkan simbol dalam
halaman berbeda. label dari
simbol ini dapat menggunakan
huruf atau angka
Movement Digunakan untuk
Symbol menunjukkan suatu proses
pemindahan (movement),
misalnya saja pemindahan
material , pengangkatan
barang dan sebagainya.

ALGORITMA PEMROGRAMAN 53
2. Simbol Proses
Sesuai dengan namanya, simbol proses digunakan untuk
menyatakan simbol yang berkaitan dengan serangkaian proses
yang dilakukan. Berikut beberapa simbol yang termasuk kedalam
bagian proses, yaitu:

Tabel 8. Simbol proses flowchart


Simbol Nama Simbol Fungsi
Terminal Point Digunakan untuk
Symbol / Simbol menunjukkan permulaan
Titik Terminal (start) atau akhir (stop) dari
suatu proses.
Processing Digunakan untuk
Symbol / Simbol menunjukkan kegiatan yang
Proses dilakukan oleh komputer. Pada
bidang industri (proses
produksi barang), simbol ini
menggambarkan kegiatan
inspeksi atau yang biasa
dikenal dengan simbol
inspeksi
Decision Symbol Digunakan untuk memilih
/ Simbol proses atau keputusan
Keputusan berdasarkan kondisi yang ada.
Simbol ini biasanya ditemui
pada flowchart program.
Predefined Digunakan untuk
Process / Simbol menunjukkan pelaksanaan
Proses suatu bagian prosedur (sub-
Terdefinisi proses). Dengan kata lain,
prosedur yang terinformasi di
sini belum detail dan akan
dirinci di tempat lain
Manual Input Digunakan untuk
Symbol menunjukkan input data secara
manual menggunakan online
keyboard.

54 ALGORITMA PEMROGRAMAN
Manual Digunakan untuk
Operation menunjukkan kegiatan/proses
Symbol / Simbol yang tidak dilakukan oleh
Kegiatan Manual komputer.
Offline Storage Digunakan untuk
menunjukkan bahwa data akan
disimpan ke media tertentu

3. Simbol I/O
Simbol yang termasuk kedalam bagian input-output berkaitan
dengan masukan dan keluaran. Berikut beberapa simbol yang
termasuk, yaitu :

Tabel 9. Simbol I/O flowchart


Simbol Nama Simbol Fungsi
Input-Output / Digunakan untuk menunjukkan
Simbol Keluar- proses input-output yang
Masuk terjadi tanpa bergantung dari
jenis peralatannya.
Punched Card Digunakan untuk menyatakan
masukan dan keluaran yang
berasal dari card
Disk Storage Digunakan untuk menyatakan
masukan dan keluaran yang
berasal dari disk
Magnetic Tape Digunakan untuk menyatakan
masukan dan keluaran yang
berasal dari pita magnetis
Document Simbol ini artinya input berasal
Symbol dari dokumen dalam bentuk
kertas, atau output yang perlu
dicetak di atas kertas.
Multiple Sama seperti document symbol
Documents hanya saja dokumen yg
digunakan lebih dari satu dalam
simbol ini

ALGORITMA PEMROGRAMAN 55
Preparation Digunakan untuk
Symbol / Simbol mempersiapkan penyimpanan
Persiapan di dalam storage.
Display Digunakan untuk menyatakan
keluaran melalui layar monitor
Display Symbol Digunakan untuk menyatakan
penggunaan peralatan output,
seperti layar monitor, printer,
plotter dan lain sebagainya
Delay Symbol digunakan untuk menunjukkan
proses delay (menunggu) yang
perlu dilakukan. Seperti
menunggu surat untuk
diarsipkan dll

Bahasa yang digunakan untuk menulis algoritma merupakan bahasa


yang sederhana dan mirip dengan bahasa kehidupan sehari-hari.
Nama variabel digunakan untuk menyimpan nilai. Nilai store dalam
variabel dapat berubah pada langkah-langkah solusi. Selain itu
beberapa simbol khusus digunakan seperti di bawah ini :

Simbol tugas ( ← or =) digunakan untuk memberikan nilai pada


variabel. Contoh untuk menetapkan nilai 5 ke variabel HEIGHT,
pernyataannya adalah HEIGHT ← 5 or HEIGHT = 5. Simbol ‘=’
digunakan di sebagian besar bahasa pemrograman sebagai simbol
penugasan, hal yang sama telah digunakan dalam semua algoritma
dan diagram alur dalam manual.

Pernyataan C = A + B berarti bahwa menambahkan nilai yang


disimpan dalam variabel A dan variabel B kemudian menetapkan /
menyimpan nilai dalam variabel C. Pernyataan R = R + 1 berarti
menambahkan I ke nilai yang disimpan dalam variabel R dan
kemudian menetapkan / menyimpan nilai baru dalam variabel R,
dengan kata lain meningkatkan nilai variabel R sebesar 1.
Dalam bahasa pemrograman terdapat pula beberapa operator yang
digunakan dalam melakukan proses implementasi / coding
diantaranya:

56 ALGORITMA PEMROGRAMAN
Operator matematika:
Tabel 10. Operator matematika dalam algoritma
Operator Arti Contoh
+ Tambahan A+B
- Pengurangan A-B
* Perkalian A*B
/ Divisi A/B
^ Kekuasaan A^3 untuk A3
% Peringatan A%B

Operator Relasi :
Tabel 11. Operator relasi dalam algoritma
Operator Arti Contoh
< Kurang dari A<B
<= Kurang dari sama dengan A <=B
= atau == Sama dengan A=B
# atau != Tidak sama dengan A != B
> Lebih dari A>B
>= Lenih dari sama dengan A >= B

Operator Logika:
Tabel 12. Operator logika dalam algoritma
Operator Contoh Arti
AND A < B AND B < C Hasil adalah benar jika
keduanya A<B dan B<C
adalah benar dan yang
lainnya salah
OR A < B OR B < C Hasil adalah benar jika A<B
atau B<C adalah benar dan
yang lainnya salah
NOT NOT (A > B) Hasil adalah benar jika A>B
adalah salah dan yang
lainnya benar

ALGORITMA PEMROGRAMAN 57
Kontrol Seleksi :
Tabel 13. Kontrol seleksi dalam algoritma
Operator Contoh Arti
IF (Kondisi) Then IF ( X > 10) THEN Jika kondisi X > 10
...... Y = Y+5 Benar jalankan
ENDIF ENDIF pernyataan antara
THEN dan ENDIF
IF (Kondisi) Then IF ( X > 10) THEN Jika kondisi X > 10
...... Y = Y+5 Benar jalankan
ELSE ELSE pernyataan antara
...... Y = Y+8 THEN dan ELSE jika
ENDIF Z = Z+3 tidak jalankan
ENDIF pernyataan antara
ELSE dan ENDIF

Pernyataan Kontrol Perulangan :


Tabel 14. Kontrol perulangan dalam algoritma
Operator Contoh Arti
WHILE (Kondisi) WHILE ( X < 10) Jalankan loop
DO DO selama kondisinya
...... print x BENAR
...... x = x+1
ENDDO ENDDO
DO DO Jalankan loop
...... print x selama kondisinya
...... x = x+1 salah
UNTILL (Kondisi) UNTILL ( X >10)

Flowchart sendiri dari setidaknya 5 jenis. Berikut ini adalah


penjelasan singkat dari masing masing jenis flowchart.
a. Flowchart Sistem (System Flowchart)
Flowchart sistem atau bagan alir sistem merupakan bagan yang
menunjukkan proses pekerjaan di dalam sistem. Bagan ini akan
menggambarkan arus pekerjaan secara mendetail dan

58 ALGORITMA PEMROGRAMAN
menyeluruh. Jadi, pada flowchart sistem dapat melihat urutan-
urutan proses/prosedur di dalam sistem.

Data jawaban
ujian

Koreksi

File
Daftar koreksi Tabel siswa
utama
ujian
ujian

Periksa ujian

File Laporan hasil


siswa ujian

Gambar 11. Flowchart sistem

b. Flowchart Dokumen (Document Flowchart)


Flowchart dokumen atau yang kerap disebut sebagai flowchart
formuliran diagram alir yang menggambarkan proses dari
laporan dan formulir lengkap dengan tembusan-tembusannya.
Simbol-simbol yang digunakan pada flowchart dokumen masih
sama dengan flowchart sistem.

ALGORITMA PEMROGRAMAN 59
KEPALA
ANGGOTA ADMINISTRASI
PERPUSTAKAAN

Formulir Formulir Kartu

Pengisian # P
Formulir

Kartu anggota Kartu


Formulir
Formulir #

Kartu anggota Kartu anggota

Gambar 12. Flowchart dokumen

c. Flowchart Skematis (Schematic Flowchart)


Sekilas flowchart skematis tampak menyerupai flowchart sistem,
karena memang kedua flowchart ini sama-sama digunakan untuk
menggambarkan prosedur/proses dalam sistem. Simbol-simbol
yang digunakan keduanya pun sama. Hanya saja, flowchart
skematis (schematic flowchart) memiliki simbol yang lebih
beragam. Simbol flowchart skematis lebih kompleks, flowchart ini
juga menggunakan gambar-gambar komputer dan peralatan
lainnya. Hal ini bertujuan untuk memudahkan orang-orang yang
tidak familier dengan simbol-simbol dalam flowchart untuk
membaca informasi yang disampaikan. Akan tetapi, pembuatan
flowchart ini memakan waktu lebih lama.

60 ALGORITMA PEMROGRAMAN
Gambar 13. Flowchart skematik

d. Flowchart Program (Program Flowchart)


Flowchart program merupakan bagan alir yang menggambarkan
tahapan dalam proses sebuah program. Flowchart ini merupakan
produk ‘turunan’ dari flowchart sistem. Hal ini berfungsi untuk
memudahkan analis sistem dan programmer dalam memahami
suatu program. Secara umum flowchart program terbagi menjadi
dua, yaitu flowchart logika program (program logic flowchart)
dan flowchart program komputer terperinci (detailed computer
program flowchart).

Mulai

x<=5 Selesai

Cetak
algoritma

Gambar 14. Flowchart program

ALGORITMA PEMROGRAMAN 61
e. Flowchart Proses (Process Flowchart)
Jenis flowchart yang terakhir ialah flowchart proses atau yang
biasa disebut process flowchart. Flowchart ini banyak dipakai di
sektor industri (bagian produksi) dan juga analis sistem. Fungsi
flowchart ini untuk melihat prosedur dalam suatu proses
produksi. Selain itu, flowchart proses juga banyak digunakan
untuk melihat jarak dari langkah satu ke langkah yang lain,
lengkap dengan waktu proses yang dibutuhkan.

Gambar 15. Flowchart proses

4.3 Flowchart untuk sequential, Seleksi dan Loop


Dalam struktur kontrol terdapat meliputi 3 jenis algoritma
dan flowchart.
1. Sequence: Dalam struktur urutan, pernyataan ditempatkan
satu demi satu dan eksekusi berlangsung mulai dari atas ke
bawah.
2. Branching (Selection): Dalam kontrol cabang, ada kondisi
dan menurut suatu kondisi, keputusan antara BENAR atau
SALAH tercapai. Dalam kasus TRUE, salah satu dari dua
cabang dieksplorasi; tetapi dalam kasus kondisi FALSE,
alternatif lain diambil. Secara umum, 'IF-THEN' digunakan
untuk mewakili kontrol cabang.

62 ALGORITMA PEMROGRAMAN
3. Loop (Repetition): Loop atau Pengulangan memungkinkan
pernyataan dieksekusi berulang kali berdasarkan kondisi
loop tertentu misalnya WHILE, FOR loops.

Untuk melihat contoh flowchart pada ketiga jenis diatas, dibawah ini
terdapat beberapa contoh yang diberikan diantaranya:

a. Algorithm & Flowchart to convert temperature from Celsius


to Fahrenheit
Algorithm
Start
Langkah -1 Start
Langkah -2 Masukkan nilai Celsius
dinyatakan C
Input nilai C
Langkah -3 F = (9.0/5.0 x C) + 32
Langkah -4 Tampilan temperatur Fahrenheit
dinyatakan F
F=9.0/5.0*C + 32
Langkah-5 Stop

Cetak F

Stop

b. Algorithm & Flowchart to convert temperature from


Fahrenheit to Celsius

ALGORITMA PEMROGRAMAN 63
Algorithm
Langkah -1 Start Start
Langkah -2 Masukkan nilai Fahrenheit
dinyatakan F
Langkah -3 F = 5.0/9.0 (F- 32) Input nilai F
Langkah -4 Tampilan temperatur Celsius
dinyatakan C
Langkah-5 Stop C= 5.0/9.0 (F- 32)

Cetak C

Stop

c. Algorithm & Flowchart to find Area and Perimeter of Square


Algorithm
Start
Langkah -1 Start
Langkah -2 Masukkan nilai Length of
Square dinyatakan L
Input nilai L
Langkah -3 Area = L x L
Langkah -4 PERIMETER = 4 x L
Langkah -5 Tampilkan AREA, Area = L x L
PERIMETER
Langkah -6 Stop
Perimeter = 4 x L

Cetak Area,
Perimeter

Stop

64 ALGORITMA PEMROGRAMAN
d. Algorithm & Flowchart to find Area and Perimeter of
Rectangle
Algorithm
Langkah -1 Start
Start
Langkah -2 Masukkan nilai Length of
Square dinyatakan L, B Input nilai
(Breadth of Rectangle) L,B
Langkah -3 Area = L x B
Langkah -4 PERIMETER = 2 x (L+B)
Langkah -5 Tampilkan AREA, Area = L x B
PERIMETER
Langkah -6 Stop Perimeter = 2 x
(L+B)

Cetak Area,
Perimeter

Stop

e. Algorithm & Flowchart to find Area & Perimeter of Triangle


Algorithm
Langkah -1 Start
Start
Langkah -2 Masukkan nilai segitika
A(sisi pertama segitiga), B
Input nilai
(sisi kedua segitiga), C (sisi
A,B,C
ketiga segitiga)
Langkah -3 S = (A + B + C)/ 2.0
S=(A+B+C)/2.0
Langkah -4 AREA = SQRT(S x (S-A) x
(S-B) x(S-C))
Langkah -5 PERIMETER = A+B+C AREA = SQRT(S x (S-A) x
(S-B) x(S-C))
Langkah -6 Tampilkan AREA, Perimeter = A+B+C
PERIMETER
Langkah -7 Stop Cetak Area,
Perimeter

Stop

ALGORITMA PEMROGRAMAN 65
f. Algorithm & Flowchart to find the smallest of two numbers
Algorithm Start
Langkah -1 Start
Langkah -2 Masukkan 2
nilai dengan Input nilai NUM1

variabel NUM 1
dan NUM 2
Langkah -3 IF NUM1 < Input nilai NUM2

NUM2 THEN
print
Print Print
smallest is NUM1 Smallest is No
if
NUM1<NUM2
Yes Smallest is
NUM2 NUM1
ELSE
print
smallest is NUM2
Stop
ENDIF
Langkah -4 Stop

g. Algorithm & Flowchart to find the largest of two numbers


Algorithm Start
Langkah -1 Start
Langkah -2 Masukkan 2
nilai dengan Input nilai NUM1

variabel NUM
1 dan NUM 2
Input nilai NUM2
Langkah -3 IF NUM1 >
NUM2 THEN
print
Print Print
smallest is Largest is Yes
if
No Largest is
NUM1>NUM2
NUM1 NUM1 NUM2

ELSE
print
smallest is Stop

NUM2
ENDIF
Langkah -4 Stop

66 ALGORITMA PEMROGRAMAN
h. Algorithm & Flowchart to find the largest of three numbers
Algorithm
Langkah -1 Start
Langkah -2 Masukkan 3 nilai dengan variabel NUM 1, NUM 2, NUM3
Langkah -3 if num1>num2 then go to Langkah-5
Langkah -4 IF num2>num3 THEN
print num2 is largest
ELSE
print num3 is largest
ENDIF
GO TO Langkah-6
Langkah -5 IF num1>num3 THEN
print num1 is largest
ELSE
print num3 is largest
ENDIF
Langkah -6 Stop

Start

Input nilai NUM1,


NUM2, NUM3

Print Print
if if if
Largest is Yes No Yes Yes Largest is
NUM2>NUM3 NUM1>NUM2 NUM1>NUM3
NUM2 NUM1

Yes No No Yes
Print
Largest is
NUM3

Stop

ALGORITMA PEMROGRAMAN 67
i. Algorithm & Flowchart to find the largest of three numbers
(an another way)
Algorithm Start
Langkah -1 Start
Langkah -2 Masukkan 3 nilai
Input nilai A, B,C
dengan variabel
A,B,C
Langkah -3 BIG = A BIG = A

Langkah -4 IF B > BIG THEN


BIG = B is
Yes BIG = B
ENDIF B >BIG

Langkah -5 IF C > BIG THEN No

BIG = C is
Yes BIG = C
ENDIF C >BIG

Langkah -6 Write BIG No

Langkah -7 Stop Write BIG

Stop

j. Algorithm & Flowchart to find Even number between 1 to


50
Algorithm Start
Langkah -1 Start
Langkah -2 I = 1
I=1
Langkah -3 IF (1>50) THEN
GO TO Langkah
-7 is
Yes
I >50
ENDIF
No
Langkah -4 IF ((I%2)=0 ) THEN
Tampilkan I if
Yes Print I
ENDIF (I % 2 .eq.0)

Langkah -5 I = I+1 No
Langkah -6 GO TO Langkah -3
I = I+1
Langkah -7 Stop

Stop

68 ALGORITMA PEMROGRAMAN
k. Algorithm & Flowchart to find sum of series 1+2+3+…..+N
Algorithm Start
Langkah -1 Start
Langkah -2 Masukkan nilai N
Input nilai N
Langkah -3 I = 1, SUM =0
Langkah -4 IF (1>N) THEN
GO TO Langkah I=1
SUM = 0
-8
ENDIF
Langkah -5 SUM = SUM+1 is
Yes
I>N
Langkah -6 I = I+1
Langkah -7 GO TO Langkah -4 No

Langkah -8 Tampilkan Nilai SUM = SUM+1


SUM Print SUM

Langkah -9 Stop
I = I+1

Stop

l. Algorithm & Flowchart to find sum of series 1+3+5+..+N, N


is positive odd Integer
Algorithm Start
Langkah -1 Start
Langkah -2 Masukkan nilai N
Input nilai N
Langkah -3 I = 1, SUM =0
Langkah -4 IF (1>N) THEN
I=1
GO TO Langkah -8 SUM = 0
ENDIF
Langkah -5 SUM = SUM+1
is
Langkah -6 I = I+2 I>N
Yes

Langkah -7 GO TO Langkah -4 No
Langkah -8 Tampilkan Nilai SUM
SUM = SUM+1
Langkah -9 Stop Print SUM

I = I+2

Stop

ALGORITMA PEMROGRAMAN 69
m. Algorithm & Flowchart to find sum of series 1 – X + X2 –X3
….XN
Algorithm Start

Langkah -1 Start
Langkah -2 Masukkan nilai N, X Input nilai N,
X
Langkah -3 I = 1, SUM =1,
I=1
TERM = 1 SUM = 1
TERM =1
Langkah -4 IF (1>N) THEN
GO TO Langkah -9 is
Yes
ENDIF I>N

Langkah -5 TERM = -TERM * X No

Langkah -6 SUM = SUM+1 TERM = -- TERM * X


SUM = SUM+1 Print SUM
Langkah -7 I = I+1
Langkah -8 GO TO Langkah -4 I = I+1
Langkah -9 Tampilkan Nilai
SUM Stop
Langkah -10 Stop

n. Algorithm & Flowchart to generate first n Fibonacci terms


0,1,1,2,3,5…n (n>2)
Algorithm Start
Langkah -1 Start
Langkah -2 Masukkan nilai N Input nilai N
Langkah -3 A = 1, B = 1, COUNT =
2 A=0
B=1
Langkah -4 Write A, B COUNT = 2

Langkah -5 IF (COUNT >N) THEN


Write A, B
GO TO Langkah -12
Langkah -6 NEXT = A+B
Langkah -7 Write NEXT COUNT > N Yes
Langkah -8 A = B
No
Langkah -9 B = NEXT
Langkah -10 COUNT = COUNT +1 NEXT = A+ B

Langkah -11 GO TO Langkah -4


Langkah -12 Stop Write NEXT

A=B
B = NEXT
COUNT = COUNT+1

Stop

70 ALGORITMA PEMROGRAMAN
o. Algorithm & Flowchart to find Roots of Quadratic Equations
AX2+BX+C=0
Algorithm
Langkah-1 Start
Langkah-2 Input A,B,C
Langkah-3 DISC= B2 – 4 A * C
Langkah-4 IF (DISC < 0) THEN
Write Roots are Imaginary
Stop
ENDIF
Langkah-5 IF (DISC==0) THEN
Write Roots are Real and Equal
X1 = - B/(2*A)
Write Roots are X1,X1
Stop
ENDIF
Langkah-6 IF (DISC >0)
Write Roots are Real and Unequal
X1= (- B + SQRT(DISC)) / (2*A)
X2= (- B + SQRT(DISC)) / (2*A)
Write Roots are X1,X2
Stop
ENDIF
Start

Input A, B, C

DISC=B*B - 4.0*A*C

Write Roots <0 ? =0 Roots are


are Imaginary DISC Real & Equal

No

Write Roots are


X1= -B/(2*A)
Real & Unequal

X1=(B+SQRT(DISC))/(2*A) Roots are


X2=(-B+SQRT(DISC))/(2*A) X1, X2

Stop

ALGORITMA PEMROGRAMAN 71
p. Algorithm & Flowchart to find Factorial of number n (
n!=1x2x3x…n)
Algorithm Start
Langkah -1 Start
Langkah -2 Baca Nilai N Read N
Langkah -3 FACT=1
CTRL=1 FACT = 1
Langkah -4 WHILE (CTRL< CTRL = 1

N)
DO if No
Print D
CTRL <= N

FACT=FACT*I Yes

FACT = FACT * Stop


CTRL
CTRL=CTRL+1
ENDIF
CTRL = CTRL +1
D=D+1
DONE
Langkah -5 Tampilkan
FACT
Langkah -6 Stop

q. Algorithm & Flowchart to find all the divisor of a number


Algorithm Start
Langkah -1 Start
Langkah -2 Baca Nilai N
Read N
Langkah -3 D=1
Langkah -4 WHILE (D< N)
DO D=1
IF ( N % D ==0)
THEN
No
PRINT D if
Stop
D<N
ENDIF
D=D+1 Yes

DONE if
Yes Print D
Langkah -5 Stop (N%D == 0)

D=D+1

72 ALGORITMA PEMROGRAMAN
4.4 Kesimpulan
Flowchart adalah cetak biru yang secara grafis mewakili
algoritma dan langkah-langkahnya. Pengertian lain menyatakan
flowchart merupakan representasi diagram / representasi grafis dari
urutan langkah-langkah suatu algoritma untuk menyelesaikan
masalah. Langkah-langkah diagram alur tidak memiliki ukuran dan
bentuk tertentu melainkan dirancang dalam berbagai bentuk dan
ukuran. Flowchart memiliki simbol - simbol tersendiri dari setiap
anotasi- anotasi geometri yang digunakan. Simbol-simbol flowchart
yang dibagi kedalam 3 kategori, diantaranya: flowchart arus,
flowchart proses dan flowchart I/O. Selain 3 kategori simbil,
flowchart sendiri dari setidaknya 5 jenis : (1) flowchart sistem , (2)
flowchart dokumen, (3) flowchart skematik, (4) flowchart program,
dan (5) flowchart proses.

4.5 Latihan
1. Buatlah flowchart untuk menghitung keliling lingkaran !
2. Buatlah flowchart untuk menentukan bilangan ganjil atau
genap !
3. Buatlah flowchart untuk menentuka kelulusan mahasiswa
pada matakuliah !
4. Buatlah flowchart untuk membuat urutan angka secara
ascending !
5. Buatlah flowchart untuk membuat urutan huruf secara
descending !

ALGORITMA PEMROGRAMAN 73
74 ALGORITMA PEMROGRAMAN
BAB V
STRING, LIST DAN TUPLE
4.4 Definisi String, List, dan Tuple
String, list dan tuple adalah semua tipe urutan, disebut
demikian karena berperilaku seperti urutan - kumpulan objek yang
diurutkan. Dalam pengertian lain, String adalah tipe data yang
digunakan dalam pemrograman, seperti unit integer dan floating
point, tetapi digunakan untuk merepresentasikan teks daripada
angka. Urutan karakter disebut string. String dilambangkan dengan
menggunakan tanda kutip ganda. Perbedaan antara 'a' dan "a"
adalah bahwa yang pertama adalah karakter, sedangkan yang
terakhir adalah daftar karakter yang terjadi hanya mengandung satu
elemen. Biasanya, programmer harus menyertakan string dalam
tanda kutip agar data dikenali sebagai string dan bukan angka atau
nama variabel. Jenis squence berbeda secara kualitatif dari tipe
numerik karena mereka adalah tipe data majemuk - yang berarti
mereka terdiri dari bagian yang lebih kecil. Dalam hal string, mereka
terdiri dari string yang lebih kecil, masing-masing berisi satu
karakter. Ada juga string kosong, tidak mengandung karakter sama
sekali.
[10, 20, 30, 40, 50]
["spam", "bungee", "swallow"]
(2, 4, 6, 8)
("two", "four", "six", "eight")
[("cheese", "queso"), ("red", "rojo"),
("school", "escuela")]

Contoh pertama adalah daftar lima bilangan bulat, dan yang


berikutnya adalah daftar tiga string. Yang ketiga adalah tuple yang
berisi empat bilangan bulat, diikuti oleh tuple yang berisi empat
string. Yang terakhir adalah daftar yang berisi tiga tupel, yang
masing-masing berisi sepasang string. Fitur string yang paling
penting adalah bagaimana mereka dicetak:

ALGORITMA PEMROGRAMAN 75
? "a"
a
? "Halo"
Halo
? "Kalimat ini mengandung ꜜ baris baru."
Kalimat ini mengandung
baris baru.

Tidak seperti tipe data lainnya, string dicetak secara literal. Ini
berarti: ( i ) tanda kutip ganda tidak muncul dalam
output; dan ( ii ) khusus karakter, seperti sebagai 'ꜜ', dicetak sebagai
karakter yang sebenarnya yang mereka wakili. Konvensi pencetakan
untuk string ini memberikan kontrol penuh atas tata letak hasil.
Tergantung pada aplikasinya, seorang programmer mungkin ingin
menghasilkan tabel angka, gambar dalam berbagai jenis, atau teks
yang diformat. Diasumsikan ada sebuah fungsi primitif baru, yang
disebut show, tampilan untuk string yang dijelaskan di atas memberi
semua kontrol yang dibutuhkan. Fungsi show mengambil nilai
sebagai argumen dan nilainya didefinisikan dengan baik,
mengubahnya menjadi representasi yang dapat
dicetak. Tipe show akan dicontohkan sebagai berikut:
show :: a → string
Di sini, string adalah tipe yang terdiri dari daftar karakter. Sebagai
contoh, nilai (show n) untuk angka n adalah daftar karakter yang
membentuk representasi desimal dari n, jadi sebagai contoh:
show 42 = "42"
Demikian pula, (show b) untuk boolean b mengembalikan string yang
dicetak sebagai representasi b, jadi:
show True = "True"
Fungsi show juga dapat diterapkan untuk karakter dan
string. Misalnya :
show 'a' = " 'a' "
show "halo" = ""Halo""
Jika hasil implementasi bukan string, maka evaluator secara otomatis
menerapkan fungsi show. Jika ini adalah string, maka dicetak secara
literal. Karenanya:

76 ALGORITMA PEMROGRAMAN
? "aku bagaimana"
aku bagaimana
? show "saya bagaimana"
"aku bagaimana"
? show ("me", "how") = "(me,
how)"
Salah
? show ("saya",
"bagaimana")
("saya", "bagaimana")

Contoh yang lebih menarik adalah apabila diterapkan operasi ╫


yang menggabungkan daftar bersama:

? "The year is " ╫ show (3 X 667)


The year is 2001
? show 100 ╫ "ꜜ" ╫ show 101 ╫ "ꜜ" ╫ show
102
100
101
102

Saat mencetak string, lebih baik memiliki kontrol pada baris


nilai ekspresi muncul. Apabila menginginkan nilai yang muncul
baik di kiri (‘left-justified'), atau di kanan (‘right-justified'), atau di
tengah ('centre-justified'). Didefinisikan fungsi:

ljustified, cjustified, rjustified :: num → string → string

sehingga (ljustify 𝑛 𝑥) adalah string 𝑥 menjadi spasi tambahan di


sebelah kanan untuk membuat string dengan total lebar 𝑛, (cjustify
n 𝑛 𝑥 ) adalah string yang berpusat 𝑥 spasi di kedua sisi,
dan (rjustify 𝑛 𝑥) adalah x dengan spasi di sebelah kiri. Dalam rangka
untuk menentukan fungsi-fungsi ini, akan menganggap adanya
sebuah fungsi width yang mengembalikan 'width' string ketika
dicetak. Ini adalah ukuran ruang horizontal yang ditempati oleh
string. Untuk string karakter pada lebar yang telah diketahui, fungsi

ALGORITMA PEMROGRAMAN 77
width hanya mengembalikan nomor karakter dalam string. Kita juga
membutuhkan fungsi space agar (space 𝑛) mengembalikan string
karakter spasi yang lebarnya adalah 𝑛. Sekali lagi, untuk lebar yang
telah ditetapkan ini hanya berupa string yang berisi 𝑛 spasi.
Selanjutkan adalah bagaimana mendefinisikan fungsi tata letak
sebagai berikut:
ljustify 𝑛 𝑥 = 𝑥 ╫ space (𝑛 - 𝑚), if 𝑛 ≥ 𝑚
where 𝑚 = width 𝑥
rjustify 𝑛 𝑥 = space (𝑛 - 𝑚) ╫ x, if 𝑛 ≥ 𝑚
where 𝑚 = width 𝑥
cjustify 𝑛 𝑥 = space 𝑙𝑚 ╫ 𝑥 ╫ space 𝑟𝑚, if 𝑛 ≥ 𝑚
where 𝑚 = width 𝑥
𝑙𝑚 = (𝑛 - 𝑚) div 2
rm = (𝑛 - 𝑚) – 𝑙𝑚

Ketiga fungsi parsial, mengembalikan 0,1 jika string terlalu panjang


untuk masuk lebar yang diberikan.
List adalah kumpulan nilai yang diurutkan secara linier;
seseorang dapat berbicara tentang elemen pertama dari list, elemen
kedua, dan seterusnya. List juga disebut urutan, istilah yang lebih
sering ditemukan di cabang matematika lain, tetapi tidak ada
perbedaan antara konsep dan akan menggunakan dua kata secara
bergantian. Seperti urutan dalam matematika, daftar dapat berisi
elemen dalam jumlah tak terbatas. Namun, disini akan lebih
berkonsentrasi secara eksklusif pada daftar terbatas. Daftar yang
tidak terbatas akan dibahas dalam bab selanjutnya.
Properti penting dari daftar adalah bahwa semua elemen
dari daftar yang diberikan harus memiliki tipe yang sama: seseorang
dapat memiliki daftar angka, daftar karakter, bahkan daftar daftar
(nilai semua tipe yang sama), tetapi satu tidak dapat mencampur
nilai dari berbagai jenis dalam daftar yang sama.
List terbatas dilambangkan dengan menggunakan tanda
kurung dan koma. Misalnya, [1, 2, 3] adalah list tiga angka dan
["hallo", "selamat tinggal"] adalah list dua string. list kosong ditulis
sebagai [] dan list tunggal, yang hanya mengandung satu elemen a,

78 ALGORITMA PEMROGRAMAN
ditulis sebagai [a]. Jika semua elemen daftar memiliki tipe a, maka
daftar itu sendiri akan diberi tipe [a] (dibaca sebagai 'list a').
Tuples merupakan salah satu cara menggabungkan jenis
untuk membentuk yang baru adalah dengan memasangkan
mereka. sebagai contoh, tipe (num, char) terdiri dari semua pasangan
nilai yang pertama komponen adalah angka dan yang kedua adalah
karakter. Khususnya, (3, 'a') dan (17.3, ' + ') adalah keduanya
memiliki tipe nilai (num, char). Jenis (α, β) sebagai operasi produk
Cartesian dari teori himpunan, di mana notasi α x β adalah lebih
sering terlihat. Evaluasi ekspresi yang melibatkan pasangan nilai,
sebagai contoh:
? (4 + 2, 'a')
(6, 'a')
? (3, 4) = (4, 3)
False
? (3, 6) < (4, 2)
True
? (3 , ( "a" , False)) < (3 , ( "a" , True))
True

Urutan pada pasangan nilai diberikan oleh aturan


bahwa ( x, y) <( u, v ) jika x < u, atau jika x = u dan y < v. Ini disebut
leksikografis atau 'dictionary' pemesanan. Jadi, karena False <True,
sebelumnya kita mempunyai ( "a" , False) < ( "a" , True) , jadi (3, ( "a"
, False)) < (3 , ( "a" , True)) . Serta sebagai pembentuk pasangan nilai,
dapat juga membentuk tiga kali lipat, empat kali lipat dan
seterusnya. ( Tidak ada konsep one-tuple, jadi gunakan tanda kurung
pengelompokan tidak bertentangan dengan penggunaannya dalam
formasi tuple.) Misalnya, (num, char, bool), adalah jenis nilai tiga kali
lipat, masing-masing nilai terdiri dari angka, karakter dan boolean
dalam urutan itu.
Masing-masing jenis (α, (β, γ)), ((α , β), γ) dan (α, β,
γ) adalah berbeda: pertama adalah pasangan yang komponen
keduanya juga merupakan pasangan, yang kedua adalah pasangan
yang komponen pertama adalah pasangan, dan yang ketiga adalah
tripel. Pasangan, tiga kali lipat, empat kali lipat, dan seterusnya,

ALGORITMA PEMROGRAMAN 79
semua milik berbagai jenis. Salah satu keunggulan tuple adalah
bahwa jika, sebagai contoh seseorang secara tidak sengaja menulis
pasangan tiga di sebuah ekspresi, maka disiplin mengetik kuat dapat
menentukan kesalahan. Berikut adalah beberapa fungsi sederhana
pada tuple. Pertama, mendefinisikan seleksi fungsi:
fst ::(α, β)→ α
fst ( x, y) = x
snd ::(α, β)→ β
snd ( x, y) = y
Baik fst dan snd adalah fungsi polimorfik; mereka memilih yang
pertama dan kedua komponen pasangan masing-masing. Tidak ada
fungsi yang bekerja pada yang lain tipe tuple. Jika ingin memiliki
fungsi pemilihan untuk jenis tuple lainnya, maka mereka harus
didefinisikan secara terpisah untuk setiap kasus. Sebagai contoh, kita
bisa menetapkan:
fst3 (x, y, z) = x
snd3 (x, y, z) = y
thd3 (x, y, z) = z

5.2 Indeks Data


Pengindeksan adalah proses mengaitkan kunci dengan
lokasi catatan data yang sesuai. Pengurutan eksternal biasanya
menggunakan konsep pengurutan kunci, di mana file indeks dibuat
yang catatannya terdiri dari pasangan kunci / penunjuk. Di sini,
setiap tombol dikaitkan dengan pointer ke catatan lengkap dalam file
database utama. File indeks dapat diurutkan atau diorganisir
menggunakan struktur pohon, sehingga memaksakan urutan logis
pada catatan tanpa secara fisik menata ulang mereka. Satu database
mungkin memiliki beberapa file indeks terkait, masing-masing
mendukung akses yang efisien melalui bidang kunci yang berbeda.
Setiap catatan dari database biasanya memiliki
pengidentifikasi unik, yang disebut kunci utama. Sebagai contoh,
kunci utama untuk satu set catatan personil mungkin nomor Jaminan
Sosial atau nomor ID untuk individu. Sayangnya, nomor ID
umumnya merupakan nilai yang tidak nyaman untuk melakukan
pencarian karena pencari tidak mungkin mengetahuinya.

80 ALGORITMA PEMROGRAMAN
Sebaliknya, pencari mungkin tahu nama karyawan yang diinginkan.
Atau, pencari mungkin tertarik untuk menemukan semua karyawan
yang gajinya dalam kisaran tertentu. Jika ini adalah permintaan
pencarian khas ke database, maka bidang nama dan gaji layak indeks
yang terpisah. Namun, nilai-nilai kunci dalam indeks nama dan gaji
tidak cenderung unik.
Bidang kunci seperti gaji, di mana nilai kunci tertentu dapat
diduplikasi dalam banyak catatan, disebut kunci sekunder. Sebagian
besar pencarian dilakukan menggunakan kunci sekunder. Indeks
kunci sekunder (atau lebih sederhana, indeks sekunder) akan
mengaitkan nilai kunci sekunder dengan kunci primer dari setiap
catatan yang memiliki nilai kunci sekunder. Pada titik ini, basis data
lengkap mungkin dicari secara langsung untuk catatan dengan kunci
utama itu, atau mungkin ada indeks kunci primer (atau indeks
primer) yang menghubungkan setiap nilai kunci primer dengan
pointer ke catatan aktual pada disk. Dalam kasus terakhir, hanya
indeks primer yang menyediakan lokasi catatan aktual pada disk,
sedangkan indeks sekunder merujuk ke indeks primer.
Pengindeksan adalah teknik penting untuk mengatur basis
data besar, dan banyak metode pengindeksan telah dikembangkan.
List sederhana yang diurutkan berdasarkan nilai kunci juga dapat
berfungsi sebagai indeks untuk file rekaman. Mengindeks file disk
dengan daftar yang diurutkan dibahas di bagian berikut. Sayangnya,
daftar yang disortir tidak berkinerja baik untuk menyisipkan dan
menghapus operasi.
Pendekatan ketiga untuk pengindeksan adalah tree index. Tree
biasanya digunakan untuk mengatur basis data besar yang harus
mendukung penyisipan rekaman, penghapusan, dan pencarian
rentang kunci. ISAM adalah langkah tentatif menuju penyelesaian
masalah penyimpanan database besar yang harus mendukung
penyisipan dan penghapusan catatan. Kekurangannya membantu
menggambarkan nilai teknik tree index. Modul TreeIndexing
memperkenalkan masalah-masalah dasar terkait pengindeksan
pohon. Modul 2-3 pohon memperkenalkan 2-3 tree, struktur tree
seimbang yang merupakan bentuk sederhana dari B-tree. B-tree

ALGORITMA PEMROGRAMAN 81
adalah metode pengindeksan yang paling banyak digunakan untuk
basis data berbasis disk yang besar, dan untuk menerapkan sistem
file.

5.3 Sifat Mutable dan Immutable


Mutable merupakan objek dapat diubah setelah dibuat,
sedangkan imutable objek tidak bisa diubah setelah objek tersebut
dibuat. Di Java, semuanya (kecuali untuk string) adalah mutable
secara default:

Tidak ada cara untuk membuat imutable objek. Bahkan jika suatu
objek dinyatakan final, bidangnya masih bisa diubah:

82 ALGORITMA PEMROGRAMAN
Yang mengatakan, jika ingin mendefinisikan kelas sendiri, dapat
membuat imutable dengan membuat semua bidang final dan
private.

String dapat mutable atau imutable tergantung pada bahasanya.


String di Java adalah imutable. Setiap kali ingin mengubah string
(mis.: Menempel pada karakter tambahan, membuatnya lebih kecil,
bertukar dua karakter), Programmer sebenarnya membuat salinan
baru dan terpisah:

Tetapi dalam beberapa bahasa lain, seperti C ++, string dapat


mutable, dan dapat memodifikasinya secara langsung:

Jika ingin membuat string didalam java menjadi mutable dapat


menggunakan StringBuilder object:

ALGORITMA PEMROGRAMAN 83
Atau dapat mengonversi string ke array karakter, yang akan bisa
diubah. Objek yang dapat diubah dapat dikatakan merupakan objek
yang bagus karena programmer dapat membuat perubahan di
tempat, tanpa mengalokasikan objek baru. Tapi hati-hati — setiap
kali dilakukan perubahan di tempat pada suatu objek, semua
referensi ke objek itu sekarang akan mencerminkan perubahan itu.

5.4 Kesimpulan
String adalah tipe data yang digunakan dalam
pemrograman, seperti unit integer dan floating point, tetapi
digunakan untuk merepresentasikan teks daripada angka. Urutan
karakter disebut string . List adalah kumpulan nilai yang diurutkan
secara linier; seseorang dapat berbicara tentang elemen pertama dari
list, elemen kedua, dan seterusnya. List juga disebut urutan, istilah
yang lebih sering ditemukan di cabang matematika lain, tetapi tidak
ada perbedaan antara konsep dan akan menggunakan dua kata
secara bergantian. Tuples merupakan salah satu cara
menggabungkan jenis untuk membentuk yang baru adalah dengan
memasangkan mereka. sebagai contoh, tipe (num, char) terdiri dari
semua pasangan nilai yang pertama komponen adalah angka dan
yang kedua adalah karakter.
Pengindeksan adalah proses mengaitkan kunci dengan
lokasi catatan data yang sesuai. Pengurutan eksternal biasanya
menggunakan konsep pengurutan kunci, di mana file indeks dibuat
yang catatannya terdiri dari pasangan kunci / penunjuk.
Pengindeksan adalah teknik penting untuk mengatur basis data
besar, dan banyak metode pengindeksan telah dikembangkan. List
sederhana yang diurutkan berdasarkan nilai kunci juga dapat

84 ALGORITMA PEMROGRAMAN
berfungsi sebagai indeks untuk file rekaman. Selain itu terdapat pula
sifat objek yakni mutable dan imutable. Mutable merupakan objek
dapat diubah setelah dibuat, sedangkan imutable objek tidak bisa
diubah.

5.5 Latihan
1. Apakah perbedaan dari String, List dan Tuple. Dan berikan
contoh penerapannya !
2. Jelaskan bagaimana cara melakukan pengindeksan data !
3. Buatlah sebuah objek mutable pada sebuah bahasa
pemrograman !
4. Buatlah sebuah objek imutable pada sebuah bahasa
pemrograman kemudian lakukan perubahan pada objek
tersebut menjadi objek mutable !

ALGORITMA PEMROGRAMAN 85
86 ALGORITMA PEMROGRAMAN
BAB VI
FUNGSI DAN DICTIONARIES
6.1 Konsep Fungsi
Fungsi / Function adalah cuplikan program atau
pengelompokan instruksi berdasarkan kegunaannya atau kumpulan
statement yang dikelompokan yang mempunyai maksud dan tujuan
tertentu. Fungsi adalah bagian dari program yang dapat digunakan
ulang. Hal ini bisa dicapai dengan memberi nama pada blok
statemen, kemudian nama ini dapat dipanggil di manapun dalam
program. Kita telah menggunakan beberapa fungsi builtin
seperti range.

Tujuan pembuatan fungsi adalah :


- Memudahkan dalam pembuatan program.
- Menghemat ukuran program.

Keuntungan memakai fungsi :


- Menguraikan tugas pemrograman rumit menjadi langkah-
langkah yang lebih sederhana atau kecil.
- Mengurangi duplikasi kode (kode yang sama ditulis berulang-
ulang) dalam program.
- Dapat menggunakan kode yang ditulis dalam berbagai
program yang berbeda.
- Memecah program besar menjadi kecil sehingga dapat
dikerjakan oleh programmer-programmer atau dipecah
menjadi beberapa tahap sehingga mempermudah pengerjaan
dalam sebuah projek
- Menyembunyikan informasi dari user sehingga mencegah
adanya perbuatan iseng seperti memodifikasi atau mengubah
program yang kita buat
- Meningkatkan kemampuan pelacakan kesalahan, jika terjadi
suatu kesalahan kita tinggal mencari fungsi yang

ALGORITMA PEMROGRAMAN 87
bersangkutan saja dan tak perlu mencari kesalahan tersebut di
seluruh program.

Fungsi dalam Python didefinisikan menggunakan kata kunci def.


Setelah def ada nama pengenal fungsi diikut dengan parameter yang
diapit oleh tanda kurung dan diakhir dingan tanda titik dua :. Baris
berikutnya berupa blok fungsi yang akan dijalankan jika fungsi
dipanggil.

Fungsi dapat membaca parameter, parameter adalah nilai


yang disediakan kepada fungsi, dimana nilai ini akan
menentukan output yang akan dihasilkan fungsi. Parameter dikirim
dalam tanda kurung saat pemanggilan fungsi. Nilai parameter saat
pemanggilan fungsi dinamakan argument.
def halo(nama):
print 'Halo %s!' % nama

def cetak_maksimal(a, b):


if a > b:
print '%s merupakan nilai maksimal' % a
elif a == b:
print '%s sama dengan %s' % (a, b)
else:
print '%s merupakan nilai maksimal' % b

halo('Dunia') # memanggil fungsi halo dengan


argumen 'Dunia'
halo('Indonesia') # memanggil fungsi halo
dengan argumen 'Indonesia'

88 ALGORITMA PEMROGRAMAN
cetak_maksimal(10, 100)

x = 9
y = 3

cetak_maksimal(x, y)
Jika ada variabel yang dideklarasikan didalam blok fungsi,
variabel ini tidak ada kaitannya dengan variabel lain dengan nama
yang sama diluar fungsi, dengan kata lain nama varabel hanya lokal
(variabel lokal) untuk fungsi. Hal ini disebut juga scope variabel.
x = 50

def fungsi(x):
print 'x = ', x
x = 2
print 'merubah lokal variabel x = ', x

fungsi(100)

print 'nilai x masih %s' % x


Dalam penggunaan statemen global, blok fungsi dapat
mengakses variabel diluar fungsi, akses ini terbatas hanya akses
baca. Jika blok fungsi ingin menulis variabel diluar fungsi
programmer dapat menggunaan statemen global.
x = 50

def fungsi():
print 'x = ', x

def fungsi2():
x = 100 # menulis ke lokal variabel
print 'x = ', x

def fungsi3():
global x
x = 100
print 'x = ', x

fungsi()
print 'nilai x = ', x

ALGORITMA PEMROGRAMAN 89
fungsi2()
print 'nilai x = ', x

fungsi3()
print 'nilai x = ', x
Pada nilai argumen default, Untuk beberapa fungsi yang
ingin menyediakan paramater opsional dan menggunakan nilai
default jika pengguna tidak menyediakan argumen saat fungsi
dipanggil. Programmer bisa menspesifikasikan nilai default dengan
tanda sama dengan = setelah nama parameter.
def katakan(pesan, jumlah=1):
print pesan * jumlah

katakan('Halo ')
katakan('Halo ', 3)
Jika programmer membuat fungsi dengan banyak parameter
dan programmer hanya ingin menspesifikasikan sebagian,
programmer dapat menggunakan keyword argumen. Kita
menggunakan nama (keyword) melainkan posisi (argumen posisi,
normal pemanggilan).
def fungsi(a, b=5, c=10):
print 'a = ', a
print 'b = ', b
print 'c = ', c

fungsi(3, 7)
fungsi(25, c=24)
fungsi(c=50, a=100)

6.2 Konsep Dictionary


Pada bab sebelumnya, kita sudah mengenal stuktur data
list yang mampu menyimpan berbagaimacam hal. List biasanya
digunakan untuk menyimpan koleksi data. Dimana list disini
memiliki kekurangan yakni ia tidak bisa menggunakan kata kunci
untuk mengakses itemnya. Hanya bisa menggunakan nomer indeks
saja. Sehingga hal tersebut ditutupi dengan dictionary.
Dictionary adalah stuktur data yang bentuknya seperti kamus. Ada

90 ALGORITMA PEMROGRAMAN
kata kunci kemudian ada nilainnya. Kata kunci harus unik,
sedangkan nilai boleh diisi denga apa saja. Contoh dalam phyton :
aku = {

"nama": "Petani Kode",

"url:" https://www.petanikode.com

Pada contoh di atas kita membuat


sebuah Dictionary bernama aku dengan isi data nama dan
URL. nama dan url adalah kunci (key) yang akan kita gunakan
untuk mengakses nilai di dalamnya. Inilah perbedaanya
dibandingkan list dan tuple. Dictionary memiliki kunci berupa
teks—bisa juga angka—sedangkan list dan tuple menggunakan
indeks berupa angka saja untuk mengakses nilainya. Dalam bahasa
pemrograman lain (seperti PHP), Dictionary juga dikenal dengan
sebutan asosiatif array.

Hal yang wajib ada di dalam pembuatan Dictionary adalah:


 nama dictionary,
 key,
 value,
 buka dan tutupnya menggunakan kurung kurawal.

Antara key dan value dipisah dengan titik dua (:) dan apabila
terdapat lebih dari satu item, maka dipisah dengan tanda koma (,).
Contoh satu item:

nama_dict = {
"key": "value"
}

ALGORITMA PEMROGRAMAN 91
Contoh tiga item:

nama_dict = {
"key1": "value",
"key2": "value",
"key3": "value"
}

Isi dari Dictionary dapat berupa:


 String
 Integer
 Objek
 List
 Tuple
 Dictionary
 dsb.
Contoh:

pak_tani = {
"nama": "Petani Kode",
"umur": 22,
"hobi": ["coding", "membaca", "cocok tanam"],
"menikah": False,
"sosmed": {
"facebook": "petanikode",
"twitter": "@petanikode"
}
}

Mari kita lihat isi dari Dictionary di atas:


 nama berisi string "Petani Kode"
 umur berisi integer 22
 hobi berisi list dari string
 menikah berisi boolean False
 sosmed berisi Dictionary
 Selain menggunakan cara di atas, kita juga bisa
membaut Dictionary dari constructor dict() dengan
parameter key dan value.

92 ALGORITMA PEMROGRAMAN
Contoh:

warna_buah = dict(jeruk="orange", apel="merah", pisang="kuning")

Maka akan menghasilkan dictionary seperti ini:

{'jeruk': 'orange', 'pisang': 'kuning', 'apel': 'merah'}

Cara mengaksesnya sama seperti list. Namun kunci yang


digunakan bukan angka, melainkan keyword yang sudah kita
tentukan di dalam Dictionary-nya. Contoh:

# Membuat Dictionary
pak_tani = {
"nama": "Petani Kode",
"umur": 22,
"hobi": ["coding", "membaca", "cocok tanam"],
"menikah": False,
"sosmed": {
"facebook": "petanikode",
"twitter": "@petanikode"
}
}

# Mengakses isi dictionary


print("Nama saya adalah %s" % pak_tani["nama"])
print("Twitter: %s" % pak_tani["sosmed"]["twitter"])

Maka akan menghasilkan:

Nama saya adalah Petani Kode


Twitter: @petanikode

Selain dengan cara di atas, kita juga bisa mengambil


nilai Dictionary dengan method get().
Contoh:

print(pak_tani.get("nama"))

ALGORITMA PEMROGRAMAN 93
Hasilnya:

Petani Kode

Untuk mencetak semua isi Dictionary, kita bisa menggunakan


perulangan seperti ini:

# Membuat dictionary
web = {
"name": "petanikode",
"url": "https://www.petanikode.com",
"rank": "5"
}

# Mencetak isi dictionary dengan perulangan


for key in web:
print(web[key])

Hasilnya:

petanikode
5
https://www.petanikode.com

Kita juga bisa melakukannya seperti ini:

web = {
"name": "petanikode",
"url": "https://www.petanikode.com",
"rank": "5"
}

for key, val in web.items():


print("%s : %s" % (key, val))

Hasilnya:

name : petanikode
rank : 5
url : https://www.petanikode.com

94 ALGORITMA PEMROGRAMAN
Dictionary bersifat mutable, artinya nilainya dapat kita ubah-ubah.
Untuk mengubah nilai Dictionary, kita bisa lakukan seperti ini:

nama_dic["kunci"] = "Nilai Baru"

Contoh:

# membuat dictioanary
skill = {
"utama": "Python",
"lainnya": ["PHP","Java", "HTML"]
}

# Mencetak isi skill utama


print(skill["utama"])

# mengubah isi skill utama


skill["utama"] = "Rust"

# Mencetak isi skill utama


print(skill["utama"])

Maka akan menghasilkan:

Python
Rust

Untuk menghapus nilai Dictionary, kita bisa menggunakan


perintah del dan method pop(). Method pop() adalah method yang
berfungsi untuk mengeluarkan item dari dictionary sedangak
fungsi del adalah fungsi untuk menghapus suatu variabel dari
memori.
Contoh menghapus dengan del:

>>> del skill["utama"]


>>> skill
{'lainnya': ['PHP', 'Java', 'HTML']}

Contoh menghapus dengan method pop():

>>> skill.pop("utama")
'Rust'
>>> skill

ALGORITMA PEMROGRAMAN 95
{'lainnya': ['PHP', 'Java', 'HTML']}

atau bila ingin menghapus semuanya sekaligus, kita bisa


menggunakan method clear().
Contoh:

skill.clear()

Kita bisa menggunakan method update() untuk menambahkan isi


ke Dictionary. Parameternya berupa Dictionary. Selain berfungsi
untuk menambahkan, method ini juga berfungsi untuk mengubah
nilai dictionary apabila kunci yang dimasukkan sudah ada di
dalamnya.
Contoh:

# membuat dictionary user


user = {
"name": "petanikode"
}

# menambahkan password
user.update({"password": "akucintakamu123"})

print(user)

# update name
user.update({"name": "peternaklinux"})

print(user)

Hasilnya:

{'name': 'petanikode', 'password': 'akucintakamu123'}


{'name': 'peternaklinux','password':'akucintakamu123'}

Untuk mengambil jumlah data atau panjang Dictionary, bisa


menggunakan fungsi len().

96 ALGORITMA PEMROGRAMAN
Contoh:

# membuat dictonary
books = {
"python": "Menguasai Python dalam 2028 jam",
"java": "Tutorial Belajar untuk Pemula",
"php": "Membuat aplikasi web dengan PHP"
}

# mencetak jumlah data yang ada di dalam dictionary


print("total buku: %d" % len(books))

Hasilnya:

total buku: 3

6.3 Fungsi Iteratif


Iteratif (dinyatakan IT-ter-a-teev) adalah kata sifat yang
berarti berulang-ulang.
1) Dalam pemrograman komputer, iteratif digunakan untuk
menggambarkan situasi di mana urutan instruksi dapat
dieksekusi beberapa kali. Satu melewati urutan disebut iterasi.
Jika urutan instruksi dieksekusi berulang kali, itu disebut loop,
dan kita katakan bahwa komputer beralih melalui loop.
2) Dalam pengembangan perangkat lunak, iteratif digunakan
untuk menggambarkan perencanaan heuristik dan proses
pengembangan di mana aplikasi dikembangkan dalam bagian
kecil yang disebut iterasi. Setiap iterasi ditinjau dan dikritik oleh
tim perangkat lunak dan pengguna akhir potensial; wawasan
yang diperoleh dari kritik iterasi digunakan untuk menentukan
langkah selanjutnya dalam pengembangan. Model data atau
diagram urutan, yang sering digunakan untuk memetakan
iterasi, melacak apa yang telah dicoba, disetujui, atau dibuang,
dan akhirnya berfungsi sebagai semacam cetak biru untuk
produk akhir.

Tantangan dalam pengembangan berulang adalah untuk


memastikan semua iterasi kompatibel. Karena setiap iterasi baru

ALGORITMA PEMROGRAMAN 97
disetujui, pengembang dapat menggunakan teknik yang dikenal
sebagai teknik mundur, yang merupakan tinjauan sistematis dan
memeriksa prosedur untuk memastikan setiap iterasi baru
kompatibel dengan yang sebelumnya. Keuntungan menggunakan
pengembangan berulang adalah bahwa pengguna akhir terlibat
dalam proses pengembangan. Alih-alih menunggu sampai aplikasi
adalah produk akhir, ketika tidak mungkin untuk membuat
perubahan dengan mudah, masalah diidentifikasi dan diselesaikan
pada setiap tahap pengembangan. Pengembangan berulang kadang-
kadang disebut pengembangan melingkar atau evolusi. Misalnya,
algoritma yang sangat sederhana untuk makan sereal sarapan
mungkin terdiri dari langkah-langkah ini:
1. masukkan sereal ke dalam mangkuk
2. tambahkan susu ke sereal
3. sendok sereal dan susu ke dalam mulut
4. ulangi langkah 3 sampai semua sereal dan susu dimakan
5. bilas mangkuk dan sendok
Algoritma akan mengulangi langkah 3 dan 4 sampai semua
sereal dan susu telah dimakan. Pentingnya sebuah iterasi yakni
iterasi memungkinkan kita untuk menyederhanakan algoritma kita
dengan menyatakan bahwa kita akan mengulangi langkah-langkah
tertentu sampai diberitahu sebaliknya. Ini membuat algoritma
perancangan lebih cepat dan sederhana karena tidak harus
menyertakan banyak langkah yang tidak perlu. Setelah suatu
algoritma telah dirancang dan disempurnakan, kemudian harus
diterjemahkan - atau diprogram - ke dalam kode yang dapat dibaca
oleh komputer. Dalam membuat program untuk
mengimplementasikan algoritma. Algoritma terdiri dari langkah-
langkah. Program terdiri dari pernyataan. Pernyataan adalah
instruksi tunggal - dengan kata lain, satu langkah. Iterasi
diimplementasikan dalam pemrograman menggunakan pernyataan
FOR dan WHILE. Dalam pemrograman, iterasi sering disebut
sebagai 'looping', karena ketika sebuah program mengulanginya,
'loop' ke langkah sebelumnya. Ada dua cara di mana program dapat
mengulangi atau 'loop':

98 ALGORITMA PEMROGRAMAN
1. A count-controlled loop
Terkadang diperlukan langkah-langkah untuk mengulang
beberapa kali. Pertimbangkan algoritma sederhana ini untuk
menambahkan hingga lima angka yang dimasukkan:
1. atur total ke 0
2. ulangi bagian ini lima kali
o masukkan nomor
o tambahkan jumlahnya ke total
3. kembali ke langkah 2
4. katakan apa totalnya
Algoritma ini akan memungkinkan lima angka untuk dimasukkan
dan akan bekerja total. Karena sudah diketahui sebelumnya berapa
kali algoritma perlu loop, count-controlled loop digunakan. Count-
controlled loop digunakan ketika jumlah iterasi yang terjadi sudah
diketahui. Count-controlled loop disebut demikian karena
menggunakan penghitung untuk melacak berapa kali algoritma
telah diulang. Pseudocode untuk algoritma ini mungkin terlihat
seperti ini:

total to 0 count to 1 FOR as long as count is in the


range 1 to 5 INPUT user inputs a number STORE the user's
input in the number variable total = total + number Add
1 to count OUTPUT "The total is " + total

Langkah-langkah yang merupakan bagian dari loop diindentasi.


Identasi memberitahu komputer langkah mana yang harus diulang.
Programnya bekerja seperti ini:
 Program menggunakan variabel 'count' untuk melacak
berapa kali iterasi telah terjadi.
 Pernyataan ‘for’ digunakan untuk menentukan di mana loop
dimulai.
 Pernyataan 'range' menentukan berapa kali loop akan terjadi.
 Variabel ‘count’ mengontrol iterasi.
 Dengan setiap iterasi, Python secara otomatis menambahkan
1 ke nilai 'count'.

ALGORITMA PEMROGRAMAN 99
Program tetap mengulang selama nilai ‘count’ berada dalam
rentang yang ditentukan dalam loop (dalam hal ini selama
‘count’ berada dalam kisaran 0 hingga 5). Setelah mencapai
akhir rentang (5) iterasi berhenti.
Program ini berulang lima kali. Untuk memiliki jumlah iterasi yang
berbeda, nilai ‘5 simply harus diubah ke jumlah waktu yang
diperlukan.

2. Condition-controlled loops
Disebut loop kondisi terkendali karena iterasi berlanjut
sementara, atau sampai, suatu kondisi terpenuhi. Pertimbangkan
algoritma sederhana ini untuk memasukkan kata sandi yang benar:
1. masukkan kata sandi
2. kecuali kata sandi = "ilovecomputing", kembali ke langkah 1
3. ucapkan ‘Kata sandi benar’
Algoritma ini akan terus beriterasi sampai kata sandi dimasukkan
dengan benar. A condition-controlled loop harus digunakan karena
tidak ada cara untuk mengetahui sebelumnya berapa kali kata sandi
perlu dimasukkan sebelum benar. A condition-controlled loop
digunakan ketika tidak diketahui berapa kali iterasi perlu terjadi.
Pseudocode untuk algoritma ini mungkin terlihat seperti ini:

password = "blank" WHILE password does not equal


"ilovecomputing" INPUT password OUTPUT "Password
correct"

Langkah-langkah yang merupakan bagian dari loop diindentasi.


Identasi digunakan untuk menunjukkan langkah mana yang harus
diulang. Dalam contoh ini, kondisinya adalah apakah kata sandi
yang dimasukkan sama dengan "ilovecomputing" atau tidak.
Algoritma menguji kondisi untuk melihat apakah itu benar. Jika
benar, algoritma mengeluarkan pesan. Jika salah, algoritma akan
kembali ke awal dan akan terus melakukannya hingga kondisi yang
diuji benar.
Terkadang suatu algoritma perlu mengulangi langkah-langkah
beberapa kali. Dalam pemrograman, condition-controlled

100 ALGORITMA PEMROGRAMAN


diimplementasikan menggunakan pernyataan WHILE. Python
menggunakan pernyataan sementara (perhatikan sintaks huruf kecil
yang digunakan Python).
Pertimbangkan algoritma sederhana ini untuk menambahkan
serangkaian angka yang dimasukkan:
1. atur total ke 0
2. atur lebih banyak angka ke ‘ya’
3. sementara lebih banyak angka adalah 'ya', ulangi langkah-
langkah ini:
 masukkan nomor
 tambahkan jumlahnya ke total
 tanyakan ‘Ada nomor lagi? Ya atau Tidak'
4. katakan apa totalnya
Algoritma ini akan terus beriterasi sampai jawaban pada akhir loop
adalah 'Tidak', yaitu akan terus beralih WHILE ada lebih banyak
angka untuk ditambahkan. A condition-controlled loop akan
digunakan karena tidak ada cara untuk mengetahui sebelumnya
berapa banyak angka yang perlu dimasukkan sebelum algoritma
berhenti.
Kode Python (3.x) untuk algoritma ini akan terlihat seperti ini:

total = 0 answer = "yes" while answer == "yes": number =


int(input("Type in a number: ")) total = total + number
answer = input("Any more numbers? yes/no ") print("The
total is: ") print(total)

Langkah-langkah yang merupakan bagian dari loop diindentasi.


Indentasi memberitahu komputer langkah mana yang harus diulang.
Programnya bekerja seperti ini:
- Pernyataan ‘while’ digunakan untuk menentukan dari mana
iterasi dimulai
- Kondisi ‘jawaban =“ ya ”’ digunakan untuk mengontrol
iterasi. Itu harus diatur ke "ya" di awal sehingga kode
berjalan setidaknya sekali
- Program menguji kondisi dengan memeriksa apakah
variabel ‘jawaban’ sama dengan “ya”

ALGORITMA PEMROGRAMAN 101


-Jika kondisinya benar, program akan kembali
-Jika kondisinya salah, program beralih ke langkah
berikutnya
Program ini berulang sebanyak yang diperlukan dan akan terus
berulang selama (sementara) kondisi terpenuhi.

6.4 Fungsi Rekursif


Algoritma rekursif adalah algoritma yang menyebut dirinya
sendiri dengan nilai input "lebih kecil (atau lebih sederhana)", dan
yang memperoleh hasil untuk input saat ini dengan menerapkan
operasi sederhana ke nilai yang dikembalikan untuk input yang lebih
kecil (atau lebih sederhana). Lebih umum jika suatu masalah dapat
dipecahkan dengan menggunakan solusi untuk versi yang lebih kecil
dari masalah yang sama, dan versi yang lebih kecil mengecil untuk
kasus yang mudah dipecahkan, maka orang dapat menggunakan
algoritma rekursif untuk menyelesaikan masalah itu. Sebagai contoh,
elemen-elemen dari set yang didefinisikan secara rekursif, atau nilai
dari fungsi yang didefinisikan secara rekursif dapat diperoleh
dengan algoritma rekursif.
Jika himpunan atau fungsi didefinisikan secara rekursif,
maka algoritma rekursif untuk menghitung anggota atau nilainya
mencerminkan definisi tersebut. Langkah-langkah awal dari
algoritma rekursif sesuai dengan klausa dasar dari definisi rekursif
dan mereka mengidentifikasi elemen-elemen dasar. Mereka
kemudian diikuti oleh langkah-langkah yang berkaitan dengan
klausa induktif, yang mengurangi perhitungan untuk elemen dari
satu generasi ke elemen dari generasi sebelumnya.
Apa itu rekursi? Terkadang masalah terlalu sulit atau terlalu
rumit untuk dipecahkan karena terlalu besar. Jika masalahnya dapat
dipecah menjadi versi yang lebih kecil dari dirinya sendiri, kami
mungkin dapat menemukan cara untuk menyelesaikan salah satu
dari versi yang lebih kecil ini dan kemudian dapat membangun
solusi untuk seluruh masalah. Ini adalah ide di balik rekursi;
algoritma rekursif memecah masalah menjadi potongan-potongan
kecil yang programmer sudah tahu jawabannya, atau dapat

102 ALGORITMA PEMROGRAMAN


menyelesaikannya dengan menerapkan algoritma yang sama untuk
masing-masing bagian, dan kemudian menggabungkan hasilnya.
Dinyatakan lebih ringkas, definisi rekursif didefinisikan dalam
istilah itu sendiri. Rekursi adalah teknik pemrograman komputer
yang melibatkan penggunaan prosedur, subrutin, fungsi, atau
algoritma yang menyebut dirinya dalam suatu langkah yang
memiliki kondisi terminasi sehingga pengulangan berturut-turut
diproses hingga langkah kritis di mana kondisi tersebut terpenuhi di
mana pada saat itu sisanya dari setiap pengulangan diproses dari
yang terakhir dipanggil ke yang pertama.
Jangan khawatir tentang detail definisi itu. Poin utama dari
itu adalah bahwa itu didefinisikan dalam hal itu sendiri: "Rekursi: ...
untuk informasi lebih lanjut, lihat Rekursi." Secara umum, program
komputer rekursif membutuhkan lebih banyak memori dan
komputasi dibandingkan dengan algoritma iteratif, tetapi mereka
lebih sederhana dan untuk banyak kasus cara alami berpikir tentang
masalah tersebut. Ketika kita menulis metode untuk memecahkan
masalah tertentu, salah satu teknik desain dasar adalah untuk
membagi tugas menjadi subtugas yang lebih kecil. Misalnya,
masalah menambahkan (atau mengalikan) n bilangan bulat berturut-
turut dapat dikurangi menjadi masalah menambahkan (atau
mengalikan) n-1bilangan bulat berturut-turut:

1 + 2 + 3 +... + n = n + [1 + 2 + 3 + .. + (n-1)]

1 * 2 * 3 *... * n = n * [1 * 2 * 3 * .. * (n-1)]

Karena itu, jika memperkenalkan suatu metode


sumR(n) (or timesR(n)) yang menambahkan (atau mengalikan)
bilangan bulat dari 1 ke n, maka aritmatika di atas dapat ditulis ulang
sebagai

sumR(n) = n + sumR(n-1)

timesR(n) = n * timesR(n-1)

Definisi fungsional semacam itu disebut definisi rekursif, karena


definisi tersebut berisi panggilan untuk dirinya sendiri. Pada setiap

ALGORITMA PEMROGRAMAN 103


panggilan rekursif argumen sumR(n) (or timesR(n)) semakin kecil
satu. Dibutuhkan n-1 panggilan sampai kita mencapai kasus dasar -
ini adalah bagian dari definisi yang tidak membuat panggilan ke
dirinya sendiri. Setiap definisi rekursif memerlukan kasus dasar
untuk mencegah rekursi yang tak terbatas.
Dalam contoh berikut ini menyediakan implementasi berulang dan
berulang untuk penambahan dan penggandaan bilangan asli.
public int sum(int n) public int sumR(int n)
{ {
int res = 0; if(n == 1)
for(int i = 1; i = n; i++) return 1;
res = res + i; else

return n + sumR(n-1);
return res; }
}
Untuk memecahkan masalah secara rekursif, berarti harus terlebih
dahulu mendefinisikan kembali masalah dalam hal subproblem
yang lebih kecil dengan jenis yang sama dengan masalah aslinya.
Dalam masalah penjumlahan di atas, untuk menjumlahkan n
bilangan bulat harus tahu bagaimana menjumlahkan n-1 bilangan
bulat. Selanjutnya, harus mencari tahu bagaimana solusi untuk
subproblem yang lebih kecil akan memberi programmer solusi
untuk masalah secara keseluruhan. Langkah ini sering disebut
sebagai lompatan secara rekursif. Sebelum menggunakan panggilan
rekursif, harus yakin bahwa panggilan rekursif akan melakukan apa
yang seharusnya dilakukan. Tidak perlu memikirkan bagaimana
panggilan rekursif bekerja, anggap saja itu mengembalikan hasil
yang benar.

Towers of Hanoi
Di kuil besar Brahma di Benares, sekelompok bhikkhu yang
maju secara spiritual harus memindahkan 64 cakram emas dari satu
jarum intan ke jarum intan lainnya. Dan, hanya ada satu lokasi lain
di kuil (selain lokasi asli dan tujuan) cukup sakral sehingga
setumpuk disk dapat ditempatkan di sana. 64 disk memiliki ukuran
yang berbeda, dan para biarawan harus mematuhi dua aturan:

104 ALGORITMA PEMROGRAMAN


1. hanya satu disk yang dapat dipindahkan sekaligus
2. disk yang lebih besar tidak pernah dapat ditempatkan di
atas disk yang lebih kecil.

Legenda adalah bahwa, sebelum para bhikkhu membuat


langkah terakhir untuk menyelesaikan tumpukan baru di lokasi
baru, Maha Pralaya berikutnya akan dimulai dan kuil akan berubah
menjadi debu dan dunia akan berakhir. Teka-teki Tower of Hanoi
ditemukan oleh ahli matematika Prancis Edouard Lucas pada tahun
1883. Teka-teki ini sangat dikenal oleh siswa Ilmu Komputer karena
muncul di hampir semua teks pengantar tentang struktur data atau
algoritma.
Solusi rekursif: pertama kita memindahkan cakram n-1
teratas ke kutub kosong, lalu kita memindahkan cakram terbesar ke
kutub kosong lainnya, lalu menyelesaikan pekerjaan dengan
memindahkan cakram n-1 ke cakram terbesar. Biarkan T (n)
mewakili jumlah langkah yang diperlukan untuk memindahkan n
disk. Maka T (n) dapat dihitung sebagai berikut :
T(n) = T(n-1) + 1 + T(n-1)

Bookkeeping
Orang mungkin bertanya-tanya bagaimana sistem runtime
menangani fungsi rekursif. Ada banyak informasi pembukuan yang
harus dilacak: untuk setiap panggilan harus dicatat siapa yang
menelepon dan argumen apa yang harus diserahkan. Namun yang
paling penting, kita harus melacak semua panggilan yang tertunda,
yang mungkin sangat bersarang di dalam satu sama lain. Ternyata,
yang dibutuhkan hanyalah satu tumpukan. Setiap kali panggilan
fungsi dilakukan (rekursif atau tidak), semua informasi pembukuan
yang diperlukan didorong ke tumpukan. Ketika eksekusi fungsi
berakhir, nilai kembali diserahkan kepada siapa pun yang membuat
panggilan (muncul dari tumpukan). Pertimbangkan panggilan
berikut sumR(5). Berikut ini informasi pembukuannya

ALGORITMA PEMROGRAMAN 105


sumR(5)
sumR(4)
sumR(3)
sumR(2)
sumR(1)
return 1
return 2 + 1
return 3 + 2 + 1
return 4 + 3 + 2 + 1
return 5 + 4 + 3 + 2 + 1

Membandingkan implementasi rekursif dengan implementasi


berulang, dapat mengatakan bahwa yang pertama setidaknya dua
kali lebih lambat, karena, pertama, kami membuka panggilan
rekursif (mendorongnya di atas tumpukan) sampai kami mencapai
alas dan kemudian, kedua, melintasi tumpukan dan mengambil
semua panggilan rekursif. Catatan, perhitungan aktual terjadi ketika
kita memunculkan panggilan rekursif dari tumpukan sistem itu.

Tail and Head recursions


Jika panggilan rekursif terjadi pada akhir suatu metode, itu
disebut rekursi ekor. Rekursi ekor mirip dengan lingkaran. Metode
ini mengeksekusi semua pernyataan sebelum melompat ke
panggilan rekursif berikutnya.
Jika panggilan rekursif terjadi pada awal metode, itu disebut
rekursi kepala. Metode ini menyelamatkan negara sebelum
melompat ke panggilan rekursif berikutnya. Bandingkan ini:
public void tail(int n) public void
head(int n)
{ {
if(n == 1) if(n == 0)
return; return;
else else
System.out.println(n); head(n-1);

tail(n-1); System.out.println(n);
}

106 ALGORITMA PEMROGRAMAN


Mathematical Induction
Pemrograman rekursif secara langsung berkaitan dengan
induksi matematika. Kasus dasar adalah untuk membuktikan
pernyataan itu benar untuk beberapa nilai spesifik atau nilai N.
Langkah induksi - asumsikan bahwa pernyataan benar untuk semua
bilangan bulat positif kurang dari N, kemudian buktikan benar
untuk N.

Binary Search
Temukan elemen x dalam array yang diurutkan dengan
terlebih dahulu membandingkan x dengan elemen tengah dan
kemudian (jika mereka tidak sama) membagi array menjadi dua sub-
array dan ulangi seluruh prosedur di salah satu dari mereka. Jika x
kurang dari elemen tengah yang cari di subarray kiri, sebaliknya - di
subarray kanan.
Misalkan T (n) menunjukkan jumlah perbandingan yang
diperlukan untuk menemukan kunci dalam array ukuran yang
diurutkan n. Kemudian kita memiliki persamaan berulang berikut
untuk T (n);

T(n) = T(n/2) + 1
Ini secara langsung diterjemahkan ke dalam kode rekursif berikut:
public int searchR(int[] a, int key) {
return helper(a, key, 0, a.length-1);
}

private int helper(int[] a, int key, int left,


int right) {
if (left > right) return -1;
int mid=(left+right)/2;
if (key == a[mid]) return mid;
else
if (key > a[mid])
return helper(a, key, mid + 1, right);
else
return helper(a, key, left, mid - 1);
}

ALGORITMA PEMROGRAMAN 107


The Mandelbrot Set
Set Mandelbrot adalah himpunan semua
bilangan kompleks c yang urutannya
ditentukan oleh iterasi
f(n+1) = f(n)2 + c, f(0) = c
tetap terikat atau menyatu ke titik tetap ketika
n cenderung tak terhingga. Dalam gambar set
Mandelbrot adalah bentuk biru di tengah. Set
Mandelbrot dinamai Benoit Mandelbrot yang
membuat gambar pertama dari set ini pada
tahun 1978.
Applet untuk menjelajahi set Mandelbrot, dan
fraktal lainnya, dapat ditemukan di situs web
Proyek Sistem dan Teknologi Dynamical.
Set Mandelbrot adalah contoh terkenal dari
bentuk geometris fraktal-terfragmentasi yang
dapat dibagi menjadi beberapa bagian, yang
masing-masing merupakan salinan dari
keseluruhan.
Berikut adalah dua contoh sekuens bunded dan unbounded:
- Misalkan c = 1. Urutan ini TIDAK dibatasi
f(0) = 1
2
f(1) = f(0) + 1 = 2

2
f(2) = f(1) + 1 = 5
2
f(3) = f(2) + 1 = 26
Jadi, urutannya berkembang.
- Misalkan c = 0,1 Urutan ini memiliki titik tetap
f(0) = 0.1
2
f(1) = f(0) + 0.1 = 0.11
2
f(2) = f(1) + 0.1 = 0.1121
2
f(3) = f(2) + 0.1 = 0.112566

108 ALGORITMA PEMROGRAMAN


...

f(8) = 0.112702

Fibonacci Numbers
Fibonacci lahir tahun 1170 di Pisa, Italia dan meninggal pada
tahun 1250. Nama aslinya adalah Leonardo Pisano. Pada 1202 ia
menulis sebuah buku: Liber Abbaci, yang berarti "Book of
Calculating". Angka Fibonacci didefinisikan sebagai jumlah dari dua
angka sebelumnya:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...
Definisi rekursif ini diterjemahkan langsung ke dalam kode
public int fibonacci(int n)
{
if (n <= 0) return 0;
else if (n == 1) return 1
else return fibonacci(n-1) +
fibonacci(n-2);
}
Ini adalah pohon biner dari panggilan rekursif
untuk fibonacci (5). Gambar menunjukkan
bahwa pohon untuk Fibonacci (5) memiliki 5
level, dan dengan demikian, jumlah total node
adalah sekitar 2 ^ 5. Berdasarkan estimasi ini
kami menduga bahwa kompleksitas
implementasi rekursif bersifat eksponensial,
yaitu O (2n). Kami dapat secara formal
membuktikan pernyataan ini dengan
menurunkan persamaan rekursif untuk
jumlah panggilan:

Linked Lists Recursively


Daftar tertaut adalah struktur data rekursif. Daftar tertaut
kosong atau terdiri dari simpul yang diikuti oleh daftar tertaut.
Sebagai contoh, pertimbangkan implementasi iteratif dan rekursif
dari metode addLast ()

ALGORITMA PEMROGRAMAN 109


iterative
implementation recursive implementation
public void addLast(Object item) public void
addLast(Object item)
{ {
if( head == null) if( head == null)
addFirst(item); addFirst(item);
else else
{ addLast(head,
item);
Node tmp = head; }
private void
addLast(Node node,
while(tmp.next != null) Object item)
tmp = tmp.next; {
if(node.next !=
null)
tmp.next = new Node(item, null);
addLast(node.next, item);
} else
} node.next =
new Node(item, null);
}

Sebagai latihan mengimplementasikan


public String toString()

public void insertAfter(Object key, Object toInsert)

public LinkedList clone()

Contoh kami berikutnya adalah metode insertBefore - temukan


kunci dan masukkan simpul baru sebelum simpul ini.
public void insertBefore(Object key, Object
toInsert)
{
head = insertBefore(key, head, toInsert);
}
public Node insertBefore(Object key, Node curNode,
Object toInsert)
{
if(curNode == null)
return null;
else
if(curNode.data.equals(key))
return new Node(toInsert, curNode);
else
curNode.next = insertBefore(key,
curNode.next, toInsert);
return curNode;
}

110 ALGORITMA PEMROGRAMAN


Misalkan kita ingin memasukkan sebelum "C". Mari kita lacak kode
di atas dengan membuat setumpuk sistem panggilan

head = insertBefore(A, C, toInsert);


"A".next = insertBefore(B, C, toInsert);
"B".next = insertBefore(C, C, toInsert);
insertBefore(C, C, toInsert) returns new Node(toInsert, C)
segera setelah kami mencapai kasus dasar, kami mengeluarkan
panggilan dari tumpukan sistem. Dua muncul pertama akan
memasukkan simpul baru antara "B" dan "C"
"B".next = insertBefore(C, C, toInsert) = new
Node(toInsert, C);
Semua tugas berikut :
head = insertBefore(A, C, toInsert);
"A".next = insertBefore(B, C, toInsert);
berlebihan, mereka tidak menambahkan apa pun ke daftar. Sub-
kasus penting lain dari implementasi di atas adalah ketika kita perlu
memasukkan node baru sebelum head. Kepala penugasan =
insertBefore (head, key, toInsert); menangani kasus ini.

6.5 Penyimpanan eksternal File: : open, append, write, close


Dengan Python, tidak perlu mengimpor library eksternal
untuk membaca dan menulis file. Python menyediakan fungsi
bawaan untuk membuat, menulis, dan membaca file.
a. Create a Text File
Dengan Python programmer dapat membuat file .text
(guru99.txt) dengan menggunakan kode, kami telah
menunjukkan di sini bagaimana programmer dapat melakukan
ini.

ALGORITMA PEMROGRAMAN 111


Langkah 1 :
f= open("guru99.txt","w+")
 mendeklarasikan variabel f untuk membuka file
bernama textfile.txt. Membuka membutuhkan 2
argumen, file yang ingin kita buka dan string yang
mewakili jenis izin atau operasi yang ingin kita lakukan
pada file
 Di sini kami menggunakan huruf "w" dalam argumen
kami, yang menunjukkan menulis dan tanda plus yang
berarti akan membuat file jika tidak ada di library.
 Pilihan yang tersedia di samping "w" adalah "r" untuk
dibaca dan "a" untuk menambahkan dan tanda tambah
berarti jika tidak ada maka buatlah.
Langkah 2 :
for i in range(10):
f.write("This is line %d\r\n" % (i+1))
 Memiliki for loop yang berjalan dalam range 10 angka.
 Menggunakan fungsi tulis untuk memasukkan data ke
dalam file.
 Output yang ingin kita iterate dalam file adalah "this lin
e number", yang kita nyatakan dengan fungsi tulis dan k
emudian persen d (menampilkan integer)
 Jadi pada dasarnya dimasukkan nomor baris yang kita t
ulis, lalu memasukkannya ke carriage return dan karakt
er baris baru
Langkah 3 :
f.close()
 Ini akan menutup instance dari file guru99.txt yang disi
mpan.

112 ALGORITMA PEMROGRAMAN


Ini adalah hasil setelah eksekusi kode

Ketika programmer mengklik file teks programmer dalam kasus


kami "guru99.txt" itu akan terlihat seperti ini

b. Append Data to a File


Selain itu, juga dapat menambahkan teks baru ke file yang
sudah ada atau file baru.
Langkah 1 :
f= open("guru99.txt","a+")
Sekali lagi jika bisa melihat tanda tambah dalam kode, ini
menunjukkan bahwa ia akan membuat file baru jika tidak ada.

ALGORITMA PEMROGRAMAN 113


Namun dalam kasus kami, kami sudah memiliki file, jadi kami
tidak diharuskan membuat file baru.
Langkah 2 :
for i in range(2):
f.write("Appended line %d\r\n" % (i+1))

Ini akan menulis data ke dalam file dalam mode append.

programmer dapat melihat output dalam file "guru99.txt". Outp


ut dari kode adalah bahwa file sebelumnya ditambahkan denga
n data baru.

c. Read a File
Programmer tidak hanya dapat membuat file .txt dari Python
tetapi programmer juga dapat memanggil file .txt dalam "mode
baca" (r).

114 ALGORITMA PEMROGRAMAN


Langkah 1: Buka file dalam mode Baca
f=open("guru99.txt", "r")
Langkah 2 Kami menggunakan fungsi mode dalam kode untuk
memeriksa apakah file dalam mode terbuka. Jika ya, kita lanjut
kan
if f.mode == 'r':
Langkah 3: Gunakan f.read untuk membaca data file dan menyi
mpannya dalam konten variabel
contents =f.read()
Langkah 4: cetak konten

Ini outputnya:

d. Read a Line by Line


Selain itu, juga dapat membaca file.text baris demi baris jika data
yang dimiliki terlalu besar untuk dibaca. Kode ini akan
memisahkan data yang dimiliki dalam mode mudah ke siap.

ALGORITMA PEMROGRAMAN 115


Ketika menjalankan kode (f1 = f.readlines ()) untuk membaca
file atau dokumen baris demi baris, itu akan memisahkan setiap
baris dan menyajikan file dalam format yang dapat dibaca.
Dalam kasus diatas, garis pendek dan dapat dibaca, output akan
terlihat mirip dengan mode baca. Tetapi jika ada file data
kompleks yang tidak dapat dibaca, kode ini dapat bermanfaat.

File Mode dengan Python :


Mode Deskripsi
'r' Ini adalah mode default. Membuka file untuk dibaca.
'w' Mode Ini Membuka file untuk ditulis.
Jika file tidak ada, itu membuat file baru.
Jika ada file itu memotong file.
'x' Membuat file baru. Jika file sudah ada, operasi gagal.

116 ALGORITMA PEMROGRAMAN


'a' Buka file dalam mode tambahkan.
Jika file tidak ada, itu membuat file baru.
't' Ini adalah mode default. Ini terbuka dalam mode teks.
'b' Ini terbuka dalam mode biner.
'+' Ini akan membuka file untuk membaca dan menulis
(memperbarui)

6.6 Kesimpulan
Fungsi adalah bagian dari program yang dapat digunakan
ulang. Hal ini bisa dicapai dengan memberi nama pada blok
statemen, kemudian nama ini dapat dipanggil di manapun dalam
program. Dictionary adalah stuktur data yang bentuknya seperti
kamus. Ada kata kunci kemudian ada nilainnya. Kata kunci harus
unik, sedangkan nilai boleh diisi denga apa saja.
Iteratif (dinyatakan IT-ter-a-teev) adalah kata sifat yang
berarti berulang-ulang sedangkan rekursi adalah teknik
pemrograman komputer yang melibatkan penggunaan prosedur,
subrutin, fungsi, atau algoritma yang menyebut dirinya dalam suatu
langkah yang memiliki kondisi terminasi sehingga pengulangan
berturut-turut diproses hingga langkah kritis di mana kondisi
tersebut terpenuhi di mana pada saat itu sisanya dari setiap
pengulangan diproses dari yang terakhir dipanggil ke yang pertama.
Dalam bahasa pemrograman python memungkinkan kita membaca,
menulis, dan menghapus file. Gunakan fungsi buka ("nama file", "w
+") untuk membuat file. + Memberi tahu compiler python untuk
membuat file jika tidak ada. Untuk menambahkan data ke file yang
ada, gunakan perintah open ("Nama file", "a"). Gunakan fungsi baca
untuk membaca ENTIRE konten file. Gunakan fungsi readlines
untuk membaca konten file satu per satu.

6.7 Latihan
1. Apa saja manfaat yang didapatkan apabila menggunakan
fungsi !
2. Jelaskan perbedaan variabel lokal dan variable global !
3. Sebutkan 5 contoh keyword !

ALGORITMA PEMROGRAMAN 117


4. Jelaskan perbedaan antara iteratif dan iterasi !
5. Jelaskan perbedaan antara iteratif dan rekursif !

118 ALGORITMA PEMROGRAMAN


BAB VII
STUDI KASUS SEDERHANA

7.1 Studi Kasus 1: Menghitung luas dan keliling segitiga sama


sisi
Buatlah flowchart untuk menghitung Luas dan keliling
Segitiga sama sisi! Panjang sisi dimasukan oleh pengguna. Luas dan
keliling segitiga ditampilkan ke layar.
Contoh:
Masukkan panjang sisi : 5
Luas Segitiga tersebut: 10.825
Keliling Segitiga tersebut : 15

Cara Penyelesaian Masalah


Untuk menghitung luas dan keliling segitiga sama sisi maka
dibutuhkan data panjang sisi segitiga dan tinggi dari segitiga sama
sisi yang akan dihitung luas dan kelilingnya. Secara matematis
rumus menghitung luas dan keliling segitiga sama sisi adalah:
Tinggi segitiga sama sisi = √(sisi)2-(0,5 sisi)2
Luas Segitiga sama sisi = 0.5 x panjang alas (sisi) x tinggi
Keliling segitiga sama sisi = 3 x panjang sisi
Dalam kasus ini panjang sisi segitiga sama sisi akan dimasukan 0leh
pengguna. Kita ambil contoh pengguna memasukan angka 5, maka
tinggi dari segitiga sama sisi tersebut adalah
Tinggi =√(5)2-(2,5)2
= √25-6,25
= √18,75
= 4,33
Setelah mendapatkan tinggi dari segitiga tersebut maka Luas
segitiga bisa dihitung.
Luas Segitiga = 0,5 x alas x tinggi
= 0,5 x 5 x 4,33
= 10,825

ALGORITMA PEMROGRAMAN 119


Keliling segitiga sama sisi = 3 x panjang sisi
=3x5
= 15
Variabel Yang Dibutuhkan
S sebagai variabel yang menampung nilai sisi segitiga yang
didefinisikan bertipe data pecahan
T sebagai variabel yang menampung tinggi segitiga yang
didefinisikan bertipe data pecahan
L sebagai variabel penampung hasil perhitungan Luas segitiga
sama sisi
K sebagai variabel penampung hasil perhitungan keliling segitiga
sama sisi

Input
Masukan yang diperlukan dalam permasalahan ini adalah
bilangan yang melambangkan nilai dari sisi segitiga sama sisi dan
disimpan pada variabel S. Sehingga input pada flowchart adalah
sebagai berikut:

Input S

Output
Keluaran dari permasalahan ini adalah 2 buah nilai yaitu
luas dan keliling segitiga sama sisi, sehingga output pada flowchart
dapat dibuat sebagai berikut:

output L & K

Proses Penyelesaian
Terdapat tiga buah kegiatan yang terjadi dalam proses dan
dilakukan secara berurutan (sequences), yaitu perhitungan tinggi
segitiga sama sisi, luas dan keliling segitiga sama sisi sesuai rumus

120 ALGORITMA PEMROGRAMAN


yang telah dideklarasikan sebelumnya. Dalam penulisan flowchart
tiga kegiatan tersebut bisa digabung seperti berikut ini:

L = 0.5*S* sqrt((S*S)-
((0.5*S)*(0.5*S)))

K = 3*S

Atau bisa ditulis secara terpisah seperti berikut:

T = sqrt((S*S)-((0.5*S)*(0.5*S)))

L = 0.5*S*T

K = 3*S

ALGORITMA PEMROGRAMAN 121


Flowchart Lengkap Dengan 2 Proses:

122 ALGORITMA PEMROGRAMAN


Flowchart Lengkap Dengan 3 Proses:

7.2 Studi Kasus 2: Konversi Angka ke Huruf


Buatlah flowchart untuk menghitung konversi nilai angka
menjadi huruf, dengan aturan:
80 ≤ A, 75 ≤ B+ < 80, 70 ≤ B < 75, 65 ≤ C+ < 70, E < 65
Contoh:
Masukkan panjang nila : 64
Keluaran : E

Cara Penyelesaian Masalah


Untuk menghitung konversi nilai angka menjadi huruf
dibutuhkan data nilai angka. Setelah itu angka yang dimasukan
tadi akan dikenai proses perbandingan dengan aturan yang telah di
buat. Model matematisnya sebagai berikut:

ALGORITMA PEMROGRAMAN 123


Jika nilai ≥ 80 maka akan tampil huruf A
Jika nilai ≥ 75 dan nilai < 80 maka akan tampil huruf B+
Jika nilai ≥ 70 dan nilai < 75 maka akan tampil huruf B
Jika nilai ≥ 65 dan nilai < 70 maka akan tampil huruf C+
Jika nilai < 65 akan tampil huruf E

Variabel Yang Dibutuhkan


N sebagai variabel yang menampung nilai yang akan dikonversi

Input
Masukan yang diperlukan dalam permasalahan ini adalah
nilai dan disimpan pada variabel N. Sehingga input pada flowchart
adalah sebagai berikut:

Input N

Output
Keluaran dari permasalahan ini adalah 5 jenis huruf sesuai
hasil konversi. Contoh jika nilai yang dimasukan 64 maka huruf
yang keluar adalah “E”, sehingga output pada flowchart dapat
dibuat sebagai berikut:

output “E”

124 ALGORITMA PEMROGRAMAN


Proses Penyelesaian
Terdapat proses percabangan untuk menyelesaikan
permasalahan ini, berikut adalah prosesenya:

N ≥ 80 “A”
Y
T
“B+”
N ≥ 75

Y
T
“B”
N ≥ 70
Y
T

N ≥ 65 Y “C+”

“E”

ALGORITMA PEMROGRAMAN 125


Flowchart Lengkap

7.3 Studi Kasus 3: Menampilkan deret n bilangan genap


pertama
Buatlah Flowchart untuk menampilkan deret n bilangan
genap pertama. Contoh:
User memasukan angka sembarang, missal angka 5. Maka
keluarannya adalah: 2, 4, 6, 8, 10.

Cara Penyelesaian Masalah


Untuk menyelesaikan kasus ini yang perlu dipahami adalah
ciri dari bilangan genap. Bilangan genap adalah bilangan yang
habis dibagi 2. Oleh karena itu rumusan matematisnya adalah
sebagai berikut :
A mod 2 = 0

126 ALGORITMA PEMROGRAMAN


Variabel Yang Dibutuhkan
B sebagai variable yang menampung nilai counter bilangan genap
yang akan ditampilkan
N sebagai variabel yang menampung nilai batas bilangan genap
yang akan ditampilkan
A sebagai variable yang menampung nilai bilangan genap yang
akan ditampilkan.

Input
Masukan yang diperlukan dalam permasalahan ini adalah
nilai dan disimpan pada variabel N. Sehingga input pada flowchart
adalah sebagai berikut:

Input N

Output
Keluaran dari permasalahan ini adalah deret bilangan genap
sebanyak nilai dari variable N. Contoh jika nilai N yang dimasukan
5 maka keluarannya ditampilkan nilai dari variabel A yang di rubah
sebanyak 5 kali. Contohnya adalah 2,4,6,8,10 sehingga output pada
flowchart dapat dibuat sebagai berikut:

Output A

Proses Penyelesaian masalah


Untuk menyelesaikan kasus ini harus digunakan
perulangan. Variabel N digunakan untuk tanda kapan perulangan
dimulai dan kapan perulangan selesai. Sedangkan variabel A
digunakan untuk menyimpan nilai bilangan genap yang akan
ditampilkan. Prosesnya seperti berikut:

ALGORITMA PEMROGRAMAN 127


Input N

A=1

For B = N A mod 2
down to 1 =0
Y Y

T T

A=A+1

Output A

Selesai

128 ALGORITMA PEMROGRAMAN


Flowchart Lengkap

ALGORITMA PEMROGRAMAN 129


130 ALGORITMA PEMROGRAMAN
BAB VIII
CONTOH MACAM – MACAM
FLOWCHART
8.1 Flowchart Mencari nilai pangkat

ALGORITMA PEMROGRAMAN 131


8.2 Flowchart menampilkan nilai tengah dari kumpulan
bilangan

132 ALGORITMA PEMROGRAMAN


8.3 Flowchart factorial

ALGORITMA PEMROGRAMAN 133


8.4 Flowchart Mengurutkan bilangan

134 ALGORITMA PEMROGRAMAN


DAFTAR REFERENSI
ANuff, 1997, Penuntun Pemrograman Java, Andi Yogyakarta.
Abdul Kadir, 2008, Dasar Pemrograman Java 2, Andi Yogyakarta.
Berchtold, S., Keim, D. A., & Kriegel, H. P. (2001). An index structure
for high-dimensional data. Readings in multimedia computing
and networking, 451.
Curien, P. L. (2012). Categorical combinators, sequential algorithms, and
functional programming. Springer Science & Business Media.
Dr. Suarga, M.Sc., M.Math., Ph.D. 2012. Algoritma dan
Pemrograman.Yogyakarta: ANDI, ISBN: 978-979-29-2745-0.
Furey, T. S., Wilson, R. K., Hillier, L. W., Kent, W. J., & Haussler, D.
(1973). Flowchart techniques for structured
programming. ACM Sigplan Notices, 8(8), 12-26.
Gary Cornell dan Cay S.Horstmann, 1997, Core Java edisi Indonesia,
Andi, Yogyakarta.
Head First Programming, Paul Barry and David Griffiths, 2009,
O’Reilly
Head First Python, Paul Barry,, 2011, O’Reilly
https://www.petanikode.com/tutorial/python/
https://www.guru99.com/reading-and-writing-files-in-
python.html
Naughton, Patrick, 1996, Java Handbook: Konsep Dasar
Pemrograman Java, Andi Yogyakarta.
Rabhi, F., & Lapalme, G. (1999). Algorithms; A Functional Programming
Approach. Addison-Wesley Longman Publishing Co.,
Inc.
Ravi K. Walia. ALGORITHM & FLOWCHART MANUAL for
STUDENTS. Nauni Solan INDIA (HP)
SERIES, CAR HOARE. Richard Bird Philip Wadler Introduction to
Functional Programming.
Think Python, 2015. How To Think Like a Computer Scientist, Allen
Downey, Green Tea Press.

ALGORITMA PEMROGRAMAN 135


136 ALGORITMA PEMROGRAMAN

Anda mungkin juga menyukai