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 (503)
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]
Cara tá de parabens… adora sua forma de ensinar!!!!
[Reply]
demorou mais consegui!!!
var
nome, categoria:caracter
idade:inteiro
inicio
escreva(“nome do Atleta :”)
leia(nome)
escreva(“idade do atleta :”)
leia(idade)
escolha (idade)
caso 5,6,7,8,9,10
escreva(“Idade encaichada na categoria infantil”)
caso 11,12,13,14,15
escreva(“Idade encaichada na categoria junior”)
caso 16,17,18,19,20
escreva(“Idade encaichada na categoria juvenil”)
caso 21,22,23,24,25
escreva(“Idade encaichada na categoria profissional”)
outrocaso
escreva(“idade invalida”)
fimescolha
fimalgoritmo
[Reply]
ignorem os erros
[Reply]
Olha oque a falta de imaginação é capaz de criar … (:
Funcionou pelo menos (:
Galera comecei aprender isso hoje, alguem pode me dizer se estou fazendo algo errado ?
algoritmo “Classificação do tamanho dos pés”
// Função :
// Autor :
// Data : 07/05/2012
// Seção de Declarações
var
nome,tamanho: caractere
pe: inteiro
inicio
// Seção de Comandos
escreval(” +++>>> Descubra se você tem pezin ou pezão <<<+++ ")
escreval("Digite o seu nome: ")
leia(nome)
escreval("Digite qual o numero que você calça: ")
leia(pe)
escolha (pe)
caso 32,33,34
tamanho <- "pezin pequeno"
caso 35,36,37
tamanho <- "pezin médio"
caso 38,39,40
tamanho <- "pezin grande"
caso 41,42,43
tamanho <- "pqp concerteza vc deve ser homem !!!"
outrocaso
tamanho <- "veih na boa, vc não é humano (:"
fimescolha
escreva("Tamanho:",tamanho)
fimalgoritmo
[Reply]
Aew galera gostei muito dos tópicos, ontem eu li muito muito (:
Como viciei um pokin
Resolvi fazer um que misturasse tudo que aprendi … xD
algoritmo “Sem utilidade”
// Função : Não fazer nada kkkkk
// Autor : João Ricardo Rodrigues
// Data : 08/05/2012
// Seção de Declarações
var
nome,prof,ser,resp: caractere
idade, num1, num2: inteiro
inicio
// Seção de Comandos
// Vamos ver oq dá … XD
escreval(“Bom dia, qual é o seu nome? “)
leia(nome)
limpatela
escreva(“Tudo bom Sr.”, nome, ” ? “)
leia(resp)
se resp = “sim” entao
escreval(“Que bom, hoje irei tentar descobrir se vc vai ficar rico !”)
fimse
se resp “sim” entao
escreval(“Seu burro era pra escrever sim…xD”)
fimse
escreval(“Quantos anos você tem? “)
leia(idade)
escolha idade
caso 18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41
escreval(“Que bom você já é maior de idade…”)
caso 01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17
escreval(“Você ainda está cheirando leite ‘-’ “)
outrocaso
escreval(“Vc é bem velinho *__* “)
fimescolha
escreval(“Qual sua profissão ? “)
leia(prof)
escolha prof
caso prof -> “medico”, “engenheiro”, “empresario”
escreval(“Parabens vc tem um futuro promissor…”)
outrocaso
escreval(“É “, nome, ” tenho certeza que vc não veio de familia rica !!!”)
fimescolha
escreval(“Você pretende estudar o que ?”)
leia(ser)
escolha ser
caso -> “medicina” , “direito” , “engenharia”
escreval(“Parabens, depois dos seus estudos talvez possa ser rico”)
outrocaso
escreval(“Ihhh cara… cetafudido !!!! hahahaha”)
fimescolha
escreval(“Vamos fazer uma brincadeira… Digite um numero ” , nome , ” : “)
leia(num1)
escreval(“Digite outro numero: “)
leia (num2)
se num1 + num2 > 10 entao
escreval(“Os dois numeros digitados foram maior que dez”)
fimse
se num1 + num2 < 10 entao
escreval("Os dois numeros digitados foram menor que dez")
fimse
// Consegui !!!!!!!!!!! *_* \o/ \o/ \o/ \o/ \o/ \o/ \o/
fimalgoritmo
[Reply]