SlideShare une entreprise Scribd logo
1  sur  36
Grupo – 1
 Júlio César Eiras Melanda – 14267
 Emmanuel Ferreira Borges - 13675
Wellington dos Santos Flauzino – 13739

   Universidade Federal de Itajubá - 27/05/09
Conteúdo

    Objetivos

    O que é Python

    Características Importantes
         −      Paradigma
         −      Compilação
         −      Tipagem
         −      Escopo de variáveis
         −      Multiplataforma
         −      Estruturas de dados nativas
         −      Outras características
Conteúdo (cont.)

    Programando
        −   Começando...
        −   Sintaxe básica
        −   Fora do interpretador
        −   Controle de fluxo – seleção
        −   Controle de fluxo – laço
        −   Controle de fluxo – laço
        −   Subprogramas
        −   Orientação a Objetos
        −   Programação funcional
Conteúdo (cont.)
●   Módulos
●   Programas que usam Python
●   Referências
Objetivos
Apresentar para a turma a linguagem de programação Python
em sua versão 2.x pois houve quebra de compatibilidade na
versão 3.0 que ainda não é largamente usada..

Desta forma, serão abordados tópicos referentes ao projeto da
linguagem, relacionando à matéria estudada, além de alguns
exemplos de como funciona a programação nesta linguagem
que está entre as que mais vem crescendo em importância nos
últimos anos.
O que é Python
Python é uma linguagem de programação poderosa e fácil de
aprender que possui estruturas de alto nível, com uma abordagem
simples e efetiva à programação orientada a objetos. [1]

Foi criada no início da década de 90 por Guido van Rossum na
Holanda no Stichting Mathematisch Centrum. Todos os releases,
exceto 1.6, 1.6.1 e 2.0 são distribuídos sob a GPL-compatível. [2]

O nome vem do show da BBC “Monty Python's Flying Circus”, e
não das cobras de mesmo nome.[1]

Python é muito versátil podendo ser usada em aplicativos Web do
lado servidor, jogos, programas de controle e configuração de
sistemas, scripts, editores de imagens, music players, Web
browsers e muito mais.
Características Importantes
Características Importantes

    Paradigmas
        −   Multi-paradigma
                 
                     Orientada a Objetos
                 
                     Procedural
                 
                     Funcional
                 
                     Scripting


    Compilação
        −   Interpretada
        −   Programação interativa
        −   Bytecodes
Características Importantes

    Tipagem
         −    Dinâmica
         −    Forte

    Escopo de variáveis
         −    Estático com vinculação dinâmica
         −    Podem ser acessados diretamente:
                 
                      Variáveis locais
                 
                      Variáveis globais
                 
                      Variáveis externas (nomes pré-definidos)
Características Importantes

    Multiplataforma
         −    Windows
         −    GNU/Linux
         −    MacOS
         −    PalmOS
         −    Symbian

    Estruturas de dados nativas
         −    Listas
         −    Dicionários
         −    Tuplas
         −    Conjuntos
Características Importantes

    Outras características
         −    Tudo é objeto (inclusive tipos de dados)
         −    Tipo nativo para números complexos
         −    Extensa biblioteca padrão
         −    Suporta coerção (dentro dos limites impostos pela
              tipagem forte)
Programando
Começando...

    Na programação interativa, basta abrir o interpretador e digitar
    os comandos


>>> print “Olha eu aqui!” #isto é um comentário
Olha eu aqui!
>>> x = '3' #Não precisa declarar x
>>> x             #Mostra o objeto vinculado ao nome x
'3'
Sintaxe Básica

    Blocos são definidos por identação
>>> i = 0              #Sem ';' no final da instrução
>>> while i < 2:                 #Sem begin ou {
...        print i, #vírgula evita quebra de linha
...        i += 1 #operador de atribuição composto
...                              #sem end ou }
0 1

    O ':' indica que a próxima instrução faz parte
    de um bloco
Fora do interpretador

    Código fonte em arquivo .py ou .pyw (no Windows)

    Exemplo:
