Senin, 20 Oktober 2008

Logika & Algoritma Bab 2



2.1. Algoritma

Manusia di dalam melaksanakan kehidupannya selalu saling berinteraksi satu sama lain. Proses interaksi tersebut merupakan usaha meningkatkan kualitas dan kesejahteraan hidupnya. Dalam hal ini besar kemungkinan akan selalu menghadapi berbagai masalah atau kendala. Masalah yang timbul dari setiap aktifitas yang dilakukan mungkin berbeda, serupa ataupun sama.
Manusia yang bijaksana, tentunya akan selalu berusaha mengantisipasi atau mengatasi segala masalah yang dihadapinya. Dengan demikian tujuan yang telah dicanangkan akan tercapai. Bentuk dari antisipasi tersebut yang dilakukan oleh setiap orang sangat tentu bervariasi. Hal ini disebabkan oleh beberapa faktor yakni, latar belakang pengalaman dan tujuan para pelakunya.
Kadangkala usaha yang dilakukan itu tidak menghasilkan penyelesaian namun justru menimbulkan masalah yang baru. Dengan perkataan yang lain, orang tersebut tidak menyelesaikan masalah melainkan sebagai pembuat atau penyebab masalah yang baru. Manusia-manusia demikian di satu sisi merupakan penghambat kemajuan dalam segala aspek kehidupan.
Usaha yang dilakukan agar solusi dari suatu masalah dapat diperoleh, dibuatlah suatu proses atau prosedur. Prosedur tersebut merupakan urutan dari langkah-langkah atau instruksi yang berintegrasi. Usaha tersebut dinamakan Algoritma. Istilah Algoritma didefinisikan sebagai:

“ suatu urutan dari barisan langkah-langkah atau instruksi guna menyelesaikan suatu masalah yang disusun secara sistematis”
Gambar 1.1
Diagram alur Proses Penyelesaian Masalah

Kata algorism berasal dari penulis buku Arab terkenal, yaitu ABU JA’FAR MUHAMMAD IBNU AL KHAWARIZMI, (Al-Khawarizmi dibaca oleh orang Barat menjadi algorism).
Gambar 1.1 menunjukkan sebuah skema atau diagram alur dari suatu proses di dalam penyelesaian masalah. Setiap bagian dari skema tersebut dilaksanakan secara simultan.
Dari suatu masalah yang timbul, besar kemungkinan bisa lebih dari satu algoritma yang ditawarkan guna penyelesaian masalah tersebut. Sehingga timbul suatu pertanyaan yaitu algoritma mana yang akan digunakan….? Kemudian berkembang ke satu pertanyaan lainnya yakni, mengapa algoritma tersebut yang digunakan….?
Dalai memilih algoritma, dari sekian banyak algoritma yang ditawarkan harus diperhatikan beberapa kriteria.
Kriteria tersebut adalah sebagai berikut:
1. Ada Output
2. Efektifitas dan Efesiensi
3. Jumlah Langkahnya Berhingga
4. Berakhir
5. Terstruktur

Dari kelima (5) kriteria tersebut di atas, akhirnya dapat ditentukan suatu algoritma yang ”terbaik” dari sekian banyak algorima yang ada, yakni:

“suatu algoritma harus menghasilkan output yang tepat guna (efektif) dalam waktu yang relatif singkat dan penggunaan memori yang relatif sedikit (efisien) dengan langkah yang berhingga dan prosesnya berakhir baik dalam keadaan diperoleh suatu solusi ataupun tidak adanya solusi”

CONTOH 1.1
Masalah :

Kita akan mengirim surat melalui Pos kepada seorang sahabat:

Penyelesainnya:
(1) menullis isi surat
(2) memasukkan kertas surat ke dalam sampul surat
(3) menuliskan alamat yang dituju
(4) menempelkan perangko
(5) menuju kantor pos
(6) menyerahkan surat ke pegawai kantor pos

