Você está na página 1de 83

Tassiana Rugoni de Campos

DESENVOLVIMENTO DE SOFTWARE II

1ª edição

Universidade Braz Cubas - UBC

Mogi das Cruzes - SP

2017
Av. Francisco Rodrigues Filho, 1233 - Mogilar

CEP 08773-380 - Mogi das Cruzes - SP

Reitor: Prof. Maurício Chermann

EQUIPE DE PRODUÇÃO CORPORATIVA

Gerência: Adriane Aparecida Carvalho

Orientação Pedagógica: Karen de Campos Shinoda

Coordenação de Produção: Diego de Castro Alvim

Revisão de Textos: Adrielly Rodrigues

Coordenação de Edição/Arte: Michelle Carrete

Diagramação: Amanda Holanda / Noel Gonçalves

Ilustração: Everton Arcanjo

Impressão: Grupo VLS / Jet Cópias

Imagens: Fotolia / Acervo próprio

Os autores dos textos presentes neste material didático assumem total

responsabilidade sobre os conteúdos e originalidade.

Proibida a reprodução total e/ou parcial.

© Copyright UBC 2017


A Braz Cubas

A Braz Cubas

Nascida em 1940, na cidade de Mogi das Cruzes, a Braz Cubas, que iniciou suas
atividades com um pequeno curso preparatório, conta hoje com cerca de 20 mil alu-
nos, entre as modalidades presencial e educação a distância.

Ao longo desses 75 anos no mercado, a instituição passou por diversas trans-


formações, abrigando, inclusive, cursos de ginásio, nível médio, comércio, até que
chegou a Faculdade de Direito, em 1965.

O ensino superior, estimulado pela política da educação, cresceu em todo o


País e a Braz Cubas, atendendo às exigências e necessidades do mercado, continuou
a crescer, tanto no aspecto acadêmico, quanto no social, até que em 1985, o Conse-
lho Federal de Educação reconhece a então Federação das Faculdades Braz Cubas
como Universidade.

A importante notícia veio valorizar a região de Mogi das Cruzes e premiar uma
longa carreira de bons serviços prestados à educação brasileira, formando profissio-
nais competentes e capacitados ao mercado de trabalho.

Missão

Valorizar as pessoas, despertando talentos por meio de uma aprendizagem


diferente para desenvolver hoje o ser humano para o amanhã.

Visão

Ser reconhecida como uma instituição de Ensino centrada na aprendizagem.

Valores

Cidadania, humanização, sabedoria, humildade e transparência.

3
Guia de Estudos do Semestre

Guia de Estudos do Semestre

Uma das vantagens em estudar em EaD é que podemos administrar o nosso


próprio tempo. Administrar o próprio tempo é contar com uma boa organização
para se dedicar ao conteúdo de cada disciplina.

Antes de iniciar a sua organização, entenda como as disciplinas do semestre


lhe serão oferecidas.

Você já sabe que em cada semestre terá 5 disciplinas para estudar, correto?
Mas, você não verá as 5 de uma única vez. Para que possa aproveitar ao máximo
cada uma delas, fizemos uma organização, que chamaremos de “Dinâmica das
Disciplinas”.

As 5 disciplinas, que nomearemos como “A”, “B”, “C”, “D” e “E”, foram dividas em
3 blocos.

Em cada bloco você estudará até duas disciplinas em um período de 6 semanas.

Para cada semana você terá um conteúdo a ser estudado, consequentemente


uma atividade a ser desenvolvida. Essas atividades, assim como a sua explicação,
você encontrará em sua plataforma de estudos (AVA), a sua sala de aula virtual.

Vamos entender toda essa dinâmica?

Veja no esquema abaixo a organização do semestre.

Bloco 1
Período Disciplinas Conteúdo a ser estudado
1ª semana AeB Unidade I
2ª semana AeB Unidade II
Avaliação de Verificação
3ª semana AeB
(unidades I e II)
4ª semana AeB Unidade III
5ª semana AeB Unidade IV
Avaliação Presencial
6ª semana AeB
(unidades I, II, III e IV)

5
Guia de Estudos do Semestre

Bloco 2
Período Disciplinas Conteúdo a ser estudado
1ª semana CeD Unidade I
2ª semana CeD Unidade II
Avaliação de Verificação
3ª semana CeD
(unidades I e II)
4ª semana CeD Unidade III
5ª semana CeD Unidade IV
Avaliação Presencial
6ª semana CeD
(unidades I, II, III e IV)

Bloco 3
Período Disciplinas Conteúdo a ser estudado
1ª semana E Unidade I
2ª semana E Unidade II
Avaliação de Verificação
3ª semana E
(unidades I e II)
4ª semana E Unidade III
5ª semana E Unidade IV
Avaliação Presencial
6ª semana E
(unidades I, II, III e IV)

É importante salientar que as informações dos períodos e as disciplinas que


cursará neste semestre estão no “Roteiro de Aula”, disponível em sua Área do Aluno.

Com isso você está preparado para iniciar os estudos!

Lembre-se de que para um bom desempenho, você deverá ter organização e


planejamento, além, claro, de muita disciplina.

Desejamos que tenha um ótimo semestre e conte sempre conosco!

6
Sumário

Sumário

Apresentação 9
O Professor 11
Introdução 13

1Unidade I
Introdução à Linguagem de Programação  15
1.1 A evolução das linguagens de programação 15
1.2 Linguagens procedimentais x Linguagens orientadas a objetos 19
1.3 Linguagens de Scripting 21
1.4 Interpretação versus Compilação 22
1.5 Escolha da linguagem 26
1.6 O ranking das linguagens 29

Referências 32

2Unidade II
Linguagem de Programação Python 35
2.1 O mundo Python 35
2.2 Python e lógica de programação 38
2.3 Primeiros códigos e sintaxes em Python 40
2.3.1 Exibir mensagens e resultados 40
2.3.2 Armazenar em variáveis 43
2.3.3 Receber dados 44
2.4 Mãos à obra – Meu primeiro script em Python 45
2.4.1 Desafio  46

Referências 47

3Unidade III
Python – características e códigos essenciais 49
3.1 Características da linguagem 49
3.2 Por que Python? 52
3.3 Operadores 55
3.4 Funções string 57
3.5 Condições 59
3.6 Mãos à obra – Corretor ortográfico 63
3.7 Mãos à obra - Desafio 64

Referências 65

4Unidade IV
Python – avançando na codificação 67
4.1 Repetições com “while” 67
4.1.1 Cláusulas “break” e “continue” 71
4.2 Repetições com “for” 73
4.3 Repetições aninhadas 76
4.4 Funções 79
4.5 Mão à obra – Cálculo de média 80
4.5.1 Desafio 81
4.6 E agora? O que vem pela frente? 82

Referências 83
Apresentação

Apresentação

Olá aluno(a), que bom que você chegou até aqui! A essas alturas sei que já foi
inserido no universo computacional. Sabe bem diferenciar o mundo do hardware e
o mundo software, entende como o computador funciona internamente, CPU, Me-
mórias, bits e bytes, e mais do que isso, sabe que tudo é uma questão de cálculos e
lógica.

Agora, precisamos avançar, tornar palpável o que anteriormente foi ensaiado


em pseudocódigos, e simulado em testes de mesa. Que tal ver seus programas em
funcionamento? Vê-los executando as funcionalidades para o qual foram criados?
Nossos comandos condicionais, ou mesmo de repetição entrando em ação, ao invés
de SE, que tal IF, ao invés de ENQUANTO, que tal WHILE, ao invés simulação, que tal
compilação e execução?!

Vamos compreender como funcionam as linguagens de programação. Esses


códigos computacionais que tem o poder de dar ordens à máquina. E veremos tam-
bém como essas ordens, a princípio escritas em uma linguagem humana (alto nível),
são transformadas em uma linguagem de máquina (bits com zeros ou uns).

Como funciona esse mercado de desenvolvimento de software? Por que exis-


tem tantas linguagens? Como escolher a melhor para o meu projeto? Como o mer-
cado enxerga essas linguagens e remunera seus profissionais por dominá-las? São
essas perguntas que esse livro didático se propõe a responder na primeira unidade.

Além disso, e muito relevante também, a partir da segunda unidade, toda a


lógica que você aprendeu até então será transformada em aplicações, softwares
prontos para serem utilizados. Você será introduzido ao cenário da programação
através de uma linguagem simples, robusta, sólida e que ocupa sempre as primeiras
posições no ranking das mais utilizadas, a linguagem PYTHON.

Aqui, no livro didático, te daremos embasamento, alicerce para os seus conhe-


cimentos. Em nossas videoaulas faremos juntos, instalaremos os softwares, cons-
truiremos e executaremos os códigos. Na midiateca você crescerá em conhecimento,
saberá mais, tornar-se-á diferenciado dos demais profissionais. E em nossos fóruns
te apoiaremos, daremos direção, suporte e exercitaremos o seu senso crítico.

Podemos começar? Desejo que esse tempo seja proveitoso, que de fato acres-
cente profissionalmente, que te faça crescer, ser um profissional melhor e galgar
suas realizações no mercado de trabalho.

9
A Braz Cubas

Objetivo geral:

• Ensinar a função de uma linguagem de programação;

• Apresentar os tipos de linguagens existentes;

• Explicar como linguagens naturais são transformadas em linguagens


computacionais;

• Mostrar as especificidades do mercado de desenvolvimento de software;

• Apresentar a linguagem Python e suas características;

• Demonstrar como utilizar o ambiente de desenvolvimento (IDE) Python;

• Desenvolver aplicativos em Python.

Competências e Habilidades da Unidade:

• Noção da linguagem que melhor se aplica a um determinado tipo


de necessidade de software;

• Conhecimento do cenário corporativo de desenvolvimento de


software atual e futuro;

• Conversão de pseudocódigos em códigos executáveis;

• Desenvolvimento de softwares com as mais variadas funcionalidades


em Python.

10
O Professor

O Professor

Prof.ª Tassiana Rugoni de Campos

Especialista em Sistemas de Informação com ênfa-


se em Banco de Dados, Geomarketing e Marketing
Direto.

Leciona há 15 anos em diversas disciplinas voltadas


à Tecnologia da Informação, além de atuar corporati-
vamente como coordenadora de projetos específicos
de Banco de Dados e de desenvolvimento de solu-
ções em Business Intelligence.

<https://goo.gl/g4eiyd>

11
Introdução

Introdução

Barack Obama, ex-presidente norte americano, que por oito anos governou
uma das nações mais influentes do nosso globo, disse em um oportuno discurso:

“Todos devem aprender a programar!” (OBAMA, 2013).

O discurso foi feito na abertura da Semana da Educação em Ciência da Compu-


tação dos EUA. Nela, ele foi além, e disse mais:

“Aprender a programar não é só importante para o seu futuro. É importante


para o futuro do país. É por isso que estou pedindo que você se envolva. Não apenas
jogue um novo videogame. Faça um. Não apenas baixe o aplicativo mais novo. Ajude
a criar um. Não apenas jogue no seu celular. Programe o jogo” (OBAMA, 2013).

Esse apelo foi feito dentro de um contexto em que, embora programador seja
uma das profissões mais bem pagas nos Estados Unidos, em 2013 apenas 10% das
escolas ensinavam programação. Percebendo a lacuna, e o quanto um país pode
estar à frente de muitos outros pelo seu poderio tecnológico, ele convocou os jovens
estadunidenses a se tornarem desenvolvedores de sistemas. Será que esse também
não deve ser o nosso apelo nacional?

