26
2010
Aprenda a programar #8 | Algoritmos – Escolha .. Caso
Escolha… caso…
Olá algoritmizeiros, chegamos hoje ao oitavo post de nosso curso/série/aula (como queiram chamar =) sobre algoritmos.
Para quem não conhece ainda, o ‘Aprenda a Programar‘, é uma série de posts lançados toda semana, geralmente na terça ou quarta-feira, ensinando uma linguagem de cunho didático para que se possa iniciar no fantástico mundo da programação. Essa linguagem chama-se Portugol.
Você pode ver todos os posts já lançados clicando aqui, ou no menu lateral do site.
Então vamos ao que interessa!!!
No último post, aprendemos sobre estrutura condicional, quando e como utilizar o operador SE-ENTAO-SENAO, porém, dependendo da ocasião, quando se há muitas escolhas diferentes, nosso código pode ficar grande, e de difícil leitura…
Nesse caso, entra mais uma função em nosso querido algoritmo, o ESCOLHA… CASO… CASO… OUTROCASO… =)
Ele é tão simples quanto o SE, e acredito que não deve haver tantas dúvidas.
Abaixo tem um algoritmo, sobre a classificação de atletas pela sua faixa etária, este exemplo, poderia ter sido feito utilizando a estrutura condicional se – então, mas aqui utilizarei o escolha – caso, para que vocês entendam como funciona o mesmo.
Mas antes do algoritmo…
Comentários…
Comentários de que Bruno?
Futebol, religião, fofoca…
Não, não é nada disso!
os comentários que direi agora, são trechos no código em que podemos escrever algo sem que o interpretador ache que isso é uma linha de código.
Em portugol, nossos comentários são tudo aquilo precedido por // (duas barras)
Para que serve os comentários?
Os comentários em um código, serve para facilitar o entendimento por outros programadores. Não podemos ser egoístas em pensar que apenas você que o escreveu deve entende-lo, outras pessoas mais cedo ou mais tarde, precisarão ter acesso ao código para dar manutenção ao mesmo, seja ele software livre ou não.
E finalmente… o Algoritmo
algoritmo “Classificação de Atletas”
var
nome, categoria: caractere
idade: inteiro
inicio
escreva(“Digite o nome do atleta: “)
leia(nome)
escreva(“Informe a idade do atleta: “)
leia(idade)
// Até aqui tudo bem, ele pede o nome e idade, lê os valores e joga nas respectivas variáveis
escolha idade
// A função escolha irá interpretar os casos abaixo em cima da variável idade
caso 5,6,7,8,9,10
// Caso a variável idade receba os valores de 5 a 10, irá atribuir na variável categoria o valor: infantil
…. categoria <- “infantil”
caso 11,12,13,14,15
// Caso a variável idade receba os valores de 11 a 15, irá atribuir na variável categoria o valor: juvenil
…. categoria <- “juvenil”
caso 16,17,18,19,20
// Caso a variável idade receba os valores de 16 a 20, irá atribuir na variável categoria o valor: junior
…. categoria <- “junior”
caso 21,22,23,24,25
// Caso a variável idade receba os valores de 21 a 25, irá atribuir na variável categoria o valor: profissional
…. categoria <- “profissional”
outrocaso
// E se a variável idade não receber nenhum dos valores acima mencionados, vamos atribuir a variável categoria o valor: inválido
…. categoria <- “INVALIDO”
fimescolha
// O fimescolha finaliza a função que abrimos anteriormente
escreva(“Categoria: “,categoria)
// E este último escreva, serve para que possamos mostrar o resultado ao usuário
fimalgoritmo
Caso vocês prefiram, disponibilizei o arquivo .alg para ser aberto no VisualG do algoritmo acima, o link para download está logo abaixo:
Classificação de Atletas (302)
Artigo criado por












