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:
-
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())
}
}`
-
Criação de estruturas/registro
Com comportamento semelhante ao vetor em funções (passagem e retorno) -
Parâmetros constantes em funções
-
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.