- 87 Views
- Uploaded on
- Presentation posted in: General

Fundamental Programming

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Fundamental Programming

Data Processing and Expressions

Fundamental Programming 310201

- this week we are starting to:
- developing familiarity with the C++ language
- developing skill in software development (in lab)
- providing an introduction to some fundamental programming concepts

- in the last class we started to look at some C++ syntax â€“ the grammar rules
- today we look at some fundamental concepts common to all programming languages

Fundamental Programming 310201

- a program performs a sequence of input, output and assignment statements
- selection and repetitionstatements control which of the programâ€™s input, outputand assignment statements are performed
- selection(if-then-else) statements provide alternate pathways through the program
- repetition(while) statements control the number of times a blockof statements is performed

Fundamental Programming 310201

- we said that computers are data processing devices â€“ they convert input data into output data
- where does all the data processing occur in a program?
- recall our sample program...

Fundamental Programming 310201

write â€œNumber of marks: â€œ

read NbrMarks

write â€œStudentâ€™s mark: â€œ

read StudentMark

set ProportionOfMarks to StudentMark / NbrMarks

set PercentageOfMarks to ProportionOfMarks * 100

write â€œ Studentâ€™s percentage: â€œ

write PercentageOfMarks

- in this program, all the data processing occurs in assignmentstatements

Fundamental Programming 310201

- letâ€™s analyse the assignment statementâ€¦
- here, the two assignment statements are:
set ProportionOfMarks to StudentMark / NbrMarks

set PercentageOfMarks to ProportionOfMarks * 100

- that is:
set < variable > to < value of interest >

- here, the values of interest are:
StudentMark / NbrMarks

ProportionOfMarks * 100

Fundamental Programming 310201

- we use the term expressionto mean:
- the description of a value of interest

- we describe the value that we wish to assign to a data object in an expression
- so:
StudentMark / NbrMarks

ProportionOfMarks * 100

- are two expressions

Fundamental Programming 310201

- so, where does the data processinghappen?
- answer: someof ithappens in
assignmentstatements

- it can also happen in outputstatementsâ€¦

Fundamental Programming 310201

write â€œNumber of marks: â€œ

read NbrMarks

write â€œStudentâ€™s mark: â€œ

read StudentMark

set ProportionOfMarks toStudentMark / NbrMarks

write â€œ Percentage: â€œ

write ProportionOfMarks * 100

Fundamental Programming 310201

- the anatomy of our assignment statement is:
set < variable > to< expression >

- the anatomy of our output statement is:
write < expression >

- so, where does all the data processing happen?

Expressions!

Fundamental Programming 310201

- clearly, expressions are important - thatâ€™s where the dataprocessing happens
- letâ€™s take a closer look at expressions
- previously, we said that data was numbers and text -for now, we just deal with expressions to process numbers
- the anatomy of an expressionis one weâ€™ve seen before...

Fundamental Programming 310201

- we can think of an expression as a black box
- expressions have one or more input values and produce one output value - theinput-process-output model again
- example: StudentMark / NbrMarks
input process output

StudentMark ?

NbrMarks(a single value -

depends on inputs)

Fundamental Programming 310201

- we use the term operatorto mean:
- a symbol, or name, used to represent an operationthat can be performed on data

- in the two expressions:
StudentMark / NbrMarks

ProportionOfMarks * 100

- the operators are:
- / for division
- * for multiplication

- + and -are used for addition and subtraction
- +, -, *, / all work in C++ as you would expect

Fundamental Programming 310201

- we use the term operandto mean:
- an input to an expression

- in the two expressions:
StudentMark / NbrMarks

ProportionOfMarks * 100

- the operands are:
- StudentMark and NbrMarks
- ProportionOfMarks and100

Fundamental Programming 310201

- in the following examples:
StudentMark / NbrMarks

ProportionOfMarks * 100

NbrMarks - StudentMark

StudentMark + 10

- each operator is used with twooperands
- so / , * , - and + are binaryoperators â€“they can all be used with twooperands

Fundamental Programming 310201

- the + and - operators are also unaryoperators (they can be used with just one operand)
- examples:
-273.15as inset AbsoluteZero to-273.15

+100as inset BoilingPointOfWater to+100

expression

- 273.15

operand

operator

Fundamental Programming 310201

- expressions that evaluateto a number are called numericexpressions
- numeric expression come in all shapes and sizes:
- a number by itself â€“ a literal:
set NbrTimesTold to0

- the name of a variable:
write Percentage

- expressions that use operators:
set NbrTimesTold toNbrTimesTold + 1

- a number by itself â€“ a literal:

Fundamental Programming 310201

- the arithmeticoperators+, -, * and / give us a powerful language to process numbers
- the power comes from the ability to nestlittle expressions inside bigger expressions
- instead of:
set ProportionOfMarks toStudentMark / NbrMarks

write ProportionOfMarks * 100

- we can write:
write StudentMark / NbrMarks * 100

- question: which operator is applied first here? and, does it matter?

Fundamental Programming 310201

