Ir ao conteúdo
  • Cadastre-se
Hygor Mathias

Erro com algorítimo visulog

Recommended Posts

Por favor alguém pode me ajuda a escrever esse Algoritmo a sua sintaxe no VISUALG EM PORTUGOL?"

 

Uma empresa especializada em cursos preparatórios para concursos abriu as suas inscrições para o ano letivo. O curso tem como novidade beneficiar pessoas carentes com renda familiar abaixo de 2 salários mínimos, com desconto especial em suas mensalidades.

Elabore um algoritmo para ler:

O valor da mensalidade do curso;
O turno do curso escolhido (M para manhã, T para tarde e N para noite);
Categoria do aluno (B para baixa renda e N para renda normal);
 

O algoritmo deve calcular e exibir:

Valor total do curso durante 1 ano (valor da mensalidade do curso vezes 12);
O valor da mensalidade do aluno. Essa mensalidade poderá sofrer alterações, dependendo do turno escolhido e da categoria do aluno, conforme descrito abaixo:
- Caso o turno escolhido for M (manhã), não haverá nenhum desconto;

- Caso o turno escolhido for T (tarde), será atribuído um desconto de 5%;

- Caso o turno escolhido for N (noite), será atribuído um desconto de 10%;

 

ATENÇÃO: Para alunos classificados na categoria de renda familiar baixa, será acrescido um desconto adicional de 10%.

Fico muito grato.

 

Editado por dif
Excesso de formatação
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezado,

 

Seja bem-vindo ao Fórum do Clube do Hardware; obrigado por sua participação! :)

 

Quanto à sua dúvida, para podermos lhe ajudar, nós precisamos de mais alguns detalhes, tais como:

 

  • parte do código que já foi feito;
  • caso não tenha um código feito, qual o algoritmo que você pretende usar para resolver o problema;
  • você tem experiência com esta linguagem de programação?

 

Por favor, não leve para o lado pessoal, mas o nosso objetivo principal aqui é ajudar você a resolver o problema, se simplesmente postássemos um código já pronto, você nunca aprenderia de fato... ;)

 

Atenciosamente,

Equipe Clube do Hardware

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

to tentando esse aqui mais ta dando erro e ainda falta os 10% da baixa renda !?

 

mensCurso:inteiro
turno:caractere
categoria:caractere
inicio
escreval("Informe a mensalidade do curso.: ")
leia(mensCurso)
escreval("Informe o turno.: ")
leia(turno)
escreval("Informe a categoria.:")
leia (categoria)
caso "M": escreval('Valor total da mensalidade = ',mensCurso)
caso "T": escreval('Valor total da mensalidade = ',mensCurso + (mensCurso * 0.05))
caso "N":escreval('Valor total da mensalidade = ',mensCurso + (mensCurso * 0.10))
fimalgoritmo

 

Editado por dif
Retificar post
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, este exercício é bem simples, mas não posso te dar respostas. O que posso fazer por ti é ajudar a usar a sintaxe e dizer qual utilizar, em certos momentos.

 

Este código possui só 1 erro e falta de uso de técnicas para instruir o usuário.

Começando com os mais simples:

 

escreval("Informe a mensalidade do curso.: ")
leia(mensCurso)
escreval("Informe o turno.: ")
leia(turno)
escreval("Informe a categoria.:")
leia (categoria)

Este código acima não possui problema algum, porém, você não utilizou de artifícios para instruir o usuário a escrever os valores corretos. Veja abaixo como seria mais eficiente:

 

escreva("Informe a mensalidade do curso: R$")
leia(mensCurso)
escreva("Informe o turno [M/T/N]: ")
leia(turno)
escreva("Informe a categoria [B/N]:")
leia (categoria)

Você viu que utilizei pequenos símbolos que vão dizer para o usuário o que deve digitar. Você deve fazer o mesmo sempre!


 Ps: Outras coisinhas que alterei foram os comandos de saída, retirando a letra "L" para o valor que o usuário digitar aparecer na mesma linha.

 

