dgadelha / Portugol-Webstudio

IDE online para o Portugol
https://portugol.dev
GNU General Public License v3.0
259 stars 51 forks source link

Função não declarada #253

Closed Kayller-code closed 1 month ago

Kayller-code commented 2 months ago

Descrição do problema

Quando tento igualar um variável a uma função para poder usar o resultado dessa função em outra o codigo fala que função não foi declarada

Código

programa {
  inclua biblioteca Matematica --> mat
  funcao inicio()
  {
   real var_numero_1
   real var_numero_2
   real var_resultado_1

   escreva ("Digite um número: ")
   leia (var_numero_1)
   escreva ("Digite um segundo número: ") 
   leia (var_numero_2)

   //Erro do codigo
   var_resultado_1 =  media (var_numero_1, var_numero_2)

   escreva ("A média entres os valores é: ",media (var_numero_1, var_numero_2),"\n\n")
   escreva (verificar(var_resultado_1))

  }

  funcao real media (real var_numero_1, real var_numero_2)
  {
    real var_resultado_media
    const inteiro const_media = 2

    var_resultado_media = ((var_numero_1 + var_numero_2)/const_media)

    retorne var_resultado_media
  }

  funcao cadeia verificar (real var_resultado_1)
  {
    cadeia var_resultado_verificar
    const inteiro const_modulo = 2
    const inteiro const_logico = 0
    logico log_verificar

    inteiro real_para_inteiro

    //Tranformar valor real em inteiro
    real_para_inteiro = mat.arredondar(var_resultado_1)

    log_verificar = ((real_para_inteiro % const_modulo) == const_logico )

    se (log_verificar)

    var_resultado_verificar = ("a média dos valores é par.")

    senao

    var_resultado_verificar = ("a média dos valores é ímpar.")

    retorne var_resultado_verificar
  }

}

Comentários adicionais

No response

dgadelha commented 2 months ago

Obrigado pelo report. O problema está acontecendo pois a verificação do código está ocorrendo de forma sequencial, e como a função media foi declarada após o uso dela, o verificador ainda não passou pela função e não sabe que ela existe. Se você mover ela pra cima da inicio, funciona normal.

Vou manter a issue aberta pra corrigir isso no futuro