Prévia do material em texto
Estruturas de Seleção
Apresentação
Em programação, podemos construir programas sequenciais, ou seja, que possuem somente um
fluxo de execução. No entanto, há casos em que isso não é o suficiente para resolver um
determinado problema. Uma estrutura de seleção é uma ferramenta utilizada para modificarmos o
fluxo de execução de um programa. Com esse tipo de estrutura, é possível escolher um grupo de
ações a serem executadas de acordo com o valor lógico de alguma expressão lógica e/ou relacional.
Nesta Unidade de Aprendizagem, você estudará a construção de um algoritmo, os conceitos
básicos envolvidos, os tipos e como funciona a estrutura de seleção.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Usar a estrutura de seleção if-else e switch.•
Criar programas que usam a estrutura de seleção simples, composta e encadeada.•
Praticar a resolução de problemas computacionais com a estrutura de seleção ternária.•
Desafio
Você foi contratado por uma empresa de desenvolvimento de software, e todos os novos
integrantes do time em que você vai trabalhar passarão por um teste, que é uma forma de
entrosamento. No teste, você deverá desenvolver o jogo Pedra-Papel-Tesoura junto com um
colega.
As regras do jogo Pedra-Papel-Tesoura são:
Pedra ganha da tesoura (amassando-a ou quebrando-a).
Tesoura ganha do papel (cortando-o).
Papel ganha da pedra (embrulhando-a).
No jogo, o usuário deve enfrentar o computador. Então, vocês precisam desenvolver alguma forma
que o computador gere um valor randômico. Vocês tiveram uma ideia: representar cada jogada com
números inteiros, usando uma biblioteca do C, que gera números aleatórios: a stdlib.
O desafio é desenvolver o jogo e entregá-lo na reunião comemorativa, no primeiro dia de trabalho.
Infográfico
Quando devemos usar uma estrutura encadeada? Existe alguma forma correta de encadear if-
elses? Acompanhe, neste Infográfico, dicas de uso dessa estrutura.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para
acessar.
https://statics-marketplace.plataforma.grupoa.education/sagah/97924ff8-2fa3-4525-8432-54e51701fd71/cdde9584-4f32-4e5d-bd07-6cc64a251b32.jpg
Conteúdo do livro
Todo programa de computador tem um fluxo de execução que pode ser sequencial, ou seja, sem
nenhum desvio. Porém, para escrever programas cada vez mais complexos, é preciso que se tenha
ferramentas para mudança de fluxo de acordo com algum comportamento do usuário, por exemplo.
Uma dessas estruturas é a de seleção, que pode ser simples ou composta, e que pode ser usada de
forma simples ou encadeada. Além disso, existe uma ferramenta que proporciona o uso reduzido
do conceito da estrutura de seleção.
Leia o capítulo Estruturas de seleção, da obra Algoritmos de programação, base teórica para esta
Unidade de Aprendizagem, e conheça detalhes dessa estrutura.
Boa leitura.
ALGORITMOS DE
PROGRAMAÇÃO
Marcela Santos
Estruturas de seleção
Introdução
Ao final deste texto, você deve apresentar os seguintes aprendizados:
� Usar as estruturas de seleção if-else e switch.
� Criar programas que usam as estruturas de seleção simples, composta
e encadeada.
� Resolver problemas computacionais com a estrutura de seleção
ternária.
Objetivos de aprendizagem
Em programação, podemos construir programas sequenciais, ou seja,
que possuem somente um fluxo de execução. Todavia, existem casos
que isso não é o suficiente para resolver um determinado problema. Uma
estrutura de decisão é uma ferramenta utilizada para modificarmos o fluxo
de execução de um programa. Com esse tipo de estrutura, é possível
escolher um grupo de ações a serem executadas de acordo com o valor
lógico de alguma expressão lógica e/ou relacional.
Neste capítulo, você estudará a construção de um algoritmo, os con-
ceitos básicos envolvidos, os tipos e o funcionamento da estrutura de
seleção.
As estruturas de seleção if-else e switch
Quando criamos um programa de computador, utilizamos a seguinte sequência
de operações na grande maioria das vezes: entrada de dados, processamento
e saída. Para que essas operações sejam executadas de forma a resolver o
problema ou a realizar uma determinada tarefa, é importante que ele siga um
fluxo de execução que faça sentido, ou seja, que tenha uma determinada lógica.
Quando existe somente um fluxo de execução, ou seja, não há a necessidade
de escolha entre dois ou mais caminhos, chamamos a execução de sequencial.
Ela segue do início do código-fonte ao final e, toda vez que for executada, terá
a mesma ordem de execução das instruções que compõem o código-fonte.
Mas existem situações onde é preciso que o programa tenha mais de um
fluxo de execução. Imagine que você esteja escrevendo um programa que
calcule a média de um aluno e mostre, ao final, a situação dele de acordo
com essa média.
Para exemplificar, vamos usar as seguintes regras:
� Se a média for menor que 5, o aluno está reprovado.
� Se a média for maior que 5 e menor que 7, ele estará em recuperação.
� Acima de 7, ele será aprovado.
Não é possível que o aluno esteja em recuperação, aprovado e reprovado
ao mesmo tempo. Então, o programa precisará ter mais de um fluxo de exe-
cução, e isso é obtido por meio da utilização de uma estrutura conhecida
como estrutura de seleção. Esta permite que decisões sejam tomadas e ações
diferentes sejam executadas.
Existem dois tipos de estrutura de seleção em C: if-else e switch — cada
uma tem sua sintaxe e podem ser utilizadas em situações diferentes. Tomemos
como exemplo um programa que, dado um número inteiro, tem como saída
um texto mostrando se o número é maior que 0. Observe a Figura 1, a seguir.
Figura 1. Uso do if-simples.
Estruturas de seleção2
As linhas em destaque (6,7 e 8) mostram o uso da estrutura if. Nesse caso,
o programa só vai ter um caminho diferente para seguir: quando o número
for maior que zero. Por isso, foi usado somente o if (sem o else) e seu funcio-
namento pode ser visto no seguinte fluxograma, representado pela Figura 2.
Figura 2. Fluxograma do if-simples.
Os testes lógicos são construídos com os operadores relacionais somente,
ou pode-se unir expressões relacionais com operadores lógicos. A sintaxe do
if segue a seguinte regra, apresentada na Figura 3.
Figura 3. Sintaxe do if-simples.
3Estruturas de seleção
Usando o mesmo exemplo, imagine agora que o programa deve, ao final
da execução, dizer se o número é maior que zero ou se o número digitado é
menor ou igual a zero. Diferentemente do primeiro exemplo, esse problema
requer o desenvolvimento de dois fluxos de execução. Vamos dar uma olhada
no código-fonte que resolve essa questão, na Figura 4.
Figura 4. Uso do if-else-composto.
Nas linhas em destaque, podemos ver o uso da estrutura if-else. Nesse caso,
temos dois caminhos a tomar (por enquanto): escrever o texto referente ao número
maior que zero; e, no caso contrário, se o número for menor ou igual a zero.
Estruturas de seleção4
A sintaxe e o funcionamento da estrutura if-else podem ser vistos a seguir,
nas Figuras 5 e 6.
Figura 5. Sintaxe if-else-composta.
Figura 6. Fluxograma if-else-composto.
5Estruturas de seleção
O nosso segundo tipo de estrutura de seleção é o switch. Para exemplificar,
imagine um programa que você digite o mês em formato numérico e ele retorne
o mês em forma de texto. Na Figura 7, está representado o código-fonte que
realiza essa tarefa.
Figura 7. Uso do switch.
Estruturas de seleção6
O switch acaba sendo uma alternativa mais simples para o if. Seu uso é
bastante simples: quando comparamos uma variável com valores diferentes
e temos ações específicas, caso essa variável seja igual a um dos valores
comparados. Sua sintaxe segue as seguintes regras:
� Você precisa definir qual variável o switch irá avaliar.
� Em seguida, você tem uma sequência de casos, onde a variável é com-
parada com um valor.
� Cada caso é feito usando-se a palavra reservadacase, seguida do valor
e dois pontos.
Um detalhe importante em cada caso é o fato de termos, como última linha,
a palavra reservada break, que faz com que somente um caso seja avaliado
por vez. Essa palavra quebra a execução do switch e faz com que o fluxo siga
para a primeira linha após o switch.
O switch é bastante utilizado quando se deseja implementar um menu.
Imagine que você esteja desenvolvendo um jogo que tenha níveis. Um possível
menu pode ser feito da seguinte forma, conforme Figura 8.
Figura 8. Uso do switch, implementando menu.
7Estruturas de seleção
Um detalhe importante é o uso do default. Já percebeu para que ele serve? Caso a
variável testada não seja igual a nenhum valor presente nos cases, o switch executa
as instruções presentes no default.
O case só serve quando o teste que queremos fazer é por meio da utilização
do operador igual a (==). Se for preciso fazer vários testes, mas com outros
operadores, precisamos encadear if-elses, como será visto a seguir.
As estruturas de seleção if-else e switch
Uma estrutura de seleção simples é aquela formada por um único if. Como
vimos anteriormente, o if sozinho é usado quando temos somente um caminho
para seguir no fluxo de execução do programa.
Já, quando usamos somente um if-else, estamos usando uma estrutura de
seleção composta. Ela é usada quando é preciso tomar uma decisão e existe um
conjunto de instruções a ser executado, caso o teste seja verdadeiro ou falso.
Porém, existem casos onde é preciso mais que dois caminhos a seguir no
fluxo de execução do programa. Tomemos como exemplo o programa que
diz se um número é maior, menor ou igual a zero. Do jeito que escrevemos o
código anteriormente, é impossível saber se o número é 0 ou menor que zero.
Precisamos, nesse caso, implementar um programa que tenha 3 caminhos a
seguir:
� maior que zero;
� menor que zero;
� igual a zero.
Estruturas de seleção8
Nesses casos, utilizamos estrutura de seleção encadeada, ou seja, uma
dentro da outra. Segue o código do nosso problema, representado pela Figura 9,
agora com estrutura de seleção encadeada.
Figura 9. Código para exemplificar o uso da estrutura de seleção encadeada.
Seguem algumas dicas para a escrita da estrutura de seleção composta:
� Quem tem teste lógico é sempre o if, o else nunca testa variável.
� Cada if tem o teste lógico e o conjunto de chaves para delimitar o que
será executado dentro do if.
� Cada else tem seu conjunto de chaves para delimitar o que será exe-
cutado dentro do else.
� Fica mais fácil se o que estiver dentro do if ou do else for indentado,
ou seja, aplicamos um recuo (com o uso da tecla tab), para indicar a
hierarquia do código.
9Estruturas de seleção
Lembra do exemplo da situação do aluno, lá do início do nosso capítulo?
Vamos escrever o código para resolver esse problema. Observe a Figura 10.
Figura 10. Código para exemplificar o uso da estrutura de
seleção encadeada (situação aluno).
A estrutura de seleção ternária
O operador ternário é uma maneira que a linguagem C tem de escrever uma
estrutura if-else de forma compactada. Como exemplo, vamos escrever um
programa que, dados dois números, mostra o maior deles.
Vamos implementar esse programa, primeiro somente com if-else e, depois,
substituindo um destes pela estrutura ternária. Veja a Figura 11, a seguir.
Estruturas de seleção10
Figura 11. Comparação entre estrutura de seleção composta e estrutura de seleção ternária.
Do lado esquerdo, temos o código com o uso do if-else interno, para avaliar
qual o maior número. Esse if-else pode ser substituído pelas linhas 9 e 10 do
código à direita e, especificamente, pela linha 9, onde usamos a estrutura de
seleção ternária. A sintaxe da estrutura de seleção ternária é representada em
seguida, na Figura 12.
Figura 12. Sintaxe da estrutura de seleção ternária.
A variável de atribuição vai receber o valor de:
� expressão 1, se a condição for verdadeira;
� expressão 2, se a condição for falsa.
Lembre-se de que a condição pode ser feita por meio do uso de operadores relacionais
e/ou lógicos.
11Estruturas de seleção
BOOLEAN type support library. Cppreference.com, 2017. Disponível em: . Acesso em: 22 fev. 2018.
PAES, R. B. Introdução à Programação com a Linguagem C. São Paulo: Novatec, 2016.
296p.
PINHEIRO, F. A. C. Elementos de programação em C. Porto Alegre: Bookman, 2012. 548p.
SCHEINERMAN, E. R. Matemática Discreta: uma introdução. São Paulo: Thomson
Pioneira, 2003.
Leituras recomendadas
Estruturas de seleção12
Dica do professor
Vamos aprender como usar estruturas de seleção de forma encadeada, desenvolvendo um jogo de
adivinhação? No vídeo, você terá orientações sobre essa estrutura de maneira prática e divetida.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://fast.player.liquidplatform.com/pApiv2/embed/cee29914fad5b594d8f5918df1e801fd/c60d6ff27755103cd89cd9fdd274cd36
Exercícios
1) O seguinte programa deve receber um número e apresentar um texto indicando se esse número é
par ou ímpar.
O que deve ser escrito nas linhas 7 e 10 para que a saída seja de acordo com as imagens de saída
de execução?
A) Na linha 7: printf("O numero %d eh parn",numero); na linha 10: printf("O numero %d eh
imparn",numero);
B) Na linha 7: printf("O numero %d eh imparn",numero); na linha 10: printf("O numero %d eh
parn",numero);
C) Na linha 7: printf("O numero eh parn",numero); na linha 10: printf("O numero eh
imparn",numero);
D) Na linha 7: printf("O numero %d eh parn"); na linha 10: printf("O numero %d eh imparn");
E) Na linha 10: printf("O numero eh parn",numero); na linha 7: printf("O numero eh
imparn",numero);
2) Qual a diferença entre uma estrutura de seleção simples e uma composta na linguagem C?
A) A estrutura simples é usada em programas simples e a composta em problemas mais
complexos.
B) Não existe estrutura de seleção simples e composta em C.
C) A estrutura simples só tem if, ou seja, só se executa operações se o teste for verdadeiro. Já a
estrutura composta tem if-else.
D) A estrutura composta só tem if, ou seja, só se executa operações se o teste for verdadeiro. Já
a estrutura simples tem if-else.
E) Não existe diferença, cabendo ao programador escolher uma entre as duas.
A seguir, vemos a sintaxe da estrutura switch:
switch (expressao){
case valor1:
comandos;
comandos;
break;
case valor2:
comandos;
comandos;
break;
case valor3:
comandos;
comandos;
break;
default:
3)
comandos;
comandos;
}
Sobre ela, é correto afirmar:
A) Os valores (valor1, valor2...) podem ser um teste condicional, usando os operadores
relacionais.
B) O código para o caso default é obrigatório.
C) A expressão pode conter qualquer operador: aritmético, lógico ou relacional.
D) Somente um dos cases é executado por vez.
E) O comando break não é permitido no interior dos grupos de comandos.
Como você pode reescrever o código a seguir, usando a estrutura de seleção ternária? Ou seja, se
substituirmos as linhas 9 a 14, como deve estar escrita uma nova linha, usando o operador ternário
para termos a mesma saída?
4)
A) maior=numero1>numero2?numero2:numero1;
B) maior=numero2>numero1?numero1:numero2;
C) maior=numero1>numero2?numero1:numero2;
D) maior=numero1>numero2?numero1::numero2;
E) Não é possível realizar esse tipo de operação com o operador ternário.
Qual estrutura está representada na imagem a seguir? 5)
A) Estrutura de seleção simples.
B) Estrutura de seleção composta.
C) Estrutura sequencial.
D) Não é possível, somente com o diagrama, saber qual é a estrutura.
E) Estrutura switch.
Na prática
Priscila é desenvolvedora de sistemas e está trabalhando em um sistema para um posto de
combustíveis. O posto tem a seguinte tabela de descontos:
Álcool:
- Até 25 litros, desconto de 5%.
- Acima de 25, desconto de 7,5%.
Gasolina:
- Até 25 litros, desconto de 7%.- Acima de 25 litros, desconto de 9%.
O programa solicitado para Priscila deve ter como entrada de dados: tipo de combustível e valor
em litros que o carro foi abastecido. Como saída, o valor a pagar, sabendo que a gasolina é R$ 3,00
e o álcool é R$ 2,00.
Como Priscila pode escrever esse programa em código C, usando estruturas de seleção?
O código-fonte precisa ser compilado para poder ser executado:
Baixe aqui o código-fonte
https://statics-marketplace.plataforma.grupoa.education/sagah/904f96e5-05ae-4a6a-aa56-2098f24ab9fe/9cb04879-e72e-4e58-ae45-fe3315a5be75.c
Saiba +
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor:
Me Salva! Programação em C
Assista ao vídeo que mostra como você pode fazer validar seus dados, usando o if.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Estruturas Condicionais 1 - Curso de Algoritmos #07.
Para saber mais sobre estruturas condicionais, assista aos vídeos a seguir com exemplos e
explicaçães a partir dos conceitos de algoritmos e lógica de programação.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Estruturas Condicionais 2
Veja como criar algoritmos com estruturas condicionais aninhadas e estruturas de múltipla escolha.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://www.youtube.com/embed/8VLtBdhTwlE
https://www.youtube.com/embed/_g05aHdBAEY
https://www.youtube.com/embed/7gGFHzqh4d8