PENGANTAR ALGORITMA
1.1. Sejarah 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
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
berangsurangsur dipakai sebagai metode perhitungan (komputasi) secara umum, sehingga kehilangan
makna kata aslinya. Dalam Bahasa Indonesia, kata Algorithm diserap menjadi Algoritma.
1.2. Konsep Algoritma dan Program
Algoritma adalah urutan langkahlangkah logis pemecahan masalah yang disusun secara
sistematis dan logis. Logis merupakan kata kunci yang berarti katakata yang ditulis harus mempunyai
nilai kebenaran yang dapat digunakan untuk menentukan keputusan benar (true) atau keputusan salah
(false).
Dalam beberapa konteks, algoritma adalah spesifikasi urutan langkah untuk melakukan pekerjaan
tertentu. Pertimbangan dalam pemilihan algoritma adalah, pertama, algoritma haruslah benar. Artinya
algoritma akan memberikan keluaran yang dikehendaki dari sejumlah masukan yang diberikan. Tidak
bukanlah algoritma yang baik.
Pertimbangan kedua yang harus diperhatikan adalah kita harus mengetahui seberapa baik hasil
yang dicapai oleh algoritma tersebut. Hal ini penting terutama pada algoritma untuk menyelesaikan
masalah yang memerlukan aproksimasi hasil (hasil yang hanya berupa pendekatan). Algoritma yang baik
harus mampu memberikan hasil yang sedekat mungkin dengan nilai yang sebenarnya.
1
Ketiga adalah efisiensi algoritma. Efisiensi algoritma dapat ditinjau dari 2 hal yaitu efisiensi
waktu dan memori. Meskipun algoritma memberikan keluaran yang benar (paling mendekati), tetapi jika
kita harus menunggu berjamjam untuk mendapatkan keluarannya, algoritma tersebut biasanya tidak akan
dipakai, setiap orang menginginkan keluaran yang cepat. Begitu juga dengan memori, semakin besar
memori yang terpakai maka semakin buruklah algoritma tersebut.
Dalam kenyataannya, setiap orang bisa membuat algoritma yang berbeda untuk menyelesaikan
suatu permasalahan, walaupun terjadi perbedaan dalam menyusun algoritma, tentunya kita mengharapkan
keluaran yang sama. Jika terjadi demikian, carilah algoritma yang paling efisien dan cepat.
Program adalah kumpulan pernyataan komputer, sedangkan metode dan tahapan sistematis dalam
program adalah algoritma. Program ditulis dengan menggunakan bahasa pemrograman. Jadi bisa disebut
bahwa program adalah suatu implementasi dari bahasa pemrograman.
Beberapa pakar memberi formula bahwa:
Program = Algoritma + Bahasa (Struktur Data)
Bagaimanapun juga struktur data dan algoritma berhubungan sangat erat pada sebuah program. Algoritma
yang baik tanpa pemilihan struktur data yang tepat akan membuat program menjadi kurang baik,
demikian juga sebaliknya.
Pembuatan algoritma mempunyai banyak keuntungan di antaranya:
1. Pembuatan atau penulisan algoritma tidak tergantung pada bahasa pemrograman manapun, artinya
penulisan algoritma independen dari bahasa pemrograman dan komputer yang melaksanakannya.
2. Notasi algoritma dapat diterjemahkan ke dalam berbagai bahasa pemrograman.
3. Apapun bahasa pemrogramannya, output yang akan dikeluarkan sama karena algoritmanya sama.
Beberapa hal yang perlu diperhatikan dalam membuat algoritma:
1. Teks algoritma berisi deskripsi langkahlangkah penyelesaian masalah. Deskripsi tersebut dapat
ditulis dalam notasi apapun asalkan mudah dimengerti dan dipahami.
2. Tidak ada notasi yang baku dalam penulisan teks algoritma seperti notasi bahasa pemrograman.
Notasi yang digunakan dalam menulis algoritma disebut notasi algoritmik.
3. Setiap orang dapat membuat aturan penulisan dan notasi algoritmik sendiri. Hal ini dikarenakan teks
algoritma tidak sama dengan teks program. Namun, supaya notasi algoritmik mudah ditranslasikan ke
dalam notasi bahasa pemrograman tertentu, maka sebaiknya notasi algoritmik tersebut
berkorespondensi dengan notasi bahasa pemrograman secara umum.
4. Notasi algoritmik bukan notasi bahasa pemrograman, karena itu pseudocode dalam notasi algoritmik
2
tidak dapat dijalankan oleh komputer. Agar dapat dijalankan oleh komputer, pseudocode dalam notasi
algoritmik harus ditranslasikan atau diterjemahkan ke dalam notasi bahasa pemrograman yang dipilih.
Perlu diingat bahwa orang yang menulis program sangat terikat dalam aturan tata bahasanya dan
spesifikasi mesin yang menjalannya.
5. Algoritma sebenarnya digunakan untuk membantu kita dalam mengkonversikan suatu permasalahan
ke dalam bahasa pemrograman.
6. Algoritma merupakan hasil pemikiran konseptual, supaya dapat dilaksanakan oleh komputer,
algoritma harus ditranslasikan ke dalam notasi bahasa pemrograman. Ada beberapa hal yang harus
diperhatikan pada translasi tersebut, yaitu:
a. Pendeklarasian variabel
pemrograman apabila tidak semua bahasa pemrograman membutuhkannya.
b. Pemilihan tipe data
Apabila bahasa pemrograman yang akan digunakan membutuhkan pendeklarasian variabel maka
perlu hal ini dipertimbangkan pada saat pemilihan tipe data.
c. Pemakaian instruksiinstruksi
Beberapa instruksi mempunyai kegunaan yang sama tetapi masingmasing memiliki kelebihan dan
kekurangan yang berbeda.
d. Aturan sintaksis
Pada saat menuliskan program kita terikat dengan aturan sintaksis dalam bahasa pemrograman
yang akan digunakan.
e. Tampilan hasil
Pada saat membuat algoritma kita tidak memikirkan tampilan hasil yang akan disajikan. Halhal
teknis ini diperhatikan ketika mengkonversikannya menjadi program.
f. Cara pengoperasian compiler atau interpreter.
Bahasa pemrograman yang digunakan termasuk dalam kelompok compiler atau interpreter.
1.3. Algoritma Merupakan Jantung Ilmu Informatika
Algoritma adalah jantung ilmu komputer atau informatika. Banyak cabang ilmu komputer yang
mengarah ke dalam terminologi algoritma. Namun, jangan beranggapan algoritma selalu identik dengan
ilmu komputer saja. Dalam kehidupan seharihari pun banyak terdapat proses yang dinyatakan dalam
suatu algoritma. Caracara membuat kue atau masakan yang dinyatakan dalam suatu resep juga dapat
3
disebut sebagai algoritma. Pada setiap resep selalu ada urutan langkahlangkah membuat masakan. Bila
langkahlangkahnya tidak logis, tidak dapat dihasilkan masakan yang diinginkan. Ibuibu yang mencoba
suatu resep masakan akan membaca satu per satu langkahlangkah pembuatannya lalu ia mengerjakan
proses sesuai yang ia baca. Secara umum, pihak (benda) yang mengerjakan proses disebut pemroses
(processor). Pemroses tersebut dapat berupa manusia, komputer, robot atau alatalat elektronik lainnya.
Pemroses melakukan suatu proses dengan melaksanakan atau “mengeksekusi” algoritm a yang
menjabarkan proses tersebut.
Algoritma adalah deskripsi dari suatu pola tingkah laku yang dinyatakan secara primitif yaitu
aksiaksi yang didefenisikan sebelumnya dan diberi nama, dan diasumsikan sebelumnya bahwa aksiaksi
tersebut dapat kerjakan sehingga dapat menyebabkan kejadian. Melaksanakan algoritma berarti
mengerjakan langkahlangkah 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:
1. Mengerti setiap langkah dalam algoritma.
2. Mengerjakan operasi yang bersesuaian dengan langkah tersebut.
Contoh : Algoritma membuat secangkir kopi.
1. Siapkan Gelas, Kopi, Gula, sendok dan Air Panas
2. Masukan kopi, gula kedalam gelas
3. Tuangkan Air Panas kedalam gelas
4. Aduk kopi, gula, dan air panas dengan sendok sampai larut
5. Kopi siap dinikmati
1.4. Mekanisme Pelaksanaan Algoritma oleh Pemroses
Komputer hanyalah salah satu pemroses. Agar dapat dilaksanakan oleh komputer, algoritma harus
ditulis dalam notasi bahasa pemrograman sehingga dinamakan program. Jadi program adalah perwujudan
atau implementasi teknis algoritma yang ditulis dalam bahasa pemrograman tertentu sehingga dapat
dilaksanakan oleh komputer. Kata “algoritma” dan “program” seringkal i dipertukarkan dalam
penggunaannya. Misalnya ada orang yang berkata seperti ini: “program pengurutan data menggunakan
algoritma selection sort”. Atau pertanyaan seperti ini: “bagaimana algoritma dan program
menggambarkan g rafik tersebut?”. Jika Anda sudah memahami pengertian algoritma yang s udah
disebutkan sebelum ini, Anda dapat membedakan arti kata algoritma dan program. Algoritma adalah
4
langkahlangkah penyelesaikan masalah, sedangkan program adalah realisasi algoritma dalam bahasa
pemrograman.
Program ditulis dalam salah satu bahasa pemrograman dan kegiatan membuat program disebut
pemrograman (programming). Orang yang menulis program disebut pemrogram (programmer). Tiap
tiap langkah di dalam program disebut pernyataan atau instruksi. Jadi, program tersusun atas sederetan
instruksi. Bila suatu instruksi dilaksanakan, maka operasioperasi yang bersesuaian dengan instruksi
tersebut dikerjakan komputer.
Secara garis besar komputer tersusun atas empat komponen utama yaitu, piranti masukan, piranti
keluaran, unit pemroses utama, dan memori. Unit
pemroses utama (Central Processing Unit – CPU) adalah “otak” komputer, yang berfungsi mengerjakan
operasioperasi dasar seperti operasi perbandingan, operasi perhitungan, operasi membaca, dan operasi
menulis. Memori adalah komponen yang berfungsi menyimpan atau mengingatingat. Yang disimpan di
informasi (sesuatu yang diolah oleh operasioperasi). Piranti masukan dan keluaran (I/O devices) adalah
alat yang memasukkan data atau program ke dalam memori, dan alat yang digunakan komputer untuk
mengkomunikasikan hasilhasil aktivitasnya. Contoh piranti masukan antara lain, papan kunci
(keyboard), pemindai (scanner), dan cakram (disk). Contoh piranti keluaran adalah, layar peraga
(monitor), pencetak (printer), dan cakram.
Mekanisme kerja keempat komponen di atas dapat dijelaskan sebagai berikut. Mulamula program
dimasukkan ke dalam memori komputer. Ketika program dilaksanakan (execute), setiap instruksi yang
telah tersimpan di dalam memori dikirim ke CPU. CPU mengerjakan operasi operasi yang bersesuaian
dengan instruksi tersebut. Bila suatu operasi memerlukan data, data dibaca dari piranti masukan, disimpan
di dalam memori lalu dikirim ke CPU untuk operasi yang memerlukannya tadi. Bila proses menghasilkan
keluaran atau informasi, keluaran disimpan ke dalam memori, lalu memori menuliskan keluaran tadi ke
piranti keluaran (misalnya dengan menampilkannya di layar monitor).
5
PERTEMUAN 2
STRUKTUR DASAR ALGORITMA DAN PROGRAM FLOWCHART
2.1. Struktur Penulisan Algoritma
Struktur dasar penulisan algoritma terdiri dari tiga bagian yaitu :
1. Judul
Digunakan untuk menulis komentar mengenai algoritma seperti : cara kerja program kondisi awal dan
kondisi akhir algoritma.
2. Kamus
Digunakan untuk mendefinisikan nama konstanta, nama type, nama variable, nama prosedur dan
nama fungsi yang digunakan dalam algoritma.
3. Algoritma
Digunakan untuk menuliskan algoritma dalam menyelesaikan masalah secara terstruktur.
Ketiga bagian algoritma diatas dapat dituliskan dengan struktur :
Algoritma NamaAlgoritma Deklarasi
[ Const
NamaKonstatnta = Nilai ]
[ Type
NamaType = Type Baru
End]
[ Var
Namavariabel : Typedata]
[ Procedure/Function NamaModul [(Parameter)] [var
Namavar : Type]
Begin
End ] Algoritma :
. Input
6
. Proses
. Output
2.2. Constanta, Variabel dan Type Data
Constanta adalah data yang nilainya tidak dapat berubah walaupun ada operasi selama proses
eksekusi.
Variabel adalah data yang nilainya dapat berubah karena ada operasi selama proses eksekusi.
Aturan penamaan variabel dan constanta :
- Diawali dengan huruf
- Diikuti huruf, angka
- Diantara character tidak dapat menggunakan Spesial character kecuali under score (_)
Contoh :
A, A1, A2b, A_B, Pi
Type Data digunakan untuk menentukan nilai data yang terkandung dalam variabel. Seperti :
Char, string, Numerik, date, time, boolean
Char : huruf, angka, tanda baca dan simbol.
String : gabungan dua atau lebih character.
Numerik : digit angka 09 untuk bilangan desimal data numeric dibagi dua : Numerik bulat :
byte, integer, word, longint
Numerik pecahan : real, single, double
Date : data tanggal dd/mm/yyyy
Time : data waktu hh:mm:ss
Boolean : data logika true dan false
Tabel Type Data Numerik Bulat
7
Tabel Type Data Numerik Pecahan
2.3. Statement Input – Output
Statement Input – Output digunakan untuk menerima data masukan dan menampilkan hasil ke media
keluaran.
Statement Input : Read(Namavar) Contoh :
Read(A) Dalam bahasa C++ : scanf atau
cin
Statement Output :
Write ([Literal,] Namavar)
Literal dapat berbentuk keterangan yang penulisannya diapit tanda petik tunggal atau petik ganda.
Contoh :
Write(A) Write(‘Nilai A = ‘, A) Dalam bahasa
C++ : printf atau cout.
2.4. Proses dan Operasi
Proses digunakan untuk melakukan pengolahan data dengan menggunakan notasi asignment ( ).
Contoh : A B+C Dalam bahasa C++ : =
Contoh : A = B + C
Operasi digunakan untuk melakukan proses pengoperasian data terdiri dari : Operasi Aritmatika :
^, *, /, \, +, , mod Operasi Relasional : <,
>, =, <=, >=, <> Operasi Logika : And, Or,
9
Not, Xor 1 : True
0 : False Tabel kebenaran Operasi Logika :
Input Output
1 2 AND OR XOR
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0
Tabel kebenaran Operasi Logika NOT :
INPUT 1 OUTPUT NOT
0 1
1 0
2.5. Struktur Dasar Algoritma
Algoritma berisi langkahlangkah penyelesaian suatu masalah. Langkahlangkah tersebut dapat
berupa runtunan aksi (sequence), pemilihan aksi (selection), pengulangan aksi (iteration) atau kombinasi
dari ketiganya. Jadi struktur dasar pembangunan algoritma ada tiga, yaitu:
1. Struktur Runtunan
Digunakan untuk program yang pernyataannya sequential atau urutan.
2. Struktur Pemilihan
Digunakan untuk program yang menggunakan pemilihan atau penyeleksian kondisi.
3. Struktur Perulangan
Digunakan untuk program yang pernyataannya akan dieksekusi berulangulang.
2.6. Tahapan Pembuatan Algoritma / Program
Langkahlangkah yang dilakukan dalam menyelesaikan masalah dalam
pemrograman dengan komputer adalah:
1. Definisikan Masalah
Berikut adalah halhal yang harus diketahui dalam analisis masalah supaya kita mengetahui
bagaimana permasalahan tersebut:
a. Kondisi awal, yaitu input yang tersedia.
b. Kondisi akhir, yaitu output yang diinginkan.
c. Data lain yang tersedia.
d. Operator yang tersedia.
e. Syarat atau kendala yang harus dipenuhi.
10
Contoh kasus:
Menghitung biaya percakapan telepon di wartel. Proses yang perlu
diperhatikan adalah:
a. Input yang tersedia adalah jam mulai bicara dan jam selesai bicara.
b. Output yang diinginkan adalah biaya percakapan.
c. Data lain yang tersedia adalah besarnya pulsa yang digunakan dan biaya per pulsa.
d. Operator yang tersedia adalah pengurangan (), penambahan (+), dan perkalian (*).
e. Syarat kendala yang harus dipenuhi adalah aturan jarak dan aturan waktu.
2. Buat Algoritma dan Struktur Cara Penyelesaian
Jika masalahnya kompleks, maka dibagi ke dalam modulmodul. Tahap penyusunan algoritma
seringkali dimulai dari langkah yang global terlebih dahulu. Langkah global ini diperhalus sampai
menjadi langkah yang lebih rinci atau detail. Cara pendekatan ini sangat bermanfaat dalam pembuatan
algoritma untuk masalah yang kompleks. Penghalusan langkah dengan cara memecah langkah
menjadi beberapa langkah. Setiap langkah diuraikan lagi menjadi beberapa langkah yang lebih
sederhana. Penghalusan langkah ini akan terus berlanjut sampai setiap langkah sudah cukup rinci dan
tepat untuk dilaksanakan oleh pemroses.
3. Menulis Program
Algoritma yang telah dibuat, diterjemahkan dalam bahasa komputer menjadi sebuah program. Perlu
diperhatikan bahwa pemilihan algoritma yang salah akan menyebabkan program memiliki untuk kerja
yang kurang baik. Program yang baik memiliki standar penilaian:
a. Standar teknik pemecahan masalah
Teknik TopDown
Teknik pemecahan masalah yang paling umum digunakan. Prinsipnya adalah suatu masalah yang
kompleks dibagibagi ke dalam beberapa kelompok masalah yang lebih kecil. Dari masalah yang
kecil tersebut dilakukan analisis. Jika dimungkinkan maka masalah tersebut akan dipilah lagi menjadi
subbagiansubbagian dan setelah itu mulai disusun langkahlangkah penyelesaian yang lebih detail.
Teknik BottomUp
Prinsip teknik bottom up adalah pemecahan masalah yang kompleks dilakukan dengan
menggabungkan prosedurprosedur yang ada menjadi satu kesatuan program sebagai penyelesaian
masalah tersebut.
b. Standar penyusunan program
11
- Kebenaran logika dan penulisan.
- Waktu minimum untuk penulisan program.
- Kecepatan maksimum eksekusi program.
- Ekspresi penggunaan memori.
- Kemudahan merawat dan mengembangkan program.
- User Friendly.
- Portability.
- Pemrograman modular. 4. Mencari
Kesalahan
a. Kesalahan sintaks (penulisan program).
b. Kesalahan pelaksanaan: semantik, logika, dan ketelitian.
5. Uji dan Verifikasi Program
Pertama kali harus diuji apakah program dapat dijalankan. Apabila program tidak dapat dijalankan
maka perlu diperbaiki penulisan sintaksisnya tetapi bila program dapat dijalankan, maka harus diuji
dengan menggunakan datadata yang biasa yaitu data yang diharapkan oleh sistem. Contoh data
ekstrem, misalnya, program menghendaki masukan jumlah data tetapi user mengisikan bilangan
negatif. Program sebaiknya diuji menggunakan data yang relatif banyak.
6. Dokumentasi Program
Dokumentasi program ada dua macam yaitu dokumentasi internal dan dokumentasi eksternal.
Dokumentasi internal adalah dokumentasi yang dibuat di dalam program yaitu setiap kita menuliskan
baris program sebaiknya diberi komentar atau keterangan supaya mempermudah kita untuk
mengingat logika yang terdapat di dalam instruksi tersebut, hal ini sangat bermanfaat ketika suatu saat
program tersebut akan dikembangkan. Dokumentasi eksternal adalah dokumentasi yang dilakukan
dari luar program yaitu membuat user guide atau buku petunjuk aturan atau cara menjalankan
program tersebut.
7. Pemeliharaan Program
a. Memperbaiki kekurangan yang ditemukan kemudian.
b. Memodifikasi, karena perubahan spesifikasi.
2.6. Program Flowchat
12
Contoh : Buat Algoritma untuk menghitung luas persegi panjang :
Algoritma Hitungluaspp
{ membaca data panjang dan lebar persegi panjang, menghitung luas persegi panjang dan mencetak
luas persegi panjang ke piranti keluaran }
Deklarasi
P, L, Luas : integer
Algoritma :
Read(P, L) atau
P 10
L 5 Luas P*L
write(‘luas persegi panjang ‘, luas)
Mulai
P,L,Luas : integer
Read (P,L)
Luas ← P*L
Write (Luas)
Selesai
13
Translasi dalam bahasa C++
// Program Menghitung Luas Persegi Panjang #include <iostream.h>
#include <conio.h> void main ()
int P,L, Luas;
cout <<”Panjang = “; cin >> P;
cout <<”Lebar = “; cin >> L;
Luas = P * L;
cout << "Luas Persegi Panjang = " << Luas; getch();
Tambahkan library #include <conio.h> diawal dan
Tambahkan statement getch(); sebelum akhir blok main } untuk menghentikan proses sementara
sebelum keluar program
// Program Menghitung Luas Persegi Panjang #include <stdio.h>
void main ()
int P,L, Luas; printf("Panjang = ");
scanf("%d",&P); printf("Lebar = ");
scanf("%d",&L); Luas = P * L;
printf("Luas Persegi Panjang = %d", Luas);
Output program :
14
Pertemuan 3
Struktur Kontrol If Else
3.1. Struktur Kontrol If Kondisi Tunggal
Digunakan untuk melakukan penyeleksian kondisi tunggal yang dapat menghasilkan dua
keputuasn, keputusan kondisi benar dan keputusan kondisi salah.
Syntak penulisan algoritma If kondisi tunggal : If (kondisi) then
Statement1
Else
Statement
Endif
Syntak penulisan If kondisi tunggal dalam C++ : if (kondisi)
{ Statement1;
}
else
{ Statement2;
}
Keterangan :
Apabila kondisi benar maka statement1 dikerjakan dan apabila kondisi salah maka statement 2
dikerjakan. Apabila digambarkan dalam program flowchart maka struktur kondisi dapat digambarkan :
True
Kondisi Statement1
False
15
Statement2
Contoh :
Buatlah algoritma dan program C++ untuk memasukan data dua bilangan a dan b dan tentukan apakah
a>b atau sebaliknya.
Algoritma If tunggal
Deklarasi
a,b: integer ket : string
Algoritma : Read(a,b) if a>b then
ket ‘a lebih besar b’
else
ket ‘a lebih kecil b’
endif
write(ket)
Algoritma diatas dapat diimplementasikan dalam struktur program flowchart :
Mulai
A,b : integer
Ket : string
Read(a,b)
TRUE
“a lebih besar
a>b Ket b”
FALSE
“a lebih kecil
Ket b”
16
Write(ket)
Selesai
tunggal menghasilkan dua buah keputusan. Carilah kasus tersebut dan implementasikan dengan
algoritma.
Pertemuan 4
Struktur Kontrol If Majemuk
4.1. Struktur Kontrol If Majemuk
Digunakan untuk melakukan penyeleksian terhadap N kondisi dengan keputusan sebanyak N+1.
Syntak penulisan algoritma If kondisi majemuk : If (kondisi1) then
Statement1
Else
If (kondisi2) then Statement2
Else
If (kondisiN) then
StatementN
Else
Statement N+1
Endif
Endif
Endif
Syntak penulisan If kondisi majemuk dalam bahasa C++ :
if (kondisi1)
{ Statement1;
}
else
if (kondisi2)
17
{ Statement2;
else
if (kondisiN)
{ StatementN;
else
{ Statement N+1;
Apabila kondisi1 benar maka statement1 dikerjakan, apabila kondisi2 benar maka statement 2 dikerjakan
dan seterusnya.
Contoh:
Buatlah algoritma untuk menentukan nama hari berdasarkan nomor hari dgn ketentuan sebagai berikut :
No. hari Nama Hari
1 Senin
2 Selasa
3 Rabu
4 Kamis
5 Jumat
6 Sabtu
7 Minggu
Algoritma Seleksihari
Deklarasi
Nh : integer
Nmh : String
Algoritma :
Read(nh)
if nh=1 then
nmh ’Senin’
else
if nh=2 then
18
nmh ’Selasa’
else
if nh=3 then nmh ’Rabu’
else
if nh=4 then
nmh ’Kamis’
else
if nh=5 then
nmh ’Jum’at’
else
if nh=6 then
nmh ’Sabtu’
else
nmh ’Minggu’
Endif
Endif
Endif
Endif
Endif
Endif
Write(‘nama hari : ‘,nmh)
Pertemuan 5
Struktur Kontrol Case Of
Struktur control ini digunakan untuk menyeleksi expresi (ungkapan yang akan diseleksi) yang
mempunyai nilai expresi majemuk. Expresi dapat berbentuk data numurik bulat atau character.
Syntax penulisan algoritma case : case expression of
Nexp1 : statement1
...
NexpN: statementN otherwise
statementN+1 endcase
19
Syntax penulisan case dalam C++ : switch (expression)
case Nexp1 : statement1; break;
case NexpN : statementN; break;
default : statementN+1;
Apabila Nexp1 sama dengan Expression maka stattemen1 dikerjakan
Apabila Nexp2 sama dengan Expression maka stattemen2 dikerjakan dan seterusnya sampai NexpN. Jika
tidak ada yang benar maka statementN+1 dikerjakan.
Contoh :
Buat Algoritma untuk menentukan bobot nilai berdasarkan mutu ynag diperoleh mahasiswa Jika A maka
4, B 3, C 2, D 1 dan E 0.
Algoritma ContohCase
Deklarasi
mt : char bn : integer
Algoritma : Read(mt) case mt
'A' : bn← 4 'B' : bn← 3 'C' : bn← 2
'D' : bn← 1
otherwise
bn ← 0 endcase write(bn)
Pertemuan 6
Struktur Kontrol Pengulangan While do
Struktur pengulangan digunakan untuk mengurangi penulisan algoritma/program yang sama agar
tidak dituliskan sebanyak proses yang akan terjadi dengan tujuan untuk efisiensi struktur penulisan agar
hemat dalam pemakaian memori komputer.
Terdapat 3 struktur iterasi yang dapat digunakan dalam algoritma yaitu :
1. While … Do
2. Repeat … Until
3. For … Do
20
6.1. Struktur While do
Adalah struktur pengulangan yang dapat digunakan untuk mengulang statement apabila kondisi
pengulangan bernilai benar dan dihentikan apabila struktur pengulangan bernilai salah.
Syntax penulisan while adalah : While (Kondisi) do
Statement
EndWhile
Digunakan untuk pengulangan data numerik dan Non Numerik. Syarat Pengulangan
While … Do
1. Variabel yang akan dijadikan kondisi pengulangan harus diinisialisasi
2. Pengulangan dilakukan selama kondisi bernilai benar dan dihentikan jika kondisi bernilai salah.
3. Perlu ada operasi untuk merubah kondisi
4. Pengulangan dapat dilaksanakan minimal Nol kali.
Syntax penulisan while dalam C++ :
while (Kondisi)
Statement;
Contoh :
Buatlah algoritma untuk mencetak ”STIKOM POLTEK CIREBON” sebanyak 10
kali pencetakan !
Algoritma Pengulangan1
Deklarasi
c : integer
Algoritma :
c 1 1
While c <= 10 do 2
21
c c + 1 3
EndWhile
Algoritma diatas dapat diterapkan kedalam program C++ :
// Program struktur control pengulangan while #include <stdio.h>
void main ()
int c; c = 1;
while (c <= 10)
printf (“STIKOM POLTEK CIREBON \n” ); c = c + 1;
Latihan :
Buatlah algoritma dan program untuk menampilkan 10 bilangan asli dan hitung berapa jumlah total 10
bilangan tersebut !
Output : 1 2 3
10
Total 10 Bilangan = ….
Pertemuan 7
Studi Kasus Algoritma
1. Buatlah algoritma untuk menentukan nilai mutu dan bobot nilai yang diperoleh mahasiswa
berdasarkan nilai yang diperolah dengan ketentuan :
22
2. Buatlah algoritma untuk membuat calculator sederhana dengan memasukan data dua buah bilangan
dan operatornya (+,,*,/) dan hitunglah berapa hasil operasi berdasarkan bilangan yang sudah saudara
masukan. Algoritma dapat berulang dengan menekan huruf S.
Pertemuan 8
Struktur Kontrol Pengulangan Repeat Until
8.1. Struktur Repeat Until
Adalah struktur pengulangan yang dapat digunakan untuk mengulang statement apabila kondisi
pengulangan bernilai salah dan dihentikan apabila struktur pengulangan bernilai benar.
Syntax penulisan Repeat Until adalah :
Repeat
Statement
Until (Kondisi)
Digunakan untuk pengulangan data numerik dan Non Numerik. Syarat Pengulangan
Repeat Until
1. Variabel yang akan dijadikan kondisi pengulangan tidak harus diinisialisasi
2. Pengulangan dilakukan selama kondisi bernilai salah dan dihentikan jika kondisi bernilai benar.
3. Perlu ada operasi untuk merubah kondisi.
4. Pengulangan dapat dilaksanakan minimal satu kali.
Syntax penulisan dalam C++ : do
Statement;
} while (Kondisi);
Contoh :
Buatlah algoritma untuk menampilkan 10 bilangan asli dan hitung berapa jumlah
total 10 bilangan tersebut !
23
Output :
10
Total 10 Bilangan = ….
Algoritma Pengulangan2
Deklarasi
Bil, Total : integer
Algoritma :
Bil 1 1
Total 0
Repeat
Write(Bil)
Total Total +Bil
Bil Bil + 1 3
Until Bil > 10 2
Write(Total)
End
Penerapan kedalam bahasa C++ :
/ Program struktur control pengulangan do while #include <stdio.h>
void main ()
int Bil,Total; Bil = 1; Total = 0; do
{
printf (“%d “,Bil,”\n” ); Total = Total + Bil; Bil
= Bil + 1;
} while (Bil <= 10);
Printf(“Total 10 Bilangan = %d“,Total);
24
}
Latihan :
1. Buatlah algoritma untuk menampilkan bilangan ganjil dari 120 !
2. Buatlah algoritma untuk menampilkan bilangan genap dari 120 !
Pertemuan 9
Struktur Kontrol Pengulangan For do
9.1. Struktur For do
Adalah struktur pengulangan Numerik yang dapat digunakan untuk mengulang statement dari N
Sampai N1.
Syntax penulisan For do adalah :
For varcounter = N To/DownTo N1 [Step N] Do
Statement
EndFor
Syntax penulisan for dalam C++ : for
(varcounter=N;Kondisi;counter)
Statement;
Digunakan untuk pengulangan data numerik .
Syarat Pengulangan For do
1. Inisialisasi varcounter dapat langsung ditentukan pada N dan N1 (dapat naik atau turun)
2. Pengulangan dilakukan dari N sampai dengan N1.
3. Tidak perlu ada operasi untuk merubah kondisi karena setiap terjadi pengulangan nilai varcounter
otomatis bertambah atau berkurang 1 atau step.
Contoh :
Buatlah algoritma untuk menampilkan 10 bilangan asli dan hitung berapa jumlah
25
total 10 bilangan tersebut !
Output :
10
Total 10 Bilangan = ….
Algoritma Pengulangan3
Deklarasi
Bil, Total : integer
Algoritma :
Total 0
For Bil = 1 to 10 do
Write(Bil)
Total Total + Bil
Endfor
Writeln(‘Total 10 Bilangan = ‘,Total)
Penerapan kedalam bahasa C++ :
/ Program struktur control pengulangan for #include <stdio.h>
void main ()
int Bil,Total; Total = 0;
for (Bil=1;Bil<=10;Bil++)
{
printf (“%d “,Bil,”\n” ); Total = Total + Bil;
Printf(“Total 10 Bilangan = %d“,Total);
26
Latihan :
1. Buat program untuk menampilkan deret : 1,2,4,8,16,25,36,49,64
2. Buat program untuk menampilkan deret : 10,9,7,4,0
Pertemuan 10
Struktur Kontrol Pengulangan Bersarang
menyelesaikan masalah yang tidak dapat diselesaikan dalam loop tunggal. Pengulangan bersarang ini
dapat dua, tiga atau lebih disesuaikan dengan solusi penyelesaian masalah algoritma yang akan
digunakan. Penerapan struktur ini dapat seragam atau digabung dengan sintak penulisan sebagai berikut :
Struktur 1 :
While (Kondisi 1)
While (Kondisi 2)
Statement
endwhile
Endwhile
Struktur 2 :
Repeat
Repeat
Statement
Until (Kondisi2)
Until (Kondisi1)
Struktur 3 :
27
For varcounter1 = N To/DownTo N1 [Step N] Do
For varcounter2 = N To/DownTo N1 [Step N] Do
Statement
EndFor
EndFor
Menentukan Loop dalam dan Loop luar
Ditentukan berdasarkan pergerakan :
Loop bergerak pertama adalah loop dalam
Loop bergerak berikutnya adalah loop luar
Contoh :
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
Loop bergerak pertama adalah k, dan loop bergerak kedua adalah b. maka k adalah loop dalam dan b
adalah loop luar. Apabila diimplementasikan ke algoritma adalah :
Algoritma NLoop
Deklarasi
b,k: Integer Algoritma :
b=1
28
While b <=4 do
For k = 1 to 5 do write( k)
endfor
writeln
b=b+1
Endwhile
Apabila algoritma diatas diimplementasikan kedalam program C++ :
/ Program struktur control pengulangan Nested Loop #include <stdio.h>
void main ()
int b,k; b = 1;
while (b<=4)
for (k=1;k<=5;k++)
printf (“%d “,k );
b++;
Printf(“\n”);
Latihan :
Buat Algoritma untuk menampilkan deret dibawah ini :
1 2
1 2 3
1 2 3 4 dan
1 2 3 4 5
1 2 3 4
1 2 3
1 2
29
1
Pertemuan 11
Modul Program Procedure
Modul digunakan untuk membagi algoritma/program yang besar menjadi potongan program yang
lebih kecil sehingga program yang besar dapat diselesaikan oleh beberapa orang secara terpisah ( team
work ) dengan tujuan untuk mempercepat pembuatan algoritma/program.
Modul dibagi dua yaitu :
Procedure
Adalah modul program yang dapat digunakan untuk membawa suatu nilai yang dapat dipakai
untuk modul itu sendiri, modul yang lain atau program utama.
Beberapa aturan Translasi Notasi algoritma prosedur ke dalam Notasi bahasa C++ :
1. Pendefinisian prosedur ditulis di luar blok program utama (main). Kecuali jika direalisasikan
prosedur ditulis sebelum blok main() sebagai purwarupa saja ( purwarupa prosedur hanya berupa
header dari prosedur tersebut ), maka pendeklarasian purwarupa prosedur tidak diperlukan lagi.
2. Dalam bahasa C, tidak dikenal istilah prosedur. Semua modul program adalah fungsi. Prosedur adalah
fungsi yang tidak mengembalikan nilai apapun. Karena itu, return value untuk prosedur adalah void,
(yang artinya ‘kosong’).
ditulis setelah setelah nama prosedur tersebut.
4. Semua parameter dalam bahasa C adalah parameter masukan.
Oleh karena itu, semua argument parameter actual dilewatkan sebagai “ by value”. Ini artinya nilai
parameter actual disalin ke parameter f ormal yang bersesuaian.
Suatu cara untuk memperoleh efek parameter keluaran maupun efek parameter masukan / keluaran adalah
melewatkan pointer terhadap parameter actual dengan menambahkan karakter “&” di awal nama
parameter actual ya ng berjenis parameter keluaran atau masukan / keluaran.
Tanda “&” menyatakan alamat dari peubah.
Sedangkan parameter formal yang berjenis keluaran atau masukan / keluaran ditambahkan dengan
karakter “*” didepannya.
30
Tanda “*” menyatakan operator indirect.
procedure NamaProsedur(deklarasi parameter,jika ada)
{spesifikasi prosedur,berisi penjelasan tentang apa yang dilakukan oleh prosedur ini. K.Awal : keadaan
sebelum prosedur dilaksanakan.
K.Akhir : kedaan setelah prosedur dilaksanakan. }
DEKLARASI
{ semua nama yang dipakai didalam prosedur dan hanya berlaku local didalam prosedur
didefinisikan disini }
DESKRIPSI :
{ badan prosedur, barisi urutan instruksi}
· Cara memanggil prosedur :
NamaProsedur
Jika prosedur tidak mempunyai parameter,
· atau
NamaProsedur(parameter actual)
Jika prosedur mengandung parameter.
BAHASA C++
void NamaProsedur(deklarasi parameter,jika ada)
/* Spesifikasi prosedur, berisi penjelasan tentang apa yang dila kukan oleh prosedur ini.
*/
/* K.Awal : keadaan sebelum prosedur dilaksanakan. */ /* K.Akhir : keadaan
setelah prosedur dilaksanakan. */
/* DEKLARASI */
/* semua nama yang dipakai dalam prosedur dan hanya berlaku lok al di dalam prosedur
didefinisikan di sini */
/* DESKRIPSI */
/* badan prosedur, berisi kumpulan instruksi */
· Cara memanggil prosedur :
NamaProsedur( );
31
Jika prosedur tidak mempunyai parameter,
· atau
NamaProsedur(parameter actual);
Jika prosedur mengandung parameter.
Contoh translasi prosedur tanpa parameter
ALGORITMA
Prosedur :
procedure HitungLuasSegitiga
{ Menghitung luas segitiga dengan rumus L = (alas x tinggi)/2 } { K.Awal : sembarang }
{ K.Akhir : luas segitiga tercetak. }
DEKLARASI
alas : riil { panjang alas segitiga, dalam cm } tinggi : riil { tinggi segitiga,
dalam cm }
2
luas : riil { luas segitiga, dalam cm }
DESKRIPSI read(alas,tinggi)
luas (alas * tinggi)/2 write(luas)
Program utama :
Algoritma Segitiga
{ Menghitung luas N buah segitiga. }
DEKLARASI i, N : integer
procedure HitungLuasSegitiga
{ Menghitung luas segitiga dengan rumus L =(alas x tinggi)/2 }
DESKRIPSI:
read(N) { tentukan banyaknya segitiga } for i 1 to N do
HitungLuasSegitiga
endfor
Contoh Program berdasarkan Algoritma di atas
/* Program Segitiga */
/* Menghitung luas N buah segitiga. */
#include <iostream.h>
/* Deklarasi purwarupa prosedur yang digunakan */ void
HitungLuasSegitiga();
32
void main()
{ /* DEKLARASI */ int i, N;
/* PROGRAM UTAMA */
cout << "banyaknya segitiga? "; cin >> N;
for(i=1;i<=N;i++)
HitungLuasSegitiga();
/*endfor*/
void HitungLuasSegitiga()
/* Menghitung luas segitiga dengan rumus L=(alas x tinggi)/2 */ /* K.Awal : sembarang
*/
/* K.Akhir : luas segitiga tercetak. */ { /*DEKLARASI*/
float alas; /* panjang alas segitiga, dalam cm */ float tinggi; /* tinggi
segitiga, dalam cm */
float luas; /* luas segitiga, dalam cm2 */ /*DESKRIPSI*/
cout << "\nPanjang alas segitiga? "; cin >> alas ;
cout << "Tinggi segitiga? "; cin >> tinggi;
luas = (alas * tinggi)/2.0;
cout << "Luas = " << luas << endl;
Latihan :
Buatlah algoritma untuk menghitung beberapa luas bangun dengan menggunakan procedure yang dapat
diimplementasikan dengan menu.
Pertemuan 12
Modul Program Functin
Function
yang dapat digunakan untuk modul itu sendiri, modul yang lain atau program utama.
Translasi Notasi Algoritma untuk fungsi ke dalam Notasi bahasa C++. ALGORITMA
Function NamaFungsi(deklarasi parameter,jika ada) tipe
33
{spesifikasi fungsi,menjelaskan apa yang dilakukan dan yang dikembalikan oleh fungsi.}
DEKLARASI
{semua nama yang dipakai didalam fungsi dan hanya berlaku local didalam prosedur didefinisikan disini
DESKRIPSI
{badan fungsi,berisi instruksi–instruksi untuk menghasilkan nilai yang akan dikembalikan oleh fungsi }
return ekspresi { pengembalian nilai yang dihasilkan fungsi }
Bahasa C++ :
tipe NamaFungsi (deklarasi parameter,jika ada);
/* spesifikasifungsi,menjelaskan apa yang dilakukan dan yang dikembalikan oleh fungsi
/* DEKLARASI
semua nama yang dipakai didalam fungsi dan hanya berlaku local didalam
prosedur didefinisikan disini*/
DESKRIPSI
badan fungsi,berisi instruksiinstruksi untuk menghasilkan nilai yang akan
dikembalikan oleh fungsi */
return ekspresi; /*pengembalian nilai yang dihasilkan fungsi*/
Catatan :
1. Dalam bahasa C++, fungsi dapat mengembalikan nilai bertipe sederhana ( integer, riil, Boolean, char,
dan string ) maupun bertipe bentukan.
2. Apabila fungsi tidak memiliki daftar parameter formal, maka tanda “(” dan “)” tetap harus ditulis. Hal
yang sama juga berlaku pada waktu pemanggilannya.
3. Sebagaimana halnya pada prosedur, fungsi didefinisikan di luar blok main(), dan purwarupa fungsi
dideklarasikan sebelum blok main().
Beberapa Contoh translasi :
2
1. Fungsi F(x) = 2x + 5x – 8 dan program pemanggilnya.
ALGORITMA
Fungsi :
34
function F(input x: riil)>riil
2
{ mengembalikan nilai F(x)=2x +5x8, x € R }
DEKLARASI
{ tidak ada }
DESKRIPSI
Return 2*x*x + 5*x 8
Program utama :
Algoritma TabelFungsi
{program utama yang memperagakan cara pemanggilan fungsi F.Program ini menampilkan table nilainilai x dan f(x)
didalam selang[10,15]dengan ∆x = 0.2 }
DEKLARASI x : riil
function F(input x: riil) riil
2
{ mengembalikan nilai F(x)=2x +5x8, x R }
DESKRIPSI:
{ buat header table }
write(‘ ’)
write(‘ x f(x) ’)
write(‘ ’)
x10.0
while x ≤ 15.0 do
write(x,’ ‘,F(x))
xx + 0.2
endwhile
{ buat garis penutup table }
write(‘’)
Dalam Bahasa C++
/* Program TabelFungsi */
/* Prog.utama yang memperagakan cara pemanggilan fungsi F.Prog.ini menampilkan table nilainilai x dan
f(x) didalam selang [10,15] dengan ∆x = 0.2 */
#include <iostream.h> #include <iomanip.h>
/* purwarupa fungsi */ float F(float x);
/* mengembalikan nilai F(x)=2x2+5x8, x bertipe riil */ void main()
{ /* DEKLARASI */ float x;
/* DESKRIPSI */
35
/* buat header table */
cout <<"---------------------\n"; cout <<" x f(x) \n";
cout <<" \n";
x = 10.0;
while (x <= 15.0)
{
cout << x << setw(15) << F(x) << endl;
x = x + 0.2;
} /*endwhile*/
/* buat garis penutup table */
cout <<" \n";
}
float F(float x)
/* mengembalikan nilai F(x)=2x2+5x8, x bertipe riil */ { /*DEKLARASI*/
/* tidak ada */ /*DESKRIPSI*/
return 2*x*x + 5*x 8;
Latihan :
Buatlah algoritma dan program untuk menghitung fungsi :
2
Fx = x + 4x + c
Pertemuan 13
Parameter Dalam Modul Program
Adalah variabel yang digunakan untuk mengirim nilai argumen untuk
proses komunikasi data didalam suatu algoritma/program.
Terdapat dua buah parameter dalam suatu program yaitu :
1. By Reference
Yaitu parameter yang dapat merubah nilai variabel global yang digunakan sebagai argumen. Cirinya
didepan deklarasi parameter terdapat statement var. Contoh:
Procedure cetak(var A: integer)
2. By Value
Yaitu parameter yang tidak dapat merubah nilai variabel global yang digunakan sebagai argumen.
Cirinya didepan deklarasi parameter tidak
terdapat statement var.
36
Contoh: Procedure cetak(A: integer)
Algoritma Parameter
Deklarasi
A,B : Numerik
Procedure CetakData(var C : integer, D : integer )
Begin
CC+100; DD+100
Write(‘Nilai C : ‘,C) //C=200
Write(‘Nilai D : ‘,D) //D=200
End
Begin
A 100
B 100
CetakData(A,B)
Write(‘Nilai A : ‘,A) //A=200
Write(‘Nilai B : ‘,B) // B=100
End
Contoh translasi prosedur dengan parameter masukan ALGORITMA :
Prosedur :
procedure HitungLuasSegitiga(input alas, tinggi : riil)
{ Menghitung luas segitiga dengan rumus L = (alas x tinggi)/2 } { K.Awal : alas dan
tinggi sudah terdefinisi nilainya }
{ K.Akhir : luas segitiga tercetak. }
DEKLARASI
2
luas : riil { luas segitiga, dalam cm }
DESKRIPSI
luas (alas * tinggi)/2 write(luas)
Program utama :
Algoritma Segitiga
{ Menghitung luas N buah segitiga. }
37
DEKLARASI i, N : integer a, t : riil
procedure HitungLuasSegitiga(input alas, tinggi : riil)
{ Menghitung luas segitiga dengan rumus L =(alas x tinggi)/2 }
DESKRIPSI:
read(N) { tentukan banyaknya segitiga } for i 1 to N do
read(a,t) HitungLuasSegitiga(a,t)
endfor
Contoh Program berdasarkan Algoritma di atas
/* Program Segitiga */
/* Menghitung luas N buah segitiga. */
#include <iostream.h>
/* Deklarasi purwarupa prosedur yang digunakan */ void
HitungLuasSegitiga(float a, float t);
void main()
{ /* DEKLARASI */ int i, N;
float a, t;
/* PROGRAM UTAMA */
cout << "banyaknya segitiga? "; cin >> N;
for(i=1;i<=N;i++)
cout << "\nPanjang alas segitiga? "; cin >> a;
cout << "Tinggi segitiga? "; cin >> t;
HitungLuasSegitiga(a,t);
void HitungLuasSegitiga(float alas, float tinggi)
/* Menghitung luas segitiga dengan rumus L=(alas x tinggi)/2 */ /* K.Awal : alas dan
tinggi sedah terdefinisi nilainya */
/* K.Akhir : luas segitiga tercetak. */ { /*DEKLARASI*/
float luas; /* luas segitiga, dalam cm2 */ /*DESKRIPSI*/
luas = ( alas * tinggi )/2.0;
cout << "Luas=" << luas << endl;
38
Modul Rekursif
Adalah modul yang memanggil dirinya sendiri. Modul ini banyak digunakan untuk proses
pemanggilan modul secara berulang. Misalnya untuk menghitung nilai sebuah bilangan yang
difaktorialkan maka dapat diselesaikan dengan system rekursif.
Contoh :
5! = 5*4!=4*3!=3*2!=2*1!=1*1
Algoritma_Name Rekursif
Var
A : Numerik
Function Faktorial (N:Numerik):Numerik
If N= 1 Then
Faktorial 1
Else
Faktorial N*(Faktorial(N1)
Endif
End
Begin
A 5
Write(‘Nilai Faktorial : ‘,Faktorial(A))
End
Pertemuan 14
Studi Kasus Algoritma
Amatilah sebuah system yang ada di sekeliling saudara. Setelah saudara amati maka :
1. catatlah prosedur yang ada dalam system tersebut !
2. catatlah fungsi yang ada dalam system tersebut !
3. berdasarkan prosedur dan fungsi yang telah saudara dapat maka : susunlah algoritmanya.
4. berdasarkan algoritma saudara buatlah hierarchi proses modul atau buat menu.
5. implementasikan kedalam program algoritma modular yang telah saudara buat !
39