0% found this document useful (0 votes)
4 views34 pages

Unit 2

The document outlines control flow statements in C, including expressions, I/O statements, and various types of operators such as arithmetic, relational, logical, and bitwise operators. It explains operator precedence and associativity, as well as formatted and unformatted input/output functions. Additionally, it covers the use of conditional operators and the significance of different operator types in programming.

Uploaded by

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

Unit 2

The document outlines control flow statements in C, including expressions, I/O statements, and various types of operators such as arithmetic, relational, logical, and bitwise operators. It explains operator precedence and associativity, as well as formatted and unformatted input/output functions. Additionally, it covers the use of conditional operators and the significance of different operator types in programming.

Uploaded by

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

UNIT 2- CONTROL FLOW STATEMENTS

SYLLABUS
Expressions –I/O Statements - Operators: Precedence and Associativity -Decision
Making Statements: if -else if ladder, Nested if, Switch statements - Iterative Statements:
For, While, Do while statements-Break, Continue Statements

Expressions
An expression is a sequence of operators and operands that specifies computation of a
value. For e.g, a=2+3 is an expression with three operands a,2,3 and 2 operators = & +

Simple Expressions & Compound Expression


An expression that has only one operator is known as a simple expression.

E.g: a+2
An expression that involves more than one operator is called a compound expression. E.g: b=2+3*5

Classification of Operators

The operators in C are classified on the basis of


The number of operands on which an operator operates
The role of an operator

Classification based on Number of Operands

Types:
1. Unary Operator: A unary operator operates on only one operand. Some of the unary
operators are,
Operator Meaning
- Minus
++ Increment
-- Decrement
& Address- of operator
sizeof sizeof operator
1. Binary Operator: A binary operator operates on two operands. Some of the binary
operators are,

Operator Meaning
+ Addition
- Subtraction
* Multiplication
/ Division
% Modular Division
&& Logical AND

Ternary Operator

A ternary operator operates on 3 operands. Conditional operator (i.e. ?:) is the ternary operator.

Classification based on role of operands

Based upon their role, operators are classified as,


1. Arithmetic Operators
2. Relational Operators
3. Logical Operators
4. Bitwise Operators
5. Assignment Operators
6. Miscellaneous Operators

Arithmetic Operators

They are used to perform arithmetic operations like addition, subtraction, multiplication, division
etc.
A=10 & B=20
Operator Description Example
+ Adds two operands A + B will give 30
- Subtracts second operand from the first A - B will give -10
* Multiplies both operands A * B will give
200
/ The division operator is used to find the quotient. B / A will give 2
% Modulus operator is used to find the remainder B%A will give 0
+,- Unary plus & minus is used to indicate the algebraic +A, -A
sign of a value.

Increment operator

The operator ++ adds one to its operand.


➢ ++a or a++ is equivalent to a=a+1
➢ Prefix increment (++a) operator will increment the variable BEFORE the
expression is evaluated.
➢ Postfix increment operator (a++) will increment AFTER the expression
evaluation.
➢ E.g.
1. c=++a. Assume a=2 so c=3 because the value of a is incremented and then it
is assigned to c.
2. d=b++ Assume b=2 so d=2 because the value of b is assigned to d before it is
incremented.

Decrement operator

The operator – subtracts one from its operand.


➢ --a or a-- is equivalent to a=a+1
➢ Prefix decrement (--a) operator will decrement the variable BEFORE the
expression is evaluated.
➢ Postfix decrement operator (a--) will decrement AFTER the expression
evaluation.
➢ E.g.
1. c=--a. Assume a=2 so c=1 because the value of a is decremented and then
it is assigned to c.
2. d=b-- Assume b=2 so d=2 because the value of b is assigned to d before it
is decremented.

Relational Operators

Relational operators are used to compare two operands. There are 6 relational
operators in C, they are

Operators Description Example


== Equal to 5==3 returns false (0)
> Greater than 5>3 returns true (1)
< Less than 5<3 returns false (0)
!= Not equal to 5!=3 returns true(1)
>= Greater than or equal to 5>=3 returns true (1)
<= Less than or equal to 5<=3 return false (0)

➢ If the relation is true, it returns value 1 and if the relation is false, it returns value
0.
➢ An expression that involves a relational operator is called as a condition. For e.g
a<b is a condition.

Logical Operators

