Referência de linguagem de programação · Égua

Égua

Esta referência apresenta a linguagem de programação Égua e sua sintaxe em português, incluindo dados, controle de fluxo, funções, coleções, orientação a objetos e bibliotecas padrão.

Categoria Linguagem de programaçãoReferência Égua

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.

FormaExemploObservação
Número12, 3.5Inteiro ou ponto flutuante.
Texto"Olá", 'a'Uma sequência entre aspas.
Lógicoverdadeiro, falsoUsado 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

GrupoOperadoresUso
Aritméticos** * / + - %Potência, cálculos e resto da divisão.
Comparação> >= < <= == !=Compara valores; igualdade exige mesmo tipo e valor.
Lógicose ouConjunção e disjunção.
PertencimentoemVerifica 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

Documentação oficial

Voltar ao Manual do Potoo IDE

Consulte as outras referências e as informações do projeto.

Abrir o Manual