BERPIKIR LOGIS DENGAN ALGORITMA

  • putragaluh
  • Senin, 30/05/2005
  • Internet
  • 14454 hits

'BERSALAMAN DENGAN DUNIA HACKING' ini diperuntukkan bagi mereka yang masih baru mau
melangkah kedunia hacking!? Kalau yang sudah kadung melangkahpun dipersilahkan baca!?
siapa tau mau balik! =). Akan ditulis dalam beberapa artikel berseri! Jadi, pelototin
terus situs ini sayang!?

#####################
BERPIKIR LOGIS DENGAN ALGORITMA
(Salaman: #1. Apa Itu?)
#####################
oleh logC

Bukan suatu hal yang dapat dipisahkan; antara hacking (dalam artian sebenarnya),
pemrograman, dan mesinnya. Dari ketiga hal tersebut dapat ditarik suatu benang hitam,
yaitu 'berpikir logis'. Sedangkan cara berpikir logis dalam dunia IT lebih dikenal dengan
pendekatan algoritma. Nah, artikel berikut dan artikel selanjutnya akan sedikit mengajak
anda untuk bagaimana berpikir logis ala algoritma itu.

Mmungkin anda sekarang membayangkan sebuah tabel matematik dengan angka-angka yang jelimet
dan membuat mata anda sepet; logaritma. Tapi tidak demikian adanya. Algoritma; kalau
ditinjau dari akar bahasanya mungkin gak bakalan ketemu pasnya. karena kata ini sebenarnya
berasal dari nama seorang penulis buku Arab yang terkenal, yaitu Abu Ja'far Muhammad Ibnu
Musa Al-Khuwarizmi (Al-Khuwarizmi dibaca dengan lidah barat menjadi Algorism).
Al-Khuwarizmilah yang menulis buku berjudul Kitab Al Jabar Wal-muqaba, yang artinya 'Buku
Pemugaran dan Pengurangan' (The Book of Retorasion and Reduction). Disana juga ditemukan
akar kata 'Al-Jabar' (Algebra). Perubahan dari kata algorism menjadi algorithma muncul
karena kata algorism sering disalah sasarkan menjadi arithmatic, sehingga akhiran -sm
diubah menjadi -thm. Dalam bahasa Indonesia , kata algorithm diserap menjadi algoritma.

Nah, sekarang apa algoritma itu? Algoritma adalah rurtan langkah-langkah logis penyelesian
masalah yang disusun secara sistematis; atau kalau menurut Kamus Besar Bahasa Indonesia
didefinisikan sebagai urutan logis pengambilan putusan untuk pemecahan masalah. Jadi jelas
khan!? bukan masalah perhitungan dengan angka-angka jelimet saja lho!? Tapi
dititikberatkan pada proses berpikirnya yang dilakukan secara logis.

Gampang dan sangat dibutuhkan dalam kehidupan sehari-hari. Sebenarnya dalam bidang apapun
kita pasti memerlukan cara berpikir logis untuk menyelesaikan tantangan didepan mata!?
Okeh sayang! segitu dulu yah!? Nantikan edisi berikutnya tentang cara berpikir logis ala
logC eh algotitma ding!? =)

#####################
STRUKTUR DASAR ALGORITMA
(Salaman: #2. Bagimana itu?)
#####################
Catatan: Pada artikel berikutnya kita akan lebih mendekati algoritma
pada pemrograman C. Kenapa saya pilih C? Bukan hanya karena nick saya
logicalC =), tapi lebih karena C adalah salah satu bahasa pemrograman
yang menjadi tulang punggung terbentuknya struktur jaringan internet
dengan disponsori para hacker & unix systemnya!? Jadi, mari kita
mulai.....Oh iya! ada istilah-istilah baru yg perlu pahami.
---------------------------------------------------------------------

Algoritma berisi langkah-langkah penyelesaian suatu masalah.
Langkah-langkah bisa berupa runtunan, pemilihan, dan pengulangan.
Ketiga langkah itulah yang menyusun algoritma. Jadi, sebuah algoritma
dapat ditempuh dengan ketiga struktur dasar tersebut. Berikut saya coba
jabarkan satu-persatu.

