• Tidak ada hasil yang ditemukan

BAB III ANALISIS DAN PERANCANGAN SISTEM

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB III ANALISIS DAN PERANCANGAN SISTEM"

Copied!
32
0
0

Teks penuh

(1)

BAB III

ANALISIS DAN PERANCANGAN SISTEM

3.1 Analisis

Proses penyederhanaan fungsi Boolean dengan metode Quine-McCluskey mempunyai 7 (tujuh) langkah pengerjaan untuk menyederhanakan fungsi Boolean dalam bentuk SOP (sum-of-product) atau bentuk POS (product-of-sum), seperti yang telah dijelaskan pada bab 2 sebelumnya.

Metode Quine-McCluskey menyederhanakan fungsi Boolean dengan menggabungkan minterm/maxterm menjadi himpunan bentuk prima (prime-implicant), di mana sebanyak mungkin peubah dieliminasi (dihilangkan) secara maksimal.

Minterm/maxterm yang digabung untuk membentuk sebuah bentuk prima harus

memiliki tepat satu buah peubah yang nilainya berbeda (komplemen dan non-komplemen). Bentuk prima yang terbentuk juga dapat digabung untuk membentuk bentuk prima lainnya, apabila memiliki satu buah peubah yang nilainya berbeda. Prosedur ini dilakukan berulang kali hingga tidak terdapat bentuk prima yang dapat dibentuk lagi.

Untuk proses selanjutnya, metode ini memilih bentuk prima yang paling sederhana, yaitu bentuk prima yang tidak membentuk bentuk prima yang baru. Dari bentuk-bentuk prima yang sederhana ini, dipilih bentuk prima yang memiliki jumlah peubah paling sedikit (bentuk prima yang paling panjang) dan mencakup sebanyak mungkin minterm/maxterm dari fungsi Boolean yang di-input. Bentuk prima inilah yang merupakan hasil minimisasi dari fungsi Boolean.

(2)

Keunggulan dari metode Quine-McCluskey adalah kemampuannya untuk melakukan proses penyederhanaan terhadap fungsi Boolean dengan jumlah peubah yang besar. Selain itu, prosedur atau langkah–langkah pengerjaan dari metode ini sangat sistematis, artinya pengerjaan setiap langkah sangat rapi, teratur dan terstruktur, sehingga metode ini lebih mudah diprogram di dalam komputer dibandingkan dengan metode penyederhanaan lainnya.

Sebagai contoh, dilakukan penyederhanaan terhadap fungsi Boolean dalam bentuk SOP : f (w, x, y, z) = 3 (0, 1, 3, 4, 5, 6, 8, 10, 11, 15). Langkah–langkah penyederhanaan fungsi Boolean dengan metode Quine-McCluskey adalah sebagai berikut.

LANGKAH-1 : Nyatakan tiap minterm dalam n peubah menjadi string bit biner yang panjangnya n. (Pada contoh ini, jumlah peubah adalah 4 sehingga n = 4)

0 = 0000 1 = 0001 3 = 0011 4 = 0100 5 = 0101 6 = 0110 8 = 1000 10 = 1010 11 = 1011 15 = 1111

(3)

LANGKAH-2 : Kelompokkan tiap minterm berdasarkan jumlah '1' yang dimilikinya. Hasil Penyelesaian Langkah - 2 :

)))))))))))))))) term w x y z ))))))))))))))))

0 0 0 0 0 -> jumlah bit '1' = 0 buah ))))))))))))))))

1 0 0 0 1 -> jumlah bit '1' = 1 buah 4 0 1 0 0

8 1 0 0 0 ))))))))))))))))

5 0 1 0 1 -> jumlah bit '1' = 2 buah 6 0 1 1 0

3 0 0 1 1 10 1 0 1 0 ))))))))))))))))

11 1 0 1 1 -> jumlah bit '1' = 3 buah ))))))))))))))))

15 1 1 1 1 -> jumlah bit '1' = 4 buah ))))))))))))))))

LANGKAH-3 : Kombinasikan minterm dalam n peubah dengan kelompok lain yang jumlah '1'-nya berbeda satu, sehingga diperoleh bentuk prima (prime-implicant) yang terdiri dari n-1 peubah. minterm yang dikombinasikan diberi tanda 'v'

LANGKAH-4 : Kombinasikan minterm dalam n - 1 peubah dengan kelompok lain yang jumlah '1'-nya berbeda satu, sehingga diperoleh bentuk prima yang terdiri dari n-2 peubah.

LANGKAH-5 : Teruskan langkah 4 sampai diperoleh bentuk prima yang sesederhana mungkin.

(4)

Hasil Penyelesaian Langkah-3, 4 dan 5 : )))))))))))))))) term w x y z )))))))))))))))) 0 0 0 0 0 v )))))))))))))))) 1 0 0 0 1 v 4 0 1 0 0 v 8 1 0 0 0 v )))))))))))))))) 5 0 1 0 1 v 6 0 1 1 0 v 3 0 0 1 1 v 10 1 0 1 0 v )))))))))))))))) 11 1 0 1 1 v )))))))))))))))) 15 1 1 1 1 v )))))))))))))))) Dikombinasikan menjadi : )))))))))))))))) term w x y z )))))))))))))))) 0,1 0 0 0 - v 0,4 0 - 0 0 v 0,8 - 0 0 0 )))))))))))))))) 1,3 0 0 - 1 1,5 0 - 0 1 v 4,5 0 1 0 - v 4,6 0 1 - 0 8,10 1 0 - 0 )))))))))))))))) 3,11 - 0 1 1 10,11 1 0 1 - )))))))))))))))) 11,15 1 - 1 1 )))))))))))))))) Dikombinasikan menjadi : )))))))))))))))))))) term w x y z )))))))))))))))))))) 0,1,4,5 0 - 0 - 0,4,1,5 0 - 0 - ))))))))))))))))))))

