ALGORITMA DAN PEMROGRAMAN

Di zaman sekarang,manusia sudah bergantung kepada teknologi.Kebanyakan manusia beraktivitas dengan menggunakan teknologi,contoh bekerja dengan komputer desktop,laptop,telepon,kalkulator dll.Akan tetapi semua program yang berjalan tidak tercipta begitu saja melainkan ditulis melalui proses analisis dan perancangan yang teliti dan cermat.Sebuah program komputer pada dasarnya mengimplementasikan suatu algoritma.Dengan kata lain,algoritma adalah ide dibalik program komputer apapun.Tetapi apakah kita sebagai pengguna mengetahui apakah algoritma itu?apakah itu program ?Dalam postingan kali ini akan membahas pemahaman dasar tentang algoritma dan beberapa ilustrasi dalam kehidupan sehari-hari.Selamat membaca !

1.MASALAH

Contoh beberapa masalah di kehidupan sehari-hari :
  • Mengurutkan nilai-nilai siswa.Diberikan setumpuk lembar ujian siswa di suatu sekolah.Anda diminta untuk mengurutkan lembaran tersebut dari nilai terendah sampai nilai tertinggi,agar guru dapat membuat daftar peringkat dari nilai terendah sampai nilai tertinggi.Bagaimana cara mengurutkan lembar ujian tersebut ?Nah,jawaban dari masalah ini adalah lembar ujian siswa yang sudah terurut dari nilai terendah sampai tertinggi.
  • Menentukan orang terkaya.Diberikan daftar nama orang-orang kaya di seluruh dunia beserta jumlah kekayaannya.Tentukan orang yang memiliki kekayaan terbesar !Jawaban dari masalah ini adalah nama orang yang memiliki kekayaan paling besar.
Tentu masih banyak masalah yang muncul di berbagai bidang seperti seorang akuntan mempunyai masalah untuk menghitung keuangan perusahaan,seorang marketing mempunyai masalah dalam pencarian klien,dan lain sebagainya.Beberapa masalah yang muncul di dalam dunia nyata banyak memiliki kemiripan.Misalnya masalah mengurutkan nilai siswa sama dengan masalah mengurutkan tumpukan kartu pasien dari nomor terendah ataupun teratas.Begitu pula dengan masalah menentukan nama orang terkaya di dunia sama dengan mencari nilai siswa dengan nilai ujian nasional tertinggi.

Nah,oleh karena itu ,secara logika kita sering mendeskripsikan masalah yang muncul di dunia nyata dengan menggunakan beberapa ukuran(parameter),contohnya :

  • Masalah pengurutan.Diberikan sebuah daftar S yang terdiri dari n buah bilangan bulat.Bagaimana mengurutkan n buah nilai tersebut sehingga terurut secara menaik ?
  • Masalah pencarian.Tentukan apakah suatu nilai x terdapat di dalam sebuah daftar S  yang berisi n bilangan bulat !
Setiap masalah umumnya mengandun satu atau lebih parameter yang dinyatakan dalam masalah tersebut.Dalam masalah pengurutan di atas,S dan n merupakan parameter masalah.Parameter di atas belum diberikan nilai spesifik dan semua nilai parameter merupakan masukan (input) untuk masalah tersebut.Setiap pemberian nilai untuk parameter masalah dinamakan instansiasi masalah.Dan jawaban terhadap instansiasi disebut solusi.



Sebagai contoh,pemberian nilai parameter/instansiasi masalah untuk masalah pengurutan adalah :

S = [17,4,14,20,22,32]            (nilai yang diberikan ke parameter S)

n = 6                                        (jumlah bilangan S)

dan solusinya adalah barisan nilai terurut adalah S=[4,14,17,20,22,32].

Berikut adalah keadaan awal S dan keadaan akhir S sesudah diurutkan :
Sebelum Terurut : S = [17,4,14,20,22,32]
Sesudah Terurut : S=[4,14,17,20,22,32]


Nah,untuk masalah dengan instansiasi yang kecil kita dapat menemukan solusi dengan mudah dan cepat.Tetapi bagaimana jika instansiasi masalahnya berukuran besar?Misalnya dalam pengurutan,jika n=1000 sudah pasti tidak mudah jika mengurutkan data sebanyak itu.Oleh karena itu kita perlu menuliskan prosedur yang berisi langkah-langkah pengurutan sehingga prosedur tersebut dapat dijalankan oleh sebuah pemroses(komputer,manusia,robot,dsb) untuk menghasilkan solusi setiap instansiasi masalah pengurutan.Prosedur yang berisi langkah-langkah penyelesaian masalah disebut dengan algoritma.


Sekarang,mari kita lihat kembali pada masalah mengurutkan nilai-nilai siswa.Jika kita mempunyai sejumlah lembaran kertas berjumlah n=50 lembar,maka dengan cara yang biasa dilakukan oleh manusia untuk mengurutkan nilai adalah dengan mencari nilai terkecil lebih dahulu dan meletakkannya pada posisi pertama (atas).Selanjutnya mencari kartu dengan nilai terkecil berikutnya dan meletakkannya di bawah lembar pertama.Begitulah,kita mencari nilai terkecil ketiga,keempat dan seterusnya sampai hanya tersisa satu kartu(kalau sisa satu kartu maka tidak perlu diurutkan lagi,karena sudah pasti itu adalah nilai terbesar),setelah itu kita sudah memperoleh urutan lembar dari nilai terkecil ke nilai terbesar.Langkah-langkah pengurutan nilai dapat kita tuliskan sebagai berikut :
1.Cari kertas dengan nilai terkecil
2.Letakkan kertas tersebut pada posisi paling atas
3.Cari kertas dengan nomor terkecil berikutnya
4.Letakkan kertas tersebut di bawah kertas pertama
5.Cari kertas dengan nomor terkecil berikutnya
6.Letakkan kartu tersebut di bawah kertas kedua
...   ......................
xx  Cari kertas dengan nilai terkecil berikutnya
xxx Letakkan kertas tersebut di bawah kartu ke 48
(tersisa satu kertas lagi,tetapi tidak perlu diurutkan lagi)


Itulah langkah-langkah yang dapat kita tuliskan dalam masalah pengurutan 50 lembar kertas.Akan tetapi jika kita perhatikan langkah-langkah di atas,sebenarnya di dalam rangkaian langkah-langkah di atas terjadi pengulangan dua langkah penting,yaitu cari kertas dengan nilai terkecil,dan letakkan kertas tersebut pada posisi yang tepat.Kedua langkah ini diulang berkali-kali hingga tersisa 1 kertas saja(yang berarti jumlah pengulangan adalah sebanyak n = 50-1 = 49 kali).Oleh karena itu,secara garis besar,kita dapat mengurutkan n buah kertas nilai siswa sebagai berikut : 
1.Cari kertas dengan nomor terkecil diantara kertas yang tersisa
2.Tempatkan kertas tersebut pada posisi yang tepat
3.Ulangi kembali langkah 1 sebanyak n-1 kali

Langkah-langkah yang kita tuliskan di atas,itulah yang disebut dengan algoritma.Dapat dikatakan bahwa kita telah menspesifikasikan algoritma pengurutan.

Berikut merupakan contoh lain yang sering terjadi di kehidupan sehari-hari :


Contoh langkah-langkah pengerjaan di dalam kegiatan pergi sekolah :

1.Bangun pagi sesuai jam sekolah.
2.Mandi dan sarapan pagi.
3.Menyiapkan peralatan sekolah.
4.Pergi ke sekolah.

Contoh langkah-langkah pengerjaan dalam pembuatan akun facebook :

1.Buka website facebook
2.Klik tombol sign up.
3.Masukkan data mengenai diri anda.
4.Selesai.

Contoh langkah-langkah pengisian pulsa :

1.Tekan *888# lalu tekan tombol telepon.
2.Pilih pilihan untuk mengisi pulsa.
3.Masukkan 14 digit nomor pulsa anda.
4.Akhiri dengan tanda #.
5.Selesai.

Walau kita tidak menyebutkan langkah-langkah di atas sebagai algoritma,akan tetapi dalam konteks ini semua di atas adalah algoritma.


Sekarang ,anda sudah mulai mengerti bahwa sebuah algoritma mengerjakan sebuah proses.Dan secara komputerisasi,benda yang mengerjakan proses disebut pemroses/proccessor.Pemroses dapat berupa manusia,komputer,robot maupun alat elektronik lainnya.Setiap masalah yang terjadi,pasti mempunyai algoritma pemecahannya.Disinilah tugas kita sebagai pemecah masalah(problem solver) untuk mendeskripsikan langkah-langkah penyelesaiannya.


Berikut adalah contoh masalah sederhana dalam kehidupan sehari-hari dan pemecahannya :


