Introdução à Programação e aos Algoritmos

Visualizações: 55
Classificação: (0)

Muitas vezes considerada responsável por dificultar os primeiros semestres de Ciência da Computação, Sistemas de Informação, Engenharias e Matemática, a disciplina de Programação ganha agora um importante conteúdo para desmistificar esse conceito.

Introdução à Programação e aos Algoritmos faz uso da linguagem Python para iniciação do leitor na área. Partindo da definição de conteúdos básicos – como bit, byte, códigos binários, octais e hexadecimais – para, então, chegar aos algoritmos e à programação propriamente dita, o livro suaviza a abordagem do assunto nos primeiros períodos universitários. Por meio de exercícios complementares, responsáveis por aprimorar o raciocínio lógico e o pensamento abstrato necessários ao entendimento da Computação, o conteúdo é também composto por numerosas ilustrações que auxiliam o aprendizado. Ao longo dos capítulos, dicas e orientações ao programador em formação enriquecem a experiência com o assunto.

Introdução à Programação e aos Algoritmos pode ser considerada, portanto, bibliografia de referência para o tema, ao mesmo tempo tão complexo e tão necessário aos futuros engenheiros, matemáticos e cientistas da computação.

FORMATOS DISPONíVEIS

Impresso
eBook

10 capítulos

Formato Comprar item avulso Adicionar à Pasta

1 Introdução aos Computadores

ePub Criptografado

Não há nenhuma razão para qualquer indivíduo ter um computador em casa.” Ken Olsen, fundador da Digital Equipment Corporation, em 1977.

O mundo da Computação evoluiu muito rapidamente. Até mesmo pessoas experientes como Ken Olsen puderam se enganar sobre o que o futuro reservava para a tecnologia que na época ainda era reservada às empresas e ao governo. Hoje em dia, praticamente todos têm um computador em casa. Difícil imaginar a vida sem ele. É bom começarmos a entender como um computador funciona.

Neste capítulo apresento as bases do funcionamento de um computador e de sua programação. Não que seja absolutamente necessário entender todos os detalhes técnicos dos computadores para poder programá-los, mas é bom conhecê-los nem que seja minimamente. Saber certos detalhes irá ajudar você a entender os limites da máquina, o que ela pode e não pode fazer e o que você pode obter da programação.

Uma das coisas que um computador sabe fazer bem é contar números inteiros; que conta rapidamente e de maneira precisa. Mas como o computador faz essa contagem? Como representa quantidades? Precisamos antes pensar em como nós mesmos contamos, em como representamos as quantidades. Isso é valioso para entender como criar uma máquina que conta. Vou mostrar-lhe aqui alguns detalhes óbvios para depois chegar ao mundo dos computadores.

 

2 Bases da Programação

ePub Criptografado

Todo mundo neste país deveria aprender a programar um computador, porque esse aprendizado ensina você a pensar.” Steve Jobs, em entrevista em 1996.

Você quer aprender uma linguagem de programação ou quer aprender a programar? Você deve estar se perguntando: mas tem diferença? Sim, tem. O computador não tem nenhuma inteligência; apenas faz as coisas de maneira muito rápida. Cabe a nós darmos esse sopro de inteligência aos computadores. A única forma que temos para fazer isso é desenvolvendo programas que guiem nosso computador na busca de soluções de problemas. Como o computador não é muito inteligente, as linguagens que entende têm uma sintaxe muito simples. Aprender uma linguagem de programação é fácil, e você rapidamente vai conseguir escrever programas bem úteis. Mas você conseguirá programar de verdade? Se surgir um problema mais complicado, você saberá resolvê-lo? Se seu programa não funcionar, você vai saber corrigi-lo? Ou vai ficar sempre na superfície, contente em resolver problemas simples?

 

3 Programação Estruturada

ePub Criptografado

A função do bom software é fazer a complexidade parecer simples”. Grady Booch

Mesmo que alguns programas com poucas linhas de código possam ser úteis, problemas reais geralmente vão exigir centenas ou milhares de linhas de código. Conforme o número de linhas aumenta, a complexidade dos programas também aumenta. Por mais inteligente que você seja, a complexidade dos programas vai ultrapassar a sua capacidade de memorizar todos os seus detalhes. É preciso ter uma estratégia para domar essa complexidade e assegurar a correção de seu programa. Desse modo, como uma obra de construção civil, o programa precisa ter uma estrutura na qual possa se apoiar.

Um programa que possua uma boa estrutura não vai tornar seu problema mais simples, porém irá permitir que você se concentre em módulos menores, de maneira que a complexidade desses módulos se adeque à capacidade humana de entendimento.

