BAB III PERANCANGAN 3.1. Perancangan -...

21
34 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. Gambar 3.1.Tampilan Utama Simulator Penyandian dan Pengawasandian.

Transcript of BAB III PERANCANGAN 3.1. Perancangan -...

Page 1: BAB III PERANCANGAN 3.1. Perancangan - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9755/4/T1_612010011_BAB III.pdf · Selanjutnya diurutkan kembali kemudian diberi

34

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.

Gambar 3.1.Tampilan Utama Simulator Penyandian dan Pengawasandian.

Page 2: BAB III PERANCANGAN 3.1. Perancangan - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9755/4/T1_612010011_BAB III.pdf · Selanjutnya diurutkan kembali kemudian diberi

35

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 Visual 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; for (int i = 0; i < a.Length; i++) {

Page 3: BAB III PERANCANGAN 3.1. Perancangan - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9755/4/T1_612010011_BAB III.pdf · Selanjutnya diurutkan kembali kemudian diberi

36

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++) { for (int i = 2; i < j; i++)

Page 4: BAB III PERANCANGAN 3.1. Perancangan - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9755/4/T1_612010011_BAB III.pdf · Selanjutnya diurutkan kembali kemudian diberi

37

{ 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

berdasarkan masukan karakter pertama sampai karakter yang terakhir.

Page 5: BAB III PERANCANGAN 3.1. Perancangan - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9755/4/T1_612010011_BAB III.pdf · Selanjutnya diurutkan kembali kemudian diberi

38

Dari diagram Arithmetic Code, dibuat tabel penyandiannya, lalu bisa

diawasandikan kembali.

Program Visual 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); } }

// Cara pengawasandian Arithmetic Code

Page 6: BAB III PERANCANGAN 3.1. Perancangan - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9755/4/T1_612010011_BAB III.pdf · Selanjutnya diurutkan kembali kemudian diberi

39

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.

Penyandian Parity Check Code menggunakan bit biner. Kata masukan

akan diubah menjadi kode ASCII dahulu, kemudian kode ASCII diubah menjadi

kode biner dengan cara menghitung angka “1”nya.

Page 7: BAB III PERANCANGAN 3.1. Perancangan - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9755/4/T1_612010011_BAB III.pdf · Selanjutnya diurutkan kembali kemudian diberi

40

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 paritynya „1‟. Paritas Gasal merupakan kebalikan

Paritas Genap.

Program Visual 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; textBoxBitParity.Text = bitParity.ToString(); }

Page 8: BAB III PERANCANGAN 3.1. Perancangan - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9755/4/T1_612010011_BAB III.pdf · Selanjutnya diurutkan kembali kemudian diberi

41

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

LRCnya.

Program Visual 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]; string[] tambahnol = new string[100]; for (int i = 0; i < a.Length; i++) {

Page 9: BAB III PERANCANGAN 3.1. Perancangan - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9755/4/T1_612010011_BAB III.pdf · Selanjutnya diurutkan kembali kemudian diberi

42

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'; } flag = 0;

}

Page 10: BAB III PERANCANGAN 3.1. Perancangan - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9755/4/T1_612010011_BAB III.pdf · Selanjutnya diurutkan kembali kemudian diberi

43

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 CRCnya. CRC ini menggunakan pembagian biner.

Program Visual 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];

Page 11: BAB III PERANCANGAN 3.1. Perancangan - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9755/4/T1_612010011_BAB III.pdf · Selanjutnya diurutkan kembali kemudian diberi

44

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'; } }

Page 12: BAB III PERANCANGAN 3.1. Perancangan - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9755/4/T1_612010011_BAB III.pdf · Selanjutnya diurutkan kembali kemudian diberi

45

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 binernya

16 maka dibagi 2, masing-masing 8 bit. Kemudian kedua bagian

dijumlahkan. Hasil penjumlahan dikomplemen untuk mendapatkan hasil

checksumnya.

Program Visual 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') { if (flag==0 && flag1==0)hasiljumlah[i] = '0'; else if (flag == 1||flag1==1) hasiljumlah[i] = '1';

Page 13: BAB III PERANCANGAN 3.1. Perancangan - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9755/4/T1_612010011_BAB III.pdf · Selanjutnya diurutkan kembali kemudian diberi

46

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.

Gambar 3.8.Tampilan Menu Penyandian dan Pengawasandian Hamming

Code.

Page 14: BAB III PERANCANGAN 3.1. Perancangan - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9755/4/T1_612010011_BAB III.pdf · Selanjutnya diurutkan kembali kemudian diberi

47

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

diubah menjadi kode biner.

Page 15: BAB III PERANCANGAN 3.1. Perancangan - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9755/4/T1_612010011_BAB III.pdf · Selanjutnya diurutkan kembali kemudian diberi

48

Hamming Code juga menggunakan bit tambahan yaitu tambahan bit ke

1,2,4,8,16,dan seterusnya tergantung pada jumlah jumlah bit masukan.

Program Visual 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; else g2++;

Page 16: BAB III PERANCANGAN 3.1. Perancangan - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9755/4/T1_612010011_BAB III.pdf · Selanjutnya diurutkan kembali kemudian diberi

49

} 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.

Bose Chaudhuri Hocqueqhem Code (BCH Code) merupakan subkelas

penyandian siklik (Cyclic Code) yang menawarkan pemilihan parameter, yaitu

Page 17: BAB III PERANCANGAN 3.1. Perancangan - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9755/4/T1_612010011_BAB III.pdf · Selanjutnya diurutkan kembali kemudian diberi

50

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

.

3.12.Tampilan Penyandian dan Pengawasandian Convolution Code

Page 18: BAB III PERANCANGAN 3.1. Perancangan - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9755/4/T1_612010011_BAB III.pdf · Selanjutnya diurutkan kembali kemudian diberi

51

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') { next = A; code = "11"; }

Page 19: BAB III PERANCANGAN 3.1. Perancangan - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9755/4/T1_612010011_BAB III.pdf · Selanjutnya diurutkan kembali kemudian diberi

52

} 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

yang mempunyai cara kerja multibit. Reed Salomon Code juga merupakan

Page 20: BAB III PERANCANGAN 3.1. Perancangan - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9755/4/T1_612010011_BAB III.pdf · Selanjutnya diurutkan kembali kemudian diberi

53

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'; } else if (temp[biterror[i]] == '0')

Page 21: BAB III PERANCANGAN 3.1. Perancangan - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9755/4/T1_612010011_BAB III.pdf · Selanjutnya diurutkan kembali kemudian diberi

54

{ 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

Pedoman penggunaan simulator merupakan sebuah pedoman yang

digunakan untuk memandu langkah-langkah pengguna simulasi penyandian dan

pengawasandian, hal ini disertakan pada lampiran.