Fundamental Programming 310201 1
Fundamental Programming
Data Processing and Expressions
Fundamental Programming 310201 2
Status 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 3
Review a program performs a sequence of input,
output and assignment statements selection and repetition statements control
which of the program’s input, output and assignment statements are performed selection (if-then-else) statements provide
alternate pathways through the program repetition (while) statements control the number
of times a block of statements is performed
Fundamental Programming 310201 4
Data Processing 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 5
Sample Programwrite “Number of marks: “ read NbrMarks write “Student’s mark: “read StudentMarkset ProportionOfMarks to StudentMark / NbrMarks set PercentageOfMarks to ProportionOfMarks *
100write “ Student’s percentage: “write PercentageOfMarks
in this program, all the data processing occurs in assignment statements
Fundamental Programming 310201 6
Anatomy of an Assignment 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 7
Expressions we use the term expression to 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 8
Data Processing so, where does the data processing happen? answer: some of it happens in
assignment statements
it can also happen in output statements…
Fundamental Programming 310201 9
Alternative Designwrite “Number of marks: “ read NbrMarks write “Student’s mark: “read StudentMarkset ProportionOfMarks to StudentMark / NbrMarks write “ Percentage: “write ProportionOfMarks * 100
Fundamental Programming 310201 10
Anatomy of an Output 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 11
Expressions clearly, expressions are important - that’s
where the data processing 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 expression is one we’ve seen before...
Fundamental Programming 310201 12
Expressions as a Black Box we can think of an expression as a black box
expressions have one or more input values and produce one output value - the input-process-output model again
example: StudentMark / NbrMarks input process output
StudentMark ? NbrMarks (a single value - depends on inputs)
Fundamental Programming 310201 13
Operators we use the term operator to mean:
a symbol, or name, used to represent an operation that 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 14
Operands we use the term operand to mean:
an input to an expression in the two expressions: StudentMark / NbrMarks ProportionOfMarks * 100 the operands are:
StudentMark and NbrMarks ProportionOfMarks and 100
Fundamental Programming 310201 15
Binary Operators in the following examples: StudentMark / NbrMarks ProportionOfMarks * 100 NbrMarks - StudentMark StudentMark + 10 each operator is used with two operands so / , * , - and + are binary operators
–they can all be used with two operands
Fundamental Programming 310201 16
Unary Operators the + and - operators are also unary
operators (they can be used with just one operand)
examples: -273.15 as in set AbsoluteZero to -273.15 +100 as in set BoilingPointOfWater to
+100 expression - 273.15
operandoperator
Fundamental Programming 310201 17
Numeric Expressions expressions that evaluate to a number are
called numeric expressions numeric expression come in all shapes and
sizes: a number by itself – a literal: set NbrTimesTold to 0 the name of a variable: write Percentage expressions that use operators: set NbrTimesTold to NbrTimesTold + 1
Fundamental Programming 310201 18
Power of Expressions the arithmetic operators +, -, * and / give us
a powerful language to process numbers the power comes from the ability to nest little
expressions inside bigger expressions instead of:set ProportionOfMarks to StudentMark / 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 19
Nested Expressions which operator is applied first here? is the division first? StudentMark / NbrMarks * 100divide StudentMark by NbrMarks, then multiply by 100 or is the multiplication first?StudentMark / NbrMarks * 100multiply NbrMarks by 100, then divide StudentMark by
result of multiplication Activity: does it matter?
Fundamental Programming 310201 20
Activity Break
Fundamental Programming 310201 21
Activity Feedback 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 22
Order of Use 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 23
Activity Break
Fundamental Programming 310201 24
Activity Feedback evaluate:
4 * -2 + 3 unary operator first (- applies to 2) * multiplication before addition (4 * -2) + 3= -8 + 3= -5
Fundamental Programming 310201 25
Activity Feedback evaluate the following:
2 + 12 / 4 * 3 multiplication and division before addition left to right otherwise – so division before
multiplication here2 + (12 / 4) * 3
= 2 + 3 * 3 multiplication before addition= 2 + (3 * 3)= 2 + 9= 11
Fundamental Programming 310201 26
Activity Feedback 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 27
Order of Use avoid errors by using parentheses:
(4 * -2) + 3 2 + ( ( 12 / 4 ) * 3 )
sometimes you can rewrite an 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 28
Activity Break
Fundamental Programming 310201 29
Activity Feedback 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 30
Activity the following program is designed to
convert temperatures between Fahrenheit and Centigrade
it has a logic error – fix it…
Fundamental Programming 310201 31
#include <iostream>using namespace std;int main (void){ int ConversionType = 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 32
Activity Break
Fundamental Programming 310201 33
#include <iostream>using namespace std;int main (void){ int ConversionType = 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
Feedback
Fundamental Programming 310201 34
#include <iostream.h>void main (void){ int ConversionType = 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"; }} a solution:
enclose subtractionin parentheses
clarification: parentheses make intention clear
Feedback
Fundamental Programming 310201 35
C++ Syntax Summary input : cin >> <variable>; output : cout << <expression>; assignment : <variable> = <expression>; a selection statement:
if ( <test> ){ <if-block statements> }
else{ <else-block statements> }
a repetition statement: while ( <test> ){ <while-block statements> }
Fundamental Programming 310201 36
Summary data processing happens in expressions expressions appear in assignment and
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!