#!/usr/bin/env python
#-*- coding: utf8 -*-
#mentira.py
'''Mostra uma mentira na tela'''
print “Não fui eu!!!”

    Primeira linha para chamar o interpretador python (somente em
    Unix)

    Segunda linha conta para o interpretador qual a codificação do
    arquivo. Sem ela, é levantada uma exceção se houver
    caracteres não ASCII.
Fora do interpretador (cont.)

    A terceira linha é um comentário com o nome do arquivo
    python. É convenção colocar este comentário em todos os
    módulos (arquivos) criados.

    A quarta linha é uma dosctrnig (texto de documentação). Todos
    objetos devem ter uma docstring antes de começar com as
    instruções propriamente (convenção).

    Finalmente a instrução que será interpretada e executada
Controle de fluxo - seleção

    Em python não existe switch
if x < 0:
         pass      #usado para não fazer nada
else:
         pass
if y == 1:            #if e elif funcionam como cases
         pass     #com a vantagem de aceitar
elif y > 2: #expressões
         pass
else:              #Faz o papel do default
         pass
Controle de fluxo - seleção
●   Fazer um switch usando
    dicionários:
    def case_1():            x = raw_input()
           print "um"        try:  #pega excessão
    def case_2():                  switch[x]()
           print "dois"      except:
    def case_3():                  print "default"
           print "tres"
    switch ={'1':case_1,
              '2':case_2,
              '3':case_3}
Controle de fluxo - laço

    Temos duas instruções para laços – for e while (não tem do)

    while executa um laço condicional pós-teste
while x >= 0:
         y    = x * x
         x -= 1

    for executa iteração sobre uma lista
for i in [1, 2 ,3 ,4]:
         print (' i vale %d') % i

    Podemos gerar listas com a função range()
>>> range(5)
[0, 1, 2, 3, 4]
Controle de fluxo - laço

    Para controle com instruções localizadas pelo usuário temos as
    instruções break e continue do mesmo modo que em C

    Para os casos em que o laço terminar normalmente significa
    algo, usa-se a instrução else
for i in range(2, 10):
         for     n in range(2, i):
                  if i % n == 0:
                       print i, '=', n, '*', i/n
                       break
         else:
                  print i, 'é um número primo'
Subprogramas

    Todos subprogramas são funções

    Funções sem return, ou com return sem parâmetros retornam
    None
def fib(n):
         ''' Calcula fibonacci até n '''
         a, b = 0, 1      #Atribuições simultâneas
         while b < n:
                print b
                a, b = b, a + b       #Avalia da esquerda
                                      #para a direita
Subprogramas (cont.)
def continuar(opcao = true):
      ''' continua alguma coisa '''
      if opcao:
              print “Continuando”
      else:
              print “Você decidiu parar”

>>> continuar() #parâmetro é opcional
Continuando
>>> continuar(false)
Você decidiu parar
Orientação a Objetos
●   Tudo é objeto, da estrutura mais simples à mais complexa
●   Classes
    class MinhaClasse(SuperClasse1):
              ''' Docstring qualquer '''
              atributo1 = 'valor do atributo 1'
              _atributo2 = 9
              def __init__(self, atributo1, atributoS):
                   self.atributo1 = atributo1
                   SuperClasse1.__init__(atributoS)
              def metodo1(self, *params):
                   pass
Orientação a objetos
●   Python possui herança múltipla
●   Todo método de classe recebe o parâmetro self
●   Atributos não públicos : _atributo2
●   Método __init__ é o primeiro a ser executado
●   __init__ não é um construtor
Orientação a objetos (cont.)

x = classe()              #Instanciando...
y = classe2(param)
x.metodo1(param1, param2)   #utilizando métodos
z = y.troca1(a, b)
var = x.atributo1           #utilizando atributo
y.atributo2 = 'Arara'   #'setando' atributos
Programação funcional
●   filter(func, lista) retorna uma sequência com os itens da lista
    para os quais func é verdadeiro
    def f(x): return x % 2 != 0 and x % 3 != 0
    >>> filter(f, range(2, 25))
    [5, 7, 11, 13, 17, 19, 23]
