Contoh Soal Percabangan Dalam Pascal

Melengkapi materi sebelumnya mengenai percabangan atau pengkondisian dalam bahasa Pascal, kali ini saya akan memberikan tambahan beberapa contoh soal yang berkaitan.

Jika sebelumnya sudah dibahas mengenai penentuan bilangan ganjil genap, nilai ujian, gemuk atau kurus, serta tingkat generasi berdasarkan tahun kelahiran, kali ini yang akan diselesaikan adalah tentang penentuan huruf vokal atau konsonan serta huruf atau angka; nilai penghasilan yang tidak kena pajak atau PTKP; penentuan kategori usia; dan tahun kabisat.

Oh ya. Saya akan sedikit menyinggung mengenai pernyataan Case yang memang belum dijelaskan di materi sebelumnya. Sebagian soal pada kesempatan ini juga akan dituntaskan dengan memanfaatkan statement tersebut.

Yuk simak selengkapnya di bawah ini.

Statement Case

Pernyataan case relatif lebih praktis sehingga cocok digunakan pada kasus percabangan yang jumlahnya banyak.

Perhatikan contoh berikut.

if (kondisi 1) then (blok kode 1)
else if (kondisi 2) then (blok kode 2)
else if (kondisi 3) then (blok kode 3)
else (kondisi 4);

Bandingkan dengan yang di bawah ini.

case (ekspresi) of
(kondisi 1) : (blok kode 1);
(kondisi 2) : (blok kode 2);
(kondisi 3) : (blok kode 3);
else (kondisi 4);
end;

ekspresi di atas adalah sesuatu yang akan dicek kondisinya. Bisa berupa variabel atau hasil dari perhitungan / pengkondisian.

Kelebihan lain dari penggunaan case adalah kita bisa memasukkan kondisi yang berupa kelompok atau jangkauan. Agar tidak bingung, langsung saja deh pada contohnya.

Bandingkan kedua potongan kode sumber berikut.

if (huruf='a') or (huruf='i') or (huruf='u') or (huruf='e') or (huruf='o') then writeln('Huruf vokal')
else writeln('Huruf konsonan');

case huruf of
'a','i','u','e','o' : writeln('Huruf vokal');
else writeln('Huruf konsonan');
end;

Untuk kasus percabangan sederhana di atas saja sudah terlihat bagaimana penggunaan statement case bisa membuat penulisan kode sumber menjadi lebih praktis dan lebih mudah dibaca.

Eniwei, seperti biasa, teman-teman bisa mencari referensi lain untuk penjelasan yang lebih detil karena saya tidak akan membahasnya di sini. Harap maklum, hehehe.

Contoh Soal Percabangan dan Jawabannya

Berikut ini beberapa contoh soal percabangan atau pengkondisian dan penyelesaiannya dalam bahasa Pascal. Untuk kali ini saya tidak akan menyertakan flowchart / diagram alirnya, hanya kode sumbernya saja.

Huruf / Angka

Program menerima input berupa karakter. Program kemudian mengeluarkan output yang memberitahu pengguna apakah karakter yang mereka masukkan merupakan huruf, angka, atau karakter lain.

Untuk soal ini kita bisa menggunakan statement Case. Kuncinya adalah penetapan jangkauan karakter huruf dan angka. Karakter sisanya bisa kita asumsikan sebagai karakter lain atau tidak dikenal.

Yang perlu diperhatikan adalah huruf besar. Jangan lupa bahwa karakter a dan A sama-sama merupakan huruf. Kedua set jangkauan tersebut harus kita gunakan dalam pernyataan Case.

huruf atau angka

huruf atau angka

Kode sumber selengkapnya bisa diunduh di sini.

Vokal / Konsonan

Program menerima input berupa karakter. Program kemudian mengeluarkan output yang memberitahu pengguna apakah karakter yang mereka masukkan merupakan huruf vokal atau huruf konsonan.

Di soal ini kita bisa mengembangkan solusi dari soal sebelumnya dan menambahkan pengkondisian atau percabangan bersarang pada kondisi karakter yang berupa huruf.

Seperti sebelumnya, jangan lupa untuk menetapkan huruf besar dan huruf kecil dalam jangkauan pengkondisian.

vokal atau konsonan

vokal atau konsonan

Kode sumber selengkapnya bisa diunduh di sini.

Kategori Usia (Balita / Anak / Remaja / Dewasa / Tua)

Program menerima input berupa usia seseorang. Program kemudian mengeluarkan output berupa kategori usia yang bersangkutan.

