Clube de Programação UPF
Passo Fundo, 07 de março de 2017
Oficina 01: Introdução à Programação Competitiva
Introdução
Algoritmos e Programação?
Al-go-rit-mo:
Sequência finita de instruções bem definidas e não ambíguas
Al-go-rit-mo:
Sequência finita de instruções bem definidas e não ambíguas
Pro-gra-mar:
Ensinar as coisas mais legais do mundo a alguns pedaços de minérios.
Competições
Principais características
Maratona
OBI
Maratona e OBI têm em comum
Preparação faz a diferença
Ambiente de programação
Guias de Consulta Rápida
Anatomia de um código C++
#include<iostream>
using namespace std;
int main(){
int a, b;
cin >> a >> b;
cout << "X = " << a+b << endl;
return 0;
}
Anatomia de um código Java
import java.util.Scanner;
class Main{
public static void main(String args[]){
int a, b;
Scanner sc = new Scanner(System.in);
a = sc.nextInt();
b = sc.nextInt();
System.out.println("X = " + (a+b));
}
}
Compilação
# Compilação simples: gera um executável com nome "a.out"
g++ codigo.cpp
# Nomeando nosso executável
g++ codigo.cpp -o nome_programa
# Warnings: avisam sobre possíveis erros no seu código
g++ codigo.cpp -Wall
# Carregar a biblioteca <cmath> (<math.h>)
g++ codigo.cpp -lm
# Otimização
g++ codigo.cpp -O2
Execução e testes
# Execução simples: lê do teclado e escreve na tela
./programa
# Redirecionando a entrada: lê de um arquivo texto
./programa < entrada.txt
# Redirecionando a saída: escreve num arquivo texto
./programa < entrada.txt > saida.txt
# Medindo em quanto tempo nosso programa roda
time ./programa < entrada.txt > saida.txt
# Comparando a resposta esperada com a resposta do programa
diff gabarito.txt saida.txt
Compilação e execução Java
# Compilação Java
javac Programa.java
# Execução Java
java Programa
# Redirecionando a entrada e a saída
java Programa < entrada.txt > saida.txt
# Medindo em quanto tempo nosso programa roda
time java Programa < entrada.txt > saida.txt
# Comparando a resposta esperada com a resposta do programa
diff gabarito.txt saida.txt
Mão na massa!
Não se assuste
Ir da ideia pro código não é nada natural.
Não se assuste
Ir da ideia pro código não é nada natural.
É por isso que a gente treina.
Não se assuste
Ir da ideia pro código não é nada natural.
É por isso que a gente treina.
É a grande coisa que a Maratona oferece
:-)
Lição de casa
Exercícios e roteiros de estudo
Lição de casa
Leia a documentação da sua linguagem!
Obrigado!
Passo Fundo, 07 de março de 2017
/maratonaUPF
maratonaupf.github.io
constantin.leo@gmail.com