CSE1222: Lecture 4The Ohio State University1. Mathematical Functions (1)  The math library file cmath Yes, this is a file with definitions for common.

Slides:



Advertisements
Similar presentations
Functions. COMP104 Functions / Slide 2 Introduction to Functions * A complex problem is often easier to solve by dividing it into several smaller parts,
Advertisements

Computer Programming w/ Eng. Applications
Chapter 3: Expressions and Interactivity. Outline cin object Mathematical expressions Type Conversion and Some coding styles.
BBS514 Structured Programming (Yapısal Programlama)1 Functions and Structured Programming.
CSE202: Lecture 2The Ohio State University1 Variables and C++ Data Types.
1 Lecture 6 Chapter 3 Numeric Types, Expressions, and Output Dale/Weems/Headington.
Computer Science 1620 Arithmetic. C++ Math we have seen how to use numbers in our program to represent data however, we can also manipulate this data.
Copyright © 2012 Pearson Education, Inc. Chapter 3: Expressions and Interactivity.
1 Fundamental Data types Overview l Primitive Data Types l Variable declaration l Arithmetical Operations l Expressions l Assignment statement l Increment.
1 9/20/06CS150 Introduction to Computer Science 1 Review: Exam 1.
1 9/08/06CS150 Introduction to Computer Science 1 Arithmetic Operators.
CS180 Recitation 3. Lecture: Overflow byte b; b = 127; b += 1; System.out.println("b is" + b); b is -128 byte b; b = 128; //will not compile! b went out.
1 Chapter 3 Topics Constants of Type int and float l Evaluating Arithmetic Expressions l Implicit Type Coercion and Explicit Type Conversion l Calling.
ICS 103 Lab 2-Arithmetic Expressions. Lab Objectives Learn different arithmetic operators Learn different arithmetic operators Learn how to use arithmetic.
Copyright © 2015, 2012, 2009 Pearson Education, Inc., Publishing as Addison-Wesley All rights reserved. Chapter 3: Expressions and Interactivity.
CSE202: Lecture 10AThe Ohio State University1 Numerical Error.
Topic 2A – Library Functions and Casting. CISC 105 – Topic 2A Functions A function is a piece of code which performs a specific task. When a function.
1 Data types, operations, and expressions Continued l Overview l Assignment statement l Increment and Decrement operators l Short hand operators l The.
Data Types, Expressions and Functions (part I)
What is a variable?  A variable holds data in memory so the program may use that data, or store results.  Variables have a data type. int, boolean, char,
Expressions and Interactivity Chapter 3. 2 The cin Object Standard input object Like cout, requires iostream file Used to read input from keyboard Often.
 2003 Prentice Hall, Inc. All rights reserved. 1 Introduction to C++ Programming Outline Introduction to C++ Programming A Simple Program: Printing a.
