Selasa, 06 Oktober 2015

Metode Perancangan Program 3

MODUL III
MENGEMBANGKAN ALGORITMA

TUJUAN

         Untuk memperkenalkan metode analisis sebuah permasalahan dan mengembangkan solusi
         Untuk mengembangkan algoritma sederhana menggunakan struktur kontrol urutan
         Untuk memperkenalkan metode menguji secara manual solusi yang dikembangkan

3.1. MENDEFINISIKAN MASALAH

Langkah pertama di dalam mengembangkan program komputer dan salah satu yang paling penting adalah mendefinisikan masalah. Langkah tersebut meliputi membaca dengan cermat dan membaca kembali permasalahan sampai kita memahami dengan lengkap apa yang dibutuhkan. Seringkali informasi tambahan dibutuhkan untuk membantu memecahkan kemenduaan atau kekurangan dalam spesifikasi permasalahan. Untuk membantu analisis awal ini, masalah harus dibagi menjadi tiga komponen yang terpisah :
1.      Input                     : daftar data sumber yang disediakan untuk masalah
2.      Output                   : daftar keluaran yang dibutuhkan
3.      Pemrosesan           : daftar tindakan yang diperlukan untuk menghasilkan keluaran yang dibutuhkan
Pada saat membagi sebuah permasalahan menjadi tiga komponen yang berbeda, kita harus menganalisa secara sederhana kata-kata yang digunakan dalam spesifikasi, dan membaginya menjadi bagian deskriptif dan bagian yang mengimplikasikan tindakan. Akan membantu apabila kita beri garis bawah kata benda, kata sifat dan kata kerja yang ada di dalam spesifikasi program.
Dalam beberapa permasalahan pemrograman, input, proses dan output mungkin tidak didefinisikan dengan jelas. Yang terbaik adalah mengkonsentrasikan pada output yang diinginkan kemudian memutuskan input yang dibutuhkan melalui tahap-tahap pemrosesan untuk menghasilkan output yang diinginkan tersebut.
            Pada tahap ini bagian pemrosesan harus mencantumkan tindakan apa yang perlu dilakukan, bukan bagaimana hal tersebut diselesaikan. Jangan berusaha untuk mencari solusi sampai permasalahan telah didefinisikan dengan lengkap.

CONTOH 3.1 menjumlahkan 3 bilangan

“A program is required to read three numbers, add them together, and print their total” (Sebuah program diminta membaca tiga bilangan, menjumlahkan, dan mencetak totalnya). Kerjakan permasalahan tersebut dalam dua langkah. Pertama garisbawahi kata benda dan kata sifat yang digunakan dalam spesifikasi program.
“A program is required to read three numbers, add them together, and print their total” (Sebuah program diminta membaca tiga bilangan, menjumlahkan, dan mencetak totalnya)
Dengan melihat kata benda dan kata sifat yang digarisbawahi kita dapat melihat bahwa input untuk permasalahan tersebut adalah tiga bilangan dan output adalah total. Sangat membantu untuk menuliskan dua komponen pertama tersebut dalam sebuah diagram sederhana, yang disebut dengan diagram definisi.
Input
Processing
Output
number_1

total
number_2


number_3


Atau
Input
Proses
Output
bilangan_1

total
bilangan_2


bilangan_3



Berikutnya garisbawahi (dengan warna yang berbeda) kata kerja dan kata keterangan yang digunakan dalam sepsifikasi program
“A program is required to read three numbers, add them together, and print their total” (Sebuah program diminta membaca tiga bilangan, menjumlahkan bersama, dan mencetak totalnya)
Dengan melihat pada kata-kata yang digarisbawahi, dapat dilihat bahwa kata kerja proses adalah membaca, menjumlahkan dan mencetak. Langkah berikutnya adalah melengkapi diagram definisi dengan proses yang kita temukan.
Input
Processing
Output
number_1
Read three number
total
number_2
Add numbers together

number_3
Print total number

Atau
Input
Proses
Output
bilangan_1
Baca tiga bilangan
Total
bilangan_2
Jumlahkan bilangan bersama

bilangan_3
Cetak total bilangan


            Sekarang semua kata benda dan kata kerja telah dipertimbangkan dan diagram definisi telah lengkap, permasalahan telah didedinisikan sebagaimana mestinya. Sehinggga kita memahami input terhadap permasalahan, output yang dihasilkan dan tahap pemrosesan yang diperlukan untuk mengkonversi input menjadi output.

Nama yang berarti (memiliki arti)

