Muutke küpsiste eelistusi

E-raamat: Anyone Can Code: The Art and Science of Logical Creativity [Taylor & Francis e-raamat]

(Carleton University, Canada)
  • Formaat: 566 pages, 1 Tables, black and white; 80 Illustrations, black and white
  • Ilmumisaeg: 24-Nov-2020
  • Kirjastus: Chapman & Hall/CRC
  • ISBN-13: 9780429244421
  • Taylor & Francis e-raamat
  • Hind: 230,81 €*
  • * hind, mis tagab piiramatu üheaegsete kasutajate arvuga ligipääsu piiramatuks ajaks
  • Tavahind: 329,73 €
  • Säästad 30%
  • Formaat: 566 pages, 1 Tables, black and white; 80 Illustrations, black and white
  • Ilmumisaeg: 24-Nov-2020
  • Kirjastus: Chapman & Hall/CRC
  • ISBN-13: 9780429244421
Anyone Can Code: The Art and Science of Logical Creativity introduces computer programming as a way of problem-solving through logical thinking. It uses the notion of modularization as a central lens through which we can make sense of many software concepts. This book takes the reader through fundamental concepts in programming by illustrating them in three different and distinct languages: C/C++, Python, and Javascript. Key features: Focuses on problem-solving and algorithmic thinking instead of programming functions, syntax, and libraries; Includes engaging examples, including video games and visual effects; Provides exercises and reflective questions. This book gives beginner and intermediate learners a strong understanding of what they are doing so that they can do it better and with any other tool or language that they may end up using later.
List of Sidebars
xv
List of Tables
xvii
List of Exhibits
xix
Preface xxiii
Acknowledgments xxvii
Definition of Key Terms xxix
Abbreviation xxxi
Companion Website xxxiii
PART 1 Getting Started
Introduction 3(21)
Hello, World!
3(8)
1.1 SOFTWARE DEVELOPMENT
11(13)
1.1.1 Design and Implementation
14(2)
1.1.2 Modularization
16(2)
Highlights
18(1)
End-Of-Chapter Notes
18(6)
Chapter 1 Computers, Programs, and Games
24(19)
Overview
21(1)
1.1 BRIEF HISTORY OF COMPUTING
22(4)
1.1.1 Properties of Digital Media
25(1)
1.2 CIRCUITS AND NUMBERS, BITS, AND BYTES
26(4)
1.2.1 Decimal vs. Binary
27(1)
1.2.2 Bits and Bytes
28(2)
1.3 WHAT IS A PROGRAM, ANYWAY?
30(3)
1.3.1 Visual Programming
31(2)
1.4 GAMES AS PROGRAMS: DATA VS. CODE
33(10)
Highlights
39(1)
End-Of-Chapter Notes
40(3)
Chapter 2 Logical Creativity
43(38)
Overview
43(1)
2.1 PROBLEM-SOLVING AND CREATIVITY
44(4)
2.2 VISUAL DESIGN AND VISUAL THINKING
48(3)
2.3 ALGORITHMS AND ALGORITHMIC THINKING
51(15)
2.3.1 What Is an Algorithm?
51(5)
2.3.2 Program Flow
56(1)
2.3.3 Selection
57(1)
2.3.3.1 Detecting Odd and Even Numbers
58(1)
2.3.4 Iteration
59(5)
2.3.5 Variables and the First Golden Rule of Programming
64(1)
2.3.6 Loop Counter as a Variable
65(1)
2.4 DATA-CENTERED APPROACH TO PROBLEM-SOLVING AND ALGORITHM DESIGN
66(4)
2.4.1 Finding Min and Max
68(2)
2.5 STEPWISE REFINEMENT FOR ALGORITHMS
70(11)
2.5.1 Restaurant Bill Calculation
72(3)
Highlights
75(1)
End-Of-Chapter Notes
76(5)
PART 2 Understanding Programs
Chapter 3 Data: Program's Information
81(36)
Overview
81(1)
3.1 HIGH-LEVEL PROGRAMMING LANGUAGES
82(6)
3.1.1 High Level vs. Low Level
83(1)
3.1.2 Declarative vs. Imperative
83(1)
3.1.3 Compiled vs. Interpreted
84(1)
3.1.4 Virtual Machines
84(2)
3.1.5 Development Environments and Tools
86(2)
3.2 DATA AND VARIABLES
88(6)
3.3 PROGRAMMING IN PYTHON
94(5)
3.4 PROGRAMMING IN C AND C++
99(8)
3.4.1 Compiling and Running C/C++ Programs
102(1)
3.4.2 Comments
103(4)
3.5 DATATYPES
107(10)
3.5.1 Type Casting
111(1)
3.5.2 Integer and Float Operations
112(2)
Highlights
114(1)
End-Of-Chapter Notes
115(2)
Chapter 4 Code: Program's Operation
117(30)
Overview
117(1)
4.1 SEQUENTIAL EXECUTION AND PROGRAM CONTROL
118(4)
4.1.1 GoTo Statement
118(1)
4.1.2 Structured Programming and Control Flow
119(1)
4.1.2.1 Function
119(1)
4.1.2.2 Selection
120(1)
4.1.2.3 Iteration
120(1)
4.1.2.4 Blocks of Code and the Lexical Scope
121(1)
4.2 SELECTION
122(7)
4.2.1 If/Else
122(3)
4.2.2 Switch/Case
125(4)
4.3 ITERATION
129(7)
4.3.1 While Loops
129(4)
4.3.1.1 Forever Loops
133(1)
4.3.2 For Loops
134(2)
4.4 COMBINING SELECTION AND ITERATION
136(5)
4.4.1 Guessing Game
136(3)
4.4.2 Simple Calculator
139(2)
4.5 NAMING CONVENTIONS
141(6)
4.5.1 #define in C/C++
142(2)
Highlights
144(1)
End-Of-Chapter Notes
145(2)
Chapter 5 Functions
147(34)
Overview
147(1)
5.1 DEFINING AND USING FUNCTIONS
148(6)
5.1.1 Returning from a Function
152(2)
5.2 FUNCTIONS IN C/C++
154(3)
5.2.1 void main()
155(1)
5.2.2 void Hello()
156(1)
5.2.3 int GetData()
156(1)
5.3 LOCAL AND GLOBAL VARIABLES
157(6)
5.4 FUNCTION PARAMETERS
163(18)
5.4.1 Simple Board Game Simulator
167(4)
5.4.2 BMI Calculator
171(2)
5.4.3 Prime Number Listing
173(3)
Highlights
176(1)
End-Of-Chapter Notes
176(5)
PART 3 Structured Programming
Chapter 6 Types, Files, and Libraries
181(56)
Overview
181(1)
6.1 DATA TYPES REVISITED
182(18)
6.1.1 Predefined and User-Defined Types
182(1)
6.1.1.1 Enumeration
183(3)
6.1.1.2 Structure
186(5)
6.1.2 Memory Address and Pointer Type
191(6)
6.1.3 Passing Parameters to Functions
197(3)
6.2 OUTSIDE THE FILE
200(8)
6.2.1 Multiple Source Files
200(6)
6.2.2 Libraries
206(2)
6.3 GRAPHICS PROGRAMMING
208(29)
6.3.1 Computer Graphics
208(5)
6.3.2 Graphics in Javascript
213(4)
6.3.3 Graphics in Python
217(2)
6.3.4 Graphics in C/C++
219(4)
6.3.5 Command-Line Parameters
223(1)
6.3.6 Rendering
224(1)
6.3.7 Simple 2D Game
224(1)
6.3.7.1 Game Objects
225(1)
6.3.7.2 Game Code Structure
225(3)
6.3.7.3 Example
228(5)
Highlights
233(1)
End-Of-Chapter Notes
234(3)
Chapter 7 Modularization of Data
237(68)
Overview
237(1)
7.1 USER-DEFINED TYPES AS MODULES OF DATA
238(23)
7.1.1 Collision Detection
244(2)
7.1.2 Vanishing Prize: How to Make Objects Disappear
246(1)
7.1.3 Simple Game in Javascript
247(5)
7.1.4 Events Revisited
252(2)
7.1.5 Distance and Collision
254(1)
7.1.6 Lives and Scores in Python
254(6)
7.1.7 Movements and Collision
260(1)
7.1.8 Life and Score
261(1)
7.2 ARRAYS AS MODULES OF DATA
261(7)
7.2.1 Arrays
261(6)
7.2.2 Arrays in Javascript and Python
267(1)
7.3 EXAMPLES OF USING ARRAYS
268(17)
7.3.1 Linear Search
268(5)
7.3.2 Ground Levels in Games
273(2)
7.3.3 Plotting Data
275(2)
7.3.4 Scaling and Translation
277(6)
7.3.5 Text Processing
283(2)
7.4 COMBINED DATA MODULES
285(20)
7.4.1 Simple Database
285(6)
7.4.2 2D Game with Arrays
291(7)
7.4.3 Animated Objects
298(3)
7.4.4 Transparent Pixels and Background Image
301(1)
Highlights
302(1)
End-Of-Chapter Notes
303(2)
Chapter 8 Modularization of Code
305(64)
Overview
305(1)
8.1 FUNCTIONS REVISITED
306(10)
8.1.1 Using Functions to Build Modular Programs
307(4)
8.1.2 A Modular Command Processor
311(2)
8.1.3 What Is a Good Function?
313(3)
8.2 INFORMATION HIDING AND ABSTRACTION
316(4)
8.3 MODULAR DESIGN
320(20)
8.3.1 School Database
320(11)
8.3.2 Library Database
331(9)
8.4 A MODULAR GAME PROGRAM
340(29)
8.4.1 2D Side-Scroller Game
341(1)
8.4.2 Scrolling
342(1)
8.4.3 Defense Mode
343(6)
8.4.4 Physics: Platforms, Jumping, and Falling
349(1)
8.4.5 Data Types
350(1)
8.4.6 Game Functions
350(1)
8.4.7 Movement
351(11)
8.4.8 Timers and Callback Functions
362(2)
Highlights
364(1)
End-Of-Chapter Notes
364(5)
PART 4 Object-Oriented Programming
Chapter 9 Modularization of Data and Code
369(164)
Overview
369(1)
9.1 OBJECTS AND CLASSES
370(19)
9.1.1 Abstract Data Types
370(3)
9.1.2 Encapsulation
373(3)
9.1.3 C-H- and Classes
376(6)
9.1.4 Constructor
382(3)
9.1.5 Python and Javascript Classes
385(4)
9.2 OBJECT-ORIENTED PROGRAMMING
389(131)
9.2.1 Identifying Classes and Objects
391(2)
9.2.2 Class Development
393(117)
12.2.3 Sample Image Effects
510(3)
12.2.4 Effect Classes
513(4)
12.2.5 Rendering with Effects
517(1)
12.2.6 Using Dynamic Polymorphism in Render Class
518(1)
12.2.7 Polymorphism in Python and Javascript
519(1)
12.3 PHYSICS CLASS REVISITED
520(13)
12.3.1 Heightmaps
522(4)
12.3.2 Static Members
526(1)
Highlights
527(1)
End-Of-Chapter Notes
528(5)
PART 6 Moving Forward
Chapter 13 Software Design
533(10)
Overview
533(1)
13.1 DESIGN PATTERNS
534(2)
13.2 DATA STRUCTURES
536(2)
13.3 SOFTWARE ARCHITECTURE
538(2)
13.4 SUGGESTED PROJECTS
540(3)
13.4.1 Image Editor
540(1)
13.4.2 Game AI
541(2)
Chapter 14 Software Projects
543(4)
Overview
543(1)
14.1 PROJECT MANAGEMENT
544(1)
14.2 VERSION CONTROL
545(2)
Chapter 15 Concluding Notes
547(4)
Overview
547(1)
15.1 SUMMARY OF KEY POINTS
547(1)
15.2 SOME PRACTICAL ADVICE
548(3)
Bibliography 551(2)
Index 553
Ali Arya is an Associate Professor of Information Technology at Carleton University, Ottawa, Canada. He received his Ph.D. in Computer Engineering from the University of British Columbia in 2003. Ali has over 25 years of experience in professional and academic positions related to software development and information technology. He is passionate about computer programming that brings together logical and creative abilities. His work has always involved hands-on programming combined with teaching and research on various related technologies. He has developed and taught graduate and undergraduate courses on computer programming, software design, and project management. His current research focuses on the use of computer games and virtual reality in education. Before his academic career, Ali worked as software engineer, lead designer, and project manager. Ali lives in Ottawa, Canada, with his wife, son, and two cats. Despite his teaching, research, and administrative duties, he still enjoys spending hours writing code and learning new programming trends and tricks.