TEL 2112Dasar Komputer & Pemograman
Contoh Pemecahan MasalahDosen: Abdillah, S.Si, MIT
Email: [email protected]
Website: http://abdill01.wordpress.com
TujuanMahasiswa mampu menyelesaikan masalah berdasar contoh-contoh algoritma penyelesaian masalah.
1. Menentukan Data Terkecil
Tulislah algoritma untuk menentukan bilangan terkecil dari N buah data integer yang dibaca dari papan ketik. Nilai N dibaca terlebih dahulu (N > 0).
PenyelesaianBaca data terlebih dahulu. Asumsikan data pertama ini sebagai data terkecil (min) sementara. Kemudian baca data berikutnya. Jika data tersebut lebih kecil daripada min, maka ia menjadi min yang baru. Ulangi untuk data masukan yang lain. Pada akhir pengulangan min menjadi nilai terkecil dari seluruh data.
Penjelasan
Karena banyaknya data diketahui, maka jumlah pengulangan dapat ditentukan. Pada masalah ini, struktur FOR dan WHILE dapat kita gunakan, yang dalam hal ini kita pilih struktur for. Tapi penggunaan REPEAT dapat menghasilkan algoritma yang salah.
AlgoritmaPROGRAM Cari_Minimum{Menentukan bilangan terkecil dari N buah data integer}
DEKLARASIN, x, min, i : integer
ALGORITMA:read (N, x)min xfor i 2 to N do
read (x)if x < min then
min x endifendforwrite (min)
Algoritma PROGRAM Cari_Minimum{Menentukan bilangan terkecil dari N buah data integer}
DEKLARASIN, x, min, i : integer
ALGORITMA:read (N, x)min x i 2 repeat
read (x)if x < min then
min x endif
i i + 1until i > Nwrite (min)
2. Menentukan Perpangkatan
Tulislah algoritma untuk membaca bilangan bulat a dan n lalu menghitung perpangkatan an. (n 0).
PenyelesaianMisalkan nilai perkalian disimpan di dalam peubah bernama p. Peubah p ini diinisialisasi dengan 1, karena ia akan selalu dikalikan a. Kemudian lakukan perkalian p dengan a sebanyak n kali.
AlgoritmaPROGRAM Perpangkatan{Menghitung perpangkatan an, a bilangan bulat dan n 0}
DEKLARASIa, n, p, i : integer
ALGORITMA:read (a, n)p 1for i 1 to n do
p p * aendforwrite (p)
3. Menentukan Perpangkatan
Tulislah algoritma untuk membaca bilangan bulat a dan n sebarang lalu menghitung perpangkatan an.
PenyelesaianJika n < 0, maka n diubah terlebih dahulu ke positif dan disimpan ke dalam peubah m. Setelah perpangkatan dihitung, hasilnya dinyatakan dalam bentuk 1/hasil.
AlgoritmaPROGRAM Perpangkatan{Menghitung an, a dan n bilangan bulat sembarang}
DEKLARASIa, n, m, p, i : integer
ALGORITMA:read (a, n)if n < 0 then m -nelse m nendifp 1 for i 1 to m do
p p * aendforif n < 0 then write (1/p)else write (p)endif
4. Menentukan FaktorialTulislah algoritma untuk membaca bilangan bulat n lalu menghitung n faktorial.
PenyelesaianFaktorial sebuah bilangan bulat positif n didefinisikan sebagai: n! = 1 * 2 * 3 * ... * ndan khusus untuk n =0, maka 0! = 1.Misalkan nilai faktorial disimpan dalam peubah fak. Inisialisasi fak dengan 1: fak 1Kalikan fak dengan i, mulai dari 1 sampai n:fak fak * i
AlgoritmaPROGRAM Faktorial{Menghitung n faktorial, n > 0}
DEKLARASIn, fak, i : integer
ALGORITMA:read (n)fak 1for i 1 to n do
fak fak * iendforwrite (fak)
5. Konversi Desimal-BinerTulislah algoritma yang mengkonversi bilangan bulat positif ke dalam bilangan biner.
PenyelesaianUntuk mendapatkan bentuk biner dari sebuah bilangan desimal, bagi bilangan desimal tersebut dengan 2 terus menerus sampai hasil pembagian = 0. Deretan sisa hasil pembagian menyatakan bilangan biner dari bilangan desimal tersebut. Contoh: Konversi bilangan desimal 18 18/2 = 9 sisa 0 9/2 = 4 sisa 1 4/2 = 2 sisa 0 2/2 = 1 sisa 0 1/2 = 0 sisa 1Urutan bilangan biner sesuai arah panah: 10010.
PenjelasanMisalkan bilangan yang akan dikonversikan ke biner adalah x. Algoritma pengkonversiannya adalah membagi x dengan 2 secara berulang-ulang sampai hasil pembagiannya = 0. Urutan pembagian- nya adalah menghitung sisa pembagian terlebih dahulu:
sisa x mod 2.
Baru kemudian menghitung hasil pembagian:
x x div 2.
Bit biner yang merupakan sisa pembagian ditampung dalam sebuah peubah string yang bernama biner. Inisialisasi biner dengan karakter kosong ‘ ‘. Setiap kali diperoleh sisa pembagian, sambungkan dengan operator + sisa pembagian tersebut dengan biner:
biner ‘0’ + biner. Jika sisa = 0
biner ‘1’ + biner. Jika sisa = 1
AlgoritmaPROGRAM Desimal_Biner{Mengkonversi bilangan bulat positif ke bilangan biner}
DEKLARASIx, sisa : integerbiner : string
ALGORITMA:read (x)biner ‘ ‘repeat
sisa x mod 2 x x div 2
case sisa 0 : biner ‘0’ + biner 1 : biner ‘1’ + biner
endcaseuntil x = 0write (biner)
6. Mencetak Segitiga BintangTulislah algoritma yang mencetak segitiga bintang berikut, jika diberikan tinggi segitiga adalah N (N > 0). Contohnya, jika N = 5, maka segitiga yang dihasilkan adalah:
*************************
PenyelesaianPerhatikan gambar segitiga uktuk N = 5. Baris ke-1 terdiri atas satu bintang, baris ke-2 dua bintang, dan seterusnya baris ke-5 lima bintang. Secara umum baris ke i terdiri atas i bintang. Setelah baris ke-N, baris berikutnya merupakan pencerminan dari baris N – 1 sampai baris ke-1.
AlgoritmaPROGRAM Cetak_Segitiga_Bintang{Mencetak segitiga bintang dengan tinggi N }
DEKLARASIN, i, j : integer
ALGORITMA:read (N)for i 1 to N do
for j 1 to i do write ( * )endfor
endforfor i N-1 to 1 do
for j 1 to i do
write ( * ) endforendfor