• Nenhum resultado encontrado

BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Tóffolo 2011/1

N/A
N/A
Protected

Academic year: 2021

Share "BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Tóffolo 2011/1"

Copied!
38
0
0

Texto

(1)

BCC402

Algoritmos e Programação

Avançada

Prof. Marco Antonio M. Carvalho

Prof. Túlio Ângelo M. Tóffolo

(2)

Na aula de hoje

• UVa;

• Tipos de Erros;

• Representação de tipos;

• Formas Padrão de Entrada e Saída (I/O); • Compilação Padrão;

(3)

UVa

Universidad de Valladolid

(ESP)

• A Universidad de Valladolid, na Espanha, mantém um site (UVa Online Judge) com vários problemas do

mesmo tipo dos utilizados em competições de programação

– Organizados em diferentes coleções; – A princípio, são 27000 problemas!

• Além disso, o site também possui um juiz para correção automática (autojudge)

– Você escolhe um problema, cria um programa e envia o código-fonte;

– Rapidamente você recebe a resposta sobre seu programa.

(4)

UVa

Universidad de Valladolid

(ESP)

• É necessário um cadastro para utilizar o

autojudge

– Este cadastro é associado a um perfil:

• Número de problemas resolvidos; • Respostas erradas;

• etc.

• Desta forma, basta realizar um cadastro neste site para que o interessado comece a usufruir deste banco de dados organizado.

(5)

UVa

Universidad de Valladolid

(ESP)

• Existe também um ranking mundial, atualizado constantemente

– 109201 programadores (março/2011);

– O primeiro colocado (Josh Bao) resolveu 2809 problemas, em 11315 submissões. • Linguagens aceitas: – C; – Java; – Pascal; – C++.

• A idéia não é abandonar um estilo de programação, porém, adotar um estilo adequado ao trabalho.

(6)

UVa

Universidad de Valladolid

(ESP)

• Os problemas citados no livro-texto desta disciplina (Programming Challenges) estão neste site

– Devidamente identificados.

• A cada aula, um conjunto de problemas será disponibilizado para que vocês resolvam

– Em português;

– O aluno escolherá alguns (número estipulado) dos exercícios para resolver.

(7)

O Processo

1 2 3 4 Ok

(8)

Avaliação

• Só serão avaliados exercícios também aceitos pelo autojudge

– Tentativas de fraude acarretam em perda de todo e qualquer privilégio;

– Além da perda da nota.

• Exercícios durante as aulas práticas e também para realização durante a semana.

(9)

Links

• Moodle

www.decom.ufop.br/moodle

• Site da disciplina (backup)

www.decom.ufop.br/toffolo/ensino/bcc402_2011-1/

• UVa

(10)

Tipos de erros

• O autojudge exibe uma mensagem após a correção do código-fonte enviado

– Accepted (Aceito) ou algum erro;

• No caso de erro, uma mensagem mais

específica é exibida para que o código-fonte seja corrigido e submetido novamente

– No entanto, a mensagem nem sempre é específica sobre a localização do erro.

(11)

Tipos de erros

• Compile Error: Erro de compilação

– O programa não compila.

• Runtime Error: Erro de execução

– O programa deu pau em algum dos testes realizados; – Note que a bateria de testes é extensa, e embora seu

programa tenha executado normalmente para os testes que você fez, há algo de errado;

– Procure por erros de memória.

• Time Limit Exceeded: Tempo de execução excedido

– O programa demorou demais a responder;

– Não foi avaliado se a resposta está certa ou errada; – Procure por procedimentos pesados ou loops infinitos.

(12)

Tipos de erros

• Presentation Error: Saída em formato errado

– A resposta dada está em formato errado em relação ao que foi pedido;

– Uma diferença mínima, como uma quebra de linha já é suficiente;

– Note que, neste caso, não foi avaliado se a solução está certa ou errada.

• Wrong Answer: Resposta errada

– A resposta está errada;

– Novamente, a bateria de testes é extensa, e embora seu programa tenha executado normalmente para os testes que você fez, há algo de errado;

(13)

Tipos de erros

• Memory Limit Exceeded: Memória excedida

– O programa requer mais memória do que é permitido para o problema;

– Verifique se a abordagem está correta, cuidado com recursividade, programação dinâmica e backtracking.

• Output Limit Exceeded: Muitos dados na saída

– O programa produz mais que 4 MB de dados de saída; – Raro.

• Restricted Function: Função Restrita

– Utilização de chamadas de sistema ou acesso a sistema de arquivos;

(14)

Tipos de erros

• Others: Outros

– Erros incomuns;

– Raro de acontecer, mas não impossível; – Neste caso não tem dica…

(15)

Entrada e Saída

• Em todos os problemas que veremos, os dados são lidos da entrada padrão e escritos na saída padrão

– Nada de abrir arquivos ou chamadas de sistema.

• Em Java, existe uma certa dificuldade com I/O padrão

– java::io possui funções restritas;

– Há um “esqueleto” disponível para submissões em Java que facilita.

(16)

Entrada e Saída

• Por exemplo, suponha um programa que deve ler dois números da entrada e calcular o valor absoluto de sua diferença

– Ler dados até quando?

• Se não foi especificado um critério de parada, os dados são lidos até que acabem.

(17)
(18)
(19)

Entrada e Saída

• Note que os dados, para propósitos de nossos testes, são lidos a partir de um arquivo, porém, utilizando redirecionamento (<) a partir de um terminal

