1
Lógica de Programação
com Python
por Nilo Menezes
http://www.nilo.pro.br/python/
Python 2.7 – requer PyGame
Atualizada em 30/10/2012
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Objetivos
• Introduzir os conceitos de programação
• Apresentar as principais estruturas de dados
• Construir programas exemplo
• Utilizar uma linguagem de programação (Python)
2
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Você
• Apresentação
oNome
oCurso
oO que já sabe?
oO que espera do curso?
oAprender lógica para
que?
3
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Por que programar
é difícil?
4
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
O que fazer ?
5
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Por que
Python?
6
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Exercício 1
•Faça uma descrição
em português de
como desligar o
computador.
7
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Uma abordagem grá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.
8
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
• 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 gráfica
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Uma abordagem gráfica
• Um ponto
ponto(coluna, linha)
• Três pontos
ponto(1,1)
ponto(1,2)
ponto(1,3)
10
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Exercício 2
• Faça um programa para desenhar uma linha
vertical numa tela de 5x5
11
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Exercício 3
• Faça um programa para desenhar uma linha
horizontal numa tela de 5x5
12
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Exercício 4
• Faça um programa para desenhar uma linha
diagonal numa tela de 5x5
13
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Exercício 5
• Faça um programa para desenhar um triângulo
14
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Exercício 6
• Faça um programa para desenhar um quadrado
15
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Exercício 7
• Faça um programa para desenhar uma casa em
20x20
16
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Tipos 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.
17
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Tipos de Dados
• Númérico
oInteiros (1, 2, 3...)
oPonto Flutuante ( 1.14, 3.1415, 5.0)
18
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Tipo 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
19
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Tipos de Dados
• Lógico
o Verdadeiro
o Falso
Estes valores também são
chamados de booleanos.
20
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Operadores Aritmé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.
21
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Operadores Lógicos
Não
E
Ou
• 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
22
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Operador Não
Valor Não Valor
Verdadeiro Falso
Falso Verdadeiro
23
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Operador E
A B A e B
Verdadeiro Verdadeiro Verdadeiro
Verdadeiro Falso Falso
Falso Verdadeiro Falso
Falso Falso Falso
24
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Operador Ou
A B A ou B
Verdadeiro Verdadeiro Verdadeiro
Verdadeiro Falso Verdadeiro
Falso Verdadeiro Verdadeiro
Falso Falso Falso
25
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Prioridade de Avaliaçã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ão
2) Adição e Subtração
26
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Exercício 8
• Sendo A verdadeiro e B falso,
resolva:
a) A e B
b) B e não A
c) A ou B
d) A e B ou não B
e) não B
27
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Operadores Relacionais
• == Igualdade
• > Maior que
• < Menor que
• >= Maior ou igual
• <= Menor ou igual
• <> Diferente de
28
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Prioridade de Operações
• Havendo vários tipos de
operadores em um
expressão, executam-se
nesta ordem:
1. Aritméticos
2. Relacionais
3. Lógicos
29
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Exercício 9
• Resolva:
a) 5 * 4 < 4 + 3
b) 6 * 2 – 1 > 3 * 1
c) 9 – 4 / 2 <= 7 + 1 ou 5 * 2 – 3 <> 6
d) 9 / 3 == 3 * 3 e 2 * 3 – 1 >= 8
30
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Variá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
31
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Atribuição
• Variável = expressão
• Exemplo:
A = verdadeiro
B = 5 * 3
C = A e B
D = 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.
32
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Seqüência
• Uma seqüência de instruções 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 não foi alterado
pelo novo valor de A
33
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Coordenadas 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
34
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Exercí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.
35
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Exercí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
36
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Exercí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/
Saí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 A
Escreva 2 * 5
38
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Decisõ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
39
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Decisõ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”
40
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Repetiçã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).
41
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Exemplo de repetição
A = 1
Enquanto A < 10:
Escreva A
A = A + 1
42
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Entradas
• São pontos onde se pede a informação de um
valor
Leia A
43
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Exercício 11
• Escreva um programa que peça 2
números e exiba o maior deles.
44
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Exercí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
45
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Python e Lógica
• Fica mais difícil separar Python de
Lógica
• Introdução ao IDLE
• Digitando programas
46
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Expressõ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
47
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Operadores Relacionais
> Maior == Igualdade
< Menor <> Diferente
<= Menor ou
igual
!= Diferente
>= Maior ou
igual
48
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Operadores Aritméticos
Operadores
* Multiplicação
/ Divisão
+ Adição
- Subtração
** Exponenciação
49
Nilo Menezes – Lógica de Programação – 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.
50
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
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 máscara dos valores que serão
utilizados entre parênteses.
51
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Escrevendo
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/
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
digitação do valor.
• raw_input sempre retorna um valor literal
53
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Lendo
Valores inteiros:
tamanho = input(“Digite o tamanho:”)
Ou
Tamanho = int (raw_input(“Digite o tamanho:”))
54
Conversão de tipo
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Tipos
• 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’>
55
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Repetição
Lógica Python
A=1
enquanto A<5:
escreva A
A=A+1
A=1
while A<5:
print A
A=A+1
56
Bloco a repetir enquanto A<5
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Repetiçã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.
57
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Repetiçã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/
Definindo funções
• Você pode definir ou criar suas próprias funções.
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
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/
Definindo Funções
quadrado(10,8,20,15)
quadrado(a,b,c,d)
60
Seria o mesmo que:
a = 10
b = 8
c = 20
d = 15
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
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
61
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Condiçõ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
62
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Condições
63
A>B
A
B
Verdadeiro
Falso
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
O 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
64
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
graficos.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
65
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
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)
66
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
graficos.py
• limpa()
Limpa todos os pontos
• limpa(t)
Limpa todos os pontos, redefinindo o
gradeado para t x t
67
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
graficos.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
68
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Usando 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
69
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Usando 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()
70
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Exercício 12
• Crie uma função que desenhe a
partir de uma coordenada (x,y):
a) Uma árvore
b) Uma casa
c) Um sol
71
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Exercí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.
72
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Listas
• 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
colchetes
A = [ 1, 2, 3]
B = [ ]
73
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Operaçõ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]
1
print B[2]
3
74
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Operações com Listas
• append(x)
Adiciona um item ao fim da lista.
B.append(5)
print B
[1,2,3,5]
75
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Operações com Listas
• len(L)
Imprime o número de elementos
da lista L.
C=[10,40,50]
print len(c)
3
76
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Operações com Listas
• extend(L)
Concatena duas listas
A = [10, 11, 12]
B.extend(A)
print B
[1,2,3,5,10,11,12]
77
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Operaçõ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]
78
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Operaçõ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]
79
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Operaçõ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()
5
print B
[1,2,3,4]
80
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Operaçõ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
81
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Operaçõ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
82
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Operações com Listas
• sort()
Ordena os elementos da lista
D = [ 1,9,8,7]
D.sort()
print D
[1,7,8,9]
83
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Operaçõ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]
84
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Exercício 14
1. Crie uma lista com números de 1 à 10
2. Remova o elemento da posição 2
3. Remova o elemento de valor 5
4. Acrescente 11 e 12 ao fim da lista
5. Acrescente 0 no início da lista
6. Exiba o tamanho da lista
85
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Exercí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.
86
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Tipos variados
• Uma lista pode conter elementos
de tipos diferentes.
• Exemplo:
F = [ “joão”, 15, “maria”]
G = [ 10, 15, 20, True]
87
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
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
88
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Listas 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
89
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Exercí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.
90
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Funçõ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]
91
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Funçõ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]
92
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Funções com listas
• range(inicio, fim, incremento)
Igual à anterior, mas com
incremento entre os elementos
range(1,10,2)
[1,3,5,7,9]
93
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Funções com listas
• xrange
Idêntica a todas as outras formas
de range, porém otimizada
para listas grandes.
94
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
for
• 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
95
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Usando Listas como pilhas
• 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.
96
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
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]
97
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Usando listas como filas
• 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.
98
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Usando listas como filas
Fila = [ “João”, “Maria”]
Fila.append(“José”)
Fila.pop(0)
“João”
print Fila
[ “Maria”, “José”]
99
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
filter
• 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.
100
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
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]
101
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
map
• 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.
102
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
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]
103
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
map
• 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)]
104
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
reduce
• 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.
105
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
reduce
def mult(x,y):
return x * y
reduce(mult, [1,2,3,4,5])
120
• Um terceiro parâmetro pode ser passado,
indicando o valor inicial.
106
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
del
• Del é utilizada para remover um elemento
de uma lista através de seu índice.
del lista(x)
• Remove o elemento x de lista
A = [1,2,3]
del a[0]
print A
[2,3]
• Del também pode ser utilizada para apagar
variáveis.
107
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Tuplas
• 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é” )
108
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Tuplas
• Uma tupla vazia é criada por:
T = ()
• Uma tupla com um elemento exige vírgula após
este:
T = ( “joão”, )
109
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Tuplas
• Tuplas podem ser usadas para atribuições múltiplas.
• Exemplo:
A, B = ( 10, 15 )
• É equivalente a A = 10 e B = 15
110
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Strings
• Strings podem ser manipuladas como tuplas.
• E assim como tuplas não podem ser alteradas.
Nome = “João”
print Nome[0]
J
111
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Strings
Para alterar uma String pode-se convertê-la em lista.
S = “João”
SL = list(S)
print SL
[‘J’,’o’,’ã’,’o’]
112
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Strings
• 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”
113
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Fatias
• 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]
114
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Fatias
• 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.
115
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Dicioná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}
116
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Dicionários
• Para acessar os valores de um dicionário,
colocamos a chave entre colchetes, com em listas:
print Telefones[“nilo”]
9717
117
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Dicionários
• O método has_key pode ser utilizado para verificar
se uma chave existe.
Telefones.has_key(“nilo”)
True
Telefones.has_key(“maria”)
False
• Você também pode obter o mesmo efeito com in:
“nilo” in Telefones
True
“maria” in Telefones
false
118
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Dicioná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”]
119
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Dicioná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 }
120
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Dicioná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]
121
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Operaçõ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]
122
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Operações Avançadas - Lambda
• 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+5
print F(4)
9
123
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Arquivos
• 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()
124
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Arquivos
• Modos para abertura de arquivos:
Modo Função
r Leitura
w Escrita. Apaga caso já exista
a Abre para adicionar ao final (append)
r+ Leitura e escrita
b Indica modo binário
125
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Arquivos
• Todo arquivo aberto deve ser
fechado com uma chamada a
close.
126
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Arquivos
• 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.
127
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Arquivos
• 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)
128
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Exceçõ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
129
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Onde 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.
130
Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/

