- •About the Author
- •Dedication
- •Author’s Acknowledgments
- •Contents at a Glance
- •Table of Contents
- •Introduction
- •Who Should Buy This Book
- •How This Book Is Organized
- •Part I: Programming a Computer
- •Part II: Learning Programming with Liberty BASIC
- •Part III: Advanced Programming with Liberty BASIC
- •Part VI: Internet Programming
- •Part VII: The Part of Tens
- •How to Use This Book
- •Foolish assumptions
- •Icons used in this book
- •Why Learn Computer Programming?
- •How Does a Computer Program Work?
- •What Do I Need to Know to Program a Computer?
- •The joy of assembly language
- •C: The portable assembler
- •High-level programming languages
- •Database programming languages
- •Scripting programming languages
- •The program’s users
- •The target computer
- •Prototyping
- •Choosing a programming language
- •Defining how the program should work
- •The Life Cycle of a Typical Program
- •The development cycle
- •The maintenance cycle
- •The upgrade cycle
- •Writing Programs in an Editor
- •Using a Compiler or an Interpreter
- •Compilers
- •Interpreters
- •P-code: A combination compiler and interpreter
- •So what do I use?
- •Squashing Bugs with a Debugger
- •Writing a Help File
- •Creating an Installation Program
- •Why Learn Liberty BASIC?
- •Liberty BASIC is easy
- •Liberty BASIC runs on Windows
- •You can start using Liberty BASIC today
- •Installing Liberty BASIC
- •Loading Liberty BASIC
- •Your First Liberty BASIC Program
- •Running a Liberty BASIC program
- •Saving a Liberty BASIC program
- •Getting Help Using Liberty BASIC
- •Exiting Liberty BASIC
- •Getting input
- •Displaying output
- •Sending Data to the Printer
- •Storing Data in Variables
- •Creating a variable
- •Assigning a value to a variable
- •Declaring your variables
- •Using Constants
- •Commenting Your Code
- •Using variables
- •Working with precedence
- •Using parentheses
- •Manipulating Strings
- •Declaring variables as strings
- •Smashing strings together
- •Counting the length of a string
- •Playing with UPPERCASE and lowercase
- •Trimming the front and back of a string
- •Inserting spaces
- •Yanking characters out of a string
- •Looking for a string inside another string
- •Using Boolean Expressions
- •Using variables in Boolean expressions
- •Using Boolean operators
- •Exploring IF THEN Statements
- •IF THEN ELSE statements
- •Working with SELECT CASE Statements
- •Checking a range of values
- •Checking a relational operator
- •Boolean expression inside the loop
- •Looping a Fixed Number of Times
- •Counting with different numbers
- •Counting in increments
- •Anatomy of a Computer Bug
- •Syntax Errors
- •Fun with Logic Errors
- •Stepping line by line
- •Tracing through your program
- •Designing a Window
- •Creating a new window
- •Defining the size and location of a window
- •Adding color to a window
- •Putting Controls in a Window
- •Creating a command button
- •Displaying text
- •Creating a check box
- •Creating a radio button
- •Creating text boxes
- •Creating list boxes
- •Creating combo boxes
- •Creating group boxes
- •Storing Stuff in Text Files
- •Creating a new text file
- •Putting stuff in a text file
- •Adding new stuff to an existing text file
- •Retrieving data from a text file
- •Creating a new binary file
- •Saving stuff in a binary file
- •Changing stuff in a binary file
- •Retrieving stuff from a binary file
- •Creating a Graphics Control
- •Using Turtle Graphics
- •Defining line thickness
- •Defining line colors
- •Drawing Circles
- •Drawing Boxes
- •Displaying Text
- •Making Sounds
- •Making a beeping noise
- •Playing WAV files
- •Passing Data by Value or by Reference
- •Using Functions
- •Defining a function
- •Passing data to a function
- •Calling a function
- •Exiting prematurely from a function
- •Using Subroutines
- •Defining a subroutine
- •Passing data to a subroutine
- •Calling a subroutine
- •Exiting prematurely from a subroutine
- •Writing Modular Programs
- •Introducing Structured Programming
- •Sequential instructions
- •Branching instructions
- •Looping instructions
- •Putting structured programming into practice
- •The Problem with Software
- •Ways to Make Programming Easier
- •Breaking Programs into Objects
- •How to use objects
- •How to create an object
- •Creating an object
- •Starting with a Pointer
- •Defining the parts of a linked list
- •Creating a linked list
- •Managing a linked list
- •Making Data Structures with Linked Lists
- •Stacks
- •Queues
- •Trees
- •Graphs
- •Creating a Record
- •Manipulating Data in Records
- •Storing data in a record
- •Retrieving data from a record
- •Using Records with Arrays
- •Making an Array
- •Making a Multidimensional Array
- •Creating Dynamic Arrays
- •Insertion Sort
- •Bubble Sort
- •Shell Sort
- •Quicksort
- •Sorting Algorithms
- •Searching Sequentially
- •Performing a Binary Search
- •Hashing
- •Searching by using a hash function
- •Dealing with collisions
- •Picking a Searching Algorithm
- •Choosing the Right Data Structure
- •Choosing the Right Algorithm
- •Put the condition most likely to be false first
- •Put the condition most likely to be true first
- •Clean out your loops
- •Use the correct data types
- •Using a Faster Language
- •Optimizing Your Compiler
- •Programming Computer Games
- •Creating Computer Animation
- •Making (And Breaking) Encryption
- •Internet Programming
- •Fighting Computer Viruses and Worms
- •Hacking for Hire
- •Participating in an Open-Source Project
- •Niche-Market Programming
- •Teaching Others about Computers
- •Selling Your Own Software
- •Trying Commercial Compilers
- •Windows programming
- •Macintosh and Palm OS programming
- •Linux programming
- •Testing the Shareware and
- •BASIC compilers
- •C/C++ and Java compilers
- •Pascal compilers
- •Using a Proprietary Language
- •HyperCard
- •Revolution
- •PowerBuilder
- •Shopping by Mail Order
- •Getting Your Hands on Source Code
- •Joining a Local User Group
- •Frequenting Usenet Newsgroups
- •Playing Core War
- •Programming a Battling Robot
- •Toying with Lego Mindstorms
- •Index
- •End-User License Agreement
168 Part III: Advanced Programming with Liberty BASIC
NOMAINWIN
WindowHeight = 300
WindowWidth = 250
OPEN “Graphics window” FOR Graphics AS #main
PRINT #main, “HOME; DOWN; NORTH”
PRINT #main, “COLOR green”
PRINT #main, “GO 35; TURN 90; UP; GO 35; TURN 90”
PRINT #main, “COLOR pink”
PRINT #main, “DOWN; go 35”
PRINT #main, “FLUSH”
PRINT #main, “trapclose [quit]”
WAIT
[quit]
CONFIRM “Are you sure you want to quit?”; quit$ IF quit$ = “no” THEN WAIT
CLOSE #main END
Drawing Circles
Because drawing individual lines can become tiresome, you may want to tell Liberty BASIC to draw circles instead. To draw a circle, you can use the CIRCLE command as in the following example:
PRINT #Windowhandle, “CIRCLE R”
Here’s what’s happening in this example:
1.The #Windowhandle portion defines the graphics window in which the circle that turtle graphics draws appears.
2.The CIRCLE R command tells the computer to draw a circle, at the current position of the turtle (pen), with a radius that R defines, where R is a number such as 35 or 90.
If you want to draw your circle in a specific color, you can use the COLOR command prior to the CIRCLE command, as follows:
PRINT #Windowhandle, “COLOR darkpink; CIRCLE R”
Chapter 12: Drawing Pictures and Making Noise 169
You can also fill in your circle with a specific color by using the BACKCOLOR command prior to using the CIRCLEFILLED command, as follows:
PRINT #Windowhandle, “BACKCOLOR yellow; CIRCLEFILLED R”
To see how turtle graphics can create circles, try the following program, which draws two circles, as shown in Figure 12-2:
Figure 12-2:
Drawing two circles using turtle graphics.
NOMAINWIN
WindowHeight = 300
WindowWidth = 250
OPEN “Graphics window” FOR Graphics AS #main
PRINT #main, “HOME; DOWN”
PRINT #main, “COLOR red; CIRCLE 40” PRINT #main, “PLACE 45 50”
PRINT #main, “COLOR darkblue; BACKCOLOR yellow; CIRCLEFILLED 40”
PRINT #main, “FLUSH”
PRINT #main, “trapclose [quit]”
WAIT
[quit]
CONFIRM “Are you sure you want to quit?”; quit$ IF quit$ = “no” THEN WAIT
CLOSE #main END
170 Part III: Advanced Programming with Liberty BASIC
The seventh line in the preceding program uses the PLACE command, which moves the turtle (pen) position without drawing a line.
Drawing Boxes
Just as you can draw circles, Liberty BASIC also enables you to draw boxes.
To draw a box, you can use the BOX command as in the following example:
PRINT #Windowhandle, “BOX x y”
Here’s what’s happening in this example:
1.The #Windowhandle portion defines the graphics window where turtle graphics draws the box.
2.The BOX x y command tells the computer to draw a box where the current turtle (pen) position defines one corner of the box and the x and y coordinates define the location of the opposite corner.
If you want to draw your circle in a specific color, you can use the COLOR command prior to the BOX command, as follows:
PRINT #Windowhandle, “COLOR red; BOX x y”
You can also fill in your circle with a specific color by using the BACKCOLOR command prior to using the BOXFILLED command, as in the following example:
PRINT #Windowhandle, “BACKCOLOR pink; BOXFILLED x y”
To see how turtle graphics can create boxes, try the following program, which draws two boxes.
NOMAINWIN
WindowHeight = 300
WindowWidth = 250
OPEN “Graphics window” FOR Graphics AS #main
PRINT #main, “HOME; DOWN”
PRINT #main, “COLOR red; BOX 190 190” PRINT #main, “PLACE 45 50”
PRINT #main, “COLOR darkblue; BACKCOLOR pink; BOXFILLED 80 80”
Chapter 12: Drawing Pictures and Making Noise 171
PRINT #main, “FLUSH”
PRINT #main, “trapclose [quit]”
WAIT
[quit]
CONFIRM “Are you sure you want to quit?”; quit$ IF quit$ = “no” THEN WAIT
CLOSE #main END
Displaying Text
Besides drawing lines, circles, and boxes, you can also create text in a graphics window. To display text in a graphics control, you just need to move the turtle (pen) to the location where you want the text to appear and then print the text with a backslash in front, which the following program accomplishes:
NOMAINWIN
WindowHeight = 300
WindowWidth = 250
OPEN “Text graphics window” FOR Graphics AS #main
PRINT #main, “HOME”
PRINT #main, “\This is an”
PRINT #main, “\example of text”
PRINT #main, “FLUSH”
PRINT #main, “trapclose [quit]”
WAIT
[quit]
CONFIRM “Are you sure you want to quit?”; quit$ IF quit$ = “no” THEN WAIT
CLOSE #main END
The backslash character (\) displays the text and causes a new line to print, as shown in Figure 12-3. That way, you can display multiple lines of text without needing to move the turtle (pen) each time.
For variety, you can add color to your text or to the background. To change the color of your text, use the COLOR command, as follows: