01 · Visão geral
Sobre Égua
Égua é uma linguagem de programação interpretada, com palavras-chave e mensagens em português. Seu site oficial a apresenta como uma forma acessível de praticar conceitos de programação sem depender do vocabulário em inglês; a implementação combina recursos imperativos e funcionais com orientação a objetos.
Esta página organiza a sintaxe e os recursos descritos na documentação oficial. Ela serve como guia de consulta, não como substituto da documentação completa da linguagem.
02 · Organização
Arquivo e escrita do código
Um programa é formado por instruções e blocos entre chaves. A documentação do projeto usa arquivos .egua, comentários iniciados por // e ponto e vírgula para encerrar instruções. A execução pode começar diretamente por instruções no arquivo; funções e classes são declaradas onde serão usadas.
// Primeiro programa
var nome = "Ana";
escreva("Olá, " + nome);As palavras reservadas mais importantes incluem var, se, senão, para, função, retorna e classe. A grafia portuguesa faz parte da sintaxe.
03 · Dados
Variáveis e escopo
var declara uma variável, com ou sem valor inicial. A atribuição posterior usa =. Variáveis podem existir no escopo global ou em um bloco entre chaves; uma variável externa é visível nos blocos internos, mas uma variável local não fica disponível fora do bloco em que foi criada.
var pontos = 0;
pontos = pontos + 1;
se (pontos > 0) {
var mensagem = "Há pontos";
escreva(mensagem);
}Égua determina o tipo a partir do valor em execução; não se declara um tipo junto ao nome da variável. Use nomes descritivos e mantenha a variável no menor escopo que atenda ao algoritmo.
04 · Valores
Tipos e coleções
Os valores incluem números inteiros ou decimais, textos entre aspas simples ou duplas, valores lógicos verdadeiro e falso, e o valor ausente nulo. Listas são ordenadas e usam colchetes; dicionários associam chaves a valores e usam chaves.
| Forma | Exemplo | Observação |
|---|---|---|
| Número | 12, 3.5 | Inteiro ou ponto flutuante. |
| Texto | "Olá", 'a' | Uma sequência entre aspas. |
| Lógico | verdadeiro, falso | Usado em condições. |
| Lista | [4, "cinco"] | Índices começam em zero; o tamanho pode mudar. |
| Dicionário | {'nome': 'Ana'} | Acesso por uma chave. |
var notas = [8, 6.5, 9];
var cadastro = {"nome": "Ana"};
escreva(notas[0]);
escreva(cadastro["nome"]);Listas e textos são indexados a partir de zero. A documentação também descreve índices negativos para textos, contados a partir do fim; acessar um índice inexistente em uma lista gera erro, enquanto atribuir depois do fim pode ampliar a lista e preencher posições intermediárias com nulo.
05 · Expressões
Operadores e comparações
| Grupo | Operadores | Uso |
|---|---|---|
| Aritméticos | ** * / + - % | Potência, cálculos e resto da divisão. |
| Comparação | > >= < <= == != | Compara valores; igualdade exige mesmo tipo e valor. |
| Lógicos | e ou | Conjunção e disjunção. |
| Pertencimento | em | Verifica se um valor aparece em uma lista, texto ou chave de dicionário. |
| Bit a bit | << >> & ^ | | Deslocamentos e operações sobre bits. |
var resultado = 2 ** 3 + 1;
var aprovado = resultado >= 8 e resultado < 10;
var tem_nota = 8 em [6, 8, 9];
escreva(aprovado);As prioridades dos operadores definem a ordem de avaliação. Use parênteses quando uma expressão combinar várias categorias.
06 · Fluxo
Condições e repetições
se, senão se e senão selecionam um bloco. As repetições incluem enquanto e para; a forma de para lembra um laço com inicialização, teste e atualização. Condições usam valores lógicos.
var notas = [8, 5.5, 9];
para (var i = 0; i < tamanho(notas); i = i + 1) {
se (notas[i] >= 7) {
escreva("Aprovado");
} senão se (notas[i] >= 5) {
escreva("Recuperação");
} senão {
escreva("Reprovado");
}
}
var contador = 0;
enquanto (contador < 2) {
escreva(contador);
contador = contador + 1;
}verdadeiro e valores diferentes de falso e nulo são avaliados como verdadeiros nas regras de veracidade descritas pela documentação.
07 · Reuso
Funções
Uma função nomeada é declarada com função, parâmetros entre parênteses e um bloco entre chaves. retorna entrega um valor ao ponto de chamada. Funções anônimas podem ser armazenadas ou passadas a outras funções, por exemplo, para transformar os elementos de uma lista.
função classificar(nota) {
se (nota >= 7) {
retorna("Aprovado");
} senão {
retorna("Continue estudando");
}
}
var resultado = classificar(8);
escreva(resultado);Parâmetros são separados por vírgulas. Funções podem retornar listas, textos, números ou outros valores; as funções integradas mapear, filtrar e para_cada recebem funções como argumento.
08 · Modelagem
Classes e objetos
classe declara uma estrutura com métodos. Criar uma instância chama o nome da classe com parênteses; métodos são chamados pela instância usando ponto. O método especial construtor é executado durante a criação, e isto referencia a instância atual. A documentação também apresenta herança com herda e acesso à implementação pai por super.
classe Contador {
construtor(valor) {
isto.valor = valor;
}
avancar() {
isto.valor = isto.valor + 1;
retorna isto.valor;
}
}
var contador = Contador(2);
escreva(contador.avancar());Use classes quando dados e comportamentos relacionados precisarem ser agrupados; para transformações curtas, uma função simples costuma ser suficiente.
09 · Recursos integrados
Funções e bibliotecas
escreva apresenta valores. Funções integradas documentadas incluem aleatório, aleatório_entre, inteiro, real, tamanho, para_cada, mapear, filtrar e ordenar. Confira as páginas oficiais para a lista completa e as regras de cada função.
Bibliotecas padrão são carregadas explicitamente com importar(...). A documentação oficial apresenta bibliotecas para matemática, textos, tempo e requisições HTTP.
var tempo = importar("tempo");
escreva(tempo.agora());
var dobro = mapear([1, 2, 3], função(valor) {
retorna valor * 2;
});
escreva(dobro);10 · Aplicação
Exemplo completo
Este programa classifica uma lista de resultados e mostra quantos elementos atingiram a média.
função aprovado(nota) {
retorna nota >= 7;
}
var notas = [8, 5.5, 9, 6];
var aprovadas = filtrar(notas, função(nota) {
retorna aprovado(nota);
});
escreva("Notas: ", notas);
escreva("Aprovadas: ", aprovadas);
escreva("Quantidade: ", tamanho(aprovadas));11 · Fontes