Maltepe University Computer Engineering Department. Algorithms and Programming. Chapter 4: Conditionals - If statement - Switch statement

Similar documents
Example. CS 201 Selection Structures (2) and Repetition. Nested if Statements with More Than One Variable

Computer Science & Engineering 150A Problem Solving Using Computers

1.4 Control Structures: Selection. Department of CSE

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

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

Flow Control. CSC215 Lecture

Lesson #4. Logical Operators and Selection Statements. 4. Logical Operators and Selection Statements - Copyright Denis Hamelin - Ryerson University

COP 2000 Introduction to Computer Programming Mid-Term Exam Review

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

DECISION MAKING STATEMENTS

STUDENT OUTLINE. Lesson 8: Structured Programming, Control Structures, if-else Statements, Pseudocode

Logical Operators and switch

Introduction. C provides two styles of flow control:

Selection Structures II

Chapter 4 - Notes Control Structures I (Selection)

Programming, Problem Solving, and Abstraction. Chapter Three. Selection

Computer Science & Engineering 150A Problem Solving Using Computers. Chapter 5. Repetition in Programs. Notes. Notes. Notes. Lecture 05 - Loops

REPETITION CONTROL STRUCTURE LOGO

UEE1302(1102) F10: Introduction to Computers and Programming

CSCE150A. Introduction. While Loop. Compound Assignment. For Loop. Loop Design. Nested Loops. Do-While Loop. Programming Tips CSCE150A.

In Java, data type boolean is used to represent Boolean data. Each boolean constant or variable can contain one of two values: true or false.

CPE 112 Spring 2015 Exam II (100 pts) March 4, Definition Matching (8 Points)

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

Problem Solving and 'C' Programming

Introduction to C Programming

Chapter 3. Selections

Chapter 4: Making Decisions

Conditional Statement

Chapter 4: Making Decisions

LESSON 3. In this lesson you will learn about the conditional and looping constructs that allow you to control the flow of a PHP script.

Chapter 3. More Flow of Control. Copyright 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley

Relational operators (1)

LECTURE 04 MAKING DECISIONS

Programming Basics and Practice GEDB029 Decision Making, Branching and Looping. Prof. Dr. Mannan Saeed Muhammad bit.ly/gedb029

Chapter 4. Flow of Control

Conditional Statement

5. Selection: If and Switch Controls

3 The L oop Control Structure

CpSc 1011 Lab 5 Conditional Statements, Loops, ASCII code, and Redirecting Input Characters and Hurricanes

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

5. Control Statements

Programming Logic and Design Sixth Edition

Lecture Programming in C++ PART 1. By Assistant Professor Dr. Ali Kattan

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

Problem Solving through Programming In C Prof. Anupam Basu Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur

Lecture 6. Statements

ITC213: STRUCTURED PROGRAMMING. Bhaskar Shrestha National College of Computer Studies Tribhuvan University

Lecture 5 Tao Wang 1

C Course. IIT Kanpur. Lecture 3 Aug 31, Rishi Kumar <rishik>, Final year BT-MT, CSE

Selection Statements. Pseudocode

Selec%on and Decision Structures in Java: If Statements and Switch Statements CSC 121 Fall 2016 Howard Rosenthal

Loops! Loops! Loops! Lecture 5 COP 3014 Fall September 25, 2017

(4-2) Selection Structures in C H&K Chapter 4. Instructor - Andrew S. O Fallon CptS 121 (September 12, 2018) Washington State University

Selec%on and Decision Structures in Java: If Statements and Switch Statements CSC 121 Spring 2016 Howard Rosenthal

Control Structures. Control Structures Conditional Statements COMPUTER PROGRAMMING. Electrical-Electronics Engineering Dept.

In this lab, you will learn more about selection statements. You will get familiar to

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

L o o p s. for(initializing expression; control expression; step expression) { one or more statements }

Conditionals. CSE / ENGR 142 Programming I. Chapter 4. Conditional Execution. Conditional ("if ") Statement. Conditional Expressions

Control Structures. Code can be purely arithmetic assignments. At some point we will need some kind of control or decision making process to occur

CMPT 125: Lecture 4 Conditionals and Loops

switch Statements Selection Structures: if and

Motivating Examples (1.1) Selections. Motivating Examples (1.2) Learning Outcomes. EECS1022: Programming for Mobile Computing Winter 2018

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