- which operator is applied first here?
- is the division first?
StudentMark / NbrMarks* 100

divide StudentMark by NbrMarks, then multiply by 100

- or is the multiplication first?
StudentMark / NbrMarks *100

multiply NbrMarks by 100, then divide StudentMark by result of multiplication

- Activity: does it matter?

Fundamental Programming 310201

Fundamental Programming 310201

- using StudentMark = 50, NbrMarks = 100â€¦
- division first:
(StudentMark / NbrMarks) * 100

=(50 / 100) * 100

= 50

- multiplication first:
StudentMark / (NbrMarks *100)

=50 / (100 * 100)

= 0.005

- will a C++ program do it in the correct order?

Fundamental Programming 310201

- there are rules to decide the order in which operators in an expression are applied
- unary operators before binary operators
- multiplication (*) and division (/) before addition (+) and subtraction (-)
- otherwise, left to right

- evaluate the following:
4 * -2 + 3

2 + 12 / 4 * 3

- will the following be evaluated correctly?
StudentMark / NbrMarks * 100

Fundamental Programming 310201

Fundamental Programming 310201

- evaluate:
4 * -2 + 3

- unary operator first (- applies to 2)
- * multiplication before addition
(4 * -2) + 3

=-8 + 3

= -5

Fundamental Programming 310201

- evaluate the following:
2 + 12 / 4 * 3

- multiplication and division before addition
- left to right otherwise â€“ so division before multiplication here
2 + (12 / 4) * 3

=2 + 3 * 3

- multiplication before addition
=2 + (3 * 3)

=2 + 9

= 11

Fundamental Programming 310201

- will the following be evaluated correctly?
StudentMark / NbrMarks * 100

- yes it will â€“ since the division occurs before the multiplication, this is the same as:
(StudentMark / NbrMarks)* 100

Fundamental Programming 310201

- avoid errors by using parentheses:
(4 * -2) + 3

2 + ( ( 12 / 4 ) * 3 )

- sometimes you can rewritean expression to make it easier to read â€“ instead of:
StudentMark / NbrMarks * 100

- you can write:
100 * StudentMark / NbrMarks

- is this easier to understand? if so, why?

Fundamental Programming 310201

Fundamental Programming 310201

- the expression:
100 * StudentMark / NbrMarks

- may seem easier to read than:
StudentMark / NbrMarks * 100

- possibly because, in the first expression above, the order in which operators are applied doesnâ€™t matter
â€“ left for student to check

- always keep you code as simple as possible

Fundamental Programming 310201

- the following program is designed to convert temperatures between Fahrenheit and Centigrade
- it has a logic error â€“ fix itâ€¦

Fundamental Programming 310201

#include <iostream>

using namespace std;

int main (void)

{

intConversionType = 0;

float Temperature = 0;

cout << "Select conversion - (1) C to F, (2) F to C ==> ";

cin >> ConversionType;

cout << "Input temperature ==> ";

cin >> Temperature;

if (ConversionType == 1)

{

cout << 32 + Temperature * 1.8;

cout << " degrees Fahrenheit";

}

else

{

cout << Temperature - 32 / 1.8;

cout << " degrees Centigrade";

}

getchar();

return 0;

}

Fundamental Programming 310201

Fundamental Programming 310201

#include <iostream>

using namespace std;

int main (void)

{

intConversionType = 0;

float Temperature = 0;

cout << "Select conversion - (1) C to F, (2) F to C ==> ";

cin >> ConversionType;

cout << "Input temperature ==> ";

cin >> Temperature;

if (ConversionType == 1)

{

cout << 32 + Temperature * 1.8;

cout << " degrees Fahrenheit";

}

else

{

cout << Temperature - 32 / 1.8;

cout << " degrees Centigrade";

}

getchar();

return 0;

}

problem here:

division occurs

before subtraction

Fundamental Programming 310201

#include <iostream.h>

void main (void)

{

intConversionType = 0;

float Temperature = 0;

cout << "Select conversion - (1) C to F, (2) F to C ==> ";

cin >> ConversionType;

cout << "Input temperature ==> ";

cin >> Temperature;

if (ConversionType == 1)

{

cout << 32 + (Temperature * 1.8);

cout << " degrees Fahrenheit";

}

else

{

cout << (Temperature â€“ 32) / 1.8;

cout << " degrees Centigrade";

}

}

clarification:

parentheses make

intention clear

a solution:

enclose subtraction

in parentheses

Fundamental Programming 310201

- input: cin >> <variable>;
- output: cout << <expression>;
- assignment: <variable> = <expression>;
- aselection statement:
if ( <test> )

{<if-block statements> }

else

{ <else-block statements> }

- a repetition statement:
while( <test> )

{<while-block statements>}

Fundamental Programming 310201

- data processing happens in expressions
- expressions appear in assignmentand output statements
- different types of expressions â€“ literals, variables names, ones that use operatorsâ€¦
- arithmetic operators are: +, -, *, /
- rules control order of application
- parentheses are used to impose ordering

- computing has a lot of jargon!

Fundamental Programming 310201