1 Operations Chapter 4 & Section 5.2. 2 Expressions As we've seen, in a C++ program, any finite sequence of objects and operations that combine to produce.

Slides:



Advertisements
Similar presentations
L2:CSC © Dr. Basheer M. Nasef Lecture #2 By Dr. Basheer M. Nasef.
Advertisements

Types and Arithmetic Operators
Data Types in Java Data is the information that a program has to work with. Data is of different types. The type of a piece of data tells Java what can.
True or false A variable of type char can hold the value 301. ( F )
Lecture 071 CS 192 Lecture 7 Winter 2003 December 15-16, 2003 Dr. Shafay Shamail.
Bellevue University CIS 205: Introduction to Programming Using C++ Lecture 3: Primitive Data Types.
Slide 1 Summary Two basic concepts: variables and assignments Some C++ practical issues: division rule, operator precedence  Sequential structure of a.
1 9/20/06CS150 Introduction to Computer Science 1 Review: Exam 1.
COMPSCI 125 Spring 2005 ©TheMcGraw-Hill Companies, Inc. Permission required for reproduction or display. Chapter 3: Numeric Data *Variables *Numeric data.
Program Elements We can now examine the core elements of programming (as implemented in Java) We focuse on: data types variable declaration and use, constants.
Operations and Expressions Chapter 3. C++ An Introduction to Computing, 3rd ed. 2 Objectives Further work with Object-Centered Design Detailed look at.
ECE122 L3: Expression Evaluation February 6, 2007 ECE 122 Engineering Problem Solving with Java Lecture 3 Expression Evaluation and Program Interaction.
Chapter 3 Numerical Data. Topics Variables Numeric data types Assignment Expressions.
Data types and variables
Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of.
Chapter 2 Data Types, Declarations, and Displays
JavaScript, Third Edition
CSci 142 Data and Expressions. 2  Topics  Strings  Primitive data types  Using variables and constants  Expressions and operator precedence  Data.
C++ Operators CS242 COMPUTER PROGRAMMING T.Banan Al-Hadlaq.
COMPUTER SCIENCE I C++ INTRODUCTION
Expressions, Data Conversion, and Input
Objectives You should be able to describe: Data Types
Java Primitives The Smallest Building Blocks of the Language (corresponds with Chapter 2)
Outlines Chapter 3 –Chapter 3 – Loops & Revision –Loops while do … while – revision 1.
CHAPTER:8 OPERATORS AND EXPRESSION IN C++ Prepared By Prepared By : VINAY ALEXANDER ( विनय अलेक्सजेंड़र ) PGT(CS),KV JHAGRAKHAND.
Object-Oriented Programming Using C++ Third Edition Chapter 2 Evaluating C++ Expressions.
Chapter 3 Processing and Interactive Input. 2 Assignment  The general syntax for an assignment statement is variable = operand; The operand to the right.
Operations Making Things Happen. Our Scuba Program #include // cin, cout, > using namespace std; int main() { const double FEET_PER_ATM = 33.0, LBS_PER_SQ_IN_PER_ATM.
Basic Notions Review what is a variable? value? address? memory location? what is an identifier? variable name? keyword? what is a legal identifier? what.
Operations and Expressions Chapter 3. C++ An Introduction to Computing, 3rd ed. 2 Objectives Further work with Object-Centered Design Detailed look at.
Chapter 2: Using Data.
1 Chapter 3 Numeric Types, Expressions, and Output Dale/Weems/Headington.
PROCESSING Numeric Types. Objectives Be able to … Explain the difference between a literal, a variable and a constant Declare numeric variables and constants.
C++ Programming: Basic Elements of C++.
Introduction to C Programming Chapter 2 : Data Input, Processing and Output.
CPS120: Introduction to Computer Science Operations Lecture 9.
1 Operations 4 & Section 5.2 Chapter 4 & Section 5.2.
1 Operations Making Things Happen (Chap. 3) Expressions.
Liang, Introduction to Programming with C++, Second Edition, (c) 2010 Pearson Education, Inc. All rights reserved Chapter 2 Elementary Programming.
Computer Science 1620 boolean. Types so far: Integer char, short, int, long Floating Point float, double, long double String sequence of chars.
Operators Precedence - Operators with the highest precedence will be executed first. Page 54 of the book and Appendix B list C's operator precedence. Parenthesis.
1 C++ Data Types structured array struct union class address pointer reference simple integral enum char short int long bool floating float double long.
Computing and Statistical Data Analysis Lecture 2 Glen Cowan RHUL Physics Computing and Statistical Data Analysis Variables, types: int, float, double,
A Simple Java Program //This program prints Welcome to Java! public class Welcome { public static void main(String[] args) { public static void main(String[]
COMP Primitive and Class Types Yi Hong May 14, 2015.
Programming Fundamentals. The setw Manipulator setw changes the field width of output. The setw manipulator causes the number (or string) that follows.
Lecture 5: Expressions and Interactivity Professor: Dr. Miguel Alonso Jr. Fall 2008 CGS2423/COP1220.
1 CS161 Introduction to Computer Science Topic #6.
ECE 103 Engineering Programming Chapter 4 Operators Herbert G. Mayer, PSU CS Status 6/19/2015 Initial content copied verbatim from ECE 103 material developed.
Literals A literal (sometimes called a constant) is a symbol which evaluates to itself, i.e., it is what it appears to be. Examples: 5 int literal
Programming Fundamentals. Summary of Previous Lectures Phases of C++ Environment Data Types cin and cout.
Expressions Version Topics Arithmetic expressions Conversions Operator precedence String class 2.
OPERATORS IN C CHAPTER 3. Expressions can be built up from literals, variables and operators. The operators define how the variables and literals in the.
1 09/10/04CS150 Introduction to Computer Science 1 What Actions Do We Have Part 2.
Lecture 3: More Java Basics Michael Hsu CSULA. Recall From Lecture Two  Write a basic program in Java  The process of writing, compiling, and running.
ECE 103 Engineering Programming Chapter 4 Operators Herbert G. Mayer, PSU Status 6/10/2016 Initial content copied verbatim from ECE 103 material developed.
Operations Making Things Happen.
Chapter 7: Expressions and Assignment Statements
Computing and Statistical Data Analysis Lecture 2
Computing Fundamentals
Computing Fundamentals
Chapter 2 Assignment and Interactive Input
Chapter 7: Expressions and Assignment Statements
Multiple variables can be created in one declaration
Operators and Expressions
Lecture 3 Expressions Richard Gesick.
Basic Notions Review what is a variable? value? address? memory location? what is an identifier? variable name? keyword? what is legal identifier? what.
Chapter 8 JavaScript: Control Statements, Part 2
Primitive Types and Expressions
OPERATORS AND EXPRESSIONS IN C++
Presentation transcript:

