Você está na página 1de 130

Lgica de Programao com Python

por Nilo Menezes


http://www.nilo.pro.br/python/ Python 2.7 requer PyGame Atualizada em 30/10/2012

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

Objetivos
Introduzir os conceitos de programao Apresentar as principais estruturas de dados Construir programas exemplo Utilizar uma linguagem de programao (Python)

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

Voc
Apresentao
o Nome o Curso o O que j sabe? o O que espera do curso? o Aprender lgica para que?
Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
3

Por que programar difcil?


Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
4

O que fazer ?
Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
5

Por que Python?


Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
6

Exerccio 1

Faa uma descrio em portugus de como desligar o computador.


Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
7

Uma abordagem grfica


A programao de computadores intimamente relacionada com a matemtica e diversos problemas computacionais. Uma abordagem grfica sugerida para facilitar a introduo aos principais conceitos.

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

Uma abordagem grfica


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 posio. 5 x 10 significa: coluna 5, linha 10

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

Uma abordagem grfica


Um ponto
ponto(coluna, linha)

Trs pontos
ponto(1,1) ponto(1,2) ponto(1,3)

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

10

Exerccio 2
Faa um programa para desenhar uma linha vertical numa tela de 5x5

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

11

Exerccio 3
Faa um programa para desenhar uma linha horizontal numa tela de 5x5

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

12

Exerccio 4
Faa um programa para desenhar uma linha diagonal numa tela de 5x5

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

13

Exerccio 5
Faa um programa para desenhar um tringulo

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

14

Exerccio 6
Faa um programa para desenhar um quadrado

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

15

Exerccio 7
Faa um programa para desenhar uma casa em 20x20

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

16

Tipos de Dados
Uma das principais funes de um programa a manipulao de dados. Para entendermos corretamente como faz-lo, precisamos entender os tipos de dados e suas diferenas.

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

17

Tipos de Dados
Nmrico
o Inteiros (1, 2, 3...) o Ponto Flutuante ( 1.14, 3.1415, 5.0)

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

18

Tipo Literal
Composto por letras e nmeros Escrito entre aspas A = texto
No confundir A com A A a varivel A A o literal A

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

19

Tipos de Dados
Lgico
o Verdadeiro o Falso

Estes valores tambm so chamados de booleanos.

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

20

Operadores Aritmticos
+ Adio - Subtrao * Multiplicao / Diviso
Em expresses mantm-se a prioridade das operaes como na matemtica. Parnteses () podem ser usados para alterar esta ordem.
Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
21

Operadores Lgicos
No E Ou
Operadores lgicos so utilizados para modificar valores como verdadeiro e falso, criando expresses lgicas. O resultado das operaes definido pelas chamadas tabelas-verdade de cada operador

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

22

Operador No
Valor No Valor

Verdadeiro

Falso

Falso

Verdadeiro
23

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

Operador E
A B AeB

Verdadeiro Verdadeiro
Falso Falso

Verdadeiro Falso
Verdadeiro Falso

Verdadeiro Falso
Falso Falso
24

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

Operador Ou
A B A ou B

Verdadeiro Verdadeiro
Falso Falso

Verdadeiro Falso
Verdadeiro Falso

Verdadeiro Verdadeiro
Verdadeiro Falso
25

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

Prioridade de Avaliao
Quando mais de um operador fizer parte de uma sentena, necessrio seguirmos a seguinte ordem: no, e, ou. Para operadores aritmticos, utilizase o padro da matemtica:
1) 2) Multiplicao e Diviso Adio e Subtrao

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

26

Exerccio 8
Sendo A verdadeiro e B falso, resolva:
a) b) c) d) e) AeB B e no A A ou B A e B ou no B no B

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

27

Operadores Relacionais
== > < >= <= <> Igualdade Maior que Menor que Maior ou igual Menor ou igual Diferente de
28

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

Prioridade de Operaes
Havendo vrios tipos de operadores em um expresso, executam-se nesta ordem:
1. Aritmticos 2. Relacionais 3. Lgicos
Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
29

Exerccio 9
Resolva:
a) b) c) d) 5*4<4+3 6*21>3*1 9 4 / 2 <= 7 + 1 ou 5 * 2 3 <> 6 9 / 3 == 3 * 3 e 2 * 3 1 >= 8

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

30

Variveis
So nomes usados para representar valores Possuem um tipo de dados S podem armazenar um valor de cada vez Devem ter nomes comeando com letras ou _. Podem conter nmeros, exceto no primeiro caractere

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

31

Atribuio
Varivel = expresso Exemplo:
A = verdadeiro B=5*3 C=AeB D=B*A2>4

A atribuio a operao que modifica o valor de uma varivel. importante notar que se atribui o resultado da expresso a varivel e no a expresso em si.

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

32

Seqncia
Uma seqncia de instrues ou comandos se executa de cima para baixo.

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


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

Observe que o valor de C no foi alterado pelo novo valor de A

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

33

Coordenadas Relativas
Podemos definir um desenho ou forma atravs 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
Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
34

Exerccio 10a
Defina os quatro pontos que formam os cantos de um quadrado usando trs variveis. Uma para a linha, outra para a coluna superior esquerda. A terceira deve conter o tamanho do lado.
Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
35

Exerccio 10b
Defina um tringulo de altura L. Defina-o usando A,B como o ponto da esquerda e depois faa para os outros dois pontos

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

36

Exerccio 10c
Escreva um programa para desenhar o grfico ao lado. Utilize coordenadas relativas, considerando A,B o primeiro ponto. As letras indicam a questo e o ponto que deve ser usado como referncia.

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

37

Sada
Instruo que indica a exibio de informao, normalmente na tela

Escreva Al !!!
Utilizada tambm para exibir o contedo de variveis e o resultado de expresses.

Escreva A Escreva 2 * 5

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

38

Decises
Decidir o que fazer com base em um resultado lgico Consiste na escolha do que fazer, dependendo de uma condio Nem tudo segue uma ordem fixa Presente na maioria dos problemas

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

39

Decises
A deciso composta de uma condio e um ou dois resultados. Um para o caso da condio ser verdadeira e outro caso falso.

Se a > b:
Escreva a maior que b

Seno:
Escreva a menor ou igual a b

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

40

Repetio
Utilizada para delimitar um nmero de instrues ou comando que deve ser executado mais de uma vez. Utiliza uma condio para determinar se deve continuar a repetir (verdadeiro) ou no (falso).

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

41

Exemplo de repetio
A=1 Enquanto A < 10: Escreva A A=A+1

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

42

Entradas
So pontos onde se pede a informao de um valor
Leia A

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

43

Exerccio 11
Escreva um programa que pea 2 nmeros e exiba o maior deles.

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

44

Exerccio 12
Escreva um programa que pergunte um nmero e escreva a tabuada de multiplicar deste (1 at 10) Reescreva o programa anterior, desta vez perguntando o limite inferior e superior da tabela

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

45

Python e Lgica
Fica mais difcil separar Python de Lgica Introduo ao IDLE Digitando programas

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

46

Expresses Lgicas
Em Python, os operadores relacionais so iguais aos aprendidos em Lgica, exceto pelo fato de estarem escritos em ingls. Lembre-se sempre em minsculas.

Lgica
No E Ou

Python
not and or

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

47

Operadores Relacionais
> Maior < Menor <= Menor ou igual >= Maior ou igual
Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
48

== Igualdade <> Diferente != Diferente

Operadores Aritmticos
Operadores
* Multiplicao

/ +
**

Diviso Adio
Subtrao Exponenciao
49

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

Escrevendo
print 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.

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

50

Escrevendo
%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 mscara dos valores que sero utilizados entre parnteses.

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

51

Escrevendo
print Seu nome %s e voc tem %d anos % (Jos, 18)

Seu nome Jos e voc tem 18 anos

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

52

Lendo
A leitura em Python especial:
C = raw_input(Digite o valor de C) Digite o valor de C ser impresso antes de pedir a digitao do valor. raw_input sempre retorna um valor literal

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

53

Lendo
Valores inteiros: tamanho = input(Digite o tamanho:) Ou Tamanho = int (raw_input(Digite o tamanho:))

Converso de tipo

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

54

Tipos
Utiliza-se a funo type para saber o tipo de uma expresso. print type(1) <type int> print type(2.0) <type float> print type(Al) <type str>

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

55

Repetio
Lgica A=1 enquanto A<5: escreva A A=A+1 Python A=1 while A<5: print A A=A+1

Bloco a repetir enquanto A<5


Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
56

Repetio
O bloco ser repetido enquanto a condio for verdadeira. Aps a ltima linha do bloco, a execuo volta para a linha do while onde a condio ser novamente avaliada.

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

57

Repetio
No

INCIO

A=1

A<5 Sim A

