Senin, 20 Januari 2014

Kriptografi Klasik

Kriptografi klasik merupakan kriptografi yang digunakan pada zaman dahulu sebelum komputer ditemukan atau sudah ditemukan namun belum secanggih sekarang. Kriptografi ini melakukan pengacakan huruf pada kata terang / plaintext. Kriptografi ini hanya melakukan pengacakan pada huruf A - Z, dan sangatlah tidak disarankan untuk mengamankan informasi-informasi penting karena dapat dipecahkan dalam waktu singkat. Biarpun telah ditinggalkan, kriptografi klasik tetap dapat ditemui disetiap pelajaran kriptografi sebagai pengantar kriptografi modern.


Sejarah kriptografi klasik diketahui bermula pada sekitar abad ke-7 sebelum masehi di yunani, dimana para tentara sparta menggunakan alat  yang disebut Scytale untuk menyembunyikan pesan. Scytale terdiri dari sebuah batang silinder dengan diameter tertentu yang digulung dengan pita kain/kertas.





Gambar 1. pipa silinder (a) dan pita panjang(b)


Setelah pita dililitkan pada batang silinder, pesan dituliskan diatas gulungan pita. Misalkan pesan yang ditulis adalah SERGAP XERXES DI THERMOPYLE BESOL.

Gambar 2. Pipa silinder dan pita  yang dituliskan pesan

Setelah itu, gulungan pita dibuka dari pipa maka akan menghasilkan pesan tidak bermakna yaitu

S SHYSEX ELOREDREKGRIM AX OB PETPE,

Sehingga jika pesan ternyata jatuh ke tangan musuh sekalipun, tidak akan dimengerti. Untuk mengembalikan pesan seperti semula tinggal menggulungkan kembali pita dengan pipa yang diameternya sama, sehingga hanya orang yang benar-benar berhak saja yang dapat memiliki pipa dengan diameter sama.

Kriptografi klasik kemudian berkembang pesat pada abad ke-18 Masehi hingga Perang Dunia ke-2. Seperti penggunaan metode polyalphabetic hingga penggunaan mesin untuk mengenkripsi dan mendekripsi pesan, salah satu contoh yang terkenal adalah enigma yang dipatenkan oleh Arthur Scerbius dan digunakan tentara Nazi Jerman untuk mengenkripsi pesan pada saat pertempuran.

Gambar 3. Mesin rotor elektromagnetik Enigma

Namun dapat dipecahkan untuk pertama kali pada tahun 1932 oleh kriptografer Polandia dari Biuro Szyfrów (Kantor Sandi), Marian Rejewski, Jerzy Różycki dan Henryk Zygalski. Namun pada 1939 Jerman mendisain ulang Enigma sehingga metode tersebut tidak dapat digunakan lagi.
Berkat informasi dari Polandia, akhirnya Britania dan Perancis berhasil membuat mesin pemecah Enigma baru ini, yang diberi nama bombe. Menurut para ahli berkat mesin ini perang dunia ke-2 ini lebih cepat berakhir 2 tahun berkat pemecahan kode enigma. Selain Jerman, Jepang juga membuat mesin enkripsi yang diberi nama purple, Inggris dengan mesin TypeX, dan Amerika dengan mesinSIGABA.

Semenjak ditemukannya komputer digital, metode kriptografi klasik yang bekerja dengan mengacak huruf semakin kehilangan posisinya dan digantikan dengan metode yang lebih baru, dimana yang diacak adalah bit dari huruf bersangkutan. Era kriptografi modern pun dimulai.

Berdasarkan teknik pengenkripsian, kriptografi klasik terbagi menjadi 2 yaitu:
  • metode substitusi, yang dibagi lagi menjadi 2 yaitu:
    • monoalphabetic , setiap huruf pesan disubstitusi oleh satu huruf kunci
    • polyalphabetic , setiap huruf pesan disubstitusi oleh beberapa huruf kunci dengan pola tertentu.
  • metode transposisi
Metode substitusi adalah metode enkripsi dengan mengganti tiap-tiap huruf pesan dengan kunci tertentu menjadi huruf lain. Contohnya adalah Caesar Cipher (monoalphabetic) dan Viginere Cipher(polyalphabetic).

