Compilador online

Compilador Ada online

Escreva seu código em Ada (GNAT 15) abaixo e rode de graça, com entrada, num sandbox nos nossos servidores. Sem cadastro e sem anúncios.

Pela equipe do OnlineCompiler.io. Atualizado em .

Also in EnglishTambién en español

with Ada.Text_IO;         use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;

procedure Quadrados is
   --  Lê o nome e um número da aba Entrada
   Nome : constant String := Get_Line;
   N    : Integer;
begin
   Get (N);

   Put_Line ("Olá, " & Nome & "!");
   for I in 1 .. N loop
      Put (I, Width => 0);
      Put (" ao quadrado é ");
      Put (I * I, Width => 0);
      New_Line;
   end loop;
end Quadrados;
Compartilhar gera um link, sem precisar de conta. Salvar guarda o código na sua conta.

Quer conferir uma solução contra várias entradas? O compilador Ada com casos de teste roda todas de uma vez e marca cada uma como aprovada ou reprovada.

Como dar entrada (stdin)

Antes de apertar Executar, digite na aba Entrada tudo o que o programa vai ler. Ele recebe esse texto pela entrada padrão (stdin). Em Ada, fica assim:

Nome : constant String := Get_Line;   --  uma linha inteira, como texto
Get (N);                              --  o próximo número (Ada.Integer_Text_IO)
Get (A); Get (B);                     --  dois números

A entrada inteira é enviada quando você aperta Executar, então o programa não pode pedir mais nada enquanto roda. Coloque cada valor numa linha, ou separe por espaços, conforme o programa lê.

Versão e limites

VersãoAda GNAT 15
Compilado comgnatchop-15 -r -w -gnat2022 code.adb && gnatmake-15 -q -O2 -gnat2022 <main>.adb -o code.out
Executado com./code.out
Limites30 segundos, 512 MB de memória, 2 CPUs, 64 KB de saída por fluxo, sem rede
Execução típica1,22 s, e 1,44 s para a mais lenta em cada 20 (como medimos, em inglês)

Bom saber

  • Um arquivo pode ter várias unidades, como pacotes e o procedimento principal, em qualquer ordem. O procedimento principal é o que fica fora de qualquer pacote (o último, se houver vários), e os erros continuam indicando a linha no seu arquivo, como code.adb:7.
  • Compila com gnatmake -O2 e a sintaxe do Ada 2022 ativada, como os agregados [1, 2, 3] e o @ nas atribuições.
  • Get_Line e Ada.Integer_Text_IO.Get leem a aba Entrada. Se o programa ler além do que você digitou, aparece raised ADA.IO_EXCEPTIONS.END_ERROR. Uma exceção não tratada, como Constraint_Error, mostra o arquivo e a linha e sai com o código 1.

Rodar Ada a partir do seu app

Para rodar Ada no seu próprio app, envie o código e a entrada para o endpoint síncrono com uma chave de API, e a saída volta na resposta. É grátis até 100.000 execuções por mês. Documentação da API (em inglês).

O editor acima é um widget que você pode colocar no seu site, blog ou curso. Com o atributo data-locale="pt", os botões aparecem em português. Como incorporar o editor (em inglês).

Outras páginas

Perguntas frequentes

O compilador Ada online é grátis?

Sim. Rodar Ada nesta página não exige conta e não tem anúncios. Para rodar Ada no seu próprio app ou site, a API e o widget são grátis até 100.000 execuções por mês, uso comercial incluído.

Meu programa em Ada pode ler entrada?

Sim. Digite a entrada na aba Entrada antes de executar, e o programa a lê pela entrada padrão (stdin). A entrada inteira é enviada quando você aperta Executar, então o programa não pode pedir mais nada enquanto roda.

Posso usar bibliotecas em Ada?

A biblioteca padrão do Ada e os pacotes próprios do GNAT. Não há Alire, e os programas não têm acesso à rede.

Quanto tempo um programa pode rodar?

Até 30 segundos, com 512 MB de memória e 2 CPUs. Um programa que ainda estiver rodando aos 30 segundos é interrompido com o código de saída 124, e a saída acima de 64 KB por fluxo é cortada.

Onde meu código roda?

Nos nossos servidores, num sandbox gVisor novo e sem acesso à rede, que é apagado quando a execução termina. Cada execução fica guardada no histórico com a saída; a página de segurança (em inglês) explica o que é armazenado.

Existe uma API para Ada?

Sim. Envie o código, o id do compilador gnat-15 e a entrada para https://api.onlinecompiler.io/api/run-code-sync/ com uma chave de API, e a resposta traz a saída, os erros, o código de saída, o tempo e a memória. É grátis até 100.000 execuções por mês, e a mesma chave serve para as outras 45 linguagens. A documentação está em inglês.