Ir ao conteúdo

Posts recomendados

Postado

Boa Tarde Caros Colegas!

Estive praticando alguns exercicios da Faculdade e novamente me deparei com um erro ao qual não estou conseguindo descobrir a solução, quem puder me ajuda agradeceria muito.

 

Algoritmo "Algoritmo_Sobre_Salario"
//
//
// Descrição   : Aqui você descreve o que o programa faz! (função)
// Autor(a)    : Nome do(a) aluno(a)
// Data atual  : 17/12/2020
Var
   // Seção de Declarações das variáveis
   salario, divida : real
   resultado: real

Inicio
   // Seção de Comandos, procedimento, funções, operadores, etc...
   escreval ("Qual o seu salário: ")
   leia(salario)
   escreval ("Quanto você esta devendo: ")
   leia(divida)
   resultado <- (salario - divida)

   se salario > 1.0 entao
      escreval ("Sua conta do banco está positiva: ",resultado)
   senao salario < 0.0
      escreval ("Sua conta do banco está negativa: ",resultado)
   fimse
Fimalgoritmo

 

O Algoritmo condicional não exibe o segundo resultado de "Sua conta do banco está negativa: " ..... Já analisei varias vezes e não descobri o erro.

 

Desde Já Agradeço!

  • Curtir 1
Postado

@danteerich  Eae man! beleza? Cara... a sua função condicional está errada. Veja:

se salario > 1.0 entao
   escreval ("Sua conta do banco está positiva: ",resultado)
senao salario < 0.0
   escreval ("Sua conta do banco está negativa: ",resultado)
fimse

A estrutura condicional "SE" deve avaliar uma váriável, certo. Neste caso a variável SALARIO. Até aqui está correto.
Repare que o SENAO deve ser executado SEMPRE e OBRIGATORIAMENTE toda vez que o SE retornar FALSO. Mas o que você fez foi tentar fazer mais uma vez a verificação da variável.

O correto seria:

se salario > 0 entao EXECUTA SEMPRE QUE O VALOR FOR POSITIVO (MAIOR QUE ZERO).
   escreval ("Sua conta do banco está positiva: ",resultado)
senao EXECUTA PARA TODOS OS OUTROS CASOS (MENOR DO QUE ZERO (NEGATIVO)).
   escreval ("Sua conta do banco está negativa: ",resultado)
fimse

  • Curtir 2
Postado

@danteerich Fiz as alterações e consegui resolver... Espero que ajuddeee!

 

Algoritmo "Algoritmo_Sobre_Salario"
// Descrição  : Aqui você descreve o que o programa faz! (função)
// Autor(a)  : Nome do(a) aluno(a)
// Data atual : 17/12/2020
Var
   // Seção de Declarações das variáveis
   salario, divida : inteiro
   resultado: inteiro

Inicio
   // Seção de Comandos, procedimento, funções, operadores, etc...
   escreval ("Qual o seu salário: ")
   leia(salario)
   escreval ("Quanto você esta devendo: ")
   leia(divida)
   resultado <- (salario - divida)

   se salario > divida entao
      escreval ("Sua conta do banco está positiva: ",resultado)
   senao salario < 0 entao
      escreval ("Sua conta do banco está negativa: ",resultado)
   fimse
Fimalgoritmo

 

  • Curtir 2
  • Membro VIP
Postado

@Gustavo.Loggin, só um adendo.

 

Sobre:

  Em 17/12/2020 às 19:48, Gustavo.Loggin disse:

se salario > 0 entao EXECUTA SEMPRE QUE O VALOR FOR POSITIVO (MAIOR QUE ZERO).
   escreval ("Sua conta do banco está positiva: ",resultado)
senao EXECUTA PARA TODOS OS OUTROS CASOS (MENOR DO QUE ZERO (NEGATIVO)).
   escreval ("Sua conta do banco está negativa: ",resultado)
fimse

Expandir  

 

Para o senao, seria algo meio que "EXECUTA PARA TODOS OS OUTROS CASOS (NÃO MAIORES QUE ZERO)", ou seja: para iguais a 0 ou negativos. Cuidado: nem todo número que não é maior que zero é negativo.

 

 

 

 

@MidoraQuebraTudo, só um adendo também.

 

Sobre:

  Em 17/12/2020 às 19:51, MidoraQuebraTudo disse:
   se salario > divida entao
      escreval ("Sua conta do banco está positiva: ",resultado)
   senao salario < 0 entao
      escreval ("Sua conta do banco está negativa: ",resultado)
   fimse
Expandir  

 

O senao basicamente funcionado como um "caso contrário" do se. No caso, o computador SEMPRE vai executar, OU o que está no se, OU vai executar o que está no senao. Mas, caso queira ter outra verificação dentro do senao, teria que colocar um outro se. Algo como:

 

   se salario > divida entao
      escreval ("Sua conta do banco está positiva: ",resultado)
   senao
      se salario < 0 entao
         escreval ("Sua conta do banco está negativa: ",resultado)
      fimSe
   fimSe

 

Mas de qualquer forma temos um erro conceitual nos códigos... Essa "análise" meio que valeria para todos... Então, o que está sendo verificado é o resultado, e não o salário. Seria algo como:

 

algoritmo "Algoritmo_Sobre_Salario"
// Descrição   : Aqui você descreve o que o programa faz! (função)
// Autor(a)    : Nome do(a) aluno(a)
// Data atual  : 17/12/2020
var
   salario, divida : real
   resultado: real

inicio
   escreval("Qual o seu salário: ")
   leia(salario)
   escreval("Quanto você esta devendo: ")
   leia(divida)

   resultado <- (salario - divida)

   se resultado > 0 entao
      escreval("Sua conta do banco está positiva. Tem R$ ", resultado:1:2)
   senao
      se resultado = 0 entao
         escreval("Sua conta do banco está zerada. Tem R$: ", resultado:1:2)
      senao
         escreval("Sua conta do banco está negativa. Tem R$: ", resultado:1:2)
      fimSe
   fimSe
fimAlgoritmo



A dica sempre permanece: foquem no problema, e não na solução. :)

 

Por aí vai.

  • Curtir 1
Postado
  Em 17/12/2020 às 19:48, Gustavo.Loggin disse:

@danteerich  Eae man! beleza? Cara... a sua função condicional está errada. Veja:

se salario > 1.0 entao
   escreval ("Sua conta do banco está positiva: ",resultado)
senao salario < 0.0
   escreval ("Sua conta do banco está negativa: ",resultado)
fimse

A estrutura condicional "SE" deve avaliar uma váriável, certo. Neste caso a variável SALARIO. Até aqui está correto.
Repare que o SENAO deve ser executado SEMPRE e OBRIGATORIAMENTE toda vez que o SE retornar FALSO. Mas o que você fez foi tentar fazer mais uma vez a verificação da variável.

O correto seria:

se salario > 0 entao EXECUTA SEMPRE QUE O VALOR FOR POSITIVO (MAIOR QUE ZERO).
   escreval ("Sua conta do banco está positiva: ",resultado)
senao EXECUTA PARA TODOS OS OUTROS CASOS (MENOR DO QUE ZERO (NEGATIVO)).
   escreval ("Sua conta do banco está negativa: ",resultado)
fimse

Expandir  

Agradeço a explicação!

  Em 17/12/2020 às 20:17, Simon Viegas disse:

@Gustavo.Loggin, só um adendo.

 

Sobre:

 

Para o senao, seria algo meio que "EXECUTA PARA TODOS OS OUTROS CASOS (NÃO MAIORES QUE ZERO)", ou seja: para iguais a 0 ou negativos. Cuidado: nem todo número que não é maior que zero é negativo.

 

 

 

 

@MidoraQuebraTudo, só um adendo também.

 

Sobre:

 

O senao basicamente funcionado como um "caso contrário" do se. No caso, o computador SEMPRE vai executar, OU o que está no se, OU vai executar o que está no senao. Mas, caso queira ter outra verificação dentro do senao, teria que colocar um outro se. Algo como:

 

   se salario > divida entao
      escreval ("Sua conta do banco está positiva: ",resultado)
   senao
      se salario < 0 entao
         escreval ("Sua conta do banco está negativa: ",resultado)
      fimSe
   fimSe

 

Mas de qualquer forma temos um erro conceitual nos códigos... Essa "análise" meio que valeria para todos... Então, o que está sendo verificado é o resultado, e não o salário. Seria algo como:

 

algoritmo "Algoritmo_Sobre_Salario"
// Descrição   : Aqui você descreve o que o programa faz! (função)
// Autor(a)    : Nome do(a) aluno(a)
// Data atual  : 17/12/2020
var
   salario, divida : real
   resultado: real