A = A +1 FIM Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/


58

Definindo funes

Voc pode definir ou criar suas prprias funes. def quadrado(a,b,c,d): Esta linha define o nome da nova funo e quais p=a parmetros ela recebe while p<c: ponto(p,b) ponto(p,d) p=p+1 p=b while p<d: ponto(a,p) ponto(c,p) p=p+1
Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
59

Definindo Funes
quadrado(10,8,20,15)
quadrado(a,b,c,d)

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


Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
60

Cores
Em Python, utiliza-se RGB (Red, Green, Blue) para definirmos as cores.

(255, 0, 0) (0, 255, 0) (0, 0, 255) (255,255,0) (255,255,255) (0,0,0)

Vermelho Verde Azul Amarelo Branco Preto

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

61

Condies
O se da lgica vira if e o seno else.

Lgica
se a>b: escreva a seno: escreva b

Python
if a>b: print a else: print b

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

62

Condies
A>B Verdadeiro

Falso B

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

63

O utilitrio de desenho
Visite o site: http://www.nilo.pro.br/python/ Baixe os arquivos tela.py e graficos.py tela.py o programa grfico em si. Execute-o. Uma janela com grade dever aparecer

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

64

graficos.py
Este mdulo possui uma srie de funes 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

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

65

graficos.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)

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

66

graficos.py
limpa()
Limpa todos os pontos

limpa(t)
Limpa todos os pontos, redefinindo o gradeado para t x t

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

67

graficos.py
inicializa()
Estabelece a comunicao com a tela de desenho. Deve ser o dado antes de qualquer outro comando de desenho

finaliza()
Termina a comunicao com a tela de desenho

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

68

Usando o utilitrio
Usar a linha de comando muito interessante no incio, mas gravar seu desenho se torna cada vez mais importante. O utilitrio grfico pode ser utilizado em seus programas Python e no apenas pelo interpretador

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

69

Usando o utilitrio
Crie um novo programa em Python e digite:

from graficos import *

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


Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
70

Exerccio 12
Crie uma funo que desenhe a partir de uma coordenada (x,y):
a) Uma rvore b) Uma casa c) Um sol

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

71

Exerccio 13
Faa um programa que desenhe uma paisagem com as funes do exerccio anterior. Utilize mais de uma rvore e mais de uma casa em uma tela de 64x64 pontos.

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

72

Listas
Listas so seqncias de valores Uma lista pode ter tamanho indeterminado Uma lista pode ser vazia Representa-se uma lista em Python atravs de colchetes A = [ 1, 2, 3] B=[]

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

73

Operaes com Listas


Os elementos de uma lista podem ser refernciados atravs de um ndice, comeando com 0 at o ltimo elemento.
B = [1,2,3] print B[0] 1 print B[2] 3
Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
74

Operaes com Listas


append(x) Adiciona um item ao fim da lista.
B.append(5) print B [1,2,3,5]

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

75

Operaes com Listas


len(L) Imprime o nmero de elementos da lista L.
C=[10,40,50] print len(c) 3

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

76

Operaes com Listas


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

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

77

Operaes com Listas


insert(x,l)
Insere um elemento l antes da posio x
print B [1,2,3,5,10,11,12] B.insert(3,4) print b [1,2,3,4,5,10,11,12]

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

78

Operaes com Listas


remove(x) Remove a primeira ocorrncia de x na lista. Resulta em erro caso este no exista.
print B [1,2,3,4,5,10,11,12] B.remove(10) print B [1,2,3,4,5,11,12]
Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
79

Operaes 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() 5 print B [1,2,3,4]
Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
80

Operaes com Listas


index(x) Retorna a posio do elemento cujo valor seja igual ao de x.
B = [1,2,3,4,5] B.index(5) 4 Retorna um erro caso este no exista

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

81

Operaes com Listas


count(x) Retorna o nmero de vezes que x aparece na lista.
C = [1,1,2,2,3,3,3,3] c.count(3) 4

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

82

Operaes com Listas


sort() Ordena os elementos da lista
D = [ 1,9,8,7] D.sort() print D [1,7,8,9]

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

83

Operaes 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]

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

84

Exerccio 14
1. 2. 3. 4. 5. 6. Crie uma lista com nmeros de 1 10 Remova o elemento da posio 2 Remova o elemento de valor 5 Acrescente 11 e 12 ao fim da lista Acrescente 0 no incio da lista Exiba o tamanho da lista

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

