| QBASIC - Statements - Program - CHAIN |
| CHAIN filespec$ |
Overfører kontrollen til det basic-program som defineres med filespec$.
Kan fx bruges til kørsel af ad-hoc-programmer, som konstrueres af
hovedprogrammet.
Her er fx et program, som kan evaluere formler indtastet af brugeren:
Hovedprogrammet: MAIN.BAS
- brugeren indtaster en formel med x som parameter - fx "3*x^2 + 4*x - 2"
- start, stop og step-værdier indtastes - fx 0, 10, 1
- så konstruerer programmet et basic-program EVAL.BAS, som kan evaluere den indtastede funktion
- med CHAIN udføres programmet
- som slutter med CHAIN tilbage til hovedprogrammet, så brugeren kan indtaste igen.
INPUT "Enter function: ", f$ IF f$ = "" THEN END INPUT "Enter range: start, end, step: ", b, e, s c$ = CHR$(34) 'anførselstegn " OPEN "eval.bas" FOR OUTPUT AS #1 PRINT #1, "b =" + STR$(b) PRINT #1, "e =" + STR$(e) PRINT #1, "s =" + STR$(s) PRINT #1, "PRINT " + c$ + "Evaluate: y = " + f$ + c$ PRINT #1, "FOR x = b TO e STEP s" PRINT #1, " PRINT " + c$ + "x =" + c$ + "; x, " + c$ + "y =" + c$ + ";" PRINT #1, " PRINT " + f$ PRINT #1, "NEXT" PRINT #1, "CHAIN " + c$ + "main.bas" + c$ CLOSE CHAIN "eval.bas" |
f$ : 3*x^2 + 4*x -2
range : 0,10,1
Følgende program konstrueres:
b = 0
e = 10
s = 1
PRINT "Evaluate: y = 3*x^2 + 4*x -2"
FOR x = b TO e STEP s
PRINT "x ="; x, "y =";
PRINT 3 * x ^ 2 + 4 * x - 2
NEXT
CHAIN "main.bas"
|
Variabler kan også overføres med COMMON, som skal angive de samme variabler i begge programmer:
COMMON b, e, s INPUT "Enter function: ", f$ IF f$ = "" THEN END INPUT "Enter range: start, end, step: ", b, e, s c$ = CHR$(34) 'anførselstegn " OPEN "eval.bas" FOR OUTPUT AS #1 PRINT #1, "COMMON b, e, s" PRINT #1, "PRINT " + c$ + "Evaluate: y = " + f$ + c$ PRINT #1, "FOR x = b TO e STEP s" PRINT #1, " PRINT " + c$ + "x =" + c$ + "; x, " + c$ + "y =" + c$ + ";" PRINT #1, " PRINT " + f$ PRINT #1, "NEXT" PRINT #1, "CHAIN " + c$ + "main.bas" + c$ CLOSE CHAIN "eval.bas" |
f$ : 3*x^2 + 4*x -2
range : 0,10,1
Følgende program konstrueres:
COMMON b, e, s
PRINT "Evaluate: y = 3*x^2 + 4*x -2"
FOR x = b TO e STEP s
PRINT "x ="; x, "y =";
PRINT 3 * x ^ 2 + 4 * x - 2
NEXT
CHAIN "main.bas"
|
Når programmerne køres, fås fx følgende udskrift:
I MAIN.BAS indtaster brugeren en funktion og en range
EVAL.BAS udskriver "Evaluate..." og resultatlisten
MAIN.BAS er klar igen: brugeren kan indtaste en funktion - eller blot <enter>, så
programmet stopper.
Enter function: 3*x^2 + 4*x -2 Enter range: start, end, step: 0,10,1 Evaluate: y = 3*x^2 + 4*x -2 x = 0 y =-2 x = 1 y = 5 x = 2 y = 18 x = 3 y = 37 x = 4 y = 62 x = 5 y = 93 x = 6 y = 130 x = 7 y = 173 x = 8 y = 222 x = 9 y = 277 x = 10 y = 338 Enter function: |