(5)

LANGKAH-6 : Ambil semua bentuk prima yang tidak bertanda 'v'. Buatlah tabel baru yang memperlihatkan minterm dari ekspresi Boolean semula yang dicakup oleh bentuk prima tersebut (tandai dengan 'x').

Hasil Penyelesaian Langkah - 6 :

LANGKAH-7 : Pilih bentuk prima yang memiliki jumlah literal paling sedikit namun mencakup sebanyak mungkin minterm dari ekspresi Boolean semula. Hal ini dapat dilakukan dengan cara berikut.

LANGKAH-7.A : Tandai kolom-kolom yang mempunyai satu buah tanda 'x' dengan tanda '*', lalu beri tanda 'v' di sebelah kiri bentuk prima yang mencakup minterm yang mempunyai tanda '*' tersebut. Bentuk prima ini telah dipilih untuk fungsi Boolean sederhana.

(6)

Hasil Penyelesaian Langkah-7 dan 7.A :

LANGKAH-7.B : Untuk setiap bentuk prima yang telah ditandai dengan 'v', beri tanda

minterm yang dicakup oleh bentuk prima tersebut dengan tanda 'v' (di baris bawah

setelah tanda '*').

(7)

LANGKAH-7.C : Periksa apakah masih ada minterm yang belum memiliki tanda 'v' (artinya, belum dicakup oleh bentuk prima terpilih). Jika ada, pilih dari bentuk prima yang tersisa yang mencakup sebanyak mungkin minterm tersebut. Beri tanda 'v' untuk setiap bentuk prima yang dipilih itu serta minterm yang dicakupnya.

LANGKAH-7.D : Ulangi langkah 7.C sampai seluruh minterm sudah dicakup oleh bentuk prima

Hasil Penyelesaian Langkah - 7.C dan 7.D :

Sampai tahap ini, masih ada minterm yang belum tercakup dalam bentuk prima terpilih, yaitu 3, 8, 10. Untuk mencakup minterm tersebut, dipilih bentuk prima (8,10) dan (1,3) karena mencakup minterm 3, 8 dan 10 sekaligus.

Sekarang, semua minterm sudah tercakup dalam bentuk prima terpilih. Bentuk prima yang terpilih adalah :

1, 3 yang bersesuaian dengan term w'x'z (minterm 1 (0001) dan minterm 3 (0011) memiliki persamaan bit pada POSisi 1, 2 dan 4 sehingga dapat dikatakan minterm 1 dan minterm 3 merupakan fungsi Boolean w'x'z). 4, 6 yang bersesuaian dengan term w'xz'

8, 10 yang bersesuaian dengan term wx'z' 11, 15 yang bersesuaian dengan term wyz 0, 1, 4, 5 yang bersesuaian dengan term w'y'

Dari langkah–langkah penyederhanaan di atas, hasil minimisasi fungsi Boolean dalam bentuk SOP: f (w, x, y, z) = 3 (0, 1, 3, 4, 5, 6, 8, 10, 11, 15) adalah

(8)

Misalkan input fungsi dalam bentuk POS dengan nomor–nomor maxterm yang

sama dengan nomor–nomor minterm pada contoh sebelumnya.

f (w, x, y, z) = ϑ (0, 1, 3, 4, 5, 6, 8, 10, 11, 15)

Langkah–langkah dan hasil penyederhanaan sama dengan penyederhanaan dalam bentuk SOP, yaitu menghasilkan bentuk prima terpilih (1,3), (4,6), (8,10), (11,15) dan (0,1,4,5). Perbedaannya hanya terletak pada bentuk output. Bentuk prima terpilih diubah ke bentuk POS (sama dengan bentuk input).

1, 3 bersesuaian dengan term (w + x + z'). 4, 6 yang bersesuaian dengan term (w + x' + z). 8, 10 yang bersesuaian dengan term (w' + x + z). 11, 15 yang bersesuaian dengan term (w' + y' + z'). 0, 1, 4, 5 yang bersesuaian dengan term (w + y).

Dengan demikian, hasil minimisasi fungsi Boolean dalam bentuk POS adalah

f(w, x, y, z) = (w + x + z')(w + x' + z)(w' + x + z)(w' + y' + z')(w + y).

3.2 Rancangan Sistem

Sistem yang akan dibuat dirancang sedemikian rupa untuk memenuhi berbagai kebutuhan dan tuntutan yang digunakan untuk menghasilkan sebuah aplikasi penyederhanaan fungsi Boolean. Sistem tersebut nantinya diharapkan dapat memberikan kemudahan bagi pengguna untuk mempelajari langkah-langkah penyederhanaan fungsi

Boolean. Berbagai form dan fungsi akan diberikan untuk membantu pengguna

(9)

Berikut ini akan dijelaskan detail rancangan sistem yang akan dibuat pada program aplikasi ini yang meliputi sebuah form utama untuk menunjukkan penyederhanaan fungsi Boolean dengan metode Quine-McCluskey. Yang pertama adalah mengenai rancangan program yang akan dibuat untuk aplikasi penyederhanaan fungsi

