1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math...

30
1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function ? Math Library Functions Character Functions Reading Sample Programs CSE 20232 CSE 20232 Lecture 4 – Algorithms & Lecture 4 – Algorithms & Decisions Decisions

Transcript of 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math...

Page 1: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

1

Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs

CSE 20232CSE 20232Lecture 4 – Algorithms & Decisions Lecture 4 – Algorithms & Decisions

Page 2: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

2

Algorithms

What is an algorithm? A precise description of the sequence of steps

necessary to solve some task Your programs begin as algorithms

Sample: finding absolute value 1 – prompt user and get users input value 2 – if value is negative then negate it 3 – output result

Page 3: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

3

Converting Algorithms to Code

Place algorithm in program shell as comments

#include <iostream>using namespace std;int main (){ // 1 - prompt user and get user’s input

// 2 - if input value is negative then negate it

// 3 - output result return 0;}

Page 4: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

4

Converting Algorithms to Code Then fill in C++ code for each algorithm step

#include <iostream>using namespace std;int main (){ int value; // 1 - prompt user and get user’s input cout << “Enter an integer value: “; cin >> value; // 2 - if input value is negative then negate it if (value < 0) value = -value; // 3 - output result cout << “Its absolute value is : “ << value << endl; return 0;}

Page 5: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

5

Basic Control of Execution

There are three primary methods of controlling the flow of program execution Sequence – this is the default Selection – here a choice is made to

Perform a step or not Perform one step or another

Repetition – also known as Iteration Repeat a step over and over Recursion also allows us to repeat steps, but we will

wait to discuss this until later

Page 6: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

6

Control structure example Program that repeatedly calculates absolute values

#include <iostream>using namespace std;int main (){ int value; cout << “Enter an integer value (or q to quit): “; cin >> value; while (! cin.fail()) // <-- repetition { if (value < 0) // <-- selection value = -value; cout << “Its absolute value is : “ << value << endl; cout << “Enter an integer value (or q to quit): “; cin >> value; } return 0;}

Page 7: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

7

Comparisons

Operators (x < y) less than (x <= y) less than or equal (x > y) greater than (x >= y) greater than or equal (x == y) equal (x != y) not equal

Page 8: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

8

Logical (boolean) expressions

Operators (x && y) x and y (x || y) x or y –- (inclusive or) (! x) not x

Precedence (highest to lowest) ! < <= > >= == != && ||

Page 9: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

9

Comparisons & Logic Comparisons and logical (boolean) expressions all

evaluate to true or false

In C, zero (0) takes place of false and any non-zero value can represent true

Examples: x=2 x=12 (x < 5) true false (1 <= x) && (x <= 10) true false (x < 1) || (10 < x) false true !(x == 5) == (x != 5) true true

Page 10: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

10

Boolean Operation Truth Tables

x y x && y x || y ! x

------- ------- ------- ------- -------

false false false false true

false true false true true

true false false true false

true true true true false

Page 11: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

11

If ( … ) statement

if ( … ) allows two methods of choosing what code to execute or not This form either executes the <statement> or not,

depending on the truth of the <expression>if ( <expression> ) <statement>

This form executes <statement 1> if <expression> is true, otherwise it executes <statement 2>if ( <expression> ) <statement 1>else <statement 2>

Page 12: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

12

If ( … ) statement examples

cin >> value;

if (value < 0)

value = -value; // skipped if value not negative

if ((x < 1) || (10 < x))

cout << “x is out of range\n”;

else

cin << “x is in range\n”;

Page 13: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

13

Code Blocks

A block of code is any sequence of statements between open and closed braces { }

A block can take the place of any single statement in C or C++

A block may also have declarations of variables (objects) that exist only within the block This is called local scope Locally declared objects cease to exist when

execution leaves the block

Page 14: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

14

Code Block Example

cout << “Enter a non-negative value: “;

cin >> value;

if (value < 0)

{

// give user a chance to correct the input

cout << “That value is negative\n”

<< “Please enter a non-negative value: “;

cin >> value;

}

Page 15: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

15

Nesting

Since if ( … ) is a statement itself, it can be nested inside other if statements

if (a < 0) cout << “is negative”;else if (a > 0) cout << “is positive”; else cout << “is zero”;

Page 16: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

16

Nesting Warning The else is always paired with the closest

preceding unpaired if The following does not perform as the indentation

would lead you to believe When A is -15 output is is negative is very negative When A is -8 output is is negative is non-negative When A is 10 output is is non-negative

if (A < 0) cout << “ is negative”; if (A < -10) cout << “ very negative”;else cout << “ is non-negative”;

Page 17: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

17

Nesting Warning The code below “fixes” the confusion, associates the

else with the first if, and outputs appropriate descriptions of A When A is -15 output is is negative is very negative When A is -8 output is is negative When A is 10 output is is non-negative

if (A < 0){ cout << “ is negative”; if (A < -10) cout << “ very negative”;}else cout << “ is non-negative”;

Page 18: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

18

What is a function?

A function is a named, parameterized block of code that computes a value or performs a task

We invoke a function by using its name with appropriate parameters as a statement in our code, or as part of an expression

Example: double sqrt(double v); // prototype

The square root function from the math library It computes the square root of the value of the parameter v

and returns the result to the calling context y = sqrt(x+37.5); // invocation

Page 19: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

19

Math Library Functions#include <cmath>

abs(x) – absolute value of x sqrt(x) – square root of x pow(x,y) – xy

ceil(x) – smallest integer larger than x floor(y) – largest integer smaller than x exp(x) - ex

log(x) – natural log of x – ln(x) log10(x) – log10(x) sin(x) – sine of x, range +/- 1.0, x in radians cos(x) – cosine of x, range +/- 1.0, x in radians tan(x) – tangent of x, x in radians asin(x) – arcsine of x, range +/- PI/2 acos(x) – arccosine of x, range 0 to PI atan(x) – arctangent of x, range +/- PI/2 atan2(x,y) – arctangent of x,y, range +/ PI

Page 20: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

20

Character Functions#include <cctype>

toupper(ch) – returns upper case equiv. of ch tolower(ch) – returns lower case equiv. of ch isalpha(ch) – true if ch is a letter a..z, A..Z isdigit(ch) – true if ch is a digit 0..9 There are more …

Page 21: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

21

Reading (revised)

Continue reading in Deitel … Week 2

Sections 2.5-2.7, 6.1-6.6 (also Ch4 sections below) Appendices B, C, E.1-E.2

Week 3 Sections 4.1-4.12, 15.1-15.8 Appendices F.1-F.3

Page 22: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

22

Trajectories

Range = vx0 * tof

vy0

vx0

v0

Height = vy0 * tmid + 0.5 * g * tmid2

vy(tmid) = 0 = vy0 + g * tmid

So, tmid = -vy0 / g

g = -32.0 ft/sec2

General Position Calculations

x = x0 + vx0 * t

y = y0 + vy0 * t + 0.5 * g * t2

vy = vy0 + g * t

tof = 2 * tmid

Page 23: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

23

Calculating Range of a Projectile

This is a parabolic trajectory under the influence of Earth gravity, but no air

Algorithm 1 – prompt user and read launch angle in degrees 2 – prompt user and read initial velocity in ft/sec 3 – calculate vx & vy (initial velocity components) 4 – calculate time of flight (no air, gravity -32 ft/s/s) 5 – calculate range 6 – output results

Page 24: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

24

Calculating Range of a Projectile// range.cpp – JHS – 8/29/06 – CSE Notre Dame#include <iostream>#include <iomanip>#include <cmath>using namespace std;int main (){ const double g = -32.0; const double rads_per_degree = 2 * 3.14159 / 360.0; double thetaD, thetaR, v0, vx0, vy0, t, time_of_flight;

