• Nenhum resultado encontrado

1Introdução a Linguagem de Programação Com Python

N/A
N/A
Protected

Academic year: 2021

Share "1Introdução a Linguagem de Programação Com Python"

Copied!
224
0
0

Texto

(1)

IN T R O D U Q Á O Á P R O G R A M A Q Á O COM

PYTHON

Algoritmos

e lógica de programado

para iniciantes

(2)

introdujo á Programado

com Python

(3)

Introdujo á Programado

com Python

Algoritmos e lógica de programado para iniciantes

Nilo Ney Coutinho Menezes

(4)

Copyright © 2010 da Novatec Editora Ltda.

Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998.

É proibida a reprodujo desta obra, mesmo parcial, por qualquer processo, sem prévia autorizado, por escrito, do autor e da Editora.

Editor: Rubens Prates Revisao gramatical: Patrizia Zagni Editoragáo eletrónica: Camila Kuwabata Capa: Víctor Bittow

ISBN: 978-85-7522-250-8 Histórico de impressoes: Novembro/2010 Primeira edi^ao

Novatec Editora Ltda. Rúa Luís António dos Santos 110 02460-000 - Sao Paulo, SP - Brasil Tel.:+55 112959-6529 Fax: +55112950-8869 E-mail: novatec@novatec.com.br Site: novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec Linkedln: linkedin.com/in/novatec

(5)

A minha esposa, Chris, e meusfilhos, Igor, Hanna e Iris.

(6)

Sumário

Agradecimentos... ...11

Prefácio...12

Introdujo...13

Capítulo 1* M otivado... 16

1.1 Vocé quer aprender a programar?... 16

1.2 Como está seu nivel de paciencia?... 17

13 Quanto tempo vocé pretende estudar?... 18

1.4 Qual o objetivo de programar?... 18

1.4.1 Escrever páginas web... 18

14.2 Acertar seu relógio... ... ... 19

1.43 Aprender a usar mapas... ... 1.4.4 Mostrar para seus amigos que vocé sabe programar. 1.4.5 Parecer éstranho... 1.4.6 Entender melhor como seu computador funciona... 20

1.4.7 Cozinhar... 20

1.4.8 Salvar o m undo... 21

1.4.9 Software livre... 21

1.5 Por que Python?... 21

Capitulo 2 Preparando o ambiente... 24

2.1 Instalado de P uhor ...24 1) i Windows... 24 2.1.2 l.in..x... 30 2.13 Mac OS X... 30 2.2 Usando o interpretador ... >0 23 Editando arquivos...-2

2.-* Cuidados ao dig.tar seos programas... 36

25 Os primeros programas...36

2.6 Cenceños de vaiáveis e atribuido...39

a

a

(7)

Introdujo á Programado com Python

Capítulo 3»Variáveis e entrada de dados... 44

3.1 Nomes de variáveis... 44

3.2 Variáveis numéricas...45

3.2.1 Representadlo de valores numéricos... 46

33 Variáveis do tipo Lógico... 48

331 Operadores relacionáis...48

33.2 Operadores lógicos... 50

333 Expressóes lógicas... 53

3.4 Variáveis siring...54

3.4.1 Operases co::: strings...56

33 Sequéncias e tempo... 61

3.6 Rastreamento...62

3.7 Kntrada de dados...63

3.71 Conversao da entrada de dados... 64

3.72 Errus comuns... 66 Capítulo 4 “Condi^oes... 69 4.1 if...69 4.2 else...73 43 Escrutaras anmhadas...74 4.4 el i f...76 Capítulo 5«Repeti^óes...78 5.1 Contadores... 80 5.2 Acumuladores...83 5.3 Interrompendo a repetido... 85 5.4 RepetiQoes aninhadas... 87 Capitulo 6 Listas...90

6.1 Trabalhando com índices... 92

6.2 Cópia e íanamento de listas... 93

63 Tamanho de listas... 95

6.4 Adi^üo de elementos... 96

63 Remojo de elementos da lista...99

6.6 Usando listas como filas...100

6.7 Uso de listas como pilhas...101

6.8 Pesquisa...103

6.9 Usando for...-04

6.10 Range...106

6.1J Enumérate...107

6.12 Operantes com lisias... 1C8 613 Aplicables... 108

(8)

Sumário

6.15 Listas dentro de listas... 110

6.16 O rdenado... 112

6.17 Dicionários...U7 6.18 Dicionários com listas... 120

Capítulo 7 » Trabalhando com strin g s... 123

7.1 Verificagao parcial de strings:... 124

7.2 Contagem... 126

73 Pesquisa de strings... 126

7.4 Posicionamento de strings... 129

75 Quebra ou separadlo de strings... 130

7.6 Substituidlo de strings... 131

7.7 Remogáo de espagos em branco... 131

7.8 Validagao por tipo de conteúdo...132

7.9 Formatagáo de strings...134

7.9.1 Formatagao de números...137

7.10 Jogo da forca...141

Capítulo 8 ■ F u n d e s ...145

8.1 Variáveis locáis e globais... 151

8.2 Fungoes recursivas... 154

83 Validagao...7...156

8.4 Parámetros opcionais...157

8.5 Nomeando parámetros...159

8.6 FungSes como parámetro...160

8.7 Empacotamento e desempacotamento de parámetros...162

8.8 Desempacotamento de parámetros... 162 8.9 Fungoes Lambda... 163 8.10 Módulos... 164 8.11 Números aleatorios... 165 8.12 A fungao type...167 Capítulo 9 ■ Arquivos... 9.1 Parámetros da linha de comando... 9.7 Ci«-: <<viv de d iq u .v o í... ... 93 Leiiura *• escrita... 94 IVoccssair.cnto d< u rr .iri|i..vn... ... 95 íie ra g á o d e llT M l... ... 9.6 Arq.uvos c d u éleno s ... 9./ Um po'Ji e sobre o tem po ... 9.8 1 se de cam inhos... ) > V.sua a iodos os subí, i rolónos rcairstv; riirnte ..1 70 ..173 .. 3-3 .174 . 175 .. I8C .. 185 .. 190 UilSIVí r s i f l l t r .

(9)

10 In trodu jo á Programado com Python

Capítulo 1 0» Classes e objetos... 195

10.1 Objetos como representado do mundo real...195

10.2 Passagem de parámetros...198

103 O exemplo de uin banco... 200

10.4 1 leranc^a... 205

Capítulo 11 ■ Próximos passos... 1L1 Programado funcional... 1L2 Algoritmos... U3Jogos... 11.4 OrientagSo a objetos... 11.5 Banco de dados... 1L6 Sistemas w eb... 117 Outras bibliotecas Python. 11.8 Listas de discussáo... .208 .208 .209 .209 .210 .210 ..211 .211 .212 Apéndice A * Mensagens de e rro ... ... ... 213

A i SintaxError... 213 A2 IdentarionError... 214 A3 KeyKrror...215 A.4 KamcError... 215 A5 ValucError...216 A i TypeError...216 A .7 IndexError...217 Referencias... ... 218

(10)

Agradecimentos

Este livro nao seria possível sem o incentivo de minha esposa, Emilia Christiane, e a compreensáo de meus filhos, Igor, Hanna e Iris. Para quem m ora em um país frió como a Bélgica, escrever no verao nem sempre é fácil.

Também agradego ao suporte oferecido por meus pais e avós durante meu estudo e pelos conselhos, compreensáo e orientagáo que sempre recebi. Nao poderia me esquecer de meu irmáo, Luís Victor, pela ajuda com as imagens em portugués.

A Luciano Ramalho e aos colegas da lista python-brasil. Luciano, obrigado pelo incentivo a publicar este livro e pelos comentários mais que pertinentes. Á comunidade python-brasil pelo esforzó e prova de civilidade em manter as discussoes em altíssimo nivel, agradando iniciantes, curiosos e profissionais de com putado.

Agradecimentos também aos colegas, amigos e alunos da Fundagáo Matías Machline, hoje Fundagáo Nokia de Ensino, onde tive oportunidade de estudar e trabalhar como professor de lógica de programagáo. Aos amigos e colegas do Centro Educacional La Salle e da Fundagáo Paulo Feitoza, onde ministrei cursos de lógica de programagáo e de Python.

(11)

Prefácio

