CobraL é uma linguagem extremamente rápida baseada no Portugol (Português estruturado) com o objetivo de ensinar conceitos básicos de programação de forma simples e intuitiva. O código é interpretado e executado em Rust, mas com algumas restrições e adições. Vale ressaltar de que este projeto não tem nenhuma correlação com o Portugol Studio, e são projetos totalmente distintos.
O projeto ainda está em desenvolvimento e novas funcionalidades serão adicionadas em breve. Se você quiser contribuir, fique à vontade para abrir uma issue ou um pull request.
Os benchmarks a seguir foram realizados em um computador com as seguintes especificações (usado a média de tempo de 3 execuções):
- Sistema operacional: Windows 11 Pro
- Processador: Ryzen 5 5600G
- Memória RAM: 16 GB
Programa | CobraL (ms) | Portugol Studio (ms) | Diferença |
---|---|---|---|
Iteração até 1000 | 1.6 | 4293 | 2683 vezes mais rápido |
CobraL é um pseudocódigo baseado em Rust, com algumas simplificações e adições. O código é interpretado e executado em Rust, mas com algumas restrições e adições.
Para instalar o CobraL, você pode baixar a última versão disponível em releases de acordo com o seu sistema operacional e arquitetura, ou compilar o código-fonte manualmente. Para compilar o código-fonte, você precisa ter o Rust instalado na sua máquina.
git clone https://github.com/Moeefa/cobral.git
E então, execute o comando abaixo para compilar o código-fonte:
bun tauri build
A sintaxe de CobraL é simples e intuitiva. Cada instrução é separada por uma quebra de linha e um bloco de código é delimitado por chaves {}
.
O uso de ponto e vírgula ;
é totalmente opcional.
declare x = 10;
escrever(x);
se (x == 10) {
escrever("x é igual a 10");
} senao {
escrever("x é diferente de 10");
};
inteiro
: números inteirosreal
: números reaistexto
: sequência de caracteresbooleano
: verdadeiro ou falsovetor
: conjunto de valores
Eles são inferidos automaticamente, então não é necessário declarar o tipo de uma variável.
declare variavel = 10; // inteiro
declare variavel = 10.5; // real
declare variavel = "texto"; // texto
declare variavel = verdadeiro; // lógico
declare variavel = falso; // lógico
declare variavel = [1, 2, 3]; // vetor
declare variavel = [[1, 2], [3, 4]]; // matriz
==
: igualdade!=
: diferença>
: maior que<
: menor que>=
: maior ou igual a<=
: menor ou igual a
declare x = 10 == 10; // verdadeiro
nao
: negaçãoe
: conjunçãoou
: disjunção
declare x = verdadeiro;
declare y = falso;
declare z = nao x; // z é falso
declare w = x e y; // w é falso
declare v = x ou y; // v é verdadeiro
+
: adição-
: subtração*
: multiplicação/
: divisão%
: resto da divisão
declare x = 10 + 10; // x é 20
declare y = 20 - 10; // y é 10
declare z = 10 * 10; // z é 100
declare w = 10 / 2; // w é 5
declare v = 10 % 2; // v é 0
se
: executa um bloco de código se uma condição for verdadeirasenao
: executa um bloco de código se a condição dose
for falsaescolha-caso
: executa um bloco de código com base em uma condição
declare x = 10 + 10;
declare y = 20;
se (x == y) { // x é igual a y
escrever("x é igual a y");
} senao {
escrever("x é diferente de y");
};
declare x = 3;
escolha (x) {
caso 1:
escrever("x é igual a 1");
pare;
caso 2:
escrever("x é igual a 2");
pare;
caso 3:
escrever("x é igual a 3");
pare;
padrao:
escrever("x é diferente de 1 a 10");
pare;
};
para
: executa um bloco de código um número específico de vezesenquanto
: executa um bloco de código enquanto uma condição for verdadeira
/*
* i começa com 0 e continua até 9,
* incrementando 1 a cada iteração
*/
para (declare i = 0; i < 10; i++) {
escrever(i);
};
declare x = 0;
enquanto (x < 10) {
escrever(x);
x++;
};
Para entrada e saída de dados, você pode usar a biblioteca de entrada e saída de dados.
declare x = ler("Digite seu nome:");
escrever("Você digitou: ", x);
- Matemática: para operações matemáticas
- Conversão de tipos de dados: para conversão de tipos de dados
Você precisa importar as bibliotecas no início do seu código.
Para operações matemáticas, você pode usar a biblioteca de matemática.
importe "matematica";
declare x = raiz(9);
escrever(x); // 3
Para fazer conversão de tipos de dados, você pode usar a biblioteca de conversão.
importe "conversao";
declare x = real(10)
escrever(x) // 10.0
importe "conversao";
declare y = int(10.5)
escrever(y) // 10