Programação em



       Rodrigo Hübner




              
Por que usamos python...

     Conceitos fundamentais são fáceis de aprender;
     O mesmo código roda em plataformas Linux, Windows e 
    MAC sem alterações;
     Possui uma sintaxe clara e de fácil aprendizado;
     Suporte a uma diversidade muito grande de bibliotecas;
     Tipagem forte e dinâmica;
     Tipos pré definidos são poderosos;
     É livre!

                             E por aí vai...

                                    
Aonde a cobra anda?




    ● Governo Brasileiro (Website)
    ● CIA (Website)




                                          OLPC – One Laptop per Child




                Quer mais? http://pythonology.org/success
                                      
Interação com outras linguagens

                  Cpython
                   Jython
                 IronPython
              Python for Delphi
               Python for .NET
               Lunatic Python
                    PyPy




                       
SHOW ME THE CODE!




             
Aspectos Iniciais...


    Tipos já conhecidos:
    ● Inteiros, String, Reais...




    Tipos mais poderosos:

    ● Listas:
    Ex: lista = [“Fulano”, “Ciclano”, 123, 3.14]

    ● Tuplas:
    Ex:  tupla = (“Fulano”, “Ciclano”, 123, 3.14)

    ● Dicionários:
    Ex: dict = {1: “Eu”, 2: “Você”, 3: “Eles”}



                                              
Aspectos Iniciais...

    Uso do interpretador interativo

    for numero in range (5):
         print numero
    0
    1
    2
    3                     Ajuda! dos métodos primitivos:
    4                     ● dir(), help(), type()




                                               Projetos Interessantes:
                                               ● Ipython
                                               ● Reinteract




                                           
Aspectos Iniciais...

Exemplo “iniciante”:

     01   # ­*­ coding: utf­8 ­*­
     02                                      Código que simula um diálogo entre duas
     03   import threading                          pessoas usando “thread”
     04   import time
     05
     06   def conversa(*args):
     07        for frase in args:
     08              print frase
     09              time.sleep(2)
     10
     11   pessoa1 = ("Fulano: E aí Ciclano", "Fulano: programo em Python!")
     12   pessoa2 = ("Ciclano: E aí Fulano, programa e que?", "Ciclano: Bom garoto!!! :)")
     13
     14   threading.Thread (target=conversa, args=pessoa1).start()
     15   time.sleep(1)
     16   threading.Thread (target=conversa, args=pessoa2).start()

                                              
Aspectos mais interessantes!

    Um laço for simplesmente...

    dados = ['Flisol', 'Rodrigo', 'Maringa']       for item in range(5):
    for itens in dados:                                  print item**2,
          print itens
                                                   0 1 4 9 16
    Flisol
    Maringa
    Rodrigo
                             +
     Um pouco de conceitos matemáticos...

     A = {x² : x Є {0 ... 9}}
     B = (1, 2, 4, 8, ... 2¹²)
                                                   =            List Comprehensions!
     C = {x | x Є A e x é par}


                                                
Aspectos mais interessantes!

    List Comprehensions

    ● A = {x² : x Є {0 ... 9}}

    a = [x**2 for x in range(10)]
    a
    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

    ● B = (1, 2, 4, 8, ... 2¹²)

    [2**i for i in range(13)]
    [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096]


    ● C = {x | x Є A e x é par}
    [x for x in a if x % 2 == 0]
    [0, 4, 16, 36, 64]



                                                  
Aspectos mais interessantes!


Função de uma linha: lambda()          +    Listas (ou List Comprehensions)   =   Map



     frase = 'O rato roeu a roupa do rei de roma'
     palavras = frase.split()
     palavras

     jaspion = map(lambda w: [w.upper(), w.lower(), len(w)], palavras)
     for i in jaspion:
           print i




                                                     
Aspectos mais interessantes!


    Iteradores e Geradores


                       def  sequencia(numero):
                            i = numero
                            while True:
                                 i += 1
                                 yield i

                       valores = sequencia(10)
                       valores.next()
                       11
                       valores.next()
                       12
                       ...




                                          
