0% found this document useful (0 votes)
8 views23 pages

L14 Switch

Uploaded by

Durga Devi P
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views23 pages

L14 Switch

Uploaded by

Durga Devi P
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 23

Department of

Computer Science and Engineering

IPL - OUTREACH 2024


C PROGRAMMING
Date: 11.05.2024 - 14.05.2024

Dr.P.Durgadevi,Assistant Professor(S.G)
The switch Statement
Topics
 Multiple Selection
 switch Statement
Unconditional Control Statement
 In C, an unconditional statement is a
statement that is executed without any
condition or consideration of whether a
particular condition is true or false.
Unconditional statements are executed
sequentially, one after the other, and they do
not depend on any conditional logic.
Multiple Selection

 So far, we have only seen binary selection.


if ( age >= 18 ) if ( age >= 18 )
{ {
printf(“Vote!\n”) ; printf(“Vote!\n”) ;
} }
else
{
printf(“Maybe next time!\n”) ;
}
Multiple Selection (con’t)

 Sometimes it is necessary to branch in more


than two directions.
 We do this via multiple selection.
 The multiple selection mechanism in C is the
switch statement.
Multiple Selection with if
if (day == 0 ) {
printf (“Sunday”) ; (continued)
}
if (day == 1 ) { if (day == 4) {
printf (“Monday”) ; printf (“Thursday”) ;
}
}
if (day == 5) {
if (day == 2) {
printf (“Friday”) ;
printf (“Tuesday”) ; }
} if (day == 6) {
if (day == 3) { printf (“Saturday”) ;
printf (“Wednesday”) ; }
} if ((day < 0) || (day > 6)) {
printf(“Error - invalid day.\n”) ;
}
Multiple Selection with if-else
if (day == 0 ) {
printf (“Sunday”) ;
} else if (day == 1 ) {
printf (“Monday”) ;
} else if (day == 2) {
printf (“Tuesday”) ;
This if-else structure is more
} else if (day == 3) { efficient than the corresponding
printf (“Wednesday”) ;
} else if (day == 4) {
if structure. Why?
printf (“Thursday”) ;
} else if (day == 5) {
printf (“Friday”) ;
} else if (day == 6) {
printf (“Saturday”) ;
} else {
printf (“Error - invalid day.\n”) ;
}
The switch Multiple-Selection
Structure
switch ( integer expression )
{
case constant1 :
statement(s)
break ;
case constant2 :
statement(s)
break ;

...
default: :
statement(s)
break ;
}
switch Statement Details
 The last statement of each case in the switch
should almost always be a break.
 The break causes program control to jump to
the closing brace of the switch structure.
 Without the break, the code flows into the next
case. This is almost never what you want.
 A switch statement will compile without a
default case, but always consider using one.
Good Programming Practices

 Include a default case to catch invalid data.


 Inform the user of the type of error that has
occurred (e.g., “Error - invalid day.”).
 If appropriate, display the invalid value.
 If appropriate, terminate program execution
(discussed in CMSC 201).
switch Example
switch ( day )
{
case 0: printf (“Sunday\n”) ;
break ;
case 1: printf (“Monday\n”) ;
break ; Is this structure more
case 2: printf (“Tuesday\n”) ;
break ;
efficient than the
case 3: printf (“Wednesday\n”) ;
break ;
equivalent nested if-else
case 4: printf (“Thursday\n”) ;
break ;
structure?
case 5: printf (“Friday\n”) ;
break ;
case 6: printf (“Saturday\n”) ;
break ;
default: printf (“Error -- invalid day.\n”) ;
break ;
}
Why Use a switch Statement?

 A switch statement can be more efficient than


an if-else.
 A switch statement may also be easier to
read.
 Also, it is easier to add new cases to a switch
statement than to a nested if-else structure.
The char Data Type
 The char data type holds a single character.
char ch;
 Example assignments:
char grade, symbol;
grade = ‘B’;
symbol = ‘$’;
 The char is held as a one-byte integer in memory. The
ASCII code is what is actually stored, so we can use
them as characters or integers, depending on our
need.
The char Data Type (con’t)

 Use
scanf (“%c”, &ch) ;
to read a single character into the variable ch. (Note
that the variable does not have to be called “ch”.”)
 Use
printf(“%c”, ch) ;
to display the value of a character variable.
char Example
#include <stdio.h>
int main ( )
{
char ch ;

printf (“Enter a character: “) ;


scanf (“%c”, &ch) ;
printf (“The value of %c is %d.\n”, ch, ch) ;
return 0 ;
}

If the user entered an A, the output would be:


The value of A is 65.
The getchar ( ) Function
 The getchar( ) function is found in the stdio
library.
 The getchar( ) function reads one character
from stdin (the standard input buffer) and
returns that character’s ASCII value.
 The value can be stored in either a character
variable or an integer variable.
getchar ( ) Example
#include <stdio.h>
int main ( )
{
char ch ; /* int ch would also work! */

printf (“Enter a character: “) ;


ch = getchar( ) ; /*same as scanf(“%c”, &ch); */
printf (“The value of %c is %d.\n”, ch, ch) ;
return 0 ;
}

If the user entered an A, the output would be:


The value of A is 65.
Problems with Reading Characters
 When getting characters, whether using scanf( ) or
getchar( ), realize that you are reading only one character.
 What will the user actually type? The character he/she
wants to enter, followed by pressing ENTER.
 So, the user is actually entering two characters, his/her
response and the newline character.
 Unless you handle this, the newline character will remain
in the stdin stream causing problems the next time you
want to read a character. Another call to scanf() or
getchar( ) will remove it.
Improved Character Example
#include <stdio.h>
int main ( )
{
char ch, newline ;

printf (“Enter a character: “) ;


scanf(“%c”, &ch) ;
scanf(“%c”, &newline);
printf (“The value of %c is %d.\n”, ch, ch) ;
printf (“Enter another character: “) ;
scanf(“%c”, &ch) ;
scanf(“%c”, &newline);
printf (“The value of %c is %d.\n”, ch, ch) ;
return 0 ;
}
Additional Concerns with Garbage in
stdin

 When we were reading integers using scanf( ), we


didn’t seem to have problems with the newline
character, even though the user was typing ENTER
after the integer.
 That is because scanf( ) was looking for the next
integer and ignored the newline (whitespace).
 If we use scanf (“%d”, &num); to get an integer, the
newline is still stuck in the input stream.
 If the next item we want to get is a character, whether
we use scanf( ) or getchar( ), we will get the newline.
 We have to take this into account and remove it.

You might also like