Runtunan (Sequence)
----------------------
Sebuah runtunan terdiri dari satu atau lebih 'instruksi'. Tiap-tiap
instruksi dilaksanakan secara berurutan sesuai dengan urutan
penulisannya; sebuah instruksi baru bisa dilaksanakan setelah instruksi
sebelumnya selesai dilaksanakan. Urutan instruksi menentukan keadaan
akhir algoritma. Kalau urutannya diubah, kemungkinan besar hasil
akhirnya akan berubah. Misal: Seorang ibu berbelanja di mall. dia
melewati beberapa toko; toko perhiasan, toko baju, toko sepatu, dan toko
tas. Ketika itu dia iseng! belilah dia satu set perhiasan mas. Namun
setelah berjalan beberapa meter dia berjumpa dengan toko tas. Karena dia
sadar kalau dirinya membutuhkan tas baru; dia akan menyesal dengan
mengatakan "seandainya toko perhiasan tadi ada setelah toko tas"!?
JUST KIDDING... =)

Misalnya: Ada dua buah bejana, A dan B; bejana A berisi larutan kopi,
bejana B berisi larutan susu. Pertukarkan kedua isi bejana itu, sehingga
A berisi larutan susu, dan B berisi larutan kopi. Tidak boleh jadi kopi
susu...!?
Kita tanyakan Algoritma!? Jawabannya: ada tiga langkah, yaitu:
1. Tuangkan larutan dari bejana A ke dalam bejana C. (cuci bersih dulu
bejana A kalo bisa!?)
2. Tuangkan larutan dari bejana B ke dalam bejana A. (cuci juga bejana
B!? =))
3. Tuangkan larutan dari bejana C ke dalam bejana B. Selesai.....
Gak jadi kopi susu, kecuali anda minum isi kedua bejana itu dan
mencampurnya di perut anda.

Pemilihan (Selection)
---------------------
Kadangkala sebuah instruksi dikerjakan setelah 'kondisi' tertentu
terpenuhi. Dalam bahasa pemrograman, ini dikenal dengan "if" dan "then".
Kondisi adalah persyaratan yang dapat dinilai benar atau salah sehingga
akan memunculkan 'aksi' yang berbeda dengan 'kondisi' yang berbeda.
Gampangnya, lansung contoh!
Dalam kehidupan sehari-hari kita sering punya pilihan semacam ini:

'if' Widi memperoleh juara kelas
'then' ayah akan membelikannya sepeda
'if' Jalan Dago macet
'then' ambil alternatif Jalan Dipati Ukur
'if' Mobilmu rusak
'then' pakai saja motorku

Tampak struktur pemilihan 'if-then' hanya memberikan satu pilihan aksi
bila kondisi dipenuhi atau bernilai benar dan tidak memberikan aksi lain
bila kondisi salah. Bentuk pemilihan yang lebih umum adalah memilih satu
dari dua aksi bergantung pada nilai kondisinya, seperti:

'if' hari hujan
'then' pergilah dengan naik taxi
'else' pergilah dengan naik motor

di sini secara logika; jika kondisi 'hari hujan' benar, maka aksi 'pergi
naik taxi' dilakukan. Sebaliknya jika kondisi 'hari hujan' bernilai
salah, maka aksi 'pergi naik motor' akan dilaksanakan. Dan, tidak ada
pilihan aksi turun ke jalan!? =) Contoh yang lebih kompleks dapat
ditemui dalam pemilihan dengan tiga atau lebih variable, seperti
penentuan bilangan terbesar dari tiga buah bilangan; x, y, dan z.

'if' x > y 'then'
'if' x > z 'then'
tulis x sebagai bilangan terbesar
'else'
tulis z sebagai bilangan terbesar
'else'
'if' y > z 'then'
tulis y sebagai bilangan terbesar
'else'
tulis z sebagai bilangan terbesar

Contoh di atas biasa disebut dengan 'pemilihan bersarang'. Coba anda
buat mejadi 4 atau lebih variablenya!? =)

Pengulangan (Repetition)
-------------------------
Salah satu kegunaan pemrograman adalah untuk memudahkan pekerjaan yang
harus dilakukan berulang-ulang tanpa capek!? Cerita sedikit nih! =)
Sewaktu saya duduk di sekolah dasar, pernah suatu hari dihukum guru
karena tertidur dikelas pada jam pelajaran terakhir. Anda tau
hukumannya? Menulis kalimat "saya berjanji tidak akan tidur di kelas
lagi" sebanyak 300 kali karena saya masih duduk di kelas 3. Tapi
untungnya guru saya ini gak jelasin dimana saya harus menulisnya.
Keesokan harinya saya terpaksa merengek ke mak saya untuk dibolehkan
membawa laptop kesayangan saya ke sekolah!? Sebelumnya pada malam
harinya saya sudah membuat program kecil untuk mengulang tulisan "saya
berjanji tidak akan tidur di kelas lagi" sebanyak apapun yang saya mau!?
=) akhirnya! guru saya itu cuman bisa geleng kepala!? greetz trik huh!?
Sebenarnya program pengulangan saya waktu itu hanya mengimplementasikan
algoritma 'repeat-until' (repeat artinya ulang sedangkan until artinya sampai),
sehingga logaritmanya bisa dituliskan seperti:

