O que são as Olimpíadas Nacionais de Informática? Porque é que eu devo participar numa competição destas? Não sei programar, mas isto parece-me interessante, como posso participar? O que é programação? São tudo questões pertinentes que pretendemos direta ou indiretamente responder neste artigo e nos próximos.

Objetivo

As Olímpiadas Nacionais de Informática (ONI) são um concurso de programação, ou seja, o objetivo é escrever um programa numa das linguagens permitidas (C/C++, Java ou Python), que resolva uma determinada tarefa. Em cada tarefa é suposto processar um conjunto de dados fornecidos (que podem ser um conjunto de números, uma grelha de números, uma frase, ...) de acordo com um certo objetivo. Por exemplo, dado um conjunto de números, obter o mínimo desse conjunto (iremos ver exemplos de programas para este e para problemas mais avançados nos próximos artigos). São problemas definidos concretamente e o objetivo é chegar a uma solução que produz uma determinada resposta (e não construir uma aplicação gráfica ou interativa). São problemas que têm um cariz algorítmico, o que que significa o que são desafios de certa forma matemáticos que resolvemos com um programa. Isto ficará claro nos artigos sucessivos, onde veremos alguns exemplos de problemas.

Apesar de ser um concurso de programação, não é preciso ter muita experiência de programação para ter sucesso nesta competição. A maior parte (se não todos) os problemas nas Olímpiadas não necessitam de programas muito compridos ou complexos do ponto de vista de programação. Isto porque o objetivo principal é resolver problemas curtos com programas que demorem pouco tempo a serem executados (no artigo Eficiência vs Eficácia iremos discutir este assunto com mais detalhe). Assim, os problemas a resolver têm um cariz ligeiramente matemático e requerem alguma criatividade para serem resolvidos.

Por consequência, mesmo quem nunca programou não está em desvantagem. Aprender os básicos de programação não requer muito esforço e é muito útil além das Olimpíadas (por exemplo, muitos dos cursos universitários nas áreas de engenharia, física, matemática, ... têm uma componente de programação). Para quem nunca programou e está a considerar participar nas Olimpíadas recomendamos aprender C++, visto ser a linguagem mais utilizada neste tipo de concursos (e ser a única permitida na fases mais avançadas), mas ninguém está em desvantagem por usar Java ou Python nas fases iniciais.

Estrutura das ONI

As Olimpíadas são um concurso individual que estão divididas da seguinte forma:

  • Qualificação: a primeira fase é aberta a qualquer aluno do secundário com idade inferior a 20 anos (para informações mais detalhadas sobre este aspeto convém consultar a página de Informações do site das Olimpíadas mais recente). Os alunos participam remotamente, tentando resolver um conjunto normalmente constituído por 3 a 5 problemas num formato que neste ano de 2026 vai sofrer algumas alterações e será depois explicado mais detalhadamente aos inscritos (as datas estão disponíveis no site das Olimpíadas). As pontuações que cada aluno obteve são escondidas durante a prova e são reveladas alguns dias após a prova (o funcionamento da pontuação será explicado no próximo artigo). A avaliação dos problemas é feita de forma automática através da plataforma Mooshak. Iremos testar esta plataforma e ver um problema exemplo no próximo artigo.

  • Final Nacional: os alunos com pontuações mais elevadas (tipicamente num máximo de 30 alunos) são apurados para esta fase, que decorre nas instalações do Departamento de Ciência de Computadores (DCC) da Faculdade de Ciências da Universidade do Porto (o deslocamento é reembolsado e é oferecido um almoço e lanche). Nesta fase é suposto resolver um conjunto de 3 a 4 problemas no mesmo formato da qualificação num tempo máximo de 4 horas. Cada aluno tem acesso às pontuações que obteve nos problemas logo após submeter as suas soluções, mas não à dos seus concorrentes.

  • Estágio de Seleção: os alunos com melhor pontuação na final nacional são convidados a participar num estágio de cerca de um mês, onde treinarão as suas capacidades com a ajuda dos organizadores das Olimpíadas. O objetivo deste treino é preparar os alunos para representarem Portugal em várias provas internacionais mais informação sobre estas provas em baixo).

  • Prova de Seleção: o estágio de seleção culmina numa prova, também presencial, cuja pontuação, em conjunto com a pontuação da fase final, determina os alunos que serão escolhidos para participar nos vários eventos internacionais, com especial destaque para os 4 alunos que representarão Portugal nas Olimpíadas Internacionais de Informática (IOI)

Para mais informações sobre o funcionamento das Olímpiadas assim como o seu regulamento, consultem as devidas páginas do site das Olímpiadas: informações e regulamento.

Olimpíadas Internacionais de Informática

As Olimpíadas Internacionais de Informática (IOI) são a maior e mais prestigiada competição international de programação para resolução de problemas algoritmicos para alunos do ensino pré-universitário. Na última edição participaram cerca de 330 concorrentes de mais de 80 países diferentes. Cada país pode ter até 4 concorrentes e a prova é individual, nos moldes das Olimpíadas Nacionais. Nesta prova os melhores concorrentes são premiados com medalhas de bronze, prata ou ouro, sendo que metade dos concorrentes ganha pelo menos bronze, um quarto ganha pelo menos prata e um doze avos ouro. Apesar de serem entregues várias medalhas, ganhar qualquer medalha é um feito muito difícil de conseguir e assim reconhecido por várias universidades e empresas internacionais.

Portugal participa nesta prova desde 1992 e desde então conseguiu 9 medalhas de bronze e 2 de prata. É possível consultar um sumário das prestações portuguesas nesta prova aqui.

Outros Eventos Internacionais

Para além das IOI, Portugal tem participado nos seguintes eventos internacionais (todos individuais e com problemas do estilo das ONI e IOI):

Olimpíadas Ibero-Americanas de Informática (OII), organizadas de forma remota desde há mais de 20 anos, com Portugal a participar todos os anos com uma delegação tipicamente entre 8 a 10 estudantes. Participam nesta prova delegações de toda a América do Sul, bem como da Península Ibérica. Desde 2012, Portugal conquistou 6 medalhas de bronze, 22 medalhas de prata e 28 medalhas de bronze.

Olimpíadas de Informática da Europa Ocidental (WEOI), organizadas desde 2023, com Portugal a participar como um dos países fundadores, tipicamente com uma delegação de 6 estudantes. Participam nesta prova delegações de toda a Europa Ocidental. Nestas 3 primeiras edições, Portugal conquistou 2 medalhas de prata e 3 medalhas de bronze.

Olimpíadas Europeias de Informática para Raparigas (EGOI), organizadas desde 2021, para tentar promover e incentivar a participação feminina. Portugal participou apenas uma vez, em 2024, tendo conquistado uma medalha de prata e a partir de 2026 vai tentar iniciar uma participação regular.