Bab I
Pengantar Logika dan Algoritma
Pengertian
algoritma sangat lekat dengan kata logika, yaitu kemampuan seorang
manusia untuk berfikir
dengan akal tentang suatu permasalahan menghasilkan sebuah
kebenaran, dibuktikan
dan dapat diterima akal, logika seringkali dihubungkan dengan
kecerdasan, seseorang
yang mampu berlogika dengan baik sering orang menyebutnya sebagai
pribadi yang cerdas.
Dalam menyelesaikan suatu masalahpun logika mutlak diperlukan.
Logika identik dengan
masuk akal dan penalaran. Penalaran adalah salah satu bentuk
pemikiran. Pemikiran
adalah pengetahuan tak langsung yang didasarkan pada pernyataan
langsung pemikiran
mungkin benar dan mungkin juga tak benar.Definisi logika sangat
sederhana yaitu ilmu
yang memberikan prinsip-prinsip yang harus diikuti agar dapat berfikir
valid menurut aturan
yang berlaku. Pelajaran logika menimbulkan kesadaran untuk
menggunakan
prinsip-prinsip untuk berfikir secara sistematis.
Logika
berasal dari dari bahasa Yunani yaitu LOGOS yang berarti ilmu. Logika dapat
diartikan ilmu yang
mengajarkan cara berpikir untuk melakukan kegiatan dengan tujuan
tertentu. Algoritma
berasal dari nama seorang Ilmuwan Arab yang bernama Abu
JafarMuhammad Ibnu Musa
Al Khuwarizmi penulis buku berjudul Al Jabar Wal Muqabala.
Kata
Al Khuwarizmi dibaca orang barat menjadi Algorism yang kemudian lambat laun
menjadi Algorithm
diserap dalam bahasa Indonesia menjadi Algoritma.Algoritma dapat
diartikan urutan
penyelesaian masalah yang disusun secara sistematis menggunakan bahasa
yang logis untuk
memecahkan suatu permasalahan.
Meski demikian terdapat
beberapa definisi algoritma yang lain. Diantaranya menurut
Rinaldi Munir,
algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang
disusun secara
sistematis. Sedang menurut Kamus Besar Bahasa Indonesia, definisi algoritma
adalah urutan logis
pengambilan keputusan untuk pemecahan masalah. Menurut tim
Gunadarma:1988,
algoritma adalah suatu himpunan berhingga dari instruksi-instruksi yang
secara jelas memperinci
langkah-langkah proses pelaksanaan, dalam pemecahan suatu
masalah tertentu, atau
suatu kelas masalah tertentu, dengan dituntut pula bahwa himpunan
instruksi tersebut
dapat dilaksanakan secara mekanik. Dari pengertian diatas maka dapat
disimpulkan bahwa
Logika danAlgoritmaadalah ilmu yang mempelajari cara penyelesaian
suatu masalah berdasarkan
urutan langkah-langkah terbatas yang disusun secara sistematis
dan menggunakan bahasa
yang logis dengan tujuan tertentu.
Saat menggunakan logika, sebaiknya
jangan berfikir terlalu rumit tentang
sebuah masalah, karena
belum tentu masalah itu serumit yang kita pikir. Pikirkan hal yang
paling sederhana untuk
menyelesaikan masalah itu, sehingga tidak terjebak dalam pikiran
rumit yang dibuat
sendiri. Meski demikian jangan meremehkan masalah sekecil apapun, tapi
berfikir sederhana
untuk menghasilkan solusi yang efektif
Dalam
menentukan algoritma untuk menyelesaikan suatu permasalahan, mungkin kita
dihadapkan oleh
beberapa pilihan algoritma. Oleh karena itu kita harus memiliki rambu-
rambu dalam menentukan
pilihan algoritma. Pertimbangan dalam pemilihan algoritmaadalah,
pertama, algoritma
haruslah benar. Artinya algoritma akan memberikan keluaran susuai
seperti yang diharapkan
dari sejumlah masukan yang diberikan. Tidak
peduli sebagus apapun
algoritma, jika memberikan keluaran yang salah, maka sudah
pasti algoritma
tersebut bukanlah algoritma yang baik.
1.2.
Ciri-ciri, Sifat, Struktur Dasar dan Cara Penulisan Algoritma
Tidak
semua urutan langkah penyelesaian masalah yang logis dapat disebut sebagai
algoritma.
Menurut Donald E. Knuth, algoritma mempunyai lima ciri penting yang meliputi:
1.
Finiteness (keterbatasan), algoritma harus berakhir setelah mengerjakan
sejumlah langkah
proses.
2.
Definiteness (kepastian), setiap langkah harus didefinisikan secara tepat dan
tidak berarti
ganda.
3.
Input (masukan), algoritma memiliki nol atau lebih data masukan (input).
4.
Output (keluaran), algoritma mempunyai nol atau lebih hasil keluaran (output).
5.
Effectiveness (efektivitas), algoritma harus sangkil (efektif), langkah-langkah
algoritma
dikerjakan
dalam waktu yang wajar.
Sedang
sifat algoritma adalah:
1.
Tidak menggunakan simbol atau sintaks dari suatu bahasa pemrograman
tertentu.
2.
Tidak tergantung pada suatu bahasa pemrograman tertentu.
3.
Notasi-notasinya dapat digunakan untuk seluruh bahasa manapun.
4.
Algoritma dapat digunakan untuk merepresentasikan suatu urutan kejadian secara
logis
dan
dapat diterapkan di semua kejadian sehari-hari
Seperti
telah dijelaskan di sub bab sebelumnya bahwa penyusun atau struktur dasar
algoritma adalah langkah-langkah. Suatu Algoritma dapat
terdiri dari tiga struktur dasar,
yaitu runtunan,
pemilihan dan pengulangan. Ketiga jenis langkah tersebut membentuk
konstruksi suatu
algoritma. Berikut adalah penjelasan dari tiga struktur tersebut :
1.1.1
Runtunan (sequence)
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 dikerjakan. Urutan dari instruksi menentukan hasil akhir
dari
suatu
algoritma. Bila urutan penulisan berubah maka mungkin juga hasil akhirnya
berubah.
Sebagai
contoh perhatikan operasi aritmatika berikut ini, (4+3)*7=49, tetapi bila
urutan
aksinya
diubah maka hasil keluaran akan berbeda menjadi 4+(3*7) =25.
Contoh
lain dari runtunan aksi adalah algoritma penukaran dua bilangan bulat,yaitu:
1.
Deklarasikan A, B, dan C sebagai bilangan bulat
2.
Masukkan nilai A dan B
3.
Masukkan nilai A ke dalam C
4.
Masukkan nilai B ke dalam A
5.
Masukkan nilai C ke dalam B
1.1.2
Pemilihan (selection)
Kadangkala
terdapat suatu kejadian yang baru akan
dikerjakan jika suatu kondisi
tertentu telah
terpenuhi. Pemilihan yaitu instruksi yang dikerjakan dengan kondisi tertentu.
Kondisi adalah
persyaratan yang dapat bernilai benar atau salah. Satu atau beberapa instruksi
hanya dilaksanakan
apabila kondisi bernilai benar, sebaliknya apabila salah maka instruksi
tidak akan
dilaksanakan. Contoh kasus pemilihan adalah dalam penentuan bilangan genap
atau ganjil berikut
ini:
1. Masukkan bilangan
sebagai sebuah bilangan bulat
2. Bagi bilangan dengan
angka 2, simpan nilai sisa pembagian dalam variabel sisa
3. Jika nilai sisa sama
dengan 0 maka kerjakan langkah 4:
4. Tampilkan ”GENAP” ke
layar
5. Jika nilai sisa
tidak sama dengan 0 maka kerjakan langkah 6
6. Tampilkan ”GANJIL”
ke layar
7. Selesai.
1.1.3 Pengulangan
(repetition)
Salah satu kelebihan
komputer adalah kemampuannya untuk mengerjakan pekerjaan
yang sama berulang kali
tanpa mengenal lelah.Kita tidak perlu menulis instruksi yang sama
berulang kali, tetapi
cukup melakukan pengulangan dengan instruksi yang tersedia.
Pengulangan merupakan
kegiatan mengerjakan sebuah atau sejumlah aksi yang sama
sebanyak jumlah yang
ditentukan atau sesuai dengan kondisi yang diinginkan. Beberapa
statemen pengulangan di
bahasa pemrograman yaitu for…, while()..., do...while(),
repeat....until,
for...downto...do, for...to...do dan lain-lain. Sebagai contoh adalah
menampilkan huruf
tertentu sebanyak n kali ke layar sebagai berikut:
1. Deklarasikan
variabel huruf untuk menyimpan karakter yang akan ditampilkan.
2. Deklarasikan
variabel n untuk menyimpan banyaknya perulangan
3. Deklarasikan
variabel counter yang digunakan sebagai counter perulangan yang
sudah dilakukan.
4. Masukkan sebuah
karakter dan simpan dalam variabel huruf
5. Masukkan banyaknya
perulangan yang diinginkan dan simpan dalam variabel n
6. Set nilai counter
dengan 0
7. Tampilkan huruf ke
layar
8. Lakukan penambahan
counter dengan 1
7
9. Jika nilai counter
<n, kerjakan langkah 6
10. Jika nilai counter
= n selesai
1.3. Perbedaan Algoritma dan Program
Sebagaimana telah
diuraikan di sub bab sebelumnya bahwa algoritma adalah urutan
langkah-langkah
terbatas yang disusun secara sistematis dan menggunakan bahasa yang logis
dengan tujuan
menyelesaikan suatu masalah tertentu. Sementara program adalah kumpulan
instruksi berupa
pernyataan yang ditulis
dengan menggunakan bahasa
pemrograman yang
melibatkan pemilihan
struktur data. Beberapa pakar komputer menyatakan program dengan
formula Program =
Algoritma + Bahasa Pemrograman.
Bahasa pemrograman
dan algoritma berhubungan
sangat eratpada sebuah
program.
Algoritma yang baik
tanpa pemilihan struktur datayang tepat akan membuat program menjadi
kurang baik, demikian
jugasebaliknya. Jika dihubungkan dengan program, maka pembuatan
algoritma harus
memperhatikan kaidah:
1. Pembuatan
atau penulisan algoritma
tidak tergantung pada
bahasapemrograman
manapun, artinya
penulisan algoritma independen
daribahasa pemrograman dan
komputer
yang memprosesnya.
2. Notasi algoritma dapat diterjemahkan ke
dalam berbagai bahasapemrograman.
3. Apapun
bahasa pemrogramannya, output
yang akan dikeluarkan
samakarena
algoritmanya
sama.
Algoritma dibuat untuk
membantu kita dalam mengkonversikan suatu permasalahan
ke dalam
bahasa pemrograman.Algoritma merupakan
hasil pemikiran konseptual,
supaya
dapatdilaksanakan oleh
komputer, algoritma harus
diterjemahkan ke dalamnotasi
bahasa
pemrograman. Ada
beberapa hal yang harus diperhatikanpada penerjemahan tersebut, yaitu:
1. Pendeklarasian variabel
Variabel dibutuhkan
oleh program dalam
rangka menyimpan data
masukan, memproses
dan
mendapatkan hasil komputasi.
2. Pemilihan tipe data
Apabila
dalam proses pembuatan program ternyata membutuhkanpendeklarasian variabel
maka
diwajibkam memilih tipe data, karena setiap variabel pasti membutuhkan tipe
data
ketika
dideklarasikan.
3. Pemakaian atau pemilihan instruksi
Terdapat
beberapa macam instruksi dalam bahasa pemrograman (sequence, selection dan
repetition),
urutan langkah dalam algoritma dapat diterjemahkan menjadi salah satu atau
beberapa
instruksi tersebut.
4. Aturan sintaksis
Pada saat
menuliskan program kita
terikat dengan aturan
sintaksis dalam bahasa
pemrograman yang
akan digunakan. Setiap
bahasa pemrograman memiliki
aturan
penulisan
sintaks-nya sendiri.
5. Tampilan hasil
Pada
saat membuat algoritma kita tidak memikirkan tampilan hasil yang akan
disajikan.
Halteknis
semacam ini diperhatikan ketikamengkonversikannya menjadi program.
6. Cara pengoperasian compiler atau
interpreter.
Bahasa pemrograman
yang digunakan termasuk
dalam kelompok compiler
atau
interpreter.
Masing-masing memiliki cara pengoperasian yang bisa jadi berbeda.
Komputer adalah
mesin pemroses. Agar
dapat dikerjakan oleh
komputer, algoritma
harus ditulis dalam
notasi bahasa pemrograman berupa
instruksi yang dapat dipahami oleh
komputer sehingga
dinamakan program. Jadi program adalah perwujudan atau implementasi
teknis algoritma
yang ditulis dalam
bahasa pemrograman tertentu
sehingga dapat
dilaksanakan oleh
komputer. Program ditulis
dengan menggunakan salah
satu bahasa
pemrograman. Kegiatanmembuat program
disebut pemrograman (programming). Orang
yangmenulis program
disebut pemrogram (programmer). Tiap-tiap langkah didalam program
disebut pernyataan atau
instruksi. Jadi, program tersusunatas sederetan instruksi. Bila suatu
instruksi dilaksanakan,
maka operasi-operasiyang bersesuaian
dengan instruksi tersebut
dikerjakan komputer.
1.4. Mekanisme Pelaksanaan Algoritma oleh
Pemroses Notasi Penulisan
Algoritma
Komputer sebagai
mesin pemroses terdiri
dari empat komponen
utama, yaitu unit
input, unit output,
unit pemroses sentral (CPU: Central Processing Unit), dan memori seperti
digambarkan pada
Gambar 1.3. CPU
adalahperangkat
keraskomputer yang memahami
dan
melaksanakan perintah
dan data dari
perangkat lunak. Istilah
lain, pemroses/prosesor
(processor) sering
digunakan untuk menyebut
CPU. CPU berperan
sebagai otak komputer,
yang berfungsi
mengerjakan operasi-operasi aritmatika
seperti kalkulator, hanya
saja CPU
jauh lebih
kuat dan lebih
besar daya pemrosesannya. Fungsi
utama dari CPU
adalah
melakukan operasi
aritmatika dan logika terhadap data yang
diambil dari memori atau dari
informasi yang
dimasukkan melalui unit
input berupa beberapa
perangkat keras, seperti
papan tombol,
pemindai, tuas kontrol,
maupun tetikus. CPU
dikontrol menggunakan
sekumpulan instruksi
perangkat lunakkomputer. Perangkat
lunak tersebut dapat
dijalankan
oleh CPU dengan
membacanya dari media penyimpan, seperti cakram keras, disket, cakram
padat, maupun pita
perekam. Instruksi-instruksi tersebut kemudian disimpan terlebih dahulu
pada memori fisik, yang
mana setiap instruksi akan diberi alamat unik yang disebut alamat
memori. Selanjutnya,
CPU dapat mengakses data-data pada memori fisikdengan menentukan
alamat data yang
dikehendaki.Selama proses ini terjadi, sebuah unit dalam CPU yang disebut
dengan penghitung
program akan memantau
instruksi yang sukses
dijalankan supaya
instruksi tersebut
dapat dieksekusi dengan urutan yang benar dan sesuai sehingga didapatkan
hasil yang
dapat ditampilkan pada
unit output, misalnya
dengan menampilkannya di
layar
monitor .
Gambar 1.3.
Komponen-Komponen Utama Komputer
Seperti
yang telah diketahui bahwa komputer memerlukan instruksi berupa langkah-
langkah perintah
sehingga sebuah prosedur dapat dijalankan. Prosedur yang berisi langkah-
langkah penyelesaian
masalah inilah yang disebut dengan algoritma. Jadi, sebelum memasuki
tahap pemrograman
komputer dengan menggunakan
bahasa pemrograman,sebaiknya
mempelajari algoritma
yang merupakan pengantar kepada pemrograman komputer tersebut.
Dalam ilmu
komputer,algoritma dikenal dengan
langkah-langkah komputasi yang
terdiri dari
masukan dan keluaran.
Karena itu Algoritma
biasanya dijadikan dasar
atau
pengantar bahasa
pemrograman dalam studi
yang berkecimpung atau
berhubungan dengan
ilmu komputer, misalnya
Teknik Informatika.
1.5. Belajar Membuat Program dan Belajar Bahasa
Pemrograman
Belajar membuat
program berbeda dengan
belajar bahasa pemrograman.
Belajar
membuat program
adalah belajar tentang
strategi atau cara
menyelesaikan suatu masalah,
yang diungkapkan
dalam bentuk algoritma
yang mudah dibaca
dan dipahami yang
selanjutnya dituangkan
dalam bahasa pemrograman.
Belajar memprogrambersifat
pemahaman persoalan,
analisis dansintesis. Titik
berat belajar membuat
program adalah
desain program.
Sedangkan belajar bahasa pemrograman adalah belajar mengenai tata
cara
atau tata aturan
penulisan pernyataan atau statement untuk membuat program dalam bahasa
tertentu saja.
Tata aturan ini
biasa disebut juga
dengan sintaks bahasa.
Sintaks bahasa ini
meliputi cara
mendeklarasikan variabel, cara melakukan perulangan, percabangan dan lain-
lain. Tiap
bahasa pemrograman memiliki
aturan penulisan sendiri-sendiri walaupun
terkadang ada kemiripan
aturan antar bahasa. Titik berat belajar bahasa pemrograman adalah
coding program.
Sampai saat
ini terdapat puluhanbahasa
pemrogram, antara lain
bahasa Assembly,
Fortran, Cobol,
PL/I, Algol, Pascal,
C, C++, Basic,
Prolog, LISP, PRG,
CSMP, Simscript,
GPSS, Dinamo,
dan lain-lain. Berdasarkanterapannya, bahasa
pemrograman dapat
digolongkan atas dua
kelompokbesar:
1. Bahasa pemrograman bertujuan khusus. Yang
termasuk kelompokini adalah Cobol untuk
terapan bisnis
dan administrasi. Fortran
untuk terapan komputasi
ilmiah, bahasa
Assembly untuk
terapan pemrogramanmesin, Prolog
untuk terapan kecerdasan
buatan,
bahasa-bahasasimulasi,
dan sebagainya.
2. Bahasa
pemrograman bertujuan umum,
yang dapat digunakan
untukberbagai aplikasi.
Yang termasuk
kelompok ini adalah
bahasa Pascal, Basic,
Java, dan C.
Tentu saja
pembagian ini
tidak kaku. Bahasabertujuan khusus
tidak berarti tidak
bisa digunakan
untukaplikasi lain.
Cobol misalnya, dapat
juga digunakan untuk
terapanilmiah, hanya
saja kemampuannya
terbatas. Yang jelas,
bahasapemrograman yang berbeda
dikembangkan
untukbermacam-macam terapan yang berbeda pula.
Berdasarkan pada tingkat kerumitan
sebuah bahasa pemrograman,
apakah notasi
bahasa pemrograman
lebih mendekati bahasa
mesin atau ke
bahasa manusia, maka
bahasa
pemrograman
dikelompokkan atas dua macam, yaitu bahasa tingkat tinggi dan bahasa tingkat
rendah. Istilah
"bahasa pemrograman tingkat
tinggi" tidak serta
merta menjadikan bahasa
tersebut lebih baik
dibandingkan dengan bahasa pemrograman
tingkat rendah. Akan tetapi,
maksud dari
"tingkat tinggi" di sini merujuk kepada abstraksi yang lebih tinggi
dibandingkan
dengan bahasa tingkat
rendah terhadap bahasa mesin. Dibandingkan dengan harus berurusan
dengan register,
alamat memori dan
stack-stack panggilan, bahasa
pemrograman tingkat
tinggi akan
berurusan dengan variabel,
larik, dan ekspresi
aritmetika atau aljabar
boolean.
Selain itu,
tidak seperti bahasa
rakitan, bahasa tingkat
tinggi tidak memiliki
kode operasi
yang dapat
secara langsung menjadikan
bahasa tersebut menjadi
kode mesin. Fitur
lainnya
seperti fungsi-fungsi
penanganan string, fitur pemrograman berorientasi objek, input/output
terhadap berkas juga
terdapat di dalam jenis bahasa ini.
Secara umum,
bahasa tingkat tinggi
akan membuat pemrograman
komputer yang
kompleks menjadi
lebih sederhana, sementara
bahasa tingkat rendah
cenderung untuk
membuat kode
yang lebih efisien.
Dalam sebuah bahasa
tingkat tinggi, elemen-elemen
kompleks dapat dipecah
ke dalam beberapa elemen yang lebih sederhana, meski masih dapat
dianggap kompleks, di
mana bahasa tersebut menyediakan abstraksi. Karena alasan ini, kode-
kode yang
harus berjalan dengan
efisien dapat ditulis
dalam bahasa pemrograman
tingkat
rendah, sementara
bahasa tingkat tinggi digunakan untuk mempermudah pemrograman.
Bahasa tingkat
rendah dirancang agar
setiapinstruksinya langsung dikerjakan
oleh
komputer, tanpa
harusmelalui penerjemah (translator). Contohnya adalah bahasa mesin.CPU
mengambil instruksi
dari memori, langsung mengerti danlangsung mengerjakan operasinya.
Bahasa tingkat rendah
bersifatprimitif, sangat sederhana, orientasinya lebih dekat ke mesin,
dansulit dipahami
manusia. Bahasa Assembly
dimasukkan kedalam kelompok
ini karena
alasan notasi
yang dipakai dalam
bahasaini lebih dekat
ke mesin, meskipun
untuk
melaksanakaninstruksinya
masih perlu penerjemahan ke dalam bahasa mesin.
Bahasa tingkat tinggi
membuat pemrograman lebih
mudahdipahami, lebih
“manusiawi”, dan
berorientasi ke bahasa
manusia(bahasa Inggris). Hanya
saja, program
dalam bahasa
tingkat tinggitidak dapat
langsung dilaksanakan oleh
komputer. Ia
perluditerjemahkan terlebih
dahulu oleh sebuah
translator bahasa, yangdisebut
kompilator
atau compiler, ke dalam
bahasa mesin sebelumakhirnya dieksekusi oleh CPU. Contoh bahasa
tingkat tinggi
adalahPascal, PL/I, Ada, Cobol, Basic, Fortran, C, C++, dan sebagainya.
Dengan
bertambah rumitnya arsitektur mikroprosesor modern, kompilator-kompilator
bahasa pemrograman
tingkat tinggi dapat
membuat kode yang
lebih efisien dibandingkan
dengan para
programmer bahasa pemrograman
tingkat rendah yang
melakukannya secara
manual.Perlu dicatat
bahwa istilah "tingkat tinggi" dan "tingkat rendah" adalah
relatif. Pada
awalnya, bahasa
Assembly dianggap sebagai bahasa tingkat rendah, sementara COBOL, C,
dan lain-lainnya
dianggap sebagai bahasa
tingkat tinggi, mengingat
mereka mengizinkan
abstraksi terhadap
fungsi, variabel, dan evaluasi ekspresi. Akan tetapi, banyak programmer
saat ini
mungkin menganggap bahasa
C sebagai bahasa
pemrograman tingkat rendah,
mengingat bahasa
pemrograman tersebut mengizinkan akses memori secara langsung dengan
menggunakan alamatnya,
dan juga dapat menggunakan beberapa direktif bahasa Assembly.
Tidak ada komentar:
Posting Komentar