fcp_2_if_else.ppt

Post on 14-Jul-2016

29 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Introduction to C Programming

Control Instruction

alter our actions by circumstances. If the weather is fine, then I will go for a stroll If the highway is busy I would take a diversion notice that all these decisions depend on some condition being

met C language too must be able to perform different sets of

actions depending on the circumstances C has three major decision making instructions If statement if-else statement SThe conditional operators. switch statement

Decisions! Decisions!

Last class programs steps are executed sequentially i.e. in the same order in which they appear in the program.

Many a times, we want a set of instructions to be executed in one situation, and an entirely different set of instructions to be executed in another situation.

This kind of situation is dealt in C programs using a decision control instruction

(a) The if statement (b) The if-else statement (c) The conditional operators.

The if Statement General form

if ( this condition is true ){

execute this statement ;}

But how do we express the condition itself in C? we express a condition using C’s ‘relational’ operators. this expression is true if

x == y x is equal to yx != y x is not equal to yx < y x is less than yx > y x is greater than yx <= y x is less than or equal to yx >= y x is greater than or equal to y

/* Demonstration of if statement */#include<stdio.h>void main( ){int num ;

printf ( "Enter a number less than 10 " ) ;scanf ( "%d", &num ) ;if ( num <= 10 )

printf ( "What an obedient servant you are !" ) ;}

While purchasing certain items, a discount of 10% is offered if the quantity purchased is more than 1000. If quantity and price

per item are input through the keyboard, write a program to calculate the total expenses.

void main( ){int qty, dis = 0 ;float rate, tot ;printf ( "Enter quantity and rate " ) ;scanf ( "%d %f", &qty, &rate) ;if ( qty > 1000 )

dis = 10 ;tot = ( qty * rate ) - ( qty * rate * dis / 100 ) ;printf ( "Total expenses = Rs. %f", tot ) ;}

The current year and the year in which the employee joined the organization are entered through the keyboard. If the number of years for which the employee has served the organization is greater than 3 then a bonus of Rs. 2500/- is given to the employee. If the years of service are not greater than 3, then the program should do nothing.

#include<stdio.h>void main( ){int bonus, cy, yoj, yr_of_ser ;printf ( "Enter current year and year of joining " ) ;scanf ( "%d %d", &cy, &yoj ) ;yr_of_ser = cy - yoj ;if ( yr_of_ser > 3 )

{bonus = 2500 ;printf ( "Bonus = Rs. %d", bonus ) ;

}}

The Real Thing General form

if ( this condition is true ){ execute this statement ; }

But if ( expression ) { execute this statement ; }

expression can be any valid expressionif ( 3 + 2 % 5 )

printf ( "This works" ) ;if ( a = 10 )

printf ( "Even this works" ) ;if ( -5 )

printf ( "Surprisingly even this works" ) ; C a non-zero value is considered to be true, whereas a 0 is

considered to be false.

The if-else Statement Can we execute one group of statements if the expression

evaluates to true and another group of statements if the expression evaluates to false?

Of course! This is what is the purpose of the else statement General Form

if ( this condition is true ){

execute this statement ;}

else{execute this statement ;}

The group of statements after the if upto and not including the else is called an ‘if block’. Similarly, the statements after the else form the ‘else block’.

Notice that the else is written exactly below the if.

Had there been only one statement to be executed in the if block and only one statement in the else block we could have dropped the pair of braces.

As with the if statement, the default scope of else is also the statement immediately after the else.

Example. In a company an employee is paid as under: If his basic salary is less than Rs. 1500, then HRA = 10% of basic salary and DA = 90% of basic salary. If his salary is either equal to or above Rs. 1500, then HRA = Rs. 500 and DA = 98% of basic salary. If the employee's salary is input through the keyboard write a program to find his gross salary.

#include<stdio.h>void main( ){float bs, gs, da, hra ;printf ( "Enter basic salary " ) ;scanf ( "%f", &bs ) ;if ( bs < 1500 )

{hra = bs * 10 / 100 ;da = bs * 90 / 100 ;

}else

{hra = 500 ;da = bs * 98 / 100 ;

}gs = bs + hra + da ;printf ( "gross salary = Rs. %f", gs ) ;}

Nested if-elses if we write an entire if-else construct within either the body of the if

statement or the body of an else statement. This is called ‘nesting’ of ifs.

if ( condition ){

if ( condition )do this ;

else{do this ;and this ;}

} else

do this ;

#include<stdio.h>.void main( ){

int i ;printf ( "Enter either 1 or 2 " ) ;scanf ( "%d", &i ) ;if ( i == 1 )

printf ( "You would go to heaven !" ) ;else{

if ( i == 2 )printf ( "Hell was created with you in mind"

) ; else

printf ( "How about mother earth !" ) ;}

}

Forms of if The if statement can take any of the following forms:

(a) if ( condition )do this ;

(b) if ( condition ){

do this ;and this ;

}(c) if ( condition )

do this ; else

do this ;

Forms of if(d) if ( condition )

{do this ;and this ;

} else

{do this ;and this ;

}

Forms of if(e) if ( condition )

do this ; else

{if ( condition )

do this ;else

{do this ;and this ;}

}

(f) if ( condition ){

if ( condition )do this ;

else{do this ;and this ;}

} else

do this ;

Example 2.4: The marks obtained by a student in 5 different subjects are input through the keyboard. The student gets a division as per the following rules:Percentage above or equal to 60 - First divisionPercentage between 50 and 59 - Second divisionPercentage between 40 and 49 - Third divisionPercentage less than 40 - FailWrite a program to calculate the division obtained by the student.

Nested if-else Example

void main( )

{ int m1, m2, m3, m4, m5, per ;

printf ( "Enter marks in five subjects " ) ;scanf ( "%d %d %d %d %d", &m1, &m2, &m3, &m4, &m5 ) ;per = ( m1 + m2 + m3 + m4 + m5 ) / 5 ;

if ( per >= 60 )printf ( "First division ") ;

else{

if ( per >= 50 )printf ( "Second division" ) ;

else{

if ( per >= 40 )printf ( "Third division" ) ;

elseprintf ( "Fail" ) ;

}}

}

This is a straight forward program. Observe that the program uses nested if-elses.

This leads to three disadvantages:(a) As the number of conditions go on increasing the level ofindentation also goes on increasing. As a result the wholeprogram creeps to the right.(b) Care needs to be exercised to match the corresponding ifs and elses.(c) Care needs to be exercised to match the corresponding pair of braces.

All these three problems can be eliminated by usage of ‘Logical operators’.

Use of Logical Operators C allows usage of three logical operators, namely, &&, || and !.

These are to be read as ‘AND’ ‘OR’ and ‘NOT’ respectively. The first two operators, && and ||, allow two or more

conditions to be combined in an if statement.

Operands Results

x y !x !y x && y x || y

0 0 1 1 0 0

0 non-zero 1 0 0 0

non-zero 0 0 1 0 1

non-zero non-zero 0 0 1 1

void main( ){int m1, m2, m3, m4, m5, per ;printf ( "Enter marks in five subjects " ) ;scanf ( "%d %d %d %d %d", &m1, &m2, &m3, &m4, &m5 ) ;per = ( m1 + m2 + m3 + m4 + m5 ) / 5 ;if ( per >= 60 )

printf ( "First division" ) ;if ( ( per >= 50 ) && ( per < 60 ) )

printf ( "Second division" ) ;if ( ( per >= 40 ) && ( per < 50 ) )

printf ( "Third division" ) ;if ( per < 40 )

printf ( "Fail" ) ;}

Two distinct advantages in favour of this program:1) The matching of the ifs with their corresponding elses gets avoided, since there are no elses in this program.2) In spite of using several conditions, the program doesn't creep to the right. In the previous program the statements went on creeping to the right.

Control Instruction

alter our actions by circumstances. If the weather is fine, then I will go for a stroll If the highway is busy I would take a diversion notice that all these decisions depend on some condition being

met C language too must be able to perform different sets of

