Ir ao conteúdo

Posts recomendados

Postado
programa
{
	
	funcao inicio()
	{
		inteiro distancia1, distancia2, distancia3

		escreva("Digite o valor da primeira distancia:")
		leia(distancia1)

		escreva("Digite o valor da segunda distancia:")
		leia(distancia2)

		escreva("Digite o valor da terceira distancia:")
		leia(distancia3)

		se distancia1 > distancia2 e distancia1 > distancia3
		{
		escreva("A maior distancia é: ", distancia1)	
		}
		senao se distancia2 > distancia1 e distancia2 > distancia3
		{
		escreva("A maior distancia é: ", distancia2)
		}
		senao se distancia3 > distancia1 e distancia3 > distancia2
		{
		escreva("A maior distancia é: ", distancia3)
		}
		
	}
}

 

Então, primeiramente bom dia. Nesse código que eu fiz no portugol studio a título de aprendizagem (to fazendo um curso ^^), no primeiro desvio condicional onde eu relaciono a variável "distancia1" com as "distancia2" e a "distancia3" o portugol ta me dizendo que a variável "distancia1" não foi inicializada corretamente e que é para eu inserir "(" para corrigir o problema. Então eu coloco as operações com as variáveis entre parênteses e outro erro ocorre, agora com a expressão lógica "e". Alguém pode dizer o que fazer? Tem aqui no post duas prints e o código no corpo do texto também ^^. Obrigado desde já.

imagem_2025-04-03_110430539.png

imagem_2025-04-03_110536427.png

Valeu, já consegui resolver, fico assim:

 

programa
{
	
	funcao inicio()
	{
		inteiro distancia1, distancia2, distancia3

		escreva("Digite o valor da primeira distancia:")
		leia(distancia1)

		escreva("Digite o valor da segunda distancia:")
		leia(distancia2)

		escreva("Digite o valor da terceira distancia:")
		leia(distancia3)

		se (distancia1 > distancia2 e distancia1 > distancia3)
		{
		escreva("A maior distancia é: ", distancia1)	
		}
		senao se (distancia2 > distancia1 e distancia2 > distancia3)
		{
		escreva("A maior distancia é: ", distancia2)
		}
		senao se (distancia3 > distancia1 e distancia3 > distancia2)
		{
		escreva("A maior distancia é: ", distancia3)
		}
		
	}
}

 

  • Curtir 1
  • Obrigado 1
Postado

A condição do desvio condicional deve estar entre parênteses.

 

Então mude:

se distancia1 > distancia2 e distancia1 > distancia3

Para:

se (distancia1 > distancia2 e distancia1 > distancia3)

Em todos os desvio condicionais 'se'.

 

E a indentação do código pode ser melhorada para facilitar a leitura do código.

  • Obrigado 1
  • Membro VIP
Postado

 

Para uma melhor organização, inserir outro conjunto de parênteses para separar as sentenças.

 

De:

Em 03/04/2025 às 11:05, scorpionmyth2 disse:
se (distancia1 > distancia2 e distancia1 > distancia3)
{
escreva("A maior distancia é: ", distancia1)	
}

 

Para:

se ((distancia1 > distancia2) e (distancia1 > distancia3))
{
	escreva("A maior distancia é: ", distancia1)	
}
  • Obrigado 2
  • Membro VIP
Postado
Em 12/04/2025 às 17:23, bolever disse:

Acho que so precisar ser de 2 em 2 

se (distancia1 > distancia2) e (distancia1 > distancia3)

 

Faz sentido, mas isso o próprio @scorpionmyth2 já havia tentado e deu erro:

 

Em 03/04/2025 às 11:05, scorpionmyth2 disse:

image.png.2a6175e86f172abd8bf7a125fc938d49.png

 

Ou seja, o "compilador" entende que apenas a primeira expressão pertence ao se e que "não faz sentido" ter um se para encapsular um "e" (conjunção).

 

 

 

 

Daqui em diante é uma explicação mais prolixa*... vamos lá:

 

Estaria implementando algo assim:

se (distancia1 > distancia2) 
  e

 

No caso, precisa ter um par (), com a instrução completa dentro deles, após o se e antes da próxima instrução que estará justamente sendo "protegida" pelo se. Ex.: um escreva(). Ou, como no exemplo, um bloco de instruções (que é iniciado por um "{").

 

Logo, funcionaria com algo assim:

se (distancia1 > distancia2)
  escreva("A maior distancia é: ", distancia1)

 

Mas como existem duas condições em uma única expressão lógica, a tal conjunção estaria servindo para vincular elas... Podendo ficar assim:

 

se (distancia1 > distancia2 e distancia1 > distancia3)

 

 

Aqui que tem a celeuma que citei na minha postagem anterior... Vejam:

 

Acontece que o código acima fica meio poluído, pois poderia ser interpretado como algo assim:

 

se (distancia1 > (distancia2 e distancia1) > distancia3)

 

Deu para entender? Fica confuso.

 

 

Tá! Abaixo a mesmíssima lógica, só que em VisualG (que também é em Portugol, mas com outra sintaxe):

 

algoritmo "Maior distância"

var
   distancia1, distancia2, distancia3 : inteiro

inicio
   escrevaL("Digite o valor da primeira distancia:")
   leia(distancia1)

   escrevaL("Digite o valor da segunda distancia:")
   leia(distancia2)

   escrevaL("Digite o valor da terceira distancia:")
   leia(distancia3)

   se (distancia1 > distancia2 e distancia1 > distancia3) então
      escrevaL("A maior distancia é: ", distancia1)
   senao
      se (distancia2 > distancia1 e distancia2 > distancia3) então
         escrevaL("A maior distancia é: ", distancia2)
      senao
         se (distancia3 > distancia1 e distancia3 > distancia2) então
            escrevaL("A maior distancia é: ", distancia3)
         fimSe
      fimSe
   fimSe
fimAlgoritmo

 

Veja o que eventualmente ocorre:

 

image.thumb.png.138b59fc7b399aabfb666e3a1a68bae3.png

 

Deu erro em algum trecho da linha citada (VisualG nunca foi especialista em mensagens de erro). Para corrigir..... só "separar as sentenças". Veja:

 

   se ((distancia1 > distancia2) e (distancia1 > distancia3)) então
      escrevaL("A maior distancia é: ", distancia1)
   senao
      se ((distancia2 > distancia1) e (distancia2 > distancia3)) então
         escrevaL("A maior distancia é: ", distancia2)
      senao
         se ((distancia3 > distancia1) e (distancia3 > distancia2)) então
            escrevaL("A maior distancia é: ", distancia3)
         fimSe
      fimSe
   fimSe

 

 

image.thumb.png.189873e71bb11212171a22c4eb3f100a.png

 

Resumindo:

Mesmo que tivesse rodado sem essa separação, o código ficará mais claro com a separação clara. Esse mesmo problema do primeiro código poderá ocorrer outras linguagem mais modernas. Já evita fadiga.

 

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