inicio
   escreval("Qual o seu salário: ")
   leia(salario)
   escreval("Quanto você esta devendo: ")
   leia(divida)

   resultado <- (salario - divida)

   se resultado > 0 entao
      escreval("Sua conta do banco está positiva. Tem R$ ", resultado:1:2)
   senao
      se resultado = 0 entao
         escreval("Sua conta do banco está zerada. Tem R$: ", resultado:1:2)
      senao
         escreval("Sua conta do banco está negativa. Tem R$: ", resultado:1:2)
      fimSe
   fimSe
fimAlgoritmo



A dica sempre permanece: foquem no problema, e não na solução. :)

 

Por aí vai.

Expandir  

Valeu ! Estava quebrando a cabeça.... mas o meu erro foi na lógica! Agradeço

  Em 17/12/2020 às 19:51, MidoraQuebraTudo disse:

@danteerich Fiz as alterações e consegui resolver... Espero que ajuddeee!

 

Algoritmo "Algoritmo_Sobre_Salario"
// Descrição  : Aqui você descreve o que o programa faz! (função)
// Autor(a)  : Nome do(a) aluno(a)
// Data atual : 17/12/2020
Var
   // Seção de Declarações das variáveis
   salario, divida : inteiro
   resultado: inteiro

Inicio
   // Seção de Comandos, procedimento, funções, operadores, etc...
   escreval ("Qual o seu salário: ")
   leia(salario)
   escreval ("Quanto você esta devendo: ")
   leia(divida)
   resultado <- (salario - divida)

   se salario > divida entao
      escreval ("Sua conta do banco está positiva: ",resultado)
   senao salario < 0 entao
      escreval ("Sua conta do banco está negativa: ",resultado)
   fimse
Fimalgoritmo

 

Expandir  

Valeu !

Me ajudou muito! agora vou prestar mais atenção na lógica!

  • Membro VIP
Postado

@danteerich, só para ficar claro:

 

Esse código do @MidoraQuebraTudo está com erro de sintaxe:
 

  Em 17/12/2020 às 19:51, MidoraQuebraTudo disse:

   se salario > divida entao
      escreval ("Sua conta do banco está positiva: ",resultado)
   senao salario < 0 entao
      escreval ("Sua conta do banco está negativa: ",resultado)
   fimse
Expandir  

 

Ali depois do senao faltou o se (e teria que ficar na linha de baixo). Esse código não era nem para rodar... para provar, veja:

 

image.png

 

2000 não é menor que 0 (é maior)... ou seja: não era para exibir a mensagem... concordam?

 

De um modo geral.., como citado mais acima, o "erro" já estaria em colocar comandos ao lado do senao... o VisualG não aceita isso (por algum bug ele não informa que está errado e simplesmente ignora o que veio depois).. teria que ficar na linha de baixo. Vide meu código na postagem anterior.

 

No aguardo.

Postado
  Em 17/12/2020 às 20:37, Simon Viegas disse:

@danteerich, só para ficar claro:

 

Esse código do @MidoraQuebraTudo está com erro de sintaxe:
 

 

Ali depois do senao faltou o se (e teria que ficar na linha de baixo). Esse código não era nem para rodar... para provar, veja:

 

image.png

 

2000 não é menor que 0 (é maior)... ou seja: não era para exibir a mensagem... concordam?

 

De um modo geral.., como citado mais acima, o "erro" já estaria em colocar comandos ao lado do senao... o VisualG não aceita isso (por algum bug ele não informa que está errado e simplesmente ignora o que veio depois).. teria que ficar na linha de baixo. Vide meu código na postagem anterior.

 

No aguardo.

Expandir  

Entendo. sua explicação esta me ajudando muito, e o VisualG como você falou não acusa erro, mas o bug é bem evidente. Novamente quero agradecer seu esclarecimento neste problema que tive.

  • Curtir 1
  • Membro VIP
Postado

Só para complementar e ao mesmo tempo demonstrar... vejam:
 

Como a exibição do saldo está repetido. Daria para simplificar. Exemplo:

 

   se resultado > 0 entao
      escreva ("Sua conta do banco está positiva.")
   senao
      se resultado = 0 entao
         escreva ("Sua conta do banco está zerada.")
      senao
         escreva ("Sua conta do banco está negativa.")
      fimSe
   fimSe
   
   escreval(" Tem R$ ", resultado:1:2)
fimAlgoritmo

 


Outra forma:

   escreval("Saldo no banco: R$", resultado:1:2)
   
   se resultado > 0 entao
      escreval("Sua conta do banco está positiva")
   senao
      se resultado = 0 entao
         escreval("Sua conta do banco está zerada")
      senao
         escreval("Sua conta do banco está negativa")
      fimSe
   fimSe
