Dalam tutorial sebelumnya, kita telah membahas cara penulisan struktur percabangan CASE dalam bahasa Pascal. Selain itu, masih terdapat fitur tambahan di dalam CASE, seperti CASE ELSE, menjalankan 1 perintah untuk banyak CASE, maupun menjalankan beberapa perintah dalam 1 kondisi CASE .
Inilah yang akan kita bahas dalam tutorial PASCAL di Duniailkom kali ini, yakni materi lanjutan tentang pembuatan struktur CASE dalam bahasa Pascal.
Membuat Kondisi Default Dengan CASE ELSE
Pada tutorial Struktur Percabangan CASE dalam Pascal kita telah mempelajari konsep dasar penulisan CASE. Dimana saya membuat contoh kode program yang memeriksa nilai variabel bulan, kemudian menampilkan teks dari bulan tersebut. Mari kita masuk ke contoh lain:
program struktur_case; uses crt; var  grade: string; begin  clrscr;  write('Silahkan input grade anda (A-E): ');  readln(grade);   case (grade) of     'A' : writeln('Sangat Memuaskan');    'B' : writeln('Memuaskan');    'C' : writeln('Kurang Baik');    'D' : writeln('Kurang Baik');    'E' : writeln('Maaf, anda tidak lolos');  end;   readln; end.
Kali ini saya membuat kode program yang meminta inputan berupa huruf A – E, yang disimpan ke dalam variabel grade. Jika diiput 'A', maka akan tampil teks 'Sangat Memuaskan', jika diinput 'B', akan tampil teks 'Memuaskan', demikian hingga grade E.
Contoh kali ini kurang lebih sama seperti contoh dalam tutorial sebelumnya. Tapi, bagaimana jika seseorang menginput huruf F? atau X? atau Z? Huruf-huruf ini tidak ada di dalam kondisi yang kita periksa.
Untuk situasi seperti ini kita bisa menggunakan stuktur CASE ELSE. Langsung saja ke dalam contoh kode programnya:
program struktur_case; uses crt; var  grade: string; begin  clrscr;  write('Silahkan input grade anda (A-E): ');  readln(grade);   case (grade) of     'A' : writeln('Sangat Memuaskan');    'B' : writeln('Memuaskan');    'C' : writeln('Kurang Baik');    'D' : writeln('Kurang Baik');    'E' : writeln('Maaf, anda tidak lolos');  else    writeln('Maaf, format yang anda masukkan salah');    writeln('Harap input grade berupa huruf: A, B, C, D, atau E');  end;   readln; end.
Perhatikan tambahan bagian ELSE. Artinya, jika kelima kondisi tidak cocok (yang diinput selain dari huruf A – E), maka tampilkan perintah:
writeln('Maaf, format yang anda masukkan salah'); writeln('Harap input grade berupa huruf: A, B, C, D, atau E');
Dengan demikian, jika ada yang iseng menginput huruf lain, akan tampil penjelasan seperti diatas. Jika tidak ditambahkan, kode program kita hanya menampilkan layar kosong (blank).
Menjalankan Kode Program Untuk Lebih dari 1 Kondisi CASE
Fitur lain yang tersedia didalam kondisi CASE adalah menjalankan kode program yang sama untuk lebih dari 1 kondisi. Jika anda perhatikan, contoh program grade sebelumnya menampilkan teks 'Kurang Baik' untuk kondisi C dan D. Ini bisa kita satukan menjadi seperti berikut ini:
program struktur_case; uses crt; var  grade: string; begin  clrscr;  write('Silahkan input grade anda (A-E): ');  readln(grade);   case (grade) of     'A' : writeln('Sangat Memuaskan');    'B' : writeln('Memuaskan');    'C','D' : writeln('Kurang Baik');    'E' : writeln('Maaf, anda tidak lolos');  else    writeln('Maaf, format yang anda masukkan salah');    writeln('Harap input grade berupa huruf: A, B, C, D, atau E');  end;   readln; end.
Dibaris ke 13, saya menulis 'C','D' : writeln('Kurang Baik'). Ini artinya jika variabel grade berisi huruf C atau D, tampilkan teks yang sama: 'Kurang Baik'. Fitur seperti ini bisa digunakan untuk mempersingat penulisan kode program.
Menjalankan Banyak Kode Program untuk 1 Kondisi CASE
Kali ini kita akan membahas kebalikan dari contoh diatas, yakni bagaimana cara menjalankan banyak kode program untuk 1 kondisi CASE. Caranya mirip seperti tutorial IF THEN ELSE, yakni dengan blok begin dan end; untuk setiap kode program kondisi.
Berikut contoh penggunaannya:
program struktur_case; uses crt; var  grade: string; begin  clrscr;  write('Silahkan input grade anda (A-E): ');  readln(grade);   case (grade) of    'A' :      begin        writeln('Sangat Memuaskan');        writeln('Pertahankan!');      end;    'B' :     begin     writeln('Memuaskan');     writeln('Tingkatkan lagi!');     end;    'C','D' :     begin       writeln('Kurang Baik');       writeln('Agar Lebih banyak belajar!');     end;    'E' :     begin       writeln('Maaf, anda tidak lolos');       writeln('Selama ini ngapain saja bro...?');     end  else    writeln('Maaf, format yang anda masukkan salah');    writeln('Harap input grade berupa huruf: A, B, C, D, atau E');  end;   readln; end.
Kode program diatas merupakan modifikasi dari kode kita sebelumnya. Disini dalam setiap kondisi saya menjalankan 2 baris perintah writeln. Tentu saja tidak dibatasi dengan 2 baris saja, bisa 3, 4 atau lebih. Dengan syarat, harus berada diantara blok begin dan end;.
Batasan dari struktur CASE
Struktur CASE menawarkan penulisan yang lebih singkat dan efisien dibandingkan struktur IF THEN, namun kondisi yang bisa dipakai hanya sederhana seperti yang saya contohkan, misalkan apakah sebuah variabel bernilai angka atau string tertentu.
Untuk kondisi yang lebih rumit seperti perbandingan lebih besar " > " atau lebih kecil " <", atau perbandingan yang melibatkan lebih dari 1 kondisi, kita tidak bisa menggunakan CASE. Kode program untuk menentukan apakah sebuah angka genap atau ganjil, tidak bisa dikonversi ke dalam CASE.
Dalam pemrograman yang "sebenarnya", kita juga lebih sering menggunakan IF daripada CASE. Tapi untuk situasi yang melibatkan banyak perulangan sederhana, struktur CASE lebih rapi dan singkat daripada IF.
Tutorial tentang CASE ELSE kali ini menutup tutorial tentang struktur logika di dalam bahasa pemrograman Pascal. Berikutnya, kita akan masuk ke struktur perulangan atau looping, yang diawali dengan perulangan FOR DO dalam bahasa pascal.
Nice gan, alhamdulillah saya dah menguasai pascal sampai part40. Ditunggu post selanjutnya.
Siip gan… :)
Kak, kenapa perintahnya tdak berhasil yak kak? ??
Saya sdah membuat seperti yg di contoh namun tdak keluar hasilnya ??
Apakah ada pesan error? bisa juga test copy paste kode di atas (takutnya ada yang salah ketik)
Kalau untuk program transaksi menghitung diskon menggunakan case of gimana ya?
Misal diketahui transaksi >= 250k diskon 20%, >= 250k and <= 500k diskon 40%, >500k diskon 50%. dengan kondisi A & B benar, nah ini maksudnya spt apa ya?
Untuk yang seperti itu sepertinya g bisa pakai CASE sis, soalnya di dalam CASE kita tidak bisa mengecek kondisi "lebih besar dari" atau "lebih kecil dari".
Alternatifnya bisa menggunakan IF ELSE. Silahkan pelajari tutorial IF ELSE Pascal berikut: https://www.duniailkom.com/tutorial-belajar-pascal-percabangan-kondisi-if-then-else-dalam-pascal/ dan https://www.duniailkom.com/tutorial-belajar-pascal-percabangan-kondisi-if-bersarang-dalam-pascal/
mas Andre,, kalo boleh tau modul yg sedang digarap apa ya.,? & selesainya kapan.,? pengen koleksi buat belajar,, sma yang pascal kira2 bulan mei 2017 sudah ada apa belum yg full,,
Saat ini saya sedang menulis materi eBook JavaScript mas. Mungkin masih butuh 1-2 bulan lagi selesainya.
Untuk eBook Pascal mudah2an bisa tersedia di tahun depan :)
Gan kok itu kata "end" nya gak pake ;
Itu sudah saya bahas di tutorial sebelumnya gan. Silahkan baca disini: https://www.duniailkom.com/tutorial-belajar-pascal-percabangan-kondisi-if-then-else-dalam-pascal/
Gan mana lagi nih tutorialnya? Udah gak sabar nih……
Dah rilis y gan, tentang perulangan for do: https://www.duniailkom.com/tutorial-belajar-pascal-perulangan-for-do-dalam-pascal/
bang,kok punya saya udh jadi,trus saya masukan input nya gk keluar kata" nya.. :( mohon pencerahannya
Apakah kodenya sudah sama persis seperti diatas? mungkin ada beberapa baris yang kurang…
Terimakasih mas Andre atas pencerahannya:)
mas apakah dalam pascal saya diajarkan bahwa kata begin harus sama banyak dengan kata end, apakah teori itu benar?kemudian kalau benar mengapa di salah satu program case yg mas buat jumlah kata begin dan end tidak sama banyaknya
Tidak ada keharusan seperti itu, karena ini tergantung seperti apa struktur yang dipakai oleh sebuah bahasa pemrograman. Di struktur CASE ini, keyword "end" dipakai untuk menutup perintah "case..of".
Aturannya lebih ke: setiap perintah "begin" harus diakhiri dengan "end", tapi tidak sebaliknya.
apakah case of bisa digabung dengan array ?
jadi di variabel nya ada array
dan di case of nya untuk memanggil array kaya gimana ?