Lec 6 Programming Fundamentals-If-Else (1)
Lec 6 Programming Fundamentals-If-Else (1)
Lecture 07
Week 05
Ms. Noor-ul-Huda
Lecturer
Department of Computer Science
College of Computer Science and Information Systems
noor.huda@iobm.edu.pk
Lecture outcomes:
◦ Conditional Statements
If
If-Else
matching else
Switch
default
break
Decision Making
◦ Decision-making statements decide the direction and the flow of the
program.
◦ IF it is raining
◦ THEN I will not go outside
•Logical operators:
• operators to logically combine logical values
• produce complex combinations of conditions
• operators apply to logical values
Relational Operators
Operator Meaning
X == Y X equal to Y
X != Y X not equal to Y
X < Y X less than Y
X > Y X greater than Y
X <= Y X less than or equal to Y
X >= Y X greater than or equal to Y
Relational Examples
A: 4 B: 3 C: 2.5
A < B 0 (false)
‘A’ < ‘B’ 1 (true)
Algorithm
1. Input Num1 and Num2
2. Store largest of Num1 and Num2 in Big
2.1 Store Num1 in Big
2.2 IF Num2 > Num1 THEN store Num2 in Big
IF Statement
Syntax: if (LogicalExpr) Statement
Program context:
statement1;
if (LogicalExpr) statement2;
statement3;
Order of execution:
LogicalExpr
1 (true) 0 (false)
statement1 statement1
statement2 statement3
statement3
Flow of Execution
statement1
Logical true
statement2
Expression
false
statement3
Flow Chart for our Problem
input Num1
input Num2
true
Num2 > Num1 Store Num2 in Big
false
Code for Solution
int findMax(int Num1, int Num2) {
int Big;
Big = Num1;
if (Num2 > Num1) Big = Num2;
return Big;
}
Trace of Solution
Trace of findMax(9,6):
if (LogicalExpr) {
/* statement(s) */
}
else {
/* statement(s) */
}
Easy to add statements later
Programming Tip: Indenting
Use indenting to make code more clear
◦ indent statements in function definition to clearly identify body of function
◦ indent statement(s) executed for if by fixed amount (2,3 chars) every time
◦ for ifs within an if indent further
◦ indent else statements(s) similarly
◦ may want to make {,} match (on separate lines)
Programming Tip: Conditions
Code most likely conditions first
false
Score true
Unsatisfactory
<= 65
false
Satisfactory
Multiway with If-Else
if (score <= 55)
printf(“Failing\n”);
else
if (score <= 65)
printf(“Unsatisfactory\n”);
else
printf(“Satisfactory\n”);
Indenting If-Else Combinations
Multiway if-else statements sometimes indented:
if (score <= 55)
printf(“Failing\n”);
else if (score <= 65)
printf(“Unsatisfactory\n”);
else
printf(“Satisfactory\n”);
Rule for else: else matches most recent if
Conditions Checked in
Reverse
Score true
Satisfactory
> 65
false
Score true
Unsatisfactory
> 55
false
Failing
Ordering Conditions
if (score > 65)
printf(“Satisfactory\n”);
else if (score > 55)
printf(“Unsatisfactory\n”);
else
printf(“Failing\n”);
But must check conditions in correct order
if (score > 55)
printf(“Unsatisfactory\n”);
else if (score > 65)
printf(“Satisfactory\n”);
else
printf(“Failing\n”);
Score of 70 would produce “Unsatisfactory”
Multiway with If Statements
Possible but inefficient:
NS = NS + A;
printf(“All done.\n”);
Choosing Conditions
Selection Example C Statement
One way X>0 If
Two way X>0 If-Else
X <= 0
Multiway 0 <= X <= 10 Nested
11 <= X <= 20 If-Elses
21 <= X <= 30
Switch Statement
More readable approach: switch statement
switch (score) {
case 9: case 10:
grade = ‘A’;
break;
case 7: case 8:
grade = ‘B’;
break;
case 5: case 6:
grade = ‘C’;
break;
case 0: case 1: case 2: case3: case 4:
grade = ‘F’;
}
Switch Format
switch (Expression) {
case const1-1: case const1-2: ...
statement
statement
...
case const2-1: case const2-2: ...
statement
statement
...
default: ...
statement
statement
...
}
Switch Rules
Expression must be integral type (no float)
Case labels must be constant values
No two case labels with same value
Two case labels can be associated with same set of statements
Default label is not required
At most one default label
Switch Rules
Evaluating
◦ determine value of expression
◦ look for corresponding label
◦ if no corresponding label look for default
◦ if no corresponding label or default, do nothing
◦ execute all statements from label to }