Download - Fundamental Programming
![Page 1: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/1.jpg)
Fundamental Programming 310201 1
Fundamental Programming
Data Processing and Expressions
![Page 2: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/2.jpg)
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
![Page 3: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/3.jpg)
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
![Page 4: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/4.jpg)
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...
![Page 5: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/5.jpg)
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
![Page 6: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/6.jpg)
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
![Page 7: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/7.jpg)
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
![Page 8: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/8.jpg)
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…
![Page 9: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/9.jpg)
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
![Page 10: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/10.jpg)
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 !
![Page 11: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/11.jpg)
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...
![Page 12: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/12.jpg)
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)
![Page 13: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/13.jpg)
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
![Page 14: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/14.jpg)
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
![Page 15: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/15.jpg)
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
![Page 16: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/16.jpg)
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
![Page 17: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/17.jpg)
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
![Page 18: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/18.jpg)
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?
![Page 19: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/19.jpg)
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?
![Page 20: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/20.jpg)
Fundamental Programming 310201 20
Activity Break
![Page 21: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/21.jpg)
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?
![Page 22: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/22.jpg)
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
![Page 23: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/23.jpg)
Fundamental Programming 310201 23
Activity Break
![Page 24: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/24.jpg)
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
![Page 25: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/25.jpg)
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
![Page 26: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/26.jpg)
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
![Page 27: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/27.jpg)
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?
![Page 28: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/28.jpg)
Fundamental Programming 310201 28
Activity Break
![Page 29: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/29.jpg)
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
![Page 30: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/30.jpg)
Fundamental Programming 310201 30
Activity the following program is designed to
convert temperatures between Fahrenheit and Centigrade
it has a logic error – fix it…
![Page 31: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/31.jpg)
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;
}
![Page 32: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/32.jpg)
Fundamental Programming 310201 32
Activity Break
![Page 33: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/33.jpg)
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
![Page 34: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/34.jpg)
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
![Page 35: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/35.jpg)
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> }
![Page 36: Fundamental Programming](https://reader036.vdocuments.us/reader036/viewer/2022062310/56816167550346895dd0f153/html5/thumbnails/36.jpg)
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!