actions depending on the circumstances C has three major decision making instructions If statement if-else statement Logical Operators The conditional operators. switch statement

The Case Control Structure

make a choice between a number of alternatives rather than only one or two

Choice is more complicated than merely selecting between two alternatives.

C provides a special control statement that allows us to handle such cases effectively;

rather than using a series of if statements

Decisions Using switch switch ( integer expression )

{case constant 1 :

do this ;break;

case constant 2 :do this ;break;

case constant 3 :do this ;break;

default :do this ;

}

Integer expression that will yield an integer value Integer constant or expression that evaluates integer keyword case is followed by an integer or a character

constant.

If a = 10, b = 12, c = 0, find the values of the expressions in the following table:

Expression Valuea != 6 && b > 5

a == 9 || b < 3

! ( a < 10 )

! ( a > 5 && c )

5 && c != 8 || !c

What would be the output of the following programs:

void main( ){char suite = 3 ;switch ( suite )

{case 1 :

printf ( "\nDiamond" ) ;case 2 :

printf ( "\nSpade" ) ;default :

printf ( "\nHeart") ;}

printf ( "\nI thought one wears a suite" ) ;}

void main( ){int c = 3 ;

switch ( c ){

case 'v' :printf ( "I am in case v \n" ) ;break ;

case 3 :printf ( "I am in case 3 \n" ) ;break ;

case 12 :printf ( "I am in case 12 \n" ) ;break ;

default :printf ( "I am in default \n" ) ;

}}

void main( ){int k, j = 2 ;switch ( k = j + 1 ){

case 0 :printf ( "\nTailor") ;

case 1 :printf ( "\nTutor") ;

case 2 :printf ( "\nTramp") ;

default :printf ( "\nPure Simple Egghead!" ) ;

}}

void main( ){int i = 0 ;switch ( i ){

case 0 :printf ( "\nCustomers are dicey" ) ;

case 1 :printf ( "\nMarkets are pricey" ) ;

case 2 :printf ( "\nInvestors are moody" ) ;

case 3 :printf ( "\nAt least employees are good" ) ;

}}

void main( ){int i = 1 ;int ch = 'a' + 'b' ;

switch ( ch ){case 'a' :case 'b' :

printf ( "\nYou entered b" ) ;case 'A' :

printf ( "\na as in apple" ) ;case 'b' + 'a' :

printf ( "\nYou entered a and b" ) ;}}

There are three ways for taking decisions in a program. First way is to use the if-else statement, second way is to use conditional operators and third way is to use the switch statement

The default scope of the if statement is only the next statement. So, to execute more than one statement they must be written in a pair of braces.

An if block need not always be associated with an else block. However, an else block is always associated with an if statement.

&& and || are binary operators, whereas, ! is a unary operator.

In C every test expression is evaluated in terms of zero and non-zero values. A zero value is considered to be false and a non-zero value is considered to be true.

Assignment statements used with conditional operators must be enclosed within a pair of parenthesis.

Increment and Decrement Operators

The increment operator ++ The decrement operator -- Precedence: lower than (), but higher than * / and % Associativity: right to left Increment and decrement operators can only be applied

to variables, not to constants or expressions

Increment Operator

If we want to add one to a variable, we can say: count = count + 1 ; Programs often contain statements that increment

variables, so to save on typing, C provides these shortcuts: count++ ; OR ++count ; Both do the same thing. They change the value of count by

adding one to it.

Post increment Operator

The position of the ++ determines when the value is incremented. If the ++ is after the variable, then the incrementing is done last (a post increment).

int amount, count ;

count = 3 ; amount = 2 * count++ ;

amount gets the value of 2 * 3, which is 6, and then 1 gets added to count.

So, after executing the last line, amount is 6 and count is 4.

Preincrement Operator

If the ++ is before the variable, then the incrementing is done first (a preincrement).

int amount, count ; count = 3 ; amount = 2 * ++count ;

1 gets added to count first, then amount gets the value of 2 * 4, which is 8.

So, after executing the last line, amount is 8 and count is 4.

#define These macro definitions allow constant values to be declared

for use throughout your code. Syntax:

