1 lógica de programação com python por nilo menezes python 2.7 – requer pygame atualizada em...

130
1 Lógica de Programação Lógica de Programação com Python com Python por Nilo Menezes por Nilo Menezes http://www.nilo.pro.br/python/ Python 2.7 – requer PyGame Python 2.7 – requer PyGame Atualizada em 30/10/2012 Atualizada em 30/10/2012 lo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Upload: internet

Post on 16-Apr-2015

143 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

1

Lógica de ProgramaçãoLógica de Programaçãocom Pythoncom Python

por Nilo Menezespor Nilo Menezes

http://www.nilo.pro.br/python/

Python 2.7 – requer PyGamePython 2.7 – requer PyGameAtualizada em 30/10/2012Atualizada em 30/10/2012

Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 2: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

ObjetivosObjetivos• Introduzir os conceitos de programação• Apresentar as principais estruturas de dados• Construir programas exemplo• Utilizar uma linguagem de programação (Python)

2Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 3: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

VocêVocê• ApresentaçãooNomeoCursooO que já sabe?oO que espera do curso?oAprender lógica para

que?

3Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 4: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Por que programar é difícil?

4Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 5: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

O que fazer ?

5Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 6: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Por que Python?

6Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 7: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Exercício 1Exercício 1

• Faça uma descrição em português de como desligar o computador.

7Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 8: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Uma abordagem Uma abordagem gráficagráfica• A programação de computadores é

intimamente relacionada com a matemática e diversos problemas computacionais.

• Uma abordagem gráfica é sugerida para facilitar a introdução aos principais conceitos.

8Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 9: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

• Para desenhar, precisamos definir um sistema de coordenadas para corretamente identificar os pontos de um desenho.

• Sistema de coordenadas• Utilizaremos daqui para frente coluna e linha

para indicar uma posição.• 5 x 10 significa: coluna 5, linha 10

9

Uma abordagem Uma abordagem gráficagráfica

Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 10: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Uma abordagem Uma abordagem gráficagráfica• Um ponto

ponto(coluna, linha)

• Três pontosponto(1,1)ponto(1,2)ponto(1,3)

10Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 11: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Exercício 2Exercício 2• Faça um programa para desenhar uma linha

vertical numa tela de 5x5

11Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 12: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Exercício 3Exercício 3• Faça um programa para desenhar uma linha

horizontal numa tela de 5x5

12Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 13: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Exercício 4Exercício 4• Faça um programa para desenhar uma linha

diagonal numa tela de 5x5

13Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 14: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Exercício 5Exercício 5• Faça um programa para desenhar um triângulo

14Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 15: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Exercício 6Exercício 6• Faça um programa para desenhar um quadrado

15Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 16: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Exercício 7Exercício 7• Faça um programa para desenhar uma casa em

20x20

16Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 17: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Tipos de DadosTipos de Dados• Uma das principais funções de um programa é a

manipulação de dados. • Para entendermos corretamente como fazê-lo,

precisamos entender os tipos de dados e suas diferenças.

17Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 18: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Tipos de DadosTipos de Dados

• Núméricoo Inteiros (1, 2, 3...)oPonto Flutuante ( 1.14, 3.1415, 5.0)

18Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 19: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Tipo LiteralTipo Literal• Composto por letras e números• Escrito entre aspas

A = “texto”

• Não confundir A com “A”

A é a variável A“A” é o literal A

19Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 20: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Tipos de DadosTipos de Dados• Lógico

o Verdadeiroo Falso

Estes valores também são chamados de booleanos.

20Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 21: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Operadores Operadores AritméticosAritméticos

+ Adição- Subtração

* Multiplicação/ Divisão

• Em expressões mantém-se a prioridade das operações como na matemática.

• Parênteses () podem ser usados para alterar esta ordem.

21Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 22: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Operadores LógicosOperadores LógicosNão

EOu

•Operadores lógicos são utilizados para modificar valores como verdadeiro e falso, criando expressões lógicas.•O resultado das operações é definido pelas chamadas tabelas-verdade de cada operador

22Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 23: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Operador NãoOperador Não

Valor Não Valor

Verdadeiro Falso

Falso Verdadeiro

23Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 24: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Operador EOperador EA B A e B

Verdadeiro Verdadeiro Verdadeiro

Verdadeiro Falso Falso

Falso Verdadeiro Falso

Falso Falso Falso

24Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 25: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Operador OuOperador OuA B A ou B

Verdadeiro Verdadeiro Verdadeiro

Verdadeiro Falso Verdadeiro

Falso Verdadeiro Verdadeiro

Falso Falso Falso

25Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 26: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Prioridade de Prioridade de AvaliaçãoAvaliação• Quando mais de um operador fizer

parte de uma sentença, é necessário seguirmos a seguinte ordem: não, e, ou.

• Para operadores aritméticos, utiliza-se o padrão da matemática:

1) Multiplicação e Divisão2) Adição e Subtração

26Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 27: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Exercício 8Exercício 8• Sendo A verdadeiro e B falso,

resolva:a) A e Bb) B e não Ac) A ou Bd) A e B ou não Be) não B

27Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 28: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Operadores Operadores RelacionaisRelacionais• == Igualdade• > Maior que• < Menor que• >= Maior ou igual• <= Menor ou igual• <> Diferente de

28Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 29: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Prioridade de Prioridade de OperaçõesOperações• Havendo vários tipos de

operadores em um expressão, executam-se nesta ordem:

1. Aritméticos2. Relacionais3. Lógicos

29Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 30: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Exercício 9Exercício 9• Resolva:

a) 5 * 4 < 4 + 3b) 6 * 2 – 1 > 3 * 1c) 9 – 4 / 2 <= 7 + 1 ou 5 * 2 – 3 <>

6d) 9 / 3 == 3 * 3 e 2 * 3 – 1 >= 8

30Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 31: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

VariáveisVariáveis• São nomes usados para representar

valores• Possuem um tipo de dados• Só podem armazenar um valor de cada

vez• Devem ter nomes começando com letras

ou _. Podem conter números, exceto no primeiro caractere

31Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 32: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

AtribuiçãoAtribuição• Variável = expressão• Exemplo:

A = verdadeiroB = 5 * 3C = A e BD = B * A – 2 > 4

• A atribuição é a operação que modifica o valor de uma variável.

• É importante notar que se atribui o resultado da expressão a variável e não a expressão em si.

32Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 33: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

SeqüênciaSeqüência• Uma seqüência de instruções ou comandos se

executa de cima para baixo.

A = 4B = 5C = A + BA = 10

• No final, A vale 10, B vale 5 e C vale 9.

Observe que o valor de C não foi alterado pelo novo valor de A

33Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 34: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Coordenadas RelativasCoordenadas Relativas• Podemos definir um

desenho ou forma através de coordenadas relativas a um ponto. Imagine A,B como sendo as coordenadas de um ponto.

• O ponto ao lado é A+1,B

• O ponto abaixo é A, B+1

34Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 35: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Exercício 10aExercício 10a• Defina os quatro

pontos que formam os cantos de um quadrado usando três variáveis.

• Uma para a linha, outra para a coluna superior esquerda.

• A terceira deve conter o tamanho do lado.

35Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 36: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Exercício 10bExercício 10b• Defina um

triângulo de altura L.

• Defina-o usando A,B como o ponto da esquerda e depois faça para os outros dois pontos

36Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 37: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Exercício 10cExercício 10c

37

• Escreva um programa para desenhar o gráfico ao lado.

• Utilize coordenadas relativas, considerando A,B o primeiro ponto.

• As letras indicam a questão e o ponto que deve ser usado como referência.

Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 38: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

SaídaSaída• Instrução que indica a exibição de informação,

normalmente na tela

Escreva “Alô !!!”• Utilizada também para exibir o conteúdo de

variáveis e o resultado de expressões.

Escreva AEscreva 2 * 5

38Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 39: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

DecisõesDecisões• Decidir o que fazer com base em um

resultado lógico• Consiste na escolha do que fazer,

dependendo de uma condição• Nem tudo segue uma ordem fixa• Presente na maioria dos problemas

39Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 40: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

DecisõesDecisões• A decisão é composta de uma condição e um ou

dois resultados. Um para o caso da condição ser verdadeira e outro caso falso.

