• Tidak ada hasil yang ditemukan

T1 612010011 BAB III

N/A
N/A
Protected

Academic year: 2017

Membagikan "T1 612010011 BAB III"

Copied!
21
0
0

Teks penuh

(1)

BAB III

PERANCANGAN

3.1. Perancangan

Tampilan simulator ini dibuat dengan menggunakan

GUI

(

Graphical User

Interface

), supaya sistem yang dirancang terlihat lebih menarik dan mudah untuk

dioperasikan.

Tampilan simulator penyandian dan pengawasandian terdiri dari menu utama

dan 10 jenis penyandian yang terpisah tiap

GUI

-nya.

Setelah program dijalankan maka akan keluar tampilan menu utama yang berisi

pilihan penyandian dan pengawasandian yang akan dipilih. Terdapat 10 jenis

penyandian dan pengawasandian yaitu

Huffman Code

,

Arithmetic Code

,

Parity Check

Code, Longitudinal Redudancy Code,Cyclic Redundacy Check Code, Checksum Code

,

Bose Chaudhuri Hocqueqhem Code

,

Hamming Code, Reed Salomon Code,

dan

Convolution Code

seperti pada Gambar 3.1.

(2)

3.1.1 Simulator Penyandaian dan Pengawasandian Huffman Code

Tampilan simulator penyandian dan pengawasandian

Huffman Code

ditunjukkan

pada Gambar 3.2.

Gambar 3.2. Tampilan Simulator Penyandian dan Pengawasandian

Huffman

Code.

Penyandian

Huffman Code

menggunakan probabilitas tiap karakter, yang

kemudian diurutkan dari yang paling besar ke yang paling kecil, lalu dibuat

diagram pohon

Huffman

. Probabilitas karakter paling kecil dan probabilitas

karakter yang terkecil kedua dijumlahkan kemudian dibandingkan dengan

probabilitas karakter yang lain.

Selanjutnya diurutkan kembali kemudian diberi kode „1‟ untuk bagian

atas dan kode „0‟ untuk bagian bawah.

Program

Visua

l C# untuk

Huffman Code

adalah sebagai berikut.

// cara mengambil karakter yang sama

string a = textBoxInputanHuffmanCode.Text;

char[] d = new char[100]; int j = 0;

int temp1 = 0;

(3)

for (int k = 0; k <= j; k++) {

if (a[i] != d[k]) {

temp1++; }

}

if (temp1 == j + 1) {

d[j] = a[i]; j++;

}

temp1 = 0; }

% cara mengambil jumlah angka tiap karakter int[] jumlah = new int[100];

int h = 0;

for (int i = 0; i < j; i++) {

for (int k = 0; k < a.Length; k++) {

if (d[i] == a[k]) { jumlah[h]++; } } h++; }

% cara mencari probabilitas tiap karakter float[] prob = new float[100];

for (int i = 0; i < j; i++)

prob[i] = (float)jumlah[i] / a.Length;

% cara mengurutkan jumlah dari paling kecil ke besar float[] temp3=new float[100];

for (int i = 0; i < j; i++) {

for (int k = 0; k < j; k++) {

if (prob[k] > prob[i]) {

temp3[0] = prob[k]; prob[k] = prob[i]; prob[i] = temp3[0]; }

} }

% cara membuat pohon huffman float[] prob2=new float[100];

float[] prob3 = new float[100]; prob2[0] = prob[0] + prob[1]; for (int i = 2; i < j; i++) {

prob2[i - 1] = prob[i]; }

int[] flag = new int[100]; for (int k = 2; k <= j; k++) {

(4)

{

if (prob2[i - 2] >= prob2[i-1]) {

flag[k] += 1;

temp3[0] = prob2[i-1]; prob2[i - 1] = prob2[i - 2]; prob2[i - 2] = temp3[0]; }

else {

prob2[i - 1] = prob2[i-1]; }

} }

Pada Program,

a

merupakan masukan dalam bentuk string. Dan

a.Length

merupakan fungsi untuk mencari jumlah karakter yang ditulis.

3.1.2 Simulator Penyandian dan Pengawasandian Arithmetic Code

Gambar 3.3 menunjukkan tampilan simulator penyandian dan pengawasandian

Arithmetic Code.

Gambar 3.3.Tampilan Simulator Penyandian dan Pengawasandian

Arithmetic

Code.

Penyandian

Arithmetic Code

menggunakan probabilitas tiap karakter

yang dibuat interval dari 0 sampai 1, lalu dibuat diagram

Arithmetic Code

(5)

Dari diagram

Arithmetic Code,

dibuat tabel

penyandiannya, lalu bisa

diawasandikan kembali.

Program

Visua

l C# untuk

Arithmetic Code

adalah sebagai berikut.

//Cara membuat

range

dalam

Arithmetic Code

float[] range0 = new float[100]; float[] high = new float[100];

float[] low = new float[100];

range0[0]=0;

for (int i = 1; i <= j; i++) {

range0[i] += range0[i - 1]; high[i - 1] = range0[i]; low[i - 1] = range0[i - 1]; range0[i] += prob[i - 1]; }

// Algoritma membuat diagram

Arithmetic Code

double[] hasil = new double[100]; double[] hasil2 = new double[100]; double[] hasil3 = new double[100]; double[] range1 = new double[100]; double[] range2 = new double[100]; range1[0] = high[1]-low[0];

int[] flag = new int[100]; int n = 0;

double[] high1 = new double[100]; double[] low1 = new double[100]; double[] selisih = new double[100]; int satu = 1;

hasil[1] = range0[1]; hasil[0] = range0[0];

for (int k = 0; k < a.Length; k++) {

for (int i = 0; i <= j; i++) {

if (a[k] == d[i]) {

n = i; }

}

range1[n] = hasil[n + 1] – hasil[n];

range1[n] = Math.Round(range1[n], belakangkoma); hasil[0] = hasil[n];

high1[k] = hasil[n + 1]; low1[k] = hasil[n];

selisih[k] = high1[k] – low1[k];

for (int i = 1; i <= j; i++) {

hasil[i] = range1[n] * prob[i – 1] + hasil[i – 1]; hasil[i] = Math.Round(hasil[i], belakangkoma); }

}

(6)

int n1 = 0;

for (int k = 1; k < a.Length; k++) {

for (int i = 1; i <= j; i++) {

if (hasilDecode[k – 1] <= range0[i] && hasilDecode[k – 1] >=

range0[i –1] ) n1 = i; }

pembilang[k] = hasilDecode[k – 1] – range0[n1 – 1]; penyebut[k] = range0[n1] – range0[n1 – 1];

hasilDecode[k]= ((hasilDecode[k-1]-range0[n1-1])/(range0[n1]- range0[n1-1]));

hasilDecode[k] = Math.Round(hasilDecode[k], belakangkoma); penyebut[k] = Math.Round(penyebut[k], belakangkoma); pembilang[k] = Math.Round(pembilang[k], belakangkoma);

}

3.1.3

Simulator Penyandian dan Pengawasandian Parity Check Code

Tampilan simulator penyandian dan pengawasandian

Parity Check Code

ditunjukkan pada Gambar 3.4.

Gambar 3.4.Tampilan Simulator Penyandian dan Pengawasandian

Parity Check

Code.

(7)

Parity Check Code

dibagi 2 yaitu Paritas Genap dan Paritas Gasal. Jika

menggunakan Paritas Genap

, dan jumlah angka „1‟nya genap misal 10, maka

bit

paritasnya „0‟. Jika menggunakan Paritas

Genap

, dan jumlah angka „1‟nya

genap misal 11, maka

bit parity

nya „1‟. Paritas

Gasal

merupakan kebalikan

Paritas Genap.

Program

Visua

l C# untuk

Parity Check Code

adalah sebagai berikut.

// proteksi untuk memilih paritas genap atau paritas gasal if (checkBoxGenap.Checked == true)

{

flaggenap = 1; }

else if (checkBoxGasal.Checked == true) {

flaggenap = 0; }

else {

MessageBox.Show( silahkan pilih parity genap atau ganjil

dahulu );

return; }

// cara mencari jumlah angka 1 setelah masukan diubah menjadi biner. databinerParityCheckCode = textBoxBinerParityCheckCode.Text;