#define CNAME value#define CNAME (expression)

#include <stdio.h> #define NAME "TechOnTheNet.com"

#define AGE 10 void main()

{ printf("%s is over %d years old.\n", NAME, AGE); }

Review Branching/Decision Logical Operator Conditional Operator Increment and Decrement Operator

The Loop Control Structure so far used either a sequential or a decision control

instruction. the calculations were carried out in a fixed order, an appropriate set of instructions were executed depending

upon the outcome of the condition being tested Exactly once The versatility of the computer lies in its ability to perform a

set of instructions repeatedly. This involves repeating some portion of the program either a

specified number of times or until a particular condition is being satisfied.

This repetitive operation is done through a loop control instruction.

Group of instructions that are executed repeatedly while(until) some condition remains true.

LoopsBranching

Condition Statementlist

T

F

Condition Statementlist

T

F

There are three methods by way of which we can repeat a part of a program. They are:

(a) Using a while statement(b) Using a for statement(c) Using a do-while statement

It is often the case in programming that you want to do something a fixed number of times

Ex. calculate gross salaries of ten different persons, Ex. Convert temperatures from centigrade to Fahrenheit for

15 different cities. The while loop is ideally suited for such cases.

The while Loop

Condition Statementlist T

F

while(Condition){ Statement list}

The while Loop

The general form of while is as shown below:

initialize loop counter ;while ( test loop counter using a condition ){

do this ;and this ;increment loop counter ;

}

/* Calculation of simple interest for 3 sets of p, n and r */void main ( ){int p, n, count ;float r, si ;count=1;While(count <= 3)

{printf ( "Enter values of p, n, and r " ) ;scanf ( "%d %d %f", &p, &n, &r ) ;si = p * n * r / 100 ;printf ( "Simple Interest = Rs.%f\n", si ) ;count=count+1; //count++;

}}

// or /* */its comment

In the place of condition there can be any other valid which expression evaluates to a non-zero value

while ( i + j*2)while ( i >= 10 && j <= 15)

Must test a condition that will eventually become falseint i = 1 ;while ( i <= 10 )

printf ( "%d\n", i ) ; We can also used decrement

int i = 5 ;while (i>= 1 ){ printf ("\nMake the computer literate!" ) ;

i = i - 1 ;}

Loop counter can be float also.float a = 10.0 ;while (a<10.5 ){

printf ("\n that’s execute!" ) ;a=a+0.1;

} What will be the output?

int i = 1 ;while ( i <= 32767){

printf ( "%d\n", i ) ;i=i+1;

}

Example 1: while

char ans = ‘n’;

while (ans != ‘Y’ && ans != ‘y’)

{printf(“Will you pass this exam?”);

scanf(“%c\n”,ans);}

Printf(“Great!!”);

(ans != ‘Y’ || ans != ‘y')

Can I put ; here?

No!!

Example 2: while

int no_times;

printf(“How many times do you want to say?”);scanf(“%d“,&no_times);

while (no_times != 0){

printf(“Hello!\n”);no_times--;

}

printf(“End!!”);

Will there be any problem?

while (no_times > 0)

What if one inputs –1?

Example 3: while

int a, b, sum;

printf(“This program will return the ”);

Printf(“summation of integers from a to b.\n\n”);

printf(“Input two integers a and b:”);printf(“%d%d”, &a, &b);

while (a <= b){

sum += a;a++;

}

printf(“The sum is %d”, sum);

sum = 0;

sum = sum + a;+= ,*=,-=,/=,%=

compound assignment operatorThey modify the value of the operand to the left of them.

Don’t forget to set sum = 0;

Example 4: while

int a, b, sum=0;

printf(“This program will return the sum ”);

printf( “of odd numbers between a and b.\n\n”);

printf(“Input two integers a and b:”);

scanf(“%d%d”, &a ,&b);

while (a <= b){ if (a % 2) sum += a; a++;}

printf(“The answer is ”,sum);

if (a % 2 == 0) a++;

while (a <= b){ sum += a; a += 2;}

3, 4, 5, 6 , 7

2, 3, 4, 5, 6 , 7

a b

Example 5: while 3N+1 problem

long n,i=0;

printf(“Input an integer:”);scanf(“%d”,&n);

while (n > 1){ if (n % 2) n = 3*n+1; else

n /= 2; printf(“%d:%d”,++i,n);}

printf(“Done!!”);

Will we always get out of a loop?

That is the question!! No one knows!

Input an integer:71:222:113:344:175:526:267:138:409:2010:1011:512:1613:814:415:216:1Done!!Press any key to continue

Input an integer:111:342:173:524:265:136:407:208:109:510:1611:812:413:214:1Done!!Press any key to continue

Input an integer:37591:112782:56393:169184:84595:253786:126897:38068..........83:1684:885:486:287:1Done!!Press any key to continue

Review Loops While loop

int i = 1 ;Printf(“How many times repeat these statements”);Scanf(“%d”,&n)while (i<= 10 ) //while(i<=n){ printf ("\nWelcome!" ) ;

i = i+1 ;}

