Workshop Python.1

2,627 views

Published on

Workshop de Python no CIn, 12/07/2007

Published in: Technology
1 Comment
3 Likes
Statistics
Notes
No Downloads
Views
Total views
2,627
On SlideShare
0
From Embeds
0
Number of Embeds
519
Actions
Shares
0
Downloads
135
Comments
1
Likes
3
Embeds 0
No embeds

No notes for slide

Workshop Python.1

  1. 1. Python I
  2. 2. Básico Instalação Terminal Tipos I Estruturas de Controle Tipos II Funções Scripts Leituras Recomendadas
  3. 3. Python <ul><ul><li>“ Python é uma linguagem de programação interpretada, interativa e orientada a objetos, que combina um notável poder com uma sintaxe muito clara.” </li></ul></ul>
  4. 4. Quem Usa Python? <ul><li>Google </li></ul><ul><li>Nasa </li></ul><ul><li>Industrial Light & Magic </li></ul><ul><li>Itautec </li></ul><ul><li>INdT </li></ul><ul><li>Você? </li></ul>
  5. 5. Para Quê Se Usa Python? <ul><li>Desenvolvimento Web e Internet </li></ul><ul><li>Acesso a Bases de Dados </li></ul><ul><li>Desktop GUIs </li></ul><ul><li>Computação Numérica e Científica </li></ul><ul><li>Programação em Rede </li></ul><ul><li>Jogos </li></ul><ul><li>Gráficos 3D </li></ul><ul><li>Modelagem de Hardware </li></ul><ul><li>Educação </li></ul>
  6. 6. Características <ul><li>Interpretada </li></ul><ul><li>Portável </li></ul><ul><li>Extensível (C....) </li></ul><ul><li>Uso extensivo de introspecção </li></ul><ul><li>Livre </li></ul><ul><li>Multi-tarefa </li></ul><ul><li>Baixa performance </li></ul><ul><li>Multiparadigma: Procedural, Orientada a objetos, Funcional (em breve Lógica) </li></ul><ul><li>Case-sensitive </li></ul>
  7. 7. Python é Portável <ul><li>Python roda em: </li></ul><ul><ul><li>Windows </li></ul></ul><ul><ul><li>Linux/Unix </li></ul></ul><ul><ul><li>MacOS X </li></ul></ul><ul><ul><li>OS/2 </li></ul></ul><ul><ul><li>Amiga </li></ul></ul><ul><ul><li>Handhels Palm </li></ul></ul><ul><ul><li>E nas máquinas virtuais .NET (IronPython) e Java (Jython) </li></ul></ul>
  8. 8. Python é Extensível <ul><li>C! C! C! </li></ul><ul><li>Bindings </li></ul><ul><li>Bibliotecas em C disponíveis em Python: </li></ul><ul><ul><li>PyGame (SDL) </li></ul></ul><ul><ul><li>PyGTK </li></ul></ul><ul><ul><li>PyOpenGL </li></ul></ul><ul><ul><li>muitos eteceteras... </li></ul></ul>
  9. 9. ByteCode Python <ul><li>Python compila automaticamente o código fonte para bytecode </li></ul><ul><li>A extensão do arquivo “compilado” é *.pyc </li></ul><ul><li>A máquina virtual de Python pode ser embutida num executável junto com os bytecodes de sua aplicação </li></ul><ul><li>app.py + python2.4.dll = app.exe </li></ul>
  10. 10. Sem Comandos Declarativos <ul><li>Todos os comandos em Python fazem alguma coisa, não há comandos declarativos (int, float, etc.) ou comandos para “coisas óbvias” (new): </li></ul><ul><ul><li>Java Objeto obj = new Objeto() </li></ul></ul><ul><ul><li>Python obj = Objeto() </li></ul></ul>
  11. 11. Código Python <ul><li>C </li></ul><ul><li>Python </li></ul><ul><ul><li>Blocos delimitados por identação ! </li></ul></ul><ul><ul><li>def soma(a, b): c = a + b return c print “%d” % soma(1, 3) </li></ul></ul><ul><ul><li>int soma(int a, int b) { int c = a + b; return c; } </li></ul></ul><ul><ul><li>print(“%d”, soma(1, 3)) ; </li></ul></ul>
  12. 12. Objeto Documentados <ul><li>Não existem tipos primitivos como “int” de Java – tudo em Python é um objeto, incluindo funções e métodos. </li></ul><ul><li>Diferentemente de C++ e Java os comentários de documentação ficam dentro dos métodos e classes, fazendo parte do objeto que documentam. def metodo(): '''String de documentação.''' return “blah” </li></ul>
  13. 13. Básico Instalação Terminal Tipos I Estruturas de Controle Tipos II Funções Scripts Leituras Recomendadas
  14. 14. Sessão de Instalação <ul><li>Instalação pra Windows, porque qualquer Linux já deve vir com Python </li></ul><ul><li>Baixe o arquivo .msi em </li></ul><ul><li>http://www.python.org </li></ul>
  15. 15. Você Não Precisa de uma IDE! <ul><li>Informação importantíssima: </li></ul><ul><li>Linguagens de programação não são gêmeas siamesas de IDEs! </li></ul><ul><li>Uma coisa é uma coisa, outra coisa é outra coisa. </li></ul><ul><li>Python facilita muito a vida de quem quer usar apenas um editor de texto (com syntax highlighting, é claro!) </li></ul>
  16. 16. Básico Instalação Terminal Tipos I Estruturas de Controle Tipos II Funções Scripts Leituras Recomendadas
  17. 17. Terminal Python <ul><li>Python possui um terminal (ou console) que pode ser usado para emitir comandos individualmente, testar a sintaxe, obter ajuda sobre comandos, etc. </li></ul><ul><li>Abra o Terminal e .... >>> print “Hello World” Hello World >>> a = “Hello World” >>> a 'Hello World' </li></ul>
  18. 18. Comandos Úteis <ul><li>dir : mostra os métodos do objeto indicado >>> a = “teste” >>> dir(a) [........., 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'] >>> a.strip <built-in method strip of str object at 0xb789b9c0> </li></ul><ul><li>help : mostra a string de ajuda do objeto indicado >>> help(a) </li></ul>
  19. 19. Básico Instalação Terminal Tipos I Estruturas de Controle Tipos II Funções Scripts Leituras Recomendadas
  20. 20. Tipagem <ul><li>Dinâmica >>> a = 10 >>> type(a) <type 'int'> >>> a = “uma string” >>> type(a) <type 'str'> </li></ul><ul><li>Forte </li></ul><ul><ul><li>Não existem “casts”, não é permitido: >>> a = (str) 13 </li></ul></ul><ul><ul><li>É necessária uma conversão: >>> a = str(13) </li></ul></ul>
  21. 21. Tipos Numéricos <ul><li>Tipos </li></ul><ul><li>int Inteiro </li></ul><ul><li>long Inteiro longo de tamanho ilimitado </li></ul><ul><li>float Ponto flutuante </li></ul><ul><li>complex Número complexo </li></ul><ul><li>bool Booleano (True or False) </li></ul><ul><li>O tipo é definido durante a atribuição do valor: >>> a = 1.0 >>> type(a) <type 'float'> </li></ul><ul><li>Ou por um construtor >>> a = float(1) </li></ul>
  22. 22. Seqüências <ul><li>str – Seqüência de caracteres (imutável) >>> a = 'blah' >>> type(a) <type 'str'> >>> a = u'sou uma string unicode: blá' >>> type(a) <type 'unicode'> </li></ul><ul><li>tuple (imutável) >>> a = (1, 2, 'blah') </li></ul><ul><li>list (mutável) >>> a = [] >>> a = [1, 2, 3, (1, 2), 'boo'] </li></ul>
  23. 23. Conjuntos & Mapeamentos <ul><li>set – Conjunto; parecido com lista, mas sem itens repetidos >>> a = set([1, 1, 2, 4, 5, 5]) >>> print a set([1, 2, 4, 5]) </li></ul><ul><li>dict – tabela hash ou dicionário; composto de pares (chave, valor) >>> a = {'blah':7, 12:(640, 480)} >>> print a['blah'] 8 >>> print a[12] (640, 480) </li></ul>
  24. 24. Comparações <ul><li>is – identidade </li></ul><ul><li>is not – negação da identidade >>> a = [] >>> b = [] > >> b is a False >>> b is not a True >>> c = a >>> c is a True >>> c is not b True </li></ul>
  25. 25. Básico Instalação Terminal Tipos I Estruturas de Controle Tipos II Funções ...
  26. 26. if <ul><li>C </li></ul><ul><li>Python </li></ul><ul><ul><li>if (a == 1) { </li></ul></ul><ul><ul><li>printf(“op1 ”); </li></ul></ul><ul><ul><li>} else if (a == 2) { </li></ul></ul><ul><ul><li>printf(“op2 ”); </li></ul></ul><ul><ul><li>} else { </li></ul></ul><ul><ul><li>printf(“outra ”); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>if a == 1: </li></ul></ul><ul><ul><li>print “op1” </li></ul></ul><ul><ul><li>elif a == 2: </li></ul></ul><ul><ul><li>print “op2” </li></ul></ul><ul><ul><li>else : </li></ul></ul><ul><ul><li>print “outra” </li></ul></ul>
  27. 27. while <ul><li>C </li></ul><ul><li>Python </li></ul><ul><ul><li>while (a < 1) { </li></ul></ul><ul><ul><li>a++; </li></ul></ul><ul><ul><li>printf(“a = %d”, a); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>while a < 1: </li></ul></ul><ul><ul><li>a += 1; </li></ul></ul><ul><ul><li>print “a = %d” % a </li></ul></ul>
  28. 28. for (1) <ul><li>C </li></ul><ul><li>Python </li></ul><ul><ul><li>for (a=0; a < 10; a++) { </li></ul></ul><ul><ul><li>printf(“num:%d ”, a); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>for a in range (10): </li></ul></ul><ul><ul><li>print “num:%d” % a </li></ul></ul>
  29. 29. for (2) <ul><li>C </li></ul><ul><li>Python </li></ul><ul><ul><li>int i; </li></ul></ul><ul><ul><li>char *str[] = </li></ul></ul><ul><ul><li>{“item1”, “item2”, </li></ul></ul><ul><ul><li> “ item3”, “item4”}; </li></ul></ul><ul><ul><li>for (i = 0; i < 4; i++) { </li></ul></ul><ul><ul><li>printf(“%s ”, str[i]); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>str = [“item1”, “item2”, </li></ul></ul><ul><ul><li> “ item3”, “item4”] </li></ul></ul><ul><ul><li>for s in str: </li></ul></ul><ul><ul><li>print s </li></ul></ul><ul><ul><li>for em Python é similar ao foreach de PHP </li></ul></ul>
  30. 30. Básico Instalação Terminal Tipos I Estruturas de Controle Tipos II Funções Scripts Leituras Recomendadas
  31. 31. Operadores Lógicos <ul><li>Lógicos: a and b, a or b, not a </li></ul><ul><li>Lógicos bitwise (bit a bit): </li></ul><ul><ul><li>and: a & b </li></ul></ul><ul><ul><li>or: a | b >>> 1 | 2 3 </li></ul></ul><ul><ul><li>xor: a ^ b </li></ul></ul><ul><ul><li>shifting: a >> b, a << b >>> a = 2 >>> a << 3 16 </li></ul></ul>
  32. 32. Operações Sobre Seqüências (1) <ul><li>in – Verifica se um objeto está contido numa seqüência >>> a = 'blahblah' >>> 'ah' in a True >>> 'x' not in a True </li></ul><ul><li>len – Tamanho da seqüência >>> len('teste') 5 </li></ul><ul><li>s + t – Concatenação >>> (1, 2, 34) + (3, 4, 6) (1, 2, 34, 3, 4, 6) </li></ul>
  33. 33. Operações Sobre Seqüências (2) <ul><li>seq [n] – Item n da seqüência >>> a = (1, 3, 5, 7, 8) >>> a[3] 7 </li></ul><ul><li>seq [:n] – Itens 0 a n, excluindo n >>> a[:3] (1, 3, 5) </li></ul><ul><li>seq [n:] – Itens n até o último, incluindo n >>> a[3:] (7, 8) </li></ul><ul><li>seq [i:f] – Itens i até f, incluindo i e excluindo f >>> a[2:4] (5, 7) </li></ul>
  34. 34. Operações Sobre Seqüências (3) <ul><li>seq [i:f:j] – Itens i até f, incluindo i e excluindo f e pulando j itens >>> a = range(10) >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> a[0::2] [0, 2, 4, 6, 8] </li></ul><ul><li>min, max – Menor e maior item da seqüência, respectivamente >>> min('aknsdmz') 'a' >>> max('aknsdmz') 'z' </li></ul>
  35. 35. Iterando Sobre Itens de Uma Seqüência <ul><li>Experimentem isso: >>> seq = range(30)[0::3] >>> print seq [0, 3, 6, 9, 12, 15, 18, 21, 24, 27] >>> for i in seq: ... print i ... </li></ul>
  36. 36. Operações Sobre Seqüências Mutáveis (Listas) <ul><li>count – quantas vezes um item aparece na lista >>> a = [1, 43, 87, 7, 4, 87, 5, 7, 98] >>> a.count(7) 2 </li></ul><ul><li>append, remove – adiciona e remove um item da lista, respectivamente >>> a.append(99) >>> a.remove(5) >>> print a [1, 43, 87, 7, 4, 87, 7, 98, 99] </li></ul><ul><li>pop – remove e retorna o último item da lista >>> a.pop() 99 </li></ul>
  37. 37. Operações Sobre Strings <ul><li>strip – remove caracteres brancos das extremidades >>> a = ' blah ' >>> a.strip() 'blah' </li></ul><ul><li>find, rfind – retorna posição da string, a partir do início e do fim, respectivamente >>> a = 'o rato roeu a roupa do rei' >>> a.find('ro') 7 >>> a.rfind('ro') 14 </li></ul>
  38. 38. Operações Sobre Mapeamentos <ul><li>keys – retorna uma lista com as chaves do mapeamento >>> d = {1:'a', 2:'b', 'tres':'c'} >>> d.keys() [1, 2, 'tres'] </li></ul><ul><li>Exemplo >>> for key in d.keys(): ... print '%s - %s' % (key, d[key]) ... </li></ul>
  39. 39. Básico Instalação Terminal Tipos I Estruturas de Controle Tipos II Funções Scripts Leituras Recomendadas
  40. 40. Funções <ul><li>Exemplo 1: >>> def coisifica (arg1, arg2='Default'): ... print arg1 ... return 'coisa' + arg2 </li></ul><ul><li>Exemplo 2: >>> def foo (arg1=7, arg2=1): ... print 'arg1=%d, arg2=%d'%(arg1, arg2) ... >>> foo() arg1=7, arg2=1 >>> foo(6) arg1=6, arg2=1 >>> foo(arg2=19) arg1=7, arg2=19 </li></ul>
  41. 41. Básico Instalação Terminal Tipos I Estruturas de Controle Tipos II Funções Scripts Leituras Recomendadas
  42. 42. O Famigerado Fatorial <ul><li>#!/usr/bin/env python #-*- coding:utf-8 -*- </li></ul><ul><li>def fact(num): if num == 1 or num == 0: return 1 elif num > 1: return num * fact(num - 1) else: return None </li></ul><ul><li>def main(): print &quot;Fatorial de 0: %d&quot; % fact(0) print &quot;Fatorial de 1: %d&quot; % fact(1) print &quot;Fatorial de 6: %d&quot; % fact(6) </li></ul><ul><li>if __name__ == '__main__': main() </li></ul>
  43. 43. Executando Scripts <ul><li>No Linux: python script.py ou chmod +x script.py ./script.py </li></ul><ul><li>No Windows: </li></ul><ul><ul><li>se python estiver devidamente instalado, basta clicar duas vezes </li></ul></ul><ul><ul><li>ou ainda criar um atalho </li></ul></ul>
  44. 44. ... Terminal Tipos I Estruturas de Controle Tipos II Funções Scripts Leituras Recomendadas
  45. 45. Leituras Recomendadas <ul><li>Tutorial Python </li></ul><ul><ul><li>http://www.pythonbrasil.com.br/moin.cgi/DocumentacaoPython?action=AttachFile&do=get&target=python24.pdf </li></ul></ul><ul><li>Dive Into Python </li></ul><ul><ul><li>http://www.diveintopython.org/toc/index.html </li></ul></ul><ul><li>Site: PythonBrasil </li></ul><ul><ul><li>http://www.pythonbrasil.com.br </li></ul></ul>
  46. 46. http://www.cinlug-br.org
  47. 47. <ul><li>Atribuição-Compartilhamento pela mesma licença 2.5 ( http://creativecommons.org/licenses/by-sa/2.5/deed.pt ) </li></ul><ul><li>Você pode: </li></ul><ul><ul><li>copiar, distribuir, exibir e executar a obra </li></ul></ul><ul><ul><li>criar obras derivadas </li></ul></ul><ul><ul><li>fazer uso comercial da obra </li></ul></ul><ul><li>Sob as seguintes condições: </li></ul><ul><li>Atribuição. Você deve dar crédito ao autor original, da forma especificada pelo autor ou licenciante. </li></ul><ul><li>Compartilhamento pela mesma Licença. Se você alterar, transformar, ou criar outra obra com base nesta, você somente poderá distribuir a obra resultante sob uma licença idêntica a esta. </li></ul><ul><ul><li>Para cada novo uso ou distribuição, você deve deixar claro para outros os termos da licença desta obra. </li></ul></ul><ul><ul><li>Qualquer uma destas condições podem ser renunciadas, desde que Você obtenha permissão do autor. </li></ul></ul><ul><li>Qualquer direito de uso legítimo (ou &quot;fair use&quot;) concedido por lei, ou qualquer outro direito protegido pela legislação local, não são em hipótese alguma afetados pelo disposto acima. </li></ul><ul><li>Este é um sumário para leigos da Licença Jurídica (na íntegra: http://creativecommons.org/licenses/by-sa/2.5/br/legalcode ). Termo de exoneração de responsabilidade: http://creativecommons.org/licenses/disclaimer-popup?lang=pt </li></ul>

×