programaÇÃo e python -...
TRANSCRIPT
![Page 1: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/1.jpg)
PROGRAMAÇÃO E PYTHON
Laboratórios de Informática 2014-2015
Sjsoft, http://westmarch.sjsoft.com/2012/11/zen-of-python-poster/
© João Paulo Barraca, André Zúquete, Diogo Gomes
![Page 2: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/2.jpg)
Porquê Programar?
¨Com ferramentas resolvem-se problemas¤Aplicando soluções existentes
¨Programando resolvem-se novosproblemas¤Ou velhos problemas de novas maneiras
¨Tudo são bits e algoritmos¤Som, Imagem, documentos, música, etc...
![Page 3: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/3.jpg)
Linguagens
¨ Linguagens são ferramentas¤Um mecânico tem várias chaves
¨ Existem diferentes necessidades:¤Aplicações¤Páginas Web¤Aplicações Móveis¤Desenvolvimento rápido¤Velocidade de execução¤Compreensão¤Etc...
![Page 4: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/4.jpg)
Porquê Python
¨ Java: aplicações, serviços, web, mobile¤Desenvolvimento rápido
¨ Javascript: páginas e serviços web
¨ Linguagem interpretada¤Não é necessário compilar código
![Page 5: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/5.jpg)
Python
¨Python: aplicações, serviços, web, mobile
¨Desenvolvimento muito rápido (prototipagem)
¨ Linguagem obriga a formatação rígida¤“Hacks” são sempre formatados
corretamente
![Page 6: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/6.jpg)
Python
¨Nome: Monty Python’s Flying Circus
¨Combina funcionalidades modernas¤Encontradas no Java, C#, Ruby, C++, etc...
¨Com um estilo conciso e simples
![Page 7: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/7.jpg)
Zen of Python
$> python
>>> import this
¨Python possui um código de princípios
¨Guiam a linguagem e os programas que a utilizam
![Page 8: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/8.jpg)
Simple is better than complex
and del from not whileas elif global or withassert else if pass yieldbreak except import printclass exec in raisecontinue finally is returndef for lambda try
¨ Só existem 31 palavras reservadas¤Java: ~50¤JavaScript: ~60 + ~111 (DOM)¤C++: ~50¤C#: ~80
![Page 9: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/9.jpg)
Beautiful is better than ugly.
¨ Indentação define um bloco¤Sempre com espaço ou tabs (nunca ambos)¤4 espaços
¨ENTER delimita fim de linha
¨Nomes usam separador “_”¤Ex: processa_ficheiro
![Page 10: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/10.jpg)
Python: Hello World! (mínimo)
# File: hello.py
print “hello world”
$> python hello.py
hello world
Ficheiro hello.py
Consola
![Page 11: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/11.jpg)
Variáveis
¨Declaram-se sem tipo¤Tipo dinâmico
# File: vars.py
a = 3
b = 5.2
print a * b
a = “var”
![Page 12: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/12.jpg)
Variáveis String
¨ Podem ser tratadas como arrays em Java¨ Não existe char (é uma string com 1 caráter)¨ Tamanho dado por função lena = “hello”
b = “world”
print a+” “+b
print a[1]
print a[1:4]
print len(a)
hello world
e
ell
5
![Page 13: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/13.jpg)
Variáveis String
¨Concatenação com inteiros NÃO funciona¤Necessário converter inteiros em String
r = 42
s = “A resposta para a vida, o Universo e \ tudo mais é: “
print s + r
print s + str(r)
TypeError: cannot concatenate 'str' and 'int' objects
A resposta para a vida, o Universo etudo mais é: 42
![Page 14: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/14.jpg)
Variáveis String
¨Não existe printf¨Mas é possível formatar stringsr = 42s = “A resposta para a vida, o Universo e \ tudo mais é:“
print “%s %d” % (s, r)
A resposta para a vida, o Universo e tudo mais é: 42
![Page 15: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/15.jpg)
Condições
¨Usam-se operadores “and”, “or”, “not” explícitos
ano = 2000if (ano % 4==0 and ano % 100 != 0) or ano % 400== 0:
bissexto = Trueelse:
bissexto = False
if bissexto:ndias = 29
else:ndias = 28
![Page 16: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/16.jpg)
Beautiful is better than ugly.
if a == 3 and b == False: print “3”
if a == 3 and not b:
print “3”
ERRADO
CORRETO
![Page 17: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/17.jpg)
Ciclos: For
for i in range(1,10):
print i
123... 9
![Page 18: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/18.jpg)
Ciclos: Range
¨Cria uma lista entre 2 valores
print range(1,10)
print range(10)
[1, 2, 3, 4, 5, 6, 7, 8, 9][0,1, 2, 3, 4, 5, 6, 7, 8, 9]
![Page 19: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/19.jpg)
Ciclos: While
a = 3while a > 0:
print aa = a - 1
321
![Page 20: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/20.jpg)
Funções
def foo(name):
print “Olá: ”+name
foo(“Pedro”)
Declaração de função Argumentos
Indentação define bloco
![Page 21: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/21.jpg)
Funções
def factorial(x):a = 1while x > 0:
a = a * xx = x - 1
return a
Declaração de função Ciclo While
Declaração de variável e atribuição
Indentação define bloco
![Page 22: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/22.jpg)
Listas
¨Python não possui arrays como Java
¨ Lista é o mais semelhantea = [1, 2, 3]
print a[1]
print len(a)
for v in a:
print v
23123
![Page 23: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/23.jpg)
Dicionários
¨Estrutura que mapeia chave a valor
¨Elementos não possuem ordem
https://developers.google.com/edu/python/dict-files
![Page 24: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/24.jpg)
Dicionários
d = {“nome”: “Pedro”, “mec”: 123, “turma”: 0}
d[“turma”] = “TP5”
print d[“nome”]
print d
Pedro{'mec': 123, 'nome': 'Pedro’, ‘turma’: ‘TP5’}
![Page 25: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/25.jpg)
Módulos
¨Funcionalidades adicionais são fornecidas em módulos
¨Adicionados ao programa com “import”¤Semelhante ao Java
¨Cada programa usa módulos conforme necessário
![Page 26: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/26.jpg)
Módulos
¨ Programa imprime o número e conteúdo dos argumentos passados¤Argumentos presentes numa lista sys.argv[]¤ sys.argv[0] contém o nome do programa
import sys
print “Número: %d” % (len(sys.argv))print “Valores: %s” % (str(sys.argv))
Número: 4Valores: ['modules.py', 'a', 'b', 'c']
![Page 27: PROGRAMAÇÃO E PYTHON - joao.barraca.ptjoao.barraca.pt/page/teaching/labi/2014-2015/tema-12-python.pdf · Porquê Programar? ¨Com ferramentas ... ¤Encontradas no Java, C#, Ruby,](https://reader031.vdocuments.site/reader031/viewer/2022030510/5aba8a7a7f8b9a441d8bc09d/html5/thumbnails/27.jpg)
Para Referência
¨ Python Docs: http://docs.python.org/
¨ Code Like a Pythonist: http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html
¨ Learn Python: http://www.learnpython.org/
¨ Think Python: http://www.greenteapress.com/thinkpython/