Programação de Computadores Renato Dourado Maia Instituto de Ciências Agrárias Universidade Federal de Minas Gerais CONSIDERAÇÕES INICIAIS
Programação de Computadores
Renato Dourado MaiaInstituto de Ciências Agrárias
Universidade Federal de Minas Gerais
CONSIDERAÇÕES INICIAIS
18/02/14 Programação de Computadores – Renato Dourado Maia 2/37
Página da Disciplina
• O material será disponibilizado por meio da página da dis-ciplina:– http://www.renatomaia.net.
• Os contatos deverão ser feitos por meio dos seguintes e-mails:– [email protected] para questões relacionadas à disciplina.– [email protected] para questões gerais.
18/02/14 Programação de Computadores – Renato Dourado Maia 3/37
Informações Gerais
• As informações gerais (objetivo, motivação, ementa, bibli-ografia e avaliação) podem ser consultadas no plano da disciplina, que está disponível na página.– Cabe destacar que a versão disponibilizada na página é apenas
para consulta e, portanto, não possui validade legal!
18/02/14 Programação de Computadores – Renato Dourado Maia 4/37
Vamos aprender a fazer programas!
18/02/14 Programação de Computadores – Renato Dourado Maia 5/37
Questão Fundamental
Por que programar?
18/02/14 Programação de Computadores – Renato Dourado Maia 6/37
Por Que Programar?
• É divertido:– Pode ser melhor do que utilizar programas feitos por terceiros.– Fazer programas = resolver quebra-cabeças = exercício mental.– Programação como arte...
• É útil:– Programação como ferramenta...– Há aplicações em quase qualquer atividade:
✔ Arte, ciência, filosofia, entretenimento...
18/02/14 Programação de Computadores – Renato Dourado Maia 7/37
Por Que Programar?
“Os computadores são incrivelmente rápidos, preci-sos e burros. Os homens são incrivelmente lentos,
imprecisos e brilhantes. Juntos, seu poder ultrapas-sa os limites da imaginação.”
Albert Einstein
18/02/14 Programação de Computadores – Renato Dourado Maia 8/37
Muitos Pensam que Programar é...
Veremos que isso não é verdade!
Coisa de LoucoBruxaria
Coisa de Outro Mundo
Apenas paraNinjas
18/02/14 Programação de Computadores – Renato Dourado Maia 9/37
Vocês Devem Estar se Perguntando...
Mas programar não é apenas para
quem estuda computação?
18/02/14 Programação de Computadores – Renato Dourado Maia 10/37
Vocês Devem Estar se Perguntando...
• Introduction to Programming using Python – Programming Course for Biologists at the Pasteur Institute:– http://www.pasteur.fr/formation/infobio/python/– Há uma versão em pdf do curso para download.
• Course “Informatics for Biology” at the Pasteur Institute:– http://www.pasteur.fr/formation/infobio/infobio-en.html
18/02/14 Programação de Computadores – Renato Dourado Maia 11/37
Vocês Devem Estar se Perguntando...
Ah, Renato, você está exagerando...
18/02/14 Programação de Computadores – Renato Dourado Maia 12/37
Vocês Devem Estar se Perguntando...
• http://www.manning.com/sande/• http://helloworldbookblog.com/“Computer programming is a pow-erful tool for children to ‘learn learning,’ that is, to learn the skills of thinking and problem-solving… Children who engage in program-ming transfer that kind of learning to other things.” –Nicholas Negro-ponte, the man behind the One Laptop Per Child project.
18/02/14 Programação de Computadores – Renato Dourado Maia 13/37
Vocês Devem Estar se Perguntando...
• http://code.google.com/p/rur-ple/• http://code.google.com/p/play-to-program/
18/02/14 Programação de Computadores – Renato Dourado Maia 14/37
Vocês Devem Estar se Perguntando...
18/02/14 Programação de Computadores – Renato Dourado Maia 15/37
Vocês Devem Estar se Perguntando...
18/02/14 Programação de Computadores – Renato Dourado Maia 16/37
Vocês Devem Estar se Perguntando...
18/02/14 Programação de Computadores – Renato Dourado Maia 17/37
Novidade
• Algoritmo e Programação Matemática/Programação de Computadores:– Antes: Algoritmo + Portugol (houve uma tentativa com C).
✔ Essa é uma abordagem clássica.– Desde 2012: Algoritmo + Python.
Por que mudar? Por que Python?
18/02/14 Programação de Computadores – Renato Dourado Maia 18/37
Por que Mudar?
• Há duas alternativas para iniciar o aprendizado sobre pro-gramação:– Começar com uma linguagem de programação real, mas “sofrer”
com os empecilhos que elas impõem para o aprendizado de inici-antes.
– Utilizar uma linguagem de programação para iniciantes, usufru-indo da simplicidade oferecida para o aprendizado, mas sabendo que ela não é poderá ser utilizada para a implementação de apli-cações “reais”.
• Python, como veremos nos próximos dois slides, combina os melhores aspectos dessas duas abordagens!
18/02/14 Programação de Computadores – Renato Dourado Maia 19/37
Por que Python?
• Os conceitos fundamentais da linguagem são simples de entender.
• A sintaxe da linguagem é clara e fácil de aprender.• Os tipos pré-definidos incluídos na linguagem são podero-
sos e, ainda assim, simples de entender.• A linguagem possui um interpretador de comandos inte-
rativo que permite aprender e testar rapidamente trechos de código.
• É possível escrever extensões em outras linguagens, como C e C++.
18/02/14 Programação de Computadores – Renato Dourado Maia 20/37
Por que Python?
• Existe suporte para uma grande diversidade de bibliotecas externas.– Python é uma linguagem que está crescendo muito no contexto
da computação científica, que é algo muito útil em engenharia e ciência em geral.
✔ Veremos alguns exemplos no final da aula, caso o tempo permita... ✔ Programadores da NASA e do Google, por exemplo, utilizam Python!
• Multiplataforma: Windows, Linux, Mac...• Python é software livre e, portanto, grátis.• Existe uma comunidade grande e muito ativa.• Há muito material disponível!
18/02/14 Programação de Computadores – Renato Dourado Maia 21/37
Por que Python?
18/02/14 Programação de Computadores – Renato Dourado Maia 22/37
Por que Python?O Zen do Python, por Tim Peters
Bonito é melhor que feio.Explícito é melhor que implícito.Simples é melhor que complexo.Complexo é melhor que complicado.Linear é melhor do que aninhado.Esparso é melhor que denso.Legibilidade conta.Casos especiais não são especiais o bastante para quebrar as regras.Ainda que praticidade vença a pureza.Erros nunca devem passar silenciosamente.A menos que sejam explicitamente silenciados.Diante da ambiguidade, recuse a tentação de adivinhar.Deveria haver um — e preferencialmente só um — modo óbvio para fazer algo.Embora esse modo possa não ser óbvio a princípio a menos que você seja holandês.Agora é melhor que nunca.Embora nunca frequentemente seja melhor que *já*.Se a implementação é difícil de explicar, é uma má ideiaSe a implementação é fácil de explicar, pode ser uma boa ideiaNamespaces são uma grande ideia — vamos ter mais dessas!
18/02/14 Programação de Computadores – Renato Dourado Maia 23/37
Por que Python?http://www.python.org/about/success/
18/02/14 Programação de Computadores – Renato Dourado Maia 24/37
Por que Python?http://www.python.org.br/wiki/EmpresasPython
18/02/14 Programação de Computadores – Renato Dourado Maia 25/37
Por que Python?
18/02/14 Programação de Computadores – Renato Dourado Maia 26/37
Aspectos Importantes
• A disciplina não tem como objetivo principal o estudo da linguagem Python, mas sim o estudo de programação.
• Portanto, apesar da linguagem Python ser muito podero-sa, em muitos casos, para que seja privilegiado o exercício da lógica de programação, os recursos, apesar de dispo-níveis, não serão utilizados.
• Muitos cursos introdutórios de algoritmos e programação são centrados em listar as funcionalidades de uma lingua-gem de programação (mesmo que seja o Portugol).
18/02/14 Programação de Computadores – Renato Dourado Maia 27/37
Aspectos Importantes
• Entretanto, aprender a programar consiste em aprender a pensar como um programador.
• Assim, nesta disciplina o esforço será concentrado no pro-cesso do pensamento:– Estudaremos programação como uma técnica de resolução de
problemas.
• Programar não é fácil, mas pode ser divertido!– São requisitos básicos o esforço individual de cada um e a atitu-
de correta (isso vale para a vida em geral).– Só se aprende a programar programando!
18/02/14 Programação de Computadores – Renato Dourado Maia 28/37
Do que Precisaremos?
• Uma implementação da linguagem:– http://www.python.org
✔ Há um instalador para o Windows.✔ O Linux normalmente já vem com o interpretador.✔ Versões mais novas em 06/02/2014: 2.7.6 e 3.3.3.
– http://code.google.com/p/pythonxy/✔ Essa é a distribuição que eu utilizo, baseada atualmente na versão 2.7.5.
• Um editor (de texto “puro”):– O ambiente IDLE, que faz parte da distribuição para Windows, in-
clui um editor.
Que versão utilizaremos?
18/02/14 Programação de Computadores – Renato Dourado Maia 29/37
Do que Precisaremos?
18/02/14 Programação de Computadores – Renato Dourado Maia 30/37
Do que Precisaremos?
18/02/14 Programação de Computadores – Renato Dourado Maia 31/37
Do que Precisaremos?
• Aprender a programar é como aprender a jogar xadrez:– Entender as regras básicas é simples, mas conseguir dominá-las
e fazê-las funcionar em conjunto é mais difícil!– Por isso, precisaremos de:
✔ Curiosidade e vontade de aprender.✔ Humildade.✔ Paciência.✔ Perseverança.
18/02/14 Programação de Computadores – Renato Dourado Maia 32/37
Visão Comum do Mundo
18/02/14 Programação de Computadores – Renato Dourado Maia 33/37
Visão Científica (Curiosa) de Mundo
18/02/14 Programação de Computadores – Renato Dourado Maia 34/37
Perseverança! Sempre!
18/02/14 Programação de Computadores – Renato Dourado Maia 35/37
Uma Pergunta Pertinente
Renato, por que você não utiliza a versão mais nova
da linguagem?
18/02/14 Programação de Computadores – Renato Dourado Maia 36/37
Primeiros Passos
• Python interativo:– Rode o interpretador.– Digite comandos Python.– Cada comando é executado imediatamente.
• Executando um programa Python:– Escreva um programa Python.– Invoque o interpretador para executá-lo.
Vamos brincar um pouco...
18/02/14 Programação de Computadores – Renato Dourado Maia 37/37
That's All Folks!