int panjangdatabiner = databinerParityCheckCode.Length; int jumlahsatu = 0;

for (int i = 0; i < panjangdatabiner; i++) {

if (databinerParityCheckCode[i] == 1 ) {

jumlahsatu++; }

}

// cara mendapatkan bit parity

int bitParity = jumlahsatu % 2; if (flaggenap == 1)

{ textBoxBitParity.Text = bitParity.ToString(); } else

{

if (bitParity == 1) bitParity = 0; else bitParity = 1;

(8)

3.1.4.

Simulator Penyandian dan Pengawasandian Longitudinal Redundancy

Check

Tampilan simulator penyandian dan pengawasandian

Longitudinal

Redundancy Check Code

ditunjukkan pada Gambar 3.5.

Gambar 3.5.Tampilan Simulator Penyandian dan Pengawasandian

Longitudinal Redundancy Check.

Penyandian

Longitudinal Redundancy Check

menggunakan

bit biner

.

Kata masukan akan diubah menjadi kode

ASCII

dahulu, kemudian kode

ASCII

diubah menjadi kode

biner

.

Longitudinal Redundancy Check

dibuat dengan cara setiap karakter yang

telah dijadikan

biner

dijumlahkan dimodulo 2 dengan setiap karakter yang

lain, tetapi dengan urutan

bit

yang sama. Selanjutnya akan didapat hasil

LRC

nya.

Program

Visua

l C# untuk

Parity Check Code

adalah sebagai berikut.

// cara membuat setiap karakter diubah menjadi 8 bit biner.

int[] jumlahbinerperkarakter = new int[100];

int[] kurang=new int[100];

(9)

tambahnol[i]=""; }

for (int i = 0; i < a.Length; i++) {

jumlahbinerperkarakter[i] = c1[i].Length; if (jumlahbinerperkarakter[i] < 8)

{

kurang[i] = 8 - jumlahbinerperkarakter[i]; }

for (int k = 0; k < kurang[i]; k++) {

tambahnol[i] += "0"; }

}

string[] c2 = new string[100]; for (int i = 0; i < a.Length; i++) {

c2[i] += tambahnol[i]; c2[i]+=c1[i]; }

// Cara mencari LRCnya for (int i = 0; i < 8; i++) {

for (int k = 0; k < j; k++) {

if (c2[k][i] == '1') {

flag += 1; }

}

if (flag % 2 == 0) {

hasilLCR[i] = '0'; }

else {

hasilLCR[i] = '1'; }

(10)

3.1.5.

Simulator Penyandian dan Pengawasandian Cyclic Redundancy Code

Tampilan simulator penyandian dan pengawasandian

Cyclic Redundancy

Code

ditunjukkan pada Gambar 3.6.

Gambar 3.6.Tampilan Simulator Penyandian dan Pengawasandian

Cyclic

Redundancy Code.

Penyandian

Cyclic Redundancy Code

menggunakan

bit biner

. Kata

masukan akan diubah menjadi kode

ASCII

dahulu, kemudian kode

ASCII

diubah menjadi kode

biner

.

Cyclic Redundancy Code

menggunakan pembagi untuk mendapatkan

sisa

CRC

nya.

CRC

ini menggunakan pembagian

biner

.

Program

Visua

l C# untuk

Cyclic Redundancy Code

adalah sebagai

berikut.

// Cara algoritma mencari sisa CRC

string satu = "1";

string nol = "0";

int databinertanpatitik = databiner[0].Length;

string[] pengurang = new string[100]; string[] pengurang2 = new string[100];

(11)

int panjangpembagi = textBoxPembagiData.Text.Length; char[] temp = new char[100];

string[] hasilcheck1 = new string[100]; string[] hasilcheck2 = new string[100];

