Introdução à Computação INTRODUÇÃO AOS ALGORITMOS E À PROGRAMAÇÃO DE COMPUTADORES PARTE 3 Renato Dourado Maia Universidade Estadual de Montes Claros Engenharia Civil
Linguagens de Programação Uma linguagem de programação é uma linguagem artificial com sintaxe e semântica bem definidas que é utilizada para escrever programas. É mais técnica do que as linguagens naturais e menos técnica do que a linguagem nativa dos computadores (linguagem de máquina). 2/34
Linguagens de Programação 3/34
Lembrando Compiladores Compiladores são programas que traduzem programas escritos em linguagem de programação para programas equivalentes escritos em linguagem de máquina. ProgramaFonte Compilador Programa-Objeto 4/34
Link-Editores O programa-objeto nem sempre está pronto para ser executado. Pode ser necessário incluir outros trechos de código: Bibliotecas. Subprogramas. O programa executável é montado por um programa chamado link-editor ou linking-loader. O compilador normalmente chama o link-editor automaticamente. 5/34
Link-Editores ProgramaObjeto 1... Programa Executável Link-Editor ProgramaObjeto N Biblioteca Biblioteca 6/34
Lembrando Interpretadores Os interpretadores simulam uma máquina virtual. O programa-fonte é lido, entendido e as instruções são executadas imediatamente. Entrada Interpretador Saída ProgramaFonte 7/34
Esquemas Híbridos O compilador gera código para uma máquina virtual (pseudo-código). A máquina virtual é executada separadamente, lendo o pseudo-código e interpretando-o. ProgramaFonte Entrada Interpretador Compilador Saída ProgramaObjeto 8/34
Experiência Introdução à Computação: Abordagem Clássica : Algoritmo + Portugol + Pascal/C. Neste semestre: Algoritmo + Python. Por que mudar? Por que Python? 9/34
Por que Mudar? Há duas alternativas para iniciar o aprendizado sobre programação: Começar com uma linguagem real, mas sofrer com os empecilhos que elas impõem para o aprendizado de iniciantes. Utilizar uma linguagem 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! 10/34
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++. 11/34
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! 12/34
Por que Python? 13/34
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! 14/34
Por que Python? http://www.python.org/about/success/ 15/34
Por que Python? http://www.python.org.br/wiki/empresaspython 16/34
Por que Python? 17/34
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). 18/34
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! 19/34
Aspectos Importantes 20/34
Aspectos Importantes Os livros básicos que pretendem ensinar a jogar xadrez são normalmente escritos na seguinte ordem. Inicialmente, expõem-se o objetivo do jogo, os movimentos das peças e os xeque-mates elementares. Assim, aprende-se logo a dar xeque-mate com dama e rei contra rei ou torre e rei contra rei. Em seguida, apresentam-se finais um pouco mais complexos, em que cada jogador possui algumas peças; por exemplo, torre, peão e rei contra torre e rei. Agora, o jogador deve aprender a, partindo dessa situação, cair num daqueles finais simples que já aprendeu a ganhar. 21/34
Aspectos Importantes No exemplo dado, o jogador com peão a mais pode vencer se ele conseguir promover o tal peão, transformando-o numa dama. Posteriormente, discutem-se posições mais complicadas, com mais peças. A ideia é sempre a mesma: mostrar ao jogador como simplificar a posição, de modo a cair num daqueles finais com poucas peças que ele já aprendeu a vencer. Somente nas últimas páginas de um livro didático sobre xadrez é que se apresentam as aberturas, ou seja, sugestões para os primeiros lances do jogo. 22/34
Aspectos Importantes A abertura é mais difícil de se entender. Seus conceitos são estratégicos; seus frutos só aparecem depois de várias jogadas. Assim, aprende-se a jogar xadrez pelo final, numa ordem contrária àquela na qual o jogo se desenvolve. Entretanto, DIDATICAMENTE, essa é a ordem mais lógica para se ensinar o jogo. Trecho do prefácio da primeira edição do livro Sistemas Dinâmicos, de Luiz Henrique Alves Monteiro. 23/34
Aspectos Importantes 24/34
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 12/01/2012: 2.7.2 e 3.2.2. http://code.google.com/p/pythonxy/ Essa é a distribuição que eu utilizo! Um editor (de texto puro ): O ambiente IDLE, que faz parte da distribuição para Windows, inclui um editor. Que versão utilizaremos? 25/34
Do que Precisaremos? 26/34
Do que Precisaremos? 27/34
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. 28/34
Visão Comum do Mundo 29/34
Visão Científica (Curiosa) de Mundo 30/34
Perseverança! Sempre! 31/34
Uma Pergunta Pertinente Renato, por que você não utiliza a versão mais nova da linguagem? 32/34
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... 33/34
That's All Folks! 34/34