Jumat, 04 Juni 2010

berpikir ala programer

BERPIKIR LOGIS DENGAN ALGORITMA
Diposting pada: 2010-06-05 14:03:00 Hits : 219 Kategori: Artikel
'BERSALAMAN DENGAN DUNIA HACKING' ini diperuntukkan bagi mereka yang masih baru maumelangkah kedunia hacking!? Kalau yang sudah kadung melangkahpun dipersilahkan baca!?siapa tau mau balik! =). Akan ditulis dalam beberapa artikel berseri! Jadi, pelototinterus 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 denganpendekatan algoritma. Nah, artikel berikut dan artikel selanjutnya akan sedikit mengajakanda untuk bagaimana berpikir logis ala algoritma itu.
Mmungkin anda sekarang membayangkan sebuah tabel matematik dengan angka-angka yang jelimetdan membuat mata anda sepet; logaritma. Tapi tidak demikian adanya. Algoritma; kalauditinjau dari akar bahasanya mungkin gak bakalan ketemu pasnya. karena kata ini sebenarnyaberasal dari nama seorang penulis buku Arab yang terkenal, yaitu Abu Ja'far Muhammad IbnuMusa Al-Khuwarizmi (Al-Khuwarizmi dibaca dengan lidah barat menjadi Algorism).Al-Khuwarizmilah yang menulis buku berjudul Kitab Al Jabar Wal-muqaba, yang artinya 'BukuPemugaran dan Pengurangan' (The Book of Retorasion and Reduction). Disana juga ditemukanakar kata 'Al-Jabar' (Algebra). Perubahan dari kata algorism menjadi algorithma munculkarena kata algorism sering disalah sasarkan menjadi arithmatic, sehingga akhiran -smdiubah menjadi -thm. Dalam bahasa Indonesia , kata algorithm diserap menjadi algoritma.
Nah, sekarang apa algoritma itu? Algoritma adalah rurtan langkah-langkah logis penyelesianmasalah yang disusun secara sistematis; atau kalau menurut Kamus Besar Bahasa Indonesiadidefinisikan sebagai urutan logis pengambilan putusan untuk pemecahan masalah. Jadi jelaskhan!? bukan masalah perhitungan dengan angka-angka jelimet saja lho!? Tapidititikberatkan pada proses berpikirnya yang dilakukan secara logis.
Gampang dan sangat dibutuhkan dalam kehidupan sehari-hari. Sebenarnya dalam bidang apapunkita pasti memerlukan cara berpikir logis untuk menyelesaikan tantangan didepan mata!?Okeh sayang! segitu dulu yah!? Nantikan edisi berikutnya tentang cara berpikir logis alalogC eh algotitma ding!? =)
#####################STRUKTUR DASAR ALGORITMA(Salaman: #2. Bagimana itu?)#####################Catatan: Pada artikel berikutnya kita akan lebih mendekati algoritmapada pemrograman C. Kenapa saya pilih C? Bukan hanya karena nick sayalogicalC =), tapi lebih karena C adalah salah satu bahasa pemrogramanyang menjadi tulang punggung terbentuknya struktur jaringan internetdengan disponsori para hacker & unix systemnya!? Jadi, mari kitamulai.....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 algoritmadapat ditempuh dengan ketiga struktur dasar tersebut. Berikut saya cobajabarkan satu-persatu.
Runtunan (Sequence)----------------------Sebuah runtunan terdiri dari satu atau lebih 'instruksi'. Tiap-tiapinstruksi dilaksanakan secara berurutan sesuai dengan urutanpenulisannya; sebuah instruksi baru bisa dilaksanakan setelah instruksisebelumnya selesai dilaksanakan. Urutan instruksi menentukan keadaanakhir algoritma. Kalau urutannya diubah, kemungkinan besar hasilakhirnya akan berubah. Misal: Seorang ibu berbelanja di mall. diamelewati beberapa toko; toko perhiasan, toko baju, toko sepatu, dan tokotas. Ketika itu dia iseng! belilah dia satu set perhiasan mas. Namunsetelah berjalan beberapa meter dia berjumpa dengan toko tas. Karena diasadar kalau dirinya membutuhkan tas baru; dia akan menyesal denganmengatakan "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, sehinggaA berisi larutan susu, dan B berisi larutan kopi. Tidak boleh jadi kopisusu...!?Kita tanyakan Algoritma!? Jawabannya: ada tiga langkah, yaitu:1. Tuangkan larutan dari bejana A ke dalam bejana C. (cuci bersih dulubejana A kalo bisa!?)2. Tuangkan larutan dari bejana B ke dalam bejana A. (cuci juga bejanaB!? =))3. Tuangkan larutan dari bejana C ke dalam bejana B. Selesai.....Gak jadi kopi susu, kecuali anda minum isi kedua bejana itu danmencampurnya di perut anda.
Pemilihan (Selection)---------------------Kadangkala sebuah instruksi dikerjakan setelah 'kondisi' tertentuterpenuhi. Dalam bahasa pemrograman, ini dikenal dengan "if" dan "then".Kondisi adalah persyaratan yang dapat dinilai benar atau salah sehinggaakan 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 aksibila kondisi dipenuhi atau bernilai benar dan tidak memberikan aksi lainbila kondisi salah. Bentuk pemilihan yang lebih umum adalah memilih satudari 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 'perginaik taxi' dilakukan. Sebaliknya jika kondisi 'hari hujan' bernilaisalah, maka aksi 'pergi naik motor' akan dilaksanakan. Dan, tidak adapilihan aksi turun ke jalan!? =) Contoh yang lebih kompleks dapatditemui dalam pemilihan dengan tiga atau lebih variable, sepertipenentuan 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 andabuat mejadi 4 atau lebih variablenya!? =)
Pengulangan (Repetition)-------------------------Salah satu kegunaan pemrograman adalah untuk memudahkan pekerjaan yangharus dilakukan berulang-ulang tanpa capek!? Cerita sedikit nih! =)Sewaktu saya duduk di sekolah dasar, pernah suatu hari dihukum gurukarena tertidur dikelas pada jam pelajaran terakhir. Anda tauhukumannya? Menulis kalimat "saya berjanji tidak akan tidur di kelaslagi" sebanyak 300 kali karena saya masih duduk di kelas 3. Tapiuntungnya guru saya ini gak jelasin dimana saya harus menulisnya.Keesokan harinya saya terpaksa merengek ke mak saya untuk dibolehkanmembawa laptop kesayangan saya ke sekolah!? Sebelumnya pada malamharinya saya sudah membuat program kecil untuk mengulang tulisan "sayaberjanji 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 mengimplementasikanalgoritma '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 algoritmapencarian seperti berikut ini:
Sebuah tabel data sudah berisi data nomor ID, login ID, dan passwordlogin ke mesin absensi.Carilah dalam tabel password seorang karyawandengan nomor ID tertentu.1. Baca nomor ID pertama dalam tabel2. 'repeat''if' nomor ID yang dibaca sama dengan nomor ID yang dicari makatulis passwordkaryawan yang bersangkutanstop'else'baca nomor ID berikutnya di dalam tabel'until' nomor ID yang dicari sudah ditemukan atau seluruh isi tabeldibaca.
Struktur 'repeat-until' hanya satu diantara beberapa strukturpengulangan yang saya angkat saat ini. Ada beberapa struktur pengulanganlain seperti 'while-do', 'for' dan sebagainya. Pada seri berikutnyapasti akan tersertakan dengan sendirinya.
#####################Algoritma Dalam PemrogramanSalaman: #3 Aplikasi - 001#####################
Dalam mempelajari algoritma, anda nggak dituntut untuk menguasai ilmu eksak.Halmutlak yang diperlukan dalam mempelajari algoritma adalah logika anda dalam menganalisissuatu permasalahan. Kalo anda sukanya menghayal, siap-siap saja anda bakal boringmempelajari algoritma ;P~
Ada 2 hal penting yang mesti anda tau dari algoritma. Pertama, Algoritma harusbenar. Maksudnya disini, setiap masalah yang anda coba uraikan dalam bentuk program mestimenghasilkan hasil yang benar. Contohnya, anda bikin program penjumlahan 2 tambah 3hasilnya 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 sepertialgoritma intrusion. Algoritma tsb berhenti setelah melewati proses Covering Track &Installing Backdoor (walaupun dalam prakteknya anda muter² menjalankan tahapan intrusiontersebut tapi akhirnya anda akan sampai juga pada tahap Covering Track & InstallingBackdoor, khan?!).
Dan bila anda mengalami kebuntuan dalam mendesign algoritma suatu masalah, langkahyang perlu anda lakukan adalah dengan melihat/menganalisis masalah tersebut secaramenyeluruh setelah itu anda coba uraikan/bagi permasalahan tersebut sehingga menjadikumpulan² permasalahan yang lebih sederhana.
Untuk artikel kali ini, saya mencoba untuk ngelanjutin bahas tentangstruktur pengulangan menggunakan "while do" dan "for", (ngelanjutin artikel STRUKTUR DASARALGORITMA (Salaman: #2. Bagimana itu?)).
* While...DoStruktur perulangan "While...Do" tidak terlalu jauh berbeda dengan strukturperulangan "Repeat...Until". Bila pada "Repeat...Until" memungkinkan terjadinya prosesterlebih dahulu sesudah itu baru terjadi pengecekan kondisi, tetapi pada "While...Do",anda tidak akan dapat menjalankan baris² aksi bila syarat(kondisi) yang memungkinkan aksi itudijalankan tidak sesuai. While artinya sementara, sedangkan Do artinya kerjakan, jadi biladiindonesiakan sintaksnya sendiri berbentuk seperti ini :
Sementara /kondisi terpenuhi/ Kerjakanaksi dijalankanSelesai
Contoh penggunaan "While...Do" seperti ini, misalnya anda ingin mencetak kalimat"saya suka k-elektronik" di layar sebanyak 10 kali, menggunakan "While...Do" makasintaksnya akan seperti ini:
pencacah <- 1; /inisialisasi awal thd pencacah, mengisi nilai awal kepencacah/while pencacah <=10 docetak "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 bernilaibenar, 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 sampainilai pencacah dinaikkan 11 maka kondisi pengulangan bernilai salah, pengulangandihentikan.
* FORStruktur pengulangan "FOR" tidak melibatkan penggunaan kondisi seperti padastruktur perulangan "Repeat...Until" ataupun "While...Do". Struktur FOR ada dua macamyaitu, menaik (ascending) yang ditandai dengan kata "to" dan menurun (descending) yangditandai dengan kata "downto" ntuk sintaksnya:
FOR pencacah <- nilai_awal to/downto nilai_akhiraksi dijalankanendfor
Untuk FOR menaik, nilai awal harus lebih kecil dari nilai akhir. Tetapi pada FOR menurun nilaiawal harus lebih besar dari nilai akhir.
Contoh sintaks :- Untuk FOR menaik
FOR pencacah <- 1 to 10 docetak "saya suka k-elektronik"endfor
- Untuk FOR menurun
FOR pencacah <- 10 downto 1 docetak "saya suka k-elektronik"endfor
Sekian dulu, dan sampai jumpa pada edisi berikutnya :)~#####################
Salam Manis.
by.miftahul 'ulum

Tidak ada komentar:

Posting Komentar