• Nenhum resultado encontrado

Estrutura de seleção encadeada 

No documento Livro Logica Programacao b (páginas 71-88)

Estrutura de seleção encadeada

6.1 Estrutura de seleção encadeada 

 A estrutura de seleção encadeada, também conhecida como desvio con- dicional encadeado, se encadeado ou se aninhado, nada mais é do que uma

estrutura lógica composta por duas ou mais estruturas de desvio condicional (simples ou compostas), uma dentro da outra.

Lembra do problema dois da aula anterior (aula três)? Como não

havíamos explicado ainda o se aninhado, resolvemos com três se simples.

Mas será que essa era a melhor forma de resolver esse problema? Veja e analise o exemplo a seguir, dessa vez resolvido com estrutura condicional encadeada

(se encadeado).

Se prestar atenção, notará que há claramente duas estruturas condicio- nas compostas. Uma mais externa (1) e a outra dentro do espaço reservado às instruções que serão executadas no bloco do senão (2).

Se você comparou com algoritmo da aula anterior, já deve ter notado uma diferença na execução: enquanto no primeiro algoritmo, com três estruturas de  se simples, mesmo que os valores fossem iguais, o que

seria verificado no primeiro teste, seriam realizados os outros dois testes. Ou seja, independentemente da execução do conteúdo de um dos des- vios condicionais, os outros dois teriam seus testes executados, mesmo sabendo que o resultado para eles seria falso, o que representa desperdício

de recursos computacionais e conseqüente aumento do tempo de execu- ção do algoritmo.

Em contrapartida, no exemplo que utiliza a estrutura encadeada, assim que um dos três testes seja validado, a estrutura condicional encadeada encerra ignorando os demais. Assim, na melhor das hipóteses, só será realizado um teste e, na pior, serão realizados dois testes; enquanto que, com o uso de três estruturas simples, teríamos sempre a realização dos três testes.

Vejamos outro exemplo. Suponhamos que temos de desenvolver um algoritmo para classificar um grupo de atletas para uma competição de nata- ção. Assim os competidores teriam de ser classificados conforme sua faixa etária, em diferentes categorias, conforme segue:

2 infantil I = de 5 a 7 anos 2 infantil II = de 8 a 10 anos 2  juvenil I = de 11 a 13 anos 2  juvenil II = de 14 a 17 anos

2 adulto = maiores de 18 anos (idade máxima para participar = 22 anos)

 A estrutura resultante do nosso exemplo é o que chamamos de estrutura de decisão encadeada homogênea, pois pode ser facilmente identificado, de forma visual, um padrão na sua construção.

 Analise bem o pseudocódigo, testando com diversos valores para a vari- ável idade, de forma a compreender a lógica e o funcionamento do mesmo.

Figura 2 Exemplo de desvio condicional encadeado homogêneo.

 Assim como temos as estruturas de decisão encadeadas homogêneas, existem também as heterogêneas – estruturas nas quais não é possível visuali- zar um padrão. Veja o exemplo a seguir.

2 Problema : implementar um algoritmo que solicite ao usuário a

idade, o sexo e se tem ou não disponibilidade para viajar a traba- lho. Inicialmente, o algoritmo deve testar se a pessoa tem mais de dezoito anos. Em caso positivo, se a pessoa for do sexo masculino, deverá exibir uma informação na tela avisando que a pessoa será alocada na filial 1 e, se tiver disponibilidade para viajar, trabalhará como representante comercial. Se não tiver disponibilidade para

viajar, deve ser informada sua função como assistente administra- tivo. Se for do sexo feminino e com disponibilidade para viajar, o algoritmo deve informar a função de gerente de divulgação. Se não apresentar disponibilidade para viagens, atuará como assistente administrativo. No caso dos homens, se forem casados, só poderão atuar como representantes comerciais regionalmente. Caso contrá- rio, poderão atuar nacionalmente. Caso a idade seja inferior a 18 anos e superior ou igual a 14 anos, a pessoa só estará apta para o programa de estágio em vendas (para o sexo masculino) ou em divulgação (para o sexo feminino). No caso do estagiário de sexo masculino, eventualmente poderá realizar viagens regionais.

Muita informação junta? Vá se acostumando! Um dos requisitos para um bom analista e desenvolvedor é a boa capacidade de interpretação. Isso é fundamental para poder realizar a implementação de um sistema da forma adequada.

