Basic Basic - chapter III by David Zohrob (mallard@qbasic.com) http://qbasic.com -------------------------------------------------------------------------------- author's note Sorry it's been so long since I wrote an installment in my book, but I've had so much going on in the past six months! However, I finally sat down and wrote a rather long chapter that explains a LOT of stuff that's really useful. If you need help with specific commands, be sure to write me! David Zohrob mallard@qbasic.com 1/11/1996 -------------------------------------------------------------------------------- Welcome! In this chapter, we will cover the following commands: - DIM - FOR...NEXT - STEP - GOTO - IF...THEN - COLOR As of right now, you know about variable types, PRINT, INPUT, and LET. These are the most basic parts of the BASIC environment. We now have to move into a more complex area. Numbers are used in every application, no matter what kind of program it is. That's why variables are so important in BASIC. However, when dealing with large amounts of numbers and strings, hundreds of variable names would get too complex and unreadable. This is where ARRAYS come in. Think of an array as a big box in the computer's memory seperated by dividers into smaller boxes. You can put different things in the small boxes, but organize them into one big box. This is exactly what an array does. An array is an area in the computer's memory seperated into smaller parts for different variables. To create an array, you use the DIM command: DIM ArrayName$ (number) ArrayName is the name of the array, followed by a variable type ($, !, etc.) The number in parentheses is the amount of smaller "boxes" in the array. To use an array, you assign values to the array using the LET command just as you would a regular variable. However, this time you have to spec- ify which part of the array you are assigning the value to. For example, DIM Day$(7) LET Day$(1) = "Sunday" LET Day$(2) = "Monday" and so on. To PRINT one of these variables in the array, you would do so just like a regular variable: PRINT "Today is "; Day$(1); "." And, accordingly, to get a value from the keyboard into the array, you use the INPUT command: INPUT "What is Player 1's name"; players$(1) INPUT "What is Player 2's name"; players$(2) You can use an array element just as you would use a variable in any statement. Using arrays, you can manage hundreds of names, values, strings, dollar amounts, and much more. So now you can use arrays. But wouldn't it be tedious, say, if you wanted to print the 100 different values of an array named players$? It obviously would be wasteful to have 100 different print commands. This is where LOOPS come in. A loop is a set of instructions that are repeated either a certain number of times, until a condition is met, or infinitely. The first loop command (or set or commands, really) we will study is the FOR...NEXT loop. It repeats the commands between the FOR and NEXT commands a certain number of times. Its syntax is simple: FOR i = 1 TO 100 PRINT i NEXT i The program would print the numbers from one to a hundred. Why did we name the variable "i"? It's just a standard - one that has been in place for several decades. You can call it anything you want - "bob," "sam," "linda," or "z." You just have to adjust the code above. You can also change the lower and upper values of i - for example, FOR i = 6 TO 371 PRINT "The magic number could be:"; i NEXT i Another way to change how the FOR...NEXT loop increments is by using the STEP command. If you omit the STEP command (as in a regular FOR...NEXT loop), "i" increases by one every time the commands in the loop are comp- leted. With the use of the STEP command, you can change this to any number you desire. For example: FOR i = 100 TO 300 STEP 2 PRINT "The magic number might be:"; i NEXT i This would print all the even numbers from 100 to 300. You could also make "i" go backwards, as in this example: FOR i = 300 TO 100 STEP -2 PRINT "The nifty numeral is now:"; i NEXT i FOR...NEXT loops can be used for just about anything. In the next chapter, I will talk about two other kinds of loops that keep going until a certain condition is met. But until then, (it won't be six months this time!) fool around with this loop. The last command I'll talk about in this installment is the GOTO command. If you don't know about it, GOTO is a very simple yet extremely powerful command that lets you split up your program into smaller parts. Here's how you use it. You have to "label" lines that you want to go to using the GOTO command by assigning them numbers or names. For example: topofprogram: CLS PRINT "This is an infinite loop" GOTO topofprogram Or, this: 1 CLS PRINT "Hello world!" GOTO 1 And that's GOTO. Very simple, yet powerful. So how can it be use- ful? It's not very important to be able to just GOTO in a program without some reason to. GOTO becomes very useful when used in conjunction with the IF...THEN statement, which allows logical progression of your program based on a condition. IF...THEN does exactly what its commands say. IF this is true, THEN do this. You can use it to create some type of menu, like this: PRINT "My Menu" PRINT "Press 1 to clear the screen, or 2 to say 'Hello'!" INPUT "What do you want to do"; choice IF choice = 1 THEN GOTO clrscr IF choice = 2 THEN GOTO hello clrscr: CLS PRINT "Done." END hello: PRINT "Hello, hello, hello!" END You can change the GOTO after the THEN.. statement to any valid QBasic command, like LET, PRINT, or INPUT. Or, you can replace the "=" with any mathematical symbol (like greater than(>), less than(<), or not equal(<>)) Here's a couple of examples in one program: PRINT "Program Example #1" PRINT "Try to guess the number I am thinking of between 1 and 10." PRINT "You get 3 chances." INPUT "First chance"; number IF number = 3 THEN GOTO gotit PRINT "Sorry!" INPUT "Second chance"; number IF number = 3 THEN GOTO gotit PRINT "Ooh!" INPUT "Last chance"; number IF number = 3 THEN GOTO gotit PRINT "Sorry! The number was 3!" END gotit: PRINT "You win! Good job!" And that's your basic IF...THEN statement. The last thing we'll deal with in this chapter is a cosmetic command that will let you change the color of the text on the screen. It is the COLOR command, and lets you change the color of the text to one of 16 colors (including black, the background color). You use it in this form: COLOR 13 PRINT "Magenta!" COLOR 7 PRINT "Grey!" The number after the COLOR statement is one of these color codes: 00 - black 08 - dark grey 01 - dark blue 09 - light blue 02 - dark green 10 - light green 03 - dark cyan 11 - light cyan 04 - dark red 12 - light red 05 - dark purple 13 - magenta 06 - orange brown 14 - yellow 07 - grey 15 - bright white That ends our discussion of the COLOR statement and our chapter. This chapter introduced a lot of new material that will allow you to accomplish a lot more in your QBasic programs. Good luck, and keep bugging Mallard to write a fourth installment in this series! Exercises: 1. Write a guessing-game program that gives you three chances to guess a pre-determined number between 1 and 10. After each guess, if the guess is incorrect, have the program tell the user whether (s)he is too high or too low. If the user guesses correctly, give them a colorful "winner" message. 2. Create an array that stores all the months of the year, then create an array with all the days of the year. Write a program that displays all the months and days in a colorful form using a FOR...NEXT loop. 3. Fool around with all the commands in this chapter. 4. Have fun with programming and keep checking The QBasic Page for programs, tutorials, and QBasic fun! -------------------------------------------------------------------------------- Have a wonderful day. Peace! -David Zohrob