User Tools

Site Tools


obi

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
obi [2024/06/12 12:05] – created becoobi [2024/06/19 14:47] (current) – teclado telefonico [1] beco
Line 2: Line 2:
  
 A Olimpíada Brasileira de Informática é um evento promovido pela SBC (Sociedade Brasileira de Informática) e com a participação de escolas e universidades de todo o Brasil. No nível universitário (PS - programação sênior) podem se inscrever alunos do primeiro ano de faculdade apenas. A Olimpíada Brasileira de Informática é um evento promovido pela SBC (Sociedade Brasileira de Informática) e com a participação de escolas e universidades de todo o Brasil. No nível universitário (PS - programação sênior) podem se inscrever alunos do primeiro ano de faculdade apenas.
 +
 +{{ :logo_obi.png?150|}}
  
 A XXVI Edição realizada em 2024 foi a primeira participação da Escola Politécnica da Universidade de Pernambuco - POLI/UPE, com realização da Assessoria de Relações Internacionais - ARI/POLI e apoio da EComp (Eng. da Computação) e da ECA (Eng. de Controle e Automação). A XXVI Edição realizada em 2024 foi a primeira participação da Escola Politécnica da Universidade de Pernambuco - POLI/UPE, com realização da Assessoria de Relações Internacionais - ARI/POLI e apoio da EComp (Eng. da Computação) e da ECA (Eng. de Controle e Automação).
  
-===== Exercícios =====+===== Compilação e Testes Automáticos =====
  
-Os exercícios dos anos anteriores podem ser acessados diretamente na página da OBI em https://olimpiada.ic.unicamp.br/pratique/ . Abaixo enumeramos alguns mais interessantes usados para praticar suas técnicas de programação.+==== Compilação ====
  
-  * [[:obi:ex:monica | Monica]] 
  
 +Crie os exercícios na pasta **''rascunhos/obi''**, com os nomes indicados em cada exercício (por exemplo //idade.c//). Para compilar use:
 +
 +    make idade.x
 +
 +Isso irá chamar o compilador ''GCC'' com as mesmas chaves obrigatórias da olimpíada, quais sejam:
 +
 +    
 +    gcc -static -std=gnu17 -pipe -DEVAL -s -O2 -lm fonte.c -o fonte.x
 +    
 +
 +A chave ''-std=gnu17'' é assumida válida, mas não é obrigatória no regulamento da Olimpíada para a linguagem ''C''
 +
 +Para a linguagem ''C++'', utilize o nome do fonte como //fonte.cpp// (exemplo: //idade.cpp//) e compile com 
 +
 +    make idade.out
 +
 +O ''makefile'' irá colocar as chaves obrigatórias do regulamento, que são:
 +
 +    
 +    g++ -static -std=gnu++17 -pipe -DEVAL -s -O2 -lm fonte.cpp -o fonte.out
 +    
 +
 +A chave ''-std-gnu++17'' é dada como obrigatória pelo regulamento. 
 +
 +Para ambas as linguagens, o ''makefile'' fornecido pelo professor também acrescenta as seguintes chaves para facilitar seu //debug// e padronização de saída do compilador, quais sejam:
 +
 +    
 +    -Wall -Wextra -D$VERSION -D$BUILD -D$DEBUG -D$VARUSER -D_FORTIFY_SOURCE=$FORTIFY -Wl,-no-as-needed -Wl,--defsym,BUILD_$DEFSYM=0
 +    
 +
 +==== Teste ====
 +
 +Estando ainda na pasta ''rascunhos/obi'', e tendo criado e compilado o //código fonte// com sucesso, para testar utilize o comando abaixo, dando o nome do exercício (no exemplo //idade//):
 +
 +    checkobi.sh -f idade
 +
 +Este //script// irá rodar o seu programa uma vez para cada bloco de teste do exemplo, e comparar a saída do programa com a saída desejada. Para cada erro, será impressa uma linha indicando a diferença do que foi impresso e do que deveria ser impresso.
 +
 +Para testar com compilação em //C++// use:
 +
 +    checkobi.sh -p -f idade
 +
 +Caso seu programa rode sem erros, será mostrada a mensagem:
 +
 +    Saídas testadas com sucesso
 +
 +Se não conseguir a solução de primeira, volte a editar seu //código fonte// e repita o processo.
 +
 +==== Debug ====
 +
 +Caso precise //debugar// o seu programa, é útil colocar a chave de //debug// ''-g -Og'' (e desligar a otimização dada por ''-O2''). Para isso utilize o comando:
 +
 +    make idade.x DEBUG=1
 +
 +(ou, obviamente, o mesmo para ''C++'' com ''make idade.out DEBUG=1'').
 +
 +Utilize o ''gdb'' ou ''cgdb'' para fazer o //debug//.
 +
 +Não tenha economia em usar ''assert()'' no seu código e garantir as propriedades matemáticas e lógicas dos pontos cruciais do fluxograma e valores de variáveis assumidos.
 +
 +
 +===== Exercícios =====
 +
 +Os exercícios dos anos anteriores podem ser acessados diretamente na página da OBI em https://olimpiada.ic.unicamp.br/pratique/ . Abaixo enumeramos alguns mais interessantes usados para praticar suas técnicas de programação.
  
 +  * [[:obi:ex:idade | Idade da Monica]] (trabalhos/obi/idade.c)
 +  * [[:obi:ex:figurinhas | Figurinhas da Copa]] (trabalhos/obi/figurinhas.c)
 +  * [[:obi:ex:camisetas | Camisetas da Olimpíada]] (trabalhos/obi/camisetas.c)
 +  * [[:obi:ex:zero | Zero para Cancelar]] (trabalhos/obi/zero.c)
 +  * [[:obi:ex:jogo | Jogo da Vida]] (trabalhos/obi/jogo.c)
 +  * [[:obi:ex:placas | Placas de Carros]] (trabalhos/obi/placas.c)
 +  * [[:obi:ex:ogro | Ogro]] (trabalhos/obi/ogro.c)
 +  * [[:obi:ex:concurso | Concurso]] (trabalhos/obi/concurso.c)
 +  * [[:obi:ex:arranhaceu | Arranha-céu]] (trabalhos/obi/arranhaceu.c)
 +  * [[:obi:ex:teclado | Teclado]] (trabalhos/obi/teclado.c)
  
obi.1718204740.txt.gz · Last modified: 2024/06/12 12:05 by beco