1.)Misalkan ada dua buah gelas yang berisi air berwarna.Gelas A berwarna merah dan gelas B berisi air berwarna hitam.Volume air dikedua gelas sama.Bagaimana mempertukarkan isi kedua gelas tersebut sehingga nantinya gelas A berisi air berwarna hitam dan gelas B berisi air berwarna merah?


Penyelesaiannya :

Tentu kita tidak dapat semata-mata menukarkan air begitu saja,karena jika demikian pasti air tersebut tercampur menjadi warna yang tidak karuan.Oleh karena itu,kita membutuhkan sebuah gelas tambahan yaitu gelas C.Dengan menggunakan gelas C kita dapat mempertukarkan isi kedua gelas.Algoritmanya adalah sebagai berikut :

Algoritma mempertukarkan isi dua buah gelas A dan B :

1.Tuangkan air dari gelas A ke gelas C
2.Tuangkan air dari gelas B ke gelas A
3.Tuangkan air dari gelas C ke gelas B

2.)Masalah kedua yaitu misalkan anda mempunyai dua buah ember,masing-masing bervolume 5-liter dan 3-liter.Anda diminta mendapatkan air(dari sebuah sungai) sebanyak 4 liter dengan menggunakan bantuan hanya dengan kedua ember tersebut(tidak ada peralatan lain yang tersedia,hanya kedua ember itu saja yang ada),terserah bagaimana caranya,anda boleh memindahkan air dari satu ember ke ember lain,membuang seluruh air dari ember dan sebagainya.Bagaimanakah algoritmanya ?


Hasil gambar untuk ember 5 liter dan 3 liter

Penyelesaian :
Masalah ini mempunyai banyak kemungkinan penyelesaian.Salah satunya adalah sebagai berikut :
1.Isi penuh ember 3-liter dengan air {ember 3-liter berisi 3-liter air)
2.Tuangkan air dari ember 3-liter ke ember 5-liter{ember 5-liter berisi 3-liter air)
3.Isi penuh ember 3-liter dengan air {ember 3-liter berisi 3-liter air)
4.Tuangkan air dari ember 3-liter ke ember 5-liter hingga penuh{di dalam ember 3-liter tersisa 1 liter air}
5.Buang seluruh air dari ember 5-liter{ember 5-liter kosong}
6.Tuang isi air dari ember 3-liter ke ember 5-liter{ember 5-liter berisi 1 liter air}
7.Isi penuh ember 3-liter dengan air{{ember 3-liter berisi 3-liter air)}
8.Tuangkan air dari ember 3-liter ke ember 5-liter {ember 5-liter sekarang berisi 1+3 = 4-liter air}


3.)Masalah ketiga,misalkan seorang pemuda tiba di tepi sungai.Pemuda tersebut membawa seekor kambing,seekor serigala dan sekeranjang sayur.Mereka bermaksud untuk menyeberangi sungai.Pemuda itu menemukan sebuah perahu kecil yang hanya bisa memuat satu bawaan saja setiap kali menyeberang.Kondisinya dipersulit dengan kenyataan bahwa,serigala tidak dapat ditinggal berdua dengan si kambing karena serigala akan memangsa kambing,begitu pula dengan kambing tidak bisa ditinggal dengan keranjang sayur karena kambing akan memakan semua sayur tersebut.Bagaimanakah algoritma si pemuda menyeberangkan seluruh bawaan sehingga mereka dapat tiba ke seberang sungai tanpa kekurangan apapun.Tentu hanya pemuda yang bisa mendayung perahu.


Penyelesaian : 

Misalkan kita namakan sisi sungai dengan A dan sisi seberang adalah sisi B

Algoritmanya adalah :

1.Pemuda menyeberangkan kambing dari sisi A ke sisi B
2.Pemuda menyeberang sendiri dari sisi B ke sisi A
3.Pemuda menyeberangkan serigala dari sisi A ke sisi B
4.Pemuda menyeberangkan kambing dari sisi B ke sisi A
5.Pemuda menyeberangkan sayur dari sisi A ke sisi B
6.Pemuda menyeberang sendiri dari sisi B ke sisi A
7.Pemuda menyeberangkan kambing dari sisi A ke sisi B
8.Selesai.

Sekian informasi dari saya mengenai algoritma dan pemrograman,materi selanjutnya masih akan membahas mengenai algoritma dan pemrograman.Semoga ilmu yang dibagikan dapat bermanfaat ! Terima Kasih !


Comments