PENTING! untuk seorang calon programmer
Apakah Itu Algoritma?
Ditinjau dari asal usul katanya kata Algoritma sendiri mempunyai sejarah yang aneh. Orang hanya menemukan kata Algorism yang berarti proses menghitung dengan angka arab. Anda dikatakan Algorist jika anda menghitung menggunakan Angka Arab. Para ahli bahasa berusaha menemukan asal kata ini namun hasilnya kurang memuaskan. Akhirnya para ahli sejarah matematika menemukan asal kata tersebut yang berasal dari nama penulis buku arab yang terkenal yaitu Abu Ja’far Muhammad Ibnu Musa Al-Khuwarizmi. Al-Khuwarizmi dibaca orang barat menjadi Algorism. Al-Khuwarizmi menulis buku yang berjudul Kitab Al Jabar Wal-Muqabala yang artinya “Buku pemugaran dan pengurangan” (The book of restoration and reduction). Dari judul buku itu kita juga memperoleh akar kata “Aljabar” (Algebra). Perubahan kata dari Algorism menjadi Algorithm muncul karena kata Algorism sering dikelirukan dengan Arithmetic, sehingga akhiran –sm berubah menjadi
–thm. Karena perhitungan dengan angka Arab sudah menjadi hal yang biasa. Maka lambat laun kata Algorithm berangsur-angsur dipakai sebagai metode perhitungan (komputasi) secara umum, sehingga kehilangan makna kata aslinya. Dalam Bahasa Indonesia, kataAlgorithm diserap menjadi Algoritma.
Algoritma adalah urutan atau langkah-langkah penyelesaian suatu masalah yang disusun secara sistematis dan logis.
Kata Logis merupakan kata kunci dalam Algoritma. Langkah-langkah dalam Algoritma harus logis dan harus dapat ditentukan bernilai salah atau benar.
Melaksanakan Algoritma berarti mengerjakan langkah-langkah di dalam Algoritma tersebut. Pemroses mengerjakan proses sesuai dengan algoritma yang diberikan kepadanya. Juru masak membuat kue berdasarkan resep yang diberikan kepadanya, pianis memainkan lagu berdasarkan papan not balok. Karena itu suatu Algoritma harus dinyatakan dalam bentuk yang dapat dimengerti oleh pemroses. Jadi suatu pemroses harus :
- Mengerti setiap langkah dalam Algoritma
- Mengerjakan operasi yang bersesuaian dengan langkah tersebut.
Sampai saat
ini terdapat puluhan bahasa pemrogram. Yang dapat dibedakan berdasarkan tujuan
dan fungsinya. Diantaranya adalah :
Belajar
Memprogram
·
Belajar
memprogram ≠ belajar bahasa pemrograman
·
Belajar memprogram
: belajar tentang strategi pemecahan masalah, metodologi dan sistematika
pemecahan masalah kemudian menuliskannya dalam notasi yang disepakati bersama
·
Belajar
memprogram : bersifat pemahaman persoalan, analisis dan sintesis
·
Belajar
memprogram, titik berat : designer program
Belajar
Bahasa Pemrograman
·
Belajar
bahasa pemrograman : belajar memakai suatu bahasa pemrograman, aturan sintaks,
tatacara untuk memanfaatkan instruksi yang spesifik untuk setiap bahasa
·
Belajar
bahasa pemrograman , titik berat : coder
Produk yang
dihasilkan pemrogram :
·
program
dengan rancangan yang baik (metodologis, sistematis)
·
Dapat
dieksekusi oleh mesin
·
Berfungsi
dengan benar
·
Sanggup
melayani segala kemungkinan masukan
·
Disertai
dokumentasi
·
Belajar
memprogram, titik berat : designer program
Contoh
Analogi Algoritma pada kehidupan sehari-hari Aksi :
·
kejadian
yang terjadi pada selang waktu terbatas (dimulai saat T0 dan berakhir pada saat
T1)
·
Menghasilkan
efek netto yang terdefinisi dengan baik dan direncanakan
Contoh :
·
Ibu Tati
mengupas kentang untuk mempersiapkan makan malam..(luas ruang lingkupnya)
·
Karena ruang
lingkup luas, maka harus didefinisikan keadaan awal dan efek netto yang
direncanakan ( Initial State dan Final State)
·
Initial
State (keadaan awal) : T0 kentang sudah ada dikantong kentang, dan ditaruh di
rak dapur dimana ibu Tati akan mengupasnya
·
Final State
(keadaan akhir) : T1 kentang dalam keadaan terkupas di panci,siap untuk dimasak
dan kantong kertasnya harus dikembalikan ke rak lagi.
·
Kejadian :
urut-urutan dari beberapa aksi yang terjadi secara berurutan.
·
Efek
kumulatif dari semua aksi yang terjadi menjadi efek netto dari kejadian
·
Penggolongan
suatu kejadian menjadi aksi adalah relatif tergantung dari sudut pandang.
Contoh mengupas kentang dapat dijelaskan :
o
Ambil
kantong kentang dari rak
o
Ambil panci
dari almari
o
Kupas
kentang
o
Kembalikan
kantong kentang ke rak
·
Contoh lain
(jika tidak dipandang perlu untuk menjelaskan kantong kentang diambil dari rak
sebelum ambil panci) :
o
Ambil
kantong kentang dari rak dan ambil panci dari almari
o
Kupas
kentang
o
Kembalikan
kantong kentang ke rak
Jika esok
hari ibu Tati mengupas kentang lagi untuk makan malam juga, dan kita mengamati
hal-hal yang sama, apakah hal tsb bisa disebut sama? Ini tergantung jawabannya
bisa sama bisa tidak. Tidak karena ibu Tati tidak mungkin mengupas
kentang yang sama dengan
kemarin Sama karena kemiripan pola yang dilakukan Notasi Algoritma Independen Terhadap Bahasa Pemrograman DanMesin Komputer Notasi Algoritma dapat diterjemahkan ke dalam berbagai bahasa pemrograman. Analoginya sama dengan resep membuat kue. Sebuah resep dapat ditulis dalam bahasa apapun. Bahasa Jepang, Inggris, Perancis, Indonesia, dan lain sebagainya. Apapun bahasanya, kue yang dihasilkan tetap sama asalkan semua aturan pada resep diikuti. Mengapa demikian ? Karena setiap juru masak (sebagai pemroses) dapat melakukan operasi dasar yang sama, seperti mengocok telur, menimbang berat gula, dan lain sebagainya.
kemarin Sama karena kemiripan pola yang dilakukan Notasi Algoritma Independen Terhadap Bahasa Pemrograman DanMesin Komputer Notasi Algoritma dapat diterjemahkan ke dalam berbagai bahasa pemrograman. Analoginya sama dengan resep membuat kue. Sebuah resep dapat ditulis dalam bahasa apapun. Bahasa Jepang, Inggris, Perancis, Indonesia, dan lain sebagainya. Apapun bahasanya, kue yang dihasilkan tetap sama asalkan semua aturan pada resep diikuti. Mengapa demikian ? Karena setiap juru masak (sebagai pemroses) dapat melakukan operasi dasar yang sama, seperti mengocok telur, menimbang berat gula, dan lain sebagainya.
Demikian juga halnya dengan komputer. Meskipun setiap komputer berbeda teknologinya, tetapi secara umum semua komputer dapat melakukan operasi-operasi dasar dalam pemrograman seperti operasi pembacaan data, operasi perbandingan, operasi aritmatika, dan sebagainya. Perkembangan teknologi komputer tidak mengubah operasi-operasi dasar itu, yang berubah hanyalah kecepatan, biaya, atau tingkat ketelitian. Pada sisi lain setiap program alam bahasa tingkat tinggi selalu diterjemahkan kedalam bahasa mesin sebelum akhirnya dikerjakan oleh CPU. Setiap instruksi dalam bahasa mesin menyajikan operasi dasar yang sesuai, dan menghasilkan efek netto yang sama pada setiap komputer.
Pemrograman Prosedural
Algoritma
berisi urutan langkah-langkah penyelesaian masalah. Ini berarti Algoritma
adalah proses yang procedural. Definisi Prosedural menurut Kamus Besar Bahasa
Indonesia :
- Tahap-tahap kegiatan untuk menyelesaikan suatu aktivitas.
- Metode langkah demi langkah secara eksak dalam memecahkan suatu masalah.
Pada pemrograman procedural, program dibedakan antara bagian data dengan bagian
instruksi. Bagian instruksi terdiri atas runtutan (sequence) instruksi yang
dilaksanakan satu per satu secara berurutan oleh pemroses. Alur pelaksanaan
instruksi dapat berubah karena adanya pencabangan kondisional. Data yang
disimpan di dalam memori dimanipulasi oleh instrusi secara beruntun atau
procedural. Paradigma pemrograman seperti ini dinamakan pemrograman
procedural.
Bahasa-bahasa tingkat tinggi seperti Cobol, Basic, Pascal, Fortran dan C mendukung kegiatan pemrograman procedural, karena itu mereka dinamakan juga bahasa procedural. Selain paradigma pemrograman procedural, ada lagi paradigma yang lain yaitu pemrograman berorientasi objek (Object Oriented Programming). Paradigma pemrograman ini merupakan trend baru dan sangat populr akhir-akhir ini.
Paradigma
pemrograman yang lain adalah pemrograman fungsional, pemrograman
deklaratif dan pemrograman konkuren. Pada kesempatan ini saya hanya
menyajikan paradigma pemrograman procedural saja.
ATURAN PENULISAN ALGORITMA
Algoritma
berisi langkah-langkah penyelesaian masalah. Langkah-langkah tersebut dapat
ditulis dalam notasi apapun, asalkan mudah dibaca dan dimengerti, karena memang
tidak ada notasi baku dalam penulisan algoritma. Tiap orang dapat membuat
aturan penulisan dan notasi algoritma sendiri. Agar notasi algoritma mudah
ditranslasi ke dalam notasi bahasa pemrograman, maka sebaiknya notasi algoritma
tersebut berkorespnden dengan notasi bahasa pemrograman secara umum.
Aturan
Penulisan Algoritma
Setiap
Algoritma akan selalu terdiri dari tiga bagian yaitu :
·
Judul
(Header)
·
Kamus
·
Algoritma
Pada setiap bagian tersebut apabila akan dituliskan komentar mengenai setiap bagian tersebut dituliskan diantara tanda kurung kurawa contoh {Komentar}. Notasi algoritmis yang dituliskan diantara tanda ini tidak akan dieksekusi oleh program.
contoh :
Code:
Judul
{ Komentar mengenai Algoritma seperti cara kerja
program, Kondisi awal dan kondisi akhir dari algoritma }
Kamus
{ Pada bagian ini, didefinifikan nama konstanta, nama
variable, nama prosedur dan
nama fungsi }
Algoritma
{ Pada bagian ini algoritma dituliskan. Semua teks
yang dituliskan tidak diantara tanda kurung kurawa akan dianggap sebagai notasi
algoritma yang akan berpengaruh terhadap kebenaran algoritma }
Judul
(Header)
Judul adalah bagian teks algoritma yang digunakan sebagai tempat mendefinisikan nama dengan menentukan apakah teks tersebut adalah program, prosedur, fungsi. Setelah judul disarankan untuk menuliskan spesifikasi singkat dari teks algoritma tersebut. Nama algoritma sebaiknya singkat namun cukup menggambarkan apa yang akan dilakukan oleh algoritma tersebut.
contoh :
Judul adalah bagian teks algoritma yang digunakan sebagai tempat mendefinisikan nama dengan menentukan apakah teks tersebut adalah program, prosedur, fungsi. Setelah judul disarankan untuk menuliskan spesifikasi singkat dari teks algoritma tersebut. Nama algoritma sebaiknya singkat namun cukup menggambarkan apa yang akan dilakukan oleh algoritma tersebut.
contoh :
Code:
Program Luas_Kubus ← {Judul Algoritma}
{ Menghitung luas kubus untuk ukuran sisi yang dibaca
dari piranti masukan lalu
mencetak hasilnya kepiranti keluaran} ← {Spesifikasi
Algoritma}
Catatan :
Untuk memisahkan antara kata dalam judul algoritma menggunakan tanda “_” bukanlah suatu keharusan. Anda dapat menuliskan LuasLingkaran atau Luas_Lingkaran. Tetapi sebaiknya anda tidak menggunakan spasi “ “ untuk memisahkan antara kata di dalam nama algoritma.
Kamus (Deklarasi)
Kamus adalah bagian teks algoritma sebagai tempat untuk mendefinisikan :
Untuk memisahkan antara kata dalam judul algoritma menggunakan tanda “_” bukanlah suatu keharusan. Anda dapat menuliskan LuasLingkaran atau Luas_Lingkaran. Tetapi sebaiknya anda tidak menggunakan spasi “ “ untuk memisahkan antara kata di dalam nama algoritma.
Kamus (Deklarasi)
Kamus adalah bagian teks algoritma sebagai tempat untuk mendefinisikan :
·
Nama type
·
Nama
konstanta
·
Nama
variabel
·
Nama fungsi
·
Nama prosedur
Semua nama tersebut baru dapat dipakai di dalam algoritma jika telah didefinisikan terlebih dahulu didalam kamus. Penulisan sekumpulan nama dalam kamus sebaiknya dikelompokan menurut jenis nama tersebut. Nama variabel belum terdefinisi nilainya ketika didefinisikan. Pendefinisian nama konstanta sekaligus memberikan harga konstanta tersebut, pendefinisian nama fungsi dilakukan sekaligus dengan domain / range serta spesifikasinya. Pendefinisian nama prosedur sekaligus dengan pendefinisian parameter (jika ada) dan spesifikasi prosedur (kondisi awal “Initial State”, Kondisi akhir “ Final State” dan proses yang dilakukan).
contoh :
Code:
Kamus
{Nama type, hanya untuk type yang bukan type dasar}
type jam : <hh,mm,ss :integer> {Type jam terdiri
dari 3 masukan yaitu “hh” sebagai jam. “mm” sebagai menit dan “ss” sebagai
detik}
{Nama konstanta, harus menyebutkan type dan nilai }
constant phi : real = 3,14159
constant nama : string = ‘Alex’
constant benar : boolean = true
{Nama Informasi, menyebutkan type}
x,y : integer {suatu nilai yang bertype bilangan
bulat}
NMax : real {nilai maksimum yang bertype bilangan
real}
Nama : string {suatu nilai yang merupakan kumpulan
character}
P : point {suatu nilai pada bidang kartesian}
Cari : Boolean {suatu nilai logika}
{Nama fungsi, menyebutkan domain dan range}
function RealToInt (x:real) → integer
{mengubah harga x yang bertype real menjadi harga
ekivalen yang bertype integer}
{Nama prosedur, menyebutkan “IS” initial state, “FS”
final state dan proses}
procedure tukar (input/output x,y : real)
{ IS x dan y terdefinisi, x = a dan y = b
FS x = b dan y = a
Proses : menukar isi informasi bilangan x dan y }
Algoritma
(Deskripsi)
Algoritma
adalah bagian inti dari suatu algoritma yang berisi instruksi atau pemanggilan
aksi yang telah didefinisikan. Komponen teks algoritma dalam pemrograman
procedural dapat berupa :
·
Instruksi
dasar seperti input/output, assignment
·
Sequence
(runtutan)
·
Analisa
kasus
·
Perulangan
Setiap
langkah algoritma dibaca dari “atas” ke “bawah”. Urutan deskripsi penulisan
menentuan urutan langkah pelaksanaan perintah.
menentuan urutan langkah pelaksanaan perintah.
contoh :
Code:
Algoritma
input (c,d) {menerima masukan 2 bilangan c dan d}
if c < d then {operasi kondisional}
e ← a + b {e di assignment oleh nilai a dan b}
else
e ← a – b
output (e) {hasil keluaran berupa bilangan e}
Catatan :
Untuk kata-kata input, output, if then else, output akan dipelajari lebih mendalam pada bahasa pemrogramannya.
Contoh Penyelesaian Masalah Oleh Algoritma
Untuk kata-kata input, output, if then else, output akan dipelajari lebih mendalam pada bahasa pemrogramannya.
Contoh Penyelesaian Masalah Oleh Algoritma
Code:
Program Nilai_Maksimal
{Menentukan nilai tertinggi yang
dibaca dari piranti masukan dan hasilnya dicetak
ke piranti keluaran}
Kamus
hasil,x,y : integer {hasil merupakan
variabel untuk menampung nilai keluaran}
{x,y adalah variabel untuk menampung
nilai masukan}
Algoritma
input (x,y) {membaca nilai x dan y
dari piranti masukan}
if x < y then {operasi
kondisional}
hasil ← x {hasil di assignment oleh
nila terbesar}
else
hasil ← y
output (hasil) (nilai didalam
variabel hasil dicetak ke piranti keluaran}
0 komentar:
Posting Komentar
Pembaca yang baik selalu meninggalkan jejak berupa komentar yang bersifat membangun.