Algoritma dan Pemrograman - universitas Indo Global Mandiri

HasthaSunardi1 8 views 54 slides May 13, 2025
Slide 1
Slide 1 of 54
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54

About This Presentation

Konsep dasar algoritma & pemrograman


Slide Content

i


DIKTAT KUIAH




ALGORITMA DAN PEMROGRAMAN





Ir. Hastha Sunardi, MT



FAKULTAS ILMU KOMPUTER
PROGRAM SYUDI SISTEM KOMPUTER
UNIVERSITAS INDO GLOBAL MANDIRI
FEBRUARI 2018

ii

Kata Pengantar


Segala Puji bagi Allah Subhanahu wata’ala, karena berkat rahmat-Nya dan kekuatan
yang diberikannya-Nya, baik berupa ilmu, kesehatan dan kekuatan sehingga penyusunan
Diktat Kuliah Algoritma dan Pemrograman yang digunakan khusus di Program Studi
Sistem Komputer Fakultas Ilmu Komputer Universitas Indo Global Mandiri dapat
diselesaiakan.

Penulis berharap diktat ini tidak hanya dapat dimanfaatkan di lingkungan Fasilkom
Universitas IGM, namun dapat digunakan untuk siapapun yang berkeinginan untuk
memanfaatkannya, sehingga diktat ini siapapun dapat menyebarluaskannya. Karenanya
sejak awal penggunaan tahun 2018, diktat ini sudah disebarluaskan, baik melalui
mahasiswa atau diunduh melalui tautan yang tertera di diktat ini. Penulis berharap, diktat
ini dapat memberikan manfaat dan mengharapkan sebagai pahala jariyah dari sisi-Nya.

Algoritma dan Pemrograman, merupakan tolok ukur kemampuan mahasiswa yang
berkeinginan kuliah di bidang ilmu komputer. Mahasiswa yang duduk di semester awal,
mereka akan merasa lebih siap untuk menghadapi matakuliah lanjutannya, jika benar-
benar sudah memahami algortima dan pemrograman, jika sebaliknya maka mereka harus
meluangkan waktu ekstra agar lebih siap meniti jalan menuntut ilmu di bidang komputer.
Beradasarkan pengalaman penulis yang telah mengajar matakuliah algoritma dan
pemrograman sejak tahun 1999.

Semoga bermanfaat dan berharap sebagai amal shalih. Aamiin


Penulis

1

Konsep Algoritma
Bab 1
Diktat Algoritma & Pemrograman


1.1 Kosep Algoritma
Algoritma bukan hanya sekedar sesuatu yang diartikan sebagai suatu
pemecahan masalah yang terurut dan sistematis. Namun, dari pengalaman
penulis yang telah mengajar algoritma dan pemrograman lebih dari sepuluh
tahun, jika diartikan hanya sekedar serangkaian kata-kata saja, maka kata-kata
itu seakan tidak bermakna, sehingga kebanyakan mahasiswa masih begitu
sulitnya mendefinisikan, memformulasikan hingga mendeskripsikan masalah.
Seakan-akan algoritma sesuatu yang abstrak yang sulit dipahami oleh sebagian
mahasiswa.

Algortima harus disefinisikan sebagai suatu cara mendefinikan,
memformulasikan dan mendeskripsikan suatu masalah serta mampu
merumuskannya dalam bentuk perintah yang dapat diimplementasikan ke
dalam bahasa program.

Agar kita lebih jelas memahami algoritma, maka perlu dijelaskan lebih rinci
tentang :

1) Mendefinisikan Masalah
2) Memformulasikan Masalah
3) Mendeskripsikan Masalah

Kita ambil suatu kasus atau masalah “Ada 2 kaleng A dan B, masing-masing
A berisis 5 buah duku dan B berisi 6 buah kelereng. Bagaimana cara kita
memindahkan isinya agar kelereng di dalam kaleng B dan duku berada di kaleng
A?“, maka tahapan pemecahannya, yaitu :

1) Mendefinisikan Masalah, yaitu nyatakan bahwa semua benda yang
dinyatakan sebagai tempat menyimpan (kaleng) adalah variabel, yaitu
variabel A dan B, sedangkan jumlah kelereng atau duku adalah nilai dari data
(benda) yang diisikan. Harus dipahami bahwa nilai data dan bentuk data
yang diinputkan sangat penting untuk dipahami, karena ini terkait dengan
apa yang disebut tipe data.

Kita pahami bahwa duku atau kelereng selalu dinyatakan satu kesatuan yang
utuh atau dinyatakan, 2, 5, 12 atau selalu dinyatakan bilangan bulat, maka

2

dalam hal ini variabel A dan B merupakan tempat untuk menyimpan data
(kelereng atau duku) yang nilai datanya selalu bulat. Dalam algoritma,
sebelum kita mendek-larasikan variabel, maka kita pahami dulu tipedata dari
semua variabel (tempat menyimpan data).

2) Memformulasikan Masalah, yaitu bagaimana kita menerjemahkan kasus yang
terjadi ke dalam formulasi matematis. Pada kasus diatas Kaleng A diisi 5
buah duku dan kaleng B diisi 7 buah duku. Pengertian diisi dalam bahasa
umum, diartikan tanda = artinya sama dengan atau dalam formulasi
algoritma ditandai  artinya pengisisan (assignment). Jadi pada kasus
diatas, formulasi algoritmanya ditulis :
Umum Algoritma Artinya
A = B A  B Variabel A diisi data dari variabel B
B = 5 B  5 Variabel B diisi data dengan nilai 5

Dengan memahami langkah 1 dan 2 diatas, maka kita harus mampu
mendeklarasikan semua variabel beserta tipedatanya dari masalah atau
kasus yang akan kita selesaikan.

3) Mendeskripsikan Masalah, yaitu kita berusaha untuk menyusun atau
menggambar urutan penyelesaian masalah dimulai dari :

(1). Input, yaitu inputkan nama variabel-variabel yang akan diisi oleh nilai
data.
Ingat, pertanyaannya adalah variabel apa? Atau nama variabel apa
yang akan digunakan untuk penyimpanan data yang diinputkan?, maka
pada proses input yang harus kita tulis pada deskripsi algoritma bukan
nilai data (berupa bilangan 7, 34 atau lainnya), akan tetapi nama
variabelnya. Untuk kasus diatas nama variabel yang digunakan untuk
menyimpan data 5 duku adalah variabel A dan menyimpan data 7
kelereng adalah variabel B. Dalam mendeskripsikan algoritma, perintah
input ditandai dengan perintah readln(Nama_Varabel), sehingga untuk
kasus diatas, ditulis :

readln (A,B) → artinya variabel A dan B adalah variabel yang
digunakan untuk tempat data yang diinputkan, yaitu :

A  5 dan B  7

3

(2). Proses, yaitu formulasikan variabel-variabel yang diinputkan untuk
mendapatkan variabel lainnya.
Ingat, pada proses ini kita hanya mengolah atau memformulasikan
variabel-variabel dengan menggunakan operator-operator : =, *, +, -, /, >,
≥, <, ≤ . Perhatikan beberapa contoh proses berikut :

a). Menghitung luas :
Input : variabel P dan L, ditulis readln(P,L)
Proses : Ls = P x L, ditulis Ls = P * L
b). Membandingkan nilai :
Input : variabel X, Y dan Z, ditulis readln(X,Y,Z)
Proses : jika (X>Y) dan (X>Z), maka Terbesar = X
Jika (Y>X) dan (Y>Z), maka Terbesar = Y
Jika tidak Terbesar = Z.

(3). Ouput, yaitu menampilkan nilai data dari variabel-variabel yang dita-
nyakan nilai datanya.
Perintah output adalah Writeln(Nama_Varibel). Perlu Anda
pahami bahwa yang kita isikan pada dalam kurung perintah writeln
adalah variabel, seperti writeln(A,B). Dapat kita terjemahkan dengan
kalimat, variabel-variabel apakah yang isinya akan kita
tampilkan pada perintah writeln ?

4) Menganalogikan Masalah, yaitu dalam menyelesaikan suatu kasus, maka kita
dituntut untuk mampu membandingkan, mengidentikkan atau
menganalogikan kasus yang akan diselesaikan dengan kasus-kasus yang
pernah kita selesaikan. Bandingkanlah variabel inputnya, prosesnya dan
outputnya, apakah identik dengan kasus lainnya yang pernah kita selesaikan
?

1.2 Merumuskan Algoritma
Seseorang dapat dikatakan telah mampu merumuskan algoritma dari kasus
yang diselesaikan dan mengimplementasikannya ke dalam bahasa
pemrograman, jika telah mampu mendeklarasikan dan mendeskripsikan
masalah. Mendeklarasikan, yaitu menyebutkan semua variabel yang ada beserta
tipedatanya, sedangkan mendeskripsikan masalah, yaitu mampu
mengelompokkan semua variabel yang ada ke dalam tiga bagian, yaitu input,
proses dan output.

4

Suatu model yang selalu saya perkenalkan kepada mahasiswa pada tahapan
mendeskripsikan masalah adalah dengan memperkenalkan bagan gambar
berikut :

Gambar 1.1 Bagan Mendeskripsikan Masalah

Dengan bagan diatas, kita dapat mengelompokkan dengan mudah semua
variabel dari kasus yang akan kita selesiakan.

