Dasar Komputer dan Pemograman

advertisement
TEL 2112
Dasar Komputer & Pemograman
Contoh Pemecahan Masalah
Dosen: Abdillah, S.Si, MIT
Email: [email protected]
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
i2
repeat
read (x)
if x < min then
min  x
endif
ii+1
until i > N
write (min)
2. Menentukan Perpangkatan
Tulislah algoritma untuk membaca bilangan bulat a
dan n lalu menghitung perpangkatan an. (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)
p1
for i  1 to n do
pp*a
endfor
write (p)
3. Menentukan Perpangkatan
Tulislah algoritma untuk membaca bilangan bulat a
dan n sebarang lalu menghitung perpangkatan an.
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
p1
for i  1 to m do
pp*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
Download