85

Exerccio 15
Escreva um programa para:
o ler e imprimir 8 valores lidos do teclado.
o Escrever a mdia e a soma destes valores. o Imprimir o menor e o maior. o Utilize um menu para: 1. inserir valores. 2. Calcular mdia 3. Calcular soma 4. Calcular o maior 5. calcular o menor. Faa cada opo em um funo diferente. Ao calcular, imprima os resultados.

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

86

Tipos variados
Uma lista pode conter elementos de tipos diferentes. Exemplo:
F = [ joo, 15, maria] G = [ 10, 15, 20, True]

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

87

Listas 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)) 3 print len(F) 4

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

88

Listas em Listas
Para referenciar um valor de uma lista dentro de outra lista, utiliza-se a mesma notao de listas com mais um ndice.
F = [1,2,3,[4,5,6]] print F[3][0] 4

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

89

Exerccio 16
Faa um programa que utilize listas para gerenciar uma agenda de telefones.
o A agenda deve guardar nome e telefone de vrias pessoas. o Operaes a suportar: incluso, excluso, alterao, pesquisa, listagem e ordenao. o Em todos as opes o nome do indivduo ser utilizado como chave de pesquisa. o Utilize menu.
Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
90

Funes 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]

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

91

Funes com listas


range(incio, fim) Cria uma lista iniciando no valor especificado em incio e terminando em fim 1
range(5,10) [5,6,7,8,9]

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

92

Funes com listas


range(inicio, fim, incremento) Igual anterior, mas com incremento entre os elementos
range(1,10,2) [1,3,5,7,9]

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

93

Funes com listas


xrange Idntica a todas as outras formas de range, porm otimizada para listas grandes.

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

94

for
Estrutura de repetio que percorre os elementos de uma lista. for elemento in lista:
Exemplo: Imprimir todos os elementos

for a in range(10): print a

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

95

Usando Listas como pilhas


Uma pilha uma estrutura de dados com uma poltica de incluso e excluso de elementos bem definida. Em pilhas, a incluso sempre feita no topo ou fim, assim como as excluses. A estrutura similar a uma pilha de pratos. Coloca-se sempre um sobre o outro e retirase sempre pelo topo.

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

96

Usando Listas como pilhas


pilha = [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]
Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
97

Usando listas como filas


Filas so estruturas de dados onde se insere no fim e retira-se no incio. uma estrutura similar a uma fila de cinema. O primeiro que chega o primeiro a entrar. Os que chegam depois vo para o fim da fila.
Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
98

Usando listas como filas


Fila = [ Joo, Maria] Fila.append(Jos) Fila.pop(0) Joo print Fila [ Maria, Jos]

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

99

filter
Formato:
filter (funo, lista)

A funo filter aplica a funo passada como parmetro a cada elemento da lista, retornando uma outra lista onde com os elementos cujo retorno de funo verdadeiro. Utilizada para filtrar ou selecionar valores.

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

100

filter
def f(x): return x % 2 == 0 print filter(f, [0,1,2,3,4,5,6,7,8]) [0,2,4,6,8]

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

101

map
Formato:
map(funo, lista) map funciona de forma semelhante a filter, porm esta retorna uma lista com o retorno de funo aplicada a cada elemento da lista. Mais de uma lista pode ser passada como parmetro. Neste caso, o nmero de argumentos de funo deve ser igual ao de listas.

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

102

map
def 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]

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

103

map
Um caso especial de map passar None como funo. 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)]

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

104

reduce
Formato:
reduce(funo, lista) Aplica funo aos elementos da lista. Na primeira vez, passa o primeiro e o segundo elemento. Nas prximas, o resultado da chamada anterior com o prximo elemento.

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

105

reduce
def mult(x,y): return x * y reduce(mult, [1,2,3,4,5]) 120
Um terceiro parmetro pode ser passado, indicando o valor inicial.

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

106

del
Del utilizada para remover um elemento de uma lista atravs de seu ndice. del lista(x) Remove o elemento x de lista A = [1,2,3] del a[0] print A [2,3]
Del tambm pode ser utilizada para apagar variveis.
Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
107

Tuplas
Tuplas funcionam como e compartilham muitas das propriedades de listas, porm tuplas no podem ser alteradas. Utilizamos ( ) invs de [] para denotar tuplas.
T = ( 1,2,3 ) J = ( joo, maria, jos )

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

108