Metode transposisi adalah metode enkripsi dengan memindahkan posisi tiap-tiap huruf pesan dengan pola tertentu. Contohnya adalah Blocking Cipher dan Permutation.

Untuk contoh lengkapnya silahkan klik masing-masing dari contoh link berwarna biru diatas.

Referensi:
http://en.wikipedia.org/wiki/Classical_cipher
http://blog.sivitas.lipi.go.id/***
http://en.wikipedia.org/wiki/History_of_cryptography
http://id.wikipedia.org/wiki/Mesin_Enigma
http://williamstallings.com/Extras/Security-Notes/lectures/classical.html

Macam-macam Algoritma kriptografi modern

Kriptografi modern merupakan suatu perbaikan yang mengacu pada kriptografi klasik. Pada kriptogarfi modern terdapat berbagai macam algoritma yang dimaksudkan untuk mengamankan informasi yang dikirim melalui jaringan komputer. Algoritma kriptografi modern terdiri dari tiga bagian:
1. Algoritma Simetris
Algoritma simetris adalah algoritma yang menggunakan kunci yang sama untuk enkripsi dan dekripsinya. Algoritma kriprografi simetris sering disebut algoritma kunci rahasia, algoritma kunci tunggal, atau algoritma satu kunci, dan mengharuskan pengirim dan penerima menyetujui suatu kunci tertentu. Kelebihan dari algoritma kriprografi simetris adalah waktu proses untuk enkripsi dan dekripsi relatif cepat. Hal ini disebabkan efesiensi yang terjadi pada pembangkit kunci. Karena prosesnya relative cepat maka algoritma ini tepat untuk digunakan pada sistem komunikasi digital secara real timeseperti GSM.
Contoh Alice ingin mengirim pesan x dengan aman menggunakan saluran umum kepada Bob. Alice menggunakan kunci xƠ yang sebelumnya telah disepakati antara Alice dan Bob. Untuk mengirim pesan e xƠ (x) kepada Bob, dia akan deskripsi teks kode yang diterima dengan kunci yang sama dengan yang digunakan untuk memperoleh akses ke pesan yang diterima. Begitu juga sebaliknya.
Aplikasi dari algoritma simetris digunakan oleh beberapa algoritma di bawah ini:
  1. Data Encryption Standard (DES)
  2. Advance Encryption Standard (AES)
  3. International Data Encryption Algoritma (IDEA)
  4. A5
  5. RC4
  1. 1. A
2. Algoritma Asimetris
Algoritma Asimetris adalah pasangan kunci kriptografi yang salah satunya digunakan untuk proses enkripsi dan satu lagi lagi deskripsi. Semua orang yang mendapatkan kunci publik dapat menggunakannya untuk mengenkripsi suatu pesan, sedangkan hanya satu orang saja yang memiliki rahasia itu, yang dalam hal ini kunci rahasia, untuk melakukan pembongkaran terhadap kode yang dikirim untuknya. Contoh algoritma terkenal yang menggunakan kunci asimetris adalah RSA (merupakan singkatan dari nama penemunya, yakni Rivest, Shamir dan Adleman).
3. Algoritma Hibrida
Algoritma hibrida adalah algoritma yang memanfaatkan dua tingkatan kunci, yaitu kunci rahasia (simetri) – yang disebut juga session key (kunci sesi) – untuk enkripsidata dan pasangan kunci rahasia – kunci publik untuk pemberian tanda tangan digital serta melindungi kunci simetri.
Gambar 3. Algoritma Hibrida
Algoritma kriptografi yang beroperasi dalam mode bit dapat dikelompokkan menjadi dua kategori:
  1. 1. Cipher aliran (stream cipher)
Algoritma kriptografi beroperasi pada plainteks/cipherteks dalam bentuk bit tunggal, yang dalam hal ini rangkaian bit dienkripsikan/didekripsikan bit per bit. Stream chiper atau stream encryption merupakan suatu teknik enkripsi data dengan cara melakukan transformasi dari tiap bit secara terpisah berdasarkan posisi tiap bit dalam aliran data yang biasanya dikendalikan menggunakan operasi XOR. Enkripsi aliran data merupakan hasil dari operasi XOR antara setiap bit plaintext dengan setiap bit kuncinya. Padastream chiper bila terjadi kesalahan selama transmisi maka kesalahan pada teks enkripsi penerima akan terjadi tepat di tempat kesalahan tersebut terjadi. Dalam praktek pertimbangan kesalahan yang mungkin terjadi sangatlah penting untuk penentuan teknik enkripsi yang akan digunakan.
  1. 2. Cipher blok (block cipher)
Algoritma kriptografi beroperasi pada plainteks/cipherteks dalam bentuk blok bit, yang dalam hal ini rangkaian bit dibagi menjadi blok-blok bit yang panjangnya sudah ditentukan sebelumnya.
Misalnya panjang blok adalah 64 bit, maka itu berarti algoritma enkripsi memperlakukan 8 karakter setiap kali penyandian (1 karakter = 8 bit dalam pengkodean ASCII).

Rangkaian bit

Rangkaian bit yang dipecah menjadi blok-blok bit dapat ditulis dalam sejumlah cara bergantung pada panjang blok.
Contoh: Plainteks 100111010110 dibagi menjadi blok bit yang panjangnya 4 menjadi
1001 1101 0110
Setiap blok menyatakan bilangan bulat dari 0 sampai 15, yaitu 9 13 6
Bila plainteks dibagi menjadi blok-blok yang berukuran 3 bit, maka rangkaian bit di atas menjadi:
100 111 010 110
Setiap blok menyatakan bilangan bulat dari 0 sampai 7, yaitu 4 7 2 6
Bila panjang rangkaian bit tidak habis dibagi dengan ukuran blok yang ditetapkan, maka blok yang terakhir ditambah dengan bit-bit semu yang disebut padding bits.
Misalnya rangkaian bit di atas dibagi menjadi blok 5-bit menjadi
10011 10101 00010
Blok yang terakhir telah ditambahkan 3 bit 0 di bagian awal (dicetak tebal) agar ukurannya menjadi 5 bit. Padding bits dapat mengakibatkan ukuran plainteks hasil dekripsi lebih besar daripada ukuran plainteks semula.
Cara lain untuk menyatakan rangkaian bit adalah dengan notasi heksadesimal (HEX). Rangkaian bit dibagi menjadi blok yang berukuran 4 bit dengan representasi dalam HEX adalah: 0000 = 0 0001 = 1 0010 = 2 0011 = 3
0100 = 4 0101 = 5 0011 = 6 0111 = 7
1000 = 8 1011 = 9 1010 = A 1011 = B
1100 = C 1101 = D 1101 = E 1111 = F
Misalnya, plainteks 100111010110 dibagi menjadi blok bit yang panjangnya 4 menjadi
1001 1101 0110
yang dalam notasi HEX adalah 9 D 6
Operator XOR
Operator biner yang sering digunakan dalam cipher yang yang beroperasi dalam mode bit adalah XOR atau exclusive-or.
Notasi matematis untuk opeartor XOR adalah ⊕ (dalam Bahas C, operator XOR dilambangkan dengan ^).
Operator XOR diperasikan pada dua bit dengan aturan sebagai berikut:
0 ⊕ 0 = 0
0 ⊕ 1 = 1
1 ⊕ 0 = 1
1 ⊕ 1 = 0
Operator XOR identik dengan penjumlahan modulo 2.
Misalkan ab, dan adalah peubah Boolean. Hukum-hukum yang terkait dengan operator XOR:
(i) ⊕ a=0
(ii) ⊕ ⊕ (Hukum komutatif)
(iii) ⊕ (⊕ c) = (⊕ b) ⊕ (Hukum asosiatif)
Jika dua rangkaian dioperasikan dengan XOR, maka operasinya dilakukan dengan meng-XOR-kan setiap bit yang berkoresponden dari kedua ramngkaian bit tersebut.
Contoh: 10011 ⊕ 11001 = 01010
yang dalam hal ini, hasilnya diperoleh sebagai berikut:
1 0 0 1 1
1 1 0 0 1 ⊕
1 ⊕ 1 0 ⊕ 1 0 ⊕ 0 1⊕ 0 1 ⊕ 1
0 1 0 1 0
Algoritma enkripsi sederhana yang menggunakan XOR adalah dengan meng-XOR-kan plainteks (P) dengan kunci (K) menghasilkan cipherteks:
⊕ (6.1)
Karena meng-XOR-kan nilai yang sama dua kali menghasilkan nilai semula, maka proses dekripsi menggunakan persamaan:
⊕ (6.2)
Contoh: plainteks 01100101 (karakter ‘e’)
kunci 00110101 ⊕ (karakter ‘5’)
cipherteks 01010000 (karakter ‘P’)
kunci 00110101 ⊕ (karakter ‘5’)
plainteks 01100101 (karakter ‘e’)
Program komersil yang berbasis DOS atau Macintosh menggunakan algoritma XOR sederhana ini. Sayangnya, algoritma XOR sederhana tidak aman karena cipherteksnya mudah dipecahkan.
Cara memecahkannya adalah sebagai berikut (asumsi: panjang kunci adalah sejumlah kecil byte):
  • Cari panjang kunci dengan prosedur counting coincidence sbb: XOR-kan cipherteks terhadap dirinya sendiri setelah digeser sejumlah byte, dan hitung jumlah byte yang sama. Jika pergeseran itu kelipatan dari panjang kunci (yang tidak diketahui), maka 6% dari byte akan sama. Jika tidak, maka 0.4% akan sama. Angka persentase ini disebut index of coincidence. Pergeseran terkecil mengindikasikan panjang kunci yang dicari.
  • Geser cipherteks sejauh panjang kunci dan XOR-kan dengan dirinya sendiri. Operasi ini menghasilkan plainteks yang ter-XOR dengan plainteks yang digeser sejauh panjang kunci tersebut.Cari panjang kunci dengan prosedurcounting coincidence sbb: XOR-kan cipherteks terhadap dirinya sendiri setelah digeser sejumlah byte, dan hitung jumlah byte yang sama. Jika pergeseran itu kelipatan dari panjang kunci (yang tidak diketahui), maka 6% dari byte akan sama. Jika tidak, maka 0.4% akan sama. Angka persentase ini disebut index of coincidence. Pergeseran terkecil mengindikasikan panjang kunci yang dicari.
  • Geser cipherteks sejauh panjang kunci dan XOR-kan dengan dirinya sendiri. Operasi ini menghasilkan plainteks yang ter-XOR dengan plainteks yang digeser sejauh panjang kunci tersebut.
