Buscar

08

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

P
r
o
f
.
 
P
i
t
e
r
i
 
-
3
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Estruturas de Controle de Seleção
Linguagem C
•Comando if
Comandos de Seleção (condicionais) 
•Comando switch
Selecionam o curso de uma ação entre várias ações possíveis, dependendo 
do valor de uma expressão (constante, aritmética, boleana). Vale lembrar 
que em C, todo valor diferente de zero é verdadeiro.
Palavras reservadas a serem exploradas nas próximas duas aulas : 
if, else, switch, case, break e default.
P
r
o
f
.
 
P
i
t
e
r
i
 
-
3
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Comando de Seleção - switch
É um comando usado em situações de seleção múltipla, ou seja, 
permite escolher o curso de uma ação entre várias ações 
possíveis. 
Pode ser usado em muitos casos (não em todos) para substituir 
um conjunto de if’s aninhados (encadeados), tornando o 
código mais elegante e conseqüentemente mais legível.
P
r
o
f
.
 
P
i
t
e
r
i
 
-
3
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Comando de Seleção - switch
Forma geral Æ
switch (expressão_inteira) { 
}; // switch
proxima_instrução
case constante1: comandos1; break;
case constante2: comandos2; break;
case constante3: comandos3; break;
case constanten: comandosn; break;
default: comandos;
.....
Em geral é uma 
variável_de_seleção
e deve ser de um tipo 
enumerável (char, 
int, long, ...).
P
r
o
f
.
 
P
i
t
e
r
i
 
-
3
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Comando de Seleção - switch
ÆO valor da variável de seleção é testado com as constantes associadas aos 
diferentes case´s. Quando o valor coincidir com uma das constantes, então, as 
respectivas instruções (comandos) associadas a esse case serão executadas, até
encontrar um comando break, terminando a execução do comando switch. Na 
sequência, proxima_instrução é executada;
ÆNo caso do valor da variável de seleção não coincidir com nenhum dos valores 
associados as constantes, então, as respectivas instruções associadas a opção 
default serão executadas, se essa opção estiver presente. Caso contrário, 
nenhuma ação será executada;
Observações: Æ
ÆComo foi dito, a opção default é opcional, ou seja, ela não precisa estar 
presente toda vez que você utilizar o comando switch;
Æ Os valores associados as constantes devem ser do mesmo tipo de dados da 
expressão_inteira;
Æ As constantes devem ser únicas, ou seja, não podem aparecer em mais de um 
case;
P
r
o
f
.
 
P
i
t
e
r
i
 
-
3
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Comando de Seleção - switch
Observações: Æ
Æ Só pode existir uma única opção default no interior do comando switch. Não 
necessariamente precisa ser a última opção;
Æ As constantes constante1, constante2, ..., constanten são possíveis valores que a 
expressão_inteira (variável de seleção) podem assumir. Devem ser 
constantes, jamais variáveis;
Æ Para cada constante pode haver uma ou mais instruções a serem executadas;
Æ A instrução/comando break interrompe a execução do switch, redirecionando o 
fluxo de execução para a próxima_instrução, após o comando switch;
Æ Se o comando break não for encontrado, as instruções seguintes, no interior do 
próximo case serão executadas, independente do valor das constantes, até que um 
comando break seja encontrado ou o final do switch seja alcançado;
P
r
o
f
.
 
P
i
t
e
r
i
 
-
3
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Comando de Seleção - switch
Observações: Æ
Æ Para cada um dos valores das constantes, caso haja mais de uma instrução a ser 
executada (grupo de instruções), não é necessário colocar os delimitadores de bloco, 
que como sabemos é representado pelo par de chaves ‘{’ e ‘}’ . Isso se deve em 
função do fato dos limites superior e inferior estarem bem definidos;
Æ O valor da expressão_inteira associado ao comando switch, testa somente 
igualdade e não expressões relacionais arbitrárias semelhantes a ( a > b ), ou 
ainda, ( (c > d) && (d != 2*a*b) );
Æ Quando trabalharmos com o conceito de função, o comando switch poderá ser 
usado para a elaboração de algumas interfaces baseadas em texto, que são simples, 
porém eficientes dentro do propósito inicial de nossa disciplina.
P
r
o
f
.
 
