Download Document

Document related concepts

History of the function concept wikipedia , lookup

Principia Mathematica wikipedia , lookup

Elementary mathematics wikipedia , lookup

Halting problem wikipedia , lookup

Transcript
Introduction to C++
Computer Science
Quote...
“Language is the only
instrument of science….”


Samuel Johnson
Q: What is C++


C++ is a compiled, object-oriented language
It is the “successor” to C, a procedural
language





(the “++” is called the successor operator in C++)
C was derived from a language called B which
was in turn derived from BCPL
C was developed in the 1970’s by Dennis
Ritchie of AT&T Bell Labs
C++ was developed in the early 1980’s by
Bjarne Stroustrup of AT&T Bell Labs.
Most of C is a subset of C++
People & Programs


User: an individual who runs, or
executes, a program
Programmer: an individual who creates,
or writes, a program
C++ Program
Consists of…

Declarations


Define the use of various identifiers, thus
creating the elements used by the program
(computer)
Statements

Or executable statements, representing
actions the computer will take on the user’s
behalf
Identifiers





Names for various entities used in a program;
used for...
Variables: values that can change frequently
Constants: values that never changes
Functions: programming units that represents
complex operations
Parameters: values that change infrequently
Simple C++ Program
#include <iostream.h>
int main()
{
// Declarations
// Statements
return 0;
}


Compiler
directive:
Tells the
compiler
what to do
before
compiling
This one
includes
source code
from another
file
Simple C++ Program
#include <iostream.h>
int main()
{
// Declarations
// Statements
return 0;
}

Main function
Simple C++ Program
#include <iostream.h>

int main()
{
// Declarations
// Statements
return 0;
}

Header for
main function
States…



data type
for the
return value
identifier for
function
list of
arguments
between
parenthesis
(none for
this
function)
Simple C++ Program
#include <iostream.h>
int main()
{
// Declarations
// Statements
return 0;
}


Braces
enclose the
body of the
function
They
represent the
start and end
of the
function
Simple C++ Program
#include <iostream.h>
int main()
{
// Declarations
// Statements
return 0;
}



Declarations
and
statements
Main body of
function (or
main part)
“//”
represents
the start of a
comment
Simple C++ Program
#include <iostream.h>

int main()
{
// Declarations
// Statements
return 0;
}


Return
statement
specifies the
value the
function
returns
All (almost)
declarations
and
statements
end with a
semi-colon
“;”
Simple C++ Program
#include <iostream.h>
int main()
{
// Declarations
// Statements
return 0;
}

This
program
doesn’t
do
anything
!
Sample C++ Program
#include <iostream.h>
void main()
{
int number;
cout << “Enter a number” <<
endl;
cin >> number;
cout << “You entered: “ <<
number << endl;
}


Variable
declaration
The identifier
number is
declared as
being of data
type int, or
integer
Sample C++ Program
#include <iostream.h>
void main()
{
int number;
cout << “Enter a number” <<
endl;
cin >> number;
cout << “You entered: “ <<
number << endl;
}



cout
the output
statement for
C++
Note the
direction of
“<<“
endl
represents an
end-of-line
Sample C++ Program
#include <iostream.h>
void main()
{
int number;
cout << “Enter a number” <<
endl;
cin >> number;
cout << “You entered: “ <<
number << endl;
}


cin
the input
statement for
C++
Note the
direction of
“>>”
Sample C++ Program
#include <iostream.h>
void main()
{
int number;
cout << “Enter a number” <<
endl;
cin >> number;
cout << “You entered: “ <<
number << endl;
}


Did you
copy this
down?
You had
better,
since this
will be the
first
program
you’ll try!
Sample C++ Program
#include <iostream.h>
void main()
{
int number;
cout << “Enter a number” <<
endl;
cin >> number;
cout << “You entered: “ <<
number << endl;
}

That
mea
ns
right
now!
Assignment


Assignment is an operation that assigns
the value of an expression to a variable
Ex.
Total = 2 + 3 + 5


First, the expresssion “2 + 3 + 5” is
evaluated
Then, this value is assigned to the
variable “Total”
Assignment


When a variable is declared, space is
allocated in the computer’s memory for the
variable
Each data type requires a different number of
bytes in memory for storing a variable
int - 2
float - 4
double - 8
char, bool - 1
Assignment

When a variable is
assigned a value,
the value is placed
into the variable’s
memory location
Total
10
Total = 2 + 3 + 5;
Arithmetic Operations




Addition:
Subtraction:
Multiplication:
Division:
2 + 3
5 - 2
10 * 4
12 / 3
Order of Operations



Arithmetic expressions are evaluated
according to the following order of
operations
At each level, operations are evaluated
left to right
(1) Parenthesis, Functions
(2) Multiplication, Division
(3) Addition, Subtraction
Parenthesis


