Você está na página 1de 26

Estruturas de

Seleção em C
Disciplina: Linguagem de Programação
Prof. : Marlon Mendes Minussi
E-mail: marlonminussi@ifsul.edu.br
Conceitos

• Até agora, os programas desenvolvidos


seguiam o mesmo padrão:
– efetuava-se leitura de dados, estes dados eram
processados e algum resultado era mostrado na
tela.

Os programas pareciam
uma calculadora!!

19/03/2019 marlonminussi@ifsul.edu.br 2
Conceitos
• Estruturas de Seleção
• Trata-se de uma estrutura de controle de fluxo, executando
um ou vários comandos se a condição testada for
verdadeira e, em alguns casos, executando um ou vários
comandos se for falsa.

SE <condição for verdadeira> ENTAO


<BLOCO DE COMANDOS>
SENAO
<BLOCO DE COMANDOS>
19/03/2019 marlonminussi@ifsul.edu.br 3
Conceitos

• Exemplo: Diagrama de Chapin


Aqui temos a representação
de uma condição. Esta
condição terá dois resultados
inicio possíveis: V (verdadeiro) ou F
Ler N1, N2 (Falso).
media = (N1+N2)/2
media >= 6
Ação que será executada
V F se a condição for F
Escrever Escrever (falsa).
“Aprovado” “Reprovado”
fim Ação que será executada
se a condição for V
(verdadeira).
19/03/2019 marlonminussi@ifsul.edu.br 4
Conceitos
#include <stdio.h>
• Com seria a tradução para código em C? #include <conio.h>

inicio main()
Ler N1, N2 {
float n1, n2, media;
media = (N1+N2)/2
media >= 6 printf("Informe N1:");
scanf("%f", &n1);
V F
printf("Informe N2:");
Escrever Escrever scanf("%f", &n2);
“Aprovado” “Reprovado” media = (n1 + n2) / 2;
if(media >= 6)
fim printf("Aprovado!\n");
else
printf("Reprovado!\n");
getch();
19/03/2019 marlonminussi@ifsul.edu.br
} 5
Estrutura de Seleção em C

• Verdadeiro e Falso em C
– No C, um valor verdadeiro é qualquer valor
diferente de zero, incluindo valores negativos.

– Um valor falso é 0.

• Comandos de Seleção:
– O C suporta dois tipos de comandos de seleção:
if e switch.

19/03/2019 marlonminussi@ifsul.edu.br 6
Estrutura de Seleção em C
if
- A forma geral da sentença if é:
if (expressão)
{ Início do bloco de comandos
<bloco de comandos>
} Fim do bloco de comandos
Opcional else
{
<bloco de comandos>
}

Se a expressão é verdadeira, o bloco que forma o corpo do if é


executado, caso contrário, o bloco que forma o corpo do else (se
existir) é executado.
LEMBRE-SE: APENAS O CÓDIGO ASSOCIADO AO “IF” OU O CÓDIGO
ASSOCIADO AO “ELSE” SERÁ EXECUTADO, NUNCA AMBOS.
19/03/2019 marlonminussi@ifsul.edu.br 7
Estrutura de Seleção em C

• Exemplo: Verificar se um número é maior que 20


#include <stdio.h>
#include <conio.h>

main()

?
{
int numero;
printf("Digite um numero");
scanf("%d", &numero);
if (numero > 20) Onde estão os
printf("numero maior que 20 \n"); delimitadores de Bloco?
getch();
}

19/03/2019 marlonminussi@ifsul.edu.br 8
Estrutura de Seleção em C

Blocos
#include <stdio.h>
#include <stdio.h> #include <conio.h>
#include <conio.h>
main()
main() {
{ int numero;
int numero; printf("Digite um numero");
printf("Digite um numero"); scanf("%d", &numero);
scanf("%d", &numero);
if(numero > 20)
if(numero > 20) {
printf("numero maior que 20 \n"); printf("numero maior que 20 \n");
}
getch();
getch();
}
}

O resultado é o mesmo?
19/03/2019 marlonminussi@ifsul.edu.br
SIM!!! 9
Estrutura de Seleção em C