CpSc 111 Lab 5 Conditional Statements, Loops, the Math Library, and Redirecting Input

1 Lexical Considerations

Conditionals and Loops

Chapter 2, Part III Arithmetic Operators and Decision Making

Selections. CSE 114, Computer Science 1 Stony Brook University

Information Science 1

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

Week 2. Relational Operators. Block or compound statement. if/else. Branching & Looping. Gaddis: Chapters 4 & 5. CS 5301 Spring 2018.

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

CHAPTER 5 FLOW OF CONTROL

CT 229 Java Syntax Continued

In Fig. 3.5 and Fig. 3.7, we include some completely blank lines in the pseudocode for readability. programs into their various phases.

Control Structures in Java if-else and switch

Chapter 2. Section 2.3 if and if-else statements. CS 50 Hathairat Rattanasook

Chapter 5 Conditional and Iterative Statements. Statement are the instructions given to the computer to perform any kind of action.

Chapter 3 Selection Statements

Topics. Chapter 5. Equality Operators

In this chapter, you will:

Decision Making -Branching. Class Incharge: S. Sasirekha

Chapter 3 Structured Program Development

COMP 208 Computers in Engineering

Chapter Overview. More Flow of Control. Flow Of Control. Using Boolean Expressions. Using Boolean Expressions. Evaluating Boolean Expressions

Sudeshna Sarkar Dept. of Computer Science & Engineering. Indian Institute of Technology Kharagpur

PDS Lab Section 16 Autumn Tutorial 3. C Programming Constructs

The following expression causes a divide by zero error:

Chapter 6. Loops. Iteration Statements. C s iteration statements are used to set up loops.

CpSc 1111 Lab 4 Part a Flow Control, Branching, and Formatting

Chapter 3. Flow of Control. Branching Loops exit(n) method Boolean data type and expressions

Decisions. Arizona State University 1

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

Lecture 05 I/O statements Printf, Scanf Simple statements, Compound statements

Rule 1-3: Use white space to break a function into paragraphs. Rule 1-5: Avoid very long statements. Use multiple shorter statements instead.

CS1100 Introduction to Programming

CS150 Intro to CS I. Fall Fall 2017 CS150 - Intro to CS I 1

Lexical Considerations

CP FAQS Q-1) Define flowchart and explain Various symbols of flowchart Q-2) Explain basic structure of c language Documentation section :

Transcription:

Maltepe University Computer Engineering Department Algorithms and Programming Chapter 4: Conditionals - If statement - Switch statement

Control Structures in C Control structures control the flow of execution in a program or function. Compound statement, written as a group of statements bracketed by { and } is used to specify a sequential flow. There are three kinds of execution flow: Sequence: the execution of the program is sequential. Selection: A control structure which chooses alternative to execute. Repetition: A control structure which repeats a group of statements. We will focus on the selection control structure in this chapter. 2

Sequence { } statement 1 ; statement 2 ; statement 3 ; statement n ; Entry point statement 1 statement 2 statement n Exit point 3

Repetition Entry point statement 1 statement 2 statement n Exit point 4

Selection Entry point selection statement 1 statement 2 Exit points A selection control structure chooses which alternative to execute by testing the value of key variables. 5

Condition Condition: an expression that is either false (represented by 0) or true (usually represented by 1) It is a criteria. Example: rest_heart_rate > 75 6

Conditions A program may choose among alternative statements by testing the value of key variables. e.g., if ( your_grade > 60 ) printf( you are passed! ); Condition is an expression that is either false (represented by 0) or true (represented by 1). e.g., your_grade > 60 is a condition. Conditions may contain relational or equality operators, and have the following forms. Expr. relational-operator Expr. 7

Operators Used in Conditions Operator Meaning Type < Less than Relational > Greater than Relational <= Less than or equal to Relational >= Greater than or equal to Relational == Equal to Equality!= Not equal to Equality 8

Examples of Conditions Operator Condition Meaning <= x <= 0 x less than or equal to 0 < Power < MAX_POW Power less than MAX_POW == mom_or_dad == M mom_or_dad equal to M!= num!= SENTINEL num not equal to SENTINEL 9

Logical Operators There are three kinds of logical operators. &&: and : or!: not Logical expression is an expression which uses one or more logical operators, e.g., (temperature > 90.0 && humidity > 0.90)!(n <= 0 n >= 100). 10

