Laman

Sabtu, 11 Desember 2010

Algoritma Shannon Fano di C# (C-Sharp)

kalo beberapa waktu yang lalu sudah dibahas tentang cara membuat algoritma LZW(salah satu algoritma kompresi) di C#. kali ini akan dibahas tentang algoritma Shannon Fano. Shannon fano yang juga merupakan algoritma kompresi, hanya mempunyai cara kerja pengkompresian yang berbeda dengan LZW. oke  sekarang kita mulai membuat projectnya

langkah 1 : buat project baru, klik menu file, pilih new project, kotak project name diisi  sesuai keinginan (bebas)
langkah 2 : tambahkan  componen tiga label, satu tree view, satu textbox, satu button dan satu datagridview
langkah 3 : atur dan tata sedemikian rupa sehingga tambpilannya seperti pada gambar dibawah ini 

Gambar 1. Preview desain aplikasi program Shanon Fano

langkah 4 : pada button1, tambahkan source code berikut ini

  string outPut,data;
 bool statusTulis;
 int indek,jum;
           
 data=textBox1.Text.Trim().ToUpper();
 outPut = "";
 indek = 0;
 jum = 0;
 dataGridView1.Rows.Clear();

 label1.Text = data.Length.ToString();
 label1.Text += " karakter";
 for (int i = 0; i < data.Length; i++)
 {
    if (data.Substring(i, 1) == " ")
    {                  
       data=data.Remove(i, 1);
    }
   statusTulis=true;
   for (int j = i+1; j < data.Length; j++)
   {
      if (data.Substring(i, 1) == data.Substring(j, 1))
      {
         statusTulis=false;
      }                      
    }
     if (statusTulis==true)
    {                   
      dataGridView1.Rows.Add(1);
      outPut=outPut+data.Substring(i,1);
      dataGridView1.Rows[indek].Cells[0].Value =    
      data.Substring(i,  1);                 
      indek = indek + 1;
    }                
}
            
//check count each karakter
for (int i=0;i<(dataGridView1.Rows.Count-1);i++)
  {
    jum = 0;
    for (int j = 0; j < data.Length; j++)
      {                    
        if (dataGridView1.Rows[i].Cells[0].Value.ToString() == 
        data.Substring(j, 1))
          {
            jum = jum + 1;
          }                      
       }
    dataGridView1.Rows[i].Cells[1].Value = (jum).ToString();
   }
treeView1.Nodes.Clear();
root = treeView1.Nodes.Add(data.Length.ToString());
sortData();
//DataGridViewColumn newColumn = dataGridView1.Columns[1];           
//dataGridView1.Sort(newColumn, ListSortDirection.Descending);
 drawTree();

Langkah 5: tambahkan function sortData() dan function drawTree()
untuk sordData() berikut ini adalah source codenya

int temp;
string tempKa;
int k;
k = 0;
ArrayList tempData = new ArrayList();
ArrayList tempKarakter = new ArrayList();
tempData.Clear();
tempKarakter.Clear();
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
    tempData.Add(Convert.ToInt16(dataGridView1.Rows[i].Cells[1].Value));
    tempKarakter.Add(Convert.ToString(dataGridView1.Rows[i].Cells[0].Value));
}
for (int i = 0; i < tempData.Count-1; i++)
{
   for (int j = 0; j < tempData.Count-1; j++)
      {                    
        if (Convert.ToInt16(tempData[j+1])>Convert.ToInt16(tempData[j]))
            {
                temp = Convert.ToInt16(tempData[j]);
                tempData[j] = Convert.ToInt16(tempData[j+1]);
                tempData[j + 1] = temp;
                tempKa = tempKarakter[j].ToString();
                tempKarakter[j] = tempKarakter[j + 1].ToString();
                tempKarakter[j + 1] = tempKa;
             }
       }
  }

for (k = 0; k < tempData.Count; k++)
   {
       dataGridView1.Rows[k].Cells[1].Value = tempData[k].ToString();
       dataGridView1.Rows[k].Cells[0].Value = tempKarakter[k].ToString();
   }
