dari pembentukan adalah menghindari pengetikan yang berulang-ulang
terhadap bagian program yang sama, dan membuat program lebih
terstruktur.
Pada QBasic tata cara penulisan Sub Rutin adalah sebagai berikut:
SUB namasub [(Parameterlist)] [STATIC]
[statementblock]
END SUB
Contoh :
Sub KOTAK(Y1%,X1%,Y2%,X2%)
posisiX% = POS(0) 'Simpan posisi kursor sekarang
posisiY% = CRSLIN
LOCATE Y1%,X1%
PRINT Chr$(218);String$(X2-X1-2,196);Chr$(191)
FOR I%=Y1% TO Y2% STEP 1
LOCATE I%,X1% : PRINT Chr$(179)
LOCATE I%,X2% : PRINT Chr$(179)
NEXT I%
LOCATE Y2%,X1%
PRINT Chr$(192);String$(X2-X1-2,196);Chr$(217)
LOCATE POSISIY%,POSISIX%
END SUB
Sub diatas akan mengambar suatu kotak ASCII single berdasarkan
koordinat yang diberikan.
Contoh :
CALL KOTAK(5,10,20,70)
pengiriman argumen pada Sub Procedure terdapat dua cara antara
lain :
1. Secara referensi
Argumen yang diberikan dengan cara ini kepada procedure dan
diolah, kemudian hasil akhirnya akan didefinisikan pada variabel
tersebut pada main program.
2. Dengan Value/Nilai
Argumen ini hanya berupa nilai yang dipergunakan oleh procedure
pada saat pengolahan.
Contoh :
SUB contoh(A as INTEGER)
A = 10
END SUB
Pengiriman argumen secara Referensi :
DIM Nilai As INTEGER
Nilai = 1
Call contoh(Nilai) ' Call
Print Nilai ' Akan tercetak 10
Pengiriman argumen secara Value :
DIM Nilai As INTEGER
Nilai = 1
contoh(Nilai) ' Tanpa Call
Print Nilai ' Akan tercetak 1
----------------------------------------------------------------
Jadi anda perlu berhati-hati dalam pemakaian Variabel yang
digunakan sebagai parameter pada saat pemanggilan SUB RUTIN.
----------------------------------------------------------------
static, menyatakan nilai variabel local dalam function tidak
dibuang ketika fungsi atau sub berakhir.
Dalam QBasic anda dapat menentukan tingkatan/sifat variabel yang
mengatur dimana variabel itu digunakan(level of access). Inilah
tingkatan tersebut :
1. Variabel Local, hanya bisa digunakan pada Sub Procedure atau
function tersebut telah selesai dikerjakan, maka variabel lokal
tersebut dibuang dari memory dan tidak lagi dipergunakan oleh
bagian program lain.
2. Variabel Shared, atau variabel global bisa digunakan pada
seluruh bagian program maupun Sub Procedure tertentu. Nilai
variabel ini dapat berubah selama program tersebut berjalan.
3. Variabel Static, adalah variabel local, tetapi variabel ini
nilainya tetap dipertahankan sampai pemanggilan berikutnya.
Latihan :
1. Buatlah fungsi ciptaan terbilang, contoh 1250 akan dibaca
sebagai "Seribu Duaratus limapuluh".
2. Buatlah sub kotak double.
Bilang.Bas
DECLARE FUNCTION angka$ (x AS INTEGER, posisi AS INTEGER)
DECLARE FUNCTION ratus$ (x AS INTEGER, posisi AS INTEGER)
DECLARE FUNCTION terbilang$ (x AS LONG)
PRINT terbilang$(1234567890)
FUNCTION angka$ (x AS INTEGER, posisi AS INTEGER)
SELECT CASE x
CASE 0: angka$ = "Nol"
CASE 1:
IF posisi = 1 THEN
angka$ = "Satu" 'Posisi paling akhir dibaca
ELSE 'Satu
angka$ = "Se"
END IF
CASE 2: angka$ = "Dua"
CASE 3: angka$ = "Tiga"
CASE 4: angka$ = "Empat"
CASE 5: angka$ = "Lima"
CASE 6: angka$ = "Enam"
CASE 7: angka$ = "Tujuh"
CASE 8: angka$ = "Delapan"
CASE 9: angka$ = "Sembilan"
CASE 10: angka$ = "Sepuluh"
CASE 11: angka$ = "Sebelas"
CASE 12: angka$ = "Duabelas"
CASE 13: angka$ = "Tigabelas"
CASE 14: angka$ = "Empatbelas"
CASE 15: angka$ = "Limabelas"
CASE 16: angka$ = "Enambelas"
CASE 17: angka$ = "Tujuhbelas"
CASE 18: angka$ = "Delapanbelas"
CASE 19: angka$ = "Sembilanbelas"
END SELECT
END FUNCTION
FUNCTION ratus$ (x AS INTEGER, posisi AS INTEGER)
DIM a100 AS INTEGER, a10 AS INTEGER, a1 AS INTEGER
DIM baca AS STRING
a100 = x \ 100 'Ambil angka ratusan
a10 = (x MOD 100) \ 10 'Ambil angka puluhan
a1 = x MOD 10 'Ambil angka satuan
IF a100 > 0 THEN
baca = angka$(a100, posisi) + "ratus"
END IF
IF a10 = 1 THEN 'Sepuluh s/d Sembilanbelas
baca = baca + angka$(a10 * 10 + a1, posisi)
ELSE
IF a10 > 0 THEN 'Duapuluh s/d Sembilanpuluh
baca = baca + angka$(a10, posisi) + "puluh"
END IF
IF a1 > 0 THEN 'Satu s/d Sembilan
baca = baca + angka$(a1, posisi)
END IF
END IF
ratus$ = baca
END FUNCTION
FUNCTION terbilang$ (x AS LONG)
DIM milyar AS INTEGER, juta AS INTEGER, ribu AS INTEGER, satu AS
INTEGER
DIM baca AS STRING
IF x = 0 THEN 'Jika x = Nol
baca$ = angka$(0, 1) 'Dibaca Nol
ELSE
milyar = x \ 1E+09 'Ambil bagian ratusan milyar
juta = (x MOD 1E+09) \ 1000000 'Ambil bagian ratusan juta
ribu = (x MOD 1000000) \ 1000 'Ambil bagian ratusan ribu
satu = x MOD 1000 'Ambil bagian ratusan
IF milyar > 0 THEN
baca = ratus$(milyar, 4) + "milyar"
END IF
IF juta > 0 THEN
baca = baca + ratus$(juta, 3) + "juta"
END IF
IF ribu > 0 THEN
baca = baca + ratus$(ribu, 2) + "ribu"
END IF
IF satu > 0 THEN
baca = baca + ratus$(satu, 1)
END IF
END IF
terbilang$ = baca
END FUNCTION
0 komentar:
Posting Komentar