Memahami Control Flow dan Logical Operators

Dalam pemrograman, memahami control flow (aliran kontrol) adalah konsep penting karena dengannya kita bisa mengarahkan jalannya program berdasarkan kondisi tertentu. Python menyediakan beberapa alat untuk mengontrol aliran program, seperti pernyataan if, else, dan elif, serta operator logika untuk menangani pengkondisian yang lebih kompleks.

Control Flow dengan if / else dan Conditional Operators

Dengan menggunakan if dan else, kita bisa mengarahkan program agar membuat keputusan berdasarkan kondisi yang diberikan. Pernyataan if mengevaluasi ekspresi dan menjalankan blok kode jika kondisi tersebut benar (True).

Contoh:

age = 18

if age >= 18:
    print("You are an adult.")
else:
    print("You are not an adult.")

Pada contoh di atas, jika age lebih besar atau sama dengan 18, maka pesan yang ditampilkan adalah "You are an adult.". Jika tidak, pesan yang ditampilkan adalah "You are not an adult.".

Nested if dan elif

Nested if statements adalah kondisi di mana suatu if berada di dalam kondisi if lainnya. Hal ini memungkinkan kita untuk memeriksa beberapa kondisi secara berurutan. Alternatif yang lebih ideal adalah menggunakan elif (singkatan dari else if), elif digunakan untuk memeriksa beberapa kondisi dengan cara yang lebih sederhana dan lebih mudah dibaca daripada nested if.

Contoh dengan Nested if:

score = 85

if score >= 90:
    print("Grade: A")
else:
    if score >= 80:
        print("Grade: B")
    else:
        print("Grade: C")

Contoh dengan elif:

score = 85

if score >= 90:
    print("Grade: A")
elif score >= 80:
    print("Grade: B")
else:
    print("Grade: C")

Multiple If

Penggunaan if ganda memungkinkan kita untuk memeriksa beberapa kondisi secara independen. Tidak seperti elif, setiap if akan dievaluasi, bahkan jika kondisi sebelumnya telah terpenuhi.

Contoh:

score = 85
attendance = 90

if score >= 80:
    print("Passed the exam.")
if attendance >= 85:
    print("Good attendance.")

Pada contoh di atas, kedua kondisi if akan dievaluasi secara independen. Jika score lebih besar atau sama dengan 80, maka "Passed the exam." akan ditampilkan. Jika attendance lebih besar atau sama dengan 85, maka "Good attendance." akan ditampilkan.

Logical Operators

Dengan operator logika, kita bisa menggabungkan beberapa kondisi menjadi satu ekspresi. Python mendukung tiga operator logika utama: and, or, dan not.

Operatorand:

Kondisi dengan and hanya akan benar jika kedua ekspresi benar.

Contoh:

score = 85
attendance = 90

if score >= 80 and attendance >= 85:
    print("Excellent student.")

Pada contoh di atas, pesan "Excellent student." hanya akan ditampilkan jika score lebih besar atau sama dengan 80 dan attendance lebih besar atau sama dengan 85.

Operatoror:

Kondisi dengan or akan benar jika salah satu dari ekspresi tersebut benar.

Contoh:

score = 70
attendance = 90

if score >= 80 or attendance >= 85:
    print("Good student.")

Pada contoh di atas, pesan "Good student." akan ditampilkan jika salah satu dari kondisi tersebut terpenuhi.

Operatornot:

Operator not membalikkan nilai dari ekspresi logika.

Contoh:

is_raining = False

if not is_raining:
    print("Let's go for a walk.")

Pada contoh di atas, pesan "Let's go for a walk." akan ditampilkan jika is_raining adalah False.

Contoh Program: Adventure Quest

Sebagai contoh penerapan dari semua konsep yang telah kita bahas, mari kita buat sebuah program permainan yang menentukan jalur petualangan berdasarkan pilihan pemain.

print("Welcome to Adventure Quest.")
print("Your mission is to find the hidden treasure.")

# Starting the game
choice1 = input('You\'re in a dense forest. You see two paths ahead. Where do you want to go? Type "left" or "right" \n').lower()
if choice1 == "left":
    choice2 = input('You encounter a river. There is a bridge and a boat. Type "bridge" to cross the bridge or "boat" to take the boat across. \n').lower()
    if choice2 == "bridge":
        choice3 = input("You safely cross the bridge. There are three caves ahead: one dark, one lit, and one with strange noises. Which cave do you enter? Type 'dark', 'lit', or 'noisy'. \n").lower()
        if choice3 == "dark":
            print("You stumble in the darkness and fall into a pit. Game Over.")
        elif choice3 == "lit":
            print("You find a treasure chest filled with gold! You Win!")
        elif choice3 == "noisy":
            print("A group of bats swarms you. Game Over.")
        else:
            print("You chose a cave that doesn't exist. Game Over.")
    else:
        print("The boat capsizes and you drown. Game Over.")
else:
    choice2 = input('You see a tall mountain. You can either climb it or go around it. Type "climb" to climb the mountain or "around" to go around it. \n').lower()
    if choice2 == "climb":
        choice3 = input("You reach the top of the mountain and see a temple. There are three entrances: one guarded by a statue, one by a fire, and one by a lion. Which entrance do you choose? Type 'statue', 'fire', or 'lion'. \n").lower()
        if choice3 == "statue":
            print("The statue comes to life and attacks you. Game Over.")
        elif choice3 == "fire":
            print("You walk through the fire unharmed and find the treasure! You Win!")
        elif choice3 == "lion":
            print("The lion roars and chases you away. Game Over.")
        else:
            print("You chose an entrance that doesn't exist. Game Over.")
    else:
        print("You get lost in the forest and can't find your way back. Game Over.")

Penjelasan Program:

  1. Penyambutan Pemain: Program dimulai dengan sambutan dan penjelasan misi.

  2. Aliran Kontrol dan Pengambilan Keputusan:

    • Pemain diberi pilihan untuk pergi ke "left" atau "right".

    • Berdasarkan pilihan pertama, pemain kemudian dihadapkan dengan pilihan lain, seperti "bridge" atau "boat", dan seterusnya.

    • Setiap pilihan mengarahkan pemain ke hasil yang berbeda, termasuk kemungkinan menang atau tidak.

  3. Nested if Statements:

    • Program menggunakan nested if statements untuk mengelola alur keputusan berdasarkan input dari pemain.
  4. Operator Logika:

    • Program ini sederhana dan tidak memerlukan penggunaan operator logika (and, or, not) yang lebih kompleks, namun konsep ini dapat diterapkan untuk membuat kondisi yang lebih kompleks jika diinginkan.

Dengan pemahaman yang baik tentang control flow dan logical operators, kita dapat menulis program yang lebih fleksibel dan interaktif. Semoga artikel ini bermanfaat, selamat belajar!

Source Code: Github