Buscar

04.Estruturas.Condicionais

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

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

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ê viu 3, do total de 78 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

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

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ê viu 6, do total de 78 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

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

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ê viu 9, do total de 78 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

Prévia do material em texto

Estruturas de Controle
Alternativa
DCC 119 – Algoritmos
Na aula de hoje...
2
• Operadores relacionais e lógicos
• Alternativa simples
• Alternativa dupla
• Alternativa múltipla escolha
Operadores relacionais e lógicos
3
• Na linguagem C, não existe o tipo de dados 
booleano (verdadeiro ou falso). 
• O valor zero é interpretado como falso e 
qualquer valor diferente de zero é 
considerado verdadeiro.
• Assim, se o resultado de uma comparação 
for falso, produz-se o valor 0, caso contrário, 
produz-se o valor 1. 
Operadores relacionais
4
• Os operadores relacionais em C são:
< menor que
> maior que
<= menor ou igual que
>= maior ou igual que
== igual a
!= diferente de
• Estes operadores comparam dois valores. 
• O resultado produzido por um operador 
relacional é verdadeiro ou falso.
Operadores relacionais
5
Se .... qual o resultado de... ?
idade=17 idade < 18
nota1=95 nota1 >= 60
a=1,b=2,c=1 (b*b-4*a*c) > 0
x=-4,y=2 abs(x) >= abs(y)
n1=7 n1%2 != 0
denominador=1 denominador != 0
hora=10,fimExp=18 hora == fimExp
sexo='F' sexo == 'F'
Operadores lógicos
6
• Os operadores lógicos combinam 
expressões lógicas (ou booleanas). 
• Operadores:
&& operador binário E (AND)
|| operador binário OU (OR)
! operador unário de NEGAÇÃO (NOT)
• Expressões compostas por && ou || são 
avaliadas da esquerda para a direita.
• A avaliação termina assim que o resultado 
for conhecido.
Operadores lógicos
7
Se .... qual o resultado de... ?
idade=17 idade >= 18 && idade < 60
idade < 18 || idade >= 60
nota=95,faltas=5 nota >= 60 && faltas < 7
nota < 60 || faltas >= 7 
a=1,b=2,c=1 (b*b-4*a*c) > 0 && a != 0
x=-4 abs(x) > 1 && abs(x) <=2
idade=18,sexo='F' idade == 18 && sexo == 'M'
idade != 18 || sexo == 'F'
Operadores lógicos
8
Se .... qual o resultado
de... ?
n1=7,impar=(n1%2) !impar
idade=17
meia=(idade < 18 || idade >= 60) !meia
nota=95,faltas=5
ri=(faltas > 7)
aprovado=(nota >= 60 && !ri) !aprovado
idade=18,sexo='F' 
alistar=(idade == 18 && sexo == 'M') !alistar
Operadores lógicos
9
• Esses operadores são normalmente 
utilizados para tomada de decisões.
• Podem ser utilizados para atribuir valores a 
variáveis. 
• Exemplo:
int a,b,c;
int duasRaizesReais;
int umaRaizReal;
scanf("%d%d%d",&a,&b,&c);
duasRaizesReais = (b*b-4*a*c) > 0;
umaRaizReal = (b*b-4*a*c) == 0;
Operadores relacionais e lógicos
10
Tabela Verdade para operadores lógicos.
a b a && b a || b
V V V V
V F F V
F V F V
F F F F
a ! a
V F
F V
Operadores relacionais e lógicos
11
Uma expressão com o operador E é FALSA
se ao menos um operando é FALSO.
a b a && b a || b
V V V V
V F F V
F V F V
F F F F
a ! a
V F
F V
Operadores relacionais e lógicos
12
Uma expressão com OU é VERDADEIRA
se ao menos um operando é VERDADEIRO.
a b a && b a || b
V V V V
V F F V
F V F V
F F F F
a ! a
V F
F V
Operadores relacionais e lógicos
13
 Operadores relacionais têm exatamente 
dois operandos.
ERRADO CORRETO
0 <= numero < 10 0 <= numero && numero < 10
a == b == c a == b && b == c
Operadores relacionais e lógicos
14
 Operadores lógicos podem ser combinados, 
mas, ao combinar E e OU na mesma 
expressão, é recomendável usar 
parênteses.
idade <= 12 || idade >= 60 || estudante
idade > 12 && idade < 60 && !estudante
(timeA < timeB && timeA < timeC) || timeA == 0
Exercícios
15
 Diferencie o significado das expressões
ocupado1 = (diaSemana == 2 || diaSemana == 5) 
&& (hora >= 14 && hora < 16)
ocupado2 = diaSemana == 2 || 
(diaSemana == 5 && (hora >= 14 && hora < 16))
ocupado3 = (diaSemana == 2 ||
(diaSemana == 5 && hora >= 14)) && hora < 16
ocupado4 = ((diaSemana == 2 || diaSemana == 5)
&& hora >= 14) && hora < 16 
DESAFIO: Elabore uma expressão que indique 
que você está ocupado nas 2as até às 16h, nas 
5as o dia inteiro e nos outros dias após às 14h. 
Alternativa
• Utilizada quando a execução de uma ação 
depender de uma inspeção ou teste de uma 
condição (expressão lógica).
• Pode ser:
• Alternativa Simples
• Alternativa Dupla
• Alternativa Múltipla Escolha
16
Alternativa simples: Sintaxe
17
if ( condição )
{
comandos;
}
Alternativa simples: Exemplo 1
18
int valor1, valor2, maximo;
scanf ("%d%d", &valor1, &valor2);
maximo = valor1;
if (valor2 > maximo)
{
maximo = valor2;
} 
printf ("\nMAIOR = %d", maximo);
Alternativa simples: Exemplo 2
19
int diaPagamento;
float multaAtraso, total;
multaAtraso = 5.0;
scanf ("%d%f", &diaPagamento, &total);
if (diaPagamento > 5)
{
total = total + multaAtraso;
printf ("Multa por atraso: %f", multaAtraso);
} 
printf ("\nTotal: %f", total);
Alternativa simples: Exemplo 3
20
int quantidade;
float precoUnitario, preco;
scanf ("%d%f", &quantidade, &precoUnitario);
preco = quantidade * precoUnitario;
if (quantidade > 10 && precoUnitario > 50.0 )
{
preco = preco * 0.85;
printf ("Ganhou um desconto de 15%%!\n");
} 
printf ("\nPreco final: %f", preco);
Alternativa dupla: Sintaxe
21
if (condicao)
{
comandos1;
}
else
{
comando2;
}
Alternativa simples: Exemplo 1
22
int valor1, valor2, maximo;
scanf ("%d%d", &valor1, &valor2);
maximo = valor1;
if (valor2 > maximo)
{
maximo = valor2;
} 
printf ("\nMAIOR = %d", maximo);
Alternativa dupla: Exemplo 1
23
int valor1, valor2, maximo;
scanf ("%d%d", &valor1, &valor2);
if (valor1 > valor2)
{
maximo = valor1;
} 
else
{
maximo = valor2;
} 
printf ("\nMAIOR = %d", maximo);
Alternativa dupla: Exemplo 2
24
int quantidade;
float precoUnitario, preco;
scanf ("%d%f", &quantidade, &precoUnitario);
preco = quantidade * precoUnitario;
if (quantidade > 10 && precoUnitario > 50.0 )
{
preco = preco * 0.85;
printf ("Ganhou um desconto de 15%%!\n");
} 
else
{
preco = preco * 0.95;
printf ("Toda a loja com 5%% de desconto!\n");
} 
printf ("\nPreco final: %f", preco);
Problema exemplo
Construir um algoritmo para ler os 
coeficientes A, B e C de uma equação do 
segundo grau e se:
• Delta for negativo: imprimir a mensagem 
“Não há solução real”.
• Delta for maior ou igual a zero: calcular e 
imprimir as raízes da equação.
25
Resolução – Passo 1/5
Enunciado está entendido?
• Para resolver o problema é necessário 
saber a equação de 2º grau. Esta 
equação tem a seguinte forma:
onde 
26
Resolução – Passo 2/5
Quais variáveis serão necessárias?
• a, b, c e delta serão as variáveis reais 
que comporão a fórmula da equação 
acima. 
• Serão necessárias mais duas variáveis 
reais x1 e x2 que serão as raízes da 
equação.
27
Resolução – Passo 3/5
Como resolver o problema proposto?
1. Criar as variáveis do programa
2. Ler o valor das variáveis
3. Calcular o valor do delta
4. Se delta maior ou igual a zero:
1. Calcula o valor das raízes reais
2. Imprime o valor das raízes reais
5. Senão
1. Avisa o usuário que não há raízes reais
28
Resolução – Passo 3/5
Como resolver o problema proposto?
1. Criar as variáveis do programa
2. Ler o valor das variáveis
3. Calcular o valor do delta
4. Se delta maior ou igual a zero:
1. Calcula o valor das raízes reais
2. Imprime o valor das raízes reais
5. Senão
1. Avisa o usuário que não há raízesreais
29
if (condicao)
{
comandos1;
}
else
{
comando2;
}
Resolução – Passo 4/5
30
#include <stdio.h>
#include <math.h>
int main()
{
float a, b, c, delta, x1, x2;
printf("Digite os coeficientes da equacao (A B C): ");
scanf("%f %f %f", &a, &b, &c);
delta = (b*b - 4*a*c);
if (delta >= 0)
{
x1 = (-b + sqrt(delta)) / (2*a);
x2 = (-b - sqrt(delta)) / (2*a);
printf("Raizes da equacao: %f, %f", x1, x2);
}
else
{
printf ("Nao existem raizes reais");
}
return 0;
}
Resolução – Passo 5/5
Testar o algoritmo
Por exemplo, faça o teste de mesa para a 
seguinte entrada 
• A = 1
• B = 5
• C = 4
Saída esperada: -1 e -4.
31
32
TESTE DE MESA
1 #include <stdio.h>
2 #include <math.h>
3 int main()
4 {
5 float a, b, c, delta, x1, x2;
6 printf("Digite os coeficientes (A B C): ");
7 scanf("%f %f %f", &a, &b, &c);
8 delta = (b*b - 4*a*c);
9 
10 if (delta >= 0)
11 {
12 x1 = (-b + sqrt(delta)) / (2*a);
13 x2 = (-b - sqrt(delta)) / (2*a);
14 printf("Raizes: %f, %f", x1, x2);
15 }
16 else
17 {
18 printf ("Nao existem raizes reais");
19 } 
20 return 0;
21 }
linha a b c delta x1 x2
5 ? ? ? ? ? ?
33
TESTE DE MESA
Digite os coeficientes (A B C): 1 5 4
1 #include <stdio.h>
2 #include <math.h>
3 int main()
4 {
5 float a, b, c, delta, x1, x2;
6 printf("Digite os coeficientes (A B C): ");
7 scanf("%f %f %f", &a, &b, &c);
8 delta = (b*b - 4*a*c);
9 
10 if (delta >= 0)
11 {
12 x1 = (-b + sqrt(delta)) / (2*a);
13 x2 = (-b - sqrt(delta)) / (2*a);
14 printf("Raizes: %f, %f", x1, x2);
15 }
16 else
17 {
18 printf ("Nao existem raizes reais");
19 } 
20 return 0;
21 }
linha a b c delta x1 x2
5 ? ? ? ? ? ?
7 1 5 4 ? ? ?
34
TESTE DE MESA
1 #include <stdio.h>
2 #include <math.h>
3 int main()
4 {
5 float a, b, c, delta, x1, x2;
6 printf("Digite os coeficientes (A B C): ");
7 scanf("%f %f %f", &a, &b, &c);
8 delta = (b*b - 4*a*c);
9 
10 if (delta >= 0)
11 {
12 x1 = (-b + sqrt(delta)) / (2*a);
13 x2 = (-b - sqrt(delta)) / (2*a);
14 printf("Raizes: %f, %f", x1, x2);
15 }
16 else
17 {
18 printf ("Nao existem raizes reais");
19 } 
20 return 0;
21 }
linha a b c delta x1 x2
5 ? ? ? ? ? ?
7 1 5 4 ? ? ?
8 1 5 4 9 ? ?
Digite os coeficientes (A B C): 1 5 4
35
TESTE DE MESA
1 #include <stdio.h>
2 #include <math.h>
3 int main()
4 {
5 float a, b, c, delta, x1, x2;
6 printf("Digite os coeficientes (A B C): ");
7 scanf("%f %f %f", &a, &b, &c);
8 delta = (b*b - 4*a*c);
9 
10 if (delta >= 0)
11 {
12 x1 = (-b + sqrt(delta)) / (2*a);
13 x2 = (-b - sqrt(delta)) / (2*a);
14 printf("Raizes: %f, %f", x1, x2);
15 }
16 else
17 {
18 printf ("Nao existem raizes reais");
19 } 
20 return 0;
21 }
linha a b c delta x1 x2
5 ? ? ? ? ? ?
7 1 5 4 ? ? ?
8 1 5 4 9 ? ?
10 1 5 4 9 ? ?
Digite os coeficientes (A B C): 1 5 4
36
TESTE DE MESA
1 #include <stdio.h>
2 #include <math.h>
3 int main()
4 {
5 float a, b, c, delta, x1, x2;
6 printf("Digite os coeficientes (A B C): ");
7 scanf("%f %f %f", &a, &b, &c);
8 delta = (b*b - 4*a*c);
9 
10 if (delta >= 0)
11 {
12 x1 = (-b + sqrt(delta)) / (2*a);
13 x2 = (-b - sqrt(delta)) / (2*a);
14 printf("Raizes: %f, %f", x1, x2);
15 }
16 else
17 {
18 printf ("Nao existem raizes reais");
19 } 
20 return 0;
21 }
linha a b c delta x1 x2
5 ? ? ? ? ? ?
7 1 5 4 ? ? ?
8 1 5 4 9 ? ?
10 1 5 4 9 ? ?
12 1 5 4 9 -1 ?
Digite os coeficientes (A B C): 1 5 4
37
TESTE DE MESA
1 #include <stdio.h>
2 #include <math.h>
3 int main()
4 {
5 float a, b, c, delta, x1, x2;
6 printf("Digite os coeficientes (A B C): ");
7 scanf("%f %f %f", &a, &b, &c);
8 delta = (b*b - 4*a*c);
9 
10 if (delta >= 0)
11 {
12 x1 = (-b + sqrt(delta)) / (2*a);
13 x2 = (-b - sqrt(delta)) / (2*a);
14 printf("Raizes: %f, %f", x1, x2);
15 }
16 else
17 {
18 printf ("Nao existem raizes reais");
19 } 
20 return 0;
21 }
linha a b c delta x1 x2
5 ? ? ? ? ? ?
7 1 5 4 ? ? ?
8 1 5 4 9 ? ?
10 1 5 4 9 ? ?
12 1 5 4 9 -1 ?
13 1 5 4 9 -1 -4
Digite os coeficientes (A B C): 1 5 4
38
TESTE DE MESA
1 #include <stdio.h>
2 #include <math.h>
3 int main()
4 {
5 float a, b, c, delta, x1, x2;
6 printf("Digite os coeficientes (A B C): ");
7 scanf("%f %f %f", &a, &b, &c);
8 delta = (b*b - 4*a*c);
9 
10 if (delta >= 0)
11 {
12 x1 = (-b + sqrt(delta)) / (2*a);
13 x2 = (-b - sqrt(delta)) / (2*a);
14 printf("Raizes: %f, %f", x1, x2);
15 }
16 else
17 {
18 printf ("Nao existem raizes reais");
19 } 
20 return 0;
21 }
linha a b c delta x1 x2
5 ? ? ? ? ? ?
7 1 5 4 ? ? ?
8 1 5 4 9 ? ?
10 1 5 4 9 ? ?
12 1 5 4 9 -1 ?
13 1 5 4 9 -1 -4
14 1 5 4 9 -1 -4
Digite os coeficientes (A B C): 1 5 4
Raizes: -1.0 -4.0
39
TESTE DE MESA
1 #include <stdio.h>
2 #include <math.h>
3 int main()
4 {
5 float a, b, c, delta, x1, x2;
6 printf("Digite os coeficientes (A B C): ");
7 scanf("%f %f %f", &a, &b, &c);
8 delta = (b*b - 4*a*c);
9 
10 if (delta >= 0)
11 {
12 x1 = (-b + sqrt(delta)) / (2*a);
13 x2 = (-b - sqrt(delta)) / (2*a);
14 printf("Raizes: %f, %f", x1, x2);
15 }
16 else
17 {
18 printf ("Nao existem raizes reais");
19 } 
20 return 0;
21 }
linha a b c delta x1 x2
5 ? ? ? ? ? ?
7 1 5 4 ? ? ?
8 1 5 4 9 ? ?
10 1 5 4 9 ? ?
12 1 5 4 9 -1 ?
13 1 5 4 9 -1 -4
14 1 5 4 9 -1 -4
20 1 5 4 9 -1 -4
Digite os coeficientes (A B C): 1 5 4
Raizes: -1.0 -4.0
Resolução – Procedimento
40
void equacao2grau(float a, float b, float c)
{
float delta, x1, x2;
delta = (b*b - 4*a*c);
if (delta >= 0)
{
x1 = (-b + sqrt(delta)) / (2*a);
x2 = (-b - sqrt(delta)) / (2*a);
printf("Raizes da equacao: %f, %f", x1, x2);
}
else
{
printf ("Nao existem raizes reais");
}
}
• Exemplo de implementação do problema 
como um procedimento.
Alternativas aninhadas
• As vezes pode ser preciso usar estruturas de 
alternativa aninhadas
41
if (condicao) 
{ 
comandos1; 
if (outraCondicao) 
{ 
comandos2; 
} 
} 
else 
{ 
comandos3; 
}
Alternativas aninhadas
• Ou ainda usar o comando else if:
42
if (condicao)
{ 
comandos1; 
} 
else if (condicao2) 
{ 
comandos2; 
} 
else if (condicao3) 
{
comandos3; 
}
else 
{ 
comandos4;
}
Exemplo
• Determinar se um número inteiro é zero, 
negativo ou positivo.
43
#include <stdio.h> 
int main() 
{ 
int num; 
printf("Digite um numero inteiro: "); 
scanf("%d",&num); 
if(num == 0) 
printf("Valor zero"); 
else
{ 
if(num > 0) 
printf("Valor positivo"); 
else 
printf("Valor negativo"); 
} 
return 0; 
}
Se if ou else tem 
apenas um único 
comando no bloco 
de comandos, 
as chaves podem 
ser omitidas.
Exemplo
• Determinar se um número inteiro é zero, 
negativo ou positivo.
44
#include <stdio.h> 
int main() 
{ 
int num; 
printf("Digite um numero inteiro: "); 
scanf("%d",&num); 
if(num == 0) 
printf("Valor zero"); 
else if(num > 0) 
printf("Valor positivo");else 
printf("Valor negativo"); 
} 
return 0; 
}
Mas é 
recomendável 
usar sempre as 
chaves para não 
cometer erros.
Importância da identação
45
#include <stdio.h> 
int main() 
{ 
int a, b, c; 
printf("Digite três numeros inteiros: "); 
scanf("%d%d%d",&a,&b,&c); 
if(a < b && a < c) {
printf("O primeiro valor é menor"); 
} else { if(b < c) {
printf("O segundo valor é menor"); } else {
printf("O terceiro valor é menor"); } } 
return 0; 
}
Importância da identação
46
#include <stdio.h> 
int main() 
{ 
int a, b, c; 
printf("Digite três numeros inteiros: "); 
scanf("%d%d%d",&a,&b,&c); 
if(a < b && a < c)
{
printf("O primeiro valor é menor"); 
}
else
{
if(b < c)
{
printf("O segundo valor é menor"); 
}
else
{
printf("O terceiro valor é menor"); 
}
} 
return 0; 
}
Exercício 
• Qual é a saída do programa?
47
int main()
{
int a = 2, b = 3, c = 4;
if ((a<3) && ((b !=3) || (c == 4)))
printf("saida 1");
if ((c ==3) || (b ==4))
printf("saida 2");
if ((a < 3) && (b > 4))
printf("saida 3");
else if (a == 2)
if (b==5)
printf("saida 4");
else printf("saida 5");
else printf("saida 6");
return 0;
}
Exercício 
• Qual é a saída do programa:
48
int main()
{
int a = 2, b = 3, c = 4;
if ((a<3) && ((b !=3) || (c == 4)))
printf("saida 1");
if ((c ==3) || (b ==4))
printf("saida 2");
if ((a < 3) && (b > 4))
printf("saida 3");
else
if (a == 2)
if (b==5)
printf("saida 4");
else
printf("saida 5");
else
printf("saida 6");
return 0;
}
Lembre-se, a 
indentação do 
código facilita o seu 
desenvolvimento e 
a leitura do código.
Exercícios
1) Ler dois números inteiros e informar se o 
primeiro valor lido é maior, menor ou igual 
ao segundo.
2) Ler um número inteiro e informar se ele é 
divisível por 2.
3) Altere o algoritmo anterior para que seja 
informado se o número é divisível por 2 e 
por 3 simultaneamente.
4) Altere o algoritmo anterior para que seja 
informado se o número é divisível por 2 e 
por 3, mas que não seja divisível por 5.
49
Exercícios
5) Fazer um algoritmo para ler dois números e 
um dos símbolos das operações: +, -, * e /. 
Imprimir o resultado da operação efetuada 
sobre os números lidos.
6) Desenvolver um algoritmo para ler o valor 
inteiro da idade de uma pessoa e imprimir 
uma das mensagens: se idade < 13: 
Criança, se 13 ≤ idade < 20: Adolescente, 
se 20 ≤ idade < 60: Adulto e se idade ≥ 60: 
Idoso.
50
Alternativa com múltipla 
escolha
São úteis quando:
• Há um grande número de alternativas;
• Todas as alternativas dependem da avaliação 
de uma mesma expressão (na maioria das 
vezes, dependem do valor de uma única 
variável);
• O resultado da expressão (ou a variável da 
condição) é do tipo int ou char
51
Alternativa múltipla escolha: 
Sintaxe
52
switch (expressão)
{
case Valor1: Comandos1;
break;
case Valor2: Comandos2;
break; 
...
case ValorN: ComandosN; 
break;
default: Comandos;
}
switch (expressão)
{
case Valor1: Comandos1;
break;
case Valor2: Comandos2;
break; 
...
case ValorN: ComandosN; 
break;
default: Comandos;
}
Alternativa múltipla escolha: 
Sintaxe
53
Expressão única 
que pode assumir 
diversos valores.
switch (expressão)
{
case Valor1: Comandos1;
break;
case Valor2: Comandos2;
break; 
...
case ValorN: ComandosN; 
break;
default: Comandos;
}
Alternativa múltipla escolha: 
Sintaxe
54
Cada valor que a 
expressão pode 
assumir.
switch (expressão)
{
case Valor1: Comandos1;
break;
case Valor2: Comandos2;
break; 
...
case ValorN: ComandosN; 
break;
default: Comandos;
}
Alternativa múltipla escolha: 
Sintaxe
55
Comandos que 
devem ser 
executados em 
cada caso.
switch (expressão)
{
case Valor1: Comandos1;
break;
case Valor2: Comandos2;
break; 
...
case ValorN: ComandosN; 
break;
default: Comandos;
}
Alternativa múltipla escolha: 
Sintaxe
56
O comando 
break encerra a 
sequência de 
comandos do 
case e sai do 
switch.
switch (expressão)
{
case Valor1: Comandos1;
break;
case Valor2: Comandos2;
break; 
...
case ValorN: ComandosN; 
break;
default: Comandos;
}
Alternativa múltipla escolha: 
Sintaxe
57
A ausência do 
comando break faz 
com que os 
comandos dos casos 
seguintes sejam 
executados até o 
próximo break ou fim 
do switch.
switch (expressão)
{
case Valor1: Comandos1;
break;
case Valor2: Comandos2;
break; 
...
case ValorN: ComandosN; 
break;
default: Comandos;
}
Alternativa múltipla escolha: 
Sintaxe
58
O comando default
permite que uma 
sequência de 
comandos seja 
executada se o valor 
da expressão for 
diferente de todos os 
casos especificados.
Exemplo
59
#include <stdio.h>
int main()
{
int epoca;
printf("Digite o numero do trimestre:");
scanf("%d", &epoca); 
switch (epoca)
{
case 1: printf("verao"); 
break; 
case 2: printf ("outono");
break; 
case 3: printf ("inverno");
break; 
case 4: printf ("primavera");
break;
default: printf("Trimestre invalido");
}
return 0;
}
Exemplo
60
#include <stdio.h>
int main()
{
int mes;
printf("Digite o numero do mes:");
scanf("%d", &mes); 
switch (mes)
{
case 1: case 2: case 3:
printf("verao"); 
break; 
case 4: case 5: case 6: 
printf ("outono");
break; 
case 7: case 8: case 9: 
printf ("inverno");
break; 
case 10: case 11: case 12: 
printf ("primavera");
break;
default: printf("Mes invalido");
}
return 0;
}
Exercícios
7) Desenvolver um algoritmo para ler o número 
do dia da semana e imprimir o seu 
respectivo nome por extenso. Considerar o 
número 1 como domingo, 2 para segunda 
etc. Caso o dia da semana não exista 
(menor do que 1 ou maior do que 7), exibir a 
mensagem “Dia da semana inválido".
61
Exercícios
8) Elaborar um algoritmo para ler o código de 
um produto e informar a sua origem:
a) Código do produto entre 1 e 20: Europa
b) Código do produto entre 21 e 40: Ásia
c) Código do produto entre 41 e 60: América
d) Código do produto entre 61 e 80: África
e) Código do produto maior que 80: Paraguai
62
Exercícios
9) Para auxiliar os vendedores de uma loja na 
orientação aos clientes sobre as diversas 
formas de pagamento, desenvolver um 
algoritmo para:
63
a) Imprimir o seguinte menu:
b) Ler o código da opção de pagamento.
Forma de pagamento:
- À vista.
- Cheque para trinta dias.
- Em duas vezes.
- Em três vezes.
- Em quatro vezes.
- A partir de cinco vezes.
Entre com sua opção:
Exercícios
c) Imprimir uma das mensagens de acordo com a 
opção lida:
64
Opção = 1: Desconto de 20%
Opção = 2, 3 ou 4: Mesmo preço a vista
Opção = 5: Juros de 3% ao mês
Opção = 6: Juros de 5% ao mês
Opção <1 ou opção >6: Opção inválida
Estruturas de Controle
Alternativa
DCC 120 – Laboratório de Programação
Comando Condicional - if
• O comando if é uma estrutura de decisão 
que decide se uma sequência de comandos 
será ou não executada. Sua sintaxe é:
• Ou
66
if (expressão)
{
sequencia de comandos;
}
if (expressão)
unico comando;
Comando Condicional - if
• A expressão sempre será avaliada, e o 
resultado lógico (verdadeiro ou falso), na 
linguagem C corresponde a 
• FALSO: o valor zero (==0) 
• VERDADEIRO: os demais(!=0)
67
if (expressão)
{
sequencia de comandos;
}
if - Exemplos
• Programa para determinar o maior de dois 
números fornecidos pelo usuário.
68
int main()
{
int a, b, maior;
scanf ("%d%d", &a, &b);
maior = a;
if (b > maior) {
maior = b;
} 
printf ("\nMAIOR = %d", maior);
return 0;
}
Condicional: if-else
• O comando if pode decidir entre duas 
sequências de comandos qual vai ser a 
executada e tem a seguinte sintaxe:
69
if (expressão)
{
// caso a expressão retorne verdadeiro
sequencia de comandos;
}
else
{
// caso a expresão retorne falso
sequencia de comandos;
}
if-else
• Exemplo: Verificar se um número é par.
• Obs.: No exemplo acima não são utilizadas chaves no if e no 
else pois há apenas um comando a ser executado. Em casos 
como esse pode-se ou não utilizar as chaves.
70
#include <stdio.h>
int main()
{
int x;
printf("Digite o numero: ");
scanf("%d", &x);
if (x % 2 == 0)
printf("%d e' par \n", x);
else
printf("%d e' impar \n", x);
return 0;
}
if else , if , ...
71
if (condição1)
{
comandos if1;
if (condição2)
{
comandos if2;
}
else
{
comandos else2;
}
}
else
{
comandos else1;
if (condição3)
{
comandos if3;
}
}
Comando switch
• Utilizado quando uma determinada variável pode ser 
igual a diferentes valores que se deseja avaliar
• Sintaxe:
72
switch (variavel)
{
case constante1: comandos;
break;
case constante2: comandos;
break;
default: comandos;
}
73
Comando switch - Exemplo
int main()
{
int epoca;
printf("Digite o trimestre do ano em que estamos: ");
scanf("%d",&epoca);
switch (epoca)
{
case 1: printf("verao");
break;
case 2: printf("outono");
break;
case 3: printf("inverno");
break;
case 4: printf("primavera");
break;
default: printf("periodo invalido");
}
return 0;
}
Exercícios
Para cada exercício:
 Leia atentamente o enunciado até que o 
problema seja completamente entendido;
 Enumere os passos necessários para a solução 
do problema;
 “Traduza” os passos listados para a linguagem 
de programação C;
 Compile e corrija eventuais erros de sintaxe;
 Teste seu programa com diferentes entradas.
74
Exercícios
1. Faça um programa para ler dois número 
inteiros, faça a divisão do primeiro pelo 
segundo (se o segundo for diferente de 
zero).
2. Faça um programa para ler dois números 
reais e verificar se ambos são maiores que 
zero. Caso positivo, informar “Valores são 
válidos”. Caso contrário, informar “Valores 
inválidos”.
75
Exercícios
3. Tendo como dados de entrada a altura e o 
sexo de uma pessoa, construa um 
programa que calcule seu peso ideal, 
utilizando as seguintes fórmulas:
para homens: (72.7*h)-58
para mulheres: (62.1*h)-44.7
4. Faça um programa que leia 3 comprimentos 
(x,y e z) e responda se eles formam um 
triângulo, ou seja, se 
x < y + z e y < x + z e z < x + y.
76
Exercícios
5. Fazer um algoritmo para ler dois números e um 
dos símbolos das operações: +, -, * e /. 
Imprimir o resultado da operação efetuada 
sobre os números lidos.
6. Faça um programa para ler um caracter e 
imprimir as seguintes mensagens, segundo o 
caso:
 “Sinal de menor”
 “Sinal de maior”
 “Sinal de igual”
 “Outro caracter”
77
Exercícios
7. Elabore um programa que, dada a idade de 
um nadador, classifique-o em uma das 
seguintes categorias:
• infantil A = 5 – 7 anos
• infantil B = 8 – 10 anos
• juvenil A = 11 – 13 anos
• juvenil B = 14 – 17 anos
• adulto = 18 – 30 anos
• sênior = maiores de 30 anos
78

Outros materiais

Materiais relacionados

Perguntas relacionadas

Perguntas Recentes