If and Switch statements - PowerPoint PPT Presentation

1 / 30
About This Presentation
Title:

If and Switch statements

Description:

The 'if statement' is used to break the sequential flow of execution. ... Ternary operator. Ternary operator is similar to the 'if' statement. ... Ternary operator ... – PowerPoint PPT presentation

Number of Views:259
Avg rating:3.0/5.0
Slides: 31
Provided by: tunat
Category:

less

Transcript and Presenter's Notes

Title: If and Switch statements


1
If and Switch statements
2
If statement
  • The "if statement" is used to break the
    sequential flow of execution.
  • Enforces branching in execution according to the
    result of an expression.
  • There are two possible paths to take.
  • The expression determines which path should be
    taken.

3
If statement
  • Syntax
  • if (int_expr)
  • stat_block1
  • else
  • stat_block2
  • where stat_block is one of the following
  • a single statement stat
  • the null statement
  • a group of statements enclosed in braces
  • stat1
  • ...
  • statn

Text in green is optional
4
If statement
  • stat0
  • if (expr)
  • stat1
  • stat2
  • else
  • stat3
  • stat4
  • Notice the indentation.

5
If statement
  • stat0
  • if (expr)
  • stat1
  • stat2
  • stat4
  • How would you move stat1 and stat2 to the "then"
    branch?

6
If statement
  • Read one character as input check if it is a
    digit if so, convert it to an integer and
    display twice that number o/w display an error
    message.
  • char ch int num
  • scanf("c", ch)
  • if ((0ltch) (chlt9))
  • numch-0
  • printf("Twice input is d \n", 2num)
  • else
  • printf("Input is not a digit! \n")

7
If statement
  • Read a number and state whether it is odd or
    even.
  • int num
  • scanf("d", num)
  • printf("d is an ", num)
  • if (num2!0)
  • printf("odd ")
  • else
  • printf("even ")
  • printf("number.\n")

8
Nested-if statements
  • Remember the syntax
  • if (int_expr)
  • stat_block1
  • else
  • stat_block2
  • Statement block contains statements.
  • "if" is also a statement.
  • So, you can "nest" one if statement in another.
  • This structure is called nested-if statements.
  • You can nest as much as you can.

9
Nested-if statements
  • stat0
  • if (expr1)
  • if (expr2)
  • stat1
  • stat2
  • else
  • if (expr3)
  • stat4
  • stat5
  • else
  • stat6
  • else
  • stat7
  • stat8

10
Nested-if statements
  • Remember that the "else" part is optional.
  • Thus, some of the if statements may not have an
    "else" part.
  • Then, it is a little bit tricky to find to which
    "if" the "else" belongs.
  • Note that indentation is completely ignored by
    the compiler, so it does not help.
  • The trick is the following
  • "else" belongs to the nearest incomplete "if"

11
Nested-if statements
  • stat0
  • if (expr1)
  • if (expr2)
  • stat1
  • stat2
  • else
  • if (expr3)
  • stat4
  • stat5
  • else
  • stat6
  • else
  • stat7
  • stat8

IF INDENTATION IS NOT CORRECT, IT IS MISLEADING
12
Else-if statements
  • Else-if is a variation of nested-if.
  • An inner if statement is executed iff all
    previous if statements have failed.
  • Thus, executing an inner if statement implies
    that all previous expressions were false.
  • Syntax
  • if (int_expr1)
  • stat_block1
  • else if (int_expr2)
  • stat_block2
  • ...
  • else
  • stat_blockn

13
Else-if statements
  • if (agelt1)
  • printf("infant")
  • else if (agelt3)
  • printf("toddler")
  • else if (agelt10)
  • printf("child")
  • else if (agelt18)
  • printf("adolescent")
  • else if (agelt25)
  • printf("young")
  • else if (agelt39)
  • printf("adult")
  • else if (agelt65)
  • printf("middle-aged")
  • else
  • printf("elderly")

14
Else-if statements
  • Alternative would be
  • if (agelt1)
  • printf("infant")
  • if ((1ltage) (agelt3))
  • printf("toddler")
  • if ((3ltage) (agelt10))
  • printf("child")
  • if ((10ltage) (agelt18))
  • printf("adolescent")
  • if ((18ltage) (agelt25))
  • printf("young")
  • if ((25ltage) (agelt39))
  • printf("adult")
  • if ((39ltage) (agelt65))
  • printf("middle-aged")
  • if (65ltage)
  • printf("elderly")

15
Ternary operator
  • Ternary operator is similar to the "if"
    statement. But it is an operator, not a
    statement.
  • Syntax
  • int_expr ? value1 value2
  • Eg
  • a (bgtc) ? b c
  • k (n!0) ? m/n 0

16
Ternary operator
  • Note that it is not possible to know at compile
    time whether value1 or value2 will be used.
  • Therefore, the type of the expression is the type
    of the larger value.
  • Eg In the expression below, if the value of b is
    9
  • a b / (b2)?23.0
  • the value of a is 4.5 (not 4), because we
    perform a float division (not integer division)

17
Switch statement
  • If you have multiple cases depending on different
    values of the same integer expression, switch is
    easier to use.
  • Syntax
  • switch (int_expr)
  • case constant_int_value1 stat(s)
  • case constant_int_value2 stat(s)
  • ...
  • default stat(s)
  • You may have zero or more statements in each case.

