CP - Unit-II
CP - Unit-II
UNIT – II:
Compound Statement
Decision Control Structures
The decision is described to the computer as a conditional
statement that can be answered either true or false.
if (condition)
{
statement-block;
}
Both the true and false statements can be any statement (even
another if…else).
Nested if…else means within the if…else you can include another if…else
either in
if block or else block.
Nested if…else Statements
Decision Control Statement: nested if…else
Decision Control Statement: nested if…else
Decision Control Statement: else if
if (condition1)
statements1;
else if (condition2)
statements2;
else if (condition3)
statements3;
else if (condition4)
statements4;
……
else if(conditionn)
statementsn;
else
Thedefault_statement;
conditions are evaluated from the top to down.
As statement x; condition is found the statement associated with it is executed
soon as a true
and the control is transferred to the statementx by skipping the rest of the ladder.
When all n conditions become false,final else containing default_statement
that will be executed
main() {
Example program for nested if…else
float m1,m2,m3,m4;
float perc;
printf(“Enter marks\n”);
scanf(“%f%f%f%f”,&m1,&m2,&m3,&m4);
perc=(m1+m2+m3+m4)/4;
if(perc>=75)
printf(“\nDistinction”);
else {
if(per<75 && per>=60)
printf(“\nFirst Class”);
else {
if(per<60 && per>=50)
printf(“\nSecond Class”);
else {
if(per<50 && per>=40)
printf(“\nThird Class”);
else
printf(“\nFail”);
}//else
}//else
}//else
}//main
Example program for else if
main()
{
float m1,m2,m3,m4;
float perc;
printf(“enter marks\n”);
scanf(“%f%f%f%f”,&m1,&m2,&m3,&m4);
perc=(m1+m2+m3+m4)/4;
if(perc>=75)
printf(“\nDistinction”);
else if(per<75 && per>=60)
printf(“\nFirst Class”);
else if(per<60 && per>=50)
printf(“\nSecond Class”);
else if(per<50 && per>=40)
printf(“\nThird Class”);
else
printf(“\nFail”);
}//main
Dangling else
else is always paired with the most recent unpaired if.
Dangling else
Dangling else
(contd…)
To avoid dangling else problem place the inner if statement
with in the curly braces.
Conditional Expression
Decision Control Statement: switch
A case label cannot appear more than once and there can only be one
default expression.
Decision Control Statement: switch
Note: switch statement does not allow less than ( < ), greater than
( > ).
ONLY the equality operator (==) is used with a switch statement.
The control variable must be integral (int or char) only.
When the switch statement is encountered, the control variable is
evaluated.
Then, if that evaluated value is equal to any of the values specified
in a case clause, the statements immediately following the colon
(“:”) begin to run.
Default case is optional and if specified, default statements will
be executed, if there is no match for the case labels.
Once the program flow enters a case label, the statements
associated with case have been executed, the program flow
continues with the statement for the next case. (if there is no
break statement after case label.)
Decision Control Statement: switch
If printFlag is 2, then the first print statement is skipped and the last two
are executed.
If we add break to the last statement of the case, the general form of
switch case is as follows:
Decision Control Statement: switch
General format of switch:
Decision Control Statement: switch
Example2 for switch statement:
Repetitive control structures – Pre-test and post-test loops,
initialization and updation, event and counter controlled loops,
while, do..while, for, break and continue statements, comma
expression.
If it is not done, the loop repeats one more time; if it is done, the
loop terminates.
Concept of a Loop
Pretest and Post-test Loops
Post-test Loop
In each iteration, the loop action(s) are executed. Then the
control expression is tested. If it is true, a new iteration is
started; otherwise, the loop terminates.
Pretest and Post-test Loops
Minimum Number of Iterations in Two Loops
Initialization and Updating
Loop Initialization
Loop Update
All the possible expressions that can be used in a loop limit test can be
summarized into two general categories:
1. Event-controlled loops and
2. Counter-controlled loops.
first two are pretest loops, and the third is a post-test loop.
Test for the specified condition for execution of the loop, known as loop
control expression.
#include<stdio.h>
main()
{
int i;
i=1;
while (i<=10)
{
printf(“%d\n”,i);
i++;
}
}
Example 2: To print the reverse of the given number.
void main()
{
int n, rem, rev = 0;
printf("\n Enter a positive number: ");
scanf("%d",&n);
while(n != 0)
{
rem = n%10;
rev = rev*10+rem;
n = n/10;
}
printf("The reverese of %d is %d",n,rev);
}
do while
The “do while" loop is a repetition statement that allows an action to be
done at least once and then condition is tested.
If the condition is true, it evaluates the body of the loop once again.
#include<stdio.h>
main()
{
int a=0,b=1,c,i;
i=1;
printf("%d%d",a,b);
do
{
c=a+b;
i++;
printf("%3d",c);
a=b;
b=c;
}while(i<=10);
}
Example 4: To print multiplication table for 5.
#include <stdio.h>
void main()
{
int i = 1, n=5;
do
{
printf(“ %d * %d = %d “, n, i, n*i);
i = i + 1;
} while ( i<= 5);
}
//Program to print 5 4 3 2 1 using while and do…while
Pre- and Post-test Loops
for
A for loop is used when a loop is to be executed a known number
of times.
We can do the same thing with a while loop, but the for loop is
easier to read and more natural for counting loops.
Option 1:
for (k= 1; k< = 10 ;)
{
printf(“%d”, k);
k = k + 1;
}
Here the increment is done within the body of the for loop and not in
the for statement. Note that the semicolon after the condition is
necessary.
Option 2:
int k = 1;
for (; k< = 10; k++);
{
printf(“, k);
}
Here the initialization is done in the declaration statement itself, but
still the semicolon before the condition is necessary.
Option 3: The infinite loop
One of the most interesting uses of the for loop is the creation of the infinite loop.
Since none of the three expressions that form the for loop are required, it is
possible to make an endless loop by leaving the conditional expression empty.
For example: for (; ;)
printf(“The loop will run forever\n”);
Actually the for (; ;) construct does not necessarily create an infinite loop because
C’s break statement, when encountered anywhere inside the body of a loop, causes
immediate termination of the loop.
Program control then picks up the code following the loop, as shown here:
for (; ;)
{
ch = getchar( ); /* get a character */
if (ch = = ‘A’)
break ;
}
printf (“you typed an A”);
This loop will run until A is typed at the keyboard.
Option 3: For loop with no body
The following statement shows how to create a time delay loop using a for
loop:
When loop are nested break only exit from the inner loop containing it.
#include<stdio.h>
main()
{
int i;
i=1;
while(i<=10)
{
if(i==8)
break;
printf(“%d\t”,i);
i=i+1;
}
printf(“\n Thanking You”);
}
continue
When a continue statement is enclosed inside a block or loop, the loop is
to be continued with the next iteration.
The continue statement tells the compiler, skip the following statements
and continue with the next iteration.
#include<stdio.h>
main()
{
int i;
for(i=1;i<=5;i++)
{
if(i = = 3)
continue;
printf(" %d",i);
}
}