Escolar Documentos
Profissional Documentos
Cultura Documentos
Curso de Python
Curso de Python
http://www.nilo.pro.br/python
Av. Danilo Areosa, s/n Lote 164 Distrito Industrial Manaus-AM CEP: 69075-351 Tel: (92) 614-9797 Fax: (92) 614-9700
Visite nosso site: www.fpf.br
Lgica de Programao
Instrutor: Nilo Menezes (nilo@nilo.pro.br) Horrio do curso:
Sbados 09:00 s 13:00
Objetivos
Introduzir os conceitos de programao Apresentar as principais estruturas de dados Construir programas exemplo Utilizar uma linguagem
Voc
Apresentao
Nome Curso O que j sabe? O que espera do curso? Aprender lgica para que?
O que fazer ?
Exerccio 1
Trs pontos
ponto(1,1) ponto(1,2) ponto(1,3)
11
Exerccio 2
Faa um programa para desenhar uma linha vertical numa tela de 5x5
12
Exerccio 3
Faa um programa para desenhar uma linha horizontal numa tela de 5x5
13
Exerccio 4
Faa um programa para desenhar uma linha diagonal numa tela de 5x5
14
Exerccio 5
Faa um programa para desenhar um tringulo
15
Exerccio 6
Faa um programa para desenhar um quadrado
16
Exerccio 7
Faa um programa para desenhar uma casa em 20x20
17
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.
18
Tipos de Dados
Nmrico
Inteiros (1, 2, 3...) Ponto Flutuante ( 1.14, 3.1415, 5.0)
19
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
20
Tipos de Dados
Lgico
Verdadeiro Falso
Estes valores tambm so chamados de booleanos.
21
Operadores Aritmticos
+ Adio - Subtrao * Multiplicao / Diviso Em expresses mantm-se a prioridade das operaes como na matemtica. () podem ser usados para alterar esta ordem.
22
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
23
Operador No
Valor No Valor
Verdadeiro
Falso
Falso
Verdadeiro
24
Operador E
A Verdadeiro Verdadeiro Falso Falso B Verdadeiro Falso Verdadeiro Falso AeB Verdadeiro Falso Falso Falso
25
Operador Ou
A Verdadeiro Verdadeiro Falso Falso B Verdadeiro Falso Verdadeiro Falso A ou B Verdadeiro Verdadeiro Verdadeiro Falso
26
Prioridade de Avaliao
Quando mais de um operador fizer parte de uma sentena, necessrio seguirmos a seguinte ordem: no, e, ou. Para operadores aritmticos, utiliza-se o padro da matemtica:
1) Multiplicao e Diviso 2) Adio e Subtrao
27
Exerccio 8
a) b) c) d) e) Sendo A verdadeiro e B falso, resolva: AeB B e no A A ou B A e B ou no B no B
28
Operadores Relacionais
== > < >= <= <> Igualdade Maior que Menor que Maior ou igual Menor ou igual Diferente de
29
Prioridade de Operaes
Havendo vrios tipos de operadores em um expresso, executam-se nesta ordem: 1. Aritmticos 2. Relacionais 3. Lgicos
30
Exerccio 9
a) b) c) d) Resolva: 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
31
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
32
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.
33
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
34
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
35
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.
36
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
37
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.
38
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
39
Decises
Nem tudo segue uma ordem fixa Presente na maioria dos problemas Decide o que fazer com base em um resultado lgico.
40
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
41
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).
42
Exemplo de repetio
A=1 Enquanto A < 10: Escreva A A= A + 1
43
Entradas
So pontos onde se pede a informao de uma valor Leia A
44
Exerccio 11
Escreva um programa que pea 2 nmeros e exiba o maior deles.
45
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
46
Python e Lgica
Fica mais difcil separar Python de Lgica Introduo ao IDLE Digitando programas
47
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
48
Operadores Relacionais
> Maior < Menor <= Menor ou igual >= Maior ou igual
49
Operadores Aritmticos
Operadores * / + ** Multiplicao Diviso Adio Subtrao Exponenciao
50
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.
51
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.
52
Escrevendo
print Seu nome %s e voc tem %d anos % (Jos, 18)
53
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
54
Lendo
Valores inteiros: tamanho = input(Digite o tamanho:) Ou
Tamanho = int (raw_input(Digite o tamanho:))
Converso de tipo
55
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>
56
Repetio
Lgica A=1 enquanto A<5: escreva A A=A+1 Python A=1 while A<5: print A A=A+1
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.
58
Repetio
INCIO A=1 No
A<5 Sim A
A = A +1 FIM
59
Definindo funes
Voc pode definir ou criar suas prprias funes.
def quadrado(a,b,c,d): p=a 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
Esta linha define o nome da nova funo e quais parmetros ela recebe
60
Definindo Funes
quadrado(10,8,20,15) quadrado(a,b,c,d)
Seria o mesmo que: a = 10 b=8 c = 20 d = 15
61
Cores
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
62
Condies
O se da lgica vira if e o seno else. Lgica Python
se a>b: if a>b: escreva a print a seno: else: escreva b print b
63
Condies
A>B Verdadeiro
Falso B
64
O utilitrio de desenho
Pegue no site: http://www.nilo.pro.br/python De aula 3, grave os arquivos tela.py e graficos.py Tela.py o programa grfico em si. Execute-o. Um janela com grade deve aparecer
65
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
66
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
67
Graficos.py
Limpa() Limpa todos os pontos Limpa(t) Limpa todos os pontos, redefinindo o gradeado para t x t
68
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
69
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
70
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()
71
Exerccio 12
Crie uma funo que desenhe a partir de uma coordenada (x,y):
a) Uma rvore b) Uma casa c) Um sol
72
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.
73
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=[]
74
76
77
83
84
85
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
86
Exerccio 15
Escreva um programa para ler e imprimir 8 valores lidos do teclado. Escreva a mdia e a soma destes valores. Imprima o menor e o maior. 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.
87
Tipos variados
Uma lista pode conter elementos de tipos diferentes. Exemplo: F = [ joo, 15, maria] G = [ 10, 15, 20, True]
88
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
89
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
90
Exerccio 16
Faa um programa que utilize listas para gerenciar uma agenda de telefones. A agenda deve guardar nome e telefone de vrias pessoas. Operaes a suportar: incluso, excluso, alterao, pesquisa, listagem e ordenao. Em todos as opes o nome do indivduo ser utilizado como chave de pesquisa. Utilize menu.
91
92
93
94
95
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
96
99
100
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.
101
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]
102
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.
103
Map
def fatorial(x): if x <=1: return 0 else: return x * fatorial(x-1) map(fatorial, [1,2,3,4,5]) [1, 2, 6, 24, 120]
104
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)]
105
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.
106
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.
107
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.
108
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 )
109
Tuplas
Uma tupla vazia criada por: T = () Uma tupla com um elemento exige vrgula aps este: T = ( joo, )
110
Tuplas
Tuplas podem ser usadas para atribuies mltiplas. Exemplo: A, B = ( 10, 15 ) equivalente a A = 10 e B = 15
111
Strings
Strings podem ser manipuladas como tuplas. E assim como tuplas no podem ser alteradas. Nome = Joo print Nome[0] J
112
Strings
Para alterar uma String pode-se convertlas em listas. S = Joo SL = list(S) print SL [J,o,,o]
113
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
114
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]
115
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.
116
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, wilmara:9784}
117
Dicionrios
Para acessar os valores de um dicionrio, colocamos a chave entre colchetes, com em listas: Print Telefones[nilo] 9717
118
Dicionrios
O mtodo has_key pode ser utilizado para verificar se uma chave existe. Telefones.has_key(nilo) True Telefones.has_key(marilene) False
119
Dicionrios
Para adicionarmos elementos a um dicionrio basta especificar uma nova chave. Telefones[marilene] = 9784 para listar todas as chaves de um dicionrio, utilizamos o mtodo keys() que retorna uma lista. print Telefones.keys() [nilo, wilmara, marilene]
120
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),(wilmara, 9784)]) { nilo: 9717, wilmara:9784 }
121
Dicionrios
Utiliza-se o mtodo items para retornar uma lista com tuplas chave, valor. print Telefones.items() [(nilo, 9717), (wilmara, 9784) Utiliza-se o mtodo values para retornar um lista com os valores. print Telefones.values() [9717, 9784]
122
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]
123
124
Arquivos
Arquivos so estruturas de dados armazenadas em disco. Em Python, utiliza-se a funo construtora open para abrir um arquivo. F = open(nome_do_arquivo, modo) print F.readline() F.close()
125
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
126
Arquivos
Todo arquivo aberto deve ser fechado com uma chamada a close.
127
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.
128
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)
129
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
130