Dasar Teori
a.
Dasar teori tentang algoritma dan pemograman
Dalam Mempelajari
Teori Algoritma dan Pemrograman dalam matakuliah Algoritma dan Pemrograman,
maka perlulah mahasiswa terlebih dahulu mengenal akan definisi-definisi
masing-masing dari kata ‘Algoritma’ serta ‘Pemrograman’.
Beberapa definisi Algoritma adalah
seperti berikut ini :
§ Pola
pikir yang terstruktur yang berisi tahap-tahap penyelesaian masalah.
§ Urutan
logis pengambilan keputusan untuk pemecahan masalah.
§ Urutan
langkah berhingga untuk memecahkan masalah logika dan matematika
Sedangkan definisi dari Pemrograman yaitu
Proses mengimplementasikan urutan langkah untuk menyelesaikan suatu masalah
dengan menggunakan suatu bahasa pemrograman.
Adapun ilustrasi proses pemrograman,
terlihat dalam gambar 1.1. berikut ini :
Gambar
1.1. Diagram alir Proses Pemrograman
Algoritma
Dalam matematika dan komputasi, algoritma atau algoritme [1] merupakan kumpulan
perintah untuk menyelesaikan suatu masalah. Perintah-perintah ini dapat
diterjemahkan secara bertahap dari awal hingga akhir. Masalah tersebut dapat
berupa apa saja, dengan catatan untuk setiap masalah, ada kriteria kondisi awal
yang harus dipenuhi sebelum menjalankan algoritma. Algoritma akan dapat selalu
berakhir untuk semua kondisi awal yang memenuhi kriteria, dalam hal ini berbeda
dengan heuristik. Algoritma sering
mempunyai langkah pengulangan (iterasi) atau memerlukan
keputusan (logika Boolean dan perbandingan) sampai tugasnya
selesai.
Desain
dan analisis algoritma adalah suatu
cabang khusus dalam ilmu
komputer yang mempelajari
karakteristik dan performa dari suatu algoritma dalam menyelesaikan masalah,
terlepas dari implementasi algoritma tersebut. Dalam cabang disiplin ini
algoritma dipelajari secara abstrak, terlepas dari sistem
komputer atau bahasa
pemrograman yang digunakan. Algoritma yang berbeda dapat diterapkan pada suatu
masalah dengan kriteria yang sama.
Kompleksitas dari suatu algoritma merupakan ukuran seberapa banyak
komputasi yang dibutuhkan algoritma tersebut untuk menyelesaikan masalah.
Secara informal, algoritma yang dapat menyelesaikan suatu permasalahan dalam
waktu yang singkat memiliki kompleksitas yang rendah, sementara algoritma yang
membutuhkan waktu lama untuk menyelesaikan masalahnya mempunyai kompleksitas
yang tinggi.
b.
Karateristik algoritma
Karakteristik Algoritma
1. Algoritma
harus berhenti setelah mengerjakan sejumlah langkah terbatas. Sebagai contoh,
dalam algoritma Euclidean, pada langkah 1, jika n = 0, algoritma berhenti, jika
n tidak = 0 maka nilai n selalu berkurang sebagai akibat dari langkah 2 dan 3,
dan pada akhirnya nilai n = 0. Program yang tidak pernah berhenti mengindikasikan
bahwa program tersebut berisi algoritma yang salah.
2. Setiap
langkah harus di defenisikan dengan tepat dan tidak berarti dua (ambiguous).
Pembaca harus mengerti apa yang di maksud dengan “m” dan “n” adalah bilangan
bulat tak negatif (-). Contoh lainnya pernyataan ” bagilah p dengan beberapa
sejumlah bilangan bulat positif” dapat bermakna ganda. Berapakah yang di maksud
dengan “berapa” ? Algoritma menjadi jelas jika langkah tersebut di tulis
“bagilah p dengan 10 buah bilangan bulat positif”
3. Algoritma
memiliki nol atau lebih masukan (input). Masukan ialah besaran yang diberikan
kepada algoritma untuk di proses. Algoritma Euclidean mempunyai dua buah
masukan, yaitu m dan n.
4. Algoritma
mempunya nol atau lebih keluaran (output). Keluaran dapat berupa pesan atau
besaran yang memiliki hubungan dengan masukan. Algoritma Euclidean mempunyai 1
keluaran, yaitu m pada langkah 1, yang merupakan pembagi bersama terbesar dari
kedua bilangan.
5. Algoritma
harus sangkil (effective). Setiap langkah harus sederhana sehingga dapat di
kerjakan dalam sejumlah waktu yang masuk akal.
c.
Flowchart
Pengertian
Flowchart dan Contoh Simbolnya
Pengertian dan Definisi Flowchart
Flowchart
atau Bagan alir adalah bagan (chart) yang
menunjukkan alir (flow) di dalam program atau prosedur sistem
secara logika. Bagan alir (flowchart) digunakan terutama untuk alat bantu
komunikasi dan untuk dokumentasi.
Jenis jenis Flowchart
Ada
beberapa jenis flowchart diantaranya:
- Bagan
alir sistem (systems flowchart).
- Bagan
alir dokumen (document flowchart).
- Bagan
alir skematik (schematic flowchart).
- Bagan
alir program (program flowchart).
- Bagan
alir proses (process flowchart).
System Flowchart
System
flowchart dapat didefinisikan sebagai bagan yang menunjukkan arus pekerjaan
secara keseluruhan dari sistem. Bagan ini menjelaskan urut-urutan dari
prosedur-prosedur yang ada di dalam sistem. Bagan alir sistem menunjukkan apa
yang dikerjakan di sistem.
Document Flowchart
Bagan
alir dokumen (document flowchart) atau disebut juga bagan
alir formulir (form flowchart) atau paperwork
flowchart merupakan bagan alir yang menunjukkan arus dari laporan dan formulir
termasuk tembusan-tembusannya.
Schematic Flowchart
Bagan
alir skematik (schematic flowchart) merupakan bagan alir yang mirip
dengan bagan alir sistem, yaitu untuk menggambarkan prosedur di dalam sistem.
Perbedaannya adalah, bagan alir skematik selain menggunakan simbol-simbol bagan
alir sistem, juga menggunakan gambar-gambar komputer dan peralatan lainnya yang
digunakan. Maksud penggunaan gambar-gambar ini adalah untuk memudahkan
komunikasi kepada orang yang kurang paham dengan simbol-simbol bagan alir.
Penggunaan gambar-gambar ini memudahkan untuk dipahami, tetapi
sulit dan lama menggambarnya.
Program Flowchart
Bagan alir
program (program flowchart) merupakan bagan yang menjelaskan
secara rinci langkah-langkah dari proses program. Bagan alir program dibuat
dari derivikasi bagan alir sistem.
Bagan alir program dapat terdiri dari dua macam, yaitu bagan alir logika program (program logic flowchart) dan bagan alir program komputer terinci (detailed computer program flowchart). Bagan alir logika program digunakan untuk menggambarkan tiap-tiap langkah di dalam program komputer secara logika. Bagan alat- logika program ini dipersiapkan oleh analis sistem. Gambar berikut menunjukkan bagan alir logika program. Bagan alir program komputer terinci (detailed computer program flow-chart) digunakan untuk menggambarkan instruksi-instruksi program komputer secara terinci. Bagan alir ini dipersiapkan oleh pemrogram.
Bagan alir program dapat terdiri dari dua macam, yaitu bagan alir logika program (program logic flowchart) dan bagan alir program komputer terinci (detailed computer program flowchart). Bagan alir logika program digunakan untuk menggambarkan tiap-tiap langkah di dalam program komputer secara logika. Bagan alat- logika program ini dipersiapkan oleh analis sistem. Gambar berikut menunjukkan bagan alir logika program. Bagan alir program komputer terinci (detailed computer program flow-chart) digunakan untuk menggambarkan instruksi-instruksi program komputer secara terinci. Bagan alir ini dipersiapkan oleh pemrogram.
Process Flowchart
Bagan alir
proses (process flowchart) merupakan bagan alir yang banyak
digunakan di teknik industri. Bagan alir ini juga berguna bagi analis sistem
untuk menggambarkan proses dalam suatu prosedur.
Simbol dan Notasi Flowchart
Dipakai sebagai
alat Bantu menggambarkan proses di dalam program. Dan dibagi
menjadi tiga kelompok :
♦ Flow Direction Symbols ♦
dipakai
untuk menggabungkan antara symbol yang satu dengan symbol lainnya
Symbol Off-line Connector ( Simbol untuk keluar/masuk prosedure atau proses dalam lembar/halaman yang lain)
Symbol Connector (Simbol untuk keluar/masuk prosedur atau proses dalam lembar/halaman yang sama)
Symbol Off-line Connector ( Simbol untuk keluar/masuk prosedure atau proses dalam lembar/halaman yang lain)
Symbol Connector (Simbol untuk keluar/masuk prosedur atau proses dalam lembar/halaman yang sama)
♦ Processing symbols ♦
Menunjukkan
jenis operasi pengolahan dalam suatu prosedur
Symbol Process (Simbol yang menunjukkan pengolahan yang dilakukan oleh komputer)
Symbol Manual Operation (Simbol yang menunjukkan pengolahan yang tidak dilakukan oleh komputer)
Symbol Process (Simbol yang menunjukkan pengolahan yang dilakukan oleh komputer)
Symbol Manual Operation (Simbol yang menunjukkan pengolahan yang tidak dilakukan oleh komputer)
Symbol Decision (Simbol untuk kondisi yang akan menghasilkan beberapa kemungkinan jawaban/aksi)
Symbol Predefined Process (Simbol untuk mempersiapkan penyimpanan yang akan digunakan sebagai tempat pengolahan di dalam storage)
Symbol Terminal (Simbol untuk permulaan atau akhir dari suatu program)-
Symbol Off-line Storage (Simbol yang menunjukkan bahwa data di dalam symbol ini akan disimpan)
Symbol Manual Input (Simbol untuk pemasukan data secara manual on-line keyboard)
Symbol Keying Operation (Simbol operasi dengan menggunakan mesin yang mempunyai keyboard)
♦ Input-output symbols ♦
menyatakan
jenis peralatan yang digunakan sebagai media input atau output.
Symbol input-output (Symbol yang menyatakan proses input dan output tanpa tergantung dengan jenis peralatannya)
Symbol magnetic-tape unit (Symbol yang menyatakan input berasal pita magnetic atau output disimpan ke pita magnetic)
Symbol punched card (Symbol yang menyatakan input berasal dari kartu atau output ditulis ke kartu)
Symbol disk and on-line storage (Symbol untuk menyatakan input berasal dari disk atau output disimpan ke disk)
Symbol display (Symbol yang menyatakan peralatan output yang digunakan yaitu layar, plotter, printer, dan sebagainya)
Symbol dokumen (symbol yang menyatakan input berasal dari dokumen dalam bentuk kertas atau output dicetak ke kertas)
Symbol input-output (Symbol yang menyatakan proses input dan output tanpa tergantung dengan jenis peralatannya)
Symbol magnetic-tape unit (Symbol yang menyatakan input berasal pita magnetic atau output disimpan ke pita magnetic)
Symbol punched card (Symbol yang menyatakan input berasal dari kartu atau output ditulis ke kartu)
Symbol disk and on-line storage (Symbol untuk menyatakan input berasal dari disk atau output disimpan ke disk)
Symbol display (Symbol yang menyatakan peralatan output yang digunakan yaitu layar, plotter, printer, dan sebagainya)
Symbol dokumen (symbol yang menyatakan input berasal dari dokumen dalam bentuk kertas atau output dicetak ke kertas)
Pedoman Membuat Flowchart
Bila seorang analis dan programmer akan membuat
flowchart, ada beberapa petunjuk yang harus diperhatikan, seperti:
1.
Flowchart digambarkan dari halaman
atas ke bawah dan dari kiri kekanan.
2.
Aktivitas yang digambarkan harus
didefinisikan secara hati-hati dan definisi ini harus dapat dimengerti oleh
pembacanya.
3.
Kapan aktivitas dimulai dan berakhir
harus ditentukan secara jelas.
4.
Setiap langkah dari aktivitas harus
diuraikan dengan menggunakan deskripsi kata kerja
5.
Setiap langkah dari aktivitas harus
berada pada urutan yang benar.
6.
Lingkup dan range dari aktifitas
yang sedang digambarkan harusditelusuri dengan hati-hati.
Percabangan-percabangan yang memotong aktivitas yang sedang digambarkan tidak
perlu digambarkan pada flowchart yang sama. Simbol konektor harus digunakan dan
percabangannya diletakan pada halaman yang terpisah atau hilangkan seluruhnya
bila percabangannya tidak berkaitan dengan sistem.
7.
Gunakan simbol-simbol flowchart
yang standar.
d.
Pseudecode
Kode-palsu atau
dalam bahasa inggris lebih dikenal sebagai pseudo-code merupakan deskripsi tingkat tinggi
informal dan ringkas atas algoritma pemrograman komputer yang
menggunakan konvensi struktural atas suatu bahasa pemrograman,
dan ditujukan untuk dibaca oleh manusia dan bukan oleh mesin. Kode palsu
biasanya tidak menggunakan elemen detail yang tidak diperlukan untuk kebutuhan
pemahaman manusia atas suatu algoritma, seperti deklarasi variabel, kode
ataupun subrutin untuk sistem yang bersifat spesifik. Bahasa pemrograman yang
digunakan lebih diperbanyak dengan deskripsi dalam bahasa natural atas sesuatu
hal yang bersifat detail, atau dengan menggunakan notasi matematis. Tujuan dari
penggunaan kode-palsu adalah untuk mempermudah manusia dalam pemahaman
dibandingkan menggunakan bahasa pemrograman yang umum digunakan, terlebih
aspeknya yang ringkas serta tidak bergantung pada suatu sistem tertentu
merupakan prinsip utama dalam suatu algoritma. Kode-palsu umumnya digunakan
dalam buku-buku ataupun publikasi karya ilmiah yang mendokumentasikan suatu
algortima, dan juga dalam perencanaan pengembangan program komputer, untuk membuat
sketsa atas struktur sebuah program sebelum program yang sesungguhnya ditulis.
Tidak ada satu pun
standar yang berlaku atas kode-palsu, sebuah program yang masih berupa
kode-palsu tidak dapat dijalankan. Kode-palsu menyerupai pula kerangka program
(skeleton programs), termasuk dummy
code, yang bisa dikompilasi tanpa kesalahan. Diagram alur dapat
pula dimasukkan sebagai alternatif berbasis grafis sebuah kode-palsu.
Contoh
<variable> = <expression>
if <condition>
do stuff
else
do other stuff
while <condition>
do stuff
for <variable> from <first value> to <last value> by <step>
do stuff with variable
function <function name>(<arguments>)
do stuff with arguments
return something
<function name>(<arguments>) // Function call
e.
Bahasa Pemrograman
Bahasa pemrograman, atau sering
diistilahkan juga dengan bahasa
komputer,
adalah teknik komando/instruksi standar untuk memerintah komputer. Bahasa
pemrograman ini merupakan suatu himpunan dari aturan sintaks dan semantik yang dipakai untuk
mendefinisikan program
komputer.
Bahasa ini memungkinkan seorang programmer dapat menentukan secara persis data
mana yang akan diolah oleh komputer, bagaimana data ini akan
disimpan/diteruskan, dan jenis langkah apa secara persis
yang akan diambil dalam berbagai situasi.
Menurut
tingkat kedekatannya dengan mesin komputer, bahasa pemrograman terdiri dari:
1.
Bahasa
Mesin, yaitu memberikan perintah kepada komputer dengan memakai kode bahasa
biner, contohnya 01100101100110
2.
Bahasa
Tingkat Rendah, atau dikenal dengan istilah bahasa rakitan (bah.Inggris Assembly), yaitu
memberikan perintah kepada komputer dengan memakai kode-kode singkat (kodemnemonic),
contohnya MOV, SUB, CMP, JMP, JGE, JL, LOOP, dsb.
3.
Bahasa
Tingkat Menengah, yaitu bahasa komputer yang memakai campuran instruksi dalam
kata-kata bahasa manusia (lihat contoh Bahasa Tingkat Tinggi di bawah) dan
instruksi yang bersifat simbolik, contohnya {, }, ?, <<, >>,
&&, ||, dsb.
4.
Bahasa
Tingkat Tinggi, yaitu bahasa komputer yang memakai instruksi berasal dari unsur
kata-kata bahasa manusia, contohnya begin, end, if, for, while, and, or, dsb.
Sebagian
besar bahasa pemrograman digolongkan sebagai Bahasa Tingkat Tinggi, hanya bahasa
C yang digolongkan sebagai Bahasa Tingkat Menengah dan Assembly yang merupakan
Bahasa Tingkat Rendah.
Bahasa
Pemrograman merupakan notasi yang dipergunakan untuk
mendeskripsikan proses komputasi dalam format yang dapat dibaca oleh
komputer dan manusia. Proses komputasi umumnya Bahasa pemrograman == Komputer
adalah mesin yang dapat melaksanakan seperangkat perintah dasar (instruction set).
Komputer hanya dapat diberi perintah yang terdiri dari perintah-perintah dasar
tersebut.
Perintah-perintah yang lebih rumit (misalnya mengurutkan suatu daftar sesuai abjad) harus diterjemahkan menjadi serangkaian perintah-perintah dasar yang dapat dimengerti komputer (perintah-perintah yang termasuk dalam instruction set komputer tersebut) yang pada akhirnya dapat mennyelesaikan tugas yang diinginkan, meskipun dijalankan dengan beberapa operasi dasar, bukan satu operasi rumit.
Perintah-perintah yang lebih rumit (misalnya mengurutkan suatu daftar sesuai abjad) harus diterjemahkan menjadi serangkaian perintah-perintah dasar yang dapat dimengerti komputer (perintah-perintah yang termasuk dalam instruction set komputer tersebut) yang pada akhirnya dapat mennyelesaikan tugas yang diinginkan, meskipun dijalankan dengan beberapa operasi dasar, bukan satu operasi rumit.
Jadi, jika kamu bisa
menguasai sebuah bahasa pemrograman, kamu dapat dikatakan seorang programmer.
Langkah-langkah
pemecahan masalah
1.
Misalkan
terdapat dua gelas, yakni gelas “A” dan “B”. Gelas A berisi air berwarna merah,
dan gelas B berisi air berwarna biru. Volume air di dalam kedua gelas sama.
Bagaimana mempertukarkan isi kedua gelas sehingga gelas A berisi air berwarna
biru, dan gelas B berisi air berwarna merah.
Kondisi
awal:
Gelas A Gelas
B
Kondisi
akhir:
Gelas A Gelas B
Penjelasanya
:
1.
Ambil
satu gelas kembali dan kita namai itu Gelas C.
2.
Tuangkan
air yang ada didalam gelas A kedalam gelas C.
3.
Otomatis
gelas A kosong.
4.
Kemudian
tuangkan air yang ada didalam gelas B ke gelas A.
5.
Lalu
air yang ada didalam gelas C tuangkan ke gelas B.
6.
Selesai.
2.
Misalkan
anda mempunyai dua ember, masing-masing ber-volume 5liter dan 7 liter. Anda
diminta untuk mendapatkan air (dari sebuah danau) sebanyak 6 liter dengan
menggunakan bantuan hanya kedua ember tersebut. Terserah bagaimana caranya,
anda boleh memindahkan air dari satu ember ke ember yang lain, membuang seluruh
isi ember, dan sebagainya. Catatan: ember
tidak memiliki ukuran.
Pertanyaan: Tuliskan langkah-langkah untuk
mendapatkan air 6 liter tersebut.
Penjelasanya
:
Pertama isi gelas 5 liter, kemudian tuangkan isinya ke
gelas 7 liter. Lau isi lagi gelas 5 liter.
Lalu tuangkann isi gelas 5 liter ke
gelas 7 liter.
Kemudian buang isi dari gelas 7
liter, lalu tuang kembali isi gelas 5 liter ke gelas 7 liter.
Kemudian isi gelas 5 liter dan
tuangkan kembali isinya ke gelas 7 liter.
Lalu buang kembali sisi gelas 7
liter, dan tuangkan isi gelas 5 liter ke gelas 7 liter.
Langkah terakhir isi gelas 5 liter,
kemudian tuangkan ke gelas 7 liter, dan selamat anda telah berhasil.
3.
(plastelina
game) Ada sebuah keluarga terdiri dari 5 orang, akan menyeberang
melewati jembatan pada malam hari dengan bantuan lampu yang hanya bisa bertahan
30 detik, dengan catatan:
a.
Setiap
orang mempunyai kecepatan yang berbeda-beda (1, 3, 6, 8, dan 12 detik).
b.
Apabila
yang melewati jembatan ada 2 orang, maka kecepatannya akan dihitung berdasarkan
yang paling lambat.
Pertanyaan:
tuliskan langkah-langkah secara detail untuk menyelesaikan game tersebut.
Penjelasanya
:
Pertama-tama , seberangkan si 1 detik dan 3 detik.
1 detik balik tuk jemput yang 6 detik.
1 detik dan 6 detik menyeberang, lalu si 1 detik balik lagi.
Kemudian seberangkan secara bersama-sama si 12 detik dengan
si 8 detik.
Dan si 3 detik balik jemput si 1 detik.
Terakhir, si 1 detik dan 3 detik menuju sisi lainya
bersama-sama.
4.
(Canibal
Game)
Bagaimana caranya untuk menyeberangkan tiga rahib dan 3 kanibal ke pulai di
seberang, dengan catatan:
a.
Perahu
maksimal dapat ditumpangi dua orang.
b.
Perahu
tidak dapat berjalan sendiri (tanpa penumpang)
c.
Jika
jumlah rahib lebih sedikit dari kanibal, maka rahib akan dimakan oleh kanibal.
Pertanyaan: tuliskan langkah-langkah secara
detail untuk menyeberangkan rahib dan kanibal ke pulai seberang.
Penjelasanya
:
Pertama-tama, seberangkan
2 setan ke sisi lainya ( 1 canibal tidak berani lawan 3 orang rahib)
taruh 1 canibal di sisi lainya , jemput canibal yang lain untuk ditaruh di
sisi satunya
2 canibal di sisi lainya, 1 canibal balik ke sisi satunya. sekarang 2 orang
rahib menuju sisi lainya
taruh 1 orang rahib di sisi lainya, lalu balikin 1 canibal ke sisi satunya .1
canibal, 1 orang rahib di sisi lainya. 1 canibal, 1 orang rahib dalam perahu. 1 canibal dan 1 orang rahib disisi satunya
orang rahib di sisi satunya, angkut ke sisi lainya bersama orang rahib yang
masih di perahu tadi.
sekarang posisinya 3 orang rahib di sisi lainya, 1 canibal di perahu, dan 2
canibal di sisi satunya.
Kita tinggal memindahkan kanibal sampai kesisi lainya dan “Selamat”.
5.
(wolf
game) seorang petani akan bepergian ke kota dengan membawa se-ekor
kambing , anjing, dan rumput yang ketiganya memiliki berat yang tidak jauh
berbeda. Ditengah jalan, petani harus menyeberangi sungai dengan menggunakan
perahu dan untuk melaluinya petani tersebut tidak diperbolehkan membawa
sekaligus bawaanya mengingat kapasitas kekuatan perahu tersebut, dan untuk
melaluinya petani harus membawa satu per-satu bawaannya, dengan catatan:
a.
Kambing
makan rumput
b.
Anjing
makan kambing
Pertanyaan: tuliskan langkah-langkah secara
detail untuk menyeberangkan semua barang bawaan petani tersebut, dan berapa
kali petani harus membawa satu-persatu bawaanya.
angkut
kambingnya dulu menuju sisi lainya, karena serigala tidak mungkin makan sayuran
angkut
sayurannya menuju sisi lainya, dan bawa kembali kambingnya ke sisi awal,
satunya
sekarang
angkut anjingya menuju ke sisi lainya
balik
lagi seorang diri, ambil kambingnya menuju sisi lainya
SelesaI
Referensi