Skip to content
/ cobral Public

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.

License

Notifications You must be signed in to change notification settings

Moeefa/cobral

Folders and files

NameName
Last commit message
Last commit date

Latest commit

10fa65d · Mar 29, 2025

History

58 Commits
Feb 9, 2025
Mar 29, 2025
Mar 29, 2025
Nov 3, 2024
Mar 29, 2025
Mar 29, 2025
Mar 29, 2025
Mar 29, 2025
Oct 10, 2024
Feb 18, 2025
Feb 18, 2025
Feb 18, 2025
Mar 29, 2025
Oct 10, 2024
Oct 10, 2024
Feb 18, 2025
Feb 18, 2025
Feb 18, 2025
Feb 18, 2025

Repository files navigation

Portugol CobraL

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.

Benchmarks

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

Índice

Como funciona?

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.

Como instalar?

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

Documentação

Sintaxe

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");
};

Tipos de dados

  • inteiro: números inteiros
  • real: números reais
  • texto: sequência de caracteres
  • booleano: verdadeiro ou falso
  • vetor: 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

Operadores de comparação

  • ==: igualdade
  • !=: diferença
  • >: maior que
  • <: menor que
  • >=: maior ou igual a
  • <=: menor ou igual a
declare x = 10 == 10; // verdadeiro

Operadores lógicos

  • nao: negação
  • e: conjunção
  • ou: 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

Operadores aritméticos

  • +: 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

Estruturas de controle

  • se: executa um bloco de código se uma condição for verdadeira
  • senao: executa um bloco de código se a condição do se for falsa
  • escolha-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;
};

Estruturas de repetição

  • para: executa um bloco de código um número específico de vezes
  • enquanto: 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++;
};

Entrada e saída

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);

Bibliotecas

Você precisa importar as bibliotecas no início do seu código.

Matemática

Para operações matemáticas, você pode usar a biblioteca de matemática.

importe "matematica";

declare x = raiz(9);
escrever(x); // 3

Conversão de tipos de dados

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

About

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.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published