Inicialmente, você deve identificar os dados de entrada necessários para o funcionamento do algoritmo. Nesse caso são a idade, o sexo, a disponibilidade para viajar e o estado civil. Ou seja, uma variável do tipo inteiro que denomina- remos de idade e três variáveis do tipo texto, que nomearemos como sexo, disp e estCiv .

 Agora basta seguir as instruções dadas no texto do problema, atentando para cumprir todos os requisitos necessários. No final, você deverá ter alguma coisa semelhante com o pseudocódigo a seguir, o qual, como você poderá observar, não apresenta um padrão visual. Isso o caracteriza como uma estru- tura de decisão encadeada heterogênea.

Figura 3 Exemplo de desvio condicional encadeado heterogêneo. // Exemplo 12 – Estrutura heterogênea

inicio

texto sexo , disp , estciv inteiro idade

escrever “Digite a idade: ” ler idade

escrever “Digite o sexo (M/F): ” ler sexo

escrever “Tem disponibilidade para viajar (S/N): ” ler disp

escrever “Digite o estado civil(C/S): ” ler estciv

se idade >= 18 entao

se sexo = “M” ou sexo = “m” entao escrever “\nAlocação: Filial I” se disp = “s” ou disp = “S” entao

escrever “\nFunção: representante comercial” se estciv = “s” ou estciv = “S” entao

escrever “\nAtuação: Regional” senao

escrever “\nAtuação: Nacional”  fmse

senao

escrever “\nFunção: Assistente administrativo”  fmse

senao

escrever “\nAlocação: Filial II”

Se disp = “s” ou disp = “S” entao

escrever “\nFunção: Gerente de divulgação” senao

escrever “\nFunção: Assistente administrativo”  fmse

 fmse senao

se idade >= 14 entao

se sexo = “M” ou sexo = “m” entao

escrever “\nFunção: Estagiário de vendas” se disp = “s” ou disp = “S” entao

escrever “\nPoderá realizar viagens regionais”  fmse

senao

escrever “\nFunção: Estagiária de divulgação”  fmse

senao

escrever “\nIdade insufciente para ingresso”  fmse

 fmse  fm 

Para concluir esta aula, temos ainda mais uma estrutura bastante útil em determinadas situações. Trata-se da estrutura de decisão de múltipla escolha. Segundo Forbellone e Eberspächer (2005), quando temos um conjunto de elementos discretos que necessita ser testado e ações diferentes são associadas a esses valores, estamos diante de uma estrutura de decisão encadeada homogê- nea do tipo se-senao-se. Como essa situação é bastante comum no desenvol-

vimento de algoritmos que dependem de alternativas (desvios condicionais), usa-se uma estrutura específica para esses casos, a seleção de múltipla escolha.

 A sintaxe dessa estrutura pode ser representada da seguinte forma:

escolhe <expressão_0>

caso <Expressão_1o>,. . .,<Expressão_1n>: <instruções>

. . . .

caso <Expressão_no>,. . .,<Expressão_nn>,:

  <instruções>

  defeito:

<instruções>

Veja um exemplo simples no Portugol.

Figura 4 Exemplo de desvio condicional com seleção de múltipla escolha.

Nesse exemplo, você pode verificar que, com base no conteúdo da variável sexo, a estrutura de seleção com múltiplas escolhas irá comparando o conteúdo da variável com o valor apresentado nas opções (caso). Se combinar com alguns dos valores, será executado o respectivo bloco de comandos. Se não houver nenhuma equivalência entre as opções apresentadas, será executado o bloco de comandos padrão (default), no Portugol denominado defeito.

Saiba mais

No desvio condicional com seleção de múltipla escolha, a opção default  (padrão) é opcional. Ou seja, não é obrig-

atória na estrutura da função. Se utilizada, sempre que nenhum dos casos for satisfeito, a estrutura escolhe...caso  executará

as instruções padrão (defeito). Se não existir essa condição e não for satisfeito nenhum dos casos da estrutura, o pseudocó- digo sairá dela sem realizar nenhuma das ações e continuará a execução normal do restante do pseudocódigo.