1 Operations Chapter 4 & Section 5.2

2 Expressions As we've seen, in a C++ program, any finite sequence of objects and operations that combine to produce a value is called an expression. A temperature conversion example: fahrenheit = 1.8 * celsius + 32; We now consider C++ operations. Why not fahrenheit = 9/5 * celsius + 32; ?

Numeric Expressions C++ provides four familiar arithmetic operators: + for performing addition - for performing subtraction * for performing multiplication / for performing division integer () [or character ()] operands Each can be applied to either real ( double ) or integer ( int ) [or character ( char )] operands. 3 C++ provides more than 50 operations (See Appendix C)

4 Division However, / behaves differently for than for operands: However, / behaves differently for int than for double operands:     Type of Operands Kind of Division Performed int double _____________ Integer division calculates the quotient, but it also calculates the remainder. To find it we can use the modulus operator % ; for example, 9 % 5 = ____.

56 / 10 = 56 % 10 = 1 / 2 = 1 % 2 = 2 / 3 = 2 % 3 = / 100 = 456 % 100 = More examples: Keep in mind for Project 3 What about mixed-mode (i.e., mixed-type) expressions? Automatic Type Conversion (p. 73): Promotion: "Narrower" types (fewer storage bits) "widened" e.g., int  double ; 9/3.0  9.0/3.0; Explicit Type Conversion (p. 73-4): Type Casting Use type name to convert an expression: double(intVal) or (double)intVal Functional Notation Cast Notation

Numeric Functions The library contains a variety of mathematical functions, including: sin(x) asin(x) cos(x)acos(x) tan(x) atan(x) sqrt(x)abs(x) exp(x)pow(x, y) log(x)floor(x) log10(x)ceil(x) 6 Hyperbolic functions: cosh(x), sinh(x), tanh(x) See Appendix D for other math functions and other libraries.