➢ Logical operators are used to logically relate the sub-expressions. There are 3
logical operators in C, they are
➢ If the relation is true, it returns value 1 and if the relation is false, it returns value
0.

Operator Meaning of Example


Operator Description
&& Logial AND If c=5 and d=2 then,((c==5) && (d>5)) It returns true when
returns false. both conditions are
true

|| Logical OR If c=5 and d=2 then, ((c==5) || (d>5)) It returns true when
returns true. at-least one of the
condition is true

! Logical NOT If c=5 then, !(c==5) returns false. It reverses the state
of the operand

1. Bitwise Operators
C language provides 6 operators for bit manipulation. Bitwise operator operates on the
individual bits of the operands. They are used for bit manipulation.
Operators Meaning of operators
& Bitwise AND
| Bitwise OR
^ Bitwise exclusive OR
~ Bitwise complement
<< Shift left
>> Shift right

Truth tables

p Q p&q p|q p^q


0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

E.g.
12 = 00001100 (In Binary)
25 = 00011001 (In Binary)
Bit Operation of 12 and 25
00001100
& 00011001

00001000 = 8 (In decimal)


Bitwise OR Operation of 12 and 25
00001100
| 00011001

00011101 = 29 (In decimal)

3 << 2 (Shift Left)


0011
1100=12

3 >> 1 (Shift Right)


0011
0001=1

Assignment Operators

To assign a value to the variable assignment operator is used


E.g.
var=5 //5 is assigned to var
a=c; //value of c is assigned to a

Miscellaneous Operators

Other operators available in C are


a. Function Call Operator(i.e. ( ) )
b. Array subscript Operator(i.e [ ])
c. Member Select Operator
i. Direct member access operator (i.e. . dot operator)
ii. Indirect member access operator (i.e. -> arrow operator)
d. Conditional operator (?:)
e. Comma operator (,)
f. sizeof operator
g. Address-of operator (&)

Comma operator

➢ It is used to join multiple expressions together.


➢ E.g.
int i , j;
i=(j=10,j+20);
In the above declaration, right hand side consists of two expressions separated by
comma. The first expression is j=10 and second is j+20. These expressions are evaluated from left
to right. ie first the value 10 is assigned to j and then expression j+20 is evaluated so the final value
of i will be 30.

sizeof Operator

➢ The sizeof operator returns the size of its operand in bytes.


➢ Example : size of (char) will give us 1.
➢ sizeof(a), where a is integer, will return 2.

Conditional Operator

➢ It is the only ternary operator available in C.


➢ Conditional operator takes three operands and consists of two symbols ? and : .
➢ Conditional operators are used for decision making in C.

Address-of Operator

It is used to find the address of a data object.


Syntax
&operand
E.g.
&a will give address of a.

Input/Output statements

The I/O functions are classified into two types:


➢ Formatted Functions
➢ Unformatted functions

Input and Output functions

Formatted Functions Unformatted Functions

printf() getch()
getche()
getchar()
scanf() gets()
putch()
putchar()
puts()

Unformatted Functions:

They are used when I/P & O/P is not required in a specific
format. C has 3 types I/O functions.
a) Character I/O
b) String I/O
c) File I/O
1. getchar() This function reads a single character data from the standard
input. (E.g. Keyboard)
Syntax
variable_name=getchar();
Eg:
Char c;

C=getchar()
1. putchar() This function prints one character on the screen at a time.
Syntax :
putchar(variable name);
eg
char c=„C‟;
putchar(c);
Example Program
#include <stdio.h>
main()
{

int i;
char ch;
ch = getchar();
putchar(ch);
}

Output:
A
2. getch() and getche() : getch() accepts only a single character from keyboard. The character
entered through getch() is not displayed in the screen (monitor).
Syntax
variable_name = getch();

Like getch(), getche() also accepts only single character, but getche() displays the entered
character in the screen.
Syntax

variable_name = getche();

4 putch(): putch displays any alphanumeric characters to the standard output device. It displays
only one character at a time.
Syntax

putch(variable_name);

String I/O
gets() – This function is used for accepting any string through stdin (keyboard) until enter key is
pressed.
Syntax
gets(variable_name);

puts() – This function prints the string or character array.


Syntax

puts(variable_name);

cgets()- This function reads string from the console.


Syntax

cgets(char *st);

It requires character pointer as an argument.


cputs()- This function displays string on the console.
Syntax

cputs(char *st);

Example Program