Vejamos mais um exemplo. Já vimos uma estrutura condicional enca- deada homogênea, quando implementamos o pseudocódigo para distribuir atletas em determinadas categorias, para uma competição de natação. Lem- bra? Pois bem... Implementemos, agora, a solução para esse mesmo problema, só que dessa vez utilizando a estrutura com múltiplas escolhas.

Figura 5 Exemplo de desvio condicional com seleção de múltipla escolha. // Exemplo 14 – Competição de Natação

inicio

inteiro idade

escrever “Informe a idade: ” ler idade

escolhe idade

caso 18 , 19 , 20 , 21 , 22: escrever “Adulto”

caso 14 , 15 , 16 , 17:

escrever “Juvenil II” caso 11 , 12 , 13:

escrever “Juvenil I” caso 8 , 9 , 10:

escrever “Infantil II” caso 5 , 6 , 7:

escrever “Infantil I” defeito :

se idade > 22 entao

escrever “Idade acima da permitida” senao

escrever “idade abaixo da permitida”  fmse

 fmescolhe  fm 

 Analise esse pseudocódigo, comparando com o implementado utili- zando a estrutura de decisão encadeada homogênea vista anteriormente. Repare que os dois pseudocódigos possuem a mesma funcionalidade, apesar de ter estruturas tão diferentes.

Efetue testes com o pseudocódigo, alterando os valores iniciais da variável

idade, de forma a compreender perfeitamente seu funcionamento. Com isso

encerramos mais uma aula, finalizando a apresentação das estruturas de seleção.

Síntese da aula 

Esta aula apresentou detalhadamente a estrutura de seleção encadeada (ou aninhada), mostrando sua flexibilidade, a ponto de permitir a implemen- tação de complexas estruturas de decisão.

Vimos que, a partir da conjugação de estruturas mais simples, como a da seleção simples e da seleção composta, é possível incrementar o poderio lógico de um algoritmo para a solução de diversos tipos de problemas do mundo real.

 Após a estrutura de decisão encadeada, foi apresentada a estrutura de decisão com múltiplas escolhas, que permite substituir estruturas de decisão encadeadas do tipo homogêneo, possibilitando uma fácil implementação e maior clareza para a compreensão do algoritmo.

Atividades

1. Durante a construção de algoritmos, são comuns situações em que uma instrução, ou conjunto de instruções, deva ser executada somente para uma determinada situação. Em outros casos mais complexos, dependendo de uma condição previamente estabelecida, caso essa seja verdadeira, um conjunto de comandos deverá ser executado e, caso seja falsa, outro conjunto será executado. Sobre desvio condicional, analise o algoritmo a seguir.

1 início

2 texto nome

3 inteiro sexo, idade

4 escrever “Entre com seus dados\n” 5 escrever “Nome: \n”

7 escrever “Sexo:\n<1> Masculino\n<2> Feminino” 8 ler sexo

9 escrever “Idade:\n” 10 ler idade

11 se sexo=/=1 e sexo =/=2 entao

12 escrever “Sexo indefinido!\n” 13 senao

14 se idade>0 entao

15 se sexo = 1 e idade<18 entao

16 escrever “\Bem vindo”,nome,”\nVocê é menor de idade 17 senao

18 se sexo =1 entao

19 escrever \Bem vindo”,nome,”\nVocê é maior de idade 20 senao

21 se sexo = 2 e idade<18 entao

22 escrever “\Bem vinda”,nome,”\nVocê é menor de idade.”

23 senao

24 escrever “\Bem vinda”,nome,”\nVocê é maior de idade.” 25 fimSe

26 fimSe 27 fimSe 28 senao

29 escrever “Você deve entrar com idade maior que zero!” 30 fimSe

31 fimSe 32 fim

Note que as linhas 11 e 15 estão em destaque. Isso porque essas linhas podem ser substituídas por outros testes sem mudar o funcionamento do algoritmo. Nesse sentido, assinale a única alternativa em que trocando-se as linhas destacadas do algoritmo pelas indicadas na alternativa mantém o algoritmo inalterado.

LINHA 15: se sexo = 1 e idade > 0 e idade < 18 entao b) LINHA 11: se sexo < 1 ou sexo > 2 entao

LINHA 15: se sexo =/= 2 e idade > 0 ou idade < 18 entao c) LINHA 11: se sexo < 1 e sexo > 2 entao

LINHA 15: se sexo = 1 e idade > 0 ou idade < 18 entao d) LINHA 11: se sexo < 1 ou sexo > 2 entao

