Ir ao conteúdo
  • Cadastre-se
Matheus Alberto

Menu de opções;(iniciante.)

Recommended Posts

Faça Um programa receba o código do cliente o tipo de conta e o valor investido e que calcule e mostre o rendimento mensal de acordo com o tipo de investimento. AO final do Programa mostre o Total investido e o total de Juros Pago.
programa terminar ao digitar Zero.minha duvida e que meu programa nao Finaliza ao digita 0, ele entra na Poupança nao importa se eu coloco (menu<>0) ou (Menu>=1 <=1) nao Importa Meu codigo. Apenas ao colcar que todos sao MAIOr (menu>=1) que o programa finaliza com zero , mas assim todos os numeros entrarao em poupança e nao Consigo Achar o erro, Por favor pessoal me Ajudem ,esse eo Unico menu que nao estou conseguindo entender, Obrigado (Iniciante.)
Visualg Portugol.

// Seção de Declarações 
var
menu,i,n1,n2,soma,multiplo:inteiro
diviso,porc,ferias,dt:real
inicio
// Seção de Comandos
escreval("Seção de menus. ")
escreval("1.Poupança ")
escreval("2.Poupança Plus ")
escreval("3.Fundos de Renda Fixa ")
escreval("Digite 0 para Sair")
escreval("Digite a opção Desejada.")
leia(menu)
enquanto (menu<=1)faca
se (menu<=1) então
escreval(".Poupança.")
escreval("Digite o valor do investimento.")
leia(n1)
escreval("Porcentagem Rendimento Mensal 1,5%")
porc<-n1*0.015
escreval("Novo Valor do Investimento:",porc+n1," R$")
 fimse
escreval("")
escreval("1.Poupança ")
escreval("2.Poupança Plus ")
escreval("3.Fundos de Renda Fixa ")
escreval("0.Digite 0 para Sair")
escreval("Digite a opção Desejada.")
leia(menu)
fimenquanto
enquanto (menu<=2)faca
se (menu<=2)então
escreval(".Poupança Plus.")
escreval("Digite o valor do investimento.")
leia(n1)
escreval("Porcentagem Rendimento Mensal 2%")
porc<-n1*0.02
escreval("Novo Valor do Investimento:",porc+n1," R$")
fimse
escreval("")
escreval("1.Poupança ")
escreval("2.Poupança Plus ")
escreval("3.Fundos de Renda Fixa ")
escreval("Digite 0 para Sair")
fimenquanto
enquanto (menu<=3)faca
se(menu<=3)então
escreval(".Fundos de Renda Fixa.")
escreval("Digite o valor do investimento.")
leia(n1)
escreval("Porcentagem Rendimento Mensal 3%")
porc<-n1*0.03
escreval("Novo Valor do Investimento:",porc+n1," R$")
fimse
escreval("")
escreval("1.Poupança ")
escreval("2.Poupança Plus ")
escreval("3.Fundos de Renda Fixa ")
escreval("Digite 0 para Sair")
fimenquanto
enquanto(menu<=0)faca
se (menu<=0)então
escreval("finalizando")
fimse
caso (menu>4)
escreval("Opção Invalida")
fimescolha

 

Editado por dif
Inserir o código dentro da tag CODE

Compartilhar este post


Link para o post
Compartilhar em outros sites

E aí, Matheus!?

Seguinte: seu código possui dois erros fatais e um de performance. Vamos ver quais são eles, para você consertar e aprender. :thumbsup:

Primeiro erro fatal
Quando trabalhamos com alternativas, nesses casos, devemos colocar expressões condicionais exatas. Preste atenção que, se eu quero acessar a "Poupança", posso ter a alternativa (menu = 1).

enquanto (menu<=1)faca

Vemos, acima, que sua condição é se a variável "menu" for menor ou igual a um.
Isto não é uma expressão exata, porque você explicitou que pode acontecer mais de um valor, e não é isso que queremos!

As alternativas, nessa expressão que você fez, é que pode ser número 1 ou os outros, antes dele (como 0, -1, -2).

Como você resolveria isso?

  • Invés de utilizar "<=", usarias somente o sinal de igual.


Segundo erro fatal
Se quiseres dar um menu de opções para um usuário, não precisas fazer várias estruturas de repetição "enquanto". Isso, porque você pode colocar todas as condições "se" dentro de um único laço "enquanto", usando a expressão adequada.

Erro de performance

Este é um erro que não vai afetar a funcionalidade de seu código, mas vai te atrapalhar no tamanho, do mesmo. Quando eu falo em erro de performance, eu digo à respeito de utilizares várias condições "se", sem aninhar.
Veja o exemplo:

Se (1 = 1) então
    Escreva("2")
fimSe
Se (2 = 2) então
    Escreva("3")
fimSe

Acontece que você colocou uma condição após a outra, sendo que poderíamos aninhar:

Se (1 = 1) então
    Escreva("2")
Senao
   Se (2 = 2) então
      Escreva("3")
   fimSe
fimSe

A diferença é que se a primeira condição for verdadeira, o código não vai executar a segunda. Esse exemplo será bastante útil para seu exercício, se você utilizar somente uma estrutura "enquanto", como eu disse.

Exemplo de como poderia ser seu código:

enquanto (menu<=1)faca
	se (menu<=1) então
		escreval(".Poupança.")
		escreval("Digite o valor do investimento.")
		leia(n1)
		escreval("Porcentagem Rendimento Mensal 1,5%")
		porc<-n1*0.015
		escreval("Novo Valor do Investimento:",porc+n1," R$")
	Senao
		se (menu<=2)então
			escreval(".Poupança Plus.")
			escreval("Digite o valor do investimento.")
			leia(n1)
			escreval("Porcentagem Rendimento Mensal 2%")
			porc<-n1*0.02
			escreval("Novo Valor do Investimento:",porc+n1," R$")
  		FimSe
	FimSe
	escreval("")
	escreval("1.Poupança ")
	escreval("2.Poupança Plus ")
	escreval("3.Fundos de Renda Fixa ")
	escreval("0.Digite 0 para Sair")
	escreval("Digite a opção Desejada.")
	leia(menu)
fimenquanto

Da pra ver que o código vai executar ou a "Poupança" ou a "Poupança Plus" e vai mostrar o menu, depois.
Como tinhas feito, repetias o menu duas vezes, mas assim só precisamos escrever uma, aliviando o trabalho braçal.

 

Resumindo

  1. Modifique as expressões condicionais, para um número exato;
  2. Utilize somente 1 laço de repetição;
  3. Tente aprender aninhamento de estruturas.

Ps: Você já aprendeu a utilizar estrutura condicional "Escolha-Caso"? Você faria esse exercício brincando.

Vou estar disposto a sanar novas dúvidas, sobre este tópico. Basta responder!

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

×