230 likes | 380 Views
Subprogram. Program kecil yang melakukan tugas tertentu dan merupakan bagian dari program secara keseluruhan Keuntungan : Mudah dikodekan Mudah dipahami Penghematan kode program. Bentuk Subprogram. Subrutin Prosedur subrutin (SUB Procedure) Prosedur fungsi (FUNCTION Procedure). Subrutin.
E N D
Subprogram • Program kecil yang melakukan tugas tertentu dan merupakan bagian dari program secara keseluruhan • Keuntungan : • Mudah dikodekan • Mudah dipahami • Penghematan kode program
Bentuk Subprogram • Subrutin • Prosedur subrutin (SUB Procedure) • Prosedur fungsi (FUNCTION Procedure)
Subrutin NamaLabel : Pernyataan1 Pernyataan2 … RETURN • Namalabel dapat berupa nomor baris • Untuk menjalankan subrutin, digunakan GOSUB GOSUB NamaLabel
Program Utama / Pemanggil Subrutin Subrutin … GOSUB NamaLabel PernyataanX … NamaLabel : Pernyataan1 Pernyataan2 … RETURN 1 2 3
CLS GOSUB Garis FOR i = 1 TO 3 Print i NEXT i GOSUB Garis END Garis : PRINT STRING(80, “=”) RETURN Output : =============================== 1 2 3 ===============================
Argumen/ Parameter Nilai Balik Fungsi Prosedur Fungsi (FUNCTION) • Subprogram yang apabila dipanggil dalam suatu pernyataan akan memberikan nilai balik (return value)
Definisi Fungsi (FUNCTION) • NamaFungsi juga menentukan tipe nilai baliknya • DaftarParameter bersifat optional • Nilai balik dari fungsi sesuai dengan nilai Ungkapan FUNCTION NamaFungsi[(DaftarParameter)] [BlokPernyataan] NamaFungsi = Ungkapan END FUNCTION
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 FUNCTION Pangkat(a, b) Pangkat = a ^ b END FUNCTION Parameter Formal Parameter Aktual Pangkat(2, 3) Pangkat(x, y)
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
Definisi Prosedur Subrutin • Pernyataan untuk memanggil prosedur subrutin menggunakan CALL SUB NamaProsedur[(DaftarParameter)] BlokPernyataan END SUB CALL NamaProsedur[(DaftarArgumen)]
Program Utama / Pemanggil Subrutin Prosedur … CALL Pros1(2) PernyataanX … SUB Pros1(x) Pernyataan1 Pernyataan2 … END SUB 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
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
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
By Reference 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 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
Rekursi • Proses memanggil diri sendiri • Diterapkan pada prosedur (SUB maupun FUNCTION)
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