Tuesday, 7 May 2013

Decision Making Statements / Conditional Statements :


Decision Making Statements / Conditional Statements :
C program executes program sequentially. Sometimes, a program requires checking of certain conditions in program execution. C provides various key condition statements to check condition and execute statements according conditional criteria.
These statements are called as 'Decision Making Statements' or 'Conditional Statements.'
Followings are the different conditional statements used in C.
1.     If Statement
2.     If-Else Statement
4.     Switch Case

If Statement :

This is a conditional statement used in C to check condition or to control the flow of execution of statements. This is also called as 'decision making statement or control statement.' The execution of a whole program is done in one direction only.

Syntax:

if(condition)
{
        statements;
}

In above syntax, the condition is checked first. If it is true, then the program control flow goes inside the braces and executes the block of statements associated with it. If it returns false, then program skips the braces. If there are more than 1 (one) statements in if statement then use { } braces else it is not necessary to use.

Program :

 
#include <stdio.h>
#include <conio.h>
void main()
{
        int a;
        a=5;
        clrscr();
        if(a>4)
               printf("\nValue of A is greater than 4 !");
        if(a==4)
               printf("\n\n Value of A is 4 !");
        getch();
}

Output :



 
Value of A is greater than 4 !_





f-Else Statement :

This is also one of the most useful conditional statement used in C to check conditions.

Syntax:
 
if(condition)
{
        true statements;
}
else
{
        false statements;
}

In above syntax, the condition is checked first. If it is true, then the program control flow goes inside the braces and executes the block of statements associated with it. If it returns false, then it executes the else part of a program.

Program :


#include <stdio.h>
#include <conio.h>
void main()
{
        int no;
        clrscr();
        printf("\n Enter Number :");
        scanf("%d",&no);
        if(no%2==0)
               printf("\n\n Number is even !");
        else
               printf("\n\n Number is odd !");
        getch();
}

Output :



Enter Number : 11
 
Number is odd !_






Nested If-Else Statement :

It is a conditional statement which is used when we want to check more than 1 conditions at a time in a same program. The conditions are executed from top to bottom checking each condition whether it meets the conditional criteria or not. If it found the condition is true then it executes the block of associated statements of true part else it goes to next condition to execute.

Syntax:
 
if(condition)
{
        if(condition)
        {
               statements;
        }
        else
        {
               statements;
        }
}
else
{
        statements;
}

In above syntax, the condition is checked first. If it is true, then the program control flow goes inside the braces and again checks the next condition. If it is true then it executes the block of statements associated with it else executes else part.

Program :


#include <stdio.h>
#include <conio.h>
void main()
{
        int no;
        clrscr();
        printf("\n Enter Number :");
        scanf("%d",&no);
        if(no>0)
        {
               printf("\n\n Number is greater than 0 !");
        }
        else
        {
               if(no==0)
               {
                       printf("\n\n It is 0 !");
               }
               else
               {
                       printf("Number is less than 0 !");
               }
        }
        getch();
}

Output :



Enter Number : 0
 
It is 0 !_






Switch case Statement :

This is a multiple or multiway brancing decision making statement.
When we use nested if-else statement to check more than 1 conditions then the complexity of a program increases in case of a lot of conditions. Thus, the program is difficult to read and maintain. So to overcome this problem, C provides 'switch case'.
Switch case checks the value of a expression against a case values, if condition matches the case values then the control is transferred to that point.

Syntax:
 
switch(expression)
{
        case expr1:
               statements;
               break;
        case expr2:
               statements;
               break;



        ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 
        ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 



        case exprn:
               statements;
               break;                                        
        default:
               statements;
}

In above syntax, switch, case, break are keywords.
expr1, expr2 are known as 'case labels.'
Statements inside case expression need not to be closed in braces.
Break statement causes an exit from switch statement.
Default case is optional case. When neither any match found, it executes.

Program :


#include <stdio.h>
#include <conio.h>
void main()
{
        int no;
        clrscr();
        printf("\n Enter any number from 1 to 3 :");
        scanf("%d",&no);
        switch(no)
        {
               case 1:
                       printf("\n\n It is 1 !");
                       break;
               case 2:
                       printf("\n\n It is 2 !");
                       break;
               case 3:
                       printf("\n\n It is 3 !");
                       break;
               default:
                       printf("\n\n Invalid number !");
        }
        getch();
}

Output 1 :



Enter any number from 1 to 3 : 3
 
It is 3 !_





Output 2 :



Enter any number from 1 to 3 : 5
 
Invalid number !_




* RULES FOR DECLARING SWITCH CASE :

·         The case label should be integer or character constant.
·         Each compound statement of a switch case should contain break statement to exit from case.
·         Case labels must end with (:) colon.

* ADVANTAGES OF SWITCH CASE :

·         Easy to use.
·         Easy to find out errors.
·         Debugging is made easy in switch case.
·         Complexity of a program is minimized.

Monday, 6 May 2013

Operators in C :


Operators in C :
"Operator is a symbol that is used to perform mathematical operations."
When we use a variable in a program then we have to mention the type of data. This can be handled using data type in C.
Followings are the most commonly used data types in C.

