Nuraini Purwandari
1
Subprogram
Program kecil yang melakukan tugas
tertentu dan merupakan bagian dari
program secara keseluruhan
Keuntungan :
Mudah dikodekan
Mudah dipahami
Penghematan kode program
2
Bentuk Subprogram
Subrutin
Prosedur subrutin (SUB Procedure)
Prosedur fungsi (FUNCTION Procedure)
3
Subrutin
Namalabel dapat berupa nomor baris
Untuk menjalankan subrutin, digunakan
GOSUB
4
NamaLabel :
Pernyataan1
Pernyataan2
RETURN
GOSUB NamaLabel
5
GOSUB NamaLabel
PernyataanX
NamaLabel :
Pernyataan1
Pernyataan2
RETURN
Program Utama /
Pemanggil Subrutin
Subrutin
1
2
3
6
CLS
GOSUB Garis
FOR i = 1 TO 3
Print i
NEXT i
GOSUB Garis
END
Garis :
PRINT STRING(80, =)
RETURN
Output :
===============================
1
2
3
===============================
Prosedur Fungsi (FUNCTION)
Subprogram yang apabila dipanggil
dalam suatu pernyataan akan
memberikan nilai balik (return value)
7
Fungsi
Argumen/
Parameter
Nilai Balik
Definisi Fungsi (FUNCTION)
NamaFungsi juga menentukan tipe nilai
baliknya
DaftarParameter bersifat optional
Nilai balik dari fungsi sesuai dengan nilai
Ungkapan
8
FUNCTION NamaFungsi[(DaftarParameter)]
[BlokPernyataan]
NamaFungsi = Ungkapan
END FUNCTION
9
CLS
Hasil = Pangkat(2, 3)
PRINT 2 pangkat 3 = ; Hasil
PRINT 2 pangkat 4 = ; Pangkat(2, 4)
END
FUNCTION Pangkat(a, b)
Pangkat = a ^ b
END FUNCTION
Output :
2 pangkat 3 = 8
2 pangkat 4 = 16
Parameter Formal & Aktual
10
FUNCTION Pangkat(a, b)
Pangkat = a ^ b
END FUNCTION
Parameter Formal
Pangkat(2, 3)
Pangkat(x, y)
Parameter Aktual
11
CLS
INPUT a, b
PRINT Maks(a, b)
PRINT Maks(b, a)
END
FUNCTION Maks(x, y)
IF x > y then
Maks = x
Else
Maks = y
END IF
END FUNCTION
Prosedur Subrutin (SUB)
Bisa memiliki parameter seperti pada
fungsi (function)
Tidak memerlukan perintah RETURN
Setiap definisi prosedur subrutin akan
diletakkan terpisah terhadap program
utama pada saat diedit
12
Definisi Prosedur Subrutin
Pernyataan untuk memanggil prosedur
subrutin menggunakan CALL
13
SUB NamaProsedur[(DaftarParameter)]
BlokPernyataan
END SUB
CALL NamaProsedur[(DaftarArgumen)]
14
CALL Pros1(2)
PernyataanX
SUB Pros1(x)
Pernyataan1
Pernyataan2
END SUB
Program Utama /
Pemanggil Subrutin
Prosedur
1
2
3
Variabel Lokal, Statis dan Global
Lokal, hanya berlaku dalam suatu
prosedur
Statis, hanya berlaku dalam suatu
prosedur tetapi nilai yang tersimpan di
dalamnya tetap dipertahankan seusai
prosedur tersebut dipanggil
Global, berlaku baik di program utama
maupun di dalam suatu prosedur
15
16
CLS
N$ = Qbasic
PRINT Coba$(N$)
PRINT N$
END
FUNCTION Coba$(x$)
N$ = X$ + Lokal
Coba$ = N$
END FUNCTION
Output :
QBasic Lokal
Qbasic
CLS
PRINT Statis, N
PRINT Statis, N
PRINT Statis, N
END
FUNCTION Statis
STATIC N
N = N + 1
Statis = N
END FUNCTION
Output :
1 0
2 0
3 0
17
CLS
N$ = Qbasic
PRINT Coba$(N$)
PRINT N$
END
FUNCTION Coba$(x$)
SHARED N$
N$ = X$ + Lokal
Coba$ = N$
END FUNCTION
Output :
QBasic Lokal
QBasic Lokal
Melewatkan Parameter
By Reference (secara referensi),
parameter dapat diubah dari dalam
prosedur
By Value (secara nilai),
parameter tidak dapat diubah dari dalam
prosedur
18
By Reference
19
CLS
Nilai% = 256
PRINT Nilai = ; Nilai%
PRINT Nilai + 1 = ; PlusSatu(Nilai%)
PRINT Nilai = ; Nilai%
FUNCTION PlusSatu(X%)
X% = X% + 1
PlusSatu = X%
END FUNCTION
Nilai = 256
Nilai + 1 = 257
Nilai = 257
Nilai berubah
By Value
20
CLS
Nilai% = 256
PRINT Nilai = ; Nilai%
PRINT Nilai + 1 = ; PlusSatu((Nilai%))
PRINT Nilai = ; Nilai%
FUNCTION PlusSatu(X%)
X% = X% + 1
PlusSatu = X%
END FUNCTION
Nilai = 256
Nilai + 1 = 257
Nilai = 256
Nilai tidak berubah
EXIT SUB dan EXIT FUNCTION
EXIT SUB, keluar dari prosedur SUB
EXIT FUNCTION, keluar dari prosedur
FUNCTION
21
Rekursi
Proses memanggil diri sendiri
Diterapkan pada prosedur (SUB
maupun FUNCTION)
22
23
CLS
INPUT Masukkan bilangan N = , N%
PRINT N%;! = ; Faktorial(N%)
END
FUNCTION Faktorial(X%)
IF X% = 0 THEN
Faktorial = 1
ELSE
Faktorial = X% * Faktorial(X% - 1)
END IF
END FUNCTION
Masukkan bilangan N = 3
3! = 6