[go: up one dir, main page]

100% found this document useful (1 vote)
345 views111 pages

Book C++ Internet

The document provides an introduction to programming, including: 1) It defines programming and programming languages, and discusses different types of programming languages like machine language, assembly language, low-level and high-level languages. 2) It explains the two main ways of translating high-level languages to machine language: interpreted and compiled languages. 3) It discusses different programming language paradigms like procedural and object-oriented programming, and provides examples of popular programming languages like C++, Fortran, COBOL, BASIC, Pascal that fall under different categories. 4) It outlines the typical software development process involving analysis, design, coding, testing, documentation and maintenance phases.

Uploaded by

Ruben Kempter
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
345 views111 pages

Book C++ Internet

The document provides an introduction to programming, including: 1) It defines programming and programming languages, and discusses different types of programming languages like machine language, assembly language, low-level and high-level languages. 2) It explains the two main ways of translating high-level languages to machine language: interpreted and compiled languages. 3) It discusses different programming language paradigms like procedural and object-oriented programming, and provides examples of popular programming languages like C++, Fortran, COBOL, BASIC, Pascal that fall under different categories. 4) It outlines the typical software development process involving analysis, design, coding, testing, documentation and maintenance phases.

Uploaded by

Ruben Kempter
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 111

Introduction to Programming

Definition

Programming - the process of writing a program, or software

Programming Language - Set of instructions that can be used to


construct a program
- come in a variety of forms and types.

Different Programming Language

1. machine language - the only programs that can actually be used to


operate a computer
- also referred to as executable programs or
executables – consist of a sequence of
instructions composed of binary numbers
2. Assembly language - language that uses symbolic notation

Example : ADD 1, 2
MUL 2, 3

An assembly Translation Machine


Language program Language
Program (assembler) program

3. Low and High Level Language

Low level - language that uses instructions that are directly tied to one type of
computer.

High level – uses instructions that resemble written languages, such as English
and can be run on a variety of computer types.
Example : C++, Basic, Pascal, Fortran

Source program and source code – programs written in a computer language

Two Ways in Translating High level language to Machine Language

Interpreted language – when each statement in a high-level source program is


translated individually and executed upon translation.

Interpreter – program doing the translation


Compiled language – when all of the statements in a high-level source program
are translated as a complete unit before any one statement
is executed.
Compiler – program doing the translation

Procedure and Object Orientation

In addition to classifying programming languages as high or low level, they are


also classified by orientation as either procedure or object-oriented.

Procedure-oriented language - the available instructions are used to


create self-contained units referred to as
procedures
Purpose of procedure : to accept data as input and transform the data
in some manner to produce a specific result as
output .

Object oriented languages - the development of graphical screens and


support for graphical user interface (GUI)
capable of displaying multiple windows.

Purpose : Using an object approach a program must first define the


characteristics of the objects it will be manipulating and then
be
constructed of units that pass information to each object to produce
the desired results.

C++ - is formally classified as an object-oriented language, contains features


found in both procedural- and object-oriented languages.

Programming Languages

On a fundamental level, all computer programs do the same thing, they


direct a computer to accept data (input), to manipulate the data ( process),
and to produce reports (output). This implies that all computer programming
languages that support a procedure orientation must provide essentially the
same capabilities for performing these operations.

Input Process Output


Data the results
Data
Different Type of Programming Languages

FORTRAN - Formula Translation


 usually for business applications that deals with whole numbers,
representing inventory quantities.
 these applications require simpler mathematical calculations than scientific
applications.

COBOL - Common Business Oriented Language


 has a picture output formats

BASIC - Beginners All-purpose Symbolic Instruction Code


 ideal for creating small, easily developed, interactive programs

Pascal - named after the 7th century mathematician Blaise Pascal.


 A so rigidly structured programming language

C++ - extension of C a procedure oriented language developed in 1970 at


AT&T Bell Laboratories by Ken Thompson, Dennis Richie, and
Brian Kernighan
- retained the extensive set of capabilities provided by C and is itself
a true general-purpose programming language
- it can be used for everything from simple, interactive programs to
highly sophisticated and complex engineering and scientific
programs, within the context of a truly structured language.

Software Development

Software Development Procedure


- methods used by professional software developers for
understanding the problem that is being solved and for creating
an effective and
appropriate software solution.

Three Overlapping Phases :

1. Development and Design


2. Documentation
3. Maintenance

Software Engineering is concerned with creating, efficient, reliable, and


maintainable programs and systems, and it uses the software development
procedure to achieve this goal.
maintenance
Program
Life Cycle
Stages documentation

development
and design

Request for a program Program no


longer used

Three Phases of Program Development

Phase I: Development and Design


- Begins with either a statement of a problem or a specific
request for a program which is referred to as program
requirement.

Steps :

testing

coding

design

analysis

Time
1. Analyze the problem
- required to ensure that the problem is clearly defined and
understood (understanding of how the inputs can be
used to produce the desired output)
 what the system or program must do
 what outputs must be produced
 what inputs are required to create the desired outputs

2. Develop a solution
- select the exact set of steps, called an algorithm, that you will
use to solve the problem
- the solution is typically obtained by a series of refinements,
starting with the initial algorithm found in the analysis step until
an acceptable and complete algorithm is obtained.
Example :

Inventory
Control First level structure
program

Data
Entry Calculation Report
Section Sect ion Section

Second level refinement structure

Inventory
Control First level structure
program

Data
Entry Calculation Report
Section Sect ion Section

enter change Delete Screen Printer


data data Data Reports Reports
3. Code the Solution
- also referred to as writing the program and implementing the
solution, consists of translating the chosen design solution into
a computer program.
Structures :

 Sequence – defines the order in which instructions are executed by


the program
 Selection – provides the capability to make a choice between
different operations depending on the result of some condition.
 Iteration – referred to as looping and repetition, provides the ability
for the same operation to be repeated based on the value of a
condition.
 Invocation – involves invoking or summoning, set of statements as
it is needed

4. Test and Correct the Program


- to verify that the program works correctly and actually fulfills its
requirements

Phase II : Documentation
- documenting your work is the most important step in solving a
problem

Five essential documents for every Problem Solution

1. program description
2. algorithm development and changes
3. well-commented program listing
4. sample test runs
5. users’ manual

Phase III : Maintenance

- concerned with ongoing correction of problems, revisions to


meet changing needs, and adding new feature
- often the major effort, the primary source of revenue, and the
longest lasting of the engineering phases.

Back up – not part of the design process, it is critical to make and keep back up
copies of the program at each step of the programming and debugging process.
Algorithm

- step-by-step sequence of instructions that must terminate and


describes how the data to be processed to produce the desired
outputs

Flowchart Symbols

Process computation or data manipulation

Terminal beginning / end of program

input / output input / output operation

decision a program branch point

loop initial, limit, and increment values of loop

predefined process calling a function

connector entry to, or exit from another part of the


flowchart

flow lines connect the other flowchart symbol

Exercises :

1. Create a flowchart to find the weighted average of four test scores.


2. Create a flowchart ,given the radius in inches, and price of the pizza.
3. Create a flowchart given the cost of service charge in sending an
international fax at $3.00, $0.20 per page for the first 10 pages; and $0.10
for each additional page. Calculate the amount due using the number of
pages.
Introduction to C++

C++
 preeminent language for the development of high-performance software
 its syntax has become the standard for professional programming
language.
 The language from which both JAVA and C# are derived

History

C++
 Was invented by Bjarne Stroustrup in 1979 at Bell Laboratories
 Begins with C
 Built upon the foundation of C
 Supports object oriented programming
 Extended library routines were the added features
 Has undergone three major revisions, 1985, 1990, during the
standardization process
 In 1994 the standard was created, we have now the ANSI/ISO C++
ANSI (American National Standards Institute)
ISO (International Standards Organization)

Modular programs - programs whose structure consists of interrelated segments


arranged in a logical and easily understandable order to form an integrated and
complete unit.
 Easier to develop
 Correct
 Modify

Module 1

Module 2 Module 3

Module 4 Module 5 Module 6

A well-designed program is built using modules

Modules – smaller segments used to construct a modular program


C++ is constructed by combining as many modules as necessary to produce the desired
result.

It can be :

1. Function – a small machine that transforms the data it receives into a finish
product

Example : first number second number

a x b

result

2. class – is a more complicated unit than a function because it contains both data
and functions appropriate for manipulating the data

3. identifiers – the names permissible for functions and classes are also used to
name other elements of C++ language.
- can be made by any combination of letters, digits or underscores ( _ )

4. keyword - is a word that is set aside by the language for a special purpose and
can only be used in a specified manner.

auto default goto public this


break do if register template
case double inline return typedef
catch else int short union
char enum long signed unsigned
class extern new sizeof virtual
const float overload static void
continue for private struct volatile
delete friend protected switch while

Starting ANSI C++ / Visual C++


1. Open File, Click New Project
2. Choose WIN32, then choose WIN32 Console Application
3. Type Project Name / Folder
Name : <Enter Name> then click Next
4. Click Empty Project, then click Finish
Creating Filename :
5. Choose Source Files, then right click
Click ADD : New Item
Existing Item
6. Choose Code then C++ files, type filename, click ADD.
Displaying Output :
7. Choose Build, then Build Solution
8. Choose Debug, then Start without debugging

Structure

Sample program1 :

/* This is a simple C++ program */ comment line (a remark in the


program’s source code)

#include <iostream> headers (contains information necessary


using namespace std; or useful to the program)

simplify access to the standard library


int main ( ) function where program execution begins and
ends
{
cout << “ C++ is power programming. ” ;

return 0;
}

using statement - informs the compiler that you want to use


the std namespace

std namespace - namespace in which the entire Standard


C++ library is declared

main( ) - begins with a call to main( ) and ends when main( )


returns

{} - marks the start and end of the function code.

int - stands for integer ;specifies the type of data returned

<< - output operator; causes whatever expression is on its


right side to be output of the device specified on its left
side.

cout - predefined identifier that stands for console output and


generally refers to the computer’s screen.

; - all C++ statement ends with semi-colon

““ - double quotation refers to the statement as string

String - sequence of characters enclosed between double


quotation

return 0; - terminates main ( ) and causes it to return the value 0 to


the calling process (which is typically the operating
system)
- for most OS, a return value of 0 normally terminates the
program.

Sample Program2 :

#include <iostream>
using namespace std;

int main ( )
{
cout << “ Computers, computers everywhere” ;
cout << “ \n as far as I can C “;

return 0;
}

\n – newline escape sequence ( tell cout to send instructions to the display device to move to a
newline)

// - with no spaces between them, designate the start of the line comment. (one line comment)

/* comment */ - multiple line comments

Exercises :

1. Write a C++ program to display the following :

The cosecant of an angle


is equal to one over
the sine of the angle

2. Write a C++ program to display the following


____________________________
Radians Degrees
0 0.0000
90 1.5708
180 3.1416
270 4.7124
360 6.2832
=========================
3. Write a program that produces the following output : Substitute ??? with your and curremt
date.
****************************************
* Programming Assignment 1 *
* Computer Programming 1 *
* Author :??? *
* Due Date :??? *
****************************************
4. Write a program to produce this output :
CCCCCCCCCC ++ ++
CC ++ ++
CC +++++++++++++ +++++++++++++++
CC +++++++++++++ +++++++++++++++
CC ++ ++
CCCCCCCCCC ++ ++

Data values and Arithmetic Operators

Three Basic Data Values

1. Integer – any positive number without a decimal point ( maybe + or - )

Integer values and Word Size


Word Size Maximum integer value Minimum Integer value
1 byte 127 - 128
2 bytes 32,767 - 32,768
4 bytes 2,147,483,647 - 2,147,483,648

2. Floating-Point Numbers – which is also called a real number, is any signed


or unsigned number having a decimal point

Categories : ( amount of storage that a computer uses for each type)


a. Float - 9.234f ( 8 bits)
b. Double - 9.234 (11 bits)
c. long-double - 9.234L (15 bits)

Exponential Notation – similar to scientific notation and is commonly used to


express both large and very small number in a compact form

Example :

1.625e3
6.3421e4
7.31e-3
6.25e-4

3. Character values – any one letter, digit, or special symbol enclosed by


single quotes
- include the letters of the alphabet (lower and uppercase), ten
digits 0 to 9 and special symbols

Escape Sequences – combination of backslash and specific characters


\b - move back one space
\f - move to ext page
\n - move to next line
\r - carriage return
\t - move to next tab setting
\\ - backslash character
\’ - single quote
\nnn - treat nnn as octal number

Arithmetic Operators – used for arithmetic operations

Operation Operator
Addition +
Subtraction -
Multiplication *
Division /
Modulus Division %

Sample Program3 :
#include <iostream>
using namespace std;

int main ( )
{
cout << "15.0 plus 2.0 equals " << (15.0 + 2.0) << '\n';
cout << "15.0 minus 2.0 equals " << (15.0 - 2.0) << '\n';
cout << "15.0 times 2.0 equals " << (15.0 * 2.0) << '\n';
cout << "15.0 divided by 2.0 equals " << (15.0 / 2.0) <<’\n’;

return 0;
}

Variables and Declaration Statements

All integer, floating point and other values used in a computer program are stored
and retrieved from the computer’s memory.

Example : To store the integer values 45 and 12 in the memory locations 1652
and 2548 respectively .

Storage for one integer Storage for one integer

45 12
1652 2548

Memory addresses

Variables
- symbolic names in place of actual memory addresses
- a name given by the programmer that is used to refer to
computer storage locations.
- it used in programs because the value stored in the variable
can change.

Rules :
1. variable name must begin with a letter or underscore
2. variable name cannot be a keyword
3. variable name cannot consist for more than 31
characters

Naming Storage locations :

variable names
num 1 num 2 total

45 12 57

1652 2548 45
Memory Addresses

Assignment Statement
- Tells the computer to assign (store) a value into a variable
- Always have an equal (=) sign and one variable name
immediately to the left of the sign.

Example : num1 = 45;


num2 = 12;
total = num1 + num2;

Declaration Statements
- naming a variable and specifying the data type that can be
stored in it

general form : data type variable name ;

example : int sum;


General form of C++ program with declaration statements :

#include <iostream>
using namespace std;

int main( )

{
declaration statements :

other statements ;
return 0;
}

Sample Program4 :

#include <iostream>
using namespace std;

int main( )

{
float grade1;
float grade2;
float total;
float average;

grade1 = 85.5 ;
grade2 = 97.0;
total = grade1 + grade2;
average = total /2.0;

cout << “The average grade is “ << average << endl;

return 0;
}

endl keyword is a C++ manipulator which causes a newline ( \n) to be added to


the output stream and then forces an immediate flushing of the output stream.
cout the value stored in the variable is placed on the output stream and
displayed

char a reserved word used to declare character variables

Sample program5 : character


#include <iostream>
using namespace std;

int main( )

{
char ch;

ch = 'a' ;
cout << "The character stored in ch is " << ch << endl;
ch = 'm';
cout << "The character stored in ch is " << ch << endl;

return 0;
}

Exercises :

1. A boy purchases a computer for $1,085. The sales tax on the purchase is
5.5%. Compute and print the total purchase price.

2. Find and print the area and perimeter of a rectangle that is 13.5 feet long and
2.3 feet wide.

3. A 14.5-kilogram object is traveling at 10 meters per second. Compute and


print its momentum. ( momentum = mass x velocity)

4. Convert 198.0 degrees Fahrenheit to degrees Celsius. ( C = (F – 32) * 5/9)

5. Write a program that add the five decimal numbers 12.3, 34.6, 13.0, 45.6 and
15.5 and get the average.

6. Write a program that computes the salary of an employee. Given the data :
hours worked is 12.5 and pay rate per hour is 45.50.
Multiple Declarations

Variables having the same data type can always be grouped together and declared using a single
declaration statement.

Form : data-type variable list ;

Declaration statements can also be used to store an initial value into declared variables.

Example : int num1 = 15

Sample program6 :

#include <iostream>
using namespace std;

int main( )

{
int num;

num = 22;
cout << “ The value stored in num is “ << num << endl;

return 0;
}

Exercises :

1. Write a program that would add two numbers and compute for the average.,
num1 = 25.6 and num2 is 23.4 and display the average

2. Calculate the resistance of the wire and display the result given the data

resistance = (resistivity * length) / area


resistivity = 10.4
cross-sectional area = 500
length = 125

3. Calculate the number of direct lines for 100 subscribers


Calculate the number of direct lines for 110 subscribers
Calculate the additional lines needed, display the number of lines for 100
subscribers and the additional lines needed.

Formula : lines = n(n – 1) / 2


Additional lines = lines2 – lines1

4. Write a program that multiplies num1 = 12 by 2, adds the value of num2 = 45 to it and then
stores the result to newNum.

5. Write a program to get the weighted average of the four test scores. Given the data
85 0.20
76 0.30
96 0.35
87 0.25 Then get the total test score.
Assignment Operators

The equal ( = ) symbol is called the assignment operator and an expression


using this operator is an assignment expression.

Form : variable = expression;

Example :

factor = 1.06;
weight = 155.0;
totalWeight = factor * weight;

Values stored in variable


factor weight totalWeight

1.06 155.0 164.30

Sample Program7 :

// this program calculates the volume of a cylinder,


// given its radius and height

#include <iostream>
using namespace std;

int main( )
{
float radius, height, volume;

radius = 2.5 ;
height = 16.0;
volume = 3.1416 * radius * radius * height;

cout << “ The volume of the cylinder is “ <<volume << endl;

return 0;
}
Accumulating
These expressions are required in accumulating subtotals when data is
entered one number at a time.

Example : Add the numbers 96, 70, 85 and 60

Statement Value in sum


sum = 0; 0
sum = sum + 96; 96
sum = sum + 70; 166
sum = sum + 85; 251
sum = sum + 60; 311

Sample Program8:
#include <iostream>
using namespace std;

int main( )

{
int sum;

sum = 0;
cout << " The value of sum is initially set to "<< sum <<"\n";
sum = sum + 96;
cout << " sum is now " << sum <<"\n";
sum = sum + 70;
cout << " sum is now " << sum <<"\n";
sum = sum + 85;
cout << " sum is now " << sum <<"\n";
sum = sum + 60;
cout << " The final sum is " << sum <<endl;

return 0;

}
Counting

Similar to the accumulating statement

Form : variable = variable + fixed_number;

++ increment operator

Expression Alternative
i=i+1 i ++ or ++ i
n=n+1 n++ or ++n
count = count + 1 count++ or ++count

when ++ operator appears before a variable it is called prefix increment operator


when it appears after a variable it is called a postfix increment operator.

Example : k = ++n does two things in one expression; the value of n is incremented by 1
and then the new value of n is assigned to the variable k

Equivalent to n = n + 1;
k = n;

k = n++ first assigns the current value of n to k and then increment the value of n by one

Equivalent to k = n;
n = n + 1;

Sample Program9:
#include <iostream>
using namespace std;

int main( )

{
int count;

count = 0;
cout << " The initial value of count is " <<count<<"\n";
count ++;
cout << " count is now " << count<<"\n";
count ++;
cout << " count is now " << count<<"\n";
count ++;
cout << " count is now " << count<<"\n";
count ++;
cout << " count is now " << count<<endl;
return 0;
}

-- decrement operator

When it appears before a variable is prefix decrement operator, when the


decrement appears after a variable it is called postfix decrement operator.

Formatting Numbers For Program Output

The format of numbers displayed by cout can be controlled by field width


manipulators included in each output stream.

Commonly Used Stream Manipulators

Manipulator Action
width (n) - cout.width set the field width to n
precision (n) - cout.precision Set the floating-point precision to n places
Setf (flags) - cout.setf(ios: :showpos) Set the format flags
Dec Set output for decimal display
Hex Set output for hexadecimal display
Oct Set output for octal display

Field manipulators are useful in printing columns of numbers so that the numbers in
each column are align correctly.

Width(n) manipulator tells cout to display the number in a total field of 10


Precision (n) tells cout to display a three digits to the right of the decimal point.

Set input/output flags


Setf using the ios::fixed flag ensures that the output is displayed in a conventional
format; that is, as a fixed point rather then an exponential number
Setf (ios::showpos) causes a leading plus sign to be displayed before positive values
Setf(ios::showpoint) causes a decimal point and trailing zeroes to be displayed for all
floating point output
setf(ios: :scientific) floating-point numeric values are displayed using scientific
notation
fill ( ) character, becomes a new fill character

Sample Program10 :
#include <iostream>
#include<iomanip>
using namespace std;
int main()
{
cout.width(3);cout << 6<<"\n";
cout.width(3);cout <<18<<"\n";
cout.width(3);cout <<124<<"\n";
cout << "---\n";
cout << (6+18+124)<<endl;
return 0;
}
Sample Program11 :
#include<iostream>
using namespace std;

int main()
{
cout.setf(ios::showpos);
cout.setf(ios::scientific);
cout.precision(2);
cout<< 123 <<" "<<123.23 << " " <<endl;

return 0;
}

Sample Program12 :
#include<iostream>
using namespace std;

int main()
{
cout.setf(ios::showpos);
cout.setf(ios::scientific);

cout<< 123 <<" "<<123.23 << " " <<endl;


cout.precision(2);
cout.width(10); cout<< 123 << " ";
cout.width(10); cout<< 123.23 << "\n ";

cout.fill('*');
cout.width(10);cout<< 123 << " ";
cout.width(10); cout<< 123.23 << "\n";

return 0;
}

Exercises :

1. Write a program that displays the results of the expressions 3.0 * 5.0,
7.1* 8.3 – 2.2 and 3.2 / ( 6.1 * 5).

2. Write a program that displays the results of the expressions 15 / 4 , 15 % 4,


and 5 * 3 – (6 * 4) .
Mathematical Library Functions

C++ provides standard preprogrammed functions that can be included in a


program

Mathematical Functions

sqrt ( ) function determines the square root of its argument and returns the result
as a double.

sqrt (number)

Expression Value Returned


sqrt (4) 2.0
sqrt (17.0) 4.123106
Sqrt (25) 5.0
Sqrt (1043.29) 32.3
Sqrt(6.4516) 2.54

#include <cmath>

To access the math functions, mathematical header is needed

Common C++ Functions

Function Name Description Returned Value


abs(a) absolute value same data type as argument
pow (a1, a2) a1 raised to the a2 power data type of argument a1
sqrt (a) square root of a same data type as argument
sin (a) sine of a (a in radius) double
cos (a) cosine of a (d in radians) double
tan (a) tangent of a (d in radians) double
log (a) natural logarithm of a double
log10 (a) common log (base 10) of a double
exp (a) e raised to the a power double

Example Returned value

abs(-7.362) 7.362000
abs(-3) 3
pow(2.0, 5.0) 32.00000
pow(10, 3) 1000
log(18.69) 2.92863
log10(18.697) 1.271772
exp(-3.2) 0.040762
Sample Program13:
#include <iostream>
#include<cmath>
using namespace std;

int main ()

{
int height;
double time;

height = 800;
time = sqrt ( 2 * height / 32.2);

cout << " It will take " << time << " seconds to fall at "
<< height << " feet. \n" ;

return 0;

Sample15
#include <iostream>
#include<cmath>
using namespace std;

int main ()

{
cout.width(3);
cout.precision(2);
cout<<" Power function : " << pow(2.0, 5.0) <<"\n";
cout<<" Absolute value is : " << abs(-7.362) <<"\n";
cout<<" Log function is: " << log(18.69) <<"\n";
cout<<" Logarithmic : " << log10(18.697) <<"\n";
cout<<" Exponential is : " << exp(-3.2) <<endl;
return 0;
}

Exercises : Using the manipulators and math functions

1. Write a program that calculates and returns the 4th root of the number 81.0, which
is 3.

2. If a 20-foot ladder on the side of a building at a 85-degree angle. At which the


ladder touches the building, height can be calculated as :

Height = 20 * sin 85 degrees


3. Write a program that calculates the distance between two points whose
coordinates are (7, 12) and (3, 9). Use the fact that the distance between two
points having coordinates (x1, y1) and (x2, y2) is :

distance = sqrt([x1 – x2]2 + [y1 – y2]2).

Program input Cin Object

Cin object - stands for console input


- it is linked to the keyboard
- used to enter data into a program while it is executing.
- allows the user to enter a value at the terminals
- stores the item into the variable listed after the extraction (get
from)
- puts the computer into temporary pause (or wait)

# include <iostream>
using namespace std;

int main ( )
{

cin >>
cout <<
keyboard
}
Screen

Sample program14 :

#include <iostream>
using namespace std;

int main ()

{
float num1, num2, product ;
cout << “ Enter a number: \n “ ;
cin >> num1;
cout << “ Enter another number : \n”;
cin >> num2;
product = num1 * num2;
cout << “ num1 << “times “ << num2 << “ is “ << product ;
return 0;
}
Sample program15:
#include <iostream>
using namespace std;

int main ()

{
int num1, num2, num3;
float average ;

cout << “ enter three integers : \n “ ;


cin >> num1 >> num2 >> num3;
average = ( num1 + num2 + num3) / 3.0 ;
cout << “The average of the numbers is “ << average;
return 0;
}

Exercises :

1. Write a program that will convert a number entered in Celsius to degrees Fahrenheit.

Formula : Fahrenheit = ( 9.0 / 5.0) * Celsius + 32.0

Display the prompt : Enter the temperature in degrees Celsius :

2. Write program that displays the prompt :

Enter the radius of a circle :

Calculate the Area of a circle = 3.1416 * r2


Calculate also the Circumference = 2*PI* r2

3. Write a program that enter the weight of a person in kilograms and output it in pounds.
( 1 kilogram = 2.2 pounds)

4. Write a program that will enter the name, year level, school course and age of a user
and display in the order :
Name :
Year Level :
Course :
School
Age :

5. Write a program that calculates and prints a paycheck of an employee. The net pay is
calculated after taking the following deductions.
Income tax = 15%
Social Security tax = 10%
Health Insurance = 1.5%
Pension plan = 5%

SELECTION STRUCTURES

Flow of control - refers to the order in which program’s statements are


executed.

Combination of Four standardized flow of control structures

1. Sequential - statements are executed in sequence, one after


another in the order in which they are placed in the
program.

2. Selection - used to select which statements are to be performed


next.

3. Repetition - used to repeat a set of statements

4. Invocation - summoning set of statements as needed

Selection Criteria

In the solution of many problems, different actions must be taken depending


upon the value of the data.

If-else statement - used to implement such a decision structure in its


simples form – that of choosing two alternatives.

Pseudocode syntax :

if ( condition)
statement is executed if condition is “true” ;
else
statement is executed if condition is “false” ;

Condition used is any valid C++ expression :

Relational expressions – consist of relational operator that compares


two operands.
- can either be a variable or a constant
- sometimes called condition
Figure 4.1 : Anatomy of a simple relational expression

relational operator
operand operand
watts < 15.2

Relational operators - may be used with integer, float, double or


character operands.

Relational Operator Meaning Example


< less than age < 30
> greater than height > 6.2
<= less than or equal to taxable < = 20000
>= greater than or equal to temp > = 98.6
== equal to grade == 100
!= not equal to number ! = 250

Numerical operands

Example :
3 < 2 true = 1
2.0 > 3.0 false = 0

Character Data (comparing letters is essential in alphabetizing names)

Expression Meaning Example


‘A’ > ‘C’ 0 False
‘D’ < = ‘Z’ 1 True
‘E’ == ‘F’ 0 False
‘G’ > =’M’ 0 False
‘B’ ! = ’C’ 1 True

Logical Operators

1. AND (symbol &&) – the condition is true only if both individual expression are
true themselves

Example : ( voltage > 48) && (milliamp < 10 )

2. OR (symbol || ) - the condition is satisfied if either one or both of the


two expression is true

Example : ( voltage > 48) || (milliamp < 10 )


3. NOT !( expression) - is used to change an expression to its opposite
state; that is, if the expression has any nonzero
value (true), !expression produces a zero value
(false)
- is used with only one expression

Example : Assuming 26 is stored in age, the expression age > 40 has a value of
zero (false), while the expression !(age > 40) has a value of 1

Precedence of Operators

Operator Associativity
! unary - ++ -- right to left
*/% left to right
+- left to right
< <= > >= left to right
== != left to right
&& left to right
|| left to right
= += - = * = /= right to left

Example : assume a = 5, b = 2, c = 4, d = 6, e = 3

a * c != d * b 5*4!=6*5
20 ! = 30

d * b == c * e 6 * 5 == 4 * 3
30 == 12

The if – else Statement

- directs the computer to perform a series of one or more


instructions based on the result of the comparison.

- can be used in situation to select the correct operation.

General syntax :

if (expression) statement 1 ;

else statement2;

or

if (expression)
statement 1 ;

else
statement2;

Flow chart

start

input

is
condition no (else part)
true ?

yes

statement 1 statement 2

display

end

Compound Statements
- is a sequence of single statements contained between braces

General form :

If (expression)
{

statement1;
statement2;
statement3;
}
Else
{
statement4
statement5;
:
:
statementn;
}

Block Scope

All statements contained within a compound statement constitute a single


block of code and any variable declared within such a block only has meaning
between its declaration and the closing braces defining the block

Example ;

{ // start of outer block

int a = 25;
int b = 17;

cout << “The value of a is “ << a


<< “ and b is “ << b;

{ // start of inner block

float a = 46.25;
int c = 10;

cout << “ a is now “ << a


<< “ b is now “ << b
<<” and c is “ << c;

} // end of inner block


cout << “ a is now “ << a
<< “ and b is “ << b;

} // end of outer block

Scope of the variable


- area within a program where a variable can be used.

One-Way Selection
- is only executed if the expression has a nonzero value (true
condition)
if (expression)
statement;

Sample Program16 ; If-else

#include <iostream>
#include <cmath>
using namespace std;

int main ()

{
float radius;

cout << “Please type in the radius : “ ;


cin >> radius ;

if (radius < 0.0)


cout << “ A negative radius is invalid “ ;
else
cout << “ Area of the circle is “ << 3.1416 * pow(radius,2) ;

return 0;
}

Sample Program17 : Compound Statement

#include <iostream>
#include <iomanip>
using namespace std;

// a temperature conversion program


int main ()

{
char temp_type;
float temp, fahren, celsius;

cout << “Enter temperature to be converted: “ ;


cin >> temp;
cout << “ Enter f if the temperature is Fahrenheit “ ;
cout << “ \n or a c if the temperature is in Celsius: “;
cin >> temp_type;
// set output formats

cout << setiosflags (ios ::fixed)


<< setiosflags (ios ::showpoint)
<< setprecision (2);
if (temp_type == ‘f ’)

{
celsius = (5.0 / 9.0) * (temp – 32.0 );
cout << “\nThe equivalent Celsius temperature is : “ << celsius;

else

{
fahren = (9.0 / 5.0) * temp + 32.0;
cout << “\nThe equivalent Fahrenheit temperature is : “ << fahren;
}

return 0;

Sample Program18: one-way selection

#include <iostream>
using namespace std;

int main ( )

{
const float LIMIT = 3000.0;
int id_num;
float miles;

cout << “ Type in car number and mileage: “;


cin >> id_num >> miles;

if (mies > LIMIT)

cout << “ Car” << id_num << “ is over the limit. \n” ;

cout << “End of program output. \n” ;


return 0;
}

Exercises :

1. Write a program that asks the user to input two numbers. If the first
number entered is greater than the second number the program should
print the message “The first number is greater “, else it should print the
message “The first number is smaller.”

2. An insulation test for a wire requires that the insulation withstand at least
600 volts. Write a C++ program that accepts a test voltage and prints
either the message “PASSED VOLTAGE TEST” or the message “FAILED
VOLTAGE TEST” as appropriate.

3. A certain waveform is 0 volts for time less than 2 seconds and 3 volts for
time equal or greater than 2 seconds. Write a C++ program that accepts
time into the variable time and display the appropriate voltage depending
on the input value.

4. Write a program that will display the message, ”Boiling point of water “, if
temperature value is 100,else display “ Above the boiling point of water” if
the temperature value is above 100 degrees else display the message “
Below boiling point”

5. Write a program that prompts the user to enter the lengths of three sides
of a triangle and then output the message whether the triangle is a right
triangle.
Nested if Statements

- the inclusion of one or more if statements within an existing if


statement.

Example :
if (hours < 9)
if ( distance > 500)
cout << “snap”;
else
cout << “pop”;

General form of a nested if-else statement

a.) within the if part of an if-else statement


b.) within the else part of an if-else statement

is no (else part)
expression-1
true

yes

is no (else part)
expression-2
true

yes

statement 1 statement 2 statement 3


Figure 4a

Figure 4b. has the form

if (expression_1)
statement1;
else
if (expression_2)
statement 2;
else
statement 3;

is no (else part)
expression-1
true

yes

statement-1

is no (else part)
expression-2
true

yes

statement 3
statement 2
Sample Program19: if-else chain

Displays an item’s specification corresponding to a letter input. The following


letter codes are used :

Specification status Input Code


Space exploration S
Military Grade M
Commercial Grade C
Toy Grade T

#include <iostream>
using namespace std;

int main( )
{
char code;

cout << “Enter a specification code: “;


cin >> code;

if (code == ‘S’)
cout << “The item is space exploration grade.”;
else if (code == ‘M’)
cout << “The item is military grade.”;
else if (code == ‘C’)
cout << “The item is commerical grade.”;
else if (code == ‘T’)
cout << “The item is toy grade.”;
else
cout << “An invalid code was entered. “ ;

return 0;
}
Sample Program20:

Determine the output of a digital converter using the following input/output


relationship.

Input Weight Output Reading


greater than or equal to 90 lbs 1111
less than 90 lbs but greater than 80 lbs 1110
less than 80 labs but greater than or equal to 70 lbs 1101
less than 70 labs but greater than or equal to 60 lbs 1100
less than 60 lbs 1011

#include <iostream>
using namespace std;

int main( )
{
int digout;
float inlbs;

cout << “Enter the input weight : “;


cin >> inlbs;

if (inlbs == 90)
digout = 1111;
else if (inlbs >= 80)
digout = 1110;
else if (inlbs >= 70)
digout = 1101;
else if (inlbs >= 60)
digout = 1100;
else
digout = 1011;

cout << “The digital output is “ << digout;

return 0;
}
Exercises :

1. The grade level of undergraduate college students is typically determined


according to the following schedule:

Number of Credits Completed Grade level


Less than 32 Freshman
32 to 63 Sophomore
64 to 95 Junior
96 or more Senior

Using this information, write a C++ program that accepts the number of
credits a student has completed, determines the student’s grade level, and
displays the grade level

2. A student’s letter grade is calculated according to the following schedule.

Numerical grade Letter grade


Greater than or equal to 90 A
Less than 90 but greater or equal to 80 B
Less than 80 but greater than or equal to 70 C
Less than 70 but greater than or equal to 60 D
Less than 60 F

Using this information, write a C++ program that accepts a student’s numerical
grade, converts the numerical grade to an equivalent letter grade, and displays
the letter grade.

3. Write a program that prompts the user to input a number. The program should
output the number and a message will be displayed whether it is positive,
negative or zero.
The Switch Statement
- provides an alternative to the if-else chain for cases that
compare the value of an integer expression to a specific value

General form :

switch (expression)
{ // start of compound statement
case value_1:
statement1;
statement2;
:
:
break;
case value_2:
statementm;
statementn;
:
:
break;

:
case value_n:
statementw;
statementx;
:
:
break;
default :
statementaa;
statementbb;

} // end of switch and compound statement

Switch Statement uses four new keywords

switch - identifies the start of the switch statement


(expression in parentheses following this word is evaluated and the result of the
expression compared to various alternative values)
case - is used to identify or label individual values that are
compared to the value of the switch expression.

break - determines terminating points

default - is optional and operates the same as the last else in an


if-else chain
When writing switch statement, you can use multiple cases

Example :
switch (number)
{
case 1 :
cout << “Have a Good afternoon\n” ;
break;
case 2 :
cout << “Have a Happy Day\n” ;
break;
case 3:
case 4 :
case 5 :
cout << “Have a Nice Evening\n” ;
}

Sample Program21:

#include <iostream>
using namespace std;

int main( )
{

int opselect;
double fnum, snum;

cout << “Please type in two numbers: “;


cin >> fnum >> snum;
cout << “Enter a select code: “;
cout << ”\n 1 for addition”;
cout << ”\n 2 for multiplication”;
cout << ”\n 3 for division”;
cin >> opselect;

switch (opselect)
{
case 1:
cout << “The sum of the numbers entered is “ << fnum + snum;
break;
case 2:
cout << “The product of the numbers entered is “ << fnum * snum;
break;
case 3:
cout << “The first number divided by the second number is “ << fnum / snum;
break;
}
return 0;

}
Exercises : Switch Statement

1. A student’s letter grade is calculated according to the following schedule.

Numerical grade Letter grade


Greater than or equal to 90 A
Less than 90 but greater or equal to 80 B
Less than 80 but greater than or equal to 70 C
Less than 70 but greater than or equal to 60 D
Less than 60 F

Using this information, write a C++ program that accepts a student’s numerical
grade, converts the numerical grade to an equivalent letter grade, and displays
the letter grade.

2. Each disk drive in a shipment of these devices is stamped with a code


from 1 through 4, which indicates a drive of manufacturers as follows :

Code Disk Drive Manufacturer


1 3M Corporation
2 Maxell Corporation
3 Sony Corporation
4 Verbatim Corporation

Write a C++ program that accepts the code number as an input and based on
the value entered displays the correct disk drive manufacturer

3. Write a program that prompts the user to input the shape ( rectangle, circle or
cylinder) and display the area and perimeter of a rectangle, area and
circumference of a circle and volume and surface area of a cylinder. Input also
the appropriate dimension, height and width for rectangle, radius for circle.
Height and radius for cylinder.

Note : Perimeter of a rectangle = 2*(L+W)


Area = L*W

Area of a circle = PIr2


Circumference = 2 PIr2

Volume of a cylinder = PIr2 *Height


Surface area = 2*r + 2 PIr2

REPETITION STRUCTURES

Many problems, require a repetition capability in which the same calculation or sequence
of instructions is repeated, over and over, using different sets of data.

Example :
1. continual checking of user data entries until an acceptable entry, such as
a valid password is entered.
2. counting and accumulating running totals
3. constant acceptance of input data and recalculation of output values that
only stops upon entry of a sentinel value

Repetitive section of code requires four elements :

1. repetition statement - both defines the boundaries containing the


repeating section of code and controls whether the
code will be executed or not

Forms of Repetition Structures :

a. while structure
b. for structure
c. do while structure

2. Condition - each structure requires a condition that must be


evaluated
- are identical to selections statements, if condition is
true, the code is executed; otherwise it is not.

3. Statement that initially sets the condition

- must always be placed before the condition is first


evaluated to ensure correct loop execution the first
time the condition is evaluated.

4. There must be a statement within the repeating section of code that allows the
condition to become false - at some point, the repetitions stops.

Pretest and Posttest Loops

1. Pretest Loop - condition is tested before any statements within the loop
are executed.
- if condition is true, the executable statements within the
loop are executed, if initial value of the condition is false,
the executable statements within the loop are never
executed and control transfers to the first statement after
the loop
- also referred to as entrance-controlled loops.
- Example : while and for loop

previous
statement

is
the condition yes loop
true ? statement

No

next
statement

2. Posttest Loop - referred to as exit-controlled loop


- loop that evaluates a condition at the end of the repeating
section of code
- execute the loop statements at least once before the
condition is tested. Since the executable statements within
the loop are continually executed until the condition
becomes false, there always must be a statement within
the loop that updates the condition and permits it to
become false.
- Example : Do while

previous
statement

loop
statement

is Yes
the condition
true ?
No

next
statement

Fixed Count versus Variable-Condition Loops

Types of Condition tested

1. Fixed count loop - the condition is used to keep track of how many repetitions
have occurred
- fixed number of calculations is performed or a fixed
- number of lines are printed, at which point the repeating
section of code is exited

2. Variable condition loop - the tested condition does not depend on a count
being reached, but rather on a variable that can
change interactively with each pass through the
loop. When a specified value is encountered,
regardless of how many iterations have occurred
repetitions stop.

while Loops

- the statement following the expression is executed repeatedly as


long as the expression evaluates to a nonzero value
- considering just the expression and the statement following the
parentheses.
- Literally loops back o itself to recheck the expression until it
evaluates to zero (becomes false)

Syntax : while (expression)


statement;

Process used : 1. test the expression


2. if the expression has a nonzero (true) value
a. execute the statement following the parentheses
b. go back to step 1
else
exit the while statement and execute the next executable
statement following the while statement
enter the
while statement

expression
evaluates
to zero
test
the expression exit the
(step 1) ( a false condition) while statement

expression
evaluates
to a nonzero
number
( a true condition)

loop execute the


statement
after the
parentheses
(Step 2a)

Anatomy of a while Loop

Comparison :

1. while (count < = 10) /* this is a valid statement but cout is


cout << count; called forever, while statement automatically
loops back to itself and retests the expression*/

2. count = 1; /* assign values to each variable in the tested


while (count < = 10) expression before while statement is
cout << count; encountered.
count starts with a value of 1, but while will
not exit. */

3. count = 1; /* a compound statement; value is less than


while (count < = 10) or equal to 10, the expression is true and
{ statement is executed; cout display the value
cout << count; of count; count++ increment (adds to the
count++; current value; while retest the expression
} until the value count is 11, program stops */

Infinite loop - is a loop that never ends


Sample program22 :

# include <iostream>
using namespace std;

int main ( )
{
int count;

count = 1;
while (count <=10)
{

cout << count << “ “;


count++;
}

return 0;
}

Sample program23 :

# include <iostream>
using namespace std;

int main ( )
{
int i ;

i = 1;
while (i >=10)
{

cout << i << “ “;


i--;
}

return 0;
}
Sample program24 : Printing a table of numbers 1 to 10

#include <iostream>
#include <iomanip>
using namespace std;

int main ( )
{
int num;

cout << “NUMBER SQUARE CUBE\n”


<<”-------------- ------------ ---------\n;

num = 1;
while (num < 11)
{
cout << setw(3) <<num << “ “
<< setw(3) <<num * num << “ “
<< setw(3) <<num * num * num ;
num++;
}
return 0;
}
Sample Program25 : Fixed-count loop where counter is not incremented by 1

#include <iostream>
#include <iomanip>
using namespace std;

int main ( )
{

const int MAX_CELSIUS = 50;


const int START_VAL = 5;
const int STEP_SIZE = 5;

int celsius ;
float fahren;

cout << “DEGREES DEGREES\n”


<< “CELSIUS FAHRENHEIT\n”
<< “--------------- -------------------\n”;

celsius = START_VAL;

cout << setiosflags (ios ::showpoint)


<< setpresision (2);

while ( celsius <= MAX_CELSIUS)


{
fahren = (9.0 / 5.0) * celsius + 32.0;
cout << setw (4) << celsius
<< setw(13) << fahren;
celsius = celsius + STEP_SIZE;
}

return 0;

}
Exercises :

1. Write a C++ program that converts gallons to liters. The program should
display gallons from 10 to 20 in one-gallon increment and the corresponding liter
equivalent. Use the relationship that 1 gallon contains 3.785 liters.

2. Write a C++ program that converts feet to meters. The program should
display feet from 3 to 30 in three-foot increment and the corresponding meter
equivalent. Use the relationship that there are 3.28 feet to a meter.

3. Rewrite sample program5.3 to produce a table that starts at a Celsius


value of – 10 and ends with a Celsius value of 60, in increment of 10 degrees.
Interactive while Loops

- combining interactive data entry with the repetition capabilities


- used to accept and then display data.

Sample Program26 :

#include <iostream>
#include <iomanip>
using namespace std;

int main ( )
{

const int MAXNUMS = 4;


int count;
float num;

cout << “\nThis program will ask you to enter “


<< MAXNUMS << “ numbers.\n” ;
count = 1;
while (count <= MAXNUMS)
{
cout << “\nEnter a number : “;
cin >> num;
cout << “The number entered is “ << num;
count++
}

cout << endl;

return 0;
}

Exercises:

Refer to exercises on page 50. Use interactive while statement.


start

print a
message

set count
equal to 1

is
count less no
than or equal stop end of program
to 4 condition is false

yes
(condition is true)

print the
message
enter a
number :

Loop

accept a these statements


number are executed
using cin each time the loop
is traversed

print value
of number

add 1 to
count
Flow of control diagram Sample program5.5

new
number

cin accept a new number

new number
goes in here

num
the variable total total
new total +
total = total + sum

Accepting and adding a number to a total

Start

set count
to one

set total
to zero

is
count no
print total

yes

accept a num stop

add num
to total

add 1 to
count Accumulation flow of control

Sample Program27 :

#include <iostream>
#include <iomanip>
using namespace std;

int main ( )
{

const int MAXNUMS = 4;


int count;
float num, total;

cout << “\nThis program will ask you to enter “


<< MAXNUMS << “ numbers.\n” ;

count = 1;
total = 0;

while (count <= MAXNUMS)


{
cout << “\nEnter a number : “;
cin >> num;
total = total + num;
cout << “The total is now “ << total;
count++
}

cout << “\nThe final total is “ << total ;

return 0;
}
Sentinels

All of the loops we have created thus far have been examples of fixed count
loops, where a counter has been used to control the number of loop iterations by
means of a while statement variable condition loops may also be constructed.

Sentinels - data values used to signal either the start or end of a data
series.
- must be selected so as not to conflict with legitimate data
values

Example : processing a students grade

Sample program28 :

#include <iostream>
using namespace std;

int main()

{
const int HIGHGRADE = 100;
float grade, total;

grade = 0;
total = 0;

cout << “\nTo stop entering grades, type in any number” ;


cout << “\n greater than 100. \n\n”;

while (grade <= HIGHGRADE)

{
total = total + grade;
cout << “Enter a grade: “ ;
cin >> grade;

cout << “\nThe total of the grades is “ << total ;


return 0;

// value higher than 100 is entered, the loop is exited. Sum is displayed.

Two useful statements in connection with repetition statements :

1. break – forces an immediate break, or exit from switch, while, for and do
while statements

example : while (count <= 10)


{
cout << “Enter a number : “;
cin >> num;
if (num > 76) // number terminated if number is > 76
{
cout << “You lose!\n;
break; // break out of the loop
}

else
cout << “Keep on trucking!\n”;
count++
}

2. continue – applies only to loops created with while and do-while and for
statements.
- is encountered in a loop, the next iteration of the loop
immediately begun.

Example : while (count < 30)


{
cout << “Enter a grade: “;
cin >> grade;
if (grade < 0 || grade > 100)
continue;
total = total + grade;
count++;
}
// invalid grades are ignored and only valid grades are added to the total

Null Statement
All statements must be terminated by a semi-colon. A semi-colon with nothing
preceding it is also a valid statement, called a null statement.

This is a do-nothing statement that is used where a statement is syntactically


required, but no action is called for.

For Loop

For statement - performs the same functions as a while statement


but uses a different form much easier to use than
while statement especially in a fixed count condition.

Syntax :

for (initializing list; expression; altering list)


statement;

initializing list - consists of a single statement used to set the


starting (initial value) of a counter

expression - contains the maximum or minimum value the


counter can have and determines when the
loop is finished

altering list - provides the increment value that is added to


or subtracted from the counter each time the
loop is executed

Example :

1. for (count = 1; count < 10 ; count + 1


cout << count;
( counter variable is count, initial value assigned is 1, the loop continues as long
as the value of count is less than 10, value of count is incremented by 1 each
time through the loop)

2. for ( i = 5; i <=15 ; i = i + 2)
count << i ;
( counter variable is i, initial value for i is 5, the loop continues as long as i’s
value is less than or equal to 15, and the value of i is incremented by 2)
Sample program29 :

#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;

int main ( )
{
const int MAXCOUNT = 5;
int count;

cout <<”NUMBER SQUARE ROOT\n”;


cout <<”----------- -------------------\n”;

cout << setiosflags (ios ::showpoint);


for (count = 1; count ,= MAXCOUNT; count++)
cout << setw(4) << count
<< setw(15) << sqrt (count) ;

return 0;
}

Output :

NUMBER SQUARE ROOT


------------- ----------------------
1 1.00000
2 1.414214
3 1.732051
4 2.000000
5 2.236068
Sample program30:

#include <iostream>
using namespace std;

int main ( )

{
int count;

for ( count = 2 ; count <= 20; count = count +2)


cout << count << “ “;

return 0;
}

Three ways in showing sample program30

Sample program30a

#include <iostream>
using namespace std;

int main ( )

int count;

count = 2 ;
for ( ; count <= 20; count = count +2)
cout << count << “ “;

return 0;
}
Sample program30b

#include <iostream>
using namespace std;

int main ( )

int count;

count = 2 ;
for ( ; count <= 20;)

{
cout << count << “ “;
count = count + 2;

return 0;
}

Sample program30c

#include <iostream>
using namespace std;

int main ( )

int count;

for ( count = 2 ; count <= 20; cout << count << “ “, count = count +2);

return 0;
}
enter the
for statement

initializing
statement

expression’s value
evaluate is zero
the tested exit the
expression false condition for statement

expression’s value
is nonzero
( true condition)

execute the
statement
Loop after the
parentheses

execute the
altering
list

For Loop flowchart

go back and retest condition

enter for
statement

expression’s value
is nonzero
for exit for
expression (false condition) statement

expression’s value is nonzero


(true condition)
{
statement 1
through
statement n
}

Simplified for loop flowchart

Sample program31 : Printing a table of numbers 1 to 10

#include <iostream>
#include <iomanip>
using namespace std;

int main ( )
{
const int MAXNUMS = 10;
int num;

cout << “NUMBER SQUARE CUBE\n”


<<”-------------- ------------ ---------\n;

for (num =1; num <= MAXNUMS; num++ )

cout << setw(3) <<num << “ “


<< setw(3) <<num * num << “ “
<< setw(4) <<num * num * num ;
num++;

return 0;
}
Exercises :

1. The expansion of a steel bridge as it is heated to a


final Celsius temperature, TF, from an initial Celsius temperature T0, can be
approximated using the formula

Increase in length = a * L * (TF – T0)

Where a is the coefficient of expansion (which is for steel 11.7e-6) and L is the
length of the bridge at temperature T0 . Using this formula, write a program that
displays a table of expansion lengths for a steel bridge that is 7365 meters long
at 0 degrees Celsius, as the temperature increases to 40 degrees in a 5 degree
increment.

2. Write a program that displays a table of 20


temperatures converting from Fahrenheit to Celsius. The table should start with
a Fahrenheit to Celsius. The table should start with a Fahrenheit value of 20
degrees and be incremented in values of 4 degrees.

Celsius = (5.0 / 9.0) * (Fahrenheit – 32)


Loop Programming Technique

1. Interactive Input within a Loop

Sample Program32 : this program calculates the average of MAXCOUNT user-


entered numbers

#include <iostream>
using namespace std;

int main ( )

{
const int MAXCOUNT = 4;
int count;
float num, total,average;

total = 0.0; // initialized to zero

for (count = 0; count < MAXCOUNT; count++)


{
cout << “Enter a number: “;
cin >> num;
total = total + num;
}

average = total / MAXCOUNT;


cout << “The average of the data entered is “
<< average;

return 0;
}

2. Selection within a Loop


Sample Program33 : this program computes the positive and negative sums of
a set of MAXNUMS user entered numbers

#include <iostream>
using namespace std;

int main ( )

{
const int MAXNUMS = 5;
int i ;
float usenum, postot, negtot;
postot = 0;
negtot = 0;

for ( i = 1; i <= MAXNUMS; i++)

{
cout << “Enter a number [positive or negative] : “;
cin >> usenum;

if (usenum > 0)
postot = postot + usenum;
else
negtot = negtot + usenum;
}

cout << “The positive total is “ << postot;


cout << “The negative total is “ << negtot;

return 0;

}
Sample program 33: Evaluating Functions of One Variable

We want to know the value of y = 10x2 + 3x – 2


for x between 2 and 6

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

int main ( )
{
int x, y ;

cout << “x value y value\n”


<< “--------- ------------“ ;
for ( x = 2; x <= 6; ++x)
{
y = 10 * pow(x, 2) + 3 * x – 2 ;
cout << setw (4) << x
<< setw (11) << y;
}

return 0;
}

Sample Program34:

// any equation with one unknown can be evaluated using a single for or an
equivalent while loop, using an integer.
// specifying a noninteger increment, solutions for fractional values

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

int main ( )
{
float x, y ;

cout << “x value y value\n”


<< “--------- ------------“ ;
cout << setiosflags (ios: : fixed)
<< setiosflags (ios: : showpoint)
<< setprecision (6);

for ( x = 2.0; x <= 6.0; x = x + 0.5)


{
y = 10.0 * pow(x, 2.0) + 3.0 * x – 2.0 ;
cout << setw (7) << x
<< setw (14) << y;
}

return 0;
}

3. Interactive Loop Control

Values used to control a loop may be set using variables rather than constant
values.

i = 5;
j = 10;
k = 1;

for (count = i ; count <= j ; count = count + k)

produce the same effect as the single statement

for (count = 5 ; count <= 10 ; count = count + 1)

Sample Program35:
#include <iostream>
#include <iomanip>
using namespace std;

int main ( )
{
int num, final;

cout << “Enter the final number for the table: “;


cin >> final;

cout << “NUMBER SQUARE CUBE\n”;


cout <<”-------------- ------------ ---------\n;
for (num = 1; num <=final; num++)
cout << setw(3) <<num
<< setw(3) <<num * num
<< setw(7) <<num * num * ;

return 0;
}

Exercises :

1. Produce a table for y values

y = 3x5 – 2x3 + x
for x between 5 and 10 in increments of 0.2

2. Write a program that accepts individual values of gallons, one at a time,


and converts each value entered to its liter equivalent before the next
value is requested. Use a for loop in your program. 3.785 liters in one
gallon.

3. Write a program that selects and displays the maximum value of five
numbers that are to be entered when the program is executed. (use a for loop
with both a cin and if statement internal to the loop)
Nested Loops

- loops contained within another loop

Example :

for (a = 1; a <=5; a++)


{
cout << “\n a is now “ << a

for (j = 1; j <= 4; j++)


cout << “ j = “ << j;
}

 first loop controlled by the value of a is the outer loop


 second loop controlled by j is the inner loop

Output :
a is now 1
j=1 j=2 j=3 j=4
a is now 2
j=1 j=2 j=3 j=4
a is now 3
j=1 j=2 j=3 j=4
a is now 4
j=1 j=2 j=3 j=4
a is now 5
j=1 j=2 j=3 j=4

Sample Program36

#include <iostream>
using namespace std;

int main ( )
{
const int MAXA = 5;
const int MAXJ = 4;
int a, j;

for (a = 1; a <=5; a++)


{
cout << “\n a is now “ << a

for (j = 1; j <= 4; j++)


cout << “ j = “ << j;
}
return 0;
}

Sample Program37

#include <iostream>
using namespace std;

int main ( )
{
const int NUMGRADES = 4;
const int NUMSTUDENTS = 20;
int x , y ;
float grade, total, average;

for ( x = 1; x <= NUMSTUDENTS ; x++)


{
total = 0;
for ( y = 1 ; y NUMGRADES <= ; y++)

{
cout << “ Enter an exam grade for this student: “ ;
cin >> grade;
total = total + grade;
}
average = total / NUMGRADES ;
cout << “\n The average for student “ << x
<< “ is “ << average << “\n\n”;
}

return 0;
}

Exercises :

1. Four experiments are performed, each experiment consisting of six test


results.
The results for each experiment are given below. Write a program using a nested loop
to compute and display the average of the test results for each experiments.

1st experiment results : 23.2 31 16.9 27 25.4 28.6


2nd experiment results : 34.8 45.2 27.9 36.8 33.4 39.4
3rd experiment results : 19.4 16.8 10.2 20.8 18.9 13.4
4th experiment results : 36.9 39 49.2 45.1 42.7 50.6
2. An electrical manufacturer tests five generators by measuring their output voltages at
three different times. Write a C++ program that uses a nested loop to enter each
generator’s test results then computes and displays the average voltage for each
generator. Assume the following generator test results:

1st generator : 122.5 122.7 123.0 4th generator : 122.9 123.8 126.7
2nd generator : 120.2 127.0 125.1 5th generator : 121.5 124.7 122.6
3rd generator : 121.7 124.9 126.0
do while Loops

- referred to exit-controlled loops


- continues iterations through the loop while the condition is true and exits
the loop when the condition is false.
- checks its condition at the bottom of the loop
- will execute at least once

previous
statement

do loop
statement

is Yes
the condition
true ?

No

next
statement

do while structure

General form :

do
statement ;
while (expression) ;
Sample Program35:

#include<iostream>
#include <iomanip.h>
using namespace std;

int main ( )
{
int count;

count = 0;
do
{
count = count + 1;
cout << count << endl;

} while (count < 5);

cout << setw(10) << “All Done” << endl;


return 0;
}

Sample Program36:

#include<iostream>
using namespace std;

int main ( )
{
int price, salestax, RATE;
do
{
cout << “\nEnter a price : “;
cin >> price ;
cout<<”Enter rate: \n”;
cin>>RATE;

if (abs(price – SENTINEL) < 0.0001)


break;
salestax = RATE * price;
cout << setiosflags ( ios : : showpoint)
<< setprecision (2)
<< “The sales tax is $ “ << salestax;
}
while (price != SENTINEL);

return 0;
}

Sample Program37:

#include<iostream>
using namespace std;

int main ( )
{
char selection;

do
{
cout <<”Which of the following recipes do you wish to see? \n”;
cout <<” (1)Tacos\n”;
cout <<” (2)Jambalaya\n”;
cout <<” (3)Gumbo\n”;
cout <<” (4)Quit ”;
cout <<” Enter the first letter and press<Enter>: ”;
cin >> selection;
} while( selection < ‘1’ || selection >’4’ );

switch (selection) {

case ‘ 1 ’ :
cout << “Tacos”;
break;
case ‘ 2 ‘ :
cout << “Jambalaya ”;
break;
case ‘ 3 ‘ :
cout<< “Gumbo “ ;
break;
case ‘ 4 ‘ :
cout << “Goodbye” ;
}
return 0;
}
Validity Checks

The do statement is particularly useful in filtering user-entered input and


providing data validation checks.

Example : (Assume that an operator is required to enter a valid customer identification


number between 1000 to 1999. A number outside this range is rejected)

do

{
cout << “\nEnter an identification number: “;
cin >> id_num;
}
while ( id_num < 1000 || id_num > 1999);

// A request for an identification number is repeated until a valid number is entered. This
section of code is “bare bones” in that it neither alerts the operator to the cause of the
new request for data nor allows premature exit from the loop if a valid identification
number is found. //

Sample Program38:
#include<iostream>
using namespace std;

int main()
{
int id_num;

do
{
cout << "\nEnter an identification number: ";
cin >> id_num;

if (id_num < 1000 || id_num > 1999)


{
cout << "An invalid number was just entered\n";
cout << "Please check the ID number and re-enter\n";
}
else
break ; // break if a valid id num is entered
} while (1); // this expression is always true
return 0;
}

Exercises :

1. Write a program that continuously requests a grade to be entered. If the grade is less
than 0 or greater than 100, your program should print an appropriate message informing
the user that an invalid grade has been entered, else the grade should be added to a
total. When a grade of 999 is entered the program should exit the repetition loop and
display the average of the valid grades entered.

2. Write a program that requires the use of Menu to give the user a choice of options.
The menu should display the following :

1. If – else
2. Switch
3. For
4. While
5. Do – while

and an invalid message would be displayed if the choice entered is not in the selection.
For every choice of the user, for example If- else, a syntax of the selected statement will
be displayed.
3. Displays an item’s specification corresponding to a letter input. The following
letter codes are used :

Specification status Input Code


Space exploration S
Military Grade M
Commercial Grade C
Toy Grade T

Use do - while statement and switch.

4. Print a positive number and then print the successive values where each value is 0.5
less than the previous value. The list should continue as long as values to be printed is
positive.

5. Print a list f squares of positive integers as long as the difference between


consecutive squares is less than 50.
ARRAYS

Arrays - is a structure consisting of a fixed number of components with


each component of the same type
Characteristics
a. name
b. component type
c. indices of the first and last components

Two types of Arrays

1. One-Dimensional Array - also referred to as a single-dimensional array or a


vector
- is a list of related values with the same data type
that is stored using a single group name(referred
to as array name)

Example : list of temperatures

Temperature
95.75
83.0
97.625
72.5
86.25
All temperature in a list are floating-point numbers, however the list can be
declared as a single unit and stored under a common variable name called the array
name

Declaration statement : float temp [5]

data type array name [number of items]

Good programming practice requires defining the number-of-items in the array as a


constant before declaring the array.

Declaring with the use of two statement :


const int NUMELS = 5; // define a constant for the number of items
float temp [NUMELS]; // declare the array

Examples:
const int NUMELS = 6; each array is allocated sufficient
int volts [NUMELS]; memory to hold the number of
data items given in the declaration
const int ARRAYSIZE = 4; statement; thus the array named
char code [ARRAYSIZE]; volts has storage reserved for 6 int
Illustrated Storage reserved :

Enough storage for


six integers

volts an an an an an an
array integer integer integer integer integer integer

element or component - item in an array


- are stored sequentially

Index or subscript - element’s position

First element of an array has an index of 0, second 1, and so on.

Example : float temp [5]

temp [0] refers to the first temperature stored in the temp array
temp [1] second temperature stored
temp [2] third temperature stored
temp [3] fourth temperature stored
temp [4] fifth temperature stored

Illustrated temp array in Memory

temp [0] temp [1] temp [2] temp [3] temp [4]

temp
array
element 0 element 1 element 2 element 3 element 4

temp [0], is read as “temp sub zero” (shortened for temp array subscripted by zero)

the array name temp identifies


the starting location of the array
temp [0] temp [1] temp [2] temp [3] temp [4]

element 3 start here


skip over 3 elements to get to the starting location of element3
Accessing An individual Array Element – element 3

Example : Subscripted Variables (using the elements of the temp array)

temp [0] = 95.95;


temp [1] = temp [0] – 11.0;
temp [2] = 5.0 * temp [0];
temp [3] = 79.0;
temp [4] = (temp [1] + temp [2] – 3.1) / 2.2;
sum = temp [0] + temp [1] + temp [2] + temp [3] + temp [4];

Example of Array’s subscript not an integer constant :

Assuming that i and j are int variables;


temp [i]
temp [2* i]
temp [j – i]

Advantage of using integer expression as subscript is that it allows sequencing through an


array by using a loop.

Statements like : sum = temp [0] + temp [1] + temp [2] + temp [3] + temp [4]; is
unnecessary.

Can be replaced by a for loop :

sum = 0; // initialize sum to zero


for ( i = 0; i < 5; ++i)
sum = sum + temp [i]; // add in a temperature

i is used both as a counter in the for loop and as a subscript.

for loop is advantageous to sequence through an array when working with larger arrays.

Example : Assume that we want to locate the maximum value in an array of 1000
elements
const int NUMELS = 1000;

maximum = volts[0]; // set the maximum to element zero


for (i = 1; i < NUMELS; i++) // cycle through the rest of the array
if ( volts[i] > maximum) // compare each element to the maximum
maximum = volts[i]; // capture the new high value

Input and Output of Array Values

Individual array elements can be assigned values interactively using a cin stream object.
Examples :
cin >> temp [0]; // single value will be read and stored in temp [0] variable
cin >> temp [1] >> temp[2] >> temp[3];
cin >> temp [4] >> volts [6];

Using the for loop to cycle through the array for interactive data :

const int NUMELS = 5;

for ( i = 0; i < NUMELS; i++)


{
cout << “enter a temperature: “ ;
cin >> temp [i];
}

Caution for storing data in an array : C++ does not check the value of the index being
used ( called bounds check).

Example : If an array has been declared consisting of 10 elements and you use 12
index which is outside the bounds of an array, C++ will notify the error
when the program is compiled.

Sample Program38 : Displaying temperature values with the index


#include <iostream>
uing namespace std;

int main( )
{
const int MAXTEMPS = 5;
int x, temp [MAXTEMPS];

for ( x = 0 ; x < MAXTEMPS; x++)


{
cout << “Enter a temperature: “;
cin >> temp [x];
}
cout << endl;

for ( x = 0 ; x < MAXTEMPS; x++)


cout << “temperature “ << x << “ is “ << temp [x] <<endl;

return 0;
}

Sample Program39: Displaying temperature values entered and the total.

#include <iostream>
using namespace std;
int main( )
{
const int MAXTEMPS = 5;
int x, temp [MAXTEMPS] , total = 0 ;

for ( x = 0 ; x < MAXTEMPS; x++) // Enter the temperatures


{
cout << “Enter a temperature: “;
cin >> temp [x];
}
cout << “\n The total temperatures “ ;

for ( x = 0 ; x < MAXTEMPS; x++) // Display and total the temperatures


{
cout << “ “ << temp [x] ;
total = total + temp [x];
}

cout << “ is “ << total << endl;


return 0;
}

Exercises :

1. Write a program to input eight integer numbers into an array named temp. As each
number is entered, add the numbers into a total. After all numbers are entered, display
the numbers and their average.

2. Write a program to input the following values into an array named volts: 10.95, 16.32,
12.15, 8.22, 15.98, 26.22, 13.54, 6.45, 17.59. After the data has been entered, have
your program output the values.
3. Write a program to input the following integer numbers into an array named grades :
89, 95, 72, 83, 99, 54, 86, 99, 54, 86, 75, 92, 73, 79, 75, 82, 73. As each number is
entered, add the numbers to a total. After all numbers are entered and the total is
obtained, calculate the average of the numbers and use the average to determine the
deviation of each value from the average. Store each deviation in an array named
deviation. Each deviation is obtained as the element value less the average of the data.
Have your program display alongside its corresponding element from the grades array.

Array Initialization

Array elements can be initialized within their declaration statements, the initializing
elements must be included in braces.

Examples :

int temp [5] = { 98, 87, 92, 79, 85};


char codes [6] = { ‘s’, ‘a’ , ‘m’ , ‘p’ , ‘l’ , ‘e’};
double slopes [7] = {10.96, 6.43, 2.58, .86, 5.89, 7.56, 8.22};

Initializers are applied in the order they are written, with the first value used to initialize
element 0, second value used to initialize element 1, until all values have been used.

Initializing values may extend across multiple lines.

Example :
int gallons[20] = {19, 16, 14, 19, 20, 18,
12, 10, 22, 15, 18, 17,
16, 14, 23, 19, 15, 18,
21, 5};
A unique feature of initializers is that the size of the array may be omitted when
initializing values are included in the declaration statement.

Example :
int gallons [] = {16, 12, 10, 14, 11};

char codes [6] = {‘s’, ‘a’, ‘m’, ‘p’, ‘l’, ‘e’};


char codes [] = {‘s’, ‘a’, ‘m’, ‘p’, ‘l’, ‘e’};

Useful simplification when initializing characters in arrays.

char codes [] = “sample”;

This last declaration creates an array having seven elements and fills the array with the
seven characters :
Codes [ 0 ] [ 1 ] [2] [3] [4] [5] [6]

s a m p l e \0

String terminated by a special sentinel

Null character - this character has an internal storage code that is


numerically equal to zero ( storage code for the zero
character has a decimal value of 48, so the two cannot
be confused by the computer), and is used as a marker or
sentinel to mark the end of the string.

Sample Program40: Displaying the maximum value.

#include <iostream>
using namespace std;

int main( )
{
const int MAXELS = 5;
int x, max, nums [MAXELS] = {2, 18, 1, 27, 16} ;

max = nums [0] ;

for ( x = 1 ; x < MAXELS; x++)


if (max < nums[x] )
max = nums [x];

cout << “ The maximum value is “ << max << endl;


return 0;
}

Exercises :

1. Write a program that uses an array declaration statement to initialize the following
numbers in an array named slope : 17.24, 25.63, 5.94, 33.92, 3.71, 32.84, 35.93, 18.24,
6.92. Your program should locate and display both the maximum and minimum values of
the array.

2. Write a declaration to store the string “This is a test” into an array named strtest.
Include the declaration in a program to display the message using the following loop:
for ( x = 0; x < NUMDISPLAY; x++)
cout << strtest [x];

where NUMDISPLAY is a named constant for the number 15.

Declaring and Processing Two-Dimensional Arrays

Two-dimensional array
- sometimes referred to as a table, consists of both rows and column of
elements.

Example : 8 16 9 52 two-dimensional array of


3 15 2 6 integers (consists of three rows
14 25 2 10 and four columns)

To reserve storage for this array, both the number of rows and columns must
be included in the array declaration.

Calling the array val the correct specification is int val [3][4];

Sample declarations :

float volts [10] [5];


char code [6] [26];

Rows and Column position of an Array

Col 0 Col 1 Col 2 Col 3

Row 0 8 16 9 52
Row 1 3 15 2 6 val [1] [3]
Row 2 14 25 2 10
Row Column
position position

To locate each element in a two-dimensional array, an element is identified by its position


in the array.

val [1] [3] - identifies the element in row 1, column 3

Examples :
watts = val [2] [3];
val [0] [0] = 62;
newnum = 4 * (val [1] [0] – 5 );
sumRow0 = val[0][0] + val [0][1] + val [0][2] + val [0][3];

Two-dimensional array can be initialized from within their declaration statement :

int val [3][4] = { { 8, 16, 9, 52}, the set of braces specifies


{3, 15, 27, 6}, the row location of the array
{14, 25, 2, 10}};
Can be initialize also by omitting the inner braces :

int val [3][4] = { 8, 16, 9, 52,


3, 15, 27, 6,
14, 25, 2, 10 };

The separation of initial values into rows in the declaration statement is not necessary
since the compiler assigns values beginning with [0][0] element and proceeds row by row
to fill in the remaining values.

Example : int val [3][4] = { 8, 16, 9, 52, 3, 15, 27, 6, 14, 25, 2, 10 };

This is equally valid but does not illustrate to the programmer where one row ends and
another begins.

Storage and initialization of the val [ ] array

val[0][0] = 8 val [0][1] = 16 val [0][2] = 9 val [0][3]= 52

val[1][0] = 3 val [1][1] = 15 val [1][2] = 27 val [1][3]= 6

val[2][0] = 14 val [2][1] = 25 val [2][2] = 2 val [2][3]= 10

Sample Program41: Displaying arrays in two techniques (by explicitly designating


each array element) and (by nested for loop).

#include <iostream>
#include <iomanip>
using namespace std;
int main ( )
{
const int NUMROWS = 3;
const int NUMCOLS = 4;

int i, j;
int val [NUMROWS][NUMCOLS] = { 8, 16, 9, 52, 3, 15, 27, 6, 14, 25, 2, 10 };

cout << “\nDisplay of val array by explicit element”


<< ‘\n’ << setw(4) << val[0][0] << setw(4) << val[0][1]
<< setw(4) << val[0][2] << setw(4) << val[0][3]
<< ‘\n’ << setw(4) << val[1][0] << setw(4) << val[1][1]
<< setw(4) << val[1][2] << setw(4) << val[1][3]
<< ‘\n’ << setw(4) << val[2][0] << setw(4) << val[2][1]
<< setw(4) << val[2][2] << setw(4) << val[2][3];

cout << “\n\nDisplay of val array using a nested for loop”;

for ( i = 0; i < NUMROWS; i++) // controls the outer loop


{
cout << ‘\n’;
for ( j = 0; j < NUMROWS; j++) // controls the inner loop
cout << setw(4) << val[ i ][ j ];
}

cout << endl;

return 0;
}

** each pass through the outer loop corresponds to a single row, with the inner loop
supplying the appropriate column elements.**

Sample Program42 : Nested for loop used to multiply each element in the val array by
the scalar number 10 and display the resulting value.

#include <iostream>
#include <iomanip>
using namespace std;

int main ( )
{

const int NUMROWS = 3;


const int NUMCOLS = 4;
int i, j;
int val [NUMROWS][NUMCOLS] = { 8, 16, 9, 52,
3, 15, 27, 6,
14, 25, 2, 10 };

//multiply each element by 10 and display it


cout << “\nDisplay of multiplied elements” ;
for ( i = 0; i < NUMROWS; i++)
{
cout << endl;
for ( j = 0; j < NUMROWS; j++)
{
val [ i ] [ j ] = val [ i ] [ j ] * 10;
cout << setw(5) << val [ i ] [ j ] ;
}
}
cout << endl;

return 0;
}

Larger Dimensional Array

Although arrays with more than two dimensions are not commonly used, C++
does allow any number of dimensions be declared. This is done by listing the maximum
size of all dimensions for the array.

Example : int response [4][10][6]; declares a three dimensional array

The first element in the array is designated as response [0][0][0]


and the last element as response [3][9][5]

Three dimensional can be viewed as a book of data tables. The first index can be thought
of as the location of the desired row in a table; second index as the desired column; and
the third index, which is often called the rank, as the page number of the selected table.

Exercises :

1. Write a C++ program that adds the values of all elements in the val array used in
sample program13 and displays the total.

2. Write a C++ program that adds equivalent elements of the two dimensional arrays
named First and Second. Both arrays should have two rows and three columns. For
example, element[1][2] of the resulting array should be the sum of First [1][2] and
Second [1][2]. The first and second arrays should be initialized as follows.

First Second
16 18 23 24 52 77
54 91 11 16 19 59

MODULARITY USING FUNCTIONS


A. Function and Parameter Declarations
In creating C++ functions we must be concerned with both the function itself and how it
interacts with other functions, such as main(). This includes correctly passing data into a
function when it is called and in returning values from a function. (Interface)

Parts of the interface :


1. Passing data to a function
2. having the function correctly receive, store, and process the transmitted data

Example :

mathematical functions – a function is called, or used, by giving the function’s name and
passing any data to it, as arguments, in the parentheses.

Function-name (data passed to function)

This identifies the This passes data


called function to the function

Calling and Passing data to a Function

 The called function must be able to accept the data passed to it by the function
doing the calling
 Only after the called function successfully receives the data can the data be
manipulated to produce a useful result

Process of Sending and Receiving Data

Sample Program43:

#include <iostream>
using namespace std;

void Findmax (int, int) ; // the function declaration (prototype)

int main ( )

{
int firstnum, secnum;
cout << “\n Enter a numer: “;
cin >> firstnum;
cout << “great ! Please enter a second number: “;
cin >> secnum;

findmax(firstnum, secnum); // the function is called here

return 0;
}

Diagnostics of the Sample program :

Findmax () - is written to accept the data passed to it and determine the


maximum value of the two passed values.
- referred to as the called function, since it is called or summoned
into action by its reference in main ( ).
Called function – is declared as the function that expects to receive two integer
numbers and to return no value ( a void) to main ( ). Referred as function prototype

Main ( ) - is the function that does the calling, referred to as calling


function.

Function Prototypes
- declaration statement for a function ( before a function is called, it must
be declared to the function that will do the calling)
- tells the calling function the type of value that will be formally
returned, if any, and the data type and order of the values that the
calling function should transmit to the called function.

General form : return-data-type function-name (list of argument data types);

Examples : void Findmax (int, int);


int fmax (int, int);
float swap(int, char, char, double);
void display (double, double);

fmax ( ) declares that this function expects to receive two integer arguments and
will formally return an integer value

swap ( ) declares that this function requires four arguments consisting of an


integer, two characters, and a double precision argument, in this order
and will return a floating-point number.

display ( ) declares that this function requires two double precision arguments and
does not return any value and such a function might be used to display
results of a computation directly, without returning any value to the called
function.

Tasks of function prototypes :


1. Permits error checking of data types by the compiler
2. it ensures conversion of all arguments passed to the function to the declared
argument data type when the function is called.

Calling a function

- only requirements are that the name of the function be used and that any
data passed to the function be enclosed within the parentheses following
the function name using the order and type as declared in the function
prototype.
Arguments - are items enclosed within the parentheses.

FindMax ( firstnum, secnum )

This identifies the This causes two values


FindMax ( ) to be passed to
function FindMax ( )

Illustration : Example : FindMax receives actual values

ststored in firstnum
the variable
get the value

a value firstnum

stored in secnum
a value the variable
secnum
get the value

Findmax ( firstnum , secnum) ;

Send the Send the


value to value to
FindMax ( ) FindMax ( )

Defining a Function

- a function is defined when it is written


- each function is defined once in a program and can then be used by any
other function in the program that suitably declares it.

Like the main ( ) function, every C++ consist of two parts ;

a. function header - to identify the data type of the value returned by


the function
- provide the function with name
- specify the number, order and type of arguments
expected by the function
b. function body - to operate on the passed data
- directly return, at most, one value back to the
calling function
General format :

function header line Function header

{
constant and
variable declarations; Function body
any other C++ statements;
}

Example :
void FindMax ( int x, int y) no semicolon [header line]

argument names - referred to as formal parameters

x – will be used to store the first value passed to FindMax ()


y – will be used to store the second value passed at the time of the function call

The first part of the call procedure executed by the computer involves going to the
variables firstnum and secnum and retrieving the stored values. These values are then
passed to FindMax ( ) and ultimately stored in the parameter x and y.

Storing values into parameters

FindMax ( firstnum, secnum ); This statement


Calls FindMax ( )
The values The value
in in
firstnum secnum
is passed is passed

FindMax ( )
the the
parameter parameter
named x named y

Structure of a function body

named constant decalarations,


variable declarations, and
other C++ statements

Example : Complete function definition for FindMax ( ) function ;

Void FindMax (int x, int y)


{ // start of function body
int maxnum ; // variable declaration

if (x >= y) // find the maximum number


maxnum = x;
else
maxnum = y;

cout << “\The maximum of the two numbers is “


<< maxnum;
} // end of function body and end of function

Sample Program44 :

#include <iostream>
using namespace std;

void FindMax (int, int) ; // the function prototype

int main ( ) // driver function

{
int firstnum, secnum;

cout << “\n Enter a numer: “;


cin >> firstnum;
cout << “great ! Please enter a second number: “;
cin >> secnum;

FindMax(firstnum, secnum); // the function is called here

return 0;
}
// following is the function FindMax ()

void FindMax (int x, int y)


{ // start of function body
int maxnum ; // variable declaration

if (x >= y) // find the maximum number


maxnum = x;
else
maxnum = y;

cout << “\The maximum of the two numbers is “


<< maxnum;

return;
} // end of function body and end of function

Sample Output :

Enter a number : 25
Great! Please enter a second number : 5

The maximum of the two numbers is 25

Placement Statements

preprocessor directives

function prototypes

int main ( )

named constants
variable declarations

other executable statements


return value

function definitions

Function Stubs

Stub - is the beginning of a final function that can be used as a placeholder for
the final unit until the unit is completed
- “fake” function.

Sample Program44a :

#include <iostream>
using namespace std;

void FindMax (int, int) ; // the function declaration (prototype)

int main ( )

{
int firstnum, secnum;

cout << “\n Enter a numer: “;


cin >> firstnum;
cout << “great ! Please enter a second number: “;
cin >> secnum;

FindMax(firstnum, secnum); // the function is called here

return 0;
}

void FindMax(int x, int y)


{
cout << "In FindMax()\n";
cout << "The value of x is "<<x <<"\n"; stub for FindMax ( to obtain an
cout << "The value of y is "<<y; executable program )
getch ();
return;
}

Functions with Empty Parameter Lists

The function prototype for such function requires either writing the keyword void
or nothing at all between the parentheses following the function’s name.
Example : int display ();

Int display (void)

display () takes no parameters and returns an integer. A function with an empty


parameter list is called by its name with nothing written within the required parentheses
following the function’s name.

Default Arguments
- convenient feature of C++ is its flexibility of providing default arguments in
a function call
- primary use is to extend the parameter list of existing functions without
requiring any change in the calling argument lists already in place within a
program.
- Are listed in the function prototype and are automatically transmitted to
the called function when the corresponding arguments are omitted from
the function call.

Example : void example (int, int = 5, float = 6.78);

Rules in using default parameters :

1. default values should be assigned in the function prototype


2. if any parameter is given, a default value in the function prototype, all parameters
following it must also be supplied with default values.
3. if one argument is omitted in the actual function call, then all arguments to its
right must also be omitted.
4. default value used in the function prototype may be an expression consisting of
both constants and previously declared variables.

Sample Program45 :

Write a function named sqr_it () that computes the square of the value passed to it and
displays the result. The function should be capable of squaring numbers with decimal
points.

#include <iostream>
using namespace std;

void sqr_it(double);

int main()

double first;

cout << “\nEnter a number: “;


cin >> first;
sqr_it (first);

return 0;
}

void sqr_it(double num)


{

cout << “The square of “ << num << “ is ” << (num * num) ;

return ;
}
Exercises :

1. Write a function called mult() that accepts two floating-point numbers as


parameters, multiplies these two numbers, and displays the result.
2. Write a C++ program that returns the fractional part of any user entered number.
For example, if the number 256.879 is entered, the number .879 should be
displayed.
3. Write a function that produces a table of the numbers from 1 to 10, their squares
and their cubes.
Returning A Single Value

Using the method of passing data into a function, the called function only receives
copies of the values contained in the arguments at the time of the call, the passed
argument is referred to as passed by value and is a distinct advantage of C++. Since
the called function does not have direct access to the variables used as arguments by
the calling function, it cannot inadvertently alter the value stored in one of these
variables.

a function can receive many values

only one value can


be directly returned

As with the calling function, directly returning a value requires that the interface between
the called and calling functions be handled correctly. The called function must provide
the following items :

 the data type of the returned value

 the actual value being returned

If FindMax () is now to return a value, the function’s headerline must be amended

Proper header line

int FindMax (int x, int y)

float FindMax (int x, int y)

double FindMax (int x, int y)

To return a value, a function must use a return statement which is in the form
return expression;

To actually use a returned value we must either provide a variable to store the value or
use the value directly in an expression. Storing the returned value in a variable is
accomplished using a standard assignment statement.

max = FindMax(firstnum, secnum);

Calling or receiving side, calling function must

 be alerted to the type of value to expect

 properly use the returned value

Example :

int FindMax (int x, int y)


{ // start of function body
int maxnum ; // variable declaration

if (x >= y) // find the maximum number


maxnum = x;
else
maxnum = y;

cout << “\The maximum of the two numbers is “


<< maxnum;

return maxnum; // return statement


}

Sample Program45 :

#include <iostream>
using namespace std;

int FindMax (int, int) ; // the function prototype

int main ( ) // driver function


{
int firstnum, secnum, maxnum;

cout << “\n Enter a numer: “;


cin >> firstnum;
cout << “great ! Please enter a second number: “;
cin >> secnum;

max = FindMax(firstnum, secnum); // the function is called here

cout << “\nThe maximum of the two numbers is “ <<max;

return 0;
}
// following is the function FindMax ()

int FindMax (int x, int y)


{ // start of function body
int maxnum ; // variable declaration

if (x >= y) // find the maximum number


maxnum = x;
else
maxnum = y;

return maxnum; // return statement


}

Sample Program46 :

#include <iostream>
using namespace std;

double tempvert(double) //function prototype

int main()

const CONVERTS = 4; // number of conversions to be made


int count; // start of declarations
double fahren;

for ( count = 1; count < = CONVERTS ; count ++)

{
cout << “\nEnter a Fahrenheit temperature: “;
cin >> fahren;
cout << “The Celsius equivalent is “
<< tempvert (fahren);
}

return 0;
}

//convert Fahrenheit to Celsius


double tempvert(double in_temp)

return (5.0/9.0) * (in_temp – 32.0);


}

Exercises :

1. Write a C++ function named find_abs ( ) that accepts a double-precision number


passed to it, computes its absolute value, and returns the absolute value to the
calling function. The absolute value of a number is the number itself if the
number is positive and the negative. Use a cout to display the value returned.

2. The surface area, s, of a cylinder is given by the formula

S = 2πrl

where r is the cylinder’s radius and l is its length. Using this formula write a C+
function named surfarea() that accepts the radius and length of a cylinder and
returns its surface. Use a cout statement to display the value returned.
Returning Multiple Values

There are times, when it is necessary for the called function to have direct access to the
variables of its calling function. This allows one function, which is the called function, to
use and change the value of the variables that has been defined in the calling function.
To do this requires that the address of the variable be passed to the called function.
Once the called function has the variable’s address, it “knows where the variable lives”,
and can access and change the value stored there directly.

Passing addresses is referred to as a function pass by reference, since the called


function can reference, or access, the variable whose address has been passed.

Passing and Using Reference Parameters

In exchanging data between two functions we must be concerned with both the sending
and receiving sides;

Sending Side : calling a function and passing an address as an argument that will be
accepted as a reference parameter is exactly the same as calling a function and passing
a value; the called function is summoned into action by giving its name and a list of
arguments.

Example : newval (firstnum, secnum); both calls the function named newval
and passes two arguments to it.

Whether a value or an address is actually passed depends on the parameter types


declared by newval.

Reference Parameter syntax : data-types& reference-name

Example : float& num1;

reference parameter that will be used to store the address


of a float

int& secnum
char& key

& - symbol used within a declaration it refers to “the address of” the
preceding data type

Function header for newval : void newval (float& num1, float& num2)

Function prototype : void newval (float&, float&);

Sample Program47 :

#include <iostream>
using namespace std;

void newval (float&, float&); // prototype with reference parameters

int main()

float firstnum, secnum;

cout << “Enter two numbers: “;


cin >> firstnum >.secnum;
cout << “The value in firstnum is : “ << firstnum;
cout << “The value in secnum is : “ << secnum << “\n\n”;

newval (firstnum, secnum); // call the function

cout << “The value in firstnum is now : “ << firstnum;


cout << “The value in secnum is now : “ << secnum ;

return 0;
}

void newval ( float& xnum, float& ynum)

cout << “The value in xnum is : “ << xnum;


cout << “The value in ynum is : “ << ynum << “\n\n”;

xnum = 89.5;
ynum = 99.5;

return;
}
The Equivalence of arguments and parameters

In main ( ) the values


are referenced as

Firstnum secnum

one value is stored one value is stored

xnum ynum

In newval ( ) the same values


are referenced as

Sample Output :

Enter two numbers : 22.5 33.0

The value in firstnum is : 22.5


The value in secnum is : 33

The value in xnum is : 22.5


The value in ynum is : 33

The value in firstnum is now: 89.5


The value in secnum is now: 99.5

The values initially displayed for the parameters xnum and ynum are the same as those
displayed for the arguments firstnum and secnum.

Since xnum and ynum are reference parameters, however,newval () now has direct
access to the arguments firstnum and secnum.
Thus any change to xnum and ynum within newval () directly alters the value for firstnum
and secnum in main( )

Sample Program48 :

#include <iostream>
using namespace std;

void calc(float, float, float, float&, float&);

int main()
{

float firstnum, secnum, thirdnum, sum, product;

cout << “Enter three numbers : “;


cin >> firstnum >> secnum >> thirdnum;

calc ( firstnum, secnum, thirdnum, sum, product); // function call

cout << “\nThe sum of the numbers is : “ << sum;


cout << “\nThe product of the numbers is : “ << product;

return 0;
}

void calc ( float num1, float num2, float num3, float& total, float& product)

{
total = num1 + num2 + num3;
product = num1 * num2 * num3;
return;
}