Operator Name
Operators
Assignment
=
Arithmetic
+, -, *, /, %
Logical
&&, ||, !
Relational
<, >, <=, >=, ==, !=
Shorthand
+=, -=, *=, /=, %=
Unary
++, --
Conditional
()?:;
Bitwise
&, |, ^, <<, >>, ~

#include <stdio.h>
#include <conio.h>
void main()
{
       int a,b;
       clrscr();
       a = 53;
       printf("\n\t Value of A : %d",a);       // 53
       b = a; // Interchange of value using assignment
       printf("\n\n\t Value of B : %d",b);    // 53
       getch();
}
It is also called as 'Binary operators'. It is used to perform arithmetical operations. These operators operate on two operands.
#include <stdio.h>
#include <conio.h>
void main()
{
       int a,b,c,d,e,f,g;
       clrscr();
       printf("\n\t Enter First Number :");    // 5
       scanf("%d",&a);
       printf("\n\t Enter Second Number :");   // 2
       scanf("%d",&b);
       c = a + b;
       printf("\n\n\t Addition is : %d",c);   // 7
       d = a - b;
       printf("\n\n\t Subtraction is : %d",d);  // 3
       e = a * b;
       printf("\n\n\t Multiplication is : %d",e);  // 10
       f = a / b;
       printf("\n\n\t Division is : %d",f); // 2
       g = a % b;
       printf("\n\n\t Modulus is : %d",g); // 1
       getch();
}
Sometimes, we have to check more than one condition at a time then it is operator which is primarily used to check more than two conditions. This operator returns 1 if condition is true otherwise 0.
#include <stdio.h>
#include <conio.h>

void main()
{
       int no1=2, no2=5;
       clrscr();
       printf("\n\n %d",(no1 && no2));   // returns 1
       printf("\n\n %d",(no1 || no2));   // returns 1
       getch();
}
It is also used to check conditions. These operators return 1 if condition is true otherwise 0.
#include <stdio.h>
#include <conio.h>

void main()
{
       int a=6, b=2;
       clrscr();
       printf("\n\n A<=B : %d",(a<=b)); // 0 - False
       printf("\n\n A>B : %d",(a>b)); // 1 - True
       printf("\n\n A!=B : %d",(a!=b)); // 1 - True
       getch();
}
It is used to perform mathematical operations at which the result or output can affect on operands.
#include <stdio.h>
#include <conio.h>
void main()
{
       int a,b;
       clrscr();
       a = 18;
       b = 4;
       printf("\n\t Value of A : %d",a);  // 18
       printf("\n\t Using of B : %d",b);  // 4
       b += a ;  // b = b + a
       printf("\n\n\t Using += (i.e b=b+a): %d",b); // 22
       // Change the operator as -=, *=, /=, %=
       getch();
}
It operates on a single operand. Therefore, this operator is called as 'unary operator.' It is used to increase or decrease the value of variable by 1.
#include <stdio.h>
#include <conio.h>

void main()
{
       int a=4, b;
       clrscr();
       printf("\n\n Value of A : %d",a); // 4
       a++; // Post
       printf("\n\n Value of A : %d",a); // 5
       ++a; // Pre
       printf("\n\n Value of A : %d",a); // 6
       b=--a;
       printf("\n\n Value of A : %d",a); // 5
       printf("\n\n Value of B : %d",b); // 5
       b=a++;
       printf("\n\n Value of A : %d",a); // 6
       printf("\n\n Value of B : %d",b); // 5
       b++;
       printf("\n\n Value of B : %d",b); // 6
       getch();
}
Conditional operator is also called as 'ternary operator.' It is widely used to execute condition in true part or in false part. It operates on three operands. The logical or relational operator can be used to check conditions.
#include <stdio.h>
#include <conio.h>
void main()
{
       int a, b=3;
       clrscr();
       a = 5;
       printf("\n\n A is less than B ? ");
       conditional operator // No
       getch();
}
8. Bitwise Operators
Bitwise operators are used for manipulation of data at a bit level. They can be directly applied to char, short int and long.


Operators Precedence and Associativity :
In C, each and every operator has a spcial precedence which is associated with it. There are various levels of precedence. This precedence is especially used to determine to evaluation of expression which has more than one operator in it. The operators which has higher precedence are executed first and vice-versa. Operators which has same precedence level are evaluated from left to right. It is dependant on it's level. This feature is well known as 'Associativity of an operator.'

Associativity
Operator
Description
Left to Right
()
Function
[]
Array
-->
Pointer to member
.
Structure

Right to left
-
Unary Minus
+
Unary Plus
++ / --
Increment/Decrement
~
One's Complement
&
Address of
(type)
Type casting
sizeof
Size (in bytes)
!
Logical Not
*
Pointer reference

Left to Right
*
Multiplication
/
Division
%
Modulus

Left to Right
+
Addition
-
Subtraction

Left to Right
<< 
Left Shift
>> 
Right Shift

Left to Right
< 
Less than
<=
Less than or equal to
> 
Greater than
>=
Greater than or equal to

Left to Right
==
Equality
!=
Not Equal to

Left to Right
&
Bitwise AND

Left to Right
^
Bitwise XOR

Left to Right
|
Bitwise OR

Left to Right
&&
Logical AND

Left to Right
||
Logical OR

Left to Right
? :
Conditional Operator

Right to Left
=  *=  +=
Assignment

Left to Right
,
Comma