void main()
{

char ch[30];
clrscr();
printf(“Enter the String : “);
gets(ch);
puts(“\n Entered String : %s”,ch);
puts(ch);
}

Output:
Enter the String : WELCOME
Entered String : WELCOME

Formatted Input & Output Functions

When I/P & O/P is required in a specified format then the standard library functions
scanf( ) & printf( ) are used.

O/P function printf( )

The printf( ) function is used to print data of different data types on the console in a
specified format.

General Form

printf(“Control String”, var1, var2, …);

Control String may contain


1. Ordinary characters

2. Conversion Specifier Field (or) Format Specifiers


They denoted by %, contains conversion codes like %c, %d etc.
and the optional modifiers width, flag, precision, size.

Conversion Codes

Data type Conversion Symbol


char %c
int %d
float %f
Unsigned octal %o
Pointer %p
Width Modifier: It specifies the total number of characters used to display the value.
Precision: It specifies the number of characters used after the decimal point.
E.g: printf(“ Number=%7.2\n”,5.4321);
Width=7
Precesion=2
Output: Number = 5.43(3 spaces added in front of 5)

Flag: It is used to specify one or more print modifications

Flag Meaning
- Left justify the display
+ Display +Ve or –Ve sign of value
Space Display space if there is no sign
0 Pad with leading 0s

Size: Size modifiers used in printf are,

Size modifier Converts To


l Long int
h Short int
L Long double

%ld means long int variable


%hd means short int variable

3. Control Codes

They are also known as Escape Sequences.

E.g:

Control Code Meaning


\n New line
\t Horizontal Tab
\b Back space

Input Function scanf( )


It is used to get data in a specified format. It can accept data of different data types.
Syntax
scanf(“Control String”, var1address, var2address, …);

Format String or Control String is enclosed in quotation marks. It may contain


1. White Space
2. Ordinary characters
3. Conversion Specifier Field

It is denoted by % followed by conversion code and other optional modifiers E.g: width,
size.

Format Specifiers for scanf( )

Data type Conversion Symbol


char %c
int %d
float %f
string %s
E.g Program:
#include <stdio.h>
void main( )
{

int num1, num2, sum;


printf("Enter two integers: ");
scanf("%d %d",&num1,&num2);
sum=num1+num2;
printf("Sum: %d",sum);
}

Output
Enter two integers: 12 11
Sum: 23

Operator Precedence and Associativity in C

Operator precedence and associativity are rules that decide the order in which parts of an expression are
calculated. Precedence tells us which operators should be evaluated first, while associativity determines the
direction (left to right or right to left) in which operators with the same precedence are evaluated.
Let's take a look at an example:

#include <stdio.h>

int main() {
int a = 6, b = 3, c = 4;

int res;

// Precedence and associativity applied here

res = a + b * c / 2;

printf("%d", res);

return 0;
}

Output
12

Operator Precedence
Operator precedence determines which operation is performed first in an expression with more than one
operator with different precedence. Let's try to evaluate the following expression,
10 + 20 * 30
The expression contains two operators, + (addition) and * (multiplication). According to operator
precedence, multiplication (*) has higher precedence than addition (+), so multiplication is checked first.
After evaluating multiplication, the addition operator is then evaluated to give the final result.
The expression contains two operators, + (addition) and * (multiplication). According to operator
precedence, multiplication (*) has higher precedence than addition (+), so multiplication is checked first.
After evaluating multiplication, the addition operator is then evaluated to give the final result.

#include <stdio.h>

int main() {

// Printing the value of same expression


printf("%d", 10 + 20 * 30);

return 0;
}

Output
610

Operator Associativity
Operator associativity is used when two operators of the same precedence appear in an expression.
Associativity can be either from Left to Right or Right to Left. Let's evaluate the following expression,
100 / 5 % 2
The division (/) and modulus (%) operators have the same precedence, so the order in which they are
evaluated depends on their left-to-right associativity. This means the division is performed first, followed by
the modulus operation. After the calculations, the result of the modulus operation is determined.

#include <stdio.h>

int main() {

// Verifying the result of the same expression


printf("%d", 100 / 5 % 2);

return 0;
}

Output
0

Example of Operator Precedence and Associativity