Mais conteúdo relacionado

PDF
Introdução à Programação
PPT
Curso de Python.ppt
PPT
Unidade-I-Introdução-a-Algoritmos-e-Programas.ppt
PPT
Unidade-I-Introdução-a-Algoritmos-e-Programas.ppt
PPT
Unidade-I-Introdução-a-Algoritmos-e-Programas.ppt
PPT
Unidade-I-Introdução-a-Algoritmos-e-Programas.ppt
PPT
Introdução a Algoritmos e Programas.ppt
PPTX
Introducao a Lógica de Programação
Introdução à Programação
Curso de Python.ppt
Unidade-I-Introdução-a-Algoritmos-e-Programas.ppt
Unidade-I-Introdução-a-Algoritmos-e-Programas.ppt
Unidade-I-Introdução-a-Algoritmos-e-Programas.ppt
Unidade-I-Introdução-a-Algoritmos-e-Programas.ppt
Introdução a Algoritmos e Programas.ppt
Introducao a Lógica de Programação

Semelhante a Curso de Python básico para iniciantes com lógica de programação (20)

PPT
Introdução - Algoritmos
PPT
Algoritmos e Programação_01
PPTX
Introduçao a Algoritmo...................
PDF
Oficina: Introdução à programação com Python e seus recursos: algoritmos e ló...
PPT
Logica usando c_-_aula_1
PPTX
Aula 01 - Apresentação - Introdução a Lógica.pptx
PPT
PPT
Algoritmos e Programação
PDF
Algoritmos e programacao_em_python
PDF
Logica programacao python-slides
ODP
Algoritmo aula 01-f
PDF
Slide_Python.pdf
PPT
Lógica de programação 1
PPTX
decisão aninhada programaçao de cmputadores
PPT
E:\Plp 2009 2\Plp Aula11
PPTX
Logica programar
PPS
Lógica parte 1 - Introdução
PDF
Aula2-Algoritmos - Operadores Aritméticos e Relacionais.pdf
PPS
Lógica parte 2 - Algoritmos
PPT
Logica Programação. ...
Introdução - Algoritmos
Algoritmos e Programação_01
Introduçao a Algoritmo...................
Oficina: Introdução à programação com Python e seus recursos: algoritmos e ló...
Logica usando c_-_aula_1
Aula 01 - Apresentação - Introdução a Lógica.pptx
Algoritmos e Programação
Algoritmos e programacao_em_python
Logica programacao python-slides
Algoritmo aula 01-f
Slide_Python.pdf
Lógica de programação 1
decisão aninhada programaçao de cmputadores
E:\Plp 2009 2\Plp Aula11
Logica programar
Lógica parte 1 - Introdução
Aula2-Algoritmos - Operadores Aritméticos e Relacionais.pdf
Lógica parte 2 - Algoritmos
Logica Programação. ...
Anúncio

