DASAR-DASAR ALGORITMA
1. Pernyataan dan Aksi
Pada dasarnya, algoritma merupakan deskripsi langkah-langkah pelaksanaan suatu proses. Setiap langkah penyelesaian disebut dengan pernyataan. Sebuah pernyataan menggambarkan aksi (action) algoritmik yang dapat dieksekusi. Efek dari pengerjaan suatu aksi dapat dilihat dengan membandingkan keadaan awal saat aksi belum dijalankan dan keadaan akhir setelah aksi dijalankan.
2. Struktur Dasar Algoritma
Sebuah algoritma dapat dibangun dari tiga buah struktur dasar, yaitu :
a. Runtungan (Sequence)
b. Pemilihan (Selection)
c. Pengulangan (Repetition)
2.1 Runtunan (Sequence)
Sebuah runtunan terdiri dari satu atau lebih pernyataan. Setiap pernyataan akan dieksekusi secara berurutan sesuai dengan urutan penulisannya, yakni sebuah instruksi (pernyataan) akan dijalankan setelah instruksi sebelumnya selesai dijalankan. Sebagai contoh, runtunan dapat ditemui pada algoritma Tukar_isi_bejana berikut ini.
Langkah 1
Tuangkan isi bejana A ke dalam bejana C
¯
Langkah 2
Tuangkan isi bejana B ke dalam bejana A
¯
Langkah 3
Tuangkan isi bejana C ke dalam bejana B
2.2 Pemilihan (Sequence)
Adakalanya sebuah aksi dilakukan setelah kondisi tertentu terpenuhi. Misalnya, sebuah kendaraan berada di perempatan traffic light. Jika lampu traffic light berwarna merah, maka kendaraan tersebut harus berhenti. Keadaan ini dapat ditulis melalui pernyataan berikut :
Jika lampu traffic light berwarna merah, maka
Berhenti
Pernyataan di atas dapat diubah dalam bentuk pernyataan pemilihan (selection statement) atau disebut juga pernyataan kondisional sebagai berikut :
if kondisi then
aksi
Untuk contoh di atas, maka :
if lampu traffic light berwarna merah then
berhenti
Struktur pemilihan if-then hanya memberikan satu pilihan aksi bila kondisi (persyaratan) terpenuhi. Bentuk pemilihan lain yang sering digunakan adalah pemilihan satu dari dua buah aksi sesuai dengan kondisinya. Bentuk strukturnya adalah :
if kondisi then
aksi1
else
aksi2
Sebagai contoh, akan ditentukan bilangan terbesar diantara dua buah bilangan bulat x dan y. Maka, bentuk pemilihannya adalah :
if x > y then
tulis x sebagai bilangan terbesar
else
tulis y sebagai bilangan terbesar
Jika pilihan aksi yang dilakukan lebih dari dua, maka digunakan struktur pemilihan bersarang (nested if). Contohnya :
if lampu traffic light berwarna merah then
berhenti
else
if lampu traffic light berwarna kuning then
jalan hati-hati
else
jalan terus
Contoh berikutnya dari pemilihan bersarang adalah menentukan bilangan terbesar dari 3 (tiga) buah bilangan x, y, z, yaitu :
if x > y then
if x > z then
tulis x sebagai bilangan terbesar
else
tulis z sebagai bilangan terbesar
else
if y > z then
tulis y sebagai bilangan terbesar
else
tulis z sebagai bilangan terbesar
2.3 Pengulangan (Repetition)
Jika pada suatu saat kita harus membuat teks yang berulang (dilakukan lebih dari 1 kali) dalam sebuah algoritma, maka dapat digunakan struktur pengulangan (repetition). Misalnya, akan dibuat teks “Teknik Informatika” sebanyak 10 kali. Maka algoritmanya dapat dibuat dengan menggunakan bentuk struktur pengulangan yaitu for-do sebagai berikut :
for i dari 1 sampai dengan 10 do
tulis Teknik Informatika
end for
i merupakan pencacah pengulangan yang akan mencacah pengulangan dari 1 sampai dengan 10. Komputer akan melakukan pengulangan sebanyak pencacahan.
Secara umum, struktur pengulangan tersebut dapat dibentuk sebagai berikut :
for pencacah pengulangan dari a sampai b do
aksi
end for
artinya, aksi dilakukan sebanyak hitungan pencacah pengulangan yaitu dari a sampai b sebanyak b – a + 1 kali.
Struktur pengulangan yang kedua adalah repeat-until. Repeat artinya “ulangi”, sedangkan until artinya “sampai” atau “hingga”. Bentuk umumnya adalah sebagai berikut :
repeat
aksi
until kondisi
artinya, aksi akan diulang hingga atau sampai kondisi (persyaratan) terpenuhi. Sebagai contoh, dari sejumlah data mahasiswa yang mengambil mata kuliah Algoritma Pemrograman I, akan dilakukan perubahan data alamat mahasiswa dengan NIM 006. Maka, bila ditelusuri algoritma yang mungkin adalah sebagai berikut :
lihat data mahasiswa pada posisi pertama
if data mahasiswa pertama memiliki NIM 006 then
ubah data alamatnya
else
lihat data mahasiswa pada posisi kedua
if data mahasiswa kedua memiliki NIM 006 then
ubah data alamatnya
else
... dan seterusnya
Dari algoritma di atas, terlihat bahwa pengecekan (penyeleksian) apakah data mahasiswa pada posisi tertentu memiliki NIM 006 dilakukan secara terus menerus. Algoritma tidak memiliki kondisi kapan harus menghentikan proses pengecekan tersebut. Hal ini tentu saja tidak benar, mengingat sebuah algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas. Untuk kondisi seperti ini, maka dapat digunakan struktur pengulangan repeat-until. Bentuk algoritmanya adalah :
lihat data mahasiswa pada posisi pertama
repeat
if data mahasiswa memiliki NIM 006 then
ubah data alamatnya
else
lihat data mahasiswa pada posisi berikutnya
until data mahasiswa dengan NIM 006 telah ditemukan atau seluruh data mahasiswa telah diperiksa
Struktur pengulangan yang ketiga adalah while-do. While artinya “selama”, sedangkan do artinya “lakukan/kerjakan”. Bentuk umumnya adalah sebagai berikut :
while kondisi do
aksi
end while
artinya, selama kondisi (persyaratan) pengulangan masih terpenuhi (benar), maka aksi akan dilakukan. Perbedaannya dengan repeat-until, jika pada repeat-until kondisi pengulangan akan dievaluasi (dicek) setelah aksi dikerjakan, sedangkan pada while-do kondisi pengulangan akan dicek sebelum aksi dikerjakan (di bagian awal pengulangan). Bentuk algoritma dengan menggunakan while-do adalah sebagai berikut.
lihat data mahasiswa pada posisi pertama
while data mahasiswa dengan NIM 006 belum ditemukan dan data mahasiswa terakhir belum terlampaui do
if data mahasiswa memiliki NIM 006 then
ubah data alamatnya
else
lihat data mahasiswa pada posisi berikutnya
end if
end while
3. Strategi Perancangan Puncak-Turun (Top-Down)
Tahap - tahap penyusunan sebuah algoritma seringkali dimulai dari langkah yang global (umum) terlebih dahulu. Langkah global ini kemudian diuraikan lagi hingga langkah yang lebih rinci. Perancangan algoritma seperti ini dinamakan perancangan puncak-turun (top-down). Cara ini bermanfaat untuk membuat algoritma dari permasalahan yang rumit atau kompleks. Sebagai contoh, terdapat sejumlah data (dimisalkan dengan N) dalam sebuah tabel yang akan diurutkan. Setiap data di dalam tabel disebut dengan elemen tabel. Pengurutan data akan dimulai dengan algoritma secara global (umum), yaitu sebagai berikut :
1. Cari nilai terbesar diantara N buah data
2. Tempatkan nilai terbesar tersebut pada posisi yang tepat
3. ulangi dari langkah 1 untuk N-1 buah data yang lain
Pernyataan Cari nilai terbesar diantara N buah data masih terlalu global (umum). Algoritma tersebut tidak menyatakan bagaimana proses pencarian dilakukan. Karena itu, algoritma harus diuraikan lagi ke dalam langkah-langkah yang lebih rinci hingga pengurutan data dapat dilakukan. Untuk itu, langkah 1 akan diuraikan lebih rinci menjadi :
1.1 Asumsikan elemen pertama adalah nilai terbesar sementara (maks)
1.2 while belum mencapai elemen ke-N do
tinjau elemen berikutnya
if elemen ini lebih besar dari maks then
ganti nilai maks dengan elemen ini
end if
end while
Pernyataan Tempatkan nilai terbesar tersebut pada posisi yang tepat juga akan diuraikan lebih lanjut seperti berikut ini.
2.2 Tempatkan elemen ke-N ke dalam C
2.3 Tempatkan maks ke posisi elemen ke-N
2.4 Tempatkan elemen di dalam C ke posisi maks yang lama
Begitu pula dengan pernyataan ulangi dari langkah 1 untuk N-1 buah data yang lain (langkah 3) akan diuraikan lagi menjadi langkah-langkah berikut.
3.1 Kurangi N dengan 1
3.2 Ulangi dari langkah 1.1
Secara keseluruhan algoritma pengurutan data di atas adalah :
1.1 Asumsikan elemen pertama adalah nilai terbesar sementara (maks)
1.2 while belum mencapai elemen ke-N do
tinjau elemen berikutnya
if elemen ini lebih besar dari maks then
ganti nilai maks dengan elemen ini
end if
end while
2.1 Tempatkan elemen ke-N ke dalam C
2.2 Tempatkan maks ke posisi elemen ke-N
2.3 Tempatkan elemen di dalam C ke posisi maks yang lama
3.1 Kurangi N dengan 1
3.2 Ulangi dari langkah 1.1
4. Latihan-latihan
Berikut ini diberikan beberapa contoh soal latihan dan pembahasannya :
1. Buatlah algoritma (dalam notasi kalimat deskriptif) untuk memperoleh informasi nomor telepon berdasarkan data alamat (berupa nama jalan dan nomornya) pada nomor penerangan lokal (108) PT. Telkom. Algoritma harus menjelaskan proses jika :
a. Nomor 108 sibuk
b. Alamat yang diberikan penelpon belum mempunyai sambungan telepon
2. Buatlah algoritma (dalam notasi kalimat deskriptif) untuk mengubah data alamat dan nomor telepon mahasiswa berdasarkan NIM.
3. Algoritma berikut membagikan sekantung permen secara adil kepada 3 orang anak dengan cara memberikan satu permen pada tiap anak secara berulang-ulang
Repeat
Berikan satu permen kepada anak pertama
Berikan satu permen kepada anak kedua
Berikan satu permen kepada anak ketiga
Until kantung permen kosong
Pada keadaan bagaimana algoritma tersebut gagal?
Pembahasan untuk soal-soal latihan di atas adalah :
1. Algoritma Mencari_nomor_telepon_ke_108
a. Hubungi nomor 108
b. Jika nomor 108 sibuk, maka algoritma berakhir. Jika tidak lanjut ke langkah c
c. Masukkan alamat yang dicari nomor teleponnya
d. Lihat data pertama di tabel pelanggan
e. While alamat yang dicari belum ditemukan dan data terakhir belum terlampaui do
If alamat ini sama dengan alamat yang dicari Then
Lihat data nomor teleponnya
If data nomor telepon tidak kosong Then
Berikan data nomor teleponnya
Else
Berikan informasi bahwa telepon belum terpasang
End if
Else
Lihat data di posisi berikutnya
End if
End while
f. If alamat yang dicari belum ditemukan Then
Berikan informasi bahwa alamat yang dicari tidak ditemukan
End if
2. ALgoritma Mengubah_alamat_dan_telepon_berd_NIM
a. Baca data NIM yang akan diubah data alamat dan nomor teleponnya
b. Lihat data pertama pada tabel mahasiswa
c. While data NIM yang dicari belum ditemukan dan data terakhir belum terlampaui do
If NIM ini sama dengan NIM yang dicari Then
Baca data alamat dan nomor telepon baru
Ubah data alamat dan nomor teleponnya
Else
Lihat data di posisi berikutnya
End if
End while
d. If data NIM yang dicari belum ditemukan Then
Berikan informasi bahwa data NIM tidak ditemukan
End if
- Algoritma tersebut akan gagal ketika saat akan memberikan permen pada seseorang anak (anak pertama, kedua, atau ketiga), ternyata kantung permen telah kosong. Hal ini menyebabkan pemroses tidak dapat mengeksekusi langkah tersebut dan dengan demikian dapat dinyatakan algoritma tersebut gagal.
No comments:
Post a Comment