Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Slides:



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

Python: Funções Claudio Esperança.
Python: Recursão Claudio Esperança.
Python: Listas Claudio Esperança.
Python: Dicionários Claudio Esperança.
Curso de aprofundamento na linguagem C
Python: Classes Claudio Esperança.
Programação em Java Prof. Maurício Braga
Estruturas de Repetição
Paulo Marques Hernâni Pedroso
Java Básico Orientação a Objeto Marco Antonio Software Architect Fev/2008.
Parte I Capítulo 5 Reutilizando código e escrevendo funções.
Programação Básica em Java
Linguagens de programação
Basic e Visual Basic.NET
Disciplina: AAM Profa. Ana Watanabe 03/13 vol.2
Alexandre Parra Site: Linguagem Java Alexandre Parra Site:
OBS: Este ppt não é o definitivo (Versão Beta)
Tecnologia para Web JavaScript
Curso de Programação em C++
Instrutor: Nilo Menezes
Introdução ao JavaScript
Apresentação da linguagem Python
Classes e objetos P. O. O. Prof. Grace.
Estrutura de Dados em Java
Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
INTRODUÇÃ A COMPUTAÇÃO ENG. CIVIL
Python Uma introdução Klaus Natorf Quelhas Novembro de 2009.
Listas e Dicionários.
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
JAVA: Conceitos Iniciais
Introdução a linguagem Python
Introdução a Computação e Cálculo Numérico
Unidade I: “Dê um mergulho rápido”
Python: Exceções, Iteradores e Geradores
Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012.
Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012.
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
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.
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Curso básico de PHP 1 Vantagens: Gratuito Multiplataforma Estável Rapidez Comunicação.
PROGRAMAÇÃO ESTRUTURADA II
JAVA Linguagem Ambiente de Desenvolvimento
FTIN Formação Técnica em Informática
Programação I Aula 2 (Métodos)
Aula Prática 12 Operações com Arquivos Monitoria
Ruby Viviane Souza (vess).
Técnicas de Desenvolvimento de Programas
Ceça Moraes – Introdução à Programação SI1
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;
3. Introdução à Linguagem C
Ceça Moraes – Introdução à Programação SI1
Regras de escopo Escopo: trecho de codificação no qual o identificador possui significado Escopo de função: identificador válido dentro do trecho de uma.
Ceça Moraes – Introdução à Programação SI1
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.
Prof. Msc Roberta Andrade
JAVA Sintaxe.
Capítulo 9 Arquivos JAR.
Fundamentos da Linguagem C#
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
Shell Script Parte 2.
Variáveis, expressões e comandos Dilvan Moreira. Lembrando …  Instalação normal (para utilizar no PC com Windows) 
Clique para editar o título Linguagem C Para programadores Python PMR
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Ambientação com a Sintaxe de Java: parte 2 Prof. Gustavo Wagner Slides Originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB  Centro de.
FUNÇÕES Dilvan Moreira (baseado em material de Z. Liang)
Transcrição da apresentação:

Andrea Menezes (afm3) Maíra Nascimento (mcn2) Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Agenda O que é Python Por que usar python História Quem usa Python Características A Liguagem

O que é Python

Python Linguagem de alto nível Orientada a Objetos Interpretada Não é apenas uma linguagem de script Fácil de usar e de aprender

Por que usar Python

Por que usar Python? Conceitos fundamentais simples Sintaxe clara – muito próxima de um pseudo-código Código curto e legível Tipos pré-definidos poderosos Possui um vasto repertório de bibliotecas Ciclo de desenvolvimento rápido

Por que usar Python? Licença Open Source Pouco punitiva: poucas regras arbitrárias; Extensível (adicionar novos módulos) C/C++ Java (através Jython) Extremamente portável Unix/Linux, Windows, Mac, PalmOS, WindowsCE, RiscOS, VxWorks, QNX, OS/2, OS/390, AS/400, PlayStation, Sharp Zaurus, BeOS, VMS…

História

Breve História Criada por Guido van Rossum em 1989 no Centrum voor Wiskunde en Informatica (CWI), em Amsterdã,Holanda. Linguagem de scripts para o sistema operacional distribuído Amoeba Baseada na linguagem ABC, desenvolvida no CWI por Guido e outros nas décadas de 70 e 80. O nome Python teve origem no grupo humorístico britânico Monty Python.

Versões 26 de janeiro de 1994 – versão 1.0 1998 – JPython 16 de outubro de 2000 – versão 2.0 19 de setembro de 2006 – versão 2.5 (atual)

Quem usa Python

No Mundo NASA (vários projetos) Yahoo! (Yahoo mail & groups) Apple, H.P., Microsoft Muitas Universidades, como MIT, e Stanford

Google Sistema de ajuda do GMail Google Groups Sistema de compilação de aplicativos (build system). Sistema de empacotamento e entrega de dados (packaging system). Sistema de monitoramento e manutenção do cluster Sistema de testes

