• Nenhum resultado encontrado

Lógica de Programação e Algoritmos

N/A
N/A
Protected

Academic year: 2021

Share "Lógica de Programação e Algoritmos"

Copied!
9
0
0

Texto

(1)

Lógica de Programação e Algoritmos

Professores autores

Nélio Alessandro Azevedo Cacho Keivilany Janielle de Lima Coelho

Aula 8 – Estruturas de decisão composta e de múltipla escolha

se... senão... fim se

escolha...caso

Na aula 7 (Estruturas de decisão simples SE... FIM SE), introduzimos as estruturas de decisão. Você viu que, para encontrar a solução de certos problemas, os algoritmos irão se deparar, algumas vezes, com a necessidade de tomar decisões. E essas decisões são tomadas com base em condições específicas pré-estabelecidas. Essa necessidade acaba por estabelecer desvios na execução do algoritmo.

Também na aula 7, classificamos as estruturas de decisão em simples, encadeadas e compostas. Você conheceu a estrutura simples e viu exemplos básicos de estruturas encadeadas.

Nesta aula, encerraremos o estudo das estruturas de decisão, contemplando a estrutura de decisão composta e as decisões de múltipla escolha. Você conhecerá um novo comando, que indicará um segundo caminho, na estrutura de decisão, quando a condição pré-estabelecida não for atendida: o comando SENÃO, que será utilizado na estrutura composta. Além disso, você verá que, em alguns casos, dentre várias opções de comandos, a decisão por executar um desses comandos exclui a possibilidade de executar os demais. Quando isso ocorre, o mais interessante é utilizar as estruturas de decisão de múltipla escolha. Você conhecerá, portanto, o comando ESCOLHA, em que o usuário seleciona uma dentre várias opções apresentadas, para determinar o final da execução do algoritmo.

Objetivos

Ao final desta aula, você será capaz de:

Identificar a estrutura de decisão composta e seus comandos, reconhecendo sua sintaxe. Construir algoritmos completos utilizando essa estrutura.

Identificar a estrutura de decisão de múltipla escolha e seus comandos, reconhecendo sua sintaxe. Construir algoritmos completos utilizando a estrutura de múltipla escolha.

Estrutura de decisão composta

Você já sabe que a estrutura de decisão simples executa um comando ou bloco de comandos se uma determinada condição for atendida. Se a condição não for atendida, a estrutura é finalizada sem executar comandos.

A estrutura composta segue o mesmo princípio, com a diferença de que, quando a condição não é satisfeita, há um desvio para outro comando ou bloco de comandos.

A estrutura de decisão composta executa um comando ou bloco de comandos quando uma condição é satisfeita e outro comando ou bloco de comandos quando a condição não é satisfeita.

A partir desse momento, você vai começar a utilizar, além do SE, a palavra reservada SENÃO. Vamos ver, mais uma vez, o algoritmo sobre o que fazer no sábado pela manhã:

INICIO acordar

SE fizer sol ENTÃO Ir à praia SENÃO

Ler um livro FIM SE

FIM

Veja que, dessa vez, tratamos de uma estrutura composta. Se a condição (fazer sol) é satisfeita, eu vou à praia. Caso contrário, faço outra coisa: leio um livro. Ou seja, a condição não sendo satisfeita, logo, eu executo outra atividade.

A estrutura de decisão composta obedece à seguinte sintaxe:

PSEUDOCÓDIGO FLUXOGRAMA

Inicio

Se <condição> então Comando 1 Comando 2

(2)

. . . Comando n Senao Comando 1 Comando 2 . . . Comando n fimSe Fim

Observe que, da mesma forma que na estrutura simples, o algoritmo executa um comando ou bloco de comandos, de acordo com a satisfação de uma condição. Essa condição, como foi exposto na aula 7, é representada por uma expressão lógica.

Porém, de forma diferente da estrutura simples, a estrutura composta executa outro comando ou bloco de comandos, quando a condição não é satisfeita.

Sabendo disso, vamos tornar, agora, o algoritmo da média um pouco mais interessante? Veja:

ALGORITMO PARA CALCULAR MÉDIA ARITMÉTICA DE UM ALUNO E DIZER SE O MESMO FOI APROVADO OU NÃO

algoritmo "calcula média com desvio" var