Soal ini sebenarnya serupa dengan soal generasi usia yang pernah dibahas di materi sebelumnya. Kita hanya tinggal mengubah acuan usianya saja menjadi sebagai berikut.

UsiaKategori Usia
<5 tahunBalita
5-11 tahunKanak-kanak
12-25 tahunRemaja
26-45 tahunDewasa
46-65 tahunLansia
>65 tahunManula

Acuan rentang kelompok usia di atas bersumber pada data Kementrian Kesehatan (Kemkes).

Agar sedikit berbeda, untuk soal ini saya akan membuat penyelesaiannya dengan menggunakan statement case.

kategori usia

kategori usia

Kode sumber selengkapnya bisa diunduh di sini.

Tahun Kabisat

Program menerima input berupa tahun saat ini atau tahun yang diinginkan. Output program berupa pernyataan apakah tahun tersebut merupakan tahun kabisat atau tidak.

Soal ini dapat diselesaikan dengan cara yang sama dengan soal penentuan bilangan ganjil genap. Ingat bahwa tahun kabisat adalah tahun yang angkanya habis dibagi 4.

tahun kabisat

tahun kabisat

Kode sumber selengkapnya bisa diunduh di sini.

PTKP (Penghasilan Tidak Kena Pajak)

Program menerima input berupa status pernikahan (kawin atau tidak kawin) serta jumlah tanggungan pengguna. Program kemudian akan mengeluarkan output berupa besaran PTKP dari pengguna.

Acuan besaran PTKP adalah sebagai berikut:

Status / GolonganJumlah TanggunganTarif PTKP
Tidak Kawin (TK)TKO (Tanpa Tanggungan)Rp 54.000.000,-
TK1 (1 Tanggungan)Rp 58.500.000,-
TK2 (2 Tanggungan)Rp 63.000.000,-
TK3 (3 Tanggungan)Rp 67.500.000,-
Kawin (K)TKO (Tanpa Tanggungan)Rp 58.500.000,-
TK1 (1 Tanggungan)Rp 63.000.000,-
TK2 (2 Tanggungan)Rp 67.500.000,-
TK3 (3 Tanggungan)Rp 72.000.000,-

Soal ini membutuhkan baris kode sumber yang relatif lebih banyak daripada soal-soal yang sudah pernah dibahas. Meski terdengar rumit, namun penyelesaiannya sebenarnya cukup mudah. Yaitu dengan memanfaatkan nested case, nested if, atau kombinasi keduanya.

Jangan lupa bahwa jumlah tanggungan maksimal adalah 3. Untuk input tanggungan yang lebih dari itu maka akan dianggap sebagai 3.

ptkp

ptkp

Kode sumber selengkapnya bisa diunduh di sini.

Untuk latihan, teman-teman bisa menambahkan skenario dimana suami dan istri sama-sama bekerja (status golongan K/I).

Denda Pinjaman Perpustakaan

Soal berikut ini saya temukan di salah satu situs di internet.

jika kode anggota=a , maka jenis anggota diisi anggota biaya anggota=0,selain itu jenis anggota diisi bukan anggota, biaya anggota=1000. jika kode buku=p, maka jenis buku=pengetahuan,denda perhari 1000 selain itu jenis buku=hiburan,denda perhari=2000
Jika lama pinjam diatas 3 hari maka jumlah denda =(lama pinjam-3)xdenda perhari+Biaya anggota selain itu jumlah denda=0+biaya anggota.

Jika disimpulkan, program menerima input berupa kode anggota, kode buku, serta lama pinjam. Program kemudian akan mengkalkulasi biaya keterlambatan (jika ada) berdasarkan ketiga input tersebut.

Ada banyak alternatif cara untuk menyelesaikan soal ini. Teman-teman bisa berlatih dengan mencari variasi yang berbeda. Atau dengan menambahkan kode buku yang berbeda.

hitung denda perpustakaan

hitung denda perpustakaan

Kode sumber selengkapnya bisa diunduh di sini.

Penutup

Mungkin sudah tidak perlu dijelaskan lagi bahwa ada banyak cara untuk menyelesaikan sebuah soal pemrograman. Teman-teman bisa memanfaatkan contoh soal dan jawaban di atas untuk mencoba mencari alternatif solusi yang berbeda.

Apapun itu caranya, yang penting hasil akhirnya jangan sampai salah, ya.

Di materi berikutnya kita akan masuk ke dalam pembahasan mengenai looping atau perulangan.

Oh ya. Jika sekiranya ada soal yang ingin ditanyakan atau butuh dibahas, silahkan sampaikan saja di kolom komentar yang ada di bawah.

Selamat belajar pemrograman!

pascal perulangan pengkondisian

Leave a Reply