Konsep algoritma
Algoritma
adalah kumpulan instruksi/perintah yang dibuat secara jelas dan sistematis
berdasarkan urutan yang logis (logika) untuk penyelesaian suatu masalah. French,C.S.
(1984) menyatakan sejumlah konsep yang mempunyai relevansi dengan masalah
rancangan program yaitu kemampuan komputer, kesulitan dan ketepatan.
Penerapan
dari konsep tersebut biasanya digunakan dalam rancangan algoritma. alam merancang sebuah algoritma, Fletcher (1991) memberikan beberapa cara atau
metode yaitu kumpulan perintah, ekspresi,
tabel instruksi, program komputer, kode semu dan flow chart, sedangkan Knuth
(1973) menyarankan algoritma fundamental. Untuk keperluan matematika dan
program komputer metode yang sering digunakan yaitu :
1.
Diagram
Alir (Flow Chart)
2.
Kode
Semu (Pseudo Code)
3.
Algoritma
Fundamental
Knuth
(1973) menyatakan 5 komponen utama dalam algoritma yaitu finiteness, definiteness,
input, output dan effectiveness. Sehingga dalam merancang sebuah algoritma ada 3 (tiga) komponen yang harus
ada yaitu:
1. Komponen masukan (input)
Komponen ini biasanya terdiri
dari pemilihan variable, jenis variable, tipe variable, konstanta dan parameter
(dalam fungsi).
2.
Komponen
keluaran (output)
Komponen ini merupakan tujuan
dari perancangan algoritma dan program.
Permasalahan yang diselesaikan dalam algoritma dan program harus ditampilkan dalam komponen keluaran. Karakteristik keluaran yang baik adalah benar (menjawab) permasalahan dan tampilan yang ramah (Frendly).
Permasalahan yang diselesaikan dalam algoritma dan program harus ditampilkan dalam komponen keluaran. Karakteristik keluaran yang baik adalah benar (menjawab) permasalahan dan tampilan yang ramah (Frendly).
3.
Komponen
proses (processing)
Komponen ini merupakan bagian
utama dan terpenting dalam merancang sebuah algoritma. Dalam bagian ini
terdapat logika masalah, logika algoritma (sintaksis dan semantik), rumusan,
metode (rekursi, perbandingan, penggabungan, pengurangan dan lain-lain).
===========================================================================
Struktur algoritma
Pada dasarnya, sebuah algoritma
merupakan deskripsi pelaksanaan suatu proses. Algoritma itu sendiri disusun
oleh sederetan langkah instruksi yang logis. Tiap langkah instruksi tersebut
mengerjakan suatu tindakan (aksi). Bila suatu aksi dilaksanakan, maka sejumlah
operasi yang bersesuaian dengan aksi itu dikerjakan oleh pemroses. Efek dari
pengerjaan suatu aksi dapat diamati dengan membandingkan keadaan pada saat aksi
belum dimulai (t0), dan keadaan pada saat aksi selesai dikerjakan (t1).
t0
: keadaan sebelum aksi dikerjakan
t1
: keadaan setelah aksi dikerjakan
Contoh
algoritma menghidupkan laptop :
Aksi
: Tekan tombol power pada laptop.
t0
: Tombol power computer mati
t1
: Tombol power computer menyala.
Algoritma berisi langkah suatu masalah.
Langkah-langkah tersebut dapat berupa runtunan aksi, pemilihan aksi, dan
pengulangan aksi. Ketiga jenis langkah tersebut membentuk konstruksi suatu
algoritma. Jadi, sebuah algoritma dapat dibangun dari tiga buah struktur dasar,
yaitu:
- Runtunan (sequence)
- Pemilihan (selection)
- Pengulangan (repetition)
1.
Runtunan
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 dilaksanakan.
Urutan instruksi menetukan keadaan akhir algoritma. Bila urutan diubah, maka
hasil akhirnya mungkin juga bisa berubah. Perhatikan runtunan instruksi
berikut:
A1
: ambil sebuah gelas
A2
: isi piring dengan air
A3
: sajikan di atas meja makan
Algoritma diatas disusun oleh
runtunan yang terdiri atas 4 buah instruksi. Tiap instruksi dikerjakan secara
berurutan, maka hasil akhir adalah hasil diinginkan. Bila instruksi diubah,
maka hasil akhirnya pun juga berubah sehingga penyajian segelas air diatas meja
makan menjadi tidak benar. Karena itu, penting perlu memperhatikan urutan aksi
di dalam sebuah runtunan. Urutan aksi di dalam runtunan mencerminkan cara
berpikir si penyusun algoritma dalam menuliskan langkah-langkah pemecahan
masalah.
2.
Pemilihan
Adakalanya sebuah instruksi dikerjakan jika kondisi tertentu dipenuhi. Contoh
dalam algoritma pencarian data terkecil dilakukan dengan membanding-bandingkan
data. Mula-mula data pertama dianggap data terkecil sementara (min). Kemudian
membandingkan min dengan data ke-2, 3, ….. N. Selama proses perbandingan, bila
data lebih kecil dari min, maka date ke-j itu menjadi min yang baru. Langkah
terakhir ditulis dalam pernyataan berikut :
Jika
data ke-j lebih kecil dari min, maka
isikan data ke-j sebagai min yang baru
Pernyataan
diatas dapat ditulis dalam struktur umum
if
kondisi then
aksi
end if
Dalam bahasa indonesia, if berati
“jika” dan then artinya “maka”. Kondisi adalah persyaratan yang dapat
bernilai benar atau salah. Aksi hanya dilaksanakan apabila kondisi bernilai
benar. Sebaliknya apabila bernilai salah, maka aksi tidak dilaksanakan. Kata
yang digarisbawahi, if dan then,
merupakan kata kunci (keywords) untuk struktur pemilihan ini.
Struktur pemilihan if-then hanya
memberikan satu pilihan aksi bila kondisi (persyartan) dipenuhi (bernilai
benar), dan tidak memberi pilihan aksi lain bila kondisi bernilai salah.
Bentuk pemilihan yang lebih umum ialah pemilihan satu dari dua buah aksi bergantung pada nilai kondisinya.
Bentuk pemilihan yang lebih umum ialah pemilihan satu dari dua buah aksi bergantung pada nilai kondisinya.
Apabila pilihan aksi yang dilakukan
lebih dari dua buah, maka struktur pemilihannya menjadi lebih rumit, seperti
pada contoh berikut (pemilihan bersarang)
if
lampu pengatur lalu lintas berwarna merah then
anda harus berhenti
else
if lampu pengatur lalu lintas berwarna kuning then
anda boleh jalan tapi dengan hati-hati
else
anda dipersilahkan terus berjalan
end
if
Perhatikanlah bahwa penggunaan
indentasi (rongak kosong) membuat algoritma menjadi lebih mudah dibaca. Tanpa
indentasi, algoritma menjadi lebih sulit dibaca, misalnya algoritma ditulis
seperti dibawah ini
if
lampu pengatur lalu lintas berwarna merah then
anda
harus berhenti
Else
if lampu
pengatur lalu lintas berwarna kuning then
anda
boleh jalan tapi dengan hati-hati else
anda
dipersilahkan terus berjalan
Perancang algoritma sangat
dianjurkan membuat indentasi agar algoritma yang dibuat lebih mudah dibaca.
Contoh lain dari pemilihan bersarang
adalah menentukan bilangan terbesar dari tiga buah bilangan: x, y, dan z.
if x
> y then
if x > z then
tulis x sebagai bilangan terbesar
tulis x sebagai bilangan terbesar
else
if y > z then
tulis y sebagai bilangan terbesar
else
tulis z sebagai bilangan terbesar
end
if
Kelebihan struktur pemilihan
terletak pada kemampuannya yang memungkinkan pemroses mengikuti jalus aksi yang
berbeda berdasarkan kondisi yang ada. Tanpa struktur pemilihan, kita tidak
mungkin menulis algoritma untuk permasalahan praktis yang demikian kompleks.
3.
Pengulangan
Salah satu kelebihan komputer adalah kemampuannya untuk mengerjakan
pekerjaan yang sama berulang kali tanpa mengenal lelah. Sewaktu duduk di sekolah dasar, bila anda
pernah dihukum oleh guru untuk menuliskan sebuah kalimat sebanyak 100 kali,
misalnya dikarenakan anda nakal tidak mengerjakan PR. Misalkan kalimat yang
harus ditulis 100 kali tersebut adalah:
“Saya berjanji tidak akan nakal lagi”
Bila pekerjaan menulis kalimat ini
diserahkan kepada komputer, maka pemrogram mungkin menuliskannya sebagai
berikut:
Algoritma
menulis 100 kalimat
Deskripsi
:
1.
Saya berjanji tidak akan nakal lagi
2.
Saya berjanji tidak akan nakal lagi
3.
Saya berjanji tidak akan nakal lagi
4.
Saya berjanji tidak akan nakal lagi
Dst..
Tentu
saja algoritma untuk menulis 100 buah kalimat seperti diatas tidak elegan,
karena instruksi “Saya berjanji tidak akan nakal dan
malas lagi”harus dibuat di dalam teks algoritma sebanyak 100 kali. Untuk
mengatasi hal ini, maka anda dapat menggunakan struktur pengulangan for-do
sehingga algoritma menulis 100 buah kalimat dapat ditulis sebagai berikut:
Algoritma
menulis 100 kalimat
Menuliskan
kalimat " Saya berjanji tidak akan nakal dan malas lagi " Sebanyak 100
kali.
Deskripsi
:
for J
dari 1 sampai 100 do
t tulis kalimat " Saya berjanji tidak akan nakal lagi "
J adalah pencacah pengulangan yang
dari 1 sampai 500. Komputer akan melaksanakan aksi tulis kalimat tersebut
sebanyak 500 kali. Struktur pengulangan ini dapat ditulis secara umum sebagai
berikut:
for
pencacah pengulangan dari 1 sampai N do
aksi
end
for
Struktur pengulangan yang kedua
adalah REPEAT yang terdiri atas kata kunci repeat-until (repeat artinya
“ulangi” dan until artinya “sampai” atau “hingga”) yang mempunyai bentuk
umum sebagai berikut:
repeat
aksi
Until
kondisi
yang artinya adalah pengulangan aksi
dilakukan hingga kondisi (persyaratan) berhenti terpenuhi.
Struktur pengulangan yang ketiga
adalah WHILE dengan kata kunci while-do (while
artinya “selagi” atau “selama” dan do artinya “lakukan”) yang mempunyai bentuk
umum sebagai berikut:
while
kondisi do
aksi
yang artinya adalah selama kondisi
(persyaratan) pengulangan masih benar, maka aksi dikerjakan. Perbedaannya
dengan repeat-until, jika pada repeat-until kondisi pengulangan dievaluasi
diakhir, sedangkan pada while-do kondisi pengulangan dievaluasi di awal
perhitungan.
Meskipun struktur repeat-until dan
while-do mempunyai fungsi yang mirip sehingga pada beberapa kasus dapat saling
menggantikan, namun secara umum penggunaannya bergantung pada spesifikasi
masalah.
===========================================================================
algoritma menggunakan bahasa natural
Bahasa
Natural merupakan cara penyajian suatu algoritma yang paling sederhana dan
paling mudah. Mengapa? Mungkin karena Bahasa Natural adalah bahasa yang biasa
kita gunakan sehari – hari namun tetap sesuai dengan kaidah bahasa yang baku.
Ada beberapa hal yang perlu diperhatikan jika kita akan menyajikan suatu
algoritma sebuah program dengan bahasa natural, antara lain Start dan End yang
harus dituliskan secara explisit. Sepengalaman saya dalam menggunakan Bahasa
Natural, Start biasanya dituliskan sebagai ‘inisialisasi’ atau ‘Mulai’ dan
merupakan langkah pertama dalam algoritma, sedangkan End sendiri dituliskan
sebagai ‘selesai’ dan dituliskan pada akhir algoritma. Namun sebenarnya tidak
ada aturan baku dalam hal penamaan lain dari Start dan End itu sendiri, jadi
terserah namun tetap mengandung arti/maksud yang sama.
Salah
satu contoh sederhana adalah algoritma untuk menentukan sebuah bilangan adalah
ganjil atau genap . Jadi diberikan input sebuah bilangan
dari user, dan program akan secara otomatis menentukan dan memberikan output
berupa informasi genap atau ganjil. Coba perhatikan :
1. Inisialisasi
2. Input sebuah bilangan, masukkan ke dalam sebuah variabel, misalkan saja bil.
3. Apakah bil modulus 2 sama dengan nol?
– Jika ya, maka bilangan tersebut adalah bilangan genap.
– Jika tidak, maka sudah dapat dipastikan bahwa bilangan tersebut adalah bilangan ganjil.
4. Tampilkan jenis bilangan (genap, atau ganjil).
5. Apakah ingin mengulang proses?
– Jika ya, kembali ke langkah 2.
– Jika tidak, langsung ke langkah 5 (selesai).
5. Selesai.
|=| Lanjut ke algoritma 2 |=|
2. Input sebuah bilangan, masukkan ke dalam sebuah variabel, misalkan saja bil.
3. Apakah bil modulus 2 sama dengan nol?
– Jika ya, maka bilangan tersebut adalah bilangan genap.
– Jika tidak, maka sudah dapat dipastikan bahwa bilangan tersebut adalah bilangan ganjil.
4. Tampilkan jenis bilangan (genap, atau ganjil).
5. Apakah ingin mengulang proses?
– Jika ya, kembali ke langkah 2.
– Jika tidak, langsung ke langkah 5 (selesai).
5. Selesai.
|=| Lanjut ke algoritma 2 |=|
No comments:
Post a Comment