for (int j = 0; j < databinertanpatitik; j++) {

for (int i = 1; i < panjangpembagi; i++) {

if (pengurang[j][i] == '0' && hasilcheck1[j][i] == '0') {

hasilcheck1[j + 1] += '0'; }

else if (pengurang[j][i] == '1' && hasilcheck1[j][i] == '1') {

hasilcheck1[j + 1] += '0'; }

else if ((pengurang[j][i] == '1' && hasilcheck1[j][i] == '0') ||

(pengurang[j][i] == '0' && hasilcheck1[j][i] == '1')) {

hasilcheck1[j + 1] += '1'; }

}

hasilcheck1[j + 1] += temp[panjangpembagi + j]; if (hasilcheck1[j + 1][0] == '1')

{

textBoxHasilBagiCRC.AppendText(satu); pengurang[j + 1] = textBoxPembagiData.Text; }

else {

if (j < databinertanpatitik - 1)

textBoxHasilBagiCRC.AppendText(nol); for (int k = 0; k < panjangpembagi; k++) pengurang[j + 1] += '0';

(12)

3.1.6.

Simulator Penyandian dan Pengawasandian Checksum Code

Tampilan simulator penyandian dan pengawasandian

Checksum Code

ditunjukkan pada Gambar 3.7.

Gambar 3.7.Tampilan Penyandian dan Pengawasandian

Checksum Code.

Penyandian

Checksum Code

menggunakan

bit biner

. Kata masukan akan

diubah menjadi kode

ASCII

dahulu, kemudian kode

ASCII

diubah menjadi

kode

biner

.

Data

biner Checksum Code

dibagi 2 bagian. Misal jumlah data

biner

nya

16 maka dibagi 2, masing-masing 8

bit

. Kemudian kedua bagian

dijumlahkan. Hasil penjumlahan dikomplemen untuk mendapatkan hasil

checksum

nya.

Program

Visua

l C# untuk

Checksum Code

adalah sebagai berikut.

//Cara algoritma checksum code dari sebuah data

int tengah=databinertanpatitik-1;

int flag = 0,flag1=0;

char[] hasiljumlah=new char[100];

for (int i = (databinertanpatitik / 2)-1; i >=0; i--) {

if (temp[i] == '0' && temp[tengah] == '0') {

(13)

flag = 0; flag1 = 0; }

else if ( temp[i] == '1' && temp[tengah] == '1') {

if(flag==0 && flag1==0) hasiljumlah[i] = '0'; if (flag == 1 || flag1==1) hasiljumlah[i] = '1'; flag = 1;

}

else if ((temp[i] == '1' && temp[tengah] == '0') || temp[i] ==

'0' &&

temp[tengah] == '1') {

if (flag == 0 && flag1 == 0) { hasiljumlah[i] = '1'; flag1 = 0; }

else if (flag == 1 || flag1==1) {

flag1 = 1;

hasiljumlah[i] = '0'; }

}

tengah--; }

3.1.7.

Simulator Penyandian dan Pengawasandian Hamming Code

Gambar 3.8 menujukkan Tampilan Menu Penyandian dan Pengawasandian

Hamming Code,

sedangkan Gambar 3.9

menunjukkan

tampilan penyandian dan

pengawasandian

Hamming Code

dalam 1 baris, dan Gambar 3.10 menunjukkan

tampilan penyandian dan pengawasandian

Hamming Code

tiap karakter

.

(14)

Gambar 3.9.Tampilan Penyandian dan Pengawasandian

Hamming Code

dalam 1 Baris

.

Gambar 3.10.Tampilan Penyandian dan Pengawasandian

Hamming Code

tiap Karakter

.

Penyandian

Hamming Code

merupakan penyandian

Block Code

yang

mempunyai keakuratan cukup baik.

Hamming Code

merupakan penyandian

Error Control Code

yang mampu mendeteksi dan mengoreksi data jika

terjadi kesalahan. Kata masukan akan diubah menjadi

biner

dengan cara

kata masukan dibuat menjadi kode

ASCII

dahulu, kemudian kode

ASCII

(15)

Hamming Code

juga menggunakan

bit

tambahan yaitu tambahan

bit

ke

1,2,4,8,16,dan seterusnya tergantung pada jumlah jumlah

bit

masukan.

Program

Visua

l C# untuk

Hamming Code

adalah sebagai berikut.

// Cara membuat

Hamming Code

for (int i = panjangdata-1; i >= 0;i--) {

if (x == z) { z *= 2; i++; data[x] = 'x'; x++; flag++; } else { data[x] = databiner[0][i]; x++;}

}

// Cara algoritma membuat hamming Code

int[] flag1 = new int[100]; //0,flag2=0,flag3=0; int tanda2=0;

int y = 2; int tanda4 = 0; int tanda8 = 0; int tanda16 = 0; y = 2;

int g1 = 4; int g2 = 8; int g3 = 16;

for (int i = 0; i < panjangdata + flag + 1; i++) {

if (i % 2 == 1) {

if (data[i] == '1') flag1[1]++; }

if (i == y) {

if (data[i] == '1') flag1[2]++; if (tanda2 % 2 == 0) y += 1;

else y += 3; tanda2++; }

if(i==g1) {

if (data[i] == '1') flag1[3]++; tanda4++;

if (tanda4 % 4 == 0) g1 += 5;

else g1++; }

if(i==g2) {

if (data[i] == '1') flag1[4]++; tanda8++;

if (tanda8 % 8 == 0) g2 += 9;

(16)

} if (i == g3) {

if (data[i] == '1') flag1[5]++; tanda16++;

if (tanda16 % 16 == 0) g3 += 17;

else g3++; }

}

int x1 = 1;

for (int i = 1; i <= flag; i++) {

if (flag1[i] % 2 == 0) {

data[x1] = '0'; }

else {

data[x1] = '1'; }

x1 *= 2; }

3.1.8.

Simulator Penyandian dan Pengawasandian BCH Code

Tampilan simulator penyandian dan pengawasandian

BCH Code

ditunjukkan pada Gambar 3.11.

Gambar 3.11.Tampilan Penyandian dan Pengawasandian

BCH Code.

(17)

panjang blok dan laju kode.

Bose Chaudhuri Hocqueqhem Code (BCH Code)

merupakan penyandian

Error Control Code

yang mampu mendeteksi dan

mengoreksi data jika terjadi kesalahan.

Dalam simulator ini menggunakan masukan berupa 1 karakter yang

berisi 7

bit

. dengan jumlah kesalahan 1.

for (int i = 0; i < q.Length; i++) {

if (q[i] == '1') {

hasil=i;

if (hasil == 0)

textBoxMasukanBCH.AppendText("1"); else

textBoxMasukanBCH.AppendText("X^" + hasil.ToString()); tanda += 1;

if (tanda < jumlahtambah) {

textBoxMasukanBCH.AppendText("+"); }

}

}

3.1.9.

Simulator Penyandian dan Pengawasandian Convolution Code

Tampilan simulator penyandian dan pengawasandian

Convolution Code

ditunjukkan pada Gambar 3.12.

G

a

m

b

a

r

3

.

(18)

Convolution Code

merupakan jenis penyandian yang sering dipakai

untuk berbagai aplikasi, terutama pada pengiriman data. Seperti pengiriman data

untuk

video

digital,

radio,

komunikasi

bergerak,

dan

komunikasisatelit.

Convolution Code

juga termasuk dari penyandian

Error Control

Code.

Dalam simulator ini memakai sistem

s1

dan

s2

saja yang akan dijelaskan

pada Bab 4.

string A = "00";

string B = "10"; string C = "11"; string D = "01"; string code=""; string next=""; string present; present = A;

for (int i = 0; i < panjangdata; i++) {

if (present == A) {

if (data[i] == '1') {

next = B; code = "11"; }

else if (data[i] == '0') {

next = A; code = "00"; }

}

else if (present == B) {

if (data[i] == '1') {

next = D; code = "01"; }

else if (data[i] == '0') {

next = C; code = "10"; } }

else if (present == C) {

if (data[i] == '1') {

next = B; code = "00"; }

else if (data[i] == '0') {

(19)

}

else if (present == D) {

if (data[i] == '1') {

next = D; code = "11"; }

else if (data[i] == '0') {

next = C; code = "01"; }

}

present = next;

textBox1.AppendText(code + " ");

}

}

3.1.10.

Simulator Penyandian dan Pengawasandian Reed Salomon Code

Tampilan simulator penyandian dan pengawasandian

Convolution Code

ditunjukkan pada Gambar 3.13.

3.13.Tampilan Penyandian dan Pengawasandian

RS Code.

Reed Salomon Code

juga merupakan subkelas penyandian

Block Code

(20)

penyandian

Error Control Code

yang mampu mendeteksi dan mengoreksi data

jika terjadi kesalahan.

Pada simulator ini memakai contoh yang sudah tetap karena kode ini

cukup sulit baik dalam proses penyandian maupun pengawasandian, sehingga

masukan tidak bisa sesuai masukan pengguna simulator.

3.2

Program Pembangkit Error dan Program Konversi Kata Masukan menjadi

Biner

Program pembangkit

error

disini digunakan untuk membangkitkan

error

secara acak pada bit data yang diterima. Sehingga data yang dikirim dan data

yang diterima tidak sama. Program pembangkit

error

dituliskan sebagai berikut.

// cara membuat error

int[] biterror = new int[100]; Random random = new Random();

biterror[0] = random.Next(panjangdatabiner - 1);

tanda = 0;

for (int i = 1; i < jumlahbiterror; i++) {

biterror[i] = random.Next(panjangdatabiner - 1); }

for (int i = 1; i < jumlahbiterror; i++) {

tanda = 0;

for (int O = 0; O < i; O++) {

biterror[i] = random.Next(panjangdatabiner - 1); if (biterror[i] == biterror[O] || biterror[i] == 0 || temp[biterror[i]] == '.')

{

tanda = 1; }

}

if (tanda == 1) i -= 1; }

int bitParityError = 0; char[] temp = new char[100];

for (int i = 0; i < panjangdatabiner; i++) {

temp[i] = databinerParityCheckCode[i]; }

for (int i = 0; i < jumlahbiterror; i++) {

if (temp[biterror[i]] == '1') {

temp[biterror[i]] = '0'; }

(21)

{

temp[biterror[i]] = '1'; }

}

Program pengkonversi kata masukan menjadi deretan biner adalah sebagai

berikut.

//

cara kata masukkan menjadi

biner

string[] c1 = new string[100]; string databinerParityCheckCode; int[] b = new int[100];

for (int i = 0; i < a.Length; i++) {

b[i] = Convert.ToInt32(a[i]); c1[i] = Convert.ToString(b[i], 2); }

3.3

Pedoman Penggunaan Simulator Penyandian dan Pengawasandian

Gambar

Gambar 3.1.Tampilan Utama Simulator Penyandian dan Pengawasandian.
Gambar 3.2. Tampilan Simulator Penyandian dan Pengawasandian Huffman
Gambar 3.3 menunjukkan tampilan simulator penyandian dan pengawasandian
Gambar 3.4.Tampilan Simulator Penyandian dan Pengawasandian Parity Check
+7

Referensi

Garis besar

Dokumen terkait

Peta IV.1 Peta Kepadatan Bangunan Berdasarkan Kerapatan Kontur Wilayah Studi

struktur.. Kea St penduk yang prestas sistem bangun bangun struktu pada b P pancan mengg konstru 5.4. Ko U diguna keseha bangun P menye yang peranc peranc peranc ksibilitas b

Sektor transportasi darat dengan prasarna jalan raya merupakan prasarana transportasi yang sangat besar menerima pengaruh adanya peningktan taraf hidup, karena fungsi utama jalan

Berangkat dari masalah yang diungkapkan di atas bahwa berpikir tidak dapat dipisahkan dari isi materi pelajaran, karena kenyataannya berpikir merupakan sebuah cara untuk

Indikator presepsi siswa yang ketiga tentang media pembelajaran dengan menggunakan Adobe Flash Professional CS6 adalah “Kesesuaian media dengan tujuan

Oleh karena itu, penelitian ini bertujuan untuk menentukan sebuah strategi pengembangan yang dapat diterapkan untuk Kawasan Industri Lampung berdasarkan tiga aspek, yaitu;

Yang bertanda tangan di bawah ini, saya, M.Lutfi Afifi, menyatakan bahwa skripsi dengan judul : ANALISIS PENGARUH KEADILAN ORGANISASIONAL DAN KOMITMEN

Data mentah, standard deviasi beserta kesalahan relatif dari pengujian kekerasan ini dapat dilihat pada Lampiran, dibawah menunjukan data kekerasan yang relatif