faltoo só dá um exercício
[Reply]
me ajuda a fazeeer este
Algoritmo “Roupas”
var
R,T,tamanho: literal //onde R=roupa ; P=peso ; T=tamanho.
P: inteiro
inicio
Escreval (” Insira o nome da roupa.”)
leia(R)
Escreval (” Insira o tamanho.”)
leia (P)
escolha t
caso (<49)
tamanho 50) e (<75)
tamanho 75)
tamanho <- "G"
outrocaso
categoria <- "Não Consta no estoque."
filmescolha
escreva("Categoria:",categoria)
fimalgoritmo
[Reply]
Arthur Reply:
June 11th, 2011 at 11:57
Primeiro você não declarou a variável Categoria. Outra, no lugar do tamanho, você colocou para ler o P(peso). Talvez eu esteja errado, mas acho que essa formação do CASO está confusa.
Espero ter ajudado! =)
[Reply]
bacana, depois vou testar o escolha
[Reply]
Concordo, poderia ter deixado um exercício.
[Reply]
presente \o/
[Reply]
olá klinton,
nao entendi muito bem o seu algoritmo mais gostaria muito de ajudar, segue o algoritimo abaixo e vê se é isso mesmo o que procura.
algoritmo “roupas”
var
roupa,opcao: caractere
tamanho:inteiro
inicio
Escreval (” Insira o nome da roupa.”)
leia(roupa)
Escreval (” Insira o tamanho.”)
leia (tamanho)
escolha tamanho
caso 49,50,75
opcao<- "tamanho G"
outrocaso
opcao <- "Não Consta no estoque."
fimescolha
escreval("tamanho: ",opcao)
fimalgoritmo
[Reply]
Matheus Feitosa Reply:
November 26th, 2011 at 21:21
É melhor usar esses tipos de escolhas com intervalos, ex:
se tamanho > 49 e < 75 entao
…escreva("Tamanho G.")
eu acharia mais rápido e direto fazendo assim se por acaso for usar intervalos de tamanhos grandes..
[Reply]
Fiz esse algoritmo usando a função Escolha, e eu achei que ele ainda podia ser reduzido.
Devido ao meu “iniciantismo” eu coloquei um Escolha dentro de outro, queria sabe se pode
reduzir à uma única função.
Desde já, obrigado!
Segue abaixo o algoritmo: \/
—————————————————————
algoritmo “Verificar disponiblidade”
var
marca, dispo: caracter
tamanho: inteiro
inicio
escreva(“Digite o marca do tênis: “)
leia(marca)
escreva(“Digite o tamanho desejado: “)
leia(tamanho)
escolha marca
caso “Nike”,”Mizuno”,”All Star”
escolha tamanho
caso 38,39,40,41
dispo <- "diponível"
outrocaso
dispo <- "indisponível"
fimescolha
caso "Rainha","Kildare","Umbro","Penalty"
escolha tamanho
caso 40,41,42
dispo <- "Disponível"
outrocaso
dispo <- "indisponível"
fimescolha
outrocaso
dispo <- "indisponível"
fimescolha
escreva("Esse tênis está: ", dispo)
fimalgoritmo
[Reply]
Matheus Feitosa Reply:
November 26th, 2011 at 21:25
Bruno, no caso acima, como eu poderia fazer o programa procurar essas informações de disponibilidades fora em algum arquivo?
[Reply]
Bruno Barbosa Reply:
December 9th, 2011 at 11:41
O Portugol não permite a leitura/escrita de arquivos do sistema, já que esta é apenas uma linguagem de cunho didático.
Quando você estiver estudando uma linguagem de programação propriamente dita, ela geralmente nos fornece meios de trabalhar com estes arquivos de forma nativa.
Abraços.
[Reply]
algoritmo “classificação da censura”
// Função :
// Autor :
// Data : 27/07/2011
// Seção de Declarações
var
nome, categoria: caractere
idade: inteiro
inicio
// Seção de Comandos
escreva (“Digite o nome do filme: “)
leia(nome)
escreva (“informe a idade de censura: “)
leia (idade)
escolha idade
caso 1,2,3,4,5,6
…. categoria “infantil”
caso 7,8,9,10,11,12,13
…. categoria “juvenil”
caso 14,15,16,17,18
… categoria “junior”
caso 19,20,21,22,23,24
…. categoria “adulto”
outro caso
…. categoria “impropria”
fimescolha
escreva(“Categoria: “,categoria)
fimalgoritmo
[Reply]
ta dando erro bruno, n sei o q fiz errado..me da uma luz
[Reply]
Alessandro Reply:
January 4th, 2012 at 11:47
Bom dia Flavia
Se o seu algoritimo ta fiel ao exemplo que vc postou, o erro esta na falta do sinal de atribuição de valor pra variavel.
escolha idade
caso 1,2,3,4,5,6
…. categoria “infantil” <==
tenta assim:
escolha idade
caso 1,2,3,4,5,6
…. categoria<- “infantil”
Abçs.
[Reply]
Blz.
Mais uma Aula Ótima.
Obrigado.
[Reply]
kkkkkkkkk, Bruno, estava aqui atoa a algumas horas que cheguei a essa parte do curso, e resolvi criar esse programa e achei que seria interessante listar todos os times.
______________________________________________
algoritmo “Classificação de Times”
var
nome:caractere
tipo:inteiro
inicio
escreva(“Digite o nome do time para qual é torcedor: “)
leia(nome)
escolha nome
caso “Palmeiras”,”Santos”,”Atlético Goianiense”
tipo <- 1
caso "São Paulo","Corinthians"
tipo <- 2
caso "Vila Nova","Flamengo"
tipo <- 3
fimescolha
se tipo = 1 entao
escreva("Parabéns, seu time tem futuro.")
fimse
se tipo = 2 entao
escreva("É Viado!")
fimse
se tipo = 3 entao
escreva("P*&$ que pariu, você ta mal pra Ca*&lho"
fimse
fimalgoritmo
______________________________________________
[Reply]
Matheus Feitosa Reply:
November 26th, 2011 at 21:14
Fiz a 3 minutos e já percebi um erro, segue aqui resolvido o problema de time inexistente na lista.
_________
algoritmo “Classificação de Times”
var
nome:caractere
tipo:inteiro
inicio
escreva(“Digite o nome do time para qual é torcedor: “)
leia(nome)
tipo <- 0
escolha nome
caso "Palmeiras","Santos","Atlético Goianiense"
tipo <- 1
caso "São Paulo","Corinthians"
tipo <- 2
caso "Vila Nova","Flamengo"
tipo <- 3
fimescolha
se tipo = 1 entao
escreva("Parabéns, seu time tem futuro.")
fimse
se tipo = 2 entao
escreva("É Viado!")
fimse
se tipo = 3 entao
escreva("P*&$ que pariu, você ta mal pra Ca*&lho"
fimse
se tipo = 0 entao
escreva("Esse time existe mesmo?")
fimse
fimalgoritmo
___________
[Reply]
Brunão..
Sou novo por aqui. Comecei a ler hoje suas aulas.
Estou aprendendo sozinho (claro que com a ajuda do deus Google e agora a sua ajuda xD). Mês que vem começo minha faculdade de A&D de Sistemas.
Estou gostando pra caramba e estou aprendendo com você.
Parabéns!
Só queria esclarecer uma dúvida que me surgiu.
Percebi que utilizou uma sequencia de numeros separados por virgula (Ex: 5,6,7,8,9…)
Como é uma sequência numérica, teria como, ao invés de utilizar várias casas separadas por vírgula, fazer de um período á outro?
Ex: do 5 ao 9 “infantil”, do 10 ao 15 “juvenil”, do 16 ao 20 “junior”, e assim por diante.
[Reply]