– Mais fácil em ambientes Linux.

(20)

Entrada e Saída

392.65 Usa o mais curto entre %e e %f

g

392.65 Ponto flutuante decimal

f

3.9265E+2 Notação científica, usando o

caractere E

E

3.9265e+2 Notação científica, usando o

caractere e

e

392 Inteiro decimal com sinal

d ou i A Caractere c Exemplo Saída Formato

(21)

Entrada e Saída

B800:0000 Endereço de ponteiro

p

7FA Hexadecimal inteiro sem sinal

(Maiúsculas)

X

7fa Hexadecimal inteiro sem sinal

x

7235 Decimal inteiro sem sinal

u

Tricolor String

s

610 Octal com sinal

o

Exemplo Saída

(22)

Entrada e Saída

“%010d” Número de caracteres a serem

escritos, completa com zeros

0inteiro

“%10d” Número de caracteres a serem

escritos (n), completa com espaços em branco

ninteiro

“.2f” Número de casas decimais (n)

.nformato

Exemplo Descrição

(23)

Representação de tipos

• Mantenha a simplicidade

– Nada de matar formiga usando tanques de guerra.

• Familiarize-se com os tipos de dados primitivos

– A partir deles quase tudo pode ser criado e resolvido.

(24)
(25)

Representação de tipos

• Note que o tamanho dos tipos não é definido pela linguagem

– Na verdade, depende da arquitetura utilizada

• 16 bits, 32 bits, 64 bits…

• Para maior precisão, existem estruturas e bibliotecas para números de alta precisão

– Por exemplo, a bignum;

– Com isso surge a aritmética de inteiros de alta

(26)

Representação de tipos

• Estar atento aos limites de cada tipo é

especialmente importante para evitar erros; • Na descrição da entrada de cada problema, é

informado o intervalo de valores que podem ser utilizados na entrada

– Por exemplo, se um inteiro da entrada está entre 0 e 3x109, o tipo int não servirá;

– Consequentemente, um programa que usa o tipo

(27)

Compilação por linha de

comando

• C

gcc fonte.c –o destino –lm –lcrypt –O2 –pipe –ansi –DONLINE_JUDGE

• C++

g++ fonte.cpp –o destino –lm –lcrypt –O2 –pipe– DONLINE_JUDGE

(28)

Considerações sobre C/C++

(29)

Considerações sobre Java

• Submissões para o autojudge devem conter apenas um arquivo;

• Todos os programas devem começar com um método estático main, na classe Main;

• Não use classes públicas, mesmo a Main

(30)

Como submeter uma solução

• Após realizar o login, no menu lateral direito,

(31)

Como submeter uma solução

1. Informe o id do problema

– Geralmente vem antes do nome do mesmo;

2. Marque corretamente a linguagem de

programação utilizada no código;

3. Faça o upload do arquivo correto; 4. Clique em submit.

(32)

1 2

(33)

Dicas

• O poder das linguagens de programação não reside apenas em construir programas

interessantes, mas também em construí-los de maneira limpa e melhor;

• Ou seja, um bom escritor não consiste apenas em um bom vocabulário, mas também em ter algo a dizer.

(34)

Dicas

• Comente primeiro

– Comece seus programas e funções pelos comentários. Se você não conseguir comentar com facilidade, certamente não sabe o que a função deve fazer.

• Documente cada variável

– Brevemente, descreva para quê serve a variável, é um mínimo de legibilidade.

• Use constantes

– Quando necessário. Inconsistência em valores repetidos de constantes causam erros difíceis de depurar.

(35)

Dicas

• Utilize subrotinas para evitar redundâncias

– Além disso, trechos repetidos podem ter uma

única ocorrência de erro. Depurar fica mais difícil.

• Depure

– Seja por mensagens inseridas no código ou através de uma ferramenta, utilize mensagens com significado, principalmente, o conteúdo de variáveis importantes.

(36)
(37)

Na próxima aula

• Estruturas de Dados – Pilhas; – Listas; – Filas • Filas de Prioridades. – Dicionários.

(38)

Referências

Documentos relacionados

Amikor a vevő azt mondja, hogy drága, olyankor valójában csak annyit mond, hogy az ő szemében az értéke alacsonyabb, mint amit fizetnie kellene érte.. A vevő szemében az

Na Figura 6 é apresentado o resultado da análise termogravimétrica da camada externa da amostra do poço RP–0147, onde observamos uma perda de massa

a) Revitalizar os esforços com vista a resolver a crise da força de trabalho no sector da saúde e criar sistemas de saúde sustentáveis, através da

Quando o diálogo Expert Level Parameter aparecer, selecione Variable Selection, , então a seguinte caixa de diálogo aparecerá:... Este diálogo também pode ser acessado através

Na análise de currículo serão considerados apenas itens da Ficha de Avaliação do Currículo do candidato que sejam efetivamente comprovados e pertinentes à área de

Fisiologia da lactação, avaliação da idade, exterior e anatomia dos animais, juízo e julgamento, raças e cruzamentos, manejo sanitário de bezerros, novilhas, vacas secas e em

A ESCOLA que tiver até 100 (cem) alunos matriculados terá facultada a substituição por uma cesta básica de alimentos de, no mínimo, 12 kg. Esse benefício deverá ser

O catalisador de níquel é um exemplo de catalisador suportado que tem sido fortemente pesquisado devido à sua elevada atividade e estabilidade em relação ao