----- REM Statement All right! You have successfully completed three lessons in BASIC. By now you should be fairly confident with the language. The |REM~ statement allows you to insert explanatory |rem~arks into the program. These remarks are |ignored~ by the computer when it executes the program, but provide the programmer with information about the program. They appear only when you LIST the program. The REM statement can begin with either the letters |REM~ or an apostrophe (|'~) followed by the remark itself. Here is an example of REM statements in a program. 10 DATA 45,24,97,65,47,15,80,38,77,999 20 READ X:IF X=999 THEN 60 |'If end of data goto line 60.~ 30 IF X>=50 THEN LET G=G+1 |'Count numbers G.T.E. to 50.~ 40 IF X<50 THEN LET L=L+1 |'Count number L.T. 50.~ 50 GOTO 20 |'Get the next number.~ 60 PRINT "Of the numbers,";L;"were less than 50 and"; 70 PRINT G;"were greater than or equal to 50." Try typing in and |RUN~ning this program. ----- STOP and END Statements There are four ways to stop the execution of a program in BASIC. 1. The program automatically stops when it runs out of lines to execute. 2. |STOP~ Statement. When the computer comes to a STOP statement, it prints |Break in N~ (where |N~ is the |line number~ of the STOP statement) and stops. 3. |END~ Statement. This is similar to the STOP statement except that the computer does not print the Break message. 4. Pressing the |Shft~ key and the |Break~ key together stops the program during execution and prints a |Break in N~ message. If you want to continue with the program, simply type |CONT~ (short for |cont~inue) and press the return key. If you haven't edited the program, the computer will continue with the program right where it was interrupted (this works if you used a STOP statement as well, but not if you used an END statement). ----- STOP and END Statements (continued) Try out these statements and commands by typing in and |RUN~ning the following program. |10 PRINT "Type CONT and press return."~ |20 STOP~ |30 PRINT "GOOD! You continued the program."~ |40 PRINT "Use the Shft and Break keys any time now!":GOTO 40~ ----- EDIT Command When you make (or discover) a mistake in a program line, you can correct it by simply typing the line over. However, it is much faster to use the BASIC Program Editor. To do this, simply type |EDIT N~ (where |N~ is the line number to edit) and then move to the mistake using the cursor control keys, and correct it by typing over, inserting or deleting. If you want to completely erase that line of the program, you can do so by typing the line number itself and pressing return. If there are several lines you want to delete, type |DELETE N1-N2~ (where |N1~ is the first line and |N2~ is the last line to delete) and press return. This will delete all lines between and including |N1~ and |N2~. ----- AUTO Command When you are first writing a program, you spend a good deal of time just typing in the line numbers. The |AUTO~ command will take care of that for you. Type the word AUTO and the computer will put the line numbers in automatically. Here is the correct form, or syntax, for the AUTO command. AUTO [|B~[,|I~]] |B~ is the line number at which the AUTO command will begin. If you do not give a value for |B~ the computer will |default~ to (automatically start at) line number 10. |I~ is the increment value. It is the value that will be added to each line number to get the next line number. If you do not enter a number for |I~, it will default to 10. ----- AUTO Command (continued) If you want to start at some line number other than 10, say 200, type AUTO 200 and your line numbers will begin at 200 and increase in increments of 10. If you want to start at 100 and increase by 5's then type AUTO 100,5. When you finish typing in your program, shut off the AUTO command by pressing the |Shft~ key and the |Break~ key together. Try typing in the following program using the AUTO command. |100 INPUT "What is the first number";A~ |105 INPUT "What is the second number";B~ |110 PRINT A;"+";"B";"=";A+B~ |115 PRINT A;"-";"B";"=";A-B~ |120 PRINT A;"*";"B";"=";A*B~ ----- TRON and TROFF Commands If a program doesn't work properly when you try running it, it is said to have a |bug~ in it. Much of a programmer's time is spent |de-bugging~ his or her programs. A feature that sometimes makes this easier is the |TRON~ command. TRON is short for program |TR~acer |ON~. When you type TRON and then RUN your program, the computer will print each line number, in brackets (|[]~) as it is executed. Other program output will also be printed, but only the executed line numbers will be printed in brackets. For this program: |10 DATA 17,23,99~ |20 READ NUM~ |30 IF NUM<>99 THEN PRINT NUM:GOTO 20~ |40 PRINT "The END."~ The output using TRON would look like this: |[10][20][30] 17~ |[20][30] 23~ |[20][30][40]The END.~ When you have found your bug and want to run your program without the line numbers being displayed, type |TROFF~ which is short for program |TR~acer |OFF~. This returns the computer to normal program execution. ----- TRON and TROFF Commands (continued) The following program is supposed to count and print the values in a DATA statement, but for some reason it gets stuck on the first value and goes crazy. By using the TRON and TROFF commands, try and find the bug in this program. |10 DATA 34,67,12,9,65,38,84,999~ |20 READ NUM:IF NUM=999 THEN GOTO 60~ |30 COUNT=COUNT+1~ |40 PRINT "Value number";COUNT;"is";NUM~ |50 GOTO 30~ |60 PRINT "There are";COUNT;"numbers in the data statement."~ First, type in the program and try to |RUN~ it. After a few seconds press the |Shft~ and |Break~ keys to stop the program. Then type |TRON~ to turn the tracer on. Again |RUN~ the program and when you have identified the problem, stop the program and fix the bug. Now turn the tracer off by typing |TROFF~ and |RUN~ the program a third time. ----- TRON and TROFF Commands (continued) Here is the same program from the last page. Hopefully you found the bug in line |50~. 10 DATA 34,67,12,9,65,38,84,999 20 READ NUM:IF NUM=999 THEN GOTO 60 30 COUNT=COUNT+1 40 PRINT "Value number";COUNT;"is";NUM |50 GOTO 30~ 60 PRINT "There are";COUNT;"numbers in the data statement." The line should have read |50 GOTO 20~. As it was, the program never read a new value for the variable |NUM~, so it never got to |999~ to signal the |end of DATA~. If you found the bug, congratulations! If not make sure you understand how the TRON and TROFF commands work and better luck next time. ----- RND Function The |RND~ function returns a random number between 0 and 1. If you want a random number between 0 and 1000, then just multiply by 1000. example- LET |X=RND~ [this returns |X~ such that |0~ < |X~ <| 1~] LET |Y=RND*100~ [this returns |Y~ such that |0 ~< |Y~ <| 100~] Here is a sample program that lets you input an |upper bound~ number, and the computer prints a list of random numbers between 0 and your upper bound. You will have to use the |Shft~ and |Break~ keys to stop this program. |10 INPUT "Enter a number to be the upper bound.",MAX~ |20 PRINT RND*MAX~ |30 GOTO 20~ ----- INT Function The |INT~ function returns the largest integer less than or equal to the number in parentheses. example- |LET A=INT(9.2)~ [in this statement, |A~ will equal |9~] |LET K=INT(-7.6)~ [in this statement, |K~ will equal |-8~] Here is a program that uses the RND and INT functions to quiz you on the INT function. Once again, press the |Shft~ and |Break~ keys when you have had enough. |10 NUMBER=RND*200-100~ 'pick a random number between -100 and 100 |20 PRINT "What is the INT of";NUMBER;:INPUT ANSWER~ |30 IF ANSWER<>INT(NUMBER) THEN PRINT "The answer is";INT(NUMBER)~ |40 GOTO 10~ ----- ABS Function The |ABS~ function returns the |absolute value~ of an expression. The absolute value is just the positive value of a number. example- |LET X=ABS(-5)~ [in this statement, |X~ will equal |5~] |LET C=ABS(12*4)~ [in this statement, |C~ will equal |48~] Here is a program that uses the RND, INT and ABS functions to quiz you on the ABS function. Once again, press the |Shft~ and |Break~ keys when you have had enough. |10 NUMBER=INT(RND*200-100)~ 'pick integer between -100 and 100 |20 PRINT "What is the ABS of";NUMBER;:INPUT ANSWER~ |30 IF ANSWER<>ABS(NUMBER) THEN PRINT "The answer is";ABS(NUMBER)~ |40 GOTO 10~ ----- ABS and INT functions (continued) Here is another short program that you can try out. It uses the ABS and INT functions to find the |G~reatest |C~ommon |D~enominator of two numbers. |10 INPUT "Enter the first number.",NUM1~ |20 INPUT "Enter the second number.",NUM2~ |30 NUM1=ABS(NUM1):NUM2=ABS(NUM2)~ |40 LET R=NUM1-NUM2*INT(NUM1/NUM2)~ |50 IF R=0 THEN GOTO 70~ |60 NUM1=NUM2:NUM2=R:GOTO 40~ |70 PRINT "The greatest common denominator is";NUM2~ ----- End of Lesson Four Congratulations on completing the |Beginning BASIC~ Course. Now to bring together much of what you've learned, try writing the following programs. 1. A program that will find the average and the sum of a series of numbers in a DATA statement. 2. A number guessing game program. (|Hint~: Have the computer pick a number between 1 and 1000 and then INPUT guesses as to what the number is.) If you have trouble, type |LOAD"AVERAGE"~ for the average program, |LOAD"GUESS-1"~ for one guessing game, or |LOAD"GUESS-2"~ for a different version of the game. and then |LIST~ to give a listing of the sample program. Type |NEW~ to erase the sample program and start one of your own. If you would like information on how to obtain a |The PC-Prof.~ copy of "Intermediate BASIC", volume two of the BASIC Prof. |P.O. Box 26~ series, send your name and address to: |Salina, Ks.~ |67402-0026~ -----