SOCIEDADE BRASILEIRA DE COMPUTAÇÃO I Escola Regional de Informática – Norte 3 (Acre/Rondônia) – ERIN3 Marcos Thomaz da Silva Novembro de 2011 MCS2 Conhecendo.

Slides:



Advertisements
Apresentações semelhantes
Python: Entrada e Saída
Advertisements

Python: Funções Claudio Esperança.
Programação para Engenharia I
Instrutor: Nilo Menezes
Estrutura de Dados em Java
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
JAVA: Conceitos Iniciais
Introdução a linguagem Python
Unidade I: “Dê um mergulho rápido”
Python: Módulos Claudio Esperança.
Python: Exceções, Iteradores e Geradores
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Conceitos básicos de orientação a objetos
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Aula Prática 12 Operações com Arquivos Monitoria
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Acabias Marques Luiz. I - Introdução ao Ruby Parte 1 – Introdução a linguagem  O que é Ruby  Instalação  O IRB  Operadores Aritméticos  Tipos de.
William Ivanski Curso de Programação C#. Sumário  Exercícios para Fixação  Utilizando uma IDE  Elementos da Linguagem C#  Valores  Variáveis  Tipos.
Introdução à Linguagem JavaScript
JAVA Sintaxe.
Introdução à Programação
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
Shell Script Parte 2.
Raniere ferreira do prado
Felipe Nunes Flores – Programa de Educação Tutorial.
MCEF 2012/2013. Introdução ao “Mathematica” Utilização do Mathematica Funcionamento do programa Regras da Linguagem Exemplos Exercícios!!
Introdução ao Java Prof. Gustavo Wagner (modificações) Slides originais: Prof. Tiago Massoni Java Básico FATEC-PB  Centro de Informática, UFPE.
Linguagem C Escola Olímpio Professor Marcelo Josué Telles Linguagem de Programação I1 de 36.
SECRETARIA DE ESTADO DA EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DIRETORIA DE DESENVOLVIMENTO HUMANO GERÊNCIA DE TECNOLOGIA DE INFORMAÇÕES EDUCACIONAIS E ADMINISTRATIVAS.
Java é uma linguagem de programação e uma plataforma de computação lançada pela primeira vez pela Sun Microsystems em É a tecnologia que capacita.
Iterações Dilvan Moreira. Lembrando... Desenvolvimento de programas  Desenvolvimento incremental:  Evitar depuração de muito código.  A técnica consiste.
Universidade Federal do Espírito Santo - UFES Laboratório de Computação de Alto Desempenho - LCAD Introdução ao Logisim Prof. Alberto F. De Souza LCAD/DI/UFES.
Glossário Autor: Skyup Informática. Atividade - Glossário A atividade glossário permite que o administrador crie páginas de definições, um dicionário.
Conhecendo o Tutorial support.ebsco.com. EBSCOhost é uma poderosa ferramenta de referência online que oferece uma variedade de bases de dados de texto.
Práticas Colaborativa de Programação Peterson Rodrigues Outubro de 2015.
C suporta algumas Constantes de caráteres especiais de barra invertida (backslash) que são usados em funções de saída. Constantes de caráteres especiais.
IFRN Técnico em Informática para Internet Desenvolvimento de Algoritmos Prof. Gilbert Azevedo.
CURSO BÁSICO DE INFORMÁTICA INSTRUTORA: JOSILENE BRAGA
Lógica de Programação Curso Técnico em Informática – Escola Olímpio Professor Marcelo Josué Telles
Programação para Internet Aula 06 Linguagem Java (Orientação a Objetos – Atributos e Métodos)
Polimorfismo com Interfaces Pacotes em Java Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB.
Minicurso Java Básico Cristian Backy | Cristian Costa | Ruddá Beltrão.
Variáveis, expressões e comandos Dilvan Moreira. Lembrando …  Instalação normal (para utilizar no PC com Windows) 
Faculdade de Tecnologia SENAC Pelotas/RS Curso Superior de Tecnologia em Redes de Computadores Projeto Integrador I Seminário Final Funcionalidades da.
Programação para Internet Aula 12 SQL (Comandos de Consulta ao BD)
Clique para editar o título Linguagem C Para programadores Python PMR
Prof. Tertuliano Estrutura Condicional em C++
Fundamentos de Programação 1 Aula N. 02 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Laços de Repetição em C” 1.
Jean Carlo Mendes
Laboratório de Computação Aula 05 – Array Prof. Fábio Dias
Programação p/ INTERNET - HTML Prof. João Ricardo Andrêo 2/6/ :46 1 TABELAS A TAG é utilizada para apresentação de dados no formato de tabelas (apresentação.
Adriano A. Ribeiro. Escolha...Caso Em algumas situações é necessário termos várias soluções ligadas a respostas diferentes. Temos então o comando de alternativa.
Introdução ao Eclipse 3.2 Prof. Gustavo Wagner (modificações) Slides originais: Prof. Tiago Massoni Java Básico  Centro de Informática, UFPE.
Normalização (4FN) Na literatura aparecem outras formas normais, como a forma normal de Boyce/Codd, a 4FN e a 5FN. Destas a única que tem importância na.
SISTEMAS DE INFORMAÇÃO GEOGRÁFICA APLICADOS Deteção remota GeoprocessamentoautomáticoWebSIG Modelos digitais de terreno de terreno Análise de imagem Análise.
Banco de Dados para Redes– Aula 03 Prof. Me. Ronnison Reges Vidal.
AULA Mais Herança Curso: Informática (Subseqüente) Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes
Lógica de Programação Aula 08 Prof. Marcelo Marcony.
INE5408 Estruturas de Dados Estruturas de Dados básicas utilizando Vetores - Listas.
Lógica de programação Estruturas de seleção Estruturas de repetição Sub-Rotinas 1.
Implementação Orientada a Objetos – Aula 02 Introdução ao Java Prof. Danielle Martin Universidade de Mogi das Cruzes.
Diagramas de Sequência e Comunicação
EDITOR DE PLANILHAS MICROSOFT EXCEL 2010
SISTEMA OPERACIONAL Administra todos os recursos do computador fazendo a interação entre software e hardware. Sua função é gerenciar e disponibilizar.
Comandos básicos Scratch for Arduino (S4A).
SOFTWARE Software Aplicativo – Executa Tarefas de Processamento de informações para usuários finais. Software de Sistemas – Gerencia e Apóia operações.
Fundamentos de Programação 1 Linguagem C Slides 03 – ‘Vetores’ Prof. SIMÃO Jean Marcelo SIMÃO Estrutura de Dados Homogêneas “Vetores” 1.
Computação – Informática Aula N. 05 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Matrizes em C” 1.
PROGRAMAÇÃO BÁSICA NA HP-12C. A MÉMÓRIA BÁSICA DA HP-12C A MÉMORIA BÁSICA DA HP-12C GOLD/PLATINUM/PRESTIGE POSSUI 8 LINHAS A HP-12C GOLD/PLATINUM/PRESTIGE.
Transcrição da apresentação:

SOCIEDADE BRASILEIRA DE COMPUTAÇÃO I Escola Regional de Informática – Norte 3 (Acre/Rondônia) – ERIN3 Marcos Thomaz da Silva Novembro de 2011 MCS2 Conhecendo a Linguagem Python

Sobre o Autor Especialista em Bancos de Dados; Graduado em Sistemas de Informação pela Universidade Federal do Acre; Analista de Sistemas da Universidade Federal do Acre; Moderador da Lista Django Brasil; Moderador da Lista Active Delphi; Trabalha com desenvolvimento de sistemas desde o ano de 1994, atuando com diversas linguagens: Clipper, Delphi, PHP e Python Entusiasta de diversas outras linguagens de programação: C/C++, Cobol, Java, Ruby; Desenvolvedor para PalmOS; Atua com bancos de dados Firebird, DB2, MySQL, PostgreSQL e Oracle.

Histórico Sobre a Linguagem Criada em 1991 (versão 0.9.0) por Guido van Rossum; Nome recebido como homenagem ao grupo de humoristas Monty Python; Versão 1.0 lançada em 1994; Versão 20 lançada em 2000; Atualmemente é utilizada em duas vertentes: 2.X (7) e 3.0;

Características da Linguagem Sintaxe de alto-nível, simples e fácil de ser assimilada; Tipagem dinâmica; Tipagem forte; Interpretada (compilada para bytecode); Lincença de Código Aberto; Multiplataforma (Unix, Linux, Windows, Maemo)

Características da Linguagem Existe nativamente em sistemas Operacionais Linux e MacOS; Utilizado no desenvolvimento Web, Desktop (GTK, QT); Orientada a objetos; Gera executáveis através de utilitários (cx_freeze, py2Exe); Console interativo Primeira Linguagem Implementada no GAP (Google App Engine)

Utilização de Python Python para Web –Possui diversos frameworks para desenvolvimento de aplicações Web, entre os mais conhecidos estão: Zope, Django, Web2Py, Turbogears, Flask, GAP; –O Zope é um framework para aplicações de alta escalabilidade, um dos primeiros a implementar o conceito de No-SQL, e possuidor de diversos tipos de cache (memcached, ramcache, file);

Utilização de Python Gerenciadores de Conteúdo (CMS) –Diversas ferramentas de gerenciamento de conteúdo: Plone (Utiliza Zope), DjangoCMS, LFS, X5; –O plone atualmente é utilizado por boa parte dos portais governamentais (presidencia, siape, legislativo)

Utilização de Python Gestão Empresarial –Aplicativos de gestão comercial, CRM, Vendas, Gerenciamento de Postos de Gasolina: Stoq, ERP5, OpenERP; –Aplicações como o Stoq implementam uma série de frameworks, bibliotecas e métodos, tais como um ORM (SQLAlchemy), MVC (Kiwi), Desenho de telas (Gazpacho), Ambiente desktop multiplataforma (PyGTK) e banco de dados Postgre

Utilização de Python Dispositivos Móveis; –Desenvolvimento para Celulares (PyS60), tablet’s (PyQT e PySide), PSP; Multimídia e Entretenimento; –Desenvolvimento de Jogos (PyGame, PyMedia, PyOpenGL), Imagens 3D (Aplicativo Blender – Utiliza PyGame) e demais imagens (PIL) Ciência –Bibliotecas de uso científico (Scipy), matemático (NumPy) e outros (BioPython, AstroPy).

IDE’s (Integrated Development Environment) e Editores Livres –PyDev, Eric, Pida, Boa-Constructor (semelhante ao Delphi 3), Eclipse; Proprietárias –Komodo, WingIDE, Aptana, PyCharm Editores de Texto –Vi/Vim, Emacs, SciTE, gedit, Textmate, Notepad++

Por que Python? Possui orientação a objetos (inclusive, com suporte a herança múltipla), exceções, diversos módulos; Sintaxe simples, prática e objetiva; Executa em diversas plataformas sem a necessidade de recompilar; Por utilizar identação (ou endentação) como bloco de código, garante a legibilidade do código; Possui recursos de integração com outras linguagens como C/C++, Java (Jython), NET (IronPython); Possui comunidade forte, tanto no Brasil quanto fora;

Quem utiliza Python Google (GAP, Youtube); Industrial Light & Magic (Indústria de computação gráfica); DreamWorks; Laboratórios da Nasa; AstraZeneca (farmacêutica); Siapenet (Servidor Público); Embrapa; Nokia; AOL Music; CIA

Iniciando com a Linguagem Fazer o download da linguagem: – Instalar a linguagem (se necessário) Abrindo o interpretador: –Ir a um terminal, digitar “python” e pressionar ENTER; “import this”

Conhecendo o interpretador Usando como uma calculadora –“2 + 2”; “7/3”; “7/3.0”; “5*3”; “7-1” Executando um arquivo –Abrir um editor de textos (pode ser o “vi”, “nano”, “bloco de notas”); –Digitar: print “Oi mundo!” –Salvar como oimundo.py –No terminal, digitar: python oimundo.py

Estrutura de Arquivo Fonte Linhas opcionais: –Podem existir nas primeiras linhas do código fonte (semelhante ao content-type do html); # -*- coding: encoding -* !/usr/python Código Verificação de chamada: –if __name__== “__main__”

Linguagem Não possui delimitadores de linha (estilo o “;” do PHP); Delimitadores de bloco de código definidos por identação/endentação (sem o begin/end do pascal ou chaves do php, C/C++ ou Java); Poucas palavras reservadas; Sem a necessidade da declaração de variáveis (tipagem dinâmica); Comentários são marcados por # Ajuda no interpretador interativo: comando help Pythonpath

Linguagem: Tipos Tipos Básicos: –Inteiro; –Ponto-Flutuante; –Strings (É possível utilizar ‘, “ ou ‘’’/”””). Tipos de Sequencia: –Tuplas – () - Imutável; –Listas – [] – Mutável; –Dicionários – {} - Mutável; –Strings – Imutável; Tipos avançados: –datetime Para saber o tipo da variável: type

Linguagem: Declarando Variáveis O python não utiliza nenhum delimitador para variáveis (como o PHP ou o Ruby) k = 3 #declara a variável K como inteiro l = “ERIN” #declara string pi = 3.14 #ponto-flutuante tupla = (1,3,5, “oi” ) lista = [ 1, 3, 5, 8 ] dicionario = { ‘A’:1, ‘B’:2, ‘4’: 5}

Linguagem: Informações do Usuário input( ) raw_input( ) Exemplo: –nome = raw_input(“Digite seu nome:”) –idade = input( “Digite sua idade:” ) –print ‘Oi %s, voce tem %s anos’%( nome, idade)

Linguagem: Operadores Aritméticos: +, -, *, /, % (resto da divisão), ** (potência) Separador decimal: “.” Cadeia de bits: >>, <<, ~, &, | Atribuição: =, +=, -=, /=, *= Comparação: ==, !=, >, =, <=, “in” Lógicos: “and”, “or”, “not”

Linguagem: Estruturas de Controle Condicionais: if / elif if a > 1: print ‘A > 1’ Laço iterativo: for p = ‘Python’ for l in p: print l Laço condicional: while a, i = 10, 1 while i<a: if ( i % 2 ) == 0: print i i = i + 1 break / continue

Linguagem: Funções Sintaxe def nome_da_funcao( parametros ): instruções return retorno Argumentos nomeados Argumentos indefinidos (operador * ) Argumentos indefinidos (operador **) locals() e global()

Exercícios de Fixação I 1.Usando o interpretador interativo, calcule as seguintes contas: , 524 / 12, 25 /, 27 / 2.0, Crie um arquivo que receba o nome do cliente e seu endereço e imprima a frase: “ mora em ” substituindo e pelos valores recebidos 3.Crie uma função que solicite dois números(variáveis A e B), e faça a inversão destes valores 4.Crie uma função que pegue um número indefinido de parâmetros, e diga qual o valor é o maior 5.Crie um arquivo onde o usuário tenha que informar um número inteiro, positivo, menor que 50, e imprima os valores ímpares que estão dentro deste intervalo. 6.Crie uma função que peça o nome e salário, enquanto o nome esteja sendo preenchido. Ao término da iteração, exiba a quantidade de pessoas que foram informadas, e a soma total dos salários.

Lambda O que são Quando utilizar Exemplo: dobro = lambda numero : numero * 2 print dobro( 6 )

Trabalhando com listas Adicionando elementos (append): itens, e listas Ordenando listas Percorrendo listas (usando len e in ) Slice (fatiando) listas: lista[ : ] lista = range( 0, 21, 2 ) lista[0:5] lista[5:] lista[:5] lista[-1] lista[-2:] Lista[::1] Curiosidades: a = [1, 2, 3, 4, 5] b=a a.append(a) print b

Trabalhando com listas split nome = ‘ESTADO DO ACRE’ lista = nome.split() join lista = [‘arroz’,’feijão’,’batata’,’macarrão’] alimentos = ‘,’.join( lista ) print ‘Alimentos ’+alimentos Repetindo dados: operador “*” Somando listas: operador “+”

Funções úteis: map, reduce map –Processa uma lista e retorna outra (mapeamento) –Exemplo: gerar uma lista, baseada em outra, multiplicando seus itens por 3. lista1 = [1, 2, 3] lista2 = map(lambda x: x * 3, lista1) print lista2 reduce –Processa uma lista e reduz para um único valor –Exemplo: somar o valor de todos os valores de uma lista. lista1 = [1, 2, 3] soma_triplo = reduce( lambda x, y: x+y, lista1)

Exercícios de Fixação II 1.Crie uma função que receba uma frase e imprima ao contrário (por exemplo, a palavra “ACRE” seria impresso “ERCA”) 2.Crie uma função que receba uma palavra e um número, e replique essa palavra a mesma quantidade de vezes informada pelo número 3.Crie um código que pegue uma lista composta de valores inteiros e retorne a soma do triplo de seus itens 4.Crie uma função que receba uma lista e imprima o maior elemento, o menor e a soma de todos os elementos 5.Crie uma função que peça o nome e salário, enquanto o nome esteja sendo preenchido. Ao término da iteração, exiba a quantidade de pessoas que foram informadas, e a soma total dos salários, o menor deles, o maior, e a lista de todas as pessoas com seus respectivos salários 6.Complemente a função anterior, ordenando a lista por ordem crescente de salário antes de imprimí-la.

Módulos Conjunto de códigos (biblioteca) Arquivo __init__.py Sintaxe: –import modulo ou –from modulo import Funcao1, Funcao2 Evitar incluir o módulo todo

Módulos Curiosidade: Tomando a estrutura como exemplo (usando como pacote) –pasta1 arquivo1.py arquivo2.py __init__.py pasta2 –arquivo3.py –arquivo4.py –__init__.py Poderíamos fazer: –from pasta1.pasta2 import arquivo3 –from pasta1.pasta2.arquivo3 import Funcao3 E teríamos (respectivamente): –arquivo3.Funcao3( parametro ); ou –Funcao3( parametro ).

Módulos: Testando no interpretador import calendar calendar.prmonth(2011, 11) calendar.prcal(2011)

Principais Módulos sys: oferece várias operações referentes ao próprio interpretador. Inclui: path, uma lista dos diretórios de busca de módulos do python, argv, a lista de parâmetros passados na linha de comando e exit(), uma função que termina o programa. time: oferece funções para manipular valores de tempo. Inclui: time(), uma função que retorna o timestamp14 atual; sleep(n), que pausa a execução por n segundos; e strftime(n), que formata um timestamp em uma string de acordo com um formato fornecido.14 os: oferece funções relacionadas ao ambiente de execução do sistema. Inclui: mkdir(), que cria diretórios; rename(), que altera nomes e caminhos de arquivos; e system, que executa comandos do sistema. os.path: oferece funções de manipulação do caminho independente de plataforma. Inclui: isdir(p), que testa se d é um diretório; exists(p), que testa se p existe; join(p,m), que retorna uma string com os dois caminhos p e m concatenados. string: oferece funções de manipulação de string (que também estão disponíveis como métodos da string). Inclui: split(c, s, p), que divide a string c em até p partições separadas pelo símbolo s, retornando-as em uma lista; lower(c), que retorna a string c convertida em minúsculas; e strip(c), que retorna c removendo espaços e quebras de linha do seu início e fim. math: funções matemáticas gerais. Inclui funções como cos(x), que retorna o cosseno de x; hypot(x, y); que retorna a distância euclidiana entre x e y; e exp(x); que retorna o exponencial de x. random: geração de números randômicos. Inclui: random(), que retorna um número randômico entre 0 e 1; randrange(m,n), que retorna um randômico entre m e n; choice(s), que retorna um elemento randômico de uma seqüência s. getopt: processamento de argumentos de comando de linha; ou seja, os parâmetros que passamos para o interpretador na linha de execução. Inclui: getopt(), que retorna duas listas, uma com argumentos e outra com opções da linha de comando.

Outros Módulos Importantes datetime: fornece funções e métodos para controle de datas. PIL / Image: funções e métodos para controlar e modificar imagens Decimal: funções de decimais (muito usado para trabalhar com valores monetários). Reportlab: Geração de arquivos PDF

Trabalhando com arquivos open –Métodos de abertura: w, r, w+, r+ –arquivo = open( ‘caminho/do/Arquivo’, ‘r+’) # abre o arquivo para leitura e alteração –os.path.exists() #verifica se o arquivo existe read / realines –linhas = arquivo.readlines() #carrega uma lista com as linhas do arquivo write –arquivo.write( ‘nova linha’) #escreve no arquivo seek –arquivo.seek( 5 ) #vai para o sexto byte tell close

Erros e Exceções Tratar exceções –Sintaxe: try: bloco de codigo except Excecao1: mensagem de tratamento except Excecao2: mensagem de tratamento Levantar exceções –raise Exception(‘Mensagem de Erro’)

Strings de Documentação Para que servem Como utilizar: def funcao( p1 ): ‘’’ O parametro p1 é um inteiro ‘’’ return p1 * 2 help( funcao ) print funcao.__doc__

Palavras Especiais __name__ __file__ __init__ __call__ __sum__ __sub__ __mul__ __div__

Funções Pré-Definidas range / xrange: retorna uma lista chr: retorna o caracter correspondente ao número. (por exemplo 65 é igual a “A”). len: retorna o tamanho da lista ord: retorna o número referente ao caracter round: arredonda um ponto-flutuante pow: calcula potência min: menor valor de uma lista max: maior valor de uma lista abs: valor absoluto de um número float: converte um número para float str: converte um número para string int: converte algo para inteiro sum: soma os elementos de uma lista

Exercícios de Fixação III 1.Crie uma função que peça o nome e salário, enquanto o nome esteja sendo preenchido. Ao término da iteração, exiba a quantidade de pessoas que foram informadas, e a soma total dos salários, o menor deles, o maior, e a lista de todas as pessoas com seus respectivos salários. Armazene a lista em um arquivo. Em outra função, abra este arquivo e reimprima as informações. O código deve verificar se o arquivo existe. As funções comuns (exibir informações), devem ser colocadas em um arquivo separado. 2.Tendo como dados de entrada a altura e o sexo de uma pessoa, construa um algoritmo que calcule seu peso ideal, utilizando as seguintes fórmulas: Para homens: (72.7*h) - 58 Para mulheres: (62.1*h) (h = altura) Peça o peso da pessoa e informe se ela está dentro, acima ou abaixo do peso. 3.Monte uma função que receba como entrada uma frase e imprima-a como uma escada. Por exemplo, a palavra ACRE. A AC ACR ACRE 4.Crie uma função que receba como entrada o caminho completo de um arquivo, indique qual a maior linha do arquivo e imprima-a

Orientação a Objetos: Classes Uma classe é um molde de uma instância, ou seja, um modelo que indica quais os métodos e atributos um objeto deve ter. Sintaxe: class MinhaClasse: Ou então: class MinhaClasse( object ):

Orientação a Objetos: Classes Exemplo: class Aluno(object): ‘’’ Classe que define um aluno ‘’’ nome = None nota = None def situacao( self ): return ‘AP’ if nota and nota > 5 else ‘RP’

Orientação a Objetos: Classes Construtores class Retangulo(object): base = altura = None __cor = ‘azul’ #método protegido def __init__(self, b, a): self.base, self.altura = b, a def area(self): return self.base * self.altura R = Retangulo( 5, 4 ) #instancia de Retangulo

Orientação a Objetos: Herança Classe Pai class Forma(object): __cor = ‘azul’ #método protegido def setCor(self, cor): self.__cor = cor class Quadrada(object): base = altura = None def __init__(self, b, a): self.base, self.altura = b, a def area(self): return self.base * self.altura Classe Herdada class Retangulo(Forma, Quadrada): pass R = Retangulo( 5, 4 ) #instancia de Retangulo Herança Múltipla (ordem de pai indica ordem de métodos)

Orientação a Objetos: Herança Reaproveitando código da classe pai: class Retangulo(Forma, Quadrada): def area_ao_quadrado( self ): return super(Retangulo,self).area() ** 2 Ou class Retangulo(Forma, Quadrada): def area_ao_quadrado( self ): return Quadrada.area(self) ** 2

Orientação a Objetos: Exceções Exceções Também São Classes A classe base das exceções é a Exception Podem ser definidas classes de Exceção para melhorar o controle e mensagens de erro.

Orientação a Objetos: Polimorfismo class Forma(object): cor = ‘Azul’ base = altura = None def getCor( self, c ): self.cor = c def __init__(self, b, h): self.base, self.altura = b, h def area(self): pass class Quadrado(Forma): def area(self): return self.base * self.altura Class TrianguloRetangulo(Forma): def area(self): return (self.base * self.altura)/2

Orientação a Objetos: Encapsulamento class Quadrado(object): base = altura = None def __init__(self, b, h): self.base, self.altura = b, h def __getArea(self): return self.base * self.altura def __setArea(self,a): from math import sqrt if a <= 0: raise Exception(‘Valor tem que ser maior que zero’) base = altura = sqrt( a ) area = property( __getArea, __setArea ) q = Quadrado(2, 2) q.area = 64 #valor de base e de altura fica 8

O que mais existe A linguagem python não pára aí... Annotations C Bindings Iterators Metaclasses

Orientação a Objetos: Pequena Brincadeira class Linguagem(object): nome = None def __init__(self, nome): self.nome = nome.capitalize()[0] + nome.lower()[1:] def mostra(self): import string t = 'JA'+string.printable+'VA'+string.printable+string.ascii_letters cp,tnome = ';hc076', string.translate(self.nome,t) print ('Super ' if cp == tnome else '')+self.nome def __add__(self, valor): print 'Aqui' if isinstance( valor, int ): return self.nome * valor elif isinstance( valor, Linguagem): if self.nome=='Python' and valor.nome == 'Java': return 'Jython' else: return self.nome+'/'+valor.nome else: raise Exception('Tipos Invalidos')

Orientação a Objetos: Pequena Brincadeira l0 = Linguagem('python') l1 = Linguagem('java') l0.mostra() ## o que é mostrado aqui? l1.mostra() ## e aqui? l2 = Linguagem('python') print (l2 + l1) ## e aqui? print l2.nome ## e aqui? print l2 + 4 ## e aqui?

Término Crescimento da Linguagem Amplo mercado de trabalho Considerações finais

Obrigado!

Links Interessantes ores.pdfhttp://ark4n.files.wordpress.com/2009/05/python_para_desenvolved ores.pdf ores_2ed.pdfhttp://ark4n.files.wordpress.com/2010/01/python_para_desenvolved ores_2ed.pdf