PENGERTIAN ALGORITMA
KITA BELAJAR YUK…..
Asal
kata Algoritma berasal dari nama Abu Ja’far Mohammed Ibn Musa al-Khowarizmi,
ilmuan Persia yang menulis kitab al jabr w’al-muqabala (rules of restoration
and reduction) sekitar tahun 825 M.
-
Algoritma adalah metode untuk menyelesaikan suatu permasalahan secara bertahap.
Contoh sederhana suatu algoritma adalah resep suatu masakan. Pada resep suatu
masakan terdapat langkah langkah penyelesaian untuk membuat masakan itu.
Misalkan untuk membuat telur rebus, maka diperlukan langkah langkah:
1. Cuci bersih telur
yang akan direbus.
2. Siapkan air pada
panci.
3. Rebus air hingga
mendidih.
4. Masukkan telur yang
sudah dicuci kedalam air yang telah direbus.
5. Tunggu hingga matang
dan sajikan
Komputer
adalah suatu mesin. Untuk dapat melakukan pekerjaannya komputer membutuhkan
instruksi yang diberikan pada komputer itu. Kumpulan instruksi umum untuk
berbagai jenis komputer disebut algoritma.
-
Algoritma
adalah urutan langkah logis tertentu untuk memecahkan suatu masalah. Yang
ditekankan adalah urutan langkah logis, yang berarti algoritma harus mengikuti
suatu urutan tertentu, tidak boleh melompat-lompat. (Dari Microsoft Press
Computer
and
Internet Dictionaary 1997, 1998).
-
Alur
pemikiran dalam menyelesaikan suatu pekerjaan yang dituangkan secara tertulis.
Yang ditekankan pertama adalah alur pikiran, sehingga algoritma seseorang dapat
juga berbeda dari algoritma orang lain. Sedangkan penekanan kedua adalah
tertulis, yang artinya dapat berupa kalimat, gambar, atau tabel tertentu.
-
Algoritma adalah dasar dan pondasi untuk membuat suatu program komputer yang
baik. Program komputer yang menggunakan algoritma dan flowchart akan
menghasilkan program yang tersusun rapi. Tutorial berikut akan menjelaskan
dasar dasar algoritma komputer.
KARAKTERISTIK ALGORITMA
Algoritma
komputer memiliki beberapa karakteristik yang harus dipenuhi agar menjadi
algoritma yang baik. Karakteristik itu antara lain:
· Presisi. Langkah
langkah penyelesaian masalah dalam algoritma haruslah secara presisi (tepat)
dinyatakan, tidak mengandung ambiguitas.
· Keunikan. Hasil
pertengahan dalam tiap langkah eksekusi suatu algoritma didefinisikan secara
khas dan merupakan pengolahan dari hasil eksekusi langkah sebelumnya.
· Keterbatasan. Algoritma
harus terbatas dan berhenti pada suatu titik setelah semua ekesekusi
dilaksanakan.
· Input. Algoritma
menerima input.
· Output. Algoritma
menghasilkan output.
· General. Algoritma
berlaku untuk suatu kumpulan input tertentu.
Contoh Algoritma dalam kehidupan nyata:
-
Jika
seorang ingin memasak atau membuat kue, baik itu melihat resep ataupun tidak
pasti akan melakukan suatu langkah-langkah tertentu sehingga masakannya atau
kuenya jadi.
-
Jika
seseorang ingin mengirim surat kepada kenalannya di tempat lain, langkah yang
harus dilakukan adalah:
􀂾 Menulis surat
􀂾 Surat dimasukkan ke
dalam amplop tertutup
􀂾 Amplop ditempeli
perangko secukupnya.
􀂾 Pergi ke Kantor Pos
terdekat untuk mengirimkannya.
Dalam
bidang komputer, algoritma sangat diperlukan dalam menyelesaikan berbagai
masalah pemrograman, terutama dalam komputasi numeris. Tanpa algoritma yang
dirancang baik maka proses pemrograman akan menjadi salah, rusak, atau lambat
dan tidak efisien. Pelaksana algoritma adalah Komputer.
Manusia
dan komputer berkomunikasi dengan cara: manusia memberikan perintah-perintah
kepada komputer berupa instruksi-instruksi yang disebut program. Alat yang digunakan untuk
membuat program tersebut adalah bahasa pemrograman. Bahasa pemrograman sangat
bermacam-macam: C, C++, Pascal, Java, C#, Basic, Perl, PHP, ASP, JSP, J#, J++
dan masih banyak bahasa lainnya. Dari berbagai bahasa pemrograman cara
memberikan instruksinya berbeda-beda namun bertujuan menghasilkan output yang
sama.
PENGANTAR ALGORITMA PEMROGRAMAN
Definisi Program/Pemrograman
Adalah kumpulan instruksi-instruksi tersendiri yang
biasanya disebut source code yang dibuat oleh programmer (pembuat program).
Paradigma Pemrograman
1.
Pemrograman Prosedural
􀂾 Berdasarkan
urutan-urutan, sekuensial
􀂾 Program adalah suatu
rangkaian prosedur untuk memanipulasi data. Prosedur
merupakan
kumpulan instruksi yang dikerjakan secara berurutan.
􀂾 Harus mengingat
prosedur mana yang sudah dipanggil dan apa yang sudah
diubah.
2.
Pemrograman Fungsional
􀂾 Berdasarkan teori
fungsi matematika
􀂾 Fungsi merupakan dasar
utama program.
3.
Pemrograman Terstruktur
􀂾 Secara berurutan dan
terstrukrtur.
􀂾 Program dapat
dibagai-bagi menjadi prosedur dan fungsi.
􀂾 Contoh: PASCAL dan C
4.
Pemrograman Modular
􀂾 Pemrograman ini
membentuk banyak modul.
􀂾 Modul merupakan
kumpulan dari prosedur dan fungsi yang berdiri sendiri
􀂾 Sebuah program dapat
merupakan kumpulan modul-modul.
􀂾 Contoh: MODULA-2 atau
ADA
5.
Pemrograman Berorientasi Obyek
􀂾 Pemrograman berdasarkan
prinsip obyek, dimana obyek memiliki
data/variabel/property
dan method/event/prosedur yang dapat dimanipulasi
􀂾 Contoh: C++, Object
Pascal, dan Java.
6.
Pemrograman Berorientasi Fungsi
􀂾 Pemrograman ini
berfokus pada suatu fungsi tertentu saja. Sangat tergantung
pada
tujuan pembuatan bahasa pemrograman ini.
􀂾 Contoh: SQL (Structured
Query Language), HTML, XML dan lain-lain.
7.
Pemrograman Deklaratif
􀂾 Pemrograman ini
mendeskripsikan suatu masalah dengan pernyataan daripada
memecahkan
masalah dengan implementasi algoritma.
􀂾 Contoh: PROLOG
Struktur Sistem Komputer
Siklus Hidup Perangkat Lunak (Software)
Dilihat
dari Struktur Sistem Komputer dan Siklus diatas, Algoritma Pemrograman dan
Struktur data menempati posisi dibagian software dan di bagian implementasi.
Karena bagian implementasi merupakan bagian dimana pemrogram melakukan proses
coding (pembuatan program).
Komputer
Sistem
Operasi
Bhs.
Pemrograman
Program
Aplikasi
Pemakai
Hardware
Software
Brainware
Requirement
Desain Implementasi Testing
Kriteria Algoritma Menurut Donald E. Knuth
1.
Input: algoritma dapat memiliki nol atau lebih inputan dari luar.
2.
Output: algoritma harus memiliki minimal satu buah output keluaran.
3.
Definiteness
(pasti):
algoritma memiliki instruksi-instruksi yang jelas dan tidak ambigu.
4.
Finiteness
(ada
batas): algoritma harus memiliki titik berhenti (stopping role).
5.
Effectiveness
(tepat
dan efisien): algoritma sebisa mungkin harus dapat dilaksanakan dan efektif.
Contoh
instruksi yang tidak efektif adalah: A = A + 0 atau A = A * 1
Namun
ada beberapa program yang memang dirancang untuk unterminatable contohnya
Sistem Operasi.
Jenis Proses Algoritma
1.
Sequence Process: instruksi dikerjakan secara sekuensial, berurutan.
2.
Selection Process: instruksi dikerjakan jika memenuhi kriteria tertentu
3.
Iteration Process: instruksi dikerjakan selama memenuhi suatu kondisi tertentu.
4.
Concurrent Process: beberapa instruksi dikerjakan secara bersama.
Contoh Algoritma
Algoritma
menghitung luas persegi panjang:
1.
Masukkan panjang (P)
2.
Masukkan lebar (L)
3.
L ← P * L
4.
Tulis L
Dalam
Algoritma, tidak dipakai simbol-simbol / sintaks dari suatu bahasa pemrograman
tertentu, melainkan bersifat umum dan tidak tergantung pada suatu bahasa
pemrograman apapun juga. Notasi-notasi algoritma dapat digunakan untuk seluruh
bahasa pemrograman manapun.
Definisi Pseudo-code
Kode
atau tanda yang menyerupai (pseudo) atau merupakan pejelasan cara menyelesaikan
suatu masalah. Pseudo-code sering digunakan oleh manusia untuk menuliskan
algoritma.
Problem:
mencari bilangan terbesar dari dua bilangan yang diinputkan
Contoh Pseudo-code:
1.
Masukkan bilangan pertama
2.
Masukkan bilangan kedua
3.
Jika bilangan pertama > bilangan kedua maka kerjakan langkah 4, jika tidak,
kerjakan langkah 5.
4.
Tampilkan bilangan pertama
5.
Tampilkan bilangan kedua
Contoh Algoritma
1.
Masukkan bilangan pertama (a)
2.
Masukkan bilangan kedua (b)
3.
if a > b then kerjakan langkah 4
4.
print a
5.
print b
Contoh Lain Algortima dan Pseudo-code:e Algoritma
Nilai
A ditambah dengan 5 A ← A + 5
Cetak
nilai A bila lebih besar dari 10 IF A > 10 THEN PRINT A
Dari
dua bilangan A dan B, cari
bilangan
yang terbesar
IF
A > B THEN PRINT A ELSE PRINT B
Langkah-langkah dalam pemrograman komputer
1. Mendefinisikan masalah
Ini
merupakan langkah pertama yang sering dilupakan orang. Menurut hukum Murphy
(oleh Henry Ledgard):
“Semakin
cepat menulis program, akan semakin lama kita dapat menyelesaikannya”. Hal
tersebut berlaku untuk permasalahan yang kompleks. Tentukan masalahnya, apa
saja yang harus dipecahkan dengan menggunakan komputer, dan apa inputan serta
outputnya.
2. Menemukan solusi
Setelah
masalah didefinisikan, maka langkah berikutnya adalah menentukan solusi. Jika
masalah terlalu kompleks, maka ada baiknya masalah tersebut dipecah menjadi
modul-modul kecil agar lebih mudah diselesaikan. Contohnya masalah invers matriks,
maka kita dapat membagi menjadi beberapa
modul:
􀂾 meminta masukkan berupa
matriks bujur sangkar
􀂾 mencari invers matriks
􀂾 menampilkan hasil
kepada pengguna
Dengan
penggunaan modul tersebut program utama akan menjadi lebih singkat dan mudah
dilihat.
3. Memilih algoritma
Pilihlah
algoritma yang benar-benar sesuai dan efisien untuk permasalahan tersebut
4. Menulis program
Pilihlah
bahasa yang mudah dipelajari, mudah digunakan, dan lebih baik lagi jika
sudah
dikuasai, memiliki tingkat kompatibilitas tinggi dengan perangkat keras dan
platform lainnya.
5. Menguji program
Setelah
program jadi, silahkan uji program tersebut dengan segala macam
kemungkinan
yang ada, termasuk error-handlingnya sehingga program tersebut akan benar-benar
handal dan layak digunakan.
6. Menulis dokumentasi
Menulis
dokumentasi sangat penting agar pada suatu saat jika kita akan melakukan
perubahan
atau membaca source code yang sudah kita tulis dapat kita ingat ingat lagi dan
kita akan mudah membacanya. Caranya adalah dengan menuliskan komentarkomentar
kecil tentang apa maksud kode tersebut, untuk apa, variabel apa saja yang
digunakan, untuk apa, dan parameter-parameter yang ada pada suatu prosedur dan
fungsi.
7. Merawat program
Program
yang sudah jadi perlu dirawat untuk mencegah munculnya bug yang
sebelumnya
tidak terdeteksi. Atau mungkin juga pengguna membutuhkan fasilitas baru yang
dulu tidak ada.
SOAL ALGORITMA
1.
Buatlah algoritma untuk menghitung konversi suhu.dari Celcius menjadi Reamur
dan
Farenheit.
Input:
suhu dalam Celcius
Proses:
R = 4/5 * C dan F = 9/5 * C + 32
Output:
suhu dalam Reamur dan Farenheit
2.
Buatlah algoritma untuk mencari sisi miring dari suatu segitiga siku-siku, jika
diketahui
panjang
sisi yang membentuk sudut siku-siku.
Input:
a dan b, yaitu panjang sisi pembentuk sudut siku-siku
Proses:
c
= a2 + b2
Ouput:
sisi miring (c)
3.
Buatlah algoritma untuk menentukan suatu bilangan genap atau ganjil
Input:
suatu bilangan
Ouput:
genap / ganjil
4.
Buatlah algoritma untuk menentukan suatu bilangan adalah bilangan prima atau
bukan.
5.
Buatlah algoritma untuk untuk menghitung akar-akar persamaan kuadrat dengan
rumus D = B2
– 4 * A *
C
Jika
D < 0 maka didapat akar imajiner
Jika
D = 0 maka X1 = X2 yang didapat dari D = -B / (2 * A)
Jika
D > 0 maka ada dua akar X1 = −B + D/ 2 * A dan X 2 = −B − D/ 2 * A
Algoritma
adalah dasar dan pondasi untuk membuat suatu program komputer yang baik.
Program komputer yang menggunakan algoritma dan flowchart akan
menghasilkan program yang tersusun rapi. Tutorial berikut akan menjelaskan
dasar dasar algoritma komputer.
Contoh algoritma:
Input: n
Output: 1/1 +
1/2+ ... +1/n
1. jumlah = 0
2. i= 0
3. i=i+1
4. jumlah =
jumlah + 1/i
5. ulangi langkah
3 dan 4 sehingga i==n
Algoritma
pada contoh adalah algoritma untuk menghitung
Pada
langkah 1, nilai 0 diisikan pada variabel jumlah. jadi jumlah pada langkah
pertama bernilai 0. Tanda = adalah operator penugasan dengan makna “kopikan 0
kepada jumlah” atau ” gantikan nilai tertentu jumlah dengan 0″.Langkah 2 juga
menunjukkan hal yang sama namun dengan nama variabel yang berbeda. Langkah 3
menunjukkan instruksi “kopikan jumlah antara isi variabel i dan 1 kepada
variabel i”. Langkah 4 menunjukkan instruksi “kopikan jumlah antara isi
variabel jumlah dengan 1/isi variabel i pada variabel jumlah”. Langkah 5
menunjukkan instruksi untuk mengulangi langkah langkah 3 dan 4 sehingga
terpenuhi syarat i = = n. Operator = = disebut operator equalitas yang bermakna
benar dan salah. Jika i sama dengan n maka nilainya benar dan jika i tidak sama
dengan n maka nilainya salah.
Algoritma
ini dikatakan presisi karena tiap langkahnya didefinisikan secara tepat
dan tidak mengandung pemahaman yang ambigu ketika instruksi instruksinya
dilaksanakan semua orang atau mesin. Misalkan ada instruksi “jumlahkan i”.
Instruksi ini mengandung ambigu karena tidak terdapat keterangan penjumlahnya.
Algoritma ini dikatakan unik karena hasil pertengahan dalam tiap langkah
eksekusi suatu algoritma didefinisikan secara khas dan merupakan pengolahan dari
hasil eksekusi langkah sebelumnya.Misalkan pada langkah 3. Langkah 3 akan
menghasilkan nilai tertentu jika nilai i telah diketahui. Pada proses pertama
nilai i adalah hasil keluaran dari langkah 2 yaitu bernilai 0 sehingga nilai
keluaran i pada proses pertama langkah 3 adalah 1. Algoritma ini dikatakan terbatas
karena dimulai dari langkah 1 dan diakhiri jika syarat i = = n bernilai
benar. Algoritma ini input berupa nilai yang dimasukkan pada variabel n
dan memiliki output yang berupa hasil dari operasi 1/1 + 1/2+ … +1/n.
Algoritma ini dikatakan general karena algoritma ini dapat diterapkan
untuk setiap nilai real yang dimasukkan pada variabel n.
ATURAN PENULISAN DAN STRUKTUR DASAR KOMPUTER
I. Pendahuluan
Algoritma
dapat ditulis dalam notasi apapun asalkan mudah dimengerti dan dipahami.
Algoritma
dapat ditulis dalam bahasa natural/bahasa sehari-hari (seperti bahasa
Indonesia,
bahasa Inggris, dan lain-lain), contohnya adalah sebagai berikut :
Algoritma
memilih bilangan terbesar dari 3 buah bilangan :
1.
Ambil bilangan pertama dan simpan nilai bilangan pertama tersebut ke variabel maks.
2.
Ambil bilangan kedua dan bandingkan nilainya dengan maks. Jika bilangan
kedua
lebih
besar dari maks, simpan nilai bilangan kedua ke variabel maks.
3.
Ambil bilangan ketiga dan bandingkan nilainya dengan maks. Jika bilangan
ketiga
lebih
besar dari maks, simpan nilai bilangan ketiga ke variabel maks.
4.
Tampilkan nilai dari variabel maks (yang merupakan bilangan terbesar).
Catatan :
Variabel adalah tempat yang digunakan untuk menampung suatu
nilai.
Kelemahan
penulisan algoritma dalam bahasa natural adalah sering membingungkan
(ambiguous).
Cara penulisan algoritma yang lain adalah dengan menggunakan flowchart
(diagram
alir) seperti berikut :
start
finish
maks bil-1
bil-2
>
maks ?
bil-3
>
maks ?
maks bil-2
maks bil-3
ya
ya
tidak
tidak
read
bil-1, bil-2, bil-3
write
maks
Penulisan
algoritma dengan flowchart cukup bagus secara visual tetapi akan menjadi
repot
dan tidak praktis kalau algoritmanya panjang.
Cara
penulisan yang lain adalah menggunakan pseudo-code (kode semu).
Penulisan
dengan
cara ini sudah lebih dekat ke bahasa pemrograman, namun sulit dipahami oleh
orang
yang tidak mengerti bahasa pemrograman.
Pada
dasarnya tidak ada notasi yang baku dalam penulisan algoritma. Setiap orang
dapat
membuat
aturan penulisan dan notasinya sendiri. Notasi yang digunakan dalam menulis
algoritma
disebut dengan notasi algoritmik.
II. Contoh Penulisan Algoritma dengan Kode Semu (Pseudo-Code)
Berikut
ini adalah salah satu contoh penulisan algoritma :
const pi = 3.1415926535897932384626433832795
function luas_lingkaran(r)
{Algoritma
yang menghasilkan luas suatu lingkaran apabila diberikan jari-jarinya r}
l pi*r*r
return l
procedure tukar_nilai(a, b)
{Algoritma
yang mempertukarkan isi a dan isi b}
c a
a b
b c
Algoritma
yang ditulis dengan cara seperti di atas sering disebut dengan kode semu
(pseudo-code).
Kode semu pun tidak memiliki bentuk yang baku, masing-masing orang
bisa
menuliskan kode semu dalam bentuk yang berbeda.
Dari
contoh di atas tampak bahwa suatu algoritma dapat dinyatakan sebagai sebuah
fungsi
(function) atau prosedur (procedure). Perbedaan fungsi dan
prosedur adalah fungsi
menghasilkan
suatu nilai kembali sedangkan prosedur tidak. Fungsi maupun prosedur
seringkali
mempunyai parameter yang dapat digunakan untuk melewatkan suatu nilai
ke/dari
fungsi/prosedur. Pada kedua contoh di atas r, a, maupun b merupakan
contoh
parameter.
Pada
contoh di atas fungsi luas_lingkaran akan menghasilkan nilai kembali 25
jika nilai
parameter
masukan r adalah 5. Sedangkan prosedur tukar_nilai sama sekali
tidak
menghasilkan
nilai kembali, tetapi prosedur tersebut akan mempertukarkan nilai dari
variabel-variabel
yang dijadikan parameternya. Misalnya variabel x pada awalnya
bernilai
10 dan variabel y bernilai 7, maka setelah dilakukan prosedur tukar_nilai(x,
y)
maka
variabel x menjadi bernilai 7 dan variabel y menjadi bernilai 10.
Suatu fungsi
ditandai
dengan adanya kata return.
Pada
contoh di atas terdapat kata const, kata const merupakan salah
satu contoh dari apa
yang
dinamakan deklarasi. Deklarasi adalah bagian dari algoritma yang mendefinisikan
nama-nama
yang akan digunakan pada algoritma.
Deklarasi
ada bermacam-macam, antara lain :
1. Deklarasi konstanta
Konstanta
memiliki nilai yang tetap, tidak dapat diubah di bagian manapun dari
algoritma.
Contoh deklarasi konstanta :
{deklarasi
konstanta}
const pi = 3.1415926535897932384626433832795
function luas_lingkaran(r)
{Algoritma
yang menghasilkan luas suatu lingkaran apabila diberikan jari-jarinya r}
l pi*r*r
return l
{deklarasi
konstanta}
const e = 2.7182818284590452353602874713527
…
Catatan :
Bagian yang berada di dalam kurung kurawa {} disebut
dengan komentar. Fungsi
komentar adalah untuk memberikan penjelasan pada algoritma.
Komentar bukan
termasuk dari langkah-langkah algoritma yang akan
dieksekusi. Bahkan komentar
dapat dibuang begitu saja tanpa mempengaruhi kebenaran
algoritma.
2. Deklarasi tipe
Tipe
yang dimaksud di sini adalah tipe-tipe data yang digunakan di dalam algoritma.
Ada
dua
jenis tipe data yaitu tipe dasar dan tipe bentukan. Tipe dasar adalah tipe yang
tidak
perlu
dideklarasikan lagi, biasanya sudah dikenal secara umum dan didukung langsung
oleh
perangkat keras komputer. Tipe bentukan adalah tipe yang perlu dideklarasikan,
biasanya
belum dikenal secara umum dan tidak mendapat dukungan langsung dari
perangkat
keras. Contoh tipe dasar antara lain integer, real, char, dan boolean. Contoh
tipe
bentukan adalah record, enumerasi, array, dan lain lain.
Berikut
ini adalah contoh deklarasi suatu tipe bentukan :
{deklarasi
tipe}
type kompleks = record
nyata: real
imajiner: real
function norma_kompleks(c:
kompleks)
{Algoritma
yang menghasilkan norma dari suatu bilangan kompleks}
n c.nyata*c.nyata + c.imajiner*c.imajiner
return n
type person = record
name: string
age: integer
male: boolean
type tab = array [1..50] of
integers
type gender = enum {male,
female}
type matriks = array [1..20,
1..20] of integers
type pointerperson = person
…
Kadang-kadang
suatu tipe dideklarasikan hanya sebagai nama alias dari tipe yang lain :
type bilanganbulat = integers
type jeniskelamin = gender
…
3. Deklarasi variabel
Variabel
adalah tempat yang digunakan untuk menampung suatu nilai. Setiap variabel
memiliki
tipe tertentu. Berbeda dengan konstanta, nilai dari variabel dapat diubah di
berbagai
bagian dari algoritma.
Contoh
deklarasi variabel adalah sebagai berikut :
type kompleks = record
nyata: real
imajiner: real
{deklarasi
variabel}
a: kompleks
b: kompleks
procedure tukar
{Algoritma
untuk menukar isi a dan b}
temp: real {deklarasi variabel}
temp a.nyata
a.nyata b.nyata
b.nyata temp
temp a.imajiner
a.imajiner b.imajiner
b.imajiner temp
const n = 250
{deklarasi
variabel}
i: integer
f: real
c: char
b: booelan
s: string
r: array [1..30] of integers
v: array [1..n] of integers
array u[1..100]
array w[1..n]
t: tab
l: gender
m: matriks
…
Deklarasi
variabel dapat dilakukan di sebarang tempat. Variabel yang dideklarasikan di
dalam
suatu fungsi/prosedur disebut sebagai variabel lokal sedangkan variabel yang
dideklarasikan
tidak di dalam fungsi/prosedur disebut variabel global. Variabel lokal
dikenali
hanya di dalam fungsi yang bersangkutan dan tidak akan dikenali di luar fungsi
tersebut.
Varibel global dapat dikenali di sebarang tempat dari algoritma. Dalam banyak
kasus,
deklarasi variabel tidak selalu harus dilakukan. Kadang-kadang notasi algoritmik
menjadi
lebih sederhana dan lebih jelas apabila variabel-variabel yang ada pada
algoritma
tidak
dideklarasikan terlebih dahulu.
4. Deklarasi fungsi/prosedur
Pada
contoh di atas, setiap algoritma mengandung sebuah fungsi/prosedur yang dapat
disebut
sebagai fungsi/prosedur utama. Kadang-kadang fungsi/prosedur utama
memanggil
sebuah fungsi/prosedur yang lain. Maka fungsi/prosedur yang dipanggil
tersebut
juga harus dideklarasikan di dalam algoritma. Contoh algoritma yang memiliki
lebih
dari satu fungsi :
const pi = 3.1415926535897932384626433832795
function luas_lingkaran(r)
l pi*r*r
return l
function isi_silinder(r, t)
{Algoritma
yang menghasilkan volume silinder apabila diberikan jari-jari alas r dan
tinggi
t}
a luas_lingkaran(r)
v a*t
return v
Moh
Edi Wibowo
7
Berikut
ini adalah contoh algoritma yang cukup rumit penulisannya :
const N = 100
type tabs = array [1..N]
of integers
T: tabs
procedure isi_data
for i 1 to N do
T[i] random(10*N)
function isi_dan_cari_minimum
{Algoritma
untuk mengisi elemen-elemen T secara random kemudian mencari nilai
minimum
dari elemen-elemen T tersebut}
isi_data
min T[1]
for i 2 to N do
if T[i] < min then
min T[i]
return min
III. Struktur Dasar Algoritma
Algoritma
berisi langkah-langkah penyelesaian suatu masalah. Langkah-langkah tersebut
ditulis
dalam bentuk instruksi-instruksi di dalam fungsi atau prosedur. Sekelompok
instruksi
dapat membentuk sebuah blok instruksi. Sebuah blok instruksi dapat dianggap
sebagai
satu kesatuan yang tidak terpisah. Instruksi-instruksi yang tergabung dalam
sebuah
blok ditulis menjorok untuk membedakan dengan instruksi-instruksi di dekatnya
yang
tidak termasuk sebagai anggota blok.
Bentuk
instruksi yang sering ditemui adalah :
a b
Bentuk
tersebut merupakan instruksi untuk mengisi variabel a dengan nilai (isi)
dari
variabel
b. Bentuk yang mirip dengan instruksi di atas adalah :
a b + c
Bentuk
tersebut merupakan instruksi untuk mengisi variabel a dengan hasil
penjumlahan
dari
isi variabel b dengan isi variabel c. Simbol seperti dan + sering
disebut sebagai
operator.
Operator disebut sebagai operator penugasan (assignment) dan operator +
disebut
sebagai operator penjumlahan. Suatu operator bertugas melakukan operasi,
operator
akan melakukan operasi penugasan sedangkan operator + akan melakukan
operasi
penjumlahan. Data yang dikenai operasi oleh operator disebut sebagai operand,
dengan
demikian a, b, atau c pada contoh di atas disebut sebagai operand.
Satu atau
gabungan
beberapa operasi sering disebut dengan ekspresi. Jadi ekspresi terdiri dari
satu
atau
lebih operator maupun operand.
Bentuk-bentuk
instruksi yang lain masih banyak, begitu pula dengan jenis-jenis operasi
dan
operator. Setiap orang boleh membuat instruksi, operasi, dan operatornya
sendiri asal
mudah
dipahami dan dimengerti oleh orang lain.
Langkah-langkah
yang ada di dalam algoritma membentuk tiga buah struktur dasar,
yaitu
:
a.
runtutan (sequence)
b.
pemilihan (selection)
c.
pengulangan (repetition)
a. Runtutan
Runtutan
adalah instruksi-instruksi yang dikerjakan secara berurutan. Berurutan di sini
berarti
sesuai dengan urutan penulisannya, yakni sebuah instruksi dijalankan setelah
instruksi
sebelumnya selesai dikerjakan. Contoh algoritma yang hanya terdiri dari
runtutan
adalah sebagai berikut :
procedure menampilkan_tiga_kata
write(’Aku’)
write(’Cinta’)
write(’Indonesia’)
ekspresi
a + b – c
operator
operand
Moh
Edi Wibowo
9
const pi = 3.1415926535897932384626433832795
function luas_lingkaran(r)
l pi*r*r
return l
b. Pemilihan
Pemilihan
terjadi ketika suatu instruksi dikerjakan apabila suatu kondisi terpenuhi.
Misalnya
instruksi A dikerjakan karena kondisi X terpenuhi (yang juga berarti instruksi
A
tidak
dikerjakan bila kondisi X tidak terpenuhi). Dalam kasus yang lain instruksi A
dikerjakan
bila kondisi X terpenuhi, atau instruksi B yang dikerjakan bila kondisi X tidak
terpenuhi.
Contoh algoritmanya adalah sebagai berikut :
procedure tampilkan_kalimat(i)
if i = 0 then
write(’Aku ’)
write(’Cinta ’)
write(’Indonesia’)
Pada
contoh di atas, bila i bernilai 2 maka kondisi dari if (yaitu i
= 0) tidak terpenuhi
sehingga
kalimat tidak akan ditampilkan.
procedure pilih_kalimat(i)
if i = 0 then
write(’Aku ’)
write(’Cinta ’)
write(’Indonesia ’)
else
write(’Aku ’)
write(’Cinta ’)
write(’Malaysia’)
Pada
contoh di atas, bila i bernilai 2 maka kondisi dari if tidak
terpenuhi sehingga kalimat
yang
ditampilkan adalah
Aku
Cinta Malaysia
Moh
Edi Wibowo
10
procedure pilih_dari_tiga_kalimat(i)
if i = 0 then
write(’Aku ’)
write(’Cinta ’)
write(’Indonesia’)
else if i = 1 then
write(’Aku ’)
write(’Cinta ’)
write(’Malaysia’)
else
write(’Aku ’)
write(’Cinta ’)
write(’Timor Leste’)
Pada
contoh di atas, bila i bernilai 2 maka kondisi dari if yang
pertama tidak terpenuhi
sehingga
dilanjutkan ke bagian else yang pertama. Pada bagian else yang
pertama
ditemui
if yang kedua. Kondisi dari if yang kedua juga tidak terpenuhi
sehingga kalimat
yang
ditampilkan adalah
Aku
Cinta Timor Leste
Bentuk
if yang bersarang (ada if di dalam if) seperti pada contoh
algoritma yang terakhir,
kadang-kadang
dapat dituliskan dalam bentuk lain seperti berikut :
procedure pilih_dari_tiga_kalimat(i)
case i = 0 :
write(’Aku ’)
write(’Cinta ’)
write(’Indonesia’)
i = 1 :
write(’Aku ’)
write(’Cinta ’)
write(’Malaysia’)
else
write(’Aku ’)
write(’Cinta ’)
write(’Timor Leste’)
Moh
Edi Wibowo
11
c. Pengulangan
Pengulangan
terjadi ketika ada suatu instruksi yang dilakukan terus-menerus selama
suatu
kondisi terpenuhi. Bentuk pengulangan yang sering dijumpai ditampilkan pada
contoh-contoh
di bawah ini :
procedure tampilkan_n_kata(n)
for i 1 to n do
write(’contoh’)
procedure tampilkan_n_nomor(n)
for i 1 to n do
write(’Nomor ’)
write(i)
procedure tampilkan_n_kata(n)
repeat n times
write(’contoh lain’)
procedure tampilkan_n_nomor(n)
for i n downto 1 do
write(’Nomor ’, i)
Algoritma-algoritma
di atas melakukan penulisan sebanyak n putaran. Pada setiap
putaran
algoritma-algoritma tersebut menuliskan kata maupun nomor. Putaran pada
pengulangan
sering disebut dengan iterasi. Jadi algoritma-algoritma di atas melakukan n
kali
iterasi, mulai dari iterasi pertama sampai iterasi ke-n.
Pada
contoh-contoh di atas juga tampak adanya suatu kesamaan, yaitu jumlah
pengulangan
telah diketahui lebih dahulu yaitu sebanyak n kali.
Contoh
yang lain adalah sebagai berikut :
procedure tampilkan_nomor(n)
for i 3 to n step 2 do
write(i)
Algortima
di atas melakukan pengulangan sebanyak ((n - 3) ¸ 2)+ 1kali. Jika n
diberi
nilai
15 maka algoritma di atas menampilkan angka-angka
3
5 7 9 11 13 15
Contoh
yang lain lagi adalah sebagai berikut :
procedure tampilkan_nomor(n)
C {1, 3, 5, 7, 9}
for each i ÃŽ C do
write(i)
Catatan :
Bagian yang ada di antara tanda kurung kurawa {} apada
algoritma di atas bukanlah
komentar, tetapi menyatakan himpunan (set).
procedure tampilkan_nomor(n)
for each i bilangan ganjil di antara 0 dan 10
do
write(i)
Kedua
algortima di atas berfungsi untuk menampilkan angka ganjil di antara 0 dan 10.
Untuk
pengulangan yang jumlah iterasinya belum diketahui, biasanya digunakan bentuk
while dan repeat.
procedure tampilkan_beberapa_kali
i random(10)
while i ¹ 5 do
write(’contoh’)
i random(10)
Algoritma
di atas menggunakan pengulangan bentuk while. Sebelum melakukan
pengulangan,
dilakukan pengecekan terlebih dahulu pada kondisi dari while. Bila
kondisi
terpenuhi
maka iterasi dimulai, dan bila kondisi tidak terpenuhi maka pengulangan tidak
akan
pernah dilakukan. Setiap kali akan memasuki iterasi baru (pada awal iterasi),
dilakukan
pengecekan lagi pada kondisi. Iterasi dilanjutkan jika kondisi masih terpenuhi
dan
pengulangan berakhir ketika kondisi tidak terpenuhi. Algoritma di atas mungkin
akan
menampilkan kata contoh sebanyak 1 kali, 100 kali, 60 kali, atau bahkan
tidak
menampilkan
kata contoh sama sekali.
procedure tampilkan_lebih_dari_sekali
repeat
write(’contoh’)
i random(10)
until i ¹ 5
Algoritma
di atas menggunakan pengulangan bentuk repeat. Pada bentuk repeat,
pengulangan
langsung memasuki iterasi yang pertama. Pada akhir iterasi, dilakukan
pengecekan
pada kondisi dari repeat. Iterasi dilanjutkan jika kondisi terpenuhi dan
pengulangan
berakhir jika kondisi tidak terpenuhi. Algoritma di atas akan menampilkan
kata
contoh sedikitnya 1 kali.
Kadang-kadang
diperlukan untuk mengakhiri pengulangan tanpa menghiraukan jumlah
iterasi
yang sudah ditempuh maupun kondisi yang ada pada suatu saat. Pengulangan
dapat
dipaksa berakhir dengan menggunakan instruksi break.
procedure tampilkan_nomor
for i 1 to 10 do
write(i)
if i = 5 then
break
Pengulangan
pada algoritma di atas akan berakhir setelah memasuki iterasi ke-5 sehingga
yang
angka-angka yang ditampilkan adalah
1
2 3 4 5
procedure tampilkan_nomor
i 1
while i < 10 do
write(i)
if i = 5 then
break
i i + 1
Algoritma
di atas juga menampilkan angka-angka
1
2 3 4 5
Selain
instruksi break juga terdapat instruksi continue yang berfungsi
untuk melanjutkan
pengulangan
langsung menuju ke iterasi selanjutnya dengan mengabaikan instruksiinstruksi
yang
terletak setelah instruksi continue.
procedure tampilkan_nomor_dan kuadratnya
for i 1 to 6 do
write(i)
if i > 3 then
continue
write(i*i)
Algoritma
di atas akan menampilkan angka-angka
PENGERTIAN ALGORITMA
Asal
kata Algoritma berasal dari nama Abu Ja’far Mohammed Ibn Musa al-Khowarizmi,
ilmuan Persia yang menulis kitab al jabr w’al-muqabala (rules of restoration
and reduction) sekitar tahun 825 M.
-
Algoritma adalah metode untuk menyelesaikan suatu permasalahan secara bertahap.
Contoh sederhana suatu algoritma adalah resep suatu masakan. Pada resep suatu
masakan terdapat langkah langkah penyelesaian untuk membuat masakan itu.
Misalkan untuk membuat telur rebus, maka diperlukan langkah langkah:
1. Cuci bersih telur
yang akan direbus.
2. Siapkan air pada
panci.
3. Rebus air hingga
mendidih.
4. Masukkan telur yang
sudah dicuci kedalam air yang telah direbus.
5. Tunggu hingga matang
dan sajikan
Komputer
adalah suatu mesin. Untuk dapat melakukan pekerjaannya komputer membutuhkan
instruksi yang diberikan pada komputer itu. Kumpulan instruksi umum untuk
berbagai jenis komputer disebut algoritma.
-
Algoritma
adalah urutan langkah logis tertentu untuk memecahkan suatu masalah. Yang
ditekankan adalah urutan langkah logis, yang berarti algoritma harus mengikuti
suatu urutan tertentu, tidak boleh melompat-lompat. (Dari Microsoft Press
Computer
and
Internet Dictionaary 1997, 1998).
-
Alur
pemikiran dalam menyelesaikan suatu pekerjaan yang dituangkan secara tertulis.
Yang ditekankan pertama adalah alur pikiran, sehingga algoritma seseorang dapat
juga berbeda dari algoritma orang lain. Sedangkan penekanan kedua adalah
tertulis, yang artinya dapat berupa kalimat, gambar, atau tabel tertentu.
-
Algoritma adalah dasar dan pondasi untuk membuat suatu program komputer yang
baik. Program komputer yang menggunakan algoritma dan flowchart akan
menghasilkan program yang tersusun rapi. Tutorial berikut akan menjelaskan
dasar dasar algoritma komputer.
KARAKTERISTIK ALGORITMA
Algoritma
komputer memiliki beberapa karakteristik yang harus dipenuhi agar menjadi
algoritma yang baik. Karakteristik itu antara lain:
· Presisi. Langkah
langkah penyelesaian masalah dalam algoritma haruslah secara presisi (tepat)
dinyatakan, tidak mengandung ambiguitas.
· Keunikan. Hasil
pertengahan dalam tiap langkah eksekusi suatu algoritma didefinisikan secara
khas dan merupakan pengolahan dari hasil eksekusi langkah sebelumnya.
· Keterbatasan. Algoritma
harus terbatas dan berhenti pada suatu titik setelah semua ekesekusi
dilaksanakan.
· Input. Algoritma
menerima input.
· Output. Algoritma
menghasilkan output.
· General. Algoritma
berlaku untuk suatu kumpulan input tertentu.
Contoh Algoritma dalam kehidupan nyata:
-
Jika
seorang ingin memasak atau membuat kue, baik itu melihat resep ataupun tidak
pasti akan melakukan suatu langkah-langkah tertentu sehingga masakannya atau
kuenya jadi.
-
Jika
seseorang ingin mengirim surat kepada kenalannya di tempat lain, langkah yang
harus dilakukan adalah:
􀂾 Menulis surat
􀂾 Surat dimasukkan ke
dalam amplop tertutup
􀂾 Amplop ditempeli
perangko secukupnya.
􀂾 Pergi ke Kantor Pos
terdekat untuk mengirimkannya.
Dalam
bidang komputer, algoritma sangat diperlukan dalam menyelesaikan berbagai
masalah pemrograman, terutama dalam komputasi numeris. Tanpa algoritma yang
dirancang baik maka proses pemrograman akan menjadi salah, rusak, atau lambat
dan tidak efisien. Pelaksana algoritma adalah Komputer.
Manusia
dan komputer berkomunikasi dengan cara: manusia memberikan perintah-perintah
kepada komputer berupa instruksi-instruksi yang disebut program. Alat yang digunakan untuk
membuat program tersebut adalah bahasa pemrograman. Bahasa pemrograman sangat
bermacam-macam: C, C++, Pascal, Java, C#, Basic, Perl, PHP, ASP, JSP, J#, J++
dan masih banyak bahasa lainnya. Dari berbagai bahasa pemrograman cara
memberikan instruksinya berbeda-beda namun bertujuan menghasilkan output yang
sama.
PENGANTAR ALGORITMA PEMROGRAMAN
Definisi Program/Pemrograman
Adalah kumpulan instruksi-instruksi tersendiri yang
biasanya disebut source code yang dibuat oleh programmer (pembuat program).
Paradigma Pemrograman
1.
Pemrograman Prosedural
􀂾 Berdasarkan
urutan-urutan, sekuensial
􀂾 Program adalah suatu
rangkaian prosedur untuk memanipulasi data. Prosedur
merupakan
kumpulan instruksi yang dikerjakan secara berurutan.
􀂾 Harus mengingat
prosedur mana yang sudah dipanggil dan apa yang sudah
diubah.
2.
Pemrograman Fungsional
􀂾 Berdasarkan teori
fungsi matematika
􀂾 Fungsi merupakan dasar
utama program.
3.
Pemrograman Terstruktur
􀂾 Secara berurutan dan
terstrukrtur.
􀂾 Program dapat
dibagai-bagi menjadi prosedur dan fungsi.
􀂾 Contoh: PASCAL dan C
4.
Pemrograman Modular
􀂾 Pemrograman ini
membentuk banyak modul.
􀂾 Modul merupakan
kumpulan dari prosedur dan fungsi yang berdiri sendiri
􀂾 Sebuah program dapat
merupakan kumpulan modul-modul.
􀂾 Contoh: MODULA-2 atau
ADA
5.
Pemrograman Berorientasi Obyek
􀂾 Pemrograman berdasarkan
prinsip obyek, dimana obyek memiliki
data/variabel/property
dan method/event/prosedur yang dapat dimanipulasi
􀂾 Contoh: C++, Object
Pascal, dan Java.
6.
Pemrograman Berorientasi Fungsi
􀂾 Pemrograman ini
berfokus pada suatu fungsi tertentu saja. Sangat tergantung
pada
tujuan pembuatan bahasa pemrograman ini.
􀂾 Contoh: SQL (Structured
Query Language), HTML, XML dan lain-lain.
7.
Pemrograman Deklaratif
􀂾 Pemrograman ini
mendeskripsikan suatu masalah dengan pernyataan daripada
memecahkan
masalah dengan implementasi algoritma.
􀂾 Contoh: PROLOG
Struktur Sistem Komputer
Siklus Hidup Perangkat Lunak (Software)
Dilihat
dari Struktur Sistem Komputer dan Siklus diatas, Algoritma Pemrograman dan
Struktur data menempati posisi dibagian software dan di bagian implementasi.
Karena bagian implementasi merupakan bagian dimana pemrogram melakukan proses
coding (pembuatan program).
Komputer
Sistem
Operasi
Bhs.
Pemrograman
Program
Aplikasi
Pemakai
Hardware
Software
Brainware
Requirement
Desain Implementasi Testing
Kriteria Algoritma Menurut Donald E. Knuth
1.
Input: algoritma dapat memiliki nol atau lebih inputan dari luar.
2.
Output: algoritma harus memiliki minimal satu buah output keluaran.
3.
Definiteness
(pasti):
algoritma memiliki instruksi-instruksi yang jelas dan tidak ambigu.
4.
Finiteness
(ada
batas): algoritma harus memiliki titik berhenti (stopping role).
5.
Effectiveness
(tepat
dan efisien): algoritma sebisa mungkin harus dapat dilaksanakan dan efektif.
Contoh
instruksi yang tidak efektif adalah: A = A + 0 atau A = A * 1
Namun
ada beberapa program yang memang dirancang untuk unterminatable contohnya
Sistem Operasi.
Jenis Proses Algoritma
1.
Sequence Process: instruksi dikerjakan secara sekuensial, berurutan.
2.
Selection Process: instruksi dikerjakan jika memenuhi kriteria tertentu
3.
Iteration Process: instruksi dikerjakan selama memenuhi suatu kondisi tertentu.
4.
Concurrent Process: beberapa instruksi dikerjakan secara bersama.
Contoh Algoritma
Algoritma
menghitung luas persegi panjang:
1.
Masukkan panjang (P)
2.
Masukkan lebar (L)
3.
L ← P * L
4.
Tulis L
Dalam
Algoritma, tidak dipakai simbol-simbol / sintaks dari suatu bahasa pemrograman
tertentu, melainkan bersifat umum dan tidak tergantung pada suatu bahasa
pemrograman apapun juga. Notasi-notasi algoritma dapat digunakan untuk seluruh
bahasa pemrograman manapun.
Definisi Pseudo-code
Kode
atau tanda yang menyerupai (pseudo) atau merupakan pejelasan cara menyelesaikan
suatu masalah. Pseudo-code sering digunakan oleh manusia untuk menuliskan
algoritma.
Problem:
mencari bilangan terbesar dari dua bilangan yang diinputkan
Contoh Pseudo-code:
1.
Masukkan bilangan pertama
2.
Masukkan bilangan kedua
3.
Jika bilangan pertama > bilangan kedua maka kerjakan langkah 4, jika tidak,
kerjakan langkah 5.
4.
Tampilkan bilangan pertama
5.
Tampilkan bilangan kedua
Contoh Algoritma
1.
Masukkan bilangan pertama (a)
2.
Masukkan bilangan kedua (b)
3.
if a > b then kerjakan langkah 4
4.
print a
5.
print b
Contoh Lain Algortima dan Pseudo-code:e Algoritma
Nilai
A ditambah dengan 5 A ← A + 5
Cetak
nilai A bila lebih besar dari 10 IF A > 10 THEN PRINT A
Dari
dua bilangan A dan B, cari
bilangan
yang terbesar
IF
A > B THEN PRINT A ELSE PRINT B
Langkah-langkah dalam pemrograman komputer
1. Mendefinisikan masalah
Ini
merupakan langkah pertama yang sering dilupakan orang. Menurut hukum Murphy
(oleh Henry Ledgard):
“Semakin
cepat menulis program, akan semakin lama kita dapat menyelesaikannya”. Hal
tersebut berlaku untuk permasalahan yang kompleks. Tentukan masalahnya, apa
saja yang harus dipecahkan dengan menggunakan komputer, dan apa inputan serta
outputnya.
2. Menemukan solusi
Setelah
masalah didefinisikan, maka langkah berikutnya adalah menentukan solusi. Jika
masalah terlalu kompleks, maka ada baiknya masalah tersebut dipecah menjadi
modul-modul kecil agar lebih mudah diselesaikan. Contohnya masalah invers matriks,
maka kita dapat membagi menjadi beberapa
modul:
􀂾 meminta masukkan berupa
matriks bujur sangkar
􀂾 mencari invers matriks
􀂾 menampilkan hasil
kepada pengguna
Dengan
penggunaan modul tersebut program utama akan menjadi lebih singkat dan mudah
dilihat.
3. Memilih algoritma
Pilihlah
algoritma yang benar-benar sesuai dan efisien untuk permasalahan tersebut
4. Menulis program
Pilihlah
bahasa yang mudah dipelajari, mudah digunakan, dan lebih baik lagi jika
sudah
dikuasai, memiliki tingkat kompatibilitas tinggi dengan perangkat keras dan
platform lainnya.
5. Menguji program
Setelah
program jadi, silahkan uji program tersebut dengan segala macam
kemungkinan
yang ada, termasuk error-handlingnya sehingga program tersebut akan benar-benar
handal dan layak digunakan.
6. Menulis dokumentasi
Menulis
dokumentasi sangat penting agar pada suatu saat jika kita akan melakukan
perubahan
atau membaca source code yang sudah kita tulis dapat kita ingat ingat lagi dan
kita akan mudah membacanya. Caranya adalah dengan menuliskan komentarkomentar
kecil tentang apa maksud kode tersebut, untuk apa, variabel apa saja yang
digunakan, untuk apa, dan parameter-parameter yang ada pada suatu prosedur dan
fungsi.
7. Merawat program
Program
yang sudah jadi perlu dirawat untuk mencegah munculnya bug yang
sebelumnya
tidak terdeteksi. Atau mungkin juga pengguna membutuhkan fasilitas baru yang
dulu tidak ada.
SOAL ALGORITMA
1.
Buatlah algoritma untuk menghitung konversi suhu.dari Celcius menjadi Reamur
dan
Farenheit.
Input:
suhu dalam Celcius
Proses:
R = 4/5 * C dan F = 9/5 * C + 32
Output:
suhu dalam Reamur dan Farenheit
2.
Buatlah algoritma untuk mencari sisi miring dari suatu segitiga siku-siku, jika
diketahui
panjang
sisi yang membentuk sudut siku-siku.
Input:
a dan b, yaitu panjang sisi pembentuk sudut siku-siku
Proses:
c
= a2 + b2
Ouput:
sisi miring (c)
3.
Buatlah algoritma untuk menentukan suatu bilangan genap atau ganjil
Input:
suatu bilangan
Ouput:
genap / ganjil
4.
Buatlah algoritma untuk menentukan suatu bilangan adalah bilangan prima atau
bukan.
5.
Buatlah algoritma untuk untuk menghitung akar-akar persamaan kuadrat dengan
rumus D = B2
– 4 * A *
C
Jika
D < 0 maka didapat akar imajiner
Jika
D = 0 maka X1 = X2 yang didapat dari D = -B / (2 * A)
Jika
D > 0 maka ada dua akar X1 = −B + D/ 2 * A dan X 2 = −B − D/ 2 * A
Algoritma
adalah dasar dan pondasi untuk membuat suatu program komputer yang baik.
Program komputer yang menggunakan algoritma dan flowchart akan
menghasilkan program yang tersusun rapi. Tutorial berikut akan menjelaskan
dasar dasar algoritma komputer.
Contoh algoritma:
Input: n
Output: 1/1 +
1/2+ ... +1/n
1. jumlah = 0
2. i= 0
3. i=i+1
4. jumlah =
jumlah + 1/i
5. ulangi langkah
3 dan 4 sehingga i==n
Algoritma
pada contoh adalah algoritma untuk menghitung
Pada
langkah 1, nilai 0 diisikan pada variabel jumlah. jadi jumlah pada langkah
pertama bernilai 0. Tanda = adalah operator penugasan dengan makna “kopikan 0
kepada jumlah” atau ” gantikan nilai tertentu jumlah dengan 0″.Langkah 2 juga
menunjukkan hal yang sama namun dengan nama variabel yang berbeda. Langkah 3
menunjukkan instruksi “kopikan jumlah antara isi variabel i dan 1 kepada
variabel i”. Langkah 4 menunjukkan instruksi “kopikan jumlah antara isi
variabel jumlah dengan 1/isi variabel i pada variabel jumlah”. Langkah 5
menunjukkan instruksi untuk mengulangi langkah langkah 3 dan 4 sehingga
terpenuhi syarat i = = n. Operator = = disebut operator equalitas yang bermakna
benar dan salah. Jika i sama dengan n maka nilainya benar dan jika i tidak sama
dengan n maka nilainya salah.
Algoritma
ini dikatakan presisi karena tiap langkahnya didefinisikan secara tepat
dan tidak mengandung pemahaman yang ambigu ketika instruksi instruksinya
dilaksanakan semua orang atau mesin. Misalkan ada instruksi “jumlahkan i”.
Instruksi ini mengandung ambigu karena tidak terdapat keterangan penjumlahnya.
Algoritma ini dikatakan unik karena hasil pertengahan dalam tiap langkah
eksekusi suatu algoritma didefinisikan secara khas dan merupakan pengolahan dari
hasil eksekusi langkah sebelumnya.Misalkan pada langkah 3. Langkah 3 akan
menghasilkan nilai tertentu jika nilai i telah diketahui. Pada proses pertama
nilai i adalah hasil keluaran dari langkah 2 yaitu bernilai 0 sehingga nilai
keluaran i pada proses pertama langkah 3 adalah 1. Algoritma ini dikatakan terbatas
karena dimulai dari langkah 1 dan diakhiri jika syarat i = = n bernilai
benar. Algoritma ini input berupa nilai yang dimasukkan pada variabel n
dan memiliki output yang berupa hasil dari operasi 1/1 + 1/2+ … +1/n.
Algoritma ini dikatakan general karena algoritma ini dapat diterapkan
untuk setiap nilai real yang dimasukkan pada variabel n.
ATURAN PENULISAN DAN STRUKTUR DASAR KOMPUTER
I. Pendahuluan
Algoritma
dapat ditulis dalam notasi apapun asalkan mudah dimengerti dan dipahami.
Algoritma
dapat ditulis dalam bahasa natural/bahasa sehari-hari (seperti bahasa
Indonesia,
bahasa Inggris, dan lain-lain), contohnya adalah sebagai berikut :
Algoritma
memilih bilangan terbesar dari 3 buah bilangan :
1.
Ambil bilangan pertama dan simpan nilai bilangan pertama tersebut ke variabel maks.
2.
Ambil bilangan kedua dan bandingkan nilainya dengan maks. Jika bilangan
kedua
lebih
besar dari maks, simpan nilai bilangan kedua ke variabel maks.
3.
Ambil bilangan ketiga dan bandingkan nilainya dengan maks. Jika bilangan
ketiga
lebih
besar dari maks, simpan nilai bilangan ketiga ke variabel maks.
4.
Tampilkan nilai dari variabel maks (yang merupakan bilangan terbesar).
Catatan :
Variabel adalah tempat yang digunakan untuk menampung suatu
nilai.
Kelemahan
penulisan algoritma dalam bahasa natural adalah sering membingungkan
(ambiguous).
Cara penulisan algoritma yang lain adalah dengan menggunakan flowchart
(diagram
alir) seperti berikut :
start
finish
maks bil-1
bil-2
>
maks ?
bil-3
>
maks ?
maks bil-2
maks bil-3
ya
ya
tidak
tidak
read
bil-1, bil-2, bil-3
write
maks
Penulisan
algoritma dengan flowchart cukup bagus secara visual tetapi akan menjadi
repot
dan tidak praktis kalau algoritmanya panjang.
Cara
penulisan yang lain adalah menggunakan pseudo-code (kode semu).
Penulisan
dengan
cara ini sudah lebih dekat ke bahasa pemrograman, namun sulit dipahami oleh
orang
yang tidak mengerti bahasa pemrograman.
Pada
dasarnya tidak ada notasi yang baku dalam penulisan algoritma. Setiap orang
dapat
membuat
aturan penulisan dan notasinya sendiri. Notasi yang digunakan dalam menulis
algoritma
disebut dengan notasi algoritmik.
II. Contoh Penulisan Algoritma dengan Kode Semu (Pseudo-Code)
Berikut
ini adalah salah satu contoh penulisan algoritma :
const pi = 3.1415926535897932384626433832795
function luas_lingkaran(r)
{Algoritma
yang menghasilkan luas suatu lingkaran apabila diberikan jari-jarinya r}
l pi*r*r
return l
procedure tukar_nilai(a, b)
{Algoritma
yang mempertukarkan isi a dan isi b}
c a
a b
b c
Algoritma
yang ditulis dengan cara seperti di atas sering disebut dengan kode semu
(pseudo-code).
Kode semu pun tidak memiliki bentuk yang baku, masing-masing orang
bisa
menuliskan kode semu dalam bentuk yang berbeda.
Dari
contoh di atas tampak bahwa suatu algoritma dapat dinyatakan sebagai sebuah
fungsi
(function) atau prosedur (procedure). Perbedaan fungsi dan
prosedur adalah fungsi
menghasilkan
suatu nilai kembali sedangkan prosedur tidak. Fungsi maupun prosedur
seringkali
mempunyai parameter yang dapat digunakan untuk melewatkan suatu nilai
ke/dari
fungsi/prosedur. Pada kedua contoh di atas r, a, maupun b merupakan
contoh
parameter.
Pada
contoh di atas fungsi luas_lingkaran akan menghasilkan nilai kembali 25
jika nilai
parameter
masukan r adalah 5. Sedangkan prosedur tukar_nilai sama sekali
tidak
menghasilkan
nilai kembali, tetapi prosedur tersebut akan mempertukarkan nilai dari
variabel-variabel
yang dijadikan parameternya. Misalnya variabel x pada awalnya
bernilai
10 dan variabel y bernilai 7, maka setelah dilakukan prosedur tukar_nilai(x,
y)
maka
variabel x menjadi bernilai 7 dan variabel y menjadi bernilai 10.
Suatu fungsi
ditandai
dengan adanya kata return.
Pada
contoh di atas terdapat kata const, kata const merupakan salah
satu contoh dari apa
yang
dinamakan deklarasi. Deklarasi adalah bagian dari algoritma yang mendefinisikan
nama-nama
yang akan digunakan pada algoritma.
Deklarasi
ada bermacam-macam, antara lain :
1. Deklarasi konstanta
Konstanta
memiliki nilai yang tetap, tidak dapat diubah di bagian manapun dari
algoritma.
Contoh deklarasi konstanta :
{deklarasi
konstanta}
const pi = 3.1415926535897932384626433832795
function luas_lingkaran(r)
{Algoritma
yang menghasilkan luas suatu lingkaran apabila diberikan jari-jarinya r}
l pi*r*r
return l
{deklarasi
konstanta}
const e = 2.7182818284590452353602874713527
…
Catatan :
Bagian yang berada di dalam kurung kurawa {} disebut
dengan komentar. Fungsi
komentar adalah untuk memberikan penjelasan pada algoritma.
Komentar bukan
termasuk dari langkah-langkah algoritma yang akan
dieksekusi. Bahkan komentar
dapat dibuang begitu saja tanpa mempengaruhi kebenaran
algoritma.
2. Deklarasi tipe
Tipe
yang dimaksud di sini adalah tipe-tipe data yang digunakan di dalam algoritma.
Ada
dua
jenis tipe data yaitu tipe dasar dan tipe bentukan. Tipe dasar adalah tipe yang
tidak
perlu
dideklarasikan lagi, biasanya sudah dikenal secara umum dan didukung langsung
oleh
perangkat keras komputer. Tipe bentukan adalah tipe yang perlu dideklarasikan,
biasanya
belum dikenal secara umum dan tidak mendapat dukungan langsung dari
perangkat
keras. Contoh tipe dasar antara lain integer, real, char, dan boolean. Contoh
tipe
bentukan adalah record, enumerasi, array, dan lain lain.
Berikut
ini adalah contoh deklarasi suatu tipe bentukan :
{deklarasi
tipe}
type kompleks = record
nyata: real
imajiner: real
function norma_kompleks(c:
kompleks)
{Algoritma
yang menghasilkan norma dari suatu bilangan kompleks}
n c.nyata*c.nyata + c.imajiner*c.imajiner
return n
type person = record
name: string
age: integer
male: boolean
type tab = array [1..50] of
integers
type gender = enum {male,
female}
type matriks = array [1..20,
1..20] of integers
type pointerperson = person
…
Kadang-kadang
suatu tipe dideklarasikan hanya sebagai nama alias dari tipe yang lain :
type bilanganbulat = integers
type jeniskelamin = gender
…
3. Deklarasi variabel
Variabel
adalah tempat yang digunakan untuk menampung suatu nilai. Setiap variabel
memiliki
tipe tertentu. Berbeda dengan konstanta, nilai dari variabel dapat diubah di
berbagai
bagian dari algoritma.
Contoh
deklarasi variabel adalah sebagai berikut :
type kompleks = record
nyata: real
imajiner: real
{deklarasi
variabel}
a: kompleks
b: kompleks
procedure tukar
{Algoritma
untuk menukar isi a dan b}
temp: real {deklarasi variabel}
temp a.nyata
a.nyata b.nyata
b.nyata temp
temp a.imajiner
a.imajiner b.imajiner
b.imajiner temp
const n = 250
{deklarasi
variabel}
i: integer
f: real
c: char
b: booelan
s: string
r: array [1..30] of integers
v: array [1..n] of integers
array u[1..100]
array w[1..n]
t: tab
l: gender
m: matriks
…
Deklarasi
variabel dapat dilakukan di sebarang tempat. Variabel yang dideklarasikan di
dalam
suatu fungsi/prosedur disebut sebagai variabel lokal sedangkan variabel yang
dideklarasikan
tidak di dalam fungsi/prosedur disebut variabel global. Variabel lokal
dikenali
hanya di dalam fungsi yang bersangkutan dan tidak akan dikenali di luar fungsi
tersebut.
Varibel global dapat dikenali di sebarang tempat dari algoritma. Dalam banyak
kasus,
deklarasi variabel tidak selalu harus dilakukan. Kadang-kadang notasi algoritmik
menjadi
lebih sederhana dan lebih jelas apabila variabel-variabel yang ada pada
algoritma
tidak
dideklarasikan terlebih dahulu.
4. Deklarasi fungsi/prosedur
Pada
contoh di atas, setiap algoritma mengandung sebuah fungsi/prosedur yang dapat
disebut
sebagai fungsi/prosedur utama. Kadang-kadang fungsi/prosedur utama
memanggil
sebuah fungsi/prosedur yang lain. Maka fungsi/prosedur yang dipanggil
tersebut
juga harus dideklarasikan di dalam algoritma. Contoh algoritma yang memiliki
lebih
dari satu fungsi :
const pi = 3.1415926535897932384626433832795
function luas_lingkaran(r)
l pi*r*r
return l
function isi_silinder(r, t)
{Algoritma
yang menghasilkan volume silinder apabila diberikan jari-jari alas r dan
tinggi
t}
a luas_lingkaran(r)
v a*t
return v
Moh
Edi Wibowo
7
Berikut
ini adalah contoh algoritma yang cukup rumit penulisannya :
const N = 100
type tabs = array [1..N]
of integers
T: tabs
procedure isi_data
for i 1 to N do
T[i] random(10*N)
function isi_dan_cari_minimum
{Algoritma
untuk mengisi elemen-elemen T secara random kemudian mencari nilai
minimum
dari elemen-elemen T tersebut}
isi_data
min T[1]
for i 2 to N do
if T[i] < min then
min T[i]
return min
III. Struktur Dasar Algoritma
Algoritma
berisi langkah-langkah penyelesaian suatu masalah. Langkah-langkah tersebut
ditulis
dalam bentuk instruksi-instruksi di dalam fungsi atau prosedur. Sekelompok
instruksi
dapat membentuk sebuah blok instruksi. Sebuah blok instruksi dapat dianggap
sebagai
satu kesatuan yang tidak terpisah. Instruksi-instruksi yang tergabung dalam
sebuah
blok ditulis menjorok untuk membedakan dengan instruksi-instruksi di dekatnya
yang
tidak termasuk sebagai anggota blok.
Bentuk
instruksi yang sering ditemui adalah :
a b
Bentuk
tersebut merupakan instruksi untuk mengisi variabel a dengan nilai (isi)
dari
variabel
b. Bentuk yang mirip dengan instruksi di atas adalah :
a b + c
Bentuk
tersebut merupakan instruksi untuk mengisi variabel a dengan hasil
penjumlahan
dari
isi variabel b dengan isi variabel c. Simbol seperti dan + sering
disebut sebagai
operator.
Operator disebut sebagai operator penugasan (assignment) dan operator +
disebut
sebagai operator penjumlahan. Suatu operator bertugas melakukan operasi,
operator
akan melakukan operasi penugasan sedangkan operator + akan melakukan
operasi
penjumlahan. Data yang dikenai operasi oleh operator disebut sebagai operand,
dengan
demikian a, b, atau c pada contoh di atas disebut sebagai operand.
Satu atau
gabungan
beberapa operasi sering disebut dengan ekspresi. Jadi ekspresi terdiri dari
satu
atau
lebih operator maupun operand.
Bentuk-bentuk
instruksi yang lain masih banyak, begitu pula dengan jenis-jenis operasi
dan
operator. Setiap orang boleh membuat instruksi, operasi, dan operatornya
sendiri asal
mudah
dipahami dan dimengerti oleh orang lain.
Langkah-langkah
yang ada di dalam algoritma membentuk tiga buah struktur dasar,
yaitu
:
a.
runtutan (sequence)
b.
pemilihan (selection)
c.
pengulangan (repetition)
a. Runtutan
Runtutan
adalah instruksi-instruksi yang dikerjakan secara berurutan. Berurutan di sini
berarti
sesuai dengan urutan penulisannya, yakni sebuah instruksi dijalankan setelah
instruksi
sebelumnya selesai dikerjakan. Contoh algoritma yang hanya terdiri dari
runtutan
adalah sebagai berikut :
procedure menampilkan_tiga_kata
write(’Aku’)
write(’Cinta’)
write(’Indonesia’)
ekspresi
a + b – c
operator
operand
Moh
Edi Wibowo
9
const pi = 3.1415926535897932384626433832795
function luas_lingkaran(r)
l pi*r*r
return l
b. Pemilihan
Pemilihan
terjadi ketika suatu instruksi dikerjakan apabila suatu kondisi terpenuhi.
Misalnya
instruksi A dikerjakan karena kondisi X terpenuhi (yang juga berarti instruksi
A
tidak
dikerjakan bila kondisi X tidak terpenuhi). Dalam kasus yang lain instruksi A
dikerjakan
bila kondisi X terpenuhi, atau instruksi B yang dikerjakan bila kondisi X tidak
terpenuhi.
Contoh algoritmanya adalah sebagai berikut :
procedure tampilkan_kalimat(i)
if i = 0 then
write(’Aku ’)
write(’Cinta ’)
write(’Indonesia’)
Pada
contoh di atas, bila i bernilai 2 maka kondisi dari if (yaitu i
= 0) tidak terpenuhi
sehingga
kalimat tidak akan ditampilkan.
procedure pilih_kalimat(i)
if i = 0 then
write(’Aku ’)
write(’Cinta ’)
write(’Indonesia ’)
else
write(’Aku ’)
write(’Cinta ’)
write(’Malaysia’)
Pada
contoh di atas, bila i bernilai 2 maka kondisi dari if tidak
terpenuhi sehingga kalimat
yang
ditampilkan adalah
Aku
Cinta Malaysia
Moh
Edi Wibowo
10
procedure pilih_dari_tiga_kalimat(i)
if i = 0 then
write(’Aku ’)
write(’Cinta ’)
write(’Indonesia’)
else if i = 1 then
write(’Aku ’)
write(’Cinta ’)
write(’Malaysia’)
else
write(’Aku ’)
write(’Cinta ’)
write(’Timor Leste’)
Pada
contoh di atas, bila i bernilai 2 maka kondisi dari if yang
pertama tidak terpenuhi
sehingga
dilanjutkan ke bagian else yang pertama. Pada bagian else yang
pertama
ditemui
if yang kedua. Kondisi dari if yang kedua juga tidak terpenuhi
sehingga kalimat
yang
ditampilkan adalah
Aku
Cinta Timor Leste
Bentuk
if yang bersarang (ada if di dalam if) seperti pada contoh
algoritma yang terakhir,
kadang-kadang
dapat dituliskan dalam bentuk lain seperti berikut :
procedure pilih_dari_tiga_kalimat(i)
case i = 0 :
write(’Aku ’)
write(’Cinta ’)
write(’Indonesia’)
i = 1 :
write(’Aku ’)
write(’Cinta ’)
write(’Malaysia’)
else
write(’Aku ’)
write(’Cinta ’)
write(’Timor Leste’)
Moh
Edi Wibowo
11
c. Pengulangan
Pengulangan
terjadi ketika ada suatu instruksi yang dilakukan terus-menerus selama
suatu
kondisi terpenuhi. Bentuk pengulangan yang sering dijumpai ditampilkan pada
contoh-contoh
di bawah ini :
procedure tampilkan_n_kata(n)
for i 1 to n do
write(’contoh’)
procedure tampilkan_n_nomor(n)
for i 1 to n do
write(’Nomor ’)
write(i)
procedure tampilkan_n_kata(n)
repeat n times
write(’contoh lain’)
procedure tampilkan_n_nomor(n)
for i n downto 1 do
write(’Nomor ’, i)
Algoritma-algoritma
di atas melakukan penulisan sebanyak n putaran. Pada setiap
putaran
algoritma-algoritma tersebut menuliskan kata maupun nomor. Putaran pada
pengulangan
sering disebut dengan iterasi. Jadi algoritma-algoritma di atas melakukan n
kali
iterasi, mulai dari iterasi pertama sampai iterasi ke-n.
Pada
contoh-contoh di atas juga tampak adanya suatu kesamaan, yaitu jumlah
pengulangan
telah diketahui lebih dahulu yaitu sebanyak n kali.
Contoh
yang lain adalah sebagai berikut :
procedure tampilkan_nomor(n)
for i 3 to n step 2 do
write(i)
Algortima
di atas melakukan pengulangan sebanyak ((n - 3) ¸ 2)+ 1kali. Jika n
diberi
nilai
15 maka algoritma di atas menampilkan angka-angka
3
5 7 9 11 13 15
Contoh
yang lain lagi adalah sebagai berikut :
procedure tampilkan_nomor(n)
C {1, 3, 5, 7, 9}
for each i ÃŽ C do
write(i)
Catatan :
Bagian yang ada di antara tanda kurung kurawa {} apada
algoritma di atas bukanlah
komentar, tetapi menyatakan himpunan (set).
procedure tampilkan_nomor(n)
for each i bilangan ganjil di antara 0 dan 10
do
write(i)
Kedua
algortima di atas berfungsi untuk menampilkan angka ganjil di antara 0 dan 10.
Untuk
pengulangan yang jumlah iterasinya belum diketahui, biasanya digunakan bentuk
while dan repeat.
procedure tampilkan_beberapa_kali
i random(10)
while i ¹ 5 do
write(’contoh’)
i random(10)
Algoritma
di atas menggunakan pengulangan bentuk while. Sebelum melakukan
pengulangan,
dilakukan pengecekan terlebih dahulu pada kondisi dari while. Bila
kondisi
terpenuhi
maka iterasi dimulai, dan bila kondisi tidak terpenuhi maka pengulangan tidak
akan
pernah dilakukan. Setiap kali akan memasuki iterasi baru (pada awal iterasi),
dilakukan
pengecekan lagi pada kondisi. Iterasi dilanjutkan jika kondisi masih terpenuhi
dan
pengulangan berakhir ketika kondisi tidak terpenuhi. Algoritma di atas mungkin
akan
menampilkan kata contoh sebanyak 1 kali, 100 kali, 60 kali, atau bahkan
tidak
menampilkan
kata contoh sama sekali.
procedure tampilkan_lebih_dari_sekali
repeat
write(’contoh’)
i random(10)
until i ¹ 5
Algoritma
di atas menggunakan pengulangan bentuk repeat. Pada bentuk repeat,
pengulangan
langsung memasuki iterasi yang pertama. Pada akhir iterasi, dilakukan
pengecekan
pada kondisi dari repeat. Iterasi dilanjutkan jika kondisi terpenuhi dan
pengulangan
berakhir jika kondisi tidak terpenuhi. Algoritma di atas akan menampilkan
kata
contoh sedikitnya 1 kali.
Kadang-kadang
diperlukan untuk mengakhiri pengulangan tanpa menghiraukan jumlah
iterasi
yang sudah ditempuh maupun kondisi yang ada pada suatu saat. Pengulangan
dapat
dipaksa berakhir dengan menggunakan instruksi break.
procedure tampilkan_nomor
for i 1 to 10 do
write(i)
if i = 5 then
break
Pengulangan
pada algoritma di atas akan berakhir setelah memasuki iterasi ke-5 sehingga
yang
angka-angka yang ditampilkan adalah
1
2 3 4 5
procedure tampilkan_nomor
i 1
while i < 10 do
write(i)
if i = 5 then
break
i i + 1
Algoritma
di atas juga menampilkan angka-angka
1
2 3 4 5
Selain
instruksi break juga terdapat instruksi continue yang berfungsi
untuk melanjutkan
pengulangan
langsung menuju ke iterasi selanjutnya dengan mengabaikan instruksiinstruksi
yang
terletak setelah instruksi continue.
procedure tampilkan_nomor_dan kuadratnya
for i 1 to 6 do
write(i)
if i > 3 then
continue
write(i*i)
Algoritma
di atas akan menampilkan angka-angka
Comments
Post a Comment