Merupakan sebuah gagasan yang bagus untuk menggunakan beberapa nama yang unik, yang akan digunakan untuk merepresentasikan variabel atau objek dalam permasalahan dan mendeskripsikan tahap-tahap pemrosesan. Nama harus memiliki arti. Nama yang diberikan pada sebuah variabel merupakan metode sederhana mengidentifikasi lokasi penyimpanan tertentu dalam komputer.
Keunikan nama akan membedakannya dari lokasi yang lain. Sering kali nama mendeskripsikan tipe data dalam sebuah variabel tertentu. Sebagai contoh sebuah variabel dapat memiliki satu dari tiga tipe data sederhana, misalnya integer (bilangan bulat), real number (bilangan pecahan) atau character (karakter). Nama variabel harus cukup transparan untuk mendeskripsikan variabel : number_1, number_2, number_3 merupakan nama yang lebih berarti  untuk tiga buah bilangan daripada A, B dan C. Underscores (garis bawah) berguna dalam memilih nama variabel, yaitu dalam memisahkan nama variabel : nomor_1, jumlah_kata dan sebagainya.
Ketika tiba saatnya untuk menuliskan komponen pemrosesan dari diagram definisi, kita harus menggunakan kata-kata yang menggambarkan pekerjaan yang harus diselesaikan dalam kaitannya dengan tugas atau fungsi khusus. Dalam contoh 3.1. tahap pemrosesan dituliskan sebagai kata kerja yang disertai oleh objek-objek yang terkait.
Read three numbers            (Baca tiga bilangan)
Add numbers together          (Jumlahkan bilangan bersama)
Print total number            (Cetak total bilangan)
Terdapat sebuah pola dalam pemilihan kata-kata untuk mendeskripsikan tahap-tahap tersebut. Setiap aksi dideskripsikan sebagai sebuah kata kerja yang diikuti oleh objek dua kata.

CONTOH 3.2 Menghitung rata-rata suhu
“A program is required to get minimum and maximum temperature on a particular day, calculate and display to the screen the average temperature, calculated by (maximum temperature + minimum temperature) / 2” (Sebuah program diharuskan untuk mengambil data mengenai suhu maksimum dan minimum pada hari tertentu,  kalkulasi serta tampilkan di layar suhu rata-rata, dihitung dengan [suhu maximum + suhu minimum] / 2).
Pertama tentukan komponen input dan output dengan menggarisbawahi kata benda dan kata sifat dalam pernyataan permasalahan.
“Sebuah program diharuskan untuk mengambil data mengenai suhu maksimum dan minimum pada hari tertentu,  kalkulasi serta tampilkan di layar suhu rata-rata, dihitung dengan (suhu maximum + suhu minimum) / 2”.
Komponen input adalah suhu minimum dan suhu maksimum dan output adalah suhu rata-rata. Dengan menggunakan nama-nama yang berarti,  komponen-komponen tersebut dapat dituliskan pada diagram definisi sebagai berikut :
Input
Processing
Output
max_temp

avg_temp
min_temp



Atau

Input
proses
Output
suhu_maks

suhu_rata
suhu_min



Kemudian tentukan tahap-tahap pemrosesan dengan menggarisbawahi kata kerja dalam pernyataan permasalahan.
Sebuah program diharuskan untuk mengambil data mengenai suhu maksimum dan minimum pada hari tertentu,  kalkulasi serta tampilkan di layar suhu rata-rata, dihitung dengan [suhu maximum + suhu minimum] / 2.
Kata kerja pemrosesan adalah : mengambil, kalkulasi dan tampilkan. Dengan mendapatkan objek yang berkaitan dengan kata kerja tersebut maka diagram definisi dapat dilengkapi sebagai berikut :
Input
Processing
Output
max_temp
Get max, min temperatures
avg_temp
min_temp
Calculate average temperature


Display average temperature

Atau
Input
Proses
Output
suhu_maks
Ambil suhu max, min
suhu_rata
suhu_min
Kalkulasi suhu rata-rata


Tampilkan suhu rata-rata


Perhatikan bahwa pada tahap ini kita hanya terkonsentrasi pada fakta bahwa suhu rata-rata harus dikalkulasi, bukan bagaimana kalkulasi akan dilakukan.