Aprendí a program ar usando a linguagem BASIC, aínda em meados dos anos 80. Lembro de construir pequeños programas de desenho, agendas telefónicas e jogos. Armazenamento só em fitas K-7. Antes da Internet e morando no norte do Brasil, a forma de aprender a programar era lendo livros e, claro, programando. A forma mais comum de obter novos programas era por meio de revistas de program ado. Essas revistas eram verdadeiramente dedicadas á nova comunida- de de usuários de microcomputadores, termo usado na época para diferenciar os computadores domésticos. Elas traziam listagens completas de programas, escritos em BASIC o u Assembly. Em urna época em que o download m al era um sonho distante, digitar esses programas era a única s o lu d o para poder executá-los. A experiencia de 1er e digitar os programas foi muito importante para aprender a programar, mas infelizmente poucas revistas técnicas hoje sao acessíveis a iniciantes. A complexídade dos programas de hoje também é muito maior, exigindo mais tem po de estudo que amigamente. Em bora a Internet ajude muito, seguir urna ordem planejada de aprendizado é muito importante. Ao comeijar a ensinar program ado, o desafio sempre foi encontrar u m livro que pudesse ser lido po r alunos do ensino médio ou no inicio do ensino superior. Em bora várias obras tenham suprido essa necessidade, o uso de apostilas sempre foi necessário, pois a ordem em que os novos conceitos eram apresentados era quase sempre mais interessante para um dicionário que para o ensino de pro g ram ad o em si. Conceitos importantes para o iniciante eram completamente esquecidos, e o foco maior era dado a assuntos mais complexos. Seguindo u m conceito apresentado e utilizado por meus professores do ensillo médio, a lógica de p ro g ram ad o é m ais im portante que qualquer linguagem. Quem aprende a program ar urna vez fica mais apto a aprender outras lingua- gens de program ado. É nessa lógica de pro g ram ad o para iniciantes que este livro se concentra, apresentando recursos do Python sempre q ue possível. O intuito é de iniciar o leitor ao m undo da pro g ram ad o e prepará-lo para cursos e conceitos mais avanzados. Acredito que depois de 1er e estudar este livro, vocé estará apto a 1er outras obras de pro g ram ad o e a aprender novas linguagens por conta própria.

(12)

In tro d u jo

Este livro foi escrito com o iniciante em programagao em mente. Em bora a linguagem Python seja muito poderosa e rica em recursos modernos de progra- magao, este livro nao pretende ensinar apenas a linguagem em si, mas ensillar a program ar em qualquer linguagem. Alguns recursos da linguagem Python nao foram utilizados para privilegiar os exercícios de lógica de programagao e m elhor preparar o leitor para outras linguagens. Essa escolha nao impediu que recursos poderosos da linguagem fossem apresentados, mas este livro nao é urna referencia da linguagem Python.

Os capítulos foram organizados de forma a apresentar progressivamente os conceitos básicos de programagao. A leitura do livro perto de um computador com o interpretador Python aberto é extremamente recomendada para facilitar a experimentagáo dos exemplos no livro.

Cada capítulo traz exercícios organizados de forma a explorar o conteúdo apresentado. Alguns exercícios apenas modificam exemplos do livro, enquanto outros req ueran a aplicagáo dos conceitos apresentados na criagáo de novos programas. Tente resolver os exercícios na m edida em que sao apresentados. Embora impossível nao falar em matemática em u m livro de programagao, os exercícios foram elaborados para o nivel de conhecimento de um aluno do ensino médio e mesmo utilizando problemas comerciáis ou do dia-a-dia. Essa escolha nao foi feita para evitar o estudo de matemática, mas para nao m isturar a introdugao de conceitos de programagao com novos conceitos matemáticos. É recomendado que vocé organize os programas gerados em pastas (diretórios) por capítulo, de preferéncia adicionando o núm ero do exemplo ou exercício nos nomes dos arquivos. Alguns exercícios alteram outros exercícios, mesmo em capítulos diferentes. Urna boa organizagáo desses arquivos vai facilitar seu trabalho de estudo.

Um apéndice foi preparado para ajudar a entender as mensagens de erro que podem ser geradas pelo interpretador Python.

(13)

14 Introdujo á Programado com Python

O uso de Python também libera alunos e professores para utilizar o sistema operacional de sua escolha, seja Windows, Linux ou Mac OS X. Todos os exemplos do livro requerem apenas a distribuigáo padrao da linguagem que é disponibilizada gratuitamente.

Embora todo esforco tenha sido realizado para evitar erros e omissóes, nao há garandas de que o livro esteja isento de erros. Se vocé encontrar falhas no conteúdo, envie um e-mail para erros@nilo.pro.br. Em caso de dúvidas, em­ bora eu nao possa garantir resposta a todos os e-mails, envie sua mensagem para duvidas@nilo.pro.br. Dicas, críticas e sugestoes podem ser enviadas para

professores@nilo.pro.br. O código-fonte e eventuais corregoes deste livro podem

ser encontrados no site http://www.nilo.pro.br/iprog. Um resumo do conteúdo de cada capítulo é apresentado a seguir: Capítulo 1 - Motivagao: visa apresentar o desafio de aprender e estimular o estudo da programagao de computadores, apresentando problemas e aplica- goes do dia-a-dia.

Capítulo 2 - Preparagao do ambiente: instalagáo do interpretador Python, introdugao ao editor de textos, apresentagao do IDLE, ambiente de execugáo, como digitar programas e fazer os primeiros testes com operagoes aritméticas nó interpretador.

Capítulo — 3 Variáveis e entrada de dados: tipos de variáveis, propriedades de cada tipo, operagoes e operadores. Apresenta o conceito de programa no tempo e urna técnica simples de rastreamento. Entrada de dados pelo teclado, conversao de tipos de dados e erros comuns.

Capítulo 4 - Condigoes: estruturas condicionáis, conceitos de blocos e selegao de linhas a executar com base na avaliagao de expressoes lógicas. Capítulo 5 - Repetigoes: estrutura de repetigao while, contadores, acumulado­ res. Apresenta o conceito de repetigao da execugáo de um bloco e de repetigdes aninhadas.

Capítulo 6 - Listas: operagoes com listas, ordenagáo pelo método de bolhas, pesquisa, utilizagáo de listas como pilhas e filas.

Capítulo 7 - Trabalhando com strings: apresenta operagoes avangadas com strings. Explora a classe string do Python. O capítulo traz também um jogo simples para fixar os conceitos de manipulagao de strings.

(14)

In trodu jo 15

Capítulo 8 - Fungoes: no gao de fungáo e transferencia de fluxo, fungoes recur­ sivas, fungoes lam bda, parámetros, módulos. Apresenta números aleatorios. Capítulo 9 - Arquivos: criagáo e leitura de arquivos em disco. Geragáo de arquivos HTM L em Python, operagoes com arquivos e diretónos, parámetros pela linha de comando, caminhos.

Capítulo 10 - Classes e objetos: introdugáo á orientagáo a objetos. Explica os conceitos de classe, objetos, métodos e heranga. Prepara o aluno para continuar estudando o tópico e m elhor compreender o assunto.

Capítulo 11—Próximos passos: capítulo final, que lista os próximos passos em diversos tópicos como jogos, sistemas web, programagáo funcional, interfaces gráficas e bancos de dados. Visa apresentar livros e projetos open source pelos quais o aluno pode continuar estudando, dependendo de sua área de interesse. Apéndice A - Mensagens de erro: explica as mensagens de erro mais frequentes em Python, m ostrando suas causas e como resolvé-las.

(15)

CAPITULO

1

M otivado

Entäo, vocé quer aprender a programar?

Programar computadores é urna tarefa que exige tempo e dedicagao para ser corretamente aprendida. Muitas vezes nao basta estudar e fazer os exemplos, mas deixar a mente se acostumar com a nova forma de pensar. Para m uitas pessoas, o mais difícil é continuar gostando de programar. Muitas pessoas de- sistem ñas primeiras dificuldades e nao voltam mais a estudar. Outras sao mais pacientes e aprendem a nao se irritar com a m áquina e a assumir seus erros. Para nao sofrer dos males de quera, nao aprendeu a programar, vocé precisa responder algumas perguntas antes de comegar:

1. Vocé quer aprender a programar? 2. Como está seu nivel de paciéncia? 3. Quanto tempo vocé pretende estudar? 4. Qual o objetivo de programar?

1.1 Vocé quer aprender a programar?

Responda a essa questao, mas pense um pouco antes de chegar á resposta final. A maneira mais difícil de aprender a programar é nao querer programar. Essa vontade deve vir de vocé, e nao de um professor ou de um amigo. Programar é urna arte e precisa de dedicacao para ser dominada. Como tudo que é desco- nhecido, é muito difícil quando nao entendemos, mas se torna mais simples á medida que aprendemos.

Se vocé já decidiu aprender a programar, siga para a próxima parte. Se ainda nao se convenceu, continué léñelo. Programar pode se tornar um novo hobby e até mesmo urna profissao. Se vocé estuda computadlo, precisa saber programar.

(16)

Capítulo 1 ■ Motivado 17

Isso nao significa que vocé será um programador por toda a vida, ou que isso limitará seu crescimento dentro da área de informática. Urna desculpa que já ouvi muitas vezes é “eu sei programar, mas nao gosto’’. Vários alunos de compu­ ta d o terminam seus cursos sem saber programar. Isto é, sem realmente saber programar. Programar é como andar de bicicleta, vocé nao esquece, mas só aprende fazendo. Ao trocar de urna linguagem de p rogram ado para outra, se vocé realmente aprendeu a programar, terá pouca dificuldade para aprender a nova linguagem. Diferentemente de saber programar, a sintaxe de urna lin­ guagem de p rogram ado é esquecida m uito fácilmente. Nao pense que saber programar é decorar todos aqueles comandos, parámetros e nomes estranhos. Programar é saber utilizar urna linguagem de p ro g ram ad o p ara resolver problemas, ou seja, saber expressar urna so lu d o usando urna linguagem de program

ado-1.2 Como está seu nivel de paciencia?

Seja paciente.

Outro caso para quem estuda p rogram ado é querer fazer coisas difíceis logo de inicio.