nota1:real nota2:real media:real inicio

escreval ("Digite o valor da primeira nota:") leia (nota1)

escreval ("Digite o valor da segunda nota:") leia (nota2)

media <- (nota1 + nota2)/2 escreval ("A média é =",media)

se media >= 7 entao

escreval ("Aluno aprovado!") //instrução com condição verdadeira senao

escreval ("Aluno não aprovado!") //instrução com condição falsa fimse

fimalgoritmo

Agora, o algoritmo pode executar uma instrução quando a condição (nota >=7) for satisfeita e outra instrução quando a condição não for satisfeita.

Atividade 1

1. O que diferencia uma estrutura de decisão composta da estrutura simples que conhecemos na aula anterior?

2. Qual a sintaxe dessa estrutura?

3. Elabore um algoritmo que leia um número e informe se ele é maior ou menor que zero.

4. Elabore um algoritmo que leia a idade de um desportista e informe se ele se classifica ou não na categoria Juvenil (11 a 17 anos).

Estrutura de decisão composta encadeada

Da mesma forma que na estrutura simples, na estrutura composta também podemos utilizar SEs encadeados. Você sabe que isso ocorre quando há várias condições a serem testadas.

(3)

Situação 01: Situação 02: INICIO

acordar

INICIO acordar

SE fizer sol ENTÃO Ir à praia

SE fizer sol ENTÃO Ir à praia

SENÃO SENÃO

SE estiver nublado ENTÃO

Dar uma volta no parque SE tiver dinheiro ENTÃO Ir ao cinema SENÃO

Fique em casa e leia um livro.

FIM SE SENÃO

Está chovendo.

Fique em casa e leia um livro.

FIM SE

FIM SE FIM SE

FIM FIM

É fácil perceber que, em ambas as situações, há a utilização de estruturas encadeadas. Mas, qual a diferença entre as duas?

Na Situação 01, temos várias estruturas separadas, com condições que são mutuamente exclusivas, ou seja, se uma das condições for verdadeira, todas as outras são falsas. Se não fizer sol, nem estiver nublado, com certeza, estará chovendo. Há uma ação diferente para cada condição possível (ir à praia, dar uma volta no parque ou ficar em casa e ler um livro).

Na Situação 02, veja que há uma estrutura composta inserida em outra estrutura composta. Se fizer sol, eu vou à praia. Se não fizer sol, não irei à praia, mas me restam duas opções possíveis: ir ao cinema, se tiver dinheiro, ou ficar em casa e ler um livro, caso não tenha dinheiro.

Com base nesses exemplos, podemos afirmar que a sintaxe de uma estrutura composta encadeada pode ser definida das duas formas a seguir:

Com condições mutuamente exclusivas Com uma estrutura composta inserida emoutra estrutura composta

Inicio inicio se <condição1> então <comandos1> se <condição> então <comandos> senão senão se <condição2> então

<comandos2> se <condição> então <comandos> senão

(4)

<comandos> fimSe senão se<condiçãon> então <comandosn> senão fimSe <comandos> fim fimSe fimSe fimSe fim

Para ilustrar melhor, vamos incrementar um pouco mais o algoritmo da média:

algoritmo "calcula média com desvio composto encadeado" var

nota1:real nota2:real media:real inicio

escreval ("Digite o valor da primeira nota:") leia (nota1)

escreval ("Digite o valor da segunda nota:") leia (nota2)

media <- (nota1 + nota2)/2 escreval ("A média é =",media)

se media >= 7 entao

escreval ("Aluno aprovado! Parabéns!") senao

se (media<7) e (media>=4) entao

escreval ("Aluno em recuperação! Estude")

senao

escreval ("Aluno Reprovado!") fimse

fimse fimalgoritmo

Veja que, no exemplo, temos a situação de exclusão mútua. Se a média não for maior que 7.0, nem está entre 4.0 e 7.0, só pode ser menor que 4.0. Nesse caso, ou o aluno é aprovado, ou fica em recuperação, ou é reprovado.

Vejamos, agora, um exemplo de decisão composta inserida em outra decisão composta.

Em uma empresa, os funcionários que forem solteiros não receberão bônus natalinos. Os funcionários que não forem solteiros e tiverem filhos receberão um bônus de 20% de seu salário-base (ou seja, receberão o valor de seu salário acrescido de 20%). Os funcionários que não forem solteiros e não tiverem filhos receberão um bônus de 15% de seu salário-base (ou seja, receberão o valor de seu salário mais 15%). Veja o algoritmo que calcula o bônus dos funcionários:

algoritmo "Bonus natalino" var

salario:real

estado_civil:caracter tem_filhos:caracter

(5)

inicio

escreval ("Digite o valor do salario: ") leia (salario)

escreval ("É solteiro? S ou N?") leia (estado_civil)

se (estado_civil = "S") ou (estado_civil = "s") entao escreval ("Você não tem direito a bônus.") escreval ("Seu salario é: R$ ",salario) senao

escreval ("Tem filhos? S ou N?") leia (tem_filhos)

se (tem_filhos = "S") ou (tem_filhos = "s") entao salario <- salario * 1.20

escreval ("Seu salário natalino é: R$ ",salario) senao

salario <- salario * 1.15

escreval ("Seu salário natalino é: R$ ",salario) fimse

fimse fimalgoritmo

No algoritmo que acabamos de escrever, perceba que, se um funcionário não é solteiro, ele pode ser casado com filhos ou sem filhos. Ou seja, temos uma estrutura de decisão composta inserida em outra estrutura de decisão composta.

Atividade 2

1. Quais as possíveis sintaxes da estrutura de decisão composta encadeada?

2. Quando é utilizada uma ou outra?

3. Apresente um exemplo de algoritmo para cada uma das situações.

4. Construa um algoritmo que leia três números e diga qual o maior.

5. Escreva um algoritmo que leia os tamanhos dos lados de um triângulo e diga se o triângulo é isósceles, equilátero ou escaleno. Um triângulo é isósceles, se dois de seus lados tiverem tamanhos iguais. É equilátero se todos os seus lados forem iguais. E é escaleno e todos os seus lados forem diferentes.

6. Escreva um algoritmo que receba a altura e o peso de uma pessoa e calcule seu IMC (peso/altura²). Se for menor que 25, escrever “Está no peso ideal”. Senão, se tiver menos de 40 anos de idade, determinar aulas de aeróbica, se tiver mais de 40 anos, determinar aulas de hidroginástica.

Estruturas de decisão de múltipla escolha

Nas estruturas de decisão que vimos na aula 7, um comando ou bloco de comandos é executado de acordo com uma ou mais condições. Você viu que, quando a condição não é satisfeita, a estrutura pode encerrar (estrutura de decisão simples) ou seguir outro caminho (estrutura composta).

Existem problemas, porém, em que uma expressão (ou uma variável) pode assumir diversos valores e que, para cada valor assumido, comandos diferentes são executados. Ou seja, os valores são mutuamente exclusivos.

Para essas situações, utilizamos as estruturas de múltipla escolha. Imagine que você quer decidir o que vai fazer no final de semana. Veja:

VAR

opcao : Inteiro INICIO

escreval (“Digite ‘1’, para praia”) escreval (“Digite ‘2’ para cinema”) escreval (Digite ‘3’ para churrasco”) leia opcao

ESCOLHA opcao CASO 1

escreva (“Sair de casa às 8 horas da manhã.”) CASO 2

escreva (“Sair de casa às 2 horas da tarde.”) CASO 3

escreva (“Sair de casa ao meio-dia.”) OUTROCASO //caso escolha opção diferente das anteriores

escreva (“Já que não optou, fique em casa mesmo e leia um livro.”) FIMESCOLHA

(6)

Ao tentar decidir o que fazer no fim de semana, você tinha três opções: ir à praia, ir ao cinema ou ir a um churrasco. Para cada opção, há um comando diferente (nesse caso, um horário diferente para sair de casa). Isso mostra que os comandos são como dissemos a pouco, mutuamente exclusivos.

Veja que, caso você não escolha nenhuma das opções anteriores, há um comando definido por padrão (que, nesse caso, é ficar em casa e ler um livro).

A sintaxe da estrutura de múltipla escolha é a seguinte:

PSEUDOCÓDIGO FLUXOGRAMA Inicio escolha <opção> caso <opção 1> <comandos1> caso <opcao2> <comandos2> ... caso <opção n> <comandosn> outrocaso <comandos_padrão> fimescolha Fim

Atividade 3

1. Vamos praticar? Para compreender o funcionamento da estrutura de múltipla escolha, escreva o algoritmo do exemplo que acabamos de utilizar (do fim de semana) no VisuAlg e execute. Lembre-se de adequar o algoritmo, se necessário, de acordo com a sintaxe.

Exercício Resolvido 1

Escreva um algoritmo que diga se uma capital brasileira é da região Nordeste ou Sudeste, de acordo com a opção digitada pelo usuário. Em caso do usuário digitar o nome de uma capital que não esteja entre as opções, escreva que a capital é de outra região.

Resolução:

algoritmo "capitais"

//o primeiro passo é declarar uma variável do tipo literal para armazenar o nome da capital: var

capital : literal inicio

// solicitar que o usuário digite o nome da capital:

escreval ("Entre com o nome de uma capital do Brasil: ") // receber o valor digitado:

leia (capital)

//inicio da estrutura de múltipla escolha. O algoritmo seleciona o nome da capital digitado: escolha capital

//o algoritmo compara o nome digitado com as opções existentes (para capitais da região nordeste):

caso "Natal", "João Pessoa", "Salvador", "Fortaleza", "São Luís", "Maceió", "Aracaju","Recife", "Teresina"

// se o resultado da comparação (teste de igualdade) for verdadeiro para uma das capitais acima: escreval ("É uma capital da Região Nordeste.")

//se a comparação anterior não for verdadeira para nenhuma das capitais nordestinas, o algoritmo compara o nome digitado com as opções existentes no outro grupo (de capitais do Sudeste do País):

caso "São Paulo", "Rio de Janeiro", "Belo Horizonte", "Vitória" // se o resultado da comparação (teste de igualdade) for verdadeiro para um deles:

(7)

escreval ("É uma capital da Região Sudeste.")

//caso o teste de igualdade das opções anteriores não tiver resultado verdadeiro (a capital digitada não é nenhuma das existentes), a solução default (padrão) é selecionada:

outrocaso

escreval ("É de outra região.") //fim da estrutura de múltipla escolha: fimescolha

fimalgoritmo

Observação 1: a palavra reservada outrocaso pode ser entendida como um desvio, em caso do usuário escolher uma opção que não esteja entre as opções existentes. Sua utilização é opcional. Execute o algoritmo no VisuAlg.

Observação 2: para uma melhor fixação, evite copiar e colar o texto da aula. Prefira reescrever o algoritmo no VisuAlg. Dessa forma, você ficará mais familiarizado com a sintaxe e, logo, sua habilidade em utilizar a estrutura será melhorada.

Decisão de múltipla escolha x decisão encadeada

Se você compreendeu tudo o que vimos até agora sobre as estruturas de decisão, pode estar se perguntando: “Mas, essa estrutura de múltipla escolha não é a mesma coisa que uma estrutura de decisão composta encadeada?”

De fato, elas podem ser similares. Os dois algoritmos abaixo fazem a mesma coisa:

DECISÃO ENCADEADA MÚLTIPLA ESCOLHA

Var opcao:inteiro inicio leia (opcao) se opcao=1 entao escreval ("praia") senao se opcao=2 entao escreval ("cinema") senao se opcao=3 entao escreval ("churrasco") senao

escreval ("Fique em casa") fimse fimse fimse fimalgoritmo Var opcao:inteiro inicio leia (opcao) escolha opcao caso 1 escreval ("praia") caso 2 escreval ("cinema") caso 3 escreval ("churrasco") outrocaso

escreval ("fique em casa") fimescolha

fimalgoritmo

Execute os dois algoritmos no VisuAlg e veja que, em ambos os casos, a saída é a mesma.

Por que, então, utilizar a estrutura de múltipla escolha, se podemos utilizar a decisão encadeada que aprendemos até aqui?

Cada palavra reservada que utilizamos em um algoritmo representa um comando que o programa vai executar, desde a inicialização do algoritmo, passando pelos comandos básicos (as instruções primitivas) e os comandos de cada estrutura de controle, até a finalização do algoritmo. Tudo isso são instruções que passamos para que o computador execute.

Sabendo disso, podemos ver que o algoritmo que utiliza a decisão encadeada tem um número maior de instruções. Isso demanda uma quantidade maior de memória e processamento do computador para executar o algoritmo, o que afeta diretamente o desempenho. Seria como se você precisasse caminhar de um ponto a outro, tendo duas opções de caminho: em uma, você segue em linha reta e, na outra, você vai em zigue-zague. Em qual dessas opções você acha que chegaria mais rápido? Em qual chegaria menos cansado?

Em um algoritmo simples, provavelmente, você não perceberá a diferença. Mas, em programas maiores e mais complexos, fica evidente a queda no desempenho. Por isso, é mais conveniente, nesses casos (de seleção mutuamente exclusiva), utilizar a estrutura de múltipla escolha.

Há, também, outra diferença básica entre as duas estruturas, que pode determinar quando utilizar uma ou outra:

DECISÃO ENCADEADA MÚLTIPLA ESCOLHA

Pode testar mais de um valor ao mesmo tempo. Ou seja, podem ser utilizadas expressões relacionais.

Só pode testar igualdade e só testa um valor por vez, por isso, não pode utilizar expressões lógicas ou relacionais.

(8)

1. Escreva um algoritmo que leia o número equivalente a um mês do ano e diga se é do primeiro, segundo ou terceiro bimestre. Se não for de nenhum, exiba a mensagem: “É do segundo semestre.”

2. Escreva um algoritmo que leia o número equivalente a um mês do ano e diga o número de dias do mês correspondente. Exiba a mensagem “valor inválido”, se o número digitado não corresponder a nenhum mês (1 a 12).

Resumo

Nesta aula, você encerrou o estudo das estruturas de decisão. Você conheceu a estrutura de decisão composta e viu que essa estrutura se caracteriza pela existência de um caminho alternativo, caso a condição pré-estabelecida não tenha sido atendida. Você viu, também, que esse caminho alternativo é precedido pela palavra reservada SENÃO, na sintaxe da estrutura. Além disso, você conheceu exemplos de estruturas compostas encadeadas, viu a diferença entre estruturas com condições mutuamente exclusivas e estruturas de decisão compostas inseridas em outras decisões compostas. Além disso, você viu as estruturas de múltipla escolha, com o comando ESCOLHA. Você conheceu os comandos e a sintaxe dessa estrutura. Viu que os algoritmos escritos com essa estrutura poderiam utilizar, também, a estrutura de decisão composta encadeada. Viu, porém, que há diferenças importantes que podem determinar quando é mais conveniente utilizar uma ou outra.

Autoavaliação

1. Diferencie estruturas de decisão simples de estruturas de decisão compostas.

2. Explique as duas possíveis sintaxes da estrutura de decisão composta, diferenciando-as entre si.

3. Escreva um algoritmo que leia um número e diga se é múltiplo de 3.

4. Escreva um algoritmo que leia dois números e diga se o primeiro é divisível pelo segundo.

5. Escreva um algoritmo que leia um número e diga se é positivo, negativo ou nulo.

6. Escreva um algoritmo que leia um número e diga se ele é divisível por 5, por dois ou por nenhum deles.

7. Escreva um algoritmo que leia duas datas digitadas pelo usuário (três valores inteiros, primeiro o dia, depois o mês e depois o ano) e, em seguida, exiba a data mais recente.

8. Escreva um algoritmo que leia três números inteiros e os coloque em ordem crescente.

9. Escreva um algoritmo que leia três números inteiros e os coloque em ordem decrescente.

10. Escreva um algoritmo que leia o número equivalente a um mês do ano e diga se é do primeiro, segundo ou terceiro bimestre. Se não for de nenhum, exiba a mensagem: “É do segundo semestre.”

11. Escreva um algoritmo que receba a idade de uma pessoa e, caso seja maior de 15 anos, dizer que pode fazer musculação. Caso contrário, dizer que menores de 15 anos não podem fazer musculação e oferecer as opções de futebol, caso seja do sexo masculino, e ginástica, caso seja do sexo feminino.

12. Determine a sintaxe da estrutura de múltipla escolha.

13. Explique para que é usado o comando outrocaso. É obrigatório? Qual a importância desse comando?

14. Qual a estrutura de controle que pode ser considerada similar à estrutura de múltipla escolha?

15. Apresente um exemplo de algoritmo que possa ser resolvido com qualquer uma dessas duas estruturas.

16. Qual a principal diferença entre essas duas estruturas? Quando sabemos que é melhor utilizar uma ou outra?

17. Escreva um algoritmo que receba o código correspondente ao cargo de um funcionário de uma escola e seu salário atual e mostre o valor do novo salário, com aumento, conforme tabela abaixo:

Código do Cargo Cargo Aumento

1 Secretário 45%

2 Professor 35%

3 Tesoureiro 25%

4 Coordenador 15%

5 Diretor Não tem aumento

18. Você acabou de almoçar em um restaurante e quer uma bela sobremesa. O restaurante dispõe de um sistema informatizado em que, sem precisar chamar o garçom, você pode pedir a sobremesa através de um dispositivo portátil, que é entregue a cada cliente assim que ele entra no restaurante. Lá, existem as seguintes opções de sobremesa: 1- Mousse; 2- Sorvete; 3- MilkShake e 4- Sunday. Para pedir a sobremesa, você só precisa digitar o número desejado e aguardar. Escreva um algoritmo que mostre esse menu de sobremesas. Se a opção digitada não estiver entre os valores 1 e 4, exiba um alerta de erro e peça ao cliente que digite um valor válido.

19. Uma fábrica oferece às suas operárias um auxílio mensal além do salário. Para as casadas sem filhos, o auxilio mensal é de 15% do seu salário-base. Para as que têm filhos, casadas ou não, o auxílio é de 35% do salário-base. Para as solteiras sem filhos, não há auxílio extra. Faça um algoritmo que receba a opção (1, 2 ou 3) que determine em que categoria a funcionária se encontra, o valor do salário-base (igual para todas) e mostre o valor do salário com o auxílio.

Referências

ALMEIDA, Albert V. A. Estrutura de seleção. Disponível em: <http://allbert.com.br/ilp/Aula06-Estrutura_de_selecao.pdf> Acesso em: 28 nov. 2009.

(9)

BUFFONI, Salete. Apostila de algoritmo estruturado: curso de Sistemas de Informação. Rio de Janeiro: Faculdades Integradas Anglo-Americano, 2003. Disponível em: <http://www.dainf.ct.utfpr.edu.br/~pbueno/Arquivos/Algoritmos.pdf>. Acesso em: 22 nov. 2009.

COSTA, Yandre M. e G. da. Algoritmos e estrutura de dados: estruturas de seleção. Paraná: Universidade Estadual de Maringá, 2006. Disponível em: <http://www.din.uem.br/~yandre/FC/EST_SEL.pdf>. Acesso em: 28 jan. 2010.

SCHROEDER, Rebeca. Instruções primitivas e estruturas de controle. Joinville, SC: UDESC, 2008. Disponível em: <http://www.joinville.udesc.br/portal/professores/rebeca/materiais/alp_5.pdf>. Acesso em: 17 nov. 2009.

Referências

Documentos relacionados

Pretende-se igualmente que esta metodologia sirva para auxiliar a avaliação da qualidade do Projecto e em que medida as técnicas propostas se integram nos objectivos de

palavra ao Presidente, que procedeu à leitura do parecer da comissão avaliadora, composta 98.. pelos professores Roberto de Souza Salgado (Presidente – EEL),

As condições naturais, o tipo de colonização, a evolução das técnicas agrícolas adotadas e as políticas públicas aplicadas foram determinantes para o desenvolvimento

Trabalho de Conclusão de Curso apresentado ao curso de Agronomia, no Centro de Ciências Agrárias, da Universidade Federal de Santa Catarina, como requisito para

O objetivo deste estudo foi avaliar o comporta- mento clínico de lesões de dermatite digital bovina após tratamento cirúrgico, uso local e parenteral de oxitetraci- clina e passagem

A baixa taxa de desconto ao longo dos anos de produção do campo, para o cálculo da função objetivo, aliada a baixa produção de água que a locação de

Percebe-se que os informes financeiros Disponível, Controle de contas a receber e Controle de contas a pagar são disponibilizados a 100% dos gestores. No entanto, todos

Após a colheita, normalmente é necessário aguar- dar alguns dias, cerca de 10 a 15 dias dependendo da cultivar e das condições meteorológicas, para que a pele dos tubérculos continue