Counter Controlled loop

char ans = ‘y’;

while (ans == ‘y’ && ans == ‘Y’)

{printf(“Enter students details”);

.......Printf(“Do you want to submit another student details”);Scanf(“%c”,&ans);

}........Printf(“Great!!”);

Condition Controlled loop

The for allows us to specify three things about a loop in a single line:

Setting a loop counter to an initial value. Testing the loop counter to determine whether its value has

reached the number of repetitions desired. Increasing the value of loop counter each time the program

segment within the loop has been executed.

The for Loop

for (Initialization_action; Condition; Condition_update){ statement_list;}

The general format for a for loop

/* Calculation of simple interest for 3 sets of p, n and r */main ( ){int p, n, count ;float r, si ;for ( count = 1 ; count <= 3 ; count = count + 1 )

{printf ( "Enter values of p, n, and r " ) ;scanf ( "%d %d %f", &p, &n, &r ) ;si = p * n * r / 100 ;printf ( "Simple Interest = Rs.%f\n", si ) ;

}}

The general format for a for loop

for (Initialization_action; Condition; Condition_update){ statement_list;}

int n,f=1;Printf(“ENter a number to find factorial”);scanf(“%d”,&n);

for (i=2; i<=n; i++){ f *= i;} printf(“The factorial of %d is %d ”,n,f);

1 2 3

Factorial of n is n(n-1)(n-2)...21

63

Compare: for and while

for (Initialization_action; Condition; Condition_update){ statement_list;}

int n,f=1;

cin >> n;

for (i=2; i<=n; i++){ f *= i;}

printf(“The factorial of %d is %d” ,n,f);

i=2;while (i<=n){ f *= i; i++;}

1 2 3

for (Initialization_action; Condition; Condition_update){ statement_list;}

64

int n,i;

n = 100;

for (i=1; i <= n; i++)

{ statement_list;}

int n,i;

n = 100;i = 1;

while (i <= n){ statement_list; i++;}

v.s.

• We can give several statements separated by commas in place of “Initialization”, “condition”, and “updating”.

for (fact=1, i=1; i<=10; i++)fact = fact * i;for (sum=0, i=1; i<=N, i++)sum = sum + i * i;

The comma operator

66

do-while

Condition

Statementlist

T

F

do {

Statement list} while (Condition);

; is required

do{

printf(“Will you pass this exam?”); scanf(“%c”,&ans);} while (ans != “Y”);

printf(“Great!!”);

67

Example 1: do-while

int i;

....

