• Tidak ada hasil yang ditemukan

LISTING PROGRAM. // // TODO: Add constructor code after the InitializeComponent() call. // }

N/A
N/A
Protected

Academic year: 2021

Membagikan "LISTING PROGRAM. // // TODO: Add constructor code after the InitializeComponent() call. // }"

Copied!
19
0
0

Teks penuh

(1)

LISTING PROGRAM

1. Mainform.cs

using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; namespace Home { /// <summary> /// Description of MainForm. /// </summary>

public partial class MainForm : Form {

public MainForm() {

//

// The InitializeComponent() call is required for Windows Forms designer support.

//

InitializeComponent();

//

// TODO: Add constructor code after the InitializeComponent() call.

// }

void MainFormLoad(object sender, EventArgs e) {

Home frmcld = new Home(); frmcld.MdiParent=this; frmcld.Show();

}

void AboutToolStripMenuItemClick(object sender, EventArgs e) {

About frmcld = new About(); frmcld.MdiParent=this; frmcld.Show();

}

void EliasGammaCodeToolStripMenuItemClick(object sender, Even tArgs e)

{

Elias frmcld = new Elias(); frmcld.MdiParent=this; frmcld.Show();

}

void ShannonFanoToolStripMenuItemClick(object sender, EventAr gs e)

{

Shannon frmcld = new Shannon(); frmcld.MdiParent=this;

(2)

}

void HelpToolStripMenuItemClick(object sender, EventArgs e) {

Help frmcld = new Help(); frmcld.MdiParent=this; frmcld.Show();

}

void ExitToolStripMenuItemClick(object sender, EventArgs e) {

this.Close(); }

void HomeToolStripMenuItemClick(object sender, EventArgs e) {

Home frmcld = new Home(); frmcld.MdiParent=this; frmcld.Show(); } } }

2. Elias.cs

using System; using System.Drawing; using System.IO; using System.Dynamic; using System.Windows.Forms; using System.Text; using System.Collections.Generic; using IronPython.Hosting; namespace Home { /// <summary> /// Description of Elias. /// </summary>

public partial class Elias : Form {

public Elias() {

//

// The InitializeComponent() call is required for Windows Forms designer support.

//

InitializeComponent();

//

// TODO: Add constructor code after the InitializeComponent() call.

// }

void ButtonBrowseClick(object sender, EventArgs e) {

OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "Document (MsWord)|*.doc"; dialog.Title = "Open file doc : ";

(3)

if(dialog.ShowDialog() == DialogResult.OK){ string dirName =

System.IO.Path.GetDirectoryName(dialog.FileName);

var fileinfo = new FileInfo(dialog.FileName); var size= fileinfo.Length;

string drive = dirName.Split(System.IO.Path.VolumeSeparatorChar)[1]; txtUkuranFileE.Text=size.ToString(); textBoxLoadFilePath.Text = dirName + "\\" + dialog.SafeFileName.ToString(); } buttonBaca.Enabled = true; }

void ButtonBacaClick(object sender, EventArgs e) {

Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.ApplicationClass();

object filenameO = textBoxLoadFilePath.Text.ToString(); object objFalse = false;

object objTrue = true;

object missing = System.Reflection.Missing.Value; object emptyData = string.Empty;

try{

Microsoft.Office.Interop.Word.Document aDoc

= wordApp.Documents.Open(ref filenameO, ref objFalse, ref objTrue, r ef missing, ref missing, ref missing, ref missing, ref missing, ref m issing, ref missing, ref objTrue, ref missing, ref missing, ref missi ng, ref missing); aDoc.ActiveWindow.Selection.WholeStory(); aDoc.ActiveWindow.Selection.Copy(); IDataObject data = System.Windows.Forms.Clipboard.GetDataObject(); String fileText = data.GetData(System.Windows.Forms.DataFormats.Text).ToString(); System.Windows.Forms.Clipboard.SetDataObject(string.E mpty); textBoxDisplayText.Text = fileText; } catch(Exception err){ MessageBox.Show(err.Message); } finally{

MessageBox.Show("File berhasil dibaca"); }

btnCompressEG.Enabled = true;

}

void BtnCompressEGClick(object sender, EventArgs e) {

var input = textBoxDisplayText.Text; try

{

var ipy = Python.CreateRuntime(); dynamic eliasgamma =

(4)

ipy.UseFile ("eliasgamma.py");

DateTime startTime = DateTime.Now;

dynamic CR = eliasgamma.processEG(input); dynamic RedudancyData =

eliasgamma.processEG1(input);

dynamic hasilCompress = eliasgamma.processEG2(input);

DateTime endTime = DateTime.Now; TimeSpan elapsed = endTime.Subtract(startTime); txtWaktuKompres.Text = elapsed.Hours.ToString("00") + ":" + elapsed.Minutes.ToString("00") + ":" + elapsed.Se conds.ToString("00") + "." + elapsed.Milliseconds.ToString("000"); txtRedudancyElias.Text= RedudancyData.ToString(); txtHasil.Text = hasilCompress.ToString(); txtRasio.Text = CR.ToString(); File.WriteAllText("D:/data.txt", txtHasil.Text); var fileinfo = new FileInfo("D:/data.txt"); var size= fileinfo.Length;

ukuranfile.Text=size.ToString(); }catch(Exception ex){ MessageBox.Show(ex.ToString()); } btnDecompressEG.Enabled = true; }

void TimereliasTick(object sender, EventArgs e) { }

void BtnDecompressEGClick(object sender, EventArgs e) {

SaveFileDialog saveFileDialog1 = new SaveFileDialog();

saveFileDialog1.Filter = "Word 1997-2003|*.doc|Word 2007-2013|*.docx|Rich Text File|*.rtf|All Files (*.*)|*.*";

saveFileDialog1.Title = "";

var input = textBoxDisplayText.Text; try

{

var ipy = Python.CreateRuntime(); dynamic eliasgamma =

ipy.UseFile("eliasgamma.py");

DateTime startTime = DateTime.Now; dynamic hasilDecompress =

eliasgamma.processEG3(input);

DateTime endTime = DateTime.Now; TimeSpan elapsed =

endTime.Subtract(startTime);

txtWaktuDekompres.Text = elapsed.Hours.ToString("00") + ":" +

(5)

conds.ToString ("00") + "." + elapsed.Milliseconds.ToString("000"); txtDecompressElias.Text = hasilDecompress.ToString(); if (saveFileDialog1.ShowDialog() == DialogResult.OK) {

String filetext = txtDecompressElias.Text; Microsoft.Office.Interop.Word.Application oWord = new Microsoft.Office.Interop.Word.Application();

//oWord.Visible = true;

var oDoc = oWord.Documents.Add();

//Insert a paragraph at the beginning of the document. var paragraph1 = oDoc.Content.Paragraphs.Add(); paragraph1.Range.Text = filetext; oDoc.SaveAs(@saveFileDialog1.FileName); MessageBox.Show("Penyimpanan berhasil", saveFileDialog1.FileName); oWord.Quit(); } }catch(Exception ex){ MessageBox.Show(ex.ToString()); } btnReset.Enabled = true; }

void TxtDecompressEliasTextChanged(object sender, EventArgs e) {

}

void BtnResetClick(object sender, EventArgs e) { textBoxLoadFilePath.Text = ""; txtUkuranFileE.Text = ""; ukuranfile.Text = ""; txtRasio.Text = ""; txtWaktuKompres.Text = ""; txtRedudancyElias.Text = ""; txtWaktuDekompres.Text = ""; textBoxDisplayText.Text = ""; txtHasil.Text = ""; txtDecompressElias.Text = ""; buttonBaca.Enabled = false; btnCompressEG.Enabled = false; btnDecompressEG.Enabled = false; btnReset.Enabled = false; } } }

(6)

3. Shannon-Fano.cs

using System; using System.Drawing; using System.IO; using System.Dynamic; using System.Windows.Forms; using System.Text; using System.Collections.Generic; using IronPython.Hosting; namespace Home { /// <summary> /// Description of Shannon. /// </summary>

public partial class Shannon : Form {

public Shannon() {

//

// The InitializeComponent() call is required for Windows Forms designer support.

//

InitializeComponent();

//

// TODO: Add constructor code after the InitializeComponent() call.

// }

void ButtonBrowseClick(object sender, EventArgs e) {

OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "Document (MsWord)|*.doc"; dialog.Title = "Open file doc : ";

dialog.RestoreDirectory = true;

if(dialog.ShowDialog() == DialogResult.OK){ string dirName =

System.IO.Path.GetDirectoryName(dialog.FileName);

var fileinfo = new FileInfo(dialog.FileName); var size= fileinfo.Length;

string drive = dirName.Split(System.IO.Path.VolumeSeparatorChar)[1]; txtUkuranFileS.Text=size.ToString(); textBoxLoadFilePath.Text = dirName + "\\" + dialog.SafeFileName.ToString(); } buttonBaca.Enabled=true; }

void ButtonBacaClick(object sender, EventArgs e) {

Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.ApplicationClass();

object filenameO = textBoxLoadFilePath.Text.ToString(); object objFalse = false;

object objTrue = true;

object missing = System.Reflection.Missing.Value; object emptyData = string.Empty;

(7)

try{

Microsoft.Office.Interop.Word.Document aDoc

= wordApp.Documents.Open(ref filenameO, ref objFalse, ref objTrue, r ef missing, ref missing, ref missing, ref missing, ref missing, ref m issing, ref missing, ref objTrue, ref missing, ref missing, ref missi ng, ref missing); aDoc.ActiveWindow.Selection.WholeStory(); aDoc.ActiveWindow.Selection.Copy(); IDataObject data = System.Windows.Forms.Clipboard.GetDataObject(); String fileText = data.GetData(System.Windows.Forms.DataFormats.Text).ToString(); System.Windows.Forms.Clipboard.SetDataObject(string.E mpty); textBoxDisplayText.Text = fileText; } catch(Exception err){ MessageBox.Show(err.Message); } finally{

MessageBox.Show("File berhasil dibaca"); }

btnCompressSF.Enabled=true;

}

void BtnCompressSFClick(object sender, EventArgs e) {

var input = textBoxDisplayText.Text; try

{

var ipy = Python.CreateRuntime(); dynamic shannonfano =

ipy.UseFile("shannonfano.py");

DateTime startTime = DateTime.Now;

dynamic CR = shannonfano.processSF(input); dynamic RedudancyData =

shannonfano.processSF1(input);

dynamic hasilCompress = shannonfano.processSF2(input);

DateTime endTime = DateTime.Now; TimeSpan elapsed = endTime.Subtract(startTime); txtWaktuKompres.Text = elapsed.Hours.ToString("00") + ":" + elapsed.Minutes.ToString("00") + ":" + elapsed.Se conds.ToString("00") + "." + elapsed.Milliseconds.ToString("000"); txtRedudancyShannon.Text= RedudancyData.ToString(); txtHasil.Text = hasilCompress.ToString(); txtRasio.Text = CR.ToString(); File.WriteAllText("D:/data.txt", txtHasil.Text); var fileinfo = new FileInfo("D:/data.txt");

(8)

var size= fileinfo.Length; ukuranfile.Text=size.ToString(); }catch(Exception ex){ MessageBox.Show(ex.ToString()); } btnDecompressSF.Enabled=true; }

void BtnDecompressSFClick(object sender, EventArgs e) {

SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.Filter = "Word 1997-2003|*.doc|Word 2007-2013|*.docx|Rich Text File|*.rtf|All Files (*.*)|*.*";

saveFileDialog1.Title = "";

var input = textBoxDisplayText.Text; try

{

var ipy = Python.CreateRuntime(); dynamic shannonfano =

ipy.UseFile("shannonfano.py");

DateTime startTime = DateTime.Now; dynamic hasilDecompress =

shannonfano.processSF3(input);

DateTime endTime = DateTime.Now; TimeSpan elapsed = endTime.Subtract(startTime); txtWaktuDekompres.Text = elapsed.Hours.ToString("00") + ":" + elapsed.Minutes.ToString("00") + ":" + elapsed.Se conds.ToString("00") + "." + elapsed.Milliseconds.ToString("000"); txtDecompressShannon.Text = hasilDecompress.ToString(); if (saveFileDialog1.ShowDialog() == DialogResult.OK) {

String filetext = txtDecompressShannon.Text; Microsoft.Office.Interop.Word.Application oWord = new Microsoft.Office.Interop.Word.Application();

//oWord.Visible = true;

var oDoc = oWord.Documents.Add();

//Insert a paragraph at the beginning of the document. var paragraph1 = oDoc.Content.Paragraphs.Add(); paragraph1.Range.Text = filetext; oDoc.SaveAs(@saveFileDialog1.FileName); MessageBox.Show("Penyimpanan berhasil", saveFileDialog1.FileName); oWord.Quit(); } }catch(Exception ex){

(9)

MessageBox.Show(ex.ToString()); } btnReset.Enabled=true; }

void BtnResetClick(object sender, EventArgs e) { textBoxLoadFilePath.Text = ""; txtUkuranFileS.Text = ""; ukuranfile.Text = ""; txtRasio.Text = ""; txtWaktuKompres.Text = ""; txtRedudancyShannon.Text = ""; txtWaktuDekompres.Text = ""; textBoxDisplayText.Text = ""; txtHasil.Text = ""; txtDecompressShannon.Text = ""; buttonBaca.Enabled = false; btnCompressSF.Enabled = false; btnDecompressSF.Enabled = false; btnReset.Enabled = false; }

void Label8Click(object sender, EventArgs e) { } } }

4. Eliasgamma.py

# -*- coding: utf-8 -*-

#title: Elias' Gamma and Shannon-Fano's Algorithm #purpose: Data Compression

#author: 1.Mohammad Andri Budiman 2.Nurhennida Br Sitepu #version: 1.3

#date: May 5nd 2014 #time: 18:30

from math import log

#fungsi berikut ini mengembalikan 2 nilai, yaitu:

#(1) list char = karakter apa saja yang ada pada string st #(2) list freq = berapa frequency masing-masing karakter def count_freq(st): char = list(set(st)) freq = [] for i in char: x = st.count(i) freq.append(x) return char, freq

#fungsi berikut ini mengembalikan 2 nilai yaitu: #(1) list freq yang sudah tersortir descending order

#(2) list char yang sudah tersortir mengikuti urutan freq-nya def InsertionSort(f, c):

(10)

for i in range(1, n):

for j in range(0, i): if f[i] > f[j]:

f.insert(j, f.pop(i)) c.insert(j, c.pop(i)) return f, c

#fungsi berikut ini menjumlahkan semua angka yang ada pada list f def sum(f):

s = 0

for i in f: s = s + i return s

#fungsi berikut ini mengembalikan 2 nilai, yaitu:

#(1) difference = beda antara jumlah freq table atas dgn jumlah freq table bawah

#(2) row = baris tempat pemotongan tabel, dihitung dari bawah def findrow(f): difference = sum(f) row = 1 t = len(f) for i in range(1, t): upper = f[0:(t-i)] lower = f[t - i:] x = abs(sum(upper) - sum(lower)) if x < difference:

difference = x # difference = beda antara jumlah freq table atas dgn jumlah freq table bawah

row = i # row = baris tempat pemotongan table return difference, row

def EliasGamma(st): if len(st) <= 1:

raise Exception('|String| harus > 1') char, freq = count_freq(st)

t = len(char) if t == 1:

return char[0], '1' char, freq = count_freq(st)

freq, char = InsertionSort(freq, char) eg = [] for i in range(1, t + 1): if i == 1: eg.append('1') continue z = countZero(i) s = '' for j in range(z): s = s + '0' s = s + '1'

c = i - pow(2, z) # banyaknya sisa i - 2^n b = dec2bin(c)

pad = z - len(b) s = s + pad * '0' + b eg.append(s)

(11)

def countZero(n): return int(log(n,2)) def dec2bin(dec): dec = int(dec) bin = '' r = dec % 2 bin = str(r) + bin dec//=2 while(dec != 0): r = dec % 2 bin = str(r) + bin dec//=2 return bin def bin2dec(bin): bin = bin[::-1] n = 1 dec = 0 for i in bin: dec+=(int(i) * n) n*=2 return dec

#fungsi berikut mengubah string-bits menjadi kode ASCII def encode(sb):

code = ''

for i in range(0, len(sb), 8): x = sb[i:i+8]

y = chr(bin2dec(str(x))) code += y

return code

#fungsi berikut mengubah kode ASCII kembali menjadi string-bits def decode(code): sb = '' t = len(code) for i in range(len(code)): x = code[i] y = dec2bin(ord(x)) if len(y) < 8: z = 8 - len(y) % 8 y = '0' * z + y sb += y return sb

#fungsi berikut mengubah string menjadi string-bits def string2sb(st, c, s): sb = '' for i in st: k = c.index(i) sb = sb + s[k] x = len(sb) % 8 pad = 0 if x != 0: pad = (8 - x) sb = sb + '0' * pad d = dec2bin(pad) dl = len(d) y = 8 - dl

(12)

sb = sb + '0' * y + d return sb

#fungsi berikut mengubah string-bits kembali menjadi string def decompress(sb, c, s): st = '' bit = '' t = len(sb) pad = bin2dec(sb[-8:]) sb = sb[0:t-pad-8] for i in range(len(sb)): bit = bit + sb[i] if bit in s: x = s.index(bit) y = c[x] st = st + y bit = '' return st def processEG(st):

char, freq = count_freq(st)

freq, char = InsertionSort(freq, char) c, s = EliasGamma(st) for i in range(len(c)): sb = string2sb(st, c, s) uncompressed_bits = len(st) * 8 compressed_bits = len(sb) CR = (uncompressed_bits * 1.0) / compressed_bits return CR def processEG1(st):

char, freq = count_freq(st)

freq, char = InsertionSort(freq, char) c, s = EliasGamma(st) for i in range(len(c)): sb = string2sb(st, c, s) uncompressed_bits = len(st) * 8 compressed_bits = len(sb) CR = (uncompressed_bits * 1.0) / compressed_bits SS = (1.0 - 1.0/CR) * 100 return SS def processEG2(st):

char, freq = count_freq(st)

freq, char = InsertionSort(freq, char) c, s = EliasGamma(st) for i in range(len(c)): sb = string2sb(st, c, s) uncompressed_bits = len(st) * 8 compressed_bits = len(sb) CR = (uncompressed_bits * 1.0) / compressed_bits SS = (1.0 - 1.0/CR) * 100 code = encode(sb) dc = decode(code) return dc def processEG3(st):

char, freq = count_freq(st)

freq, char = InsertionSort(freq, char) c, s = EliasGamma(st)

(13)

for i in range(len(c)): sb = string2sb(st, c, s) uncompressed_bits = len(st) * 8 compressed_bits = len(sb) CR = (uncompressed_bits * 1.0) / compressed_bits SS = (1.0 - 1.0/CR) * 100 code = encode(sb) dc = decode(code) ds = decompress(dc, c, s) return ds

5.Shannonfano.py

# -*- coding: utf-8 -*-

#title: Elias' Gamma and Shannon-Fano's Algorithm #purpose: Data Compression

#author: 1.Mohammad Andri Budiman 2.Nurhennida Br Sitepu #version: 1.3

#date: May 5nd 2014 #time: 18:30

from math import log

#fungsi berikut ini mengembalikan 2 nilai, yaitu:

#(1) list char = karakter apa saja yang ada pada string st #(2) list freq = berapa frequency masing-masing karakter def count_freq(st): char = list(set(st)) freq = [] for i in char: x = st.count(i) freq.append(x) return char, freq

#fungsi berikut ini mengembalikan 2 nilai yaitu: #(1) list freq yang sudah tersortir descending order

#(2) list char yang sudah tersortir mengikuti urutan freq-nya def InsertionSort(f, c):

n = len(f)

for i in range(1, n):

for j in range(0, i): if f[i] > f[j]:

f.insert(j, f.pop(i)) c.insert(j, c.pop(i)) return f, c

#fungsi berikut ini menjumlahkan semua angka yang ada pada list f def sum(f):

s = 0

for i in f: s = s + i return s

#fungsi berikut ini mengembalikan 2 nilai, yaitu:

#(1) difference = beda antara jumlah freq table atas dgn jumlah freq table bawah

#(2) row = baris tempat pemotongan tabel, dihitung dari bawah def findrow(f):

(14)

row = 1 t = len(f) for i in range(1, t): upper = f[0:(t-i)] lower = f[t - i:] x = abs(sum(upper) - sum(lower)) if x < difference:

difference = x # difference = beda antara jumlah freq table atas dgn jumlah freq table bawah

row = i # row = baris tempat pemotongan table return difference, row

#fungsi berikut ini berfungsi melakukan table splitting secara rekursif, sekaligus meng-update kode Shannon-Fano

def split(S, F, C, charset, sf): t = len(S)

if t > 1:

diff, row = findrow(F) S1 = [] S2 = [] F1 = [] F2 = [] C1 = [] C2 = [] S1 = S[0:t - row] S2 = S[t - row:] F1 = F[0:t - row] F2 = F[t - row:] for i in range(t): if i < t - row: C[i] = str(C[i]) + '0' else: C[i] = str(C[i]) + '1' C1 = C[0:t - row] C2 = C[t - row:] if len(S1) == 1: charset.append(S1[0]) sf.append(C1[0]) if len(S2) == 1: charset.append(S2[0]) sf.append(C2[0]) split(S1, F1, C1, charset, sf) split(S2, F2, C2, charset, sf)

#fungsi berikut ini mengembalikan 2 nilai, yaitu: #(1) charset = character set

#(2) sf = kode Shannon-Fano yang bersesuaian def ShannonFano(st):

if len(st) <= 1:

raise Exception('|String| harus > 1') char, freq = count_freq(st)

t = len(char) if t == 1:

return char[0], '1' char, freq = count_freq(st)

freq, char = InsertionSort(freq, char) global charset, sf

code = [] charset = [] sf = []

(15)

for i in range(t): code.append('')

split(char, freq, code, charset, sf) return charset, sf def dec2bin(dec): dec = int(dec) bin = '' r = dec % 2 bin = str(r) + bin dec//=2 while(dec != 0): r = dec % 2 bin = str(r) + bin dec//=2 return bin def bin2dec(bin): bin = bin[::-1] n = 1 dec = 0 for i in bin: dec+=(int(i) * n) n*=2 return dec

#fungsi berikut mengubah string-bits menjadi kode ASCII def encode(sb):

code = ''

for i in range(0, len(sb), 8): x = sb[i:i+8]

y = chr(bin2dec(str(x))) code += y

return code

#fungsi berikut mengubah kode ASCII kembali menjadi string-bits def decode(code): sb = '' t = len(code) for i in range(len(code)): x = code[i] y = dec2bin(ord(x)) if len(y) < 8: z = 8 - len(y) % 8 y = '0' * z + y sb += y return sb

#fungsi berikut mengubah string menjadi string-bits def string2sb(st, c, s): sb = '' for i in st: k = c.index(i) sb = sb + s[k] x = len(sb) % 8 pad = 0 if x != 0: pad = (8 - x) sb = sb + '0' * pad d = dec2bin(pad)

(16)

dl = len(d) y = 8 - dl

sb = sb + '0' * y + d return sb

#fungsi berikut mengubah string-bits kembali menjadi string def decompress(sb, c, s): st = '' bit = '' t = len(sb) pad = bin2dec(sb[-8:]) sb = sb[0:t-pad-8] for i in range(len(sb)): bit = bit + sb[i] if bit in s: x = s.index(bit) y = c[x] st = st + y bit = '' return st def processSF(st):

char, freq = count_freq(st)

freq, char = InsertionSort(freq, char) c, s = ShannonFano(st) for i in range(len(c)): sb = string2sb(st, c, s) uncompressed_bits = len(st) * 8 compressed_bits = len(sb) CR = (uncompressed_bits * 1.0) / compressed_bits return CR def processSF1(st):

char, freq = count_freq(st)

freq, char = InsertionSort(freq, char) c, s = ShannonFano(st) for i in range(len(c)): sb = string2sb(st, c, s) uncompressed_bits = len(st) * 8 compressed_bits = len(sb) CR = (uncompressed_bits * 1.0) / compressed_bits SS = (1.0 - 1.0/CR) * 100 return SS def processSF2(st):

char, freq = count_freq(st)

freq, char = InsertionSort(freq, char) c, s = ShannonFano(st) for i in range(len(c)): sb = string2sb(st, c, s) uncompressed_bits = len(st) * 8 compressed_bits = len(sb) CR = (uncompressed_bits * 1.0) / compressed_bits SS = (1.0 - 1.0/CR) * 100 code = encode(sb) dc = decode(code) ds = decompress(dc, c, s) return dc def processSF3(st):

(17)

char, freq = count_freq(st)

freq, char = InsertionSort(freq, char) c, s = ShannonFano(st) for i in range(len(c)): sb = string2sb(st, c, s) uncompressed_bits = len(st) * 8 compressed_bits = len(sb) CR = (uncompressed_bits * 1.0) / compressed_bits SS = (1.0 - 1.0/CR) * 100 code = encode(sb) dc = decode(code) ds = decompress(dc, c, s) return ds

(18)

CURRICULUM VITAE

Nama Lengkap

: Nurhennida Br Sitepu

Nama Panggilan

: Nur

Tempat/ Tgl. Lahir

: Berastagi, 1 Maret 1992

Jenis Kelamin

: Perempuan

Agama

: Islam

Warga Negara

: Indonesia

Alamat

: Jl. Pasar VII No.12 Padang Bulan

Medan

No. HP

: 087884858092 / 085658052929

Email

: [email protected]

Status

: Belum Menikah

Latar Belakang Pendidikan

1. SD

SD Neg 040458 Berastagi

2. SMP

SMP N.1 Berastagi

3. SMA

SMA N.1 Berastagi

4. Universitas

Universitas Sumatera Utara

Pengalaman Kerja

No

Instansi/Lembaga

Jabatan/Posisi

Tahun

1

LCC

Pengajar

2010 – 2011

2

IKLC

Kepala Divisi Karya / Pengajar

2013 – 2014

Software Aplikasi

: Microsoft Office, Photoshop , Dreamweaver

Bahasa Pemrograman

: C++, C#

Simulator

: Matlab

Data Pribadi

(19)

Pengalaman Organisasi

No Nama Organisasi

Jabatan

Tahun Menjabat

1

OSIS SMA N.1 Berastagi

Sekretaris Umum

2008 – 2009

2

BKM SMA N.1 Berastagi

Angggota Humas

2009 – 2010

3

BKM Al-KHUWARIZMI

Anggota Kewirausahaan

2010 – 2011

4

IMILKOM

Anggota Kemahasiswaan

2011 – 2012

5

GAMADIKSI

Anggota Divisi pendidikan

2011 – 2012

6

UKMI Al-KHUWARIZMI

Bendahara Umum

2011 – 2012

7

IMILKOM

Kepala Biro Kesekretariatan

2012 – 2013

8

UKM ROBOTIK SIKONEK

Sekretaris Umum

2013 – 2014

9

IMILKOM

Kepala Biro Kesekretariatan

2013 – 2014

10 Relawan TIK Sumatera Utara

Anggota

2013 – Sekarang

Referensi

Dokumen terkait

[r]

Suku pertama dan suku kelima suatu barisan aritmetika berturut–turut adalah 2 dan 10, jumlah dua puluh suku pertama barisan tersebut adalah ….. Diketahui

Perhatia n siswa saat mengikuti pembelajaran pada kondisi awal sebesar 55,56% dan setelah mendapat tindakan dengan penggunaan metode CTL dalam pembelajaran pada siklus I

Objek-objek tersebut dapat divisualisasikan dengan berbagai cara, pilihlah unsur- unsur rupa (garis, warna, tekstur, bidang, volume, ruang), sesuai dengan kebutuhan interes

[r]

Adapun tujuan dari penelitian ini adalah untuk mengetahui bagaimana kondisi ketersediaan pangan di Indonesia saat ini dan bagaimana pengaruh kontribusi

Pekerjaan yang dikerjakan oleh dua orang atau lebih dengan tujuan agar menjadi ringan disebut…D. Sikap berikut ini yang tidak diperlukan untuk menjaga kerukunan antaranggota

[r]