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!!!

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 aturma 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.
  • 7.
  • 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)
  • 12.
  • 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 usamPython ● YUM ● Wicd ● BitTorrent ● ForecastWatch ● Wing IDE ● Blender (renderização de imagens) ● OpenOffice ● Scribus ● Vim
  • 31.
    Programas que usamPython (cont.) ● GIMP ● Inkscape ● Poser ● Jogos – Battlefield 2 (Windows) – Civilization IV (Windows) – Frequency (PS2) – Star Trek Bridge Commander (Windows) – Vegastrike (Multiplataforma) – Frets On Fire
  • 32.
  • 33.
  • 34.
  • 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
  • 36.