Boolean. Juga akan dijelaskan mengenai rancangan layar dan rancangan struktur utama

menu.

3.2.1 Rancangan UML

Pada bagian rancangan program ini digunakan flowchart dan sequence diagram untuk menunjukkan alur kontrol dan jalannya program. Berikut ini adalah flowchart yang menunjukkan alur kontrol pada setiap modul.

  Gambar 3.1. Flowchart sistem kontrol modul

Secara umum modul sistem akan berjalan sesuai dengan flowchart diatas. Pertama pengguna akan memasukkan banyaknya peubah atau variabel untuk menentukan banyaknya variabel yang akan disederhanakan. Setelah itu, pengguna akan memasukkan peubah atau variabel yang ingin ditambahkan.

(10)

Apabila pengguna ingin mengganti atau menghilangkan peubah atau variabel yang telah ditambahkan maka peubah atau variabel tersebut dapat dihapus. Selanjutnya pengguna akan memasukkan input nomor minterm. Apabila input nomor minterm telah sesuai maka perhitungan penyederhanaan fungsi Boolean dapat dilanjutkan. Setelah itu akan didapatkan hasil penyderhanaan fungsi Boolean sesuai dengan variabel dan input

minterm yang dimasukkan. Kemudian para pengguna dapat melihat tahapan-tahapan

proses penyederhanaan fungsi Boolean untuk pembelajaran.

a. Rich Picture

  Gambar 3.2. Rich picture dari aplikasi fungsi Boolean

(11)

b. Use Case Diagram

  Gambar 3.3. Use case diagram untuk aplikasi

c. Sequence Diagram

Sequence diagram di bawah ini akan menjelaskan mengenai aliran data atau program yang diproses oleh sistem. Gambar berikut ini menggambarkan urutan kejadian interaksi pengguna aplikasi dengan GUI.

  Gambar 3.4. Sequence diagram untuk membuat perhitungan baru

(12)

 

Gambar 3.5. Sequence diagram untuk proses input dan variabel tambahan

  Gambar 3.6. Sequence diagram untuk proses perhitungan fungsi

(13)

User Sistem Aplikasi Melakukan Penyederhanaan Proses Perhitungan Hasil Penyederhanaan  

Gambar 3.7. Sequence diagram untuk ekstrasi data hasil perhitungan fungsi Boolean

d. Flow Chart Program Utama

Berikut ini adalah flowchart program utama sistem aplikasi penyederhanaan fungsi Boolean dengan metode Quine-McCluskey yang akan menjelaskan mengenai aliran atau jalannya program oleh pengguna.

  Gambar 3.8. Flowchart program utama

(14)

Pada saat berada dalam menu utama, pengguna akan memulai project baru. Langkah yang pertama akan dilakukan adalah memasukkan jumlah variabel atau peubah yang akan disederhanakan. Setelah itu, pengguna akan memasukkan peubah atau variabel yang ingin ditambahkan. Apabila pengguna ingin mengganti atau menghilangkan peubah atau variabel yang telah ditambahkan maka peubah atau variabel tersebut dapat dihapus. Selanjutnya pengguna akan memasukkan input nomor minterm. Apabila input nomor

minterm telah sesuai maka perhitungan penyederhanaan fungsi Boolean dapat

dilanjutkan. Setelah itu akan didapatkan hasil penyderhanaan fungsi Boolean sesuai dengan variabel dan input minterm yang dimasukkan. Kemudian para pengguna dapat melihat tahapan-tahapan proses penyederhanaan fungsi Boolean untuk pembelajaran.

3.2.2 Rancangan Program

Perangkat lunak bantu pemahaman ini dirancang dengan menggunakan bahasa pemrograman Microsoft C# dengan beberapa komponen standar seperti Command

Button, Text Box, Rich Text Box, Option Button, Label, Shape, dan sebagainya.

Perangkat lunak bantu pemahaman ini memiliki beberapa form, antara lain: a. Form Input.

b. Form Pembelajaran Quine-McCluskey

c. Form Langkah–Langkah Penyederhanaan dalam Format Text. d. Form About.

(15)

a. Form Input

Form input berfungsi sebagai form untuk memasukkan input terhadap perangkat

lunak, seperti: banyak peubah, simbol peubah, bentuk fungsi dan input term pada fungsi

Boolean. Input fungsi Boolean dapat disimpan (save) dalam bentuk file (exstension

QMC) dan dibuka (load) kembali. Pada form ini, juga terdapat fasilitas untuk menghitung dan mendapatkan hasil minimisasi fungsi Boolean secara langsung (tanpa melihat langkah–langkah pemahaman).

Gambar 3.9. Rancangan form input Bagian-bagian:

1 : title bar, berisikan tulisan ‘Boolean (Tugas Akhir oleh : Ronny Chandra Kurniawan, NIM : 0800738793)’.

2 : tombol ‘Close’, berfungsi untuk menutup Form Input.

Quine-McCluskey Peubah (Variabel) Banyak Peubah Simbol Peubah Buah Tambah Hapus Hapus Semua

Input Fungsi Boolean

Fungsi Boolean :

Hitung

Load Save About Exit

Input Nomor Minterm

Refresh X

(16)

3 : combobox, berfungsi sebagai tempat memilih banyak peubah (variabel). 4 : textbox ‘Simbol peubah’, berfungsi sebagai tempat pengisian simbol peubah. 5 : listbox, sebagai tempat menampilkan simbol peubah yang telah di-input. 6 : tombol ‘Tambah’ untuk menambahkan simbol peubah yang diisikan pada daerah-4 ke listbox pada daerah-5.

