Sunday, March 8, 2015

DASAR-DASAR ALGORITMA

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

  1. 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

Kebahagiaan sejati bukanlah pada saat kita berhasil meraih apa yg kita perjuangkan, melainkan bagaimana kesuksesan kita itu memberi arti atau membahagiakan orang lain.