Se a > b:Escreva “a é maior que b”

Senão:Escreva “a é menor ou igual a b”

40Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 41: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

RepetiçãoRepetição• Utilizada para delimitar um número de

instruções ou comando que deve ser executado mais de uma vez.

• Utiliza uma condição para determinar se deve continuar a repetir (verdadeiro) ou não (falso).

41Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 42: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Exemplo de repetiçãoExemplo de repetiçãoA = 1Enquanto A < 10:

Escreva A A = A + 1

42Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 43: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

EntradasEntradas• São pontos onde se pede a informação de um

valor

Leia A

43Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 44: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Exercício 11Exercício 11• Escreva um programa que peça 2

números e exiba o maior deles.

44Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 45: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Exercício 12Exercício 12• Escreva um programa que pergunte

um número e escreva a tabuada de multiplicar deste (1 até 10)

• Reescreva o programa anterior, desta vez perguntando o limite inferior e superior da tabela

45Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 46: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Python e LógicaPython e Lógica• Fica mais difícil separar Python de

Lógica• Introdução ao IDLE• Digitando programas

46Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 47: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Expressões LógicasExpressões Lógicas• Em Python, os

operadores relacionais são iguais aos aprendidos em Lógica, exceto pelo fato de estarem escritos em inglês.

• Lembre-se sempre em minúsculas.

Lógica Python

Não not

E and

Ou or

47Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 48: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Operadores Operadores RelacionaisRelacionais

> Maior == Igualdade

< Menor <> Diferente

<= Menor ou igual

!= Diferente

>= Maior ou igual

48Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 49: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Operadores Operadores AritméticosAritméticos

Operadores

* Multiplicação

/ Divisão

+ Adição

- Subtração

** Exponenciação

49Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 50: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

EscrevendoEscrevendoprint “Alô mundo!”

Imprime Alô mundo! na tela

print “O valor de %d x %d é %d” % (3,4,12)

Neste exemplo, %d é como uma lacuna onde preencheremos em ordem. O 3 para o primeiro, 4 para o segundo e 12 para o terceiro.

50Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 51: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

EscrevendoEscrevendo%d só funciona para valores inteiros%s deve ser utilizado para valores literais

print “Seu nome é %s” % (“José”)

Veja que o % aqui é usado apenas para separar a mensagem com máscara dos valores que serão utilizados entre parênteses.

51Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 52: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

EscrevendoEscrevendo

print “Seu nome é %s e você tem %d anos” % (“José”, 18)

52

Seu nome é José e você tem 18 anos

Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 53: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

LendoLendo• A leitura em Python é especial:

C = raw_input(“Digite o valor de C”)

• Digite o valor de C será impresso antes de pedir a digitação do valor.

• raw_input sempre retorna um valor literal

53Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 54: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

LendoLendoValores inteiros:tamanho = input(“Digite o tamanho:”)

OuTamanho = int (raw_input(“Digite o

tamanho:”))

54

Conversão de tipo

Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 55: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

TiposTipos• Utiliza-se a função type para saber o tipo de uma

expressão.print type(1)<type int>print type(2.0)<type ‘float’>print type(“Alô”)<type ‘str’>

55Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 56: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

RepetiçãoRepetição

Lógica Python

A=1enquanto A<5:

escreva AA=A+1

A=1while A<5:

print AA=A+1

56

Bloco a repetir enquanto A<5

Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 57: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

RepetiçãoRepetição• O bloco será repetido enquanto a

condição for verdadeira. • Após a última linha do bloco, a

execução volta para a linha do while onde a condição será novamente avaliada.

57Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 58: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

RepetiçãoRepetição

58

A = 1

A < 5

A = A +1

A

Sim

Não

INÍCIO

FIM

Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 59: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Definindo funçõesDefinindo funções• Você pode definir ou criar suas próprias funções.

def quadrado(a,b,c,d):p = awhile p<c:

ponto(p,b)ponto(p,d)p=p+1

p = bwhile p<d:

ponto(a,p)ponto(c,p)p=p+1

59

Esta linha define o nome da nova função e quais parâmetros ela recebe

Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 60: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Definindo FunçõesDefinindo Funçõesquadrado(10,8,20,15)

