Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 52

TMF1414

INTRODUCTION
TO
PROGRAMMING
Lecture 04: Control Structure
CONTENT

 Relational operators
 Selection Structure Component in a program code
 if
 if-else

 Repetition Control Structure


 for
 while
 do while

 Switch Multiple Selection Statement


 Break, continue, goto statement
 Logical Operation
For example:

CONSID int main() {


int age;

ER THIS printf(“What is your age?”);


scanf(“%d”, &age);

PROGRA printf(“your age is %d”, age);

M return 0;
}
CONSIDER THIS…

 What if your program have more than two ways to perform?


 For example:
If age 18 and above is adult, while younger than 18 is teenager.
 From the program in previous slide, how can you code your program
to perform in a way to determine you as adult or minor based on your
input?
 In order to the change the code, you need to know the appropriate
operational operator to use
 Relational operators are used to
compare values of two expressions.
RELATI  Relational operators are binary
operators because they require two

ONAL operands to operate.


 An expression which contains the

OPERAT
relational operators is called relational
expression.
 If the relation is true then the result of

ORS the relational expression is 1, if the


relation is false then the result of the
relational expression is 0.
Operator Description Example Result

> Greater than 1>2 0

>= Greater than or 3 >= 2 1


RELATIO
equal to
NAL
< Smaller than 10 < 5 0 OPERAT
<= Smaller than 6 <= 7 1 ORS
or equal to

== equal to 98==98 1

!= not equal to 10 != 9 1
THE IF SELECTION
STATEMENT
 Also known as single if statement
if (condition){
statement(s)
}
 For example, you can use the earlier example.
 If age 18 and above is adult, while younger than 18 is teenager

 The pseudocode statement


 If age is equal to 18 and above,
 you are adult will be printed
 if age is less than 18,
 you are teenager is printed