Using functions 7 #include ________________________ using namespace std; int main() { cout << "\nEnter base and exponent: "; double base, exponent; cin >> base >> exponent; double result = ________________________ ; cout << base << " raised to the power " << exponent << " is " << result << endl; } C++ libraries whose names start with 'c' are C libraries. Their C-names do not have the 'c' but have.h appended; e.g., Essentially same as '\n'

Precedence Issue: Is the value of the expression * 4 (2 + 3) * 4 24 or 2 + (3 * 4) 14 ? (2 + 3) * 4  24 or 2 + (3 * 4)  14 ? Operator __________________ governs evaluation order. * has higher precedence than +, so it is applied first, making the answer ______. 8

Associativity Does the expression evaluate (8 - 4) or 8 - (4 - 2) 6 ? evaluate (8 - 4) - 2  2 or 8 - (4 - 2)  6 ? Precedence doesn’t help us. Associativity does. Since - is ___________________, the left - is evaluated first. Most C++ operators that we use associate left. See Appendix C for a complete list. 9

Assignment Assignment is one operator that is right- associative, which allows expressions like: int w, x, y, z; ____________________________ 10 The rightmost = is applied first, assigning z zero, then y is assigned the value of z (0), w = (x = (y = (z = 0))); then x is assigned the value of y (0), and finally w is assigned the value of x (0). Assignment operator returns the value being assigned. Mixed-mode assignments convert the value to type of variable and assign it.

Assignment Shortcuts Certain assignments are very common: var = var + x; // add x to var var = var - y; // sub y from var C++ provides shortcuts for them: _______________ _______________ ; // add x to var _______________ _______________ ; // sub y from var 11

In General Most arithmetic expressions of the form: var = var  value; can be written in the "shortcut" form: var  = value;Examples: double x, y; cin >> x >> y; ____________ ____________ ; // double x’s value ____________ ____________ ; // decrease y by half 12

Increment and Decrement Other common assignments include: var = var + 1; // add 1 to var var = var - 1; // sub 1 from var so C++ provides shortcuts for them, too: ____________ ____________ ; // add 1 to var _____________; ____________ ____________ ; // sub 1 from var ____________ ____________ ; 13 Integer variables only!

Prefix vs. Postfix As long as the increment (or decrement) operator is used as a separate statement: int y = 0, x = 0;... ++x; // x becomes ____ y++; // y becomes ____ it makes no difference which version is used. 14 

15 If the increment operator is used within another expression, it does make a difference whether it is prefix or postfix. The prefix form of increment produces the final (incremented) value as its result: int x, y = 0; x = 2 * (++y); cout << x << " " << y; // The prefix decrement behaves similarly. 2 1 is displayed  

16 The postfix form of increment produces the original (unincremented) value as its result: int x, y = 0; x = 2 * (y++); cout << x << " " << y; // The prefix decrement behaves similarly. 0 1 is displayed 

I/O 17 In most programming languages, input and output are performed by functions with names like read() and print(). In C++, however, (but not C) they are performed by ____________ >> and << : input_stream >> variable output_stream << expression.

18 But these are _____________. Because >> and << are operators, these i/o expessions must also produce a ___________. cin >> variable returns ______ as its value; cout << expression returns _______ as its value. We know that: cin >> variable reads a value from the keyboard and assigns it to variable cout << expression outputs the value of expression to the screen.

19 Arithmetic operators can be chained together in expressions like a + b + c and a - b - c. Input and output operators can also be chained; for example: cout << "Width =" << width << " ft.\n"; and cin >> length >> width; These work because of the values returned by >> and << and both are ________-associative. Why???

20 Example: cout << "Width =" << width << " ft.\n"; _cout << "Width ="_ << width << " ft.\n"; ______ << width << " ft.\n"; _cout << width_ << " ft.\n"; ______ << " ft.\n"; ______; Width = 8.5 ft.

Relational Operations C++ provides six operators for comparisons. Each has two operands and produces a _______ value (___________________): x == y x != y x = y x > y x <= y 21 Warning: 1 < x < 2

