Introdução à programação e aos algoritmos
Prefácio
“Vivemos em uma sociedade intensamente dependente da ciência e da tecnologia, em que quase ninguém sabe algo sobre ciência e tecnologia.” Carl Sagan, astrônomo
A frase acima foi dita pelo famoso astrônomo Carl Sagan (1934-
1996) em uma de suas últimas entrevistas. Podemos perceber que essa afirmação se torna cada vez mais verdadeira nos tempos atuais, quando sentimos a tecnologia nos engolir desde o momento em que acordamos. Você pode ignorar todos os detalhes tecnológicos que permeiam sua vida e viver feliz na sua ignorância, mas esta atitude tem riscos. Outros vão saber como controlar essa tecnologia, e se você não tiver um conhecimento mínimo sobre ela, ficará alijado de decisões que afetarão o seu dia a dia. Será um usuário, simplesmente, e o mundo funcionará sem que você compreenda como nem por quê. Este livro procura preencher a lacuna de conhecimento sobre uma tecnologia que nos absorve cada vez mais: os computadores.
Diversos aparelhos do seu dia a dia usam computadores. Alguns
vão usar versões simplificadas dessas máquinas, mas mesmo assim serão computadores. Seu despertador, por exemplo, se não for mecânico, possui um nível básico de computação que permite que seja programado para despertá-lo na hora certa. Se você usa um smartphone, este possui mais poder computacional que os computadores que levaram o homem à Lua em 1969. Hoje em dia, qualquer aparelho doméstico, por mais simples que seja, pode possuir um minúsculo exemplo de computador. Carro, torradeira, geladeira, fogão, televisão e o que você possa imaginar são exemplos de tecnologia computacional.
Mas como tudo isso funciona? Qual a mágica, se é que existe mágica, que permite que esses aparelhos executem suas tarefas de maneira aparentemente inteligente? Como são programados para atender às nossas necessidades? Neste livro tento responder essas e muitas outras perguntas, além de mostrar a evolução dos sistemas computacionais e como chegamos aqui.
Pensei o livro como uma introdução à programação, voltado para qualquer um que tenha curiosidade sobre essa matéria, mas com especial atenção ao currículo do primeiro ano dos cursos universitários da área tecnológica. O objetivo é que, ao final, o leitor seja capaz de criar programas adequados à sua área de atuação, seja Engenharia, Informática, Matemática etc. Mas se você for de Biologia, Medicina, Letras; tiver um conhecimento básico de Matemática e for capaz de pensar logicamente, este livro também poderá ensinar muita coisa a você.
O livro inicia com uma rápida introdução aos conceitos básicos sobre computadores, e apresenta ao leitor um conhecimento mínimo indispensável para que ele compreenda como essas máquinas funcionam internamente. Você pode pular este capítulo, mas não aconselho. Uma base sólida permite aprender mais rapidamente, e este capítulo é exatamente isso: uma base, um alicerce para construir algo mais robusto e estável.
Depois passo para os conceitos de algoritmos e programação. Neste ponto muitos autores optam por criar uma linguagem algorítmica, próxima ao português, para poder desenvolver esses conceitos. Nunca gostei deste enfoque. Prefiro usar uma linguagem de programação real, que possa ser usada em computadores reais. Os algoritmos não serão abandonados. São muito úteis e é mesmo essencial pensar antes um algoritmo para depois passar para a linguagem de programação, porém, sempre que possível apresentarei o algoritmo e sua versão em uma linguagem de programação efetiva, para que o leitor possa escrever o programa em um computador real e ver o resultado.
Programar se aprende com a prática. Uma interessante analogia
que podemos fazer é entre a programação de computadores e a culinária.
Imagine que você queira se tornar um cozinheiro. Você ainda
não sabe nada sobre cozinha, mas tem esse forte desejo. Quais são seus objetivos? Se quer apenas preparar um almoço de fim de semana para sua família, você pode pegar uma receita de um prato que todos gostem e tentar replicar os passos. Por mais detalhadas que sejam as instruções da receita, alguns detalhes podem depender de sua experiência na cozinha, e você, por enquanto, não tem nenhuma. Para se tornar um bom cozinheiro você deve entender as bases da cozinha, sua teoria, como os alimentos podem ser combinados etc.
Aprender a cozinhar exige uma mistura de prática com teoria.
Não adianta estudar centenas de livros de culinária se você não vai para a cozinha testar esses conhecimentos. Não se pode ser um cozinheiro teórico. Cozinhar exige prática. Também não adianta ir para a cozinha sem nenhum conhecimento prévio. Você pode até se tornar um grande cozinheiro, mas vai levar muito tempo para descobrir por tentativa e erro algumas coisas que outros já sabem há séculos. Isaac Newton dizia que pôde ver mais longe porque estava montado em ombros de gigantes. Devemos, portanto, aproveitar o conhecimento prévio para podermos avançar mais longe e mais rápido.
Programar funciona da mesma maneira. Não adianta ler livros de
teoria, estudar programas escritos por outros, se você não põe a mão na massa, ou seja, se você não programa.
A vantagem de programar para aprender é ter um feedback
instantâneo. Você pode ver o erro e aprender com o erro, assim que acabar de escrever o seu programa.
Para programar um computador você precisa aprender uma linguagem de programação. Sim, o computador tem sua própria linguagem. Você não pode programar em português. Mas, para nossa felicidade, as linguagens de programação são bem simples, com poucas palavras e uma sintaxe restrita. Diversas linguagens se prestam ao primeiro contato com a programação. Uma característica desejável é que seja de simples aprendizado, com uma sintaxe simples, porém eficiente.
Assim, considero que a linguagem mais adequada para um primeiro contato com os algoritmos e a programação seja a linguagem Python.
Python é uma linguagem simples e de fácil aprendizado, mesmo para iniciantes na programação de computadores. Portanto, usarei o básico de Python, sem entrar em detalhes de sintaxe, que poderiam desviar o foco do aprendizado de conceitos de programação. Assim, os programas serão de simples entendimento, mesmo para aqueles que nunca viram um programa antes, bastando um conhecimento básico do inglês, pois Python, como quase todas as linguagens de programação, é baseado na língua inglesa.
O conhecimento não surge da noite para o dia. Ninguém acorda um dia e inventa o computador. Somos resultado de milhares de anos de evolução do conhecimento, da criação do gênio de milhares de homens e mulheres, cada um contribuindo para nosso avanço. No decorrer do livro, apresentarei alguns personagens importantes desta grande aventura humana da criação e da programação dos computadores. Essas pessoas merecem nosso respeito, nossa admiração e nossa memória.
OceanofPDF.com