Algoritmos e Técnicas de Programação
Transcript of Algoritmos e Técnicas de Programação
![Page 1: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/1.jpg)
Estruturas Condicionais
Algoritmos e Técnicas de
Programação
Prof. Kleber Rezende
![Page 2: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/2.jpg)
Considerações Iniciais
Nos capítulos anteriores foram apresentados
alguns conceitos básicos sobre as estruturas
e comandos que são utilizados para construir
um algoritmo simples.
Como visto, podemos solicitar valores de
ENTRADA aos usuários do sistema utilizando
o comando LEIA, e podemos ainda enviar
valores de saída do sistema por meio do
comando ESCREVA.
![Page 3: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/3.jpg)
Considerações Iniciais
Entretanto, as possibilidades de
construção de algoritmos que temos até
o presente momento são bastante
limitadas, pois ainda não estamos aptos
a tomar decisões durante o tempo de
execução do algoritmo, ou até mesmo
de classificar determinados valores de
variáveis.
![Page 4: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/4.jpg)
Considerações Iniciais
Por exemplo, considere que precisamos desenvolver um algoritmo que classifique uma determinada pessoa entre MAIOR DE IDADE ou MENOR DE IDADE.
Para esse problema sabemos que precisamos avaliar a IDADE da pessoa, e que SE essa idade for maior (ou igual) que 18 anos a pessoa é considerada MAIOR DE IDADE.
Para resolver esse tipo de situação, onde um determi-nado valor é avaliado para, a partir do resultado dessa avaliação, executarmos alguma ação, utilizamos as ESTRUTURAS DE CONDIÇÃO.
![Page 5: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/5.jpg)
Estrutura de condição SE ENTAO
A principal estrutura de condição utiliza-
da é a SE ENTAO;
Ela é utilizada da seguinte forma:
SE <EXPRESSÃO LÓGICA> ENTAO
COMANDO
FIMSE
![Page 6: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/6.jpg)
Estrutura de condição SE ENTAO
Onde,
1) A EXPRESSÃO LÓGICA é uma expressão que deverá retornar um valor VERDADEIRO ou FALSO, e caso o resultado dessa EXPRESSÃO seja VERDADEIRO, será executado o COMANDO que está dentro da ESTRUTURA.
Alguns exemplos de expressões lógicas já foram vistos anteriormente, a seguir temos mais alguns exemplos:
18 > 20, cujo resultado será FALSO
45 = 45, cujo resultado será VERDADEIRO
MEDIA > 7, cujo resultado dependerá do valor da variável MEDIA
![Page 7: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/7.jpg)
Estrutura de condição SE ENTAO
Onde,
2) O COMANDO é uma linha (ou sequência) de
código que será executado somente quando o
resultado da EXPRESSÃO LÓGICA for
VERDADEIRO
3) FIMSE indica que a ESTRUTRA SE ENTAO
chegou ao final.
![Page 8: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/8.jpg)
Estrutura de condição SE ENTAO
Em C, teríamos:
if (<EXPRESSÃO LÓGICA>)
{
COMANDO
}
![Page 9: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/9.jpg)
Estrutura de condição SE ENTAO
Voltando ao nosso problema de classificar uma pessoa como MAIOR ou MENOR de IDADE, podemos utilizar a estrutura de condição SE ENTAO da seguinte maneira:
algoritmo "condicao"
variável
inteiro idade
inicio
escreva("digite a sua idade")
leia(idade)
se idade >= 18 entao
escreva("voce é maior de idade")
fimse
Fimalgoritmo
![Page 10: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/10.jpg)
Estrutura de condição SE ENTAO
Em C...
main()
{
int idade;
printf(“Digite sua idade: ”);
scanf (“%d”, &idade);
if (idade >= 18)
{
printf(“Você é maior de idade!”);
}
}
![Page 11: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/11.jpg)
SE ENTAO - Fluxograma
Leia Idade
Início
Idade >= 18?
Fim
Escreva “Você é maior de idade”
Verdadeiro Falso
![Page 12: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/12.jpg)
Estrutura de condição
SE ENTAO SENAO
O algoritmo anterior resolve o nosso problema quando a pessoa é MAIOR DE IDADE, porém não nos dá nenhum retorno para quando a mesma for MENOR DE IDADE.
Para contornar esse tipo de situação, a ESTRUTURA DE CONDIÇÃO SE ENTAO, oferece a possibilidade de executarmos uma determinada ação ou comando, se o resultado da EXPRESSÃO LÓGICA for VERDADEIRO e de executarmos uma ação diferente se o resultado da EXPRESSÃO LÓGICA for FALSO. Para essas situações é utilizado o comando SENAO.
![Page 13: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/13.jpg)
SE ENTAO SENAO - Fluxograma
Leia Idade
Início
Idade >= 18?
Fim
Escreva “Você é maior de idade”
Verdadeiro Falso
Escreva “Você é menor de idade”
![Page 14: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/14.jpg)
SE ENTAO SENAO - Algoritmo
algoritmo "condicao"
variável
inteiro idade
inicio
escreva("digite a sua idade")
leia(idade)
se idade >= 18 entao
escreva("você é MAIOR de idade")
senao
escreva("você é MENOR de idade")
fimse
Fimalgoritmo
![Page 15: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/15.jpg)
SE ENTAO SENAO – C
main()
{
int idade;
printf(“Digite sua idade: ”);
scanf (“%d”, &idade);
if (idade >= 18)
{
printf(“Você é MAIOR de idade!”);
}
else
{
printf(“Você é MENOR de idade!”);
}
}
![Page 16: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/16.jpg)
ESTRUTURAS DE CONDIÇÃO
Utilizando variáveis
Em todos os exemplos vistos até o presente
momento, o resultado que é enviado para a
tela (a saída do sistema) é escrito logo após a
verificação da EXPRESSÃO LÓGICA e dentro
da ESTRUTURA DE CONDIÇÃO;
Mas isso não é uma regra, podemos
simplesmente armazenar informações em
variáveis e escrever o resultado obtido
somente no final.
![Page 17: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/17.jpg)
ESTRUTURAS DE CONDIÇÃO
Utilizando variáveis
Por exemplo, no algoritmo que avalia se
uma determinada pessoa é MAIOR DE
IDADE ou se é MENOR DE IDADE,
poderíamos criar uma variável que
pudesse receber a situação em que a
pessoa se encontra e depois
simplesmente escrever o valor dessa
variável.
![Page 18: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/18.jpg)
ESTRUTURAS DE CONDIÇÃO
Utilizando variáveis
Veja como ficaria: algoritmo "condicao"
variável
inteiro idade
cadeia maioridade
inicio
escreva("digite a sua idade")
leia(idade)
se idade >= 18 entao
maioridade ← "MAIOR"
senao
maioridade ← "MENOR"
fimse
escreva(“você é “, maioridade,” de idade”)
Fimalgoritmo
![Page 19: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/19.jpg)
ESTRUTURAS DE CONDIÇÃO
Utilizando variáveis – C main()
{
int idade;
char maioridade[6];
printf(“Digite sua idade: ”);
scanf (“%d”, &idade);
if (idade >= 18)
{
strcpy (maioridade, “MAIOR”);
//strcpy = string copy – função que copia o conteúdo da
//segunda string (cadeia de caracteres) para a primeira.
//Equivale a uma atribuição maioridade = “MAIOR”
}
else
strcpy (maioridade, “MENOR”);
printf(“Você é %s de idade!”, maioridade);
}
![Page 20: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/20.jpg)
Utilizando variáveis - Fluxograma
Leia Idade
Início
Idade >= 18?
Fim
maioridade ← “MAIOR”
Verdadeiro Falso
maioridade ← “MENOR”
Escreva “Você é “ + maioridade + “ de idade”
![Page 21: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/21.jpg)
ESTRUTURAS DE CONDIÇÃO
Exemplos de Aplicação
Vamos reconsiderar agora o exercício feito na última aula:
----------------------------------------------------------------------
Elabore um algoritmo que leia dois números inteiros e imprima a seguinte saída:
Dividendo:
Divisor:
Quociente:
Resto:
Para a resolução desse algoritmo utilize os comandos MOD(%) e DIV(/) para o cálculo do resto e do quociente da divisão.
----------------------------------------------------------------------
![Page 22: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/22.jpg)
ESTRUTURAS DE CONDIÇÃO
Análise do Problema
Entrada:
Nosso programa necessitará que o
usuário informe dois valores inteiros
(O Dividendo e o Divisor)
Processamento:
O programa deverá calcular o quociente e
o resto da divisão inteira do dividendo
pelo divisor;
![Page 23: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/23.jpg)
ESTRUTURAS DE CONDIÇÃO
Análise do Problema
Saída:
O programa deverá escrever as informações
conforme especificação feita no enunciado do
problema.
Dividendo: <valor informado pelo usuário>
Divisor: <valor informado pelo usuário>
Quociente: <valor calculado na fase de processamento>
Resto: <valor calculado na fase de processamento>
![Page 24: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/24.jpg)
ESTRUTURAS DE CONDIÇÃO
Refinando a fase de processamento
Para calcular o quociente, pode-se
usar a seguinte expressão:
quociente ← dividendo div divisor
ou, em C...
quociente = dividendo / divisor;
![Page 25: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/25.jpg)
ESTRUTURAS DE CONDIÇÃO
Refinando a fase de processamento
Para calcular o resto, pode-se usar a
seguinte expressão:
resto ← dividendo mod divisor
ou, em C...
resto = dividendo % divisor;
![Page 26: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/26.jpg)
ESTRUTURAS DE CONDIÇÃO
Refinando a fase de processamento
Pergunta 1:
E se o usuário informar (digitar) valor zero
(0) para a variável divisor?
Resposta 1:
Teremos um problema com a matemática
(divisão por zero) e, consequentemente,
com nosso programa (ele será abortado)!
![Page 27: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/27.jpg)
ESTRUTURAS DE CONDIÇÃO
Refinando a fase de processamento
Pergunta 2:
O que fazer diante desta possibilidade?
Resposta 2:
Teremos de acrescentar um comando
condicional antes da realização dos
cálculos.
![Page 28: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/28.jpg)
ESTRUTURAS DE CONDIÇÃO
Refinando a fase de processamento
Leia Dividendo
Início
Fim
Leia Divisor
Calcule Quociente
Calcule Resto
Imprima Resultados
Antes, tínhamos:
![Page 29: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/29.jpg)
ESTRUTURAS DE CONDIÇÃO
Refinando a fase de processamento
Leia Dividendo
Início
Divisor != 0?
Fim
Verdadeiro Falso
Leia Divisor
Calcule Quociente
Calcule Resto
Imprima Resultados
![Page 30: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/30.jpg)
ESTRUTURAS DE CONDIÇÃO
Refinando a fase de processamento
Leia Dividendo
Início
Divisor != 0?
Fim
Verdadeiro Falso
Leia Divisor
Calcule Quociente
Calcule Resto
Imprima Resultados
Imprima
Mensagem de
Erro
![Page 31: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/31.jpg)
ESTRUTURAS DE CONDIÇÃO
Expressões Lógicas Compostas
Como vimos anteriormente, é possível
compor expressões lógicas utilizando
operadores relacionais como (<, >, !=,
==,<=, >=)
É possível também compor expressões
lógicas utilizando os operadores E
(&&), OU (||) e NÃO (!).
![Page 32: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/32.jpg)
ESTRUTURAS DE CONDIÇÃO
Expressões Lógicas Compostas
Nesse sentido, a expressão lógica que
será avaliada na estrutura de condição
SE ENTAO também pode ser formada
por uma expressão lógica composta.
Por exemplo, considere a situação de
um determinado aluno em uma
disciplina.
![Page 33: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/33.jpg)
ESTRUTURAS DE CONDIÇÃO
Expressões Lógicas Compostas
Sabe-se que para ser aprovado, é
necessário que um aluno tenha:
NOTA >= 7.0 E FREQUENCIA >= 75 %.
![Page 34: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/34.jpg)
ESTRUTURAS DE CONDIÇÃO
Expressões Lógicas Compostas
SE (nota >= 7) E (freqüência >= 0.75) ENTAO
ESCREVA(“O aluno está aprovado”)
SENAO
ESCREVA(“O aluno está reprovado”)
FIMSE
Veja que para avaliar essa situação
necessitaremos utilizar o operador
lógico “E” da seguinte forma:
![Page 35: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/35.jpg)
ESTRUTURAS DE CONDIÇÃO
Expressões Lógicas Compostas
algoritmo "aluno"
variavel
real nota, frequencia
início
escreva("digite a nota do aluno")
leia(nota)
escreva("digite a frequencia do aluno")
leia(frequencia)
se (nota >= 7) E (frequencia >= 0.75) entao
escreva("O aluno está aprovado")
senao
escreva("O aluno está reprovado")
fimse
Fimalgoritmo
![Page 36: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/36.jpg)
ESTRUTURAS DE CONDIÇÃO
Se Entao Senao ANINHADAS
Dentro de uma estrutura SE ENTAO
SENAO é perfeitamente possível
utilizarmos mais de uma linha de
COMANDO, ou até mesmo outras
estruturas SE ENTAO SENAO.
Existem situações em que os caminhos
para a tomada de uma decisão
acabam formando uma espécie de
árvore com diversas ramificações.
![Page 37: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/37.jpg)
ESTRUTURAS DE CONDIÇÃO
Se Entao Senao ANINHADAS
Nesses casos, podemos recorrer à
utilização de várias estruturas SE
ENTAO SENAO embutidas umas
dentro das outras, comumente
chamadas de NINHOS.
![Page 38: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/38.jpg)
ESTRUTURAS DE CONDIÇÃO
Se Entao Senao ANINHADAS
Por exemplo, suponha que desejemos
refinar um pouco mais o problema
referente às médias dos alunos de uma
dada disciplina.
Sabemos que um aluno é APROVADO
caso apresente MÉDIA maior ou igual
a 7.0 e FREQUENCIA maior ou igual a
75%.
![Page 39: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/39.jpg)
ESTRUTURAS DE CONDIÇÃO
Se Entao Senao ANINHADAS
Se o aluno obtiver a FREQUENCIA
mínima exigida e uma MÉDIA entre 4 e
7, o mesmo ainda teria direito a uma
última avaliação de RECUPERAÇÃO.
Como faríamos para resolver o
problema em questão utilizando
apenas estruturas de condição SE
ENTAO SENAO ?
![Page 40: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/40.jpg)
ESTRUTURAS DE CONDIÇÃO
Se Entao Senao ANINHADAS
Poderíamos começar avaliando a
FREQUENCIA do aluno, e se a mesma
for menor que 75% o aluno já estaria
REPROVADO;
Porém, caso a FREQUENCIA respeite
o mínimo exigido, teremos que avaliar
a MÉDIA para saber se o mesmo está
APROVADO, em RECUPERAÇÃO ou
REPROVADO.
![Page 41: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/41.jpg)
ESTRUTURAS DE CONDIÇÃO
Se Entao Senao ANINHADAS
Leia Média
Início
Frequência < 0.75?
Fim
Verdadeiro Falso
Leia Frequência
Avalie a Média Escreva “Você
está reprovado
por faltas!”
![Page 42: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/42.jpg)
ESTRUTURAS DE CONDIÇÃO
Se Entao Senao ANINHADAS
No momento em que é verificado que a
FREQUENCIA é menor que 0.75 (75%)
o aluno já está imediatamente
REPROVADO;
Caso a FREQUENCIA seja maior ou
igual a esse valor, devemos continuar
com o algoritmo para avaliar em que
situação que o aluno se encontra;
![Page 43: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/43.jpg)
ESTRUTURAS DE CONDIÇÃO
Se Entao Senao ANINHADAS
Enfim, agora é necessário avaliar a
MEDIA do mesmo, verificando se está
acima de 7.0 (APROVADO), entre 4 e
7.0 (RECUPERACAO), ou abaixo de
4.0 (REPROVADO).
![Page 44: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/44.jpg)
ESTRUTURAS DE CONDIÇÃO
Refinando o passo “Avalie a Média”
Média >= 7.0?
Fim
Verdadeiro Falso
Escreva “Você
está aprovado!” Média >= 4.0?
Verdadeiro
Escreva “Você
está em
Recuperação!”
Escreva “Você
está reprovado
por Média!”
Falso
![Page 45: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/45.jpg)
ESTRUTURAS DE CONDIÇÃO
Refinando o passo “Avalie a Média”
Média >=
7.0?
Escreva “Você
está aprovado!” Média >=
4.0?
Escreva “Você
está em
Recuperação!” Escreva “Você
está reprovado
por Média!”
Leia Média
Início
Frequência < 0.75?
Fim
Verdadeiro
Falso
Leia Frequência
Escreva “Você
está reprovado
por faltas!”
Verdadeiro Falso
Verdadeiro
Falso
![Page 46: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/46.jpg)
ESTRUTURAS DE CONDIÇÃO
Se Entao Senao ANINHADAS
algoritmo "aluno" variavel real media, frequencia início escreva("digite a media e a frequencia") leia(media, frequencia) se frequencia < 0.75 entao escreva("voce esta reprovado por FALTAS") senao se media >= 7 entao escreva("voce esta APROVADO") senao se media >= 4 entao escreva("voce esta em RECUPERACAO") senao escreva("voce esta REPROVADO POR MEDIA") fimse fimse fimse Fimalgoritmo
![Page 47: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/47.jpg)
ESTRUTURAS DE CONDIÇÃO
Comando Escolha (Switch)
Na aula de hoje, vamos considerar seguinte problema:
----------------------------------------------------------------------
Elabore um algoritmo que leia um número inteiro entre 1 e 12 e imprima o nome do mês correspondente. Caso seja digitado um valor fora desse intervalo, deverá ser exibida uma mensagem informando que não existe mês com esse número.
----------------------------------------------------------------------
A seguir, podemos visualizar algumas possíveis soluções para o problema:
![Page 48: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/48.jpg)
ESTRUTURAS DE CONDIÇÃO
Comando Escolha (Switch) algoritmo “MesDoAno" variavel inteiro mes início escreva("digite um número entre 1 e 12") leia(mes) se (mes < 1) OU (mes > 12) entao escreva(“Mês INEXISTENTE") senão se mes = 1 entao escreva(“Mês de Janeiro!") fimse
se mes = 2 entao
escreva(“Mês de Fevereiro!")
fimse ......
se mes = 12 entao
escreva(“Mês de Dezembro!")
fimse
fimse Fimalgoritmo
![Page 49: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/49.jpg)
ESTRUTURAS DE CONDIÇÃO
Comando Escolha (Switch) algoritmo “MesDoAno" ...... leia(mes) se (mes < 1) OU (mes > 12) entao escreva(“Mês INEXISTENTE") senão se mes = 1 entao escreva(“Mês de Janeiro!") senão
se mes = 2 entao
escreva(“Mês de Fevereiro!")
senão ......
se mes = 12 entao
escreva(“Mês de Dezembro!")
fimse fimse fimse
fimse Fimalgoritmo
![Page 50: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/50.jpg)
ESTRUTURAS DE CONDIÇÃO
Comando Escolha (Switch)
A segunda solução é mais eficiente que a
primeira, pois realiza um número médio de
comparações menor;
Porém, o código fica mais extenso e, às
vezes, confuso;
Será possível criarmos um código enxuto e
eficiente ao mesmo tempo?
![Page 51: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/51.jpg)
ESTRUTURAS DE CONDIÇÃO
Comando Escolha (Switch)
A resposta é sim.
Com a estrutura Escolha ... Caso
(Switch ... Case, em C);
Nessa estrutura, o valor de uma
determinada variável é avaliado e
CASO esse valor coincida com um
valor pré-estabelecido, um COMANDO
(ou grupo de comandos) é executado.
![Page 52: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/52.jpg)
ESTRUTURAS DE CONDIÇÃO
Comando Escolha (Switch)
A estrutura de condição ESCOLHA
CASO é utilizada da seguinte forma:
Escolha <nome da variável>
Caso <valor1>
COMANDO
Caso <valor2>
COMANDO
FimEscolha
![Page 53: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/53.jpg)
Comando Escolha (Switch)
Exemplo No exemplo a seguir, a variável n do tipo inteiro é testada, e
CASO a mesma tenha valor 1 é escrito na tela “um”, CASO a
mesma tenha valor 2 é escrito na tela “dois”
algoritmo "teste"
variavel
inteiro n
inicio
escreva("digite n")
leia(n)
escolha n
caso 1
escreva("um")
caso 2
escreva("dois")
fimescolha
Fimalgoritmo
![Page 54: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/54.jpg)
Comando Escolha (Switch)
Exemplo – Em C
main()
{
int n;
printf("digite n: ");
scanf (“%d”, &n);
switch (n)
{
case 1:
printf("um");
break;
case 2:
printf("dois");
break;
}
}
![Page 55: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/55.jpg)
ESTRUTURAS DE CONDIÇÃO
Comando Escolha (Switch)
Da mesma maneira que a estrutura de
condição SE ENTAO SENAO
possibilita que executemos algum
comando quando a expressão avaliada
não é VERDADEIRA, a estrutura de
condição ESCOLHA CASO também
nos oferece essa opção
![Page 56: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/56.jpg)
ESTRUTURAS DE CONDIÇÃO
Comando Escolha (Switch)
A sintaxe para utilizarmos essa opção
é mostrada a seguir: Escolha <nome da variável>
Caso <valor1>
COMANDO
Caso <valor2>
COMANDO
Outrocaso
COMANDO
FimEscolha
![Page 57: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/57.jpg)
Comando Escolha (Switch)
Exemplo Trabalhando com o nosso exemplo anterior, agora a variável n do tipo
inteiro é testada, e CASO a mesma tenha valor 1 é escrito na tela “um”, CASO a mesma tenha valor 2 é escrito na tela “dois”, e CASO não tenha nenhum desses valores será escrito na tela “outro valor”:
algoritmo "teste"
variavel
inteiro n
inicio
escreva("digite n")
leia(n)
escolha n
caso 1
escreva("um")
caso 2
escreva("dois")
outrocaso
escreva(“outro valor")
fimescolha
Fimalgoritmo
![Page 58: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/58.jpg)
Comando Escolha (Switch)
Exemplo – Em C main()
{
int n;
printf("digite n: ");
scanf (“%d”, &n);
switch (n)
{
case 1:
printf("um");
break;
case 2:
printf("dois");
break;
default:
printf("outro valor");
break;
}
}
![Page 59: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/59.jpg)
Comando Escolha (Switch)
Voltando ao Problema Inicial algoritmo “MesDoAno" variavel inteiro mes início escreva("digite um número entre 1 e 12") leia(mes) escolha mês caso 1: escreva(“Mês de Janeiro!") caso 2: escreva(“Mês de Fevereiro!") caso 3: escreva(“Mês de Março!") caso 4: escreva(“Mês de Abril!") caso 5: escreva(“Mês de Maio!") caso 6: escreva(“Mês de Junho!") caso 7: escreva(“Mês de Julho!") caso 8: escreva(“Mês de Agosto!") caso 9: escreva(“Mês de Setembro!") caso 10: escreva(“Mês de Outubro!") caso 11: escreva(“Mês de Novembro!") caso 12: escreva(“Mês de Dezembro!") outrocaso: escreva(“Mês INEXISTENTE") fimEscolha Fimalgoritmo
![Page 60: Algoritmos e Técnicas de Programação](https://reader035.fdocument.pub/reader035/viewer/2022062609/62b5f3dd4207616479682691/html5/thumbnails/60.jpg)
Comando Escolha (Switch)
Exercício
Criar um algoritmo que leia dois números inteiros, e que solicite ao usuário qual a operação que o mesmo deseja realizar entre esses números.
Caso o usuário digitar o caractere ‘*’ será realizada uma multiplicação;
Caso seja digitado o caractere ‘/’ será realizada uma divisão;
Caso seja digitado o caractere ‘+’ será realizado uma adição entre os números;
Caso seja digitado o caractere ‘-’ será realizada uma subtração.