Langkah-langkahnya tersebut merupakan langkah yang sudah terurut, sehingga masalahnya dapat terselesaikan dengan “baik”.

CONTOH 1.2
Masalah :
Tentukan akar kuadrat dari suatu bilangan bulat positif….! (akarnya bilangan bulat positif)

Penyelesaian :
Semi algoritmanya :
(1) baca bilangan bulat positif
(2) nyatakan nilai q = 0
(3) hitung P = q x q
(4) jika p = y maka q adalah akarnya, lalu berhenti
(5) q ditambah 1
(6) kembali ke lamgkah –[3]

dari semi algoritma tersebut di atas, jika dijalankan
a). untuk nilai y =4, prosesnya adalah :
(1) y =4
(2) q =0
(3) p =0
(4) p =y 0 = 4 ? (salah)
(5) q =1
(6) kembali ke langkah (3) :
(3) q= 1
(4) p= y 1 = 4?(salah)
(5) q=2
(7) kembali kelangkah (3):
(3)p=4
(4)p=y 4=4 ?(benar)
berarti q = 2 adalah akarnya .
Peroses berakhir.
b). untuk nilai y=5. maka prosesnya adalah :
(1) y=5
(2) q=0
(3) p=0
(4) p=y 0 =5 ?(salah)
(5) q=1
(6) Kembali ke-(3):

(3) P=1
(4) P=y 1 = 5 ? (salah)
(5) q=2
(6) kembali ke-(3):
(3) p=4
(4) p=y 4 = 5 ?(salah)
(5) q=3
(6) kembali ke (3) :
(3) p=9
(4) p=y 9 = 5 ? (salah)
(5) p=q
(6) kemballi ke (3)

·
·
·

Dan seterusnya

Proses tersebut tidak akan pernah berhenti, karena untuk masalah nilai y = 5 tidak mempunyai solusi.
Urutan dari barisan langkah-langkah tersebut di atas (semi Algoritma) dapat diubah menjadi algoritma. Dengan demikian proses akan berhenti atau berakhir baik dalam keadaan ada solusi maupun tidak ada solusinya. Hal ini cukup dilakukan dengan penambahan satu instruksi di antara langkah ke-4 dan ke-5. Sehingga algoritma adalah:
(1) baca bilangan bulat positif y
(2) nyatakan nilai q = 0
(3) hitung p = q x q
(4) jika p = y maka q adalah akarnya, lalu berhenti
(5) jika p > y maka y tidak pernah punya akar, lalu berhenti
(6) q ditambah 1
(7) kemballi ke langkah ke-(3)

CATATAN : Semi Algoritma adalah suatu prosedur yang hanya akan berhenti jika mempunyai atau menghasilkan solusi.

Dari algoritma tersebut, jika dijalankan untuk nilai

a) y = 4, prosesnya adalah :

(1) y = 4
(2) q = 0
(3) p = 0
(4) 0 = 4 ? (salah)
(5) 0 > 4 ? (salah)
(6) q = 1
(7) kembali ke-(3)
(3) p =1
(4) 1 = 4 ? (salah)
(5) 1 > 4 ? (salah)
(6) q = 2
(7) kembali ke-(3)
(3) p = 4
(4) 4 = 4 ? (benar)
berarti q = 2 adalah akarnya.
Proses berakhir

b). y = 5, prosesnya adalah :
(1) y = 5
(2) q = 0
(3) p = 0
(4) 0 = 5 ? (salah)
(5) 0 > 5 ? (salah)
(6) q = 1
(7) kembali ke-(3)
(3) p =1
(4) 1 = 5 ? (salah)
(5) 1 > 5 ? (salah)
(6) q = 2
(7) kembali ke-(3)
(3) p =4
(4) 4 = 5 ? (salah)
(5) 4 > 5 ? (salah)
(6) q = 3
(7) kembali ke-(3)
(3) p = 9
(4) 9 = 5 ? (salah)
(5) 9 > 5 ? (benar)