Parenthesis are used to alter the order
with which operations are evaluated
Ex.
4 + 5 * 2 equals 14
(4 + 5) * 2 equals 18
Here we go!

Problem: To determine the average of three
numbers
Task: Request, from the user, three numbers,
compute the average and the three numbers,
and print out the original values and the
computed average

Do it!

You have 20 minutes!

Computer Science I
Functions
Q: What is a function?



A programming unit
Similar to mathematical functions
Example:


f(x) = x2 + 5x + 7
For x = 2, f(2) = (2)2 =5(2) + 7 = 21
Q: What is a function?

It has...
 ... arguments
 ... a name
(identifier)
 ... a value it
returns
 ... a body int
foo(int x)
{
int result;
result = x*x + 5*x + 7;
return result;
}
Procedural Abstraction



Think “Black Box” !
When using a function, you only need
to be concerned with what it does, not
how it does it
When writing a function, you need to
be concerned with the how
Example: Cube it!
int cubeIt(int x)
{
int result;
result = x*x*x;
return result;
}
int cubeIt(int x)
{
int result;
result = x;
result = x*result;
result = x*result;
return result;
}
Computer Science I
Decision Statements
Q: What is a decision?


Something that represents a branching
point in a solution
Outcomes are often dependent on initial
conditions
Decisions in Programs



Without decision statements (or other
dynamic control structures), programs
are static
Static programs do exactly the same
things each time they are executed
Dynamic programs do not
Boolean Algebra

Based on values that are either True or
False

True and False values are often
represented by 1’s and 0’s, respectively
Logical Operations: And


AB
Expression is True
iff A and B are
both true
T
F
T
T
F
F
F
F
Logical Operations: Or



AB
Expression is True
if either A or B are
True
Note: Also True
when A and B are
both True
T
F
T
T
T
F
T
F
Logical Operations: Exercises
A = True, B = True, C = False
1. A  B
2. A  C
3. A  B  C
4. (A  B)  (A  C)
Relational Operations

A
A
A
A

AB

AB



<B
>B
=B
B
“A
“A
“A
“A
“A
“A
“A
“A
“A
less than B”
greater than B”
equal to B”
less than or equal to B”
not greater than B”
greater than or equal to B”
not less than B”
not equal to B”
less than or greater than B”
Relational Operations:
Exercises
A = 5, B = 3, C = -7
1. A < B
2. A  C
3. (A < C)  (B < C)
Boolean Operations: C++








AB
AB
A<B
A>B
A=B
AB
AB
AB








A
A
A
A
A
A
A
A
&& B
||B
<B
>B
==B
>=B
<=B
<>B
Try this!
Problem:
 You’d like to go see a movie.
 The movie costs $8.00, a soda costs $2.50
and a large popcorn costs $4.50.
 Based on the amount of money in your
pocket, determine whether you could...
(a) See the movie and buy a soda,
(b) See the movie, and buy soda and
popcorn, or
(c) Stay home
Know?




Movie costs $8.00
Soda costs $2.50
Popcorn costs $4.50
How much money I have in my pocket
Need?



Cost of movie and soda
Cost of movie, soda and popcorn
Way to select one of the three options
(that is, make a decision!)
Do?




Option (a) costs $10.50
Option (b) costs $15.00
Option (c) costs nothing
What next?
How would I write this?




First, we need to decide how to
organize our solution
Should we “hard code” the costs of the
movie, soda and popcorn into the
algorithm?
Should we input these values?
Let’s take another look at that problem!
How would I write this?


The problem
statement tells us
the individual costs
So, let’s assume
they’re fixed or
constant

No need to ask the
user for them
Problem:
 You’d like to go see a movie.
 The movie costs $8.00, a soda
costs $2.50 and a large popcorn
costs $4.50.
 Based on the amount of money
in your pocket, determine
whether you could...
(a) See the movie and buy a
soda,
(b) See the movie, and buy
soda and popcorn, or
(c) Stay home
How would I write this?



Another question: Should we pre-compute
the cost of each option?
Or, should we let the program do this?
Since we’ve already stated that the item costs
are fixed, it would seem logical to precompute the cost of each option



Movie: $8.00
Movie & soda:
$10.50
All three:
$15.00
How would I write this?

Next, we need to make sure we have a
complete algorithm
Input Money
If (Money < $10.50) then
Display “Stay home.”
else If (Money < $15.00) then
Display “Go to a movie;buy a soda.”
else Display “Go to a movie; buy a
soda and
popcorn.”

Almost done!
How would I write this?





Determine how we wish to organize our
program
Do we want one function?
Or, should we create a few functions?
Let’s two functions: One to input Money
from the user
And a second to determine the outcome
How would I write this?