Buscamos soluções facilmente compreensíveis para problemas complexos. George Boole, em seu livro Uma Investigação das Leis do Pensamento, escreveu:

 

4 Subalgoritmos

ePub Criptografado

Existem duas maneiras de construir um projeto de software. Uma é fazê-lo tão simples que obviamente não existam deficiências, e a outra é fazê-lo tão complicado que não existam deficiências óbvias.” C. A. R. Hoare

O que você acha mais fácil: resolver dez problemas simples ou um único problema complexo? A maioria das pessoas responde que é melhor resolver dez problemas simples e essa é a base da programação estruturada. Dividimos sucessivamente um problema até chegarmos em algo muito simples que possamos resolver. Então, após resolver todos os pequenos problemas, juntamos todas as soluções de maneira coerente e resolvemos o problema original.

Algumas dessas soluções podem ser reutilizadas no futuro; caso você encontre subproblemas semelhantes, bastaria recuperar a solução que você já encontrou e adicioná-la ao seu programa principal. Durante anos e anos os programadores têm resolvido problemas e guardado soluções. Problemas que aparecem com frequência têm soluções guardadas em bibliotecas de soluções.

 

5 Organizando a Informação

ePub Criptografado

Maus programadores preocupam-se com o código. Bons programadores preocupam-se com estruturas de dados e suas relações.” Linus Torvalds, criador do Linux.

Para programar não basta usar um algoritmo eficiente, você precisa também de dados eficientes. Ao fazer programas simples, como temos feito até aqui, bastam os tipos de dados fornecidos diretamente pelo computador: inteiros, números em ponto flutuante e caracteres. Como vimos, um computador é uma máquina muito boa para processar números, mas quando os problemas começam a ficar mais complexos, é necessário fazer uso de tipos de dados mais eficientes, que espelhem a complexidade do mundo real.

Programar é gerenciar entidades abstratas. Vimos que, a partir de algum valor físico, uma tensão em volts, por exemplo, foi criada a abstração do bit, a unidade mínima de informação do computador. Dissemos que esse bit representa zero ou um. Em seguida, agrupamos bits para criar uma nova abstração: os bytes. Continuamos criando novas abstrações e usamos os bytes para representar números e caracteres no computador. Demos nomes a essas abstrações criando variáveis que identificam os dados que vamos manipular. Algoritmos são ações combinadas para manipular esses dados.

 

6 Cadeias de Caracteres e Arquivos

ePub Criptografado

CENTURIÃO: “Domus”? Nominativo? “Vão embora”, é movimento, não é rapaz?

BRIAN: Dativo?

[O Centurião tira sua espada e a segura contra a garganta de Brian]

BRIAN: Ahh! Não, não é dativo, não é dativo, senhor. É acusativo, acusativo, ‘ad domum’, senhor!

CENTURIÃO: Exceto que ‘domus’ leva o ...?

BRIAN: O locativo, senhor!

CENTURION: Que é ...?!

BRIAN: ‘Domum’.

CENTURION: Entendeu?

BRIAN: Sim, senhor.

CENTURION: Agora escreva cem vezes.

BRIAN: Sim, senhor. Ave, César.

Monty Python, “A Vida de Brian”

Qual foi a uma das primeiras utilidades do seu computador? Cálculos, jogos, edição de texto? Independentemente de sua resposta, você deve ter passado informação para o seu computador por meio de um texto. Principalmente se o seu primeiro uso foi para a edição de texto. Escrevendo um e-mail ou editando um trabalho para a escola, você usou caracteres em sequência como entrada de dados.

O tempo todo interagimos com o computador por meio de textos. Podemos contar palavras, fazer estatísticas de seu uso e descobrir estilos ou até plágio. Quando você digita seu nome na tela de boas-vindas do computador e depois sua senha, algum programa está capturando o que você digita e depois conferindo o texto digitado com um arquivo no qual estão armazenadas as informações que confirmam se você tem ou não acesso àquela máquina.

 

7 Recursão

ePub Criptografado

Para entender recursão, você deve primeiro entender recursão.” Piada anônima sobre recursão

A recursão é uma técnica elegante de resolver determinada classe de problemas. Exige apenas certa ginástica mental para se entender o conceito. Não é difícil, uma vez que você tenha entendido o mecanismo.

Diversos problemas têm uma solução bem simples se usarmos esta técnica que é baseada no fato de que uma função pode chamar a si mesma. Nem todos os problemas podem ser resolvidos recursivamente e mesmo entre os que podem, alguns não ganham em velocidade ou clareza no uso desta técnica. Portanto, quero que você aprenda não apenas a usar a técnica recursiva, mas também a reconhecer quando é útil na solução de um problema.