Vamos às partes um pouco mais complexas:

 

Primeiramente, notei que utilizaste de uma estrutura "Escolha-Caso" de sem usar a sintaxe "escolha". Não acredito que isso seja errado, até porque o Portugol é só uma pseudo-linguagem. O problema é que talvez esta seja uma técnica menos proficiente, te deixando "para trás" de outros programadores.
 

Para te ajudar a dar um "Up", segue como é uma estrutura "Escolha-Caso" bem organizada e proficiente:

 

Escolha <variável escolhida>
  caso <valor possível da variável>
  	<bloco de intruções>
  caso <valor possível da variável>
  	<bloco de intruções>
  outrocaso 
  	<bloco de intruções>
FimEscolha

Os blocos são as instruções a serem executadas, caso o possível valor da variável escolhida seja verdadeiro.


"Outrocaso" é uma palavra reservada à sintaxe, para definirmos um bloco de instruções a serem executados, caso nenhum dos valores definidos sejam verdadeiros. É uma estrutura bem próxima do "Senao".

 

Olhando esta estrutura que escrevi, tente reproduzir o seu código de tal forma.

Uma coisa que você não nos deixou claro: qual a sua real dúvida. Até onde você permitiu (com seu post) foi te ajudar com sintaxe e outros errinhos, mas nada relacionado à lógica. Responda dizendo se realmente precisa de ajuda, senão dê como resolvido.

Até mais!

  • Curtir 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite @Joao_Lucaas

Também tive que resolver esta questão e no caso fui ensinada a usar o SE/FIMSE que funcionou como deveria e vou manter ele e enviar pro ambiente assim, mas eu não consegui fazer funcionar com o Escolha-Caso você teria algum exemplo? Ou algum outro lugar que eu possa ler/ver algum video a respeito? Gostaria de aprender mais coisas já que estou começando agora.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, a estrutura Escolha-Caso funcionaria assim, com uma variável "Soma":

Soma <- 2+2

Escolha	Soma

	Caso 1,2,3
		EscrevaL ("A soma é : ",Soma,".")
	Caso 4
		EscrevaL ("A soma é 2².")
	outrocaso
		EscrevaL ("A soma é maior que quatro.")
        
FimEscolha

     1. Variável soma recebe valor 4 (2+2);

     2. A estrutura "Escolha" escolhe a variável "Soma";

     3. Possuímos cinco casos de valores para a variável soma;

         3.1. As primeiras possibilidades são 1, 2 e 3;

         3.2. Segunda possibilidade é o valor 4;

         3.3. A última possibilidade pode ser qualquer valor, que não os anteriores.

      4. Dependendo do valor da variável escolhida, o "caso" adequado executará uma instrução;

      5. O caso de valor 4 vai executar uma instrução, porque "Soma" é igual a 4.


Se quiseres ajuda no seu exercício idêntico, vale criar um tópico novo, falar em qual parte do seu código não consegues evoluir e esperar ajuda.

 

Um exemplo prático é esse, mas ainda podes estudar mais sobre esta estrutura através de cursos, no Youtube.

Um curso que eu recomendo é o "Curso em Vídeo", lecionado pelo Gustavo Guanabara. Este é gratuito, interativo e com certificado.

Para acessar a aula do Guanabara de "Escolha-Caso", clique aqui!

 

Para acessar todos os cursos de programação dele, clique aqui!

Editado por Joao_Lucaas
  • Curtir 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Joao_Lucaas muito obrigada mesmo pelos links. Vou assistir o curso inteiro.

Assisti a aula de Escolha-Caso e fiquei pensando que talvez não seja possível responder esta questão pois temos duas váriaveis para trabalhar (Turno e Categoria) e seria por isso que não está funcionando. Ou eu realmente não sei montar isso. Vou tentar de novo.

