Ir ao conteúdo

Posts recomendados

Postado

Eu tenho tido problemas em resolver exercícios propostos por uma apostila com a sintaxe de repetição "enquanto", o problema é que eu não vejo erro no meu algoritmo e ainda assim o console do VisualG não me dá o que meu algoritmo está programado para fazer, irei postar dois algoritmos aqui com o problema escrito e o que está acontecendo com cada um deles, ajuda por favor, como eu acho que esta correto não sei mais por onde seguir...

Primeiro: Dizer sim e não (com enquanto), problema:

" Escreva um algoritmo para ler dois valores. Após a leitura deve-se calcular a soma dos valores lidos e armazená-la em uma variável. Após o cálculo da soma, escrever o resultado e escrever também a pergunta 'Novo Cálculo (S/N)?'. Deve-se ler a resposta e se a resposta for 'S' (sim), deve-se repetir todos os comandos (instruções) novamente, mas se a resposta for 'N' (não), o algoritmo deve ser finalizado escrevendo a mensagem 'Fim dos Cálculos'. "

O problema na resolução desse problema é que eu não consigo receber a mensagem: "Fim dos cálculos." quando eu dou uma resposta negativa no console do VisualG, mas quando eu uso o caractere que relacionei (obrigado @devair1010) com a variável booleana com uma resposta positiva o looping da repetição dos cálculos acontece, aqui está como eu vejo totalmente correto e devendo aparecer a mensagem de fim dos cálculos:

 

Algoritmo "naoentendinada"
// 
//  
// Descrição   : Aqui você descreve o que o programa faz! (função)
// Autor(a)    : Nome do(a) aluno(a)
// Data atual  : 22/06/2021
Var
// Seção de Declarações das variáveis 
                          a: real
                          b: real
                          c: logico
                          opcao: caractere
                          resultado: real

Inicio
// Seção de Comandos, procedimento, funções, operadores, etc... 
                              enquanto (c = "verdadeiro") faca
                              
                              escreva ("Informe um numero:")
                              leia (a)
                              escreva ("Informe um numero:")
                              leia (b)
                              resultado <- a+b
                              escreval ("O resultado é:",resultado)
                              escreva ("Novo calculo (S/N)?")
                              leia (opcao)
                              se opcao = "s" entao
                              c = "verdadeiro"
                              fimse
                              leia (opcao)
                              se opcao = "n" entao
                              c = "falso"
                              escreva ("Fim dos Calculos.")
                              fimse
                              fimenquanto


Neste algoritmo /\ fiquei pensando se o problema não esta em ter um  ( c = "verdadeiro" ) no meio do codigo, sei la.

O outro problema (que alias e bem simples):

Escreva um algoritmo para ler um valor entre 1 (inclusive) e 10 (inclusive). Se o valor lido não estiver entre 1 (inclusive) e 10 (inclusive), deve ser lido um novo valor.

 

Algoritmo "semnome"
// 
//  
// Descrição   : Aqui você descreve o que o programa faz! (função)
// Autor(a)    : Nome do(a) aluno(a)
// Data atual  : 27/06/2021
Var
// Seção de Declarações das variáveis 
                          a: real
                          b: real
                          

Inicio
// Seção de Comandos, procedimento, funções, operadores, etc... 
                             enquanto (1<=10) faca
                             
                             escreva ("Informe um numero:")
                             leia (a)
                             se (a) <> (1<=10) entao
                             leia (b)
                             (b) = 20
                             fimse
                             fimenquanto


Fimalgoritmo


também tentei colocar "escreva (b)" no lugar de "leia (b)" mas me da erro exatamente nessa linha ou na (b) = 20 não lembro.


alguém ajuda, corrige, sei la, me fala se ta certo, se é o visual g, alguma coisa, porque sozinho não vou conseguir avançar...

  • Curtir 1
Postado