quadrado(a,b,c,d)

60

Seria o mesmo que:a = 10b = 8c = 20d = 15

Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 61: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

CoresCores• Em Python, utiliza-se RGB (Red, Green, Blue) para

definirmos as cores.

(255, 0, 0) Vermelho(0, 255, 0) Verde(0, 0, 255) Azul(255,255,0) Amarelo(255,255,255) Branco(0,0,0) Preto

61Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 62: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

CondiçõesCondições• O “se” da lógica vira if

e o senão else.Lógica Python

se a>b:escreva a

senão:escreva b

if a>b:print a

else:print b

62Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 63: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

CondiçõesCondições

63

A>B

A

B

Verdadeiro

Falso

Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 64: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

O utilitário de desenhoO utilitário de desenho• Visite o site:

• http://www.nilo.pro.br/python/• Baixe os arquivos tela.py e graficos.py• tela.py é o programa gráfico em si. • Execute-o. • Uma janela com grade deverá aparecer

64Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 65: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

graficos.pygraficos.py• Este módulo possui uma série de funções que

podem ser utilizadas em seus programas.• Abra-o no IDLE. • Execute com F5• Digite: ponto(1,1)• Um ponto vermelho deve aparecer na tela

65Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 66: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

graficos.pygraficos.py• ponto(x,y)

Exibe um ponto na cor atual na coluna x e linha y

• cor(r,g,b)Altera a cor atual para a definida por r,g,b

(red = vermelho, green = verde, blue = azul)

66Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 67: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

graficos.pygraficos.py• limpa()

Limpa todos os pontos

• limpa(t)Limpa todos os pontos, redefinindo o

gradeado para t x t

67Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 68: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

graficos.pygraficos.py• inicializa()

Estabelece a comunicação com a tela de desenho. Deve ser o dado antes de qualquer outro comando de desenho

• finaliza()Termina a comunicação com a tela de desenho

68Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 69: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Usando o utilitárioUsando o utilitário• Usar a linha de comando é muito interessante no

início, mas gravar seu desenho se torna cada vez mais importante.

• O utilitário gráfico pode ser utilizado em seus programas Python e não apenas pelo interpretador

69Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 70: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Usando o utilitárioUsando o utilitário• Crie um novo programa em Python e digite:

from graficos import *

inicializa()limpa(32)cor(255,255,0)ponto(1,1)finaliza()

70Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 71: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Exercício 12Exercício 12• Crie uma função que desenhe a

partir de uma coordenada (x,y):a) Uma árvoreb) Uma casac) Um sol

71Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 72: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Exercício 13Exercício 13• Faça um programa que desenhe

uma paisagem com as funções do exercício anterior.

• Utilize mais de uma árvore e mais de uma casa em uma tela de 64x64 pontos.

72Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 73: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

ListasListas• Listas são seqüências de valores• Uma lista pode ter tamanho indeterminado• Uma lista pode ser vazia• Representa-se uma lista em Python através de

colchetesA = [ 1, 2, 3]B = [ ]

73Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 74: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Operações com ListasOperações com Listas• Os elementos de uma lista

podem ser referênciados através de um índice, começando com 0 até o último elemento.

B = [1,2,3]print B[0]1print B[2]3

74Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 75: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Operações com ListasOperações com Listas• append(x)

Adiciona um item ao fim da lista.

B.append(5)print B[1,2,3,5]

75Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 76: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Operações com ListasOperações com Listas• len(L)

Imprime o número de elementos da lista L.

C=[10,40,50]print len(c)3

76Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 77: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Operações com ListasOperações com Listas• extend(L)

Concatena duas listas

A = [10, 11, 12]B.extend(A)print B[1,2,3,5,10,11,12]

77Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 78: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Operações com ListasOperações com Listas• insert(x,l)

Insere um elemento l antes da posição x

print B[1,2,3,5,10,11,12]B.insert(3,4)print b[1,2,3,4,5,10,11,12]

78Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 79: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Operações com ListasOperações com Listas• remove(x)

Remove a primeira ocorrência de x na lista. Resulta em erro caso este não exista.

