Soal Konstruksi Dasar Algoritma

Sumber soal:
Buku Algoritma dan Pemrograman dalam Bahasa Pascal, C, dan C++ oleh Rinaldi Munir dan Leony Lidya (2016)

halaman 47

1.
Tulislah algoritma (dalam notasi campuran pseudo-code dan kalimat deskriptif) untuk memperoleh informasi nomor telepon berdasarkan data alamat rumah (nama jalan dan nomornya) kepada nomor penerangan lokal (108) PT Telkom. Algoritma harus menjelaskan proses bila (a) nomor 108 sibuk, (b) alamat yang diberikan penelepon belum mempunyai sambungan telepon.

Penyelesaian:
if nomor 108 tidak sibuk then
  berikan data alamat rumah
  if data alamat rumah mempunyai nomor telepon then
    berikan nomor telepon
  else
    alamat yang diberikan penelepon belum mempunyai sambungan telepon
  end if
else
  nomor 108 sibuk, silakan coba lagi di menit berikutnya.
end if


2.
Dua buah algoritma di bawah ini menjelaskan sikap yang harus dilakukan bila menemui lampu pengatur lalu lintas di jalan raya:
(1)
if traffic light menyala then
  if lampu merah then
    berhenti
else
  jalan

(2)
if traffic light menyala then
  if lampu merah then
    berhenti
  else
    jalan

Pada keadaan apa kedua algoritma di atas menggambarkan perilaku yang berbeda? Algoritma mana yang Anda anggap lebih memuaskan?

Penyelesaian:
Nomor (1) maknanya adalah ketika lampu pengatur lalu lintas nya menyala dan berwarna merah, kendaraan harus berhenti, sedangkan jika berwarna selain merah, maka kendaraan boleh jalan. Dan nomor (2) maknanya adalah jika lampu pengatur lalu lintas nya menyala dan berwarna merah, kendaraan harus berhenti, sedangkan jika lampu pengatur lalu lintas nya mati, kendaraan boleh jalan. Menurut saya tidak ada yang lebih memuaskan karena algoritma di atas tampak belum lengkap (tidak ada end if). Namun yang terbaik menurut saya adalah yang nomor (1).


3.
Sebuah tabel terdiri atas lajur NIM, Nama, Alamat, dan Nomor Telepon. Tabel tersebut sudah berisi data utama sekumpulan mahasiswa di sebuah Perguruan Tinggi. Misalkan seorang mahasiswa (dengan NIM tertentu) pindah kos sehingga alamat dan nomor teleponnya harus diubah. Tuliskan algoritma (dalam notasi campuran pseudo-code dan kalimat deskriptif) untuk mengubah Alamat dan Nomor Telepon dari mahasiswa tersebut.

Penyelesaian:
tinjau entry pertama di dalam tabel
repeat
if NIM pada entry = x then
ubah alamat dan nomor telepon dari entry tersebut
else
tinjau entry berikutnya di dalam tabel
until NIM yang dicari sudah ditemukan atau akhir tabel sudah terdeteksi


4.
Algoritma di  bawah ini membagi sekantung permen secara adil kepada 3 orang anak dengan cara membagikan satu permen kepada tiap anak secara berulang-ulang:
Pada keadaan bagaimana algoritma tersebut gagal?

Penyelesaian:
Agar pembagian permennya adil, maka masing-masing anak harus mendapatkan permen sebanyak kelipatan 3, dengan banyak yang sama. Ini berarti, jika jumlah permen di kantung mod 3 tidak sama dengan 0, maka algoritma tersebut gagal, yang dalam artian ini gagal membagikan sekantung permen secara adil kepada 3 orang anak.

Komentar