CONTOH 3.3 Menghitung waktu memotong rumput
“A program is required to get the length and width of a rectangular house block, and the length and width of the rectangular house which has been built on the block. The algorithm should then compute and display the time required to cut the grass around the house, at the rate of two square metres per minute.” (sebuah program diharuskan untuk mengambil panjang dan lebar sebuah blok rumah, serta panjang dan lebar rumah yang telah dibangun pada blok tersebut. Algoritma tersebut kemudian harus menghitung dan menampilkan waktu yang dibutuhkan untuk memotong rumput disekeliling rumah, dengan rata-rata dua meter persegi permenit)
            Untuk memperoleh komponen input dan output dalam permasalahan tersebut, maka kata benda atau objek telah digarisbawahi. Untuk komponen proses kata kerja telah dicetak miring. Berdasarkan data tersebut maka dapat dibuat diagram definisi sebagai berikut :
Input
Processing
Output
block_length
Get block measurements
mowing_time
block_width
Get house measurements

house_length
Calculate mowing area

house_width
Calculate mowing time

Atau
Input
Proses
Output
panjang_blok
Ambil ukuran blok
waktu_potong
lebar_blok
Ambil ukuran rumah

panjang_rumah
Kalkulasi area potong rumput

lebar_rumah
Kalkulasi waktu potong rumput



3.2 MENDESAIN ALGORITMA SOLUSI

Mendesain (merancang) sebuah algoritma solusi merupakan pekerjaan yang paling menantang dalam daur hidup sebuah program. Sekali program telah didefinisikan dengan tepat, kita biasanya mulai dengan sketsa kasar tahap-tahap yang dibutuhkan untuk memecahkan permasalahan. Lihat pada apa yang dibutuhkan, dan menggunakan kebutuhan tersebut serta tiga struktur kontrol dasar yang didefinisikan dalam teorema struktur, usahakan untuk menentukan bagaimana pemrosesan akan dilakukan.
Usaha awal dalam mendesain sebuah algoritma tertentu biasanya tidak menghasilkan produk jadi. Pseudocode berguna dalam proses trial and error ini. Apab-ila algoritma tidak benar, maka program tidak akan pernah benar juga. Terdapat beberapa argumen yang menyatakan bahwa kerja dari seorang pemrogram berakhir dengan desain algoritma. Pengkode atau pemrogram pemula dapat mengambil alih dan mengkodekan algoritma solusi ke dalam bahasa pemrograman tertentu.

CONTOH 3.4 Algoritma solusi untuk contoh 3.1

A. Diagram Definisi (lihat pada contoh 3.1)
B. Algoritma Solusi

      Add_three_numbers
            Read number_1, number_2, number_3
            total=number_1 +number_2+number_3
            Print total
      END
            Atau
            Jumlahkan_tiga_bilangan
            Baca bilangan_1, bilangan_2, bilangan_3
            total = bilangan_1 + bilangan_2 + bilangan_3
            Cetak total
      SELESAI
Terdapat beberapa hal yang harus dipertimbangkan dalam algoritma solusi ini, yaitu :
1.      Sebuah nama telah diberikan pada algoritma, yaitu Add_three_numbers (Jumlahkan_tiga_bilangan)
2.      Pernyataan END (SELESAI) pada akhir dari algoritma mengindikasikan bahwa algoritma telah lengkap
3.      Seluruh tahap pemrosesan antara nama alogritma dengan pernyataan END (SELESAI) telah dilekukkan (indentasi) untuk kemudahan membaca
4.      Setiap tahap pemrosesan dalam diagram definisi berhubungan secara langsung dengan satu atau lebih pernyataan dalam algoritma. Sebagai contoh, “Baca tiga bilangan” dalam diagram definisi menjadi “Baca bilangan_1, bilangan_2, bilangan_3” di dalam algoritma; dan “Jumlahkan bilangan bersama” menjadi “total = bilangan_1 + bilangan_2 + bilangan_3”.



CONTOH 3.5 Algoritma solusi untuk contoh 3.2

A. Diagram Definisi (lihat pada contoh 3.2)
B. Algoritma Solusi

      Find_average_temperature
            Get max_temp, min_temp
            Avg_temp = (max_temp + min_temp) / 2
            Output avg_temp to the screen
      END
            Atau
      Cari_suhu_rata_rata
            Ambil suhu_maks, suhu_min
            Suhu_rata = (suhu_maks + suhu_min) / 2
            Keluarkan suhu_rata di layar
      SELESAI

CONTOH 3.6 Algoritma solusi untuk contoh 3.3

A. Diagram Definisi (lihat pada contoh 3.3)
B. Algoritma Solusi

Calculate_mowing_time
      Get block_length, block_width
      block_area = block_length * block_width
      Get house_length, house_width
      house_area = house_length * house_width
      mowing_area = block_area – house_area
      mowing_time = mowing_area / 2