Qual será seu primeiro programa? Um editor de textos? Urna planilha eletró- nica? Urna calculadora?

Nao! Será algo bem mais simples... Como somar dois números. É, isso mesmo: somar dois números!

Com o tempo, a complexidade e o tam anho dos programas aumentaráo. Seja paciente.

Programar exige m uita paciéncia e, principalmente, a te n d o a detalhes. Urna simples vírgula no lugar de um ponto ou aspas esquecidas podem arruinar seu programa. No inicio é comum perder a calma ou mesmo se desesperar até aprender a 1er o que realmente escrevemos em nossos programas. Nessas horas, paciéncia nunca é demais. Leia novamente a mensagem de erro ou pare para entender o que nao está funcionando corretamente. E nunca pense que o computador está contra vocé, nem culpe o dia ou o destino.

(17)

18 In trodu jo á Programado com Python

1.3 Quanto tempo vocé pretende estudar?

Pode-se aprender a programar em poucas horas. Se vocé é o sujeito que pro­ grama o micro-ondas de sua tia, abre vidros de remédio lendo as in stru y es da tampa ou que brincou de Lego, programar é seu segundo nome. Todos nós já programamos algo na vida, nem que seja ir ao cinema no sá­ bado. A questao é: quanco tempo vocé dedicará para aprender a programar computadores?

Como tudo na vida, nada de exageros. Na realidade, isso varia muito de pessoa para pessoa. Algumas rendem mais estudando em grupo. Outras gostam de ter aulas.

O importante é incluir o estudo da program ado em seu estilo preferido. Nao tente aprender tudo ou entender tudo rápidamente. Se isso ocorrer, parabéns, há muito pela frente. Caso contrário, relaxe. Se nao entender na segunda ten­ tativa, pare e volte a tentar amanha.

Quando encontrar um problema, tenha calma. Veja o que vocé escreveu. Veri­ fique se vocé entende o que está escrito. Um erro comum é querer programar .sem saber escrever as instrucoes. É como querer escrever sem saber falar.

Inicie com sessoes de urna ou no máximo duas horas por dia. Depois ajuste esse tempo a seu ritmo.

1.4 Qual o objetivo de programar?

Se vocé nao precisa programar para seu trabalho ou estudo, vejamos algumas outras r ázoes:

1 .4 .1 E sc re v e r p á g in a s w e b

Hoje, todos estao expostos á web, á Internet e a seus milhares de programas. A web só funciona porque permite a publicadlo de páginas e mais páginas de textos e imagens com apenas um editor de textos. A mais complexa página que vocé já acessou é u m conjunto de linhas de texto reunidos para instruir um programa, o navegador (bromer), sobre como apresentar seu conteúdo.

(18)

Capítulo 1 ■ Motivaçâo 19 1 .4 .2 A c e r ta r seu relógio

Vocé conhece aquelas pessoas que nunca aprenderam a acertar seus relógios? Consigo m e lem brar de várias délas...

Seguir instruçoes é muito im portante para tarefas tao simples quanto essas. A sequência de passos para ajustar as horas, m inutos e até mesmo a d ata de seu relógio podem ser encaradas como um programa. Normalmente, aperta-se o botao de ajuste até que u m núm ero comece a piscar. Depois, vocé pode usar um botáo para m udar a hora o u ir direto para o ajuste dos minutos. Isso se repete até que vocé tenha ajustado todos os valores como segundos, dia, més e, as vezes, o ano.

1 .4 .3 A p re n d e r a u sa r m ap a s

Já se perdeu em urna cidade estranhaP Já fez urna lista de passos para chegar a algum lugar? Entáo vocé já program ou antes. Só de procurar um m apa vocé já merecería um prêmio. Ao traçar um caminho de onde vocé está até onde deseja chegar, vocé normalmente relaciona urna lista de ruas ou marcos desse caminho. Normalmente é algo como passar très ruas à esquerda, dobrar à direita, dobrar à esquerda... O u algo como seguir reto até encontrar um sinal de tránsito ou um rio. Isso é programar. Seguir seu programa é a melhor forma de saber se o que vocé escreveu está correto ou se vocé agora está realmente perdido.

1 .4 .4 M o s tra r p a ra se u s a m ig o s q u e vo cé sa b e p ro g ra m a r

Esta pode ser a razâo mais complicada. Vamos ver isso como um subproduto do aprendizado, e nao seu maior objetivo. Se essa for a razâo de aprender a programar, é melhor continuar lendo e arranjar outra.

Programar é u m esforço para vocé realizar algo. É urna tarefa que exige dedi­ ca çâo e que traz m uita saüsfaçâo pessoal. Seus programas podem ser legáis, mas al já serao seus programas e nao somente vocé.

1 .4 .5 P a re c e r e stra n h o

Agora estamos conversando. Entender o que milhares de linhas de programa significam pode realmente gerar urna fama como essa entre os leigos. Se esse

û seu objetivo, saiba que há maneiras mais fáceis, como parar de tomar banho,

deixar as unhas crescerem, ter um cábelo de cor laranja o u roxa, parecer um roqueiro sem nunca ter tocado em urna banda etc.

(19)

20 In tro d u jo á Programado com Python

Em bora boa parte dos programadores que conhego nao seja exatamente o que eu classifico de 100% normal, ninguém o é.

Saber program ar nao significa que vocé seja louco ou muito inteligente. Saber programar tam bém nao significa que vocé nao seja louco ou que nao seja muito inteligente. Imagine aprender a programar como qualquer o utra coisa que vocé já aprendeu.

Um dia, sua mente poderá ter pensamentos estranhos, mas, quando esse dia chegar, pode apostar que vocé saberá.

11.4.6 E n te n d e r m e lh o r com o seu c o m p u ta d o r fu n c io n a

Programando vocé pode comegar a entender po r que aquela operagao falhou ou po r que o programa simplesmente fechou sem nem mesmo avisar o motivo. Programar também pode ajudá-lo a utilizar melhor sua planílha o u editor de textos. O tipo de pensamento que se aprende programando servirá nao só para fazer programas, mas também para usar programas.

1 .4 .7 C o zin h a r

Urna vez precisei cozinhar um prato, mas as instrugoes estavam escritas em alemao. Nao sei nada de alemao. Peguei o primeiro dicionário e comecei a traduzir as principáis palavras. Com as palavras traduzidas, tentei entender o que deveria realmente fazer.

Naquela noite, o jantar foi apenas urna sopa instantánea. Receitas podem ser vistas como programas. E como programas, só é possível segui-las se vocé entender aquilo que foi escrito.

A simples sequéncia de instrugoes nao ajuda urna pessoa qüe nao entenda seus efeitos.

Para algumas pessoas, programar é mais fácil que aprender alemao (ou qual­ quer outro idiom a estrangeiro). E como qualquer outra língua, nao se aprende apenas com um dicionário.

Idiomas hum anos sao ricos em contextos, e cada palavra costum a ter múlti­ plos significados. A boa noticia: linguagens de programagáo sao feitas para que máquinas possam entender o que ali foi representado. Isso significa que entender um programa é muito fácil, quase como consultar um dicionário. Outra boa noticia é que a maioria das linguagens contém conjuntos pequeños de “palavras”.

(20)

Capítulo 1 ■ Motivado 1 .4 .8 S a lv a r o m un d o

Urna boa razáo para aprender a program ar é salvar o mundo. Isso mesmo! Todos os dias, milhares de quilos de alimento sao desperdigados ou nao chegam onde deveriam por falta de organizado. Programando vocé pode ajudar a criar sistemas e até mesmo programas que ajudem outras pessoas a se organizar. Outra boa a^ao é ajudar um projeto de software livre. Isso permitirá que muitas pessoas que nao podem pagar po r programas de computador se beneficiem deles sem cometer crime algum.

1 .4 .9 S o ftw a re liv re

Aliás, vocé tem licenga de uso para todos os seus programas?

Se a resposta é nao, saiba que programadores aprendem Linux e outros siste­ mas operacionais muito mais rápidamente. Também conseguem tirar maior proveito desses sistemas porque conseguem programá-los.

Se nao existe, crie. Se é ruim , melhore.

Separar a p ro g ram ad o em u m m undo á parte pode ser sua prim eira ideia estranha entre muitas.

Criar m undos dentro de program as e computadores pode ser a segunda.

1.5 Por que Python?

A linguagem de p ro g ra m ad o Python é m uito ínteressante como prim eira linguagem de p ro g ram ad o devido á sua simplicidade e clareza. Em bora sim­ ples, é tam bém urna linguagem poderosa, podendo ser usada para administrar sistemas e desenvolver grandes projetos. É urna linguagem clara e objetiva, pois va i direto ao ponto, sem rodeios.

Python é software livre, ou seja, pode ser utilizada gratuitamente, gracas ao irabalho da Python Foundation1 e de inúmeros colaboradores. Vocé pode utili­ zar Python em praticamente qualquer arquitetura de computadores ou sistema operacional, como Linux1 2, FreeBSD3, Microsoft Windows o u Mac OS X4.

1 http://www.python.org

2 liUp://www.kernel.org ou http://www.ubuntu.com para obter o pacote completo

1 http://www.freebsd.org

