User Tools

Site Tools


obi

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
obi [2024/06/12 12:12] – logo obi becoobi [2024/06/19 14:47] (current) – teclado telefonico [1] beco
Line 7: Line 7:
 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.1718205164.txt.gz · Last modified: 2024/06/12 12:12 by beco