Mais uma vez, muito obrigado João!

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites


MEU ALGORÍTIMO: 

var
Valor,você:real
Turno,categoria:Caractere

inicio
// Seção de Comandos 
EscrevaL ("------------------")
EscrevaL ("------CURSOS------")
EscrevaL ("------------------")
Escreva  ("Valor do Curso: R$")
Leia (valor)
Escreva  ("Escolha Turno M/T/N:")
Leia (turno)
Escreval ("Categoria do aluno, (B) Para Baixa Renda e (N) Para Renda Normal:")
Leia (categoria)
você:= (valor*12)
Escreval ("valor total do curso sem descontos no periodo de um ano:",você)

se (turno=m) então
    escreval (valor)
Fimse
se(turno=t) então
   escreval (valor*0.05-valor)
fimse
se(turno=n) então
   escreval (valor*0.010-valor)
 fimse

fimalgoritmo

assa.png

Semnome.alg

Editado por dif
Reorganizando o tópico mesclado
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hygor Mathias

   O erro está no tipo de variável que é caractere então para dar certo a variável tem que

ficar entre aspas assim:

    se ( turno = " m " ) então

   se ( turno = " t " ) então

   se ( turno = " n " ) então

e a variável você não pode ter acento tem que ser assim : voce

e para escrever  o valor  escreval (valor*0.05-valor)  tem que ser assim :

        escreval (valor-valor*0.05)

e escreval (valor*0.010-valor) tem ficar assim :

        escreval (valor-valor*0.10)  como é 10 porcento é multiplicar por 0,10

Editado por devair1010
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
24 minutos atrás, devair1010 disse:

Hygor Mathias

   O erro está no tipo de variável que é caractere então para dar certo a variável tem que

ficar entre aspas assim:

    se ( turno = " m " ) então

   se ( turno = " t " ) então

   se ( turno = " n " ) então

e a variável você não pode ter acento tem que ser assim : voce

e para escrever  o valor  escreval (valor*0.05-valor)  tem que ser assim :

        escreval (valor-valor*0.05)

e escreval (valor*0.010-valor) tem ficar assim :

        escreval (valor-valor*0.10)  como é 10 porcento é multiplicar por 0,10

OI, Muito obrigado :D , ja corrigi o que estava errado,  só pra saber tem como me ajudar a fazer aquele final dos 10% caso seja renda familiar baixa ? mais muito muito obrigado amigo :P 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hygor Mathias
   Coloque mais uma variável  do tipo real para a porcentagem por exemplo p, e aí quando

verificar se é turno da manhã, verifique também a categoria, se for baixa renda some 10 á

