Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
CSC 103
Lecture 7 & 8
Introduction to Computers and Programming
The Decision Control
2
 We need to alter our actions in the face of changing
circumstances
 If the weather is fine then ...
3
 Decision control instruction can be implemented in C
using:
(a) The if statement
(b)The if-else statement
(c)The condi...
The if Statement
4
 C uses the keyword if to implement the decision
control instruction
 Syntax is :
if ( expression )
e...
5
 In general, the condition is expressed using C’s ‘Relational
Operator’
 Following are different relational operators:...
Example
6
/* Demonstration of if statement */
main( )
{
int num ;
printf ( "Enter a number less than 10 " ) ;
scanf ( "%d"...
7
 The general form of if statement is:
if (expression)
statement;
 Here the expression can be any valid expression incl...
if-else Statement
8
 Statements are executed when if condition is true
 We also want to execute statements when conditio...
Some if-else rules in C
9
 else block should come immediately after if block
 When if and else blocks contain only one s...
Making decisions in C
 Sometimes your programs need to make logical
choices.
 Example:
IF score is higher than 50
THEN g...
Making decisions in C
 Example:
IF score is higher than 50
THEN grade is PASS
ELSE grade is FAIL
 In C, this corresponds...
Making decisions in C
 Part 1 : the condition
An expression that evaluates to TRUE or FALSE
if (score > 50)
{
grade = PAS...
Making decisions in C
 Part 2 : the TRUE part
A block of statements that are executed if the condition
has evaluated to T...
Making decisions in C
 Part 3 : the FALSE part
A block of statements that are executed if the condition
has evaluated to ...
Making decisions in C
 If the true part (or false part) consists of only one
statement, then the curly braces may be omit...
Making decisions in C
 Sometimes there are more than two parts. In those cases you
may use cascading (a.k.a. nested) if/e...
Making decisions in C
 if(condition)
statement;
 if (condition) {
statements;
statements; …
}
 if (condition) {
stateme...
Some Valid if Statements in C
18
if ( 3 + 2 % 5 )
printf ( "This works" ) ;
if ( a = 10 )
printf ( "Even this works" ) ;
i...
Multiple Statements within if (Flowchart)
19
Multiple Statements within if (C Language)
20
/* Calculation of bonus */
main( )
{
int bonus, cy, yoj, yr_of_ser ;
printf ...
21
#include<stdio.h>
#include<conio.h>
main()
{
int a,b;
printf("Enter 1st Number: ");
scanf("%d", &a);
printf("Enter 2nd ...
Some tests
22
Test
No.
Output Remarks
01
Enter 1st Number: 15
Enter 2nd Number: 25
25 is greater than 15
2nd number is gre...
nested if-else
23
if ( condition )
do this ;
else
{
if ( condition )
do this ;
else
do this ;
}
“Modify our flow chart to ...
24
#include<stdio.h>
#include<conio.h>
main()
{
int a,b;
printf("Enter 1st Number: ");
scanf("%d", &a);
printf("Enter 2nd ...
else if Statement
25
 Every else is associated with its previous if
 The last else goes to work only if all the conditio...
Use of Logical Operators
26
 C allows usage of three logical operators
 &&, ||, !
 These are to be read as AND, OR, NOT...
27
Write a program to calculate the division obtained
by a student. The marks obtained by the student
in 5 different subje...
28
/* Method – I */
main( )
{
int m1, m2, m3, m4, m5, per ;
printf ( "Enter marks in five subjects " ) ;
scanf ( "%d %d %d...
29
 This program uses nested if-else
 Three disadvantages of this method
 As the number of conditions go on increasing ...
30
/* Method – II */
main( )
{
int m1, m2, m3, m4, m5, per ;
printf ( "Enter marks in five subjects " ) ;
scanf ( "%d %d %...
31
 In the second if statement, the && operator is used to
combine two conditions
 ‘Second division’ gets printed if bot...
Solution Using else if
32
/* Use of else if */
main( )
{
int m1, m2, m3, m4, m5, per ;
printf ( "Enter marks in five subje...
Problem!
33
 Find smallest and greatest number among three input
numbers?
The ! (NOT) Operator
34
 The third logical operator is ! (NOT operator)
 This operator reverse the result of an expressi...
Hierarchy of Operators Revisited
35
 Since we have added the logical operators, so it’s time to
review the priorities of ...
Summary of Logical Operators
36
 Following figure summarizes the working of logical
operators
X 1
Logical Operators (Exercise)
37
 A company insures its drivers in the following cases:
 If the driver is married.
 If t...
38
// One way to solve the problem
main( )
{
char sex, ms ;
int age ;
printf ( "Enter age, sex, marital status " ) ;
scanf...
Solution by using Logical Operators
39
main( )
{
char sex, ms ;
int age ;
printf ( "Enter age, sex, marital status " ) ;
s...
The Conditional Operators
40
 The conditional operators are ? and :
 Sometimes called Ternary Operators since they take ...
41
 Another example
int x,y;
scanf("%d", &x);
y = (x >= 10 && x <= 50 ? 1 : 0);
 Here if x>=10 && x<=50 evaluates to TRU...
The following points may be noted about conditional operators
42
 It’s not necessary that the conditional operators shoul...
43
 Check out the following conditional expression:
a > b ? g = a : g = b ;
 This will give you an error ‘Lvalue Require...
What is the Output?
44
#include<stdio.h>
#include<conio.h>
main()
{
int a, b, g;
a=10;b=5;
a > b ? g = a : (g = b) ;
g == ...
Some Rules
45
 The default scope of the if statement is only the next
statement.
 So, to execute more than one statement...
Output of program!
46
main( )
{
int a = 300, b, c ;
if ( a >= 400 )
b = 300 ;
c = 200 ;
printf ( "n%d %d", b, c ) ;
}
main...
47
main( )
{
int i = 4, j = -1, k = 0, y, z ;
y = i + 5 && j + 1 || k + 2 ;
z = i + 5 || j + 1 && k + 2 ;
printf ( "ny = %...
Upcoming SlideShare
Loading in …5
×

ICP - Lecture 7 and 8

  • Be the first to comment

  • Be the first to like this

ICP - Lecture 7 and 8

  1. 1. CSC 103 Lecture 7 & 8 Introduction to Computers and Programming
  2. 2. The Decision Control 2  We need to alter our actions in the face of changing circumstances  If the weather is fine then I will go for a walk  If the highway is busy I would take a diversion  If the pitch takes spin, we would win the match  If I am feeling well then I will watch a movie  You can 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
  3. 3. 3  Decision control instruction can be implemented in C using: (a) The if statement (b)The if-else statement (c)The conditional operators
  4. 4. The if Statement 4  C uses the keyword if to implement the decision control instruction  Syntax is : if ( expression ) execute this statement ;  The keyword if tells the compiler that what follows is a decision control instruction  The expression following the keyword if is always enclosed within a pair of parentheses  if the expression is true then the statement is executed otherwise not
  5. 5. 5  In general, the condition is expressed using C’s ‘Relational Operator’  Following are different relational operators:  != is inequality or not equals to operator  == is used for comparison of two quantities  = is an assignment operator
  6. 6. Example 6 /* Demonstration of if statement */ main( ) { int num ; printf ( "Enter a number less than 10 " ) ; scanf ( "%d", &num ) ; if ( num <= 10 ) printf ( “The number is less than 10!" ) ; }
  7. 7. 7  The general form of if statement is: if (expression) statement;  Here the expression can be any valid expression including a relational expression  We can use arithmetic expressions in the if statement e.g. if (3+5-2) printf(“ This works”); if (a=10) printf(“ Even this works”); if(-5) printf (“And even this works”);
  8. 8. if-else Statement 8  Statements are executed when if condition is true  We also want to execute statements when condition is false if ( condition ) do this ; else do this ; if block else block
  9. 9. Some if-else rules in C 9  else block should come immediately after if block  When if and else blocks contain only one statement  then we can drop pair of braces i.e. { }  Example:  Take two values from user and determine which one is smaller and which one is greater.  Solution:  First we draw a flow chart
  10. 10. Making decisions in C  Sometimes your programs need to make logical choices.  Example: IF score is higher than 50 THEN grade is "pass" ELSE grade is "fail" 10
  11. 11. Making decisions in C  Example: IF score is higher than 50 THEN grade is PASS ELSE grade is FAIL  In C, this corresponds to one statement with 3 parts: if (score > 50) { grade = PASS; } else { grade = FAIL; } 11
  12. 12. Making decisions in C  Part 1 : the condition An expression that evaluates to TRUE or FALSE if (score > 50) { grade = PASS; } else { grade = FAIL; } 12
  13. 13. Making decisions in C  Part 2 : the TRUE part A block of statements that are executed if the condition has evaluated to TRUE if (score > 50) { grade = PASS; } else { grade = FAIL; } True part 13
  14. 14. Making decisions in C  Part 3 : the FALSE part A block of statements that are executed if the condition has evaluated to FALSE if (score > 50) { grade = PASS; } else { grade = FAIL; } if the condition evaluates to FALSE, the true part is skipped. False part 14
  15. 15. Making decisions in C  If the true part (or false part) consists of only one statement, then the curly braces may be omitted.  Example: these two statements are equivalent: if (score > 50) { grade = PASS; } else { grade = FAIL; } if (score > 50) grade = PASS; else grade = FAIL; 15
  16. 16. Making decisions in C  Sometimes there are more than two parts. In those cases you may use cascading (a.k.a. nested) if/else statements: if (score > 90) lettergrade = 'A'; else if (score > 75) lettergrade = 'B'; else if (score > 60) lettergrade = 'C'; else if (score > 50) lettergrade = 'D'; else lettergrade = 'F'; 16
  17. 17. Making decisions in C  if(condition) statement;  if (condition) { statements; statements; … }  if (condition) { statements; statements;… } else { statements; statements;... } 3 forms of if statements; (note indenting) Note condition is always in parentheses, All TRUE parts and all FALSE parts are a single statement or a single block of statements {}17
  18. 18. Some Valid if Statements in C 18 if ( 3 + 2 % 5 ) printf ( "This works" ) ; if ( a = 10 ) printf ( "Even this works" ) ; if ( -5 ) printf ( "Surprisingly even this works" ) ; “Condition is false only if expression evaluates to 0”
  19. 19. Multiple Statements within if (Flowchart) 19
  20. 20. Multiple Statements within if (C Language) 20 /* Calculation of bonus */ 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 ) ; } }
  21. 21. 21 #include<stdio.h> #include<conio.h> main() { int a,b; printf("Enter 1st Number: "); scanf("%d", &a); printf("Enter 2nd Number: "); scanf("%d", &b); if( a > b ) printf("%d is greater than %d", a, b); else printf("%d is greater than %d", b, a); getch(); }
  22. 22. Some tests 22 Test No. Output Remarks 01 Enter 1st Number: 15 Enter 2nd Number: 25 25 is greater than 15 2nd number is greater than 1st number 02 Enter 1st Number: 35 Enter 2nd Number: 20 35 is greater than 20 1st number is greater than 2nd number 03 Enter 1st Number: 300 Enter 2nd Number: 300 300 is greater than 300 Both numbers are equal…..Logical Error!
  23. 23. nested if-else 23 if ( condition ) do this ; else { if ( condition ) do this ; else do this ; } “Modify our flow chart to solve logical error”
  24. 24. 24 #include<stdio.h> #include<conio.h> main() { int a,b; printf("Enter 1st Number: "); scanf("%d", &a); printf("Enter 2nd Number: "); scanf("%d", &b); if( a > b ) printf("%d is greater than %d", a, b); else { if( a == b ) printf("%d is equal to %d", a, b); else printf("%d is greater than %d", b, a); } getch(); }
  25. 25. else if Statement 25  Every else is associated with its previous if  The last else goes to work only if all the conditions fail  In else if the last else is optional  The else if clause is nothing different, it’s just a way of rearranging the else with the if that follows it  e.g.
  26. 26. Use of Logical Operators 26  C allows usage of three logical operators  &&, ||, !  These are to be read as AND, OR, NOT respectively  && and || are composed of double symbols  Don’t use the single symbols & , |  These single symbols also have meaning. These are bitwise operators  The && and || allow two or more conditions to be combined in an if statement
  27. 27. 27 Write a program to calculate the division obtained by a student. The marks obtained by the student in 5 different subjects are input through the keyboard  There are two ways to solve this problem
  28. 28. 28 /* Method – I */ 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 n") ; else { if ( per >= 50 ) printf ( "Second divisionn" ) ; else { if ( per >= 40 ) printf ( "Third divisionn" ) ; else printf ( "Failn" ) ; } } }
  29. 29. 29  This program uses nested if-else  Three disadvantages of this method  As the number of conditions go on increasing the level of indentation also goes on increasing. As a result the whole program creeps to the right.  Care needs to be exercised to match the corresponding ifs and elses.  Care needs to be exercised to match the corresponding pair of braces.  All these three problems can be eliminated by usage of ‘Logical operators’
  30. 30. 30 /* Method – II */ 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 divisionn" ) ; if ( ( per >= 50 ) && ( per < 60 ) ) printf ( "Second divisionn" ) ; if ( ( per >= 40 ) && ( per < 50 ) ) printf ( "Third divisionn" ) ; if ( per < 40 ) printf ( "Failn" ) ; }
  31. 31. 31  In the second if statement, the && operator is used to combine two conditions  ‘Second division’ gets printed if both conditions are true  Two advantages of this method  The matching of the ifs with their corresponding elses gets avoided  In spite of using several conditions, the program doesn’t expand to the right
  32. 32. Solution Using else if 32 /* Use of else if */ 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 divisionn" ) ; else if ( per >= 50 ) printf ( "Second divisionn" ) ; else if ( per >= 40 ) printf ( "Third divisionn" ) ; else printf ( "failn" ) ; }
  33. 33. Problem! 33  Find smallest and greatest number among three input numbers?
  34. 34. The ! (NOT) Operator 34  The third logical operator is ! (NOT operator)  This operator reverse the result of an expression  If the result of an expression is TRUE, the ! operator will make it FALSE and vice versa  e.g.  !(y<10) it means that “not y less than 10”  if y is less than 10, the expression will be FALSE  the same condition can be written as (y>=10)  The NOT operator is often used to reverse the logical value of a single variable  if (!flag) is same as if(flag==0)
  35. 35. Hierarchy of Operators Revisited 35  Since we have added the logical operators, so it’s time to review the priorities of these operators  The higher the position of an operator in the table, the higher is its priority
  36. 36. Summary of Logical Operators 36  Following figure summarizes the working of logical operators X 1
  37. 37. Logical Operators (Exercise) 37  A company insures its drivers in the following cases:  If the driver is married.  If the driver is unmarried, male & above 30 years of age.  If the driver is unmarried, female & above 25 years of age.  In all other cases the driver is not insured. If the marital status, sex and age of the driver are the inputs, write a program to determine whether the driver is to be insured or not.
  38. 38. 38 // One way to solve the problem main( ) { char sex, ms ; int age ; printf ( "Enter age, sex, marital status " ) ; scanf ( "%d %c %c", &age, &sex, &ms ) ; if ( ms == 'M' ) printf ( "Driver is insured" ) ; else { if ( sex == 'M' ) { if ( age > 30 ) printf ( "Driver is insured" ) ; else printf ( "Driver is not insured" ) ; } else { if ( age > 25 ) printf ( "Driver is insured" ) ; else printf ( "Driver is not insured" ) ; } } }
  39. 39. Solution by using Logical Operators 39 main( ) { char sex, ms ; int age ; printf ( "Enter age, sex, marital status " ) ; scanf ( "%d %c %c“, &age, &sex, &ms ) ; if ( ( ms == 'M') || ( ms == 'U' && sex == 'M' && age > 30 ) || ( ms == 'U' && sex == 'F' && age > 25 ) ) printf ( "Driver is insured" ) ; else printf ( "Driver is not insured" ) ; }
  40. 40. The Conditional Operators 40  The conditional operators are ? and :  Sometimes called Ternary Operators since they take three arguments  The general form is: expression 1 ? expression 2 : expression 3  It means that if expression 1 is TRUE then the value returned will be expression 2 otherwise the value returned will be expression 3  e.g. int x,y; scanf (“%d”, &x); y=(x>5 ? 3 : 4)  This statement will store 3 in y if x is greater than 5 otherwise it will store 4 in y
  41. 41. 41  Another example int x,y; scanf("%d", &x); y = (x >= 10 && x <= 50 ? 1 : 0);  Here if x>=10 && x<=50 evaluates to TRUE then y=1 otherwise y=0
  42. 42. The following points may be noted about conditional operators 42  It’s not necessary that the conditional operators should be used only in arithmetic statements int i ; scanf ( "%d", &i ) ; i == 1 ? printf ("You have entered 1" ) : printf ( "Entered value is other than 1" ) ;  The conditional operators can be nested as shown below: int big, a, b, c ; big = ( a > b ? ( a > c ? 3: 4 ) : ( b > c ? 6: 8 ) ) ;
  43. 43. 43  Check out the following conditional expression: a > b ? g = a : g = b ;  This will give you an error ‘Lvalue Required’. To remove the error just enclose the statement in : part within a pair of parenthesis a > b ? g = a : ( g = b ) ;  In absence of parentheses the compiler believes that b is being assigned to the result of the expression to the left of second =.  The limitation of the conditional operators is that after the ? or after the : only one C statement can occur
  44. 44. What is the Output? 44 #include<stdio.h> #include<conio.h> main() { int a, b, g; a=10;b=5; a > b ? g = a : (g = b) ; g == 10 ? printf ( "true" ) : printf ( "false" ); getch(); }
  45. 45. Some Rules 45  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.
  46. 46. Output of program! 46 main( ) { int a = 300, b, c ; if ( a >= 400 ) b = 300 ; c = 200 ; printf ( "n%d %d", b, c ) ; } main( ) { int x = 10, y = 20 ; if ( x == y ) ; printf ( "n%d %d", x, y ) ; }
  47. 47. 47 main( ) { int i = 4, j = -1, k = 0, y, z ; y = i + 5 && j + 1 || k + 2 ; z = i + 5 || j + 1 && k + 2 ; printf ( "ny = %d z = %d", y, z ) ; }

    Be the first to comment

    Login to see the comments

Views

Total views

4,002

On Slideshare

0

From embeds

0

Number of embeds

2

Actions

Downloads

87

Shares

0

Comments

0

Likes

0

×