Sumber :


Jumat, 10 Januari 2014

Tugas Kriptografi

Tampilan menu:


List program Menu:

Public Class Form1

    Private Sub KiptografiVernamToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KiptografiVernamToolStripMenuItem.Click
        Form2.Show()
    End Sub

    Private Sub KiptografiVernamToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KiptografiVernamToolStripMenuItem1.Click
        Form3.Show()
    End Sub

    Private Sub KiptografiGronsfeldToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KiptografiGronsfeldToolStripMenuItem.Click
        Form4.Show()

    End Sub

    Private Sub KiptografiVigenereToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KiptografiVigenereToolStripMenuItem.Click
        Form5.Show()
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub
End Class



Tampilan Kriptografi Caesar:



List Program Kriptografi Caesar:

Public Class Form2

    Private Sub btnenkripsi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnenkripsi.Click
        Dim x As String = ""
        Dim xkalimat As String = ""
        For i = 1 To Len(Plain.Text)
            x = Mid(Plain.Text, i, i)
            x = Chr(Asc(x) + 3)
            xkalimat = xkalimat + x
        Next
        Chiper.Text = xkalimat
    End Sub

    Private Sub btndekripsi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btndekripsi.Click
        Dim x As String = ""
        Dim xkalimat As String = ""
        For i = 1 To Len(Plain.Text)
            x = Mid(Plain.Text, i, i)
            x = Chr(Asc(x) - 3)
            xkalimat = xkalimat + x
        Next
        chiper.Text = xkalimat
    End Sub

    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub

End Class

Hasil Program Kriptografi Caesar:







Tampilan Program Kriptografi Vernam:



