Upload
kathleen-simmons
View
215
Download
0
Tags:
Embed Size (px)
Citation preview
Amar Raheja Introduction to C++ Slide 1
Introduction to C++Computer Programming
DON'T FIGHT WITH YOUR COMPUTER, LEARN HOW TO PROGRAM IT!!
Amar Raheja Introduction to C++ Slide 5
Computer Systems -- Introduction
• Before we can dive into programming, we need to fundamentals of computers in general– Define a computer
– Possible applications of a computer
• components of a computer
• how those components interact
• how computers store and process information
Amar Raheja Introduction to C++ Slide 6
What is a computer ?
• A device capable of performing computations and logical operations million and billions times faster than the human brain
• Super computer – 100s of billions of computations per second ~ 1011 computations /sec
• Computers process data using an organized set of instructions called computer programs
• Computers only understand binary language i.e. 0s and 1s• Humans take a long time to understand 0s and 1s unlike
computers
Amar Raheja Introduction to C++ Slide 7
Hardware and Software
• Hardware – the physical, tangible parts of a computer– various devices such as keyboard, screen (monitor), disks,
memory (RAM), motherboard, CPU, mouse etc.– Cost of hardware has been reducing over the years
• Software – programs (and data) that perform certain tasks like Microsoft Word, Excel, Access, Doom, Calculator, Internet Explorer etc.– Software programmers are in great demand and the market is
growing every year
• A computer requires both hardware and software• Each is essentially useless without the other
Amar Raheja Introduction to C++ Slide 8
Computer System Hardware
• Every computer can be divided into six logical units– Input Unit : receives information from various hardware devices
and makes the info available to other devices inside the computer. e.g. keyboard, scanner, microphone, camera etc.
– Output Unit : takes info that has been processed by the computer and places it on various output devices. e.g. Monitor(screen), printer, speakers etc.
– Main Memory Unit (RAM) : A rapidly accessible unit where the info is placed when it comes in from the input or is to be shipped out to the output device.
Amar Raheja Introduction to C++ Slide 9
Computer System Hardware
• Arithmetic & logical unit (ALU) : responsible for performing all calculations such as +, -, *, / etc. also referred to as the heart of a computer
• Central Processing Unit (CPU) : It is the coordinator and supervisor of the whole computer. It executes all program commands and is the brain of a computer. e.g. Intel Pentium chip, Sparc processor etc.
• Secondary memory unit: long term high capacity storage unit, also called the hard drive. Programs and data stored on this device stays intact even when the power is turned off unlike the main memory unit which gets erased when power is turned off
Amar Raheja Introduction to C++ Slide 10
System Hardware Interaction
Hard Disk
Floppy Disk
Main MemoryRAM
CPU&
ALU
Keyboard
Monitor
Amar Raheja Introduction to C++ Slide 11
Software Categories
• Operating system– controls all machine activities
– provides the user interface to the computer
– manages resources such as the CPU and memory
– Windows ME, Solaris (UNIX), Mac OS
• Application Program– generic term for any other kind of software
– word processors, databases, games
– also provides GUI
Amar Raheja Introduction to C++ Slide 12
Memory
• Main Memory is mostly referred to as RAM (read only memory)
• Main memory is divided into many memory locations
• Each memory location has an address which uniquely identifies it
• Data is stored in one or more consecutive memory locations
• On most computers, each memory location holds 8 bits, or 1 byte
Amar Raheja Introduction to C++ Slide 13
Memory
address
9278 9279 9280 9281 9282 9283 9284 9285 9286
large values are stored in consecutive memory locations
Amar Raheja Introduction to C++ Slide 14
Storage Capacity
• Each memory device has a storage capacity, indicating the number of bytes it can hold
• Capacities are expressed in various units of binary storage:
Unit Symbol Number of Bytes
kilobyte KB 210 = 1024
megabyte MB 220 (over 1 million)
gigabyte GB 230 (over 1 billion)
terabyte TB 240 (over 1 trillion)
Amar Raheja Introduction to C++ Slide 15
Memory
• Main memory is volatile stored information is lost if the electric power is removed
• Secondary memory devices are nonvolatile
• Main memory and disks are random access devices, which mean that information can be reached directly
• A magnetic tape is a sequential access device since its data is arranged in a linear order you must get by the intervening data in order to access other information
Amar Raheja Introduction to C++ Slide 16
Central Processing Unit (CPU)
• A CPU is also called a microprocessor
• It retrieves, interprets, and executes instructions, one after another, continuously
• This process is called the fetch decode execute cycle
• The CPU contains: – control unit coordinates processing steps
– registers small storage areas
– arithmetic / logic unit performs calculations and decisions
Amar Raheja Introduction to C++ Slide 17
Central Processing Unit
MainMemory
Arithmetic/LogicUnit
ControlUnit
Registers
CPU
Amar Raheja Introduction to C++ Slide 18
Computer Programming
• Telling a computer what to do – writing a program in a certain language like C, C++ or Fortran etc.
• The program is a set of instructions written in english using certain keywords
• Given an input, the computer program produces an output• Input: Typed letters & symbols, saved document (file) • Output: Display, printed document, document file• A program is an implementation of an algorithm in a
particular programming language
Amar Raheja Introduction to C++ Slide 19
Five Generations of Programming Languages
• First Generation Languages 0100011101010011101001010
– machine language = instruction set• Second Generation Languages LDA #10
– assembly language = machine language ADC # 20
– mnemonic / opcode CMP #30
BNE error
RTS
• Third Generation Languages if (10+20 !=30) {
– Fortran -> COBOL -> Algol error();
– Algol --> C, C++… JAVA } return;
High-Level Languages
Amar Raheja Introduction to C++ Slide 20
Five Generations of Programming Languages
• Fourth and Fifth Generation Languages
– Not based on other generations.
– Fourth = application-based
– Fifth = declarative paradigm-based
• What is a Programming Paradigm?
Amar Raheja Introduction to C++ Slide 21
Four Programming Paradigms (not a programming language, a method or style of programming)
• Imperative Programming - HOW to do something?– Sequential
– Machine languages, assembly languages, Basic, and C
– Large programs are hard to maintain
• Object-Oriented Programming– Data abstraction. A vehicle is made up of wheels, seats, an engine.
– Class --> Object --> instance (with initialization parameters)
– Small Talk, C++, and JAVA
Amar Raheja Introduction to C++ Slide 22
Four Programming Paradigms
• Functional Programming– Programming with Mathematics
– Functions passed as data
• Declarative Programming - WHAT to do?– Abstract formalism - Facts and rules
Amar Raheja Introduction to C++ Slide 23
Computer Languages
• A language through which abstract instructions are communicated to the computer
• Translated to the series of 0's and 1's that do the job • Human readable vs. machine readable • Easier to write , easier to read , easier to edit • A different language, with familiar words
– Vocabulary (C has 32 "keywords" and a few symbols) – Syntax (Rules for combinations of words & symbols) – Semantics (What those combinations will do/mean)
Amar Raheja Introduction to C++ Slide 24
Syntax vs. Semantics
• Syntax Semantics– Grammar of the program Meaning of the program
• symbols role of program statement
• reserved words purpose
• identifiers unambiguos
* Just because the syntax is correct doesn’t mean the semantics are correct
* Programs will always do what we tell it to do, not what we mean it to do
Amar Raheja Introduction to C++ Slide 25
Algorithm
• A sequence of precise instructions that leads to a solution
• Must be:
1. Clearly and unambiguously defined
2. Effective
3. Finite
• It’s a procedure for solving problems in terms of – The action to be executed and
– The order in which these actions are to be executed
Amar Raheja Introduction to C++ Slide 26
An algorithm to come to work
Get out of bed get out of bed
Brush your teeth brush your teeth
Take a shower get dressed
Get dressed take a shower
Eat breakfast eat breakfast
Carpool to work carpool to work
Which set of instructions defines a correct algorithm?
Amar Raheja Introduction to C++ Slide 27
Compiling and Linking C++ Programs
• Source code files
• Compiler - machine code files
• C++ predefined functions
• Linker - combines object code files and produces executable
CompilerFile.cpp Linker
Executablefile
C++ libraries
Object Code
Source Code
Amar Raheja Introduction to C++ Slide 28
Origins of C++
• BCPL --> B --> C --> C++
• Why ++?– increment operator
• C programming language– Dennis Ritchie (AT&T Bell Laboratories) 1970s writing and
maintaining the UNIX operating system (assembly/B)
– Ken Thompson, originator UNIX, and developer of B between high/low-level languages, directly manipulate memory like assembly language
– C not as easy to understand and doesn’t have as many automatic checks as other high-level languages
– C has both high-level and low-level features which makes it a unique language
Amar Raheja Introduction to C++ Slide 29
C++ Origins
• C++– created by Bjarne Stroustrup (AT&T Bell Laboratories) early
1980s
– designed as a better
– C is mostly a subset of C++ now
– C with objects
– has facilities to do object-oriented programming
Amar Raheja Introduction to C++ Slide 30
A First C++ Program
#include <iostream.h>
int main() {
int number_of_pods, peas_per_pod, total_peas;
cout << “Press return after entering a number.\n”;
cout << “Enter the number of pods: \n”;
cin >> number_of_pods;
cout << “Enter the number of peas in a pod:\n”;
cin >> peas_per_pod;
total_peas = number_of_pods * peas_per_pod;
cout << “If you have \n”; cout << number_of_pods;
cout << “ and “; cout << peas_per_pod;
cout << “ peas in each pod, then\n”; cout << “ you have “;
cout << total_peas; cout << “ peas in all the pods. \n”;
return 0;
}
Amar Raheja Introduction to C++ Slide 31
A First C++ Program - the output
Press return after entering a number.
Enter the number of pods:
10
Enter the number of peas in a pod:
9
If you have 10 pea pods
and 9 peas in each pod, then
you have 90 peas in all the pods.
What does the source code mean?
Amar Raheja Introduction to C++ Slide 32
A First C++ Program - basic definitions
#include <iostream>
using namespace std;– directive
– always begin with #
– tells the compiler where to find details about items that are used in
– your program (cout << and cin >>)
– linker combines the object code associated with the methods in
– iostream with the object code corresponding to your source code
– PITFALL - do not put any extra spaces between the < >, the compiler will not recognize the name of the file
Amar Raheja Introduction to C++ Slide 33
A First C++ Program - basic definitions
• int main()
{
indicates the beginning of the program
called the main method / function
• return 0;
}
indicates the end of the program
• { } always indicate the beginning and end of the main part of the program
• return 0; is a return statement. It indicates that the program should end here.
Amar Raheja Introduction to C++ Slide 34
A First C++ Program - basic definitions
• int number_of_pods, peas_per_pod, total_peas;– variable declaration
– utilizes primitive data type of int, which is the set of all integers
• total_peas = number_of_pods * peas_per_pod;– * is used for multiplication in C++
• cin and cout are input/output statements– defined in iostream.h
– cout << … sends information to the computer monitor
– cin >> … sends information to a variable
– TIP - cin = input device >> variable cout = output << …
– \n in a cout statement is called an escape sequence. It means that after sending information to the monitor skip to the next line.
Amar Raheja Introduction to C++ Slide 35
Basic C++ Program Layout
#include <something.h>
int main()
{
Variable_Declarations
statement 1
statement 2
…
return 0;
}
Amar Raheja Introduction to C++ Slide 36
Program Testing
• A crucial part of any software development effort
• Lack of testing can result in big problems– Computerized stock trading program
– Heart rate monitoring equipment
• Cannot be an afterthought
• Just because a program compiles doesn’t make it correct
• Most professional software is tested against a test suite
Testing is more than running a few chosen cases, it involves the intelligent selection of test cases that takes into account good knowledge of the application and the software solution.
Amar Raheja Introduction to C++ Slide 37
Three General Categories of Errors
• Compilation-time Errors
• Run-time Errors
• Logical Errors
Amar Raheja Introduction to C++ Slide 38
Categories of Errors - continued
• Compile-Time errors– Syntactic errors
• y == 5 // error incorrect equality operator - syntactic error
– Semantic errors• int j;
j++; // error, variable not initialized
– forgetting to declare a variable (instance variables for example)
– assigning a string to an int (doesn’t make sense)
– semantic errors are sometimes ambiguous• int i = “Hello World”;
– sometimes receive multiple errors, correct the first one and try again
Amar Raheja Introduction to C++ Slide 39
Categories of Errors - continued
• Run-Time Errors - errors that could not be detected at the time of compilation– int w, y;
• y = 0;
• w = 100 / y; // error, what is w?
• Run-time errors are harder to detect when compared to syntactic errors– int w, x, y, z;
x = ...
y = ...
z = ...
w = 100 / ((x%y) * z);
Amar Raheja Introduction to C++ Slide 40
Categories of Errors - continued
• Logical-Errors - errors that result by not correctly implementing algorithm/software requirements– mistakenly use the division sign instead of the
multiplication sign
– the program runs but gives an incorrect result
– hardest of the three to find and correct
* The process of finding Run-time and Logical-errors is called debugging– the less time you spend in debugging, the better programmer you
are (not necessarily!!!)
Amar Raheja Introduction to C++ Slide 41
Professional Computing Societies
• Association for Computing Machinery (ACM)
• Computer Society of the IEEE– Institute for Electrical and Electronic Engineers
• Model Undergraduate Program in Computer Science– a) Nine subject areas
– b) Social, Ethical, and Professional Issues
• Student Memberships– www.acm.org www.ieee.org