Tutorial Belajar Pascal Part 38: Percabangan Kondisi IF Bersarang dalam Pascal

Di panduan belajar pascal kali ini kita akan membahas penerapan lanjutan dari struktur IF THEN ELSE, yakni menyusun percabangan IF bersarang, atau dikenal pun selaku nested IF.


Konsep Mendasar Kondisi IF Bersarang (Nested IF)

Secara sederhana, IF bersarang atau nested IF ialah pemakaian struktur IF di di IF. Kondisi seperti ini sering digunakan untuk kode program yang telah lumayan kompleks.

Terdapat banyak variasi dari nested IF, tergantung kode program yang ingin kita rancang. Salah satunya ialah selaku berikut:

Di contoh ini saya menempatkan sebuah kondisi IF di di IF (nested IF). Perhatikan bahwa (kode program 1.1) hanya akan dijalankan seandainya kondisi 1 dan kondisi 1.1 terpenuhi. Bila kondisi 1 tak terpenuhi, program akan seketika lompat ke bagian ELSE.

Pascal dan mayoritas bahasa pemrograman lain tak membatasi jumlah IF di di IF. Kamu dapat menyusun struktur yang lebih rumit seperti ini:

Kali ini saya menyusun struktur IF di di IF di di IF (2 level nested IF). Untuk kode program yang panjang seperti ini, kamu mesti hati-hati menentukan kode program mana yang masuk ke di blok IF.

Penulisan indenting (menjorokkan kode program beberapa spasi di awal) pun akan menolong kita membedakan kode program ini masuk IF yang ini, dan kode program itu masuk ke IF yang itu.

Kemampuan logika pun betul-betul berperan di menyusun kondisi yang kompleks seperti ini.


Contoh Kode Program Nested IF di Pascal

Lumayan dengan teori seputar nested IF atau IF bersarang. Mari kita masuk ke contoh program. Saya ingin menyusun sebuah program yang meminta input angka (integer), kemudian menginformasikan apakah angka itu angka genap atau ganjil, dan apakah angka itu besar atau kecil dari 10.

Dapatkah kamu menyusun kode programnya? Pastinya dengan menggunakan konsep nested IF. Disini terdapat 2 kondisi dengan 4 kemungkinan:

  1. Angka genap dan besar dari 10
  2. Angka genap dan kecil dari 10
  3. Angka ganjil dan besar dari 10
  4. Angka ganjil dan kecil dari 10

Berikut kode program yang saya gunakan:

Silahkan pelajari sebentar kode program diatas. Bila kamu telah mengikuti seluruh panduan pascal di Source Code Program, saya yakin dapat membaca maksud kode program ini (walaupun agak panjang).

Kemampuan logika pun akan berperan. Selaku contoh, saya tak perlu memeriksa apakah angka tersebut kecil dari 10, atau apakah angka itu tak habis dibagi 2. Kondisi ini lumayan dibangun menggunakan ELSE. Bila sebuah angka tak lebih besar dari 10, pastinya angka itu kecil dari 10 (tak perlu diperiksa). Bila angka tak habis dibagi 2, berarti angka tersebut ganjil.

Saya pun menggunakan command write dan writeln secara bergantian, agar hasil ahir teks menjadi 1 baris.

Silahkan kamu input berjenis-jenis angka, dan test apakah kode program tersebut telah benar atau ada yang kurang.


Alternatif Pemakaian Nested IF

Di beberapa situasi, kita dapat mengubah nested IF menjadi IF “lazim” dengan bantuan operator logika AND.

Kode program yang saya bikin sebelumnya digunakan untuk menyusun hasil untuk 4 kemungkinan:

  1. Angka genap dan besar dari 10
  2. Angka genap dan kecil dari 10
  3. Angka ganjil dan besar dari 10
  4. Angka ganjil dan kecil dari 10

Dengan demikian, saya pun dapat menyusun kode program selaku berikut:

Yup, kali ini tanpa nested IF dan hasil yang didapat sama persis dengan kode program kita sebelumnya. Bagi kebanyakan orang, kode ini pun lebih gampang dibaca, karena kita seketika dapat melihat kondisi apa saja yang akan diperiksa.

