PROGRAMMING IN C Decision making in C
Decision making in C Decision making is about deciding the order of execution of statements based on certain conditions or repeat a group of statements until certain specified conditions are met. C language handles decision-making by supporting the following statements, 1. if statement 2. switch statement 3. conditional operator statement (? : operator or Ternary operator) 4. goto statement
Decision making with if statement The different forms are, 1. Simple if statement 2. if....else statement 3. Nested if....else statement 4. Using else if statement The if statement may be implemented in different forms depending on the complexity of conditions to be tested.
Simple if statement The general form of a simple if statement is, if(expression) { statement inside; } statement outside; If the expression returns true, then the statement-inside will be executed, otherwise statement-inside is skipped and only the statement-outside is executed.
Example: #include <stdio.h> void main( ) { int x, y; x = 15; y = 13; if (x > y ) { printf("x is greater than y"); } } OUTPUT: x is greater than y
if...else statement The general form of a simple if...else statement is, if(expression) { statement block1; } else { statement block2; } If the expression is true, the statement-block1 is executed, else statement-block1 is skipped and statement- block2 is executed.
Example: #include <stdio.h> void main( ) { int x, y; x = 15; y = 18; if (x > y ) { printf("x is greater than y"); } else { printf("y is greater than x"); } } OUTPUT: y is greater than x
Nested if....else statement The general form of a nested if...else statement is, if( expression ) { if( expression1 ) { statement block1; } else { statement block2; } } else { statement block3; }
if expression is false then statement- block3 will be executed, otherwise the execution continues and enters inside the first if to perform the check for the next if block, where if expression 1 is true the statement-block1 is executed otherwise statement-block2 is executed. Example: #include <stdio.h> void main( ) { int a, b, c; printf("Enter 3 numbers..."); scanf("%d%d%d",&a, &b, &c);
if(a > b) { if(a > c) { printf("a is the greatest"); } else { printf("c is the greatest"); } } else { if(b > c) { printf("b is the greatest"); } else { printf("c is the greatest"); } } }
else if ladder The general form of else-if ladder is, if(expression1) { statement block1; } else if(expression2) { statement block2; } else if(expression3 ) { statement block3; } else default statement; The expression is tested from the top(of the ladder) downwards. As soon as a true condition is found, the statement associated with it is executed.
Example : #include <stdio.h> void main( ) { int a; printf("Enter a number..."); scanf("%d", &a); if(a%5 == 0 && a%8 == 0) { printf("Divisible by both 5 and 8"); } else if(a%8 == 0) { printf("Divisible by 8"); }
else if(a%5 == 0) { printf("Divisible by 5"); } else { printf("Divisible by none"); } }
Points to Remember 1. In if statement, a single statement can be included without enclosing it into curly braces { ... } int a = 5; if(a > 4) printf("success"); No curly braces are required in the above case, but if we have more than one statement inside if condition, then we must enclose them inside curly braces. 2. == must be used for comparison in the expression of if condition, if you use = the expression will always return true, because it performs assignment not comparison. 3. Other than 0(zero), all other values are considered as true. if(27) printf("hello"); In above example, hello will be printed.
Switch statement in C When you want to solve multiple option type problems, for example: Menu like program, where one value is associated with each option and you need to choose only one at a time, then, switch statement is used. Switch statement is a control statement that allows us to choose only one choice among the many given choices. The expression in switch evaluates to return an integral value, which is then compared to the values present in different cases. It executes that block of code which matches the case value. If there is no match, then default block is executed(if present).
The general form of switch statement is, switch(expression) { case value-1: block-1; break; case value-2: block-2; break; case value-3: block-3; break; default: default-block; break; }
Rules for using switch statement 1.The expression (after switch keyword) must yield an integer value i.e the expression should be an integer or a variable or an expression that evaluates to an integer. 2. The case label values must be unique. 3. The case label must end with a colon(:) 4. The next line, after the case statement, can be any valid C statement.
Points to Remember 1.We don't use those expressions to evaluate switch case, which may return floating point values or strings or characters. 2. break statements are used to exit the switch block. It isn't necessary to use break after each block, but if you do not use it, then all the consecutive blocks of code will get executed after the matching block. int i = 1; switch(i) { case 1: printf("A"); // No break case 2: printf("B"); // No break case 3: printf("C"); break; } OUTPUT:
The output was supposed to be only A because only the first case matches, but as there is no break statement after that block, the next blocks are executed too, until it a break statement in encountered or the execution reaches the end of the switch block. 3. default case is executed when none of the mentioned case matches the switch expression. The default case can be placed anywhere in the switch case. Even if we don't include the default case, switch statement works. 4. Nesting of switch statements are allowed, which means you can have switch statements inside another switch block. However, nested switch statements should be avoided as it makes the program more complex and less readable.
Example of switch statement #include<stdio.h> void main( ) { int a, b, c, choice; while(choice != 3) { /* Printing the available options */ printf("n 1. Press 1 for addition"); printf("n 2. Press 2 for subtraction"); printf("n Enter your choice"); /* Taking users input */ scanf("%d", &choice);
switch(choice) { case 1: printf("Enter 2 numbers"); scanf("%d%d", &a, &b); c = a + b; printf("%d", c); break; case 2: printf("Enter 2 numbers"); scanf("%d%d", &a, &b); c = a - b; printf("%d", c); break; default: printf("you have passed a wrong key"); printf("n press any key to continue"); } } }
Difference between switch and if 1.if statements can evaluate float conditions. switch statements cannot evaluate float conditions. 2. if statement can evaluate relational operators. switch statement cannot evaluate relational operators i.e they are not allowed in switch statement.
Conditional operator The conditional operators in C language are known by two more names 1. Ternary Operator 2. ? : Operator It is actually the if condition that we use in C language decision making, but using conditional operator, we turn the if condition statement into a short and simple operator. The syntax of a conditional operator is : expression 1 ? expression 2: expression 3;
Explanation: 1.The question mark "?" in the syntax represents the if part. 2. The first expression (expression 1) generally returns either true or false, based on which it is decided whether (expression 2) will be executed or (expression 3) 3. If (expression 1) returns true then the expression on the left side of " : " i.e (expression 2) is executed. 4. If (expression 1) returns false then the expression on the right side of " : " i.e (expression 3) is executed.
'goto' Statement in C language goto is a jumping statement in c language, which transfer the program’s control from one statement to another statement (where label is defined). goto can transfer the program’s within the same block and there must a label, where you want to transfer program’s control.
Defining a label Label is defined following by the given syntax label_name: * label_name should be a valid identifier name. * : (colon) should be used after the label_name. Transferring the control using ‘goto’ Program’s control can be transfer following by the given syntax goto label_name;
Two styles of ‘goto’ statement We can use goto statement to transfer program’s control from down to top (↑) and top to down (↓). Style 1 (Transferring the control from down to top) // style 1 label-name: statement1; statement2; .. if(any-test-condition) goto label-name;
Here, if any-test-condition is true, goto will transfer the program’s control to the specified label-name. Consider the following example/program /*To print numbers from 1 to 10 using goto statement*/ #include <stdio.h> int main() { int number; number=1;
repeat: printf("%dn",number); number++; if(number<=10) goto repeat; return 0; } Output 1 2 3 4 5 6 7 8 9 10
Style 2 (Transferring the control from top to down) // style 2 statements; if(any-test-condition) goto label-name; statement1; statement2; label-name: Other statements; Here, if any-test-condition is true, goto will transfer the program’s control to the specified label-name.
Consider the following example/program /* To read and print the number, if number is positive only*/ #include <stdio.h> int main() { int number; printf("Enter an integer number: "); scanf("%d",&number); if(number<=0) goto end; printf("Number is : %d", number); end: printf("Bye Bye !!!"); return 0; }
Output First run: Enter an integer number: 123 Number is : 123 Bye Bye !!! Second run: Enter an integer number: 0 Bye Bye !!!
Loops in C In any programming language including C, loops are used to execute a set of statements repeatedly until a particular condition is satisfied. How it Works The below diagram depicts a loop execution,
As per the above diagram, if the Test Condition is true, then the loop is executed, and if it is false then the execution breaks out of the loop. After the loop is successfully executed the execution again starts from the Loop entry and again checks for the Test condition, and this keeps on repeating. The sequence of statements to be executed is kept inside the curly braces { } known as the Loop body. After every execution of the loop body, condition is verified, and if it is found to be true the loop body is executed again. When the condition check returns false, the loop body is not executed, and execution breaks out of the loop.
Types of Loop There are 3 types of Loop in C language, namely: 1. while loop 2. for loop 3. do while loop while loop while loop can be addressed as an entry control loop. It is completed in 3 steps. • Variable initialization.(e.g int x = 0;) • condition(e.g while(x <= 10)) • Variable increment or decrement ( x++ or x-- or x = x + 2 )
Syntax : variable initialization; while(condition) { statements; variable increment or decrement; }
Example: Program to print first 10 natural numbers #include<stdio.h> void main( ) { int x; x = 1; while(x <= 10) { printf("%dt", x); /* below statement means, do x = x+1, increment x by 1*/ x++; } } OUTPUT: 1 2 3 4 5 6 7 8 9 10
for loop for loop is used to execute a set of statements repeatedly until a particular condition is satisfied. We can say it is an open ended loop.. General format is, for(initialization; condition; increment/decrement) { statement-block; } In for loop we have exactly two semicolons, one after initialization and second after the condition. In this loop we can have more than one initialization or increment/decrement, separated using comma operator. But it can have only one condition.
The for loop is executed as follows: • It first evaluates the initialization code. • Then it checks the condition expression. • If it is true, it executes the for-loop body. • Then it evaluate the increment/decrement condition and again follows from step 2. •When the condition expression becomes false, it exits the loop.
Example: Program to print first 10 natural numbers #include<stdio.h> void main( ) { int x; for(x = 1; x <= 10; x++) { printf("%dt", x); } } OUTPUT: 1 2 3 4 5 6 7 8 9 10
Nested for loop We can also have nested for loops, i.e one for loop inside another for loop. Basic syntax is, for(initialization; condition; increment/decrement) { for(initialization; condition; increment/decrement) { statement ; } }
Example: Program to print half Pyramid of numbers #include<stdio.h> void main( ) { int i, j; /* first for loop */ for(i = 1; i < 5; i++) { printf("n"); /* second for loop inside the first */ for(j = i; j > 0; j--) { printf("%d", j); } } }
OUTPUT: 1 21 321 4321 54321 do while loop In some situations it is necessary to execute body of the loop before testing the condition. Such situations can be handled with the help of do-while loop. do statement evaluates the body of the loop first and at the end, the condition is checked using while statement. It means that the body of the loop will be executed at least once, even though the starting condition inside while is initialized to be false.
General syntax is, do { ..... ..... } while(condition);
Example: Program to print first 10 multiples of 5. #include<stdio.h> void main() { int a, i; a = 5; i = 1; do { printf("%dt", a*i); i++; } while(i <= 10); }
OUTPUT: 5 10 15 20 25 30 35 40 45 50 Jumping Out of Loops Sometimes, while executing a loop, it becomes necessary to skip a part of the loop or to leave the loop as soon as certain condition becomes true. This is known as jumping out of loop. 1) break statement When break statement is encountered inside a loop, the loop is immediately exited and the program continues with the statement immediately following the loop.
2) continue statement It causes the control to go directly to the test- condition and then continue the loop process. On encountering continue, cursor leave the current cycle of loop, and starts with the next cycle.
THANK YOU

