Você está na página 1de 15

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.
2 Estruturas de seleção

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ção 3

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.


4 Estruturas 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ção 5

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.


6 Estruturas 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ção 7

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 reservada case, 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.


8 Estruturas 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ção 9

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.
10 Estruturas 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ção 11

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.
12 Estruturas de seleção

Leituras recomendadas

BOOLEAN type support library. Cppreference.com, 2017. Disponível em: <http://


en.cppreference.com/w/c/types/boolean>. 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.

Você também pode gostar