No Brasil Jornal do Brasil, AOL Brasil Embratel: monitoramento das interfaces de backbone e clientes de internet, também existem scripts de uso interno. CPqD: monitoramento de centrais telefônicas. Conectiva: Gerenciamento de pacotes da distribuição Linux e ferramentas de uso interno. Async: desenvolvimento de software de automação comercial

Características

Compilada X Interpretada Interpretador interativo Compilador de byte code compilação implícita e automática

Paradigma Orientada a Objetos Suporte a outros paradigmas Estrutural Funcional Fácil integração com outras linguagens

Sistema de Tipos Fortemente tipada Tipagem dinâmica Objetos não podem mudar de tipo Não há conversão automática de tipos Tipagem dinâmica Não há declaração de variáveis

Outras Poderosas estruturas de dados nativas Listas Dicionários Identação para estrutura de bloco Blocos demarcados por espaços print "O valor de a " if a == 0: print "zero" else: print a

A Linguagem

Comentários e Comentários Funcionais Após o caractere “#” até o final da linha, tudo é considerado um comentário e ignorado, exceto pelos comentários funcionais. Definindo a codificação do arquivo fonte #−− coding: <encoding−name> −− Em sistemas Posix pode-se usar o comentário funcional #!/usr/bin/env python para executar o arquivo com o comando python encontrado no ambiente. Isto não é característico de Python, mas dos sistemas Posix.

Indentação Em Python, os blocos de código são delimitados pelo uso de indentação. A indentação não precisa ser consistente em todo o arquivo, só no bloco de código. Uma boa prática é ser consistente no projeto todo. Cuidado ao misturar TAB e Espaços: configure seu editor!

Variáveis Tipagem dinâmica Não precisam ser declaradas uma variável não tem tipo fixo, ela tem o tipo do objeto que ela contém. Não precisam ser declaradas Variáveis são criadas quando atribuídas pela primeira vez Variáveis devem ser atribuídas antes de serem referenciadas “Tudo” é uma variável Funções, classes, módulos ...

Tipos de Dados Variáveis Numéricas num_int = 13 num_int_long = 13L Imutáveis num_int = 13 num_int_long = 13L num_real = 13.0

Tipos de Dados Strings Imutáveis Criação texto1 = ‘abcdefghij ‘ texto2 = “outro texto” texto3 = ‘’’este texto tem varias linhas ‘’’

Tipos de Dados Strings Acesso a elementos pelo índice texto1 = ‘abcdefghij ‘ print texto1 [ 2 ] # Imprime ’ c ’ print ’GSB ’[ 1 ] # Imprime ’ S ’ Principais Métodos: split, count, index, join, lower, upper, replace

Tipos de Dados Tuplas Formadas por elementos de qualquer tipo Delimitadas por parênteses. ‘(‘ e ‘)’ Imutáveis não se pode acrescentar apagar ou modificar valores Vantagem: eficiente

Tipos de Dados Listas Formadas por elementos de qualquer tipo Criação lista = [ 10 , 2 , 3 , ’texto’ , 20 ] Acesso a elementos pelo índice print lista [ 2 ] # imprime ’3 ’ Principais Métodos: append, count, index, insert, pop, remove,reverse, sort

Exercícios - Listas Dado uma lista “lista”, verifique se “valor” está dentro dela, caso verdade imprima “Sim”, senão imprima “Não”. Dado uma lista “lista”, itere sobre a lista, imprimindo cada um de seus elementos.

Tipos de Dados Dicionários Formados por pares de chave-valor Delimitados por chaves. ‘{‘ e ‘}’ d = { ’chave ’: ’valor ’ , ’linguagem ’: ‘python’ } Chave sempre um valor Imutável! lista = [ 1 , 2 ] d[ lista ] = ’outro valor ’ #TypeError: list object are unhashable

Tipos de Dados Dicionários Principais Métodos: copy, get, has_key, items, keys, update, values Obtendo iteradores (otimizado para for): for chave in d.iterkeys (): print chave for valor in d.itervalues (): print valor for chave , valor in d.iteritems (): print chave , ‘=‘ , valor

Exercícios - Dicionários Crie um dicionário d e coloque nele seus dados: nome, idade, telefone,endereço. Usando o dicionário d criado anteriormente, imprima seu nome. Também usando d, imprima todos os itens do dicionário no formato chave : valor, ordenado pela chave.

Controle de Fluxo if exp: if exp: #comandos elif exp: else: else:

Controle de Fluxo Os seguintes valores são considerados falsos: None False Valor 0 de viários tipos: 0, 0.0, 0L, 0j Seqüências vazias: ”, (), [] Mapeamentos vazios Instâncias de objetos que definam __nonzero__() que retorne valor False ou 0 Instância de objetos que definem o __len__() o qual retorne 0.

Estruturas de Repetição while exp: #comandos from time import time start = time () while time () - start < 3.0: print “ esperando ... “ for var in seq: #comandos for num in range(200): print num