Relationship between argument and parameter names

argument names used in main ( )

firstnum secnum thirdnum


sum product
2.5 6.0 10.0

main()
A value is passed 18.5 150.0
calc( )

2.5 6.0 10.0 total product

num1 num2 num3

parameter names used in calc ( )


Sample Output :

Enter three numbers : 2.5 6.0 10.0

The sum of the entered numbers is : 18.5


The product of the entered numbers is : 150

Example illustrating the usefulness of passing references to called function :

swap () - exchanges the values of two main ( )’s floating-point


variables.
- useful when sorting a list of numbers

The desired exchange of main ( )’s variables by swap ( ) can only be obtained by giving
swap () access to main’s variables, by reference parameters.

Exchanging values in two variables is accomplished using three-step exchange


algorithm:

1. Store the first parameter’s value in a temporary location

temp num1 num2

2. Store the second parameter’s value in the first variable

temp num1 num2

3. Store the temporary value in the second parameter

temp num1 num2


void swap( float& num1, float& num2)
{
float temp;

temp = num1; //save num1’s value


num1 = num2; // store num2’s value in num1
num2 = temp // change num2’s value
return;
}
Sample Program49:

#include <iostream>
using namespace std;

void swap(float&, float&); //function receives 2 references

int main()
{

float firstnum = 20.5 , secnum = 6.25 ;

cout << “The value stored in firstnum is : “ << firstsum;


cout << “The value stored in secnum is : “ << secnum << “\n\n” ;

swap ( firstnum, secnum); // call the function with references

cout << “The value stored in firstnum is now : “ << firstnum;


cout << “The value stored in secnum is now : “ << secnum ;

return 0;
}