dataGridView1.Rows[k-1].Cells[1].Value = "";

Sedangkan untuk source code drawTree() sebagai berikut ini

for (int i = 0; i < dataGridView1.Rows.Count - 2; i++)
            {
                if (i == 0)
                {
                    kiri = root.Nodes.Add("0    " + DataGridView1.Rows[i].Cells[0].Value.ToString().ToUpper() + ":(" + dataGridView1.Rows[i].Cells[1].Value.ToString() + ")");
kanan = root.Nodes.Add("1");
                }
                else if (i == dataGridView1.Rows.Count - 3)
                {
                    kiri = kanan.Nodes.Add("0    " +            dataGridView1.Rows[i].Cells[0].Value.ToString().ToUpper() + ":(" + dataGridView1.Rows[i].Cells[1].Value.ToString() + ")");
                    kanan = kanan.Nodes.Add("1    " + dataGridView1.Rows[i +    1].Cells[0].Value.ToString().ToUpper() + ":(" + dataGridView1.Rows[i + 1].Cells[1].Value.ToString() + ")");
                }
                else
                {
                    kiri = kanan.Nodes.Add("0    " + dataGridView1.Rows[i].Cells[0].Value.ToString().ToUpper() + ":(" + dataGridView1.Rows[i].Cells[1].Value.ToString() + ")");
                    kanan = kanan.Nodes.Add("1");
                }
            }
treeView1.ExpandAll();

            for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
            {
                if (i < dataGridView1.Rows.Count - 2)
                {
                    dataGridView1.Rows[i].Cells[2].Value = "0";
                    for (int j = 0; j < i; j++)
                    {
                        dataGridView1.Rows[i].Cells[2].Value = dataGridView1.Rows[i].Cells[2].Value.ToString() + "1";
                    }
                }
                else
                {
                    dataGridView1.Rows[i].Cells[2].Value = "";
                    for (int j = 0; j < i; j++)
                    {
                        dataGridView1.Rows[i].Cells[2].Value = dataGridView1.Rows[i].Cells[2].Value.ToString() + "1";
                    }
                }
            }
Langkah 6. Done Program selesai dibuat...

jika keenam langkah diatas dilakukan dengan benar, maka jika program dijalankan hasilnya akan seperti gambar berikut ini

Gambar 2. Preview program yang telah dirunning

untuk labih jelasnya, silahkan download contoh programnya disini, sedangkan untuk mendapatkan full projectnya silahkan tinggalkan email di kotak komentar, full project akan disend ke email tersebut, bingung...??? tinggalkan pertanyaan dikotak komentar 
for more information contact on informasi@csharp-indonesia.com


