Announcements - PowerPoint PPT Presentation

1 / 26
About This Presentation
Title:

Announcements

Description:

... 1252800000 seconds correct result and output 25129 days result: -2123821696 seconds incorrect result and output due to overflow 65400 days result: ... – PowerPoint PPT presentation

Number of Views:26
Avg rating:3.0/5.0
Slides: 27
Provided by: peopleSab9
Category:

less

Transcript and Presenter's Notes

Title: Announcements


1
Announcements
  • Homework 1 due Wednesday 1900
  • No new homework this week, but there will be
    recitations
  • About HW1
  • There must be three inputs only
  • First one is the amount of money
  • Second one is the item name
  • Third one is the item price
  • You have to preserve this order
  • No other inputs are allowed
  • Otherwise, our system cannot process your
    homework

2
Tapestry Chapter 3
  • We discussed some parts
  • cin for input
  • variables and basic types
  • We will go over them
  • More details
  • More types
  • Arithmetic operators and expression evaluation
    rules
  • More on assignment operator (chapter 4.1 and
    4.3.4)

3
Programs that Respond to Input
  • Programs without input always give the same
    results
  • values are hardcoded
  • For new values
  • change the program, compile and run again
  • not a good programming practice
  • Allow the user to input values that generate
    output
  • from keyboard, using cin
  • we did this in the first circle area calculation
    program
  • Sequential model of programming input, process,
    output
  • Input information provided from the user
    (outside world)
  • Process Information is processed
  • Output display the result

4
Mac Donalds farm revisited
  • We want the user to enter/input values for animal
    and noise
  • Enter the name of an animal sheep
  • Enter noise that a sheep makes baah
  • Old MacDonald had a farm, Ee-igh, Ee-igh, oh!
  • And on his farm he had a sheep, Ee-igh, ee-igh,
    oh!
  • With a baah baah here
  • And a baah baah there
  • Here a baah, there a baah, everywhere a baah baah
  • Old MacDonald had a farm, Ee-igh, Ee-igh, oh!
  • Well pass the user-entered values to the Verse
    function
  • The input stream cin takes input from the
    keyboard using operator gtgt
  • Values that are input are stored in variables and
    then passed to function verse as arguments
  • see macinput2.cpp

5
Mac Donalds farm revisited
  • // other functions goes here (see macinput2.cpp)
  • void Verse(string animal, string noise)
  • // this function doesnt change
  • // see the source code for the function code
  • int main()
  • string animal // variable for name of
    animal
  • string noise // variable for noise it
    makes
  • cout ltlt "Enter the name of an animal "
  • cin gtgt animal
  • cout ltlt "Enter noise that a " ltlt animal ltlt "
    makes "
  • cin gtgt noise
  • Verse(animal,noise)
  • return 0

6
Analysis of the Run
  1. input value sheep is stored in variable animal
  2. input value baah is stored in variable noise
  3. sheep and baah values are passed to function
    verse as arguments as well as used in cout in
    main

7
Variables (review from previous lectures)
  • Variables are used to store values in memory
  • memory locations that are accessed using a name
    in the program
  • Each variable has a type, a name (identifier),
    and a value
  • Methods to give values to variables
  • Assignment, using
  • Input, using cin
  • Definition
  • type variable_names_separated_by
    _comma

8
Where to define variables
  • You can define variables anywhere within a
    function
  • provided that it is defined before the first use
  • Two common conventions the place of variable
    definition
  • At the beginning of the function in which theyre
    used
  • string animal,noise
  • cout ltlt "enter animal "
  • cin gtgt animal
  • cout ltlt "enter noise a " ltlt animal ltlt " makes
    "
  • cin gtgt noise
  • Just before the first place that theyre used
  • cout ltlt "enter animal "
  • string animal
  • cin gtgt animal
  • cout ltlt "enter noise a " ltlt animal ltlt " makes
    "
  • string noise
  • cin gtgt noise

9
Where to define variables
  • NO GLOBAL VARIABLES
  • A global variable is a variable defined outside
    the function bodies
  • They can be used in all functions without
    definition
  • That is why it is the 1 enemy of parameters
  • If you use global variables, you violate the
    independence property of functions and may lose
    your control in big programs
  • Thus, IT IS FORBIDDEN TO USE GLOBAL VARIABLES
  • If you use a global variable in hw and exams,
    your grade will be reduced!
  • At the end of the course, I will formally teach
    global variable concept. After that,
  • you will need to know what global variable is and
    apply them whenever you are asked for, but not
    without permission!

10
Variable Initialization
  • Variables have garbage (junk values) until
  • they are assigned a value using assignment
    operator or
  • an input is stored into them (using cin
    statement)
  • Variables must be given a value before you refer
    to its value for the first time in an expression
    or an output statement or as an argument to a
    function
  • idea behind this rule you can never know what is
    inside of an uninitialized variable!
  • not a syntax error, compiler may or may not warn
    you!
  • You may initialize variables at the declaration
  • int myint 5
  • After initialization, you may change the value
    stored in a variable several times
  • that is why they are named as variable

11
Scope of a Variable and Parameter
  • Not explained in the book in this way
  • Complex rules. Now I give a simple version!
  • RULE 1 A variable or parameter can be referred
    only within the function in which it is declared
  • e.g. you cannot refer the variable animal in
    function eieio
  • RULE 2 A specific identifier can be used several
    times in different functions as variable or
    parameter names. Those are actually different
    variables/parameters.
  • e.g. animal and noise are used both in main and
    verse
  • RULE 3 A specific identifier must be unique
    within a function
  • Detailed scope rules will be given later in this
    course

12
Data Types
  • string
  • talked on that
  • more technically, string is a class
  • char
  • for single character
  • digits, letters, symbols
  • uses up one byte
  • range 0 ... 255
  • why? one byte (8 bits) can store 28 256
    different values.
  • stores the code of the character
  • e.g. 65 for A
  • character arithmetic is possible (will see later)
  • char literals are in single quotes (strings are
    in double quotes)
  • 'z' 'T' '4' ''
  • bool
  • boolean (will see later)

13
Numeric Types
  • to represent integer and real numbers
  • int
  • integer numbers
  • sorry! no infinity in computers ?
  • limited range
  • 2 or 4 bytes (16 or 32 bits) depending on the
    computer and compiler you use
  • in our case 4 bytes (32 bits)
  • integer range
  • 32,768 ... 32,767 for 16-bit computers
  • why?
  • 2,147,483,648 ... 2,147,483,647 for 32-bit
    computers
  • why?

14
Numeric Types (contd)
  • short int (or just short )
  • always 16-bit integer
  • long int (or just long )
  • always 32-bit integer
  • signed versus unsigned integers
  • you can put signed or unsigned keywords before
    the type
  • we discussed signed integers
  • signed is default
  • unsigned integers use the same amount of bits but
    ranges are different
  • 16-bit 0 ... 65,535 (216 1)
  • 32-bit 0 ... 4,294,967,295 (232 1)

15
Numeric Types (contd)
  • Real numbers in C
  • Real literals
  • 3.14159 -2.5 5.43e21
  • Real data types (their difference is in
    precision)
  • float
  • consumes 4 bytes
  • Range 0 U -1.175494351e38 ...
    -3.402823466e38
  • U 1.175494351e38 ...
    3.402823466e38
  • Tapestry does not like float
  • double
  • consumes 8 bytes
  • Range 0 U -2.2250738585072014e308 ...
    -1.7976931348623158e308
  • U 2.2250738585072014e308
    ... 1.7976931348623158e308
  • Standard but a bit complex representation
  • see floating point representation item in MSDN
    Library index

16
More on C types
  • Check out these items in MSDN Library Index
  • Fundamental types
  • more on C types
  • LIMITS.H header file
  • limits of integer and char types
  • floating limits
  • limits for the floating points numbers (float,
    double)
  • floating point representation
  • if you are interested in to learn how the real
    numbers are represented in computers

17
Integer vs. Real
  • Real values can be assigned to Integer variables,
    but this is not recommended since we loose
    precision
  • int a
  • double r
  • r 125.879
  • a r
  • What is the value of a?
  • 125
  • Real value is truncated before storing in an
    integer variable
  • Avoid doing this
  • Compiler may not warn you
  • Be careful when passing arguments to parameters
    as well
  • passing an integer argument to a double parameter
    causes the same precision problem

18
Overflow
  • Overflow occurs when the result of an integer
    expression is outside the limits
  • See daysecs.cpp
  • Run the program with
  • 365 days
  • result 31536000 seconds
  • correct result and output
  • 14500 days
  • result 1252800000 seconds
  • correct result and output
  • 25129 days
  • result -2123821696 seconds
  • incorrect result and output due to overflow
  • 65400 days
  • result 1355592704 seconds
  • incorrect result and output due to overflow