Tuplas
Uma tupla vazia criada por: T = () Uma tupla com um elemento exige vrgula aps este: T = ( joo, )

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

109

Tuplas
Tuplas podem ser usadas para atribuies mltiplas. Exemplo: A, B = ( 10, 15 )
equivalente a A = 10 e B = 15

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

110

Strings
Strings podem ser manipuladas como tuplas. E assim como tuplas no podem ser alteradas. Nome = Joo print Nome[0] J

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

111

Strings
Para alterar uma String pode-se convert-la em lista.
S = Joo SL = list(S) print SL [J,o,,o]

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

112

Strings
Para converter uma lista em string, utilize o mtodo join da string. S = S.join(SL)
Embora no possamos alterar strings, nada nos impede de criarmos novas. S = S + A

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

113

Fatias
Tuplas, listas e strings suportam um tipo de operao 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]

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

114

Fatias
A notao de fatia [inicio:fim] sendo incio inclusive, mas fim no. Isto , [1:4] inclui o elemento 1, mas no o elemento 4. [:] pode ser utilizado para criar uma nova cpia de string ou lista. Valores negativos indicam que a contagem se inicia do fim da seqncia.

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

115

Dicionrios
Dicionrios so estruturas de dados que permitem indexar um elemento atravs de sua chave. Dicionrios so escritos entre chaves e sempre no formato chave:valor. Exemplo:
Telefones = { nilo:9717, joana:9784}

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

116

Dicionrios
Para acessar os valores de um dicionrio, colocamos a chave entre colchetes, com em listas:
print Telefones[nilo] 9717

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

117

Dicionrios
O mtodo has_key pode ser utilizado para verificar se uma chave existe. Telefones.has_key(nilo) True Telefones.has_key(maria) False Voc tambm pode obter o mesmo efeito com in: nilo in Telefones True maria in Telefones false
Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
118

Dicionrios
Para adicionarmos elementos a um dicionrio basta especificar uma nova chave.
Telefones[maria] = 9784 para listar todas as chaves de um dicionrio, utilizamos o mtodo keys() que retorna uma lista. print Telefones.keys() [nilo, joana, maria]

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

119

Dicionrios
Utiliza-se del para remover um elemento de um dicionrio. del Telefones[nilo]
Dicionrios podem ser construdos atravs de uma lista de tuplas e do mtodo dict. print dict( [ (nilo, 9717),(joana, 9784)]) { nilo: 9717, joana:9784 }

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

120

Dicionrios
Utiliza-se o mtodo items para retornar uma lista com tuplas chave, valor. print Telefones.items() [(nilo, 9717), (joana, 9784) Utiliza-se o mtodo values para retornar um lista com os valores. print Telefones.values() [9717, 9784]

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

121

Operaes avanadas
Criao de listas com notao de funo (List comprehensions).
[ x * 2 for x in range(5) ] Cria uma lista [0,2,4,6,8]

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

122

Operaes Avanadas - Lambda


Funes lambda so semelhantes a funes, mas no tem nome e podem ser utilizadas como varivel.
F = lambda x: x+5 print F(4) 9

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

123

Arquivos
Arquivos so estruturas de dados armazenadas em disco. Em Python, utiliza-se a funo open para abrir um arquivo.
F = open(nome_do_arquivo, modo) print F.readline() F.close()

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

124

Arquivos
Modos para abertura de arquivos: Modo
r w a r+ b

Funo
Leitura Escrita. Apaga caso j exista Abre para adicionar ao final (append) Leitura e escrita Indica modo binrio
125

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

Arquivos
Todo arquivo aberto deve ser fechado com uma chamada a close.

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

126

Arquivos
read(x) L um deterninado nmero de bytes (x) retornando como string. readline() L e retorna uma linha. readlines() Retorna todas as linhas de um arquivo numa lista.
Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
127

Arquivos
xreadlines()
Semelhante ao xrange, otimizada para ler arquivos muito grandes.

tell()
Retorna a posio corrente no arquivo

seek(posio, referncia)
Move o ponteiro do arquivo para posio. Refncia (0 incio, 1 atual, 2 fim)

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

128

Excees
Muitas funes em Python fazem o programa terminar em caso de erro. Isto acontece porque uma exceo foi gerada. Excees no tratadas causam o fim do programa.

try: programa except: tratamento


Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
129

Onde aprender mais


Visite o site:

http://www.nilo.pro.br/iprog/
para uma verso atualizada e completa do curso de introduo programao.

Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/

130