(21)

22 In trodu jo á Programado com Python

Python vem crescendo em várias áreas da computagao, como inteligencia artifi­ cial, banco de dados, biotecnología, animagáo 3D, aplicativos movéis (celulares), jogos e mesmo como plataforma web. Isso explica porque Python é famosa por ter “batteries included", ou seja, baterías inclusas, fazendo referencia a um produto completo que pode ser usado prontamente (quem nunca ganhou um presente de Natal que veio sem pilhas?). Hoje é difícil encontrar urna biblioteca que nao tenha bindings (versáo) em Python. Esse fato torna o aprendizado da linguagem muito mais interessante, urna vez que aprender a programar em Python é poder continuar a utilizar os conhecimentos adquiridos mesmo depois de aprender a programar para resolver problemas reais.

Urna grande vantagem de Python é a legibilidade dos programas escritos nessa linguagem. Outras linguagens de programagáo utilizam inúmeras marcagoes, como ponto (.) ou ponto e vírgula (;), no fim de cada linha, além dos marca­ dores de inicio e fim de bloco como chaves ({ }) ou palavras especiáis (begin/ end). Esses marcadores tornam os programas um tanto mais difíceis de 1er e felizmente nao sao usados em Python. Veremos mais sobre blocos e marcagóes nos capítulos seguintes.

Outro bom motivo para aprender Python é poder obter resultados em pouco tempo. Como Python é urna linguagem completa, contando com bibliotecas para acessar bancos de dados, processar arquivos XML, construir interfaces gráficas e mesmo jogos, podemos utilizar m uitas fungóes já existentes escre- vendo poucas linhas de código. Isso aumenta a produtividade do programador, pois ao utilizarmos bibliotecas usamos programas desenvolvidos e testados por outras pessoas. Isso reduz o número de erros e permite que vocé se concentre realmente no problema que quer resolver.

Vejamos um pequeño programa escrito em Python na listagem 1.1. Ustagem 1.1 - Programa Olá Mundo

p rin t ("O lá !" )

