3 options
Cybernetics in C++ / Avi Bhattacharyya.
- Format:
- Book
- Author/Creator:
- Bhattacharyya, Avi, author.
- Series:
- River Publishers Series in Software Engineering
- Language:
- English
- Subjects (All):
- C++ (Computer program language).
- Cybernetics.
- Computer programming.
- Physical Description:
- 1 online resource (666 pages).
- Edition:
- 1st ed.
- Place of Publication:
- Gistrup, Denmark : River Publishers, [2018]
- Summary:
- The thorough coverage ensures you will be trained to expert level in each of Imperative, Procedural, Memory & Resource Management, Object Oriented and Generic ProgrammingCybernetics in C++ combines a theoretical overview and practical approach in one book, which should prove to be a reference for computer scientists, engineers and students.
- Contents:
- Cover
- Half Title
- Title Page
- Copyright Page
- Contents at a Glance (1)
- Contents at a Glance (2)
- Table of Contents
- Preface
- Dedication
- List of Figures
- List of Programs
- Introduction
- Part I - Imperative Programming (1)
- 1. Getting Started
- 1.1 Setting Up the Programming Environment
- 1.1.1 Software IDE
- 1.2 Hello World
- 1.3 Writing C++ Source Code
- 1.3.1 Comments
- 1.3.1.1 Style with Primitive Tools
- 1.3.2 Source Code Files
- 1.4 Subsequent Stages in Building a Program
- 1.4.1 Compilation
- 1.4.1.1 Object Files
- 1.4.2 Linking
- 1.4.3 Running
- 1.5 Debugging (1)
- 1.5.1 What are Bugs/Errors?
- 1.5.2 Compile-Time Errors
- 1.5.2.1 Compiler Errors
- 1.5.2.2 Compiler Warning
- 1.5.3 Runtime Errors
- 2. Data Types &
- Operators
- 2.1 Learning by Example
- 2.1.1 Performing Calculations
- 2.1.2 Interacting with the Console Window
- 2.2 Variables
- 2.2.1 Naming Variables
- 2.2.1.1 Rules
- 2.2.1.2 Guidelines
- 2.2.2 Initialising a Variable
- 2.2.2.1 Using Assignment Equals =
- 2.2.2.2 Using Parentheses ()
- 2.2.2.3 Which is Preferable?
- 2.2.3 Ensuring Read Only Status Using Const
- 2.3 Primitive Data Types
- 2.3.1 Type Casting
- 2.3.1.1 Prospective Problems with Certain Types
- 2.3.1.2 Static Casting of Types
- 2.3.1.3 Solution with Type Casting
- 2.3.1.4 C Style Casts
- 2.4 Operators
- 2.4.1 Mathematical Operators
- 2.4.1.1 Arithmetic Operators
- 2.4.1.2 Assignment &
- Equality Operators
- 2.4.1.2.1 Assignment Operations Using =
- 2.4.1.2.2 = Operator in Mathematics and Computer Science
- 2.4.1.2.3 Equality Operations Using ==
- 2.4.1.2.4 Compound Assignment Operators
- 2.4.1.2.5 Assignment vs Compound Assignment Operators
- 2.4.1.3 Increment &
- Decrement Operators
- 2.4.1.3.1 Post Increment
- 2.4.1.3.2 Pre Increment
- 2.4.1.3.3 Similarities &.
- Differences: Pre Increment &
- Post Increment
- 2.4.1.4 Bitwise Operators
- 2.4.2 Logical Operators
- 2.4.3 the Sizeof Operator
- 3. Control Statements
- 3.1 Conditional Statements
- 3.1.1 If Statements
- 3.1.1.1 What is a Condition?
- 3.1.2 The If, Then, Else Clause
- 3.1.2.1 Alternative Form Using the Ternary? : Operator
- 3.1.3 Cascaded/Nested If Statements
- 3.1.4 The If, Else If, Else Clause
- 3.1.5 Switch Statement
- 3.1.6 Switch Statement vs If, Else If, Else Clause
- 3.2 Problem Solving with Loops
- 3.2.1 What are Loops?
- 3.2.2 For Loop
- 3.2.3 While Loop
- 3.2.3.1 Empty While Loop
- 3.2.4 Do Loop/While Loop
- 3.3 C++ Statements &
- Constructs
- 3.3.1 Blocks
- 3.3.2 Break Statement
- 3.3.3 Continue Statement
- 3.3.4 The Goto Statement
- 3.3.4.1 Prospective Evils of the Goto Statement
- 3.3.5 Dropping the Braces {} for 1 Action
- 3.3.5.1 Potential Hazards in Dropping the Braces
- 3.3.5.1.1 Breaking at the Wrong Place
- 3.3.5.1.2 Dangling Else Clause Issue
- 3.3.5.2 Guideline with Braces
- 3.4 Creating Aliases IN C &
- C++
- 3.4.1 Defining Constants Using #Define - Avoid in C++
- 3.4.1.1 Issues with Macro Aliases
- 3.4.2 Typedef
- 3.4.2.1 Cannot Modify Typedef
- 4. Programming Practice
- 4.1 Good vs Bad Practices
- 4.2 Guidelines
- 4.2.1 Organisation
- 4.2.2 Naming of Variables
- 4.2.3 Formatting of Source Code
- 4.3 Debugging
- 4.3.1 Breakpoints
- 4.3.2 Viewing Variables
- 4.3.3 Single Stepping
- Part II - Procedural Programming
- 5. Functions
- 5.1 Procedural Thinking
- 5.1.1 Procedural Thinking Outside the Programming World
- 5.1.2 Procedural Thinking Inside the Programming World
- 5.2 What are Functions?
- 5.2.1 Function Naming
- 5.2.2 Function Definitions
- 5.2.3 Function Declarations
- 5.2.3.1 Signature of a Function (1)
- 5.2.4 Function Invocation.
- 5.2.4.1 Caution: Circular Reference
- 5.2.5 Declarations vs Definitions
- 5.3 Functions: No Inputs, No Output
- 5.4 Functions: Some Inputs, No Output
- 5.4.1 Signature of a Function (2)
- 5.4.2 Formal Parameters vs. Actual Parameters
- 5.4.3 Passing a Copy of the Value
- 5.4.4 No Predetermined Order of Evaluation of Actual Parameters
- 5.4.5 Modifying Formal Parameters
- 5.4.5.1 Default Values
- 5.4.5.2 Const Formal Parameters
- 5.5 Functions: Some Inputs, an Output
- 5.5.1 Returning a Value
- 5.6 The Main Function
- 5.7 Scope of a Variable
- 5.7.1 Global Variables
- 5.7.1.1 Prospective Evils of Global Variables
- 5.7.2 Local Variables
- 5.7.2.1 Automatic Local Variables
- 5.7.2.2 Static Local Variables
- 5.7.2.2.1 Initialising Static Local Variables
- 5.7.2.2.2 Caution with Static Local Variables
- 5.8 Debugging: Single Step In
- 5.8.1 The Debug/Call Stack
- 5.9 Overloading Functions
- 5.9.1 Prospective Evils of Function Overloading
- 6. Inline Functions and Macros
- 6.1 Function Invocation Overhead
- 6.2 C Macros - For the Best Part Avoid in C++
- 6.2.1 Creating a Macro
- 6.2.2 Conditional Preprocessor Directives
- 6.2.2.1 the #ifdef, #ifndef #endif Clause
- 6.2.3 Prospective Evils of Macros
- 6.2.3.1 Losing Track of Types
- 6.2.3.2 Losing Track of the Name
- 6.2.3.3 Operator Precedence Problems
- 6.2.4 Rules of Thumb with Macros
- 6.3 Inline Functions
- 6.3.1 Defining &
- Declaring Inline Functions
- 6.3.2 Using Inline Functions
- 6.3.3 The Inline Keyword: A Request, Not an Instruction
- 6.3.4 Macro Problems not Manifest in Inline Functions
- 7. Program Management Over Multiple Files
- 7.1 Software Projects
- 7.1.1 Source Code
- 7.2 Building C++ Projects
- 7.2.1 Compilation
- 7.2.2 Linking
- 7.3 Controlling Visibility
- 7.3.1 Creating External Visibility Using Extern.
- 7.3.1.1 Linker Error Caused by a Lack of Definition
- 7.3.2 Hiding External Visibility Using Static
- 7.3.2.1 Duplication of the Keyword Static
- 7.4 Namespaces
- 7.5 Potential Problem: Multiple Inclusions
- 7.6 Preventing Multiple Inclusions
- 7.6.1 Ensuring Single Inclusions Using Macros
- 7.6.1.1 Using #ifndef to Prevent Multiple Inclusions
- 7.6.2 Ensuring Single Inclusions Using Preprocessor Directives
- 8. Recursion
- 8.1 What is Recursion?
- 8.1.1 Recursion Outside the Programming World
- 8.1.2 Recursion Inside the Programming World
- 8.2 Caution with Recursion
- 8.3 Computing Factorials
- 8.3.1 Iterative Algorthm: Using Loops
- 8.3.2 Using Recursion
- 8.4 Fibonacci Sequence
- 8.4.1 Applications of the Fibonacci Sequence
- 8.5 Generating Permutations
- 8.5.1 Recursive
- 8.5.2 The Next Permutation Algorithm
- 8.6 Hanoi Towers
- 8.6.1 Strategy for 3 Rings
- 8.6.2 Strategy for 4 Rings
- 8.6.3 Iterative Strategies
- 8.6.4 Recursive Strategies
- 8.6.5 Implementing Recursion in Hanoi Towers
- 8.6.6 Traditional Legends of Hanoi Towers
- 8.7 Further Recursive Problems
- 8.7.1 Triangular Numbersv
- 8.7.2 Knapsack/Rucksack Problem
- 8.7.3 N Queens Problem
- Part III - Data Structures &
- Algorithms
- 9. Arrays
- 9.1 What are Arrays?
- 9.1.1 Homogeneous Nature of Data Structures
- 9.1.2 Indexing in Arrays
- 9.1.3 The Array Operator
- 9.1.4 Storage in Runtime Memory
- 9.2 Defining Arrays
- 9.3 Writing Data to an Array
- 9.4 Defining and Initialising Arrays
- 9.4.1 Defining and Initialising Separately
- 9.4.1.1 Stand Alone Definition
- 9.4.1.2 Initialisation
- 9.4.2 Defining and Initialising on the Same Line
- 9.5 Reading Data from an Array
- 9.6 Using Arrays
- 9.7 Arrays as Function Inputs
- 9.8 Issues with Arrays
- 9.9 Multidimensional Arrays
- 9.10 Dynamic Arrays
- Part IV - Memory &.
- Resource Management Programming
- 10. Pointers
- 10.1 What is the Practice of Addressing?
- 10.1.1 Addressing Outside the Programming World
- 10.1.2 Addressing Inside the Programming World
- 10.2 What are Pointers?
- 10.2.1 L-Value vs R-Value
- 10.2.2 The Importance of Pointers
- 10.3 Implementing Pointers in C &
- 10.3.1 Defining Pointers: The * Operator
- 10.3.1.1 Placing the Asterisk BEFORE the Space
- 10.3.1.2 Placing the Asterisk AFTER the Space
- 10.3.2 Populating Pointers: The &
- Operator
- 10.3.2.1 Definition and Population in the Same Line
- 10.3.3 Decoding Pointers: The * Operator
- 10.3.4 Demonstration: Creating &
- Using Pointers
- 10.3.5 Potential Problem: Type Mismatch
- 10.3.6 Equating Pointers
- 10.3.7 Review: 2 Uses of the Asterisk Operator
- 10.4 The NULL Pointer
- 10.4.1 What is the NULL Pointer?
- 10.4.1.1 Do Not Confuse NULL Pointers and NUL Characters
- 10.4.2 Defining the NULL Pointer
- 10.4.3 Applications of the NULL Pointer
- 10.5 The Void Pointer
- 10.5.1 Issues with the Void Pointer
- 10.6 Pointers as Function Inputs
- 10.6.1 Problems: Lack of Addressing
- 10.6.2 Passing Function Inputs as Pointers
- 10.6.2.1 Formal Parameters as Pointers
- 10.6.2.2 Actual Parameters as Pointers
- 10.6.3 Fixing the Problems Using Pointer Inputs
- 10.6.4 The Importance of Pointer Inputs
- 10.7 The Pointer as the Function Output
- 10.7.1 Prospective Dangling Pointer Problem
- 11. Advanced Pointers
- 11.1 Pointer to Pointer Hierarchies
- 11.1.1 One Level: Pointer to a Pointer
- 11.1.2 Multiple Level Pointers
- 11.2 Read-Only Pointers Using Const
- 11.3 Pointers to Functions
- 11.4 Arrays of Pointers
- 11.4.1 Array of Pointers to Primitive Variables
- 11.4.2 Array of Pointers to Functions
- 12. References
- 12.1 What are References?
- 12.1.1 L-Value vs R-Value.
- 12.1.2 Restrictions with References.
- Notes:
- Includes bibliographical references and index.
- Description based on print version record.
- ISBN:
- 1-000-79186-6
- 1-00-333779-1
- 1-003-33779-1
- 1-000-79496-2
- 87-93609-44-2
- 9781003337799
- OCLC:
- 1049914167
The Penn Libraries is committed to describing library materials using current, accurate, and responsible language. If you discover outdated or inaccurate language, please fill out this feedback form to report it and suggest alternative language.