fimAlgoritmo

 

 

@danteerich, qual o enunciado dessa questão? A criação do algoritmo depende do que foi pedido. Mesmo "corrigindo" esses detalhes da sintaxe, ele pode está errado em relação ao que deveria ser feito...

 

Tipo... é meio que um cliente pedir um cachorro-quente e o garçom trazer um delicioso hambúrguer artesanal, cheio de acompanhamento e tal... mas sendo que o cara quer um cachorro-quente. Não basta ser bem feito, tem que fazer o que se pede.

Postado
  Em 17/12/2020 às 21:01, Simon Viegas disse:

Só para complementar e ao mesmo tempo demonstrar... vejam:
 

Como a exibição do saldo está repetido. Daria para simplificar. Exemplo:

 

   se resultado > 0 entao
      escreva ("Sua conta do banco está positiva.")
   senao
      se resultado = 0 entao
         escreva ("Sua conta do banco está zerada.")
      senao
         escreva ("Sua conta do banco está negativa.")
      fimSe
   fimSe
   
   escreval(" Tem R$ ", resultado:1:2)
fimAlgoritmo

 


Outra forma:

   escreval("Saldo no banco: R$", resultado:1:2)
   
   se resultado > 0 entao
      escreval("Sua conta do banco está positiva")
   senao
      se resultado = 0 entao
         escreval("Sua conta do banco está zerada")
      senao
         escreval("Sua conta do banco está negativa")
      fimSe
   fimSe
fimAlgoritmo

 

 

@danteerich, qual o enunciado dessa questão? A criação do algoritmo depende do que foi pedido. Mesmo "corrigindo" esses detalhes da sintaxe, ele pode está errado em relação ao que deveria ser feito...

 

Tipo... é meio que um cliente pedir um cachorro-quente e o garçom trazer um delicioso hambúrguer artesanal, cheio de acompanhamento e tal... mas sendo que o cara quer um cachorro-quente. Não basta ser bem feito, tem que fazer o que se pede.

Expandir  

Entendi! Com suas orientações e dicas vou melhorar muito no entendimentos destes problemas de sintaxes e lógica.

Postado
  Em 17/12/2020 às 21:38, Simon Viegas disse:

@danteerich, qual o enunciado do problema?

Expandir  

Crie um Algoritmo que calcule os dividendos sobre o salário mensal de um profissional X, e apresente se sua conta bancaria ficara positiva ou negativa(sempre exibindo o salário final).

 

Esse é o enunciado da questão.

Através do meu entendimento e conhecimento básico, tentei criar aquele algoritmo que postei .

O Professor não deu nenhum valor para nenhuma variável por isso tive muita dificuldade porque sou iniciante ainda.

Postado
  Em 17/12/2020 às 20:17, Simon Viegas disse:

@Gustavo.Loggin, só um adendo.

 

Sobre:

 

Para o senao, seria algo meio que "EXECUTA PARA TODOS OS OUTROS CASOS (NÃO MAIORES QUE ZERO)", ou seja: para iguais a 0 ou negativos. Cuidado: nem todo número que não é maior que zero é negativo.

 

 

 

 

@MidoraQuebraTudo, só um adendo também.

 

Sobre:

 

O senao basicamente funcionado como um "caso contrário" do se. No caso, o computador SEMPRE vai executar, OU o que está no se, OU vai executar o que está no senao. Mas, caso queira ter outra verificação dentro do senao, teria que colocar um outro se. Algo como:

 

   se salario > divida entao
      escreval ("Sua conta do banco está positiva: ",resultado)
   senao
      se salario < 0 entao
         escreval ("Sua conta do banco está negativa: ",resultado)
      fimSe
   fimSe

 

Mas de qualquer forma temos um erro conceitual nos códigos... Essa "análise" meio que valeria para todos... Então, o que está sendo verificado é o resultado, e não o salário. Seria algo como:

 

algoritmo "Algoritmo_Sobre_Salario"
// Descrição   : Aqui você descreve o que o programa faz! (função)
// Autor(a)    : Nome do(a) aluno(a)
// Data atual  : 17/12/2020
var
   salario, divida : real
   resultado: real