7 : tombol ‘Hapus’ untuk menghapus simbol peubah yang dipilih pada daerah-5. 8 : tombol ‘Hapus Semua’ untuk menghapus semua simbol peubah pada daerah-5. 9 : tombol ‘Hitung’ untuk mendapatkan hasil minimisasi secara langsung dan ditampilkan di textbox pada daerah-10.

10 : textbox ‘Hasil Minimisasi’ sebagai tempat menampilkan hasil minimisasi. 11 : textbox ‘Input Nomor Minterm’, sebagai tempat pengisian nomor-nomor term pada fungsi Boolean.

12 : tombol ‘Refresh’ untuk mengubah bentuk minterm yang telah di-input ke bentuk fungsi Boolean.

13 : textbox ‘Fungsi Boolean’, sebagai tempat untuk menampilkan fungsi Boolean. 14 : tombol ‘Tahapan – Tahapan Proses Pembelajaran’ untuk menampilkan Form Pembelajaran Quine-McCluskey.

15 : tombol ‘Load’ untuk membuka file input (*.QMC) yang telah disimpan sebelumnya.

16 : tombol ‘Save’ untuk menyimpan input fungsi ke dalam bentuk file (*.QMC). 17 : tombol ‘About’ untuk menampilkan Form About.

18 : tombol ‘Exit’ untuk keluar dari perangkat lunak.

b. Form Pembelajaran Quine-McCluskey

Form Pembelajaran Boolean berfungsi sebagai form untuk menampilkan

langkah-langkah minimisasi fungsi yang telah di-input dengan metode

Quine-McCluskey. Pada form ini, setiap langkah minimisasi dapat ditelusuri langkah per

(17)

Quine-Mc-Cluskey

Input Boolean

Gambar 3.10. Rancangan form pembelajaran Quine-McCluskey

Bagian-bagian:

1 : title bar, berisikan tulisan ‘Quine-McCluskey’.

2 : tombol ‘Close’, berfungsi untuk menutup Form Pembelajaran Quine-McCluskey. 3 : label, untuk menampilkan input fungsi Boolean.

4 : textbox, untuk menampilkan langkah-langkah yang dilakukan.

5 : textbox, untuk menampilkan hasil eksekusi langkah-langkah yang dilakukan. 6 : vertical scrollbar, untuk menggulung textbox pada daerah-5 secara vertikal. 7 : horizontal scrollbar, untuk menggulung textbox pada daerah-5 secara horizontal. 8 : tombol ‘Format Text’, untuk menampilkan form langkah-langkah penyederhanaan dalam bentuk text.

9 : tombol ‘Langkah Sebelumnya’, untuk menampilkan langkah sebelumnya. 10 : tombol ‘Langkah Berikutnya’, untuk menampilkan langkah berikutnya. 11 : tombol ‘Keluar’, untuk keluar dari form dan kembali ke Form Input.

Format Text < Langkah Sebelumnya Langkah berikutnya > Keluar

(18)

c. Form Langkah–Langkah Penyederhanaan dalam Format Text

Form langkah–langkah penyederhanaan dalam format text berfungsi sebagai form untuk menampilkan langkah-langkah minimisasi terhadap input fungsi dalam

format text. Apabila langkah–langkah minimisasi pada form pembelajaran dijabarkan langkah per langkah, maka pada form ini ditampilkan semua hasil eksekusi langkah secara bersamaan (sekaligus). Hal ini dimaksudkan agar user dapat menyimpan langkah-langkah penyederhanaan dalam bentuk rich text file (*.rtf). File hasil penyimpanan dapat digunakan sebagai alat pendukung dalam kegiatan belajar mengajar, karena file dapat dibuka dan dicetak pada aplikasi Microsoft Word.

Gambar 3.11. Rancangan form langkah–langkah penyederhanaan dalam format text

Bagian-bagian:

1 : title bar, berisikan tulisan ‘Langkah–Langkah Penyederhanaan Fungsi Boolean dengan metode Boolean(Format Text)’.

2 : tombol ‘Close’, berfungsi untuk menutup form.

Langkah-Langkah Penyederhanaan Fungsi Boolean dengan Metode Quine-McCluskey

X

(19)

3 : vertical scrollbar, berfungsi untuk menggulung textbox pada daerah-5 secara vertikal.

4 : horizontal scrollbar, berfungsi untuk menggulung textbox pada daerah-5 secara horizontal.

5 : textbox, berfungsi sebagai tempat menampilkan langkah-langkah penyederhanaan fungsi Boolean.

6 : tombol ‘Simpan’, berfungsi untuk menyimpan langkah–langkah penyederhanaan dalam format rich text file (*.rtf).

7 : tombol ‘Keluar’, berfungsi untuk keluar dari form.

d. Form About

Form About berfungsi sebagai form untuk menampilkan informasi mengenai

pembuat perangkat lunak.

Gambar 3.12. Rancangan form about

Bagian-bagian:

1 : title bar, berisikan tulisan ‘Quine-McCluskey’. 2 : tombol ‘Close’, berfungsi untuk menutup form. 3 : logo atau gambar icon perangkat lunak.

4 : nama perangkat lunak.

Quine-McCluskey

OK

(20)

5 : identitas pembuat perangkat lunak.