Kembali kepada kasus bahasan kita tentang masalah “Ada 2 kaleng A dan B,
masing-masing A berisi 5 buah duku dan B berisi 6 buah kelereng. Bagaimana
cara kita memindahkan isinya agar kelereng di dalam kaleng B dan duku berada
di kaleng A?“, maka tahapan pemecahannya, yaitu :

Perhatikanlah bagan Gambar 1.1, lalu kelompokkan semua variabel yang
ada ke bagian :

a). Input, yaitu readln ( . . . . . . .? ).
Untuk mengisi nama variabelnya, Anda cukup membuat pertanyaan,
“Variabel apa sajakah yang digunakan untuk menyimpan data yang
diinputkan ?”. Pada kasus kita, nama variabelnya adalah A dan B. Yaitu
A untuk menyimpan nilai data 5 dan B untuk menyimpan nilai data 7.
Maka kita tulis perintah algoritmanya menjadi :

readln (A,B)

b). Proses, yaitu suatu langkah penting yang membutuhkan ketajaman
logika untuk menjawab kasus yang akan diselesaikan.

Pada kasus ini, kita diminta memindahkan 5 duku dari kaleng A ke
kaleng B, sebaliknya 7 kelereng dari kaleng B dipindahkan ke kaleng A.
Ingat, pada proses pemindahan ini, sebelum kelereng diisikaan ke
kaleng A, maka kaleng A harus kosongkan lebih dulu, begitupun
sebaliknya. Karenanya kita harus siapkan kaleng lain untuk tempat
sementara. Sehingga tahapan pemindahannya dapat dijelaskan sebagai
berikut :

5

(1). Kaleng C kosong, isikan semua duku dari kaleng A ke kaleng C,
ditulis C  A.
(2). Kaleng A, kosong isikan semua kelereng pada kaleng B ke kaleng A,
ditulis A  B.
(3). Kaleng B kosong, isikan semua duku dari kaleng C ke kaleng B,
ditulis B  C.

Tahapan diatas, untuk dapat menggabarkannya secara ril dapat
digambarkan sebagai berikut :

Gambar 1.2 Proses Pertukaran Isi

Langkah selanjutnya bagaimana memformulasikan dalam bentuk
perintah algoritma :

C  A
A  B
B  C

Algoritma tersebut, selanjutnya dapat kita sebut sebagai Algoritma
Tukar, yang sangat bermanfaat sekali bagi dunia komputer, seperti
mengurut data.

1.3 Struktur Algoritma

Berdasarkan pemaparan sebelumnya, khususya pada poin 1.2 diatas, maka
struktur algoritma cukuplah dibagi menjadi 2 bagian, yaitu Deklarasi dan
Deskripsi. Alasannya, karena seseorang yang telah mampu mendeklarasikan
dan mendeskripsikan dari masalah yang akan diselesaikannya, karena jika kita
selraskan dengan bahasa pemrogram, karena dengan telah diketahuinya
Deklarasi dan Deskripsi dari algoritma dengan mudah kita dapat
implementasikan ke bahasa pemrograman, Bahasa Pemrograman Java.

6

Penyederhanaan struktur algoritma ini, dimungkin akan memudahkan
mahasiswa dalam mempelajari algoritma, khususnya pada matakuliah algoritma
dan pemrograman, disamping tidak mempersulit bahasa dalam mengimple-
mentasikannya ke bahasa pemrograman.

Kembali kepada kasus bahasan kita tentang masalah “Ada 2 kaleng A dan B,
masing-masing A berisis 5 buah duku dan B berisi 6 buah kelereng. Bagaimana
cara kita memindahkan isinya agar kelereng di dalam kaleng B dan duku berada
di kaleng A?“, maka tahapan pemecahan lengakapnya sebagai berikut :

(a). Bagan Sistem :

Gambar 1.3 Bagan Perumusan Algoritma

(b). Perumusan Algoritma

{ Deklarasi }

var A,B,C : integer

{Deskripsi)

readln(A,B)
C  B
B  A
A  C
writeln(A,B)

Jika, kita implementasikan ke dalam pemrograman bahasa java, maka
cukup selaras urutan deklarasi dan deskripsinya :

7





Package AlgoritmaTukar;

import java.util.Scanner;
public class AlgoTukar {

public static void main (String[] args) {
Scanner input = new Scanner (System.in);

// Deklarasi
int A,B,C;

// Deskripsi

System.out.print("A ? ");
A = input.nextInt();
System.out.print("B ? ");
B = input.nextInt();

C=A;
A=B;
B=C;


System.out.println("Setelah Tukar !");
System.out.println("A = "+A);
System.out.println("B = "+B);

}
}



1.4 Latihan Soal

1. Buatlah perumusan algoritma untuk menghitung Luas dan Isi bola.