Computer Programming Fundamental Data Types Adapted from C++ for Everyone and Big C++ by Cay Horstmann, John Wiley & Sons.
1 TAC2000/ Protocol Engineering and Application Research Laboratory (PEARL) MATH Functions in C Language.
Chapter 3 COMPLETING THE BASICS Programming Fundamentals with C++1.
CSE202: Lecture 4The Ohio State University1 Mathematical Functions.
Chapter 3 Expressions and Interactivity Department of Computer Science Missouri State Univeristy.
Copyright © 2012 Pearson Education, Inc. Chapter 3: Expressions and Interactivity.
D-1 University of Washington Computer Programming I Lecture 4: Arithmetic Expressions © 2000 UW CSE.
1 CSE1301 Computer Programming Lecture 5: Components of a C Program (Part 1) Linda M c Iver.
Summary of what we learned yesterday Basics of C++ Format of a program Syntax of literals, keywords, symbols, variables Simple data types and arithmetic.
CSE1222: Lecture 3The Ohio State University1. Assignment Operations  The C++ assignment operator is: =  Examples: x = 3 * 5; y = x – 7; y = y + 4; Do.
OPERATORS.
C++ Programming: Basic Elements of C++.
CSE1222: Lecture 2The Ohio State University1. mathExample2.cpp // math example #include using namespace std; int main() { cout
Copyright © 2000, Department of Systems and Computer Engineering, Carleton University 1 Program Outline // this slide illustrates the basic outline.
CPS120: Introduction to Computer Science Operations Lecture 9.
1 CISC181 Introduction to Computer Science Dr. McCoy Lecture 6 September 17, 2009.
CPSC 230 Computers and Programming I Spring 2003 Dr. Lynn Lambert.
Chapter 6 User-Defined Functions I. Objectives Standard (predefined) functions What are they, and How to use them User-Defined Functions Value returning.
CS Class 08 Today  Exercises  Nested loops  for statement  Built-in functions Announcements  Homework #3, group solution to in-class.
C++ Programming Lecture 9 Functions – Part I By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department.
Chapter 6 Mathematical Operations. 6.1 Mathematical Expressions In mathematics this expression is valid 0 = -4y + 5 It is invalid in programming Left.
Expressions and Interactivity. 3.1 The cin Object.
Chapter 3 Functions. 2 Overview u 3.2 Using C++ functions  Passing arguments  Header files & libraries u Writing C++ functions  Prototype  Definition.
Programming Fundamentals with C++1 Chapter 3 COMPLETING THE BASICS.
Recap……Last Time [Variables, Data Types and Constants]
Chapter 3 Numerical Data. Objectives After you have read and studied this chapter, you should be able to Select proper types for numerical data. Write.
D-1 University of Washington Computer Programming I Lecture 4: Arithmetic Expressions © 2000 UW CSE.
2/4/2016Engineering Problem Solving with C++, Second Edition, J. Ingber 1 Engineering Problem Solving with C++, Etter/Ingber Chapter 2 Simple C++ Programs.
Lecture 5: Expressions and Interactivity Professor: Dr. Miguel Alonso Jr. Fall 2008 CGS2423/COP1220.
29 January 2016Birkbeck College, U. London1 Introduction to Programming Lecturer: Steve Maybank Department of Computer Science and Information Systems.
Introduction to C++.  Computers: CPU, Memory & Input / Output (IO)  Program: Sequence of instructions for the computer.  Operating system: Program.
Chapter 3 – Variables and Arithmetic Operations. First Program – volume of a box /************************************************************/ /* Program.
C++ Basics Programming. COMP104 Lecture 5 / Slide 2 Introduction to C++ l C is a programming language developed in the 1970s with the UNIX operating system.
Last Time…. Operators Arithmetic Operators Assignment Operators Increment/Decrement Operators Relational Operators Logical Operators Expression Statements.
CSIS 113A Lecture 5 Functions. Introduction to Functions  Building Blocks of Programs  Other terminology in other languages:  Procedures, subprograms,
Functions Venkatesh Ramamoorthy 21-March Examples #include double y ; … y = sin(45*3.1416/180) ; std::cout
Arithmetic, Functions and Input 9/16/13. Arithmetic Operators C++ has the same arithmetic operators as a calculator: * for multiplication: a * b – Not.
Mathematical Manipulation Data types Operator precedence Standard mathematical functions Worked examples.
1 09/10/04CS150 Introduction to Computer Science 1 What Actions Do We Have Part 2.
Variables, Operators, and Expressions
Today Variable declaration Mathematical Operators Input and Output Lab
BIL 104E Introduction to Scientific and Engineering Computing
Arithmetic & other operations
Introduction to Programming
Wednesday 09/23/13.
Elementary Programming (C++)
CS150 Introduction to Computer Science 1
Arithmetic Operations
Presentation transcript:

CSE1222: Lecture 4The Ohio State University1

Mathematical Functions (1)  The math library file cmath Yes, this is a file with definitions for common and often used mathematical functions including: sine, cosine, log, and square root Provided by our C++ geniuses (Be thankful!)  Using the math library Include the following at the top of your program #include CSE1222: Lecture 4The Ohio State University2

Mathematical Functions (1)  How do you use or invoke a function in math? Specify … Its name Input parameters Retrieve its … Output or answer  Remember y = f(x) from math? f is the name x is the input parameter y will hold the output  A function has three parts: Name, input, and output CSE1222: Lecture 4The Ohio State University3

Mathematical Functions (1)  The cmath library defines a function called sqrt … What do you think it does? Function names are descriptive Function names must be spelled exactly how they are defined in their defining library (cmath here, so don’t guess! Look it up) You must provide exactly how many input parameters a function is defined to take A function can output at most one answer only  The square root function : Spelled sqrt Requires exactly one input parameter (a number) Outputs the square root of the input parameter  Question: Where does the output or answer go??? CSE1222: Lecture 4The Ohio State University4

Mathematical Functions (2)  This function invocation: double a = 81; double b = sqrt(a); Takes the value of the variable a as a single input parameter Executes the computation for a square root “Outputs” its answer in the assignment statement Rule (Memorize this!): The output value of a function invocation will relace the syntax of the function call in your program during program execution  During execution of this code the second line will execute in the following way: double b = sqrt(a); <---- Before execution double b = sqrt(81); <---- Evaluates the input parameter double b = 9.0; <---- This line uses the rule above CSE1222: Lecture 4The Ohio State University5

Mathematical Functions (2)  Is this program snippet nonsensical … Why or why not? double a = 81; sqrt(a); Is there a syntax error, i.e. will it compile? - No syntax error! But, avoid invoking a function in this way if it outputs a value. You are throwing away the output!  Is there a syntax error? Is it nonsensical? double a = 81; cout << sqrt(a); No syntax error! If a function invocation outputs a value, then ensure that the syntax of the function call is used with other code that performs useful work  This statement would output 11 cout << sqrt(121.0) << endl; CSE1222: Lecture 4The Ohio State University6

Mathematical Functions (2)  Is there a syntax error? double a = 81; double b = sqrt(a); double c = sqrt(sqrt(a)) * b;  No syntax error! A function can be used like a variable of the same data type  Remember our rule regarding the output of a function invocation How is it used here to evaluate the third line?  Here, a is 81, b is 9, and c is 27. Why? The sqrt function is called three separate times in this code snippet Which function is invoked first, which is invoked second, and then which is invoked third? CSE1222: Lecture 4The Ohio State University7

Mathematical Functions (3)  What does the cmath library function pow do? Computes a b, where a and b are two numbers Its name tries to tell you what operation the function performs for you  How many input parameters does this function require? We need a base and an exponent, so two input parameters  Does this function output a single answer or no answer? It must return the value for a b, so one answer  For example cout << pow(3.0, 4.0); would output 81 which is 3 to the 4 th power. Notice the two input parameters in the parenthesis (comma separated). The base must come BEFORE the power! CSE1222: Lecture 4The Ohio State University8

Mathematical Functions (4)  Arguments passed into any function can be a constant, variable, or an expression that evaluates to the appropriate data type  For Example, double j = 2.0; cout << sqrt(j * 32.0); //outputs 8 Remember, the sqrt function requires exactly one argument CSE1222: Lecture 4The Ohio State University9

Mathematical Functions (5)  Functions can themselves be part of an expression double x = 10; cout << 5 * pow( (x - 3), 2.0 ); //output? Remember our rule regarding function output and where it goes? Remember, the pow function requires exactly two arguments CSE1222: Lecture 4The Ohio State University10

Common Math Functions FunctionReturned ValueData Type of Returned Value abs(a) Absolute value of a Data type of a pow(b,e) Value of b raised to the e th power float or double Data type of b sqrt(a) Square root of a double sin(a) Sine of a in radians double cos(a) Cosine of a in radians double tan(a) Tangent of a in radians double log(a) Natural log of a double log10(a) Common log (base 10) of a double exp(a)e raised to the a th power double CSE1222: Lecture 4The Ohio State University11

Example: sqrt() #include using namespace std; int main() { double x(0.0), y(0.0); double dist(0.0); cout << "Enter x, y: "; cin >> x >> y; dist = sqrt(x * x + y * y); cout << "Distance of (" << x << "," << y << ") to (0,0) = " << dist << endl; return 0; } // What are we computing here (in plain english)? // Compile and execute after class! CSE1222: Lecture 4The Ohio State University12

> distance.exe Enter x, y: 3 4 Distance of (3,4) to (0,0) = 5 > distance.exe Enter x, y: 5 8 Distance of (5,8) to (0,0) = CSE1222: Lecture 4The Ohio State University13 … cout << "Enter x, y: "; cin >> x >> y; dist = sqrt(x * x + y * y); cout << "Distance of (" << x << "," << y << ") to (0,0) = " << dist << endl; …

Example 2: sqrt() #include #include // math function library using namespace std; int main () { double height(0), time(0.0); cout << "Enter height (feet): "; cin >> height; time = sqrt(2.0 * height / 32.2); cout << "It will take " << time << " seconds to fall " << height << " feet. " << endl; return 0; } // What are we computing here (in plain english)? CSE1222: Lecture 4The Ohio State University14

> gravity.exe Enter height: 100 It will take seconds to fall 100 feet. > gravity.exe Enter height (feet): 500 It will take seconds to fall 500 feet. CSE1222: Lecture 4The Ohio State University15 … cout << "Enter height (feet): "; cin >> height; time = sqrt(2.0 * height / 32.2); cout << "It will take " << time << " seconds to fall " << height << " feet. " << endl; …

Example: log() #include using namespace std; int main() { double rate(0.0), years(0.0); cout << "Enter annual interest rate (percentage): "; cin >> rate; years = log(2.0) / log(1 + (rate / 100.0)); cout << "Your money will double in " << years << " years." << endl; return 0; } // What are we computing here (in plain english)? CSE1222: Lecture 4The Ohio State University16

> interest.exe Enter annual interest rate (percentage): 7 Your money will double in years. > interest.exe Enter annual interest rate (percentage): 2 Your money will double in years. CSE1222: Lecture 4The Ohio State University17 … cout << "Enter annual interest rate (percentage): "; cin >> rate; years = log(2.0) / log(1 + (rate / 100.0)); cout << "Your money will double in " << years << " years." << endl; …

Trigonometric Math Functions  Read your documentation on functions!  Trigonometric math functions (such as sin, cos, and tan ) require input parameters to be in radians CSE1222: Lecture 4The Ohio State University18

Example: sin(), cos() #include using namespace std; int main() { double angle(0.0), x(0.0), y(0.0); cout << "Enter rotation angle (radians): "; cin >> angle; x = cos(angle); y = sin(angle); cout << "Point (1,0) rotates to point" << "(" << x << "," << y << ")" << endl; return 0; } // What are we computing here (in plain english)? CSE1222: Lecture 4The Ohio State University19

> rotate_radians.exe Enter rotation angle (radians): 1.57 Point (1,0) rotates to point ( ,1) > rotate_radians.exe Enter rotation angle (radians): 0.78 Point (1,0) rotates to point ( , ) CSE1222: Lecture 4The Ohio State University20 … cout << "Enter rotation angle (radians): "; cin >> angle; x = cos(angle); y = sin(angle); cout << "Point (1,0) rotates to point" << "(" << x << "," << y << ")" << endl; …

Common Math Constants  Besides functions, the cmath library file also defines some commonly used math constants  Use these like variables Though, being “constants” you cannot assign a new value to them ConstantValue M_PI π, … M_E e, the base of natural logarithms M_LOG2E Base-2 logarithm of e M_LOG10E Base-10 logarithm of e M_LN2 Natural log of 2 M_LN10 Natural log of 10 CSE1222: Lecture 4The Ohio State University21

degrees2radians.cpp #include #include // cmath contains definitions of math constants using namespace std; int main() { double degrees(0.0), radians(0.0); cout << "Enter angle in degrees: "; cin >> degrees; radians = (degrees * M_PI) / 180.0; // Convert degrees to radians cout << "Angle in radians = " << radians << endl; return 0; } // What are we computing here (in plain english)? CSE1222: Lecture 4The Ohio State University22

rotate_degrees.cpp #include #include // cmath contains definitions of math constants using namespace std; int main() { double degrees(0.0), radians(0.0), x(0.0), y(0.0); cout << "Enter rotation angle (degrees): "; cin >> degrees; radians = (degrees * M_PI) / 180.0; x = cos(radians); y = sin(radians); cout << "Point (1,0) rotates to point (" << x << "," << y << ")" << endl; return 0; } // What are we computing here (in plain english)? CSE1222: Lecture 4The Ohio State University23

> rotate_degrees.exe Enter rotation angle (degrees): 90 Point (1,0) rotates to point ( e-17,1) > rotate_degrees.exe Enter rotation angle (degrees): 45 Point (1,0) rotates to point ( , ) CSE1222: Lecture 4The Ohio State University24 … cout << "Enter rotation angle (degrees): "; cin >> degrees; radians = (degrees * M_PI) / 180.0; x = cos(radians); y = sin(radians); cout << "Point (1,0) rotates to point" << "(" << x << "," << y << ")" << endl; …

log_2.cpp #include #include // cmath contains definitions of math constants using namespace std; int main() { double x(0.0), y(0.0); cout << "Enter number: "; cin >> x; y = log(x) / M_LN2; cout << "log_e(" << x << ") = " << log(x) << endl; cout << "log_2(" << x << ") = " << y << endl; return 0; } // What are we computing here (in plain english)? CSE1222: Lecture 4The Ohio State University25

Arguments to Math Functions  Input parameters (i.e., arguments) to math functions should have type double  For example, double x(3.6), y(0.3), z(0.0); z = sin(1.2); z = sqrt(x); z = log(3.2 * x); z = pow(x / 0.5, 1.2 * y); CSE1222: Lecture 4The Ohio State University26

logError.cpp... int main() { int value(0); cout << "Enter value: "; cin >> value; // log(value) generates a compiler error cout << "At 10% interest, it will take " << log(value)/log(1.1) << " years for a $1 investment to be worth $" << value << "." << endl; return 0; } CSE1222: Lecture 4The Ohio State University27

> g++ logError.cpp –o logError.exe Compiling logError.cpp into logError.exe. logError.cpp: In function 'int main()': logError.cpp:16: call of overloaded 'log(int&)' is ambiguous /usr/include/iso/math_iso.h:52: candidates are: double log(double) /usr/local/include/g++-v3/bits/std_cmath.h:333: long double std::log(long double) /usr/local/include/g++-v3/bits/std_cmath.h:323: float std::log(float) CSE1222: Lecture 4The Ohio State University28 … 15. // log(value) generates a compiler error 16. cout << "At 10% interest, it will take " << log(value) / log(1.1) 17. << " years for a $1 investment to be worth $" << value << "." << 18. endl; … // What is the problem here? What is the data type for variable “value”?

logExample.cpp... int main() { int value(0); double x(0.0); cout << "Enter value: "; cin >> value; x = value; // implicit conversion to double cout << "At 10% interest, it will take " << log(x)/log(1.1) << " years for a $1 investment to be worth $" << value << "." << endl; return 0; } // Will this do the trick? CSE1222: Lecture 4The Ohio State University29

> logExample.cpp Enter value: 10 At 10% interest, it will take years for a $1 investment to be worth $10. > CSE1222: Lecture 4The Ohio State University30 … double x(0.0);... x = value;// implicit conversion to double cout << "At 10% interest, it will take " << log(x)/log(1.1) << " years for a $1 investment to be worth $" << value << "." << endl; …

CSE1222: Lecture 4The Ohio State University31

Modulus Operator: %  In math a mod b is the remainder after integer a is divided by integer b  You can think of this operator as a function: 1) name (%), two operands (two integer input parameters), one output (an integer)  In C++ a mod b is written as: a % b  Examples: 25 % 3 = ? 137 % 10 = ? 2751 % 2 = ? CSE1222: Lecture 4The Ohio State University32

Expression Types  An expression consists of constants, variables, and function invocations that output single values and evaluates to a single answer For example, 5 * pow( (x - 3), 2.0 )  An expression that contains only integer operands is an integer expression  An expression that contains only floating point operands is a floating-point expression CSE1222: Lecture 4The Ohio State University33

Mixing Expression Types  A mixed-mode expression has both floating-point and integer data types  The rules governing the data type of the result are: 1. If both operands are integers, the result is an integer 2. If one operand is a floating-point number, then the result is a double CSE1222: Lecture 4The Ohio State University34

Mixed Mode Expressions int a(3); double x(3.5), y(5), z(0.0); z = 3.0 * 25; z = a * x; z = a * y; What about: z = x + (a / 2); CSE1222: Lecture 4The Ohio State University35

Exercises int a(3), b(2); double y(5), z(0.0); After each operation, what is z? z = (y + a) / b; z = (y * a) / b; z = y * (a / b); z = (y / b) * (a / b); z = (a + b) / (b * y); CSE1222: Lecture 4The Ohio State University36

logError.cpp... int main() { int value(0); cout << "Enter value: "; cin >> value; // log(value) generates a compiler error cout << "At 10% interest, it will take " << log(value)/log(1.1) << " years for a $1 investment to be worth $" << value << "." << endl; return 0; } CSE1222: Lecture 4The Ohio State University37

logExample2.cpp... int main() { int value(0); cout << "Enter value: "; cin >> value; // Mixed mode expression "value * 1.0" returns double. cout << "At 10% interest, it will take " << log(value * 1.0)/log(1.1) << " years for a $1 investment to be worth $" << value << "." << endl; return 0; } CSE1222: Lecture 4The Ohio State University38

CSE1222: Lecture 4The Ohio State University39

Evaluate  What does this express evaluate to? * 6 – 4 / 2 = ??? Try it out on a sheet of paper CSE1222: Lecture 4The Ohio State University40

Evaluate  What does this express evaluate to? 20 – 16 / * 3 = ???  What if we insert parenthesis in different places?  (((20 – 16) /2) +2) * 3 = 12  ((20 – 16) / (2 + 2)) * 3 = 3  20 – ((16/2) + (2*3)) = -4 CSE1222: Lecture 4The Ohio State University41

Operator Precedence and Associativity  The minus sign is overloaded Used as a binary operator for subtraction Used as a unary operator to negate the sign  How do you know which one you are using? int a = b – c;<---- Is this negation? int a = - c; <---- Is this negation?  Depends on the context, operator precedence, and associativity rules CSE1222: Lecture 4The Ohio State University42

Operator Precedence and Associativity  Expressions are evaluated from left to right  If there is an ambiguity, then operator precedence determines which operators is evaluated first PrecedenceAssociativity () Unary - * / %Left to right + -Left to right CSE1222: Lecture 4The Ohio State University43

arithmetic3.cpp // Precedence of arithmetic operators #include using namespace std; int main() { cout << "-3+5*2 = " << -3+5*2 << endl << endl; // Is this? cout << "((-3)+5)*2 = " << ((-3)+5)*2 << endl; cout << "(-(3+5))*2 = " << (-(3+5))*2 << endl; cout << "(-3)+(5*2) = " << (-3)+(5*2) << endl; cout << "-(3+(5*2)) = " << -(3+(5*2)) << endl; return 0; } CSE1222: Lecture 4The Ohio State University44

Math in C++ Review  Use #include for math functions  Common math functions: abs(a), pow(b,e), sqrt(a), sin(a), cos(a), tan(a), log(a), log10(a), exp(a)  Common math constants: M_PI, M_E, M_LN2, M_LN10 CSE1222: Lecture 4The Ohio State University45

Math in C++ Review  Arguments to functions should always be double  Mixed mode operations: ( ) or (3.0 * 5) have type double;  Operator precedence: Multiplication and division before addition and subtraction CSE1222: Lecture 4The Ohio State University46