CHAPTER 4: Conditional Structures

Slides:



Advertisements
Similar presentations
Decision Structures - If / Else If / Else. Decisions Often we need to make decisions based on information that we receive. Often we need to make decisions.
Advertisements

CHAPTER 5: LOOP STRUCTURES Introduction to Computer Science Using Ruby (c) 2012 Ophir Frieder et al.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Chapter 4 – C Program Control Outline 4.1Introduction.
 2007 Pearson Education, Inc. All rights reserved C Program Control.
C How to Program, 6/e Summary © by Pearson Education, Inc. All Rights Reserved.
Programming Logic and Design Sixth Edition
Decision Structures and Boolean Logic
Chapter 3 Making Decisions
CHAPTER 4: CONDITIONAL STRUCTURES Introduction to Computer Science Using Ruby (c) 2012 Ophir Frieder et al.
1 Conditions Logical Expressions Selection Control Structures Chapter 5.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Flow Control (Switch, do-while, break) Outline 4.7The.
PAGES:51-59 SECTION: CONTROL1 : DECISIONS Decisions.
Selection Control Structures. Simple Program Design, Fourth Edition Chapter 4 2 Objectives In this chapter you will be able to: Elaborate on the uses.
Flow of Control Part 1: Selection
Making Decisions Chapter 5.  Thus far we have created classes and performed basic mathematical operations  Consider our ComputeArea.java program to.
An Introduction to Programming with C++ Sixth Edition Chapter 7 The Repetition Structure.
1 COMS 261 Computer Science I Title: C++ Fundamentals Date: September 21, 2005 Lecture Number: 10.
Making Decisions (True or False) Relational Operators >greater than =greater than or equal to
©TheMcGraw-Hill Companies, Inc. Permission required for reproduction or display. Selection Statements Selection Switch Conditional.
The Hashemite University Computer Engineering Department
An Object-Oriented Approach to Programming Logic and Design Chapter 5 Making Decisions.
Controlling Program Flow with Decision Structures.
Programming Logic and Design Fourth Edition, Comprehensive Chapter 5 Making Decisions.
CSE202: Lecture 5The Ohio State University1 Selection Structures.
An Introduction to Programming with C++ Sixth Edition Chapter 5 The Selection Structure.
Chapter 4 Select … Case Multiple-Selection Statement & Logical Operators 1 © by Pearson Education, Inc. All Rights Reserved. -Edited By Maysoon.
4 - Conditional Control Structures CHAPTER 4. Introduction A Program is usually not limited to a linear sequence of instructions. In real life, a programme.
C Program Control September 15, OBJECTIVES The essentials of counter-controlled repetition. To use the for and do...while repetition statements.
Programming Logic and Design Fifth Edition, Comprehensive Chapter 4 Making Decisions.
The Department of Engineering Science The University of Auckland Welcome to ENGGEN 131 Engineering Computation and Software Development Lecture 2 Debugging,
The Ohio State University
Chapter 4 – C Program Control
More on the Selection Structure
Selection—Making Decisions
Control Structures: Part 2
The Selection Structure
CSC113: Computer Programming (Theory = 03, Lab = 01)
Chapter 5 Decisions. Chapter 5 Decisions ssential uestion: How are Boolean expressions or operators used in everyday life?
Chapter 3 Control Statements Lecturer: Mrs Rohani Hassan
Topics The if Statement The if-else Statement Comparing Strings
Chapter 4 Select…Case Multiple-Selection Statement & Logical Operators
The order in which statements are executed is called the flow of control. Most of the time, a running program starts at the first programming statement,
Chapter 6: Conditional Statements and Loops
Chapter 4 Select…Case Multiple-Selection Statement & Logical Operators
Topics The if Statement The if-else Statement Comparing Strings
ICS 3U Tuesday, September 21st.
Chapter 4 - Program Control
Chapter 4 Select…Case Multiple-Selection Statement & Logical Operators
Design and Implementation
Pages:51-59 Section: Control1 : decisions
Selection Statements.
Chapter 4 Select…Case Multiple-Selection Statement & Logical Operators
Chapter 4 Select…Case Multiple-Selection Statement & Logical Operators
Boolean Expressions to Make Comparisons
Flowcharts and Pseudo Code
Chapter 4: Boolean Expressions, Making Decisions, and Disk Input and Output Prof. Salim Arfaoui.
Chapter 2: Input, Processing, and Output
Chapter 4 - Program Control
The Selection Structure
Pages:51-59 Section: Control1 : decisions
Comparing Data & the ‘switch’ Statement
Using C++ Arithmetic Operators and Control Structures
Chapter 4 Select…Case Multiple-Selection Statement & Logical Operators
Controlling Program Flow
Lecture 9: Implementing Complex Logic
Control Structures.
Chapter 4 Select…Case Multiple-Selection Statement & Logical Operators
Presentation transcript:

CHAPTER 4: Conditional Structures (c) 2012 Ophir Frieder et al CHAPTER 4: Conditional Structures Introduction to Computer Science Using Ruby

Flow of Execution Every algorithm has a logic flow There is a start, steps that happen in chronological order, and an end There is a graphical way to describe program flow Understanding control flow is essential to creating and testing an implementation of an algorithm Figure 4.1: Beginning course details and/or books/materials needed for a class/project. This chart has a one directional flow (each step is performed once before the next), but some algorithms can have multiple possible execution flows (c) 2012 Ophir Frieder et al

Flow of Execution: Multiple Path Logic Flow (Figure 4.2) Decision Step A schedule design for optional periods of time/objectives. Flow of Execution: Multiple Path Logic Flow (Figure 4.2) Conditional flow: a certain condition must be met to perform the next step After doing the first step, follow the path that matches the given condition, then the rest of the flow is one directional (c) 2012 Ophir Frieder et al

Conditional Control A condition is an expression defined using relational and Boolean operators A condition has a Boolean value, either True or False irb(main):001:0> 5 == 5 => true irb(main):002:0> 5 == 6 => false irb(main):003:0> 5 <= 5 irb(main):004:0> 5 != 5 (c) 2012 Ophir Frieder et al

Relational Operators (Table 4.1) Meaning == Is equal to != Not equal to < Less than > Greater than <= Less than or equal to >= Greater than of equal to Relational Operators (Table 4.1) (c) 2012 Ophir Frieder et al

Conditional Control The “!” operator is the negation of a condition or Boolean value “!” can work on any true or false statement or conditional Usually referred to as “not” Boolean operators operate on Boolean values, creating expressions that evaluate to True or False Operators include: and, or, not The results of the operators are described by truth tables (c) 2012 Ophir Frieder et al

Truth Tables for “and” and “or” (Table 4.2) A and B A or B A && B A || B true false Truth Tables for “and” and “or” (Table 4.2) (c) 2012 Ophir Frieder et al