pencatat_jumlah_kalimat = 0
'repeat'
tulis "saya berjanji tidak akan tidur di kelas lagi"
naikkan pencatat_jumlah_kalimat dengan 1
'until' pencatat_jumlah_kalimat = 300

Pemroses akan melaksanakan aksi tulis tersebut sebanyak 300 kali.
Struktur pengulangan tersebut dapat ditulisakan secara umum menjadi:

'repeat'
aksi
'until' kondisi

Dalam istilah bahasa pemrograman, pengulangan di istilahkan 'loop'.

Nah, mari kita coba kombinasikan ketiganya dalam sebuah algoritma
pencarian seperti berikut ini:

Sebuah tabel data sudah berisi data nomor ID, login ID, dan password
login ke mesin absensi.Carilah dalam tabel password seorang karyawan
dengan nomor ID tertentu.
1. Baca nomor ID pertama dalam tabel
2. 'repeat'
'if' nomor ID yang dibaca sama dengan nomor ID yang dicari maka
tulis password
karyawan yang bersangkutan
stop
'else'
baca nomor ID berikutnya di dalam tabel
'until' nomor ID yang dicari sudah ditemukan atau seluruh isi tabel
dibaca.

Struktur 'repeat-until' hanya satu diantara beberapa struktur
pengulangan yang saya angkat saat ini. Ada beberapa struktur pengulangan
lain seperti 'while-do', 'for' dan sebagainya. Pada seri berikutnya
pasti akan tersertakan dengan sendirinya.

#####################
Algoritma Dalam Pemrograman
Salaman: #3 Aplikasi - 001
#####################

Dalam mempelajari algoritma, anda nggak dituntut untuk menguasai ilmu eksak.Hal
mutlak yang diperlukan dalam mempelajari algoritma adalah logika anda dalam menganalisis
suatu permasalahan. Kalo anda sukanya menghayal, siap-siap saja anda bakal boring
mempelajari algoritma ;P~

Ada 2 hal penting yang mesti anda tau dari algoritma. Pertama, Algoritma harus
benar. Maksudnya disini, setiap masalah yang anda coba uraikan dalam bentuk program mesti
menghasilkan hasil yang benar. Contohnya, anda bikin program penjumlahan 2 tambah 3
hasilnya harus 5, khan?! kalo diluar itu, itu berarti algoritma anda dalam program kacau
(atau bisa aja andanya yang lagi error).
Hal penting kedua, algoritma harus berhenti. Contoh sederhananya seperti
algoritma intrusion. Algoritma tsb berhenti setelah melewati proses Covering Track &
Installing Backdoor (walaupun dalam prakteknya anda muter² menjalankan tahapan intrusion
tersebut tapi akhirnya anda akan sampai juga pada tahap Covering Track & Installing
Backdoor, khan?!).

Dan bila anda mengalami kebuntuan dalam mendesign algoritma suatu masalah, langkah
yang perlu anda lakukan adalah dengan melihat/menganalisis masalah tersebut secara
menyeluruh setelah itu anda coba uraikan/bagi permasalahan tersebut sehingga menjadi
kumpulan² permasalahan yang lebih sederhana.

