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 (302)

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.

18 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]

Deixe o sua opinião abaixo

Nossos posts no seu Email

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

Hospedagem

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