fbpx

Algoritma dan Pemrogaman : Kasus Else Bermasalah

Masalah Identasi

Hal seperti inilah yang harus diperhatikan dalam pemecahan masalah yang menggunakan statemen if. Jika dapat menjamin bahwa setiap nilai masukan hanya memenuhi salah satu dari ekspresi boolean yang ada, maka statemen if berurutan dapat dipakai. Tetapi jika kondisi yang satu merupakan komplemen kondisi yang lain, maka harus digunakan statemen if dengan bagian else. Statemen if tersarang dapat digunakan jika untuk setiap bagian , baik bagian if ataupun else, diperlukan pemeriksaan lagi untuk menentukan statemen yang harus dijalankan .


Else “Bermasalah”

program else_bermasalah;
var
  angka:integer;
begin
  write('Masukkan sembarang integer :');readln(angka);
  if angka>10 then
    if angka>20 then
      writeln('A')
    else
      writeln('B')
      writeln('C')
end.

Dengan kode program di atas, coba jalankan kemudian masukkan sembarang integer misalkan 30, 15 dan 5. Bagaimana hasilnya?

Perhatikan output yang dihasilkan . Mengapa demikian? Yang menjadi masalah, else pada program ini menjadi “milik” statemen if yang mana? Apakah statemen if yang pertama atau yang keduaa? Jika bagian else menjadi “milikโ€ statemen if yang pertama, maka bagian program ini apat ditulis dengan identasi sebagai berikut.

if angka>10 then
  if angka>20 then
    writeln('A')
else
    writeln('B');
writeln('C');

Tetapi jika bagian else adalah “milik” statemen if yang kedua, maka bagian program tersebut dapat dituliskan dengan identasi sebagai berikut.

if angka>10 then
  if angka>20 then
    writeln('A')
  else
    writeln('B");
writeln('C');

Manakah yang benar? Apakah identasi cukup untuk menggambarkan logika pemecahan masalah? Jawabannya “ya” dan “Tidak”. Untuk manusia, jawabannya”Ya”, dan untuk komputer identasi tidak berarti apa-apa. Oleh karena itu, kalau yang dimaksudkan program berjalan seperti yang tertulis dengan identasi yang pertama, maka penulisannya harus diganti:

if angka>10 then
begin
  if angka>20 then
    writeln('A');
end;
else
  writeln('B');
writeln('C');

Terdapat tambahan kata begin dan end , untuk membuat bahwa bagian else adalah milik โ€ statemen if yang pertama. Hal ini terjadi karena dalam Pascal, untuk kasus ini , bagian else tersebut dianggap sebagai milik โ€ statemen if yang terdekat. Penentuan ekspresi boolean pada statemen if sangat penting, terutama untuk meningkatkan efisiensi pemeriksaan dan menghindari adanya statemen yang tidak pernah dijalankan apapun kondisi yang terjadi . Perhatikan contoh berikut.

if jumlah<200 then
  statemen1
else {jumlah>=200}
  if jumlah>=100 then
    statemen2
  else {jumlah<100}
    statemen3;

Pada contoh tersebut, statemen3 tidak pernah dijalankan berapapun harga dari jumlah. Jika jumlah < 200, maka statemen1 dijalankan , dan jika jumlah >= 200, maka bagian else akan dijalankan. Karena pada bagian else terdapat statemen if tersarang , maka dilakukan pemeriksaan sebelum sebuah statemen dijalankan. Bagian else pada statemen if tersarang, akan dijalankan jika jumlah < 100. Karena sebuah harga tidak mungkin lebih dari atau sama dengan 20 dan sekaligus kurang dari 100, maka dapat disimpulkan bahwa statemen3 tidak mungkin pernah dijalankan . Statemen seperti ini disebut dengan kode mati (dead code).

Untuk menjamin efisiensi pemeriksaan pada statemen if perhatikan contoh

if harga>200 then
  statemen1
else {harga<=200}
  if harga>100 then
    statemen2
  else {jumlah=100}
    if harga<=100 then
      statemen3;

Ekspresi boolean pada statemen if yang terakhir , harga <= 100, tidak diperlukan, karena jika ekspresi boolean pada statemen if sebelumnya , harga > 100, bernilai false , maka eskpresi boolean harga <=100 pasti bernilai true , dan karenanya cukup dengan else saja tanpa pemeriksaan lanjutan. Statemen if tersebut dapat dituliskan dengan lebih ringkas menjadi :

if harga > 200 then
  statemen1;
else {harga <=
  if harga > 100 then
    statemen2;
  else {jumlah <= 100}
    statemen3;

Bentuk ini akan menghasilkan efek yang sama dengan bentuk sebelumnya tetapi tanpa melakukan pemeriksaan yang tidak diperlukan.


Materi Lengkap

Silakan baca juga beberapa artikel menarik kami tentang Konsep Pemilihan, daftar lengkapnya adalah sebagai berikut.


Tonton juga video pilihan dari kami berikut ini

Bagikan ke teman-teman Anda

Contact Us

How to whitelist website on AdBlocker?

How to whitelist website on AdBlocker?

  1. 1 Click on the AdBlock Plus icon on the top right corner of your browser
  2. 2 Click on "Enabled on this site" from the AdBlock Plus option
  3. 3 Refresh the page and start browsing the site
error: Content is protected !!
Up