Masalah
Menurut Neapolitan (1996) masalah adalah pertanyaan atau tugas yang kita cari jawabannya.
Contoh masalah setumpuk kartu pasien di rumah sakit yang tersusun acak, bagaimanamengurutkan kartu kartu tersebut? Jawaban Barisan kartu terurut dari kecil ke besar.
Mendiskripsiskan masalah dapat menggunakan beberapa ukuran / parameter seperti : Pengurutan, Pencarian, Elemen terbesar.
Instansi masalah / instance of problem adalah setiap pemberian nilai untuk semua parameter.
Solusi adalah jawaban terhadap instansi masalah.
Instansi masalah:
S=[15,4,8,11,2,10,19] n=7
Solusi ?
Bagaimana kalau n = 1000 ?
Algoritma
Adalah urutan langkah-langkah untuk memecahkan masalah.
Pengertian dari beberapa literatur, algoritma adalah:
Contoh masalah dan algoritma pemenyelesaian:
Sejarah Algoritma
Algoritma berasal dari kata algorist bahasa Arab yang diambil dari nama penulis buku arab yang terkenal yaitu Abu Ja’far Muhammad Ibnu Musa al-Khuwarizmi yang berjudul Kitab al jabar wal-muqabala / buku pemugaran dan pengurangan.
Pada tahun 1950 kata algoritma pertama kali digunakan pada “algoritma Euclidean” Euclid merupakan matematikawan Yunani dalam bukunya yang berjudul Element menuliskan langkah-langkah untuk menemukan pembagi bersama terbesar (common greatest divisor) dari dua buah bilangan bulat m dan n.
Program dan Pemrograman
Secara garis besar komputer tersusun atas 4 komponen utama:
Belajar Memprogram dan Bahasa Pemrograman
Belajar memprogram yaitu : mempelajari metodologi pemecahan masalah, kemudian menuliskan algoritma pemecahan masalah dalam notasi tertentu.
Belajar bahasa pemrograman adalah belajar memakai suatu bahasa komputer, aturan tata bahasanya, instruksi-instruksinya, tata cara pengoperasian compilernya, dan memanfaatkan instruksi-instruksi tersebut untuk membuat program yang ditulis hanya dalam bahasa itu.
Contoh bahasa pemrograman : bahasa rakitan (asembly, Fortan, Cobol, Ada, PL/I, Algol, Pascal, C, C++, Basic, Prolog, LISP, PRG, bahasa-bahasa simulasi seperti CSMP, Simscript, GPSS, Dinamo, Java, C# dll.
Berdasarkan tujuan aplikasinya, bahasa pemrograman dapat digolongkan menjadi 2 kelompok:
Berdasarkan kedekatan, bahasa pemrograman apakah lebih condong ke bahasa mesin atau ke bahasa manusia maka bahasa pemrograman dikelompokkan :
Notasi Algoritmik
Beberapa notasi yang digunakan untuk menuliskan algoritma:
PROGRAM Euclidean
Diberikan dua buah bilang bulat tak-negatif m dan n (m ? n). Algoritma Euclidean mencari pembagi bersama terbesar, gcd, dari kedua bilangan tersebut, yaitu bilangan bulat positif terbesar yang habis membagi m dan n.
ALGORITMA :
m adalah jawabannya;
stop.
tetapi jika n ? 0,
lanjutkan ke langkah 2.
mulai |
Flowchart
baca m dan n |
n = 0 |
r = m MOD n m = n n = r |
tulis m |
selesai |
Ya |
Tidak |
PROGRAM Euclidean
Program untuk mencari gcd dari dua buah bilangan bulat tak-negatif m dan n (m ? n). Gcd dari m dan n adalah bilangan bulat positif terbesar yang habis membagi m dan n.
DEKLARASI :
m, n : integer { bilangan bulat yang akan dicari pbt-nya }
r : integer { sisa hasil bagi }
ALGORITMA :
read (m,n) { m ? n }
while n ? 0 do
r ? m MOD n { hitung sisa hasil pembagian }
m ? n
n ? r
endwhile
{ kondisi selesai pengulangan : n = 0, maka gcd(m,n) = m } write (m)
Pemrograman Prosedural
Pada pemrograman prosedural, program dibedakan antara bagian data dengan bagian instruksi.
Bagian instruksi terdiri dari runtunan (sequence) instruksi yang dilaksanakan satu per satu secara berurutan oleh sebuah pemroses.
Data yang disimpan di dalam memori dimanipulasi oleh intruksi secara beruntun.