List Program Kriptografi Vernam:
Public Class Form3

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim j As Integer
        Dim jum As Integer
        Dim sKey As String
        Dim nkata As Integer
        Dim nkunci As Integer
        Dim skata As String
        Dim sPlain As String = ""
        Dim nEnC As Integer
        j = 0

        skata = plainteks.Text
        jum = Len(skata)
        sKey = kunci.Text
        For i = 1 To jum
            If j = Len(sKey) Then
                j = 1
            Else
                j = j + 1
            End If
            nkata = Asc(Mid(skata, i, 1)) - 65
            nkunci = Asc(Mid(sKey, j, 1)) - 65
            nEnC = ((nkata + nkunci) Mod 26)
            sPlain = sPlain & Chr((nEnC) + 65)
        Next i
        chiperteks.Text = sPlain
    End Sub

    Private Sub oneTimePad_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        plainteks.Text = ""
        kunci.Text = ""
        chiperteks.Text = ""
    End Sub

    Private Sub plainteks_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles plainteks.KeyPress
        e.KeyChar = UCase(e.KeyChar)
        Dim tombol As Integer = Asc(e.KeyChar)
        If Not (((tombol >= 65) And (tombol <= 90)) Or (tombol = 8)) Then
            e.Handled = True
        End If
    End Sub

    Private Sub kunci_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles kunci.KeyPress
        e.KeyChar = UCase(e.KeyChar)
        Dim tombol As Integer = Asc(e.KeyChar)
        If Not (((tombol >= 65) And (tombol <= 90)) Or (tombol = 8)) Then
            e.Handled = True
        End If
    End Sub

End Class

Hasil Program Kriptografi Vernam:





Tampilan Program Kriptografi Gronsfeld:



List Program Kriptografi Gronsfeld:
Public Class Form4

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnenkripsi.Click
        Dim j As Integer
        Dim jum As Integer
        Dim sKey As String
        Dim nkata As Integer
        Dim nkunci As Integer
        Dim skata As String
        Dim sPlain As String = ""
        Dim nEnC As Integer
        j = 0

        skata = Plainteks.Text
        jum = Len(skata)
        sKey = kunci.Text
        For i = 1 To jum
            If j = Len(sKey) Then
                j = 1
            Else
                j = j + 1
            End If
            nkata = Asc(Mid(skata, i, 1)) - 65
            nkunci = (Mid(sKey, j, 1))
            nEnC = ((nkata + nkunci) Mod 26)
            sPlain = sPlain & Chr((nEnC) + 65)
        Next i
        Chiperteks.Text = sPlain
    End Sub

 
    Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Plainteks.Text = ""
        kunci.Text = ""
        Chiperteks.Text = ""
    End Sub

    Private Sub Plainteks_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Plainteks.KeyPress
        e.KeyChar = UCase(e.KeyChar)
        Dim tombol As Integer = Asc(e.KeyChar)
        If Not (((tombol >= 65) And (tombol <= 90)) Or (tombol = 8)) Then
            e.Handled = True
        End If
    End Sub

End Class

Hasil Prorgaram Kriptografi Gronsfeld:





Tampilan Kriptografi Vigenere:



List Program Kriptografi Vigenere:

Public Class Form5

    Private Sub btnenkripsi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnenkripsi.Click
        Dim j As Integer
        Dim jum As Integer
        Dim sKey As String
        Dim nKata As Integer
        Dim nKunci As Integer
        Dim sKata As String
        Dim sPlainteks As String = ""
        Dim nEnc As Integer
        j = 0
        sKata = Plainteks.Text
        jum = Len(sKata)
        sKey = Kunci.Text
        For i = 1 To jum
            If j = Len(sKey) Then
                j = 1
            Else
                j = j + 1
            End If
            nKata = Asc(Mid(sKata, i, 1))
            nKunci = Asc(Mid(sKey, j, 1))
            nEnc = ((nKata + nKunci) Mod 256)
            sPlainteks = sPlainteks & Chr((nEnc))
        Next i
        chiperteks.Text = sPlainteks

    End Sub

    Private Sub Form5_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub

End Class

Hasil Program Kriptografi Vigenere:




Minggu, 08 Desember 2013

Tagihan Listrik





Tampilan

Listprogram