●   map(func, lista) aplica func(item) em cada item da lista
    retornando uma lista de valores retornados por func(item)
    def f(x): return x*x*x
    >>> map(f, range(1, 5))
    [1, 8, 27, 64]  # códigos extraídos de [1]
Programação funcional (cont.)
●   reduce(func, lista) aplica sucessivamente func aos elementos
    de lista dois a dois, retornando um único valor
    def add(x, y): return x + y
    >>> reduce(add, range(1, 11))
    55
●   Funções lambda: cria funções anônimas simples
    def incrementa(n)
           return lambda x: x + n #somente uma
    >>> f = incrementa(20)       #expressão
    >>> f(20)
    40
Módulos

●   Interfaces gráficas
         –   wxPython
         –   TkInter
         –   PyQt
         –   PyGTK
●   Científico e numérico
         –   numpy
         –   scipy
         –   ScientificPython
         –   BioPython
Módulos (cont.)
●   Jogos
          –   Pygame
●   Imagens
          –   PyOpenGL
          –   PyOgre
          –   Soya 3D
          –   Panda 3d
●   Web
          –   Django
          –   TurboGears
          –   Zope
Programas que usam Python

●   YUM
●   Wicd
●   BitTorrent
●   ForecastWatch
●   Wing IDE
●   Blender (renderização de imagens)
●   OpenOffice
●   Scribus
●   Vim
Programas que usam Python
               (cont.)
●   GIMP
●   Inkscape
●   Poser
●   Jogos
           –   Battlefield 2 (Windows)
           –   Civilization IV (Windows)
           –   Frequency (PS2)
           –   Star Trek Bridge Commander (Windows)
           –   Vegastrike (Multiplataforma)
           –   Frets On Fire
Frets On Fire




Civilization IV
Mount & Blade




PySol
Inkscape




Poser
Referências

●   Rossum, Guido von, PythonTutorial– Release 2.4.2, 2005,
    Python Software Foundation
●   Rossum, Guido von, Python Tutorial – Release 2.6.1, 2009,
    Python Software Foundation - [1]
●   Rossum, Guido von, The Python Language Reference –
    Release 2.6.1, 2009, Python Software Foundation - [2]
●   Pilgrim, Mark, Dive Into Python – versão 5.4, 2004,
    diveintopython.org
Obrigado!!!

Contenu connexe

Tendances

Lógica de Programação - Unimep/Pronatec - Aula06
Lógica de Programação - Unimep/Pronatec - Aula06Lógica de Programação - Unimep/Pronatec - Aula06
Lógica de Programação - Unimep/Pronatec - Aula06André Phillip Bertoletti
 
Action script1 apresentação2
Action script1 apresentação2Action script1 apresentação2
Action script1 apresentação2Jorge Louro
 
53392229 apostila-de-algoritmo-2009
53392229 apostila-de-algoritmo-200953392229 apostila-de-algoritmo-2009
53392229 apostila-de-algoritmo-2009starley lobo
 
Java: Estruturas de Repetição
Java: Estruturas de RepetiçãoJava: Estruturas de Repetição
Java: Estruturas de RepetiçãoArthur Emanuel
 
Recursividade em linguagem C
Recursividade em linguagem CRecursividade em linguagem C
Recursividade em linguagem CLeonardo Lima
 
Lógica de programação pascal
Lógica de programação   pascalLógica de programação   pascal
Lógica de programação pascalJocelma Rios
 
Logica Algoritmo 05 Repeticao
Logica Algoritmo 05 RepeticaoLogica Algoritmo 05 Repeticao
Logica Algoritmo 05 RepeticaoRegis Magalhães
 
Algoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoAlgoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoMauro Pereira
 
Curso de Delphi - Linguagem Pascal
Curso de Delphi - Linguagem PascalCurso de Delphi - Linguagem Pascal
Curso de Delphi - Linguagem PascalJosé Araújo
 
Java básico - Módulo 05 - Estruturas de Repetição
Java  básico - Módulo 05 - Estruturas de RepetiçãoJava  básico - Módulo 05 - Estruturas de Repetição
Java básico - Módulo 05 - Estruturas de RepetiçãoProfessor Samuel Ribeiro
 
Dicas para maratonas de programação
Dicas para maratonas de programaçãoDicas para maratonas de programação
Dicas para maratonas de programaçãoAnderson Araújo
 
Aula 3 - Lógica de Programação
Aula 3 - Lógica de ProgramaçãoAula 3 - Lógica de Programação
Aula 3 - Lógica de ProgramaçãoInstituto CENTEC
 
Aula 1 aed - lógica de programação
Aula 1   aed - lógica de programaçãoAula 1   aed - lógica de programação
Aula 1 aed - lógica de programaçãoElaine Cecília Gatto
 

Tendances (20)

Lógica de Programação - Unimep/Pronatec - Aula06
Lógica de Programação - Unimep/Pronatec - Aula06Lógica de Programação - Unimep/Pronatec - Aula06
Lógica de Programação - Unimep/Pronatec - Aula06
 
Aula05 - Lógica de Programação
Aula05 - Lógica de ProgramaçãoAula05 - Lógica de Programação
Aula05 - Lógica de Programação
 
Action script1 apresentação2
Action script1 apresentação2Action script1 apresentação2
Action script1 apresentação2
 
02 while
02 while02 while
02 while
 
python.comandos
python.comandospython.comandos
python.comandos
 
Aula02 - Lógica de Programação
Aula02 - Lógica de ProgramaçãoAula02 - Lógica de Programação
Aula02 - Lógica de Programação
 
TWP40 Revisão Geral 3
TWP40 Revisão Geral 3TWP40 Revisão Geral 3
TWP40 Revisão Geral 3
 
53392229 apostila-de-algoritmo-2009
53392229 apostila-de-algoritmo-200953392229 apostila-de-algoritmo-2009
53392229 apostila-de-algoritmo-2009
 
Java: Estruturas de Repetição
Java: Estruturas de RepetiçãoJava: Estruturas de Repetição
Java: Estruturas de Repetição
 
Recursividade em linguagem C
Recursividade em linguagem CRecursividade em linguagem C
Recursividade em linguagem C
 
Lógica de programação pascal
Lógica de programação   pascalLógica de programação   pascal
Lógica de programação pascal
 
Logica Algoritmo 05 Repeticao
Logica Algoritmo 05 RepeticaoLogica Algoritmo 05 Repeticao
Logica Algoritmo 05 Repeticao
 
Algoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoAlgoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigo
 
Curso de Delphi - Linguagem Pascal
Curso de Delphi - Linguagem PascalCurso de Delphi - Linguagem Pascal
Curso de Delphi - Linguagem Pascal
 
Java básico - Módulo 05 - Estruturas de Repetição
Java  básico - Módulo 05 - Estruturas de RepetiçãoJava  básico - Módulo 05 - Estruturas de Repetição
Java básico - Módulo 05 - Estruturas de Repetição
 
Dicas para maratonas de programação
Dicas para maratonas de programaçãoDicas para maratonas de programação
Dicas para maratonas de programação
 
Visualg
VisualgVisualg
Visualg
 
Aula 3 - Lógica de Programação
Aula 3 - Lógica de ProgramaçãoAula 3 - Lógica de Programação
Aula 3 - Lógica de Programação
 
TWP38 Revisão Geral 2
TWP38 Revisão Geral 2TWP38 Revisão Geral 2
TWP38 Revisão Geral 2
 
Aula 1 aed - lógica de programação
Aula 1   aed - lógica de programaçãoAula 1   aed - lógica de programação
Aula 1 aed - lógica de programação
 

Similaire à Aula python

Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Pythonguestac3de
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação PythonJunior Sobrenome
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsHelio Colombe
 
Cherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webCherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webAlvaro Oliveira
 
Computação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialComputação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialFabio Spanhol
 
Arduino e Python: Do It Yourself
Arduino e Python: Do It YourselfArduino e Python: Do It Yourself
Arduino e Python: Do It YourselfBruno Nascimento
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonAlvaro Oliveira
 
Trabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonTrabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonRicardo Zalla
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1Flávio Ribeiro
 
Py sintaxe
Py sintaxePy sintaxe
Py sintaxeFlapenta
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na práticaRafael Cassau
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Pythonrodrigopex
 
Iniciando em Python
Iniciando em PythonIniciando em Python
Iniciando em PythonRober Guerra
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em PythonRodrigo Hübner
 
Por que Python? Vamos Conhecer? Vamos Aprender?
Por que Python? Vamos Conhecer? Vamos Aprender?Por que Python? Vamos Conhecer? Vamos Aprender?
Por que Python? Vamos Conhecer? Vamos Aprender?Juliano Atanazio
 
Tutorial Python ed. #2
Tutorial Python ed. #2Tutorial Python ed. #2
Tutorial Python ed. #2Fabio Spanhol
 

Similaire à Aula python (20)

Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Python
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação Python
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - Português
 
Python Emsl2009
Python Emsl2009Python Emsl2009
Python Emsl2009
 
Cherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webCherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações web
 
Python
PythonPython
Python
 
Computação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialComputação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo Tutorial
 
Arduino e Python: Do It Yourself
Arduino e Python: Do It YourselfArduino e Python: Do It Yourself
Arduino e Python: Do It Yourself
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a Python
 
Trabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonTrabalho sobre a linguagem Python
Trabalho sobre a linguagem Python
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
 
Py sintaxe
Py sintaxePy sintaxe
Py sintaxe
 
Python2.5.ppt
Python2.5.pptPython2.5.ppt
Python2.5.ppt
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na prática
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Python
 
Iniciando em Python
Iniciando em PythonIniciando em Python
Iniciando em Python
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em Python
 
Python
PythonPython
Python
 
Por que Python? Vamos Conhecer? Vamos Aprender?
Por que Python? Vamos Conhecer? Vamos Aprender?Por que Python? Vamos Conhecer? Vamos Aprender?
Por que Python? Vamos Conhecer? Vamos Aprender?
 
Tutorial Python ed. #2
Tutorial Python ed. #2Tutorial Python ed. #2
Tutorial Python ed. #2
 