inicio
   escreval("Qual o seu salário: ")
   leia(salario)
   escreval("Quanto você esta devendo: ")
   leia(divida)

   resultado <- (salario - divida)

   se resultado > 0 entao
      escreval("Sua conta do banco está positiva. Tem R$ ", resultado:1:2)
   senao
      se resultado = 0 entao
         escreval("Sua conta do banco está zerada. Tem R$: ", resultado:1:2)
      senao
         escreval("Sua conta do banco está negativa. Tem R$: ", resultado:1:2)
      fimSe
   fimSe
fimAlgoritmo



A dica sempre permanece: foquem no problema, e não na solução. :)

 

Por aí vai.

Expandir  

 
@Simon Viegas  Tem razão. Boa observação. Mas fiquei intrigado com a sua informação "nem todo número que não é maior que zero é negativo". Com isso tu se referiu ao próprio ZERO? Se não, dê-me um exemplo por favor.

  • Membro VIP
Postado
  Em 18/12/2020 às 13:22, Gustavo.Loggin disse:

Com isso tu se referiu ao próprio ZERO?

Expandir  

 

Isso. No sentido que eu estou falando, a (ideia¹ da) lógica no teu código estaria correta:

 

  Em 17/12/2020 às 19:48, Gustavo.Loggin disse:

se salario > 1.0 entao
   escreval ("Sua conta do banco está positiva: ",resultado)
senao salario < 0.0
   escreval ("Sua conta do banco está negativa: ",resultado)
fimse

Expandir  

 

Ali, antes, estaria verificando se é menor que zero, ou seja: não bastaria simplesmente ser um "senao" (não ser positivo)... precisaria existir OUTRA verificação específica (ser menor que 0).

 

Já abaixo... poderia levar a uma interpretação errada para quem ler desatento. Vide:

 

  Em 17/12/2020 às 19:48, Gustavo.Loggin disse:

se salario > 0 entao EXECUTA SEMPRE QUE O VALOR FOR POSITIVO (MAIOR QUE ZERO).
   escreval ("Sua conta do banco está positiva: ",resultado)
senao EXECUTA PARA TODOS OS OUTROS CASOS (MENOR DO QUE ZERO (NEGATIVO)).
   escreval ("Sua conta do banco está negativa: ",resultado)
fimse

Expandir  

 

Ao dizer "EXECUTA PARA TODOS OS OUTROS CASOS" estaria meio que dizendo que "todos os outros casos são negativos". E não seria. Se existir um caso que não é, o "todo" deixa de existir na frase.

 

De um modo prático... o se/senão é uma estrutura que SEMPRE ou vai executar o que está no se, ou vai executar o que está no senao. Seria um caso de ou exclusivo... sempre será uma coisa ou outra.. nunca ambos, e nunca nenhum dos dois.

 

 

 

Como analogia, vejamos o conjunto ℤ+ = {0, 1, 2, 3, 4, ...}. É comum, erroneamente, denominar de "conjunto dos números positivos", quando na verdade seria definido de "conjunto dos números não-negativos". É um sutil diferença que faz toda a diferença. O conjunto dos números positivos seria Z+*, que seria o conjunto dos números inteiros, sem os negativos e sem o zero. Por aí vai.

 

 

 

 

 

¹ falo de "ideia", pois, como citei em outra postagem, faltou o se e teria que ficar na linha de baixo.

Ficar algo assim:

  Em 17/12/2020 às 19:48, Gustavo.Loggin disse:

se salario > 1 entao
   escreval ("Sua conta do banco está positiva: ", resultado)
senao

  se salario < 0 entao
     escreval ("Sua conta do banco está negativa: ", resultado)
fimSe

Expandir  


Cada se é uma estrutura isolada. Daí um se pode ter senao ou não. O teu código estaria assim:


image.png

 

Para o retângulo vermelho, sempre vai executar ou o que tá no se, ou o que está no senao. Para o azul, ou executar o se, ou simplesmente não executa...

 

Poria ser assim também:

image.png

 

Percebam que o retângulo azul está dentro do vermelho. Caso o se vermelho resultar em falso, vai executar o senao. Tudo que está lá.. eventualmente tem um outro se/senao... mas poderia ter qualquer coisa... não existe vínculo entre um uma estrutura e outra, sacam? aí o se azul vai segui a mesma lógica normal do se/senao... computador simplesmente vai seguindo o fluxo... os se servem para direcionar para um caminho ou outro.

 


Adendo: se não me engano, tem uns bugs usando casa decimal (ex.: 0.0). Tô com preguiça de testar nesse momento, rs.

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades sobre tecnologia do Brasil. Leia mais

Mostrar 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

Mostrar mais  
×
×
  • Criar novo...