1. Trang chủ
  2. » Công Nghệ Thông Tin

a beginner''s guide to computer programming

352 247 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 352
Dung lượng 3,43 MB

Nội dung

Pu rebasi c A Beginner’s Guide To Computer Programming Updated for Purebasic v4 Gary Willoughby Pu rebasic Gary Willoughby A Beginners Guide To Computer Programming PureBasic - A Beginner’s Guide To Computer Programming by Gary Willoughby Copyright © 2006 Gary Willoughby This book and all included source materials such as diagrams, photos and PureBasic source code is distributed under the Creative Commons Attribution Non-Commercial Share Alike License. More details can be found here: http://creativecommons.org/about/licenses/ PureBasic is a registered trademark of Fantaisie Software. PureBasic and all provided tools and components contained within the PureBasic package are Copyright © 2006 Fantaisie Software. Fantaisie Software 10, rue de Lausanne 67640 Fegersheim France www.purebasic.com Published 2006, by Aardvark Global Publishing. Editor Gary Willoughby Print History July 2006 - First Edition Disclaimer While every precaution has been taken in the preparation of this book and the programs contained within it, the author and publisher assumes no responsibility whatsoever for errors, omissions, or for damages resulting from the use of the information or programs contained herein. The author or publisher shall not be liable if incidental or consequential damages occur in connection with, or arising from, the furnishings, performance, or use of the programs, associated instructions, and/or claims of productivity gains. All information contained herein is considered accurate at time of publication but because PureBasic is a language in a constant state of refinement and development, some information over time may be rendered out-of-date. For up to date news and information regarding PureBasic please refer to www.purebasic.com. Trademarks Trademarked names appear throughout this book. Rather than list the names and entities that own the trademarks or insert a trademark symbol with each mention of the trademarked name, the publisher states that it is using the names for editorial purposes only and to the benefit of the trademark owner, with no intention of infringing on that trademark. Dedication Dedicated to my girlfriend, Sara Jane Gostick and her dog ‘Stella’ for putting up with many lonely nights while I wrote this book and for the encouragement (and chicken dinners) she always gives me. Acknowledgments Thanks to Fred and the Purebasic team for the Purebasic language, keep up the good work, it rocks! Thanks to Paul Dixon for clarifying some of the details regarding binary encoding of floating point numbers. Thanks to Timo Harter for helping to choose what Purebasic data types would best substitute the Win32 API types, and for demonstrating how to retrieve different strings from memory via the different Win32 API String pointer types. “With great power there must also come great responsibility!” Ben Parker (Spiderman’s Uncle) Code examples contained in this book can be downloaded freely from www.pb-beginners.co.uk ISBN 1-4276-0428-2 19/7/2006 v 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 Table of Contentsvi 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 Table of Contents vii 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 [...]... name of a variable is bound to a particular area and amount of RAM (defined by its data type), and any operations on a variable will manipulate that associated area of memory Variable names can be named anything you want, but many people like to keep them as descriptive as possible to convey what the actual value is that the variable holds Variables are the building blocks of any computer program as... example, the equals operator (=) can be used to assign a value to a variable as well as being used as an equality operator to test that two variables or values are equal = (Equals) This is probably the easiest operator to explain even though it can be used in two ways First, it can be used to assign a value to a variable like this: LongVariable.l = 1 Secondly, it can be used to make an equality comparison... data type for storage but you also need a way to easily find that data in memory Variables and Constants provide a simple answer for this problem by assigning a clear descriptive name to a particular piece of data so it can be easily accessed later Put simply, variables refer to data that can change its value, while constants refer to data that will never ever change Data Types 13 Variables Typically,... usage and where applicable, numerical limits Chapter 3, Operators Here I explain the basic means to actually assign values to variables and explain what operators are needed for calculating data A full explanation is given for all operators along with diagrams and examples The ‘Debug’ command is also introduced here as it is one of the most useful commands in the PureBasic language and its importance... 16 Data Types Constants Constants are similar to variables in that they provide an easy way to reference data and can be called whatever you want, but that’s where the similarity ends Constants are used when you want to give a particular piece of data a name while knowing that value will never change Look at this example: #DAYS_IN_THE_YEAR = "365" We know that the number of days in a standard year will... hold data that can be manipulated, referred to and ultimately displayed Variables are essential for the organization and storage of your data Okay, let’s get playing with PureBasic Open the PureBasic IDE and let’s create a variable of our own When you want to create a variable the syntax is very simple You enter a variable name followed by a type suffix to define what type of variable it is to be,... is a second pair of eyes on your code to highlight errors and to avoid potential program crashes such as zero division, illegal array offset access and data overflow errors It can also be used as a brake to halt the program at any given time to see what actual variable values are The program execution can be stopped and forwarded step by step to locate any faults or strange behavior This can be very... enumerated from ‘100’ Enumerated constants are used mostly in graphical user interface programing (See Chapter 9) where each window or gadget needs its own ID, enumerated constants are a great way to provide these IDs and enumerated blocks take all the hassle out of assigning incremented values to a lot of constants 3 18 Operators Operators are used to assign values to variables and to manipulate the data... variable name As you can see, letter case means nothing to a variable as this example outputs the text ‘Test String Three’ This example also demonstrates another feature of PureBasic’s variables, in that once a variable has been declared using a given data type, that data type remains assigned to that variable throughout the programs life For example, once a variable has been declared as a String then from... ever has spaces! If you need to separate the words in a variable to make it more easy to read you can use underscores like this: Number_Of_Lines_Of_Code.b = 1 You can use any name you want for a variable but there are few rules Variable names must not start with a number and must not contain any operators (see Fig.15 for a complete list of operators) Also no special characters are allowed such as accented . data types as well as information on memory usage and where applicable, numerical limits. Chapter 3, Operators Here I explain the basic means to actually assign values to variables and explain. don’t expect too many fancy examples as I’ve only given an overview to such advanced topics. PureBasic raises the bar to not only what a Basic language should be but also what all languages should be Fantaisie Software, a new website was A Brief Overview of The Assembly Language Assembly language or simply Assembly, is a human-readable notation for the machine language that a specific computer

Ngày đăng: 17/10/2014, 14:08

TỪ KHÓA LIÊN QUAN