Aula python

  • 1. Grupo – 1 Júlio César Eiras Melanda – 14267 Emmanuel Ferreira Borges - 13675 Wellington dos Santos Flauzino – 13739 Universidade Federal de Itajubá - 27/05/09
  • 2. Conteúdo  Objetivos  O que é Python  Características Importantes − Paradigma − Compilação − Tipagem − Escopo de variáveis − Multiplataforma − Estruturas de dados nativas − Outras características
  • 3. Conteúdo (cont.)  Programando − Começando... − Sintaxe básica − Fora do interpretador − Controle de fluxo – seleção − Controle de fluxo – laço − Controle de fluxo – laço − Subprogramas − Orientação a Objetos − Programação funcional
  • 4. Conteúdo (cont.) ● Módulos ● Programas que usam Python ● Referências
  • 5. Objetivos Apresentar para a turma a linguagem de programação Python em sua versão 2.x pois houve quebra de compatibilidade na versão 3.0 que ainda não é largamente usada.. Desta forma, serão abordados tópicos referentes ao projeto da linguagem, relacionando à matéria estudada, além de alguns exemplos de como funciona a programação nesta linguagem que está entre as que mais vem crescendo em importância nos últimos anos.
  • 6. O que é Python Python é uma linguagem de programação poderosa e fácil de aprender que possui estruturas de alto nível, com uma abordagem simples e efetiva à programação orientada a objetos. [1] Foi criada no início da década de 90 por Guido van Rossum na Holanda no Stichting Mathematisch Centrum. Todos os releases, exceto 1.6, 1.6.1 e 2.0 são distribuídos sob a GPL-compatível. [2] O nome vem do show da BBC “Monty Python's Flying Circus”, e não das cobras de mesmo nome.[1] Python é muito versátil podendo ser usada em aplicativos Web do lado servidor, jogos, programas de controle e configuração de sistemas, scripts, editores de imagens, music players, Web browsers e muito mais.
  • 8. Características Importantes  Paradigmas − Multi-paradigma  Orientada a Objetos  Procedural  Funcional  Scripting  Compilação − Interpretada − Programação interativa − Bytecodes
  • 9. Características Importantes  Tipagem − Dinâmica − Forte  Escopo de variáveis − Estático com vinculação dinâmica − Podem ser acessados diretamente:  Variáveis locais  Variáveis globais  Variáveis externas (nomes pré-definidos)
  • 10. Características Importantes  Multiplataforma − Windows − GNU/Linux − MacOS − PalmOS − Symbian  Estruturas de dados nativas − Listas − Dicionários − Tuplas − Conjuntos
  • 11. Características Importantes  Outras características − Tudo é objeto (inclusive tipos de dados) − Tipo nativo para números complexos − Extensa biblioteca padrão − Suporta coerção (dentro dos limites impostos pela tipagem forte)
  • 13. Começando...  Na programação interativa, basta abrir o interpretador e digitar os comandos >>> print “Olha eu aqui!” #isto é um comentário Olha eu aqui! >>> x = '3' #Não precisa declarar x >>> x #Mostra o objeto vinculado ao nome x '3'
  • 14. Sintaxe Básica  Blocos são definidos por identação >>> i = 0 #Sem ';' no final da instrução >>> while i < 2: #Sem begin ou { ... print i, #vírgula evita quebra de linha ... i += 1 #operador de atribuição composto ... #sem end ou } 0 1  O ':' indica que a próxima instrução faz parte de um bloco
  • 15. Fora do interpretador  Código fonte em arquivo .py ou .pyw (no Windows)  Exemplo: #!/usr/bin/env python #-*- coding: utf8 -*- #mentira.py '''Mostra uma mentira na tela''' print “Não fui eu!!!”  Primeira linha para chamar o interpretador python (somente em Unix)  Segunda linha conta para o interpretador qual a codificação do arquivo. Sem ela, é levantada uma exceção se houver caracteres não ASCII.
  • 16. Fora do interpretador (cont.)  A terceira linha é um comentário com o nome do arquivo python. É convenção colocar este comentário em todos os módulos (arquivos) criados.  A quarta linha é uma dosctrnig (texto de documentação). Todos objetos devem ter uma docstring antes de começar com as instruções propriamente (convenção).  Finalmente a instrução que será interpretada e executada
  • 17. Controle de fluxo - seleção  Em python não existe switch if x < 0: pass #usado para não fazer nada else: pass if y == 1: #if e elif funcionam como cases pass #com a vantagem de aceitar elif y > 2: #expressões pass else: #Faz o papel do default pass
  • 18. Controle de fluxo - seleção ● Fazer um switch usando dicionários: def case_1(): x = raw_input() print "um" try:  #pega excessão def case_2(): switch[x]() print "dois" except: def case_3(): print "default" print "tres" switch ={'1':case_1,    '2':case_2,    '3':case_3}
  • 19. Controle de fluxo - laço  Temos duas instruções para laços – for e while (não tem do)  while executa um laço condicional pós-teste while x >= 0: y = x * x x -= 1  for executa iteração sobre uma lista for i in [1, 2 ,3 ,4]: print (' i vale %d') % i  Podemos gerar listas com a função range() >>> range(5) [0, 1, 2, 3, 4]
  • 20. Controle de fluxo - laço  Para controle com instruções localizadas pelo usuário temos as instruções break e continue do mesmo modo que em C  Para os casos em que o laço terminar normalmente significa algo, usa-se a instrução else for i in range(2, 10): for n in range(2, i): if i % n == 0: print i, '=', n, '*', i/n break else: print i, 'é um número primo'
  • 21. Subprogramas  Todos subprogramas são funções  Funções sem return, ou com return sem parâmetros retornam None def fib(n): ''' Calcula fibonacci até n ''' a, b = 0, 1 #Atribuições simultâneas while b < n: print b a, b = b, a + b #Avalia da esquerda #para a direita
  • 22. Subprogramas (cont.) def continuar(opcao = true): ''' continua alguma coisa ''' if opcao: print “Continuando” else: print “Você decidiu parar” >>> continuar() #parâmetro é opcional Continuando >>> continuar(false) Você decidiu parar
  • 23. Orientação a Objetos ● Tudo é objeto, da estrutura mais simples à mais complexa ● Classes class MinhaClasse(SuperClasse1): ''' Docstring qualquer ''' atributo1 = 'valor do atributo 1' _atributo2 = 9 def __init__(self, atributo1, atributoS): self.atributo1 = atributo1 SuperClasse1.__init__(atributoS) def metodo1(self, *params): pass
  • 24. Orientação a objetos ● Python possui herança múltipla ● Todo método de classe recebe o parâmetro self ● Atributos não públicos : _atributo2 ● Método __init__ é o primeiro a ser executado ● __init__ não é um construtor
  • 25. Orientação a objetos (cont.) x = classe()              #Instanciando... y = classe2(param) x.metodo1(param1, param2) #utilizando métodos z = y.troca1(a, b) var = x.atributo1 #utilizando atributo y.atributo2 = 'Arara' #'setando' atributos
  • 26. Programação funcional ● filter(func, lista) retorna uma sequência com os itens da lista para os quais func é verdadeiro def f(x): return x % 2 != 0 and x % 3 != 0 >>> filter(f, range(2, 25)) [5, 7, 11, 13, 17, 19, 23] ● map(func, lista) aplica func(item) em cada item da lista retornando uma lista de valores retornados por func(item) def f(x): return x*x*x >>> map(f, range(1, 5)) [1, 8, 27, 64]  # códigos extraídos de [1]
  • 27. Programação funcional (cont.) ● reduce(func, lista) aplica sucessivamente func aos elementos de lista dois a dois, retornando um único valor def add(x, y): return x + y >>> reduce(add, range(1, 11)) 55 ● Funções lambda: cria funções anônimas simples def incrementa(n) return lambda x: x + n #somente uma >>> f = incrementa(20)       #expressão >>> f(20) 40
  • 28. Módulos ● Interfaces gráficas – wxPython – TkInter – PyQt – PyGTK ● Científico e numérico – numpy – scipy – ScientificPython – BioPython
  • 29. Módulos (cont.) ● Jogos – Pygame ● Imagens – PyOpenGL – PyOgre – Soya 3D – Panda 3d ● Web – Django – TurboGears – Zope
  • 30. Programas que usam Python ● YUM ● Wicd ● BitTorrent ● ForecastWatch ● Wing IDE ● Blender (renderização de imagens) ● OpenOffice ● Scribus ● Vim
  • 31. Programas que usam Python (cont.) ● GIMP ● Inkscape ● Poser ● Jogos – Battlefield 2 (Windows) – Civilization IV (Windows) – Frequency (PS2) – Star Trek Bridge Commander (Windows) – Vegastrike (Multiplataforma) – Frets On Fire
  • 35. Referências ● Rossum, Guido von, PythonTutorial– Release 2.4.2, 2005, Python Software Foundation ● Rossum, Guido von, Python Tutorial – Release 2.6.1, 2009, Python Software Foundation - [1] ● Rossum, Guido von, The Python Language Reference – Release 2.6.1, 2009, Python Software Foundation - [2] ● Pilgrim, Mark, Dive Into Python – versão 5.4, 2004, diveintopython.org