78 komentar:

  1. tolong kirim program fullnya... dan klau bisa aplikasi pemrogramannya..trimaksih

    BalasHapus
  2. saudara ahmad. maaf kami tidak bisa mengirim project shanon fano ke saudara, dikarenakan saudara tidak meninggalkan alamat email yang bisa kami hubungi....
    terimakasih....

    BalasHapus
  3. malem masdab, saya mnt tlg d kimirin yg full nya bs ?, email ane sagasatu90@yahoo.com . makasih ya masdab.

    BalasHapus
  4. full project sudah di send ke sagasatu@yahoo.com. silahkan cek inbox saudara. terimakasih.

    regard,
    okfdan rizal f

    BalasHapus
  5. mas, saya juga minta.. aplikasinya algoritma shannon fano nya! arsana283@gmail.com

    BalasHapus
  6. project sanon fano sudah di send ke email arsana283@gmail.com. Silahkan check inbox

    terimakasih banyak

    BalasHapus
  7. mas, saya minta tolong dong, minta projectnya ya buat saya pelajarin, saya lagi belajar ni tentang teknik kompresi...ke osvari.arsalan@yahoo.co.id

    makasih ya mas ^_^

    BalasHapus
  8. silahkan cek inbox osvari.arsalan@yahoo.co.id full project sudah di send ke email tersebut.
    terimakasih

    regard,
    www.csharp-indonesia.com

    BalasHapus
  9. makasih mas buat infonya, boleh minta projectnya buat di pelajarin ?

    BalasHapus
  10. Semangat-Belajar C#3 Desember 2011 21.26

    boleh boleh saja. untuk dikembangkan lebih lanjut juga tidak papa. tapi harus disend kemana ya.?? kuk nggak ada emailnya.?

    BalasHapus
  11. gan ini yang (root, kiri, kanan) itu deklarasi variabel atau nama komponen ya ?
    kalau bisa minta projectnya gan, buat ane pelajari .
    alfa.hersyanno@gmail.com

    BalasHapus
  12. Semangat-Belajar C#17 Desember 2011 09.16

    full project sudah di send... silahkan cek inbox alfa.hersyanno@gmail.com
    semoga bisa bermanfaat.. amin

    BalasHapus
  13. this project is very well!

    BalasHapus
  14. can you send this priject for me? my mail: caothiniem@gmail.com

    BalasHapus
  15. Sori gan .
    Itu yang di send untuk project LZW Algorithm .

    Yang Shannon Fano ini belum .
    :(

    Trims .

    BalasHapus
  16. Semangat-Belajar C#20 Desember 2011 11.13

    thanks alot

    BalasHapus
  17. Semangat-Belajar C#20 Desember 2011 11.14

    yang shanon udah disent gan.. pake email yahoo.. coba cek lagi gan..

    BalasHapus
  18. Semangat-Belajar C#20 Desember 2011 11.25

    yes, of course....
    the full project has been delivered to caothiniem@gmail.com, please check your inbox

    BalasHapus
  19. Semangat-Belajar C#20 Desember 2011 11.39

    full project sudah di sent dari dulu gan

    BalasHapus
  20. hi, boleh minta full projectnya? sama LZW juga?? thx b4,.. ane butuh buat perbandingan performa... terima kasih

    BalasHapus
  21. Waduh maaf ya..
    saya bingung. nich mau disend ke mana..?
    solanya Ara tidak meningglkan emailnya.

    BalasHapus
  22. Halo.. Boleh minta full project nya gak? emailnya ruth.schatzhie@gmail.com .. Terimakasih banyak

    BalasHapus
  23. mas... boleh minta full projectnya..?? kalau boleh emailnya k dens.excel@yahoo.co.id... terima kasih..........

    BalasHapus
  24. csharp-indonesia.com20 Maret 2012 14.40

    full project sudah disent ke email dens.excel@yahoo.co.id silahkan cek email saudara
    terimakasih

    BalasHapus
  25. csharp-indonesia.com20 Maret 2012 14.43

    full project sudah di sent ke ruth.schatzhie@gmail.com silahkan check email suadari, terimakasih banyak semoga bisa membatu
    atau langsung saja download di http://adf.ly/4JBwl

    BalasHapus
  26. mas, saya mw buat kompresi pad audio. boleh minta full project ny gak ??
    email ny muti_cole@ymail.com
    thanks...

    BalasHapus
  27. belajar CSharp12 Mei 2012 22.34

    untuk full projectnya silahkan download di sini http://adf.ly/4JBwl
    karena mail server selalu bermasalah ketika mengirim.

    semoga bisa bermanfaat dan berguna
    terimakasih

    BalasHapus
  28. please send me the full project.....i need it so much
    skypiea44@gmail.com

    BalasHapus
  29. BelajarCsharp4 Juni 2012 13.41

    full project sudah di sent ke skypiea44@gmail.com. Silahakan cek inbox saudara.
    terimakasih, semoga bisa membantu dan bermanfaat

    BalasHapus
  30. BelajarCsharp4 Juni 2012 13.45

    atau silahkan download langsung dari link berikut ini http://adf.ly/4JBwl

    BalasHapus
  31. full project

    gelarheyn87@gmail.com

    BalasHapus
  32. full project sanon fano sudah di sent ke email gelarheyn87@gmail.com. Silahkan cek inbox email tersebut. Semoga bisa bermanfaat dan membantu.

    BalasHapus
  33. full project

    luthfi_boarding@yahoo.com

    BalasHapus
  34. Yongkikurniadi28 Oktober 2012 07.39

    bisa minta full project

    BalasHapus
  35. Yongkikurniadi28 Oktober 2012 12.13

    yongkikurniadi@gmail.com

    BalasHapus
  36. kok gini ya..
    Error The name 'kiri' does not exist in the current context
    dan eror da pada variable root dan kanan.. mohon pncerahannya.. bs minta project nya?
    okie_setiawan@ymail.com

    BalasHapus
  37. klo boleh saya minta full projectnya secepatnya ke muttaqin.zainal@yahoo.co.id

    BalasHapus
  38. gak bisa saya buat ini, ada yang : error root, kanan, kiri.. kalau boleh minta projectnya shofanurhanifa@yahoo.com

    makasih.

    BalasHapus
  39. apiprasta@gmail.com
    tlong dkirim ya gan,,, cz btuh referensi nich,, :)

    BalasHapus
  40. ape lapo sunoe programe ws tak tuku iki,,,,zaki

    BalasHapus
  41. Rizaadlanrifqi6 November 2012 00.32

    mantab banget, jadi kelar tugas ane.....

    BalasHapus
  42. I need it.. please send the full project to diyunt92@gmail.com
    thanks a lot :)

    BalasHapus
  43. Maksi Nirwanto15 Januari 2013 15.38

    boleh minta full project nya gan..kirim ke maksi.nirwato@yahoo.com
    butuh referensi nih gan..
    thanks..:)

    BalasHapus
  44. Maksi Nirwanto15 Januari 2013 15.39

    maaf gan emailnya typo..
    maksud nya maksi.nirwanto@yahoo.com

    BalasHapus
  45. boleh donk full projectnya. kepepet dengan tugas, Pak
    roman.moslem@gmail.com

    BalasHapus
  46. boleh mnta full projectnya mksi.
    pw.rudi@yahoo.co.id

    BalasHapus
  47. Karengrigoryan24 Maret 2013 21.58

    please send to this mail
    karengrigoryan@mail.com

    BalasHapus
  48. bagi full projectnya gan ...
    email : diaandi20@yahoo.co.id

    BalasHapus
  49. gan tolong dikirim ya full projectnya buat tugas kuliah ni.


    thx before

    BalasHapus
  50. please send me full project

    islamicmaster@gmail.com

    BalasHapus
  51. kirimkan dong

    BalasHapus
  52. kirimkan dong bang admin
    pain_pein74@yahoo.com

    BalasHapus
  53. mohon di kirim ke email
    amirmahmud.siregar@gmail.com

    BalasHapus
  54. trangmc287@gmail.com
    thank you

    BalasHapus
  55. shoshi.danggo@gmail.com.....thanks gan

    BalasHapus
  56. tolong dikirim ke hindianson@gmail.com ya... makasih

    BalasHapus
  57. kirimkan dong kak admin...regina_shop@rocketmail.com. makasih

    BalasHapus
  58. minta tolong dikirim kan project nya ke email saya dong kak, theydi_41@yahoo.com
    mau saya gunakan untuk belajar kak, makasiii

    BalasHapus
  59. ka minta full projectnya ke email jerinogorter@gmail.com terima kasih ka

    BalasHapus
  60. minta ful projectnya bos ,. chokysaputra92@gmail.com


    thankz ,. kita tunggu nii :)

    BalasHapus
  61. Pemampatan dengan algoritma Shannon-Fano bisa di gunakan pada program Matlab? kalu bisa bagaiman cara serta langkah-langkahnya? mohon bantuannya..
    e-mail: darulafandi70@gmail.com

    BalasHapus
  62. bisa minta full projectnya?
    sama pakai aplikasi apa ya?
    hermawannikolas@gmail.com

    BalasHapus
  63. Mas tolong kirimkan full projectnya ya,
    1990ekalestari@gmail.com
    Terima kasih.

    BalasHapus
  64. tolong kirim dong mas.. dang.is0192@gmail.com

    BalasHapus