Modul 1: Percabangan Python - Algoritma-dan-Pemrograman-ITS/DasarPemrograman GitHub Wiki
Daftar Isi
Control Flow
Control Flow adalah cara kita mengatur jalan penyataan, instruksi, dan pemanggilan fungsi suatu program. Tanpa control flow, program kita hanya bergerak dari atas ke bawah saja (sequential). Dalam Python, control flow terdiri dari beberapa struktur, termasuk percabangan (selection) dan perulangan (repetition). Pada modul ini, kita akan fokus pada percabangan terlebih dahulu.
Percabangan
Percabangan memungkinkan kita untuk menentukan kode manakah yang akan kita eksekusi berdasarkan suatu kondisi. Percabangan di bahasa C ada 4, yaitu if
, if-else
, if-elif
, dan switch
.
Percabangan If
Sintaks yang digunakan dalam percabangan menggunakan if
adalah sebagai berikut.
if <Ekspresi/Kondisi>:
// Blok Kode yang akan dieksekusi jika kondisi tersebut benar
Cara kerja percabangan if
yaitu memeriksa dan mengevaluasi suatu kondisi untuk menentukan apakah instruksi selanjutnya pada blok kode di dalam Indentasi akan dijalankan atau tidak oleh program.
- Jika kondisi tersebut bernilai TRUE (1), blok kode yang di dalam indentasi akan dieksekusi.
- Sebaliknya jika kondisi tersebut bernilai FALSE (0), blok kode yang di dalam indentasi akan tidak akan dieksekusi.
Contoh
Sebagai contoh, di dashboard mobil terdapat indikator bahan bakar yang akan menyala jika bahan bakar yang tersisa kurang dari level tertentu (misal kurang dari 10 liter) dengan kondisi “Apakah bahan bakar kurang dari 10 liter?”.
Pada kasus ini terdapat kondisi
- Jika bahan bakar kurang dari 10 liter maka nyalakan lampu indikator.
gasoline = 3
# Jika bahan bakar kurang dari 10 liter
if gasoline < 10:
# Apa yang perlu dilakukan ketika kondisi terpenuhi?
print("Lampu Indikator menyala!")
Output
Lampu Indikator menyala!
Percabangan If-Else
Sintaks yang digunakan dalam percabangan menggunakan if-else
adalah sebagai berikut.
if <Ekspresi/Kondisi>:
// Blok Kode yang akan dieksekusi jika kondisi tersebut benar
else:
// Blok Kode yang akan dieksekusi jika kondisi tersebut salah
Cara kerja percabangan if-else
yaitu memeriksa kondisi dalam if
.
- Jika kondisi tersebut bernilai TRUE (1), Program akan menjalankan blok kode yang di dalam indentasi
if
. - Sebaliknya jika kondisi tersebut bernilai FALSE (0), blok kode di bawah
else
lah yang akan dijalankan.
Sebagai contoh, kita ingin mencari tahu apakah seseorang absen dari kelas atau tidak. Apabila ia tidak hadir, maka absensinya akan dicoret (bernilai X), dan apabila hadir, maka absensinya akan di centang (bernilai V).
Sehingga dari kasus tersebut, didapat dua alternatif kondisi.
- Apabila ia hadir, maka muncul V
- Apabila ia tidak hadir, maka muncul X
hadir = True
if hadir: # Jika orang tersebut hadir
print("V\n")
else:
print("X\n")
Output
V
Percabangan If-Elif
Sintaks yang digunakan dalam percabangan menggunakan if-elif
adalah sebagai berikut.
if <Ekspresi/Kondisi>:
# Blok Kode yang akan dieksekusi jika kondisi tersebut benar
elif <Ekspresi/Kondisi>:
# Blok Kode yang akan dieksekusi jika kondisi `if` salah dan kondisi `elif` benar
# Boleh menambahkan else apabila perlu
Cara kerja percabangan if-elif
yaitu memeriksa kondisi dalam if
.
- Jika kondisi tersebut bernilai TRUE (1), Program akan menjalankan kode di dalam bracket
if
. - Apabila kondisi pertama tidak memenuhi, maka ia akan memerika kondisi didalam
elif
, apabila bernilai TRUE (1), maka ia akan menjalankan blok kode yang di dalam indentasi tersebut, apabila tidak maka ia akan menjalankan sequence selanjutnya. - Apabila kita menyediakan statement else diakhir, maka ketika seluruh kondisi
if
danelif
tidak memenuhi atau FALSE (0), maka secara otomatis ia akan menjalankan perintah di dalamelse
tersebut.
Percabangan Match-Case
Selain penggunaan statement if
untuk memilih di antara banyak alternatif, dalam Python versi 3.10 dan seterusnya, terdapat statement match-case
yang berfungsi untuk memilih di antara banyak alternatif berdasarkan sebuah kondisi. Kondisi pada statemen match berisi ekspresi yang dapat menggunakan sebuah variable tunggal yang akan diperiksa kesamaan nilainya di setiap blok case.
Sintaks dasar untuk match-case
di Python:
match ekspresi:
case pola1:
statement
case pola2:
statement
...
case _:
statement_default
- ekspresi: Ini adalah nilai atau variabel yang akan diperiksa.
- pola: Setiap
case
dapat berisi pola yang akan dicocokkan dengan nilai dari ekspresi. - _: Sebuah wildcard yang digunakan untuk menangkap semua nilai lain yang tidak cocok dengan pola sebelumnya, mirip dengan
default
dalamswitch-case
.
Setiap blok case
dapat berisi satu atau beberapa statement yang akan dieksekusi jika pola cocok dengan nilai dari ekspresi. Jika tidak ada pola yang cocok, maka blok kode case _:
(yang berperan seperti default
) akan dieksekusi.
Contoh:
Berikut adalah contoh penggunaan match-case
dalam Python:
plat_nomor = input("Masukkan huruf awal plat nomor anda: ")
match plat_nomor:
case 'L':
print("Surabaya")
case 'B':
print("Jakarta")
case 'D':
print("Bandung")
case 'N':
print("Malang/Lumajang")
case _:
print("Karakter plat nomor tidak diketahui")
Dalam contoh di atas, ekspresi yang digunakan adalah plat_nomor, di mana case-case nya adalah huruf plat nomor tersebut: 'L'
, 'B'
, 'D'
, 'N'
, dan wildcard _
untuk menangkap semua karakter lainnya.
Penjelasan:
- match plat_nomor: adalah pernyataan utama yang melakukan pencocokan berdasarkan nilai yang diberikan dalam plat_nomor.
- case 'L': adalah salah satu kemungkinan nilai yang dapat dicocokkan dengan plat_nomor. Jika cocok, maka statement yang terkait akan dieksekusi.
- case _: bertindak sebagai penangkap, jika semua
case
tidak ada yang memenuhi.
Operator Kondisional
Operator kondisional mempunyai bentuk sintaks sebagai berikut:
true_value if <Ekspresi/Kondisi> else false_value
- Kondisi: Ekspresi yang akan dievaluasi sebagai True atau False.
- true_value: Nilai yang dikembalikan jika condition adalah True.
- false_value: Nilai yang dikembalikan jika condition adalah False.
Contoh:
mark = int(input("Masukkan Nilai Ujian: "))
print("Lulus\n" if mark >= 75 else "Tidak Lulus\n")
Program di atas ekuivalen dengan:
mark = int(input("Masukkan Nilai Ujian: "))
if mark >= 75:
print("Lulus\n")
else:
print("Tidak Lulus\n")
Soal Latihan
Soal 1
Buatlah program yang dapat menentukan apakah suatu input bilangan dari 0 sampai 999 merupakan bilangan Armstrong.
Sample Input 1
153
Sample Output 1
Merupakan Bilangan Armstrong
Sample Input 2
25
Sample Output 2
Bukan Merupakan Bilangan Armstrong
Catatan: 153 merupakan bilangan armstrong karena 153 = 1^3 + 5^3 + 3^3
Soal 2
Buatlah program yang hanya menerima inputan 0 sampai 999 dan mengeluarkan hasil berupa kalimat terbilang dari angka yang dimasukan.
Sample Input 1
1
Sample Output 1
Satu
Sample Input 2
11
Sample Output 2
Sebelas
Sample Input 3
979
Sample Output 3
Sembilan ratus tujuh puluh sembilan
Soal 3
Buatlah program yang menerima inputan tahun berupa angka, kemudian keluarkan apakah tahun tersebut kabisat atau tidak. Syarat suatu tahun dikatakan kabisat:
- Jika angka tahun itu habis dibagi 400, maka tahun itu merupakan tahun kabisat.
- Jika angka tahun itu tidak habis dibagi 400 tetapi habis dibagi 100, maka tahun itu bukan merupakan tahun kabisat.
- Jika angka tahun itu tidak habis dibagi 400, tidak habis dibagi 100 akan tetapi habis dibagi 4, maka tahun itu merupakan tahun kabisat.
- Jika angka tahun tidak habis dibagi 400, tidak habis dibagi 100, dan tidak habis dibagi 4, maka tahun tersebut bukan merupakan tahun kabisat.
Sample Input 1
1700
Sample Output 1
bukan kabisat
Sample Input 2
2024
Sample Output 2
kabisat