The Truth Table of Logical Operators Op 1 Op 2 Op 1 && Op2 Op 1 Op2 nonzero nonzero 1 1 nonzero 0 0 1 0 nonzero 0 1 0 0 0 0 Op 1! Op 1 nonzero 0 0 1 11

Operator Precedence An operator s precedence determines its order of evaluation. Unary operator is an operator that has only one operand.!, +(plus sign), -(minus sign), and &(address of) They are evaluated second only after function calls. Operator function calls! + - & * / % + - < <= >= > ==!= && Precedence highest = lowest 12

a=2 b=4 z=? z = (a + 3 >= 5 &&!(b < 5)) a * b + b!= 7 z = (a + 3 >= 5 &&! 1) a * b + b!= 7 z = (a + 3 >= 5 && 0) a * b + b!= 7 z = (5 >= 5 && 0) a * b + b!= 7 z = (1 && 0) a * b + b!= 7 z = 0 a * b + b!= 7 z = 0 8 + b!= 7 z = 0 12!= 7 z = 0 1 z = 1 1 13

Example x power MAX_POW y item MIN_ITEM m_o_d num SENTINEL -5 1024 1024 7 1.5-999.0 M 999 999 Conditions: 1. x<=0 2. Power < MAX_POW 3. x>=y 4. Item> MIN_ITEM 5. m_o_d == M 6. num!= SENTINEL 14

Examples salary < MIN_SALARY dependent > 5 temperature > 90.0 && humidity > 0.90 n >= 0 && n <= 100 n < 0 && n > 100!(n >=0 && n <= 100) 15

Examples Variables: x: 3.0, y: 4.0, z: 2.0, flag: 0 Expressions:! flag x + y / z <= 3.5! flag (y + z >= x z)! (flag (y + z >= x z)) 16

Evaluation for!flag (y + z >= x - z) Evaluation tree The result of this expression is true 17

Comparing Characters We can also compare characters in C using the relational and equality operators. Use ASCII table. Expression Value 9 >= 0 1 (true) a < e Z == z a <= A 1 (true) 0 (false) system dependent 18

DeMorgan s Theorem DeMorgan s theorem gives us a way of transforming a logical expression into its complement. The complement of expr1 && expr2 is comp1 comp2 where comp1 is the complement of expr1, and comp2 is the complement of expr2 The complement of expr1 expr2 is comp1 && comp2 where where comp1 is the complement of expr1, and comp2 is the complement of expr2 For example complement of age > 25 && (status == S status == D ) is equal to age <=25 (status!= S && status!= D ) See L4_19.c program. 19

More examples in_range = (n > -10 && n < 10) is_letter = ( A <= ch && ch <= Z ) ( a <= ch && ch <= z ) even = (n % 2 ==0) 20

The if Statement The if statement is the primary selection control structure. Syntax: if (condition) statement; Syntax: if (condition) { statement1; statement2; statementn; } 21

The if else Statement Syntax: if (condition) statement1; else statement2; An example of two alternatives: if ( rest_heart_rate > 56 ) printf ( Keep up your exercise program!\n ); else printf ( Your heart is in excellent health!\n ); An example of one alternative: if ( x!= 0.0 ) product = product * x; 22

IF() {} ELSE {} if condition {compound_statement_1 }// if condition is true else {compound_statement_2 }// if condition is false Example: if (crash_test_rating_index <= MAX_SAFE_CTRI) { printf("car #%d: safe\n", auto_id); safe = safe + 1; } else { printf("car #%d: unsafe\n", auto_id); unsafe = unsafe + 1; } 23

IF() {} ELSE {} When the symbol { follows a condition or else, the C complier either executes or skips all statements through the matching } If you omit the braces enclosing the compound statements, the if statement would end after the first statement. You MUST use braces if you want to execute a compound statement in an if statement. To be safe, you may want to always use braces, even if there is only a single statement. Example: if (crash_test_rating_index <= MAX_SAFE_CTRI) printf("car #%d: safe\n", auto_id); safe = safe + 1; // this is an independent command // from if it will be executed in any case 24

No {}? if (rest_heart_rate > 56) printf ("Keep up your exercise program!\n"); else printf ("Your heart is in excellent health!\n"); If there is only one statement between the {} braces, you can omit the braces. 25