P
i
t
e
r
i
 
-
3
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Equivalência entre os comandos switch e if
...
if ( expressao1 == constante1 ){ instruções1; }
else if ( expressao1 == constante2 ) { instruções2; }
else if ( expressao1 == constante3 ) { instruções3; }
else if ( expressao1 == constante4 ) { instruções4; }
else if ( expressao1 == constante5 ) { instruções5; }
else if ( expressao1 == constante6 ) { instruções6; }
else { outras_instruções; }
próxima_instrução; ...
A seqüência de ifs encadeados
É equivalente a seguinte instrução switch
...
switch ( expressao1) { 
case constante1 : instruções1; break;
case constante2 : instruções2; break;
case constante3 : instruções3; break;
case constante4 : instruções4; break;
case constante5 : instruções5; break;
case constante6 : instruções6; break;
default outras_instruções;
} // final do switch
próxima_instrução;...
P
r
o
f
.
 
P
i
t
e
r
i
 
-
3
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Equivalência entre os comandos switch e if
Problema 01:Æ Leia um numero inteiro no intervalo [1,7] e escreva o respectivo dia 
da semana, supondo que 1 seja segunda-feira e 7 seja domingo. 
...
if ( (x >= 1)&&( x<= 7) )
if (x == 1) printf(“\n segunda-feira”);
else if (x == 2) printf(“\n terça-feira”);
else if (x == 3) printf(“\n quarta-feira”);
else if (x == 4) printf(“\n quinta-feira”);
else if (x == 5) printf(“\n sexta-feira”);
else if (x == 6) printf(“\n sabado”);
else printf(“\n domingo”);
else printf(“\n o valor introduzido esta incorreto!!!”);
...
trecho de código com a solução do problema usando utilizando ifs encadeados
P
r
o
f
.
 
P
i
t
e
r
i
 
-
3
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Equivalência entre os comandos switch e if
Problema 01:Æ Leia um numero inteiro no intervalo [1,7] e escreva o respectivo dia 
da semana, supondo que 1 seja segunda-feira e 7 seja domingo. 
trecho de código com a solução do problema usando utilizando o comando switch
...
if ( (x >= 1)&&( x <= 7) )
switch( x ) {
case 1: printf("\n\n segunda-feira!!"); break;
case 2: printf("\n\n terca-feira!!"); break;
case 3: printf("\n\n quarta-feira!!"); break;
case 4: printf("\n\n quinta-feira!!"); break;
case 5: printf("\n\n sexta-feira!!"); break;
case 6: printf("\n\n sabado!!"); break;
case 7: printf("\n\n domingo!!"); break;
} // switch
else printf(“\n o valor introduzido esta incorreto!!!”);
...
P
r
o
f
.
 
P
i
t
e
r
i
 
-
3
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Equivalência entre os comandos switch e if
Problema 01:Æ Leia um numero inteiro no intervalo [1,7] e escreva o respectivo dia 
da semana, supondo que 1 seja segunda-feira e 7 seja domingo. 
uma outra solução do mesmo problema.
...
switch( x ) {
case 1: printf("\n\n segunda-feira!!"); break;
case 2: printf("\n\n terca-feira!!"); break;
case 3: printf("\n\n quarta-feira!!"); break;
case 4: printf("\n\n quinta-feira!!"); break;
case 5: printf("\n\n sexta-feira!!"); break;
case 6: printf("\n\n sabado!!"); break;
case 7: printf("\n\n domingo!!"); break;
default : printf("\n\n Entrada Incorreta!!!");
} // switch
...
Observe que o comando if foi removido e a entrada incorreta é tratada dentro do switch.
P
r
o
f
.
 
P
i
t
e
r
i
 