Último (12)

PPT
07_slides de Estilos_Arquiteturais sommerville.ppt
PDF
SLIDES - AULA 7 - SWING - Cleyton Souza - IFPB
PPT
05_slide especificacao de sistemas de software e a uml UML.ppt
PPT
00_Apresentacao sobre o livro do sommerville_ES.ppt
PPT
09_Evolucao de software e_Refatoracao.ppt
PPT
10_ slides de Reuso sommerville cap 10.ppt
PDF
SLIDES - AULA 2 - INTRODUÇÃO - Material de Cleyton Souza - IFPB
PPT
03_slide de Gerenciamento de Projetos .ppt
PDF
SLIDES - AULA 3 - CLASSES E OBJETOS EM JAVA - Material de Cleyton Souza - IFPB
PDF
SLIDES - AULA 1 - APRESENTAÇÃO - Material de Cleyton Souza - IFPB
PDF
SLIDES - AULA 5 - HERANÇA - Material de Cleyton Souza - IFPB
PPT
06_slide de Arquitetura_de_Software .ppt
07_slides de Estilos_Arquiteturais sommerville.ppt
SLIDES - AULA 7 - SWING - Cleyton Souza - IFPB
05_slide especificacao de sistemas de software e a uml UML.ppt
00_Apresentacao sobre o livro do sommerville_ES.ppt
09_Evolucao de software e_Refatoracao.ppt
10_ slides de Reuso sommerville cap 10.ppt
SLIDES - AULA 2 - INTRODUÇÃO - Material de Cleyton Souza - IFPB
03_slide de Gerenciamento de Projetos .ppt
SLIDES - AULA 3 - CLASSES E OBJETOS EM JAVA - Material de Cleyton Souza - IFPB
SLIDES - AULA 1 - APRESENTAÇÃO - Material de Cleyton Souza - IFPB
SLIDES - AULA 5 - HERANÇA - Material de Cleyton Souza - IFPB
06_slide de Arquitetura_de_Software .ppt
Anúncio