Decision making in C(2020-2021) C PROGRAMMING.ppt

  • 1.
  • 2.
    Decision making inC Decision making is about deciding the order of execution of statements based on certain conditions or repeat a group of statements until certain specified conditions are met. C language handles decision-making by supporting the following statements, 1. if statement 2. switch statement 3. conditional operator statement (? : operator or Ternary operator) 4. goto statement
  • 3.
    Decision making withif statement The different forms are, 1. Simple if statement 2. if....else statement 3. Nested if....else statement 4. Using else if statement The if statement may be implemented in different forms depending on the complexity of conditions to be tested.
  • 4.
    Simple if statement Thegeneral form of a simple if statement is, if(expression) { statement inside; } statement outside; If the expression returns true, then the statement-inside will be executed, otherwise statement-inside is skipped and only the statement-outside is executed.
  • 5.
    Example: #include <stdio.h> void main() { int x, y; x = 15; y = 13; if (x > y ) { printf("x is greater than y"); } } OUTPUT: x is greater than y
  • 6.
    if...else statement The generalform of a simple if...else statement is, if(expression) { statement block1; } else { statement block2; } If the expression is true, the statement-block1 is executed, else statement-block1 is skipped and statement- block2 is executed.
  • 7.
    Example: #include <stdio.h> void main() { int x, y; x = 15; y = 18; if (x > y ) { printf("x is greater than y"); } else { printf("y is greater than x"); } } OUTPUT: y is greater than x
  • 8.
    Nested if....else statement Thegeneral form of a nested if...else statement is, if( expression ) { if( expression1 ) { statement block1; } else { statement block2; } } else { statement block3; }
  • 9.
    if expression isfalse then statement- block3 will be executed, otherwise the execution continues and enters inside the first if to perform the check for the next if block, where if expression 1 is true the statement-block1 is executed otherwise statement-block2 is executed. Example: #include <stdio.h> void main( ) { int a, b, c; printf("Enter 3 numbers..."); scanf("%d%d%d",&a, &b, &c);
  • 10.
    if(a > b) { if(a> c) { printf("a is the greatest"); } else { printf("c is the greatest"); } } else { if(b > c) { printf("b is the greatest"); } else { printf("c is the greatest"); } } }
  • 11.
    else if ladder Thegeneral form of else-if ladder is, if(expression1) { statement block1; } else if(expression2) { statement block2; } else if(expression3 ) { statement block3; } else default statement; The expression is tested from the top(of the ladder) downwards. As soon as a true condition is found, the statement associated with it is executed.
  • 12.
    Example : #include <stdio.h> voidmain( ) { int a; printf("Enter a number..."); scanf("%d", &a); if(a%5 == 0 && a%8 == 0) { printf("Divisible by both 5 and 8"); } else if(a%8 == 0) { printf("Divisible by 8"); }
  • 13.
    else if(a%5 ==0) { printf("Divisible by 5"); } else { printf("Divisible by none"); } }
  • 14.
    Points to Remember 1.In if statement, a single statement can be included without enclosing it into curly braces { ... } int a = 5; if(a > 4) printf("success"); No curly braces are required in the above case, but if we have more than one statement inside if condition, then we must enclose them inside curly braces. 2. == must be used for comparison in the expression of if condition, if you use = the expression will always return true, because it performs assignment not comparison. 3. Other than 0(zero), all other values are considered as true. if(27) printf("hello"); In above example, hello will be printed.
  • 15.
    Switch statement inC When you want to solve multiple option type problems, for example: Menu like program, where one value is associated with each option and you need to choose only one at a time, then, switch statement is used. Switch statement is a control statement that allows us to choose only one choice among the many given choices. The expression in switch evaluates to return an integral value, which is then compared to the values present in different cases. It executes that block of code which matches the case value. If there is no match, then default block is executed(if present).
  • 16.
    The general formof switch statement is, switch(expression) { case value-1: block-1; break; case value-2: block-2; break; case value-3: block-3; break; default: default-block; break; }
  • 17.
    Rules for usingswitch statement 1.The expression (after switch keyword) must yield an integer value i.e the expression should be an integer or a variable or an expression that evaluates to an integer. 2. The case label values must be unique. 3. The case label must end with a colon(:) 4. The next line, after the case statement, can be any valid C statement.
  • 18.
    Points to Remember 1.Wedon't use those expressions to evaluate switch case, which may return floating point values or strings or characters. 2. break statements are used to exit the switch block. It isn't necessary to use break after each block, but if you do not use it, then all the consecutive blocks of code will get executed after the matching block. int i = 1; switch(i) { case 1: printf("A"); // No break case 2: printf("B"); // No break case 3: printf("C"); break; } OUTPUT:
  • 19.
    The output wassupposed to be only A because only the first case matches, but as there is no break statement after that block, the next blocks are executed too, until it a break statement in encountered or the execution reaches the end of the switch block. 3. default case is executed when none of the mentioned case matches the switch expression. The default case can be placed anywhere in the switch case. Even if we don't include the default case, switch statement works. 4. Nesting of switch statements are allowed, which means you can have switch statements inside another switch block. However, nested switch statements should be avoided as it makes the program more complex and less readable.
  • 20.
    Example of switchstatement #include<stdio.h> void main( ) { int a, b, c, choice; while(choice != 3) { /* Printing the available options */ printf("n 1. Press 1 for addition"); printf("n 2. Press 2 for subtraction"); printf("n Enter your choice"); /* Taking users input */ scanf("%d", &choice);
  • 21.
    switch(choice) { case 1: printf("Enter 2numbers"); scanf("%d%d", &a, &b); c = a + b; printf("%d", c); break; case 2: printf("Enter 2 numbers"); scanf("%d%d", &a, &b); c = a - b; printf("%d", c); break; default: printf("you have passed a wrong key"); printf("n press any key to continue"); } } }
  • 22.
    Difference between switchand if 1.if statements can evaluate float conditions. switch statements cannot evaluate float conditions. 2. if statement can evaluate relational operators. switch statement cannot evaluate relational operators i.e they are not allowed in switch statement.
  • 23.
    Conditional operator The conditionaloperators in C language are known by two more names 1. Ternary Operator 2. ? : Operator It is actually the if condition that we use in C language decision making, but using conditional operator, we turn the if condition statement into a short and simple operator. The syntax of a conditional operator is : expression 1 ? expression 2: expression 3;
  • 24.
    Explanation: 1.The question mark"?" in the syntax represents the if part. 2. The first expression (expression 1) generally returns either true or false, based on which it is decided whether (expression 2) will be executed or (expression 3) 3. If (expression 1) returns true then the expression on the left side of " : " i.e (expression 2) is executed. 4. If (expression 1) returns false then the expression on the right side of " : " i.e (expression 3) is executed.
  • 25.
    'goto' Statement inC language goto is a jumping statement in c language, which transfer the program’s control from one statement to another statement (where label is defined). goto can transfer the program’s within the same block and there must a label, where you want to transfer program’s control.
  • 26.
    Defining a label Labelis defined following by the given syntax label_name: * label_name should be a valid identifier name. * : (colon) should be used after the label_name. Transferring the control using ‘goto’ Program’s control can be transfer following by the given syntax goto label_name;
  • 27.
    Two styles of‘goto’ statement We can use goto statement to transfer program’s control from down to top (↑) and top to down (↓). Style 1 (Transferring the control from down to top) // style 1 label-name: statement1; statement2; .. if(any-test-condition) goto label-name;
  • 28.
    Here, if any-test-conditionis true, goto will transfer the program’s control to the specified label-name. Consider the following example/program /*To print numbers from 1 to 10 using goto statement*/ #include <stdio.h> int main() { int number; number=1;
  • 29.
  • 30.
    Style 2 (Transferringthe control from top to down) // style 2 statements; if(any-test-condition) goto label-name; statement1; statement2; label-name: Other statements; Here, if any-test-condition is true, goto will transfer the program’s control to the specified label-name.
  • 31.
    Consider the followingexample/program /* To read and print the number, if number is positive only*/ #include <stdio.h> int main() { int number; printf("Enter an integer number: "); scanf("%d",&number); if(number<=0) goto end; printf("Number is : %d", number); end: printf("Bye Bye !!!"); return 0; }
  • 32.
    Output First run: Enter aninteger number: 123 Number is : 123 Bye Bye !!! Second run: Enter an integer number: 0 Bye Bye !!!
  • 33.
    Loops in C Inany programming language including C, loops are used to execute a set of statements repeatedly until a particular condition is satisfied. How it Works The below diagram depicts a loop execution,
  • 34.
    As per theabove diagram, if the Test Condition is true, then the loop is executed, and if it is false then the execution breaks out of the loop. After the loop is successfully executed the execution again starts from the Loop entry and again checks for the Test condition, and this keeps on repeating. The sequence of statements to be executed is kept inside the curly braces { } known as the Loop body. After every execution of the loop body, condition is verified, and if it is found to be true the loop body is executed again. When the condition check returns false, the loop body is not executed, and execution breaks out of the loop.
  • 35.
    Types of Loop Thereare 3 types of Loop in C language, namely: 1. while loop 2. for loop 3. do while loop while loop while loop can be addressed as an entry control loop. It is completed in 3 steps. • Variable initialization.(e.g int x = 0;) • condition(e.g while(x <= 10)) • Variable increment or decrement ( x++ or x-- or x = x + 2 )
  • 36.
  • 37.
    Example: Program toprint first 10 natural numbers #include<stdio.h> void main( ) { int x; x = 1; while(x <= 10) { printf("%dt", x); /* below statement means, do x = x+1, increment x by 1*/ x++; } } OUTPUT: 1 2 3 4 5 6 7 8 9 10
  • 38.
    for loop for loopis used to execute a set of statements repeatedly until a particular condition is satisfied. We can say it is an open ended loop.. General format is, for(initialization; condition; increment/decrement) { statement-block; } In for loop we have exactly two semicolons, one after initialization and second after the condition. In this loop we can have more than one initialization or increment/decrement, separated using comma operator. But it can have only one condition.
  • 39.
    The for loopis executed as follows: • It first evaluates the initialization code. • Then it checks the condition expression. • If it is true, it executes the for-loop body. • Then it evaluate the increment/decrement condition and again follows from step 2. •When the condition expression becomes false, it exits the loop.
  • 40.
    Example: Program toprint first 10 natural numbers #include<stdio.h> void main( ) { int x; for(x = 1; x <= 10; x++) { printf("%dt", x); } } OUTPUT: 1 2 3 4 5 6 7 8 9 10
  • 41.
    Nested for loop Wecan also have nested for loops, i.e one for loop inside another for loop. Basic syntax is, for(initialization; condition; increment/decrement) { for(initialization; condition; increment/decrement) { statement ; } }
  • 42.
    Example: Program toprint half Pyramid of numbers #include<stdio.h> void main( ) { int i, j; /* first for loop */ for(i = 1; i < 5; i++) { printf("n"); /* second for loop inside the first */ for(j = i; j > 0; j--) { printf("%d", j); } } }
  • 43.
    OUTPUT: 1 21 321 4321 54321 do while loop Insome situations it is necessary to execute body of the loop before testing the condition. Such situations can be handled with the help of do-while loop. do statement evaluates the body of the loop first and at the end, the condition is checked using while statement. It means that the body of the loop will be executed at least once, even though the starting condition inside while is initialized to be false.
  • 44.
  • 45.
    Example: Program toprint first 10 multiples of 5. #include<stdio.h> void main() { int a, i; a = 5; i = 1; do { printf("%dt", a*i); i++; } while(i <= 10); }
  • 46.
    OUTPUT: 5 10 1520 25 30 35 40 45 50 Jumping Out of Loops Sometimes, while executing a loop, it becomes necessary to skip a part of the loop or to leave the loop as soon as certain condition becomes true. This is known as jumping out of loop. 1) break statement When break statement is encountered inside a loop, the loop is immediately exited and the program continues with the statement immediately following the loop.
  • 48.
    2) continue statement Itcauses the control to go directly to the test- condition and then continue the loop process. On encountering continue, cursor leave the current cycle of loop, and starts with the next cycle.
  • 49.