0% found this document useful (0 votes)
36 views38 pages

Utline: Control Structures Conditions, Relational, and Logic Operators

The document outlines control structures in C programming and discusses selection control structures. It covers conditions, relational and logical operators, and the if statement. It also discusses compound statements, nested if statements, and implementing decision tables using if/else statements. The switch statement is introduced as another selection control structure that can be used to choose among multiple alternatives.

Uploaded by

darwinvargas2011
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
36 views38 pages

Utline: Control Structures Conditions, Relational, and Logic Operators

The document outlines control structures in C programming and discusses selection control structures. It covers conditions, relational and logical operators, and the if statement. It also discusses compound statements, nested if statements, and implementing decision tables using if/else statements. The switch statement is introduced as another selection control structure that can be used to choose among multiple alternatives.

Uploaded by

darwinvargas2011
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 38

OUTLINE

 Control Structures
 Conditions, Relational, and Logic Operators
 The if Statement and Flowchart
 if with Compound Statements
 Nested if statements
 The switch Statement
 Operator Precedence, Complementing a Condition
1
 Common Programming Errors
CONTROL STRUCTURES
 Control structure
 Control the flow of execution in a program or a function

 Three kinds of control structures


 Sequence (Compound Statement)

 Selection (if and switch Statements)

 Repetition [Chapter 5]

 Selection control structure


2
 Chooses among alternative program statements
COMPOUND STATEMENT
A group of statements bracketed by { and }
 Executed Sequentially
A function body consists of a compound statement
{
statement1 ; Compound
statement2 ; Statement
Specifies
. . . Sequential
statementn ; Execution
3

}
CONDITIONS
 Condition

 An expression that evaluates to false (0) or true (1)

 Conditions are used in if statements, such as:


if (a >= b)
printf("a is greater or equal to b");
else
printf("a is less than b");
4
 The condition in the above example: (a >= b)
RELATIONAL AND EQUALITY OPERATORS
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

 Evaluate to either false (0) or true (1) 5


EXAMPLES OF RELATIONAL AND
EQUALITY OPERATORS
x i MAX y item mean ch num
-5 1024 1024 7 5.5 7.2 'M' 999

Operator Condition Value


<= x <= 0 true (1)
< i < MAX false (0)
>= x >= y false (0)
> item > mean false (0)
== ch == 'M' true (1)
6
!= num != MAX true (1)
LOGICAL OPERATORS
 Three Logical Operators
&& logical AND
|| logical OR
! logical NOT
 Truth Table for logical operators
A B (A && B) (A || B) !A
true true true true false
true false false true false
false true false true true 7

false false false false true


LOGICAL EXPRESSIONS
 Logical Expression
 Condition that uses one or more logical operators
salary children temperature humidity n
1050 6 38.2 0.85 101

Logical Expression Value


salary < 1000 || children > 4 true (1)
temperature > 35.0 && humidity > 0.90 false (0)
n >= 0 && n <= 100 false (0)
8
!(n >= 0 && n <= 100) true (1)
COMPARING CHARACTERS
 We can also compare characters in C
 Using the relational and equality operators

Expression Value
'9' >= '0' 1 (true)
'a' < 'e' 1 (true)
'B' <= 'A' 0 (false)
'Z' == 'z' 0 (false)
'A' <= 'a' 1 (true)
ch >= 'a' && ch <= 'z' ch is lowercase? 9
ENGLISH CONDITIONS AS C EXPRESSIONS
English Condition Logical Expression
x and y are greater than z x > z && y > z

x is equal to 1 or 3 x == 1 || x == 3

x is in the range min to max x >= min && x <= max

x is outside the range z to y x < z || x > y

10
NEXT . . .
 Control Structures
 Conditions, Relational, and Logic Operators
 The if Statement and Flowchart
 if with Compound Statements
 Nested if statements
 The switch Statement
 Operator Precedence, Complementing a Condition
11
 Common Programming Errors
if STATEMENT (ONE ALTERNATIVE)
if (condition) statementT ;

if condition evaluates to true then statementT is


executed; Otherwise, statementT is skipped

Example:

if (x != 0.0)

product = product * x ; 12
if STATEMENT (TWO ALTERNATIVES)
if (condition) statementT ;
else statementF ;
if condition evaluates to true then statementT is
executed and statementF is skipped; Otherwise,
statementT is skipped and statementF is executed
Example:
if (x >= 0.0) printf("Positive");
13
else printf("Negative");
FLOWCHARTS OF if STATEMENTS

