Flow of Control. bool Data Type. Flow Of Control. Expressions. C++ Control Structures < <= > >= ==!= ! &&

Similar documents
Chapter 5. Conditions, Logical Expressions, and Selection Control Structures

Chapter 5 Topics. Chapter 5 Topics. Flow of Control. bool Data Type. Flow of Control. Chapter 5

Flow of programming execution control is sequential unless a control structure is used to change that there are 2 general types of

Conditions and Logical Expressions. C Programming

Logic & program control part 3: Compound selection structures

Logic & program control part 2: Simple selection structures

Conditions, logical expressions, and selection. Introduction to control structures

Conditions, logical expressions, and selection. Introduction to control structures

Objectives. Chapter 4: Control Structures I (Selection) Objectives (cont d.) Control Structures. Control Structures (cont d.) Relational Operators

C++ Programming: From Problem Analysis to Program Design, Third Edition

Chapter 4: Control Structures I (Selection) Objectives. Objectives (cont d.) Control Structures. Control Structures (cont d.

Chapter 4 - Notes Control Structures I (Selection)

Chapter 4: Making Decisions. Copyright 2012 Pearson Education, Inc. Sunday, September 7, 14

4.1. Chapter 4: Simple Program Scheme. Simple Program Scheme. Relational Operators. So far our programs follow a simple scheme

CS1150 Principles of Computer Science Boolean, Selection Statements

1. Word Analysis: (Which nouns suggest a need for memory (a variable) and which verbs suggest a need for action (a function maybe).

CHRIST THE KING BOYS MATRIC HR. SEC. SCHOOL, KUMBAKONAM CHAPTER 9 C++

Chapter 4: Control Structures I (Selection)

Control Structures. Lecture 4 COP 3014 Fall September 18, 2017

Computer Programming : C++

CS2141 Software Development using C/C++ C++ Basics

Flow of Control. Flow of control The order in which statements are executed. Transfer of control

V2 2/4/ Ch Programming in C. Flow of Control. Flow of Control. Flow of control The order in which statements are executed

Review: Exam 1. Your First C++ Program. Declaration Statements. Tells the compiler. Examples of declaration statements

CHAPTER 3 BASIC INSTRUCTION OF C++

Chapter 3. Numeric Types, Expressions, and Output

CSCI 1061U Programming Workshop 2. C++ Basics

The C++ Language. Arizona State University 1

Chapter 2. C++ Basics. Copyright 2014 Pearson Addison-Wesley. All rights reserved.

If Control Construct

Boolean Algebra Boolean Algebra

Chapter 2: Introduction to C++

Chapter 2: Special Characters. Parts of a C++ Program. Introduction to C++ Displays output on the computer screen

Multiple Choice (Questions 1 13) 26 Points Select all correct answers (multiple correct answers are possible)

Introduction to Programming

LECTURE 02 INTRODUCTION TO C++

LECTURE 04 MAKING DECISIONS

download instant at Introduction to C++

Chapter 2. C++ Basics. Copyright 2014 Pearson Addison-Wesley. All rights reserved.

Chapter 2. C++ Basics

! A program is a set of instructions that the. ! It must be translated. ! Variable: portion of memory that stores a value. char

BITG 1233: Introduction to C++

Chapter 4: Making Decisions

CSCE 206: Structured Programming in C++

Loops and Files. of do-while loop

Chapter 4: Making Decisions

2.1. Chapter 2: Parts of a C++ Program. Parts of a C++ Program. Introduction to C++ Parts of a C++ Program

By the end of this section you should: Understand what the variables are and why they are used. Use C++ built in data types to create program

C++ Input/Output Chapter 4 Topics

Chapter 3 Problem Solving and the Computer

Relational Operators and if. Class 10

The sequence of steps to be performed in order to solve a problem by the computer is known as an algorithm.

Basic program The following is a basic program in C++; Basic C++ Source Code Compiler Object Code Linker (with libraries) Executable

The following expression causes a divide by zero error:

CSI33 Data Structures

A First Program - Greeting.cpp

CSc Introduc/on to Compu/ng. Lecture 8 Edgardo Molina Fall 2011 City College of New York

C++ Programming: From Problem Analysis to Program Design, Fourth Edition. Chapter 4: Control Structures I (Selection)

Chapter 6 Topics. While Statement Syntax Count-Controlled Loops Event-Controlled Loops Using the End-of-File Condition to Control Input Data

Identify skills and personality traits of successful problem solving. Apply standard problem-solving techniques to aid in problem solving.

Chapter 2: Overview of C++

Computer Programming. Basic Control Flow - Decisions. Adapted from C++ for Everyone and Big C++ by Cay Horstmann, John Wiley & Sons

Objectives. Chapter 4: Control Structures I (Selection) Objectives (cont d.) Control Structures

Chapter 1 INTRODUCTION

Your first C++ program

Introduction to Programming EC-105. Lecture 2

Chapter 3 Selections. Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved.

Chapter Overview. C++ Basics. Variables and Assignments. Variables and Assignments. Keywords. Identifiers. 2.1 Variables and Assignments

1- Write a single C++ statement that: A. Calculates the sum of the two integrates 11 and 12 and outputs the sum to the consol.

CSc 10200! Introduction to Computing. Lecture 2-3 Edgardo Molina Fall 2013 City College of New York

Programming. C++ Basics

2 nd Week Lecture Notes

Objectives. In this chapter, you will:

Arithmetic Operators. Binary Arithmetic Operators. Arithmetic Operators. A Closer Look at the / Operator. A Closer Look at the % Operator

conditional statements

Fundamentals of Programming CS-110. Lecture 2

CS 101 Computer Programming and utilization. Dr Deepak B Phatak Subrao Nilekani Chair Professor Department of CSE, Kanwal Rekhi Building IIT Bombay

Chapter 2 Basic Elements of C++

Chapter 2. C++ Syntax and Semantics, and the Program Development Process. Dale/Weems 1

Multiple Choice (Questions 1 13) 26 Points Select all correct answers (multiple correct answers are possible)

C++ For Science and Engineering Lecture 12

Computer Programming. Basic Control Flow - Loops. Adapted from C++ for Everyone and Big C++ by Cay Horstmann, John Wiley & Sons

! A literal represents a constant value used in a. ! Numbers: 0, 34, , -1.8e12, etc. ! Characters: 'A', 'z', '!', '5', etc.

Linear execution of statements. CISC 1600/1610 Computer Science I. Alternatives to linear execution. Linear execution of statements

LAB 4.1 Relational Operators and the if Statement

Selection Statements. Pseudocode

5. Selection: If and Switch Controls

REVIEW. The C++ Programming Language. CS 151 Review #2

ADARSH VIDYA KENDRA NAGERCOIL COMPUTER SCIENCE. Grade: IX C++ PROGRAMMING. Department of Computer Science 1

BITG 1223: Selection Control Structure by: ZARITA (FTMK) LECTURE 4 (Sem 1, 16/17)

There are algorithms, however, that need to execute statements in some other kind of ordering depending on certain conditions.

Motivations. Chapter 3: Selections and Conditionals. Relational Operators 8/31/18. Objectives. Problem: A Simple Math Learning Tool

Non-numeric types, boolean types, arithmetic. operators. Comp Sci 1570 Introduction to C++ Non-numeric types. const. Reserved words.

Week 2: Console I/O and Operators Arithmetic Operators. Integer Division. Arithmetic Operators. Gaddis: Chapter 3 (2.14,3.1-6,3.9-10,5.

C++ Programming: From Problem Analysis to Program Design, Third Edition

Introduction to Computers and C++ Programming p. 1 Computer Systems p. 2 Hardware p. 2 Software p. 7 High-Level Languages p. 8 Compilers p.

Control Statements. If Statement if statement tests a particular condition

Chapter 3. More Flow of Control

Problem Solving: Storyboards for User Interaction

Integer Data Types. Data Type. Data Types. int, short int, long int

Transcription:

Flow of Control Sequential unless a control structure is used to change the order Conditions, Logical s, And Selection Control Structures Two general types of control structures Selection (also called branching) Repetition (also called looping) 2 Flow Of Control Flow of control refers to the order in which program statements are performed We have seen the following ways to specify flow of control if--statements while-statements do-while-statements switch-statements for-statements bool Data Type Type bool is a built- in type consisting of just 2 values, the constants and false We can declare variables of type bool bool hasfever; // if has high temperature bool issenior; // if age is at least 55 3 4 C++ Control Structures s Selection if if... switch Repetition for loop while loop do... while loop 5 Control structures use logical expressions to make choices, which may include: 6 Relational Operators < <= > >= ==!= 3 Logical Operators! && 6 1

6 Relational Operators are used in expressions of form: A Operator B Given int x, y; x = 4; y = 6; Value temperature > humidity rain >= average B * B - 4.0 * A * C < 0.0 hours <= 40 abs (number) == 35 initial!= Q 7 x < y x + 2 < y x!= y x + 3 >= y y == x y == x+2 y = x + 3 false false 7 () 8 Comparing Strings Two objects of type string (or a string object and a C string) can be compared using the relational operators string mystate; string yourstate; mystate = Texas ; yourstate = Maryland ; A character-by-character comparison is made using the ASCII character set values Value If all the characters are equal, then the 2 strings are equal. Otherwise, the string with the character with smaller ASCII value is the lesser string mystate == yourstate mystate > yourstate mystate == Texas false 9 mystate < texas 10 Operator Meaning Associativity! NOT Right *, /, % Multiplication, Division, Modulus Left +, - Addition, Subtraction Left < Less than Left <= Less than or equal to Left > Greater than Left >= Greater than or equal to Left == Is equal to Left!= Is not equal to Left && AND Left OR Left = Assignment Right 11 Logical Meaning Description! p NOT p! p is false if p is! p is if p is false p && q p AND q p && q is if both p and q are. It is false otherwise. p q p OR q p q is if either p or q or both are. It is false otherwise. 11 12 2

int age; bool issenior, hasfever; float temperature; age = 20; temperature = 102.0; issenior = (age >= 55); // issenior is false hasfever = (temperature > 98.6); // hasfever is Value issenior && hasfever false issenior hasfever! issenior! hasfever false int age, height; age = 25; height = 70; What is the value?!(age < 10)?!(height > 60)? Value 13 14 Short-Circuit Evaluation C++ uses short circuit evaluation of logical expressions This means logical expressions are evaluated left to right and evaluation stops as soon as the final truth value can be determined 15 Short-Circuit int age, height; age = 25; height = 70; (age > 50) && (height > 60) false Evaluation can stop now because result of && is only when both sides are ; thus it is already determined that the expression will be false 16 More Short-Circuiting int age, height; age = 25; height = 70; (height > 60) (age > 40) int age, weight; age = 25; weight = 145; What happens? (weight < 180) && (age >= 20) Evaluation can stop now because result of is if either side is ; thus it is already determined that the expression will be 17 Must still be evaluated because truth value of entire expression is not yet known (Why?) 18 3

int age, height; age = 25; height = 70; What happens?! (height > 60) (age > 50) Write an expression for each taxrate is over 25% and income is less than $20000 temperature is less than or equal to 75 or humidity is less than 70% age is over 21 and age is less than 60 false Does this part need to be evaluated? 19 age is 21 or 22 20 Some Answers Use Precedence Chart (taxrate >.25) && (income < 20000) (temperature <= 75) (humidity <.70) (age > 21) && (age < 60) (age == 21) (age == 22) 21 int number; float x; number!= 0 && x < 1 / number / has highest priority < next priority!= next priority && next priority What happens if number has value 0? Run Time Error (Division by zero) occurs 22 Short-Circuit Benefits Our Revisited One Boolean expression can be placed first to guard a potentially unsafe operation in a second Boolean expression Time is saved in evaluation of complex expressions using operators and && 23 int number; float x; (number!= 0) && (x < 1 / number) is evaluated first and has value false Because operator is &&, the entire expression will have value false; because of shortcircuiting, the right side is not evaluated in C++ 24 4

WARNING about s in C++ Boolean expression means an expression whose value is or false An expression is any valid combination of operators and operands Each expression has a value, which can lead to unexpected results Construct your expressions carefully use precedence chart to determine order use parentheses for clarification (and safety) 25 What went wrong? This is only supposed to display HEALTHY AIR if the air quality index is between 50 and 80. But when you tested it, it displayed HEALTHY AIR when the index was 35. int AQIndex; AQIndex = 35; if (50 < AQIndex < 80) cout << HEALTHY AIR ; 26 Analysis of Situation Corrected Version AQIndex = 35; According to the precedence chart, the expression (50 < AQIndex < 80) means (50 < AQIndex) < 80 because < is Left Associative (50 < AQIndex) is false (has value 0) int AQIndex; AQIndex = 35; if ((50 < AQIndex) && (AQIndex < 80)) cout << HEALTHY AIR ; (0 < 80) is. 27 28 Comparing Real Values Flow of Control Do not compare floating point values for equality, compare them for near- equality. float mynumber; float yournumber; cin >> mynumber; cin >> yournumber; if (fabs (mynumber - yournumber) < 0.00001) cout << They are close enough! << endl; 29 Flow of control is the order in which program statements are executed THE 3 POSSIBILITIES ARE: Sequential Selection Control Structure Loop Control Structure 30 5

Selection Statements Selection statements are statements used to choose an action, depending on the current status of your program as it is running s Control structure use logical expressions which may include 6 Relational Operators < <= > >= ==!= 3 Logical Operators! && 31 32 What can go wrong here? Improved Version float average; float total; int howmany;... average = total / howmany; float average, float total; int howmany; if (howmany > 0) average = total / howmany; cout << average; cout << No prices were entered ; 33 34 If-Then-Else Syntax if () StatementA StatementB if.. provides two-way selection between executing one of 2 clauses (the if clause or the clause) TRUE expression FALSE NOTE: StatementA and StatementB each can be a single statement, a null statement, or a block 35 if clause clause 36 6

Blocks Recommended if () if clause clause int cardoors, driverage; float premium, monthlypayment;... if ((cardoors == 4) && (driverage > 24)) premium = 650.00; cout << LOW RISK ; premium = 1200.00; cout << HIGH RISK ; monthlypayment = premium / 12.0 + 5.00; 37 38 What happens if you omit braces? if ((cardoors == 4) && (driverage > 24)) premium = 650.00; cout << LOW RISK ; premium = 1200.00; cout << HIGH RISK ; monthlypayment = premium / 12.0 + 5.00; Compile error occurs: The if clause is the single statement following the if 39 Omitting Braces Braces can be omitted only when a clause is a single statement if (lastinitial <= K ) volume = 1; volume = 2; cout << Look it up in volume # << volume << of NYC phone book ; 40 // Where is first A found in a string? string mystring; string::size_type pos;... pos = mystring.find( A ); if (pos == string::npos) cout << No A was found << endl; cout << An A was found in position << pos << endl; 41 Assign value.25 to discountrate and assign value 10.00 to shipcost if purchase is over 100.00 Otherwise, assign value.15 to discountrate and assign value 5.00 to shipcost Either way, calculate totalbill 42 7

Braces cannot be omitted! if (purchase > 100.00) discountrate =.25; shipcost = 10.00; discountrate =.15; shipcost = 5.00; If-Then Statement Determine whether or not to execute a statement (which can be a single statement or an entire block) TRUE statement expression FALSE totalbill = purchase * (1.0 - discountrate) + shipcost; 43 44 If-Else Syntax if () Statement // Stop processing if bad data int number; cout << Enter a non-zero number ; cin >> number; NOTE: Statement can be a single statement, a null statement, or a block 45 if (number == 0) cout << Bad input. Program terminated ; return 1; // Otherwise continue processing 46 These are equivalent. Why? if (number == 0) if (! number )...... s If taxcode is T, increase price by adding taxrate times price to it If code has value 1, read values for income and taxrate from myinfile, and calculate and display taxdue as their product Each expression is only when number has value 0 If A is strictly between 0 and 5, set B equal to 1/A, otherwise set B equal to A 47 48 8

Some Answers Remaining Answer if (taxcode == T ) price = price + taxrate * price; if ((A > 0) && (A < 5)) B = 1/A; if (code == 1) myinfile >> income >> taxrate; taxdue = income * taxrate; cout << taxdue; B = A; 49 50 What is output? Why? int age; age = 20; if (age = 16) cout << Did you get driver s license? ; What is output? Why? int age; age = 30; if (age < 18) cout << Do you drive? ; cout << Too young to vote ; 51 52 What is output? Why? What is output? Why? int code; code = 0; if (! code) cout << Yesterday ; cout << Tomorrow ; int number; number = 0; if (number = 0) cout << Zero value ; cout << Non-zero value ; 53 54 9

Nested If Statements if (1 ) Statement1 if (2 ) Statement2... if (N ) StatementN Statement N+1 Nested If Statements Each is evaluated in sequence, until some is found that is Only the specific Statement following that particular is executed If no is, the Statement following the final is executed Actually, the final and final Statement are optional, and if omitted and no is, then no Statement is executed An example... Exactly 1 of these statements will be executed 55 56 Multi-way Branching if (creditsearned >= 90 ) cout << SENIOR STATUS ; if (creditsearned >= 60 ) cout << JUNIOR STATUS ; if (creditsearned >= 30 ) cout << SOPHOMORE STATUS ; cout << FRESHMAN STATUS ; Display one word to describe the int value of number as Positive, Negative, or Zero Your city classifies a pollution index less than 35 as Pleasant, 35 through 60 as Unpleasant, above 60 as Health Hazard Display the correct description of the pollution index value 57 58 One Answer Other Answer if (number > 0) cout << Positive ; if (number < 0) cout << Negative ; cout << Zero ; if (index < 35) cout << Pleasant ; if (index <= 60) cout << Unpleasant ; cout << Health Hazard ; 59 60 10

Write a void function DisplayMessage that you can call from main to describe the pollution index value it receives as an argument void DisplayMessage(int index) if (index < 35) cout << Pleasant ; if (index <= 60) cout << Unpleasant ; Your city describes a pollution index less than 35 as Pleasant, 35 through 60 as Unpleasant, above 60 as Health Hazard. 61 cout << Health Hazard ; 62 #include <iostream> using namespace std; void DisplayMessage (int); int main (void) int pollutionindex; A Driver Program // Declare function // Declare variable cout << Enter air pollution index ; cin >> pollutionindex; DisplayMessage(pollutionIndex); // Call return 0; 63 Every Monday thru Friday you go to class When it is raining you take an umbrella But on the weekend, what you do depends on the weather If it is raining you read in bed Otherwise, you have fun outdoors 63 64 Solution // Program tells how to spend your day #include < iostream > using namespace std; void main (void) int day; char raining; cout << Enter day (use 1 for Sunday) ; cin >> day; cout << Is it raining? (Y/N) ; In the absence of braces, an is always paired with the closest preceding if that doesn t already have an paired with it cin >> raining; if ((day == 1) (day == 7)) // Sat or Sun if (raining == Y ) cout << Read in bed ; cout << Have fun outdoors ; cout << Go to class ; if (raining == Y ) cout << Take an umbrella ; 65 66 11

float average; average = 100.0; if (average >= 60.0) if (average < 70.0) cout << Marginal PASS ; cout << FAIL ; 100.0 average FAIL is printed; WHY? The compiler ignores indentation and pairs the with the second if 67 float average; average = 100.0; To correct the problem, use braces if (average >= 60.0) if (average < 70.0) cout << Marginal PASS ; cout << FAIL ; 100.0 average 68 Each I/O stream has a state (condition) Determining the Stream State An input stream enters fail state when you try to read invalid input data try to open a file which does not exist try to read beyond the end of the file An output stream enters fail state when you try to create a file with an invalid name try to create a file on a write-protected disk try to create a file on a full disk The stream identifier can be used as if it were a Boolean variable that has value false when the last I/O operation on that stream failed and when it did not fail After you use a file stream, you should check on its state 69 70 Checking the State ofstream myoutfile; myoutfile.open ( myout.dat ); if (! myoutfile) cout << File opening error. << Program terminated. << endl; return 1; // Otherwise send output to myoutfile 71 71 Testing Selection Control Structures To test a program with branches, use enough data sets to ensure that every branch is executed at least once This strategy is called minimum complete coverage 72 12

Testing Often Combines Two Approaches Testing WHITE BOX TESTING Code Coverage Allows us to see the program code while designing the tests, so that data values at the boundaries, and possibly middle values, can be tested. BLACK BOX TESTING Data Coverage Tries to test as many allowable data values as possible without regard to program code. 73 Design and implement a test plan A test plan is a document that specifies the test cases to try, the reason for each, and the expected output Implement the test plan by verifying that the program outputs the predicted results 74 PHASE RESULT TESTING TECHNIQUE Body Mass Index Problem Problem solving Algorithm Algorithm walk-through Implementation Coded program Code walk-through, Trace Compilation Object program Compiler messages Problem Implement a measure called the Body Mass Index (BMI), which computes a ratio of your weight and height, which has become a popular tool to determine an appropriate weight. The formula for nonmetric values is BMI = weight * 703 / height 2 Execution Output Implement test plan 75 76 What is the BMI? BMI correlates with body fat, which can be used to determine if a weight is unhealthy for a certain height. Do a search of the Internet for "body mass index" and you will find more than a million hits. In these references, the formula remains the same but the interpretation varies somewhat, depending on age and sex. Here is a the most commonly used generic interpretation. BMI Interpretation < 20 Underweight 20-25 Normal 26-30 Overweight over 30 Obese 77 Algorithm Get Data Level 1 Prompt for weight Read weight Prompt for height Read height Test Data IF weight < 0 OR height < 0 Set dataareok to false ELSE Set dataareok to Calculate BMI Set bodymassindex to weight * 703 / height 2 78 13

Algorithm Continued Print Print "Your BMI is ", bodymassindex, '.' Print "Interpretation and instructions." IF bodymassindex <20 Print "Underweight: Have a milk shake." ELSE IF bodymassindex < 26 Print "Normal: Have a glass of milk." ELSE IF bodymassindex < 30 Print "Overweight: Have a glass of iced tea." ELSE Print "Obese: See your doctor." 79 C++ Program //************************************************** // BMI Program // This program calculates the body mass index (BMI) // given a weight in pounds and a height in inches and // prints a health message based on the BMI. //*************************************************** #include <iostream> using namespace std; int main() const int BMI_CONSTANT = 703; // Non-metric constant float weight; // Weight in pounds float height; // Height in inches float bodymassindex; // Appropriate BMI bool dataareok; // True if data OK 80 // Calculate body mass index bodymassindex = weight * BMI_CONSTANT / (height * height); // Print message indicating status cout << "Your BMI is " << bodymassindex << ". " << endl; cout << "Interpretation and instructions. " << endl; if (bodymassindex < 20) cout << "Underweight:..." << endl; if (bodymassindex <= 25) cout << "Normal:..." << endl; if (bodymassindex <= 30) cout << "Overweight:..." << endl; cout << "Obese:..." << endl; return 0; 81 Testing the BMI Program There is no testing in this program, but there should be!! Should you use white box or black box testing? What test should be included? Where should they be inserted? 82 14