void swap ( float& num1, float& num2)

float temp;

temp = num1; //save num1’s value


num1 = num2; // store num2’s value in num1
num2 = temp // change num2’s value

return;
}

Output :
The value stored in firstnum is : 20.5
The value stored in secnum is : 6.25

The value stored in firstnum is now : 6.25


The value stored in secnum is now : 20.5

Cautions in using Reference arguments :

1. reference arguments must be variables (that is, they cannot be used to change
constants)
2. a function call itself gives no indication that the called function will be using
reference arguments

Exercises :

1. Write a function named time ( ) that has an integer parameter named seconds
and three integer reference parameters named hours, min and sec. The function
is to convert the passed number of seconds into an equivalent number of hours,
minutes, and seconds. Using the references function should directly alter the
respective arguments in the calling function.

2. Write a function named change ( ) that has integer parameter and six integer
reference parameters named hundreds, fifties, twenties, tens, fives and ones
respectively. The function is to consider the passed integer value as a dollar
amount and convert the value into the fewest number of equivalent bills. Using
references the function should directly alter the respective arguments in the
calling function.
Arrays As Arguments

Individual arrays elements are passed to a called function in the same manner as
individual scalar variables; they are simply included as subscripted variables when the
function call is made.

Example:

find_min(volts[2], volts[6] ); - passes the values of the elements


volts[2] and volts[6] to the function
find_min

- the called function receives access


to the actual array, rather than a
copy of the values in the array.

Duplication of copies of array for each function call would be wasteful of memory storage
and would frustrate the effort to return multiple element changes made by the called
program.(recall that a function returns at most one direct value). To avoid these
problems, the called function is given direct access to the original array.

Example :

int nums[5];
char keys [256];
double volts[500], current [500];

for these arrays, the following function calls can be made :

find_max(nums);
find_ch(keys);
calc_tot(nums, volts, current);

on the receiving side, the called function must be alerted that an array is being made
available.

Example : suitable function header lines


int find_max(int vals[5] )
char find_ch(char in_keys[256] )
void calc_tot(int arr1[5], double arr2[500], double arr3[500] )

Sample Program50:

#include <iostream>
using namespace std;

const int MAXELS = 5;


int find_max(int [MAXELS] ); // function prototype

int main ( )
{

int nums[MAXELS] = { 2, 18, 1, 27, 16};

cout << “The maximum value is “ << find_max(nums) << endl;

return 0;
}

// find the maximum value


int find_max( int vals[MAXELS] )
{
int i, max = vals[0];
for ( i = 1; i < MAXELS; i++)
if (max < vals[i] ) max = vals[i];

return max;
}

All the find_max( ) must know is that the parameter vals references an array of integers.
Since the array has been created in main ( ) and no additional storage spaces is needed
in find_max ( ), the declarations for vals can omit the size of the array.

int find_max (int vals [ ] )

Since only the starting address of vals is passed to find_max, the number of elements in
the aaray need not be included in the declaration for vals.
// find the maximum value
int find_max( int vals[ ], int num_els)
{
int i, max = vals[0];
for ( i = 1; i < num_els; i++)
if (max < vals[i] )
max = vals[i];

return max;
}

Sample Program51:

#include <iostream>
using namespace std;

int find_max(int [ ], int ); // function prototype

int main ( )
{
const int MAXELS = 5;
int nums[MAXELS] = { 2, 18, 1, 27, 16};

cout << “The maximum value is “


<< find_max(nums, MAXELS) << endl;

return 0;
}

// find the maximum value


int find_max( int vals[ ], int num_els)
{
int i, max = vals[0];
for ( i = 1; i < num_els; i++)
if (max < vals[i] ) max = vals[i];

return max;
}

Passing two-dimensional arrays into a function is a process identical to passing single-


dimensional arrays. The called function receives access to the entire array.

Example :
int test [7][9];
float factors [26][10];
double thrusts [256][52];

then the following function calls are valid :


find_max (test);
obtain (factors);
average (thrusts);

on the receiving side :


int find_max(int nums[7][9] )
int obtain(float values [26][10] )
int average (double vals[256][52] )

Sample program52: Passing Two-Dimensional array into a function that displays the
array values.

#include<iostream>
#include<iomanip>
using namespace std;

const int ROWS = 3;


const int COLS = 4;
void display (int [ROWS][COLS] ); //function prototype

int main ( )
{
int val [ROWS][COLS] = { 8, 16, 9, 52,
3, 15, 27, 6,
14, 25, 2, 10 };

display (val);

return 0;
}

void display (int nums[ROWS][COLS] )


{
int row_num, col_num;
for (row_num = 0; row_num < ROWS; row_num++)
{
for (col_num = 0; col_num < COLS; col_num++)
cout << setw(4) << nums[row_num][col_num];
cout << endl;
}
return;
}

Exercise :
1. Write a program that has a declaration in main ( ) to store the following numbers into
an array named temps: 6.5, 7.2, 7.5, 8.3, 8.6, 9.4, 9.6, 9.8, 10.0. There should be a
function call to show ( ) that accepts the temps array as a parameter named temps and
then displays the numbers in the array.

You might also like