Upload
doanmien
View
219
Download
0
Embed Size (px)
Citation preview
TreinamentoOlimpíada Brasileira de Olimpíada Brasileira de
InformáticaInformática
Universidade Federal de Itajubá
Prof. Roberto Affonso da Costa Junior
AULA 01AULA 01
– Introdução– Estrutura do programa
Prof. Roberto Affonso da Costa Junior
http//www.facebook.com/rcosta62br
http://www.rcosta62br.unifei.edu.br
(35) 8879.8637
Instituto de Matemática e Computação
O cursoO curso
• Tipo de aulas– Apresentação de slides– Prática em laboratório
– Prática em casa
Olimpíada Brasileira de Olimpíada Brasileira de Informática - OBIInformá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 Olimpíada Brasileira de Informática - OBIInformá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 Olimpíada Brasileira de Informática - OBIInformá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 Olimpíada Brasileira de Informática - OBIInformá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
URIURI
• 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
2015
1º Lugar – Maratona Mineira de Programação
2015
1º Lugar - regional
11º Lugar - Final Brasileira
2016
1º Lugar – Maratona Mineira de Programação
2016
1º Lugar - regional
5º Lugar - Final Brasileira
AlgoritmoAlgoritmo
➢ 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.
AlgoritmoAlgoritmo➢ 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 Elas podem ser vistas como uma serie finita e bem definida de passos ou regras que, quando bem definida de passos ou regras que, quando realizadas, atingem um objetivo previamente realizadas, atingem um objetivo previamente definido. definido.
AlgoritmoAlgoritmo➢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 depassos, atingindo um
objetivo esperado.
AlgoritmoAlgoritmoExemplo
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.
24
AlgoritmoAlgoritmo
25
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 discos a cada momento (ou passo).
AlgoritmoAlgoritmo
O que é programar?O que é programar?
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ásicaEstrutura 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ásicaEstrutura 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áveisVariáveis
• Definição
É o nome do local físico da memória onde a informação é armazenada no computador.
• 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áveisVariá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áveisVariá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áveisVariá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.
VariáveisVariáveis
• 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.
Tipos de Variáveis em Tipos de Variáveis em linguagem C/C++linguagem C/C++
Tipo inteiroTipo inteiro
#include <bits/stdc++.h>
using namespace std;
int main (){ int x, soma; return 0;}
Tipo inteiroTipo inteiro
#include <bits/stdc++.h>
using namespace std;
int main (){ long long int x, soma; return 0;}
Tipo RealTipo Real
#include <bits/stdc++.h>
using namespace std;
int main (){ float a, valor_soma, media; return 0;}
Tipo RealTipo Real
#include <bits/stdc++.h>
using namespace std;
int main (){ double pi, valor_soma, media; return 0;}
Tipo CaracterTipo Caracter
#include <bits/stdc++.h>
using namespace std;
int main (){ char ch, vogal, letra; return 0;}
Tipo CaracterTipo Caracter
#include <bits/stdc++.h>
using namespace std;
int main (){ char nome[50], cidade[30], endereco[60]; return 0;}
Atribuição de valores à variáveisAtribuição de valores à variáveis
● Linguagem C++
variavel = valor (e/ou operador valor);
Exemplo inteiroExemplo inteiro#include <bits/stdc++.h>
using namespace std;
int main (){ int soma; soma = 569; return 0;}
Exemplo RealExemplo Real
#include <bits/stdc++.h>
using namespace std;
int main (){ float media; media = 42 / 7; return 0;}
Exemplo caracterExemplo caracter
#include <bits/stdc++.h>
using namespace std;
int main (){ char vogal; vogal = 'a'; return 0;}
Exemplo palavraExemplo 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 palavrasFunçõ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 1Exemplo 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;}