-
3
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Comando switch
Problema 02:Æ Elabore um programa em C para ler um caractere qualquer e 
verificar se esse caractere é uma vogal minúscula ou maiúscula (‘a’, ‘e’, ‘i’, ‘o’, ‘u’, ‘A’, 
‘E’, ‘I’, ‘O’, ‘U’ ). O programa completo estará nos anexos.
...
if((ch == 'a') || (ch == 'A')) printf("\n\n Vogal pressionada foi 'A'!!!");
else if((ch == 'e') || (ch == 'E')) printf("\n\n Vogal pressionadafoi 'E'!!!");
else if((ch == 'i') || (ch == 'I')) printf("\n\n Vogal pressionada foi 'I'!!!");
else if((ch == 'o') || (ch == 'O')) printf("\n\n Vogal pressionada foi 'O'!!!");
else if((ch == 'u') || (ch == 'U')) printf("\n\n Vogal pressionada foi 'U'!!!");
else printf("\n\n O caractere introduzido não é uma VOGAL!!!");
...
trecho de código com a solução do problema usando utilizando ifs encadeados
P
r
o
f
.
 
P
i
t
e
r
i
 
-
3
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Comando switch
Problema 02:Æ Elabore um programa em C para ler um caractere qualquer e 
verificar se esse caractere é uma vogal minúscula ou maiúscula (‘a’, ‘e’, ‘i’, ‘o’, ‘u’, ‘A’, 
‘E’, ‘I’, ‘O’, ‘U’ ). Ver programa completo nos anexos.
trecho de código com a solução do problema usando utilizando o comando switch
...
switch( ch ){
case 'a':
case 'A': printf("\n\n Vogal pressionada foi A!!!"); break;
case 'e':
case 'E': printf("\n\n Vogal pressionada foi E!!!"); break;
case 'i':
case 'I': printf("\n\n Vogal pressionada foi I!!!"); break;
case 'o':
case 'O': printf("\n\n Vogal pressionada foi O!!!"); break;
case 'u':
case 'U': printf("\n\n Vogal pressionada foi U!!!"); break;
default : printf("\n\n O caractere introduzido não é uma VOGAL!!!"); 
} //switch
...
P
r
o
f
.
 
P
i
t
e
r
i
 
-
3
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Comando switch
... uma outra forma de escrever o código do slide anterior é dado abaixo. 
Obviamente que ambos os códigos possuem a mesma estrutura lógica. 
...
switch( ch ){
case 'a': case 'A': printf("\n\n Vogal pressionada foi A!!!");
break;
case 'e': case 'E': printf("\n\n Vogal pressionada foi E!!!");
break;
case 'i': case 'I': printf("\n\n Vogal pressionada foi I!!!");
break;
case 'o': case 'O': printf("\n\n Vogal pressionada foi O!!!");
break;
case 'u': case 'U': printf("\n\n Vogal pressionada foi U!!!");
break;
default : printf("\n\n O caractere introduzido não é uma VOGAL!!!"); 
} //switch
...
P
r
o
f
.
 
P
i
t
e
r
i
 
-
3
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Atividade Laboratorial – Comando switch
Se você desejar, sinta-se a vontade para resolver o problema usando if´s
encadeados.
Æ Vogal minúscula;
Æ Vogal maiúscula;
Æ Consoante minúscula;
Æ Consoante maiúscula;
Æ Operador aritmético (´+´, ´-´, ´*´, ´/´, ´%´);
Æ Dígitos (´0´...´9´);
Æ Sinais de pontuação (´,´, ´.´, ´:´, ´;´, ´?´, ´!´);
Æ Outros caracteres.
Exercício:Æ Elabore um programa em C para ler um caractere qualquer e classificá-
lo entre uma das classes abaixo:
A saída do seu programa deve ser algo do tipo:
“O caractere pressionado (< : >) é um SINAL DE PONTUAÇÃO”
Ou ainda :
“O caractere pressionado (< a >) é uma VOGAL MINÚSCULA”

Outros materiais