THE IF SELECTION
STATEMENT (CONT.)
 The preceding pseudocode If statement may be written in C as
 if ( age >= 18 ) {
printf( “You are adult\n" );
}
 if (age < 18){
printf(“You are teenager\n”);
}
 Notice that the C code corresponds closely to the pseudocode
THE IF SELECTION
STATEMENT (CONT.)
 The flowchart on the next page illustrates the single-selection if
statement.
 This flowchart contains what is perhaps the most important
flowcharting symbol—the diamond symbol, also called the decision
symbol, which indicates that a decision is to be made.
 The decision symbol contains an expression, such as a condition, that
can be either true or false.
THE IF SELECTION
STATEMENT (CONT.)
yes
if Display
age >= 18 You are adult

no

yes
if Display
age < 18 You are teenager

no
THE IF…ELSE
SELECTION STATEMENT
 The if…else selection statement allows you to specify that different actions are to
be performed when the condition is true and when it’s false.
 For example, the pseudocode statement
If age is greater than or equal to 18
Print “You are adult”
else
Print “You are teenager”
 In either case, after printing occurs, the next pseudocode statement in sequence is
“performed.” The body of the else is also indented.
THE IF…ELSE SELECTION
STATEMENT (CONT.)
 The preceding pseudocode If…else statement may be written in C as
if ( age >= 18 ) {
printf( “You are adult\n" );
}
else {
printf( “You are teenager\n" );
}

 The flowchart on the next page illustrates the flow of control in the
if…else statement.
 Once again, besides small circles and arrows, the only symbols in the
flowchart are rectangles for actions and a diamond for a decision.
THE IF…ELSE SELECTION
STATEMENT (CONT.)
yes
if Display
age >= 18 You are adult

no

Display
You are teenager
THE IF…ELSE SELECTION
STATEMENT (CONT.)
 C provides the conditional operator (?:) which is closely related to
the if…else statement.
Syntax :
condition ? result1 : result2

If the condition is true, result1 is returned else result2 is returned.


 Example:
 ( age >= 18 ) ? printf(“Adult \n”) : printf(“Teenager \n”);
NESTED IF…ELSE
SELECTION STATEMENT
Nested if...else Statements
 test for multiple cases by placing if…else statements inside if…else
statements.
 For example, the following statements will
 print Kids if age is less than 12
 print Teenager if age is less than 18
 print Adult if age is less than 60
 print Senior if age is greater or equal to 60
NESTED IF…ELSE
SELECTION STATEMENT
Pseudocode
If age is less than 12
Print “Kids”
else
If age is less than 18
Print “Teenager”
else
If age is less than 60
Print “Adult”
else
Print “Senior”
NESTED IF…ELSE
SELECTION STATEMENT
This pseudocode may be written in C as
if (age < 12)
printf("Kids\n");
else {
if (age<18)
printf("Teenager\n");
else {
if (age<60)
printf("Adult\n");
else
printf("Senior");
}
}
IF…ELSE IF…ELSE
SELECTION STATEMENT
This nested if…else can be simplified using if..else if..else
if (age < 12)
printf("Kids\n");
else if(age<18)
printf("Teenager\n");
else if (age<60)
printf("Adult\n");
else
printf("Senior");
THE IF…ELSE SELECTION
STATEMENT (CONT.)
 As far as the C compiler is concerned, both forms are equivalent.
 The latter form is popular because it avoids the deep indentation of
the code to the right.
 The if selection statement expects only one statement in its body—if
you have only one statement in the if’s body, you do not need the
enclose it in braces.
 To include several statements in the body of an if, you must enclose
the set of statements in braces ({ and }).
 A set of statements contained within a pair of braces is called a
compound statement or a block.
THE IF…ELSE
SELECTION STATEMENT
 The following example includes a compound statement in the else
part of an if…else statement.
 if ( age >= 18 ) {
printf( “Adult\n" );
}
else {
printf( “Teenager\n" );
printf( “Soon, you will be an adult\n");
}

 If only one statement per condition the {} can be omitted


 More than 1 statements, the {} is needed. If missing {},like else
condition, the printf(“Teenager\n”); is considered the only statement
belongs to else condition.
REPETITION
ESSENTIALS
 A loop is a group of instructions the computer executes repeatedly while some
loop-continuation condition remains true.
 We’ve discussed two means of repetition:
 Counter-controlled repetition
 Sentinel-controlled repetition

 Counter-controlled repetition is sometimes called definite repetition because we


know in advance exactly how many times the loop will be executed.
 Sentinel-controlled repetition is sometimes called indefinite repetition because
it’s not known in advance how many times the loop will be executed.
REPETITION ESSENTIALS
 There are three repetition/looping structures that can be used for counter-controlled
repetition
 for loop
 while loop
 do-while loop

 For loop and while loop are pre-test condition looping


 Condition must be true in order to proceed the looping block { }
 If condition false, the looping block is not executed

 Do-while loop is a post-test condition looping


 The looping block { } will execute at least once
 The looping will continue if the condition is true. If false, the loop is terminated
immediately
 For sentinel repetition, for loop structure is not suitable. You can apply while loop or
do-while loop to implement sentinel repetition
REPETITION ESSENTIALS

PRE-TEST LOOPING POST-TEST LOOPING


for(initial_counter; condition; initial_counter;
update_counter){
do{
statement;
statement;

….
}
update_counter;
}while(condition);
initial_counter;
while(condition){
statement;

update_counter;
}
COUNTER-CONTROLLED
REPETITION EXAMPLE
Write a program using loop controlled to display “This is my first
program” for 10 times.

TIPS: For the solution, you may use any three types of loop to solve
the above problem.
FOR
LOOP
SOLUTI
ON
FOR
LOOP
HEADER
COMPON
ENTS
GENERAL FLOWCHART OF
FOR LOOP
Assign 1 to
counter

counter yes Display


<=10 This is my first counter++
program

no
EXAMPLES USING
THE FOR LOOP
 The following examples show methods of varying the control variable in a for statement.
 Vary the control variable from 1 to 100 in increments of 1.
 for ( i = 1; i <= 100; ++ i )
 Vary the control variable from 100 to 1 in increments of -1 (decrements of 1).
 for ( i = 100; i >= 1; --i )
 Vary the control variable from 7 to 77 in steps of 7.
 for ( i = 7; i <= 77; i += 7 )
 Vary the control variable from 20 to 2 in steps of -2.
 for ( i = 20; i >= 2; i -= 2 )
 Vary the control variable over the following sequence of values: 2, 5, 8, 11, 14, 17.
 for ( j = 2; j <= 17; j += 3 )
 Vary the control variable over the following sequence of values: 44, 33, 22, 11, 0.
 for ( j = 44; j >= 0; j -= 11 )
WHILE
LOOP
SOLUT
ION
GENERAL FLOWCHART OF
WHILE LOOP
Assign 1 to
counter

while yes Display


counter This is my first counter++
<=10 program

no
DO-
WHILE
LOOP
SOLUT
ION
GENERAL FLOWCHART OF
DO-WHILE LOOP
Assign 1 to
counter
yes

Display while
This is my first counter++ counter
program <=10

no
THE SWITCH MULTIPLE-
SELECTION STATEMENT
 switch
 Useful when a variable or expression is tested for all the values it can assume and different
actions are taken
 
 Format
 Series of case labels and an optional default case
switch ( value ){
case ‘a':
actions
case ‘b':
actions
default:
actions
}
 break; exits from statement

33
THE
SWITCH
MULTIPL
E-
SELECTIO
N
STATEME
NT
Flowchart of the switch
statement

34
SWITC
H CASE
EXAMP
LES
THE BREAK AND CONTINUE
STATEMENTS
 break
 Causes immediate exit from a while, for, do…while or switch
statement
 Program execution continues with the first statement after the structure
 Common uses of the break statement
 Escape early from a loop
 Skip the remainder of a switch statement

36
1 /* Fig. 4.11: fig04_11.c
2 Using the break statement in a for statement */
3 #include <stdio.h>
4
5 /* function main begins program execution */
6 int main( void )
7 {
8 int x; /* counter */
9
10 /* loop 10 times */
11 for ( x = 1; x <= 10; x++ ) {
12
13 /* if x is 5, terminate loop */
14 if ( x == 5 ) {
15 break; /* break loop only if x is 5 */
16 } /* end if */ break immediately ends for
17 loop
18 printf( "%d ", x ); /* display value of x */
19 } /* end for */
20
21 printf( "\nBroke out of loop at x == %d\n", x );
22
23 return 0; /* indicate program ended successfully */
24
25 } /* end function main */

1 2 3 4
Broke out of loop at x == 5
37
THE BREAK AND CONTINUE
STATEMENTS
 continue
 The continue statement, when executed in a while, for or do…
while statement, skips the remaining statements in the body of that
control statement and performs the next iteration of the loop.
 In while and do…while statements, the loop-continuation test is
evaluated immediately after the continue statement is executed.
 In the for statement, the increment expression is executed, then the loop-
continuation test is evaluated.

38
1 /* Fig. 4.12: fig04_12.c
2 Using the continue statement in a for statement */
3 #include <stdio.h>
4
5 /* function main begins program execution */
6 int main( void )
7 {
8 int x; /* counter */
9
10 /* loop 10 times */
11 for ( x = 1; x <= 10; x++ ) {
12
13 /* if x is 5, continue with next iteration of loop */
14 if ( x == 5 ) {
15 continue; /* skip remaining code in loop body */
16 } /* end if */
continue skips to end of for
17
loop and performs next iteration
18 printf( "%d ", x ); /* display value of x */
19 } /* end for */
20
21 printf( "\nUsed continue to skip printing the value 5\n" );
22
23 return 0; /* indicate program ended successfully */
24
25 } /* end function main */

1 2 3 4 6 7 8 9 10
Used continue to skip printing the value 5
39
GOTO  goto statements is used to transfer

STATEM the normal flow of a program to


the specified label in the program.

ENT
LOGICAL OPERATORS
 C provides logical operators that may be used to form more complex
conditions by combining simple conditions.
 The logical operators are && (logical AND), || (logical OR) and !
(logical NOT also called logical negation).
LOGICAL
OPERATOR
 Logical AND
 Returns true if both
conditions are true.
 Logical OR
 Returns true if either of its
conditions are true.
 Logical NOT
 Reverses the truth/false of
its condition
 unary operator, has one
operand
LOGICAL OPERATORS
(CONT.)
 Summary of Operator
Precedence and
Associativity
 The operators are shown
from top to bottom in
decreasing order of
precedence.
CONFUSING EQUALITY (==) AND
ASSIGNMENT (=) OPERATORS
 operators == (equality) and = (assignment).
 What makes these swaps, so damaging is the fact that they do not
ordinarily cause compilation errors.
 Rather, statements with these errors ordinarily compile correctly,
allowing programs to run to completion while likely generating
incorrect results through runtime logic errors.
CONFUSING EQUALITY (==) AND
ASSIGNMENT (=) OPERATORS
(CONT.)
 For example, suppose we intend to write
 if ( payCode == 4 )
printf( “%s“, "You get a bonus!" );

 but we accidentally write


 if ( payCode = 4 )
printf( “%s“, "You get a bonus!" );

 The first if statement properly awards a bonus to the person whose


paycode is equal to 4.
 The second if statement—the one with the error—evaluates the
assignment expression in the if condition.
CONFUSING EQUALITY (==) AND
ASSIGNMENT (=) OPERATORS
(CONT.)
 This expression is a simple assignment whose value is the constant 4.
 Because any nonzero value is interpreted as “true,” the condition in
this if statement is always true, and not only is the value of payCode
inadvertantly set to 4, but the person always receives a bonus
regardless of what the actual paycode is!
CONFUSING EQUALITY (==) AND
ASSIGNMENT (=) OPERATORS
(CONT.)
 Confusing == and = in Standalone Statements
 The other side of the coin can be equally unpleasant.
 Suppose you want to assign a value to a variable with a simple
statement such as
 x = 1;

 but instead write


 x == 1;

 Here, too, this is not a syntax error.


 Rather the compiler simply evaluates the conditional expression.
THANK YOU
FOR YOUR
ATTENTION
Any question?

You might also like