Switch Case Structures

1 / 23

# Switch Case Structures - PowerPoint PPT Presentation

Switch Case Structures. Lecture 9. Switch Multiple Selection Structure. A multiple selection structure is useful when an algorithm contains a series of decisions in which a variable or expression is tested separately for one of several possible integral values.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about ' Switch Case Structures' - garth-daniels

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

### Switch Case Structures

Lecture 9

Winter Quarter

Switch Multiple Selection Structure
• A multiple selection structure is useful when an algorithm contains a series of decisions in which a variable or expression is tested separately for one of several possible integral values.
• Each integral value represents a different action to be taken in the algorithm.
• C provides the switch multiple selection structure to implement this type of decision making.

Winter Quarter

Note use of colon!

Switch-Case Structures
• The switch - case syntax is:

switch (integer expression test value)

{

case case _1_fixed_value :

action(s) ;

case case_2_fixed_value :

action(s) ;

default :

action(s) ;

}

Winter Quarter

Switch-Case Structures
• The switch is the "controlling expression"
• Can only be used with constant integer expressions.
• Remember, a single character is a small positive integer.
• The expression appears in ( )
• The case is a "label"
• The label must be followed by a " : "
• Braces, { }, not required around statements

Winter Quarter

Switch-Case Structures
• Unlike if-else if-else structures, when the value in a case matches the test value, all of the actions in the rest of the structure take place.
• This is shown in the following program where the user enters a value that matches the first case and every action in the structure is executed.

Winter Quarter

A Sample Program to Illustrate Switch-Case

Problem:

Write a program to ask the user to enter his/her letter grade and then respond with an appropriate message regarding his/her academic status.

Winter Quarter

A Sample Program to Illustrate Switch-Case

Algorithm:

1. Set up the environment

2. Prompt user to enter his/her letter grade

3. Get user’s response

4. If grade is a or A say “Good Job” and go to 9

5. If grade is b or B say “Pretty good” and go to 9

6. If grade is c or C say “Better get to work” and go to 9

7 If grade is d or D say “You are in trouble” and go to 9

8. Say “You are failing”

9. Terminate program

Winter Quarter

A Sample Program to Illustrate Switch-Case

/* This program associates a letter grade with a

message appropriate to the score. */

#include <stdio.h>

intmain( )

{

Winter Quarter

A Sample Program to Illustrate Switch-Case

{

case(\'a\') :

case(\'A\'):

printf("Good Job!\n") ;

case(\'b\'):

case(\'B\'):

printf("Pretty good.\n");

Winter Quarter

A Sample Program to Illustrate Switch-Case

case(\'c\'):

case(\'C\'):

printf("Better get to work.\n");

case(\'d\'):

case(\'D\'):

printf("You are in trouble.\n");

default:

printf("You are failing!!\n");

} /* End of switch-case structure */

} /* End of main program */

Winter Quarter

Switch-Case StructuresResultant Output from Grade Program

/* The following results are produced when the user

enters an "A" as input to the program prompt. */

Good Job!

Pretty good.

Better get to work.

You are in trouble.

You are failing!

Winter Quarter

Switch-Case Structures

break ;

• The problems with the previous program can be corrected by use of the break statement.
• It can be used in either a repetition structure or a selection structure to break out of (that is, to exit from) the structure.
• The syntax is:

break ;

• The following program is the previous one with the addition of the break statements.

Winter Quarter

Fixed Program using Switch-Case Structures

#include <stdio.h>

int main ( )

{

while ( ( grade = getchar ( ) ) != EOF)

{

{

case (\'a\') : case (\'A\') :

printf ("Good Job!\n") ;

break ;

Winter Quarter

Fixed Program using Switch-Case Structures

case (\'b\') : case (\'B\') :

printf ("Pretty good.\n") ;

break ;

case (\'c\') : case (\'C\') :

printf ("Better get to work.\n") ;

break ;

case (\'d\') : case (\'D\') :

printf ("You are in trouble.\n") ;

break ;

Winter Quarter

Fixed Program using Switch-Case Structures

case (\'f\') : case (\'F\'):

printf ("You are failing!!\n") ;

break ;

case (\' \') : case (\'\n\') : //< See note pg 17

break ;

default :

printf ("Invalid grade. Try again.\n") ;

} /* End of switch/case */

} /* End of while loop */

} /* End of "main" function */

Winter Quarter

• Use of the whilerepetition structure -- more discussion on repetition structures later this week.
• Use of the end-of-file, or EOF, test. Note that EOF (a DEFINED constant) is a negative integral value, usually a -1 on most (but not all) systems. (EOF is actually defined in the <stdio.h> header file.)
• Use of ints (instead of chars). Why?
• From the keyboard, a <return> <cntrl-d> generates an EOF signal on most UNIX systems.

Winter Quarter

• The statements:

case (\' \') : case (\'\n\') :

break ;

were used to clear the keyboard input buffer.

• Another way to clear it is with the statement:

fgets(input_flush,256,stdin);

where

fgets(char_strg, len_char_strg, file_pointer);

• This fgets statement can prove very useful in today’s daily assignment.
• The two sample programs which follow show why flushing the input stream is important

Winter Quarter

Flawed Sample Character Input Program
• #include <stdio.h>
• Int main()
• {
• char ans2;
• while(ans2 != ‘E’) // Here ‘E’ is a character constant
• {
• printf(“\n Input a character followed by <enter>”);
• ans2 = getchar(); // getchar takes one char from input buffer
• // and leaves the <enter> in the buffer
• printf(“ ans2 >> %c <<\n”,ans2);
• }
• }

This program runs until you put in an E. This program does not

handle multiple inputs correctly.

Winter Quarter

Output from Flawed Sample Program

input a char followed by <enter> e

ans2 = >> e <<

input a char followed by <enter> ans2 = >>

<<

In this case a newline character which is produced by the

<return> or <enter> is read by getchar on the second time

through the loop

Winter Quarter

Correct Sample Input Program
• #include <stdio.h>
• Int main()
• {
• char ans2,input_flush[256];
• while(ans2 != ‘E’)
• {
• printf(“\n Input a character followed by <return>”);
• ans2 = getchar();
• fgets(input_flush,256,stdin); // Input buffer is flushed
• // The <return> is not in buffer
• printf(“ ans2 >> %c <<\n”,ans2);
• }
• }

Winter Quarter

Output from Correct Input Program

input a char followed by <enter> e

ans2 = >> e <<

input a char followed by <enter> f

ans2 = >> f <<

Winter Quarter

• Example of use offgets(input_flush,256,stdin);

char figure,input_flush[256] ; float size ;

printf ("Enter figure type>") ;

scanf ("%c", &figure) ; //or figure=getchar( ) ;

fgets(input_flush,256,stdin);

printf ("Enter size of figure>") ;

scanf ("%f", &size) ;

fgets(input_flush,256,stdin);

Winter Quarter

Assignment G08
• Use a switch-case structure to select from among the shapes for which calculations are to be made.
• May use just first character of shape name to select which calculation to make.
• Program only does one shape, and then exits. No looping required for today\'s assignment.

Winter Quarter