Orientação a Objetos

Exemplo simples:
                                                 Uso:
class Pessoa(object):
                                                 pessoa = Pessoa(“Fulano”, “2222 – 8754”)
     def __init__ (self, nome, telefone):        pessoa.escreve()
          self.nome = nome                       Fulano
          self.telefone = telefone               2222 – 8754

     def escreve(self):
          print “Nome: ”+self.nome
          print “Telefone: ”+self.telefone




                    Em python e possível implementa herança multipla!




                                              
Desenvolvimento para todos os gostos!!!


       WEB                Desktop           Processamento
      Django;              Tkinter;        Imagens / scripts
    Zope / Plone;          PyGTK;                 PIL;
       Pylons;              PyQT;            PythonMagick;
    Turbo Gears;          wxPython;          GIMP­Python;
    mod_python;               ...                  ...
         ...

      Ciência               BD               Diversão
       Scipy;              ZOBD;              PyGame
     BioPython;            gadfly;            Blender
      AstroPy;            Postgres;              ...
      NumPy;              MySQL;
         ...                 ...


                                   
Uso de banco de dados: PostgreSQL

    # Importa o módulo do PostegreSQL
    import PgSQL

    # Faz conexão com o banco de dados
    db = PgSQL.connect(host='host', database='bd', 
                       user='usuario',password='senha')

    # Cria um cursor
    cursor = db.cursor()

    # Executa o SQL
    cursor.execute("SELECT * FROM tabela")

    # Recebe um conjunto de resultado em forma de “tupla”
    result = cursor.fetchall()

    # Navega pelos resultados armazenados na tupla
    for record in result:
          print record[0] , "­­>", record[1]



                                             
PERGUNTAS?




          Rodrigo Hübner
    E­mail: rhubner@gmail.com
     http://rodrigohubner.com

                
Referencias Bibliográficas

    http://pythonbrasil.com.br
    http://www.reinteract.org
    http://ipython.scipy.org
    http://djangoproject.org

    Livros:
         Learning to Python
         Beginning Game Development with Python and Pygame
         Dive into Python

    Canal IRC:
       #python­br (serv. FreeNode)

    Lista de Discussão:
         python­brasil (yahoo grupos)
         grupy­pr (google grupos)



                                          

