Baixe o app para aproveitar ainda mais
Prévia do material em texto
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 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. 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çãoLembra 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 dos 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: <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. Leituras recomendadas Estruturas de seleção12 Encerra aqui o trecho do livro disponibilizado para esta Unidade de Aprendizagem. Na Biblioteca Virtual da Instituição, você encontra a obra na íntegra. Conteúdo:
Compartilhar