print B[1,2,3,4,5,10,11,12]B.remove(10)print B[1,2,3,4,5,11,12]

79Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 80: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Operações com ListasOperações com Listas• pop(i)

Remove o elemento i da lista. Se usado sem valor pop() retorna o último elemento da lista.

B = [1,2,3,4,5]

B.pop()5print B[1,2,3,4]

80Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 81: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Operações com ListasOperações com Listas• index(x)

Retorna a posição do elemento cujo valor seja igual ao de x.

B = [1,2,3,4,5]B.index(5)4

Retorna um erro caso este não exista

81Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 82: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Operações com ListasOperações com Listas• count(x)

Retorna o número de vezes que x aparece na lista.

C = [1,1,2,2,3,3,3,3]c.count(3)4

82Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 83: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Operações com ListasOperações com Listas• sort()

Ordena os elementos da lista

D = [ 1,9,8,7]D.sort()print D[1,7,8,9]

83Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 84: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Operações com ListasOperações com Listas• reverse()

Inverte a ordem dos elementos da lista.

C = [1,2,3,4,5]C.reverse()print C[5,4,3,2,1]

84Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 85: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Exercício 14Exercício 141. Crie uma lista com números de 1 à 102. Remova o elemento da posição 23. Remova o elemento de valor 54. Acrescente 11 e 12 ao fim da lista5. Acrescente 0 no início da lista6. Exiba o tamanho da lista

85Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 86: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Exercício 15Exercício 15• Escreva um programa para:

o ler e imprimir 8 valores lidos do teclado. o Escrever a média e a soma destes valores. o Imprimir o menor e o maior. o Utilize um menu para:

• 1. inserir valores. 2. Calcular média 3. Calcular soma 4. Calcular o maior 5. calcular o menor. Faça cada opção em um função diferente. Ao calcular, imprima os resultados.

86Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 87: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Tipos variadosTipos variados• Uma lista pode conter elementos

de tipos diferentes. • Exemplo:

F = [ “joão”, 15, “maria”]G = [ 10, 15, 20, True]

87Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 88: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Listas em ListasListas em Listas• Uma lista pode conter outra lista.

F = [ 1, 2, 3, [4,5,6]]print F[3][4,5,6]print len(F(3))3print len(F)4

88Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 89: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Listas em ListasListas em Listas• Para referenciar um valor de

uma lista dentro de outra lista, utiliza-se a mesma notação de listas com mais um índice.

F = [1,2,3,[4,5,6]]print F[3][0]4

89Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 90: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Exercício 16Exercício 16• Faça um programa que utilize

listas para gerenciar uma agenda de telefones. o A agenda deve guardar nome e telefone de

várias pessoas. o Operações a suportar: inclusão, exclusão,

alteração, pesquisa, listagem e ordenação. o Em todos as opções o nome do indivíduo será

utilizado como chave de pesquisa. o Utilize menu.

90Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 91: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Funções com listasFunções com listas• range(tamanho)

Cria uma lista de 0 até o valor especificado em tamanho menos 1.

range(10)[0,1,2,3,4,5,6,7,8,9]

91Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 92: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Funções com listasFunções com listas• range(início, fim)

Cria uma lista iniciando no valor especificado em início e terminando em fim – 1

range(5,10)[5,6,7,8,9]

92Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 93: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Funções com listasFunções com listas• range(inicio, fim,

incremento)Igual à anterior, mas com incremento entre os elementos

range(1,10,2)[1,3,5,7,9]

93Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 94: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Funções com listasFunções com listas• xrange

Idêntica a todas as outras formas de range, porém otimizada para listas grandes.

94Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 95: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

forfor• Estrutura de repetição que percorre os elementos

de uma lista.for elemento in lista:

• Exemplo: Imprimir todos os elementos

for a in range(10): print a

95Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 96: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Usando Listas como Usando Listas como pilhaspilhas• Uma pilha é uma estrutura de dados com

uma política de inclusão e exclusão de elementos bem definida.

• Em pilhas, a inclusão sempre é feita no topo ou fim, assim como as exclusões.

• A estrutura é similar a uma pilha de pratos.

• Coloca-se sempre um sobre o outro e retira-se sempre pelo topo.

96Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 97: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Usando Listas como Usando Listas como pilhaspilhaspilha = [3, 4, 5]pilha.append(6)pilha.append(7)print pilha[3,4,5,6,7]pilha.pop()[3,4,5,6]pilha.pop()[3,4,5]

97Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 98: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Usando listas como Usando listas como filasfilas• Filas são estruturas de dados onde

se insere no fim e retira-se no início.• É uma estrutura similar a uma fila de

cinema. • O primeiro que chega é o primeiro a

entrar. • Os que chegam depois vão para o

fim da fila.

98Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 99: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Usando listas como Usando listas como filasfilas

Fila = [ “João”, “Maria”]Fila.append(“José”) Fila.pop(0)“João”print Fila[ “Maria”, “José”]

99Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 100: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

filterfilter• Formato:

filter (função, lista)

• A função filter aplica a função passada como parâmetro a cada elemento da lista, retornando uma outra lista onde com os elementos cujo retorno de função é verdadeiro.

• Utilizada para filtrar ou selecionar valores.

100Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 101: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

filterfilterdef f(x):

return x % 2 == 0

print filter(f, [0,1,2,3,4,5,6,7,8])[0,2,4,6,8]

101Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 102: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

mapmap• Formato:

map(função, lista)

• map funciona de forma semelhante a filter, porém esta retorna uma lista com o retorno de função aplicada a cada elemento da lista.

• Mais de uma lista pode ser passada como parâmetro. Neste caso, o número de argumentos de função deve ser igual ao de listas.

102Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 103: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

mapmapdef fatorial(x):

if x <=1:return 1

else:return x * fatorial(x-1)

map(fatorial, [1,2,3,4,5])[1, 2, 6, 24, 120]

103Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 104: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

mapmap• Um caso especial de map é passar None como

função. • Neste caso, map retornará uma lista com os

argumentos que seriam passados.

map(None, [1,2,3],[4,5,6])[(1,4), (2,5), (3,6)]

104Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 105: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

reducereduce• Formato:

reduce(função, lista)• Aplica função aos elementos da lista. • Na primeira vez, passa o primeiro e o segundo

elemento. • Nas próximas, o resultado da chamada anterior

com o próximo elemento.

105Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 106: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

reducereducedef mult(x,y):

return x * yreduce(mult, [1,2,3,4,5])120

•Um terceiro parâmetro pode ser passado, indicando o valor inicial.

106Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 107: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

deldel• Del é utilizada para remover um elemento

de uma lista através de seu índice.del lista(x)• Remove o elemento x de listaA = [1,2,3]del a[0]print A[2,3]• Del também pode ser utilizada para apagar

variáveis.

107Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 108: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

TuplasTuplas• Tuplas funcionam como e compartilham muitas

das propriedades de listas, porém tuplas não podem ser alteradas.

• Utilizamos ( ) invés de [] para denotar tuplas.

T = ( 1,2,3 )J = ( “joão”, “maria”, “josé” )

108Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 109: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

TuplasTuplas• Uma tupla vazia é criada por:T = ()• Uma tupla com um elemento exige vírgula após

este:T = ( “joão”, )

109Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 110: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

TuplasTuplas• Tuplas podem ser usadas para atribuições

múltiplas.• Exemplo:

A, B = ( 10, 15 )

• É equivalente a A = 10 e B = 15

110Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 111: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

StringsStrings• Strings podem ser manipuladas como tuplas. • E assim como tuplas não podem ser alteradas.

Nome = “João”print Nome[0]J

111Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 112: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

StringsStringsPara alterar uma String pode-se convertê-la em lista.

S = “João”SL = list(S)print SL[‘J’,’o’,’ã’,’o’]

112Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 113: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

StringsStrings• Para converter uma lista em string, utilize o

método join da string.S = S.join(SL)

• Embora não possamos alterar strings, nada nos impede de criarmos novas.

• S = S + “A”

113Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 114: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

FatiasFatias• Tuplas, listas e strings suportam um tipo de

operação chamado slicing (fatiamento).A = [1,2,3,4,5]print A[0:2][1,2]print A[1:][2,3,4,5]print A[:4][1, 2, 3, 4]

114Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 115: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

