C++ for Engineers and Scientists - Introduction

Introduction

Objectives
Introduction to Programming
Problem Solution and Software Development
Algorithms
Common Programming Errors
Computer Hardware and Storage Concepts

Introduction to Programming
Program: self-contained set of instructions used to operate a computer to produce a specific result
Also called software
Programming: the process of writing a program, or software


Introduction to Programming: Machine Language
Machine language programs, also called executables, consist of binary instructions
Each instruction has two parts:
Instruction part: the operation to be performed; also called an opcode
Address part: memory address of the data to be used
Each class of computer has its own particular machine language
Writing in machine language is tedious!

Introduction to Programming: Assembly Languages
Assembly Language: programming language with symbolic names for opcodes, and decimals or labels for memory addresses
            Example:
            ADD  1, 2
            MUL  2, 3
Assembly language programs must be translated into machine instructions, using an assembler

Introduction to Programming: Low- and High-Level Languages
Low-level languages: languages that use instructions tied directly to one type of computer
            Examples: machine language, assembly language
High-level languages: instructions resemble written languages, such as English,and can be run on a variety of computer types
            Examples: Visual Basic, C, C++, Java

Source code: the programs written in a high- or low-level language
Source code must be translated to machine instructions in one of two ways:
Interpreter: each statement is translated individually and executed immediately after translation
Compiler: all statements are translated and stored as an executable program, or object program; execution occurs later

Large C++ programs may be stored in two or more separate program files due to
Use of previously written code
Use of code provided by the compiler
Modular design of the program (for reusability of components)
Linker: combines all of the compiled code required for the program

Introduction to Programming: Procedural and Object Orientations
Programs can also be classified by their orientation:
Procedural: available instructions are used to create self-contained units called procedures
Object-oriented: reusable objects, containing code and data, are manipulated
Object-oriented languages support reusing existing code more easily
                                                           
Introduction to Programming: Application and System Software
Application software: programs written to perform particular tasks for users
System software: collection of programs to operate the computer system
System software must be loaded first; called booting the system
Bootstrap loader: a permanent, automatically executed component to start the boot process

Operating system: the set of system programs used to operate and control a computer; also called OS
Tasks performed by the OS include
Memory management
Allocation of CPU time
Control of input and output
Management of secondary storage devices

Multi-user system: a system that allows more than one user to run programs on the computer simultaneously
Multitasking system: a system that allows each user to run multiple programs simultaneously; also called multiprogrammed system


Introduction to Programming: The Development of C++
The purpose of most application programs is to process data to produce specific results
Early procedural languages included
FORTRAN: Formula Translation
ALGOL: Algorithmic Language
COBOL: Common Business Oriented Language
BASIC: Beginners All-purpose Symbolic Instruction Code
Pascal
C
Early object-oriented language:
C++

Problem Solution and Software Development
Problem Solution and Software Development: Phase I. Development and Design
Program requirement:  request for a program or a statement of a problem
After a program requirement is received, Phase I begins
Phase I consists of four steps:
Analysis
Design
Coding
Testing
Step 1: Analyze the Problem
Analyst must understand
What outputs are required
What inputs will be needed
How the inputs can be used to produce the desired outputs
Failure to analyze and understand the requirements leads to a failed solution!

Figure 1.9  Second-level refinement structure diagram.
Step 3: Code the Solution
Also called writing the program, and implementing the solution
Program should contain well-defined patterns or structures of the following types:
Sequence
Selection
Iteration
Invocation
Step 4: Test and Correct the Program
Testing: method to verify correctness and that requirements are met
Bug: a program error
Debugging: the process of locating an error, and correcting and verifying the correction
Testing may reveal errors, but does not guarantee the absence of errors
Testing requires the use of meaningful, representative test data
Impossible to test all possible combinations of data and operations in a complex program
Testing plans must be developed to ensure good coverage in testing
Testing usually requires more time than other steps in Phase I
Relative effort for steps in Phase I

Problem Solution and Software Development: Phase II. Documentation
Many documents may be required, including
Program description
Algorithm development and changes
Well-commented program listing
Sample test runs
Users’ manual

Problem Solution and Software Development: Phase III. Maintenance
Maintenance includes
Ongoing correction of newly discovered bugs
Revisions to meet changing user needs
Addition of new features
Maintenance usually the longest phase, and may be the primary source of revenue
Good documentation vital for effective maintenance

Problem Solution and Software Development: Backup
Backup:  process of making copies of program code and documentation on a regular basis
Backup copies = insurance against loss or damage
Consider using off-site storage for additional protection

Algorithms
   Pseudocode: English-like phrases used to describe the algorithm
   Formula: description of a mathematical equation
   Flowchart: diagram showing the flow of instructions in an algorithm
        Flowcharts use special symbols

Algorithms: Flowcharts
Figure 1.12  Flowchart for calculating the average of three numbers.

Common Programming Errors
   Common errors include
  Starting to write the program before fully understanding the requirements and the algorithm to be used
  Failing to make backups periodically
  Failing to provide complete, precise instructions in the programming language

Summary
         Software: programs used to operate a computer
         Programming language types:
        Low-level languages
         Machine language (executable) programs
         Assembly languages
        High-level languages
         Compiler and interpreter languages
         Software engineering: discipline concerned with creating readable, efficient, reliable, and maintainable programs
         Three phases in software development:
        Program development and design
        Documentation
         Maintenance
Four steps in program development and design:
        Analyze the problem
        Develop a solution
        Code the solution
        Test and correct the solution
         Algorithm: step-by-step procedure that describes how a task is performed
         Computer program: self-contained unit of instructions and data used to operate a computer to produce a desired result

Four fundamental control structures used in coding:
Sequence
Selection
Iteration
Invocation

Appendix: Computer Hardware and Storage Concepts
Computer hardware: components that support the capabilities of the computer
Appendix: Computer Hardware and Storage Concepts (continued)
Appendix: Computer Hardware and Storage Concepts (continued)
Appendix: Computer Hardware and Storage Concepts (continued)
Computer storage:
Bit: smallest unit of data; value of 0 or 1
Byte: grouping of 8 bits representing a single character
Character codes: collection of patterns of 0s and 1s representing characters; examples include
ASCII
EBCDIC

Number codes: patterns used to store numbers
Two’s Complement number code: represents a decimal number as a binary number of 0s and 1s

Word: grouping of one or more bytes
Number of bytes in a word determines the maximum and minimum values that can be stored: