ALGORITMA
Algoritma berasal
dari nama seorang Ilmuwan Arab yang bernama Abu JafarMuhammad Ibnu Musa Al
Khuwarizmi penulis buku berjudul Al Jabar Wal Muqabala. Dua Kata Al Khuwarizmi
dibaca orang barat menjadi Algorism yang kemudian lambat laun menjadi Algorithm
diserap dalam bahasa Indonesia menjadi Algoritma.Algoritma dapat diartikan
urutan penyelesaian masalah yang disusun secara sistematis menggunakan bahasa
yang logis untuk memecahkan suatu permasalahan. Meski demikian terdapat
beberapa definisi algoritma yang lain. Diantaranya menurut Rinaldi Munir,
algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun
secara sistematis. Sedang menurut Kamus Besar Bahasa Indonesia, definisi
algoritma adalah urutan logis pengambilan keputusan untuk pemecahan masalah.
Menurut tim Gunadarma:1988, algoritma adalah suatu himpunan berhingga dari
instruksi-instruksi yang secara jelas memperinci langkah-langkah proses
pelaksanaan, dalam pemecahan suatu masalah tertentu, atau suatu kelas masalah
tertentu, dengan dituntut pula bahwa himpunan instruksi tersebut dapat
dilaksanakan secara mekanik.
Pengertian algoritma
Menurut Sjukani (2005), algoritma adalah alur pemikiran dalam menyelesaikan
suatu pekerjaan yang dituangkan secara tertulis. Yang ditekankan pertama adalah
alur pikiran, sehingga algoritma seseorang dapat berbeda dari algoritma orang
lain. Sedangkan penekanan kedua adalah tertulis, yang artinya dapat berupa
kalimat, gambar, atau tabel tertentu.
Jadi dapat
disimpulkan bahwa algoritma adalah ilmu yang mempelajari cara penyelesaian
suatu masalah berdasarkan urutan langkah-langkah terbatas yang disusun secara
sistematis dan menggunakan bahasa yang logis dengan tujuan tertentu. dalam hal
ini adalah alur pemikiran untuk menyelesaikan suatu pekerjaan atau suatu
masalah daripada pembuatan program komputer. Algoritma inilah yang kemudian
dijadikan landasan (pedoman) untuk membuat program komputer.
Dalam kehidupan
sehari-haripun seringkali kita berhadapan dengan masalah-masalah yang kalau
kita cermati mengikuti kaidah-kaidah penyelesaian secara algoritma. Misalkan
saja cara-cara memasak mie instan, membuat kopi atau teh, memasak makanan yang
dinyatakan dalam bentuk resep, dan masih banyak lagi yang semuanya itu dapat
kita sebut sebagai algoritma. Pada mie instan misalnya, biasanya pada
bungkusnya terdapat urutan langkahlangkah bagaimana cara memasak atau
menyajikannya. Bila langkah langkah tersebut tidak logis, maka dapat dipastikan
bahwa kita akan memperoleh hasil yang tidak sesuai dengan yang diharapkan. Kita
harus membaca satu demi satu langkah langkah pembuatannya kemudian mengikutinya
agar memperoleh hasil yang baik. Yang harus diingat disini adalah kita tidak
harus mengikuti langkah langkah yang sudah diberikan, tetapi kita dapat
memodifikasinya atau bahkan membuat resep atau cara baru yang lebih baik tetapi
menghasilkan hal yang sama (mempunyai tujuan yang sama), yaitu dapat menikmati
hasil masakan. Demikian juga dengan pemrograman komputer, kita juga tidak harus
mengikuti algoritma yang sudah ada, tetapi kita dapat menambah ataupun
mengurangi bahkan membuat algoritma yang baru asalkan permasalahan yang ada
dapat terpecahkan dengan baik.
Ciri-ciri, Sifat, Struktur Dasar dan
Cara Penulisan Algoritma
Tidak semua urutan
langkah penyelesaian masalah yang logis dapat disebut sebagaialgoritma. Menurut
Donald E. Knuth, algoritma mempunyai lima ciri penting yang meliputi:
1. Finiteness
(keterbatasan), algoritma harus berakhir setelah mengerjakan sejumlah langkah
proses.
2. Definiteness
(kepastian), setiap langkah harus didefinisikan secara tepat dan tidak berarti
ganda.
3. Input (masukan),
algoritma memiliki nol atau lebih data masukan (input).
4. Output (keluaran),
algoritma mempunyai nol atau lebih hasil keluaran (output).
5. Effectiveness
(efektivitas), algoritma harus sangkil (efektif), langkah-langkah algoritma
dikerjakan dalam
waktu yang wajar.
Suatu Algoritma dapat
terdiri dari tiga struktur dasar,yaitu runtunan, pemilihan dan pengulangan.
Ketiga jenis langkah tersebut membentuk konstruksi suatu algoritma. Berikut
adalah penjelasan dari tiga struktur tersebut :
Sebuah runtunan
terdiri dari satu atau lebih instruksi. Tiap instruksi dikerjakan secara berurutan
sesuai dengan urutan penulisannya, yakni sebuah instruksi dilaksanakan setelah
instruksi sebelumnya selesai dikerjakan. Urutan dari instruksi menentukan hasil
akhir dari suatu algoritma. Bila urutan penulisan berubah maka mungkin juga
hasil akhirnya berubah. Sebagai contoh perhatikan operasi aritmatika berikut
ini, (4+3)*7=49, tetapi bila urutan aksinya diubah maka hasil keluaran akan
berbeda menjadi 4+(3*7) =25.
Contoh lain dari
runtunan aksi adalah algoritma penukaran dua bilangan bulat,yaitu:
1. Deklarasikan A, B,
dan C sebagai bilangan bulat
2. Masukkan nilai A
dan B
3. Masukkan nilai A
ke dalam C
4. Masukkan nilai B
ke dalam A
5. Masukkan nilai C
ke dalam B
Kadangkala terdapat
suatu kejadian yang baru akan dikerjakan jika suatu kondisi tertentu telah
terpenuhi. Pemilihan yaitu instruksi yang dikerjakan dengan kondisi tertentu.
Kondisi adalah persyaratan yang dapat bernilai benar atau salah. Satu atau
beberapa instruksi hanya dilaksanakan apabila kondisi bernilai benar,
sebaliknya apabila salah maka instruksi tidak akan dilaksanakan. Contoh kasus
pemilihan adalah dalam penentuan bilangan genap atau ganjil berikut ini:
1. Masukkan bilangan
sebagai sebuah bilangan bulat
2. Bagi bilangan dengan
angka 2, simpan nilai sisa pembagian dalam variabel sisa
3. Jika nilai sisa
sama dengan 0 maka kerjakan langkah 4:
4. Tampilkan ”GENAP”
ke layar
5. Jika nilai sisa
tidak sama dengan 0 maka kerjakan langkah 6
6. Tampilkan ”GANJIL”
ke layar
7. Selesai.
Salah satu kelebihan
komputer adalah kemampuannya untuk mengerjakan pekerjaan yang sama berulang
kali tanpa mengenal lelah.Kita tidak perlu menulis instruksi yang sama berulang
kali, tetapi cukup melakukan pengulangan dengan instruksi yang tersedia.
Pengulangan merupakan kegiatan mengerjakan sebuah atau sejumlah aksi yang sama
sebanyak jumlah yang ditentukan atau sesuai dengan kondisi yang diinginkan.
Beberapa statemen pengulangan di bahasa pemrograman yaitu for…, while()...,
do...while(), repeat....until, for...downto...do, for...to...do dan lain-lain.
Sebagai contoh adalah menampilkan huruf tertentu sebanyak n kali ke layar
sebagai berikut:
1. Deklarasikan
variabel huruf untuk menyimpan karakter yang akan ditampilkan.
2. Deklarasikan
variabel n untuk menyimpan banyaknya perulangan
3. Deklarasikan
variabel counter yang digunakan sebagai counter perulangan yang
sudah dilakukan.
4. Masukkan sebuah
karakter dan simpan dalam variabel huruf
5. Masukkan banyaknya
perulangan yang diinginkan dan simpan dalam variabel n
6. Set nilai counter
dengan 0
7. Tampilkan huruf
ke layar
8. Lakukan penambahan
counter dengan 1
9. Jika nilai counter<n,
kerjakan langkah 6
10. Jika nilai
counter = n selesai
NOTASI ALGORITMA
Algoritma mempunyai
aturan penulisan sendiri yang disebut dengan notasi algoritma. Notasi algoritma
ini tidak tergantung dari spesifikasi bahasa pemrograman tertentu dan komputer
yang mengeksekusinya. Hal ini dikarenakan notasi algoritma bukanlah notasi
bahasa pemrograman. Notasi algoritma merupakan bahasa universal yang dapat
diterima oleh semua bahasa pemrograman yang ada. Oleh sebab itu algoritma yang
baik harus dapat diterjemahkan ke dalam bentuk source code dari semua bahasa
pemrograman yang ada. Untuk membuat algoritma dari suatu permasalahan, biasanya
digunakan salah satu dari tiga buah notasi algoritma yang dikenal, yaitu uraian
kalimat deskriptif, flow chart, atau pseudo code.
FLOW CHART
Notasi algoritma yang paling banyak
digunakan adalah flow chart karena bentuknya yang sederhana dan mudah dipahami.
Flow chart (diagram alir) adalah penggambaran secara grafik dari
langkah-langkah pemecahan masalah yang harus diikuti oleh pemroses. Flowchart
terdiri atas sekumpulan simbol, dimana masing-masing symbol menggambarkan suatu
kegiatan tertentu.Flowchart diawali dengan penerimaan masukan (input),
pemrosesan masukan, dan diakhiri dengan menampilkan hasilnya (output). Adapun
simbol-simbol yang sering digunakan untuk menyusun flow chart (dalam microsoft
visio) adalah sebagai berikut :
1) Masukan (Input)
Masukan merupakan kegiatan penerimaan
data yang disimbolkan dengan jajaran genjang. Kita dapat menuliskan masukan
yang diperlukan pada suatu waktu secara satu per satu maupun secara
keseluruhan, akan tetapi untuk alasan efisiensi ruang gambar biasanya masukan
dituliskan bersamaan secara keseluruhan.
2) proses
Data yang dimasukan kemudian diproses
untuk menghasilkan jawaban atas persoalan yang ingin dipecahkan. Kegiatan
memproses data ini disimbolkan dengan persegi panjang. Sama seperti simbol pada
masukan, penulisan operasi-operasi pada data dapat dilakukan secara satu per
satu maupun secara keseluruhan.
3) Keluaran
Keluaran adalah
hasil dari pemrosesan data dan merupakan jawaban atas permasalahan yang ada.
Keluaran ini harus ditampilkan pada layar monitor agar dapat dibaca oleh
pengguna program. Sama seperti aturan pada simbol-simbol sebelumnya, penulisan
hasil pemrosesan data dapat dilakukan secara satu per satu maupun secara keseluruhan.
4) Percabangan atau kondisi
Yang dimaksud dengan percabangan disini
adalah suatu kegiatan untuk mengecek atau memeriksa suatu keadaan apakah
memenuhi suatu kondisi tertentu atau tidak. Jadi dalam percabangan ini, kita
harus menuliskan kondisi apa yang harus dipenuhi oleh suatu keadaan. Hasil dari
pemeriksaan keadaan ini adalah YA atau TIDAK. Jika pemeriksaan keadaan
menghasilkan kondisi yang benar, maka jalur yang dipilih adalah jalur yang
berlabel YA, sedangkan jika pemeriksaan keadaan menghasilkan kondisi yang
salah, maka jalur yang dipilih adalah jalur yang berlabel TIDAK.
Berbeda dengan aturan pada simbol-simbol sebelumnya, penulisan kondisi harus
dilakukan secara satu per satu (satu notasi percabangan untuk satu kondisi).
5)
Arah aliran
Arah
aliran merupakan jalur yang harus diikuti dan merupakan garis penghubung yang
menghubungkan setiap langkah pemecahan masalah yang ada dalam flow chart. Arah
aliran ini disimbolkan dengan anak panah
6)
Terminator
Terminator
berfungsi untuk menandai titik awal dan titik akhir dari suatu flow chart.
Simbol
terminator
ini diberi label MULAI atau START untuk menandai titik awal dari flow chart dan
label SELESAI atau END
untuk
menandai titik akhir dari flow chart. Jadi dalam sebuah flow chart harus ada
dua symbol terminator, yaitu symbol terminator untuk MULAI dan SELESAI.
7)
Konektor
Konektor
berfungsi untuk menghubungkan suatu langkah dengan langkah lain dalam sebuah
flow chart dengan keadaan on page atau off page. Yang dimaksud dengan konektor on
page adalah konektor yang digunakan untuk menghubungkan suatu langkah dengan
langkah lain dalam satu halaman. Sedangkan konektor off page adalah konektor
untuk menghubungkan suatu langkah dengan langkah lain dalam halaman yang
berbeda. Konektor ini digunakan apabila ruang gambar yang kita gunakan untuk
menggambar flow chart tidak cukup luas untuk memuat flow chart secara utuh,
jadi perlu dipisahkan atau digambar di halaman yang berbeda.
8) Annotation
memberi komentar atau keterangan dalam flow
chart.
9)
procedure/ subroutine
Sub
rutin adalah suatu bagian dalam program yang dapat melakukan (atau diberi)
tugas tertentu. Jadi sub rutin merupakan “program kecil” yang menjadi bagian
dari suatu program yang besar
DESKRIPTIF ALGORITMA
Algoritma dengan
uraian kalimat deskriptif adalah notasi algoritma yang paling sederhana karena
algoritma ini menggunakan bahasa sehari-hari. Untuk permasalahan yang sederhana
penggunaan notasi ini sangatlah mudah, akan tetapi untuk permasalahan yang
lebih komplek dan rumit, penggunaan notasi ini akan lebih sulit dan sering kali
terjadi ambigu dalam langlahlangkah penyelesaian masalah. Oleh karena itulah
untuk kasus-kasus yang lebih komplek, penggunaan notasi ini jarang sekali
bahkan tidak digunakan. Permasalahan di atas, yaitu mencari bilangan terbesar
dari tiga buah bilangan yang dimasukkan, tergolong permasalahan yang sederhana,
jadi algoritmanya masih mudah dan dapat dijelaskan dengan uraian kalimat
deskriptif sebagai berikut:
1. Masukkan sembarang bilangan sebanyak
tiga buah.
2. Ambil bilangan pertama dan set
maksimum‐nya
sama dengan bilangan pertama.
3. Ambil bilangan kedua dan bandingkan
dengan maksimum.
4. Apabila bilangan kedua lebih besar
dari maksimum maka ubah maksimum‐nya
menjadi sama dengan bilangan kedua.
5. Ambil bilangan ketiga dan bandingan
dengan maksimum.
6. Apabila bilangan ketiga lebih besar
dari maksimum maka ubah lagi maksimumnya
menjadi sama dengan bilangan ketiga.
7. Variabel maksimum akan berisi
bilangan yang terbesar dan tampilkan hasilnya.
Algoritma dengan
uraian kalimat deskriptif seperti di atas sudah jarang sekali kita temukan
karena kadang kala agak sulit untuk memahaminya. Yang paling banyak kita
temukan adalah algoritma (dengan uraian kalimat deskriptif) yang ditulis secara
lebih sistematis dan efisien sehingga lebih mudah untuk memahaminya.
PSEUDOCODE
Pseudocode adalah
cara penulisan algoritma yang menyerupai bahasa pemrograman tingkattinggi.
Pseudocode menggunakan bahasa yang hampir menyerupai bahasa pemrograman.
Biasanya pseudo-code menggunakan bahasa yang mudah dipahami secara universal
dan juga lebih ringkas dari pada algoritma. Pseudocode berisi deskripsi dari
algoritma pemrograman komputer yang menggunakan struktur sederhana dari
beberapa bahasa pemrograman tetapi bahasa tersebut hanya di tujukan agar dapat
di baca manusia. Sehingga pseudocode tidak dapat dipahami oleh komputer. Supaya
notasi pseudocode bias dipahami oleh komputer maka harus diterjemahkan terlebih
dahulu menjadi sintaks bahasa pemrograman komputer tertentu.
Dalam pseudocode,
tidak ada sintaks standar yang resmi. Karena itu, pseudocode ini dapat
diterapkan dalam berbagai bahasa pemograman. Disarankan untuk menggunakan
keyword yang umum digunakan seperti : if, then, else, while, do, repeat, for,
dan lainnya Keuntungan menggunakan notasi pseudocode adalah kemudahan
mentranslasi ke notasi bahasa pemrograman, karena terdapat korespondensi antara
setiap pseudocode dengan notasi bahasa pemrograman.
Dalam
penulisannya, pseudocode harus terdiri dari tiga bagian, yaitu :
1. Judul algoritma
Bagian yang terdiri atas nama algoritma
dan penjelasan (spesifikasi) dari algoritma tersebut. Nama sebaiknya singkat
dan menggambarkan apa yang dapat dilakukan oleh algoritma tersebut.
2. Deklarasi
Bagian untuk mendefinisikan semua nama
yang digunakan didalam program. Nama tersebut dapat berupa nama tetapan, peubah
atau variabel, tipe,prosedur, dan fungsi.
3. Deskripsi
Bagian ini berisi uraian langkah
langkah penyelesaian masalah yang ditulis dengan menggunakan aturan-aturan yang
akan dijelaskan selanjutnya.
Struktur penulisan
pseudocode secara umum sama dengan struktur penulisan algoritma dengan
menggunakan kalimat deskriptif yaitu dimulai dari judul/header, deklarasi/kamus
dan diakhiri dengan deskripsi. Meskipun tidak ada sintaks khusus dalam
penulisan pseudocode, tetapi terkadang pseudocode dituliskan dengan menggunakan
style atau gaya penulisan dari beberapa bahasa pemrograman yang ada, seperti
Fortran, Pascal, C dan lain-lain.
PEMROGRAMAN
Sebelum kita
mengetahui tentang pemrograman kita harus tahu apa arti dari program itu
sendiri. Program adalah kumpulan instruksi atau perintah yang disusun
sedemikian rupa sehingga mempunyai urutan nalar yang tepat untuk menyelesaikan
suatu persoalan. Sehingga Pemrograman dalam pengertian luas meliputi seluruh
kegiatan yang tercakup dalam pembuatan program, termasuk analisis kebutuhan (requirement's
analysis) dan keseluruhan tahapan dalam perencanaan planning perancangan (design)
dan pewujudannya (implementation). Dalam pengertian yang lebih sempit,
pemrograman merupakan pengkodean (coding atau program writing = penulisan
program) dan pengujiannya (testing) berdasarkan rancangan tertentu.
Pemahaman yang lebih sempit ini sering digunakan dalam pembuatan
program-program terapan komersial yang membedakan antara system analyst yang
bertanggung jawab dalam menganalisa kebutuhan, perencanaan dan perancangan
program dengan pemrogram (programmer) yang bertugas membuat kode program dan
menguji kebenaran program.
Pemrograman komputer
Komputer sebuah mesin
yang dirancang untuk mengikuti instruksi. Program komputer merupakan sebuah
instruksi yang digunakan oleh komputer untuk memecahkan masalah atau
tugas-tugas yang diberikan padanya. Misalnya jika menggunakan komputer untuk
menghitung pembayaran pada seorang pegawai maka langkahlangkah yang dilakukan
adalah
sebagai berikut:
1. Menampilkan pesan pada layar “
berapa jam kamu bekerja?”
2. Menunggu pengguna memasukan data jam
bekerja dan setelah ditekan ENTER maka komputer
akan memasukan data ke dalam memory.
3. Menampilkan pesan pada layar “
berapa besarnya gaji tiap jamnya?”
4. Menunggu pengguna memasukan data per
jam bekerja dan setelah
ditekan ENTER maka computer akan
memasukan data ke dalam memory
5. Komputer melakukan perkalian antara
jumlah jam dengan gaji perjam
6. Komputer menampilkan hasil
perhitungan gaji pegawai yang harus dibawa pulang.
BAHASA PEMROGRAMAN
Sampai saat ini
terdapat puluhanbahasa pemrogram, antara lain bahasa Assembly, Fortran, Cobol,
PL/I, Algol, Pascal, C, C++, Basic, Prolog, LISP, PRG, CSMP, Simscript, GPSS,
Dinamo, dan lain-lain. Berdasarkan terapannya, bahasa pemrograman dapat di
golongkan atas dua kelompok besar:
1. Bahasa pemrograman bertujuan khusus.
Yang termasuk kelompok ini adalah Cobol untuk terapan bisnis dan administrasi.
Fortran untuk terapan komputasi ilmiah, bahasa Assembly untuk terapan
pemrograman mesin, Prolog untuk terapan kecerdasan buatan, bahasa-bahasa
simulasi, dan sebagainya.
2. Bahasa pemrograman bertujuan umum,
yang dapat digunakan untukberbagai aplikasi.Yang termasuk kelompok ini adalah
bahasa Pascal, Basic, Java, dan C. Tentu saja pembagian ini tidak kaku. Bahasa
bertujuan khusus tidak berarti tidak bisa digunakan untuk aplikasi lain. Cobol
misalnya, dapat juga digunakan untuk terapan ilmiah, hanya saja kemampuannya
terbatas. Yang jelas, bahasa pemrograman yang berbeda dikembangkan untuk
bermacam-macam terapan yang berbeda pula.
Berdasarkan pada
tingkat kerumitan sebuah bahasa pemrograman, maka bahasa pemrograman
dikelompokkan atas dua macam, yaitu bahasa tingkat tinggi dan bahasa tingkat
rendah.
Bahasa Tingkat Tinggi
kelebihan utama dari
bahasa ini adalah mudah untuk di baca, tulis, maupun diperbaharui, sebelum bias
dijalankan program harus terlebih dahulu di-compile. Contoh Ada, Algol, BASIC,
COBOL, C, C++, FORTRAN, LISP, dan Pascal, dsb. Pada generasi bahasa pemrograman
terakhir sekarang ini, kedua cara interpretasi dan kompilasi digabungkan dalam
satu lingkungan pengembangan terpadu (IDE=integrated development environ-ment).
Cara interpretasi memudahkan dalam pembuatan program secara interaktif dan cara
kompilasi menjadikan eksekusi program lebih cepat. Pertama program dikembangkan
interaktif, kemudian setelah tidak ada kesalahan keseluruhan program
dikompilasi.Contoh bahasa program seperti ini adalah Visual BASIC yang
berbasis BASIC dan Delphi yang berbasis PASCAL. Bahasa tingkat tinggi
bersifat portable. Program yang dibuat menggunakan bahasa tingkat tinggi pada
suatu mesin computer bersistem operasi tertentu, hampir 100% bisa digunakan
pada ber bagai mesin dengan aneka sistem operasi. Kalaupun ada perbaikan
sifatnya kecil sekali.
Bahasa Tingkat Rendah
Merupakan bahasa
assembly atau bahasa mesin. Bahasa tingkat rendah dirancang agar setiap
instruksinya langsung dikerjakan oleh komputer, tanpa harusmelalui penerjemah
(translator). Contohnya adalah bahasa mesin.CPU mengambil instruksi dari
memori, langsung mengerti danlangsung mengerjakan operasinya. Bahasa tingkat
rendah bersifatprimitif, sangat sederhana, orientasinya lebih dekat ke mesin,dan
sulit dipahami manusia. Bahasa Assembly dimasukkan kedalam kelompok ini karena
alasan notasi yang dipakai dalam bahasaini lebih dekat ke mesin, meskipun untuk
melaksanakan instruksinya masih perlu penerjemahan ke dalam bahasa mesin.
Dalam memilih bahasa pemrograman harus
memperhatikan hal-hal yang dimiliki oleh bahasa tersebut, dan tentunya setiap
bahasa pasti mempunyai kekurangan dan kelebihan yang harus kita pertimbangan
dalam memilihnya. Pada bahasa C++ mempunyai kemampuan pada bahasa aras tinggi
maupun bahasa aras rendah. Bahasa C++ basisnya adalah pengembangan dari bahasa
C, selain itu C++ juga mendukung bahasa pemrograman berorientasi objek.
Sebenarnya bahasa ini dari awal dikembangkan untuk menulis program system
operasi sebuah komputer maupun compiler. Karena bahasa C++ mengembangkan C
sebelumnya maka kemampuannya C++ diperbaiki dan ditingkatkan daripada bahasa C.
Cukup sekian , terimakasih
Sumber :
http://staff.uny.ac.id/sites/default/files/penelitian/Drs.%20Totok%20Sukardiyono,%20M.T./Buku%20Bahasa%20Pemrograman%20Lengkap.pdf
Tidak ada komentar:
Posting Komentar