Output mowing_time to the screen
END
Atau




Kalkulasi_waktu_memotong_rumput
      Ambil panjang_blok, lebar_blok
      area_blok = panjang_blok * lebar_blok
      Ambil panjang_rumah, lebar_rumah
      area_rumah = panjang_rumah * lebar_rumah
      area_potong = area_blok – area_rumah
      waktu_potong = area_potong / 2
Keluarkan waktu_potong ke layar
SELESAI

3.3 MENGUJI ALGORITMA SOLUSI

Setelah sebuah algoritma solusi dibuat harus diuji kebenarannya. Lebih mudah untuk mendeteksi kesalahan dalam pseudocode daripada dalam kode program. Desk checking meliputi pelacakan lojik algoritma dengan beberapa data uji yang dipilih. Kita menelusuri lojik algoritma persis seperti yang dilakukan komputer, menyimpan semua nilai variabel utama pada selembar kertas. Penelusuran ini tidak hanya membantu untuk mendeteksi kesalahan lebih awal, tetapi juga membantu kita untuk lebih mengenal bagaimana program dijalankan.

Memilih data uji

Ketika memilih data uji untuk melakukan desk checking sebuah algoritma, harus dilihat spesifikasi program dan memilih kasus uji sederhana saja, berdasarkan tuntutan dari spesifikasi program, bukan algoritmanya. Untuk melakukan desk checking algoritma, kita memerlukan beberapa kasus uji sederhana saja yang akan mengikuti jalur utama dari lojik algoritma.

Tahap dalam melakukan desk checking algoritma

1.      Pilih kasus uji masukan sederhana yang valid
2.      Tentukan apakah hasil yang diharapkan yang seharusnya untuk setiap kasus uji
3.      Buat sebuah tabel nama variabel yang relevan dalam algoritma pada selembar kertas
4.      Jalankan kasus uji pertama melalui algoritma, simpan catatan tahap demi tahap isi dari setiap variabel dalam tabel sepanjang data melalui lojiknya
5.      Ulangi proses penelusuran menggunakan kasus data uji yang lainnya, sampai algoritma mencapai lojik akhir
6.      Periksa bahwa hasil yang diharapkan muncul dalam tahap 2 sesuai dengan hasil aktual dalam tahap 5
Dengan melakukan desk checking algoritma dapat dideteksi kesalahan lebih awal. Desk checking dapat mengeliminasi sebagian besar kesalahan, tetapi tetap tidak dapat dibuktikan bahwa algoritma benar 100%.

CONTOH 3.7 DESK CHECK UNTUK CONTOH 3.1

A. Diagram definisi (lihat contoh 3.1)
B. Algoritma solusi (lihat contoh 3.4)
C. Desk checking
  1. Pilih dua set data uji masukan. Sebagai contoh dipilih dua set bilangan, yaitu : 10, 20 dan 30 untuk data uji pertama serta 40, 41 dan 42 untuk data uji kedua.
Data input :

First data set
Second data set
number_1
10
40
number_2
20
41
number_3
30
42
Atau

Data uji pertama
Data uji kedua
bilangan_1
10
40
bilangan_2
20
41
bilangan_3
30
42

  1. Tentukan hasil yang diharapkan untuk setiap kasus uji
Hasil yang diharapkan :

First data set
Second data set
total
60
123
Atau


Data uji pertama
Data uji kedua
Total
60
123

  1. Buat sebuah tabel nama variabel yang relevan dan lewatkan setiap data uji melalui algoritma solusi, pernyataan demi pernyataan.
Statement
number_1
number _2
number _3
total
Print
First pass
Read
10
20
30



total



60


Print




yes







Second pass
Read
40
41
42



total



123


Print




yes
Atau
Pernyataan
bilangan_1
bilangan_2
bilangan_3
total
Cetak
Lewat 1
Baca
10
20
30



total



60


Cetak




ya







Lewat 2
Baca
40
41
42



total



123


Cetak




ya

  1. Periksa bahwa hasil yang diharapkan (60 dan 123) sesuai dengan hasil yang sesungguhnya (hasil desk checking pada kolom total).
Desk checking ini, yang seharusnya tidak membutuhkan waktu lebih dari 5 menit, mengindikasikan bahwa algoritma benar . Tahap selanjutnya yang dapat dilakukan adalah mengkodekan algoritma tersebut ke dalam bahasa pemrograman.

CONTOH 3.8 DESK CHECK UNTUK CONTOH 3.2

