ALGORITMA
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
Progam 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
1 1 2 4 3 9 4 5 6
salam kenal,
nama saya nuridin, saya karyawan dan juga mahasiswa si teknik industri , saya mempunyai beberapa pertanyaan mengenai simulasi dan algoritma karena ada tugas simulasi komputer:
1 dalam buku simulation based algorithms for markov decision process terbitan springer, pada bab 5 judul on-line control methode vis simulation, apa yang dimaksud pada judul tsb, mohon dijelaskan
2. bagaimana kita mengontrolnya.
3, apakah on-line control methode vis simulationdapat diterapkan di indonesia
terimakasih
sblmnya maaf ya saya bkan ahli komp ataupun algoritma
aslamualaikum….mas tolong kasih jawaban SOAL ALGORITMA pceudo ncode n flow chart no 1 sampai 5
tadi ya saya gunakan untuk belajar n mendalami tentang algoritma tsb…
makasih sebelumnya
aduh maaf y saya bkn ahli algoritma komp, saya anak eko akuntansi
terimakasih atas penjelasan
besok saya dapat tugas dari dosen tentang berbau algoritma
kamsahaminda
y sama2
Pak, trimaksh ats informasinya…
Ada beberapa hal yang mau saya tanyakan, saya coba memecahkan masalah ini. tlg sudah benar apa belum.
Pertanyaan:
1. Buat sebuah permasalahan
2. Buat dalam Algoritma(pseudocode)
3. Buat dalam implementasi Bahasa C
Jawab :
1. Permasalahan
Masalah yang diambil ialah bagaimana menghitung luas bujur sangkar. Rumus luas bujur sangkar ialah L=S x S.
2. Pseudocode
procedure CariLuasBujurSangkar (input s : integer,
output luas : integer)
{ Mencari luas sebuah bujur sangkar dengan rumus sisi dikali sisi
Masukan: s
Keluaran: Luas
}
Deklarasi
s : integer
Algoritma:
Luas <– s*s
endif
endfor
3. Implementasi dengan bahasa C
#include
#include
main()
{
int s,Luas;
printf(“Masukkan berapa panjang sisi bujur sangkar = “);
scanf(“%d”,&s);
Luas = s*s;
printf(“Sisi bujur sangkar ialah %d, maka luasnya ialah %d \n”,s,Luas);
getch();
}
Itu jawabannya sdh benar apa blm?
Kemudian yang kedua yaitu, saya mencoba memecahkan permasalahan menghitung luas permukaan Prisma dgn alas segiempat, Adakah solusi yang bisa bapak berikan kepada saya?
thx
Pingback: rosalia@komputer&teknologi informatika » Blog Archive » KONTRIBUSI MATEMATIKA DALAM ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
Pingback: Ambar Sulistyaningsih@komputer & TI » Blog Archive » KONTRIBUSI MATEMATIKA DALAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER
makachii…………..??????????
huhhh msh gg ngrti tntang algoritma
bisa d perjelas ;lagy gg contoh soal’e