FatiasFatias• A notação de fatia é [inicio:fim] sendo início

inclusive, mas fim não.• Isto é, [1:4] inclui o elemento 1, mas não o

elemento 4.• [:] pode ser utilizado para criar uma nova cópia

de string ou lista.• Valores negativos indicam que a contagem se

inicia do fim da seqüência.

115Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 116: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

DicionáriosDicionários• Dicionários são estruturas de dados que

permitem indexar um elemento através de sua chave.

• Dicionários são escritos entre chaves e sempre no formato chave:valor.

• Exemplo:

Telefones = { “nilo”:9717, “joana”:9784}

116Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 117: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

DicionáriosDicionários• Para acessar os valores de um dicionário,

colocamos a chave entre colchetes, com em listas:

print Telefones[“nilo”]9717

117Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 118: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

DicionáriosDicionários• O método has_key pode ser utilizado para verificar

se uma chave existe.Telefones.has_key(“nilo”)TrueTelefones.has_key(“maria”)False• Você também pode obter o mesmo efeito com in:“nilo” in TelefonesTrue“maria” in Telefonesfalse

118Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 119: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

DicionáriosDicionários• Para adicionarmos elementos a um dicionário

basta especificar uma nova chave.

Telefones[“maria”] = 9784

• para listar todas as chaves de um dicionário, utilizamos o método keys() que retorna uma lista.

print Telefones.keys()[“nilo”, “joana”, “maria”]

119Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 120: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

DicionáriosDicionários• Utiliza-se del para remover um elemento de um

dicionário.del Telefones[“nilo”]

• Dicionários podem ser construídos através de uma lista de tuplas e do método dict.

print dict( [ (“nilo”, 9717),(“joana”, 9784)]){ “nilo”: 9717, “joana”:9784 }

120Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 121: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

DicionáriosDicionários• Utiliza-se o método items para retornar uma lista

com tuplas chave, valor.print Telefones.items()[(“nilo”, 9717), (“joana”, 9784)• Utiliza-se o método values para retornar um lista

com os valores.print Telefones.values()[9717, 9784]

121Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 122: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Operações avançadasOperações avançadas• Criação de listas com notação de função (List

comprehensions).

[ x * 2 for x in range(5) ]

• Cria uma lista [0,2,4,6,8]

122Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 123: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Operações Avançadas - Operações Avançadas -

LambdaLambda• Funções lambda são semelhantes a funções, mas

não tem nome e podem ser utilizadas como variável.

F = lambda x: x+5print F(4)9

123Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 124: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

ArquivosArquivos• Arquivos são estruturas de dados armazenadas

em disco.• Em Python, utiliza-se a função open para abrir um

arquivo.

F = open(nome_do_arquivo, modo)print F.readline()F.close()

124Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 125: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

ArquivosArquivos• Modos para abertura de arquivos:

Modo Funçãor Leitura

w Escrita. Apaga caso já exista

a Abre para adicionar ao final (append)

r+ Leitura e escrita

b Indica modo binário125Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 126: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

ArquivosArquivos• Todo arquivo aberto deve ser

fechado com uma chamada a close.

126Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 127: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

ArquivosArquivos• read(x)

Lê um deterninado número de bytes (x) retornando como string.

• readline()Lê e retorna uma linha.

• readlines()Retorna todas as linhas de um arquivo numa lista.

127Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 128: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

ArquivosArquivos• xreadlines()

Semelhante ao xrange, otimizada para ler arquivos muito grandes.

• tell()Retorna a posição corrente no arquivo

• seek(posição, referência)Move o ponteiro do arquivo para posição. Refência (0 início, 1 atual, 2 fim)

128Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 129: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

ExceçõesExceções• Muitas funções em Python fazem o programa

terminar em caso de erro. • Isto acontece porque uma exceção foi gerada.• Exceções não tratadas causam o fim do

programa.

try:programa

except:tratamento

129Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Page 130: 1 Lógica de Programação com Python por Nilo Menezes  Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica

Onde aprender maisOnde aprender mais• Visite o site:

http://www.nilo.pro.br/iprog/

para uma versão atualizada e completa do curso de introdução à programação.

130Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/