Husni
Aeri Rachmad
ALGORITMA PEMOGRAMAN
Pendekatan Praktis Menggunakan Python
Penulis:
Husni
Aeri Rachmad
Editor:
Erik Santoso
Layouter :
Tim Kreatif PRCI
Cover:
Rusli
Website : www.rcipress.rcipublisher.org
E-mail : rumahcemerlangindonesia@gmail.com
Barang siapa dengan sengaja melanggar dan tanpa hak melakukan perbuatan sebagaimana
dimaksud dalam pasal ayat (1) atau pasal 49 ayat (1) dan ayat (2) dipidana dengan pidana
penjara masing-masing paling sedikit 1 (satu) bulan dan/atau denda paling sedikit
Rp.1.000.000,00 (satu juta rupiah), atau pidana penjara paling lama 7 (tujuh) tahun dan/atau
denda paling banyak Rp.5.000.000.000,00 (lima miliar rupiah).
Barang siapa dengan sengaja menyiarkan, memamerkan, mengedarkan, atau menjual kepada
umum suatu ciptaan atau barang hasil pelanggaran hak cipta terkait sebagai dimaksud pada ayat
(1) dipidana dengan pidana penjara paling lama 5 (lima) tahun dan/atau denda paling banyak
Rp.500.000.000,00 (lima ratus juta rupiah)
KATA PENGANTAR
Buku ini terbagi dalam 10 Bab. Tiga bab pertama fokus pada
penyelesaian masalah (problem solving) yang di dalamnya membahas
algoritma, flowchart, pseudocode dan tentu saja mengenalkan pemrograman
Python. Mungkin pembaca sedikit dibuat bingung oleh kode Python pada
bagian awal buku ini. Jangan khawatir, pada Bab 4 dan seterusnya Pembaca
dapat mengetahui apa itu Python dan bagaimana memanfaatkannya untuk
membuat program komputer yang berkualitas, bagaimana agar algoritma yang
telah dirancang terwujud menjadi aplikasi berjalan dan dapat dilihat hasilnya.
Kami haturkan terima kasih kepada banyak pihak yang telah membantu
penulisan buku ini. Pak Aeri, sebagai co-author telah melakukan pekerjaan
yang sempurna untuk menjadikan buku ini lebih santai. Sejujurnya, cikal bakal
buku ini adalah Diktat Kuliah. Sentuhan beberapa orang telah membuatnya
layak menjadi buku Ajar. Walaupun harus diakui masih memerlukan banyak
perbaikan.
6. OPERATOR ............................................................................................................................63
6.1 Operator Aritmatika ........................................................................................................ 63
6.2 Operator Relasi ............................................................................................................... 64
6.3 Operator Assignment ...................................................................................................... 65
6.4 Operator Logika ............................................................................................................... 66
6.5 Operator Bitwise ............................................................................................................. 67
6.6 Operator keanggotaan .................................................................................................... 67
6.7 Operator Identitas. .......................................................................................................... 68
6.8 Presedensi Operator........................................................................................................ 68
6.9 Contoh Program .............................................................................................................. 70
1. Algoritma.
2. Diagram alir (flowchart).
3. Kode palsu (pseudocode).
4. Kode program
1.2 Algoritma
Algoritma didefinisikan sebagai urutan instruksi yang mendeskripsikan metode
atau cara untuk menyelesaikan suatu masalah. Secara sederhana, dapat dikatakan
bahwa Algoritma adalah prosedur langkah demi langkah untuk memecahkan
masalah.
Harus ditulis dalam bahasa Inggris atau bahasa nasional kita, namun
sederhana dan rinci (detail)
Setiap instruksi harus tepat dan tidak ambigu.
Instruksi dalam suatu algoritma tidak boleh diulang tanpa batas, harus
terbatas.
Algoritma harus tuntas setelah sejumlah langkah yang terbatas.
Harus memiliki titik akhir
Hasil akhir harus diperoleh hanya setelah algoritma berakhir.
Berikut ini adalah faktor utama yang sering digunakan untuk menilai kualitas dari
suatu algoritma:
Contoh:
Algoritma dapat dibangun dari blok bangunan dasar bernama urutan (sequence)
pernyataan, seleksi kondisi dan iterasi (perulangan).
1.3 Pernyataan
Pernyataan (statement) adalah satu tindakan (single action) di dalam komputer.
Dalam pernyataan komputer mungkin mencakup beberapa tindakan berikut:
1.4 Kondisi
Transisi dari satu proses ke proses lain dalam kondisi tertentu dengan waktu
tertentu disebut keadaan/kondisi atau state.
Urutan (sequence): Semua instruksi dieksekusi satu demi satu disebut eksekusi
berurutan.
Langkah 1: Mulai
Langkah 2: dapatkan a, b
Langkah 3: hitung c = a + b
Langkah 4: Tampilkan c
Langkah 5: Berhenti
Langkah 1: Mulai
Langkah 2: Dapatkan usia
Langkah 3: jika usia >= 18, cetak ‚Memenuhi syarat untuk memilih‛
Langkah 4: jika tidak, cetak ‚Tidak memenuhi syarat untuk memilih‛
Langkah 6: Berhenti
Langkah 1: Mulai
Langkah 2: dapatkan nilai n.
Langkah 3: inisialisasi i=1
Langkah 4: jika (i<=n) lanjutkan ke langkah 5, jika tidak
lanjutkan ke langkah 7
Langkah 5: Cetak nilai i dan tambahkan nilai i sebesar 1
Langkah 6: Lanjutkan ke langkah 4
Langkah 7: Berhenti
1.6 Fungsi
Fungsi adalah sub program yang terdiri dari blok kode (himpunan instruksi) yang
melakukan tugas tertentu. Untuk suatu masalah kompleks, masalah dapat dibagi
menjadi tugas-tugas yang lebih kecil dan lebih sederhana selama desain algoritma.
Fungsi utama()
Langkah 1: Mulai
1. Logika kompleks: Terkadang, logika program cukup rumit. Dalam hal ini,
flowchart menjadi kompleks dan kaku.
2. Perubahan dan Modifikasi: Jika diperlukan perubahan, diagram alir
mungkin perlu digambar ulang sepenuhnya.
3. Reproduksi: Karena simbol flowchart tidak dapat diketik, reproduksi
flowchart sedikit menjadi masalah.
4. Biaya: Untuk aplikasi besar waktu dan biaya menggambar flowchart
menjadi mahal.
1.8 Pseudocode
Kode semu atau pseudocode terdiri dari bahasa Inggris yang pendek,
mudah dibaca, dan bergaya formal yang digunakan untuk menjelaskan
suatu algoritma.
Itu tidak termasuk detail seperti deklarasi variabel, subrutin.
Programer maupun non programmer lebih mudah memahami cara kerja
program secara umum, karena tidak didasarkan pada bahasa
pemrograman apa pun.
Berikut ini adalah kata kunci umum yang digunakan dalam penulisan pseudocode:
Keuntungan:
Pseudo tidak tergantung pada bahasa apa pun; dapat digunakan oleh
sebagian besar programmer.
Sangat mudah untuk menerjemahkan kode semu ke dalam bahasa
pemrograman.
Dapat dengan mudah dimodifikasi dibandingkan dengan diagram alur.
Mengubah kode semu ke bahasa pemrograman sangat mudah
dibandingkan dengan mengubah diagram alir ke bahasa pemrograman.
BEGIN
GET a, b
ADD c = a + b
PRINT c
END
1. Bahasa mesin
2. Bahasa Assembly
3. Bahasa tingkat tinggi
Bahasa Assembly:
Contoh: ADD a, b
Kerugian:
Kekurangan:
Contoh:
Pascal
Python
Clean
Haskell
Contoh:
C
C++
C#
Java
Contoh:
Hyper Talk
MATLAB
Bahasa Scripting: Bahasa scripting adalah bahasa pemrograman yang mengontrol
suatu aplikasi khusus. Meeskipun begitu, skrip dapat saja dijalankan secara
independen dari aplikasi lain. Skrip ini sebagian besar tertanam dalam aplikasi
yang harus dikontrol dan digunakan untuk mengotomatisasi tugas yang sering
dijalankan seperti berkomunikasi dengan program eksternal.
Contoh:
Skrip Apple
Skrip VB di Microsoft Office
Contoh:
HTML
XML
Contoh:
Joule
limbo
Contoh:
Lava
Moto
Jika instruksi dieksekusi satu demi satu, itu disebut algoritma sekuensial.
Jika beberapa instruksi dieksekusi secara bersamaan, itu disebut algoritma
paralel.
2.7 Iterasi
Serangkaian pernyataan yang dijalankan sampai kondisi tertentu bernilai True
(benar) disebut iterasi (Gambar 2.2). Ada dua pendekatan iterasi yang dapat
dipilih yaitu:
1. perulangan for
2. perulangan while
2.8 Rekursi
Suatu fungsi yang memanggil dirinya sendiri dikenal sebagai rekursi
Rekursi adalah proses dimana suatu fungsi memanggil dirinya sendiri secra
berulang sampai beberapa kondisi tertentu dipenuhi.
Fungsi utama:
Langkah 1: Start
Langkah 2: Get n
Langkah 3: call factorial(n)
Langkah 4: print fact
Langkah 5: Stop
Fungsi utama:
BEGIN
GET n
CALL factorial(n)
PRINT fact
BIN
Langkah 1: Start
Langkah 2: get a,b value
Langkah 3: check if(a>b) print a is greater
Langkah 4: else b is greater
Langkah 5: Stop
BEGIN
READ y
IF (y%4==0) THEN
BEGIN
READ num
IF (num>0) THEN
DISPLAY num is positive
ELSE
DISPLAY num is negative
END IF
END
Algoritma untuk memeriksa apakah suatu bilangan genap atau ganjil
Langkah 1: Start
Langkah 2: get num
Langkah 3: check if(num%2==0) print num is even
Langkah 4: else num is odd
Langkah 5: Stop
BEGIN
GET n
INITIALIZE i=1
WHILE(i<=n) DO
PRINT i
i=i+1
ENDWHILE
END
Write an algorithm to print n odd numbers
Langkah 1: start
Langkah 2: get n value
Langkah 3: set initial value i=1
Langkah 4: check if(i<=n) goto Langkah 5 else goto Langkah 8
Langkah 5: print i value
Langkah 6: increment i value by 2
Langkah 7: goto Langkah 4
Langkah 8: stop
WHILE(i<=n) DO
sum=sum+i
i=i+1
ENDWHILE
PRINT sum
END
Tuliskan suatu algoritma untuk mencari factorial dari suatu bilangan yang
diberikan
Langkah 1: start
Langkah 2: get n value
Langkah 3: set initial value i=1, fact=1
Langkah 4: check i value if(i<=n) goto Langkah 5 else goto Langkah 8
Langkah 5: calculate fact=fact*i
Langkah 6: increment i value by 1
Langkah 7: goto Langkah 4
Langkah 8: print fact value
Langkah 9: stop
Luas segiempat:
age=eval(input(‚enter ur age‛))
if(a>b):
if(a>c):
print(‚the greatest no is‛,a)
else:
print(‚the greatest no is‛,c)
else:
if(b>c):
print(‚the greatest no is‛,b)
else:
print(‚the greatest no is‛,c)
while(i<=10):
sum=sum+i
i=i+1
print(sum)
while(i<=10):
product=product*i
print(product)
add()
area()
swap()
div()
def quotient():
a=eval(input("enter a"))
b=eval(input("enter b"))
Q=a/b
print("the reminder is",Q)
reminder()
quotient()
def ftoc():
f=eval(input("enter temp in Fahrenheit"))
c=(f-32)/1.8
print("the temperature in centigrade is",c)
ctof()
ftoc()
def sub():
a=eval(input("enter a value"))
b=eval(input("enter b value"))
c=a-b
print("the diff is",c)
def mul():
a=eval(input("enter a value"))
b=eval(input("enter b value"))
c=a*b
print("the mul is",c)
def div():
a=eval(input("enter a value"))
b=eval(input("enter b value"))
40 | Algoritma Pemograman Pendekatan Praktis Menggunan Python
c=a/b
print("the div is",c)
add()
sub()
mul()
div()
Compiler Interpreter
Program tidak perlu di-compile setiap Setiap kali program tingkat tinggi
waktu dikonversi menjadi program tingkat
lebih rendah (higher lower)
Error ditampilkan setelah seluruh kode Error ditampilkan untuk setiap instruksi
program diperiksa yang diterjemahkan (jika ada)
Mode Interaktif
Keuntungan:
Kerugian: Kita tidak dapat menyimpan pernyataan dan harus menulis ulang semua
pernyataan sekali lagi untuk menjalankan ulang.
>>> 1+ 1
2
Ini adalah contoh pernyataan print. Pernyataan ini menampilkan suatu hasil pada
layer (console), dalam hal ini adalah teks yang diapit tanda petik ganda.
Modus Skrip
Dalam mode skrip, kita menuliskan kode program Python dalam suatu file
dan kemudian menggunakan interpreter untuk mengeksekusi isi dari file
tersebut
Skrip dapat disimpan ke disk untuk digunakan lagi nanti. Skrip Python
mempunyai ekstensi .py, aertinya nama file akan berakhiran .py.
Simpan kode program dengan namafile.py dan jalankan Interpreter dalam
modus skrip untuk mengeksekusi skrip tersebut.
Contoh 1: namafile.py
print(100)
abc = 234
print(abc)
Tidak dapat menyimpan dan mengedit Dapat menyimpan dan mengedit kode
kode
Jika kita ingin bereksperimen dengan Jika kita sangat jelas tentang kode, kita
kode, kita dapat menggunakan mode dapat menggunakan mode script.
interaktif
Kita bisa langsung melihat hasilnya. Kita tidak dapat langsung melihat
kodenya.
Bagian selanjutnya dari Bab ini akan menjelaskan mengenai Nilai dan Tipe Data.
Nilai atau value dapat berupa huruf, angka (bilangan/numerik) atau string. Contoh
nilai adalah 2, 42.0, dan “halooo”. Nilai-nilai ini mempunyai tipe data berbeda.
Setiap nilai dalam Python mempunyai tipe data, yaitu sehimpunan nilai dan
operasi yang dibolehkan pada nilai-nilai tersebut. Python mempunyai empat tipe
data standard sebagaimana diperlihatkan pada Gambar 4.3.
Bulat Pecahan
Kompleks Teks (String) Tuple List
(Integer) (Float)
String
List
Tuple
String
String terdiri dari serangkaian atau sederetan karakter (huruf, angka, dan karakter
khusus). Dalam aplikasinya, String harus dilingkupi dengan salah satu dari tiga
quote (tanda petik atau tanda kutip) yang mempunyai makna tersendiri, seperti
berikut ini:
String A H E L L O
Indeks Positif 0 1 2 3 4
Indeks Negatif -5 -4 -3 -2 -1
Indexing positif membantu kita dalam mengakses String dimulai dari depan (dari
awal atau dari kiri). Sedangkan subscript negatif berguna saat kita ingin
mengakses String dimulai dari ujung (dari kanan). Kombinasi akses String dari kiri
dan kanan dengan melibatkan nomor indeks positif dan negatif akan memberikan
banyak kemudahan dalam pembuatan program di Python.
Operasi String
Operasi List
Tuple
Suatu tuple sama seperti list, kecuali bahwa himpunan elemen-elemen diapit
kurung biasa bukan kurung siku. Selain itu, tuple bersifat immutable, sehingga
begitu suatu tuple dibuat maka kita tidak dapat menambahkan, mengubah atau
menghapus elemen-elemen yang ada di dalam tuple tersebut.
Operasi Tuple
>>> t[0]="a"
Trace back (most recent call last):
File "<stdin>", Baris 1, in <module>
Type Error: 'tuple' object does not support item assignment
List sebagaimana telah kita pelajari merupakan himpunan obyek yang dapat
diurutkan, sedangkan dictionary berisi item yang tidak dapat diurutkan secara
lengkap. Variabel bertipe kamus dibuat dengan menggunakan kurung kurawal {},
bukan kurung biasa ataupun kurung siku. Perbedaan lain dibandingkan List dan
Tuple, Kamus ini diakses melalui key (kunci) bukan menggunakan posisi (nomor
indeks).
Kamus dapat disamakan dengan array (larik) asosiatif (di PHP atau Bahasa
pemrograman lain), dikenal juga sebagai hash. Suatu kunci dari kamus
diasosiasikan atau dipetakan ke suatu nilai. Nilai dari suatu dictionary dapat
berupa tipe data apapun yang disediakan Python. Karena itu, kamus merupakan
pasangan key-value tidak berurutan (asosiasi dari key dan value ini kemudian
dikenal sebagai pasangan key-value atau kunci-nilai).
Dictionary tidak mendukung operasi sequence dari tipe data rentetan seperti
String, Tuple dan List yang didiskusikan sebelumnya. Tabel berikut
memperlihatkan operasi yang dapat dan sering dilakukan terhadap Kamus.
Jika kita mencoba untuk mengakses suatu kunci yang tidak ada, maka akan
diperoleh pesan error sebagai berikut:
Tabel di bawah ini memperlihatkan tipe data dan ilustrasi apa yang terjadi saat
program di-compile dan Ketika berjalan (run).
5.1 Variabel
Variabel adalah suatu pengenal atau nama yang dapat digunakan untuk
memegang nilai yang dapat atau boleh berubah (sesuatu yang dapat divariasi).
Variabel memungkinkan kita menyimpan suatu nilai dengan memberikannya
suatu nama yang dapat digunakan selanjutnya. Pada dasarnya, di belakang layer,
Python memberikan nama untuk suatu alamat di memory computer. Pada alamat
tersebutlah suatu nilai disimpan dan variabel adalah nama yang
merepresentasikan dimana data berada.
Nilai yang akan diberikan ke suatu variabel harus diletakkan di sebelahan kanan
operator assignment (=) dan variabel yang menerima nilai tersebut di sisi kirinya.
counter = 45
print(counter)
Di Python, kita dapat pula memberikan suatu nilai ke beberapa variabel secara
simultan:
a = b = c = 100
Bahkan, kita juga dapat mengassign banyak nilai ke banyak variabel, seperti
berikut:
a, b, c = 2, 4, ‚ram‛
Kata kunci atau keyword merupakan kata-kata penting yang dicadangkan dan
digunakan sebagai perintah dalam Bahasa Python. Kata-kata ini tidak boleh dan
Keyword Penjelasan
and Operator logika AND
as Membuat alias, misal saat import modul
assert Digunakan untuk debugging
break Mem-break out suatu perulangan (loop)
class Mendefinisikan suatu class
continue Melanjutkan proses ke iterasi berikutnya dari suatu
perulangan
def Mendefinisikan fungsi
del Menghapus suatu obyek.
elif Digunakan dalam pernyataan kondisional, sama dengan
else if
else Digunakan dalam pernyataan kondisional
except Digunakan dengan exceptions, apa yang dilakukan saat
suatu exception terjadi.
False Nilai Boolean, hasil dari operasi perbandingan
finally Digunakan dengan exceptions, blok kode yang akan
dieksekusi jika tidak ada satupun eksepsi yang terpenuhi
for Membuat perulangan for
from Mengimport bagian spesifik dari suatu modul
global Mendeklarasikan suatu variabel global
if Membuat suatu pernyataan kondisional
import Mengimport suatu modul
in Memeriksa apakah suatu nilai ada di dalam list, tuple, dll.
is Menguji apakah dua variabel sama (equivalen)
lambda Membuat suatu fungsi anonymous
None Merepresentasikan suatu nilai null
nonlocal Mendeklarasikan suatu variabel non-local
not Operator logika NOT
or Operator logika OR
pass Suatu pernyataan null, pernyataan yang tidak akan
melakukan apapun
raise Membangkitkan suatu eksepsi (exception)
Ekspresi
Suatu ekspresi merupakan kombinasi nilai, variabel dan operator. Suatu nilai
dengan sendirinya dianggap sebagai ekspresi, dan begitu pula suatu variabel. Jadi,
baris-baris berikut semuanya merupakan ekspresi yang sah:
>>> 42
42
>>> a=2
>>> a+3+2
7
>>> z=("hi"+"friend")
>>> print(z)
hifriend
Contoh:
Secara default, setiap inputan dari pengguna adalah teks, sehingga bertipe data
String. Agar data input tersebut dapat diproses dalam komputasi maka harus
dikonversi ke integer atau float. Konversi ini dapat menggunakan fungsi int(),
float() atau eval().
print (expression/constant/variable)
Contoh:
5.6 Komentar
Komentar adalah sesuatu yang tidak diproses oleh Interpreter Python tetapi
berguna bagi programmer karena berisi penjelasan mengenai kode program.
Apapun yang diletakkan setelah tanda hash (#) dianggap sebagai komentar.
Contoh:
Python tidak mempunyai fitur komentar banyak baris. Kita harus membuat
banyak baris komentar untuk mewujudkan ini.
Contoh:
# This is a comment.
# This is a comment, too.
# I said that already.
5.7 Docstring
Contoh:
def double(num):
"""Fungsi menggandakan suatu nilai. """
Husni & Aeri Rachmad | 59
return 2*num
print(double.__doc__)
Fungsi menggandakan suatu nilai.
Namafungsi.__doc__
Contoh:
a=3
b=1
if a>b:
print("a is greater")
else:
print("b is greater")
Contoh:
Setiap nilai akan diterima oleh variabel yang bersesuaian. Semua ekspresi pada sisi
kanan akan dievaluasi sebelum assignnment dilaksanakan. Fitur ini mengakibatkan
tuple assignment menjadi semakin serbaguna. Secara alami, jumlah variabel pada
sisi kiri dan jumlah nilai pada sisi kananharuslah sama.
(a, b, c, d) = (1,2,3)
ValueError: need more than 3 values to unpack
Contoh:
Tuple assignment berguna salah satunya untuk menukarkan nilai dari dua
variabel. Dengan pernyataan assignment konvensional, kita harus menggunakan
variabel temporer (sementara). Perhatikan kode untuk menukar nilai a dan b
berikut:
Tuple assignment dengan mudah menyelesaikan masalah ini dengan cara berikut:
(a, b) = (b, a)
Sisi kanan dapat berupa sequence jenis apapun (String, List, Tuple)
Contoh:
>>> mailid='god@abc.org'
>>> name,domain=mailid.split('@')
>>> print name
god
>>> print (domain)
abc.org
Operator aritmatika
Operator Perbandingan (relasi)
Operator Assignment (pemberian nilai)
Operator Logika
Operator Bitwise
Operator keanggotaan (membership)
Operator Identitas.
Contoh Output
a = 10
b = 5
print("a + b =", a+b) a+b= 15
print("a – b =", a-b) a-b= 5
print("a * b =", a*b) a*b= 50
print("a / b =", a/b) a/b= 2.0
print("a % b =", a%b) a%b= 0
print("a // b =", a//b) a//b= 2
print("a ** b =", a**b) a**b= 100000
6.2 Operator Relasi
Operator relasi digunakan untuk membandingkan nilai-nilai. Perbandingan ini
dapat mengembalikan nilai True atau False sesuai dengan kondisi yang
dibandingkan. Tabel berikut memperlihatkan bagaimana operator relasi ini
bekerja. Anggaplah a = 10 dan b = 5.
Contoh Output
a=10
b=5
print("a > b =>", a>b) a > b => True
print("a > b =>", a<b) a > b => False
print("a == b =>", a==b) a == b => False
print("a != b =>", a!=b) a != b => True
print("a >= b =>", a<=b) a >= b => False
print(" a>= b =>", a>=b) a >= b => True
Contoh Output
a = 21
b = 10
c = 0
c = a + b
print("Baris 1 - Nilai dari c =", c) Baris 1 - Nilai dari c = 31
c += a
print("Baris 2 - Nilai dari c =", c) Baris 2 - Nilai dari c = 52
c *= a
print("Baris 3 - Nilai dari c =", c) Baris 3 - Nilai dari c = 1092
c /= a
print("Baris 4 - Nilai dari c =", c) Baris 4 - Nilai dari c = 52.0
c = 2
c %= a
print("Baris 5 - Nilai dari c =", c) Baris 5 - Nilai dari c = 2
c **= a
print("Baris 6 - Nilai dari c =", c) Baris 6 - Nilai dari c = 2097152
c //= a
print("Baris 7 - Nilai dari c =", c) Baris 7 - Nilai dari c = 99864
Contoh:
Contoh:
Contoh:
x = [5,3,6,4,1]
5 in x
True
5 not in x
False
Contoh:
Contoh:
print("a=",a,"b=",b,)
distance =math.sqrt((x2-x1)**2)+((y2-
y1)**2)
print(distance)
7.1 if
Seleksi kondisi searah hanya berupa if. Pendekatan ini digunakan untuk menguji
suatu kondisi dimana jika kondisi tersebut bernilaiTrue maka pernyataan di dalam
(atau di bawah) blok if tersebut akan dieksekusi.
if (kondisi):
pernyataan
Contoh:
7.2 if-else
Bentuk if-else dapat dikatakan sebagai alternatif dari if sederhana. Pernyataan if
dipadukan dengan else. Secara mudah kita dapat membacanya “jika kondisi ini
bernilai True maka kerjakan blok if, jika tidak (jika kondisi bernilai False) maka
kerjakan blok else. Jadia ada dua kemungkinan hasil, True atau False, sehingga ada
dua kemungkinan arah eksekusi. Karena itulah bentuk if-else ini dinamakan
kondisi dua arah.
if (kondisi):
pernyataan 1
else:
pernyataan 2
Contoh:
Tahun Kabisat
y=eval(input("Masukkan Tahun:")) Masukkan Tahun: 2010
Bilangan Terbesar
a=eval(input("Masukkan angka a:")) Masukkan angka a: 10
b=eval(input("Masukkan angka b:")) Masukkan angka b: 12
Husni & Aeri Rachmad | 73
Terbesar: 12
if(a>b):
print("Terbesar:", a)
else:
print("Terbesar:", b)
Hak Memilih
age=eval(input("Berapa usia anda?")) Berapa usia anda? 45
Anda punya hak suara.
if(age>=18):
print("Anda punya hak suara.")
else:
print("Anda tidak punya hak suara.")
7.3 if-elif-else
Bentuk struktur seleksi kondisi seperti ini disebut pula kondisi berantai atau
seleksi kondisi banyak arah dikarenakan ada beberapa seleksi terhadap kondisi.
Keyword elif merupakan singkatan dari else-if yang digunakan untuk memeriksa
leih dari satu konsisi. Jika kondisi1 bernilaiFalse, maka dilakukan pemeriksaan
terhadap Kondisi2 yang berada diblok elif. Jika semua kondisi bernilai False, maka
bagian dari else yang dieksekusi. Diantara bagian if…elif… else ini, hanya satu
bagian yang dieksekusi sesuai dengan nilai kondisi yang bernilai True. Blok if hanya
boleh memiliki satu bagian else, tetapi dapat mempunyai banyak blok elif.
if (kondisi 1):
pernyataan 1
elif (kondisi 2):
pernyataan 2
elif (kondisi 3):
pernyataan 3
else:
pernyataan default
if(d==0):
print("same and real roots")
elif(d>0):
print("different real roots")
else:
print("imaginary roots")
Contoh:
State (status)
While
For
Break
Continue
Pass
Status, Kondisi atau Keadaan adalah transisi dari satu proses ke proses lain dalam
kondisi tertentu dengan waktu tertentu.
Ada 2 pendekatan untuk menangani perulangan di Python, yaitu while dan for.
Mari kita diskusikan satu demi satu.
nilai awal
while (kondisi)
badan perulangan while
increment
Sedangkan jika diwujudkan dalam bentuk flowchart diperoleh seperti Gambar 8.1
Gambar 8.1 jelas memperlihatkan bahwa jika Kondisi atau Ekspresi Uji bernilai
True maka badan while loop diproses (dieksekusi) dan kemudian setelah adanya
increment Kembali dilakukan pemeriksaan terhadap Kondisi. Satu kali proses
perulangan disebut satu iterasi.
Contoh program
i=1 55
sum=0
while(i<=n):
sum=sum+i
i=i+1
print(sum)
while(i<=n):
fact=fact*i
i=i+1
print(fact)
print(sum)
Membalik Bilangan
n=eval(input("Masukkan suatu Angka: ")) Masukkan suatu Angka:
123
sum=0
while(n>0): 321
a=n%10
sum=sum*10+a
n=n//10
print(sum)
if(sum==org):
print("Angka itu bilangan Armstrong.")
else:
print("Angka itu bukan bilangan
Armstrong.")
Palindrom
n=eval(input("Masukkan suatu Angka:")) Masukkan suatu Angka:
121
org=n
sum=0 Angka itu Palindrom.
while(n>0):
a=n%10
sum=sum*10+a
n=n//10
if(sum==org):
print("Angka itu Palindrom.")
else:
print("Angka itu bukan Palindrom.")
range(a)
range(a, b)
range(a, b, k)
Bagaimana dengan range(a, b, k)? k digunakan sebagai nilai Langkah (step) dalam
range(a, b, k). Bilangan pertama dalam sequence ini adalah a. Setiap bilangan
berikutnya dalam sequence akan naik sebesar nilai step k. b adalah limit (batas
akhir). Bilangan terakhir dalam sequence ini harus kurang dari pada b. Kita harus
memastikan bahwa a, b, dan k adalah bilangan bulat atau integer.
Contoh:
Nilai Langkah (step) dalam range(3, 9, 2) adalah 2, dan limit adalah 9. Sehingga
sequence ini beranggotakan 3, 5, dan 7
Python juga memungkinkan kita membuat range nilai secara mundur, dari
bilangan lebih besar ke lebih kecil. Fungsi range(a, b, k) dapat melakukan hitungan
mundur jika k bernilai negatif. Dalam hal ini, sequence masih a, a + k, a + 2k, dan
seterusnya untuk suatu k negatif. Bilangan terakhir dalam sequence harus lebih
besar daripada b.
Contoh:
for i in sequence:
print(i)
Contoh:
Deret Fibonaci
a=0 Masukkan Angka:
b=1 6
n=eval(input("Masukkan Angka: ")) Deret Fibonacci:
print("Deret Fibonacci: ") 0
print(a,b) 1
1
for i in range(1,n,1): 2
c=a+b 3
print(c) 5
a=b 8
if(sum==n):
print("the number is perfect number")
else:
print("the number is not perfect number")
Dan jika diwujudkan dalam flowchart menjadi seperti pada Gambar 8.3:
Contoh Output
for i in "welcome": w
if(i=="c"): e
break l
print(i)
Sintaks continue:
Contoh Output
for i in "welcome": w
if(i=="c"): e
continue l
print(i) o
m
e
Pernyataan terakhir yang sering digunakan di dalam perulangan adalah pass. Pass
digunakan ketika suatu pernyataan diperlukan secara sintaktis tetapi kita tidak
ingin kode tersebut dieksekusi. Ini dinamakan pernyataan null, tidak ada yang
terjadi Ketika dieksekusi. Perhatikan contoh berikut:
Contoh Output
for i in "welcome": w
if(i=="c"): e
pass l
print(i) c
o
m
e
w w
e e
l l
o
m
e
Contoh Output
for i in range(1,6): 1
print(i) 2
else: 3
print("the number greater than 6") 4
5
the number greater than
6
Jika pernyataan else digunakan di dalam loop while, bagian else akan dieksekusi
Ketika konsdisi menjadi False. Pernyataan di dalam loop while dan pernyataan di
dalam else juga akan dieksekusi.
Contoh Output
i=1 1
while(i<=5): 2
print(i) 3
i=i+1 4
else: 5
print("the number greater than 5") the number greater than
5
Ada beberapa hal atau istilah yang harus dipahami dan dibahas di dalam bagian
ini, di antaranya:
Fungsi fruitful
Fungsi void
Nilai return
Parameter
Lingkup local dan global
Komposisi fungsi
Rekursi.
Contoh
root = sqrt(25)
sqrt adalah fungsi bawaan Python yang digunakan untuk mendapatkan akar dari
suatu bilangan, dalam hal ini adalah akar 25 = 5.
def function_name(parameters):
"""docstring"""
statement(s)
Sintaks di atas adalah definisi fungsi yang terdiri dari komponen berikut:
Contoh
def add():
a=10
b=20
c=a+b
return c
c=add()
print(c)
Selain fungsi fruitful, ada pula fungsi void. Void menunjukkan bahwa fungsi
tersebut tidak mengembalikan suatu nilai. Contoh dari fungsi void adalah print
yang hanya mencetak teks ke console dan tidak ada nilai yang dikembalikan.
Contoh
def add():
a=10
b=20
c=a+b
print(c)
add()
Keyword return digunakan untuk mengembalikan nilai dari dalam fungsi. Contoh
penggunaan return di dalam fungsi adalah
Parameter Posisi
Jumlah dari parameter di dalam definisi fungsi harus cocok secara tepat dengan
jumlah argument di dalam function call. Perhatikan contoh di bawah ini
Contoh Output
def student( name, roll ): George 98
print(name,roll)
student(‚George‛, 98)
Contoh Output
def student(name, roll, mark): 90 102 bala
print(name,roll,mark)
student(90,102,"bala")
Parameter Default
Python memungkinkan parameter fungsi mempunyai nilai default; jika fungsi
dipanggil tanpa argument, parameter memperoleh nilai defaultnya yang
dicantumkan di dalam definisi fungsi.
student(‚Joko‛)
student(‚Budiman‛)
Contoh Output
def student(name,*mark): bala (102 ,90)
print(name, mark)
student(‚bala‛,102,90)
Cakupan dari suatu variabel mengacu pada tempat dimana kita dapat
melihat atau mengakses variabel.
Suatu variabel dengan cakupan global dapat diakses dan digunakan di
mana saja dalam program.
Ini dapat dibuat dengan mendefinisikan variabel di luar fungsi.
Contoh Output
a=50 #variabel global 70
def add():
b=20 #variabel lokal
c=a +b
print(c) 20
def sub(): 50
b=30
c=a-b
print(c)
print(a)
Contoh Output
def add():
b=20 #variabel lokal
c=a+b
print(c) 70
def sub():
b=30 #variabel lokal
c=a-b
print(c) 20
print(a) error
print(b) error
Komposisi Fungsi adalah kemampuan untuk memanggil satu fungsi dari dalam
fungsi lainnya. Ini merupakan cara untuk menngkombinasikan fungsi-fungsi
sehingga hasil dari setiap fungsi dilewatkan (pass) sebagai argument dari fungsi
berikutnya. Dengan kata lain, output dari satu fungsi diberikan sebagai input dari
fungsi lain dikenals ebagai komposisi fungsi.
Contoh Output
def add(a,b):
c = a + b
return c
900
def mul(c,d):
e = c * d
return e
c=add(10,20)
e=mul(c,30)
print(e)
Suatu fungsi yang memanggil dirinya sendiri sampai dicapai suatu nilai basis
(dasar, titik henti dari function call) dinamakan sebagai fungsi rekursif.
n=eval(input("Masukkan bilangan:"))
fact=fact(n)
print("Faktorial:",fact)
Penjelasan:
9.2 String
String merupakan tipe data di Python yang dapat dianggap sebagai teks. Beberapa
istilah yang perlu dipahami adalah
String
Slices
Immutability
Fungsi dan Metode String
Modul String
Python tidak menyediakan tipe data khusus untuk karakter. Suatu String yang
berukuran panjang satu diperlakukan sebagai karakter.
Indexing
Slicing
Concatenation
Repetition
Membership
Katakanlah kita mempunya String “HELLO”. Indexing yang digunakan sebagai basis
untuk mengakses elemen atau item dari suatu String diperlihatkan pada gambar di
bawah ini.
String A H E L L O
Indeks Positif 0 1 2 3 4
Indeks Negatif -5 -4 -3 -2 -1
Slice String
Bagian tertentu dari suatu string disebut substring atau slice. Proses mengekstrak
sub string tertentu tersebut dari suatu string dinamakan slicing.
namaString.namaMetode()
a=‛happy birthday‛
Modul String
Modul merupakan suatu file yang mengandung definisi, fungsi dan pernyataan
dalam Bahasa Python. Pustaka standar dari Python dapat diperluas (diextend)
menggunakan modul. Isi dari modul dapat digunakan di dalam program setelah
modul tersebut diimpor terlebih dahulu. Fungsi, variabel dan konstanta dapat
Husni & Aeri Rachmad | 101
diakses dengan menyebutkan nama modul atau aliasnya. Python secara default
telah menyediakan banyak modul seperti math, random, dan string. Cara
mengimport modul standar dalam persis dengan cara mengimport modul yang
dibuat oleh pengguna (user-defined).
Contoh Output
import string
print(string.punctuation !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
) 0123456789
print(string.digits) 0123456789abcdefghijklmnopqrstuvwxyzABCDEFG
print(string.printable) HIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-
print(string.capwords("h ./:;<=>?@[\]^_`{|}~
appy birthday")) Happy Birthday
print(string.hexdigits) 0123456789abcdefABCDEF
print(string.octdigits) 01234567
Karakter Escape
Contoh
a = larik.array(‘i’, [1,2,3,4])
dimana:
array : nama fungsi di dalam modul array
larik : nama alias dari modul array
i : tipe data integer
namaarray.fromlist(daftar nama)
for i in a:
sum=sum+i
print(sum)
2. Digunakan untuk
>>>a.append(6)
append() menambahkan pada ujung
[2,3,4,5,6]
array.
3. Digunakan untuk
insert(index, >>>a.insert(2,10 menambahkan nilai pada
element) ) [2,3,10,5,6] posisi yang ditetapkan dalam
argumen.
4. Digunakan untuk
menghapus elemen pada
>>>a.pop(1)
pop(index) posisi yang disebutkan
[2,10,5,6]
dalam argument, dan
mengembalikannya.
5. >>>a.index(2)
index(element) Diguakan untuk memperoleh
0
indeks dari nilai tertentu.
7. Digunakan untuk
count() a.count()
menghitung jumlah elemen
suatu array
print(root)
for i in a:
sum=sum+i
print("Jumlah:",sum)
106 | Algoritma Pemograman Pendekatan Praktis Menggunan Python
Pencarian Linier
a=[20,30,40,50,60,70,89] [20, 30, 40, 50, 60, 70,
print(a) 89] Masukkan elemen
search=eval(input("Masukkan elemen dicari:30 Elemen
dicari:")) ditemukan di: 2
for i in range(0,len(a),1):
if(search==a[i]):
print("Elemen ditemukan di:",i+1)
break
else:
print("Tidak ditemukan.")
Pencarian Biner
a=[20, 30, 40, 50, 60, 70, 89] [20, 30, 40, 50, 60, 70,
print(a) 89]
search=eval(input("Masukkan item Masukkan item dicari:30
dicari:")) Item ditemukan di posisi
start=0 2
stop=len(a)-1
while(start<=stop):
mid=(start+stop)//2
if(search==a[mid]):
print("Item ditemukan di
posisi",mid+1)
break
elif(search<a[mid]):
stop=mid-1
else:
start=mid+1
else:
print("Tidak ditemukan.")