Basa Walikan

BW_2BW_3

[ Download Program ]

Pernah dengar kaos merek “Dagadu”? Kok lambangnya kayak mata gitu, ya? “Thanks yo, dab!” Lho, nama saya bukan “Dab”! Oh, itu menggunakan Basa Walikan. Basa Walikan atau Bahasa Walikan yang saya bicarakan di sini adalah Basa Walikan gaya Jogja. Bahasa ini konon digunakan sejak jaman perang kemerdekaan (tentu saja di sekitar wilayah Jogja), sebagai bahasa sandi, agar musuh tidak bisa membaca pesan yang dikirim. Asalnya dari Aksara Jawa, yang kemudian ditukar / dibalik (di-walik) susunannya sehingga membentuk susunan / huruf baru. Bingung? Kita lihat dulu gambar Aksara Jawa berikut (buat yang tidak bingung silakan lanjut lho…).

BW_1a

Nah, itu adalah susunan aslinya. Buat yang belum tahu, ha = h, na = n, dst. jadi tiap aksara menyatakan huruf / konsonan, vokal bisa menyesuaikan nantinya. Yang dibalik (diwalik) adalah pada susunan barisnya, huruf pada baris pertama ditukar dengan baris ketiga, dan baris kedua dengan baris keempat. Tambah mumet, ya? Bagus! Karena itu saya siapkan gambar berikutnya (yang tidak mumet lanjut lagi deh…).

BW_1b

Menyimak gambar di atas : aksara / huruf ha (h) menjadi pa (p), da (d) menjadi ma (m), dst., demikian sebaliknya : pa (p) menjadi ha (h), ma (m) menjadi da (d), dst. Mari langsung praktek saja biar tidak tambah stress :

Bata : b ↔ s , t ↔ g : bata ↔ saga

Enak : h ↔ p , n ↔ dh , k ↔ ny : enak ↔ pedhany (Ket. : aksara “ha” dipakai untuk vokal yang berada di awal kata)

Turu : t ↔ g , r ↔ y : turu ↔ guyu (Turu = tidur)

“Rumus” walikan tersebut tentu juga bisa dipakai sebaliknya, mengembalikan kata yang sudah diwalik ke asalnya (istilah kerennya “decryption” alias memecahkan kode sandi) :

Dagadu : d ↔ m , g ↔ t : dagadu n matamu

Dab : d ↔ m , b ↔ s : dab n mas

Nah, sudah jelas kan sekarang… jawaban pertanyaan di awal tulisan ini. Itulah sekilas tentang Basa Walikan gaya Jogja. Ada juga yang gaya Malang, caranya hanya dengan membalik bacaan suatu kata dari belakang ke depan, misal : turu jadi urut, dst.

Lalu apa hubungannya dengan gambar di awal tulisan ini? Oh, itu cuma hasil iseng-iseng penulis saja, Basa Walikan yang di-visual basic-kan alias dibuat program. Pada kotak sebelah atas ada dua baris (atas dan bawah) yang dipakai untuk memasukkan konsonan dan vokal dari kata atau kalimat yang mau kita walik, bisa kata asal atau kata yang sudah ter-walik untuk mengetahui aslinya. Spasi antar kata bisa dimasukkan dengan memilih pada bagian yang “blank” atau kosong pada pilihan huruf konsonan / vokal, atau mebiarkan kotak pilihan tersebut kosong. Selanjutnya tinggal klik “PROSES…” dan simsalabim, hasil enkripsi/dekripsi ditampilkan pada dua kotak paling bawah. Kalau salah memasukkan data dan ingin menghapus dengan cepat, tinggal klik “HAPUS!” dan simsalabim, semua kotak pilihan (combo box) bersih. Klik “Info” kalau masih penasaran dengan programmnya…

BW_5aBW_5bBW_4

Oke, kalau sudah cukup puas bermain-main dengan program, kita akan sedikit menengok “isi” program. Di sini digunakan 2 elemen utama, yaitu combo box sebagai input konsonan dan vokal, dan text box untuk menampilkan hasil pe-walik­-an. Tahap pertama adalah memasukkan item huruf konsonan dan vokal pada combo box dengan perintah AddItem. Perhatikan untuk listing kode program di sini, tanda “. . .” menyatakan ada bagian yang sengaja tidak ditampilkan agar tulisan tidak terlalu banyak, atau masih merupakan blok tertentu (if, perulangan, dll.).

For I = 0 To 9

With Box_In_Huruf(I)

.AddItem “H”

.AddItem “N”

.AddItem “C”

. . .

.AddItem “TH”

.AddItem “NG”

.AddItem ” “

End With

Next

For I = 0 To 9

With Box_In_Vokal(I)

.AddItem “A”

.AddItem “I”

.AddItem “U”

.AddItem “E”

.AddItem “O”

.AddItem ” “

End With

Next

Angka “9” menyatakan jumlah combo box yang ada. Ini sekedar batasan saja, mau lebih sebenarnya juga bisa, namun harus menambah elemen lagi. Box_In_Konsonan dan Box_In_Vokal menyatakan nama combo box, dan indeks “(I)” adalah indeks array, sehingga elemen ini semua memiliki nama yang sama, dengan nomor indeks tergantung urutannya dari kiri ke kanan. Misal: baris pertama (konsonan) paling kiri adalah Box_In_Konsonan(1), berikutnya (kolom kedua) Box_In_Konsonan(2), dan seterusnya sampai yang paling kanan adalah Box_In_Konsonan(9). Hal yang sama juga berlaku untuk combo box Box_In_Vokal (baris kedua). Penggunaan elemen array seperti tersebut sangat bermanfaat karena perintah dapat diberikan untuk semua elemen dengan satu kali perintah saja plus fasilitas looping (perulangan). Hal ini akan tampak jelas pada penjelasan berikutnya.

Kini kita masuk pada tahap inti program, yaitu konversi konsonan. Vokalnya? Tentu saja tidak perlu diotak-atik, karena vokal akan tetap sama “bunyi”-nya, yang berubah hanyalah konsonan saja. Cara yang penulis pakai di sini adalah dengan memberi tiap huruf konsonan dengan nomor / angka tertentu, dan cara konversinya adalah dengan operasi matematika terhadap angka tersebut. Selanjutnya angka tersebut dikembalikan ke huruf awalnya, sehingga didapatkan rangkaian huruf yang sudah di-walik.

For I = 0 To 9

Select Case Box_In_Huruf(I).Text

Case “H”

N(I) = 1

Case “N”

N(I) = 2

Case “C”

N(I) = 3

. . .

Case “NG”

N(I) = 20

Case Else

N(I) = 99

End Select

. . .

Blok Select-Case akan memilih isian untuk variabel N berdasar input pada combo box Box_In_Huruf (input huruf konsonan). Misal bila combo box berisi huruf “H” maka variabel N akan berisi angka 1, dst. Perhatikan bahwa jumlah aksara tiap baris ada 5 huruf, sehingga tiap pasang (2 baris walikan) adalah 10 huruf, dan total aksara ada 20 huruf. Angka “10” dan “20” inilah yang selanjutnya menjadi kunci operasi bilangan pada huruf. Adapun angka “99” digunakan untuk huruf kosong / spasi, agar bisa dibedakan dengan assignment angka lainnya. Pada tabel angka di bawah ini bisa dilihat bahwa antara huruf asal dengan walikan-nya memiliki selisih sebesar 10. Assignment angka ini selanjutnya disimpan dalam variabel N.

H

N

C

R

K

1

2

3

4

5

D

T

S

W

L

6

7

8

9

10

P

DH

J

Y

NY

11

12

13

14

15

M

G

B

TH

NG

16

17

18

19

20

Jika dipisah menurut pasangan walikan-nya maka akan terlihat sbb. :

H

N

C

R

K

D

T

S

W

L

1

2

3

4

5


6

7

8

9

10

P

DH

J

Y

NY

M

G

B

TH

NG

11

12

13

14

15


16

17

18

19

20

Perintah berikutnya adalah perhitungan sederhana seperti di bawah ini :

. . .

K(I) = N(I) + 10

If K(I) > 20 Then K(I) = K(I) – 20

. . .

Variabel N menyimpan angka dari huruf konsonan, sedangkan variabel K merupakan variabel merupakan angka dari huruf yang sudah dibalik (dienkripsi). Perhatikan operasi bilangan pada baris pertama, angka huruf walikan (K) adalah N+10 (ingat selisih huruf awal dan hasil enkripsi adalah 10). Namun perlu diingat juga bahwa besar angka maksimal hanyalah 20 (sama dengan jumlah total aksara), sehingga perlu dicek jika K melebihi 20, maka harus dikurangi dengan 20. Dengan kata lain, untuk K > 20 maka rumus K yang sebenarnya adalah N+10-20 atau N-10.

Contoh :

Aksara C bernilai 3, sehingga walikan-nya adalah 3+10=13, yaitu aksara J.

Aksara G bernilai 17, sehingga walikan-nya adalah 17+10=27, karena melebihi 20 maka seharusnya adalah 27-20=7, yaitu aksara T.

Alternatif rumus lain adalah untuk nilai N di atas 10 maka rumusnya menjadi N-10, sbb.:

If N(I)<=10 Then K(I) = N(I) + 10 Else K(I) = N(I) – 10

Contoh :

Aksara C bernilai 3 (<10), sehingga walikan-nya adalah 3+10=13, yaitu aksara J.

Aksara G bernilai 17 (>10), sehingga walikan-nya adalah 17-10=7, yaitu aksara T.

Perhatikan bahwa perhitungan K(I) di atas masih berada dalam blok ForTo sebelumnya (blok perulangan). Hal ini bisa dilakukan mengingat variabel K dan N adalah tipe variabel array. Perbedaannya, jika digunakan variabel non-array (K1, K2, dst. yang dinamai sendiri masing-masing), maka perintah hitungan di atas harus dilakukan masing-masing untuk tiap-tiap variabel secara terpisah. Dengan demikian dapat dibayangkan pula jumlah baris perintah yang diperlukan akan membengkak sebesar 9 kali lipat. Di sini tampak penggunaan variabel tipe array sangat bermanfaat. Bisa kita ibaratkan dengan memberi pengumuman pada kelas sekolah. Misal ada 6 kelas masing-masing berisi 40 siswa, kita bisa menyampaikan pengumuman pada semua siswa dengan mengumpulkan mereka di lapangan sekolah atau pada ruang pertemuan dan otomatis semua siswa dalam tiap kelas tersebut sudah bisa mengetahui, ini adalah analogi penggunaan variabel array. Jika menggunakan variabel non-array, ibaratnya seperti memberi pengumuman sebanyak 6 kali dengan mengunjungi tiap kelas, atau bahkan pada masing-masing siswa dengan memanggil mereka satu per satu, maka dapat dibayangkan berapa kali harus mengulang pengumuman yang sama ( 6 x 40 = 240 kali… ).

Berikutnya, angka pada variabel K tersebut dikembalikan ke hurufnya masing-masing seperti pada awalnya (ingat bahwa kode angka untuk tiap huruf adalah tetap). Perintahnya mirip dengan saat memberikan kode pada huruf, hanya prosesnya dibalik. Variabel W akan berisi huruf hasil walikan, yang dipilih dalam blok Select-Case berdasar nilai variabel K.

. . .

Select Case K(I)

Case 1

W(I) = “H”

Case 2

W(I) = “N”

Case 3

W(I) = “C”

. . .

Case 20

W(I) = “NG”

Case 99

W(I) = “”

End Select

Next

Tahap terakhir adalah penggabungan variabel W dan menampilkan hasilnya pada kotak teks output (text box) yang disediakan (Txt_Normal untuk susunan huruf awal dan Txt_Walikan untuk hasil walikan-nya), termasuk huruf vokalnya.

For I = 0 To 9

Txt_Normal.Text = Txt_Normal.Text + Box_In_Huruf(I).Text + _

Box_In_Vokal(I).Text

If Box_In_Huruf(I).Text = ” ” Then W(I) = “”

Txt_Walikan.Text = Txt_Walikan.Text + W(I) + Box_In_Vokal(I).Text

Next

Perhatikan bahwa untuk elemen combo box untuk input huruf awal juga merupakan array seperti pada variabel N, K, dan W, sehingga perintah perulangan ForTo juga dapat diterapkan di sini.

Nah, sampai di sini pembahasan program Basa Walikan bikinan penulis ini, yang sementara baru sampai versi 1.0.0 dulu. Jika memungkinkan, bisa saja nanti lanjut ke versi berikutnya hehehe… Pembaca juga bisa mencari program lain serupa di internet, yang mungkin malah lebih bagus dari buatan penulis lho

Heydibi…

2 tanggapan untuk “Basa Walikan”

Tinggalkan komentar

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.