Programação de Computadores CONSIDERAÇÕES INICIAIS Renato Dourado Maia Instituto de Ciências Agrárias Universidade Federal de Minas Gerais
Página da Disciplina O material será disponibilizado por meio da página da disciplina: http://www.renatomaia.net. Os contatos deverão ser feitos por meio dos seguintes emails: apm@renatomaia.net para questões relacionadas à disciplina. rdmaia@ufmg.br para questões gerais. 2/37
Informações Gerais As informações gerais (objetivo, motivação, ementa, bibliografia 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! 3/37
Vamos aprender a fazer programas! 4/37
Questão Fundamental Por que programar? 5/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... 6/37
Por Que Programar? Os computadores são incrivelmente rápidos, precisos e burros. Os homens são incrivelmente lentos, imprecisos e brilhantes. Juntos, seu poder ultrapassa os limites da imaginação. Albert Einstein 7/37
Muitos Pensam que Programar é... Bruxaria Coisa de Louco Coisa de Outro Mundo Apenas para Ninjas Veremos que isso não é verdade! 8/37
Vocês Devem Estar se Perguntando... Mas programar não é apenas para quem estuda computação? 9/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 10/37
Vocês Devem Estar se Perguntando... Ah, Renato, você está exagerando... 11/37
Vocês Devem Estar se Perguntando... http://www.manning.com/sande/ http://helloworldbookblog.com/ Computer programming is a powerful tool for children to learn learning, that is, to learn the skills of thinking and problem-solving Children who engage in programming transfer that kind of learning to other things. Nicholas Negroponte, the man behind the One Laptop Per Child project. 12/37
Vocês Devem Estar se Perguntando... http://code.google.com/p/rur-ple/ http://code.google.com/p/play-to-program/ 13/37
Vocês Devem Estar se Perguntando... 14/37
Vocês Devem Estar se Perguntando... 15/37
Vocês Devem Estar se Perguntando... 16/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? 17/37
Por que Mudar? Há duas alternativas para iniciar o aprendizado sobre programação: Começar com uma linguagem de programação real, mas sofrer com os empecilhos que elas impõem para o aprendizado de iniciantes. Utilizar uma linguagem de programação para iniciantes, usufruindo da simplicidade oferecida para o aprendizado, mas sabendo que ela não é poderá ser utilizada para a implementação de aplicações reais. Python, como veremos nos próximos dois slides, combina os melhores aspectos dessas duas abordagens! 18/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 poderosos e, ainda assim, simples de entender. A linguagem possui um interpretador de comandos interativo que permite aprender e testar rapidamente trechos de código. É possível escrever extensões em outras linguagens, como C e C++. 19/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! 20/37
Por que Python? 21/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á ideia Se a implementação é fácil de explicar, pode ser uma boa ideia Namespaces são uma grande ideia vamos ter mais dessas! 22/37
Por que Python? http://www.python.org/about/success/ 23/37
Por que Python? http://www.python.org.br/wiki/empresaspython 24/37
Por que Python? 25/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 poderosa, em muitos casos, para que seja privilegiado o exercício da lógica de programação, os recursos, apesar de disponíveis, não serão utilizados. Muitos cursos introdutórios de algoritmos e programação são centrados em listar as funcionalidades de uma linguagem de programação (mesmo que seja o Portugol). 26/37
Aspectos Importantes Entretanto, aprender a programar consiste em aprender a pensar como um programador. Assim, nesta disciplina o esforço será concentrado no processo 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 atitude correta (isso vale para a vida em geral). Só se aprende a programar programando! 27/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, inclui um editor. Que versão utilizaremos? 28/37
Do que Precisaremos? 29/37
Do que Precisaremos? 30/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. 31/37
Visão Comum do Mundo 32/37
Visão Científica (Curiosa) de Mundo 33/37
Perseverança! Sempre! 34/37
Uma Pergunta Pertinente Renato, por que você não utiliza a versão mais nova da linguagem? 35/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... 36/37
That's All Folks! 37/37