6 : nama kampus, kota dan tahun pembuatan perangkat lunak. 7 : tombol ‘OK’ untuk menutup Form About.

3.2.3 Algoritma

Algoritma perancangan perangkat lunak bantu pemahaman minimisasi fungsi boolean dengan metode Quine-McCluskey dibagi menjadi 3 bagian yaitu:

a. Algoritma Pengecekan Data Input.

b. Algoritma Penghasil Tahapan–Tahapan Penyederhanaan Fungsi Boolean dengan metode Quine-McCluskey.

c. Algoritma Fungsi Pendukung.

a. Algoritma Pengecekan Data Input

Algoritma ini mengecek validitas input data, seperti: apakah banyak variabel yang di-input melebihi banyak variabel yang dipilih, apakah terdapat nomor term yang berada di luar batas ((2 ^ jumlah_variabel) – 1) dan apakah terdapat nomor term yang sama. Algoritma ini dirancang dalam bentuk fungsi (function) dengan nama ‘CekInput’. Apabila fungsi ini mengembalikan nilai True, maka input data valid dan proses akan dilanjutkan ke tahapan penyederhanaan. Apabila fungsi mengembalikan nilai False, maka fungsi akan memunculkan pesan kesalahan berkaitan dengan kesalahan yang telah dibuat dan user harus mengoreksi kesalahan untuk dapat melanjutkan ke proses berikutnya.

(21)

Berikut merupakan algoritma fungsi ‘CekInput’ yang mengembalikan nilai Boolean (true / false),

1. Set CekInput = True.

2. Jika jumlah item pada list tidak sama dengan jumlah peubah yang dipilih pada

combobox ‘Banyak peubah’, maka munculkan pesan kesalahan ‘Jumlah peubah

tidak sesuai’, set CekInput = False dan keluar dari fungsi. Jika tidak, maka lanjutkan ke algoritma berikutnya.

3. Penggal input nomor term berdasarkan huruf ‘;’ dan simpan hasilnya pada variabel array TTerm.

4. Jika jumlah array pada TTerm < 0, maka munculkan pesan kesalahan ‘Term belum diisi !’, set CekInput = False dan keluar dari fungsi. Jika tidak, maka lanjutkan ke algoritma berikutnya.

5. Selanjutnya untuk memeriksa apakah terdapat nomor term yang melebihi batas maksimal nomor term yaitu (2 ^ banyak_peubah) – 1, lakukan prosedur berikut.

a. Set Max = (2 ^ banyak_peubah) – 1.

b. Untuk T = 0 sampai jumlah array TTerm, lakukan prosedur berikut. i. Set TTerm(T) = Val(TTerm(T)).

ii. Jika Val(TTerm(T)) < 0 atau Val(TTerm(T)) > Max, maka munculkan pesan kesalahan ‘Input term di luar batas’, set

CekInput = False dan keluar dari fungsi.

6. Untuk memeriksa apakah terdapat nomor term yang sama, lakukan prosedur berikut. Untuk S = 0 sampai jumlah array TTerm, lakukan langkah berikut. Untuk T = 0 sampai jumlah array TTerm, cek Jika S <> T dan TTerm(S) =

(22)

TTerm(T), maka munculkan pesan kesalahan ‘Ditemukan term ‘” & Tterm (S) & “’ lebih dari 1 buah’, set CekInput = False dan keluar dari fungsi.

b. Algoritma Penghasil Tahapan–Tahapan Penyederhanaan Fungsi Boolean dengan metode Quine-McCluskey

Algoritma ini merupakan inti dari perangkat lunak. Fungsi dari algoritma ini adalah melakukan proses penyederhanaan terhadap input fungsi Boolean dengan metode

Quine-McCluskey dan sekaligus menghasilkan tahapan–tahapan penyederhanaan dalam

format text. Tahapan–tahapan penyederhanaan ini dimaksudkan sebagai fasilitas pembelajaran bagi user. Tahapan penyederhanaan ini juga dapat disimpan (format rich

text file (*.rtf)), dibuka dengan aplikasi Word Processing seperti Microsoft Word atau WordPad, dan dicetak ke printer. Algoritma ini dirancang dalam bentuk fungsi dengan

nama ‘ProsesQuineMcCluskey’. Fungsi ini menghasilkan tahapan–tahapan penyederhanaan, menyimpannya ke variabel array cLangkah dan mengembalikan hasil minimisasi. Algoritma dari fungsi ‘ProsesQuineMcCluskey’ adalah sebagai berikut.

1. Untuk mengerjakan langkah-1 dari metode Quine-McCluskey, lakukan langkah berikut. Untuk N1 = 0 sampai jumlah array InputTerm.

a. Set MTerm(N1).Term = InputTerm(N1), set MTerm(N1).Bit = bilangan biner dari InputTerm(N1) dengan panjang bilangan sebesar banyak_peubah, set MTerm(N1).Level = 1, set MTerm(N1).Kelompok = banyak jumlah bit ‘1’ dari bilangan biner, set MTerm(N1).Check = False. b. Set POS(N1) = N1.

c. Untuk langkah penyelesaian, set cLangkah(1) = cLangkah(1) & vbCrlf & MTerm(N1).Term & “ = “ & MTerm(N1).Bit.

(23)

2. Untuk mengerjakan langkah-2 sampai langkah-5 dari metode Quine McCluskey, set nLevel1 = 1. Selama bSederhana = False (masih bisa dikelompokkan atau belum sederhana), lakukan langkah berikut.