Public Class Tagihan
    Sub rancang_table()
        With LV
            .Columns.Add("Kode pelanggan", 80, HorizontalAlignment.Center)
            .Columns.Add("Nama", 80, HorizontalAlignment.Center)
            .Columns.Add("Tipe", 80, HorizontalAlignment.Center)
            .Columns.Add("Harga/Kwh", 80, HorizontalAlignment.Center)
            .Columns.Add("Jumlah Pemakaian", 80, HorizontalAlignment.Center)
            .Columns.Add("Total Tagihan", 80, HorizontalAlignment.Center)
            .Columns.Add("Pembayaran", 80, HorizontalAlignment.Center)
            .Columns.Add("diskon", 80, HorizontalAlignment.Center)
            .Columns.Add("total bayar", 80, HorizontalAlignment.Center)
            .Columns.Add("pembayaran", 80, HorizontalAlignment.Center)
            .View = View.Details
            .GridLines = True
            .FullRowSelect = True
        End With
    End Sub
    Sub isi_table()
        Dim lst As New ListViewItem
        With lst
            .Text = Kp.Text
            .SubItems.Add(Nama.Text)
            .SubItems.Add(Tipe.Text)
            .SubItems.Add(HK.Text)
            .SubItems.Add(JP.Text)
            .SubItems.Add(TT.Text)
            .SubItems.Add(Pemb.Text)
            .SubItems.Add(Daerah.Text)
            .SubItems.Add(BB.Text)
            .SubItems.Add(Pajak.Text)
        End With
        LV.Items.Add(lst)
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


  Dim x As Integer
        For x = 1 To 100 Step +1
            Nu.items.add(x)
        Next

        Kp.Items.Add("PAB-MED-100")
        Kp.Items.Add("TOK-BEL-101")
        Kp.Items.Add("SWA-MED-102")
        Kp.Items.Add("RUM-BIN-103")
        Kp.Items.Add("RUM-PAK-104")

        Call rancang_table()
    End Sub

    Private Sub JP_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles JP.KeyPress
        If Asc(e.KeyChar) = 13 Then
            TT.Text = Val(BB.Text) + (HK.Text * JP.Text)
            Pajak.Text = 0.01 * TT.Text
            Pemb.Text = Val(TT.Text) + Val(Pajak.Text)
        End If
    End Sub

    Private Sub Kp_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Kp.SelectedIndexChanged
        Dim x As String
        x = Microsoft.VisualBasic.Right(Kp.Text, 3)
        Select Case x
            Case "100"
                Nama.Text = "Ucok"
            Case "101"
                Nama.Text = "Ani"
            Case "102"
                Nama.Text = "Andi"
            Case "103"
                Nama.Text = "Budi"
            Case "104"
                Nama.Text = "Jaka"
        End Select
        x = Microsoft.VisualBasic.Left(Kp.Text, 3)
        Select Case x
            Case "TOK"
                HK.Text = 500
                BB.Text = 150000
                Tipe.Text = "TOKO"
            Case "RUM"
                HK.Text = 200
                BB.Text = 50000
                Tipe.Text = "RUMAH"
            Case "PAB"
                HK.Text = 10000
                BB.Text = 1000000
                Tipe.Text = "PABRIK"
            Case "SWA"
                HK.Text = 1500
                BB.Text = 400000
                Tipe.Text = "SWALAYAN"
        End Select
        x = Microsoft.VisualBasic.Mid(Kp.Text, 5, 3)
        Select Case x
            Case "MED"
                Daerah.Text = "MEDAN"
            Case "BEL"
                Daerah.Text = "BELAWAN"
            Case "BIN"
                Daerah.Text = "BINJAI"
            Case "TEM"
                Daerah.Text = "AKSARA"
            Case "PAK"
                Daerah.Text = "LUBUK PAKAM"
        End Select
    End Sub

    Private Sub Label4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label4.Click

    End Sub

    Private Sub Pemb_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Pemb.KeyPress
        If e.KeyChar = Chr(13) Then
            Pemb.Text = Val(TT.Text) + Val(Pajak.Text)
        End If
    End Sub

    Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LV.SelectedIndexChanged

    End Sub

    Private Sub btnsimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsimpan.Click
        Call isi_table()
    End Sub

    Private Sub btnhapus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnhapus.Click
        Kp.Text = ""
        Nama.Text = ""
        Tipe.Text = ""
        HK.Text = ""
        JP.Text = ""
        TT.Text = ""
        Pemb.Text = ""
        Daerah.Text = ""
        BB.Text = ""
        Pajak.Text = ""

    End Sub

    Private Sub btnkeluar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnkeluar.Click
        End
    End Sub