19
Arithmetic Operations
  • Operators - /
  • Operands values that operator combines
  • variables or literals
  • Syntax and semantics for arithmetic operations
  • Addition, subtraction and ,
  • for int, float and double
  • 23 4 x y
    d 14.0 23
  • Multiplication , for int, float and double
  • 23 4 y 3.0 d 23.1 4
  • Division /, different for int and real number
    types (double, float)
  • for int operands result is the integer part of
    division
  • 21 / 4 is 5 21 / 4.0 is 5.25 x / y
  • Modulus , remainder of division, only for int
  • 21 4 is 1 18 2 is 0 x y

20
Arithmetic Operations (contd)
  • Mixed type expressions
  • what if one operator is int but the other is
    double?
  • integer is converted into double before operation
  • 5.0 8 is 40.0
  • 5 / 10 is 0 (integer division)
  • 5.0 / 10 is 0.5 (real division)
  • 10 8 is 2 (integer)
  • 10 8.0 is 2.0 (double)

21
Expressions with several operators
  • You can use parentheses in expressions
  • Open and close parentheses should match
  • Rule 1 Parenthesized subexpressions are
    evaluated first
  • inside to out
  • Rule 2 Within an expression/subexpression if
    there are several operators, use operator
    precedence,
  • evaluate / before -
  • Rule 3 If the operators are in the same
    expression/subexpression and at the same
    precedence level, then associativity rule applies
  • evaluate operators from left to right
  • Examples
  • (5 - 3 (7-3)) 8 is -56
  • 10 / 2 6 / 2 (5 - 3 (2 - 1)) is 17

22
Expressions with several operators
  • Are the following expressions equivalent?
  • (40 32) 5 / 9
  • (40 32) (5 / 9)
  • NO, first one is 4, second one is 0
  • What about this?
  • (40 32.0) 5 / 9
  • Operations are double operations. Result is
    4.44444
  • Are these operators sufficient?
  • how to calculate square root?
  • Later well study functions like sqrt, cos, sin,
    pow,
  • For complicated mathematical operations that you
    cannot easily do using basic operators
  • Accessible using include ltcmathgt (or ltmath.hgt)

23
Integer vs. Real (More on Precision)
  • What is the difference between red and blue parts
    in the following program (fahrcels.cpp)?
  • red integer arithmetic (low precision)
  • blue real arithmetic (high precision)
  • int main()
  • int ifahr
  • double dfahr
  • cout ltlt "enter a Fahrenheit temperature "
  • cin gtgt ifahr
  • cout ltlt ifahr ltlt " F " ltlt (ifahr - 32)
    5/9
  • ltlt " Celsius" ltlt endl
  • cout ltlt "enter another temperature "
  • cin gtgt dfahr
  • cout ltlt dfahr ltlt " F " ltlt (dfahr - 32)
    5/9
  • ltlt " Celsius" ltlt endl
  • return 0

24
Reading Assignment
  • Section 3.3
  • Case Study Pizza Slices
  • Similar to circle area calculation program
  • Run the program pizza.cpp

25
More on Assignment operator (4.1 4.3.4)
  • Assignment operator is
  • to store values in variables
  • variable expression
  • first the right hand side expression is evaluated
    using the current values
  • then the evaluated expression is stored in
    variable
  • Types should be compatible, otherwise
  • a syntax error may occur (e.g. string variable,
    integer expression), or
  • precision is lost (e.g. integer variable, real
    expression)
  • Example what is the value of a after the
    assignment?
  • int a, b
  • b 25 a 8
  • a b 3 a 2
  • Answer 3
  • A rule If you use the left hand side variable in
    the right hind side expression as well, then the
    current value is used in the expression on the
    right hand side.

26
More on Assignment operator (4.1 4.3.4)
  • Assigning single expression to several variables
  • variable1 variable2 variable3 ... variablen
    expression
  • all variables are assigned the same value of
    expression
  • example
  • int x, y, z
  • x y z 5
  • x, y and z contain 5
  • Arithmetic assignment operators
  • - /
  • combines arithmetic operation and assignment in
    one operator
  • variable expression is the same as
    variable variable expression
  • example x 1 is the same as x x 1
  • use analogy for - / and
Write a Comment
User Comments (0)
About PowerShow.com