Minggu, 15 Januari 2017

BAB I PENGANTAR LOGIKA DAN ALGORITMA


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