Maratona de Programação - Dicas Para Iniciantes



Documentos relacionados
Aula Extra. Depurador Code::Blocks. Monitoria de Introdução à Programação

Programação de Computadores I. Linguagem C Função

Nº horas ESTRATÉGIAS RECURSOS AVALIAÇÃO

Linguagens de Programação:

Orientação a Objetos

Universidade Federal da Paraíba Centro de Informática Departamento de Informática

Introdução. Software Básico Aula 3. Prof. Dr. Rogério Vargas.

Introdução a Funções

3. COMPILAÇÃO E ESTRUTURA BÁSICA DE UM PROGRAMA EM C

Aula 01 Introdução Custo de um algoritmo, Funções de complexidad e Recursão

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.

Montadores e Compiladores

OBSERVAÇÕES: EXERCÍCIOS

OpenPDV: Sistema aberto para gerenciamento de restaurantes

MANUAL DO USUÁRIO SIMPLEX. Prof. Erico Fagundes Anicet Lisboa, M. Sc.

Introdução à Algoritmos. Aula 11

OBI2012 Caderno de Tarefas

Linguagens e Paradigmas de Programação

Programação de CPLDs no ambiente ISE 4.2i da Xilinx

CAMPUS DE GUARATINGUETÁ FACULDADE DE ENGENHARIA. Introdução à Programação em C. Algoritmos: Estruturas de Repetição. Prof. Dr. Galeno.J.

O SOFTWARE LIVRE COMO FERRAMENTA DE ENSINO

BC1424 Algoritmos e Estruturas de Dados I Aula 02: Ponteiros, estruturas e alocação de memória

OBI2007 Caderno de Tarefas

Comandos de Desvio 1

UNIVERSIDADE CATÓLICA DE PELOTAS CENTRO POLITÉCNICO BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO REDE DE COMPUTADORES II Prof. Dr. Adenauer C.

Algoritmos e Programação II

INF1005: Programação I. Algoritmos e Pseudocódigo

Informática Aplicada

INTEGRAÇÃO JAVA COM ARDUINO

Linguagens e códigos digitais

BOCA-LAB: Corretor automático de Código adaptado ao Ensino de Linguagem de Programação.

Estruturas de Repetição

Modelos de Ciclo de Vida de Software

Os conceitos aprendidos são fundamentais, essenciais para escrever um programa macro. Mas o que é um programa macro?

Conceitos básicos de programação

Calculando seno(x)/x com o interpretador Hall.

Aula 1 Oficina de Programação e Laboratório Apresentação. Profa. Elaine Faria UFU

Algoritmos e Programação : Conceitos e estruturas básicas. Hudson Victoria Diniz

Formação WEB com PHP. Subtítulo

Verificação e validação

Parte 05 - Técnicas de programação (mapas de Veitch-Karnaugh)

CURSO DE MOLDES EM MÓDULOS OU COMPLETO

EXPLORANDO A RESOLUÇÃO DE PROBLEMAS COM O MAPLE

5. O Mapa de Karnaugh

PESQUISA OPERACIONAL: NA TOMADA DE DECISÕES ADMINISTRATIVA

UNIPAC Araguari FACAE - Faculdade de Ciências Administrativas e Exatas SISTEMAS DE INFORMAÇÃO

Algoritmo e Lógica de Programação. Conceitos de Linguagens de Programação

Detecção de erros de comunicação de dados CRC

I Maratona de Programação do IFFluminense campus Macaé

Metodologias de Programação

Primeira Prova de Análise e otimização de Código - DCC888 -

Tipos de Software e Ambientes de Processamento

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini prof.andre.luis.belini@gmail.com /

MANUAL DO PROFESSOR 2012/2013. Guidelines for the trainer: Definition of the course: LLP-GRU-MP-2011-LT

POLÍCIA MILITAR DO PARANÁ Comando do Corpo de Bombeiros 4º GRUPAMENTO DE BOMBEIROS

Escola Secundária c/3º CEB José Macedo Fragateiro. Curso Profissional de Nível Secundário. Componente Técnica. Disciplina de

- Campus Salto. Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula

Curso Tecnológico de Administração/12.º Nº de anos: 1 Duração: 120 minutos Decreto-Lei n.º 139/2012, de 5 de julho

A primeira coisa ao ensinar o teorema de Pitágoras é estudar o triângulo retângulo e suas partes. Desta forma:

Exame de Equivalência à Frequência do Ensino Secundário

CURSO VOCACIONAL DE ARTE E PUBLICIDADE

Resolução de Problemas. Orientador(a): Giselle Costa Alunos: André Parducci Elidiel Dantas

Um Módulo de Desenvolvimento para o ARDUINO

PROGRAMAÇÃO ORIENTADA A OBJETO INTRODUÇÃO

Structural Patterns - Proxy

Linux? O que é, para que serve, etc. isep. Grupo de Utilizadores de Linux do Departamento de Eng. Informática do ISEP

Aprendizado de Máquina (Machine Learning)

Guia de Procedimentos Bloco C (SPED PIS/COFINS) Introdução... 2

PROGRAMAÇÃO LINEAR. Formulação de problemas de programação linear e resolução gráfica

Trabalho Prático II - Resta 1 Data de Entrega: Conferir no calendário!

Dicas de como contornar a crise (e até sair dela)

Turbina eólica: conceitos

AULA 3 Alocação dinâmica de memória: Ponteiros

Algoritmo e Pseudo-código

Algoritmos e Estruturas de Dados I. Variáveis Indexadas. Pedro O.S. Vaz de Melo

SISTEMA DE CONTROLE DE MOVIMENTAÇÃO DE COLABORADORES

Gestão de Processos: Ciclo PDCA. Profa. Reane Franco Goulart

1. Noção de algoritmo

Gestão do Conhecimento. É possível gerenciar o conhecimento? Gestão do Conhecimento 21/2/2011

e-nota G Módulo de Guarda da Nota Fiscal eletrônica

Backup e Recuperação Guia do Usuário

MANUAL DO SISTEMA TRT-5 PRESTADOR MÉDICO

LÓGICA E ROBÓTICA PRIMEIRAS IMPRESSÕES

Tecnologias no Ensino de Matemática

Árvores Parte 1. Aleardo Manacero Jr. DCCE/UNESP Grupo de Sistemas Paralelos e Distribuídos

1.1. Definição do Problema

Come On Labels. Common appliance policy All for one, One for all Energy Labels. Contrato N : IEE/09/628/SI

Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.

Programação em JAVA. Subtítulo

Internet das Coisas com Intel A3 Métodos de programação.

Engenharia de Software. Ciclos de Vida do Software. 1. Sistemas

Configurar conta corrente para cada Forma de Pagamento

Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Capítulo 6 - Threads

FUNÇÕES MATEMÁTICAS NÚMERO : PI() SENO E COSSENO: SEN() E COS()

Programação de Computadores - I. Profª Beatriz Profº Israel

Desenvolvimento guiado por testes e ferramentas xunit

GUIA DE FUNCIONAMENTO DA UNIDADE CURRICULAR

Transcrição:

Sumário Maratona de Programação - Dicas Para Iniciantes Prof. Josué Pereira de Castro Universidade Estadual do Oeste do Paraná Curso de Bacharelado em Informática Cascavel, 2009

Sumário Sumário 1 Conceitos Fundamentais

Conceitos Fundamentais Maratona de Programação (ACM ICPC - International Collegiate Programming Contest): Um playground para explorar a inteligência dos programadores Iniciantes: tente encontrar primeiro os problemas mais fáceis e resolvê-los no tempo mais curto possível. Tente gastar menos tempo com a codificação e mais tempo pensando no algoritmo de solução e na depuração. Bons programadores gastam 10% do tempo com a codificação, 45% do tempo pensando na solução e 45% do tempo com a depuração do programa.

Linguagens de Programação e Depuração Inicialmente, tente aprender apenas uma linguagem de programação profundamente. Somente após dominar uma linguagem razoavelmente bem, tente explorar as outras linguagens permitidas. Esta abordagem reduz o tempo necessário para a escrita dos problemas e para a depuração dos códigos. Com o tempo, tente escolher a linguagem mais adequada para resolver cada problema específico.

Evite Erros de Compilação Muitos iniciantes gastam bastante tempo enviando submissões que não compilam na máquina do juiz. As principais causas, geralmente são: 1 usar funções que não estão definidas no padrão da linguagem 2 tentativa de manipular os arquivos de entrada e saída diretamente dentro do programa. A saída deve ser lida/escrita diretamente para o console através das funções/objetos padrão da linguagem. 3 uso de bibliotecas que não estão no padrão das linguagens permitidas (Ex: conio.h) 4 utilização de pacotes (packages) na linguagem java, que geralmente provocam erros quando compilados na máquina dos juizes 5 certifique-se de que está enviando a solução certa para o problema correto, pois os sistemas de submissão consideram estas submissões como erros, e os juizes também.

Esqueça a eficiência (a menos que seja necessário) Muitos problemas em torneios são especificamente projetados para medir a capacidade do concorrente em construir códigos eficientes e rápidos, mas muitos pedem apenas qualquer solução. Inicialmente, concentre-se em encontrar uma solução para o problema (qualquer solução) e submeta. Se a solução estourar o tempo determinado, tente otimizar o código para reduzir o tempo de execução.

Tenha na cabeça (ou em mãos) vários tipos de algorimos Muitos problemas só podem ser resolvidos pela aplicação de vários algoritmos clássicos combinados, ou através de variações efetuadas nestes algoritmos clássicos. É importante tê-los disponíveis. Prefira inicialmente os algoritmos mais simples para resolver os problemas, ainda que estes não sejam os mais eficientes. O torneio não leva em conta elegância nem eficiência (a não ser em alguns problemas específicos).

Faça uma programação simples Evite o uso dos operadores ++ e dentro de expressões ou de chamadas de funções. Evite expressões da forma *p++. Evite o uso da aritmética de ponteiros Use p[5] em vez de (p+5). Evite abusar do operador ternário. Utilize sempre nomes descritivos para suas variáveis.

Finalmente Conceitos Fundamentais Não se pode ensinar a resolver problemas. Só se aprende a resolvê-los tentando. Aprender uma linguagem de programação requer prática constante. Para ser um bom programador é preciso gostar de programar. Uma boa bagagem matemática é fundamental. Persistência e determinação são imprescindíveis.