@xisxisde Eu baixei aqui o visualG e (nunca programei nisso, mas...) o certo seria você colocar a mensagem depois do comando enquanto

	enquanto ... faca
    	// O algoritmo vai aqui  
	fimEnquanto
	escreva("Fim dos calculos")

 

Eu fiz um exemplo aqui

algoritmo "somaValores"

var
   n1, n2, soma: real
   opcao: caractere
   
inicio
      // Inicia a variavel opção
      opcao <- "s"
      enquanto opcao = "s" faca
               // Pede as informações para o úsuario
               escreva("Digite um numero")
               leia(n1)
               escreva("Digite outro numero")
               leia(n2)
               // Soma os numeros
               soma <- n1+n2
               // Mostra o resultado
               escreva("A soma de ", n1," com ", n2," e igual a ", soma)
               // Pergunta se o úsuario que repetir o algoritomo
               escreva("Quer ir novamente S/N")
               leia(opcao)
      fimEnquanto
      // Encerra o algoritmo
      escreva("fim dos calculos")
fimAlgoritmo

Ele funcionou aqui no visualG 3.0.7 mas eu estou no linux e tudo ficou meio esquisito

999550092_Capturadetela_2021-06-27_16-05-57.thumb.png.7eed92d2b079f8626b46229efd5b6636.png

 

  • Curtir 1
Postado

Eu entendi o que você fez, você fez o loop do sim mas não declarou negatividade (falso) para receber fim dos calculos simplesmente deu um comando "escreva ("Fim dos calculos.").

Sem ser desrespeitoso é claro eu so estou falando o que vi, parece que esses exercicios dessa professora flavia são meio estranhos kkkkkkkkkkkkkk

  • Curtir 1
  • Haha 1
Postado
7 minutos atrás, xisxisde disse:

Eu entendi o que você fez, você fez o loop do sim mas não declarou negatividade (falso) para receber fim dos calculos simplesmente deu um comando "escreva ("Fim dos calculos.").

foi o que eu entendi, se era para fazer de outra maneira o enunciado não deixou claro.

2 horas atrás, xisxisde disse:
 enquanto (1<=10) faca

Aqui você não está usando uma variável, é o correto seria comparar se está entre a faixa dessa maneira

	enquanto (numero < 1) ou (numero > 10) faca

 

Exemplo completo

Algoritmo "Faixa"

var
   numero: inteiro
   
inicio
      numero <- 0
      enquanto (numero < 1) ou (numero > 10) faca
               escreva("Digite um numero entre 1 e 10")
               leia(numero)
               se (numero < 1) ou (numero > 10) entao
                  escreva("Numero fora da faixa")
               fimSe
      fimEnquanto
      escreva("O numero esta na faixa")
      escreva("O programa sera encerrado")
fimAlgoritmo

 

  • Curtir 1
Postado

@xisxisde     sim ali é por causa do   "   c = "verdadeiro"    "  mesmo  e também não pode ter essas aspas duplas  , que no visualG  se escreveria assim  :

c <- verdadeiro

e seu código ficaria assim  :

Algoritmo "naoentendinada"
//
//
// Descrição   : Aqui você descreve o que o programa faz! (função)
// Autor(a)    : Nome do(a) aluno(a)
// Data atual  : 27/06/2021
Var
// Seção de Declarações das variáveis
                          a: real    // criou a variaveL a  e colocou o vaLor Zero.zero nela
                          b: real    // criou a variaveL b  e colocou o vaLor Zero.zero nela
                          c: logico  // criou a variaveL c  e colocou o vaLor falso nela
                          opcao: caractere // criou a variaveL opcao  e colocou o vaLor vazio nela
                          resultado: real  // criou a variaveL resultado  e colocou o vaLor zero.zero nela

