Pages - Menu

Monday, September 25, 2017

Mengenal Lebih Dekat Algoritma dan Pemrograman

Assalamualaikum Sahabat semua, dikesempatan kali ini saya akan memposting tentang apa itu algoritma pemrograman dan bagaimana karakteristiknya yang baik. Algoritma sangat penting dalam pemrograman karena ianya mempengaruhi program yang dibuat, semakin efesien algoritma yang kita buat maka semakin bagus program tersebut. Nah langsung saja kita mengenal apa itu algoritma.
A.      Pengertian Algoritma
Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis dan logis. Dalam beberapa konteks, algoritma dapat diartikan sebagai spesifikasi urutan langkah untuk melakukan pekerjaan tertentu.  Kata algoritma diambil dari nama ilmuan muslim yang terkenal yaitu Abu Ja’far Muhammad Ibnu Musa Al-Khuwarizmi (780-846 M).  Kata Al-Khuwarizmi oleh  orang barat dibaca menjadi Algorism. Jadi itulah asal mula kata algoritma.

B.      Pertimbangan dalam pemilihan algoritma
1.         Algoritma haruslah benar.
            Artinya algoritma akan memberikan keluaran yang dikehendaki dari sejumlah masukan yang diberikan. Tidak peduli sebagus apapun algoritma, kalau memberikan keluaran yang salah pastilah algoritma tersebut bukanlah algoritma yang baik.
2.         Seberapa baik hasil yang dicapai oleh algoritma tersebut.
       Hal ini penting terutama pada algoritma untuk menyelesaikan masalah yang memerlukan aproksimasi hasil (hasil yang hanya berupa pendekatan). Algoritma yang baik harus mampu memberikan hasil yang sedekat mungkin dengan nilai yang sebenarnya.
3.         Efisiensi algoritma
     Efisiensi algoritma dapat ditinjau dari 2 hal yaitu efisiensi waktu dan memori. Meskipun algoritma memberikan keluaran yang benar (paling mendekati), tetapi jika kita harus menunggu berjam-jam untuk mendapatkan keluarannya, algoritma tersebut biasanya tidak akan dipakai, setiap orang menginginkan keluaran yang cepat. Begitu juga dengan memori, semakin besar memori yang terpakai maka semakin buruklah algoritma tersebut.

Dalam kenyataannya, setiap orang bisa membuat algoritma yang berbeda untuk menyelesaikan suatu permasalahan, walaupun terjadi perbedaan dalam menyusun algoritma, tentunya kita mengharapkan keluaran yang sama. Jika terjadi demikian, carilah algoritma yang paling efisien dan cepat


C.      Notasi Penulisan Algoritma
Ada dua cara penulisan algoritma, yaitu:
·         Dengan menyatakan langkah-langkah algoritma dalam untaian kalimat deskriftif (Pseudocode)
·         Dengan mengunakan diagram alir (flowchart)

D.     Perbedaan Algoritma dan Program
Program adalah kumpulan pernyataan komputer, sedangkan metode dan tahapan sistematis dalam program adalah algoritma. Dan program ditulis dengan menggunakan bahasa pemrograman. Jadi bisa disebut bahwa program adalah suatu implementasi dari bahasa pemrograman. Dan beberapa pakar memberi formula bahwa:
Program = Algoritma + Bahasa (Struktur Data)

E.      Keuntungan Pembuatan Algoritma
Ada beberapa keuntungan pembuatan algoritma, yaitu:
·         Pembuatan atau penulisan algoritma tidak tergantung pada bahasa pemrograman manapun, artinya penulisan algoritma independen dari bahasa pemrograman dan komputer yang melaksanakannya.
·         Notasi algoritma dapat diterjemahkan ke dalam berbagai bahasa pemrograman.
·         Apapun bahasa pemrogramannya, output yang akan dikeluarkan sama karena algoritmanya sama.

F.       Hal-hal yang perlu diperhatikan dalam membuat algoritma:
Untuk membuat algoritma yang bagus dan efesien, ada beberapa hal yang perlu dipertimbangkan, diantaranya:
1. Teks algoritma berisi deskripsi langkah-langkah penyelesaian masalah. Deskripsi tersebut dapat ditulis dalam notasi apapun asalkan mudah dimengerti dan dipahami.
2. Tidak ada notasi yang baku dalam penulisan teks algoritma seperti notasi bahasa pemrograman. Notasi yang digunakan dalam menulis algoritma disebut notasi algoritmik.
3. Setiap orang dapat membuat aturan penulisan dan notasi algoritmik sendiri. Hal ini dikarenakan teks algoritma tidak sama dengan teks program. Namun, supaya notasi algoritmik mudah ditranslasikan ke dalam notasi bahasa pemrograman tertentu, maka sebaiknya notasi algoritmik tersebut berkorespondensi dengan notasi bahasa pemrograman secara umum.
4. Notasi algoritmik bukan notasi bahasa pemrograman, karena itu pseudocode dalam notasi algoritmik tidak dapat dijalankan oleh komputer.  Agar dapat dijalankan oleh komputer, pseudocode dalam notasi algoritmik harus ditranslasikan atau diterjemahkan ke dalam notasi bahasa pemrograman yang dipilih. Perlu diingat bahwa orang yang menulis program sangat terikat dalam aturan tata bahasanya dan spesifikasi mesin yang menjalannya.
5. Algoritma sebenarnya digunakan untuk membantu kita dalam mengkonversikan suatu permasalahan ke dalam bahasa pemrograman.
6. Algoritma merupakan hasil pemikiran konseptual, supaya dapat dilaksanakan oleh komputer, algoritma harus ditranslasikan ke dalam notasi bahasa pemrograman.
             
Berikut adalah contoh algoritma dalam kehidupan sehari-hari
G.     Untuk menilai sesuatu algoritma dapat melalui beberapa hal, diantaranya:
• Tingkat kepercayaannya tinggi (realibility). Hasil yang diperoleh dari proses harus berakurasi tinggi dan benar.
• Pemrosesan yang efisien (cost rendah). Proses harus diselesaikan secepat mungkin dan frekuensi kalkulasi yang sependek mungkin.
• Sifatnya general. Bukan sesuatu yang hanya untuk menyelesaikan satu kasus saja, tapi juga untuk kasus lain yang lebih general.
• Bisa dikembangkan (expandable). Haruslah sesuatu yang dapat kita kembangkan lebih jauh berdasarkan perubahan requirement yang ada.
• Mudah dimengerti. Siapapun yang melihat, dia akan bisa memahami algoritma Anda. Susah dimengertinya suatu program akan membuat susah di-maintenance (kelola).
• Portabilitas yang tinggi (portability). Bisa dengan mudah diimplementasikan di berbagai platform komputer.
Precise (tepat, betul, teliti). Setiap instruksi harus ditulis dengan seksama dan tidak ada keragu-raguan, dengan demikian setiap instruksi harus dinyatakan secara eksplisit dan tidak ada bagian yang dihilangkan karena pemroses dianggap sudah mengerti. Setiap langkah harus jelas dan pasti.
  Contoh: Tambahkan 1 atau 2 pada x. Instruksi tersebut terdapat keraguan.
• Jumlah langkah atau instruksi berhingga dan tertentu. Artinya, untuk kasus yang sama banyaknya, langkah harus tetap dan tertentu meskipun datanya berbeda.
• Efektif. Tidak boleh ada instruksi yang tidak mungkin dikerjakan oleh pemroses yang akan menjalankannya.
  Contoh: Hitung akar 2 dengan presisi sempurna. Instruksi tersebut tidak efektif, agar efektif instruksi tersebut diubah. Misal: Hitung akar 2 sampai lima digit di belakang koma.
• Harus terminate. Jalannya algoritma harus ada kriteria berhenti. Pertanyaannya adalah apakah bila jumlah instruksinya berhingga maka pasti terminate?
Output yang dihasilkan tepat. Jika langkah-langkah algoritmanya logis dan diikuti dengan seksama maka dihasilkan output yang diinginkan.

Dan Berikut adalah contoh dari algoritma mencari dengan struktur bahasa indonesia dan pseudocode
a. Algoritma dengan struktur bahasa Indonesia
                        - Baca bilangan a, b, dan c
                        - Jumlahkan ketiga bilangan tersebut
                        - Bagi jumlah tersebut dengan 3
                        - Tulis hasilnya
b. Algoritma dengan pseudocode
                        input (a, b, c)
                        Jml = a+b+c
                        Rerata = Jml/3
                        Output (Rerata)