May
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)

Por enquanto é só… se tiverem dúvidas, críticas, sugestões, reclamações, elogios, saudades, ou o que for, só postar nos comentários galera…

Abraços e até o próximo post da série =)


Receba nossos artigos em seu Email!


Digite o seu email abaixo:

Posts Relacionados:

Sobre o Autor: Bruno Barbosa

Bruno Barbosa cursa Análise e Desenvolvimento de Sistemas, é programador Python, Desenvolvedor Web, usuário Linux e entusiasta de Software Livre. Utiliza no dia-a-dia Python, Zope/Plone e o framework web2py para desenvolvimento de aplicações web. Me siga também no Twitter.

23 Comments + Add Comment

  • faltoo só dá um exercício :D

    [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:

    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:

    É 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:

    Bruno, no caso acima, como eu poderia fazer o programa procurar essas informações de disponibilidades fora em algum arquivo?

    [Reply]

    Bruno Barbosa Reply:

    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:

    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:

    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]

Deixe o sua opinião abaixo

Wix – Criador de Sites

World Plone Day

World Plone Day

Nossos posts no seu Email

Informe seu email abaixo para receber nossas atualizações.

Facebook

Destaques

QuebraLink - Decodifica e inverte links Aprender Algoritmos Dicas Ubuntu Otimização de Sites

Sites Legais

Banner MeuPinguim

Vida de Programador Dicas em Geral - Dicas sobre Informática, Tecnologia e Inclusão Digital Ubuntu Dicas Infológico