Modul 3 - Pengkondisian - Pengenalan Pemrograman
Modul 3 - Pengkondisian - Pengenalan Pemrograman
Operator perbandingan
Kondisi
Statement if-elif-else
Block program
Nested if
Operator Perbandingan
Selain menghitung (e.g., 4 + 20 ** 2), komputer juga bisa menjawab Yes/No question sederhana, misalnya
apakah nilai yang diinputkan user bilangan positif? Apakah uang yang ingin ditarik nasabah kurang dari limit
pengambilan ATM dan kurang dari uang yang ada di tabungannya?
Jika difikirkan lagi, pertanyaan yang mirip seperti di atas sangat penting bagi banyak program komputer. Dengan
mengetahui jawaban dari pertanyaan-pertanyaan di atas, program bisa memilih aksi yang tepat, seperti
meminta user menginputkan lagi jumlah mahasiswa dengan angka yang valid (e.g., tidak negatif), atau
membatalkan transaksi ATM karena uang yang ingin ditarik melebihi batas pengambilan di ATM.
Dari pertanyaan di atas, komputer hanya akan memiliki 2 kemungkinan jawaban, yaitu:
True (benar/yes)
False (salah/no)
Perhatikan contoh kode berikut, coba beberapa kali dengan memasukkan angka yang berbeda-beda (i.e., positif,
negatif):
Dari contoh di atas, program menanyakan apakah bilangan yang diinputkan user positif atau tidak menggunakan
operator perbandingan > (lebih besar dari).
Berikutnya mari kita lihat jenis operator perbandingan lainnya yang bisa digunakan program untuk bertanya.
Contoh penggunaannya adalah ketika kita ingin memastikan pilihan menu yang diinputkan oleh user.
Selain hasil perbandingan user_pwd == pwd langsung diprint, tentu saja kita bisa simpan di sebuah variable,
untuk digunakan lagi kemudian.
Note
Perhatikan perbedaan antara operator = (assignment), dengan operator == (sama dengan). Mirip
namun sangat berbeda maknanya.
Anda bisa memikirkan contoh pertanyaan lain dan mencoba memformulasikan pertanyaan tersebut dengan
operator ==.
Jawaban yang dihasilkan tentu berlawanan dengan jawaban yang dihasilkan dari operator ==, jika operator ==
menghasilkan True, maka != akan menghasilkan False, dan sebaliknya.
Meskipun jawaban operator != bisa didapat dengan menegasikan (True –> False, False –> True) jawaban dari
operator == dan sebaliknya, namun pada prakteknya kedua operator tetap digunakan. Kita biasa menggunakan
operator == ketika kita lebih tertarik jika kedua nilai yang dibandingkan adalah sama, dan sebaliknya.
Sebagai contoh, setelah user menginputkan menu yang dipilih, maka program akan menampilkan foto dan harga
menu yang dipilih tersebut. Di sini program lebih tertarik untuk mengetahui menu mana yang dipilih oleh user,
maka gunakan operator ==.
Bandingkan jika yang diinginkan adalah sebaliknya. Awalnya foto dan harga ketiga menu ditampilkan ke user,
setelah user menginputkan menu yang dipilih, maka foto menu yang tidak dipilih akan dihilangkan. Dengan kata
lain, program lebih tertarik mengetahui menu mana yang tidak dipilih, maka sebaiknya gunakan operator !=.
Umumnya operator ini digunakan untuk data dengan tipe numerik seperti integer dan floats.
>>> umur = 16
>>> print(umur < 17)
Lebih besar dari atau sama dengan (>=) dan Lebih kecil dari atau
sama dengan (<=)
Mirip seperti >, namun sebagai tambahan operator >= juga menghasilkan True jika nilai kiri sama dengan nilai
kanan. Begitu juga untuk <=.
Meskipun bisa digunakan untuk integer dan floats, operator ini khususnya lebih terasa manfaatnya untuk tipe
data floats, perhatikan contoh berikut.
Kelulusan mata kuliah bisa diketahui dari nilai akhirnya, mahasiswa yang lulus adalah yang dengan nilai minimal
70. Jika nilai bertipe data integer, maka kita bisa tanyakan dengan cara berikut:
nilai > 69
atau
nilai >= 70
Namun jika tipe data nilai adalah floats, maka pilihan kita hanyalah menggunakan operator >=, yaitu nilai >=
70. Hal ini dikarenakan jika menggunakan > 69 maka nilai 69.9 juga akan menjadi True padahal seharusnya False.
Kita harus berhati-hati menggunakan operator >= atau <=, apalagi jika digunakan bersamaan untuk
membandingkan dua hal yang sama, seperti contoh kedua ketika var = 5, kedua pertanyaan menghasilkan True.
Meskipun anda belum melihat letak masalahnya, saat ini cukup diingat bahwa anda harus berhati-hati dalam
memilih menggunakan operator.
>>> var = 5
>>> print(var >= 5)
>>> print(var <= 5)
1. ()
2. **
3. +, - unary
4. *, /, %, //
5. +, - binary
Note
Sejauh ini kita selalu menggunakan Python prompt/console untuk menuliskan kode. Hal itu
dikarenakan kode yang dibuat tidak terlalu panjang dan agar anda fokus memahami perilaku setiap
baris kode yang dijalankan. Mulai saat ini kita akan beralih menggunakan Editor mengingat kode yang
ditulis semakin panjang, dan anda lebih mudah mengedit kode tanpa perlu menulis ulang dari awal.
Pengkondisian
Setelah sebelumnya kita tau cara bertanya dan jawaban yang mungkin dihasilkan, maka di bagian ini kita akan
membahas bagaimana memanfaatkan jawaban True atau False tersebut.
Perlu ditekankan, bahwa komputer hanya bisa menjawab dengan True atau False dan tidak bisa keduanya
sekaligus. Kemungkinan lain adalah program berhenti dieksekusi karena terdapat error pada kode yang kita buat
sehingga tidak menghasilkan salah satu jawaban tersebut.
Kondisi-Aksi
Setiap program komputer umumnya terdiri dari banyak aksi, bayangkan apa yang bisa dilakukan oleh sebuah
aplikasi chatting di handphone anda:
mengirim pesan
menghapus pesan
menelfon
membuat group baru
masuk ke halaman setting
dan lain-lain
Meskipun ada banyak aksi yang mungkin, namun biasanya aksi-aksi tersebut tidak dilakukan serta merta dan
secara bersamaan. Di satu waktu ada aksi yang dijalankan, dan ada aksi yang tidak dijalankan. Biasanya ada
kondisi tertentu yang mentrigger satu atau lebih aksi untuk dijalankan.
Misalnya, apakah menu setting disentuh, jika iya maka program akan menampilkan halaman setting.
Apakah ada pesan masuk, jika True, maka bunyikan nada masuk dan getar.
Apakah nilai akhir lebih dari 60, jika iya tampilkan pesan “Lulus”.
nilai_akhir = int(input("Nilai Akhir: "))
kondisi = nilai_akhir > 60 #ini adalah kondisi
print("Lulus") #ini adalah aksi yang ingin dijalankan hanya ketika kondisi bernilai True
Nilai Akhir: 40
Lulus
Di kode di atas kita dapat menuliskan kondisi dan aksi, namun aksi tersebut belum bergantung terhadap nilai
kondisi. Baik kondisi True ataupun False, aksi print("Lulus") tetap dijalankan. Berikut ini kita akan melihat
bagaimana agar aksi dapat bergantung dengan kondisi.
Statement if
Agar statement aksi hanya dijalankan ketika kondisi tertentu bernilai True, maka Python menyediakan instruksi
khusus yang disebut conditional statement dengan keyword if. Berikut adalah bentuk penggunaannya:
if <kondisi>:
<aksi>
Di sinilah peran pertanyaan dan jawaban True/False yang kita pelajari sebelumnya. Untuk memformulasikan
kondisi yang mentrigger aksi, kita biasa gunakan Yes/No question, lalu statement aksi di bawahnya hanya akan
dijalankan jika jawaban dari kondisi adalah True.
Nilai Akhir: 40
Code Run Share
3
main.py Python3
Choose File No file chosen Remix
Perhatikan, setelah digunakan statement if, maka ketika nilai akhir yang diinputkan adalah 40, program tidak
mem-print string "Lulus", karena kondisi bernilai False. Coba jalankan kembali program di atas, dan masukkan
nilai 80.
if kondisi == True:
sedangkan kondisi itu sendiri bernilai boolean yang artinya True atau False. Jadi, sebenarnya sedikit pemborosan
kalau kita menuliskan:
ketika kondisi bernilai True, maka: True == True, dan hasilnya adalah True
ketika kondisi bernilai False, maka: False == True, dan hasilnya adalah False dengan kata lain, kita bisa
menghapus == True, karena hasilnya akan sama saja.
bil = 4
var_kondisi = bil >= 5 #Apakah nilai bil lebih dari atau sama dengan 5?
if var_kondisi:
print("Bilangan lebih dari atau sama dengan 5") #jika var_kondisi bernilai True, maka statement
ini akan dijalankan
Jika bil kurang dari 5, maka aksi print("Bilangan lebih dari atau sama dengan 5") di-skip (tidak dieksekusi)
oleh komputer. Namun jika bil diganti dengan 10 misalnya, maka akan tampak di console hasil eksekusi perintah
print().
if pwd == "rahasia":
print("Password benar")
Latihan
Buatlah program untuk memberikan warning “Inputan tidak boleh negatif!”, jika angka yang diberikan adalah
negatif.
Statement if-else
Pada statement if kita telah melihat bahwa jika kondisi True maka ada aksi yang akan dijalankan, namun
bagaimana jika kita juga perlu menjalankan suatu aksi lain jika kondisi False?
Python menyediakan keyword else yang bisa digunakan setelah if yang artinya aksidefault di bawah else akan
dijalankan jika kondisi bernilai False.
if kondisi:
aksi
else:
aksidefault
if pwd == "rahasia":
print("Password benar")
else:
print("Password salah")
Pertama, kondisi setelah if akan dievaluasi nilainya apakah True atau False,
Jika kondisi bernilai True, maka aksi yang berada di bawah if akan dijalankan, lalu if-else statement
selesai.
Jika kondisi bernilai False, maka aksi di bawah if akan diskip, dan yang dijalankan adalah aksi di bawah
else, lalu if-else statement selesai.
Perhatikan bahwa, pada statement if-else pasti ada salah satu aksi yang dijalankan. Sementara jika tanpa else
ada kemungkinan tidak ada aksi yang dijalankan dari statement if.
Statement elif
Adanya else telah membuat program mampu memilih antara 2 buah aksi, namun di dunia nyata tak jarang ada
lebih dari 2 pilihan aksi. Misalnya, contoh menu makanan kita sebelumnya terdapat 3 jenis menu. Contoh lain,
kontrol game komputer sederhana yang bisa menggerakkan pemain ke 4 pilihan arah (i.e., maju, mundur, kiri,
kanan).
Untuk mengakomodasi hal tersebut, Python menyediakan keyword lainnya yaitu elif yang bisa diintegrasikan
dengan statement if.
elif adalah singkatan dari else if, bedanya dengan else adalah elif tidak serta merta akan menjalankan
aksinya jika kondisi if di atasnya bernilai False, melainkan ia akan melakukan pengecekan tambahan pada
kondisi kedua yang berada setelah elif. Jika kondisi kedua bernilai True, barulan aksi elif dijalankan.
if kondisi1:
aksi1
elif kondisi2:
aksi2
Namun jika ada banyak kondisi, maka kita bisa menggunakan beberapa elif atau bisa ditambahkan else di akhir
jika ada aksi default.
if kondisi1:
aksi1
elif kondisi2:
aksi2
elif kondisi3:
aksi3
elif kondisi4:
aksi4
else:
aksidefault
Perhatikan dan jalankan kode berikut ini, lalu ubahlah nilai variable menu ke 2, 3, dan 4 dan jalankan lagi “untuk
memahami efek penggunaan elif:
if menu == 1:
print("Nasi Goreng: Rp. 15.000")
elif menu == 2:
print("Ayam Bakar: Rp. 20.000")
elif menu == 3:
print("Mie Rebus: Rp. 10.000")
Jika menu = 1, maka kode di atas akan menghasilkan Nasi Goreng: Rp. 15.000. Jika menu = 2, Ayam Bakar: Rp.
20.000 akan tampil di layar. Namun jika menu diassign dengan selain 1, 2, atau 3, maka tidak ada aksi yang
dieksekusi.
Pada statement if, program selalu mulai memeriksa dari kondisi paling atas. Lalu jika False akan berpindah ke
elif di bawahnya, dan sterusnya. Statement if akan selesai jika:
ada kondisi yang bernilai True, maka aksinya dijalankan, lalu keluar dari statement if.
atau semua kondisi telah diperiksa.
if menu == 1:
print("Nasi Goreng: Rp. 15.000")
elif menu == 1: #kondisi sama persis dengan kondisi pertama
print("Ayam Bakar: Rp. 20.000")
elif menu == 3:
print("Mie Rebus: Rp. 10.000")
Jika kode di atas dieksekusi, terlihat hanya aksi1 saja yang dijalankan, padahal kondisi kedua juga bernilai True,
namun aksi2 tidak dijalankan. Hal ini dikarenakan, ketika kondisi pertama bernilai True, maka program akan
mengeksekusi aksi1, lalu setelahnya langsung keluar dari statement if tanpa memeriksa kondisi di bawahnya.
Aksi default
Dalam merumuskan kondisi-kondisi di statement if, kita perlu memperhatikan semua kemungkinan nilai
variable yang berada di kondisi. Hal ini untuk memastikan agar program kita selalu bisa memberikan respon
yang tepat.
Seperti pada contoh kode menu di atas, ketika user menginputkan menu selain 1, 2, atau 3, maka program tidak
memberikan respon apapun. Meskipun tidak membuat error, ada kalanya kita ingin agar program memberikan
informasi ke user tentang nilai yang valid.
Untuk menangani nilai variable selain yang sudah ditangani oleh kondisi-kondisi pada if, kita bisa menambahkan
else di akhir statement if.
if menu == 1:
print("Nasi Goreng: Rp. 15.000")
elif menu == 2:
print("Ayam Bakar: Rp. 20.000")
elif menu == 3:
print("Mie Rebus: Rp. 10.000")
else:
print("menu tidak valid")
Dengan penambahan else di akhir, maka kita bisa memberikan sebuah aksi default yang akan dijalankan ketika
semua kondisi if di atasnya bernilai False.
Rangkaian if
dimulai dari if
lalu secara opsional diikuti satu atau lebih elif
lalu secara opsional diakhiri oleh else.
Urutan ini tidak bisa diubah, jika diubah akan menyebabkan error.
kodeMK = "A1"
else:
print("Kode tidak valid")
elif kodeMK == "A2":
print("Kalkulus")
elif kodeMK == "A3":
print("Pengenalan Pemrograman")
if kodeMK == "A1":
print("Bahasa Indonesia")
if independen
Jika ada statement if kemudian diikuti if yang lain yang memiliki indentasi yang sama, maka kedua if tersebut
bukanlah satu rangkaian alias independen. Konsekuensi if independen adalah, apapun nilai kondisi (True atau
False) pada if pertama, program tetap akan mengevaluasi kondisi pada if kedua, sehingga memungkinkan aksi
pada masing-masing if akan dijalankan semuanya.
var = 15
if var % 3 == 0:
print("Kelipatan 3")
if var % 5 == 0:
print("Kelipatan 5")
Meskipun kondisi pertama sudah bernilai True dan aksi pertama dijalankan, program tetap saja mengevaluasi
kondisi kedua dan menjalankan aksi kedua.
Block statements-Indentasi
Dari contoh-contoh sebelumnya, kita lihat terdapat indentasi (beberapa spasi dari kiri yang membuat kode
menjorok ke dalam) pada penulisan statement aksi. Indentasi tersebut menentukan bahwa aksi tersebut
merupakan bagian dari statement if.
bil = 4
if (bil > 0):
print("Bilangan positif")
Maka akan terjadi error IndentationError: expected an indented block. Artinya Python mengharapkan ada
block di bawah statement if yang terindentasi.
Block statement adalah urutan satu atau lebih statement yang bertindak seperti satu kesatuan, sehingga jika
satu statement dijalankan, statement lainnya di block yang sama juga akan dijalankan. Block pada Python
ditandai dengan indentasi. Seperti pada gambar di atas, Block 1 merupakan keseluruhan statement pada
program, sementara Block 2 merupakan bagian dari Block 1 dan seterusnya.
bil = 10 #1 block1
if bil >= 0: #2 block1
print("Positif") #3 block2a
if bil % 2 == 0: #4 block2a
print("Genap") #5 block3a
else: #6 block2a-lanjutan
print("Ganjil") #7 block3b
else: #8 block1-lanjutan
print("Bilangan") #9 block2b
print("Negatif") #10 block2b
print("Selesai") #11 block1-lanjutan
Suatu block dimulai dengan indentasi dan akan berakhir ketika menemukan statement yang lebih kurang
indentasinya. Contohnya, block2a dimulai pada baris ke-3 dan berakhir pada baris ke-7, karena baris ke-8
memiliki indentasi yang lebih sedikit. Sementara itu, jika menemukan statement dengan indentasi lebih dalam
(block baru), maka block tetap berlanjut.
Perlu diperhatikan bahwa selain statement if, ada beberapa statement lagi (e.g., looping, function) yang
mengharuskan ada block baru yang lebih dalam di bawahnya , dan semua statement yang membutuhkan
block tersebut diakhiri dengan : (titik dua).
Multi-aksi
Pada contoh-contoh sebelumnya kita selalu melihat bahwa aksi yang ada pada statement if berjumlah 1 saja,
namun setelah kita tau bahwa if mengharapkan sebuah block, dan block artinya satu atau lebih statement, maka
tentu kita bisa menuliskan banyak aksi dengan indentasi yang sama di bawah statement if, sebagaimana
contoh pada baris ke-9 dan ke-10 pada kode di atas.
Tidak semua bahasa pemrograman menggunakan indentasi sebagai penanda block, bahkan lebih banyak yang
menggunakan { dan } (kurung kurawal) sebagai pembuka dan penutup block, seperti pada bahasa C, Java, dan
Javascript. Meskipun sering terlihat ada indentasi di bahasa-bahasa tersebut, namun hal tersebut bukanlah
sebuah keharusan melainkan style penulisan kode saja.
PEP 8-indentation
Python memperbolehkan anda menggunakan jumlah spasi atau tab berapapun untuk menandakan indentasi.
Namun, berdasarkan PEP 8 maka direkomendasikan untuk menggunakan 4 spasi untuk setiap level indentasi.
Sedangkan penggunaan tab tidak disarankan.
if True:
print("4 spasi") #indentasi dengan 4 spasi
print("tab") #indentasi dengan tab
Nested if-else
Terkadang kita membutuhkan beberapa kali pengecekan kondisi sebelum bisa menentukan suatu aksi yang akan
dieksekusi oleh program. Sebagai contoh, misalkan sebuah perusahaan akan memberikan bonus kepada
karyawan dengan kriteria sebagai berikut:
bonus diberikan hanya untuk karyawan dengan masa kerja >=5 tahun (karyawan baru tidak mendapatkan
bonus)
karyawan dengan umur > 50 tahun mendapat bonus 20%, selainnya akan mendapat bonus 10%
Untuk menghitung bonus yang didapatkan setiap karyawan, maka setelah kita mendapatkan input berupa
masa_kerja dan umur, maka kita perlu melakukan 2 kali pengecekan kondisi, 1) apakah masa_kerja >= 5 tahun?
jika ya, maka kita akan lanjutkan pengecekan 2) apakah umur > 50 tahun?.
Pengecekan kondisi bertingkat tersebut disebut nested if-else. Perhatikan implementasinya berikut ini:
if masa_kerja >= 5:
if umur >50:
print("Anda mendapatkan bonus 20%")
else:
print("Anda mendapatkan bonus 10%")
else:
print("Maaf anda belum mendapatkan bonus")
Tentu saja jumlah nested if-else tersebut tidak terbatas, sebagai contoh kita bisa mempunyai 3 tingkatan yaitu
if di dalam if di dalam if seperti kode di bawah ini:
Bilangan ke-1 : 1
Bilangan ke-2 : 2
Bilangan ke-3 : 3
3 2 1