Here’s the prototypes for the functions
int getMoney()
void showResults(int myMoney)
Program


Okay, now we get to use our algorithm
and program design to create a
program
Well, what are you waiting for?
Do It!!!
Multiway Branching



If statements can be used for multiway
branching
That is, choosing one of n mutually
exclusive outcomes
But what about n outcomes that are not
totally unique?
Multiway Branching

Consider the following problem:
Each year, a local middle school
requires students to purchase supplies
based on their grade level. 6th graders
need pencils and five notebooks. 7th
graders also need a calculator. 8th
graders add to this a 3-ring binder with
loose leaf paper.
Multiway Branching


We could use a nested If statement to handle
this, but there is an alternative
Whenever we need to represent a decision
step, with n possible outcomes, where
 the outcomes form subsets of each other,
and/or
the outcomes are chosen based upon
unique scalar values for a control
expression,
we can use a Case (switch) structure


Multiway Branching

Case
When Grade = 8th
3-ring binder
loose leaf paper
When Grade = 7th
calculator
When Grade = 6th
pencils
5 notebooks
Multiway Branching
In C++ ...
switch (grade){
case 8:
cout << “3-ring binder, loose leaf, “;
case 7:
cout << “calculator, “;
case 6:
cout << “5 notebooks, & pencils.” << endl;
}
 When the switch is encountered, control jumps to the
matching case statement and continues until either a break is
found or the end of the switch

Multiway Branching

Here’s an example with a few break’s
cout << “Your lunch period comes “;
switch (grade) {
case 8:
cout << “first.” << endl;
break;
case 7:
cout << “second.” << endl;
break;
case 6:
cout << “third.” << endl;
}
No final break
Computer Science I
Loops
Q: What is a Loop?


A control structure that allows for a
sequence of steps to be repeated a
certain number of times
This sequence of steps is called the
body of the loop
Q: What is a Loop?

There are three basic loop structures in
programming:



For
While
Repeat
While loop
Look familiar?
Condition
T
Body
F
What if you
added a change
step to the end
of the body?
For loop
Condition
T
Body
F
While loop
Condition
T
Body
F
A while loop is
a control
structure where
the body is
repeated as long
as the condition
is true
While loop
Condition
T
Body
F
When the
condition is
false, the body
is bypassed, and
flow continues
with the next
part of the
algorithm
Example: Sequential search
(k<size)  (found)
T
F
k  0
found  False
while (k<size)  (found)
do if A[k] = target
then found 
True
else k = k +
1
if A[k] = target
then found  True
else k = k + 1
Example: Sequential search
(k<size)  (found)
T
F
k = 0;
found = False;
while ((k<size) &&
(!found))
if (A[k] == target)
found = True;
else k = k +
1;
if A[k] = target
then found  True
else k = k + 1
Computer Science I
Arrays
Q: What is an array?




An array is a data structure consisting
of one or more indexed members
An array is like a row of mailboxes at
the post office
Each box is numbered in sequence
(indices), and …
Each box contains the same type of
stuff (datatype)
An array could be drawn like
…
g
d
a
f
c
z
l
0
1
2
3
4
5 6
An array could be drawn like
…
g
d
a
f
c
z
0
1
2
3
4
5 6
Each box is numbered in sequence
l
An array could be drawn like
…
Each box has the same datatype
g
d
a
f
c
z
l
0
1
2
3
4
5 6
An array is declared by …
int X[10];
 Where int is the common datatype for all
elements in the array,
 X is the name of the array (identifier), and …
 10 is the size of the array, or how many
elements are in the array
 Indices for a C++ array always begin with 0
Example: Student Grades
// Declare array
double stGrades[7];
:
// Assign value to array element
stGrades[5] = 87;
:
// Display array element
cout << stGrades[3] << endl;
Problem:


Create a program that will ask the user
for three (3) numbers, determine the
average, and then display the original
numbers and the average
Hint: You might wish to use a loop as
well as an array!
Computer Science I
Strings
What is a string?





A string is a sequence of characters
Example:
nc9*hNB98B&^v*&G
Blank spaces are characters
Each character requires one byte of storage
in memory
Each character is represented by a one byte
character code, usually an ASCII code
Strings



A literal is a string bounded by
quotation marks
Example:
“nc9*hNB 98B&^v*&G”
Notice the blanks spaces in the
sequence - they are characters!
Strings

In C++, we declare string variables as
follows



char string_identifier[length];
string_identifier is the name of the
string variable
length represents the length of the
string, or how many characters are in
the sequence
Strings

Example:
void main()
{
char name[24];
cout << “Enter your name: “;
cin >> name;
cout << “Your name is “ << name <<
endl;
}