Untuk artikel kali ini, saya mencoba untuk ngelanjutin bahas tentang
struktur pengulangan menggunakan "while do" dan "for", (ngelanjutin artikel STRUKTUR DASAR
ALGORITMA (Salaman: #2. Bagimana itu?)).

* While...Do
Struktur perulangan "While...Do" tidak terlalu jauh berbeda dengan struktur
perulangan "Repeat...Until". Bila pada "Repeat...Until" memungkinkan terjadinya proses
terlebih dahulu sesudah itu baru terjadi pengecekan kondisi, tetapi pada "While...Do",
anda tidak akan dapat menjalankan baris² aksi bila syarat(kondisi) yang memungkinkan aksi itu
dijalankan tidak sesuai. While artinya sementara, sedangkan Do artinya kerjakan, jadi bila
diindonesiakan sintaksnya sendiri berbentuk seperti ini :

Sementara /kondisi terpenuhi/ Kerjakan
aksi dijalankan
Selesai

Contoh penggunaan "While...Do" seperti ini, misalnya anda ingin mencetak kalimat
"saya suka k-elektronik" di layar sebanyak 10 kali, menggunakan "While...Do" maka
sintaksnya akan seperti ini:

pencacah <- 1; /inisialisasi awal thd pencacah, mengisi nilai awal ke
pencacah/
while pencacah <=10 do
cetak "saya suka k-elektronik";
endwhile;

Penjelasan sintaksnya seperti ini. Pada mulanya pencacah diisi dengan nilai 1.
Sebelum memasuki badan pengulangan, kondisi "pencacah <=10" diperiksa apakah bernilai
benar, karena "1 <= 10" adalah benar, maka aksi cetak "saya suka k-elektronik" dijalankan.
Sehingga keluaran yang tercetak :

saya suka k-elektronik

Selanjutnya nilai pencacah dinaikkan menjadi 2, siklus pengulanagn kembali dijalankan sampai
nilai pencacah dinaikkan 11 maka kondisi pengulangan bernilai salah, pengulangan
dihentikan.

* FOR
Struktur pengulangan "FOR" tidak melibatkan penggunaan kondisi seperti pada
struktur perulangan "Repeat...Until" ataupun "While...Do". Struktur FOR ada dua macam
yaitu, menaik (ascending) yang ditandai dengan kata "to" dan menurun (descending) yang
ditandai dengan kata "downto" ntuk sintaksnya:

FOR pencacah <- nilai_awal to/downto nilai_akhir
aksi dijalankan
endfor

Untuk FOR menaik, nilai awal harus lebih kecil dari nilai akhir. Tetapi pada FOR menurun nilai
awal harus lebih besar dari nilai akhir.

Contoh sintaks :
- Untuk FOR menaik

FOR pencacah <- 1 to 10 do
cetak "saya suka k-elektronik"
endfor

- Untuk FOR menurun

FOR pencacah <- 10 downto 1 do
cetak "saya suka k-elektronik"
endfor

Sekian dulu, dan sampai jumpa pada edisi berikutnya :)~
#####################

Salam Manis,
ladYlogC

: tanpa label

KOMENTAR

Halal Dan Haram Itu Sudah JELAS

Abu Abdillah Nu'man Bin Basyir Ra Berkata: Aku Mendengar Rasulullah SAW Bersabda, "Sesungguhnya Yang Halal Itu Telah Jelas Dan Yang Haram Pun Telah Jelas. Sedangkan Di Antaranya Ada Masalah Yang Samar-samar (syubhat) Yang Kebanyakan Manusia Tidak Mengetahui (hukum)-nya. Barangsiapa Menghindari Yang Samar-samar, Maka Ia Telah Membersihkan Agama Dan Kehormatannya. Barangsiapa Yang Jatuh Ke Dalam Yang Samar-samar, Maka Ia Telah Jatuh Ke Dalam Perkara Yang Haram. Seperti Penggembala Yang Berada Di Dekat Pagar (milik Orang Lain); Dikhawatirkan Ia Akan Masuk Ke Dalamnya. Ketahuilah Bahwa Setiap Raja Memiliki Pagar (aturan). Ketahuilah, Bahwa Pagar Allah Adalah Larangan-larangan-Nya. Ketahuilah, Bahwa Di Dalam Jasad Manusia Terdapat Segumpal Daging. Jika Ia Baik, Maka Baik Pula Seluruh Jasadnya; Dan Jika Ia Rusak, Maka Rusak Pula Seluruh Jasadnya. Ketahuilah Bahwa Segumpal Daging Itu Adalah Hati."

Layanan SSD Web Hosting

Fitur Hosting Lengkap, Cloudlinux, Apache/Nginx/Litespeed PHP Multiversion, MariaDB, Remote Backup DNS Cluster, Immunify360, Secure dan Stabil

Layanan Web Desain

Percayakan pembuatan website anda kepada GaluhWeb.com baik untuk instansi, perusahaan ataupun personal. Lebih dari 100 project telah membuktikannya.

Layanan VPS & Dedicated Server

Dapatkan kontrol penuh untuk mengelola bisnis, blog, aplikasi dengan layanan Virtual Private Server atau Dedicated Server. Ayo naik level sekarang bersama GaluhWeb.com !

Value Added Service

Dapatkan juga layanan tambahan lainnya seperti Nama Domain, Mail Hosting, Streaming Hosting, Sitelock, SSL dan masih banyak lagi.

GaluhWeb.com