In general, operator precedence and associativity are applied together in expressions. Consider the
expression exp = 100 + 200 / 10 - 3 * 10, where the division (/) and multiplication (*) operators have the
same precedence but are evaluated before addition (+) and subtraction (-). Due to left-to-right associativity,
the division is evaluated first, followed by multiplication. After evaluating the division and multiplication,
the addition and subtraction are evaluated from left to right, giving the final result.

Decision making statements

Decision making statements in a programming language help the programmer to transfer


the control from one part to other part of the program.
Flow of control: The order in which the program statements are executed is known as flow of
control. By default, statements in a c program are executed in a sequential order

Branching statements

Branching statements are used to transfer program control from one point to another.
2 types
a) Conditional Branching:- Program control is transferred from one point to another based
on the result of some condition
Eg) if, if-else, switch
b) Unconditional Branching:- Pprogram control is transferred from one point to another
without checking any condition
Eg) goto, break, continue, return

a) Conditional Branching : Selection statements

Statements available in c are


➢ The if statement
➢ The if-else statement
➢ The switch case statement

If statement

C uses the keyword if to execute a statement or set of statements when the logical condition is
true.
Syntax:

if (test expression)
Test
Statement;
expres F

Statement

If test expression evaluates to true, the corresponding statement is executed.


If the test expression evaluates to false, control goes to next executable statement
The statement can be single statement or a block of statements. Block of statements must be enclosed in
curly braces.

Example:

#include <stdio.h>
void main()
{
int n;
clrscr();
printf(“enter the number:”);
scanf(“%d”,&n);
if(n>0)
printf(“the number is positive”);
getch();
}

(i) The if-else statement

Syntax:

if (test expression)
Statement T;
else
Statement F;

• If the test expression is true, statementT will be executed.

• If the test expression is false, statementF will be executed.

• StatementT and StatementF can be a single or block of statements.

Example:1 Program to check whether a given number is even or odd.

#include <stdio.h>
void main(){
int n,r;
clrscr();
printf(“Enter a number:”);
scanf(“%d”,&n);
r=n%2;
if(r==0)
printf(“The number is even”);
else
printf(“The number is odd”);
getch();
}
Output:
Enter a number:15
The number is odd

Example:2 To check whether the two given numbers are equal

void main()
{

int a,b;
clrscr();
printf(“Enter a and b:” );
scanf(“%d%d”,&a,&b);
if(a==b)
printf(“a and b are equal”);
else
printf(“a and b are not equal”);
getch();
}

Output:
Enter a and b: 2 4
a and b are not equal

Nested if statement

If the body the if statement contains another if statement, then it is known as nested if
statement .
Syntax:

if (test expression1)
{
…..
if (test expression2)
{
….
This is known as If ladder
if (test expression3)
{
….
if (test expression n)
Nested if-else statement

Here, the if body or else body of an if-else statement contains another if statement or if else
statement

Syntax :
if (condition)
{

statement 1;
statement 2;
}

else
{

statement 3;
if (condition)
statementnest;
statement 4;
}

iv) Switch statement


• It is a multi way branch statement.
• It provides an easy & organized way to select among multiple operations depending upon
some condition.

Execution

1. Switch expression is evaluated.


2. The result is compared with all the cases.
3. If one of the cases is matched, then all the statements after that matched case gets executed.
4. If no match occurs, then all the statements after the default statement get executed.
• Switch ,case, break and default are keywords
• Break statement is used to exit from the current case structure
Syntax
Switch(expression)
{
case 1:
program statement
break;
case 2:
program statement
break;
default:
program statement
break;
}

Example2

void main()
{

int n;
printf(“Enter a number\n”);
scanf(“%d”,&n);
switch(n%2)
{

case 0:printf(“EVEN\n”);
break;
case 1:printf(“ODD\n”);
break;
}

getch();
}

Output:
Enter a number
5
ODD
Unconditional branching statements

The goto Statement


This statement does not require any condition. Here program control is transferred to
another part of the program without testing any condition.
Syntax:

goto label;

label is the position where the control is to be transferred

Example:

void main()
{

printf(“www.”);
goto x;
y:
printf(“mail”);
goto z;
x:
printf(“yahoo”);
goto y;
z:
printf(“.com”);
getch();
}

Output : www.yahoomail.com

Looping or Iterative statements

Iteration is a process of repeating the same set of statements again and again until the condition
holds true.
Iteration or Looping statements in C are:
1. for
2. while
3. do while
Loops are classified as
❖ Counter controlled loops
❖ Sentinel controlled loops

Counter controlled loops

• The number of iterations is known in advance. They use a control variable called
loop counter.
• Also called as definite repetitions loop.
• E.g: for

Sentinel controlled loops

• The number of iterations is not known in advance. The execution or termination of the
loop depends upon a special value called sentinel value.
• Also called as indefinite repetitions loop.
• E.g: while

for loop

It is the most popular looping statement.


Syntax
for(initialization;condition;incrementing/decrementing)
{
Statements
}
There are three sections in for loop.
a. Initialization section – gives initial value to the loop counter.
b. Condition section – tests the value of loop counter to decide
whether to execute the
loop or not.
c. Manipulation section - manipulates the value of loop counter.
Execution of for loop

1. Initialization section is executed only once.


2. Condition is evaluated
a. If it is true, loop body is executed.
b. If it is false, loop is terminated
3. After the execution of loop, the manipulation expression is evaluated.
4. Steps 2 & 3 are repeated until step 2 condition becomes false.

Ex : Write a program to print 10 numbers using for loop

void main()
{

int i;
clrscr();
for(i=1;i<=10;i++)
{

printf(“%d”,i);
}

getch();
}

Output:
1 2 3 4 5 6 7 8 9 10

To find the sum of n natural number. 1+2+3…+n

void main()
{

int n, i, sum=0;
clrscr();
printf(“Enter the value for n”);
scanf(“%d”,&n);
for(i=1;i<=n;i++)
{

sum=sum+i;
}

printf(“Sum=%d”, sum);
getch();
}

Output:
Enter the value for n
4
sum=10

while statement

• They are also known as Entry controlled loops because here the condition is
checked before the execution of loop body.
Syntax:

while (expression)
{
statements;
}

Execution of while loop

Condition in while is evaluated


i. If it is true, body of the loop is executed.
ii. If it is false, loop is terminated
d. After executing the while body, program control returns back to while header.
e. Steps a & b are repeated until condition evaluates to false.
f. Always remember to initialize the loop counter before while and manipulate loop counter
inside the body of while.

Ex Write a program to print 10 numbers using while loop

void main()
{

int i=1;
clrscr();
while (num<=10)
{

printf (“%d”,i);
i=i+1;
}

getch();
}

Output:
1 2 3 4 5 6 7 8 9 10

do while statement

• They are also known as Exit controlled loops because here the condition is checked after
the execution of loop body.
Syntax:

do
{
statements;
}
while(expression);

Execution of do while loop

g. Body of do-while is executed.


h. After execution of do-while body, do-while condition is evaluated
i. If it is true, loop body is executed again and step b is repeated.
ii. If it is false, loop is terminated

• The body of do-while is executed once, even when the condition is initially false.
To find the sum of n natural number. 1+2+3…+n

void main()
{

int n, i=1, sum=0;


clrscr();
printf(“Enter the value for n”);
scanf(“%d”,&n);
do
{

sum=sum+i;
i=i+1;
} while(i<=n);
printf(“Sum=%d”, sum);
getch();
}

Output:
Enter the value for n
4

Nested loops

• If the body of a loop contains another iteration statement, then we say that the loops
are nested.
• Loops within a loop are known as nested loop.

Syntax
while(condition)
{
while(condition)
{
Statements;
}
Statements;
}
break statement

A break statement can appear only inside a body of , a switch or a loop


A break terminates the execution of the nearest enclosing loop or switch.
Syntax
break;
break;

Example:1
#include<stdio.h>
void main()

{
int c=1;
while(c<=5)
{

if (c==3)
break;
printf(“\t %d”,c);
c++;
}

Output : 1 2

continue statement
• A continue statement can appear only inside a loop.
• A continue statement terminates the current iteration of the nearest enclosing
loop.
Syntax:

Continue
Example :1
#include<stdio.h>
void main()

{
int c=1;
while(c<=5)
{
if (c==3)
continue;
printf(“\t %d”,c);
c++;
}

}
Output : 1 2 4 5
Example :2
#include<stdio.h>
main()

{
int i;
for(i=0;i<=10;i++)
{
if (i==5)
continue;
printf(“ %d”,i);
}
}

Output :1 2 3 4 6 7 8 9 10
return statement:

A return statement terminates the execution of a function and returns the control to the
calling function.
Syntax:

return;
VCET 2025 CS25C01 Problem Solving Using C Programming

You might also like