Two Alternatives One Alternative 14

if-else statement if statement


if WITH COMPOUND STATEMENTS
if (ch >= 'A' && ch <= 'Z') {
printf("Letter '%c' is Uppercase\n", ch);
ch = ch – 'A' + 'a';
printf("Converted to lowercase '%c'\n", ch);
}
else {
printf("'%c' is not Uppercase letter\n", ch);
printf("No conversion is done\n");
} 15
HAND TRACING AN if STATEMENT
if (x > y) { /* switch x and y */
temp = x; /* save x in temp */
x = y; /* x becomes y */
y = temp; /* y becomes old x */
}

if statement x y temp Effect


12.5 5.0 ?
if (x>y) { 12.5>5.0 is true
temp = x ; 12.5 Store old x in temp
x = y ; 5.0 Store y in x
16
y = temp ; 12.5 Store old x in y
NEXT . . .
 Control Structures
 Conditions, Relational, and Logic Operators
 The if Statement and Flowchart
 if with Compound Statements
 Nested if statements
 The switch Statement
 Operator Precedence, Complementing a Condition
17
 Common Programming Errors
NESTED IF STATEMENTS
 Nested if statement
 if statement inside another if statement
 Program decisions with multiple alternatives
 Example

if (x > 0)
num_pos = num_pos + 1;
else
if (x < 0)
num_neg = num_neg + 1;
else /* x equals 0 */
18
num_zero = num_zero + 1;
MULTIPLE-ALTERNATIVE DECISION FORM
 The conditions are evaluated in sequence until a true
condition is reached
 Ifa condition is true, the statement following it is
executed, and the rest is skipped
if (x > 0)
num_pos = num_pos + 1;
else if (x < 0) More
num_neg = num_neg + 1; Readable
else /* x equals 0 */
19
num_zero = num_zero + 1;
SEQUENCE OF if STATEMENTS
 All conditions are always tested (none is skipped)
 Less efficient than nested if for alternative decisions

if (x > 0)
num_pos = num_pos + 1; Less
if (x < 0) Efficient
num_neg = num_neg + 1; than
if (x == 0) nested if
num_zero = num_zero + 1; 20
IMPLEMENTING A DECISION TABLE
Use a multiple-alternative if statement to implement a
decision table that describes several alternatives

Salary Range ($) Base Tax Rate


Salary < $15,000 $0 15%
$15,000 ≤ Salary < $30,000 $2,250 18%
$30,000 ≤ Salary < $50,000 $4,950 22%
$50,000 ≤ Salary < $80,000 $9,350 27%
Salary  $80,000 $17,450 33% 21
COMPUTING THE TAX FROM A TABLE
if (salary < 15000)
tax = 0.15*salary;
else if (salary < 30000)
tax = 2250 + (salary – 15000)*0.18;
else if (salary < 50000)
tax = 4950 + (salary – 30000)*0.22;
else if (salary < 80000)
tax = 9350 + (salary – 50000)*0.27;
else
22
tax = 17450 + (salary – 80000)*0.33;
ROAD SIGN DECISION
 Youare writing a program to control the warning signs at
the exists of major tunnels.

'S' means road is Slick or Slippery

temperature

23
ROAD SIGN NESTED if STATEMENT
if (road_status == 'S')
if (temp > 0) {
printf("Wet roads ahead\n");
printf("Stopping time = 10 minutes\n");
} C associates else with the
else { most recent incomplete if

printf("Icy roads ahead\n");


printf("Stopping time = 20 minutes\n");
}
else 24

printf("Drive carefully!\n");
NEXT . . .
 Control Structures
 Conditions, Relational, and Logic Operators
 The if Statement and Flowchart
 if with Compound Statements
 Nested if statements
 The switch Statement
 Operator Precedence, Complementing a Condition
25
 Common Programming Errors
THE switch STATEMENT
 Can be used to select one of several alternatives
 Based on the value of a variable or simple expression
 Variable or expression may be of type int or char
 But not of type double
 Example: Simple Calculator
User Input Operation
'+' result = a + b;
'–' result = a – b;
'*' result = a * b; 26

'/' result = a / b;
switch (op) { // op must be of type char
case '+':
result = a + b;
break; EXAMPLE OF A
case '-':
result = a – b; switch
break;
case '*': STATEMENT
result = a * b;
break;
case '/':
result = a / b;
break;
default:
printf("Error: unknown operation %c\n", op);
27
return; // to terminate the function
}
EXPLANATION OF switch STATEMENT
 Ittakes the value of the character op and compares it to
each of the cases in a top down approach.
 Itstops after it finds the first case that is equal to the
value of the variable op.
 Itthen starts to execute each line following the matching
case till it finds a break statement.
 Ifno case is equal to the value of op, then the default
case is executed.
 default is optional. If no other case is equal to the value
of the controlling expression and there is no default case, 28
the entire switch body is skipped.
MORE ABOUT THE switch STATEMENT
 One or more C statements may follow a case label.
 You do not need to enclose multiple statements in curly
brackets after a case label.
 You cannot use a string as a case label.
case "Add": is not allowed
 Do not forget break at the end of each alternative.
 If the break statement is omitted then execution falls through
into the next alternative.
29

 Do not forget the { } of the switch statement.


NESTED if VERSUS switch
 Nested if statements
 More general than a switch statement
 Can implement any multiple-alternative decision
 Can be used to check ranges of values
 Can be used to compare double values
 switch statement
 Syntax is more readable
 Implemented more efficiently in machine language
 Use switch whenever there are few case labels
30
 Use default for values outside the set of case labels
NEXT . . .
 Control Structures
 Conditions, Relational, and Logic Operators
 The if Statement and Flowchart
 if with Compound Statements
 Nested if statements
 The switch Statement
 Operator Precedence, Complementing a Condition
31
 Common Programming Errors
OPERATOR PRECEDENCE
Operator Precedence
function calls highest
! + - & (unary operators)
* / %
+ –
< <= >= >
== !=
&& (logical AND)
|| (logical OR) 32
= (assignment operator) lowest
EVALUATION TREE, STEP-BY-STEP EVALUATION

33
SHORT-CIRCUIT EVALUATION
 Stopping the evaluation of a logical expression as soon as
its value can be determined
 Logical-OR expression of the form (a || b)
 If a is true then (a || b) must be true, regardless of b
 No need to evaluate b
 However, if a is false then we should evaluate b

 Logical-AND expression of the form (a && b)


 If a is false then (a && b) must be false, regardless of b
 No need to evaluate b
 However, if a is true then we should evaluate b
 Canbe used to prevent division by zero 34

(divisor != 0 && x / divisor > 5)


LOGICAL ASSIGNMENT
 Use assignment to set int variables to false or true
 The false value is zero
C accepts any non-zero value as true
Examples of Logical Assignment
senior_citizen = (age >= 65);
even = (n%2 == 0);
uppercase = (ch >= 'A' && ch <= 'Z');
lowercase = (ch >= 'a' && ch <= 'z');
35

is_letter = (uppercase || lowercase);


COMPLEMENTING A CONDITION
 DeMorgan's Theorem
!(expr1 && expr2) == (!expr1 || !expr2)
!(expr1 || expr2) == (!expr1 && !expr2)

Example Equivalent Expression


!(item == 5) item != 5
!(age >= 65) age < 65
!(n > 0 && n < 10) n <= 0 || n >= 10
!(x == 1 || x == 3) x != 1 && x != 3
36

!(x>y && (c=='Y' || c=='y')) (x<=y) || (c!='Y' && c!='y')


COMMON PROGRAMMING ERRORS
 Do Not write: if (0 <= x <= 4)
 0 <= x is either false (0) or true (1)
 Then, false(0) or true(1) are always <= 4
 Therefore, (0 <= x <= 4) is always true
 Instead, write: if (0 <= x && x <= 4)
 Do Not write: if (x = 10)
 = is the assignment operator
 x becomes 10 which is non-zero (true)
 if (x = 10) is always true
37
 Instead, write: if (x == 10)
MORE COMMON ERRORS
 In if statements:
 Don’t forget to parenthesize the if (condition)
 Don’t forget { and } in if with compound statements
 Correct pairings of if and else statements:
 C matches else with the closest unmatched if
 In switch statements:
 Make sure the controlling expression and case labels are of
the same permitted type (int or char)
 Remember to include the default case
 Don’t forget { and } for the switch statement 38

 Don’t forget the break at the end of each case

You might also like