Estruturas de Repetição Python fornece a cláusula else para os laços. Será executada quando a condição do laço for falsa. for elemento in lista : if elemento == parada : break print elemento else : print " Laço chegou ao fim “ No exemplo acima, a mensagem “Laço chegou ao fim” só é imprimida caso não existir um elemento que seja igual a “parada”.

Exercícios - Estrutura de Repetição Dada uma lista de palavras “lista” e uma palavra “chave” imprima o índice do elemento que encontrou a palavra, senão imprima “Palavra Não Encontrada”.

Funções Regra LGB Referências buscam 3 escopos: local, global, built-in Atribuições criam ou modificam nomes locais por default Pode forçar argumentos a serem globais utilizando global Exemplo x = 99 def func(y): z = x+y #x não é atribuído então é global return z func(1)

Funções É possível definir argumentos defaults que não precisam ser passados def func(a, b, c=10, d=100): print a, b, c, d >>> func(1,2) 1 2 10 100 >>> func(1,2,3,4) 1,2,3,4

Funções Número variável de argumentos argumentos são passados para a função na forma de uma lista def arg_sem_nome ( * args ): for arg in args : print " arg :" , arg arg_sem_nome ( ’a’ , ’b’ , 123 )

Funções Número variável de argumentos argumentos são passados para a função na forma de um dicionário, o nome do argumento é a chave def arg_com_nome ( ** kargs ): for nome , valor in kargs . iteritems (): print nome , "=" , valor arg_com_nome ( a=1 , b=2 , teste =123 )

Módulos Módulos são funções definidas em arquivos separados Itens são importados utilizando from ou import from module import function function() import module module.function() Módulos são “namespaces” Podem ser utlizados para organizar nomes de variáveis. mod1.umValor = mod1.umValor - mod2.umValor

Classes class A: atributo1 = 'atributo1 da classe A' def __init__(self, val_ini=1): " " " Construtor da classe A" " " self.atributo_de_instacia = val_ini def metodo (self): print self.atributo_de_instacia print A.atributo1

Classes import datetime class Pessoa ( object ): def __init__ ( self , nome , nascimento ): self . nome = nome self . nascimento = nascimento def idade ( self ): delta = datetime . date . today () - self . nascimento return delta . days / 365 def __str__ ( self ): return ’%s , % d anos ’ % ( self .nome , self . idade () )

Classes Atributos de Classe São atributos que estão na classe, não na instância São compartilhados entre todas as instâncias (economia de memória) Os valores são instanciados/atribuídos ao ler a definição de classe Úteis para casos como Jogos, onde uma imagem deve ser compartilhada por todos os personagens idênticos, economizando memória Úteis para fazer “lock” em regiões críticas, evitar condições de corrida, etc...

Classes Atributos de classes class C( object ): c1 = C() c2 = C() c1.l.append ( 1 ) print c1.l # imprime [ 1 ] print c2.l # imprime [ 1 ] print C.l # imprime [ 1 ]

Classes Atributos Públicos e Privados Nomenclatura define atributos/métodos públicos e privados Privados: nomes que se iniciam com __ e não terminam com __. Públicos: os outros nomes possíveis. Convenciona-se que atributos/métodos que se iniciam e terminam com __ (portanto públicos) são de uso interno da classe, apesar de poderem ser utilizados pelo mundo externo.

Classes Propriedade Escrita e leitura dos atributos class C( object ): def __init__ ( self ): self . __x = None def getX ( self ): return self . __x def setX ( self , valor ): if isinstance ( valor , int ): self . __x = valor else : raise TypeError ( “x precisa ser inteiro !” ) x = property ( getX , setX ) c = C() c.x = 1 c.x = ’abc ’ # TypeError : x precisa ser inteiro print c.x

Exceções try: algumaCoisa() except: print ‘Erro’ else: # Será executado se quando não houver exceção outraCoisa()

Exceções try: algumaCoisa() finally: # Será executado sempre! (com ou sem exceção) outraCoisa() # Podemos usar except ou finally, nunca os dois!

Arquivos Lendo todo o conteúdo para a memória: arquivo = open ( ’nome_arq.txt ’ ) conteudo = arquivo.read () arquivo.close () Lendo todas as linhas para a memória (lista): linhas = arquivo.readlines () Lendo uma quantidade específica de bytes: comeco = arquivo.read ( 20 ) # 20 primeiros bytes

Arquivos Lendo com laços: arquivo = open ( ’nome_arq.txt ’ ) # idêntico a arquivo.readlines() for linha in arquivo : print linha while True : linha = arquivo.readline () if linha == “”: break

Exercícios - Contador de Palavras Pedir Arquivo Ler Arquivo Contar quantas vezes aparece cada palavra Listar as palavras em ordem alfabética, junto com o seu número de repetições no texto

Referências Python Language Reference Python Library Reference http://docs.python.org/ref/ref.html Python Library Reference http://docs.python.org/lib/lib.html Python Tutorial http://docs.python.org/tut/tut.html Python Brasil http://www.pythonbrasil.com.br/moin.cgi/PythonBrasil