berarti tidak punya akar.
Proses berakhir


2.2. Mekanisme Pelaksanaan Algoritma oleh Pemroses

Komputer hanyalah salah satu pemroses. Agar dapat dilaksanakan oleh komputer harus ditulis dalam bahasa pemrograman sehingga dinamakan program. Jadi program adalah perwujudan atau implementasi Algoritma yang ditulis dalam bahasa pemrograman tertentu sehingga dapat dilaksanakan oleh komputer.
Program ditulis dalam salah satu bahasa pemrograman, dan kegiatan membuat program disebut pemrograman (programming). Orang yang menulis program disebut pemrogram (programmer). Tiap-tiap langkah di dalam program tersusun atas sederetan instruksi. Bila suatu instruksi dilaksanakan, maka operasi-operasi yang bersesuain dengan instruksi tersebut dikerjakan oleh komputer.
Secara garis besar komputer tersusun atas empat komponen utama: piranti masukan, piranti keluaran, unit pemroses utama, dan memori. Unit pemroses utama (Central Processing Unit-CPU) adalah “otak” komputer, yang berfungsi mengerjakan operasi-operasi dasar seperti operasi perbandingan, operasi perhitungan, operasi membaca dan operasi menulis. Memori adalah komponen yang berfungsi menyimpan. Yang disimpan di dalam memori adalah program (berisi operasi-operasi yang dikerjakan oleh CPU) dan data atau informasi. Piranti masukan dan keluaran (I/O Devices) adalah alat yang memasukkan data atau program ke dalam memori, dan alat yang digunakan komputer untuk mengkomunikasikan hasil-hasil aktivitasnya.

Piranti
Masukan
Unit Pemroses Utama (CPU)
Piranti Keluaran
Memori

Gambar 1.2. Komponen-komponen utama komputer.


2.3. Bahasa Pemrograman

Sampai sekarang terdapat puluhan bahasa pemrograman. Di sini kita dapat menyebutkannya antara lain bahasa rakitan (Assembly), Fortran, Cobol, Ada, PL/I, Algol, Pascal, C, Basic, Prolog, LISP, PRG, bahasa-bahasa simulasi seperti CSMP, Simscript, GPSS, Dinamo dan banyal lagi. Berdasarkan terapanya, bahasa pemrograman dapat digolongkan atas dua kelompok besar :
1. Bahasa Pemrograman Bertujuan Khusus. Yang termasuk kelompok ini adalah Cobol (untuk terapan bisnis dan administrasi), Fortran (terapan komputasi ilmiah), bahasa rakitan (terapan pemrograman mesin), Prolog (terapan kecerdasan buatan), bahasa-bahasa simulasi, dan sebagainya
2. Bahasa Pemrograman Bertujuan Umum seperti yang dapat digunakan berbagai aplikasi misalnya, bahasa Pascal, bahasa Pascal dan C.

Berdasarkan pada apakah notasi bahasa pemrograman lebih “dekat “ke mesin atau bahasa ke manusia, maka bahasa pemrograman dikelompokkan atas dua macam :
1. Bahasa tingkat rendah. Bahasa jenis ini dirancang agar setiap instruksinya
langsung dikerjakan oleh komputer, tanpa harus melalui penerjemak (translator). Contohnya adalah bahasa mesin. CPU mengambil instruksi dari memori, langsung mengerti dan langsung mengerjakan operasinya. Bahasa tingkat rendah bersifat primitif, sangat sederhana dan orientasinya lebih dekat ke mesin, dan sulit dipahami manusia.
2. Bahasa tingkat tinggi, yang membuat pemrograman lebih mudah dipahami,
lebih manusiwi, dan berorientasi ke bahasa manusia (bahasa inggris), hanya
saja program dalam bahasa tingkat tinggi tidak dapat dilangsung dilaksanakan oleh komputer. Ia perlu diterjemahkan terlebih dahulu oleh translator bahasa ke dalam bahasa mesin sebelum akhirnya dieksekusi oleh CPU. Tahapan pemrograman dan pelaksanaan program oleh komputer digambarkan pada Gambar 1.3.
Contoh Bahasa Tingkat Tinggi adalah Pascal, PL/I, Ada, Cobol, Basic, Fortran, C, dan sebagainya.
2.4. Studi Algoritma
Hal-hal yang akan dipelajari mengenai studi tentang algoritma yaitu :
1. Bagaimana meencanakan suatu algoritma
2. Bagaimana menyatakan suatu algoritma
3. Bagaimana validitas suatu algoritma
4. Bagaimana menganalisa suatu Algoritma
5. Bagaimana menguji program dari suatu algoritma