Nested if Statements Nested if statement is an if statement with another if statement as its true task or false task. e.g., if (road_status == S ) if (temp > 0) printf( Wet roads ahead!\n ); else printf( Icy roads ahead!\n ); else printf( Drive carefully!\n ); 26

An Example for the Flowchart of Nested if Statements Another if statement Main if statement 27

Nested if Statements So far we have used if statements to code decisions with one or two alternatives. A compound statement may contain more if statements. In this section we use nested if statements (one if statement inside another) to code decisions with multiple alternatives. if (x > 0) num_pos = num_pos + 1; else if (x < 0) num_neg = num_neg + 1; else num_zero = num_zero + 1; 28

Multiple-Alternative Decisions If there are many alternatives, it is better to use the syntax of multiple-alternative decision. Syntax: if (condition 1 ) statement 1; else if (condition 2 ) statement 2; else if (condition n ) statement n; else statement e; 29

Multiple-Alternative Decision Form of Nested if Nested if statements can become quite complex. If there are more than three alternatives and indentation is not consistent, it may be difficult for you to determine the logical structure of the if statement. You can code the nested if as the multiple-alternative decision described below: if ( condition_1 ) statement_1 else if ( condition_2 ) statement_2 else if ( condition_n ) statement_n else statement_else 30

Example Given a person s salary, we want to calculate the tax due by adding the base tax to the product of the percentage times the excess salary over the minimum salary for that range. Salary Range Base tax Percentage of Excess 0.00 14,999.99 0.00 15 15,000.00 29,999.99 2,250.00 18 30,000.00 49,999.99 5,400.00 22 50,000.00 79,999.99 11,000,00 27 80,000.00 150,000.00 21,600.00 33 31

32

Order of Conditions in a Multiple- Alternative Decision (efficiency) (info only) When more than one condition in a multiplealternative decision is true, only the task following the first true condition executes. Therefore, the order of the conditions can affect the outcome. The order of conditions can also have an effect on program efficiency. If we know that salary range 30,000-49,999 are much more likely than the others, it would be more efficient to test first for that salary range. For example, if ((salary>30,000.00) && (salary<=49,999.00)) 33

Nested if Statements with More Than One Variable (efficiency) (info only) In most of our examples, we have used nested if statements to test the value of a single variable. Consequently, we have been able to write each nested if statement as a multiple-alternative decision. If several variables are involved in the decision, we cannot always use a multiple-alternative decision. The next example contains a situation in which we can use a nested if statement as a filter to select data that satisfies several different criteria. 34

Example (info only) The Department of Defense would like a program that identifies single males between the ages of 18 and 26, inclusive. One way to do this is to use a nested if statement whose conditions test the next criterion only if all previous criteria tested were satisfied. Another way would be to combine all of the tests into a single logical expression In the next nested if statement, the call to printf executes only when all conditions are true. 35

Example (info only) /* Print a message if all criteria are met.*/ if ( marital_status == S ) if ( gender == M ) if ( age >= 18 && age <= 26 ) printf("all criteria are met.\n"); or we could use an equivalent statement that uses a single if with a compound condition: /* Print a message if all criteria are met.*/ if ((maritial_status == S ) && (gender == M ) && (age >= 18 && age <= 26)) printf("all criteria are met.\n"); 36

Common if statement errors if crsr_or_frgt == C printf("cruiser\n"); //Syntax error This error is that there are no ( ) around the condition, and this is a syntax error. if (crsr_or_frgt == C ); //Empty statement printf("cruiser\n"); //Independent from if stmt. This error is that there is a semicolon after the condition. C will interpret this as there is nothing to do if the condition is true. 37

Be careful when you combine conditions! if ((a==b) && (a>c)) printf ( %d,%d\n%d,a,b,c); else printf ( %d\n%d,%d, c,a,b); Here, else belongs to both conditions, because && (and) operator requires both conditions to be true for true result. 38

Short Circuit Evaluation (info only) Short-circuit (minimal) evaluation - C stops evaluating a logical expression as soon as its value can be determined. if the first part of the OR expression is true then the overall condition is true, so we don t even look at the second part. if the first part of the AND expression is false then the overall condition is false, so we don t even look at the second part. Example: if ((a<b) && (c>d)) if (a<b) is false, (c>d) is not evaluated. if ((e!=f) (g<h)) if (e!=f) is true, (g<h) is not evaluated. This can be significant for your program performance. You want to get false as soon as possible, since it finishes comparisons. the most selective test should be 39 placed at the beginning.

