erickweil/portugolweb

Recursos que não são do portugol Studio

Closed this issue · 4 comments

Olá mais uma vez. Existem alguns recursos que já foram pedidos no portugol Studio e, por enquanto, ainda não tiveram retorno ou implementação, mas que são úteis no aprendizado do portugol. Logo, se possível, poderiam ser implementados aqui, em primeira mão:

  1. Retorno de vetor ou matriz em funções
    Em uma análise inicial, vi que seu interpretador retorna uma cadeia quando é realizada a tentativa de retorno, conforme a sintaxe a seguir:
    `programa
    {
    funcao real retV()
    {
    real v[2] = {1.1, 2.0}
    retorne v
    }

    funcao inicio ()
    {
    escreva("Olá\n")
    /real m[] =/ retV()
    escreva(retV())
    }

}`

  1. Criação de estruturas/registro
    Com comportamento semelhante ao vetor em funções (passagem e retorno)

  2. Parâmetros constantes em funções

  3. Comportamentos semelhantes ao C para o incremento (++) e decremento (--) pré e pós fixado

Obrigado pelo app no play. Irei fazer meus alunos utilizarem. Até mais.

Sobre o problema 1, na verdade não havia checagem do tipo de retorno da função, e o javascript retornava o vetor mesmo.
Sobre o 2, imagino ser algo que não é necessário para essa linguagem
3. Agora as funções aceitam os parâmetros constantes
4. Adicionado Auto incremento pré fixado, e o comportamento foi ajustado. Porém atenção à ordem de operadores e o fato de não existir ponto e vírgula( O auto incremento pré-fixado pode ser entendido como pós-fixado da expressão da linha anterior, e isso é uma consequência da não utilização de pontos e vírgulas).

Muito obrigado pelas respostas.
1 - vi que o retorno de um vetor funciona corretamente, mas não para matrizes, alguma coisa errada na sintaxe abaixo?
funcao real[][] retM()
{
real m[2][2] = {1.1,1.2,2.3,1.3}
retorne m
}

funcao inicio()
{
	real mat[][] = retM()
	escreva("Mat ",mat[0][0],"\n")
}

3,4 - perfeito

no caso retorno de matrizes funciona.
Porém a matriz aceitou uma declaração de vetor sem dar erro.
deveria ser real m[2][2] = {{1.1,1.2},{2.3,1.3}}

checagem de erros com vetores e matrizes está deixando a desejar.

deveria ser real m[2][2] = {{1.1,1.2},{2.3,1.3}}
Verdade. Erro meu.
Muito obrigado.