22 C, the parent language of C++, has no bool type. Instead, it uses _____ to represent false and ______________ values to represent true. For upward compatibility, C++ also does this: 0 is interpreted as false nonzero is interpreted as true For input and output, 0 is used for false, 1 for true (see program on Slide #29) unless_____________ is inserted in an I/O statement (see modification of program on Slide #29). It remains in effect for rest of program (unless noboolalpha is used in an I/O statement).

Also, it can be dangerous to compare reals with _____ and _____ when one or both of the reals may have roundoff error. See the program on Slide #25. One of the easiest mistakes to make in C++ is using __________________ in place of ________________ See the program on Slide #24. 23

#include using namespace std; int main() { int x; cout << "Enter an integer: "; cin >> x; if (x = 99) cout << "Yes\n"; else cout << "No\n";} 24 Executions: Enter an integer: 99 Yes Enter an integer: -99 Yes Enter an integer: 0 Yes With change: if (x 99) if (x == 99) Enter an integer: 99 Yes Enter an integer: -99 No Enter an integer: 0 No

//-- Effect of roundoff error #include #include using namespace std; int main() { for (float x = 0; ; x = x + 0.1) for (float x = 0; x != 50.0; x = x + 0.1) { float y = x * sqrt(1 + sin(x)); float y = x * sqrt(1 + sin(x)); cout << x << " " << y << endl;; cout << x << " " << y << endl;; }} 25 Execution: With change: for (float x = 0; x < 50.0; x = x + 0.1) Enter an integer: or abs(x - 50) >= 1E-10

Preconditions Sometimes values must satisfy certain requirements for a program to process them (e.g., they must be positive). Sometimes values must satisfy certain requirements for a program to process them (e.g., they must be positive). Such requirements are called preconditions or _______________. They are boolean expressions that must be true in order for the program to work correctly. A convenient way to check preconditions is to use C++’s mechanism. A convenient way to check preconditions is to use C++’s assert() mechanism. if statement later e.g., Project

Assertions #include #include _________________ using namespace std; int main() { cout << " \nEnter the current month number: " ; int month; cin >> month; _______________________________________; //... } will halt the program if assert() will halt the program if month 12 and display a message. 27

NOTE Logical Operators More complex boolean expressions can be built using the logical operators: b1 && b1 // true iff b1, b2 are both true b1 || b2 // true iff b1 or b2 is true !b // true iff b is falseExample: cin >> month; ______________________________________ 28 NOT: assert(1 <= month <= 12);

#include #include using namespace std; int main() { bool input1, input2, output; bool input1, input2, output; cout << "Enter inputs: "; cout << "Enter inputs: "; cin >> input1 >> input2; cin >> input1 >> input2; output = (input1 || input2) && !(input1 && input2); output = (input1 || input2) && !(input1 && input2); cout << "Output for inputs " << input1 cout << "Output for inputs " << input1 << " and " << input2 << " is " << output << '\n'; << " and " << input2 << " is " << output << '\n';} 29 Executions: Enter inputs: 0 1 Output for inputs 0 and 1 is 1 Enter inputs: 1 1 Output for inputs 1 and 1 is 0 With change: cout << "Output for inputs " << boolalpha << input1 << " and " << input2 << " is " << output << '\n'; Enter inputs: 0 1 Output for inputs false and true is true With change: cin >> boolalpha >> input1 >> input2; Enter inputs: false true Output for inputs false and true is true Binary Half- Adder: (§5.3) Full Adder: (Programming Problems)

Character Functions The library contains an assortment of boolean character-processing functions: isalpha(ch) isalnum(ch) isdigit(ch) iscntrl(ch) islower(ch) isupper(ch) isspace(ch) ispunct(ch) isprint(ch) isgraph(ch) and two case-conversion functions: toupper(ch) tolower(ch) 30 See App. D

Examples: Write an assertion that will halt the program if a char object named ch is not an uppercase letter: 31 Write an assertion that will halt the program if ch is not one of ‘A’ through ‘G’: assert('A' <= ch && ch <= 'G'); assert('A' <= ch && ch <= 'Z'); or or assert(isupper(ch));

Operator Precedence HIGHER ( ) HIGHER (positive), (negative), (NOT) + (positive), - (negative), ! (NOT),, *, /, % (addition), - (subtraction) + (addition), - (subtraction),,,, >= >, ==, != && || LOWER = LOWER See Appendix C for a complete list. 54 operators 18 precedence levels 32 When in doubt, use parentheses!