Programação I (2009-2019)

Sobre a Disciplina de Programação I

Professor: Rodrigo Paes

[Veja aqui informações sobre o livro texto]

Incentivamos fortemente aos alunos que se identificaram com a disciplina que participem da Olimpíada Brasileira de Informática e da Maratona de Programação

Usamos o Huxley como ambiente para a realização de exercícios e de algumas avaliações: www.thehuxley.com

Conteúdo

Baixar todos os slides: https://drive.google.com/folderview?id=0B-eNAi37tDmFQkRoc0lmS29YNms&usp=sharing

  1. Sejam bem-vindos!

  2. Introdução, estado, algoritmo

  3. Primeiro programa em C

  4. Elementos básicos da programação

  5. Aula prática de resolução de problemas

  6. Decisão

  7. E se não for verdade? (senão)

  8. Decisões aninhadas

  9. Repetição

  10. Função

  11. Array

  12. Arrays bidimensionais (matrizes)

  13. String

  14. Ponteiro

  15. Estrutura

  16. Recursão

Vídeos

http://www.youtube.com/playlist?list=PL4Z4KvihWKj-DNiW-PkIkctaCggcXABbv

O que você precisa para programar?

Como alguém se torna um grande músico?

É preciso entender a teoria e também o funcionamento do instrumento. Claro, que o talento também ajuda. Mas o sucesso só vem com muita prática/treino. O treino é a aplicação da teoria várias vezes, usando cada sessão como um aprendizado para se tornar cada vez melhor.

Sendo assim, como você se torna um grande programador? Você precisa ler muito, aprender a teoria, as estruturas de dados, aprender com os seus erros, com os erros dos outros, mas acima de tudo, você precisa praticar muito. É preciso criar sessões de treino de programação.

Como você pode organizar as suas sessões de treino?

Você precisa de um tempo sem interrupções. Você precisa de um desafio que o faça se sentir motivado a resolver. Você precisa tentar quantas vezes forem necessárias e, principalmente, sinta-se confortável com o erro. Sempre procure refletir sobre o porquê dos erros. Tente conseguir opiniões de outros programadores sobre as suas soluções. Não tenha medo de se expor. Assim, você pode se tornar cada vez melhor. Tente não colocar pressão em si mesmo, mesmo que você esteja com restrições de tempo. Se organize para fazer a sua sessão com antecedência, assim as pressões serão menores. Procure sempre se divertir. Dê pequenos passos, aumente os níveis de dificuldade gradativamente. No final, a sua sessão de treino foi boa se você terminou ela sabendo um pouco mais do que quando começou!!

Rodrigo.

(texto adaptado de http://codekata.pragprog.com/2007/01/code_kata_backg.html)

Precisa de ajuda?A disciplina conta com 04 monitores. Envie suas dúvidas diretamente para o email: monitoria-p1@googlegroups.com. No site:http://groups.google.com.br/group/monitoria-p1, você pode encontrar outras dúvidas e saber mais informações sobre os horários de atendimento presencial.

Grupo

Utilizaremos o email abaixo para enviar comunicados, realizar discussões, etc. Portanto, por favor, cadastre-se.

p1-ic@googlegroups.com

http://groups.google.com.br/group/p1-ic

Monitores

  • Alfredo Lima Moura Silva (alfredolms@ic.ufal.br)

    • Segunda 17:00 - 19:00

    • Terça 15:20 - 17:10

    • Quarta 17:00 - 19:00

    • Sexta 13:30 - 17:00

  • Romário Oliveira Pantaleão (romariopantaleao@gmail.com)

    • Terça 13:00 - 17:10

    • Quinta 13:00 - 17:10

    • Sexta 15:10 - 17:00

  • Tauan Moraes de Castro Lima (tauan_moraes@hotmail.com)

    • Terça 8:00 - 12:00

    • Quarta 8:00 - 12:00

    • Sexta 13:30 - 15:00; 17:10 - 19:00

  • Tiago Lima Marinho (tiago.marinho.797@gmail.com)

    • Terça 8:00 - 12:00

    • Quarta 8:00 - 12:00

    • Sexta 13:30 - 17:00

Referências e Dicas

Sites sobre programação:

Tutoriais/apostilas de C

Tutoriais sobre como utilizar o PROMPT de comando do DOS

Documentação das bibliotecas padrão de C

Tabela ASCII

O compilador apresentou uma mensagem de erro? Veja aqui o significado delas:

Padrinhos

Todos os padrinhos são ex-alunos da disciplina que, voluntariamente, decidiram ajudar os novos alunos. Eles já passaram pela experiência de apresentar o trabalho final e, portanto, podem ajudar os novatos neste desafio.

É função do padrinho:

Manter a sua equipe motivada e trabalhando de forma constante para atingir um bom resultado no final e evitar que o trabalho seja feito muito em cima da hora;

Com bastante paciência, ajudar principalmente os que estiverem com mais dificuldades;

Ensinar a pescar, jamais dar o peixe!

Ajudar a montar a estrutura da apresentação. Lembre dos itens que foram elogiados e que foram problemáticos nas suas apresentações.

Bom trabalho a todos, e obrigado aos padrinhos por esse importante trabalho!

Trabalho Final (descontinuado, faremos a OBI ao invés disso)

Motivação: A Computação é uma área onde novas tecnologias surgem praticamente todos os dias. Logo, é fundamental que o profissional que atue na área desenvolva a habilidade de estudar, aprender novas tecnologias e resolver problemas complicados de maneira autônoma. Este trabalho busca exatamente explorar essa habilidade.

Método: Cada equipe deve desenvolver o seu trabalho em um tema que não foi visto em sala de aula.

Temas:

  • Um jogo (exemplo: space invaders)

    • Dê preferência a jogos onde o jogador joga contra o computador

  • Um programa de controle de algum estabelecimento (video locadora/mercado...) usando interface gráfica. Exemplo: GTK

    • Dica: faça uma lista de funcionalidades que o seu programa conterá e valide esta lista com o professor.

  • Chat: O seu próprio MSN. Programa que utiliza sockets para se comunicar.

    • O seu chat deve conter pelo menos: salas de bate papo privadas, emoticons

  • Uma aplicação web usando CGI

    • Dica: faça uma lista de funcionalidades que o seu programa conterá e valide esta lista com o professor.

  • Uma aplicação que utilize um banco de dados ao invés de arquivos para armazenar as informações

    • Mostre as diferencas entre o uso de arquivos e o uso de banco de dados

    • As suas tabelas devem ter relacionamentos

  • Um processador de texto em modo texto que tenha algumas operações básicas: negrito, itálico, procurar palavra ....

    • Provavelmente você precisará utilizar algumas estruturas de dados, tais como listas encadeadas

Regras gerais:

  • Serão 02 apresentações para cada equipe.

  • As apresentações devem durar entre 20 e 30 minutos.

  • Cada equipe pode conter no máximo 05 pessoas.

  • Serão realizadas 02 apresentações, com a seguinte estrutura:

  • Apresentação 01:

    • Introdução. Apresente aqui do que se trata o seu programa.

    • Lista de funcionalidades. Liste e explique as funcionalidades que o seu programa deve conter.

    • Bibliotecas a serem utilizadas. Diga quais as bibliotecas que o trabalho irá utilizar.

  • Apresentação 02:

    • Mudanças. Destaque eventuais mudanças nas funcionalidades ou bibliotecas da primeira apresentação para a segunda.

    • Módulos. Liste e explique os módulos do seu programa

    • Exemplos de código. Mostre alguns trechos de código que você achou interessante.

    • Demonstração. Execute e explique o seu programa.

Avaliação

Serão considerados os seguintes critérios: tamanho, complexidade, qualidade do código, qualidade da apresentação, boa distribuição de trabalho entre os membros da equipe, conhecimento do código.A equipe ganhará uma única nota de 0 a 50. Os membros do grupo devem dividir a nota entre si da forma que acharem mais justa. Por exemplo, se a nota do grupo for 40, o grupo pode optar por dar 8 para todos os 05 integrantes ou então premiar os que tiveram maior esforço com 10 e notas menores para os outros. Sendo assim, é importante que todos participem e demonstrem conhecimento sobre o trabalho nas apresentações.

Trabalhos finais passados

https://docs.google.com/spreadsheets/d/17L4YuZf7IWan_lkC1MvPiGZgKfTRzDWXz2Cl0NuAIuI/edit?usp=sharing