a. Set nLevel = nLevel + 1.

b. Periksa apakah terdapat term yang memiliki perbedaan bit sebanyak 1 buah untuk level yang sama. Apabila ada, maka bentuk sebuah bentuk prima yang baru. Untuk N1 = 0 sampai jumlah array dari MTerm, lakukan prosedur berikut.

i. Jika MTerm(N1).Level = nLevel maka lakukan looping dari N2 = N1 + 1 sampai jumlah array MTerm, cek jika MTerm(N2).Level = nLevel maka lakukan langkah berikut.

1. Ambil banyak perbedaan bit, dengan men-set DF = GetDifference(MTerm(N1).Bit, MTerm(N2).Bit).

2. Jika DF.Banyak = 1(jumlah bit yang berbeda sebanyak 1 buah), maka lanjutkan ke poin 3.

3. Set MTerm(N1).Check = True, set MTerm(N2).Check =

True.

4. Set N3 = jumlah array MTerm + 1. Bentuk ulang dimensi

array dari MTerm menjadi N3.

5. Set MTerm(N3).Term = MTerm(N1).Term & “,” & MTerm(N2).Term. Ini adalah bentuk prima yang baru. 6. MTerm(N3).Bit = Left(MTerm(N1).Bit, DF.POSisi – 1) &

“-“ & Mid(MTerm(N1).Bit, DF.POSisi + 1, Len(MTerm(N1).Bit) – DF.POSisi).

(24)

7. Set MTerm(N3).Check = False 8. Set MTerm(N3).Level = nLevel + 1.

9. Set MTerm(N3).Kelompok = MTerm(N1).Kelompok. 10. Set nLevel1 = nLevel + 1

c. Set bSederhana = True.

d. Cek apakah masih bisa disederhanakan lagi. Untuk N1 = 0 sampai jumlah

array dari MTerm, lakukan langkah berikut.

i. Jika MTerm(N1).Level = nLevel + 1, maka lakukan looping dari N2 = N1 + 1 sampai jumlah array MTerm, lakukan langkah berikut.

1. Jika MTerm(N2).Level = nLevel + 1, maka set DF = GetDifference(MTerm(N1).Bit, MTerm(N2).Bit).

2. Jika DF.Banyak = 1 maka set bSederhana = False dan keluar dari looping.

ii. Jika bSederhana = False, maka keluar dari looping.

3. Ambil semua bentuk prima yang tidak memiliki tanda check dan update ke bentuk prima (Langkah 6.1 dari metode Quine McCluskey). Algoritmanya adalah sebagai berikut.

a. Set N5 = 0.

b. Bentuk ulang dimensi array variabel Prima menjadi 0.

c. Untuk N1 = 0 sampai jumlah array dari MTerm, lakukan langkah berikut. i. Jika MTerm(N1).Check = False maka lakukan langkah berikut,

1. Urutkan term dengan men-set cTemp =

(25)

2. Cek apakah bentuk prima sudah pernah ada dengan set bSama = False, lakukan looping dari N2 = 1 sampai jumlah array dari variabel Prima, jika Prima(N2).Term = cTemp maka set bSama = True dan keluar dari looping. 3. Jika bSama = False, maka lakukan langkah berikut.

a. Set N3 = Ubound(Prima) + 1.

b. Bentuk ulang dimensi array Prima menjadi N3. c. Set Prima(N3).Term = cTemp.

d. Set Prima(N3).Check = False. e. Set Prima(N3).Nilai = 0.

f. Jika panjang dari Prima(N3).Term > N5 maka, set N5 = panjang dari Prima(N3).Term.

4. Beri tanda ‘x’ untuk setiap term yang tercakup di dalam bentuk prima yang terpilih. Algoritmanya adalah sebagai berikut.

a. Bentuk ulang dimensi array variabel MTermP menjadi jumlah array dari variabel InputTerm.

b. Untuk N1 = 0 sampai jumlah array variabel InputTerm, lakukan langkah berikut.

i. Set MTermP(N1).Term = InputTerm(N1). ii. Set MTermP(N1).BanyakX = 0.

iii. Set MTermP(N1).Check = False. iv. Set MTermP(N1).Bintang = False.

c. Untuk N1 = 1 sampai jumlah array variabel Prima, lakukan langkah berikut.

(26)

i. Untuk N2 = 0 sampai jumlah array variabel MTermP, cek jika MTermP(N2).Term terdapat di dalam list dari Prima(N1).Term) maka set MTermP(N2).BanyakX = MTermP(N2).BanyakX + 1. 5. Tandai ‘*’ untuk semua MTermP yang memiliki 1 buah tanda ‘x’ (Langkah 7.a.1

dari metode Quine McCluskey). Algoritmanya adalah sebagai berikut,

Untuk N1 = 0 sampai jumlah array dari variabel MTermP, cek jika MTermP(N1).BanyakX = 1 maka set MTermP(N1).Bintang = True.

6. Beri tanda check pada semua bentuk prima yang mencantumkan term yang memiliki tanda ‘*’ (Langkah 7.a.2 dari metode Quine McCluskey). Algoritmanya adalah sebagai berikut.

a. Untuk N1 = 0 sampai jumlah array dari variabel MTermP, lakukan langkah berikut,

i. Jika MTermP(N1).Bintang = True, maka lakukan looping dari N2 = 1 sampai jumlah array dari variabel Prima, cek jika MTermP(N1).Term tercantum di dalam Prima(N2).Term, maka set Prima(N2).Check = True.

