A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

1 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

2 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.

3 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;

4 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)

5 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)

6 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);

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

8 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

9 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).

10 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++

11 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;

12 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

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

14 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

15 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__”

16 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

17 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

18 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}

19 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)

20 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”

21 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

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

23 Exercícios de Fixação I 1.Usando o interpretador interativo, calcule as seguintes contas: 1 + 2000, 524 / 12, 25 /, 27 / 2.0, 254-326 2.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.

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

25 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

26 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 “+”

27 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)

28 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.

29 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

30 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 ).

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

32 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.

33 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

34 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

35 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’)

36 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__

37 Palavras Especiais __name__ __file__ __init__ __call__ __sum__ __sub__ __mul__ __div__

38 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

39 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) - 44.7 (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

40 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 ):

41 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’

42 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

43 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)

44 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

45 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.

46 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

47 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

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

49 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')

50 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?

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

52 Obrigado!

53 Links Interessantes http://www.python.org.br http://www.python.org http://www.django-project.com http://pydev.sf.net/ http://www.die-offenbachs.de/detlev/eric.html http://pida.berlios.de/ http://www.activestate.com/Products/Komodo/ http://www.wingware.com/ http://www.jetbrains.com/ http://ark4n.files.wordpress.com/2009/05/python_para_desenvolved ores.pdfhttp://ark4n.files.wordpress.com/2009/05/python_para_desenvolved ores.pdf http://ark4n.files.wordpress.com/2010/01/python_para_desenvolved ores_2ed.pdfhttp://ark4n.files.wordpress.com/2010/01/python_para_desenvolved ores_2ed.pdf


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google