Curso de Python.pdf

130
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/

Transcript of Curso de Python.pdf

  • 1

    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)

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

  • Voc

    Apresentao oNome

    oCurso

    oO que j sabe?

    oO que espera do curso?

    oAprender lgica para

    que?

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

  • Por que programar

    difcil?

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

  • O que fazer ?

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

  • Por que

    Python?

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

  • Exerccio 1

    Faa uma descrio em portugus de

    como desligar o

    computador.

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

  • 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.

    8 Nilo Menezes Lgica de Programao 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 posio.

    5 x 10 significa: coluna 5, linha 10

    9

    Uma abordagem grfica

    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)

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

  • Exerccio 2 Faa um programa para desenhar uma linha

    vertical numa tela de 5x5

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

  • Exerccio 3 Faa um programa para desenhar uma linha

    horizontal numa tela de 5x5

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

  • Exerccio 4 Faa um programa para desenhar uma linha

    diagonal numa tela de 5x5

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

  • Exerccio 5 Faa um programa para desenhar um tringulo

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

  • Exerccio 6 Faa um programa para desenhar um quadrado

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

  • Exerccio 7 Faa um programa para desenhar uma casa em

    20x20

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

  • 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.

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

  • Tipos de Dados

    Nmrico o Inteiros (1, 2, 3...)

    oPonto Flutuante ( 1.14, 3.1415, 5.0)

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

  • 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

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

  • Tipos de Dados

    Lgico o Verdadeiro

    o Falso

    Estes valores tambm so

    chamados de booleanos.

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

  • 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.

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

  • 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

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

  • 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 A e B

    Verdadeiro Verdadeiro Verdadeiro

    Verdadeiro Falso Falso

    Falso Verdadeiro Falso

    Falso Falso Falso

    24 Nilo Menezes Lgica de Programao 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 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, utiliza-se o padro da matemtica:

    1) Multiplicao e Diviso

    2) Adio e Subtrao

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

  • Exerccio 8

    Sendo A verdadeiro e B falso, resolva:

    a) A e B

    b) B e no A

    c) A ou B

    d) A e B ou no B

    e) no B

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

  • Operadores Relacionais

    == Igualdade

    > Maior que

    < Menor que

    >= Maior ou igual

  • Prioridade de Operaes Havendo vrios tipos de

    operadores em um

    expresso, executam-se

    nesta ordem: 1. Aritmticos

    2. Relacionais

    3. Lgicos

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

  • Exerccio 9

    Resolva: a) 5 * 4 < 4 + 3

    b) 6 * 2 1 > 3 * 1

    c) 9 4 / 2 = 8

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

  • 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

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

  • Atribuio Varivel = expresso

    Exemplo:

    A = verdadeiro

    B = 5 * 3

    C = A e B

    D = B * A 2 > 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.

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

  • 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

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

  • 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

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

  • 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.

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

  • 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

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

  • Exerccio 10c

    37

    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/

  • 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

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

  • 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

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

  • 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

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

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

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

  • Exemplo de repetio

    A = 1

    Enquanto A < 10:

    Escreva A

    A = A + 1

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

  • Entradas So pontos onde se pede a informao de um

    valor

    Leia A

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

  • Exerccio 11 Escreva um programa que pea 2

    nmeros e exiba o maior deles.

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

  • 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

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

  • Python e Lgica Fica mais difcil separar Python de

    Lgica

    Introduo ao IDLE

    Digitando programas

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

  • 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 Python

    No not

    E and

    Ou or

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

  • Operadores Relacionais

    > Maior == Igualdade

    < Menor Diferente

    = Maior ou igual

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

  • 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.

    50 Nilo Menezes Lgica de Programao 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 mscara dos valores que sero utilizados entre parnteses.

    51 Nilo Menezes Lgica de Programao 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 Lgica de Programao 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 digitao do valor.

    raw_input sempre retorna um valor literal

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

  • Lendo Valores inteiros:

    tamanho = input(Digite o tamanho:)

    Ou

    Tamanho = int (raw_input(Digite o tamanho:))

    54

    Converso de tipo

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

  • Tipos Utiliza-se a funo type para saber o tipo de uma

    expresso.

    print type(1)

    print type(2.0)

    print type(Al)

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

  • Repetio

    Lgica Python

    A=1

    enquanto A

  • 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.

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

  • Repetio

    58

    A = 1

    A < 5

    A = A +1

    A

    Sim

    No

    INCIO

    FIM

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

  • Definindo funes Voc pode definir ou criar suas prprias funes.

    def quadrado(a,b,c,d):

    p = a

    while p

  • Definindo Funes 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 Lgica de Programao 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 Lgica de Programao http://www.nilo.pro.br/python/

  • Condies O se da lgica vira if

    e o seno else.

    Lgica Python

    se a>b:

    escreva a

    seno:

    escreva b

    if a>b:

    print a

    else:

    print b

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

  • Condies

    63

    A>B

    A

    B

    Verdadeiro

    Falso

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

  • 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

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

  • 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

    65 Nilo Menezes Lgica de Programao 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 Lgica de Programao 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 Lgica de Programao http://www.nilo.pro.br/python/

  • 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

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

  • 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

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

  • 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()

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

  • Exerccio 12 Crie uma funo que desenhe a

    partir de uma coordenada (x,y): a) Uma rvore

    b) Uma casa

    c) Um sol

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

  • 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.

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

  • 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 = [ ]

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

  • 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

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

  • Operaes com Listas append(x)

    Adiciona um item ao fim da lista.

    B.append(5)

    print B

    [1,2,3,5]

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

  • Operaes com Listas len(L)

    Imprime o nmero de elementos

    da lista L.

    C=[10,40,50]

    print len(c)

    3

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

  • Operaes 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 Lgica de Programao http://www.nilo.pro.br/python/

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

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

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

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

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

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

  • 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

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

  • 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

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

  • Operaes com Listas sort()

    Ordena os elementos da lista

    D = [ 1,9,8,7]

    D.sort()

    print D

    [1,7,8,9]

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

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

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

  • Exerccio 14 1. Crie uma lista com nmeros de 1 10

    2. Remova o elemento da posio 2

    3. Remova o elemento de valor 5

    4. Acrescente 11 e 12 ao fim da lista

    5. Acrescente 0 no incio da lista

    6. Exiba o tamanho da lista

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

  • 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.

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

  • Tipos variados Uma lista pode conter elementos

    de tipos diferentes.

    Exemplo:

    F = [ joo, 15, maria]

    G = [ 10, 15, 20, True]

    87 Nilo Menezes Lgica de Programao 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 Lgica de Programao http://www.nilo.pro.br/python/

  • 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

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

  • 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.

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

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

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

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

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

  • Funes 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 Lgica de Programao http://www.nilo.pro.br/python/

  • Funes com listas xrange

    Idntica a todas as outras formas

    de range, porm otimizada

    para listas grandes.

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

  • 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

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

  • 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 retira-se sempre pelo topo.

    96 Nilo Menezes Lgica de Programao 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 Lgica de Programao http://www.nilo.pro.br/python/

  • 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.

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

  • Usando listas como filas Fila = [ Joo, Maria]

    Fila.append(Jos)

    Fila.pop(0)

    Joo

    print Fila

    [ Maria, Jos]

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

  • 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.

    100 Nilo Menezes Lgica de Programao 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 Lgica de Programao http://www.nilo.pro.br/python/

  • 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.

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

  • map

    def fatorial(x):

    if x

  • 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)]

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

  • 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.

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

  • 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.

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

  • 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.

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

  • 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 )

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

  • Tuplas Uma tupla vazia criada por:

    T = ()

    Uma tupla com um elemento exige vrgula aps este:

    T = ( joo, )

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

  • Tuplas Tuplas podem ser usadas para atribuies mltiplas.

    Exemplo:

    A, B = ( 10, 15 )

    equivalente a A = 10 e B = 15

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

  • Strings Strings podem ser manipuladas como tuplas.

    E assim como tuplas no podem ser alteradas.

    Nome = Joo

    print Nome[0]

    J

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

  • Strings Para alterar uma String pode-se convert-la em lista.

    S = Joo

    SL = list(S)

    print SL

    [J,o,,o]

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

  • 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

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

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

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

  • 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.

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

  • 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}

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

  • Dicionrios Para acessar os valores de um dicionrio,

    colocamos a chave entre colchetes, com em listas:

    print Telefones[nilo]

    9717

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

  • 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

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

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

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

  • 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 }

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

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

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

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

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

  • 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

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

  • 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()

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

  • Arquivos Modos para abertura de arquivos:

    Modo Funo

    r Leitura

    w Escrita. Apaga caso j exista

    a Abre para adicionar ao final (append)

    r+ Leitura e escrita

    b 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.

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

  • 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.

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

  • 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)

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

  • 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

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

  • Onde aprender mais Visite o site:

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

    introduo programao.

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