A listagem do programa 1.1 tem apenas urna linha de código. A palavra print é urna fungáo utilizada para enviar dados para a tela do computador. Ao escrever- mos print ("Olá”), ordenamos ao computador que exiba o texto “Olá!” na tela. Veja o que seria exibido na tela ao se executar esse programa no computador:

(22)

Capítulo 1 ■ Motivado 23

Observe que as aspas (“) nao aparecem na tela. Esse é um dos detalhes da p rogram ado: precisamos marcar ou lim itar o inicio e o fim de nossas mensa- gens com um símbolo, nesse caso, aspas. Como podemos exibir praticamente qualquer texto na tela, as primeiras aspas indicam o inicio da mensagem, e as seguintes, o fim. Ao programar, nao podemos esquecer as lim ita re s do computador. Um com putador nao interpreta textos como seres humanos. A m áquina nao consegue diferenciar o que é program a ou mensagem. Se nao utilizarmos as aspas, o com putador interpretará nossa m ensagem como um comando da linguagem Python, gerando u m erro.

O interpretador Python é urna grande ferramenta para o aprendizado d a lin­ guagem. O interpretador é o programa que perm ite digitar e testar comandos escritos em Python e verificar os resultados instantáneamente. Veremos como utilizar o interpretador na segao 2.2.

A linguagem Python foi escolhida por simplificar o trabalho de aprendizado e fornecer grande poder de programagao. Como é u m software livre, disponível praticamente para qualquer tipo de computador, sua utilizagáo nao envolve a aquisigáo de licengas de uso, m uitas vezes a u m custo proibitívo. Bem-vindo ao m undo da programagáo!

(23)

CAPÍTULO 2

Preparando o ambiente

Antes de comegarmos, precisamos instalar o interpretador da linguagem Python. O interpretador é um programa que aceita comandos escritos em Python e os executa, linha a linha. E ele quem vai traduzír nossos programas em um formato que pode ser executado pelo computador. Sem o interpretador Python, nossos programas nao podem ser executados, sendo considerados apenas como texto. O interpretador também é responsável por verificar se escrevemos corretamente nossos programas, mostrando mensagens de erro, caso encontré algum problema.

O interpretador Python nao vem instalado com o Microsoft Windows: vocé deve instalá-lo fazendo um download da Internet. Se vocé utiliza Mac OS X ou Linux, provavelmente isso já foi feito para vocé. Veja a seguir como verificar se vocé tem a versao correta.

2.1 Instalado do Python

Neste livro, usamos o Python versao 3.1. A linguagem sofreu diversas modifi­ c a r e s entre as versoes 2 e 3. A versao 3.1 foi escolhida por permitir a correta u tiliz a d o desses novos recursos, além do fato de que é mais ínteressante aprendermos a versao mais nova. A versao 2.7 é também muito Ínteressante, mas permite m isturar a sintaxe (forma de escrever) do Python 2 com a do Python 3. Para evitar complicagoes desnecessárias, apresentaremos apenas as novas formas de escrever e deixaremos o Python 3.1 cuidar de verificar se fizemos tudo corretamente.

2 .1 .1 W in d o w s

Python está disponível em todas as versoes de Windows. Como é um software livre, podemos baixar o interpretador Python gratuitamente no site http://

www.python.org. O site deve parecer com o da figura. 2.1. Veja que á esquerda

(24)

Capítulo 2 ■ Preparando o ambiente 25

Figura 2.1 - Site da Python Foundation.

A figura 2.2 mostra a página de download. Procure o texto Python 3.1.1. Se urna versao mais nova da serie 3 estiver disponível, vocé deve escolhé-la. Quando este livro foi escrito, a versâo mais nova era a 3.1.1.

(25)

26 Introduçâo à Programaçao corn Python

Se о seu Windows é Windows 2000, XP, Vista ou Windows 7 32 bits, escolha

Python 3.1.1 Windows x86 MSI Installer (Windows binary-does not include source). Caso utilize о Windows Vista 64 ou o Windows 7 64 bits, escolha Python 3.1.1 Windows AMD64 MSI Installer (Windows AMD64 binary - does not include source).

Nos exemplos a seguir, faremos о download da versäo 3.1.1 para Windows 7 64 bits. A versäo do Python pode mudar, e o nom e do arquivo, também. Se você escolheu a versäo de 32 bits, о nome do arquivo será um pouco diferente, mas näo se preocupe: se você escolher a versäo errada, ela simplesmente näo funcionará. Você pode entäo tentar outra versäo.

A figura 2.3 m ostra a j anela de download do Firefox. Essa j anela também pode variar de acordo com a versäo de seu navegador de Internet. Clique no botäo

download para iniciar a transferencia do arquivo. Aquí, o Firefox foi utilizado como exemplo, mas você pode utilizar qualquer outro navegador de Internet, como Internet Explorer, Opera o u Safari.

Figura 2.3 — Janela de confirmagao de download do Firefox.

O interpretador Python ocupa aproximadamente 13 MB em disco, e a trans­ ferencia do arquivo deve demorar alguns m inutos, dependendo da velocidade de conexao á Internet. O Firefox exibe o download como na figura 2.4.

(26)

Capítulo 2 ■ Preparando o ambiente 27

Veja que a barra de transferencia desaparece quando a transferéncia é concluida, como na figura 2.5.

Figura 2.5 - Janela de download com a transferencia do arquivo finalizada.

Clique duas vezes no nom e do arquivo q ue vocé acabou de baixar. Vocé deve receber um pedido de confirmacao do Firefox, ilustrado na figura 2.6. Escolha

executar para iniciar o instalador.

Figura 2.6 — Janela de confirmando da execuqao do instalador Python.

A figura 2.7 m ostra a tela inicial do instalador. Até agora, nao instalamos nada, li esse program a que vai instalar o Python 3 em seu computador. Clique no l>o Cao Next para continuar.

Vocé deve estar com urna janela parecida com a da figura 2.8. Essa janela per- iilite escolher onde instalar os arquivos do interpretador Python. Vocé pode rnudar a pasta ou simplesmente aceitar o local proposto (padrao). C lique no lio 1:3o Next para continuar.

(27)

28 In trodu jo á Programado com Python

Figura 2.7 - Janela do instalador do Python.

Figura 2.8 - Janela do instalador pedindo confirmando da pasta (diretório) de instalando do Python.

A janela da figura 2.9 permite selecionar que partes do pacote do Python queremos instalar. Essa janela é útil para utilizadores mais av a d ad o s da linguagem, mas vamos simplesmente aceitar o padrao, clicando no botao Next

para continuar.

Finalmente cometamos a instalar os arquivos que precisamos. Urna barra de progresso como a da figura 2.10 será exibida. Aguarde a finalizado do processo.

(28)

Capítulo 2 ■ Preparando o ambiente 29

/\ instalagáo foi concluida. Clique no botáo Finish, m ostrado na figura 2.11, para icnninar o instalador.

(29)

30 In trodu jo á Programado com Python 2 .1 .2 L in u x

Grande parte das d i s t r ib u t e s Linux inclui urna versao do interpretador Python. Porém, as versdes mais utilizadas sao a 2.5 ou a 2.6. Precisamos do interpretador n a versao 3.1 ou superior. Para verificar a versao de seu interpre­ tador, digite python -V na linha de comando.

No U buntu (versao 10.04), digite:

sudo a p t-g e t i n s ta l l python3.1 sudo ap t-g e t i n s ta l l idle-python3.1

Vocé precisa de permissoes de adm inistrador (root) para efetuar a instalagáo.

2 .1 .3 M ac OS X

Tanto o Mac OS X Leopard quanto o Snow Leopard vém com urna versao do interpretador Python da Apple. No entanto, essa versao nao é a versao 3.1. Para contornar o problema, instale o MacPorts1, fazendo o download do arquivo dmg e depois instalando o Python 3.1 com:

sudo p o rt i n s t a l l python31

Para executar o interpretador recém-instalado, digite python3.l na linha de comando.

2.2 Usando o interpretador

Com o Python instalado, vamos comegar a trabalhar.

O IDLE é urna interface gráfica para o interpretador Python, perm itindo tam- bém a edigao e execugao de nossos programas. N o Windows, vocé deve ter urna pasta no m enu Iniciar > Programas > Python 3.1. Escolha IDLE.

N o Linux, abra o terminal e digite:

idle-python3.1 &

N o Mac OS X: abra o terminal e digite:

ID LE3.1 & 1 http://www.macports.org/

(30)

Capítulo 2 ■ Preparando o ambiente 31

A janela inicial do IDLE, no Windows 7, é m ostrada na figura 2.12. Se vocé utiliza o M ac OS X, Linux ou urna versäo diferente de Windows, essa janela nao será exatamente igual à d a figura, m as m uito parecida.

Figura 2.12 - Janela inicial do IDLE.

Observe que o cursor está posicionado dentro da janela Python Shell e que a linha de comandos é iniciada pela sequencia » > .

Digite:

p r in t ( " O i” )

Pressione a tecla ENTER. Vocé deve obter urna tela parecida com a d a figura 2.13.

Figura 2.23 - IDLE mostrando o resultado de print(ccOi”).

U ma das grandes vantagens do Python é contar com o interpretador de coman- tíos. Vocé pode abrir urna janela como essa sempre que tiver algum a dúvida em Python. O interpretador perm ite que vocé verifique o resultado de um comando instantáneamente. Veremos mais adiante que esse tipo de verificagáo é muito im portante e facilita o aprendizado da linguagem.

(31)

32 Introduçâo à Programado com Python

2.3 Editando arquivos

Nem só de experimentos vive o programador Python. Um programa nada mais é que um arquivo-texto, escrito em um formato especial (linguagem). No caso da linguagem Python, podemos usar qualquer editor de textos dis- ponivel: PSPad no Windows, TextMate no Mac OS X, Vi Ou Emacs no Linux. O que você nâo deve utilizar é úm editor de textos como o Microsoft Word ou o OpenOffi.ee. Esses programas gravam seus arquivos em formatos especiáis que nâo podem ser utilizados para escrever programas, salvo se você escolher gravar apenas texto ou simplesmente gravar no formato txt. Além disso, um editor de textos comum nâo foi feito para escrever programas.

Você pode também utilizar o editor de textos incluido na instalaçâo do in­ terpretador Python. Com o interpretador aberto, diq u e no menu File e depois selecione a opçâo NewWindow, como mostra a figura 2.14.

Como utilizamos a versao 3.1 do interpretador, é muito importante que vocé use um editor de textos correto. Isso é, um editor que suporte a edigáo de textos em UTF-8. Se vocé nao sabe o que é UTF-8 ou se o seu editor de textos suporta esse formato de codificagáo, utilize o IDLE como editor de textos. Além de suportar a edigao no formato UTF-8, que permitirá a utilizagao de acentos em nossos programas, ele é preparado para colorir nossos programas em Python, tornando a leitura mais fácil.

(32)

Capítulo 2 ■ Preparando o ambiente 33

Figura 215 —Janela do editor de textos do IDLE.

Urna nova janela, como a da figura 2.15, deverá aparecer. É nessa janela que cscreveremos nossos programas. Observe que embora parecida com a janela principal do IDLE, a janela tem opgoes de m enú diferentes da outra. Para es­ clarecer essa separagao, chamaremos a prim eira de janela do interpretador e a segunda de janela do editor de textos. Se vocé ainda estiver em dúvida, a janela do editor de textos é a que apresenta a opcáo Run n o menú.

Experimente um pouco e escreva: print("Oi")

Su a janela do editor de textos deverá ser semelhante á m ostrada na figura 2.16.

-

-i' E'1«1 ‘ ■l'f r •»«•«« -;u;i O ptioni V»; -iri->ws Help i p - > r o ¿ - ; .

1

.1 1

-11 |lh : íjC ól: 1 IU

Figura 216 - Editor de textos com o programa já digitado.

Agora que escrevemos nosso pequeño programa, vamos salvá-lo. Escolha a Opgao Save do menú File, como mostra a figura 2.17.

(33)

34 Introduçâo à Programaçâo corn Python

I f f ) Edit Format Run Options Windows .Help : • §

| New Window Ctrl-N | Open... Ctrl+O

' Becent Files... . * Open Module.,. Alt~M OassBrawSer Alt+C Path Browser Saveis.,. QrllShift+S Save Copy As,.. Altr-Shift+S

Print Window Ctrl+P : jin: 2¡Col: 0

Figura 2.17 - Janela do editor de textos com o menú File aberto e a opgdo Save selecionada.

Urna janela-padrao de gravadlo de arquivos será exibida. A janela m uda com a versao do sistema operacional, mas se vocé utiliza Windows 7, ela parecerá com a da figura 218. Escreva testpy no nome do arquivo e dique no botáo para salvar. Aten^áo: a extensao .py nao é adicionada automáticamente pelo IDLE. Lembre-se de sempre gravar seus programas escritos em Python com a extensao .py.

Figura 218 - Janela de gravaçâo de arquivos do Windows 7.

Agora diq u e no menu Run para executar seu programa. Vocé pode também pressionar a tecla F5 com o mesmo efeito. Essa operaçâo pode ser visualizada na figura 2.19.

(34)

Capitulo 2 ■ Preparando o ambiente 35

Figura 2.19 - Janela do interpretador mostrando a execugáo do programa.

Seu program a será executado na outra. janela, a d o interpretador. Veja que urna iinha com a palavra RESTART apareceu, como na figura 2.20. Observe que obtivemos o mesmo resultado de nosso prim eiro teste.

Figura 2.20 - Janela do interpretador mostrando a execugáo do programa.

Experimente modificar o texto entre aspas e executar novamente o program a, pressionando a tecla F5 na janela do Editor ou selecionando Run no menú. Agora estamos com tu d o instalado para continuar aprendendo a programar. Durante todo o livro, program as de exemplo seráo apresentados. Vocé deve digitá-los na janela do editor de textos, gravá-los e executá-los. Vocé pode voltar n Jet" as segoes 2.2 e 2.3 sempre que precisar. Com o tem po essas tarefas serao memorizadas e realizadas sem esforgo.

Experimente gravar seus program as em um diretório específico em seu com- pu tador. Isso ajudará a encontrá-los mais tarde. Urna dica é criar u m diretório pura cada capítulo do livro, mas vocé pode organizar os exemplos como quiser. Vocé pode tam bém fazer cópias dos exemplos e alterá-los sem receio. Em bora

(35)

36 In trodu jo á Programado com Python

vocé possa baixar todos os exemplos já digitados, é altamente recomendado que vocé leia o livro e digite cada programa. Essa prática ajuda a memorizar as co n stru y es da linguagem e facilita a leitura dos programas.

2.4 Cuidados ao digitar seus programas

Ao digitar u m programa no editor de textos, verifique se vocé o copiou exa- tamente como apresentado. Em Python, vocé deve tomar cuidado com os seguintes itens:

1. Letras maiúsculas e minúsculas sao diferentes. Assim, print e Print sao completamente diferentes, causando um erro caso vocé digite o P maiús- culo. No inicio, é comum termos o hábito de escrever a primeira letra de cada linha em letras maiúsculas, causando erros em nossos programas. Em caso de erro, leia atentamente o qué vocé digitou e compare com a listagem apresentada no livro.

2. Aspas sao muito importantes e nao devem ser esquecidas. Toda vez que abrir aspas, nao esquega de fechá-las. Se vocé esquecer, seu programa nao funcionará. Observe que o IDLE m uda a cor do texto entre aspas, facilitando essa verificagáo.

3. Parénteses nao sao opcionais em Python. Nao remova os parénteses dos programas e preste a mesma atengáo dada ás aspas para abri-los e fechá-los. Todo paréntese aberto deve ser fechado.

4. Espagos sao muito importantes. A linguagem Python se baseia na quan- tidade de espago em branco antes do inicio de cada linha para realizar diversas operagoes, explicadas posteriormente no livro. Nao esquega de digitar o texto dos programas com o mesmo alinhamento apresentado no livro. Observe também que o IDLE ajuda nesses casos, avisando sobre problemas de alinhamento. Nunca junte duas linlias em urna só até sentir-se seguro sobre como escrever corretamente em Python.

2.5 Os primeiros programas

Vamos analisar nosso primeiro programa. A figura 2.21 mostra a separagáo entre o nome da fungao, os parénteses, a mensagem e as aspas. É muito importante saber o nom e de cada urna dessas partes para o correto entendimento dos conceitos e programas apresentados.

(36)

Capítulo 2 ■ Preparando o ambiente 37

Figura 2.21 - Ñames dos elementos do primeiro programa.

A fungáo print informa que vamos exibir algo n a tela. Pode-se dizer que a fungáo exibe urna mensagem na tela d o computador. Sempre que quisermos m ostrar ¡ligo para o usuário do computador, como urna m ensagem, urna pergunta ou o resultado de urna operagáo de cálculo, utilizaremos a fungáo print. Para separar os program as do texto explicativo do livro, todo trecho de pro­ grama, fungbes, variáveis e demais itens em Python serao apresentados com

11 ma fonte de texto diferente (monoespagada), como a utilizada para explicar ¡i fungáo print.

V<litando á figura 2.21, temos as aspas como elementos importantes. Elas sao utilizadas para separar textos destinados ao usuário d o com putador do resto tío programa. Utilizamos aspas p ara indicar o inicio e o fim do texto de nossa mensagem. A mensagem é nosso texto em si e será exibida exatamente como

11 igitada. O s parénteses sao utilizados para separar os parámetros de urna fun­ gí! o, no caso, os de print. Um parám etro é u m valor passado para urna fungáo: no caso da fungáo print, a mensagem a imprimir.

O interpretador Python tam béni pode ser utilizado como calculadora. Expe­ lí mente digitar 2+3 no interpretador, como m ostra a listagem 2.1. Listagem 2.1 - Usando o interpretador como calculadora

>>> 2+3 5

Nlío esquega de pressionar a tecla ENTER para que o interpretador saiba que voce term inou a digitagao. O resultado deve ser apresentado na linha seguinte. Podemos tam bém subtrair valores, como na listagem 2.2.

(37)

38 In tro d u jo á Programado com Python

Listagem 2.2 - Subtra^áo

» > 5-3 2

Podemos combinar adigáo e subtragáo na mesma linha, como m ostra a lis­ tagem 23.

Listagem 2.3 — A d i0 o e subtra^áo

» > 10-4+2 8

A multiplicagao é representada po r um asterisco (*), e a divisao, pela b arra (/), como m ostra a listagem 2.4.

Listagem 2.4 - M ultiplicado e divisao »> 2*10

20 » > 20/4 5.0

Para elevar um núm ero a u m expoente, utilizaremos dois asteriscos (**) para representar a operagao de exponenciagáo. Observe que nao há qualquer espago entre os dois asteriscos. Assim, para calcularmos 23, escreveremos de forma semelhante ao conteúdo da listagem 2.5.

Listagem 2.5 - E x p o n e n c ia l

» > 2**3 8

Podemos tam bém obter o resto da divisao de dois números usando o símbolo %. Assim, para calcularmos o resto da divisao entre 10 e 3, digitaríamos como m ostrado n a listagem 2.6.

Listagem 2.6 - Resto da divisao inteira

» > 10% 3

1

» > 16 % 7 2

(38)

Capítulo 2 ■ Preparando o ambiente 39

Os parénteses sao utilizados em Python da m esma forma que em expressoes matemáticas, ou seja, para alterar a ordem de execugao de urna operagáo. Para re- lembrar a ordem de precedencia das operagoes, temos as seguintes prioridades:

1. Exponenciagáo ou potenciagáo (**). 2. M ultiplicado (*) e divisáo (/ e %). 3. Adigao (+) e subtragao (-).

A expressáo 1500 + (1500 * 5 / 100) é equivalente a:

Nao esqueja de que, em Python, como na matemática, as operagoes de mesma prior idade sao realizadas da esquerda para direita. Utilize parénteses sempre que precisar alterar a ordem de execugao das operagoes e tam bém p ara au­ mentar a clareza da fórmula.

Exercício 2.1 - Converta as seguintes expressoes matemáticas para que possam ser calculadas usando o interpretador Python.

10 + 20 x 30 42 -s- 30 (94 + 2) x 6 -1

Exerdcio 2.2 - Digite a seguinte expressáo no interpretador:

10 % 3 * 10 ** 2 + 1 - 10 * 4 / 2

Tente resolver o m esm o cálculo usando apenas lápis e papel. Observe como a prioridade das operagoes é importante.

2.6 Conceitos de variáveis e atribuido

Além ele operagoes simples de cálculo, o interpretador tam bém pode ser usado pn ra. realizar operagoes mais complexas e mesmo executar program as com­ pletos. Antes de continuarmos, é im portante observar o conceito de variáveis o como podemos usá-las em um programa. Em matemática, aprendemos o epnceito de variável para representar incógnitas em equagoes do tipo x + 1 = 2,

(39)

40 In tro d u jo á Programado com Python

onde devemos determinar o valor de x resolvendo a equagao. Em programa- gao, variáveis sao utilizadas para armazenar valores e para dar nom e a urna área de memoria do com putador onde armazenamos dados. Variáveis seráo m elhor estudadas n o capítulo 3. Por enquanto, podem os imaginar a memoria do computador como urna grande estante, onde cada compartimento tem um nome. Para armazenar algo nesses compartimentos, usaremos o símbolo de igualdade (=) entre o nom e do compartimento e o valor que queremos arma­ zenar. Chamaremos essa operagáo de atribuida o, onde um valor é atribuido a urna variável. Q uando lermos nosso programa, as operacoes de atribuigáo serao chamadas de “recebe”, o u seja, urna variável recebe um valor. Para simplificar as explicagoes de como um program a funciona, utilizaremos bolas pretas © com números, para relacionar urna determinada linha a um texto explicativo. Esses símbolos nao fazem parte do programa e nao devem ser digitados nem no interpretador nem no editor de textos.

Como quase tudo na vida, aprende-se a program ar programando. Vamos es- crever outro programa. Observe a listagem 2.7:

Listagem 2.7 - 0 primeiro programa com variáveis . a = 2 O

b = 3 © print (a + b) ©

Vejamos o que cada linha significa. Em 0> temos a = 2. Leia “a recebe 2 ”. Essa linha diz que urna variável chamada a receberá o valor 2. Variáveis em progra- magáo tém o mesmo significado que em matemática. Vocé pode entender urna variável como urna forma de guardar valores na memoria do computador. Toda variável precisa ter um nom e para que seu valor possa ser utilizado posterior­ mente. Esse conceito ficará mais claro um pouco mais adiante.

Em © , temos b = 3. Leia “b recebe 3”. Essa linha realiza um trabalho muito parecido com o da linha anterior, mas a variável se chama b e o valor é o nú­ mero 3. Para entender o que faz essa linha, imagine que criamos um espago na memoria do computador para guardar outro valor, no caso, 3. Para podermos usar esse valor mais tarde, chamamos esse espago de “b”.

A linha 0solicita que o resultado da soma do conteúdo da variável a com o con- teúdo da variável b seja exibido na tela. A fungáo print realiza a impressáo, mas antes o resultado de a + b é calculado. Veja que nessa linha estamos ordenando

(40)

Capítulo 2 ■ Preparando o ambiente

no programa que calcule a + b e que exiba o resultado na tela. Como em mate­ mática, passamos parámetros ou valores para urna fungáo usando parénteses. lisses parénteses sao requeridos pelo interpretador Python. Vale lem brar de /(x), onde f é o nom e da funqáo e x u m parámetro. N o exemplo anterior, print

é o nome d a fungáo, e o resultado de a + b, o valor passado como parámetro. No decorrer deste livro, veremos diversas fungoes disponíveis n o Python para realizar operacoes com o computador, como, por exemplo, 1er valores do teclado i >u gravar dados em u m arquivo.

Vocé pode experimentar o program a da listagem 2.7 n a janela do interpretador Python, como mostra a segáo 2.2. O resultado desse programa pode ser visto na listagem 2.8.

Ijstagem 2.8 - Exemplo mostrado no interpretador >>> a = 2

» > b = 3 >>> p rin t ( a + b ) 5

As duas prim eiras linhas nao enviam nada para a tela, po r isso, apenas o re­ sultado da terceira linha é mostrado.

Vocé pode estar se perguntando po r que criamos duas variáveis, a e b, para somar dois números? Poderíamos ter obtido o mesmo resultado de diversas formas, como na listagem 2.9.

Listagem 2.9 - Outra form a de resolver o problema

p rin t (2 + 3)

ou mesmo como m ostra a listagem 2.10. Listagem 2.10 - Outra form a de resolver o problema

p rin t (5)

Un táo, por que escolhemos resolver o problema usando variáveis? Primeiramen- lu para podermos falar de variáveis, mas também para exemplificar urna grande (I i ícrenga entre resolver um problema no papel e po r meio de u m computador. Quando estamos resolvendo um problema de matemática no papel, como sumar dois números, realizamos diversos cálculos m entalm ente e escrevemos parte desse processo no papel quando necessário. Depois de escrito no papel,

(41)

42 In tro d u jo á Programado com Python

m udar os valores nao é tao simples. Ao programarmos um computador, estamos transferindo esse cálculo para o computador. Como program ar é descrever os passos para a solugao do problema, é aconselhável escrevermos programas o mais claramente possível, de forma que possamos alterá-los caso precisemos e, mais importante, que possamos entendé-los mais tarde.

N a listagem 2.9, o problema foi representado como sendo a soma de 2 e 3. Se precisarmos m udar as parcelas dessa soma, teremos que escrever outro pro­ grama. Isso tam bém é válido para o primeiro program a, mas observe que ao utilizarmos variáveis estamos dando nome aos valores de entrada de nosso pro­ blema, aumentando, assim, a facilidade de entendermos o que o program a faz. Já a solu^ao apresentada na listagem 2.10 nao descreve o problema em si. Es­ tam os apenas ordenando ao computador que im prim a o núm ero 5 na tela. Nao fizemos qualquer registro do que estávamos fazendo, ou de que nosso problema era somar dois números. Isso ficará mais claro no exemplo a seguir. Veja a listagem 2.11.

Listagem 2.11 - Cálculo de aumento de salário

sa la rio = 1500 O aumento = 5 ©

p rin t (s a lá rio + (s a lá rio * aumento / 100)) @

Em O temos urna variável que é chamada salário, recebendo o valor 1500. Em ©, outra variável, aumento, recebe o valor 5. Finalmente, em © descrevemos a fórmula que calculará o valor do novo salário depois de receber um aumento. Teríamos, entáo, um resultado como o da listagem 2.12.

Listagem 2.12 - Resultado do aumento de salário no interpretador

> » sa lá rio = 1500 > » aumento = 5

» > p rin t (s a lá rio + (s a lá rio * aumento / 100 )) 1575.0

O program a da listagem 2.11 pode ser escrito de forma mais direta, utilizando o utra fórmula sem variáveis. Veja a alternativa d a listagem 2.13.

Listagem 2.13 - Alternativa para o cálculo de aumento de salário

(42)

Capítulo 2 ■ Preparando o ambiente 43

O objetivo desse exemplo é apresentar a diferenga entre descrevermos o proble­ ma de forma genérica, separando os valores de entrada do cálculo. O resultado

é idéntico: a diferencia está na clareza da rep resentado de nosso problema. Se m udarm os o valor de salário, n a prim eira linha d a listagem 2.11, obteremos o resultado correto na saída d o program a, sem precisar nos preocuparmos nova- mente com a fórmula do cálculo. Observe tam bém que, se fizermos a mesma coisa no program a da listagem 2.13, teremos que m udar o valor de salário em duas posigóes diferentes d a fórmula, aum entando nossas chances de esquecer urna délas e, consequentemente, de recebermos um resultado incorre to. Ao utilizamos variáveis, podemos referenciar o mesmo valor várias vezes, sem esquecer que podemos utilizar nomes mais significativos que simples x ou y para aum entar a clareza do programa. Por exemplo, na listagem 2.11, registramos a fórmula para o cálculo do aumento especificando o nom e de cada variável, facilitando a leitura e o entendimento.

Se vocé já u tiliz o u urn a p lan ilh a eletrónica, com o M icrosoft Excel ou OpenOffice Cale, o conceito de variável pode ser entendido como as células de urna planilha eletrónica. Vocé pode escrever as fórmulas de sua planilha sem utilizar outras células, mas teñ a que reescrevé-las toda vez que os valores mudassem. Assim como as células de urna planilha eletrónica, as variáveis de u m program a podem ser utilizadas diversas vezes e em lugares diferentes. Exercído 2.3 - Faga u m program a q ue exiba seu nom e n a tela.

E x e rd d o 2 .4 - Escreva u m program a que exiba o resultado de 2a x 3b, onde a vale 3 e b vale 5.

Exercído 2.5 - M odifique o prim eiro program a, listagem 2.7, de form a a calcular a som a de trés variáveis.

Exercído 2 .6 - M odifique o program a d a listagem 2.11, de forma que ele calcule u m aum ento de 15% p ara u m salário de R$ 750,00.

(43)

CAPÍTULO

3

Variáveis e entrada de dados

O capítulo anterior apresentou o conceito de variáveis, m as há. m ais po r des- cobrir. Já sabemos que variáveis tém nomes e que estes permitem acessar os valores dessas variáveis em outras partes do programa. Neste capítulo, vamos ampliar nosso conhecimento sobre variáveis estudando novas operaQoes e novos tipos de dados.

3.1 Nomes de variáveis

Em Python, nomes de variáveis devem iniciar obrigatoriamente com urna letra, mas podem conter números e o símbolo sublinhado (_)■ Vejamos exemplos de nomes válidos e inválidos em Python na tabela 3.1.

Jabela 31 - Exemplo de nomes válidos e inválidos para variáveis

Nome Válido Comentarios al Sim Embora contenha um número, o nome a1 inicia com letra. velocidade Sim Nome formado por letras.

velocidade90 Sim Nome formado por letras e números, mas iniciado por letras. salário_médio Sim 0 símbolo sublinha (_) é permitido e facilita a leitura de nomes grandes. salário medio Nao Nomes de variáveis nao podem conter espatos em branco. _b Sim 0 sublinha ( J é aceito em nomes de variáveis, mesmo no inicio. 1a Nao Nomes de variáveis nao podem comegar com números.

A versáo 3 d a linguagem Python permite a utilizadlo de acentos em nomes de variáveis, pois, po r padráo, os programas sao interpretados utilizando-se um conjunto de caracteres chamado UTF-81, capaz de representar praticamente todos as letras dos alfabetos conhecidos.

Variáveis tém outras propriedades além de nom e e conteúdo. Urna délas é conhecida como tipo e define a natureza dos dados que a variável armazena. Python tem vários tipos de dados, mas os mais comuns sao núm eros inteiros,

(44)

Capítulo 3 ■ Variáveis e entrada de dados 45

números de ponto flutuante e strings. Além de p oder armazenar números e letras, as variáveis em Python também armazenam valores como verdadeiro ou falso. Dizemos que essas variáveis sao do tipo lógico. Veremos mais sobre variáveis do tipo lógico n a segáo 33.

TRÍVIA

A maior parte das linguagens de programaçâo foi desenvolvida nos Es­ tados Unidos ou considerando apenas nomes escritos na língua inglesa como nomes válidos. Por isso acentos e letras consideradas especiáis nao sao aceitos como nomes válidos na maior parte das linguagens de programaçâo. Essa restriçâo é um problema nao só para falantes do portugués, mas de muitas outras línguas que utilizam acentos ou mesmo outros alfabetos. O padráo americano é baseado no conjunto de caracteres ASCII desenvolvido na década de 1960. Com a globalizaçâo da economía e o advento da Internet, as aplicaçôes mais modernas sâo escritas para trabalhar com um conjunto de caracteres dito universal, chamado Unicode r ) .

(’) http://pt.wikipedia.org/wiki/Ascii (**) http://pt.wikipedia.org/wiki/Unicode

3.2 Variáveis numéricas

Dizemos que urna variável é numérica quando armazena números inteiros ou de ponto flutuante.

Os números inteiros sao números sem parte decimal, como 1, 0, -5, 550, -47, 30000.

Números de ponto flutuante ou decimais sao números com parte decimal, como 1.0, 5.478,10.478, 30000.4. Observe que 1.0, mesmo tendo zero na parte decimal, é um número de ponto flutuante.

Em Python e na maioria das linguagens de programagáo utilizamos o ponto e nao a vírgula como separador entre a parte inteira e fracionária de um núme­ ro. Isso também é urna heranga da língua inglesa. Observe também que nao utilizamos nada como separador de milhar. Exemplo: 1.000,000 (um milháo) é escrito 1000000.

(45)

46 In tro d u jo á Programado com Python

Exercício3.1 - Complete a tabela a seguir, marcando inteiro ou ponto flutuante dependendo d o núm ero apresentado.

Número Tipo numérico 5 ® inteiro O ponto flutuante 5.0 O inteiro © ponto flutuante 4.3 O inteiro © ponto flutuante -2 ® inteiro O ponto flutuante 100 © inteiro O ponto flutuante 1.333 O inteiro ® ponto flutuante 3 .2 .1 R e p r e s e n t a d o de v a lo re s n u m é ric o s

Internamente, todos os números sao representados utilizando o sistema binário, ou seja, de base 2. Esse sistema perm ite apenas os dígitos 0 e 1. Para representar números maiores, combinamos vários dígitos, exatamente como fazemos com o sistema decimal, ou de base 10, que utilizamos.

Vejamos prim eiro como isso funciona na base 10:

531 = 5 x 102 + 3 x 101 + 1 x 10® = 5 x 1 0 0 + 3 x 1 0 + 1 x 1 = 5 0 0 + 3 0 + 1 = 531

Multiplicamos cada dígito pela base elevada a um expoente igual ao número de casas á direita do dígito em questao. Como em 531 o 5 tem 2 dígitos á di- reita, multiplicamos 5 x 102. Para o 3, temos apenas outro dígito á direita, logo, 3 x 101. Finalmente, para o 1, sem dígitos á direita, temos 1 x 10°. Somando esses componentes, temos o núm ero 531. Fazemos isso tao rápido q ue é natural ou automático pensarmos desse jeito.

A m udanza para o sistema binário segue o mesmo processo, mas a base agora é 2, e nao 10. Assim, 1010 em binário representa:

1010 = l x 2 3 + 0 x 2 z + l x 2 1 + 0 x 2 e = l x 8 + 0 x 4 + l x 2 + 0 x l = 8 + 2

= 10

Autilizacao d o sistema binário é transparente em Python, ou seja, se vocé nao solicitar explicitamente que esse sistema seja usado, tudo será apresentado na

(46)

Capítulo 3 ■ Variáveis e entrada de dados 47

base 10 utilizada no dia-a-dia. A importancia da nogao de diferenga de base é importante, pois ela explica os limites da representagao. O limite de represen- tagáo é o valor m ínimo e m áxim o que pode ser representado em urna variável numérica. Esse limite é causado pela quantidade de dígitos que foram reserva­ dos para armazenar o núm ero em questáo. Vejamos como funciona n a base 10. Se vocé tem apenas 5 dígitos para representar u m número, o m aior núm ero é 99999. E o m enor seria (-99999). O mesmo acontece no sistema binário, sendo que lá reservamos um dígito para registrar os sinais de positivo e negativo. Para núm eros inteiros, Python utiliza um sistema de precisao ilimitada que permite a representagao de núm eros muito grandes. E como se vocé sempre pudesse escrever novos dígitos á m edida que for necessário. Vocé pode calcular em Python valores como 21000000(2 ** 1000000) sem problemas de representagao, mesmo quando o resultado é um núm ero de 301030 dígitos.

Em p onto flutuante, temos limite e problemas de representagao. Um número decimal é representado em ponto flutuante utilizando-se urna m antissa e um expoente (sinal * mantissa x baséac?oma!). Tanto a m antissa quanto o expoente tém u m núm ero de dígitos máximos que lim itam os núm eros que podem ser representados. Vocé nao precisa se preocupar com isso no momento, pois esses valores sao bem grandes e vocé nao terá problemas na m aioria de seus programas. Vocé pode obter mais informagoes acessando http://pt.wikiped.ia.

org/wiki/Ponto_flutuante.

A versáo 3.1.2 do P y th o n , ro d an d o em M ac OS X, tem co m o lim ites 2.2250738585072014 x lO'308 e 1.7976931348623157 x 10308, suficientemente grandes e pequeños para quase qualquer tipo de aplicagáo. É possível encon­ trar problemas de representagao em fungáo de como os núm eros decimais sao convertidos em núm eros de ponto flutuante. Esses problemas sao bem conhe- cidos e afetam todas as linguagens de programagao, nao sendo u m problema específico do Python.

Vejamos u m exemplo: o núm ero 0.1 nao tem nada de especial n o sistema decimal, mas é urna dízim a periódica no sistema binário. Vocé nao precisa se preocupar com esses detalhes agora, m as pode investigá-los mais tarde quan­ do precisar (normalmente cursos de computagao apresentam urna disciplina chamada cálculo num érico p ara abordar esses tipos de problemas). Digite no interpretador 3 * 0.1

(47)

48 In tro d u jo á Programado com Python

Vocé deve ter obddo como resultado 030000000000000004, e nao 03, como esperado. Nao se assuste: nao é um problema de seu computador, mas de representado. Se for necessário durante seus estudos de cálculos mais preci­ sos o u se os resultados em ponto flutuante nao satisfizerem os requisitos de precisao esperados, verifique os m ódulos decimals e fractions. A docum en tad o do Python traz urna página específica sobre esse tipo de problema: http://docs.

python. org/py3 k/tutoriál/floatingpoint. html.

3.3 Variáveis do tipo Lógico

M uitas vezes queremos armazenar um conteúdo simples: verdadeiro ou falso em urna variável. Nesse caso, utilizaremos u m tipo de variável chamado tipo lógico ou booleano. Em Python, escreveremos True para verdadeiro e False para falso (listagem 3.1). Observe que o T e o F sao escritos com letras maiúsculas. Listagem 3.1 - Exemplo de variáveis do tipo lógico

resultado = True aprovado = False 3 .3 .1 O p e ra d o re s re la c io n á is

Para realizarmos comparagoes lógicas, utilizaremos operadores relacionáis. A lista de operadores relacionáis suportados em Python é apresentada na tabela 3.2.

Jabela 3.2 - Operadores relacionáis

Operador Operado Símbolo matemático == ¡gualdade = > maiorque > < menor que < ! = diferente & >=• maiorou igual > <= menor ou igual <

O resultado de urna comparagao é um valor do tipo lógico, o u seja, True (verda­ deiro) o u False (falso). Utilizaremos o verbo “avahar” para indicar a resolugáo de urna expressáo.

(48)

Capítulo 3 ■ Variáveis e entrada de dados 49

l.istagem 3.2 - Exemplo de uso de operadores relacionáis

>>> a = 1 # a recebe 1 » > b = 5 # b recebe 5 >>> c = 2 # c recebe 2 >>> d = 1 # d recebe 1 » > a False == b # a é igual a b ? >>> b True > a # b é maior que a? >>> a True < b # a é menor que b? > » a True == d # a é igual a d? » > b True >= a # b é maior ou ig u al a a? >>> c True <= b # c é menor ou igu al a b? » > d False != a # d é d iferen te de a? >>> d True != b # d é d ife re n te de b?

I isses operadores sao utilizados como na matemática. Especial atengáo deve ser dada aos operadores >= e <=. O resultado desses operadores é realmente maior ou igual e m enor ou igual, ou seja, 5 >= 5 é verdadeiro, assim como 5 <= 5.

( )bserve que, na listagem 3.2, utilizamos o símbolo de sustenido (#) para es- cu,•ver comentários na linha de comando. Todo texto á direita do sustenido é Ignorado pelo interpretador Python, ou seja, vocé pode escrever o que quiser. I .eia novamente a listagem 3.2 e veja como é mais fácil entender cada linha i piando a comentamos. Comentários nao sao obrigatórios, mas sao muito Importantes. Vocé pode e deve utilizá-los em seus programas para facilitar o cntendintento e oferecer urna anotagáo para vocé mesmo. É comum lermos um programa alguns meses depois de escrito e termos dificuldade delem brar o que realmente queríamos fazer. Vocé tam bém nao precisa comentar todas as linhas de seus programas ou escrever o obvio. Urna dica é identificar os programas ruin sen nome, a data em que comeQOu a ser escrito e mesmo a listagem ou ( tipículo do livro onde vocé o encontrou.

Variáveis de tipo lógico também podem ser utilizadas para armazenar o resul­ tado de expressóes e com p arares.

(49)

50 Introduçâo à Programaçâo corn Python

Listagem 3.3 - Exemplo do uso de operadores relacionáis com variáveis do tipo lógico

nota = 8 niédia = 7 aprovado = nota > media print(aprovado)

Se urna expressao contém operagoes aritméticas, estas devem ser calculadas antes que os operadores relacionáis sejam avaliados. Quando avahamos urna expressao, substituimos o nome das variáveis por seu conteúdo e só entáo verificamos o resultado da comparagao.

Exercício 3.2 - Complete a tabela abaixo, respondendo True ou False. Considere a = 4 ,b = 10, c = 5.0,d = 1 e f = 5.

Expressao Resultado . a = c O True ©False

a<b © True O False d>b O True ©False c!=f ©TrueO False a==b O True © False c<d O True ® False b>a ©True O False c*= f O True © False '} ,

f>=c ©True O False c<:=c © True O False c<=f ©TrueO False 3 .3 .2 O p e rad o re s lógicos

Para agrupar operagoes com lógica booleana, utilizaremos operadores lógi­ cos. Python suporta très operadores básicos: not (nao), and (e), or (ou). Esses operadores podem ser traduzidos como nao (-> negagâo), e (A conjungâo) e ou (V disjungao).

Tabela 33 - Operadores lógicos

Operador Python Operaçào not nâo and e or ou

Referências

Documentos relacionados

cujo locutor deixa entender que ele teria mais coisas fundamentais a dizer, mas que não o faria naquele lugar e momento. Essas “passagens de retenção” remetem ao ensino oral

◦ Os filtros FIR implementados através de estruturas não recursivas têm menor propagação de erros. ◦ Ruído de quantificação inerente a

Promovido pelo Sindifisco Nacio- nal em parceria com o Mosap (Mo- vimento Nacional de Aposentados e Pensionistas), o Encontro ocorreu no dia 20 de março, data em que também

2.1. Disposições em matéria de acompanhamento e prestação de informações Especificar a periodicidade e as condições. A presente decisão será aplicada pela Comissão e

Assim, este estudo buscou identificar a adesão terapêutica medicamentosa em pacientes hipertensos na Unidade Básica de Saúde, bem como os fatores diretamente relacionados

Se você vai para o mundo da fantasia e não está consciente de que está lá, você está se alienando da realidade (fugindo da realidade), você não está no aqui e

Muita gente já tinha escrito (verbo escrever, no Pretérito Mais-Que-Perfeito Composto do Indicativo) ao menino para lhe dizer que gostaria (verbo gostar, no Condicional) de

a) “Ao fundo da nossa rua, depois de todas as casas, depois de todas as árvores, depois do campo de ervas altas e do ribeiro de água gelada, há um muro”.. Depois, transforma as