192 lines
3.7 KiB
QBasic
192 lines
3.7 KiB
QBasic
' Test file for all new features
|
|
' ============================================================
|
|
|
|
' === CONST ===
|
|
PRINT "==== CONST ===="
|
|
CONST PI = 3.14159
|
|
CONST MAX_SIZE = 100
|
|
CONST GREETING$ = "Hello"
|
|
PRINT "PI = "; PI
|
|
PRINT "MAX_SIZE = "; MAX_SIZE
|
|
PRINT "GREETING$ = "; GREETING$
|
|
|
|
' === New Math Functions ===
|
|
PRINT ""
|
|
PRINT "==== Math Functions ===="
|
|
PRINT "TAN(0.7854) = "; TAN(0.7854)
|
|
PRINT "ATN(1) = "; ATN(1)
|
|
PRINT "LOG(2.71828) = "; LOG(2.71828)
|
|
PRINT "EXP(1) = "; EXP(1)
|
|
PRINT "SGN(-5) = "; SGN(-5)
|
|
PRINT "SGN(0) = "; SGN(0)
|
|
PRINT "SGN(42) = "; SGN(42)
|
|
|
|
' === RND / RANDOMIZE ===
|
|
PRINT ""
|
|
PRINT "==== RND / RANDOMIZE ===="
|
|
RANDOMIZE 12345
|
|
DIM r AS DOUBLE
|
|
r = RND
|
|
PRINT "RND (with seed 12345): "; r
|
|
r = RND()
|
|
PRINT "RND() again: "; r
|
|
RANDOMIZE
|
|
PRINT "RANDOMIZE (time-based) done"
|
|
|
|
' === New String Functions ===
|
|
PRINT ""
|
|
PRINT "==== String Functions ===="
|
|
PRINT "LTRIM$(' hello') = '"; LTRIM$(" hello"); "'"
|
|
PRINT "RTRIM$('hello ') = '"; RTRIM$("hello "); "'"
|
|
PRINT "TRIM$(' hello ') = '"; TRIM$(" hello "); "'"
|
|
PRINT "SPACE$(5) = '"; SPACE$(5); "'"
|
|
PRINT "HEX$(255) = "; HEX$(255)
|
|
PRINT "HEX$(16) = "; HEX$(16)
|
|
PRINT "OCT$(8) = "; OCT$(8)
|
|
PRINT "OCT$(255) = "; OCT$(255)
|
|
PRINT "STRING$(5, '*') = "; STRING$(5, "*")
|
|
PRINT "STRING$(3, 'AB') = "; STRING$(3, "AB")
|
|
|
|
' === SWAP ===
|
|
PRINT ""
|
|
PRINT "==== SWAP ===="
|
|
DIM a AS INTEGER
|
|
DIM b AS INTEGER
|
|
a = 10
|
|
b = 20
|
|
PRINT "Before: a="; a; " b="; b
|
|
SWAP a, b
|
|
PRINT "After: a="; a; " b="; b
|
|
|
|
DIM s1 AS STRING
|
|
DIM s2 AS STRING
|
|
s1 = "first"
|
|
s2 = "second"
|
|
PRINT "Before: s1="; s1; " s2="; s2
|
|
SWAP s1, s2
|
|
PRINT "After: s1="; s1; " s2="; s2
|
|
|
|
' === LBOUND / UBOUND ===
|
|
PRINT ""
|
|
PRINT "==== LBOUND / UBOUND ===="
|
|
DIM arr(10) AS INTEGER
|
|
PRINT "LBOUND(arr) = "; LBOUND(arr)
|
|
PRINT "UBOUND(arr) = "; UBOUND(arr)
|
|
|
|
' === Bitwise Operators ===
|
|
PRINT ""
|
|
PRINT "==== Bitwise Operators ===="
|
|
DIM x AS INTEGER
|
|
DIM y AS INTEGER
|
|
x = 15
|
|
y = 9
|
|
PRINT "15 AND 9 = "; x AND y
|
|
PRINT "15 OR 9 = "; x OR y
|
|
PRINT "15 XOR 9 = "; x XOR y
|
|
PRINT "NOT 0 = "; NOT 0
|
|
PRINT "NOT -1 = "; NOT -1
|
|
|
|
' Logical-style usage (with comparisons)
|
|
DIM c AS INTEGER
|
|
c = 5
|
|
IF c > 3 AND c < 10 THEN
|
|
PRINT "5 is between 3 and 10"
|
|
END IF
|
|
IF c > 10 OR c < 6 THEN
|
|
PRINT "5 > 10 OR 5 < 6 is TRUE"
|
|
END IF
|
|
IF NOT (c = 10) THEN
|
|
PRINT "NOT (5 = 10) is TRUE"
|
|
END IF
|
|
|
|
' === SELECT CASE ===
|
|
PRINT ""
|
|
PRINT "==== SELECT CASE ===="
|
|
|
|
DIM grade AS INTEGER
|
|
grade = 85
|
|
SELECT CASE grade
|
|
CASE 90 TO 100
|
|
PRINT "Grade A"
|
|
CASE 80 TO 89
|
|
PRINT "Grade B"
|
|
CASE 70 TO 79
|
|
PRINT "Grade C"
|
|
CASE ELSE
|
|
PRINT "Grade F"
|
|
END SELECT
|
|
|
|
DIM val AS INTEGER
|
|
val = 3
|
|
SELECT CASE val
|
|
CASE 1
|
|
PRINT "One"
|
|
CASE 2, 3
|
|
PRINT "Two or Three"
|
|
CASE IS > 5
|
|
PRINT "Greater than 5"
|
|
CASE ELSE
|
|
PRINT "Something else"
|
|
END SELECT
|
|
|
|
' String SELECT CASE
|
|
DIM color AS STRING
|
|
color = "red"
|
|
SELECT CASE color
|
|
CASE "red"
|
|
PRINT "Color is RED"
|
|
CASE "blue"
|
|
PRINT "Color is BLUE"
|
|
CASE ELSE
|
|
PRINT "Unknown color"
|
|
END SELECT
|
|
|
|
' === ON GOTO ===
|
|
PRINT ""
|
|
PRINT "==== ON GOTO ===="
|
|
DIM choice AS INTEGER
|
|
choice = 2
|
|
ON choice GOTO opt1, opt2, opt3
|
|
GOTO skipOpts
|
|
opt1:
|
|
PRINT "Option 1"
|
|
GOTO skipOpts
|
|
opt2:
|
|
PRINT "Option 2"
|
|
GOTO skipOpts
|
|
opt3:
|
|
PRINT "Option 3"
|
|
skipOpts:
|
|
|
|
' === ON GOSUB ===
|
|
PRINT ""
|
|
PRINT "==== ON GOSUB ===="
|
|
choice = 1
|
|
ON choice GOSUB sub1, sub2, sub3
|
|
choice = 3
|
|
ON choice GOSUB sub1, sub2, sub3
|
|
GOTO skipSubs
|
|
sub1:
|
|
PRINT "Subroutine 1"
|
|
RETURN
|
|
sub2:
|
|
PRINT "Subroutine 2"
|
|
RETURN
|
|
sub3:
|
|
PRINT "Subroutine 3"
|
|
RETURN
|
|
skipSubs:
|
|
|
|
' === MID$ Assignment ===
|
|
PRINT ""
|
|
PRINT "==== MID$ Assignment ===="
|
|
DIM msg AS STRING
|
|
msg = "Hello World"
|
|
PRINT "Before: "; msg
|
|
MID$(msg, 7, 5) = "BASIC"
|
|
PRINT "After: "; msg
|
|
MID$(msg, 1, 5) = "Howdy"
|
|
PRINT "After2: "; msg
|
|
|
|
PRINT ""
|
|
PRINT "All new feature tests complete!"
|