FANDOM


A beginner's Guide To Computer Programming by Gary Willoughby

Files:FrontCover.JPG


Synopsis

An essential guide for newcomers to Purebasic or computer programming in general. If you are an experienced programmer looking for a quick reference on Purebasic or somebody wishing to learn how to program computers from scratch, this book is for you. Purebasic makes a great first language for anyone wishing to learn to program computers and this book is designed to guide them through their first steps. Written in a no-nonsense style, this book aims to simplify complicated topics making sure that everything is explained fully in a straightforward and helpful way.


Book highlights include:

  • 300+ pages
  • Easy to read and follow layout
  • Many diagrams included to explain topics in more detail
  • A history of the Purebasic programming language
  • A complete reference for all core language features
  • Help on how to use the native Helpfile, IDE and Visual Designer
  • Guidelines on writing good code
  • Tutorials on creating graphical user interfaces
  • Examples and explanations of 2D & 3D graphics and animation
  • A whole section devoted to simplifying advanced topics
  • Large Appendices containing Internet Links and helpful charts
  • A full computer science glossary to educate new programmers
  • All programming code examples can be downloaded here


Book lowlights include:

  • Book fails to show the computer output of any of the example/samples. Limits usefulness of book.
  • Website consists of single page only. Author appears to have abandoned customers.

Complete Table of Contents

Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .ix
I. The Core Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1

1. Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
The History Of Purebasic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
The Development Philosophy Of Purebasic. . . . . . . . . . . . . . . . . . . . . . . . .5
A First Look At The IDE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
How To Run Purebasic Programs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7
The Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8
A Note On Program Structure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8
Introducing The Purebasic Help File. . . . . . . . . . . . . . . . . . . . . . . . . . .9

2. Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
Built-In Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
Strings. . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
Variables And Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12

3. Operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18
An Introduction To Operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18
Operator Precedence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Expression Notes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34

4. Conditional Statements And Loops . . . . . . . . . . . . . . . . . . . . . . . . . .37
Boolean Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37
The ‘If’ Statement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38
The ‘Select’ Statement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41
Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43

5. Other Data Structures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49
Structures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49
Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52
Linked Lists. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62
Sorting Arrays And Linked Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . .67

6. Procedures And Subroutines . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
Why Use Procedures Or Subroutines . . . . . . . . . . . . . . . . . . . . . . . . . . .71
Subroutines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
Procedure Basics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74
Program Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76
The ‘Global’ Keyword. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78
The ‘Protected’ Keyword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79
The ‘Shared’ Keyword. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80
The ‘Static’ Keyword. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82
Passing Variables To Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . .83
Passing Arrays To Procedures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86
Passing Linked Lists To Procedures. . . . . . . . . . . . . . . . . . . . . . . . . . .88
Returning A Value From Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . .91

7. Using Built-In Commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93
Using The Purebasic Helpfile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93
PB Numbers And OS Identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95
Examples Of Common Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .98
Handling Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .104
Read The Helpfile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110

8. Good Programming Style. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111
Why Bother Formatting Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111
The Value Of Comments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112
My Coding Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113
Golden Rules For Writing Easily Readable Code. . . . . . . . . . . . . . . . . . . . .116
How To Minimize And Handle Errors. . . . . . . . . . . . . . . . . . . . . . . . . . .117
II Graphical User Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . .129

9. Creating User Interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131
Console Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131
Creating Native User Interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . .137
Understanding Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139
Adding Gadgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .140
Adding A Menu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .148
Menu Keyboard Shortcuts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .153
Including Graphics In Your Program . . . . . . . . . . . . . . . . . . . . . . . . . .156
A First Look At The New Visual Designer. . . . . . . . . . . . . . . . . . . . . . . .162
III Graphics And Sound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .165

10. 2D Graphics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167
2D Drawing Commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167
Saving Images. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .179
Introducing Screens. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181
Sprites. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .192

11. 3D Graphics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .203
An Overview Of The OGRE Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . .203
A Gentle Beginning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .206
A Simple First Person Camera . . . . . . . . . . . . . . . . . . . . . . . . . . . . .215
A Little More Advanced . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .226

12. Sound. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227
Wave Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227
Module Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .231
Mp3’s. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .233
CD Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .237

IV Advanced Topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .243

13. Beyond The Basics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .245
Compiler Directives And Functions. . . . . . . . . . . . . . . . . . . . . . . . . . .245
Advanced Compiler Options  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .252
Parsing Command Line Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . .259
A Closer Look At Numeric Data Types. . . . . . . . . . . . . . . . . . . . . . . . . .262
Pointers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .269
Threads. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .279
Dynamic Link Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .287
The Windows Application Programming Interface. . . . . . . . . . . . . . . . . . . . .293

V Appendices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .303
A. Useful Internet Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .305
B. Helpful Charts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .307
C. Glossary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .317
Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .332