Pascal : Percabangan (Program Control Bagian 2)





Di postingan sebelumnya kita telah mempelajari struktur Decision Making menggunakan konsep if statement. Namun konsep tersebut tidak efektif untuk beberapa kasus. Terutama apabila kasus yang ingin dievaluasi banyak jumlahnya. Untungnya Pascal menyediakan konsep lain, yaitu menggunakan case-statement dan sejenisnya. Case Statement sangat mirip dengan If Statement, hanya saja dalam Case Statement kita dapat mengevaluasi single character.

4. Case Statement (General)


sumber : www.tutorialspoint.com
Case statement secara general dapat digambarkan seperti gambar di atas. Adapun L1, L2, ... Ln adalah nilai dari input yang dapat bertipe data integer, char, maupun boolean.
Syntaxnya secara general adalah :

case <expression> of
    L1 : code block1;
    L2 : code block2;
    Ln : code blockn;
end;

Perhatikan bahwa setiap kali kita menggunakan case-of statement maka harus diakhiri dengan 'end;'
expression yang dimaksud dalam syntax tersebut adalah sesuatu (biasanya variable) yang nilainya mungkin terdapat pada L1, L2, maupun Ln.

Contoh implementasi :

var
     bilangan : integer;
begin
     write('Masukkan bilangan kurang dari 1000 : ');
     readln(bilangan);
     case bilangan of
         1.. 9  : writeln('Satuan');
         10..99 : writeln('Puluhan');
         100..999 : writeln('Ratusan');
     end;
end.

Apabila program di atas dijalankan, dan kita input nilai bilangan = 10 maka keluaran program akan menjadi :

Masukkan bilangan kurang dari 1000 : 10
Puluhan

5. Case-Else Statement


sumber : www.tutorialspoint.com
Bagaimana jika nilai yang ada dalam expression sama sekali tidak ada yang cocok dengan beberapa kondisi yang telah kita siapkan pada L1, L2, ... Ln ? Kita membutuhkan 'else' apabila tidak ada satupun yang memenuhi kondisi tersebut, dan cukup ubah syntax menjadi :

case <expression> of
    L1 : code block1;
    L2 : code block2;
    Ln : code blockn;
else
    codeblockelse;
end;

contoh implementasinya :

var
     bilangan : integer;
begin
     write('Masukkan bilangan kurang dari 1000 : ');readln(bilangan);
     case bilangan of
         1.. 9  : writeln('Satuan');
         10..99 : writeln('Puluhan');
         100..999 : writeln('Ratusan');
     else
         writeln('Input Salah!');
     end;
end.

Bila kita coba input 1000, maka keluarannya akan menjadi sebagai berikut :

Masukkan bilangan kurang dari 1000 : 1000
Input Salah!

6. Nested Case Statements

Sama seperti Nested If statement yang telah dibahas di posting sebelumnya, konsep Nested Case berarti 'ada case di dalam case'. Untuk mempermudah konsep, saya akan langsung memberikan contohnya :

var
     bilangan : integer;
     a : integer;
begin
     write('Masukkan bilangan kurang dari 10 : ');readln(bilangan);
     a := bilangan mod 2;
     case bilangan of
         1.. 9  : begin
                          write('Satuan');
                          case a of
                             1 : write (' Sekaligus Ganjil');
                             0 : write (' Sekaligus Genap');
                          end;
                     end;
    else
         writeln('Input Salah!');
     end;
end.

Kita coba input 8, maka outputnya adalah

Masukkan bilangan kurang dari 10 : 8
Satuan Sekaligus Genap

Note : Perhatikan bahwa jika code block terdiri dari beberapa statement, maka harus dibungkus menggunakan begin-end

Kira-kira itu saja yang dapat saya bagikan mengenai percabangan dalam Topik Program Control kali ini. Berikutnya akan saya bahas mengenai Looping/Perulangan. Terimakasih!

Pascal : Percabangan (Program Control Bagian 1)



Dalam postingan kali ini, saya akan membahas beberapa hal yang paling penting dalam dunia pemrograman, yaitu percabangan/decision making menggunakan if-then dan case-of, serta looping yang saya rangkum dalam Program Control. Hal-hal yang dibahas pada topik ini merupakan hal yang general yang ada di setiap Bahasa Pemrograman, pastikan Anda cukup berlatih dan menguasai materi berikut ini. Jadi, pastikan Anda membaca topik seputar Programming Control ini secara menyeluruh dan mendalam. Namun karena bahasannya cukup panjang. Maka akan saya pecah bahasan Program Control ini menjadi beberapa bagian. Check this out! ^^

Decision making dalam bahasa Pascal terdiri dari :

if-then statement
if-then-else statement
nested if statements
case-else statement, dan
case statement
nested case statements

PERCABANGAN-DECISION MAKING

1. If - Then Statement

If-Then Statement merupakan percabangan yang paling simple. Menggunakan ekspresi boolean dan logika untuk menyeleksi kondisi kemudian diikuti oleh satu atau beberapa statement lainnya.
Alur logika dari statement ini dapat digambarkan sebagai berikut :

sumber : www.tutorialspoint.com


syntaxnya :

if (conditon) then (statement);

condition di sini adalah logika yang apabila nilainya valid maka statement selanjutnya dapat dieksekusi. Misalnya :


if (x>3) then
     writeln('Iya');

Apabila nilai x yang kita input lebih besar dari 3, maka program akan menampilkan 'Iya' ke layar. Contoh lainnya :

If (x==2) then
     x:=x+2;

Artinya apabila nilai x sama dengan dua maka x ditambahkan dengan dua. Kondisinya dapat kita ubah sesuai dengan kebutuhan dari program yang sedang kita buat. Saya tidak akan membahas tentang Operator Logika dan Ekspresi Boolean yang dipakai pada kondisi, untuk itu silahkan untuk membaca beberapa artikel tentang logika yang ada dalam Bahasa Pascal, seperti di sini.

Jika ingin mengeksekusi lebih dari satu statement, maka gunakan begin-end untuk membuatnya ke dalam satu blok (dibungkus). Contohnya

If (x==2) then
    begin
         x:=x+1;
         jumlah:=jumlah+x;
    end;

2. If - Then - Else

Walaupun If-Then sangat simple, namun control dari percabangan yang dapat dihandle pun tidak terlalu banyak jenisnya. Pada If-Then statement, kita hanya memproses statement apabila kondisi yang ada valid. lalu bagaimana bila kita juga ingin memproses statement lainnya walaupun kondisi tidak valid? Pascal menyediakan percabangan berjenis If-Then-Else yang syntaxnya :


If (condition) then
      (statement1) else
      (statement2);


Implementasi :

If (x mod 2=1) then
     writeln('Ganjil') else
     writeln('Genap');

Perhatikan bahwa tidak ada semicolon ';' setelah statement pertama. Biasanya, untuk meningkatkan keterbacaan program, kita dapat menggunakan begin-end untuk membungkus statement. Namun yang harus diperhatikan adalah begin-end ini tidak boleh diberikan akhiran '.' karena titik setelah 'End' menandakan akhir dari program. Maka dapat diimplementasikan sebagai berikut :


If (x mod 2 = 1) then
     begin
         writeln('Ganjil');
     end
         else
     begin
         writeln('Genap');
     end;

Sebelum 'else', begin-end tidak diakhiri dengan semicolon, tapi untuk statement terakhir yang dibungkus dengan begin-end, menggunakan semicolon. Diagram alurnya dapat digambarkan sebagai berikut :

sumber : www.tutorialspoint.com

3. Nested If

Nested If ini secara singkat dapat diibaratkan sebagai 'if di dalam if'. Terkadang setelah menyeleksi beberapa kondisi, kita perlu menyeleksinya lagi dengan lebih spesifik untuk mendapatkan hasil yang kita inginkan dan sesuai dengan program yang ingin kita buat. Contoh Syntaxnya :

if (condition1) then
begin
       if (condition2) then
       begin
           statement1;
       end
           else
       begin
           statement2;
       end;
end
      else
begin
      statement3;
end;

Syntax di atas adalah sebuah contoh, bentuk syntax nya dapat berubah sesuai dengan program dan kondisi yang kita buat. Namun perlu diperhatikan, contoh syntax di atas tidak akan sama dengan :

if (condition1) then
begin
     statement1;
end
    else
begin
if (condition2) then
      begin
           statement2;
      end
           else
      begin
           statement3;
      end;
end;


Contoh penggunaan Nested if ini adalah, misalnya kita ingin membuat sebuah program yang dapat mengelompokkan apakah suatu bilangan termasuk ke dalam bilangan yang nilainya lebih besar dari 0 atau lebih kecil daripada 0. Setelah dilakukan seleksi oleh kondisi yang kita tetapkan tersebut, kita dapat menyaringnya kembali, misalnya untuk yang lebih besar dari 0, kita dapat mengelompokkannya lagi menjadi 'apakah bilangan tersebut ganjil' atau 'apakah bilangan tersebut termasuk bilangan genap' dengan cara mengimplementasi percabangan if-then sesuai kebutuhan. Bila bilangan lebih kecil dari 0 maka akan menuliskan 'Bilangan negatif' ke layar. Contoh penerapannya :
if (x > 0 ) then
    begin
         if (x mod 2 == 1 ) then
         begin
           writeln('Bilangan Ganjil');
         end
           else
           writeln('Bilangan Genap');
    end
else
    begin
         writeln('Bilangan negatif');
    end; 
end;
         
Bersambung.

Pascal : Konstanta (Constant)




Kita telah membahas variable di post sebelumnya. Kali ini saya akan sedikit membahas tentang Kosntanta. Konstanta adalah sebuah entitas yang nilainya tidak berubah dari awal hingga program selesai digunakan. Tidak sama seperti variable yang dapat kita ubah-ubah nilainya, konstanta memiliki nilai statis.

Konstanta sangat berguna apabila kita ingin mendeklarasikan sebuah nilai yang sama dan tidak berubah dalam sebuah program, dan ketika kita ingin menggunakannya, kita hanya perlu memanggil nama dari konstanta tersebut dan tak perlu menghapal nilainya.

DEKLARASI KONSTANTA

Untuk mendeklarasikan konstanta, kita dapat menggunakan reserved word 'const'. Berikut syntax pendeklarasian konstanta :

const
      name_identifier = constant_value;

Apabila kita implementasikan, berikut gambarannya :

const
     pi = 3.14;

Artinya adalah, kita memiliki konstanta bernama pi yang memiliki nilai 3.14, dan nilai tersebut tidak akan berubah di keseluruhan bagian program selama eksekusi. Tapi, kita dapat mengganti constant_value pada konstanta dengan mengetik ulang nilai yang ingin kita assign dan setelah mengganti nilainya, maka nilai yang terakhir kita masukkan akan menjadi nilai yang konstan selama program dieksekusi.

Namun, pascal hanya mengizinkan beberapa type data saja yang boleh dijadikan konstanta(sumber : www.tutorialspoint.com) :

Ordinal types
Set types
Pointer types (Hanya nilai Nil yang diizinkan)
Real types
Char
String

Untuk masing, masing tipe data, dapat dicontohkan sebagai berikut :

const
     batas_umur = 20; {Ordinal types}

const
     kelas_sd = set of (1, 2, 3, 4, 5); {Set types}

const
     P = NIL; {Pointer types}

dan seterusnya.

MENGGUNAKAN KONSTANTA

Untuk memperdalam konsep, saya akan memberikan sebuah program sederhana lengkap dengan konstanta.

program lingkaran;

const

      pi = 3,14;
var
      jari_jari : real;
      luas, keliling : real;
begin
      write('Masukkan jari-jari : '); readln(jari_jari);
      luas:= pi*jari_jari*jari_jari;
      keliling:= 2*pi*jari_jari;
      writeln('Luas lingkaran adalah : ', luas:6:2);
      writeln('Keliling lingkaran adalah : ', keliling:6:2);
     {Maksud dari 6:2 adalah, program menampilkan total 6 digit dan dua digit di belakang koma}
end.

Pada program di atas, bila kita input jari_jari dengan nilai 7, maka keluarannya akan menjadi :

Masukkan jari-jari : 7
Luas lingkaran adalah : 153.86
Keliling lingkaran adalah : 43.96

Ya, kira-kira itu saja yang dapat saya bahas pada posting kali ini. Terimakasih :D