Example: Boolean Expressions irb(main) :001:0> !false =>true irb(main) :002:0> !(true or false) => false irb(main) :003:0> first = true => true irb(main) :004:0> second = false irb(main) :005:0> (first and second or !(first and second) (c) 2012 Ophir Frieder et al

Conditional Flow: If Statements Ruby uses an if statement for basic conditional control flow (Example 4.3) 1 if (condition) 2 # section 1 3 end Input value of 11 (Example 4.4): 1 # if a number is even, print out "Even" 2 puts "Enter a number” 3 number = gets.to_i 4 if (number % 2 == 0) # evaluates to false 5 puts "Even” # does not execute 6 end Section 1 is executed when the condition evaluates to true or is skipped when the condition evaluates to false (c) 2012 Ophir Frieder et al

Conditional Flow: If-Then-Else Statements Provides a second flow option If the original condition is not met, then the second flow option is taken (Example 4.5) 1 if (condition) 2 # section 1 executes if true 3 else 4 # section 2 executes if false 5 end (c) 2012 Ophir Frieder et al

Example of Program that Determines Prices of Movie Tickets (Example 4 1 puts "Enter the customer's age: “ 2 # Get an integer age value from the user 3 age = gets.to_i 4 5 # Determine the cost based on age 6 if (age < 12) 7 cost = 9 8 else 9 cost = 18 10 end 11 12 # Print out the final cost 13 puts "Ticket cost: " + cost.to_s (c) 2012 Ophir Frieder et al

If-Else Statement Logic Flow To test the program, input one value for each logic flow option Test the edge or boundary conditions (most errors occur here) (c) 2012 Ophir Frieder et al Figure 4.4

Movie Ticket Example: Input Value of 8 (Example 4.6) 1 puts "Enter the customer's age: " 2 # Get an integer age value from the user 3 age = gets.to_i 4 5 # Determine the cost based on age 6 if (age < 12) # evaluates to true 7 cost = 9 # so the If portion Executes 8 else 9 cost = 18 # This portion DOES NOT 10 end 11 12 # Print out the final cost 13 puts "Ticket cost: " + cost.to_s (c) 2012 Ophir Frieder et al

Movie Ticket Example: Input Value of 25 (Example 4.6) 1 puts "Enter the customer's age: " 2 # Get an integer age value from the user 3 age = gets.to_i 4 5 # Determine the cost based on age 6 if (age < 12)# Evaluates to false 7 cost = 9 # This DOES NOT execute 8 else 9 cost = 18 # Executes 10 end 11 12 # Print out the final cost 13 puts "Ticket cost: “ + cost.to_s (c) 2012 Ophir Frieder et al

Movie Ticket Example: Input Value of 12 (Figure 4.9) 1 puts "Enter the customer's age: " 2 # Get an integer age value from the user 3 age = gets.to_i 4 5 # Determine the cost based on age 6 if (age < 12) # Evaluates to false 7 cost = 9 8 else 9 cost = 18 # Executes 10 end 11 12 # Print out the final cost 13 puts "Ticket cost: " + cost.to_s The correct outcome should be 9 because a child is considered 12 or under, so the program is incorrect. To correct the error (“bug”), the conditional test in the program needs to be “age <= 12” (c) 2012 Ophir Frieder et al

Elsif Statements Conditional flow can have more than two flow options There are various ways to implement a multi-flow control One of them is using an elsif statement (c) 2012 Ophir Frieder et al

Elsif Statement Logic Flow (Figure 4.5) Only the first condition that evaluates to true gets executed (c) 2012 Ophir Frieder et al

Program that Discounts Tickets for Children & Senior Citizens (Example 4.9) 1 puts "Enter the customer's age: " 2 # Get an integer age value from the user 3 age = gets.to_i 4 5 # Determine the cost based on age 6 if (age <= 12) 7 cost = 9 8 elsif (age >= 65) 9 cost = 12 10 else 11 cost = 18 12 end 13 14 # Print out the final cost 15 puts "Ticket cost: " + cost.to_s Note: The program needs another condition for senior citizens (c) 2012 Ophir Frieder et al

Review: Original Movie Ticket Program (Example 4.6) 1 puts “Enter the customer's age:” 2 # Get an integer age value from the user 3 age = gets.to_i 4 5 # Determine the cost based on age 6 if (age <= 12) 7 cost = 9 8 else 9 cost = 18 10 end 11 12 # Print out the final cost 13 puts "Ticket cost: " + cost.to_s (c) 2012 Ophir Frieder et al

Alternatives Alternative Syntax Alternative Program 1 puts "Enter the customer's age:” 2 # Get an integer age value from the user 3 age = gets.to_i 4 cost = 18 5 # Determine the cost based on age 6 if (age <= 12)then cost = 9 end 7 # Print out the final cost 8 puts "Ticket cost: " + cost.to_s 1 puts "Enter the customer's age:” 2 # Get an integer age value from the user 3 age = gets.to_i 5 # Determine the cost based on age 6 if (age<=12)then (cost=9)else (cost = 18 ) end 12 # Print out the final cost 13 puts "Ticket cost: " + cost.to_s SYNTACTIC SUGAR IN ACTION: Alternative syntax designed for ease of programming and readability (c) 2012 Ophir Frieder et al

Case Statements The case statement handles multiple options Alternative to if-elsif statements Useful for a large number of options Case statements evaluate in order Only the first when clause that evaluates to true gets executed If none evaluates to true, then the else clause is executed Figure 4.11: 1 case 2 when (expression1) 3 # section 1 4 when (expression2) 5 # section 2 6 else 7 # section 3 8 end (c) 2012 Ophir Frieder et al

Movie Ticket Program: Rewritten Using a Case Statement (Example 4.12) 1 puts "Enter the customer's age: " 2 # Get an integer age value from the user 3 age = gets.to_i 4 5 # Determine the cost based on age 6 case 7 when (age <= 12) 8 cost = 9 9 when (age >= 65) 10 cost = 12 11 else 12 cost = 18 13 end 14 15 # Print out the final cost 16 puts "Ticket cost: " + cost.to_s (c) 2012 Ophir Frieder et al

Debugging: Incorrect Movie Ticket Program (Example 4.13) Example 1: The cost will always be 9 1 puts "Enter the customer's age: " 2 # Get an integer age value from the user 3 age = gets.to_i 4 5 # Determine the cost based on age 6 case 7 8 when (age = 12) then # Always evaluates to true 9 cost = 9 10 when (age >= 65) then 11 cost = 12 12 else 13 cost = 18 14 end 15 16 # Print out the final cost 17 puts "Ticket cost: " + cost.to_s # '=' is assignment NOT equality test '==' (c) 2012 Ophir Frieder et al

Debugging: Incorrect Movie Ticket Program (Example 4.14) 1 puts "Enter the customer's age: " 2 # Get an integer age value from the user 3 age = gets.to_i 4 # DEBUG 5 puts age 6 7 # Determine the cost based on age 8 case 9 # '=' is assignment NOT equality test '==' 10 when (age = 12) then 11 cost = 9 12 when (age >= 65) then 13 cost = 12 14 else 15 cost = 18 16 end (c) 2012 Ophir Frieder et al

Debugging Uses puts statements to help identify errors. Show variable values where they are not changing Example 4.14 cont’d: 17 # DEBUG 18 puts age # Shows that age always equals 12 19 20 # Print out the final cost 21 puts "Ticket cost: " + cost.to_s (c) 2012 Ophir Frieder et al

Debugging: Alternatives Programs can also be debugged using constants In each section, there is an if statement with a debugging constant as the flag The flag determines whether a put statement is executed When a section is judged to be correct, the constant is set to false There is no need to check variables The debug output should be fully descriptive puts “debug – age” + age.to_s NOT puts “age” (c) 2012 Ophir Frieder et al

Debugging (Example 4.15) 1 # Flag for debugging (change the false when finished debugging) 2 DEBUG_MODULE_1 = true # Initialize and define a flag constant as true. 3 4 puts "Enter the customer's age: " 5 # Get an integer age value from the user 6 age = gets.to_i 7 8 # Determine the cost based on age 9 if DEBUG_MODULE_1 # Changed to false if this section is correct 10 puts age # Prints age if the section is still # not debugged 11 end 12 case 13 # '=' is assignment NOT equality test '==' 14 when (age = 12) then 15 cost = 9 (c) 2012 Ophir Frieder et al

Debugging (Example 4.15 Cont’d) 16 when (age >= 65) then 17 cost = 12 18 else 19 cost = 18 20 end 21 if DEBUG_MODULE_1 # Changed to false if # this section is correct 22 puts age # prints age if the section is # still not debugged incorrect 23 end 24 25 # Print out the final cost 26 puts "Ticket cost: " + cost.to_s (c) 2012 Ophir Frieder et al

Summary Every program follows a control flow, which is determined by the logic flow of its algorithms Logic and control flow can often be one directional or conditional The relational operators are the key operators to creating conditional flows Another way to create conditional flow is by employing if, elsif, and case statements (c) 2012 Ophir Frieder et al