Curso de Python básico para iniciantes com lógica de programação

  • 1. 1 Lógica de Programação com Python por Nilo Menezes http://www.nilo.pro.br/python/ Python 2.7 – requer PyGame Atualizada em 30/10/2012 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 2. Objetivos • Introduzir os conceitos de programação • Apresentar as principais estruturas de dados • Construir programas exemplo • Utilizar uma linguagem de programação (Python) 2 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 3. Você • Apresentação oNome oCurso oO que já sabe? oO que espera do curso? oAprender lógica para que? 3 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 4. Por que programar é difícil? 4 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 5. O que fazer ? 5 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 6. Por que Python? 6 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 7. Exercício 1 •Faça uma descrição em português de como desligar o computador. 7 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 8. Uma abordagem grá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. 8 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 9. • 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 gráfica Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 10. Uma abordagem gráfica • Um ponto ponto(coluna, linha) • Três pontos ponto(1,1) ponto(1,2) ponto(1,3) 10 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 11. Exercício 2 • Faça um programa para desenhar uma linha vertical numa tela de 5x5 11 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 12. Exercício 3 • Faça um programa para desenhar uma linha horizontal numa tela de 5x5 12 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 13. Exercício 4 • Faça um programa para desenhar uma linha diagonal numa tela de 5x5 13 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 14. Exercício 5 • Faça um programa para desenhar um triângulo 14 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 15. Exercício 6 • Faça um programa para desenhar um quadrado 15 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 16. Exercício 7 • Faça um programa para desenhar uma casa em 20x20 16 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 17. Tipos 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. 17 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 18. Tipos de Dados • Númérico oInteiros (1, 2, 3...) oPonto Flutuante ( 1.14, 3.1415, 5.0) 18 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 19. Tipo 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 19 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 20. Tipos de Dados • Lógico o Verdadeiro o Falso Estes valores também são chamados de booleanos. 20 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 21. Operadores Aritmé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. 21 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 22. Operadores Lógicos Não E Ou • 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 22 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 23. Operador Não Valor Não Valor Verdadeiro Falso Falso Verdadeiro 23 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 24. Operador E A B A e B Verdadeiro Verdadeiro Verdadeiro Verdadeiro Falso Falso Falso Verdadeiro Falso Falso Falso Falso 24 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 25. Operador Ou A B A ou B Verdadeiro Verdadeiro Verdadeiro Verdadeiro Falso Verdadeiro Falso Verdadeiro Verdadeiro Falso Falso Falso 25 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 26. Prioridade de Avaliaçã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ão 2) Adição e Subtração 26 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 27. Exercício 8 • Sendo A verdadeiro e B falso, resolva: a) A e B b) B e não A c) A ou B d) A e B ou não B e) não B 27 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 28. Operadores Relacionais • == Igualdade • > Maior que • < Menor que • >= Maior ou igual • <= Menor ou igual • <> Diferente de 28 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 29. Prioridade de Operações • Havendo vários tipos de operadores em um expressão, executam-se nesta ordem: 1. Aritméticos 2. Relacionais 3. Lógicos 29 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 30. Exercício 9 • Resolva: a) 5 * 4 < 4 + 3 b) 6 * 2 – 1 > 3 * 1 c) 9 – 4 / 2 <= 7 + 1 ou 5 * 2 – 3 <> 6 d) 9 / 3 == 3 * 3 e 2 * 3 – 1 >= 8 30 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 31. Variá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 31 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 32. Atribuição • Variável = expressão • Exemplo: A = verdadeiro B = 5 * 3 C = A e B D = 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. 32 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 33. Seqüência • Uma seqüência de instruções 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 não foi alterado pelo novo valor de A 33 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 34. Coordenadas 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 34 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 35. Exercí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. 35 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 36. Exercí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 36 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 37. Exercí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/
  • 38. Saí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 A Escreva 2 * 5 38 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 39. Decisõ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 39 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 40. Decisõ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” 40 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 41. Repetiçã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). 41 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 42. Exemplo de repetição A = 1 Enquanto A < 10: Escreva A A = A + 1 42 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 43. Entradas • São pontos onde se pede a informação de um valor Leia A 43 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 44. Exercício 11 • Escreva um programa que peça 2 números e exiba o maior deles. 44 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 45. Exercí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 45 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 46. Python e Lógica • Fica mais difícil separar Python de Lógica • Introdução ao IDLE • Digitando programas 46 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 47. Expressõ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 47 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 48. Operadores Relacionais > Maior == Igualdade < Menor <> Diferente <= Menor ou igual != Diferente >= Maior ou igual 48 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 49. Operadores Aritméticos Operadores * Multiplicação / Divisão + Adição - Subtração ** Exponenciação 49 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 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. 50 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 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 máscara dos valores que serão utilizados entre parênteses. 51 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 52. Escrevendo 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/
  • 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 digitação do valor. • raw_input sempre retorna um valor literal 53 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 54. Lendo Valores inteiros: tamanho = input(“Digite o tamanho:”) Ou Tamanho = int (raw_input(“Digite o tamanho:”)) 54 Conversão de tipo Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 55. Tipos • 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’> 55 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 56. Repetição Lógica Python A=1 enquanto A<5: escreva A A=A+1 A=1 while A<5: print A A=A+1 56 Bloco a repetir enquanto A<5 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 57. Repetiçã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. 57 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 58. Repetiçã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/
  • 59. Definindo funções • Você pode definir ou criar suas próprias funções. 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 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/
  • 60. Definindo Funções quadrado(10,8,20,15) quadrado(a,b,c,d) 60 Seria o mesmo que: a = 10 b = 8 c = 20 d = 15 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 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 61 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 62. Condiçõ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 62 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 63. Condições 63 A>B A B Verdadeiro Falso Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 64. O 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 64 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 65. graficos.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 65 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 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 (red = vermelho, green = verde, blue = azul) 66 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 67. graficos.py • limpa() Limpa todos os pontos • limpa(t) Limpa todos os pontos, redefinindo o gradeado para t x t 67 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 68. graficos.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 68 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 69. Usando 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 69 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 70. Usando 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() 70 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 71. Exercício 12 • Crie uma função que desenhe a partir de uma coordenada (x,y): a) Uma árvore b) Uma casa c) Um sol 71 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 72. Exercí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. 72 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 73. Listas • 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 colchetes A = [ 1, 2, 3] B = [ ] 73 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 74. Operaçõ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] 1 print B[2] 3 74 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 75. Operações com Listas • append(x) Adiciona um item ao fim da lista. B.append(5) print B [1,2,3,5] 75 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 76. Operações com Listas • len(L) Imprime o número de elementos da lista L. C=[10,40,50] print len(c) 3 76 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 77. Operações com Listas • extend(L) Concatena duas listas A = [10, 11, 12] B.extend(A) print B [1,2,3,5,10,11,12] 77 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 78. Operaçõ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] 78 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 79. Operaçõ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] 79 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 80. Operaçõ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() 5 print B [1,2,3,4] 80 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 81. Operaçõ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 81 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 82. Operaçõ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 82 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 83. Operações com Listas • sort() Ordena os elementos da lista D = [ 1,9,8,7] D.sort() print D [1,7,8,9] 83 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 84. Operaçõ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] 84 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 85. Exercício 14 1. Crie uma lista com números de 1 à 10 2. Remova o elemento da posição 2 3. Remova o elemento de valor 5 4. Acrescente 11 e 12 ao fim da lista 5. Acrescente 0 no início da lista 6. Exiba o tamanho da lista 85 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 86. Exercí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. 86 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 87. Tipos variados • Uma lista pode conter elementos de tipos diferentes. • Exemplo: F = [ “joão”, 15, “maria”] G = [ 10, 15, 20, True] 87 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 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 88 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 89. Listas 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 89 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 90. Exercí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. 90 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 91. Funçõ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] 91 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 92. Funçõ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] 92 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 93. Funções com listas • range(inicio, fim, incremento) Igual à anterior, mas com incremento entre os elementos range(1,10,2) [1,3,5,7,9] 93 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 94. Funções com listas • xrange Idêntica a todas as outras formas de range, porém otimizada para listas grandes. 94 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 95. for • 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 95 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 96. Usando Listas como pilhas • 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. 96 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 97. 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] 97 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 98. Usando listas como filas • 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. 98 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 99. Usando listas como filas Fila = [ “João”, “Maria”] Fila.append(“José”) Fila.pop(0) “João” print Fila [ “Maria”, “José”] 99 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 100. filter • 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. 100 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 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] 101 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 102. map • 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. 102 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 103. 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] 103 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 104. map • 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)] 104 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 105. reduce • 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. 105 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 106. reduce def mult(x,y): return x * y reduce(mult, [1,2,3,4,5]) 120 • Um terceiro parâmetro pode ser passado, indicando o valor inicial. 106 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 107. del • Del é utilizada para remover um elemento de uma lista através de seu índice. del lista(x) • Remove o elemento x de lista A = [1,2,3] del a[0] print A [2,3] • Del também pode ser utilizada para apagar variáveis. 107 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 108. Tuplas • 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é” ) 108 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 109. Tuplas • Uma tupla vazia é criada por: T = () • Uma tupla com um elemento exige vírgula após este: T = ( “joão”, ) 109 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 110. Tuplas • Tuplas podem ser usadas para atribuições múltiplas. • Exemplo: A, B = ( 10, 15 ) • É equivalente a A = 10 e B = 15 110 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 111. Strings • Strings podem ser manipuladas como tuplas. • E assim como tuplas não podem ser alteradas. Nome = “João” print Nome[0] J 111 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 112. Strings Para alterar uma String pode-se convertê-la em lista. S = “João” SL = list(S) print SL [‘J’,’o’,’ã’,’o’] 112 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 113. Strings • 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” 113 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 114. Fatias • 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] 114 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 115. Fatias • 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. 115 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 116. Dicioná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} 116 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 117. Dicionários • Para acessar os valores de um dicionário, colocamos a chave entre colchetes, com em listas: print Telefones[“nilo”] 9717 117 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 118. Dicionários • O método has_key pode ser utilizado para verificar se uma chave existe. Telefones.has_key(“nilo”) True Telefones.has_key(“maria”) False • Você também pode obter o mesmo efeito com in: “nilo” in Telefones True “maria” in Telefones false 118 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 119. Dicioná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”] 119 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 120. Dicioná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 } 120 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 121. Dicioná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] 121 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 122. Operaçõ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] 122 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 123. Operações Avançadas - Lambda • 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+5 print F(4) 9 123 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 124. Arquivos • 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() 124 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 125. Arquivos • Modos para abertura de arquivos: Modo Função r Leitura w Escrita. Apaga caso já exista a Abre para adicionar ao final (append) r+ Leitura e escrita b Indica modo binário 125 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 126. Arquivos • Todo arquivo aberto deve ser fechado com uma chamada a close. 126 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 127. Arquivos • 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. 127 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 128. Arquivos • 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) 128 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 129. Exceçõ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 129 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
  • 130. Onde 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. 130 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/