VisuAlg
VisuAlg é um dialeto baseado em Pascal, Delphi, Basic e Clipper. Um exemplo de implementação está abaixo:
algoritmo "ola-mundo"
var a: inteiro
inicio
para a de 1 ate 20 faca
escreva (a:3)
fimpara
fimalgoritmo
Espaços e indentação foram removidos para demonstrar, de maneira minimalista, o que um algoritmo em VisuAlg precisa ter para funcionar.
O avaliador sintático é sensível a quebras de linha. Por exemplo, escrevendo o exemplo anterior numa linha só causa erros:
algoritmo "ola-mundo" var a: inteiro inicio para a de 1 ate 20 faca escreva (a:3) fimpara fimalgoritmo
Da mesma forma, certas expressões requerem palavras-chave e identificadores na mesma linha. Por exemplo, algoritmo <identificador>:
algoritmo
"ola-mundo" // Levanta erro
algoritmo "ola-mundo" // Funciona sem erros
O ponto-e-vírgula é opcional. Indentações no começo de cada linha não são relevantes.
VisuAlg tem o conceito de funções e procedimentos igual ao do Delphi: uma função é um segmento da aplicação que retorna valor ao final da sua execução. Um procedimento é um segmento da aplicação que nada retorna.
Para executar uma função ou método sem argumentos, não é necessário o uso de parênteses. Por exemplo, o código abaixo escreve o valor de Pi corretamente:
algoritmo "pi-teste"
inicio
escreva (pi)
fimalgoritmo
Bibliotecas de funções
VisuAlg tem duas bibliotecas de funções: uma para funções numéricas, algébricas e trigonométricas, e outra para funções para manipulação de cadeias de caracteres (strings).
Funções numéricas, algébricas e trigonométricas
Abs(expressão)- Retorna o valor absoluto de uma expressão do tipo inteiro ou real. Equivale a|expressão|na álgebra.ArcCos(expressão)- Retorna o ângulo (em radianos) cujo cosseno é representado porexpressão.ArcSen(expressão)- Retorna o ângulo (em radianos) cujo seno é representado porexpressão.ArcTan(expressão)- Retorna o ângulo (em radianos) cuja tangente é representada porexpressão.Cos(expressão)- Retorna o cosseno do ângulo (em radianos) representado porexpressão.CoTan(expressão)- Retorna a co-tangente do ângulo (em radianos) representado porexpressão.Exp(base, expoente)- Retorna o valor debaseelevado aexpoente, sendo ambos expressões do tipo real.GraupRad(expressão)- Retorna o valor em radianos, correspondente ao valor em graus representado porexpressão.Int(expressão)- Retorna a parte inteira do valor representado porexpressão.Log(expressão)- Retorna o logaritmo na base 10 do valor representado porexpressão.LogN(expressão)- Retorna o logaritmo neperiano (base e) do valor representado porexpressão.Pi- Retorna o valor 3.141592.Quad(expressão)- Retorna quadrado do valor representado porexpressão.RadpGrau(expressão)- Retorna o valor em graus correspondente ao valor em radianos, representado porexpressão.RaizQ(expressão)- Retorna a raiz quadrada do valor representado porexpressão.Rand- Retorna um número real gerado aleatoriamente, maior ou igual a zero e menor que um.RandI(limite)- Retorna um número inteiro gerado aleatoriamente, maior ou igual a zero e menor quelimite.Sen(expressão)- Retorna o seno do ângulo (em radianos) representado porexpressão.Tan(expressão)- Retorna a tangente do ângulo (em radianos) representado porexpressão.
Funções para manipulação de cadeias de caracteres (strings)
Asc(s : caracter)- Retorna um inteiro com o código ASCII do primeiro caracter da expressão.Carac(c : inteiro)- Retorna o caracter cujo código ASCII corresponde à expressão.Caracpnum(c : caracter)- Retorna o inteiro ou real representado pela expressão. Corresponde aStrToInt()ouStrToFloat()do Delphi,Val()do Basic ou Clipper, etc.Compr(c : caracter)- Retorna um inteiro contendo o comprimento (quantidade de caracteres) da expressão.Copia(c : caracter; p, n : inteiro)- Retorna um valor do tipo caracter contendo uma cópia parcial da expressão, a partir do caracter p, contendo n caracteres. Os caracteres são numerados da esquerda para a direita, começando de 1. Corresponde aCopy()do Delphi,Mid$()do Basic ouSubstr()do Clipper.Maiusc(c : caracter)- Retorna um valor caracter contendo a expressão em maiúsculas.Minusc(c : caracter)- Retorna um valor caracter contendo a expressão em minúsculas.Numpcarac(n : inteiro ou real)- Retorna um valor caracter contendo a representação de n como uma cadeia de caracteres. Corresponde aIntToStr()ouFloatToStr()do Delphi,Str()do Basic ou Clipper.Pos (subc, c : caracter)- Retorna um inteiro que indica a posição em que a cadeiasubcse encontra emc, ou zero sesubcnão estiver contida emc. Corresponde funcionalmente aPos()do Delphi,Instr()do Basic ouAt()do Clipper, embora a ordem dos parâmetros possa ser diferente em algumas destas linguagens.