Jawab :`
(i).



Input


Proses

Output

8

(ii). { Deklarasi }
var L, P, Ls : real

{ Deskripsi }
readln(P,L)
Ls  P * L
readln(Ls)

2. Buatlah perumusan algortima untuk menentukan nilai terbesar dari dua
bilangan yang diinputkan.

9

Tipedata & Operator
Bab 2
Diktat Algoritma & Pemrograman



2.1 Definisi Tipedata

Jika hewan seperti kambing, burung, ikan memiliki tempat untuk tinggal, maka
begitupun data pada komputer, seperti bilangan genap, bilangan pecahan, kata,
karakter harus ditempatkan ke tempat penyimpanan yang sesuai dengan nama tipe
tempatnya. Jika kambing harus ditempatkan di tempat yang bertipe kandang, burung
di tempatkan di tempat yang bertipe sangkar atau ikan ditempatkan di tempat yang
bertipe kolam, maka angka genap harus ditempatkan atau disimpan di tempat yang
bertipe Integer, nama (orang/kota/dll) disimpan ditempat yang bertipe String dan
lainnya,
Berbagai data, seperti angka genap (1,34,76,402, ...), angka pecahan/desimal
(2,4, 5,06, 7,322, 99,9, ... ), kata (Ali, Jakarta, Kerakatau, Musi, ... ), karakter ( +, /, -, 3,
K, @, ... ), Kondisi (True,False), harus disimpan sesuai dengan tipedatanya pada
tempat penyimpanan yang disebut Variabel, dengan nama variabel sesuai keinginan
kita. Untuk lebih jelasnya, perhatikan Tabel 2.1 berikut :

Tabel 2.1 Hubungan Data, Nilai Data, Variabel dan Tipedata

No Nama Data Nilai Data Variabel Tipedata
1. Bilangan Genap 5,24, 45 Bil Integer
2. Bilangan Dseimal 4,07, 20,15, 69,08 Angka Real
3. Kata-kata Jabar, Sumsel, DKI Prov String
4. Karakter +, #, k, 8, % Tanda Char
5. Kondisi Benar/Salah True, False Coba Boolean

10

Tipe data adalah himpunan nilai yang dapat dimiliki oleh sebuah data. Tipe data
menentukan apakah sebuah nilai dapat dimiliki sebuah data atau tidak, serta operasi
apa yang dapat dilakukan pada data tersebut.
Dalam sebuah program, setiap variabel dan konstanta memiliki tipe data yang
harus dideklarasikan di awal program. Pendeklarasi tipe data tersebut bertujuan
untuk menentukan besarnya tempat dalam memori yang akan digunakan untuk
menyimpan data pada tersebut saat program dijalankan.Tipe data dasar adalah tipe
data yang dapat langsung digunakan. Secara umum terdapat 2 tipe data dasar, yaitu
numerik dan kategorik. Tipe data numerik terdiri atas angka/kumpulan angka serta
dapat mengalami operasi perhitungan, sedangkan tipe data kategorik dapat berupa
angka maupun huruf namun tidak dapat mengalami operasi perhitungan.
Masing-masing tipedata numerik, memiliki tipedata turunannya, dimana
penggunaannya sesuai dengan batas jangkauan besar nilai dari hasil proses yang
yang kita inginkan dalam program. Berikut dapat dilihat pada Tabel 2.2 :

Tabel 2.2 Turunan Tipedata Numerik
No. Tipedata Turunan Ukuran
Nilai
1. Integer
Short 8 bit
-127 s/d 127
Int 16 bit
-32768 s/d 32767
Long 32 bit
-2147483648 s/d 2147483648
2. Real
Float
32 bit
2.9 x 10
-39
s/d 1.7 x10
38
Double
48 bit
0x10
-324
s/d 1.7x10
308

Tipedata char adalah tipe data dasar yang terdiri atas satu buah angka, huruf,
tanda baca atau karakter khusus. Untuk menyimpan sebuah karakter, diperlukan 1
byte atau 8 bit tempat didalam memori. Dalam sebuah program, penulisan tipe data
char diawali dan diakhiri dengan tanda kutip ganda. Selain itu, terdapat sebuah
karakter kosong yang disebut dengan null atau nil dan dituliskan sebagai "".

11

Sedangkan string adalah tipe data dasar yang berupa kumpulan karakter
dengan panjang tertentu. Meskipun berupa kumpulan karakter, karena tipe data
string sering digunakan dalam pemrograman, string dianggap sebagai tipe data
dasar. Untuk penyimpanan string didalam memori, dibutuhkan 1 byte untuk tiap
karakternya. Serupa dengan penulisan karakter, penulisan sebuah string juga harus
diawali dan diakhiri dengan tanda petik ganda. String juga mengenal null yang
dituliskan dengan "".
Khusus sebuah data boolean memiliki tepat dua buah kemungkinan nilai,
direpresentasikan sebagai Benar dan Salah, atau True dan False, atau dapat juga
dilambangkan dengan 1 dan 0. Tipe data ini dapat digunakan untuk pemilihan
dengan kondisi-kondisi tertentu, dimana program harus memilih aksi apa yang akan
dijalankan dengan parameter tertentu. Tipe data ini paling sering digunakan untuk
range yang memiliki dua buah nilai: Lulus - Tidak lulus, Member – Bukan member,
dll.
2.2 Definisi Variabel
Variabel atau peubah adalah obyek yang nilainya dapat berubah-ubah dalam
sebuah program. Pada saat sebuah variabel dideklarasikan, program "memesan"
tempat dengan ukuran tertentu (sesuai tipe datanya) pada memori untuk
menyimpan nilai dari variabel tersebut.

Pemrogram dapat memberikan nama pada sebuah variabel untuk mempermudah
pemanggilan variabel tersebut di dalam program. Pada saat mendeklarasikan sebuah
variabel, pemrogram harus menyebutkan nama variabel dan tipe data dari variabel
tersebut.

2.3 Definisi Operator
Operator adalah pengendali operasi yang akan dilakukan pada beberapa
operan sehingga membentuk sebuah ekspresi. Secara umum, dalam sebuah ekspresi
terdapat sebuah operator yang diapit dua operan. Contohnya pada ekspresi : x + y,
dimana x dan y adalah operan, sedangkan "+" adalah operatornya. Terdapat tiga
macam operator yang biasa digunakan dalam pemrograman, yaitu:

12


1). Operator Aritmatik
Operator ini membentuk perhitungan aritmatik. Kedua operan dari
operasi aritmatik ini dapat berupa nilai integer atau real. Operator yang
termasuk tipe ini adalah:
Tabel 2.3 Operator Numerik
Simbol Nama Contoh
+ Penjumlahan y = x + z
- Pengurangan y = x – z
* Perkalian y = x * z
/ Pembagian y = x / z

Output dari operasi aritmatik akan memiliki tipe data yang sama
dengan tipe data kedua operannya. Misalnya, jika sebuah bilangan
integer dijumlahkan dengan bilangan integer lainnya maka outputnya
adalah bilangan integer juga. Selain itu perlu diperhatikan pula bahwa
sebuah operator aritmatik tidak dapat diterapkan pada dua bilangan
dengan tipe data yang berbeda.

2). Operator Relasional
Operator ini membandingkan dua operan dan hasilnya berupa
nilai boolean (BENAR atau SALAH). Operasi relasional dapat
dilakukan pada dua nilai dengan tipe data yang sama: tipe data
integer, riil, char, string, maupun boolean. Berikut ini adalah operator
relasional:
Tabel 2.4 Operator Relasional
Simbol
Nama Operator
Contoh
Algoritma
Umum Algoritma Java
=  == Sama dengan y  x
≠ ≠ <> Tidak sama dengan y ≠ x
> > > Lebih besar dari y > x
≥ ≥ >= Lebih besar sama dengan y >= x

13

< < < Lebih kecil dari y < x
<= < <= Lebih kecil sama dengan y <= x

2). Operator Logika
Operator logika adalah operator yang digunakan untuk
mengkombinasikan hasil ekspresi yang mengandung operator relasional.
Tiga bentuk operator logika adalah:

Tabel 2.5 Operator Logika
Simbol
Nama
Operator
Contoh
Algoritma
Algoritma Java
and && dan ((y>x)&&(x=y))
or || atau ((y>x)||(x=y))
Not | tidak |(x>y)

Makna operator logika mensyaratkan output dari dua ekspresi
((y>x)&&(x=y)), akan menghasilkan output bernilai Benar (True), jika
keduanya ekspresi harus bernilai benar, sedangkan dua ekspresi
((y>x)&&(x=y)), mensyaratkan out akan bernilai benar, jika salah
ekspresi benar.

Perhatikan beberapa contoh penggunaan operator logika:

1. (x > 7) && (x = y)
Jika ternyata nilai x adalah 8 dan y adalah 5,
maka (8 > 7) && (8 = 5) True AND False,
Outputnya adalah False.

2. (x != y) || (x > 3)
Jika ternyata nilai x adalah 4 dan y adalah 4,
maka (4 != 4) || (4 > 3) False OR True,
Outputnya adalah True.

3. NOT (x > y)
Jika ternyata nilai x adalah 3 dan y adalah 3, maka
NOT (3 > 3) NOT (False),
Outputnya True.

14

Pencabangan
Bab 3
Diktat Algoritma & Pemrograman by Hastha Sunardi


3.1 DefinisI Pencabangan
Definisi pencabangan adalah suatu perintah yang mensyaratkan adanya
beberapa pilihan yang harus dipilih, namun pilihannya harus sesuai dengan kondisi
yang sesuai dengan pilihan tersebut. Perintah pencabangan diformulasikan :

Tabel 3.1 Formulasi Pencabangan berdasarkan pilihan
Banyak pilihan Formulasi Pencabangan
1 if <kondisi> then <aksi>
2
if <kondisi> then <aksi-1>
else <aksi-2)
N
if <kondisi-1> then <aksi-1>
else if <kondisi-2> then <aksi-2)
else if <kondisi-3> then <aksi-3)
. . .
else <aksi-N)

Sebagai contoh, dalam suatu pertandingan sepakbola, suatu tim akan
menghadapi 3 pilihan yang akan diterima, yaitu MENAMG, KALAH atau SERI.
Ketiga pilihan tersebut, tentunya sesuai kondisi yang diperoleh setelah akhir
pertandingan, yaitu :
1. Dikatakan MENANG, jika kondisi akhir pertandingan banyaknya
“memasukkan” lebih besar dari “kemasukan”, ditulis (M>K).
2. Dikatakan SERI, jika kondisi akhir pertandingan banyaknya “memasukkan”,
sama dengan “kemasukan” atau sama-sama nol, ditulis (M=K).
3. Dikatakan KALAH, jika kondisi akhir pertandingan banyaknya
“memasukkan” lebih kecil dari “kemasukan”, ditulis (M<K).

Kasus diatas, dapat kita implementasikan ke dalam algortima pencabangan
sebagai berikut :

15


readln (M,K)
if (M>K) then writeln(‘MENANG’)
else if (MK) then writeln(‘SERI’)
else writeln(‘KALAH’)

Formulasi umum pencabangan adalah :

Perhatikan pada sisi kondisi, dimana :
1. Jika yang digunakan operasi relasional, seperti jika (M>K), maka kedua
variabel M dan K harus dengan tipedata yang sama. Pada contoh, nilai gol
dari suatu pertandingan sepak bola merupakan bilangan genap, variabel
M=memasukkan dan variabel K=kemasukan sudah jelas memiliki tipedata
yang sama, yaitu tipedata integer.
2. Begitupun, jika pada kondisi yang dibandingkan variabel dan konstanta,
seperti : jika (Nilai=56.99), maka varibael A harus bertipedata real.

3.2 Perintah Case ... of
Pencabangan Case .. of, identik dengan perintah pencabangan dengan N
pilihan, hanya perintah ini dapat digunakan jika variabelnya bertipe integer atau
char. Berikut dapat kita bandingkan perintah algoritma dengan perintah
pemrograman java untuk perintah pencabangan.

Algoritma Java
Case (Nilai) of
‘A’ : Bobot = 4
‘B’ : Bobot = 3
‘C’ : Bobot = 2
‘D’ : Bobot = 1
‘E’ : Bobot = 0
endCase
switch (index)
{
case 'A' : Bobot = 4; break;
case 'B' : Bobot = 3; break;
case 'C' : Bobot = 2; break;
case 'D' : Bobot = 1; break;
default :
Bobot =0;break;
}

16




package ifkondisi;

import java.util.Scanner;
public class ifkondisi {
public static void main (String[]args) throws Exception
{
Scanner input = new Scanner (System.in);
// deklarasi
double nilai; char index; String ket;

System.out.print ("Nilai Anda ? ");
nilai = input.nextDouble();

if (nilai>=80) index='A';
else if ((nilai>=69)&&(nilai<80)) index='B';
else if ((nilai>=56)&&(nilai<69)) index='C';
else if ((nilai>=37)&&(nilai<56)) index='D';
else index='E';

switch (index)
{
case 'A' : ket = "Sanga memuaskan";break;
case 'B' : ket = "Memuaskan";break;
case 'C' : ket = "Cukup";break;

17

case 'D' : ket = "Tidak memuaskan";break;
default :
ket = "Oon lho !";break;
}
System.out.println(index+" --> "+ket);
System.out.println();
}
}


3.3 Pencabangan Bersarang
Percabangan bersarang adalah instruksi yang terdiri dari adanya percabangan
yang lain di dalam percabangan, atau di dalam percabangan ada percabangan lagi.
Format penulisan untuk percabangan bersarang adalah sebagai berikut:

if <kondisi1> then
if <kondisi2> then Aksi-1
else Aksi-2
else if <kondisi3> then Aksi=3
else Aksi-4
EndIf
Penjelasan :
Algoritma if diatas dikatakan bersarang, karena di dalam if kondisi-1, ada
perintah if kondisi didalamnya, yaitu if kondisi-2. Sehingga jika kondisi-1 terpenuhi,
maka if kondisi-2 akan diseleksi hingga melakukan aksi-1 atau asksi-2. Sebaliknya,
Jika kondisi-1 tidak terpenuhi, maka kondisi-3 akan diseleksi, hingga terpilih aksi-3
atau aksi-4.

18

3.4 Latihan Soal

1. Buat perumusan algoritma untuk menyatakan besarnya poin yang
diperoleh tim sepakbola, jika diakhir pertandingan dinyatakan
menang, seri atau kalah.
Jawab :
(i). { Deklarasi }
Var M, K, Poin : integer;
(ii). { Deskripsi }
readln(M,K)
if (M>K) then Poin  Poin + 3
else if (MK) then Poin  Poin + 1
else Poin  Poin + 0
writeln(Poin)

2. Buatlah perumusan algoritma untuk membuat kalkulator sederhana
yang menggunakan operator (+, -, *, /) !
3. Buatlah perumusan algoritma untuk membuat kamus sederhana
yang berguna menerjemahkan angka 1 s/d 9 menjadi Bahasa
Palembang (1 → sikok, 2 → duo dan seterusnya) !

19

Perulangan
Bab 4
Diktat Algoritma & Pemrograman


4.1 Definisi Perulangan

Perulangan adalah suatu proses yang dilakukan untuk mengerjakan suatu
perintah secara berulang-ulang sesuai dengan yang diinginkan. Perintah perulangan
ada 3 macam, yaitu for .. to .. do, while .. do dan repeat .. until. Adapun penggunaan
masing-masing, dapat dijabarkan sebagai berikut :

1). For .. to .. do, perintah ini melakukan pekerjaan dari batas awal hingga
batas akhir, dengan kenaikan nilai pencacahnya bertambah satu secara
otomatis, dengan formulasi :

for i  <nilai_awal> to <nilai_akhir> do
<kerjakan statemen-1>
<kerjakan statemen-2>
. . .
efor


2). While .. do, perintah ini dapat dikatakan cukup fleksibel, karena nilai awal
dan pertambahan nilai pencacahnya dapat disesuaikan sesuai dengan yang
kita inginkan, dengan formulasi :

readln(nilai_akhir)
pencacah  <nilai_awal> {Inisialisasi}
while (pencacah) ≤ <nilai_akhir>
<kerjakan statemen-1>
<kerjakan statemen-2>
. . .
pencacah  pencacah + 1
ewhile

3). While .. do, perintah ini dapat identik dengan perintah while .. do, karena
nilai awal dan pertambahan nilai pencacahnya juga dapat disesuaikan
sesuai dengan yang kita inginkan. Perbedaannya hanya pada formulasi
perintahnya, sebagaiman formulasi berikut :

20



readln(nilai_akhir)
pencacah  <nilai_awal> {Inisialisasi}
repeat
<kerjakan statemen-1>
<kerjakan statemen-2>
. . .
Pencacah  pencacah + 1
until pencacah  <nilai_akhir>
ewhile



4.2 Perintah For .. to .. do

Perintah for .. to .. do merupakan perintah yang paling sering dan mudah
digunakan. Untuk lebih mengenal dan memahami perintah for .. to .. do, kita akan
bahas contoh menghitung nilai rerata, maksimum dan minimum dari sebanyak N
data yang diinputkan.
Jika N = 5, maka data yang ada sebanyak 5 bilangan, katakanlah 5 bilangan
yang diinputkan adalah : 11 14 7 21 12 = 65 → Rerata =
65/5 =5, Bilangan Minimum adalah 7 dan Bilangan Terbesar = 21.

Tahapan penyelesaian :
(i). Tentukan Variabel-Variabel Kasus
i = Pencacah
X = Bilangan yang dinputkan (11,14,7,21,12)
N = Banyak data
Jlh = Jumlah bilangan
Rat = Nilai rerata
Min = Bilangan minimum
Mak = Bilangan terbesar

Variabel inputnya adalah N (banyak data) dan outputnya adalah Mak, Min
dan Rat. Sedangkan variabel yang diinputkan dalam proses perulangan
adalah X. Hal ini artinya nilai X yang diinputkan bersesuaian dengan nilai
pencacah i, sehingga dapat kita jabarkan sebagai berikut :

21

i → 1 2 3 4 5
X → 11 14 7 21 12

(ii). Penjabaran dan Analisis Kasus :
Perhatikan tabel diatas, saat nilai i = 1, bilangan X yang dinputkan adalah
11, lalu saat i = 2 bilangan X yang diinputkan adalah 14, demikian
seterusnya.
Jika kita turunkan dalam bentuk perintah for .. to .. do adalah :


for i  1 to N do
readln(X)
efor


Selanjutnya, merumuskan algoritm,a yang terkait dengan variabel Jlh,
mak, Min dan Rat, perhatikan konsep penjabarannya berikut !

Saat i = 1, nilai X yang diinputkan adalah 11, artinya bahwa jumlah
bilangan adalah 11, nilai terbesar 11, nilai minimum 11, juga
nilai rerata 11. Artinya saat i=1, nilai varibel Jlh=11, Mak=11,
Min=11 dan Rat=11.

Saat i = 2, nilai X yang diinputkan 11 atau X=14, artinya nilai X
sekarang adalah 14 dan nilai X sebelumnya adalah 11.
Pertanyaannya, saat i = 2, sekarang berapakah nilai Jlh,
Mak, Min dan Rat ? Bagaimana cara merumuskannya ?

Saat i = 2, nilai Jlh tidak lagi 11 atau 12, akan tetapi sudah
11+12 = 23. Bagaimana untuk i = 3, i = 4 atau i = 5 ? Dalam
algortima untuk menghitung total jumlah bilangan X yang
diinputkan hingga dari i = 1 s/d N, cukup ditulis :



Jlh  Jlh + X


Sekarang bagaimana, menetukan nilai terbesar (Mak), terkecil
(Min) dan rerata (Rat) ? Caranya mudah saat i =1 bilangan X
= 11 dan saat i = 2, bilangan X = 12, berarti nilai terbesar
tidak lagi 11, tetapi sudah 12. Sedangkan nilai terkecil tetap
11. Untuk menjawabnya, gunakan perintah :

22

Saat i = 1, Min = 11 dan Mak = 11, setelah i = 2, Min = 11,
akan tetapi Mak = 12, maka gunakan perintah berikut :


If Min < X then Min  X
If Mak > X then Mak  X
(iii). Perumusan Algoritma :
Pada tahap perumusan masalah, kita hanya menyusun deklarasi dan
deskripsi dari apa yang telah dijabarkan pada tahap (i) dan tahap (ii), yaitu:


{ Deklarasi }
Var N,i,X,Mak,Min : integer
Var Jlh,Rat : real;
.
{ Deskripsi }
readn(N,X)
Jlh  X
Max  X
Min  X

For i  2 to N do
readln(X)
if (X>Mak) then Mak  X
if (X<Min) then Min  X
Jlh  Jlh + X
efor
Rat  Jlh/N
Writeln(Mak,Min,Rat)




Alur algoritmanya dapat dijelaskan sebagai berikut : Pertama diinput data
banyak nilai yang disimpan di varibel N, yaitu 5 dan juga besar bilangan pertama
yang disimpan di variabel X, yaitu 11. Selanjutnya diinputkan bilangan kedua,
dimana mulai bilangan kedua sampai ke-N diinputkan di dalam perintah perulangan
for.. to .. do. Setiap bilangan yang diinputkan diseleksi, apakah lebih besar dari
bilangan terbesar sebelumnya, jika Ya, maka bilangan terbesarnya adalah bilangan
yang disimpan di Variabel X yang terakhir. Begitupun untuk menetukan bilangan
terkecil, setiap biangan yang diinputkan terakhir, akan diseleksi, apakah bilangan

23

tersebut lebih kecil dari bilangan minimum sebelunya?, jika Ya, maka bilangan
terakhir yang diinputkan menjadi bilangan terkecil. Untuk menentukan bilangan
rerata, cukup dengan membagi jumlah bilangan (Jlh) dengan banyak data (N).
Program java untuk menentukan bilangan terbesar, terkecil dan rerata, dapat
dilihat di bawah :


package looping;

import java.util.Scanner;
public class Maksminrat {

public static void main (String[] uigm {
Scanner input = new Scanner (System.in);

// Deklarasi
int i,N,Maks,Min,X;
double Rat,Jlh;
// Deskripsi

System.out.print("Input Banyak data ? ");
N = input.nextInt();

System.out.print("X-1 ? ");
X = input.nextInt();

Maks=X; Min=X; Jlh=X;
for (i=2; i<=N; i++)
{
System.out.print("X-"+i+" ? ");
X = input.nextInt();

if (X > Maks) Maks=X;
if (X < Min) Min=X;
Jlh = Jlh + X;
}
Rat = Jlh/N;
System.out.println("Maks = "+Maks+" Min = "+Min+"
Rerata = "+Rat);

System.out.println();
}
}

24

4.3 Perulangan Bersarang
Perintah perulangan bersarang, jika pada suatu perintah perulangan, terdapat
didalam perintah perulangan. Pada kasus seperti ini, setiap pencacah perulangan
yang di luar bergerak dengan 1 langkah, maka pencacah perulangan yang di
dalamnya bergerak mulai nilai_awal s/d nilai_akhir. Demikian seterusnya, yaitu
setiap naik satu langkah pencacah perulangan luar, maka pencacah perulangan
dalamnya bergerak mulai lagi dari nilai_awal s/d nilai_akhir. Algoritma dengan
perulangan bersarang, dapat dilihat pada perumusan algoritma berikut :


{ Deklarasi }
Var N,M : integer
.
{ Deskripsi } Perulangan luar
readn(N)
For i  1 to N do
readln(M)
for i  1 to M do
readln(X,Y)
if (X>Y) then W  X * Y Perulangan
else dalam
W  X + Y
efor
efor
Writeln(N,M,W)


4.4 Latihan Soal
1. Club Sepakbola Sriwijaya FC (SFC) telah bermain sebanyak N kali, Buatlah
perumusan algoritma untuk menghitung jumlah poin yang dikumpulkan oleh
SFC setelah bermain sebanyak N kali tersebut.
2. Sepasang bilangan diinputkan sebanyak N kali. Jika setiap kali diinputkan,
bilangan pertama lebih besar dari bilangan kedua, maka nilai H adalah hasil kali
kedua bilangan tersebut, sebaliknya jika tidak, nilai H adalah penjumlahan dari
keduanya. Buatlah perumusan algoritma, agar nilai H dapat diketahui
jumlahnya.

25

Implementasi Perulangan
Bab 5
Diktat Algoritma & Pemrograman



5.1 Modulo
Modulo didefinisikan sebagai nilai hasil bagi, yang dapat dirumuskan :


A Modulo B = C


dimana : C = Min (A – N.B) → C adalah nilai terkecil dari selisih A dengan
hasil kali bilangan asli dengan B.
Misalkan : 7 Mod 2 = ? → 7 – 1.2 = 5
7 – 2.2 = 3
7 – 3.2 = 1 (selisih terkecil)
Jadi : 7 Mod 2 = 1

Dengan memahami modulo (dalam pemrograman java disimbolkan % , maka
akan lebih memudahkan kita dalam menyelesaikan berbagai ragam soal yang
kaitannya baik dengan perintah pencabangan maupun perulangan. Sebagai contoh,
perhatikan dan pahami soal berikut :
1. Dapakanlah jumlah bilangan ganjil dari 1 s/d N. Buatlah perumusan
algoritma, lalu implementasikan ke program java untuk dapat menghitung
jumlahnya.
Jawab :
a). Perumusan Algoritma


{ Deklarasi }
Var i,N,K,Jl : integer;


{ Deskripsi }
Jl  0
readln(N)
for i  1 to N do
if (i mod 2  1) then

26

K  i
Jl  Jl + K
Writeln(K)
eif
efor
writeln(Jl)


b). Program Java


package ImplementasiPerulangan;

import java.util.Scanner;
public class Jumbilajil {

public static void main (String[] args){
Scanner input = new Scanner (System.in);
// Deklarasi
int i,N,K,Jl;

// Deskripsi
System.out.print("Input N ? ");
N = input.nextInt();

Jl=0;
for (i=1; i<=N; i++)
{
if (i % 2 ==1)
{
K=i;
Jl = Jl + K;
System.out.print(K+" ");
}
}
System.out.println(" = "+Jl);
}
}

27

2. Tiga buah bilangan diinputkan sebanyak N kali, Jika bilangan ketiga
merupakan kelipatan hasil kali bilangan pertama dan kedua, keluar
pernyataan ‘NA’AM’, jika sebaliknya keluar pernyataan “LAA”.
Jawab :
Identikkan pernyataan diatas dengan rumus modulo A Mod B = C. Nilai A
dikatakan kelipatan dari B, jika A Mod B = 0. Sekarang identikkan soal
diatas, mana yang A dan mana yang B. Jika ketiga bilangan tersebut setelah
diinputkan di simpan pada variabel P, Q dan R, maka A identik dengan R
dan (P*Q) identik dengan B, sehingga dirumuskan menjadi :


If (R Mod (P*R))  0


Adapun perumusan Algoritmanya :


{ Deklarasi }
Var i,N,P,Q,R : integer;


{ Deskripsi }

readln(P,Q,R)
for i  1 to N do
readln(N)
if (R mod (P*R)) 0) then Z=R+(P*Q);
else Z=R-(P*Q););
efor
writeln(Z)



5.2 Deret
Deret bilangan merupakan sekumpulan bilangan yang disusun dengan jarak
tertentu dengan pola atau aturan tertentu. Sebagai contoh, perhatikan beberapa
deret berikut :

28


1). 2 3 4 9 11 13 13 15
2). 2 4 7 9 11 7 8 9
3). 1 1/3 1/5 1/6 1/10 1/12 1/9 1/10
4). 1/2 2/4 3/7 4/9 5/11 6/7 7/8 8/9

Pertanyaan, bagaimana kita membuat perumusan algoritma, agar dapat
menampilkan deret bilangan seperti diatas.
Cukup sederhana membuat perumusan algoritma untuk menampilkan deret
diatas. Kita selesaikan soal nomer 1, maka tahapannya :

(i). Buatlah deret perbandingan pencacah dan suku :

i → 1 2 3 4 5 6 7
8
Suku → 2 3 4 9 11 13 13
15

(ii). Kelompokkan, suku-suku yang nilai beraturan satu dengan lainnya. Lihat
hubungan nilai dan suku ! Saat i = 1 → suku = 2, saat i = 2 → suku = 3 dan
Saat i = 3 → suku = 4, maka dapat disimpulkan bahwa hubungan suku
dengan pencacah i adalah suku = i + 1. Dengan cara yang sama, maka akan
diperoleh 3 kelompok, sebagaima terlihat berikut :

i → 1 2 3 4 5 6 7
8
Suku → 2 3 4 9 11 13 13
15
Suku = i + 1 Suku = 2*i +1
Suku = 2*i -1




(iii). Perumusan Algoritma :

29


{ Deklarasi }
Var i,Suku : integer;

{ Deskripsi }
Jlh  0
for i  1 to 8 do
if (i ≤ 3) then Suku  (i+1)
else if ((i>3) and (i<7) then Suku  (2*i)+1
else Suku  (2*i)-1
Jlh  Jlh + Suku
efor
writeln(Z)


Jika deret berbentuk pecahan, maka uraikan dahulu bagian Pembilang (Pb) dan
Penyebut (Pt). Sedangkan walaupun deret berbentuk pecahan, namun jika nilai
pembilang atau penyebutnya tetap, cukup yang diuraikan penyebutnya saja atau
pembilangnya saja. Lihatlah dan selesaikan deret pada nomor 3) dan 4).

5.4 Model Matematis
Salah satu yang menjadi tujuan bagi pembelajar algoritma dan pemrograman
adalah mampu menyelsaikan Model Matematis ke Perumusan Algoritma. Hal yang
paling sederhana adalah bagimana merumuskan algortima dari persamaan mencari
nilai rerata dari sebanyak N buah bilangan berikut :

??????̅=
∑??????
??????
??????
??????=??????
??????


Penyebutnya adalah N (tidak perlu kita uraian lagi) dan jika kita uraian
pembilang dari persamaan diatas adalah : ??????̅= ??????
1+??????
2+ …+??????
N yang
merupakan jumlah dari ??????
1 s/d ??????
N dan dalam bentuk algoritma cukup dirumuskan
dengan Jumlah = Jumlah + ??????, sehingga perumusan algoritmanya menjadi :

30



{ Deklarasi }
Var i,N,Jlh,Pb,Pt : integer
Var Xrat : real

{ Deskripsi }
readln(N)
Jlh  0
for i  1 to 8 do
readln(X
Jlh  Jlh + X
Pb  Jlh
efor
Pt  N
Xrat  Pb/Pt
writeln(Xrat)

31

Larik
Bab 6
Diktat Algoritma & Pemrograman Oleh Hastha Sunardi


6.1 Pengertian larik
Larik (array) adalah kumpulan variabel (disebut juga elemen), berukuran tetap
(fixed-length element collection), berurutan dan mempunyai tipe data sama. Tidak
ada batasan berapa banyak dimensi larik yang dibuat, tetapi bukan sesuatu yang
biasa membuat obyek larik dengan dimensi lebih dari tiga. Anda tentu masih ingat
bahwa tipe data di Java dibagi menjadi dua yaitu tipe data primitif dan tipe acuan.
Tipe elemen larik dapat berupa salah satu tipe data primitif atau tipe acuan.
Larik sebenarnya adalah obyek. Variabel yang menggunakan larik merupakan
variabel acuan. Karena elemen larik dapat mempunyai tipe data apapun, termasuk
tipe acuan, elemen larik dapat berupa veriabel acuan yang mengacu ke larik lain.
Ketika larik akan digunakan, larik terlebih dahulu harus dibuat. Dalam
mendeklarasikan larik, Anda diminta untuk menentukan tipe data dan jumlah
elemen (length) larik yang dapat disimpan. Jumlah elemen larik tidak berubah
(fixed-length) setelah larik dideklarasikan.

6.2 Mendeklarasikan dan membuat larik.
Untuk menggunakan larik di program, Anda terlebih dahulu harus
mendeklarasikan variabel dengan tipe acuan yang mengacu ke larik. Larik adalah
obyek. Semua obyek di Java menempati ruang memori. Semua obyek di Java dibuat
(dikonstruksi) dengan menggunakan kata kunci new. Untuk membuat obyek larik,
terlebih dahulu harus ditentukan tipe data atau tipe acuan beserta jumlah elemen
larik. Berikut ini adalah sintaksis untuk mendeklarasikan dan membuat sebuah
obyek larik:
tipe-data[] nama-variabel = new tipe-data[jumlah-elemen];
atau
tipe-data nama-variabel[] = new tipe-data[jumlah-elemen];
Anda dapat menentukan sendiri salah satu di antara dua cara pendeklarasian
dan pembuatan larik. Kebanyakan programer memilih untuk menggunakan cara

32

yang pertama, sedangkan cara kedua merupakan cara pendeklarasian dan
pembuatan larik di bahasa pemrograman C yang kemudian diadopsi oleh Java.
Berikut ini adalah beberapa contoh pendeklarasian dan pembuatan larik larikA:
int[] larikA = new int[15]; atau int larikA[] = new int[15];
Pernyataan di atas melakukan tiga tugas sekaligus yaitu mendeklarasikan
variabel larikA yang mengacu ke obyek larik, membuat larik yang memiliki 15
elemen dengan tipe int dan memberi variabel larikA acuan (reference) ke objek larik.
String[] larikQ = new double[25]; atau String larikQ[] = new String[25];
Pernyataan di atas melakukan tiga tugas sekaligus yaitu mendeklarasikan
variabel larikQ yang mengacu ke obyek larik, membuat larik yang memiliki 25
elemen dengan masing-masing elemen mengacu ke obyek String dan memberi
variabel larikQ acuan ke obyek larik.
Proses pendeklarasian dan pembuatan larik dapat dilakukan dengan dua tahap.
Pertama, Anda dapat mendeklarasikan variabel yang mengacu ke obyek larik dan
kedua membuat obyek larik. Untuk mendeklarasikan variabel yang mengacu ke
obyek larik, perlu ditentukan tipe data atau tipe acuan untuk elemen larik. Berikut
ini adalah sintak pendeklarasian variabel yang mengacu ke obyek larik:
tipe-data[] nama-variabel; atau tipe-data nama-variabel[];
contoh,
double[] larikC; atau double larikC[];
Setelah mendeklarasikan variabel yang mengacu ke obyek larik, obyek larik
kemudian dibuat sebagaimana sintak di bawah ini:
nama-variabel = new tipe-data[jumlah-elemen];
contoh,
larikC = new double[6];
Berikut ini adalah gambaran logika dari larik yang dideklarasikan dan dibuat
dengan pernyataan double[] larikC = new double[6].

33

Ketika larik dibuat, harus ditentukan jumlah elemen larik. Dari deklarasi dan
pembuatan larik larikC di atas, ditentukan jumlah elemen larik (length of array)
adalah 6. Sebelum pemberian nilai elemen larik, elemen larik akan diberi nilai awal
(default value) 0 untuk tipe-tipe numerik primitif, karakter ‘\u0000’ untuk tipe char,
nilai false untuk tipe boolean dan null untuk tipe acuan. Ketika larik sudah dibuat,
jumlah elemen larik tidak dapat dirubah.
Elemen tertentu larik dapat diakses dengan mengunakan nama larik diikuti
indek elemen yang diletakkan di dalam kurung siku ([]). Setiap obyek larik dapat
mengetahui jumlah elemennya. Informasi mengenai jumlah elemen tersimpan di
properti (field) length. Ekspresi larikC.length akan mengembalikan jumlah elemen
larik larikC yaitu 6. Keenam elemen larikC adalah larikC[1], larikC[2], larikC[3],
larikC[4], larikC[5] dan larikC[6]. Nilai larikC[1] adalah 12,7, larikC[2] adalah 20,7,
larikC[3] adalah 12,9, larikC[4] adalah 24,1, larikC[5] adalah 5,67 dan larikC[6]
adalah 45,1.
Berikut ini adalah contoh program yang berkaitan dengan pemberian nilai
elemen ke larik.

package larik;

import java.util.Scanner;
public class C {

public static void main (String[] uigm){

Scanner input = new Scanner (System.in);

// Deklarasi
int i,N;
int Bedeng [] = new int [20];

System.out.print("Banyak data C ? ");
N =input.nextInt();

for (i=1; i<=N; i++)
{
System.out.print("C["+i+"] ? ");
Bedeng[i]=input.nextInt();
}
// Menampilkan
for (i=1; i<=N; i++)
{

34


System.out.print("C["+i+"] = "+C[i]+" ");
}
System.out.println();
}
}


6.3 Larik Dimensi Banyak

Berikut ini adalah sintaksis deklarasi variabel yang mengacu ke larik dimensi
dua:
tipe-data[][] nama-variabel; atau tipe-data nama-variabel[][];

Sebagai contoh, di bawah ini adalah deklarasi variabel tabel yang mengacu ke sebuah
larik dimensi dua.
int[][] tabel; atau int tabel[][];
Larik dimensi dua memerlukan dua buah subscribe (indeks), masing-masing
untuk baris dan kolom. Anda dapat membuat larik dimensi dua dengan menentukan
jumlah elemen untuk masing-masing indek dan kemudian memberikan acuan larik
tersebut ke variabel tabel.
tabel = new int [2][3];
Anda juga dapat mendeklarasikan variabel yang mengacu ke sebuah larik,
membuat dan sekaligus menginisialisasi larik dimensi dua dalam satu pernyataan.
int[][] tabel = {{10, 11, 12, 13}, {14, 15, 16, 17}, {18, 19, 20, 21}};
Larik dimensi banyak sebenarnya adalah larik yang setiap elemennya adalah
juga larik lain. Larik dimensi dua adalah larik dimensi satu yang setiap elemennya
adalah juga larik dimensi satu yang lain.
6.4 Menentukan jumlah elemen larik dimensi banyak.
Setiap larik secara otomatis dapat mengetahui jumlah elemennya. Panjang
(length) larik tabel adalah jumlah elemen dari larik tabel yang dapat diketahui

35

dengan cara menggunakan tabel.length. tabel[0], tabel[1] dan tabel[2] adalah
elemen larik tabel yang mewakili baris.
Masing-masing elemen baris dari larik tabel sebenarnya adalah juga larik
yang elemennya mewakili kolom larik tabel. Jumlah elemen yang mewakili kolom
untuk setiap baris larik tabel dapat diperoleh dengan menggunakan ekspresi
tabel[0].length, tabel[1].length dan tabel[2].length. Di bawah ini adalah gambaran
lebih jelas tentang larik dimensi dua.

Berikut ini adalah contoh program Java untuk menghitung selisih 2 matriks
A dan B.

package array2d_4_dinamis;



import java.util.Scanner;
public class Array2d_4 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);

int[][] a = {{1, 2, 3}, {4, 5, 6}};
int[][] b = {{3, 6, 1}, {-4, 7, 9}};

int baris = 2;
int kolom = 3;
int[][] z = new int[baris][kolom];
System.out.println("ini adalah matrix a");
for (int i = 0; i < baris; i++) {
for (int j = 0; j < kolom; j++) {

System.out.print(a[i][j] + " ");

}

System.out.println();

}



System.out.println("ini adalah matrix b");

for (int i = 0; i < baris; i++) {

36


for (int j = 0; j < kolom; j++) {

System.out.print(b[i][j] + " ");

}

System.out.println();

}

// rumus pengurangan

System.out.println("Hasil Pengurangan");

for (int i = 0; i < baris; i++) {

for (int j = 0; j < kolom; j++) {

z[i][j] = a[i][j] - b[i][j];

System.out.print(z[i][j] + " ");

}

System.out.println();

}

}

}

https://www.termasmedia.com/pemrograman/java/147-larik-array-dimensi-banyak-di-
java.html

37

Fungsi dan Prosedur
Bab 7
Diktat Algoritma & Pemrograman


7.1 Definisi Fungsi

Dalam memecahkan suatu masalah, maka salah satu cara adalah
dengan membagi masalah menjadi beberapa bagian/modul yang dalam
bahasa pemrograman berbentuk fungsi atau prosedur. Jadi t ujuan dari
Fungsi dan Procedure adalah
• Merupakan penerapan konsep modular, yaitu memecah program menjadi
modul-modul atau subprogram-subprogam yang lebih sederhana.
• Untuk hal-hal yang sering dilakukan berulang-ulang, cukup dituliskan sekali
saja dalam prosedur dan dapat dipanggil atau dipergunakan sewaktu-waktu
bila diperlukan.
Fungsi adalah sebuah blok kode program yang melakukan operasi khusus
yang sudah didefinisikan dan mengembalikan hasil yang telah diproses, dengan
adanya fungsi program lebih kelihatan rapi, mudah dipahami dan lebih terstruktur,
karena dengan adanya blog fungsi maka ketika di dalam program secara
keseluruhan ternyata ada proses yang serupa lebih dari satu dengan blok fungsi
yang sudah dibuat, tidak perlu membuat ulang, cukup menggunakan blok fungsi
tersebut dengan cara memanggil nama fungsi tersebut tanpa harus menulis kode
kembali.
Parameter fungsi adalah variable yang dilewatkan ke dalam fungsi, ketika
fungsi dibuat parameter sifatnya opsional, boleh ada atau pun boleh tidak
digunakan, pertimbangannya adalah, jika variable-variable yang dilibatkan di dalam
fngsi sifatnya dinamic atau bisa diubah-ubah atau berbeda-beda maka parameter
wajib dilibatkan, namun jika sebaliknya tidak perlu melibatkan variable di dalam
fungsi tersebut.
Nilai balik fungsi adalah return value atau nilai yang diperoleh dari proses
yang dijalankan oleh fungsi itu sendiri, tipe data nilai balik fungsi sesuai dengan
yang didefinisikan oleh fungsi itu sendiri, jika tipe datanya integer maka nilai

38

baliknya juga harus integer, jika tipe datanya string maka nilai balik yang
dikembalikan juga harus berformat string.
Ketika struktur kode program dibaca oleh komputer, dan di dalam struktur
program tersebut terdapat blok-blok fungsi, maka blok fungsi tersebut hanya akan
dibaca saja dan tidak akan diproses, blok fungsi baru akan diproses ketika ada kode
program yang memanggil fungsi tersebut. Untuk memproses blok fungsi maka fungsi
tersebut harus di panggil di dalam struktur program dengan cara menulis nama dan
juga parameternya.
Fungsi rekursif adalah Fungsi yang memanggil dirinya sendiri atau
pemanggilan fungsi yang bersangkutan di dalam struktur fungsi itu sendiri, misalkan
anda memiliki fungsi jumlahkan, nah di struktur fungsi jumlahkan yang anda buat
anda memanggil fungsi jumlahkan.


Contoh Struktur Fungsi Recursif

Fungsi Perkalikan (Var x,y : integer) : integer
.....
.....
Perkalikan(12,5)
.....
eFungsi

{ Modul Utama }
Readln(x,y)
Writeln(Perkalikan(x,y))


Berikut agar lebih memahami tentang fungsi, berikut perumusan algoritma
fungsi faktorial dari suatu bilangan N.


Fungsi Faktorial (var N : integer) : integer

{Deklarasi} → deklarasi lokal
var i, hasil : integer

{Deskripsi}
hasil  1
for i  1 to N do
hasil  hasil * i
efor

39


return hasil

{ Program Utama }

{Deklarasi }
var x : integer

Readln(x)
Writeln(Faktorial(x))




package fungsi;

import java.util.Scanner;
public class FungsiFak {

public static int Faktorial(int n)
{
int i,hasil=1;
for (i=1; i<=n; i++)
{
hasil = hasil*i;
}
return hasil;
}

public static void main(String[] args) {
Scanner baca = new Scanner(System.in);
int n;
System.out.print(("Bilangan (n) ? "));
n=baca.nextInt();
System.out.println(n+"! = "+Faktorial(n));
}
}



package fungsi;

import java.util.Scanner;
public class Pangkat_n {

public static int Pangkat(int x, int n)
{

40


int i,hasil;
if (n==0) hasil=1;
else if (n==1) hasil=x;
else
hasil=1;
for (i=1; i<=n; i++)
{
hasil = hasil*x;
}
return hasil;
}

public static void main(String[] args) {
Scanner baca = new Scanner(System.in);
int x,n;
System.out.print(("Bilangan(x) ? "));
x=baca.nextInt();
System.out.print(("Pangkat (n) ? "));
n=baca.nextInt();
System.out.println(x+"~"+n+" = "+Pangkat(x,n));
}
}


7.2 Prosedur
Penggunaan prosedur selalu diawali dengan kata Procedure. Struktur
umum prosedur adalah sebagai berikut :


Procedure Nama_Prosedur (param_formal1:tipe_param1, ..…);
begin
statement-1;
statement-2;
…………
Statement-n;
end;


Agar lebih memahami struktur prosedur, khususnya dalam bahasa
pemrograman Java, berikut beberapa prosedur yang dapat kita gunakan :

41


package methode;

import java.util.Scanner;
public class Prodepa02_KonversiNilai {

public static void nilaiHuruf(double na) {
char indeks;

if (na >= 80.0)indeks='A';
else if (na >= 69.0)indeks='B';
else if (na >= 56.0)indeks='C';
else if (na >= 37.0)indeks='D';
else indeks='E';

System.out.println("Nilai Akhir : "+na+" ["+indeks+"]");
}

public static void main (String[] args){
Scanner baca=new Scanner(System.in);

// Deklarasi
double tugas,kuis,uts,uas, nilaiAkhir;

// Deskripsi
System.out.print("Nilai Tugas : ");
tugas = baca.nextDouble();
System.out.print("Nilai Kuis : ");
kuis = baca.nextDouble();
System.out.print("Nilai UTS : ");
uts = baca.nextDouble();
System.out.print("Nilai UAS : ");
uas = baca.nextDouble();
nilaiAkhir =0.2*tugas+0.1*kuis+0.3*uts+0.4*uas;

nilaiHuruf(nilaiAkhir);
}
}




package prosedur;

import java.util.Scanner;
public class Pro3depa {

42


public static void Nilruf(double na) {
if (na >= 80.0) {
System.out.println('A');
}
else if (na >= 69.0) {
System.out.println('B');
}
else if (na >= 56.0) {
System.out.println('C');
}
else if (na >= 37.0) {
System.out.println('D');
}
else {
System.out.println('E');
}
}

public static void Pangkat(int x, int n){
int p;
if (n==0) p=1;
else if (n==1) p=x;
else {
p=1;
for (int i=1;i<=n;i++)
p=p*x;
}
System.out.println(x+"^"+n+" --> "+p);
}

public static int Pangkat1(int x,int n)
{
int i, hasil1;

if (n==0) hasil1=1;
else if (n==1) hasil1=x;
else
{
hasil1=1;
for (i=1; i<=n; i++)
{
hasil1=hasil1*x;
}
}
return hasil1;
}

43


public static void main(String[] args) {

Scanner baca = new Scanner (System.in);
double nilka;
int x1,x2,n;
String Bln;

System.out.print("Nilai Akhir ? ");
nilka = baca.nextDouble();

System.out.print(nilka+" --> ");
Nilruf(nilka);

System.out.println("[..Hitung Pangkat..]");

System.out.print("Bilangan x1 ? ");
x1 = baca.nextInt();
System.out.print("Pangkat n ? ");
n = baca.nextInt();

Pangkat(x1,n);

System.out.print("Input x2 ? ");
x2 = baca.nextInt();

System.out.println(x2+" Pangkat "+n+ " = "+Pangkat1(x2,n));

}
}

44

Pencarian & Pengurutan
Bab 8
Diktat Algoritma & Pemrograman Oleh Hastha Sunardi


8.1 Algoritma Pencarian
Dalam melakukan pencarian atau searching biasanya kita menggunakan search
engine sebagai alat bantu dalam pencarian suatu situs yang belum kita ketahui
alamatnya. Search engine adalah sebuah alat (web) yang bisa mencari alamat atau
links dari situs lain.
Ada berbagai macam search engine yang bisa digunakan dalam melakukan
pencarian atau searcing, seperti : yahoo, google, altavista, lycos, astaga, msn, dan lain
sebagainya. Pencarian atau searching merupakan proses yang sangat penting dalam
pengolahan data. Proses pencarian adalah menemukan nilai(data) tertentu pada
sekumpulan data yang bertipe sama.
Algoritma pencarian atau searching algorithm merupakan algoritma yang
menerima sebuah kata kunci atau keyword dan dengan langkah-langkah tertentu
akan mencari rekaman dengan kata kunci tersebut. Setelah proses pencarian
dilakukan, akan diperoleh salah satu dari dua kemungkinan, yaitu data yang dicari
ditemukan atau tidak ditemukan.

Algoritma Sequential Search
Sequential searching atau pencarian berurutan atau sering disebut juga sebagai
pencarian linear merupakan metode pencarian yang paling sederhana. Pencarian
linier adalah proses yang membandingkan setiap elemen larik satu per satu secara
beruntun, mulai dari elemen pertama sampai elemen yang dicari ditemukan atau
seluruh elemen sudah diperiksa.

Contoh Program

package com.community.java;
/**
* @author Akira
*/

45


public class ContohSequentialSearch {
private String [] allData = new String[]{"A", "B", "C", "D", "E", "F"};
private void tampilkanData(){
for (String data : allData) {
System.out.print(data + " ");
}
System.out.println();
}

private void searching(String karakter){
int x = 0;
boolean ketemu = false;
for (int i = x; i < allData.length; i++) {
if(karakter.equals(allData[i])){
ketemu = true;
x = i;
}
}
if(ketemu){
System.out.println("Data berada pada urutan ke - "+(x+1));
} else {
System.out.println("Data Tidak Ditemukan");
}
}

public static void main(String[] args) {
ContohSequentialSearch obj = new ContohSequentialSearch();

// Untuk menampilkan data pada Array
obj.tampilkanData();

46


// Melakukan pencarian data
obj.searching("C");
}
}

Algoritma Binary Search
Algoritma binary search atau pencarian biner merupakan metode pencarian
pada data terurut yang paling efesien. Metode pencarian biner digunakan untuk
kebutuhan pencarian dengan waktu yang cepat.
Prinsip kerja pencarian dengan membagi data atas dua bagian mendasari
dalam metode ini. Data yang tersimpan di dalam larik harus sudah terurut (dari yang
kecil ke yang besar).

Kekurangan Algoritma Binary Search
Harus melakukan pengurutan data terlebih dahulu sebelum melakukan
pencarian. Seperti menggunakan Algoritma Bubble Sort, Selection Sort, Insertion
Sort.

Contoh Program
package com.community.java;
/**
*
* @author Akira
*/
public class ContohBinarySearch {
private final int [] data = {5, 9, 12, 15, 17, 23, 27, 38, 42, 54, 64, 78, 90};
private void tampilData(){
for (int i : data) {
System.out.print(i+" ");
}
System.out.println();
}

47


public String pencarianBinary(int key) {
int bawah = 0;
int atas = data.length - 1;

while (atas >= bawah) {
int tengah = (bawah + atas) / 2;
if (key < data[tengah]){
atas = tengah - 1;
} else if (key == data[tengah]){
return "Nomor "+key+" Berada Pada Urutan Ke - "+(tengah+1);
}else{
bawah = tengah + 1;
}
}
return "Data Tidak Ditemukan";
}
public static void main(String args []){
ContohBinarySearch obj = new ContohBinarySearch();
obj.tampilData();
System.out.println(obj.pencarianBinary(8));
}
}


8.2 Pengurutan
Dalam perancangan dan analisis pemrograman, ada beberapa metode umum
yang wajib dipelajari seorang programmer dalam melatih pola pikir algoritmanya
yakni, Algoritma Sorting. Pada Algoritma Sorting terdapat banyak metode. Beberapa
metode yang saya ketahui ialah, Bubble Sort, Selection Sort, Insertion Sort, Merge
Sort dan masih banyak lagi. Nah, pada kesempatan ini saya mau menulis tutorial
tentang algoritma dari metode Bubble Sort.

48

Bubble Sort merupakan salah satu metode sorting yang menurut saya cukup
gampang untuk dipelajari. Kenapa gampang? Karena, pada dasarnya Bubble Sort
hanya melakukan pemindahan value dari kiri ke kanan untuk Ascending dan dari
kanan ke kiri untuk Descending. Seperti nama metodenya yakni, "Bubble Sort" yang
berarti menggelembungkan. "Apa yang digelembungkan?" value yang ingin di sorting.
Sebelum masuk ke program, berikut syarat dan langkah-langkah pada metode
Bubble Sort:
1. Jumlah iterasi sama dengan banyaknya bilangan dikurang 1.
2. Setiap iterasi, jumlah pertukaran bilangannya sama dengan banyaknya
bilangan.
3. Dalam Bubble Sort, walaupun deretan bilangan tersebut sudah ter-sorting
maka, proses sorting akan tetap dilakukan.
4. Tidak ada perbedaan cara untuk Bubble Sort Ascending dan Descending.
Mungkin bagi Anda yang pemula masih bingung dengan kalimat - kalimat
diatas, khususnya untuk kata iterasi. Baik saya jelaskan secara sederhana apa itu
iterasi, sebenarnya iterasi ialah proses yang dilakukan untuk meng-sorting 1 buah
bilangan atau dengan kata lain, iterasi bisa juga disebut dengan proses.
Sekarang saatnya untuk contoh kasus. Pada contoh kasus ini, saya akan
menjelaskan untuk kasus Ascending dan Descending
Pengurutan merupakan proses dasar yang ada dalam algoritma dan stuktur
data. Terdapat banyak algoritma pengurutan yang sering digunakan, namun pada
tulisan kali ini akan dibahas mengenai dasar algoritma Bubble Sort. Algortima ini
merupakan algortima pengurutan sederhana dan biasanya dipelajari sebagai pokok
bahasan seputar pengurutan.
Algoritma Bubble Sort ini merupakan proses pengurutan yang secara
berangsur-angsur berpindah ke posisi yang tepat karena itulah dinamakan Bubble
yang artinya gelembung. Algoritma ini akan mengurutkan data dari yang terbesar ke
yang terkecil (ascending) atau sebaliknya (descending).
Secara sederhana, bisa didefenisikan algoritma Bubble Sort adalah pengurutan
dengan cara pertukaran data dengan data disebelahnya secara terus menerus
sampai dalam satu iterasi tertentu tidak ada lagi perubahan.

49

Untuk belajar algoritma Bubble Sort ini kita hanya perlu memahami cara yang
digunakan untuk mengurutkan data, sederhananya algoritma ini menggunakan
perbandingan dalam operasi antar elemennya. Di bawah ini merupakan gambaran
dari algoritma Bubble Sort dengan array “3 1 4 2 8”.
Proses pertama :
(3 1 4 2 8) menjadi (1 3 4 2 8)
(1 3 4 2 8) menjadi (1 3 4 2 8)
(1 3 4 2 8) menjadi (1 3 2 4 8)
(1 3 2 4 8) menjadi (1 3 2 4 8)

Proses kedua :
(1 3 2 4 8) menjadi (1 3 2 4 8)
(1 3 2 4 8) menjadi (1 2 3 4 8)
(1 2 3 4 8) menjadi (1 2 3 4 8)
(1 2 3 4 8) menjadi (1 2 3 4 8)
Proses ketiga :
(1 2 3 4 8) menjadi (1 2 3 4 8)
(1 2 3 4 8) menjadi (1 2 3 4 8)
(1 2 3 4 8) menjadi (1 2 3 4 8)
(1 2 3 4 8) menjadi (1 2 3 4 8)


Jika kita perhatikan proses diatas, para proses kedua data sudah terurut
dengan benar. Tetapi algoritma Bubble Sort tetap berjalan hingga proses kedua
berakhir. Proses ketiga masih terus berjalan karena pada algoritma Bubble Sort
maksud terurut itu adalah tidak ada satupun penukaran pada suatu proses. Proses
ketiga ini dilakukan untuk verifikasi data.
Algoritma Bubble Sort ini mempunyai kelebihan dan kekurangan, untuk
kelebihannya metode ini merupakan metode paling sederhana untuk mengurutkan
data. Selain sederhana, algoritma Bubble Sort mudah dipahami. Sementara itu,
kekurangannya terletak pada efisiensi.
Bubble Sort ini merupakan metode pengurutan yang tidak efisien karena ketika
mengurutkan data yang sangat besar akan sangat lambat prosesnya. Selain itu,
jumlah pengulangan akan tetap sama jumlahnya meskipun data sudah cukup
terurut.

50

Ascending
import java.util.Arrays;

/**
*
* @author Yudi Setiawan
*
*/

public class BubbleSortAsc {
public static void main(String[] args) {
// Variable
int[] bilangan = {5, 12, 3, 19, 1, 47};

// Tampilkan bilangan
System.out.println("Bilangan sebelum di sorting Bubble Sort :
"+Arrays.toString(bilangan));

// Proses Bubble Sort
System.out.println("\nProses Bubble Sort secara Ascending:");
for(int a = 0; a < bilangan xss=removed> bilangan[b+1]) {
// proses pertukaran bilangan
int temp = bilangan[b];
bilangan[b] = bilangan[b+1];
bilangan[b+1] = temp;
}

// Tampilkan proses pertukaran tiap iterasi
System.out.println(Arrays.toString(bilangan));
}
System.out.println();
}

// Tampilkan hasil akhir
System.out.println("Hasil akhir setelah di sorting:
"+Arrays.toString(bilangan));
}
}

1. /*
2. Descending
3. */
4.
5. public class BubbleSortDescendingOrder {
6.
7. public static void main(String[] args) {
8.

51

9. // Membangkitkan data
10. int intArray[] = new int[]{5,90,35,45,150,3};
11.
12. //Menampilkan sebelum pengurutan
13. System.out.println("Array Before Bubble Sort");
14. for(int i=0; i < intArray.length; i++){
15. System.out.print(intArray[i] + " ");
16. }
17.
18. //sort an array in descending order using bubble
sort algorithm
19. bubbleSort(intArray);
20.
21. System.out.println("");
22.
23. //Menampilkan setelah pengurutan
24. System.out.println("Array After Bubble Sort");
25. for(int i=0; i < intArray.length; i++){
26. System.out.print(intArray[i] + " ");
27. }
28.
29. }
30.
31. private static void bubbleSort(int[] intArray) {
32.
33. int n = intArray.length;
34. int temp = 0;
35.
36. for(int i=0; i < n; i++){
37. for(int j=1; j < (n-i); j++){
38.
39. if(intArray[j-1] < intArray[j]){
40. // Pertukaran elemen
41. temp = intArray[j-1];
42. intArray[j-1] = intArray[j];
43. intArray[j] = temp;
44. }
45.
46. }
47. }
48.
49. }
50. }

https://www.community-java.com/2018/11/implementasi-algoritma-searching-pada-
pemrograman-java.html
http://javatpfb.blogspot.com/2014/09/bubble-sort-descending-order-example.html

52