7. Beri tanda check di MTermP untuk semua MTermP yang tercantum dalam bentuk prima yang memiliki tanda check (Langkah 7.b dari metode Quine

McCluske). Algoritmanya adalah sebagai berikut.

Untuk N1 = 0 sampai jumlah array dari variabel Prima, lakukan langkah berikut. Jika Prima(N1).Check = True, maka lakukan looping dari N2 = 0 sampai jumlah array variabel MTermP, cek jika MTermP(N2).Term tercantum di dalam Prima(N1).Term, maka set MTermP(N2).Check = True.

(27)

8. Periksa apakah masih ada MTermP yang belum ter-check, apabila ada, maka pilih bentuk prima yang mencakup paling banyak MTermP yang belum ter-check (Langkah 7.c & 7.d dari metode Quine McCluskey). Algoritmanya adalah sebagai berikut.

a. Set bAllCheck = FAllCheck(MTermP).

b. Jika bAllCheck = False, maka lanjutkan algoritma pada poin c. c. Set cTemp = “”.

d. Untuk N1 = 0 sampai jumlah array dari variabel MTermP, lakukan langkah berikut,

Jika MTermP(N1).Check = False, maka

1. Jika cTemp <> “” maka cTemp = cTemp & “, “. 2. Set cTemp = cTemp & MTermP(N1).Term.

3. Untuk N2 = 1 sampai jumlah array dari variabel Prima, cek jika MTermP(N1).Term tercantum di dalam Prima(N2).Term maka Prima(N2).Nilai = Prima(N2).Nilai + 1.

e. Bentuk ulang dimensi array variabel POS menjadi jumlah array dari variabel Prima.

f. Untuk N1 = 1 sampai jumlah array dari variabel POS, set POS(N1) = N1. g. Kemudian, lakukan pengurutan variabel Prima berdasarkan nilai yang

dimiliki. Pengurutan yang dilakukan menggunakan metode buble sort. i. Untuk N1 = 1 sampai jumlah array dari variabel POS – 1, lakukan

(28)

ii. Untuk N2 = N1 + 1 sampai jumlah array dari variabel POS, lakukan langkah berikut.

iii. Jika Prima(POS(N1)).Nilai < Prima(POS(N2)).Nilai, maka 1. Set N3 = POS(N1).

2. Set POS(N1) = POS(N2). 3. Set POS(N2) = N3.

iv. Jika Prima(POS(N1)).Nilai = Prima(POS(N2)).Nilai, maka pilih bentuk prima yang paling panjang.

1. Cek jika UBound(Split(Prima(POS(N1)).Term, ",")) < UBound(Split(Prima(POS(N2)).Term, ",")), maka tukar

POSisi.

a. Set N3 = POS(N1). b. Set POS(N1) = POS(N2). c. Set POS(N2) = N3. h. Set cPrima = “”.

i. Set N1 = 0.

j. Selama bAllCheck = False, lakukan langkah berikut. i. Set N1 = N1 + 1.

ii. Set Prima(POS(N1)).Check = True.

iii. Jika cPrima <> “” maka set cPrima = cPrima & “, “.

iv. Untuk N2 = 0 sampai jumlah array dari variabel MTermP, lakukan langkah berikut.

(29)

Jika MTermP(N2).Check = False, maka cek jika MTermP(N2).Term t ercantum dalam Prima(POS(N1)).Term) maka set MTermP(N2).Check = True.

v. Set bAllCheck = FAllCheck(MTermP). 9. Set HasilMinimisasi = “”.

10. Ambil bentuk prima yang ter-check dan ubah menjadi bentuk kanonik. Algoritmanya adalah sebagai berikut.

a. Untuk N1 = 1 sampai jumlah array dari variabel Prima, lakukan langkah pada poin b berikut.

b. Jika Prima(N1).Check maka,

i. Set Prima(N1).BentukKanonik = PrimaToKanonik(Prima(N1).Term). ii. Jika cBentuk = “SOP”, maka,

1. Jika HasilMinimisasi <> “” maka set HasilMinimisasi = HasilMinimisasi & “ + “.

2. Set HasilMinimisasi = HasilMinimisasi & Prima(N1).BentukKanonik.

iii. Jika cBentuk = “POS”, maka,

1. Set HasilMinimisasi = HasilMinimisasi & Prima(N1).BentukKanonik.

11. Kembalikan hasil minimisasi.

(30)

c. Algoritma Fungsi Pendukung

Fungsi-fungsi pendukung yang digunakan dalam proses penyederhanaan adalah sebagai berikut.

1. Fungsi ‘GetDifference(pBit1 As String, pBit2 As String)’ mengembalikan banyak dan POSisi bit yang berbeda dari pBit1 dan pBit2.

a. Untuk F1 = 1 sampai panjang dari variabel pBit1, lakukan langkah berikut, i. Jika Mid(pBit1,F1,1) <> Mid(pBit2, F1, 1) maka set nBeda = nBeda

+ 1, set nPOSisi = F1. b. Set GetDifference.Banyak = nBeda. c. Set GetDifference.POSisi = nPOSisi.

2. Fungsi ‘Urutkan (pcDeretAngka As String)’ mengembalikan deretan angka yang terurut. Pengurutan dilakukan dengan menggunakan metode bubble-sort.

a. Pisah pcDeretAngka berdasarkan huruf “,” dan simpan hasilnya ke A1. b. Untuk nU1 = 0 sampai jumlah array dari variabel A1 -1, lakukan langkah

