Subprogram
Praktikum Algoritma dan Struktur Data
Jurusan Matematika Fakultas Sains dan Teknologi
TA. 2020/2021
UIN Sunan Gunung Djati Instruktur/ Asisten:
Bandung
A. Tujuan
1. Mahasiswa memahami konsep subprogram, berupa prosedur dan fungsi.
2. Mahasiswa dapat memisahkan bagian-bagian subprogram.
3. Mahasiswa dapat membuat subprogram dengan bahasa Java terhadap contoh-contoh
program sederhana
B. Pokok Bahasan
Subprogram: Prosedur dan Fungsi, dan fungsi rekursif.
C. Tugas Pendahuluan
1. Masih ingatkah Anda pengertian algoritma dan program? Jelaskan.
2. Apakah kaitan algoritma dengan program? Jelaskan.
3. Pernahkan Anda membuat program yang sangat panjang?
4. Perhatikan lirik lagu Indonesia Raya berikut:
Indonesia Raya Chorus:
Indonesia raya
Indonesia tanah airku Merdeka merdeka
Tanah tumpah darahku Tanahku negriku yang kucinta
Di sanalah aku berdiri
Jadi pandu ibuku Indonesia raya
Merdeka merdeka
Indonesia kebangsaanku Hiduplah Indonesia raya
Bangsa dan tanah airku
Marilah kita berseru
Indonesia bersatu
Hiduplah tanahku
Hiduplah negriku
Bangsaku rakyatku semuanya
Bangunlah jiwanya
Bangunlah badannya
Untuk Indonesia raya
Chorus
Chorus
Pada lagu tersebut, Anda tentu akan menyanyikannya secara lengkap dengan Chorus
yang dinyanyikan 2x di akhir.
1|M o d u l 2 : S u b p r o g r a m
5. Saat membuat program besar dan terdapat beberapa baris program yang ditulis
berulang kali, namun diletakkan di beberapa tempat berbeda. Apakah struktur
algoritma loop masih akan dipilih? Jelaskan.
6. Apakah Anda masih ingat istilah subprogram? Gali kembali informasi tentang
subprogram kemudian jelaskan:
a. Apakah yang dimaksud dengan subprogram?
b. Bagaimana menuliskan subprogram?
c. Bagaimana memanggil subprogram agar dapat dipakai di program lain?
d. Berikan contoh subprogram sederhana
D. Materi
Subprogram
Subprogram adalah bagian-bagian program yang lebih kecil, namun berdiri sendiri,
dan dapat dipanggil dari program lain. Subprogram digunakan untuk menyederhanakan
baris perintah, terutama untuk program yang dipanggil berulang kali, serta memberikan
kemudahan untuk mengelola program, baik menulis, mengevaluasi dan memodifikasi
program.
Subprogram ada dua macam, yaitu prosedur (procedure) dan fungsi (function).
Prosedur adalah subprogram yang mengerjakan aktifitas spesifik dan menghasilkan
sesuatu. Sedangkan fungsi (function) adalah subprogram yang merupakan transformasi
dari beberapa nilai menjadi satu nilai yang dikembalikan ke program pemanggil.
Sehingga, perbedaan dari prosedur dan fungsi hanya pada ada atau tidaknya nilai balik.
2|M o d u l 2 : S u b p r o g r a m
Dalam pemrograman, terdapat dua jenis parameter, yaitu parameter formal dan
parameter aktual.
1. Parameter formal merupakan variabel yang terdefinisi dalam subprogram dan
berguna untuk menerima nilai dari parameter aktual.
2. Parameter aktual adalah variabel yang menjadi parameter dalam pemanggilan
subprogram dan berguna untuk mengirim nilai ke parameter formal.
Parameter ini dapat dipanggil menggunakan nilai (by value) dan by refference.
Prosedur (Procedure)
Prosedur adalah subprogram yang mengerjakan aktifitas spesifik dan
menghasilkan sesuatu. Prosedur tidak mengembalikkan nilai ke program pemanggil,
sehingga hanya user yang dapat melihat hasilnya.
Prosedur ditulis sebagaimana algoritma program ditulis, yaitu
1. Judul, berisi kata “Procedure” yang diikuti nama prosedur serta keterangan tentang isi
prosedure, meliputi IS dan FS dari prosedure yang ditulis.
2. Kamus lokal, berisi variable-variabel, kontanta atau subprogram lain yang akan
digunakan pada prosedur secara “lokal”.
3. Deskripsi, berisi perintah yang dilakukan dalam prosedur.
Kamus Lokal:
{nama-nama variable yang digunakan dalam subprogram}
Deskripsi:
{berisi baris perintah yang dilakukan prosedur}
Contoh 1:
Procedure Voltage (Input A, R: integer; Output V: integer)
{IS: diberikan nilai hambatan R dan arus A yang telah
terdefinisi}
{FS: memproses R dan A shg menghasilkan nilai tegangan V=R*A}
Kamus Lokal:
-
Deskripsi:
V → R*A
Program Voltage_Utama
{program yang membaca nilai hambatan R dan arus A, kemudian
menghitung voltase-nya}
Kamus:
R, A, V: integer
Procedure Voltage(Input A, R: integer; Output V: integer)
3|M o d u l 2 : S u b p r o g r a m
Deskripsi:
input(A, R)
Voltage(A, R, V) {memanggil Procedure Voltage}
output(V)
Contoh 2:
Procedure TUKAR (Input/output a, b: integer)
{IS: diberikan nilai a=A dan b=B}
{FS: nilai a=B dan b=A}
Kamus Lokal:
temp : integer
Deskripsi:
temp ← a
a ← b
b ← temp
Program Tukar_Utama
{program membaca dua nilai dalam variable x dan y, kemudian
menukarnya}
Kamus:
x, y: integer
Procedure TUKAR(Input/output a,b: integer)
Deskripsi:
input(x,y)
TUKAR(x,y) {memanggil Procedure TUKAR}
output(x,y)
Fungsi (function)
Secara umum konsep fungsi dalam pemrograman sama dengan fungsi dalam
matematika. Dalam matematika, fungsi sering didefinisikan sebagai aturan yang
menghubungkan suatu himpunan dengan himpunan lainnya. Fungsi memiliki domain dan
range. Selain itu, fungsi juga dinotasikan dengan nama, parameter, formula dan nilai
fungsi.
4|M o d u l 2 : S u b p r o g r a m
Dalam tingkat yang lebih tinggi, fungsi dapat digunakan untuk menyederhanakan
penulisan suatu persamaan yang kompleks. Misalkan g ( x) 2 f ( x) f ( x)2 4 dengan
f(x) seperti yang didefinisikan pada Gambar 5.1. Maka dengan mensubstitusi f(x) pada
g(x), diperoleh g ( x) 9 x 4 36 x 3 18x 2 12 x 4 . Selain itu, kita dapat menggunakan
f(x) dan g(x) jika diperlukan pada persamaan lain.
Dalam pemrograman, fungsi (function) adalah subprogram yang merupakan
transformasi dari beberapa nilai menjadi satu nilai yang dikembalikan ke program
pemanggil. Jadi, fungsi akan mengembalikan nilai ke program pemanggil, sehingga
program utama dapat menggunakannya jika diperlukan pada perintah berikutnya..
Seperti prosedur, fungsi ditulis sebagaimana algoritma program ditulis, yaitu
1. Judul, berisi kata “Function” yang diikuti nama fungsi, parameter serta tipe nilai balik
fungsi.
2. Kamus lokal, berisi variable-variabel, konstanta atau subprogram lain yang akan
digunakan pada fungsi secara “lokal”.
3. Deskripsi, berisi perintah yang dilakukan dalam fungsi.
Fungsi dipanggil dengan menyebutkan nama dan parameternya (jika ada), serta
variable untuk nilai balik, jika diperlukan.
Kamus Lokal:
{nama-nama variable yang digunakan dalam fungsi}
Deskripsi:
{berisi baris perintah yang dilakukan fungsi}
Perintah_1
Perintah_2
… …
Perintah_n
→ nilai_balik
Contoh:
Function fungsi_kuadrat (x: integer) → integer
{menghitung nilai fungsi kuadrat berbentuk x^2+2x-3 dari suatu
bilangan x}
Kamus Lokal:
-
Deskripsi:
→ x*x + 2*x – 3 {nilai balik}
Program hitung_fungsi
{program akan menampilkan hasil perkalian suatu bilangan k dengan
fungsi x^2+2x-3 untuk suatu k dan x yang diinputkan user dari
keyboard}
5|M o d u l 2 : S u b p r o g r a m
Kamus:
k, a, hasil : integer
fungsi_kuadrat(x:integer) → integer
Deskripsi:
input(a, k)
hasil ← k* fungsi_kuadrat(a) {memanggil fungsi_kuadrat}
output(hasil)
Fungsi Rekursif
Fungsi rekursif adalah salah satu jenis fungsi yang memanggil dirinya sendiri.
Rekursif biasanya digunakan secara konseptual dengan menyederhanakan permasalahan
pemrograman, meski kadang penggunaan pengulangan konvensional akan bekerja lebih
cepat.
Contoh:
Function faktorial (x: int) int
{diberikan x berupa bilangan bulat, menghasilkan nilai faktorial
dari x}
Kamus Lokal: -
Algoritma:
if (x=1 or x=0)
1
else
(x*faktorial(x-1))
Program Rekursif
{diberikan x berupa bilangan bulat, menghasilkan nilai faktorial
dari x}
Kamus:
a : int
Function factorial(x: int) int
Algoritma:
input(a)
output (faktorial(a))
Selain modifier, method dalam Java juga memiliki beberapa kata kunci lain untuk
dapat diakses, yaitu:
1. Static, artinya method tersebut adalah milik class, bukan contoh dari class. Sehingga,
pemanggilan method bertipe static pada class yang sama bisa langsung dilakukan
dengan menuliskan nama method dan parameternya (jika ada), tetapi pemanggilan
pada class lain memerlukan pendefinisian objek baru pada class terlebih dahulu. Jika
kata kunci “static” tidak disertakan, maka kita perlu mendefinisikan objek baru untuk
class tersebut. Pendefinisian objek pada class baru dilakukan dengan:
2. Void, artinya method tidak mengembalikan nilai. Void serupa dengan pendefinisian
prosedur. Jika method akan mengembalikan nilai, maka kata void diganti dengan tipe
data nilai balikan / return di akhir method.
Sehingga, notasi untuk menuliskan subprogram dalam java adalah sebagai berikut.
modifier kata_kunci nama_method (parameter_formal_jika_ada){
Daftar_variable_lokal
Perintah_1
Perintah_2
Perintah_3
….
Perintah_n
return nilai_balik //jika_ada
}
7|M o d u l 2 : S u b p r o g r a m
10 public static double luaspersegi (double sisi){
11 /* method bernama luaspersegi, yang dapat diakses
12 dari kelas manapun yang memiliki nilai balik bernama luas
yang bertipe double
13 */
14 double luas = sisi*sisi;
15 return luas;
16 }
17 //--------------------------------------------
18 private double luassegitiga(double alas, double tinggi){
19 double luas = (alas*tinggi)/2;
20 return luas;
21 }
22 //------------------------------------------
23 public static void main(String arg[]){
24 Scanner scn = new Scanner(System.in);
25 System.out.print("Masukkan nama Anda : " );
26 String n = scn.nextLine();
27 tampil(n);
28 System.out.print("Masukkan panjang sisi persegi
Anda : ");
29 double s = scn.nextDouble();
30 double l = luaspersegi(s);
31 System.out.println("Luas persegi Anda adalah " +l);
32 System.out.println(" ");
33 System.out.println("Selanjutnya, akan menghitung
segitiga");
34 System.out.print("Masukkan alas : ");
35 double a = scn.nextDouble();
36 System.out.print("Masukkan nilai tinggi : ");
37 double t = scn.nextDouble();
38 BelajarSubprogram bs = new BelajarSubprogram();
39 System.out.println("Luas segitiga Anda adalah " +
bs.luassegitiga(a,t));
40 }
41 }
Jika method memiliki kata kunci void maka method tersebut memiliki struktur
subprogram prosedur. Sedangkan method yang memiliki kata kunci berupa tipe data,
maka method tersebut memiliki struktur subprogram fungsi. Hal tersebut juga dapat
ditandai dengan adanya perintah return (nilai balik).
Ingat!!!
8|M o d u l 2 : S u b p r o g r a m
E. Praktikum
Perhatian!!
Untuk menuliskan kode/syntax Java Script, pastikan Anda telah menginstal JDK di
laptop/PC Anda. Bagi pemilik ponsel Android, dapat menggunakan Jvdroid atau compiler
java lainnya.
Ulangi 2x
Chorus1
9|M o d u l 2 : S u b p r o g r a m
2. Perhatikan lirik lagu berikut.
Aku punya anjing kecil
Kuberi nama Helly
Ia senang bermain-main
Sambil berlari-lari
Helly! Guk! Guk! Guk!
Kemari! Guk! Guk! Guk!
Ayo lari-lari...
Helly! Guk! Guk! Guk!
Kemari! Guk! Guk! Guk!
Ayo lari-lari...
Dari lagu di atas, dapat dibuat suatu subprogram.
Definisikan subprogram disini. Tuliskan pemanggilan subprogram
disini.
10 | M o d u l 2 : S u b p r o g r a m
4. Ingat kembali ketika Anda diminta menuliskan kode untuk mengantar Ikhwan ke masjid.
Diketahui blok kode berikut.
Tuliskan blok kode untuk membantu Ikhwan sampai ke mesjid sambil menjemput teman-
temannya, dimana satu blok jemput_teman hanya berlaku untuk menjemput seorang
teman saja. (Cat: Angka di bentuk rumah adalah jumlah teman yang harus dijemput.)
a.
b.
5. Definisikan suatu blok kode baru untuk “jemput”, yang meminta parameter
jumlah_teman, seperti berikut.
Definisikan: jemput (jml_teman)
Ulangi sampai jml_teman == 0
jemput_teman
jml_teman = jml_teman - 1
a. Apakah nama subprogram yang didefinisikan? _____________
b. Apakah subprogram tersebut memiliki parameter? (Ya/ Tidak)*
c. Jika Ya, apakah nama parameternya? _______________
d. Termasuk jenis parameter aktual atau parameter formal? _________________
e. Termasuk subprogram jenis ke-….. (prosedur/ fungsi)*
*Lingkari jawaban yang tepat
11 | M o d u l 2 : S u b p r o g r a m
f. Tuliskan dalam pseudocode:
Procedure ________ (Input _________; Output ___________)
{IS: __________________________________________________}
{FS: __________________________________________________}
Kamus Lokal:
Deskripsi:
Dengan subprogram jemput dan blok kode di atas, tuliskan kembali blok kode untuk
mengerjakan kembali soal no. 4.
a.
12 | M o d u l 2 : S u b p r o g r a m
b.
Kamus Lokal:
Deskripsi:
13 | M o d u l 2 : S u b p r o g r a m
h. Misalkan kita akan menjemput 4 orang teman, bagaimana memanggil subprogram di
atas? Dan bagaimana hasilnya akan disimpan?
8. Buatlah program pemanggil subprogram soal pada no.7, yang akan menjumlahkan teman
yang berhasil dijemput untuk rute ikhwan berikut.
a.
b.
Catatan:
Sebagai langkah awal memahami subprogram dalam java::
Subprogram dalam java dikenal sebagai method. Jadi, penyebutan method artinya
subprogram, baik procedure maupun fungsi.
Modifier class dan method yang digunakan adalah private atau public.
Gunakan kata kunci static di setiap method.
14 | M o d u l 2 : S u b p r o g r a m
Kamus Lokal:
-
Deskripsi:
for i ← 1 to 43
output(“=”)
newline()
c. Jika akan menuliskannya dalam bahasa Java, maka rumuskan hal berikut:
Komponen Status*) Kata Kunci*)
Hak akses method Umum/ pribadi class public / private
Nilai balik Ada/ tidak void / int / double / boolean/ char
*) lingkari salah satu.
e. Tuliskan method pada bagian 10.d, pada java script BelajarSubprogram yang Anda
buat. Tambahkan pula method main() seperti di bawah ini, kemudian eksekusi.
public static void main (String[] arg){
garis();
System.out.println("Jurusan Matematika UIN Sunan Gunung
Djati ");
garis();
}
15 | M o d u l 2 : S u b p r o g r a m
11. Dengan langkah seperti pada no. 10, tuliskan kode untuk method berikut.
Kamus Lokal:
-
Deskripsi:
for i ← 1 to jml
output(c)
newline()
c. Jika akan menuliskannya dalam bahasa Java, maka rumuskan hal berikut:
Komponen Status*) Kata Kunci*)
Hak akses method Umum/ pribadi class public / private
Nilai balik Ada/ tidak void / int / double / boolean/ char
*) lingkari salah satu.
e. Tuliskan method pada bagian 11.d, pada java script BelajarSubprogram yang Anda
buat sebelumnya. Gantilah perintah pada method main() menjadi seperti di bawah ini,
kemudian eksekusi.
public static void main (String[] arg){
garis_baru(45, ‘+’);
System.out.println("Jurusan Matematika UIN Sunan Gunung
Djati ");
garis_baru(45, ‘-‘);
}
16 | M o d u l 2 : S u b p r o g r a m
12. Perhatikan syntax Java berikut.
// method fx
private static int fx(int x){
return x*x+2*x-3;
}
}
Kamus Lokal:
Deskripsi:
13. Berdasarkan soal no. 9 hingga 12, tuliskan pseudocode program pemanggil bagi
subprogram-subprogram tersebut.
Program ___________________
{ _________________
}
17 | M o d u l 2 : S u b p r o g r a m
Kamus:
Deskripsi:
F. Kesimpulan
Tuliskan kesimpulan yang Anda peroleh dari hasil praktikum pada modul ini.
G. Laporan
Laporan yang disusun harus menjawab pertanyaan berikut. Jika perlu, sertakan gambar
dan tabel. Jawablah pertanyaan berikut ini.
1. Jelaskan tentang subprogram dan jenis-jenisnya, beserta ilustrasinya.
2. Berikan beberapa contoh subprogram, berupa fungsi dan procedure, jelaskan
komponennya dan buat algoritmanya.
3. Tuliskan algoritma lengkap untuk memanggil subprogram pada bagian 2 laporan.
4. Tuliskan kode Java untuk contoh-contoh yang Anda buat.
5. Jelaskan tentang fungsi rekursif, tuliskan method java untuk fungsi rekursif yag
dibahas pada bagian Materi modul ini.
6. Eksplorasilah penggunaan modifier dan efek pemilihan kata kunci pada kode Java.
18 | M o d u l 2 : S u b p r o g r a m
Ket:
Gambar boleh mengambil dari internet dan sertakan referensi yang digunakan.
Gambar dicetak dan ditempel pada buku tugas.
Penulisan judul tabel diletakkan di atas tabel, sedangkan judul gambar diletakkan di
bawah gambar.
H. Latihan
1. Buatlah algoritma dan program untuk menampilkan deret fibbonaci sebanyak n suku
menggunakan rekursif dan tanpa rekursif.
2. Buatlah kelas bangun datar yang berisi method-method untuk menghitung luas
setiap bangun datar, seperti segitiga, persegi panjang dan lingkaran. Kemudian
method main() untuk memanggil method tersebut.
[Hint: sajikan dalam bentuk menu dan subprogram, sehingga user yang akan
memilih bangun datar apa yang akan dihitung luasnya].
I. Tugas
Perhatikan cerita berikut.
Program Bank Algoria Mandiri menerima inputan berupa nama nasabah dan saldo
awal. Kemudian muncul menu:
1. Tarik Tunai
2. Simpan Uang
Jika user memilih menu 1, program meminta inputan jumlah uang yang akan diambil
dan menampilkan sisa saldo. Aturan pengambilan uang sebagai berikut:
- Jika uang yang diambil > Rp 500.000,00 maka mendapat potongan saldo Rp
2.500,00.
- Jika uang yang diambil > Rp 1.000.000,00 maka mendapat potongan saldo Rp
5.000,00.
Pengambilan uang tidak boleh menyisakan saldo Rp 50.000,00.
Jika user memilih menu 2, program meminta inputan jumlah uang yang akan disimpan
dan menampilkan sisa saldo.
Buatlah program untuk menyelesaikan masalah pada cerita tersebut dengan menyajikan
operasi tarik tunai dan simpan uang sebagai method, dan keduanya dipanggil dalam
method main().
[Hint: uang disimpan dengan tipe data long]
J. Materi Selanjutnya
Pemrograman Berorientasi Objek (Object Oriented Programming - OOP)
K. Referensi
Arief Fatchul Huda. 2013. Modul: Praktikum Algoritma Komputer. Bandung: Jurusan
Matematika FST UIN Sunan Gunung Djati.
Arief F.H dan Qonita U.S. 2019. Modul: Praktikum Dasar-dasar Pemrograman. Bandung:
Matematika, FST, UIN Sunan Gunung Djati.
Bambang HAryanto. 2005. Esensi-esensi Bahasa Pemrograman Java. Bandung: Penerbit
INFORMATIKA.
19 | M o d u l 2 : S u b p r o g r a m
Burry Burd. 2005. Beginning Programming with Java for Dummies, 2 nd Edition. Wiley
Publishing.
Dian Nuraiman. 2014. Modul Praktikum Dasar-dasar Pemrograman. Bandung: FST, UIN
Sunan Gunung Djati.
Dian Nuraiman. 2012. Modul Praktikum Struktur Data dan Algoritma. Bandung: FST,
UIN Sunan Gunung Djati.
Siti Rofiqoh Fitriyani. 2016. Modul Praktikum Algoritma dan Struktur Data. Bandung:
FST, UIN Sunan Gunung Djati
20 | M o d u l 2 : S u b p r o g r a m