๐ Daftar Isi
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.