- Sejarah Istilah Algoritma
Kata algoritma berasal dari latinisasi nama seorang ahli matematika dari Uzbekistan Al Khawārizmi (hidup sekitar abad ke-9), sebagaimana tercantum pada terjemahan karyanya dalam bahasa latin dari abad ke-12 "Algorithmi de numero Indorum". Pada awalnya kata algorisma adalah istilah yang merujuk kepada aturan-aturan aritmetis untuk menyelesaikan persoalan dengan menggunakan bilangan numerik arab (sebenarnya dari India, seperti tertulis pada judul di atas). Pada abad ke-18, istilah ini berkembang menjadi algoritma, yang mencakup semua prosedur atau urutan langkah yang jelas dan diperlukan untuk menyelesaikan suatu permasalahan
- Pengertian
Menurut Muhammad ibn Mūsā al-Khwārizmī algoritma adalah : "Suatu metode khusus untuk menyelesaikan suatu persoalan". Menurut Goodman Hedet Niemi algoritma adalah : "Urut-urutan terbatas dari operasi terdefinisi dengan baik, yang masing-masing membutuhkan memori dan waktu yang terbatas untuk menyelesaikan suatu masalah".algoritma juga dapat diartikan sebagai Rangkaian langkah-langkah/alur pikiran untuk menyelesaikan suatu masalah yang sifatnya logis dan sistimatis. Dalam Wikipedia bahasa Indonesia algoritma merupakan kumpulan perintah untuk menyelesaikan suatu masalah. Perintah-perintah ini dapat diterjemahkan secara bertahap dari awal hingga akhir. Masalah tersebut dapat berupa apa saja, dengan catatan untuk setiap masalah, ada kriteria kondisi awal yang harus dipenuhi sebelum menjalankan algoritma. Algoritma akan dapat selalu berakhir untuk semua kondisi awal yang memenuhi kriteria, dalam hal ini berbeda dengan ystemg. Algoritma sering mempunyai langkah pengulangan (iterasi) atau memerlukan keputusan (logika Boolean dan perbandingan) sampai tugasnya selesai.
- Jenis algoritma
Terdapat beragam klasifikasi algoritma dan setiap klasifikasi mempunyai alasan tersendiri. Salah satu cara untuk melakukan klasifikasi jenis-jenis algoritma adalah dengan memperhatikan ystemg dan metode yang digunakan untuk mendesain algoritma tersebut. Beberapa ystemg yang digunakan dalam menyusun suatu algoritma akan dipaparkan dibagian ini. Masing-masing ystemg dapat digunakan dalam banyak algoritma yang berbeda.
a) Divide and Conquer, ystemg untuk membagi suatu permasalahan besar menjadi permasalahan-permasalahan yang lebih kecil. Pembagian masalah ini dilakukan terus menerus sampai ditemukan bagian masalah kecil yang mudah untuk dipecahkan. Singkatnya menyelesaikan keseluruhan masalah dengan membagi masalah besar dan kemudian memecahkan permasalahan-permasalahan kecil yang terbentuk.
b) Dynamic programming, ystemg pemrograman dinamik akan sesuai jika digunakan pada suatu masalah yang mengandung sub-struktur yang optimal (, dan mengandung beberapa bagian permasalahan yang tumpang tindih . Paradigma ini sekilas terlihat mirip dengan ystemg Divide and Conquer, sama-sama mencoba untuk membagi permasalahan menjadi sub permasalahan yang lebih kecil, tapi secara ystemg ada perbedaan dari karakter permasalahan yang dihadapi.
c) Metode serakah. Sebuah algoritma serakah mirip dengan sebuah Pemrograman dinamik, bedanya jawaban dari submasalah tidak perlu diketahui dalam setiap tahap; dan menggunakan pilihan “serakah” apa yang dilihat terbaik pada saat itu.
- Struktur dasar algoritma
1. Struktur Sekuensial (Runtunan/ sequence)
Pada struktur sekuensial instruksi dikerjakan secara berurutan baris perbaris mulai dari baris pertama hingga baris terakhir, tanpa ada loncatan atau perulangan. Tiap instruksi dikerjakan satu per satu. Tiap instruksi dilaksanakan tepat sekali, tidak ada instruksi yang diulang. Urutan instruksi yang dilaksanakan pemroses sama dengan urutan instruksi sebagai tertulis di dalam teks algoritma. Akhir dari instruksi terakhir merupakan akhir algoritma.
2. Struktur Seleksi (Pemilihan/ Selection)
Struktur seleksi adalah instruksi yang dipakai untuk memilih satu aksi dari beberapa kemungkinan aksi berdasarkan suatu syarat.
3. Struktur Perulangan (repetition)
Perulangan adalah instruksi yang dapat mengulang sederetan Instruksi secara berulang-ulang sesuai persyaratan yang ditetapkan.
- Notasi Algoritma
1. Untaian kalimat deskriptif
Setiap langkah dinyatakan dengan bahasa yang ystemg/jelas. Dengan notasi bergaya kalimat ini, deskripsi setiap langkah dijelaskan dengan bahasa yang ystemg. Proses diawali dengan kata kerja seperti ‘baca’, ‘hitung’, ‘bagi’, ‘ganti’, dan sebagainya, sedangkan pernyataan kondisional dinyatakan dengan ‘jika…maka…’. Notasi ini bagus untuk algoritma yang pendek, namun untuk masalah yang algoritmanya besar, notasi ini jelas tidak efisien. Selain itu, pengkonversian notasi algoritma ke notasi bahasa pemrograman cenderung relative sukar.
2. Menggunakan diagram alir (flow chart)
a. flowchart system, adalah suatu gambar yang menjelaskan :
- file-file yang diproses oleh program
- jenis piranti yang digunakan oleh file
- operasi terhadap file (masukan ataupun keluaran).
b. flowchart program (biasa disebut flowchart saja), adalah suatu gambar yang menjelaskan urutan :
- Pembacaan data
- Pemrosesan data
- Pengambilan keputusan terhadap data
- Penyajian hasil pemrosesan data
3. Menggunakan pseuo-code
Pseudo-code adalah notasi yang menyerupai notasi bahasa pemrograman tingkat tinggi, khususnya Pascal dan C. Bahasa pemrograman umumnya mempunyai notasi yang hampir mirip untuk beberapa instruksi seperti notasi if-then-else, while-do, repeat-until, read, write, dan sebagainya. Namun tidak seperti bahasa pemrograman yang direpotkan dengan tanda titik koma, indeks, format keluaran, kata-kata khusus, dan sebagainya, sembarang versi Pseudo-code dapat diterima asalkan perintahnya tidak membingungkan pembaca. Keuntungan menggunakan notasi Pseudo-code adalah kemudahan mentranslasi ke notasi bahasa pemrograman, karena terdapat korespodensi antara setiap Pseudo-code dengan notasi bahasa pemrograman. Sehingga Pseudo-code cocok untuk algoritma yang rumit.

Tidak ada komentar:
Posting Komentar