variável p ficando ela com o valor 10 que é o desconto de baixa renda, e quando for verificar
se é turno da tarde, coloque o valor de p igual ao desconto da tarde que é de 5 e ve-
rifique a categoria se é baixa renda, se for some mais 10, passando assim para 15, e no
turno da noite a mesma coisa;   E não precisa colocar esse escrevaL dentro de cada se,
coloque apenas no final depois do terceiro fimse   coloque assim :
valor := valor - valor * ( p / 100 )
escreval("O Valor Da Mensalidade É = R$",valor) 
escreval("
valor total do curso com descontos no período de um ano é R$",valor * 12)

Editado por devair1010

Compartilhar este post


Link para o post
Compartilhar em outros sites


 

MEU ALGORÍTIMO: 

algoritmo "Sistema de matricula"
// Função :
// Autor : Hygor Mathias
// Data : 13/05/2016
// Seção de Declarações 
var
Valor,você:real
Turno,categoria:Caractere
inicio
// Seção de Comandos 
EscrevaL ("------------------")
EscrevaL ("------CURSOS------")
EscrevaL ("------------------")
Escreva  ("Valor do Curso: R$")
Leia (valor)
Escreva  ("Escolha Turno M/T/N:")
Leia (turno)
Escreval ("Categoria do aluno, (B) Para Baixa Renda e (N) Para Renda Normal:")
Leia (categoria)
você:= (valor*12)
Escreval ("valor total do curso sem descontos no periodo de um ano:",você)
se (turno="m") e (Categoria="b") então
   escreval ("valor da mensalidade do aluno:",valor-valor*0.10)
       fimse
se (turno="m") e (categoria="n") então
    escreval ("valor da mensalidade do aluno:",valor)
Fimse
se(turno="t") e (categoria="n") então
   escreval ("valor da mensalidade do aluno:",valor-valor*0.05)
fimse
se(turno="t")e (categoria="b") então
   escreval ("valor da mensalidade do aluno:",(valor-valor*0.05)-valor*0.10)
       fimse
se(turno="n")e (categoria="b") então
   escreval ("valor da mensalidade do aluno:",(valor-valor*0.10)-valor*0.10)
       fimse
se (turno="n")e (categoria="n") então
    escreval ("valor da mensalidade do aluno:",valor-valor*0.10)
       fimse
 
fimalgoritmo




POR FAVOR, se possível postem Não só o algorítimo para me ajudar a terminar mais também uma explicação kkk porque gostaria de entender.

Editado por dif
Inserir o código dentro da tag CODE <>
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hygor
  para fazer essa restrição você pode colocar um repita, que vai ficar repetindo até
que seja digitado m ou t ou n, então depois do leia(valor) coloque assim :

repita
  limpatela     
  escreva("escolha o turno m = manha  t = tarde   n = noite")
  leia(turno)  
  se (turno <>"m") e (turno <>"t") e (turno <>"n") então
    escreva("turno não existente.      tecle enter")
    leia(a)
  fimse
ate (turno = "m") ou (turno = "t") ou (turno = "n")

E em seguida faça esse mesmo repita para verificar a categoria se é b ou n.
   E para saber quantos alunos são baixa renda ou renda normal você vai precisar de
mais duas variáveis, br para baixa renda e RN para renda normal, aí quando verificar
a categoria, se for b soma um à variável br e se for n some um à variável RN, então
o se ficaria assim :

se turno = "m" então
  p := 0  // porcentagem de desconto
  se categoria = "b" então
     p := 10  // porcentagem de desconto
    br := br+1  // baixa renda
  fimse
  se categoria = "n" então
    rn := rn+1  // renda normal
  fimse
fimse

colocando o se dessa forma acredito que fica mais fácil de entender;
Aí use esse se, dessa forma para verificar se o turno é tarde ou noite, sendo que a
variável p vai conter a porcentagem de desconto referente ao turno e mais 10 se for

baixa renda.
  E aí no final é só mostrar o resultado assim :

limpatela
valor := valor-valor * (p/100)
escreval("valor total do curso sem descontos no periodo de um ano:",voce)
escreval("valor total do curso com descontos no periodo de um ano:",valor * 12)
escreval("A quantidade de alunos de baixa renda é ",br," alunos")
escreval("A quantidade de alunos de renda normal é ",rn," alunos")
 

     E coloque tudo isso dentro de um repita, para fazer mais de um cadastro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@devair1010 Amigo consegui fazer Muito obrigado, mais gostaria de saber como ficaria o "Repita" do final.
seria: "Repita" "Ate" onde ???
esse ate q ta me bugando agora kkk

Editado por Hygor Mathias
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hygor
   Coloque mais uma variável, por exemplo x do tipo caractere .
   E o repita seria colocado no começo do algoritmo, logo depois da palavra inicio,
com isso todo o código seria repetido, fazendo mais um cadastro, e no final do
algoritmo, uma linha antes do fimalgoritmo coloque assim :

escreva("Tecle  < S >  Para Sair e  <  Enter  > Para Outro Cadastro")
leia(x)
ate x = "s"
fimalgoritmo

 

Editado por devair1010

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×