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: