PEMROGRAMAN
Oleh :
ALGORITMA PEMROGRAMAN i
ALGORITMA
PEMROGRAMAN
Penulis
Sigit Susanto Putro
Devie Rosa Anamisa
Fifin Ayu Mufarroha
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
ii ALGORITMA PEMROGRAMAN
KATA PENGANTAR
Tim Penulis
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
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.
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.
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.
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.
6 ALGORITMA PEMROGRAMAN
6. Tunggu dan aduk hingga 3 menit
7. Jika sudah matang masukkan bumbu Aduk hingga rata
8. Sajikan mie
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:
8 ALGORITMA PEMROGRAMAN
akan dieksekusi baik terjadi kesalahan ataupun tidak. Sintaks
dapat dilihat dibawah ini:
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:
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.
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
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.
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.
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.
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
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.
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).
(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)
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:
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.
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.
(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:
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.
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 V1V2V3V5VV7.
ALGORITMA PEMROGRAMAN 37
Gambar 7. Contoh Pencarian Jalur Terdekat Menggunakan
Dijkstra
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:
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.
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.
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).
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).
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 :
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:
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 :
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
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
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
ALGORITMA PEMROGRAMAN 59
KEPALA
ANGGOTA ADMINISTRASI
PERPUSTAKAAN
Pengisian # P
Formulir
60 ALGORITMA PEMROGRAMAN
Gambar 13. Flowchart skematik
Mulai
x<=5 Selesai
Cetak
algoritma
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.
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:
Cetak F
Stop
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
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
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
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
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
BIG = C is
Yes BIG = C
ENDIF C >BIG
Stop
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 -9 Stop
I = I+1
Stop
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
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
No
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
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")]
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")
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 = (𝑛 - 𝑚) – 𝑙𝑚
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
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
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.
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.
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.
ALGORITMA PEMROGRAMAN 87
bersangkutan saja dan tak perlu mencari kesalahan tersebut di
seluruh program.
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)
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)
90 ALGORITMA PEMROGRAMAN
kata kunci kemudian ada nilainnya. Kata kunci harus unik,
sedangkan nilai boleh diisi denga apa saja. Contoh dalam phyton :
aku = {
"url:" https://www.petanikode.com
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"
}
pak_tani = {
"nama": "Petani Kode",
"umur": 22,
"hobi": ["coding", "membaca", "cocok tanam"],
"menikah": False,
"sosmed": {
"facebook": "petanikode",
"twitter": "@petanikode"
}
}
92 ALGORITMA PEMROGRAMAN
Contoh:
# Membuat Dictionary
pak_tani = {
"nama": "Petani Kode",
"umur": 22,
"hobi": ["coding", "membaca", "cocok tanam"],
"menikah": False,
"sosmed": {
"facebook": "petanikode",
"twitter": "@petanikode"
}
}
print(pak_tani.get("nama"))
ALGORITMA PEMROGRAMAN 93
Hasilnya:
Petani Kode
# Membuat dictionary
web = {
"name": "petanikode",
"url": "https://www.petanikode.com",
"rank": "5"
}
Hasilnya:
petanikode
5
https://www.petanikode.com
web = {
"name": "petanikode",
"url": "https://www.petanikode.com",
"rank": "5"
}
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:
Contoh:
# membuat dictioanary
skill = {
"utama": "Python",
"lainnya": ["PHP","Java", "HTML"]
}
Python
Rust
>>> skill.pop("utama")
'Rust'
>>> skill
ALGORITMA PEMROGRAMAN 95
{'lainnya': ['PHP', 'Java', 'HTML']}
skill.clear()
# menambahkan password
user.update({"password": "akucintakamu123"})
print(user)
# update name
user.update({"name": "peternaklinux"})
print(user)
Hasilnya:
96 ALGORITMA PEMROGRAMAN
Contoh:
# membuat dictonary
books = {
"python": "Menguasai Python dalam 2028 jam",
"java": "Tutorial Belajar untuk Pemula",
"php": "Membuat aplikasi web dengan PHP"
}
Hasilnya:
total buku: 3
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:
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:
1 + 2 + 3 +... + n = n + [1 + 2 + 3 + .. + (n-1)]
1 * 2 * 3 *... * n = n * [1 * 2 * 3 * .. * (n-1)]
sumR(n) = n + sumR(n-1)
timesR(n) = n * timesR(n-1)
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:
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
tail(n-1); System.out.println(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);
}
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
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:
c. Read a File
Programmer tidak hanya dapat membuat file .txt dari Python
tetapi programmer juga dapat memanggil file .txt dalam "mode
baca" (r).
Ini outputnya:
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 !
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
L = 0.5*S* sqrt((S*S)-
((0.5*S)*(0.5*S)))
K = 3*S
T = sqrt((S*S)-((0.5*S)*(0.5*S)))
L = 0.5*S*T
K = 3*S
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”
N ≥ 80 “A”
Y
T
“B+”
N ≥ 75
Y
T
“B”
N ≥ 70
Y
T
N ≥ 65 Y “C+”
“E”
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
A=1
For B = N A mod 2
down to 1 =0
Y Y
T T
A=A+1
Output A
Selesai