18
Break statement
  • Switch statement actually gathers many statements
    of several cases.
  • The case labels denote the specific statement
    from which the execution of this group of
    statements begins.
  • All statements till the end of the group are
    executed sequentially.
  • To separate the cases, break statement is used.
  • break breaks the sequential execution of the
    statements and immediately jumps to the end of
    the switch statement.

19
Break statement
  • stat0
  • switch (expr)
  • case value1
  • stat1
  • stat2
  • case value2
  • stat3
  • stat4
  • stat5
  • case value3
  • stat6
  • break
  • case value4
  • stat7
  • stat8
  • stat9
  • stat0
  • stat1
  • stat2
  • stat3
  • stat4
  • stat5
  • stat6
  • stat7
  • stat8
  • stat9
  • If expr happens to be value2

20
Switch statement
  • Define the days of the week as an enumerated type
    and display them as strings.
  • enum day_type MON1,TUE,WED,THU,FRI,SAT,SUN
    day
  • scanf("d", day)
  • switch (day)
  • case SUN printf("Sunday\n") break
  • case WED printf("Wednesday\n") break
  • case TUE printf("Tuesday\n") break
  • case THU printf("Thursday\n") break
  • case FRI printf("Friday\n") break
  • case SAT printf("Saturday\n") break
  • case MON printf("Monday\n") break
  • default printf("Incorrect day\n") break

21
Switch statement
  • Note that without the "break" statement,
    execution traverses all cases until the end of
    the switch statement.
  • This allows implementation of OR (if you use it
    properly.
  • Eg
  • switch (number)
  • case 1
  • case 3
  • case 5 printf("Odd number \n") break
  • case 0
  • case 2
  • case 4 printf("Even number \n") break

22
Switch statement
  • As long as the cases are separated with "break"s,
    their order is not relevant.
  • "default" is optional. If the default case is not
    specified and none of the cases holds, no
    statement is executed this is not an error.
  • It is a good practice to put a break even after
    the last case.

23
Example 1
  • Write a code segment that detects whether a
    number is divisible by 6.
  • if ((num20) (num30))
  • printf("d is divisible by 6 \n",num)

24
Example 2
  • Write a code segment that detects whether a
    number is divisible by 3 or 6.
  • if (num30)
  • if (num20)
  • printf("d is divisible by 6 \n",num)
  • else
  • printf("d is divisible by 3 \n",num)

25
Example 3
  • Write a program that reads two real numbers and
    checks if they are equal.
  • (Assume first number is smaller.)
  • include ltstdio.hgt
  • define EPSILON 0.000000001
  • float r1, r2
  • int main()
  • scanf("f f", r1, r2)
  • if ((r2-r1)ltEPSILON)
  • printf("The numbers are (almost)
    equivalent")
  • return 0

26
Example 4
  • Write a program that reads a 3-digit number from
    the input char-by-char, and displays its square.
  • include ltstdio.hgt
  • char c1, c2, c3
  • int num
  • int main()
  • scanf("ccc",c1,c2,c3)
  • num (c1-'0')100
  • num (c2-'0')10
  • num c3-'0'
  • num num
  • printf("d", num)
  • return 0

27
Example 5.1
  • Write a program that defines a type for letter
    grades (AA,BB,CC,DD,F as 4,3,2,1,0), reads a
    grade and displays corresponding letter grade.
  • include ltstdio.hgt
  • enum grade_type F,DD,CC,BB,AA
  • int main()
  • enum grade_type g
  • scanf("d", g)
  • printf("d", g)
  • return 0

28
Example 5.2
  • But, we don't want to display a number. We want
    to see the letter grade.
  • include ltstdio.hgt
  • enum grade_type F,DD,CC,BB,AA
  • int main()
  • enum grade_type g
  • scanf("d", g)
  • switch (g)
  • case AA printf("AA \n") break
  • case BB printf("BB \n") break
  • case CC printf("CC \n") break
  • case DD printf("DD \n") break
  • case F printf("F \n") break
  • default printf("Invalid \n") break
  • return 0

29
Example 5.3
  • Could we do it without defining an enumerated
    type?
  • include ltstdio.hgt
  • int main()
  • int g
  • scanf("d", g)
  • switch (g)
  • case 4 printf("AA \n") break
  • case 3 printf("BB \n") break
  • case 2 printf("CC \n") break
  • case 1 printf("DD \n") break
  • case 0 printf("F \n") break
  • default printf("Invalid \n") break
  • return 0

30
Example 6
  • Write a program that reads a character ('a', 'p',
    or 'v') and radius R. It displays the area or
    perimeter of a circle with radius R, or the
    volume of a sphere.
  • include ltstdio.hgt
  • define PI 3.14
  • char ch float R
  • int main()
  • scanf("cf",ch,R)
  • switch(ch)
  • case 'a' printf("Area of circle f\n",
    PIRR)
  • break
  • case 'p' printf("Perimeter of circle
    f\n", 2PIR)
  • break
  • case 'v' printf("Volume of sphere f\n",
    (4/3)(PIRRR))
  • break
  • default printf("Invalid input\n")
  • break

3.141592654
(4.0/3)
Write a Comment
User Comments (0)
About PowerShow.com