Aliás, por falar em poderio, um artigo extraído do site da casa branca (whi-
tehouse.gov), intitulado como “Segurança Nacional depende da Inteligência e da mi-
neração de dados”, mostra como as guerras atualmente têm sido travadas através
do âmbito computacional, softwares de inteligência artificial, e algoritmos de máqui-
nas de aprendizagem, rastreiam toda a web, e seus sistemas na nuvem em busca
de ações suspeitas. Ao invés de soldados, são os programadores e os cientistas de
dados, que formam o pelotão principal desse exército. Em uma das frases o autor do
artigo é pragmático em afirmar:

“Alguns especialistas em forças armadas acreditam que a guerra entre as gran-


des nações está se tornando obsoleta e que a nossa defesa no futuro dependerá
muito mais dos oficiais de inteligência com seus bancos de dados do que de tanques
e artilharia” (TURBAN, 2013).

Todas essas afirmações nos conduzem a percepção do quanto a tecnologia


e seus sistemas tornaram-se vitais para a sociedade contemporânea. É um caminho
sem volta, em que não é mais possível imaginar o funcionamento das nossas organi-
zações sem softwares controlando os mais variados processos.

13
Introdução

Comecemos então, com algumas importantes perguntas, quem vai desen-


volver esses softwares? Temos profissionais qualificados o bastante para tantas ne-
cessidades? Que tamanho esse mercado deve atingir? O quão vital será para uma
empresa ou mesmo nação sua capacidade de desenvolvimento de software? Quanto
um profissional envolvido com a confecção ou mesmo gestão do desenvolvimento
de um software irá receber pelo seu trabalho?

Bom, é sempre difícil mensurar, mas quero que pense em números grandes,
e em crescimentos exponenciais!

A propósito, para assistir o vídeo do Obama, ou mesmo ler o artigo da Casa


Branca, confira os links na midiateca.

14
Introdução à Linguagem de Programação Unidade 1

1 Unidade I

Introdução à Linguagem de Programação

1.1 A evolução das linguagens de programação

Pense agora em uma conversa entre duas pessoas. Ela só é possível através de
uma linguagem, que envolve um idioma comum, português, por exemplo, e mais um
conjunto de expressões, sinais e gestos. De modo igual, também é possível conver-
sar com as máquinas para que elas recebam nossas ordens e executem as funções
que desejamos. Máquinas computacionais entendem zeros e uns, as duas condições
de um bit, ligado ou desligado. Logo, para que um software execute um cálculo, ou
armazene um dado, disparamos em linguagem de máquina, uma infinidade de or-
dens, disparadas como você pode ver sendo feito pelo nosso perito desenvolvedor
da imagem:

15
Unidade 1 Introdução à Linguagem de Programação

Figura 1.1 – Programação em Linguagem de Máquina

Disponível em: <https://goo.gl/VXUA6o>. Acesso em: 02/05/2017.

A vida dos programadores na década de 40 não era nada fácil, simples ações
precisavam ser traduzidas através de longos códigos binários, um processo lento,
cansativo e como você pode já imaginar, sujeito a muitos erros. Embora o desenvol-
vedor da figura 1.1 pareça ter um teclado próprio para essa programação, sátiras a
parte, na verdade a codificação era inserida via cartões perfurados, como esse que
começou a ser utilizado em 1950 em computadores eletrônicos da IBM (figura 1.2).
Neles, os estados de 0 ou 1 eram representados pela ausência ou presença de furos:

Figura 1.2 – Cartões perfurados

Disponível em: <https://goo.gl/ZUbvWt>. Acesso em: 02/05/2017.

16
Introdução à Linguagem de Programação Unidade 1

Diante de todas essas dificuldades, os esforços dos desenvolvedores se volta-


ram para construir uma linguagem que fosse mais inteligível, e ainda na década de
50 surge a linguagem de montagem ou Assembly. Nela os símbolos, chamados de re-
presentações mnemônicas, eram de forma prática abreviações que representavam
comandos. Ou seja, ao invés de digitar uma cadeia de zeros e uns, para somar, por
exemplo, o programador utilizava a instrução “ADD”. Assim, ficava mais fácil lembrar
do nome das instruções e mais rápido para digitá-las também. De qualquer forma,
vale mencionar que Assembly, é uma linguagem de baixo nível, muito próxima da
linguagem de máquina, e por isso, ainda complexa. No código abaixo, vemos dois
valores sendo somados, I e J e armazenados em N. Observe que para isso, além
da instrução ADD, o desenvolvedor precisa mencionar em que registrador (lugar na
memória) o valor será armazenado. Quando falamos, portanto, em linguagem de
baixo nível estamos nos referindo a essa necessidade de sermos específicos quanto
a questões básicas para a interação entre o software e o hardware, tais como ende-
reços de memória, e a movimentação dos dados de um local para outro (MOV).

Tabela 1.1 – Cálculo de N= I + J em Assembly

Fonte: TANEMBAUM, 2013.

O Assembly foi um salto importante, mas ainda insuficiente. Era necessário


retirar das mãos do desenvolvedor questões mais burocráticas de controle de har-
dware, para que ele pudesse manter o foco exclusivamente nas funcionalidades da
aplicação a ser desenvolvida. Era preciso deixar de lado os endereços de memória,
os comandos mais primitivos, e utilizar uma linguagem próxima da natural, parecida
com a linguagem cotidiana usada nas conversações, uma linguagem de alto nível. E
foi essa mesmo a classificação que receberam as três novas linguagens criadas na
segunda metade da década de 50:

17
Unidade 1 Introdução à Linguagem de Programação

Fortran Foco em computação científica

Cobol Foco em aplicações comerciais

Lisp Foco em computação simbólica

Todas linguagens de alto nível, ou seja, trabalham com ordens escritas na língua
inglesa, facilmente compreensíveis, e simples de serem lembradas.

Todas linguagens de alto nível, ou seja, trabalham com ordens escritas na lín-
gua inglesa, facilmente compreensíveis, e simples de serem lembradas.

Nos anos e décadas seguintes surgiram várias outras linguagens, compondo


uma série de categorias, cada uma delas com a sua melhor adequação ao tipo de
projeto que se pretendia construir.

São muitas as formas de classificação de uma linguagem. Uma delas refere-se


à geração a qual a linguagem pertence, como você pode observar na tabela 1.2:

Tabela 1.2 – Linguagens e Suas Gerações

Geração Nível Exemplos de Linguagens

Representações binárias
1ª - Linguagens de Máquina. Baixo
ou hexadecimais.

2ª - Linguagens de Montagem. Baixo Assembly.

3ª - Linguagens Procedimentais e/ou Orien- Fortran, Cobol, Lisp, C, C#,


tadas a Objetos - Uso de Procedimentos, Alto C++, Python, Java, PHP, Ba-
Funções ou Métodos. sic, Pascal, Ruby, JavaScript.

SQL (Banco de Dados),


4ª - Linguagens para Aplicações Específicas. Alto
PostScript (Relatórios),

XML (Dados, Reports, Telas). Alto Prolog, OPS5.

5ª - Linguagens para Lógica Matemática -


Alto Prolog, OPS5.
Uso em Inteligência Artificial e Linguística.

Fonte: Adaptado de AHO (2008).

18
Introdução à Linguagem de Programação Unidade 1

1.2 Linguagens procedimentais x Linguagens orientadas a


objetos

Uma importante classificação dentro da terceira geração consiste em separar


as linguagens procedimentais das linguagens orientadas a objetos.

Esquema 1.1 – Linguagens Procedimentais

sua codificação é desenvolvida


dentro de uma sequência de
As linguagens procedimentais
comandos, com uma linha de
são conhecidas também como
código após a outra, formando
estruturadas
muitas vezes um longo código
sequencial.

Como relevante desvantagem


temos a dificuldade de reutiliza- Como grande vantagem ela traz
ção do código, uma vez que ele o fato de ser facilmente com-
pode estar dentro de um único preendida, afinal está em uma
bloco com muitas instruções sequência.
misturadas.

São conhecidas como lingua-


gens procedimentais, a lingua-
gem C, Basic, Pascal, Fortran,
Cobol, entre outras.

Uma linguagem comumente utilizada como estruturada pode também ser


pensada em termos de orientação a objeto. É o caso do PHP ou mesmo do
Python que ainda veremos em detalhes nas próximas unidades. Elas são
conhecidas como multiparadigma.

19
Unidade 1 Introdução à Linguagem de Programação

Esquema 1.2 – Linguagens orientadas a objetos

Já na orientação a objetos, como A POO (Programação Orientada


sugere o nome, os programas a Objeto), é uma forma de pro-
consistem em uma coleção de duzir seu software aproximan-
objetos que interagem uns com do-se da organização do mundo
os outros. real.

Por exemplo, pense em um


E também está passível a rea-
objeto chamado funcionário, ele
lizar e sofrer ações, admitir,
por sua vez possui característi-
demitir, promover.
cas, nome, idade, endereço.

Nas linguagens de orientação a


Em um software para gestão de
objetos, como Java e C#, o fun-
RH, por exemplo, classes como
cionário se tornaria uma classe,
funcionário, empresa, conta, se-
suas características seriam as
riam construídas para executar
propriedades, e suas ações re-
suas funcionalidades.
presentariam seus métodos.

A grande vantagem de criar o


código através de objetos, é
poder tê-lo de maneira mais
organizada, separada por blocos
lógicos e, portanto, reutilizáveis
também.

Conheça mais:

O paradigma da orientação a objeto versus o paradigma estruturado foi


simplificado nesse momento, para que você possa ter um primeiro contato
com essas informações. Lá na Midiateca, você tem uma série de artigos
complementares caso deseje se aprofundar no tema. Vale lembrar tam-
bém, que em um semestre futuro, você terá uma disciplina sobre orienta-
ção a objeto com foco em Java para ganhar domínio sobre o assunto.

20
Introdução à Linguagem de Programação Unidade 1

1.3 Linguagens de Scripting

Além da organização por gerações, e dos paradigmas que acabamos de apren-


der, existe também a classificação que enquadra algumas linguagens no conceito de
scripting, justamente por serem compostas por sequências enxutas de comandos
que podem ser executados interativamente um após o outro. Esses scripts possuem
sintaxe simples de ser entendida, são rápidos para aprender e escrever, porque abs-
traem uma série de detalhes de programação. Por isso, essas linguagens, muitas
vezes são chamadas de altíssimo nível.

Os scripts podem ser utilizados para desenvolvimento de aplicações de softwa-


re, páginas web, sistemas operacionais, sistemas embarcados, jogos, entre outros.
Algumas linguagens scripting conhecidas são: Python, PHP, JavaScript, Ruby.

Observe um exemplo comparando um código em orientação a objeto com Java


e o mesmo código em script com Python:

Em Java:

public class OlaMundo {

public void exibaOlaMundo() {

System.out.println(“Olá Mundo”);

Em Python:

print (“Olá Mundo”)

Note, duas importantes diferenças. A primeira está no nível de detalhes e com-


plexidade do código. Em Java é preciso:

utilizar um método
criar a classe declarar o método de saída para exibir
“OlaMundo” “exibaOlaMundo()” a mensagem “Olá
Mundo”.

21
Unidade 1 Introdução à Linguagem de Programação

A classe e o método são abertos e fechados com chaves de forma encadeada.

Já em Python, a função
print dá a ordem para que
a mensagem “Olá Mundo”
seja exibida na tela.

Vamos de 5 linhas de código para uma linha de código.

Além disso, a segunda diferença consiste no fato do comando em Python estar


pronto para ser executado no momento em que for disparado na interface de pro-
gramação. Já a classe Java ainda terá de ser chamada. Tal como foi escrita, ela apenas
ficará guardada dentro do código aguardando um método principal fazer menção
dela.

1.4 Interpretação versus Compilação

Vimos que existe a linguagem que o computador entende (linguagem de má-


quina) e vimos também que existem as linguagens de alto nível que nós humanos
compreendemos por serem compostas de palavras conhecidas da língua inglesa,
como a função print mencionada no exemplo do item 1.3 há pouco.

A questão é que existe uma lacuna, um gap, entre os dois mundos. É como
se um inglês estivesse tentando conversar com um chinês. Aliás, pensemos justa-
mente nesse último exemplo, o que seria possível fazer para que eles pudessem se
entender? Uma boa saída seria colocar um intérprete entre eles, que traduzisse as
palavras do inglês para o chinês e do chinês para o inglês.

22
Introdução à Linguagem de Programação Unidade 1

O mesmo ocorre com a tradução computacional da linguagem de alto nível para


a linguagem de máquina. São inseridos softwares conhecidos como interpretadores,
ou mesmo compiladores, que estabelecem essa ponte de comunicação entre as
duas linguagens, fazendo efetivamente a tradução.

No caso da compilação, ao terminar de escrever um programa (fonte), o desen-


volvedor dispara o processo de tradução, o código escrito em uma linguagem de alto
nível, por exemplo, é inteiramente convertido para a linguagem de máquina. Ao final
do processo, você tem um arquivo executável (.exe no caso do Windows) que é o seu
programa (objeto) já pronto para ser utilizado.

Figura 1.3 – Processo de compilação de um programa

programa fonte

Compilador

programa objeto

Fonte: Adaptado de AHO, 2008.

Esse programa passa a ser autossuficiente, não depende mais do compilador


para funcionar. Basta executá-lo, digitar as informações de entrada e aguardar os
resultados:

Figura 1.4 – Programa compilado em execução

entrada Programa Objeto saída

Fonte: Adaptado de AHO, 2008.

23
Unidade 1 Introdução à Linguagem de Programação

Já na interpretação, a conversão das linhas de código é realizada todas as vezes


que o programa é executado. Linha a linha o código é convertido em tempo de exe-
cução, e nenhum arquivo é gerado. Isso significa que todas as vezes que o programa
for utilizado ele será interpretado.

Figura 1.5 – Programa em interpretação

programa fonte
Interpretador saída
entrada

Fonte: Adaptado de AHO, 2008.

A compilação traz a vantagem da velocidade, como o programa objeto já está


pronto, as entradas e saídas serão mapeadas mais rapidamente. Em contrapartida,
para diagnosticar erros o interpretador é mais eficiente, pois executará sempre linha
a linha o código em tempo real. Além disso, ao alterar um programa fonte, basta exe-
cutá-lo novamente para ver as alterações. No caso da compilação, é preciso excluir o
programa objeto (executável), e criá-lo novamente.

É importante dizer que existem ainda linguagens cuja tradução é híbrida. Parte
compilada e parte interpretada. É o caso da linguagem Java. Na primeira tradução,
o programa fonte Java é compilado e transformado em um programa intermediário
conhecido como bytecodes. Na segunda tradução, os bytecodes são lidos por um
interpretador chamado de máquina virtual.

E qual a seria a vantagem desse tipo de tradução?

O grande benefício é que para cada arquitetura computacional e sistema ope-


racional existe um compilador específico. O que significa que um programa compila-
do em Linux, não irá executar no Windows, por exemplo. Com a máquina virtual, os
códigos Java tornam-se universais, ou seja, uma vez compilados os bytecodes, eles
podem ser interpretados em qualquer sistema. Como desvantagem, temos um pro-
cesso compilação/tradução mais lento.

24
Introdução à Linguagem de Programação Unidade 1

Figura 1.6 – Tradução Híbrida

programa fonte

Tradutor

código intermediária
Máquina
saída
entrada Virtual

Fonte: Adaptado de AHO, 2008.

A compilação ou interpretação é uma escolha do projetista que criou a lin-


guagem. Veja na tabela abaixo como algumas das linguagens mais conhecidas são
traduzidas:

Tabela 1.3 – Tipo de Tradução das Linguagens

Linguagem Tipo de Tradução

C Compilação

C++ Compilação

C# Híbrida

Java Híbrida

Cobol Compilação

PHP Interpretação

Python Interpretação

JavaScript Interpretação

25
Unidade 1 Introdução à Linguagem de Programação

Basic Interpretação

Pascal Compilação

ASP Interpretação

SQL Interpretação

Fonte: Elaborada pela autora.

1.5 Escolha da linguagem

Afinal, qual linguagem devo escolher para o meu projeto? Chegamos a um


ponto central da nossa discussão. Conhecer as características das linguagens nos dá
embasamento justamente para fazermos a combinação entre uma necessidade de
software e a melhor linguagem para supri-la.

É evidente que esta é uma discussão polêmica, que depende da experiência do


programador e que talvez envolva preferências muito particulares. Contudo, existem
algumas percepções que são um consenso. Seguiremos com essas. Vamos checar as
possíveis necessidades que comumente surgem:

Quero iniciar em programação, por qual linguagem devo


começar?

Linguagens estruturadas (procedimentais ou procedurais) são


mais simples de serem compreendidas, algumas delas se parecem
com os pseudocódigos aprendidos em lógica de programação.

Uma linguagem muito próxima do pseudocódigo e bem simples é


o Python. Além dele, a linguagem C também é uma opção, embora
seja mais complexa.

26
Introdução à Linguagem de Programação Unidade 1

Vou desenvolver para plataforma Web, quais opções tenho?

As opções mais conhecidas e, portanto, para as quais você encontra


mais suporte de material didático e treinamentos disponíveis são:
PHP, ASP e .net. Para apresentação da página também é importan-
te conhecer HTML, CSS e JavaScript.

Quero criar Apps para tablets e celulares, o que devo utilizar?

Para Android, devo utilizar Java. Para iOS Swift. E para Windows Mo-
bile Visual C#.

Vou criar uma aplicação comercial, um sistema de controle


de produção, por exemplo, para rodar em ambiente Desktop,
qual linguagem escolho?

O C++ seria uma excelente opção, por ser portável e ter ótimas in-
terfaces de programação para Desktop. Uma segunda opção seria o
C# ou mesmo o Java, ambas orientadas a objeto.

Quero programar softwares mais sofisticados que envolvam


controle de hardware, como os que foram utilizados para de-
senvolver os sistemas operacionais.

Boa parte dos sistemas operacionais foram desenvolvidos ao me-


nos em parte pela linguagem C. Além do C, o Linux, por exemplo,
utiliza também o Python e o Windows o C++.

E para Banco de Dados, que linguagem posso usar?

Para bancos de dados relacionais o que temos de mais tradicional


é o SQL ou o PL/SQL, ambos bem parecidos.

27
Unidade 1 Introdução à Linguagem de Programação

Qual linguagem escolho para Jogos?


Uma das mais utilizadas é o C++. Outras como C#, Python, HTML5 +
JavaScript, e Java, também podem aparecer na sua lista de opções.

Muito bem, quero avançar para inteligência artificial, má-


quinas de aprendizagem, reconhecimento de padrões. Algo
parecido com o Watson, o sistema cognitivo da IBM. Que ca-
minho devo seguir?
Prolog é uma ótima opção. Junto dela pode vir também os já men-
cionados, Java, C++, Python e Ruby. Ou os inéditos em nosso mate-
rial, Go (do Google), R, Scala e Lua.

É preciso diferenciar linguagem de programação de ambiente de


desenvolvimento (IDE). Para cada linguagem que acabamos de conhecer
existe um software de programação, muitas vezes visual, que facilita a
aplicação da linguagem por oferecer recursos de autocompletar o códi-
go, marcá-lo com cores diferentes, apontar bugs entre outras funções.
Se você vai utilizar a linguagem Java, por exemplo, pode escolher o am-
biente Eclipse ou o NetBeans. Para desenvolver Apps Android com Java,
pode ser também via Eclipse ou mesmo com o Android Studio. O SQL
você aplica dentro do SQL Server da Microsoft e o PL/SQL dentro do Ora-
cle Database. O mais importante é conhecer a linguagem. Depois disso,
escolher o ambiente (IDE) pode ser resolvido com uma simples pesquisa.

Conheça mais:

Ficou curioso em relação ao Watson da IBM e sua computação cogni-


tiva? Na Midiateca você encontrará uma coleção de vídeos (Websérie)
da IBM em parceria com o Olhar Digital contando em detalhes como
tudo funciona. Prepara-se para o futuro da programação!

28
Introdução à Linguagem de Programação Unidade 1

1.6 O ranking das linguagens

Existem algumas métricas quanto ao uso das linguagens que podem nos dar
uma noção de relevância e popularidade. Um desses recursos é o índice TIOBE. Seu
mecanismo consiste em rastrear os sites de busca mais relevantes e medir a quanti-
dade de vezes que uma linguagem é pesquisada na web.

Na tabela abaixo, vemos as 10 linguagens mais buscadas em 2017 e suas posi-


ções no ranking também em 2016.

Tabela 1.4 – Linguagens mais utilizadas em 2017

Disponível em: <https://www.tiobe.com/tiobe-index/>. Acesso em: 03/05/2017.

Além disso, podemos visualizar a posição no ranking de busca das principais


linguagens ao longo dos anos:

29
Unidade 1 Introdução à Linguagem de Programação

Tabela 1.5 – Ranking das Linguagens ao longo dos anos

Disponível em: <https://www.tiobe.com/tiobe-index/>. Acesso em: 03/05/2017.

Ou ainda, saber qual foi a linguagem que teve o maior aumento de buscas por
ano:

Tabela 1.6 – Linguagem mais importante em cada ano

Disponível em: <https://www.tiobe.com/tiobe-index/>. Acesso em: 03/05/2017.

30
Introdução à Linguagem de Programação Unidade 1

Além do índice TIOBE, temos também informações vindas do GitHub. Ele é um


repositório na nuvem onde você pode subir suas codificações, gerenciá-las e com-
partilhar seus avanços com outros desenvolvedores. Em 2016, o GitHub exibiu em
quais linguagens estavam os códigos abertos que mais foram armazenados. E aí está
também a lista:

Infográfico 1.1 – Linguagens mais armazenadas no GitHub

Disponível em: <https://octoverse.github.com/>. Acesso em: 04/05/2017.

Conheça mais:

Quais são as linguagens mais bem pagas do mercado? Ficou curioso?!


Dê uma olhada nesses números, acessando o link de uma matéria so-
bre esse assunto, disponível na Midiateca.

31
Unidade 1 Introdução à Linguagem de Programação

Aprendemos que:

Linguagens de programação são instruções em um idioma inteligível,


geralmente inglês, que dão ordens aos sistemas computacionais para
que diversas funcionalidades possam ser executadas. No entanto,
para que de fato um computador entenda essas ordens, elas precisam
ser convertidas do que chamamos de alto nível para o baixo nível (lin-
guagem de máquina). Essa tradução é feita pelo compilador ou pelo
interpretador. O compilador gera um novo arquivo independente, já
o interpretador precisa ser executado sempre que um programa for
iniciado. Existem muitos tipos de linguagem e muitas classificações
(procedimentais, orientada a objetos, scripting, multiparadigma, tra-
dução híbrida). E para cada tipo de necessidade temos uma lista das
linguagens mais utilizadas no mercado para termos um norte de qual
linguagem escolher no início de um projeto de software.

Referências

ABILIO, I. Programação Orientada a Objetos versus Programação Estruturada.


Disponível em: <http://www.devmedia.com.br/programacao-orientada-a-objetos-
versus-programacao-estruturada/32813>. Acesso em: 02/05/2017.

AHO, A. V.; LAM, M. S.; SETHI, R., ULLMAN, J. D. Compiladores: Princípios, técnicas e
ferramentas. 2. ed. São Paulo: Pearson Addison-Wesley, 2008.

GITHUB. The state of the Octoverse 2016. Disponível em: < https://octoverse.github.
com/>. Acesso em: 04/05/2017.

MEMORIAINFO. Cartões Perfurados. Disponível em: <http://www.memoriainfo.furg.


br/index.php/acervo/cartoes>. Acesso em: 02/05/2017.

MORIMOTO, C. E. Linguagens de programação. Disponível em: < http://www.hard-


ware.com.br/artigos/linguagens/>. Acesso em: 01/05/2017.

PORVIR. É hora de programar para 10 milhões de alunos nos EUA. Disponível


em: <http://porvir.org/e-hora-de-programar-para-10-milhoes-de-alunos-nos-eua/>.
Acesso em: 01/05/2017.

SOLDERA, J. POO: reusabilidade e eficiência em seu código. Disponível em: < http://
www.devmedia.com.br/poo-reusabilidade-e-eficiencia-em-seu-codigo/31463>. Aces-

32
Introdução à Linguagem de Programação Unidade 1

so em: 02/05/2017.

TANENBAUM, A.S.; AUSTIN, T. Organização estruturada de computadores. Sexta


edição. São Paulo: Pearson Prentice Hall, 2013.

TIOBE. TIOBE Index for April 2017. Disponível em: <https://www.tiobe.com/tiobe-in-


dex/>. Acesso em: 01/05/2017.

33
Linguagem de Programação Python A Unidade
Braz Cubas
2

Unidade II
2

Linguagem de Programação Python

2.1 O mundo Python

Muito bem, precioso (a) aluno (a), chegar até aqui indica que você adquiriu
bons fundamentos sobre linguagens de programação e já está pronto (a) para,
finalmente, começar a escrever seus primeiros códigos. Daqui a algumas páginas
você será oficialmente um Pythonist. Estranho esse termo, não é mesmo? Pois é,
você precisa saber que na cultura python existe termo para tudo, e que por mais geek
que isso possa parecer, na verdade, é um bom sinal. Indica que os desenvolvedores
nessa linguagem são amantes do que fazem, grandes entusiastas, e que esse é um
caminho sem volta. Você, também, quando menos esperar, fará parte de tudo isso.

Por falar em geek, Guido Van Rossum, um holandês nascido em 1956, que
trabalhava no CWI (em português, Centro de Matemática e Ciência da Computação)
em Amsterdã, local onde linguagens como o ABC e o Algol 68 foram desenvolvidas,
percebeu que no final da década de 80, início de 90, precisava de algo que fosse
simples, produtivo, mas robusto. Foi quando iniciou o desenvolvimento do Python.

35
A Unidade
Braz Cubas
2 Linguagem de Programação Python

Figura 2.1 – Guido van Rossun, criador da linguagem Pyhon

Disponível em:< https://twitter.com/gvanrossum>. Acesso em:06/06/2017.

No início, não havia muitas possibilidades de compartilhamento, e Guido


carregava consigo fitas magnéticas para entregar a quem tivesse interesse em
conhecer a linguagem. Passado algum tempo, o Python começou a receber
investimentos da norte-americana DARPA (em português, Agência de Projetos de
Pesquisa Avançada de Defesa), o que fez efetivamente a linguagem ganhar espaço
no cenário da programação.

À medida que Guido mudava de projeto, ele levava o Python consigo. Passou
pela start up BeOpen.Com, pela Zope, um bom tempo na Google, e recentemente
foi para o Dropbox. Para que a linguagem estivesse dentro de um ambiente
colaborativo, como se faz necessário em tudo que é open source, foi criado o site
python.org e a PSF (Python Software Foundation), uma organização sem fins lucrativos
que visa promover e proteger a linguagem, por meio de uma série de patrocinadores
importantes, tais como Google, Microsoft, Red Hat, entre outros. Atualmente, o Python
está na sua versão 3.6.1, e ocupa a quinta posição na maioria das classificações que
mensuram as linguagens mais utilizadas. É uma linguagem de propósito geral, ou
seja, pode ser utilizada para qualquer tipo de finalidade de software. E, embora tenha
sido desenvolvida em uma época em que pouco se falava sobre web e inteligência
artificial, tem sido muito utilizada para atender à essas necessidades.

Pythonic ou Unpythonic, eis a questão! Tudo que combina com as metas do


Projeto Python é conhecido como Pythonic, e o contrário é Unpythonic. Por exemplo,
é super pythonic escrever um código simples e enxuto, criar bibliotecas pequenas
e leves, logo você pode imaginar o que seria uma biblioteca unpythonic... código
extenso...pesada para rodar... estrutura complexa...

36
Linguagem de Programação Python A Unidade
Braz Cubas
2

Biblioteca é um conjunto de códigos criado para resolver problemas


específicos de programação. Uma vez que um programador cria uma
biblioteca, todos que quiserem resolver o mesmo tipo de problema po-
dem aproveitar e utilizá-la em seu software. Temos como exemplo, na
biblioteca padrão do python, o “random”, que ao ser importado para
o código permite que seleções aleatórias sejam feitas. Temos também
o “e-mail” que é uma biblioteca para gerenciamento de mensagens de
correio eletrônico.

Essas boas práticas “pythonicas” ficam bem claras em algo que é conhecido como
o Zen do Phyton. Tim Peters, um programador importante da comunidade, o escreveu
em 1999. São 19 princípios relevantes a serem seguidos. Eles ficam “escondidos”
no interpretador da linguagem, e veremos logo mais nas videoaulas dessa unidade
como encontrá-los. Segue aqui uma tradução livre dessas boas práticas:

Quadro 2.1 – O Zen do Python

01 - Bonito é melhor que feio.


02 - Explícito é melhor que implícito.
03 - Simples é melhor que Complexo.
04 - Complexo é melhor que complicado.
05 - Achatado é melhor que aninhado.
06 - Disperso é melhor que compacto.
07 - Legibilidade conta.
08 - Casos especiais não são especiais o suficiente para quebrar
as regras.
09 - Apesar de praticidade vencer a pureza.
10 - Erros nunca devem passar despercebidos.
11 - A menos que passem explicitamente “despercebidos”.
12 - Diante de ambiguidades, recuse a tentação de deduzir.
13 - Deve haver uma --e preferencialmente só uma-- maneira fácil
de fazer isto.
14 - Embora essa maneira possa não ser óbvia à primeira vista se
você não for holandês.
15 - Agora é melhor do que nunca.
16 - Embora nunca, seja muitas vezes melhor que pra já.
17 - Se a implementação é difícil de explicar, é uma péssima ideia.
18 - Se a implementação é fácil de explicar, pode ser uma boa
ideia.
19 - Namespaces são uma ótima ideia -- vamos fazer mais deles!

Fonte: Elaborado pela autora.

37
A Unidade
Braz Cubas
2 Linguagem de Programação Python

Namespaces são containers, espaços de armazenamento dentro de


um código onde nomes de objetos podem ser definidos. Pense, por
exemplo, que em seu código você criou a variável “soma”. Ela pode ser
global e, portanto, utilizada em qualquer parte do código. Mas, existe
também a possibilidade de restringi-la para ser acessada apenas em
uma porção específica do código, dentro de um namespace. Isso faz
com que o programa fique mais leve e organizado.

E então, você entendeu os princípios? Alguns deles são mais fáceis, e


inclusive aplicáveis a outros assuntos além de programação, outros
entenderemos melhor à medida que formos codificando.

Conheça mais:

O mundo python traz muitas curiosidades. Existem as pycons, confe-


rências sobre a linguagem que acontecem em várias localidades. Dê
uma olhada no link dessa agenda lá em nossa midiateca.

Separamos para você também alguns outros links legais, tais como o
blog do criador do Python e o depoimento de um experiente progra-
mador brasileiro.

Ainda existem muitas características da linguagem que você precisa conhecer,


falaremos mais sobre elas na Unidade III. Porque a partir de agora quero que comece
a ver e testar seus primeiros códigos. Vamos lá?

2.2 Python e lógica de programação

Logo no início de seu curso, você aprendeu lógica de programação, por meio
de fluxos e também de pseudocódigos. Como já compreendido, o objetivo dos
códigos com comandos ainda em português é treinar o raciocínio computacional,

38
Linguagem de Programação Python A Unidade
Braz Cubas
2

em preparo aos códigos passíveis de serem compilados e interpretados já em um


dialeto que o computador possa compreender e obedecer.

Vamos agora comparar um pseudocódigo extraído do livro didático da


Universidade Baz Cubas, de lógica de programação, do professor Rafael Nonato,
com um código em Python pronto para ser utilizado. O objetivo dessa aplicação
é, partindo de duas notas, calcular a média de um aluno e emitir o resultado final
“aprovado” caso a nota seja igual ou superior a 7, ou reprovado, caso contrário.

Quadro 2.2 – Comparação: Pseudocódigo x Código em Python

Fonte: Elaborado pela autora.

E então, o que você observou de mais relevante?

Acredito que a primeira agradável surpresa é que Python é simples o bastante


para se parecer com o pseudocódigo. Ou seja, uma vez que você tenha bons
raciocínios e fundamentos lógicos, a sintaxe da linguagem não será um problema,
e sim uma facilitadora. Ao contarmos as linhas de código, podemos também
observar que Python é até mais enxuto se comparado ao pseudocódigo. Veja, não há
necessidade de marcar o início ou o fim do programa (linhas 3 e 11). E também não é
preciso declarar as variáveis (linha 2), esse é o conceito de tipagem dinâmica no qual
o próprio interpretador descobre o tipo da variável, sem necessidade de declaração
explícita.

39
A Unidade
Braz Cubas
2 Linguagem de Programação Python

Por fim, ao olhar para o comando de decisão, vemos a necessidade de encerrar


as cláusulas condicionais, IF e ELSE com dois pontos (“:”), e deslocar para a direita
(identar), o que está contido dentro das cláusulas. Mas, quanto a isso, não se
preocupe, falaremos com mais calma na próxima unidade.

A partir desse ponto, é importante que você comece a testar os códigos


Python. Assista à videoaula de como instalar o ambiente de desenvol-
vimento da linguagem, o IDLE.

2.3 Primeiros códigos e sintaxes em Python

Veremos, a seguir, as funções essenciais


para construir nossos primeiros códigos.
Aprenderemos a receber dados, exibir
mensagens, armazenar em variáveis e
realizar operações matemáticas.

2.3.1  Exibir mensagens e resultados

Muito bem, é comum ao final de um código, ou de uma execução lógica, ser


necessário exibir resultados na tela para o usuário. Lembra do comando “Escreva”
em pseudocódigo? Aqui, em Python, ele é a função “print”, que exibe números, letras
e caracteres especiais, e tem necessariamente de ser escrito com todas as letras em
minúsculo.

40
Linguagem de Programação Python A Unidade
Braz Cubas
2

Precisamos saber também que toda função em Python vem seguida de


parênteses, e toda mensagem de aspas (simples ou dupla). Veja como fica:

Figura 2.3 – Sintaxe para utilização da função print

Adaptado de: MENEZES, 2014.

Então, se quisermos exibir na tela a mensagem ‘Aprendendo a usar a função


print!!!’, podemos fazer da seguinte forma:

Figura 2.4 – Código no IDLE do Python para exibição de mensagem

Fonte: Elaborada pela autora.

Nada também nos impede de exibirmos números:

>>>
>>> print (`2017`)
2017
>>>>

Ou seja, sempre que um conteúdo estiver entre aspas, vai ser entendido como
uma mensagem e exibido de forma literal, tal como foi escrito.

41
A Unidade
Braz Cubas
2 Linguagem de Programação Python

Contudo, podemos exibir resultados de cálculos também, e então já não


estamos mais falando de mensagens, o interpretador precisa saber que esperamos
que ele trate os valores como numéricos de fato, e os manipule para dar o resultado
esperado. Para tal, basta removermos as aspas:

>>>
>>> print (10+10)
20
>>>>

Mas, o que aconteceria se mantivéssemos as aspas na expressão inteira?

>>>
>>> print (`10+10`)
10+10
>>>>

Ou ainda se as deixássemos apenas nos números?

>>>
>>> print (`10`+`10`)
1010
>>>>

Você compreendeu a diferença? Números somente são passíveis de cálculos


ao serem utilizados sem aspas. Caso as aspas sejam colocadas, então eles são
entendidos como mensagens e exibidos de forma literal. No segundo caso, como
o operador de adição ficou fora das aspas, o interpretador entendeu que deveria
concatenar os números, ou seja, colocá-los um do lado do outro.

Dica de Leitura:

• Praticar gera mais fixação e aprendizado do que simplesmente ob-


servar. Teste no IDLE todos os blocos de código aprendidos. Assim,
você estará mais familiarizado com a linguagem e pronto para
avançar!

42
Linguagem de Programação Python A Unidade
Braz Cubas
2

2.3.2  Armazenar em variáveis

Variáveis são espaços na memória, nomeados e reservados para guardar


valores enquanto o programa estiver em funcionamento. Vamos imaginar que a
memória do computador é uma estante repleta de prateleiras, para localizar um
determinado livro precisamos então nomear as prateleiras, a fim de podemos dizer:
“o livro que você procura se encontra na prateleira a”, ou ainda, “guarde o livro na
prateleira b”. Analogamente, podemos dizer em Python, que guardaremos um valor,
seja ele texto ou numérico, em um espaço (variável) chamado “a”, que funciona como
uma estante de armazenamento. O ato de guardar um valor em um espaço dessa
“estante”, é representado pelo símbolo de igualdade: a = valor (lê-se “a recebe valor).

Logo, podemos refazer o código que testamos há pouco para exibir o resultado
da operação 10 + 10, armazenando os valores a serem somados em variáveis:

>>>
>>> a=10
>>> b=10
>>> print (a+b)
20
>>>>

Pense que, ao invés de 10, a variável, justamente em função de seu nome, está
pronta para receber qualquer tipo de valor, e pode ser utilizada em qualquer parte
do código, basta fazermos referência ao seu nome. Em nosso exemplo, parece uma
mudança simples, de pouco impacto, contudo, quero lembrá-lo(a) que códigos de
softwares mais robustos, como o Word, por exemplo, chegam a ter milhões de linhas
de comandos. E que em uma situação hipotética em que a operação 10+10 apareça
muitas vezes no código, em caso de necessidade de alteração, é muito mais prático
simplesmente alterar o início do código mudando o valor que “a” e “b” recebem, do
que localizar as linhas em que a soma acontece e alterar uma a uma.

Além disso, com variáveis, um usuário pode informar o valor que desejar, e
alterar esse valor sempre que voltar a utilizar um programa. Vejamos como seria a
sintaxe para receber valores via teclado em variáveis na próxima subunidade.

43
A Unidade
Braz Cubas
2 Linguagem de Programação Python

2.3.3  Receber dados

A função “input” abre na tela um espaço para que o usuário do programa possa
digitar o valor que desejar. Vamos simular a situação de um questionário, em que
perguntamos nome e idade. Veremos primeiro o script e depois o programa em
funcionamento:

Figura 2.5 – Código no IDLE para receber conteúdo via input

Fonte: Elaborada pela autora.

Figura 2.6 – Execução do código com o questionário via IDLE.

Fonte: Elaborada pela autora.

Observe que, utilizando variáveis, via input, e exibindo


através do print, conseguimos um código completamente
dinâmico, passível de receber e exibir qualquer valor desejado.

Agora vejamos uma situação em que ao invés de “textos”


sejam digitados números. O objetivo do próximo programa é
multiplicar dois valores através do operador “*”:

44
Linguagem de Programação Python A Unidade
Braz Cubas
2

Figura 2.7 – Código no IDLE para receber valores numéricos e realizar a multiplicação.

Fonte: Elaborada pela autora.

Figura 2.8 – Execução do código de multiplicação via IDLE.

Fonte: Elaborada pela autora.

Note que antes do input é necessário fazer um o acréscimo da função “float”,


convertendo o valor digitado que por padrão é recebido como um texto, para um
valor em ponto flutuante, e, portanto, além de numérico, com casas decimais. Caso
desejássemos fazer a conversão numérica para valores inteiros, deveríamos utilizar
a função “int”. Observe também, que por padrão devemos usar o ponto no lugar da
vírgula para iniciarmos as casas decimais.

Algumas boas práticas são importantes para evitar erro em nossos có-
digos. Assista à videoaula sobre o uso do IDLE, na qual aproveitamos
para dar algumas dicas quanto ao uso de espaço, maiúsculo/minús-
culo, nomes de variáveis, entre outros macetes.

2.4 Mãos à obra – Meu primeiro script em Python

Vamos construir nosso primeiro programa para dar suporte a uma locadora
de veículos. Em seu modelo de negócios a locadora cobra o valor da diária do veículo

45
A Unidade
Braz Cubas
2 Linguagem de Programação Python

(modelo básico), que é de 40 reais e mais 45 centavos por quilômetro rodado.


Devemos então criar uma calculadora que, uma vez informado o total de dias em
que o locatário ficou com o carro e o total de quilômetros que ele rodou, calcule o
valor final a ser pago pelo cliente.

De maneira incialmente simples, o código deve ficar da seguinte forma:

Figura 2.9 – Código no IDLE para cálculo de locação de veículo.

Fonte: Elaborada pela autora.

Procure reproduzi-lo! Temos uma videoaula mostrando o seu funcio-


namento, confira no AVA.

2.4.1  Desafio

Vamos melhorar nossa calculadora de tarifas?

Acrescente as seguintes funcionalidades:

- Permita que o valor da diária e o valor por quilômetro rodado


também sejam informados pelo usuário;

- Mostre ao cliente o quanto ele está pagando em impostos.


Calcule 15% sobre o valor total.

- No final, ao exibir o valor total, coloque “R$” na frente, e exiba


a mensagem deste modo: “Valor Total a ser pago R$XX.X, já
incluso R$XX.X de impostos”.

46
Linguagem de Programação Python A Unidade
Braz Cubas
2

Conheça mais:

Na midiateca temos o exemplo de um código que faz o cálculo de des-


pesas domésticas para lhe auxiliar na resolução do desafio.

Tente reproduzir o código adicionando os ajustes. Faça pesquisas con-


siderando nossas referências e outros materiais didáticos sólidos que
encontrar. Por fim, confira se sua codificação está correta, assistindo
à videoaula que responde ao desafio. Não olhe a resposta sem antes
tentar fazer. Esse esforço aperfeiçoa seu raciocínio e produz fixação
de conceitos!

Aprendemos que:

O Python foi criado no final da década de 80 pelo holandês Guido


Van Rossum, enquanto ele buscava combinar uma linguagem que
fosse simples e poderosa, o que pode parecer paradoxal, mas Guido
conseguiu. Por ser open source, ela possui uma comunidade de de-
senvolvedores engajada e entusiasta, que investe no crescimento da
linguagem. Nesse primeiro momento, observamos que Python é muito
parecido com pseudocódigo, facilitando bastante a vida do progra-
mador. Para iniciar as primeiras codificações aprendemos as funções
“print” e “input”, e vimos como aplicá-las com o armazenamento por
meio de variáveis.

Referências

BORGES, Luiz Eduardo. Python para Desenvolvedores. 3. ed. São Paulo: Novatec,
2014.

LUTZ, Mark. Aprendendendo Python. 2. ed. Porto Alegre: Bookman, 2007.

MAGNUN. A História do Python. Disponível em: <http://mindbending.org/pt/a-his-


toria-do-python>. Acesso em: 06/06/2017.

MENEZES, Nilo N. C. Indrodução à Programação com Python: Algoritmos e lógica


de programação para iniciantes. 2. ed. São Paulo: Novatec, 2014.

47
A Unidade
Braz Cubas
2 Linguagem de Programação Python

PSF. Um breve passeio pela biblioteca padrão. Disponível em: <http://turing.com.


br/pydoc/2.7/tutorial/stdlib.html>. Acesso em: 09/06/2017.

RAMALHO, Luciano. Aprenda a programar. Disponível em: < http://wiki.python.org.


br/DocumentacaoPython?action=AttachFile&do=view&target=Aprenda_a_Progra-
mar-Luciano_Ramalho.pdf>. Acesso em: 06/06/2017.

ROSSUM, Guido Van. Guido van Rossum - Personal Home Page. Disponível em: < ht-
tps://gvanrossum.github.io//>. Acesso em: 06/06/2017.

ROSSUM, Guido Van. Python: a programming language created by a community. Dis-


ponível em: < http://neopythonic.blogspot.com.br/2016/04/kings-day-speech.html>.
Acesso em: 06/06/2017.

SILVA, Gustavo N. Curso de Python. Disponível em: < http://wiki.python.org.br/Do-


cumentacaoPython?action=AttachFile&do=view&target=cursokov.pdf>. Acesso em:
06/06/2017.

48
Python – características e códigos essenciais A Unidade
Braz Cubas
3

Unidade III
3

Python – características e códigos essenciais

3.1 Características da linguagem

Vamos começar pelo nome Python. De onde veio? A princípio somos todos leva-
dos a pensar que faz referência ao réptil da família pythonidade, uma serpente sem
dentes inoculadores de veneno, que aqui no Brasil recebe o nome de píton. Mas, na
realidade, Guido, quando escolheu esse nome estava fazendo referência a uma sé-
rie de humor britânica chamada de “Flying Circus” (em português traduzida para “os
malucos do circo”), e interpretada pelo grupo de comediantes Monty Python no início
da década de 70.

49
A Unidade
Braz Cubas
3 Python – características e códigos essenciais

Figura 3.1 – Série de TV Britânica que inspirou o nome da linguagem.

Disponível em: <http://mindbending.org/pt/a-historia-do-python>. Acesso em: 06/06/2017.

Embora fosse essa a ideia original, e Guido tenha lutado para mantê-la, com o
tempo tornou-se inevitável não associar o nome da linguagem ao animal píton, até
mesmo porque a própria editora O’Reilly, que já tem uma inclinação para colocar
imagens de animais em suas capas, decidiu estampar a serpente na capa de seus
livros sobre o assunto.

Figura 3.2 – Capa do livro “Programming Python” da editora O’Reilly

Disponível em:<https://goo.gl/HNDX1t>. Acesso em: 06/06/2017.

Além da origem do nome, o que mais precisamos saber sobre a linguagem?

50
Python – características e códigos essenciais A Unidade
Braz Cubas
3

Dica de Leitura:

Se necessário, volte na unidade I, subunidade “1.4 – Interpretação ver-


sus Compilação”, e relembre os conceitos.

51
A Unidade
Braz Cubas
3 Python – características e códigos essenciais

Dica de Leitura:

Se necessário, volte na unidade I, subunidade “1.2 – Linguagens pro-


cedimentais x Linguagens orientadas a objetos” e “1.3 – Linguagens de
Scripting”, e relembre os conceitos.

Fique atento! Os conceitos de interpretação, tipagem e scripting serão


demonstrados na prática ao longo das videoaulas da unidade.

3.2 Por que Python?

Porque Python é: gratuito, orientado a objetos, portável,


poderoso, fácil de usar, fácil de aprender, e pode ser integrado

com outras linguagens.

Falando em poder, ele é conhecido por ter “batteries in-


cluded” (baterias inclusas), expressão essa que nos faz lembrar
da inquietação que temos quando compramos um produto, e ansiosos por usá-lo,
abrimos a embalagem e percebemos que ele
precisa de baterias ou mesmo pilhas para fun-
cionar, mas elas não vieram na caixa. Portanto,
uma linguagem com “baterias inclusas” já vem

52
Python – características e códigos essenciais A Unidade
Braz Cubas
3

acompanhada de muitos recursos, pronta para funcionar em diferentes ambientes,


se integrar com outras linguagens, e resolver os mais variados problemas, já com
suas bibliotecas e módulos completos, sem a necessidade de instalar componentes
adicionais.

Além disso, são muitas as áreas que utilizam Python, justamente por ser de
propósito geral, o que significa que pode ser utilizado em scripts web, sistemas desk-
top, jogos, aplicativos mobile, entre outras aplicações. Contudo, vale ressaltar que
por comportar grandes números, seu poderio na execução de cálculos é bastante
relevante, o que a elege como escolha ideal para áreas como a Inteligência Artificial,
Biotecnologia e Computação 3D. A NASA, agência de aeronáutica norte americana,
inclusive, é uma referência no uso de Python.

Softwares importantes foram construídos por meio da linguagem. Suas patro-


cinadoras como a Microsoft, a Google, e mesmo a nacional globo.com utilizam Python
em seus sites e serviços. Os robôs (Crawlers) da Google que varrem a web têm uma
eficiente lógica em Python. Alguns sistemas operacionais importantes no mercado,
como o MacOS, e o Linux já vem com a linguagem instalada e pronta para uso. O
famoso YouTube tem scripts Python em suas engrenagens, assim como o BitTorrent
para baixar arquivos.

Soluções menos conhecidas, contudo, muito importantes, como a Zope e o


Django, ambos para criação e gerenciamento de conteúdo web são feitos em Python.
As reservas de passagem da empresa Air Canadá também são realizadas por um
software construído por meio da linguagem.

Se você já assistiu ao filme Star Wars, precisa saber que a empresa responsável
pela renderização das imagens e cenas, a Industrial Light & Magic, utiliza Python em
suas produções cinematográficas.

O Gimp, similar ao Photoshop, assim como o Blender, para animação 3D, ambos
softwares livres, também estão em Python.

53
A Unidade
Braz Cubas
3 Python – características e códigos essenciais

Figura 3.5 – Game Frets On Fire em Python.

Disponível em:<https://goo.gl/FVLqSf>. Acesso em: 06/06/2017.

E os games? Têm muitos interessantes... Frets on fire para PCs (similar ao Guitar
Hero), Jewel Quest mobile para combinação de jóias, EVE online para exploração espa-
cial, Civilization IV para traçar estratégias, e o BattleField 2 para tiros em primeira pes-
soa, esses dois últimos mais conhecidos e geralmente instalados em computadores
pessoais.

Figura 3.6 – Game BattleField 2 feito em Python

Disponível em:<https://goo.gl/uV74Jq>. Acesso em: 06/06/2017.

Até agora estávamos testando nossos códigos no ambiente padrão do


Python, o IDLE. A partir da Unidade III, quero convidar você a conhe-
cer o IDE (em português, ambiente de desenvolvimento integrado) da
JetBrains, o PyCharm. Com ele, codificar e organizar a programação
ficará bem mais fácil. Assista a videoaula de instalação! E vamos a
partir de então retomar nossos códigos, começando a conhecer os
operadores.

54
Python – características e códigos essenciais A Unidade
Braz Cubas
3

3.3 Operadores

Para cálculos matemáticos, temos uma série de operadores importantes e fre-


quentemente utilizados nos códigos em Python:

Tabela 3.1 – Operadores Matemáticos em Python

Fonte: Elaborada pela autora.

Experimente testar essas operações no interpretador do Python em


PyCharm.

Temos também os operadores relacionais, utilizados, geralmente, para fazer


comparações em comandos condicionais ou mesmo de repetição. Vamos conhecê-
-los:

55
A Unidade
Braz Cubas
3 Python – características e códigos essenciais

Tabela 3.2 – Operadores Relacionais em Python

Fonte: Elaborada pela autora.

E por fim, pode ser também necessário dentro uma programação utilizar ope-
radores lógicos:

Tabela 3.3 – Operadores Lógicos em Python

Fonte: Elaborada pela autora.

56
Python – características e códigos essenciais A Unidade
Braz Cubas
3

A combinação de uma série de operadores dá origem a uma expressão lógica.


Observe no exemplo seguinte que, pela ordem, resolve-se o “not True”, na sequência
o operador “and” e por fim o operador “or”.

Figura 3.7 – Expressão Lógica

Adaptada de: MENEZES, 2014.

Podemos, também, criar expressões combinando operadores lógicos com ope-


radores relacionais. E, nesse caso, deve-se considerar a tabela verdade do operador
lógico para resolver a expressão. Para a figura 3.8, vamos utilizar um salário de 2000
reais com uma idade de 30 anos.

Figura 3.8 – Expressão Lógica com Operadores Relacionais.

Adaptado de: MENEZES, 2014.

3.4 Funções string

Python também oferece uma série de funções para trabalharmos com dados
do tipo texto, o que chamamos de string. A quantidade de caracteres de uma men-
sagem pode ser contada através da função “len”.

57
A Unidade
Braz Cubas
3 Python – características e códigos essenciais

Assim como cada caracter da mensagem pode ser localizado e exibido apenas
fazendo referência à sua posição:

Podemos ainda, localizar a posição inicial de um trecho, palavra ou caracter


dentro de uma mensagem. É importante lembrar que a contagem começa em 0, por-
tanto, para uma mensagem com 20 caracteres os índices vão de 0 a 19.

Ao invés de localizar a posição, é possível apenas confirmar se determinado


trecho existe dentro da mensagem:

58
Python – características e códigos essenciais A Unidade
Braz Cubas
3

Também é possível substituirmos determinados trechos:

E fazermos uma série de checagens via funções que começam com “is”, tais
como:

Conheça mais:

Consulte na documentação oficial da versão atual de Python quais


outras funções strings podem ser utilizadas. O link se encontra na mi-
diateca (ManipulandoStringsComPython)!

3.5 Condições

A exemplo do que você já aprendeu em pseudocódigo, podemos criar desvios


condicionais dentro de nossa programação com o uso da estrutura de decisão “if”
(“se” em pseudocódigo). Em Python, o término da condição precisa ser sinalizado com
dois pontos “:”, e o que está dentro da condição tem de ser deslocado para a direita.
Vejamos a sintaxe do comando:

59
A Unidade
Braz Cubas
3 Python – características e códigos essenciais

if <condição 1>:
<bloco de código para condição satisfeita>
elif <condição 2>:
<bloco de código para condição satisfeita>
elif <condição n>:
<bloco de código para condição satisfeita>
else:
<bloco de código caso nenhuma condição an-
terior tenha sido satisfeita>

Para compreendermos melhor, vamos construir uma aplicação que avalie o


tamanho de uma mensagem para saber se ela poderá ser impressa em apenas uma
linha. Supondo que a linha comporte 80 caracteres e que a mensagem necessite ter
ao menos um caracter.

Figura 3.9 – Script para exibição de mensagem em uma linha (em Pycharm)

Fonte: Elaborada pela autora.

60
Python – características e códigos essenciais A Unidade
Braz Cubas
3

Experimente otimizar o comando if, retirando o operador and. A leitura deve


ser feita do centro para a esquerda, e do centro para a direita. Ou seja, tamanho da
mensagem maior que zero, tamanho da mensagem menor que 81.

Figura 3.10 – Script para exibição de mensagem em uma linha sem operador “and” (em Pycharm)

Fonte: Elaborada pela autora.

Agora, vamos sofisticar um pouco mais nossa aplicação, informando ao usuá-


rio o tamanho excedente para os casos em que a mensagem ocupar mais que 80
caracteres:

Figura 3.11 – Script para exibição de mensagem em uma linha com “elif” (em Pycharm)

Fonte: Elaborada pela autora.

61
A Unidade
Braz Cubas
3 Python – características e códigos essenciais

Por fim, a única opção possível, ainda não descrita no código, é o caso em que
a mensagem vem vazia, com 0 caracteres. Como se trata da última situação possível,
vamos utilizar o comando “else”, que representa o contrário de todas as opções an-
teriores.

Figura 3.12 – Script para exibição de mensagem em uma linha com “else” (em
Pycharm)

Fonte: Elaborada pela autora.

Muito bem, temos então as três situações possíveis (if, elif, else). Sabemos que
as condições são executadas pela ordem em que foram escritas, e caso o interpreta-
dor encontre uma condição verdadeira, ele não irá ler as demais condições. Diante
dessas regras, é possível otimizar mais ainda esse código? Seria possível transformar
a pergunta dupla que é feita no if, em uma pergunta somente? Veja como ficaria:

Figura 3.13 – Script para exibição de mensagem em uma linha otimizado (em Pycharm)

Fonte: Elaborada pela autora.

62
Python – características e códigos essenciais A Unidade
Braz Cubas
3

Você notou? Existem sempre muitas maneiras de resolver um mesmo proble-


ma computacional. Exercite para que você possa encontrar sempre os caminhos
mais simples e de rápida execução!

3.6 Mãos à obra – Corretor ortográfico

Agora que já conhecemos algumas sintaxes essenciais, vamos aplicar nossos


conhecimentos criando um script que permita a localização e a correção de uma pa-
lavra, ortograficamente, escrita errada. Nesse primeiro momento iremos procurar a
palavra “soluçoes” dentro de um parágrafo de nosso livro didático e caso ela exista,
vamos corrigi-la, acrescentando o til à palavra. Ao final, apresentaremos uma men-
sagem informando se a correção foi efetuada.

Utilizaremos a expressão “<porção de texto> in <texto>” que retornará “True”


ou “False”, de acordo com o resultado da busca. Iremos checar se o resultado foi ver-
dadeiro por meio da estrutura condicional “if”, e faremos, se necessário, a correção
da palavra por meio da função “replace”. Caso, a palavra não seja encontrada, exibi-
remos uma mensagem no “else”. Observe a nossa primeira versão do código:

Figura 3.14 – Script para corretor ortográfico (em Pycharm)

Fonte: Elaborada pela autora.

Assista à videoaula “Corretor Ortográfico”, que explica e simula o fun-


cionamento do corretor.

63
A Unidade
Braz Cubas
3 Python – características e códigos essenciais

3.7 Mãos à obra - Desafio

Que tal deixarmos nosso corretor mais dinâmico?

Vamos permitir que o usuário informe o texto no qual a busca será efetuada.
Informe também qual é a palavra que está escrita de modo errado, e qual deve ser
a escrita correta.

Além disso, caso o texto esteja escrito em minúsculo, vamos convertê-lo para
maiúsculo.

Como já combinamos, tente construir o corretor do desafio usando


seus conhecimentos adquiridos até agora, e suas fontes de pesquisa.
Depois, compare o seu código com o que será mostrado na videoaula
sobre o desafio. Não veja a resposta sem antes tentar construir um
script de sua autoria!

Conheça mais:

Acesse na midiateca uma lista de exercícios para treinar as novas fun-


ções, expressões e estruturas aprendidas.

Aprendemos que:

Python é uma linguagem importante no cenário da programação


por possuir características que a destacam de outras linguagens, tais
como, tradução híbrida, tipagem dinâmica/forte e paradigmas múl-
tiplos. Empresas relevantes, como a Google, Microsoft e Globo.com,
patrocinam o desenvolvimento da linguagem, assim como a utilizam
em suas soluções. Operadores relacionais, matemáticos e lógicos po-
dem ser combinados para criar funcionalidades. Para lidar com textos
existe uma variedade de funções strings, que contam caracteres, loca-
lizam trechos, alteram conteúdo, entre outros. Por fim, para situações
de decisão a estrutura, if, elif, else, é bastante eficiente.

64
Python – características e códigos essenciais A Unidade
Braz Cubas
3

Referências

BORGES, Luiz Eduardo. Python para Desenvolvedores. 3. ed. São Paulo: Novatec,
2014.

LUTZ, Mark. Aprendendendo Python. 2. ed. Porto Alegre: Bookman, 2007.

MAGNUN. A História do Python. Disponível em: <http://mindbending.org/pt/a-his-


toria-do-python>. Acesso em: 06/06/2017.

MENEZES, Nilo N. C. Indrodução à Programação com Python: Algoritmos e lógica


de programação para iniciantes. 2. ed. São Paulo: Novatec, 2014.

PSF. Um breve passeio pela biblioteca padrão. Disponível em: <http://turing.com.


br/pydoc/2.7/tutorial/stdlib.html>. Acesso em: 09/06/2017.

RAMALHO, Luciano. Aprenda a programar. Disponível em: < http://wiki.python.org.


br/DocumentacaoPython?action=AttachFile&do=view&target=Aprenda_a_Progra-
mar-Luciano_Ramalho.pdf>. Acesso em: 06/06/2017.

ROSSUM, Guido Van. Guido van Rossum - Personal Home Page. Disponível em: < ht-
tps://gvanrossum.github.io//>. Acesso em: 06/06/2017.

ROSSUM, Guido Van. Python: a programming language created by a community. Dis-


ponível em: < http://neopythonic.blogspot.com.br/2016/04/kings-day-speech.html>.
Acesso em: 06/06/2017.

SILVA, Gustavo N. Curso de Python. Disponível em: < http://wiki.python.org.br/Do-


cumentacaoPython?action=AttachFile&do=view&target=cursokov.pdf>. Acesso em:
06/06/2017.

65
Python – avançando na codificação A Unidade
Braz Cubas
4

4 Unidade IV

Python – avançando na codificação

4.1 Repetições com “while”

Muito bem, chegamos a nossa última unidade, e temos, no entanto, uma série
de comandos/funções ainda para aprendermos. Por isso, o foco exclusivo da unida-
de IV será codificação.

Quero lembrá-lo(a) que na disciplina de lógica de programação, você aprendeu


que na construção de um software surgirão situações em que uma mesma linha de
comando precisará ser repetida inúmeras vezes, e a melhor forma de atender a essa
demanda é lançar mão de uma estrutura lógica de repetição, na qual determinamos
a quantidade de “loops” necessários para uma mesma linha de código.

Pense na necessidade de imprimir, sequencialmente, números. A princípio va-


mos utilizar um intervalo de 1 a 3:

67
A Unidade
Braz Cubas
4 Python – avançando na codificação

Poderíamos ainda, transformar a variável c em um contador, inicializá-la com


1, e incrementá-la de 1 em 1.

Agora, quero que imagine o esforço para trabalharmos com intervalos maio-
res. Suponha que devamos imprimir números de 1 a 1000. Quanto tempo gastaría-
mos digitando duas mil linhas de código? Inviável não é mesmo? Para tal situações, o
ideal é lançarmos mão de uma estrutura que escrita apenas uma vez, force o código
a repetir mil vezes. Lá em lógica, a estrutura chamava-se “enquanto”, aqui o coman-
do correspondente é o “while”, veja sua sintaxe:

Quadro 4.1 – Sintaxe da estrutura de repetição while.

while <condição>:
<bloco de código para condição satisfeita>
else:
<bloco de código a ser executado quando a
condição deixar se ser satisfeita>

Fonte: Elaborado pela autora.

Podemos então, reescrever o nosso código que exibe números de 1 a 3, agora


com a estrutura de repetição:

68
Python – avançando na codificação A Unidade
Braz Cubas
4

E redimensionarmos a nossa condição descrita no “while” para repetições até


que o número 1000 seja alcançado:

Ou mesmo para qualquer outro intervalo necessário:

Observe que nessa versão do código, o último número a ser impresso é in-
formado pelo usuário e armazenado na variável “fim”. Quero chamar a sua atenção
também para uma forma mais enxuta de escrevermos o nosso contador, utilizando
o sinal de mais (+), antes do igual (=): “c += 1”.

Se for necessário, podemos, por exemplo, exibir uma mensagem quando a


condição do laço deixar de ser satisfeita (cláusula “else”). Isso poderia ocorrer na pri-
meira execução, para casos em que o valor da variável “fim” for menor que o valor
inicial da variável “c”. Ou ainda, após a última execução, quando o valor de “c” tornar-
se maior que o valor de “fim”. Veja as duas situações ocorrendo:

69
A Unidade
Braz Cubas
4 Python – avançando na codificação

Figura 4.1 – Simulação da cláusula else para o valor 0 informado.

Fonte: Elaborada pela autora.

Na figura 3.1 o valor do intervalo não satisfez a condição e, por isso, a cláusula
“else” foi acionada. Confira como o interpretador leu o comando, substituindo as va-
riáveis pelos valores informados:

Contudo, mesmo que por um tempo a condição seja satisfeita e os números


exibidos, no momento em que o último valor for impresso, ”c” será maior que “fim”,
e o interpretador pulará o laço e exibirá a mensagem descrita no “else”.

Figura 4.2 – Simulação da cláusula else para o valor 5 informado.

Fonte: Elaborada pela autora.

70
Python – avançando na codificação A Unidade
Braz Cubas
4

4.1.1  Cláusulas “break” e “continue”

Além da sintaxe básica do comando de repetição (while...else) outras opções


podem ser inseridas para interferir na repetição. É o caso da cláusula “break”, utiliza-
da para interromper bruscamente o loop.

Vamos construir uma aplicação que efetue a soma de vários números, con-
forme a necessidade do usuário. Nesse caso, nunca saberemos quantos números
serão informados, por isso, deixaremos a condição ser executada por uma quantida-
de indeterminada de vezes. Essa necessidade pode ser expressa por meio da opção
“True”, dentro do “while”. Veja como ficaria o código:

Dessa forma, o usuário poderá digitar quantos valores desejar, embora, tal
como está composto o código, um problema grave surgirá. A aplicação entrará em
loop infinito e nunca será encerrada, afinal o laço sempre será verdadeiro (“True”).
Para resolver esse problema utilizaremos a cláusula “break”, oferecendo ao usuário
a opção de encerrar o código, a qualquer momento, apenas digitando o valor 0. Ob-
serve:

71
A Unidade
Braz Cubas
4 Python – avançando na codificação

Figura 4.3 – Uso da cláusula “break”.

Fonte: Elaborada pela autora.

Você percebeu que no bloco de código da figura 3.3 não foi necessária
a utilização de um contador? Isso porque o loop está sendo controlado
pela combinação de “True” com “break”. No entanto, vemos o uso de
uma variável parecida com o contador (variável “somar”), pois a cada
repetição, ela é acumulada de si mesma, e somada ao valor digitado
pelo usuário. Esse tipo de variável é conhecido como acumulador.

Também para interferir no fluxo do laço, temos a cláusula “continue”, que faz
com que o interpretador volte para o início do loop imediatamente, sem ter de ler
todas as linhas de código do bloco. Vejamos como funciona, no exemplo a seguir.
Iremos decrementar um contador de 1 em 1, a partir do 11 e até o 0, mas só exibire-
mos os números pares, em caso do número ser ímpar, utilizaremos “continue” para
retornar ao “while” sem executar o “print”:

72
Python – avançando na codificação A Unidade
Braz Cubas
4

Figura 4.4 – Uso da cláusula “continue”.

Fonte: Elaborada pela autora.

Note que, no código da figura 3.4, sempre que um número é diminuído em 1,


verificamos se ele é ímpar (“if c % 2 != 0:”), ou seja, se o resto da divisão por 2 é dife-
rente de zero. Caso seja, utilizaremos a cláusula “continue” para retornar à linha 4, e
reiniciar o “while”. De forma prática, o “continue”, nesse caso, tem o objetivo de não
permitir que a linha 8 seja executada, e consequentemente, evitar que os números
ímpares sejam exibidos.

4.2 Repetições com “for”

Podemos também criar estruturas de repetição através do comando “for”. Você


já aprendeu a utilizá-lo em pseudocódigo, lá ele se chamava “para”. O “for” é indicado
para casos em que o intervalo de repetições é bem definido (para... de... até), e é pos-
sível percorrer item a item do intervalo, como se estivéssemos seguindo a sequência
de uma lista. Seja ela numérica (1,2,3,4,5...), ou string (A, B, C, D, E). Veja sua sintaxe:

73
A Unidade
Braz Cubas
4 Python – avançando na codificação

Quadro 4.2 – Sintaxe da estrutura de repetição while.

for <contador da lista> in <intervalo a ser percorrido>:


<bloco de código para condição satisfeita>
else:
<bloco de código a ser executado quando a condição
deixar de ser satisfeita>

Fonte: Elaborado pela autora.

“while” e “for” são comandos de repetição, em muitos casos um có-


digo escrito em “while” pode ser convertido em “for”. Contudo, para
situações em que não temos a quantidade de repetições bem definida,
o melhor é utilizar o “while”. Já para percorrer listas, ou ranges, se-
quencialmente, o melhor é utilizar o “for”. Assista à videoaula que
compara o uso das duas estruturas de repetição.

Vamos reescrever o primeiro código de repetição que construímos com “while”


para exibir o intervalo de 1 a 3:

Figura 4.5 – Repetição com “for” para uma lista numérica.

Fonte: Elaborada pela autora.

Como já dito anteriormente, a lista pode ser composta por texto:

74
Python – avançando na codificação A Unidade
Braz Cubas
4

Figura 4.6 – Repetição com “for” para uma lista string.

Fonte: Elaborada pela autora.

Podemos, ainda, utilizar, junto do “for”, a função “range”, que estabelece um


intervalo, com valor final e inicial:

Figura 4.7 – Função “range” na repetição com “for”.

Fonte: Elaborada pela autora.

Note que o valor inicial está incluso, mas o valor final não aparece, pela lógica
o cálculo sempre será o valor final menos 1. Ou seja, para um intervalo de 1 a 5 ocor-
rerão 4 repetições.

É possível ainda informarmos apenas o valor final do . Nesse caso, por padrão
o valor inicial será 0. Para o range (5), o contador irá de 0 a 4, executando 5 repetições:

75
A Unidade
Braz Cubas
4 Python – avançando na codificação

Figura 4.8 – Função “range” com intervalo padrão iniciando em 0.

Fonte: Elaborada pela autora.

As cláusulas “break” e “continue” também podem ser utilizadas dentro


do bloco de códigos do “for”, a partir da mesma linha de raciocínio
que aplicamos com o “while”.

4.3 Repetições aninhadas

Existirão situações em que um laço poderá ficar contido dentro de outro. Como
se fossem ponteiros de um relógio, em que uma volta completa do ponteiro menor
(60 minutos) desloca o ponteiro maior em uma unidade de hora. Ou poderíamos
também, comparar o aninhamento de laços com engrenagens, no qual várias voltas
da engrenagem menor geram pequenos movimentos na engrenagem maior.

Pensemos em um exemplo prático. Vamos considerar a necessidade de per-


correr uma lista com três questões (1, 2, 3). Na qual cada questão, por sua vez, tem
5 alternativas (a, b, c, d, e). Teremos, portanto, dois laços, o mais externo irá de 1 a 3,
e dentro dele o laço interno irá de “a” a “e”. Toda vez que o laço interno percorrer o
caminho completo de “a” a “e”, o laço externo avançará para o próximo número de
questão.

76
Python – avançando na codificação A Unidade
Braz Cubas
4

Figura 4.9 – Repetição aninhada com “for”

Fonte: Elaborada pela autora.

Para esse exemplo específico da impressão de questões e suas alternativas, te-


mos claramente os intervalos bem definidos por meio de duas listas, uma numérica
e outra texto. Por isso, o comando “for” é o mais indicado para resolver o problema.
Veja que é possível converter o código para ser interpretado com o “while”, contudo,
ele fica mais longo e mais complexo. Isso porque precisaremos criar o incremento
para os contadores, algo que já vem embutido no “for”, e também teremos de adap-
tar o uso da lista texto, uma vez que o while em sua condição não consegue percor-
rê-la. Iremos guardar a nossa lista em uma variável:

listastring = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’]

Em seguida, dentro do próprio print vamos avançar item a item da lista, de


acordo com o valor do contador “lacointerno”:

77
A Unidade
Braz Cubas
4 Python – avançando na codificação

print(‘alternativa {}’.format(listastring[lacointerno]))

Para o valor 0 em “lacointerno” a letra “a” será exibida. Para o valor 1 em “la-
cointerno” a letra “b” será exibida, E assim sucessivamente, até chegarmos no valor
4, que exibirá a letra “e”.

Analise o código abaixo:

Figura 4.10 – Repetição aninhada com “while”

Fonte: Elaborada pela autora.

78
Python – avançando na codificação A Unidade
Braz Cubas
4

O uso de listas é frequente e bastante útil em Python. Assista à vi-


deoaula que ensina os detalhes de como utilizá-las.

4.4 Funções

Ao longo das unidades nós utilizamos uma série de funções já prontas ofere-
cidas pelo Python: print, input, len, int, float. Todas essas são exemplos de blocos de
códigos que foram construídos e disponibilizados para serem utilizados sempre que
necessário. Isso significa que, alguém se preocupou em criar uma programação que
ordenasse ao computador, por exemplo, escrever resultados na tela, esse desenvol-
vedor programou uma série de linhas de código e deu a ela um nome, nesse caso,
“print”, e nós não temos mais de nos preocuparmos em como o computador faz para
escrever algo na tela. Simplesmente, lançamos mão de uma função já pronta, dentro
de qualquer programa, e sempre que surgir a necessidade. Esse é o objetivo de uma
função, encapsular um bloco de código que seja útil para poder reutilizá-lo.

Agora, é importante que você saiba que também podemos criar as nossas fun-
ções e nomeá-las do modo que mais conveniente nos for. Isso é feito por meio da
instrução “def”, veja sua sintaxe:

Quadro 4.3 – Sintaxe para criação de uma função.

def <nome da função> (valor1, valor2, valor3, valorn)


<códigos>
return <resultado dos códigos>

Fonte: Elaborado pela autora.

Observe que uma função pode receber valores numéricos e textos, ela poderá
trabalhar com esses valores, e na instrução “return” devolver o resultado dos cálcu-
los e processos realizados.

Para exemplificar, vamos criar uma função que some dois números:

79
A Unidade
Braz Cubas
4 Python – avançando na codificação

Agora, vamos utilizá-la dentro de um programa de adição:

Veja, dentro do “print” chamamos a função soma através de seu nome, e pas-
samos dois valores digitados pelo usuário, “a” e “b”. A função soma irá recepcionar
esses valores e guardá-los em “n1” e “n2”. Ela realizará a adição, e devolverá o resul-
tado para ser exibido na tela.

Esse raciocínio pode ser replicado para qualquer outra necessidade. Experi-
mente criar suas próprias funções!

4.5 Mão à obra – Cálculo de média

Consideremos um cenário em que um aluno recebe quatro notas ao longo do


semestre, e para saber sua nota final será necessário calcular a média aritmética das
mesmas.

Nesse momento você deve estar pensando: “Essa é fácil. Vou construir meu
código assim:”

80
Python – avançando na codificação A Unidade
Braz Cubas
4

Sem dúvida, essa seria uma saída possível usando os recursos que aprende-
mos nas unidades anteriores.

Mas, agora, pensando nos comandos de repetição que acabamos de aprender,


e na possibilidade de utilizarmos listas, que tal, ao invés de usarmos o input 4 vezes,
colocá-lo dentro de um loop que repita 4 vezes? E ao invés de utilizarmos quatro
variáveis, armazenarmos esses números em uma lista? Tente reproduzir o código no
seu interpretador Python:

Figura 4.11 – Cálculo da média com repetição e lista.

Fonte: Elaborada pela autora.

4.5.1  Desafio

Que tal transformamos nossa calculadora de médias em uma aplicação mais


completa ainda?

Faça as seguintes melhorias:

• Permita que ela receba notas de mais de um aluno;

81
A Unidade
Braz Cubas
4 Python – avançando na codificação

• Crie uma quebra para o usuário encerrar o uso da calculadora no momento


em que desejar;

• Construa uma função que valide a nota digitada dentro de um intervalo de


0 a 10;

• Codifique um desvio para notas digitadas fora do intervalo. Avise ao usuá-


rio que ele deverá reiniciar a digitação do aluno em questão. E redirecione
a interpretação do código para o início do laço.

Depois de construir a sua própria versão de codificação para o aplica-


tivo, assista à videoaula “Desafio”.

4.6 E agora? O que vem pela frente?

Chegamos ao fim do nosso livro didático, mas, evidentemente, não esgotamos


todas as possibilidades oferecidas pelo Python.

É possível utilizar Python para desenvolvimento web através do Django.

Você pode construir jogos com bibliotecas, tais como, Pygame, Panda 3D e PyO-
gre.

Utilizar um banco de dados para armazenamento com Python permitirá a cons-


trução de uma série de sistemas. Você pode, inclusive, aproveitar seus conhecimen-
tos de MySQL adquiridos na disciplina de Sistemas Web.

Python pode também ser utilizado dentro do paradigma de programação fun-


cional. Ótima para áreas que envolvem inteligência artificial. E por falar nisso, a Goo-
gle tem bibliotecas excelentes para construção de máquinas de aprendizagem em
Python. Você tem interesse de ensinar o computador a pensar? Esse é o caminho...

Por isso, continue estudando, pesquisando, desenvolvendo em Python. Lá na


midiateca temos links e indicações de materiais para cada uma dessas bibliotecas.

Além disso, é possível combinar Python com interface gráfica e desenvolver te-
las amigáveis como front-end dos nossos programas. Preparamos para você uma
videoaula especial sobre interface gráfica. Confira!

Como pode perceber, esse é o só o começo, existe um universo a ser descor-

82
Python – avançando na codificação A Unidade
Braz Cubas
4

tinado diante de seus olhos, vá em frente, há um mercado sedento de excelentes


profissionais lhe esperando.

Aprendemos que:

Os comandos de repetição são úteis para situações em que uma mes-


ma estrutura necessita ser executada muitas vezes. Para repetições
cujos critérios não são bem definidos, utilizamos o “while”. Já para la-
ços com um range preestabelecido, ou com a necessidade de percorrer
o conteúdo de uma lista, fazemos uso do “for”.

Podemos ainda, interferir no fluxo lógico dos loops através das cláu-
sulas “continue” e “break”. Laços aninhados funcionam como um con-
junto de engrenagens que se movem de modo coordenado. Para reúso
de blocos de códigos, devemos criar funções. Python oferece ainda a
possibilidade de desenvolvimento web com o Django, acesso à banco
de dados, programação funcional e criação de jogos.

Referências

BORGES, Luiz Eduardo. Python para Desenvolvedores. 3. ed. São Paulo: Novatec,
2014.

HALTERMAN, Richard L. Learning to program with python. Disponível em: <https://


www.cs.uky.edu/~keen/115/Haltermanpythonbook.pdf>. Acesso em: 30/06/2017.

LUTZ, Mark. Aprendendendo Python. 2. ed. Porto Alegre: Bookman, 2007.

MENEZES, Nilo N. C. Indrodução à Programação com Python: Algoritmos e lógica


de programação para iniciantes. 2. ed. São Paulo: Novatec, 2014.

PSF. Compound statements. Disponível em: <https://docs.python.org/3/reference/


compound_stmts.html?highlight=while#>. Acesso em: 28/06/2017.

RAMALHO, Luciano. Aprenda a programar. Disponível em: < http://wiki.python.org.


br/DocumentacaoPython?action=AttachFile&do=view&target=Aprenda_a_Progra-
mar-Luciano_Ramalho.pdf>. Acesso em: 06/06/2017.

SILVA, Gustavo N. Curso de Python. Disponível em: < http://wiki.python.org.br/Do-


cumentacaoPython?action=AttachFile&do=view&target=cursokov.pdf>. Acesso em:
06/06/2017.

83