Blocos
#include <stdio.h>
#include <stdio.h>
#include <conio.h>
#include <conio.h>
main()
main()
{
{
int numero;
int numero;
printf("Digite um numero");
printf("Digite um numero");
scanf("%d", &numero);
scanf("%d", &numero);

if(numero > 20) if(numero > 20)


printf("numero maior que 20 \n"); {
printf("outro comando!"); printf("numero maior que 20 \n");
printf("outro comando!");
getch();
}
} getch();
}

O resultado é o mesmo?
19/03/2019 marlonminussi@ifsul.edu.br Não!!! 10
Estrutura de Seleção em C

A regra é clara!

Se tivermos apenas um comando a ser executado


no bloco do if ou do else, o uso dos delimitadores
de bloco é facultativo.

19/03/2019 marlonminussi@ifsul.edu.br 11
Estrutura de Seleção em C

• DICA
• SEMPRE UTILIZAR OS DELIMITADORES DE BLOCO,
EVITANDO COMPORTAMENTOS INDESEJADOS!!!

19/03/2019 marlonminussi@ifsul.edu.br 12
Estrutura de Seleção em C
Exemplo: Verificar se um número é ou NÃO maior que 20
#include <stdio.h>
#include <conio.h>

?
main()
{
int numero;
printf("Digite um numero");
scanf("%d", &numero);
if(numero > 20)
{
printf("numero maior que 20 \n"); O que será impresso na tela
} se o número informado for
else
{
igual a 20?
printf("numero não e maior que 20 \n");
}
getch();
}

19/03/2019 marlonminussi@ifsul.edu.br 13
Estrutura de Seleção em C

Exercícios de fixação
1. Escreva um programa em C, para ler um número inteiro e imprimir se ele é
positivo, negativo ou nulo.
2. Escreva um programa em C, para ler um número inteiro e imprimir a raiz
quadrada do número se ele for positivo e quadrado do número, se ele for
negativo.
3. Escreva um programa em C, para ler um número inteiro e imprimir se este
número é par ou ímpar.
4. Escreva um programa em C, para ler dois número inteiros e efetue a adição; caso
o resultado seja maior que 10, imprimir a soma na tela.
5. Escreva um programa em C, para ler um número inteiro e informar se este
número é divisível por 3 e por 7.
6. Escreva um programa em C, para ler um valor inteiro e informar se este número
está compreendido entre 20 e 90.
19/03/2019 marlonminussi@ifsul.edu.br 14
Estrutura de Seleção em C

• if´s aninhados
Um if aninhado, é um if dentro de outro if ou else.
Este tipo de construção é muito comum em
programação, pois se caracteriza de grande utilidade na
solução de determinados problemas.

É conveniente ressaltar que, no C, um comando else


sempre se refere ao comando if mais próximo, que está
dentro do mesmo bloco do else e não está associado a outro
if.
19/03/2019 marlonminussi@ifsul.edu.br 15
Estrutura de Seleção em C
Exemplo:
#include <stdio.h>
#include <conio.h> inicio

main() Ler numero


{
int numero;
printf("Digite um numero"); V F
scanf("%d", &numero);
if(numero > 20) Escrever
{ “numero
printf("numero maior que 20 \n"); V F
maior que
}
else 20” Escrever Escrever
{ “numero “numero
if(numero == 20) igual a 20” menor que
printf("numero igual a 20 \n"); 20”
else
printf("numero menor que 20 \n"); fim
}
getch();
}
19/03/2019 marlonminussi@ifsul.edu.br 16
Estrutura de Seleção em C

Exercício de fixação:

1. Escreva um programa em C, para ler um número


inteiro. Se o número for par, deverá verificar se ele
é múltiplo de 10, imprimindo na tela “É múltiplo de
10” ou “Não é múltiplo de 10”. Caso o número seja
ímpar, verificar se o número é múltiplo de 3,
imprimindo na tela “É múltiplo de 3” ou “Não é
múltiplo de 3”.

19/03/2019 marlonminussi@ifsul.edu.br 17
DESAFIO:

• Você é capaz de deduzir o que ficará armazenado nas


variáveis a, b e c, no trecho de código abaixo?

if(a > b)
{
aux = a;
a = b;
b = aux;
}
if(a > c)
{
aux = a;
a = c;
c = aux;
}
if(b > c)
{
aux = b;
b = c;
c = aux;
19/03/2019
}
marlonminussi@ifsul.edu.br 18

Estrutura de Seleção em C
• A Escada if-else-if
Uma construção comum em programação é a forma if-else-if, algumas vezes chamada
de escada if-else-if devido sua aparência. Sua forma geral é:
If (expressão)
{
Estrutura mais fácil de compreender
<bloco de comandos> If (expressão)
} {
else <bloco de comandos>
if (expressão) }
{ else if (expressão)
<bloco de comandos> {
} <bloco de comandos>
else }
if (expressão) else if (expressão)
{ {
<bloco de comandos> <bloco de comandos>
} }
else else if (expressão)
if (expressão) {
{ <bloco de comandos>
<bloco de comandos> }
} else
else …
19/03/2019 … marlonminussi@ifsul.edu.br 19
Estrutura de Seleção em C

• A Escada if-else-if

Observem o exemplo que temos na página:


escada-if-else.c

19/03/2019 marlonminussi@ifsul.edu.br 20
Estrutura de Seleção em C

• switch:
O C possui um comando interno de seleção múltipla, switch, que testa
sucessivamente o valor de uma expressão contra uma lista de constantes.
Quando o valor coincide, os comando associados àquela constante serão
executados. A forma geral deste comando é:
switch(expressão)
{
case constante1:
seqüência de comandos
break;
case constante2:
seqüência de comandos
break;

default:
seqüência de comandos
}

19/03/2019 marlonminussi@ifsul.edu.br 21
Estrutura de Seleção em C

• switch:
- O valor da expressão é testado, na ordem em que aparece, contra os
valores das constantes verificadas nos comandos case. Quando
uma coincidência é encontrada, a sequência de comandos
associados àquele case será executada até que o comando break
ou o fim do comando switch seja alcançado.
- O default é opcional e, se NÃO estiver presente, nenhuma ação será
realizada, caso todos os testes com os case’s falhem.
- O comando break é um dos comandos de desvio em C. Quando um
break é encontrado em um switch, a execução do programa
“salta” para a linha de código seguinte ao comando switch.

19/03/2019 marlonminussi@ifsul.edu.br 22
Estrutura de Seleção em C

• switch:
Existem três itens importantes a saber sobre o comando switch:
- O comando switch difere do comando if porque switch só pode
testar igualdade, enquanto que o if pode avaliar uma expressão
lógica ou relacional.
- Duas constantes case no mesmo switch não podem ter valores
idênticos. Obviamente, um comando switch incluído em outro
switch mais externo pode ter as mesmas constantes case.
- Se constantes de caracter são usadas em um comando switch,
elas são automaticamente convertidas para seus valores inteiros.

19/03/2019 marlonminussi@ifsul.edu.br 23
Estrutura de Seleção em C

• switch:
- Tecnicamente, os comandos break, dentro do switch, são
opcionais. Se o comando break é omitido, a execução continua
pelo próximos comandos case até que um break, ou o fim do
switch, seja encontrado.

- Outro ponto importante, refere-se ao fato dos comandos


associados a cada case não serem considerados como blocos de
código, mas sim, sequências de comandos. Por este motivo,
dispensam os comandos { e }. Entretanto, se estes últimos forem
utilizados, não haverá problema, a questão será simplesmente
desempenho, pois um bloco será criado.

19/03/2019 marlonminussi@ifsul.edu.br 24
#include<locale.h>
main ()
{
setlocale(LC_ALL,"Portuguese");
int x;
printf ("Você gosta de programar???\n");
printf ("Digite 1 para 'SIM'\n");
printf ("Digite 2 para '+' OR '-' \n");
printf ("Digite outro número para 'NÃO'\n");
scanf ("%d", &x);
switch(x)
{
Exemplo:

case 1:
printf ("LEGAL! Você gosta de programar!!!\n");
break;
case 2:
printf ("HUMMMM!Então vamos estudar mais!!!\n");
break;
default:
printf("\nAAHHH! Que pena!!!");
}
printf("\nFIM do programa!!!");
}
Estrutura de Seleção em C

• switch

Observem os exemplos que temos na página:

switch-exemplo1.c
switch-exemplo2.c

19/03/2019 marlonminussi@ifsul.edu.br 26

Você também pode gostar