A. Diagram definisi (lihat contoh 3.2)
B. Algoritma solusi (lihat contoh 3.5)
C. Desk checking
  1. Pilih dua set data uji masukan. Sebagai contoh dipilih dua set bilangan, yaitu : 30 dan 10 untuk data uji pertama serta 40 dan 20 untuk data uji kedua.
Data input :

First data set
Second data set
max_temp
30
40
min_temp
10
20
Atau

Data uji pertama
Data uji kedua
suhu_maks
30
40
suhu_min
10
20

  1. Tentukan hasil yang diharapkan untuk setiap kasus uji
Hasil yang diharapkan :

First data set
Second data set
avg_temp
20
30
Atau

Data uji pertama
Data uji kedua
suhu_rata
20
30

  1. Buat sebuah tabel nama variabel yang relevan dan lewatkan setiap data uji melalui algoritma solusi, pernyataan demi pernyataan.
Statement
max_temp
min_temp
avg_temp
Output
First pass
Get 
30
10



Calculate


20


Output



yes






Second pass
Get 
40
20



Calculate


30


Output



yes
Atau
Pernyataan
suhu_maks
suhu_min
suhu_rata
Keluarkan
Lewat 1
Ambil
30
10



Kalkulasi


20


Keluarkan



ya






Lewat 2
Ambil
40
20



Kalkulasi


30


Keluarkan



ya

  1. Periksa bahwa hasil yang diharapkan (20 dan 30) sesuai dengan hasil yang sesungguhnya (hasil desk checking pada kolom suhu_rata).

CONTOH 3.9 DESK CHECK UNTUK CONTOH 3.3

A. Diagram definisi (lihat contoh 3.3)
B. Algoritma solusi (lihat contoh 3.6)
C. Desk checking
  1. Pilih dua set data uji masukan, sebagaimana diilustrsikan dalam diagram berikut ini :
Data input :

First data set
Second data set
block_length
30
40
block_width
30
20
house_length
20
20
house_width
20
10
Atau

Data uji pertama
Data uji kedua
panjang_blok
30
40
lebar_blok
30
20
panjang_rumah
20
20
lebar_rumah
20
10

  1. Tentukan hasil yang diharapkan untuk setiap kasus uji
Hasil yang diharapkan :

First data set
Second data set
mowing_time
250 minutes
300 minutes
Atau

Data uji pertama
Data uji kedua
waktu_potong
250 menit
300 menit

  1. Buat sebuah tabel nama variabel yang relevan dan lewatkan setiap data uji melalui algoritma solusi, pernyataan demi pernyataan.
Statement
block_
length
block
_width
house
_length
house
_width
block_area
house_area
mowing_area
mowing_time
First pass









Get
30
30







Block_area




900




Get


20
20





House_area





400



Mowing_area






500


Mowing_time







250

Output







yes










Second pass









Get
40
20







Block_area




800




Get


20
10





House_area





200



Mowing_area






600


Mowing_time







300

Output







yes

Atau



Pernyataan 
panjang_blok
lebar_blok
panjang_rumah
lebar_
rumah
area_blok
area_
rumah
area_
potong
waktu_potong
Lewat 1









Ambil
30
30







area_blok




900




Ambil


20
20





area_rumah





400



area_potong






500


waktu_potong







250

Keluarkan







ya










Lewat 2









Ambil
40
20







area_blok




800




Ambil


20
10





area_rumah





200



area_potong






600


waktu_potong







300

Keluarkan







ya

  1. Periksa bahwa hasil yang diharapkan (250 dan 300) sesuai dengan hasil yang sesungguhnya (hasil desk checking pada kolom waktu_potong).

3.4 RINGKASAN

Bagian pertama pembahasan menjelaskan metode menganalisa dan mendefinisikan masalah pemrograman. Metode yang disarankan adalah untuk menganalisa kata-kata yang digunakan dalam spesifikasi dengan tujuan membagi masalah menjadi tiga komponen terpisah :
         input
         output
         proses
Bagian kedua pembahasan menjelaskan mengenai pembuatan algoritma solusi. Setelah analisis awal permasalahan kita harus berusaha mendapatkan sebuah solusi dan meng-ekspresikan solusi ini sebagai sebuah algoritma. Untuk melakukan hal ini kita harus menggunakan pernyataan pseudocode yang benar, tiga struktur kontrol dasar dan diagram definisi yang sebelumnya ditentukan. Bagian ketiga menjelaskan pengujian algoritma untuk pembetulan.


Tidak ada komentar:

Posting Komentar