---LESSON_INFO--- **Learning Objectives:** - Memahami struktur pengambilan keputusan dalam bahasa C - Belajar menggunakan pernyataan if, else if, dan else - Mengenal operator logika dalam C - Memahami cara membuat keputusan dalam program - Mengenal shorthand conditional operator **Prerequisites:** - Pemahaman tentang variabel dan tipe data - Pemahaman dasar tentang program C ---END_LESSON_INFO--- # Kondisi dalam C **Kondisi dalam bahasa C** memungkinkan program membuat keputusan berdasarkan nilai-nilai yang dievaluasi. Dengan kondisi, program bisa mengeksekusi blok kode yang berbeda tergantung pada apakah ekspresi tertentu bernilai benar atau salah. ## Pernyataan `if` **Pernyataan `if`** digunakan untuk mengeksekusi blok kode hanya jika kondisi tertentu terpenuhi (bernilai benar). ```c int score = 85; if (score > 80) { printf("Nilai Anda sangat baik!"); } ``` ## Pernyataan `else` **Pernyataan `else`** digunakan untuk mengeksekusi blok kode jika kondisi dalam `if` tidak terpenuhi (bernilai salah). ```c int score = 75; if (score > 80) { printf("Nilai Anda sangat baik!"); } else { printf("Nilai Anda perlu ditingkatkan."); } ``` ## Pernyataan `else if` **Pernyataan `else if`** digunakan untuk mengecek kondisi tambahan jika kondisi pertama dalam `if` tidak terpenuhi. ```c int score = 95; if (score >= 90) { printf("Nilai Anda A"); } else if (score >= 80) { printf("Nilai Anda B"); } else if (score >= 70) { printf("Nilai Anda C"); } else { printf("Nilai Anda perlu ditingkatkan."); } ``` ## Shorthand Conditional (Ternary Operator) C juga menyediakan **shorthand conditional operator** (ternary operator) yang merupakan cara singkat untuk menulis pernyataan `if-else` dalam satu baris: ```c int score = 85; char *result = (score >= 75) ? "Lulus" : "Tidak Lulus"; printf("Status: %s", result); ``` Formatnya adalah: `condition ? value_if_true : value_if_false` ## Kondisi Bersarang (Nested Conditions) Anda bisa **menyarangkan pernyataan kondisional** di dalam pernyataan kondisional lainnya: ```c int age = 25; int has_license = 1; if (age >= 18) { if (has_license == 1) { printf("Anda bisa mengemudi."); } else { printf("Anda cukup umur tapi belum punya SIM."); } } else { printf("Anda belum cukup umur untuk mengemudi."); } ``` ## Operator Logika **Operator logika** digunakan untuk menggabungkan kondisi: ### AND (&&) Mengembalikan benar jika **kedua kondisi** benar: ```c int age = 25; int has_license = 1; if (age >= 18 && has_license == 1) { printf("Anda bisa mengemudi secara legal."); } ``` ### OR (||) Mengembalikan benar jika **salah satu kondisi** benar: ```c int has_license = 0; int has_passenger = 1; if (has_license == 1 || has_passenger == 1) { printf("Anda bisa berkendara (sendiri atau dengan penumpang)."); } ``` ### NOT (!) Mengembalikan kebalikan dari kondisi: ```c int has_license = 0; if (!has_license) { printf("Anda belum punya SIM."); } ``` ## Switch Statement **Switch statement** adalah alternatif untuk pernyataan `if-else if-else` ketika Anda perlu membandingkan nilai variabel dengan beberapa kemungkinan nilai. Switch sangat berguna ketika Anda memiliki banyak kondisi yang bergantung pada nilai tunggal. ```c int day = 3; switch (day) { case 1: printf("Senin"); break; case 2: printf("Selasa"); break; case 3: printf("Rabu"); break; case 4: printf("Kamis"); break; case 5: printf("Jumat"); break; default: printf("Akhir pekan"); break; } ``` ### Keyword dalam Switch: - **`switch`**: Memulai pernyataan switch - **`case`**: Menentukan nilai yang akan dibandingkan - **`break`**: Menghentikan eksekusi switch (penting untuk mencegah fall-through) - **`default`**: Menyediakan blok kode yang akan dieksekusi jika tidak ada case yang cocok ### Fall-through Jika Anda **tidak menggunakan `break;`**, program akan melanjutkan mengeksekusi semua case berikutnya: ```c int num = 1; switch (num) { case 1: printf("Nomor 1\\n"); case 2: printf("Nomor 2\\n"); case 3: printf("Nomor 3\\n"); default: printf("Nomor lain\\n"); } ``` Output: ``` Nomor 1 Nomor 2 Nomor 3 Nomor lain ``` ## Contoh Nyata Penggunaan Kondisi Berikut adalah contoh penggunaan kondisi dalam situasi nyata: ```c #include int main() { float temperature = 25.0; int is_weekend = 1; printf("Suhu saat ini: %.1f°C\n", temperature); if (temperature > 30) { printf("Cuaca sangat panas! "); if (is_weekend) { printf("Bagus untuk liburan pantai.\n"); } else { printf("Minumlah air yang cukup.\n"); } } else if (temperature > 20) { printf("Cuaca hangat dan nyaman.\n"); if (is_weekend) { printf("Sempurna untuk aktivitas luar ruangan.\n"); } else { printf("Saat yang baik untuk bekerja produktif.\n"); } } else { printf("Cuaca dingin, pakailah jaket.\n"); } // Menggunakan ternary operator char *weather_status = (temperature > 25) ? "hangat" : "dingin"; printf("Kondisi cuaca saat ini: %s\n", weather_status); // Contoh switch statement int day_of_week = 3; printf("Hari ini adalah: "); switch (day_of_week) { case 1: printf("Senin"); break; case 2: printf("Selasa"); break; case 3: printf("Rabu"); break; case 4: printf("Kamis"); break; case 5: printf("Jumat"); break; default: printf("Akhir pekan"); break; } printf("\n"); return 0; } ``` **Output:** ``` Suhu saat ini: 25.0°C Cuaca hangat dan nyaman. Saat yang baik untuk bekerja produktif. Kondisi cuaca saat ini: hangat Hari ini adalah: Rabu ``` **Tips:** - Gunakan **indentasi** yang konsisten untuk membuat kode lebih mudah dibaca - Gunakan **komentar** untuk menjelaskan kondisi yang kompleks - Hindari **nested conditions** yang terlalu dalam karena bisa membuat kode sulit dipahami - Gunakan **ternary operator** hanya untuk kondisi sederhana - Gunakan **switch statement** ketika Anda memiliki banyak kondisi yang bergantung pada nilai tunggal **Referensi:** - [https://www.w3schools.com/c/c_conditions.php](https://www.w3schools.com/c/c_conditions.php) - [https://www.w3schools.com/c/c_conditions_else.php](https://www.w3schools.com/c/c_conditions_else.php) - [https://www.w3schools.com/c/c_conditions_elseif.php](https://www.w3schools.com/c/c_conditions_elseif.php) - [https://www.w3schools.com/c/c_conditions_short_hand.php](https://www.w3schools.com/c/c_conditions_short_hand.php) - [https://www.w3schools.com/c/c_conditions_nested.php](https://www.w3schools.com/c/c_conditions_nested.php) - [https://www.w3schools.com/c/c_conditions_logical.php](https://www.w3schools.com/c/c_conditions_logical.php) - [https://www.w3schools.com/c/c_conditions_reallife.php](https://www.w3schools.com/c/c_conditions_reallife.php) - [https://www.w3schools.com/c/c_switch.php](https://www.w3schools.com/c/c_switch.php) ---EXERCISE--- # Latihan: Sistem Menu Restoran Dalam latihan ini, Anda akan membuat program sederhana yang meniru sistem menu restoran menggunakan switch statement. **Requirements:** - Gunakan switch statement untuk menentukan pesanan berdasarkan nomor menu - Gunakan pernyataan if-else untuk menentukan harga makanan - Tampilkan pesanan dan harganya - Gunakan default case untuk menangani nomor menu yang tidak valid Menu: - 1: Nasi Goreng - Rp. 25000 - 2: Mie Ayam - Rp. 20000 - 3: Soto Ayam - Rp. 22000 - 4: Bakso - Rp. 18000 - 5: Es Teh - Rp. 5000 **Expected Output:** ``` Pesanan: Nasi Goreng Harga: Rp. 25000 ``` Try writing your solution in the code editor below! ---EXPECTED_OUTPUT--- Pesanan: Nasi Goreng Harga: Rp. 25000 ---END_EXPECTED_OUTPUT--- ---INITIAL_CODE--- #include int main() { int menu_number = 1; // TODO: Gunakan switch statement untuk menentukan pesanan char *food_name; int price; // TODO: Tampilkan pesanan dan harganya printf("Pesanan: %s\n", food_name); printf("Harga: Rp. %d\n", price); return 0; } ---END_INITIAL_CODE--- ---SOLUTION_CODE--- #include int main() { int menu_number = 1; char *food_name; int price; switch (menu_number) { case 1: food_name = "Nasi Goreng"; price = 25000; break; case 2: food_name = "Mie Ayam"; price = 20000; break; case 3: food_name = "Soto Ayam"; price = 22000; break; case 4: food_name = "Bakso"; price = 18000; break; case 5: food_name = "Es Teh"; price = 5000; break; default: food_name = "Menu tidak valid"; price = 0; break; } printf("Pesanan: %s\n", food_name); printf("Harga: Rp. %d\n", price); return 0; } ---END_SOLUTION_CODE---