LINHA 15: se sexo =/= 2 e idade > 0 e idade < 18 entao

2. Analise o algoritmo a seguir, que tenta descrever o funcionamento de uma calculadora e, em seguida, leia as afirmativas e assinale a alternativa correta.

inicio

real res, n1, n2 texto opcao

escrever “\nDigite a operacao desejada:” ler opcao

escrever “Digite o primeiro operando: ler n1

esrever “Digite o segundo operando:” ler n2 escolhe opcao caso “+”: escrever n1+n2 caso “–”: escrever n1–n2 caso “*”: escrever n1*n2 caso “/”: escrever n1/n2 defeito:

escrever “Opcção inválida.” fimescolhe

I. O algoritmo calcula as quatro operações aritméticas básicas (adição, subtração, multiplicação e divisão), desde que o usuário entre com uma operação válida (+, –, *, /) e dois números reais em seguida.

II. O algoritmo sempre escreve “Opção inválida” ao terminar sua execução.

III. O algoritmo não executará, devido às expressões dos CASOS serem textos ao invés de inteiros.

IV. Sem usar a variávelres, o algoritmo não realiza a operação aritmética.

a) Somente I está correta.

b) Somente I, II e III estão corretas. c) Somente I e II estão incorretas. d) Somente III e IV estão incorretas.

3. Implemente um algoritmo que solicite a entrada de um número inteiro e:

2 caso esse número seja maior do que zero, deve ser avaliado se ele

é par, em caso positivo, algoritmo deve informar isso e calcular e exibir o quadrado do número. Se o número for ímpar, essa situação deve ser informada, e o algoritmo deve incrementar o conteúdo da variável em uma unidade, exibindo o resultado;

2 caso o número seja igual a zero, deve ser emitida uma mensagem

informando que o valor digitado é nulo; e, se o valor for negativo, isso deve ser informado ao usuário.

4. Justifique o motivo pelo qual não é viável a utilização de estrutura condicional com múltiplas escolhas para resolver problemas que, com estrutura de seleção encadeada, resultariam em um tipo de estrutura heterogênea.

Os objetivos desta aula foram alcançados se você tiver acertado as ati- vidades propostas. Para o objetivo de compreender a aplicabilidade das estruturas de seleção encadeadas, propusemos as atividades um e três; para o objetivo de entender a lógica para implementação de uma estru- tura de seleção com múltipla escolha, propusemos as atividades dois e quatro. Verifique os resultados.

Na   atividade um, a resposta é a alternativa (d). O que se procura

nessa atividade é encontrar outros dois testes condicionais que podem substituir os expressos nas linhas 11 (se sexo=/=1 e sexo=/= 2 entao) e 15 (se sexo=1 e idade<18 entao), sem mudar o funcionamento do algoritmo.  A alternativa (a) apresenta como possibilidade para a linha 11 “se sexo < 1

e sexo > 2 entao”, o que é contraditório, afinal só será verdadeiro esse teste quando sexo for menor que 1 e maior e 2, contudo não existe um número que possa ser menor que 1 e maior que 2 ao mesmo tempo e, assim, não expressa a idéia original da linha 11 (que pode ser lida como: se sexo dife- rente de 1 e de 2 então), o que invalida essa alternativa.

Na alternativa (b), a opção para a linha 11 (se sexo < 1 ou sexo > 2

entao) é válida porque a variável sexo é do tipo inteiro e, sendo assim, não pode assumir valores no intervalo numérico ]1,2[. Nesse caso, só entrará se sexo for diferente de 1 e 2. Contudo a opção da linha 15 (se sexo =/= 2 e idade > 0 ou idade < 18 entao) na alternativa (b) é inválida porque o teste idade > 0 ou idade < 18 irá aceitar qualquer valor inteiro. Afinal, 20, por exemplo, é maior que 0 (verdadeiro para o primeiro teste condicional) e não é menor que 18 (falso para o segundo teste condicional). Com isso, verificando-se na tabela dos operadores lógicos da aula dois, vê-se que VERDADEIRO ou FALSO é igual a VERDADEIRO. Contudo, o valor 20 é falso no teste condicional original da linha 15. Na alternativa (c), a

opção para a linha 11 é inválida como vimos na alternativa (a). A opção da linha 15 da alternativa (c) é inválida também pelos mesmos motivos expostos na opção da linha 15 da alternativa (b).

Na alternativa (d), já sabemos que a opção da linha 11 é válida, como

argumentado na explicação da opção da linha 11 da alternativa (b). Na opção da linha 15 da alternativa (d), a primeira parte (sexo=/=2) está cor- reta, porque, repare nas linhas 11 e 13, só executará a linha 15 se o valor de sexo for igual a 1 ou 2. Com isso, se o teste verifica se sexo é diferente de 2, ele só pode ser 1 (o que confere com a original). A segunda parte também é válida porque na linha 14 verifica se idade é maior que 0 (zero) fazendo executar a linha 15 somente se idade for maior que 0 (zero).  Assim idade > 0 é sempre verdadeiro, dependendo somente de idade < 18. Verificando na tabela dos operadores lógicos, o operador E só é ver- dadeiro quando se tem VERDADEIRO e VERDADEIRO. Resumindo,

só entrará se for satisfeita se a condição idade < 18 for verdadeira, o que confere com a original.

Na atividade dois, a resposta correta é a alternativa (a). Nessa ativi-

dade, você encontra um algoritmo que utiliza a estrutura de seleção múlti- pla escolhe...caso. O algoritmo executará determinada operação aritmética

de acordo com a opção digitada pelo usuário. A assertiva I diz que o algo- ritmo executará alguma expressão aritmética, somente se o usuário digitar no momento que lhe for sugerido uma das operações: +, –, * ou /. Depois de ler dois números reais digitados pelo usuário, o algoritmo imprimirá o resultado da operação em um dos casos definidos na estrutura de seleção múltipla. Já se no momento da leitura da variável opção o usuário digitar uma operação que não seja a definida anteriormente, o algoritmo impri- mirá na tela: “Opção inválida”. Portanto essa assertiva é verdadeira . Com

relação à assertiva II, conforme definido na estrutura defeito  da seleção

múltipla, a mesma só será executada caso nenhuma das definições de caso

seja satisfeita.

Portanto, ao entrar com uma operação aritmética válida (+, –, * ou /), o algoritmo não apresentará a mensagem “Opção inválida”, pois o mesmo não será executado. Devido a essa característica do defeito, a assertiva é falsa . Com relação à assertiva III, diferente das estruturas discutidas ante-

riormente, na estrutura escolhe...caso o teste condicional não retorna um

valor lógico, mas sim um valor inteiro, real ou caractere. Podemos observar que o algoritmo não apresentará erros e executará normalmente, mesmo comparando a variável “opcao” com os caracteres +,–, * e /.

Portanto a assertiva é falsa, pois a mesma afirma que o algoritmo não executará devido às expressões casos não serem inteiras. Finalmente, com relação à assertiva IV, a variável “res” não foi utilizada em nenhum momento no algoritmo, ela foi apenas declarada no início do algoritmo. Portanto, se retirarmos essa declaração, o funcionamento do algoritmo não será afetado de forma alguma. Podemos então definir que a assertiva é falsa ,

pois a mesma tenta afirmar que sem a variável em questão o algoritmo não realiza a operação aritmética.

 A atividade três resulta em um pseudocódigo semelhante ao seguinte, o

Em resposta à atividade quatro, pode-se concluir que a estrutura de sele- ção com múltiplas opções não é viável, em geral, para representação de estru- turas encadeadas heterogêneas por não apresentarem um padrão lógico linear, como é o caso da atividade dois. Para representação mediante uma estrutura de múltipla escolha (escolhe...caso), devemos ter um conjunto de elementos discretos que necessita ser testado, para o qual ações diferentes devem ser associadas a esses elementos.

Referência 

FORBELLONE, André Luiz Villar; EBERSPÄCHER, Henri Frederico.

Lógica de programação: a construção de algoritmos e estruturas de dados.

Na próxima aula 

Na aula seguinte, conheceremos mais uma poderosa estrutura lógica de programação que permitirá executarmos diversas vezes um determinado tre- cho do pseudocódigo. É a estrutura de repetição com teste no início.

Como sempre, não custa lembrar, recomendamos que você revise os conceitos e técnicas vistos até agora, e realize uma leitura prévia do conteúdo da próxima aula.

77

No documento Livro Logica Programacao b (páginas 71-88)