End Class

Hasil

Selasa, 05 November 2013

Tugas

Tampilan Program
Program

Public Class Izal

    Private Sub ComboBox5_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NTugas.SelectedIndexChanged

    End Sub

    Private Sub KdDosen_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KdDosen.SelectedIndexChanged
        Select Case KdDosen.Text
            Case "P001"
                NaDosen.Text = "Mesran S.Kom, M.Kom"
            Case "P011"
                NaDosen.Text = "Yasir Hasan S.Kom"
            Case "L021"
                NaDosen.Text = "Kristian S.Kom"
            Case "M013"
                NaDosen.Text = "Toni Limbong M.Kom"
        End Select
    End Sub

    Private Sub Npm_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Npm.SelectedIndexChanged
        Select Case Npm.Text
            Case "12110120"
                Nama.Text = "Andi"
                Jenjang.Text = "S1"
                Jurusan.Text = "Teknik Informatika"
            Case "12110121"
                Nama.Text = "Susi"
                Jenjang.Text = "DIII"
                Jurusan.Text = "Manajemen Komputer"
            Case "12110122"
                Nama.Text = "Joko"
                Jenjang.Text = "S1"
                Jurusan.Text = "Teknik Informatika"
            Case "12110123"
                Nama.Text = "Budi"
                Jenjang.Text = "S1"
                Jurusan.Text = "Sistem Informasi"
        End Select
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Npm.Items.Add("12110120")
        Npm.Items.Add("12110121")
        Npm.Items.Add("12110122")
        Npm.Items.Add("12110123")
        KdDosen.Items.Add("P001")
        KdDosen.Items.Add("P011")
        KdDosen.Items.Add("L021")
        KdDosen.Items.Add("M013")
        KdMatakuliah.Items.Add("SO")
        KdMatakuliah.Items.Add("SBD")
        KdMatakuliah.Items.Add("VB")

        Dim x As Integer
        For x = 100 To 1 Step -1
            NKehadiran.Items.Add(x)
        Next
        For x = 100 To 20 Step -2
            NTugas.Items.Add(x)
        Next
        For x = 100 To 10 Step -3
            NUTS.Items.Add(x)
        Next
        For x = 100 To 5 Step -5
            NUAS.Items.Add(x)
        Next x
    End Sub

    Private Sub NaDosen_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NaDosen.TextChanged

    End Sub

    Private Sub KdMatakuliah_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KdMatakuliah.SelectedIndexChanged
        Select Case KdMatakuliah.Text
            Case "SO"
                Matakuliah.Text = "Sistem Operasi"
            Case "SBD"
                Matakuliah.Text = "Sistem Basis Data"
            Case "VB"
                Matakuliah.Text = "Visual Basic"

        End Select
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnProses.Click
        NAkhir.Text = 0.15 * NTugas.Text + 0.35 * NUTS.Text + 0.1 * NKehadiran.Text + 0.45 * NUAS.Text
        If NAkhir.Text >= 80 Then
            NHuruf.Text = "A"
            Keterangan.Text = "LULUS"
        ElseIf NAkhir.Text >= 70 Then
            NHuruf.Text = "B"
            Keterangan.Text = "LULUS"
        ElseIf NAkhir.Text >= 60 Then
            NHuruf.Text = "C"
            Keterangan.Text = "LULUS"
        ElseIf NAkhir.Text >= 50 Then
            NHuruf.Text = "D"
            Keterangan.Text = "LULUS"
        ElseIf NAkhir.Text < 50 Then
            NHuruf.Text = "E"
            Keterangan.Text = "GAGAl"
        End If
    End Sub

    Private Sub btnHapus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHapus.Click
        Npm.Text = ""
        Nama.Text = ""
        Jenjang.Text = ""
        Jurusan.Text = ""
        KdDosen.Text = ""
        NaDosen.Text = ""
        KdMatakuliah.Text = ""
        Matakuliah.Text = ""
        NKehadiran.Text = ""
        NTugas.Text = ""
        NUTS.Text = ""
        NUAS.Text = ""
        NAkhir.Text = ""
        NHuruf.Text = ""
        Keterangan.Text = ""
    End Sub

    Private Sub btnKeluar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnKeluar.Click
        End
    End Sub