Lembro-me de quando aprendi a técnica em curso de programação na universidade e passei a usá-la para todo problema, mesmo os que não lhe fossem pertinentes. Não foi perda de tempo. Aplicar a técnica em diversos problemas leva a um aprendizado mais sedimentado e com o tempo você começa a entender quando deve ou não usar a técnica.

 

8 Ordenando Coisas

ePub Criptografado

Sem critérios e projeto, a programação é a arte de adicionar erros a um arquivo de texto vazio.” Louis Srygley

A ordenação de elementos é uma das tarefas mais úteis realizadas por computadores. De nada adianta ter um dicionário se as palavras estão desordenadas. A busca seria muito extensa. Comumente queremos ter os elementos ordenados em ordem crescente, mas a ordenação em ordem decrescente segue a mesma lógica, basta inverter o resultado da comparação entre elementos.

Python possui um mecanismo para ordenar listas já embutido na própria linguagem, o comando sort() (Seção 5.7). Mas quero mostrar como isso pode ser feito sem usar esse recurso de Python. Mas, por que ensinar algo que Python já faz com um só comando? O estudo de ordenação permite o aprendizado de técnicas de programação, saindo do estudo puro e simples de sintaxe. Além do mais, questões sobre desempenho de algoritmos podem ser facilmente levantadas diante do código de ordenação.

Também é útil que você entenda como ordenar seus dados sem depender da linguagem, pois nem todas as linguagens de programação vão fornecer um mecanismo tão direto quanto Python. Apesar de Python ter esse mecanismo, você terá a vantagem de entender como isso pode ser feito internamente e quando se deparar com uma linguagem sem esse mecanismo embutido, poderá programar seu próprio método de ordenação.

 

9 Um Pouco de Estilo

ePub Criptografado

Chegamos ao final do livro. Apresentei diversos mecanismos de programação e dei algumas dicas, quando era cabível. Todos esses mecanismos não servem de nada se você não pensar.

Imagine que você contrate um marceneiro que sabe usar muito bem a serra, o martelo, o esquadro, mas que não tem nenhuma ideia sobre a utilidade de móveis. O mesmo acontece se você sabe todos os detalhes de uma linguagem de programação mas não é capaz de desenvolver um raciocínio lógico para resolver problemas. Você tem as ferramentas, mas não o projeto.

Neste último capítulo reúno alguns pensamentos sobre programação e o que aprendi ao longo dos anos. Estamos sempre nos aperfeiçoando e todo dia é dia de aprender algo.

Primeiro resolva o problema, então escreva o código.” John Johnson

Fonte: hazimsn | iStockphoto.com.

Pode parecer um conselho óbvio, mas programar é uma atividade intelectual. Portanto, pense antes de programar.

Quando for apresentado a um problema, não se sente em frente ao computador e saia escrevendo um programa. Não é assim que funciona o mundo real. Problemas simples podem ser resolvidos desta forma, mas na vida profissional estes problemas não aparecem sempre, pelo contrário, são raros.

 

Apêndice – Instalação de Python

ePub Criptografado

Este apêndice ensina como instalar Python no seu computador de modo que você possa usufruir de todos os seus recursos. Os detalhes da instalação podem variar dependendo do seu sistema operacional, Windows ou Linux, e também da versão do sistema utilizada.

Este livro usa a versão 3 de Python. A versão 2 continua disponível, mas deve ser descontinuada em 2020.

As instruções de instalação deste capítulo foram extraídas do site https://python.org.br/. Este site é uma boa referência em português para a linguagem Python.

Antes de tudo é necessário estar conectado à internet.

A primeira coisa a fazer é baixar a versão de Python de https://www.python.org/downloads/. Este é o site oficial da linguagem, e você deve baixar a versão de acordo com o seu sistema. Prefira a versão mais atual, ou seja, da 3a para cima.

Figura A.1 Passo 1: Download da versão mais recente de Python 3.

Normalmente, o próprio site detecta seu sistema operacional e também a versão. Depois de alguns minutos o arquivo deve ter sido baixado em sua pasta de downloads. Clique duas vezes no nome do arquivo para começar a instalar. Em geral, o Windows dá um aviso de segurança sobre instalação de software. Basta clicar em “Executar”.

 

Detalhes do Produto

Livro Impresso
Book
Capítulos

Formato
ePub
Criptografado
Sim
SKU
BPE0000270745
ISBN
9788521636403
Tamanho do arquivo
4,6 MB
Impressão
Desabilitada
Cópia
Desabilitada
Vocalização de texto
Não
Formato
ePub
Criptografado
Sim
Impressão
Desabilitada
Cópia
Desabilitada
Vocalização de texto
Não
SKU
Em metadados
ISBN
Em metadados
Tamanho do arquivo
Em metadados