do {

printf( “Please input a number between 10 and 20:”; printf(“%d”,i);} while (i < 10 || i > 20);

......

Suppose your Rs 10000 is earning interest at 1% per month. How many months until you double your money ?

my_money=10000.0;n=0;while (my_money < 20000.0) {my_money = my_money*1.01;n++;}printf (“My money will double in %d months.\n”,n);

69

Break and Continuein a loops

The break statement in a for loop will force theprogram to jump out of the for loop immediately.

The continue statement in a for loop will force theprogram to update the loop condition and then check the condition immediately.

for (Initialization_action; Condition; Condition_update){ statement_list;}

70

Nested loops (loop in loop)

printf(“%d%d”,a,b);

for (int i = 0; i < a; i++){

for (int j=0; j<b; j++){ printf(“*”);}

}

****************************************************

b

a

Nested loops (2)

int a,b;Printf(“Enter two values”);scanf(“%d%d”,&a,&b);

for (int i = 0; i < a; i++){

for (int j=0; j<b; j++){ if (j > i)

break; printf(“*”);}

}

**********

b

a

72

Nested loops (3)

**********

b

a

int a,b;Printf(“Enter two values”);scanf(“%d%d”,&a,&b);

for (int i = 0; i < a; i++){ for (int j=0; j<b && j < i; j++)

{ printf(“*”);}

}

j <= i;

if (j > i) break;

73

Nested loops (4)

int a,b;

cin >> a >> b;

for (int i = 0; i < a; i++){

for (int j=0; j<b; j++){ if (j < i)

printf(“ ”); else

printf(“*”);}

}

**********************************************

b

a

=

74

Nested loops (5)

int a,i,j;scanf(“%d”,a);

for (i = 0; i < a; i++) { for (j=0; j<a; j++) {

if (j < a-i) printf(" ");

else printf("*"); }

for (j=0; j<a; j++) {if (j > i) break;printf("*");

}

}

****

************

********************

75

Break in a loop

do{

r = p % i;if (r == 0) break;i++;

} while (i < p);

The break statement in a loop will force theprogram to jump out of the loop immediately.

do {printf(“Will you pass this exam?”);

scanf(“%c”,&ans);

} while (ans != “Y” && ans != “y”);cout << “Great!!”;

if (ans == ‘y’ || ans == ‘Y’) break;

76

Continue in a loop

The continue statement in a loop will force the program to check the loop condition immediately.

do {printf(“Will you pass this exam?”);

scanf(“%c”,&ans);

if (and != ‘Y’ && ans != ‘y’) continue;

printf(“Great?”);

break;

} while (true);

....

Example 5: SUM = 12 + 22 + 32 +...+ N2

int main () {int N, count, sum;printf(“Enter limit of series”)scanf (“%d”, &N) ;sum = 0;count = 1;while (count <= N) {

sum = sum + count*count;count = count + 1;

}printf (“Sum = %d\n”, sum) ;return 0;}

1. Declare variables i,n,j integers ;x, t,s,r as float2. Input and read the limit of the sine series,n.3. Input and read the value of  angle(in degree),x.4. Convert the angle in degree to radian,x=((x*3.1415)/180)5. Assign t=r and s=r.6. Initialize i as 2.7. Initialize j as 2.8. while(j<=n)  repeat the steps a to d.                                    a)Find t=(t*(-1)*r*r)/(i*(i+1))                                    b)Find s=s+t                                    c)Increment i by 2.                                    d)Increment j by 1.9. End while.10. Print the sum of the sine series,s.

Evaluate Sine Series: sin x = x - ((x^3)/3!) + ((x^5)/5!) - …………..

#include<stdio.h>#include<conio.h>void main()            {            int i,n,j,ch;            float x,t,s,r; printf("\nENTER THE LIMIT");            scanf("%d",&n);            printf("\nENTER THE VALUE OF x:");            scanf("%f",&x);                             r=((x*3.1415)/180);                             t=r;                             s=r;                             i=2;                             for(j=2;j<=n;j++)                             {                                    t=(t*(-1)*r*r)/(i*(i+1));                                    s=s+t;                                    i=i+2;                             }                             printf("\nSUM OF THE GIVEN SINE SERIES IS %4f",s);

Specifying “Infinite Loop”

• %d (print as a decimal integer)

• %6d (print as a decimal integer with a width of at least 6 wide)

• %f (print as a floating point)

• %4f (print as a floating point with a width of at least 4 wide)

• %.4f (print as a floating point with a precision of four characters after the decimal point)

• %3.2f (print as a floating point at least 3 wide and a precision of 2)

Formatted output

top related