berikut.

Untuk nU2 = nU1 + 1 sampai jumlah array dari variabel A1, lakukan langkah berikut.

Jika A1(nU1) > A1(nU2), maka tukar POSisi dengan men-set nU3 = A1(nU1), set A1(nU1) = A1(nU2) dan set A1(nU2) = nU3.

c. Untuk nU1 = 0 sampai jumlah array dari variabel A1, lakukan langkah berikut.

i. Jika nU1 > 0, maka set Urutkan = Urutkan & “,”. ii. Urutkan = Urutkan & A1(nU1).

(31)

3. Fungsi ‘IsInList(pcAngka As String, pcDeretan As String)’ mengembalikan nilai

boolean, apakah pcAngka berada di dalam pcDeretan.

a. Set bFound = False.

b. Pisah pcDeretan berdasarkan huruf “,” dan simpan ke dalam variabel array AList.

c. Untuk F1 = 0 sampai jumlah array dari variabel AList, lakukan langkah berikut,

Jika pcAngka = AList(F1), maka set bFound = True, dan keluar dari looping. d. Set IsInList = bFound.

4. Fungsi ‘FAllCheck(pMTermP() As TMTermP)’ melakukan pengecekan apakah semua term pMTermP sudah ter-check.

a. Set FAllCheck = True.

b. Untuk F1 = 0 sampai jumlah array dari pMTermP, lakukan langkah berikut, Jika pMTermP(F1).Check = False, maka set FAllCheck = False dan keluar dari looping.

5. Fungsi ‘GetBit1(pcBit as String)’ mengembalikan banyak bit ‘1’ dari pcBit. a. Untuk F1 = 1 sampai panjang dari pcBit, lakukan langkah berikut.

Jika karakter ke-F1 dari pcBit = “1”, maka set nByk = nByk + 1. b. Set GetBit1 = nByk.

6. Fungsi ‘PrimaToKanonik(pcBentukPrima As String)’ mengembalikan hasil konversi dari bentuk prima ke bentuk kanonik SOP/POS.

a. Pisah pcBentukPrima berdasarkan huruf “,” dan simpan ke variabel array TmpBit.

(32)

b. Untuk F1 = 0 sampai jumlah array dari TmpBit, set TmpBit(F1) = Bilangan biner dari TmpBit(F1).

c. Bentuk ulang dimensi array dari variabel BitSama menjadi jumlah peubah. d. Untuk F1 = 1 sampai jumlah peubah, set BitSama(F1) = True.

e. Untuk F1 = 1 sampai jumlah peubah, lakukan langkah berikut, i. Untuk F2 = 0 sampai jumlah array pada TmpBit,

1. Jika F2 <> 0 dan karakter ke-F1 dari TmpBit(F2) <> cLast maka set BitSama(F1) = False, dan keluar dari looping.

2. Set cLast = karakter ke-F1 dari TmpBit(F2).

f. Untuk F1 = 1 sampai jumlah array pada variabel Peubah, lakukan langkah berikut.

i. Jika BitSama(F1) = True, maka lakukan langkah pada poin (ii). ii. Jika cBentuk = “SOP”, maka,

1. Set Hasil = Hasil & Peubah(F1).

2. Jika karakter ke-F1 dari TmpBit(0) = “0”, maka set cHasil = cHasil & “’ “.

iii. Jika cBentuk = “POS”, maka,

1. Jika Hasil <> “” maka set Hasil = Hasil & “ + “. 2. Set Hasil = Hasil & Peubah(F1).

3. Jika karakter ke-F1 dari TmpBit(0) = “1”, maka set cHasil = cHasil & “’ “.

g. Jika cBentuk = “POS”, maka set Hasil = “(“ & Hasil & “)”. h. Set PrimaToKanonik = Hasil.

Gambar

Gambar 3.5. Sequence diagram  untuk proses input dan variabel  tambahan
Gambar 3.7. Sequence diagram untuk ekstrasi data hasil perhitungan  fungsi Boolean
Gambar 3.9.  Rancangan form input  Bagian-bagian:
Gambar 3.10. Rancangan form pembelajaran Quine-McCluskey
+3

Referensi

Dokumen terkait

Penelitian ini berjudul “Penerapan Metode Sugestopedia dengan Media Lagu The Panas Dalam Bank pada Pembelajaran Menulis teks cerpen ini dilaksanakan.. di Sekolah

Hambatan yang dihadapi Poltabes Yogyakarta dalam upaya penmberantasan peredaran psikotropika di Kota Yogyakarta

GAMBARAN PASIEN DENGAN JANIN PLASENTA PREVIA YANG DIRAWAT DI SMF OBSGYN RSUD DR. Endang

 Elemen-elemen ini adalah stimuli publik yang terbuka bagi setiap peserta komunikasi dalam setiap transaksi

Hasil penelitian terdahulu mengenai financial distress dapat disimpulkan penelitian yang menggunakan rasio likuiditas berupa current ratio terbukti ada dua

Pelaksanaan pengadaan alat-alat kesehatan pada Dinas Kesehatan Kota Tanjungbalai telah memenuhi ketentuan hukum yaitu syarat sah perjanjian Pasal 1320 KUHPerdata, Keppres No

[r]

Pengobatan akne vulgaris dengan metode pemberian kombinasi niacinamide dan zinc memberikan perbedaan yang nyata dibandingkan dengan pemberian azelaic acid.