End Class

Hasil program

Jumat, 14 Juni 2013

Program Penjualan Mengunakan Bahasa C

#include "stdio.h"
#include "conio.h"

void main(){
     int i, kode[15], jumlah[15], jumdata=5;
     char*produk;
     float harga, total, disc, bayar;

     printf("\Input Data Penjualan");
     for(i=0;i<jumdata;i++){
          printf ("\nKode Produk :"); scanf("%d",&kode[i]);
          printf ("Jumlah Produk :"); scanf("%d",&jumlah[i]);
     }
     clrscr();
     printf ("\n                        Informasi Penjualan Produk");
     printf ("\n ---------------------------------------------------------------------------");
     printf ("\n No Kode Produk                  Harga  Jumlah   Total    Discount    Bayar");
     printf ("\n ---------------------------------------------------------------------------");
     for(i=0;i<jumdata; i++){
          if(kode[i]==1){
                produk = "TV"; harga = 2000000;
          }else if(kode[i]==2){
                produk = "DVD"; harga = 650000;
          }else if(kode[i]==3){
                produk = "CD ROOM"; harga = 450000;
          }
          total = harga*jumlah[i];
          if (total<2000000){
                disc=0.1*total;
          }else if (total<4000000){
                disc=0.15*total;
          }else if (total>4000000){
                disc=0.2*total;
          }else{
                disc=0;
          }
          bayar = total-disc;
          gotoxy(1,6+i); printf(" %i   %d   %s", i+1, kode[i], produk);
          gotoxy(30,6+i); printf("%10.0f   %i  %10.0f %10.0f%10.0f", harga, jumlah[i], total, disc, bayar);
     }
     printf("\n ---------------------------------------------------------------------------");
}

Tampilan outputnya:


Jumat, 07 Juni 2013

Konsep Pemrograman Berorientasi Obyek

Pemrograman berorientasi obyek (object oriented programming – oop) adalah programming paradigm yang menggunakan obyek dan interaksinya untuk merancang aplikasi dan program komputer. OOP tidak banyak digunakan sebelum awal tahun 1990an. Tapi sekarang menjadi sesuatu yang sudah lumrah digunakan. Bahasa-bahasa pemrograman seperti keluarga dotNet dari Microsoft (Visual Basic.Net, Visual C#, dan Visual J), Borland Delphi, Java, Phyton, PHP versi 5 ke atas, C++ dan banyak lainnya merupakan bahasa pemrograman yang mendukung konsep OOP.

Apakah obyek itu? Semua benda yang ada didunia ini dapat kita sebut sebagai obyek. Guru mata pelajaran rpl kita adalah suatu obyek. Blog yang sedang kita kunjungi ini juga suatu obyek. Bahkan satu mata pelajaran itu sendiri adalah juga sebuah obyek. Setiap obyek akan mempunyai karakteristik dan tingkah laku tertentu. Karakteristik disebut attribute dan tingkah laku disebut sebagai behavior atau method.

Dalam difinisi pemrograman berorientasi obyek dikenal adanya kelas dan obyek. Class atau kelas mendefinisikan karakteristik abstrak dari sesuatu termasuk atribut atau sifat-sifat dari sesuatu dan apa yang dapat dikerjakan oleh sesuatu (method). Sebagai contoh, mobil adalah sebuah kelas yang memiliki attribut warna, merek, tipe dan lain-lain. Mobil juga punya method antara lain, maju, mundur dan berhenti (lihat gambar 8.2).



Obyek adalah contoh dari kelas yang sudah didefinisikan. Atribut dan method dari kelas secara otomatis akan menurun pada obyek namun dengan kekhususan. Sebagai ilustrasi, kita perhatikan gambar 8.2. Pada gambar tersebut, kita bisa identifikasi kelasnya adalah mobil dengan atribut dan methodnya. Obyeknya adalah sebuah mobil sedan dengan merk toyota, dan warnanya adalah merah. Sedan itu juga memiliki method maju, mundur dan berhenti. Pada kasus ini mobil sedan disebut sebagai instance atau turunan dari kelas mobil.

Ada beberapa konsep penting yang kita mesti memahami dalam pemrograman berorientasi, yaitu: abstraksi, enkapsulasi, inheritance dan polymorphism.