Treinamento
Olimpíada Brasileira de
Informática
Prof. Roberto Affonso da Costa Junior
Universidade Federal de Itajubá
AULA 01
– Introdução
– Estrutura do programa
Prof. Roberto Affonso da Costa Junior
[email protected]
http//www.facebook.com/rcosta62br
http://www.rcosta62br.unifei.edu.br
(35) 8879.8637
Instituto de Matemática e Computação
O curso
• Tipo de aulas
– Apresentação de slides
– Prática em laboratório
– Prática em casa
Olimpíada Brasileira de
Informática - OBI
• A OBI é uma competição organizada nos
moldes das outras olimpíadas científicas
brasileiras, como Matemática, Física e
Astronomia. O objetivo da OBI é despertar nos
alunos o interesse por uma ciência importante
na formação básica hoje em dia (no caso,
ciência da computação), através de uma
atividade que envolve desafio, engenhosidade e
uma saudável dose de competição. A
organização da OBI está cargo do Instituto de
Computação da UNICAMP.
Olimpíada Brasileira de
Informática - OBI
• A OBI está organizada em três modalidades:
– Modalidade Iniciação:
• Nível 1, para alunos até sétimo ano do
Ensino Fundamental e
• Nível 2, para alunos até nono ano do
Ensino Fundamental.
Olimpíada Brasileira de
Informática - OBI
– Modalidade Programação:
• Nível Júnior, para alunos do ensino fundamental,
• Nível 1, para alunos até o segundo ano do ensino
médio e
• Nível 2, para alunos até o terceiro ano do ensino
médio.
– Modalidade Universitária:
• Para alunos que estejam cursando, pela primeira
vez, o primeiro ano de um curso de graduação.
Olimpíada Brasileira de
Informática - OBI
• A Olimpíada Brasileira de Informática
disponibiliza o curso "on-line" Introdução à
Programação de Computadores. O curso é
composto de aulas com vídeos explicativos e
muitos exercícios, com o diferencial de que tudo
é em português, desde a interface do ambiente
até mensagens de erros de sintaxe do editor.
Confira em:
http://olimpiada.ic.unicamp.br/saci
URI
• Site de treinamento e exercícios:
https://www.urionlinejudge.com.br/judge/login
• Outros:
http://acm.timus.ru/
http://ahmed-aly.com/
http://uva.onlinejudge.org/
https://icpcarchive.ecs.baylor.edu/
http://br.spoj.com/
http://olimpiada.ic.unicamp.br/
http://maratona.ime.usp.br/
A UNIFEI na Maratona de Programação
- A UNIFEI participa da Maratona desde 2006
- A seguir, alguns resultados obtidos ao longo
dos anos:
2012
1º Lugar - regional
26º Lugar - Final Brasileira
2013
2º Lugar - Maratona Mineira
1º Lugar - regional
2013
22º Lugar - Final Brasileira
2014
2º Lugar - Maratona Mineira
2º Lugar - Regional
2014
1º Lugar - regional
19º Lugar - Final Brasileira
Algoritmo
➢ Definimos Algoritmo como a sequência
de passos que visam atingir um objetivo
bem definido.
➢ Os algoritmos são utilizados no dia-a-dia
para a solução dos mais diversos
problemas.
Algoritmo
➢ Alguns exemplos genéricos de algoritmos
usados no nosso cotidiano são: uma coreografia,
um manual de instruções, uma receita de bolo, a
solução de uma equação do 2º grau, uma
pesquisa na lista telefônica, etc.
➢ O que todas essas coisas tem em comum?
Elas podem ser vistas como uma serie finita e
bem definida de passos ou regras que, quando
realizadas, atingem um objetivo previamente
definido.
Algoritmo
➢Assim, outra definição para algoritmos poderia ser:
Algoritmo é a descrição de um
conjunto de ações que, obedecidas,
resultam numa sucessão finita de
passos, atingindo um
objetivo esperado.
Algoritmo
Exemplo
Considere o seguinte problema:
Temos três hastes. Uma das hastes serve de suporte
para três discos de tamanhos diferentes. Os discos
menores são sempre colocados sobre os discos maiores. A
figura a seguir mostra uma possível situação inicial das
hastes e discos.
Desejamos mover todos discos para outra haste, porém
só podemos movimentar um disco de cada vez e um disco
maior nunca pode ser colocado sobre um disco de menor
tamanho.
Algoritmo
20
Algoritmo
Solução: Em forma narrativa
Nomeamos as hastes como 1, 2 e 3 e os discos
como p, m e g. Considera-se que inicialmente os
discos estão na haste 1. Os passos são:
1. move o disco p para a haste 3.
2. move o disco m para a haste 2.
3. move o disco p para a haste 2.
4. move o disco g para a haste 3.
5. move o disco p para a haste 1.
6. move o disco m para a haste 3.
7. move o disco p para a haste 3.

Podemos também representar a solução em forma
gráfica, desenhando as hastes e a posição dos
21
discos a cada momento (ou passo).
O que é programar?
O que é programar?
O ato de, através de códigos, comandar as
ações de um computador para alcançar
objetivos definidos.
Estrutura Básica
• Todos os códigos que faremos nas nossas aulas terão
uma estrutura igual:
- Includes: são bibliotecas que
guardam as funções dos
códigos que você irá utilizar
em seus programas!
- Essa biblioteca é usada pelos
alunos da UNIFEI e ela
abrange todas as outras.
Estrutura Básica
- int main(): Representa onde seu programa
começa, mostrando para o compilador onde
deve começar a executar.
- return 0;: Esta função é responsável por
mostrar se o programa foi executado
corretamente, mostrando 0 se sim, e outro
número qualquer se não.
Variáveis
• Definição
É o nome do local físico da memória onde
a
informação
é
armazenada
no
computador.
Variáveis
• Denominação
A denominação ou nome de uma variável é dada pelo
programador e deve sempre lembrar a função da
informação que está sendo armazenada.
Variáveis
• Exemplos
idade → corresponde ao nome de uma variável
cujo objetivo é armazenar a idade de uma pessoa;
nomeAluno → corresponde ao nome de uma
variável cujo objetivo é armazenar o nome de um
aluno.
Variáveis
• Definição dos Tipos
Ao se definir uma variável, deve-se definir também o
tipo da informação que esta variável vai armazenar.
Recomenda-se que esta tarefa seja realizada no inicio
do programa para que haja melhor documentação do
programa;
Variáveis
• Exemplos
inteiro idade → corresponde ao nome de uma
variável cujo objetivo é armazenar a idade de uma
pessoa e é do tipo inteiro;
palavra nomeAluno → corresponde ao nome de
uma variável cujo objetivo é armazenar o nome de
um aluno e é do tipo caracter.
Tipos de Variáveis em
linguagem C/C++
• Na linguagem de programação C/C++ temos
os seguintes tipos:
– int ou long long int para variáveis do
tipo numérico inteiro.
–
float ou double para variáveis do tipo
numérico real.
–
char ou char [] para variáveis do tipo
alfabético ou caracter.
Tipo inteiro
#include <bits/stdc++.h>
using namespace std;
int main ()
{
int x, soma;
return 0;
}
Tipo inteiro
#include <bits/stdc++.h>
using namespace std;
int main ()
{
long long int x, soma;
return 0;
}
Tipo Real
#include <bits/stdc++.h>
using namespace std;
int main ()
{
float a, valor_soma, media;
return 0;
}
Tipo Real
#include <bits/stdc++.h>
using namespace std;
int main ()
{
double pi, valor_soma, media;
return 0;
}
Tipo Caracter
#include <bits/stdc++.h>
using namespace std;
int main ()
{
char ch, vogal, letra;
return 0;
}
Tipo Caracter
#include <bits/stdc++.h>
using namespace std;
int main ()
{
char nome[50], cidade[30], endereco[60];
return 0;
}
Atribuição de valores à variáveis
●
Linguagem C
variavel = valor (e/ou operador valor);
Exemplo inteiro
#include <bits/stdc++.h>
using namespace std;
int main ()
{
int soma;
soma = 569;
return 0;
}
Exemplo Real
#include <bits/stdc++.h>
using namespace std;
int main ()
{
float media;
media = 42 / 7;
return 0;
}
Exemplo caracter
#include <bits/stdc++.h>
using namespace std;
int main ()
{
char vogal;
vogal = 'a';
return 0;
}
Exemplo palavra
●
●
●
Diferentemente dos outros tipos, o tipo palavra não
pode ter atribuição direta;
Esta atribuição somente poderá ser realizada
através de funções da biblioteca da linguagem
C/C++;
Todas as vezes que esta biblioteca é usada, a
seguinte declaração é necessária:
#include <string.h>
Com a nossa include não vai precisar colocar essa.
Funções de palavras
●
A seguir algumas das funções que poderão ser
usadas com o tipo cadeia:
– strcpy ( a, b )
copia a cadeia b na cadeia a
– strcmp ( a, b )
compara a cadeia a com a cadeia b ( se forem iguais o
resultado é igual a zero )
– strcat ( a, b )
concatena a cadeia b com a cadeia a guardando o resultado na
cadeia a
Exemplo 1
#include <bits/stdc++.h>
int main ( void )
{
char x[10], y[5], t[20];
strcpy ( x, “Maria” );
strcpy ( y, “sol” );
strcpy ( t, x );
strcat ( x, y );
return 0;
}
Download

Aula 1 - Prof. Roberto Affonso da Costa Junior