Namun dari sudut pandang performa, nested IF lebih efisien daripada ini. Di situasi terburuk, variabel angka hanya diperiksa sebanyak 2 kali seandainya menggunakan nested IF. Misalkan saya menginput angka:= 7, pertama-tama kali akan diperiksa kondisi: if (angka mod 2 = 0)? Tak, program seketika menjalankan bagian ELSE, dan masuk ke kondisi kedua: if (angka > 10)? Tak, jalankan ELSE.

Sedangkan yang tanpa nested IF, variabel angka akan diperiksa lebih dari 4 kali. Pertama-tama-tama if (angka mod 2 = 0)? Tak. Program lanjut ke bagian ELSE IF kedua: if (angka mod 2 = 0)? Pun tak, lanjut ke ELSE IF ketiga: if (angka mod 2 <> 0)? Betul. Kali ini program akan masuk ke kondisi (angka > 10)? Tak. Sehingga akan dijalankan ELSE terakhir: if (angka mod 2 <> 0) and (angka < 10)? Benar.

Untuk kode program yang sederhana seperti diatas, efeknya tak akan terasa (karena dieksekusi dengan betul-betul cepat). Beberapa programmer pun tak keberatan mengorbankan sedikit performa agar kode program gampang dibaca daripada menggunakan nested IF.


Hati-hati Dengan Kesalahan Logika!

Di penyusunan kode program, kita sering mengerjakan kesalahan. Misalnya lupa menambahkan penutup titik koma ‘ ; ‘ diakhir setiap command atau salah memberikan tipe data ke sebuah variabel.

Kesalahan seperti ini disebut selaku syntax error. Meskipun sering terjadi, error seperti ini gampang ditemukan. Compiler Pascal (program yang menerjemahkan kode program yang kita ketik), akan seketika menampilkan pesan error ini selaku syntax error.

Jenis error yang kedua ialah kesalahan logika (logic error). Berbeda dengan syntax error, logic error betul-betul susah ditemukan. Error jenis ini tak akan “diprotes” oleh compiler pascal, karena penulisan kode programnya memang telah benar. Kesalahan ini disebabkan dari programmernya sendiri yang kurang hati-hati.

Selaku contoh, 2 kode program yang saya tulis diatas mengandung kesalahan logika yang lumayan fatal. Dapatkah kamu menemukannya? Kode programnya sendiri memang tak mengandung syntax error, soalnya kalau ada, program tentu tak akan dapat jalan.

Masih belum ketemu? Bagaimana seandainya saya gunakan angka 10 selaku input program?

 Yup, kode program yang saya tulis hanya dapat membedakan angka yang kurang dari 10, dan angka yang lebih dari 10. Tetapi tak untuk angka 10 itu sendiri.

Untuk contoh yang nested IF, hasilnya ialah: Angka yang kamu masukkan yakni bilangan genap dan kecil dari 10. Sedangkan untuk contoh kode program yang menggunakan operator AND. Tak akan tampil hasil apa-apa.

Ini terjadi karena kode program tersebut “tak sadar” bahwa ada 1 lagi logika kondisi, yakni seandainya angka tersebut ialah 10. Artinya, seharusnya ada 5 kemungkinan:

  1. Angka genap dan besar dari 10
  2. Angka genap dan kecil dari 10
  3. Angka ganjil dan besar dari 10
  4. Angka ganjil dan kecil dari 10
  5. Angka genap dan sama dengan 10

Selaku solusi dari masalah ini, kamu dapat menambahkan 1 lagi kondisi if untuk memeriksa if (angka = 10). Kode programnya tentu semakin kompleks, tapi bagus selaku alat latihan. Silahkan kamu modifikasi kode diatas, dan test apakah kamu dapat memodifikasi kode programnya untuk memproses angka 10.


Di panduan ini kita telah membahas mengenai struktur IF bersarang atau dikenal pun selaku nested IF. Selain itu kita telah melihat diantara contoh kesalahan logika yang dapat saja terjadi di program yang sedang kamu rancang.

Selain menggunakan struktur IF THEN ELSE, di di Pascal pun terdapat percabangan kode program menggunakan kondisi CASE. Inilah yang akan kita bahas berikutnya: Tutorial Percabangan Kondisi CASE dalam bahasa pemrograman Pascal.


Sumber https://www.duniailkom.com/

Share

You may also like...