Inicio
// Seção de Comandos, procedimento, funções, operadores, etc...
                              escreval("variaveL c criada com esse valor ",c)
                              c <- verdadeiro
                              escreval("variaveL c recebe esse valor ",c)
                              enquanto (c = verdadeiro ) faca // identação
                                escreva ("Informe um numero:")
                                leia (a)
                                escreva ("Informe um numero:")
                                leia (b)
                                resultado <- a + b
                                escreval
                                escreval("O resultado é ----: ",resultado)
                                escreval
                                escreval
                                escreva ("Novo calculo (S/N) ? ")
                                leia (opcao)
                                se opcao = "s" entao // identação
                                  c <- verdadeiro
                                senao                // identação
                                  c <- falso
                                fimse
                              fimenquanto
                              limpatela
                              mudacor("vermelho","frente")
                              mudacor("amarelo" ,"fundos")
                              escreval
                              escreval
                              escreva("                 ")
                              escreva("Fim dos Calculos.")
                              escreval
                              escreval
                              escreval
Fimalgoritmo

o segundo você está comparando de forma errada , poderia ser assim  :

Algoritmo "semnome"
// 
//  
// Descrição   : Aqui você descreve o que o programa faz! (função)
// Autor(a)    : Nome do(a) aluno(a)
// Data atual  : 27/06/2021
Var
// Seção de Declarações das variáveis 
                          a: real  // criou a variaveL a  e colocou o vaLor zero.zero nela
                          b: real  // criou a variaveL b  e colocou o vaLor zero.zero nela
                          

Inicio
// Seção de Comandos, procedimento, funções, operadores, etc... 
                             enquanto (1<=10) faca  // precisa compara com uma variaveL
                             
                             escreva ("Informe um numero:")
                             leia (a)
                             se (a) <> (1<=10) entao // bariaveL  a não está sendo comparada com nada
                             leia (b)  // não precisa dessa 
                             (b) = 20  // não precisa de parenteses para adicionar valor a alguma variaveL
                             fimse // a identação ajuda muito
                             fimenquanto // fim do lop
                             // fazer comentarios auxilia a quem lê o código , inclusive você mesmo
                             // pois algums dias depois você não se lembrará de nada do que escreveu
                             // de comandos para  as variáveis , e também a outros que vierem a ler seus 
                             // códigos


Fimalgoritmo

e deixar esse monte de espaços no início de cada linha é bem chato , melhor começar do início da Linha mesmo e fazer a identação do código , para ficar mais fáciL  detectar erros e compreensão de onde começa e onde termina o loop , portanto o que está dentro e fora do loop , e seu código poderia ser assim  :

Algoritmo "entre 1 e 10"
// Data atual  : 27/06/2021
Var
                          a: real // criou a variaveL e colocou o valor zero.zero nela
                          b: real // criou b variaveL e colocou o valor zero.zero nela
Inicio
                             a := 1 // colocou o valor 1 na variaveL  a
                             enquanto ( a >= 1.0 ) e ( a <=10.0 ) faca // loop
                               // com Dois pares de parenteses pois são duas comparações
                               escreva ("Informe um numero:") // mensagem
                               leia( a ) // input  essa é a única entrada de dados
                                         // no visualG 3.0
                             fimenquanto // fim do loop

Fimalgoritmo

 

  • Curtir 1
  • 2 semanas depois...
  • Membro VIP
Postado

Exemplo resumido:

 

algoritmo "Exercício com enquanto"
// Descrição   : Aqui você descreve o que o programa faz! (função)
// Autor(a)    : Nome do(a) aluno(a)
// Data atual  : 22/06/2021
var
   a, b: real
   continuar: logico
   opcao: caractere
   resultado: real
inicio
   continuar <- VERDADEIRO //atencao: é sem aspas duplas mesmo
   enquanto (continuar) faca
      escreva ("Informe um numero: ")
      leia(a)
      escreva ("Informe um numero: ")
      leia(b)
      resultado <- a+b
      escreval("O resultado é:", resultado)
      escreva("Novo calculo (S/N)?")
      leia (opcao)
      se opcao = "N" entao
         continuar <- FALSO
      fimse
      escreval("")
   fimEnquanto
   escreva ("Fim dos Calculos.")
fimAlgoritmo

 

  • 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

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

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!