Introdução à Programação em Python

  • 1.
    Programação em Rodrigo Hübner    
  • 2.
    Por que usamos python...  Conceitos fundamentais são fáceis de aprender;  O mesmo código roda em plataformas Linux, Windows e  MAC sem alterações;  Possui uma sintaxe clara e de fácil aprendizado;  Suporte a uma diversidade muito grande de bibliotecas;  Tipagem forte e dinâmica;  Tipos pré definidos são poderosos;  É livre! E por aí vai...    
  • 3.
    Aonde a cobra anda? ● Governo Brasileiro (Website) ● CIA (Website) OLPC – One Laptop per Child Quer mais? http://pythonology.org/success    
  • 4.
    Interação com outras linguagens  Cpython  Jython  IronPython  Python for Delphi  Python for .NET  Lunatic Python  PyPy    
  • 5.
    SHOW ME THECODE!    
  • 6.
    Aspectos Iniciais... Tipos já conhecidos: ● Inteiros, String, Reais... Tipos mais poderosos: ● Listas: Ex: lista = [“Fulano”, “Ciclano”, 123, 3.14] ● Tuplas: Ex:  tupla = (“Fulano”, “Ciclano”, 123, 3.14) ● Dicionários: Ex: dict = {1: “Eu”, 2: “Você”, 3: “Eles”}    
  • 7.
    Aspectos Iniciais... Uso do interpretador interativo for numero in range (5): print numero 0 1 2 3 Ajuda! dos métodos primitivos: 4 ● dir(), help(), type() Projetos Interessantes: ● Ipython ● Reinteract    
  • 8.
    Aspectos Iniciais... Exemplo “iniciante”: 01 # ­*­ coding: utf­8 ­*­ 02 Código que simula um diálogo entre duas 03 import threading pessoas usando “thread” 04 import time 05 06 def conversa(*args): 07 for frase in args: 08 print frase 09 time.sleep(2) 10 11 pessoa1 = ("Fulano: E aí Ciclano", "Fulano: programo em Python!") 12 pessoa2 = ("Ciclano: E aí Fulano, programa e que?", "Ciclano: Bom garoto!!! :)") 13 14 threading.Thread (target=conversa, args=pessoa1).start() 15 time.sleep(1) 16 threading.Thread (target=conversa, args=pessoa2).start()    
  • 9.
    Aspectos mais interessantes! Um laço for simplesmente... dados = ['Flisol', 'Rodrigo', 'Maringa'] for item in range(5): for itens in dados: print item**2, print itens 0 1 4 9 16 Flisol Maringa Rodrigo + Um pouco de conceitos matemáticos... A = {x² : x Є {0 ... 9}} B = (1, 2, 4, 8, ... 2¹²) = List Comprehensions! C = {x | x Є A e x é par}    
  • 10.
    Aspectos mais interessantes! List Comprehensions ● A = {x² : x Є {0 ... 9}} a = [x**2 for x in range(10)] a [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] ● B = (1, 2, 4, 8, ... 2¹²) [2**i for i in range(13)] [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096] ● C = {x | x Є A e x é par} [x for x in a if x % 2 == 0] [0, 4, 16, 36, 64]    
  • 11.
    Aspectos mais interessantes! Função de uma linha: lambda() + Listas (ou List Comprehensions) = Map frase = 'O rato roeu a roupa do rei de roma' palavras = frase.split() palavras jaspion = map(lambda w: [w.upper(), w.lower(), len(w)], palavras) for i in jaspion: print i    
  • 12.
    Aspectos mais interessantes! Iteradores e Geradores def  sequencia(numero): i = numero while True: i += 1 yield i valores = sequencia(10) valores.next() 11 valores.next() 12 ...    
  • 13.
    Orientação a Objetos Exemplo simples: Uso: class Pessoa(object): pessoa = Pessoa(“Fulano”, “2222 – 8754”) def __init__ (self, nome, telefone): pessoa.escreve() self.nome = nome Fulano self.telefone = telefone 2222 – 8754 def escreve(self): print “Nome: ”+self.nome print “Telefone: ”+self.telefone Em python e possível implementa herança multipla!    
  • 14.
    Desenvolvimento para todos os gostos!!! WEB Desktop Processamento Django; Tkinter; Imagens / scripts Zope / Plone; PyGTK; PIL; Pylons; PyQT; PythonMagick; Turbo Gears; wxPython; GIMP­Python; mod_python; ... ... ... Ciência BD Diversão Scipy; ZOBD; PyGame BioPython; gadfly; Blender AstroPy; Postgres; ... NumPy; MySQL; ... ...    
  • 15.
    Uso de banco de dados: PostgreSQL # Importa o módulo do PostegreSQL import PgSQL # Faz conexão com o banco de dados db = PgSQL.connect(host='host', database='bd',        user='usuario',password='senha') # Cria um cursor cursor = db.cursor() # Executa o SQL cursor.execute("SELECT * FROM tabela") # Recebe um conjunto de resultado em forma de “tupla” result = cursor.fetchall() # Navega pelos resultados armazenados na tupla for record in result: print record[0] , "­­>", record[1]    
  • 16.
    PERGUNTAS? Rodrigo Hübner E­mail: rhubner@gmail.com http://rodrigohubner.com    
  • 17.
    Referencias Bibliográficas http://pythonbrasil.com.br http://www.reinteract.org http://ipython.scipy.org http://djangoproject.org Livros: Learning to Python Beginning Game Development with Python and Pygame Dive into Python Canal IRC: #python­br (serv. FreeNode) Lista de Discussão: python­brasil (yahoo grupos) grupy­pr (google grupos)