If Statement Style All if statement examples in this lecture have the true statements and false statements indented. Indentation helps the reader but conveys no meaning to the compiler. The word else is typed without indentation on a separate line. This formatting of the if statement makes its meaning more apparent and is used solely to improve program readability. 40

Tracing an if Statement A critical step in program design is to verify that an algorithm or C statement is correct before you spend extensive time coding or debugging it. Often a few extra minutes spent in verifying the correctness of an algorithm saves hours of coding and testing time. A hand trace or desk check is a careful, step-by-step simulation on paper of how the computer executes the algorithm or statement. The results of this simulation should show the effect of each step s execution using data that is relatively easy to process by hand. Sections 4.4 and 4.5 in the text have great step-by-step examples of using if statements to solve problems. 41

The switch Statement The switch statement is used to select one of several alternatives when the selection is based on the value of a single variable or an expression. switch (controlling expression){ case label 1 : statement 1; break; case label 2 : statement 2; break; case label n : statement n; break; default: statement d ; If the result of this controlling expression matches label 1, execute staement 1 and then break this switch block. If the result matches none of all labels, execute the default statement d. } See L4_44.c program 42

Switch statements The switch statement is a better way of writing a program when a series of if-else-if occurs. The switch statement selects one of several alternatives. The switch statement is especially useful when the selection is based on the value of a single variable or of a simple expression This is called the controlling expression In C, the value of this expression may be of type int or char, but NOT of type double. 43

An Example of a switch Statement with Type char Case Labels class is a char variable. Two or more cases can execute the same statement. 44

Explanation of Example This takes the value of the variable class and compares it to each of the cases in a top down approach. It stops after it finds the first case that is equal to the value of the variable class. It then starts to execute each line of the code following the matching case till it finds a break statement or the end of the switch statement. If no case is equal to the value of class, then the default case is executed. default case is optional. So if no other case is equal to the value of the controlling expression and there is a default case, then default case is executed. If there is no default case, then the entire switch body is skipped. 45

Case Study (1/2) Write a program that prompts the user to input the boiling point in degree Celsius. The program should output the substance corresponding to the boiling point listed in the table. The program should output the message substance unknown when it does not match any substance. Substance Water 100 C Mercury 357 C Boiling point Copper 1187 C Silver 2193 C Gold 2660 C 46

Case Study (2/2) Examples of the scenario of your program. Please input: 357 The substance is Mercury. Please input: 3333 Substance unknown. You can determine the substance within a range of boiling points to get bonus (e.g., +5 degrees). Please refer to pages 207-208 in the text book. Please input: 359 The substance is Mercury. You can apply any technique in this chapter. 47

Remember!!! The statements following a case label may be one or more C statements, so you do not need to make multiple statements into a single compound statement using braces. You cannot use a string such as Cruiser or Frigate as a case label. It is important to remember that type int and char values may be used as case labels, but strings and type double values CANNOT be used. Another very common error is the omission of the break statement at the end of one alternative. In such a situation, execution falls through into the next alternative. Forgetting the closing brace of the switch statement body is also easy to do. In the book it says that forgetting the last closing brace will make all following statements occur in the default case, but actually the code will not compile on most compilers. 48

Nested if versus switch Advantages of if: It is more general than a switch It can be a range of values such as x < 100 A switch can not compare Strings or doubles Advantages of switch: A switch is more readable Use the switch whenever there are ten or fewer case labels 49

Common Programming Errors Consider the statement: if (0 <= x <= 4) This is always true! First it does 0 <= x, which is true or false so it evaluates to 1 for true and 0 for false Then it takes that value, 0 or 1, and does 1 <= 4 or 0 <= 4 Both are always true In order to check a range use (0 <= x && x <= 4). Consider the statement: if (x = 10) This is always true! The = symbol assigns x the value of 10, so the conditional statement evaluates to 10 Since 10 is nonzero this is true. (see the program below, in notes) You must use == for comparison 50

More Common Errors Don t forget to parenthesize the condition. Don t forget the { and } if they are needed C matches each else with the closest unmatched if, so be careful so that you get the correct pairings of if and else statements. In switch statements, make sure the controlling expression and case labels are of the same permitted type. Remember to include the default case for switch statements. Don t for get your { and } for the switch statement. Don t forget your break statements!!! 51