// 1 – prompt user and read launch angle in degrees cout << “ Enter angle of barrel above horizon (in degrees): “; cin >> thetaD; thetaR = thetaD * rads_per_degree; // convert to radians

// 2 – prompt user and read initial velocity in ft/sec cout << “ Enter initial velocity of projectile (in ft/sec): “; cin >> v0;

Page 25: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

25

Calculating Range of a Projectile // 3 – calculate vx & vy (initial velocity components) vx0 = v0 * cos(thetaR); vy0 = v0 * sin(thetaR);

// 4 – calculate time of flight (no air, gravity -32 ft/s/s) t = -vy0 / g; time_of_flight = 2.0 * t;

// 5 – calculate range, etc, and output results cout << fixed << setprecision(2); cout << “Projectile firing: Initial conditions\n”; cout << setw(10) << thetaD << “ degrees above horizon\n”; cout << setw(10) << v0 << “ ft/sec muzzle velocity\n”; cout << “Trajectory characteristics:\n”; cout << setw(10) << time_of_flight << “ seconds in flight\n”; cout << setw(10) << (vx0*time_of_flight) << “ feet down range\n”; cout << setw(10) << (vy0*t + 0.5*g*t*t) << “ feet max height\n”; return 0;}

Page 26: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

26

Quadratic Polynomial Roots

Find solutions (roots) to 0 = ax2 + bx + c There are several different cases

1: a == 0, b != 0, there is one real root x = -c/b 2: a == 0, b == 0, c != 0, nonsense equation with no roots 3: a == 0, b == 0, c == 0, every value of x is a root 4: a != 0, x = (-b +/- sqrt(b2 - 4ac))/2a, potentially two roots

(A) (b2 - 4ac) < 0, roots are complex not real (B) (b2 - 4ac) == 0, there is one real root x = -b/2a (C) (b2 - 4ac) > 0, there are two real roots

x1 = (-b + sqrt(b2 - 4ac))/2a x2 = (-b - sqrt(b2 - 4ac))/2a

Page 27: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

27

Quadratic Polynomial Roots

Algorithm: 1 - prompt user and read three coeficients (a,b,c) 2 - determine which case above (1,2,3,4) 3 - in cases 1, 2, & 3 computer root and output

result or output appropriate message 4 - in case 4, calculate the value of b2 - 4ac and

determine which case applies (A,B,C) 5 - in case A output message 6 - in cases B & C calculate root(s) and output

results

Page 28: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

28

Quadratic Polynomial Roots// roots.cpp – JHS - 2003#include <iostream>#include <cmath>using namespace std;int main( ){ double a,b,c; // coefficients of quadratic equation double rad; // will be the value under the square root double root1,root2;

cout << "Enter the values of a, b, and c for" << " the quadratic equation\n"; cout << " (ax^2 + bx + c) = 0\n"; cout << "> "; cin >> a >> b >> c; cout << "\nFor the equation (" << a << "x^2 + " << b << "x + " << c << " = 0)\n";

Page 29: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

29

Quadratic Polynomial Roots if (a == 0.0) { if (b == 0.0) if (c == 0.0) cout << "Any value is a root of this equation\n"; else cout << "There is no root of this equation\n"; else { root1 = -c / b; cout << “One real root (x = " << root1 << ")\n"; } } else { rad = b * b - 4 * a * c;

Page 30: 1 Algorithms Basic Control Structures Comparisons and if (…) statement What is a function? Math Library Functions Character Functions Reading Sample Programs.

30

Quadratic Polynomial Roots if (rad < 0.0) cout << " There are only complex roots\n"; else if (rad == 0.0) { root1 = -b / (2 * a); cout << “One real root (x = " << root1 << ")\n"; } else { root1 = (-b - sqrt(rad)) / (2 * a); root2 = (-b + sqrt(rad)) / (2 * a); cout << “Two real roots (x = " << root1 << " and x = " << root2 << ")\n"; } } return 0;}