• 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

: nurhestp@gmail.com

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

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]

[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