Ir ao conteúdo

Posts recomendados

Postado

Exercício: Desenvolva um algoritmo que peça ao usuário valores entre 100 e 200, caso o usuário digite um valor fora deste limite, o sistema deve fechar e exibir a mensagem ("valor fora do alcance").

var
  valor: inteiro


inicio
  escreval ("digite um valor entre 100 e 200: ")
  leia(valor)


  enquanto valor < > 100 e 200 faca
  leia(valor)
  fimenquanto
  
  escreval("valor fora do alcance: "

 

Estou tendo problema pra resolver a partir do comando Enquanto, que eu tento de várias formas chegar a solução, mas não encontro.

  • Obrigado 1
Postado

@Otonashi Oliveira       para postar seu código é melhor usar o botão   <>   que está lá na barra de ferramentas da janela de postar , pois senão seu código fica faltando alguns caracteres  ,   e no visualg você precisa colocar a comparação das variáveis separadas por parênteses , assim :

 enquanto (valor  >= 100) e (valor <= 200) faca

e o escreval está sem o fecha parênteses :

 escreval("valor fora do alcance:")

 

  • Curtir 1
Postado

Eu nao estou encontrando <> na barra de ferramentas da janela postar, você poderia tirar um print por favor? Pois eu usei <> que é aqui do teclado, mas fica dando erro do tipo "esperava um argumento do tipo logico", e nao estou conseguindo resolver esse problema 

  • Obrigado 1
  • Membro VIP
Postado

2#

 

Sobre:

  Em 16/09/2018 às 21:32, Otonashi Oliveira disse:

Pois eu usei <> que é aqui do teclado, mas fica dando erro do tipo "esperava um argumento do tipo logico", e nao estou conseguindo resolver esse problema 

Expandir  

 

Só para deixar claro... o "botão <>" não tem qualquer relação com o operador <> do Visualg (ou melhor, tem apenas que os símbolos são iguais, rs), ou seja, o botão <> do Fórum serve para postar códigos na postagem... já o comando <> no Visualg é um Operador Relacional, que basicamente serve para comparar dados.

 

 

 

3#

Sobre:

  Em 15/09/2018 às 18:10, Otonashi Oliveira disse:
var
  valor: inteiro


inicio
  escreval ("digite um valor entre 100 e 200: ")
  leia(valor)


  enquanto valor < > 100 e 200 faca
  leia(valor)
  fimenquanto
  
  escreval("valor fora do alcance: "
Expandir  

 

Dois ponto iniciais:

- Seu código está incompleto. Cadê o fimAlgoritmo? Falta também o algoritmo lá no topo do código.

- Sempre mantenha seu código indentado. Inclusive o próprio Visualg pode dar uma ajuda. Basta pressionar CTRL+G.

 

"Corrigindo" esses pontos teríamos algo assim:

algoritmo "Aqui o nome do meu programa"
var
   valor: inteiro
inicio
   escreval ("digite um valor entre 100 e 200: ")
   leia(valor)
   enquanto valor < > 100 e 200 faca
      leia(valor)
   fimenquanto
   escreval("valor fora do alcance: ")
fimAlgoritmo

Pronto. Em relação ao seu código, essa seria uma base mínima.

 

 

 

4#

Qual versão do Visualg está utilizando? recomendo a versão 3.6.0.5 (exemplo de link aqui), que é a então penúltima versão disponível (atual é a 3.7.0.0, mas não recomendo, pois tem alguns bugs).

 

Então, baseado nessa versão 3.6.0.5, ao compilar o seu código (contido em 3#) deu o seguinte erro:

 

"VisuAlg3 encontrou o seguinte problema em seu algoritmo, na linha 7:

Esperava encontrar FACA"

 

erro_visualg.png

 

Ou seja, como sugerido por @devair1010, a estrutura do comando enquanto está com erro de sintaxe, pois cada uma das "comparações" devem ser feitas separadamente... e para "conectá-las" usam-se os Operadores Lógicos.

 

  Em 16/09/2018 às 07:21, devair1010 disse:
 enquanto (valor  >= 100) e (valor <= 200) faca
Expandir  

 

Logo, tem uma expressão ("comparação") que verifica se valor é maior ou igual a 100; tem outra comparação que verificar se o valor é menor ou igual a 200 e tem um operador lógico que "calcula" o resultado final.

 

A primeira expressão resulta em VERDADEIRO ou FALSE (true ou false);

A segunda expressão resulta em VERDADEIRO ou FALSE (true ou false);

Ai o operador lógico "calcula" o resultado de uma resposta E a outra.

 

Ex. 1:

Se valor igual 160.

1ª expressão: 160 é maior ou igual a 100? resposta: VERDADEIRO

2ª expressão: 160 é menor ou igual a 200? resposta: VERDADEIRO
Operador lógico: VERDADEIRO e VERDADEIRO resulta em? resposta VERDADEIRO

Ou seja, o resultado final da expressão geral do enquanto resultou em VERDADEIRO, logo, o enquanto vai repetir.

 

Ex. 2:

Se valor igual 25.

1ª expressão: 25 é maior ou igual a 100? resposta: FALSO

2ª expressão: 25 é menor ou igual a 200? resposta: VERDADEIRO
Operador lógico: FALSO e VERDADEIRO resulta? resposta FALSO

Ou seja, o resultado final da expressão geral do enquanto resultou em FALSO, logo, o enquanto vai parar.

 

 

 

5#

Apenas para demonstrar:

Ah! e se eu quisesse o oposto? ou seja, que se digitasse um valor FORA da faixa desse limite de 100 e 200, o programa continuasse repetindo?

 

Ai a condição do enquanto seria a negação do atual:

Em vez de:

 enquanto (valor  >= 100) e (valor <= 200) faca

Poderia ser:

   enquanto (valor  < 100) ou (valor > 200) faca

 

Ex. 1:

Se valor igual 160.

1ª expressão: 160 é menor que 100? resposta: FALSO

2ª expressão: 160 é maior que 200? resposta: FALSO
Operador lógico: FALSO ou FALSO resulta em? resposta FALSO

Ou seja, o resultado final da expressão geral do enquanto resultou em FALSO, logo, o enquanto vai PARAR.

 

Ex. 2:

Se valor igual 25.

1ª expressão: 25 é menor 100? resposta: VERDADEIRO

2ª expressão: 25 é maior 200? resposta: FALSO
Operador lógico: VERDADEIRO ou FALSO resulta? resposta VERDADEIRO

Ou seja, o resultado final da expressão geral do enquanto resultou em VERDADEIRO, logo, o enquanto vai REPETIR.


Por ai vai.

 

***

 

 

Resumindo:

Se tiver dúvidas sobre o que é um Operador Relacional, pesquise sobre o tema;

Se tiver dúvidas sobre o que é um Operador Lógico, pesquise sobre o tema;

Se tiver dúvidas sobre a sintaxe do Enquanto, pesquise sobre o tem;

etc

 

Ou seja, no caso do seu código, o programa está no enquanto, daí, uma boa sugestão é (além de pesquisar sobre o comando) dá uma olhada em exemplos gerais sobre do comando... veja exemplos de como foi utilizado em outros códigos quaisquer e tente entender a estrutura.

 

No aguardo.

  • Curtir 2
Postado

Devo começar dizendo que a forma que você explica as coisas de forma completa acaba abrindo a mente das pessoas, realmente agradeço por me motivar dessa forma 

 

Eu dei uma pesquisada sobre as coisas que você citou abaixo, e isso realmente ajudou-me a entender melhor o comando enquanto, apesar de eu achar que eu preciso estudar mais ainda para ficar uma coisa mais concreta

  Em 17/09/2018 às 12:05, Simon Viegas disse:

Se tiver dúvidas sobre o que é um Operador Relacional, pesquise sobre o tema;

Se tiver dúvidas sobre o que é um Operador Lógico, pesquise sobre o tema;

Se tiver dúvidas sobre a sintaxe do Enquanto, pesquise sobre o tem;

Expandir  

 

Enfim, voltando ao exercicio

Algoritmo "Exercicio"
// Disciplina  :  [Linguagem e Lógica de Programação]

// Professor   : (curso online) e (clubedohardware)

// Descrição   : Desenvolva um algoritmo que peça ao usuário valores entre 100 e
// 200, caso o usuário digite um valor fora deste limite, o sistema deve fechar
//e exibir a mensagem (“valor fora do alcance”)

// Autor(a)    : Marcus

// Data atual  : 17/09/2018


Var
valor :inteiro


Inicio


escreval ("digite um valor entre 100 e 200")
leia (valor)



enquanto (valor >= 100) e (valor <= 200) faca
   leia (valor)
   escreval ("valor fora do alcance")
fimenquanto

Fimalgoritmo

 

Deu certo essa resolução, mas se eu por exemplo, digito 180 na primeira, e na segunda vez eu digito 180 novamente, ele acaba dizendo ("valor fora do alcance") sendo que eu acho que essa mensagem nao deveria aparecer nesse momento. Eu nao sei se isso esta certo, mas eu queria saber se tem como eu ficar digitando varias vezes por exemplo o 180 ou outro numero entre 100 e 200 sem que a mensagem ("valor fora do alcance")  apareça.

 

tipo assim, após apertar F9:

 

180
180
150
80
valor fora do alcance

 

Apesar de nao ter ficado como eu queria, se eu digitar normalmente como o enunciado pede, parece ficar certinho, mas eu quero saber se tem como ficar do jeito acima citado

  • Curtir 1
  • Obrigado 1
Postado

@Otonashi Oliveira    tem como ficar do jeito que você quer ,  e para isso você precisa verificar se o valor está ou não dentro da faixa ,  usando o comando se :

enquanto (valor >= 100) e (valor <= 200) faca
  leia (valor)
  se (valor<100) ou (valor>200) ENTÃO                                        
    escreval ("valor fora do alcance . . . !")
  senao
    escreval("Valor Dentro Da Faixa . . . !")
  fimse
fimenquanto

 

  • Curtir 1
  • Membro VIP
Postado

Olá.

 

1#

Sobre:

  Em 18/09/2018 às 00:02, Otonashi Oliveira disse:

Devo começar dizendo que a forma que você explica as coisas de forma completa acaba abrindo a mente das pessoas, realmente agradeço por me motivar dessa forma

Expandir  

 

Agradeço também o seu feedback. Estamos aqui para isso. Um dos objetivos centrais é essa colaboração mutua. :)

 

 

 

2#

Sobre:

  Em 18/09/2018 às 00:02, Otonashi Oliveira disse:

Deu certo essa resolução, mas se eu por exemplo, digito 180 na primeira, e na segunda vez eu digito 180 novamente, ele acaba dizendo ("valor fora do alcance") sendo que eu acho que essa mensagem nao deveria aparecer nesse momento. Eu nao sei se isso esta certo, mas eu queria saber se tem como eu ficar digitando varias vezes por exemplo o 180 ou outro numero entre 100 e 200 sem que a mensagem ("valor fora do alcance")  apareça.

 

tipo assim, após apertar F9:

 

180
180
150
80
valor fora do alcance

 

Apesar de nao ter ficado como eu queria, se eu digitar normalmente como o enunciado pede, parece ficar certinho, mas eu quero saber se tem como ficar do jeito acima citado

Expandir  

 

 

Vamos focar no problema em si:

  Em 15/09/2018 às 18:10, Otonashi Oliveira disse:

Exercício: Desenvolva um algoritmo que peça ao usuário valores entre 100 e 200, caso o usuário digite um valor fora deste limite, o sistema deve fechar e exibir a mensagem ("valor fora do alcance").

Expandir  

 

Então, de fato o programa deveria rodar mais ou menos como você sugeriu. Veja que o enunciado é explícito: "caso o usuário digite um valor fora deste limite, o sistema deve fechar e exibir a mensagem ("valor fora do alcance")".

 

O único detalhezinho seria que faltou a frase. Poderia ficar algo mais ou menos assim:

Digite valores entre 100 e 200
180
180
150
80
valor fora do alcance

 

Se for seguir essa definição, poderia ficar algo assim:

inicio
escreval("Digite valores entre 100 e 200")
leia(valor)
enquanto (valor >= 100) e (valor <= 200) faca
   leia (valor)
fimEnquanto
escreval("valor fora do alcance")
fimAlgoritmo

Perceba que só será "fora do alcance" se o número estiver "fora do alcance", ou seja, "enquanto" o número digitado estiver na faixa estipulada, vou continuar lendo números, caso contrário paro de ler.

 

 

EXTRAS:

  Mostrar conteúdo oculto

 

Dúvidas, críticas ou sugestões?

 

No aguardo.

adicionado 6 minutos depois

ADENDO:

 

Só um detalhe que me veio agora:

  Em 15/09/2018 às 18:10, Otonashi Oliveira disse:

[...] o sistema deve fechar e exibir a mensagem ("valor fora do alcance"). 

Expandir  

 

Obviamente seria primeiro "exibir a mensagem", só depois "fechar o sistema". Se não for nesse ordem, ficaria complicado, já que a mensagem é exibida no próprio "sistema".

 

Me lembrou aquele "Cúmulo da rapidez": «Fechar a gaveta, trancar e jogar a chave dentro».

  • Curtir 1
Postado

Agradeço por todos os detalhes que ofereceu

 

Concordo com você

  Em 18/09/2018 às 16:14, Simon Viegas disse:

Obviamente seria primeiro "exibir a mensagem", só depois "fechar o sistema". Se não for nesse ordem, ficaria complicado, já que a mensagem é exibida no próprio "sistema".

 

Expandir  

 

kkkkkkk, faz sentido.... perai, nao nao faz sentido kkkk

  Em 18/09/2018 às 16:14, Simon Viegas disse:

Me lembrou aquele "Cúmulo da rapidez": «Fechar a gaveta, trancar e jogar a chave dentro».

Expandir  

 

  • Curtir 2

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!