Anda di halaman 1dari 18

TEL 2112

Dasar Komputer & Pemograman


Contoh Pemecahan Masalah 1
Dosen: Abdillah, S.Si, MIT
Email: abdill01@gmail.com
Website: http://abdill01.wordpress.com

Tujuan
Mahasiswa 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).
Penyelesaian
Baca 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.

Algoritma
PROGRAM Cari_Minimum
{Menentukan bilangan terkecil dari N buah data integer}
DEKLARASI
N, x, min, i : integer
ALGORITMA:
read (N, x)
min x
for i 2 to N do
read (x)
if x < min then
min x
endif
endfor
write (min)

Algoritma
PROGRAM Cari_Minimum
{Menentukan bilangan terkecil dari N buah data integer}
DEKLARASI
N, x, min, i : integer
ALGORITMA:
read (N, x)
min x
i2
repeat
read (x)
if x < min then
min x
endif
ii+1
until i > N
write (min)

2. Menentukan Perpangkatan
Tulislah algoritma untuk membaca bilangan bulat a
dan n lalu menghitung perpangkatan a n. (n 0).
Penyelesaian
Misalkan 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.

Algoritma
PROGRAM Perpangkatan
{Menghitung perpangkatan an, a bilangan bulat dan n 0}
DEKLARASI
a, n, p, i : integer
ALGORITMA:
read (a, n)
p1
for i 1 to n do
pp*a
endfor
write (p)

3. Menentukan Perpangkatan
Tulislah algoritma untuk membaca bilangan bulat a
dan n sebarang lalu menghitung perpangkatan a n.
Penyelesaian
Jika n < 0, maka n diubah terlebih dahulu ke positif
dan disimpan ke dalam peubah m. Setelah
perpangkatan dihitung, hasilnya dinyatakan dalam
bentuk 1/hasil.

Algoritma
PROGRAM Perpangkatan
{Menghitung an, a dan n bilangan bulat sembarang}
DEKLARASI
a, n, m, p, i : integer
ALGORITMA:
read (a, n)
if n < 0 then m -n
else m n
endif
p1
for i 1 to m do
pp*a
endfor
if n < 0 then write (1/p)
else write (p)
endif

4. Menentukan Faktorial
Tulislah algoritma untuk membaca bilangan bulat n lalu
menghitung n faktorial.
Penyelesaian
Faktorial sebuah bilangan bulat positif n didefinisikan
sebagai: n! = 1 * 2 * 3 * ... * n
dan khusus untuk n =0, maka 0! = 1.
Misalkan nilai faktorial disimpan dalam peubah fak.
Inisialisasi fak dengan 1:
fak 1
Kalikan fak dengan i, mulai dari 1 sampai n:
fak fak * i

Algoritma
PROGRAM Faktorial
{Menghitung n faktorial, n > 0}
DEKLARASI
n, fak, i : integer
ALGORITMA:
read (n)
fak 1
for i 1 to n do
fak fak * i
endfor
write (fak)

5. Konversi Desimal-Biner
Tulislah algoritma yang mengkonversi bilangan bulat positif
ke dalam bilangan biner.
Penyelesaian
Untuk 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 1
Urutan bilangan biner sesuai arah panah: 10010.

Penjelasan
Misalkan bilangan yang akan dikonversikan ke biner adalah x.
Algoritma pengkonversiannya adalah membagi x dengan 2 secara
berulang-ulang sampai hasil pembagiannya = 0. Urutan pembagiannya 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

Algoritma

PROGRAM Desimal_Biner
{Mengkonversi bilangan bulat positif ke bilangan biner}
DEKLARASI
x, sisa : integer
biner : string
ALGORITMA:
read (x)
biner
repeat
sisa x mod 2
x x div 2
case sisa
0 : biner 0 + biner
1 : biner 1 + biner
endcase
until x = 0
write (biner)

6. Mencetak Segitiga Bintang


Tulislah algoritma yang mencetak segitiga bintang
berikut, jika diberikan tinggi segitiga adalah N (N >
0). Contohnya, jika N = 5, maka segitiga yang
dihasilkan adalah:

***
***
****
*****
****
***
**
*

Penyelesaian
Perhatikan gambar segitiga uktuk N = 5.
Baris ke-1 terdiri atas satu bintang, baris ke2 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.

Algoritma
PROGRAM Cetak_Segitiga_Bintang
{Mencetak segitiga bintang dengan tinggi N }
DEKLARASI
N, i, j : integer
ALGORITMA:
read (N)
for i 1 to N
for j 1 to
write ( * )
endfor
endfor
for i N-1 to
for j 1 to
write ( * )
endfor
endfor

do
i do

1 do
i do

Anda mungkin juga menyukai