Yang dimaksud dengan kelima hal tersebut di atas, secara singkat dapat dijelaskan sebagai berikut :


2.4.1. Merencanakan Suatu Algoritma
Sebelum merepresentasikan atau menyatakan suatu algoritma untuk memperoleh solusi dari suatu masalah, ditentukan lebih dahulu model atau desain penyelesainnya. Satu masalah dapat diselesaikan dengan berbagai model atau desain. Tentunya ada satu model yang “terbaik” dari sekian model algoritma yang ada. Sehingga penguasaan teknik variasi desain atau model harus dapat dikuasai dengan sebaik-baiknya.

2.4.2. Menyatakan Suatu Algoritma
Setelah ditentukan model algoritma yang digunakan, baru dapat merepresentasikan atau menyatakan algoritma. Yang dimaksud dengan hal tersebut adalah membuat barisan langkah-langkah atau instruksi secara terurut guna menyelesaikan suatu masalah. Pernyataan tersebut handaknya dibuat secara singkat dengan banyaknya langkah yang hingga dan terstruktur.
Menyatakan suatu algoritma dilakukan dengan 2 (dua) cara, yaitu:
(i) dengan diagram alur (flowchart)
Penyajian algoritma dengan diagram alur adalah penyajian atau penulisan algoritma dengan suatu diagram yang menggambarkan susunan alur logika dari permasalahan yang diselesaikan. Hal tersebut memberikan gambaran dari alur pelaksanaan program yang akan dibuat.
(ii) dengan bahasa semu
Yang dimaksud dengan bahasa semu dalam hal ini adalah bahasa sehari-hari tetapi jelas dan terstruktur.

2.4.3. Validitas Suatu Algoritma
Indikasi dari suatu algoritma yang valid adalah jika penyelesainnya memenuhi solusi yang sebenarnya. Jadi penyelesaian yang diperoleh suatu algoritma harus memecahkan suatu masalah bukannya membuat masalah baru dengan mengabaikan masalah yang sebelumnya.

2.4.4. Menganalisis Suatu Algoritma
Studi yang menyangkut analisa algoritma (yang absah) ada 2 hal, yakni :
(i) perbandingan dari waktu perhitungan (running storage)
(ii) banyaknya memori (storage) yang digunakan

2.4.5. Menguji Suatu Algoritma
Algoritma yang sudah diterapkan untuk digunakan untuk meyelesaikan suatu masalah akan dengan cepat dan tepat di peroleh solusinya dengan menggunakan alat bantu. Alat bantu tersebut adalah komputer. Algoritma tersebut harus disajikan terlebih dahulu ke dalam bahasa pemrograma.

Pengujian terhadap program tersebut dilakukan dengan 2 fase yang dilaksanakan secara simultan, yakni ;
a) fase debugging
adalah suatu fase dari proses program eksekusi yang melakukan \koreksi terhadap kesalahan program yang dimaksud adalah kesalahan dalam bahasa pemrograman (baik secara logika maupun sintax)

b) fase profiling
adalah suatu fase yang akan bekerja jika program tersebut sudah benar (hasil fase debugging). Fase ini juga bekerja untuk melihat atau mengukur waktu tempuh (running time) dan penggunaan memori atau storage.

Tidak ada komentar: