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

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

Danilo Borges da Silva

Apresentações semelhantes


Apresentação em tema: "Danilo Borges da Silva"— Transcrição da apresentação:

1 Danilo Borges da Silva

2  Simples o suficiente para um curso introdutório  Muitos recursos  Orientação a Objetos Escalável (módulos, classes, controle de exceções) Biblioteca embutida extensa e grande número de módulos fornecidos por terceiros  Grande variedade de aplicações  Linguagem interpretada (script)  Multi-plataforma  Gratuito  Comunidade bastante desenvolvida

3

4  São categorias de valores que são processados de forma semelhante  Por exemplo, números inteiros são processados de forma diferente dos números de ponto flutuante (decimais) e dos números complexos  Tipos primitivos: são aqueles já embutidos no núcleo da linguagem ◦ Simples: numéricos (int, long, float, complex) e cadeias de caracteres (strings) ◦ Compostos: listas, dicionários, tuplas e conjuntos  Tipos definidos pelo usuário: são correspondentes a classes (orientação objeto)

5  São áreas de memória reservadas para armazenamentos de dados  Os nomes de variáveis são identificadores: ◦ Nomes podem ser compostos de algarismos (0-9), letras (a-z ou A-Z) ou sublinhado ( _ ) ◦ O primeiro caractere não pode ser um algarismo ◦ Não Palavras reservadas (if, while, etc) são proibidas  Servem para: ◦ Guardar valores intermediários ◦ Construir estruturas de dados  Uma variável é modificada usando o comando de atribuição: ◦ Var = expressão  É possível também atribuir a várias variáveis simultaneamente: ◦ var1,var2,...,varN = expr1,expr2,...,exprN

6  Variáveis são criadas dinamicamente e destruídas quando não mais necessárias, por exemplo, quando saem fora de escopo (veremos isso mais tarde)  O tipo de uma variável muda conforme o valor atribuído, i.e., int, float, string, etc.

7  Há vários tipos numéricos que se pode usar em python: ◦ Int: números inteiros de precisão fixa 1, 2, 15, -19 ◦ Long: números inteiros de precisão arbitrária 1L, 10000L, L ◦ Floats: números racionais de precisão variável 1.0, 10.5, , 15e-5 ◦ Complex: números complexos 1+1j, 20j, J

8  São cadeias de caracteres  Constituem outro tipo fundamental do python  Constantes string são escritas usando aspas simples ou duplas Ex.: "a" ou 'a‘  O operador “+” pode ser usado para concatenar strings Ex.: "a"+"b" é o mesmo que "ab"  O operador “*” pode ser usado para repetir strings Ex.: "a"*10 é o mesmo que "aaaaaaaaaa"

9  Python usa a tabela de caracteres default do S.O. Ex.: ASCII, UTF-8  Caracteres não imprimíveis podem ser expressos usando notação “barra-invertida” (\) \n é o mesmo que new line \r é o mesmo que carriage return \t é o mesmo que tab \b é o mesmo que backspace \\ é o mesmo que \ \x41 é o mesmo que o caractere cujo código hexadecimal é 41 (“A” maiúsculo)

10  A notação barra-invertida (\) pode ser desabilitada desde que a constante string seja precedida por um r (erre minúsculo) ◦ São chamadas strings raw (cruas)  Também é possível escrever constantes string em várias linhas incluindo as quebras de linha usando três aspas como delimitadores

11  Notação para separar trechos de uma string ◦ Notação: string[índice1:índice2] ◦ Retorna os caracteres desde o de índice1 (inclusive) até o de índice2 (exclusive) ◦ Se o primeiro índice é omitido, é assumido 0 ◦ Se o último índice é omitido, é assumido o fim da string

12  Também chamadas expressões lógicas  Resultam em verdadeiro (True) ou falso (False)  São usadas em comandos condicionais e de repetição  Servem para analisar o estado de uma computação e permitir escolher o próximo passo  Operadores mais usados ◦ Relacionais: >, =, <= ◦ Booleanos: and, or, not  Avaliação feita em “Curto-circuito” ◦ Expressão avaliada da esquerda para a direita ◦ Se o resultado (verdadeiro ou falso) puder ser determinado sem avaliar o restante, este é retornado imediatamente

13  As constantes True e False são apenas símbolos convenientes  Qualquer valor não nulo é visto como verdadeiro enquanto que 0 (ou False) é visto como falso  O operador or retorna o primeiro operando se for vista como verdadeiro, caso contrário retorna o segundo  O operador and retorna o primeiro operando se for vista como falso, caso contrário retorna o segundo  Operadores relacionais são avaliados antes de not, que é avaliado antes de and, que é avaliado antes de or

14  Além dos operadores, é possível usar funções para computar valores  As funções podem ser definidas: ◦ Pelo programador ◦ Em módulos da biblioteca padrão ◦ Por default: são as funções embutidas (built-in)  Na verdade, fazem parte do módulo __builtins__, que é sempre importado em toda aplicação

15  Muitas funções importantes são disponibilizadas em módulos da biblioteca padrão ◦ Ex.: o módulo math tem funções como sin, cos, exp e outras  Um módulo pode conter não só funções mas também variáveis ou classes ◦ Por exemplo, o módulo math define a constante pi  Para usar os elementos de um módulo, pode-se usar o comando import ◦ Formatos:  import modulo  from modulo import nome,...,nome  from modulo import *

16

17  Comandos condicionais  Comandos de repetição  Definição e uso de procedimentos (subprogramas)  Definição e uso de classes e objetos (programação OO)

18  Forma geral: print expr,expr,...  Os valores das expressões são escritos um após o outro sem pular de linha: >>> print "1.001 ao quadrado é ",1.001** ao quadrado é  Se o comando terminar com vírgula, o próximo print escreverá na mesma linha.

19  O programa que computa elementos da série de Fibonacci termina quando atinge um elemento com valor superior a uma constante  Podemos tornar o programa mais flexível se ao usuário for permitido estipular o valor máximo  O comando input permite perguntar ao usuário um valor (normalmente é atribuído a uma variável) ◦ Formato: input(pergunta) ◦ onde pergunta é uma string opcional que será exibida para indicar o valor que se espera (i.e., prompt)

20  É o comando condicional por excelência  Formatos: ◦ if expressao: comandos ◦ if expressao: comandos1 else: comandos2 ◦ if expressao1: comandos1 elif expressao2: comandos2 else: comandos(N)

21  Repete uma seqüência de comandos enquanto uma dada expressão booleana é avaliada como verdadeira  Formato: while expressão: comando... comando

22

23  Maneira de organizar dados de maneira a facilitar seu acesso  Algumas formas são clássicas: ◦ Listas ◦ Arrays (vetores e matrizes) ◦ Tuplas (registros) ◦ Árvores  Linguagens freqüentemente possuem primitivas para construção dessas E.D. ◦ Estruturas de dados embutidas  Outras E.D. mais complexas podem ser construídas combinando as E.D. clássicas

24  São arranjos seqüenciais de informações mais simples  Caracterizam-se por permitir o acesso eficiente aos seus elementos em ordem seqüencial  A definição clássica de uma lista como estrutura de dados abstrata compreende: ◦ Operação de construção de uma lista vazia ◦ Operação que testa se uma dada lista é vazia ◦ Operação para obter o primeiro elemento de uma lista ◦ Uma operação para adicionar um novo elemento no início de uma lista ◦ Operação para retirar o elemento inicial de uma lista

25  Retorna uma progressão aritmética de inteiros numa lista  Forma geral: range (início, parada, incremento) ◦ início (opcional) é o primeiro valor a ser gerado (default: 0) ◦ parada é o limite da progressão: a progressão termina no último valor antes de parada ◦ incremento (opcional) é o passo da progressão (default:1)

26  Permite iterar sobre os elementos de uma lista  Forma geral: for var in lista : comandos ◦ Os comandos são repetidos para cada valor de lista ◦ Durante a repetição, var possui o valor corrente da lista  Uma grande utilidade da função range é construir a lista de iteração  Ex.: >>>for i in range(1,7): print i,

27

28  São estruturas de dados parecidas com listas, mas com a particularidade de serem imutáveis  Tuplas são seqüências e, assim como listas, podem ser indexadas e fatiadas, mas não é possível modificá-las  Uma tupla vazia se escreve ()  Os parênteses são opcionais se não provocarem ambigüidade  Uma tupla contendo apenas um elemento deve ser escrita com uma vírgula ao final

29  Manipulação de strings é uma atividade freqüente em programas Python  Existe um módulo chamado string que contém uma grande quantidade de funcionalidades para trabalhar com strings ◦ Para usá-las:  from string import *  Entretanto, strings pertencem à classe str e a maior parte do que existe no módulo string aparece como métodos da classe str

30

31  São estruturas de dados que implementam mapeamentos  Um mapeamento é uma coleção de associações entre pares de valores ◦ O primeiro elemento do par é chamado de chave e o outro de conteúdo  De certa forma, um mapeamento é uma generalização da idéia de acessar dados por índices, exceto que num mapeamento os índices (ou chaves) podem ser de qualquer tipo imutável

32  Considere que queiramos representar um caderno de telefones  Uma solução é ter uma lista de nomes e outra de telefones ◦ Telefone de nome[i] armazenado em telefone[i] ◦ Acrescentar “Joao” com telefone “ ”: nome+= “Joao” telefone+=“ ” ◦ Para encontrar o telefone de “Joao”: Tel = telefone[nome.index[“Joao”]]  Dicionários tornam isso mais fácil e eficiente ◦ telefone[“Joao”] = “ ” ◦ Tel = telefone[“Joao”]

33  Uma constante do tipo dicionário é escrita { chave1:conteúdo1,... chaveN:conteúdoN}  Uma variável do tipo dicionário pode ser “indexada” da maneira habitual, isto é, usando colchetes  O conteúdo associado a uma chave pode ser alterado atribuindo-se àquela posição do dicionário  Novos valores podem ser acrescentados a um dicionário fazendo atribuição a uma chave ainda não definida  Não há ordem definida entre os pares chave/conteúdo de um dicionário

34  get(chave,valor) ◦ Obtém o conteúdo de chave ◦ Não causa erro caso chave não exista: retorna valor ◦ Se valor não for especificado chaves inexistentes retornam None

35  items() retorna uma lista com todos os pares chave/conteúdo do dicionário  keys() retorna uma lista com todas as chaves do dicionário  values() retorna uma lista com todos os valores do dicionário  pop (chave) ◦ Obtém o valor correspondente a chave e remove o par chave/valor do dicionário

36

37  É uma técnica de programação que nos permite pensar num problema em diversos níveis  A idéia é que quando estamos pensando num problema macroscopicamente, não estamos preocupado com minúcias  Dividir para conquistar: ◦ Um problema é dividido em diversos sub- problemas ◦ As soluções dos sub-problemas são combinadas numa solução do problema maior

38  Em Python, sub-programas têm o nome de funções  Formato geral: def nome (arg, arg,... arg): comando... comando  Onde: ◦ nome é o nome da função ◦ args são especificações de argumentos da função  Uma função pode ter 0, 1 ou mais argumentos  comandos contêm as instruções a ser executadas quando a função é invocada

39

40  É uma disciplina de programação assim como a Programação Estruturada  Tenta unificar as idéias de algoritmos e estruturas de dados através do conceito de Objeto ◦ Um objeto é uma unidade de software que encapsula algoritmos e os dados sobre o qual os algoritmos atuam  Os seguintes conceitos são importantes quando falamos de orientação a objetos: ◦ Polimorfismo ◦ Abstração ◦ Herança

41  É o que permite que dois objetos diferentes possam ser usados de forma semelhante ◦ Por exemplo, tanto listas quanto tuplas ou strings podem ser indexadas por um número entre colchetes e suportam o método len ◦ Assim, se escrevemos... for i in range(len(X)): print i, X[i] ◦...não é possível saber de antemão se X é uma tupla, uma lista ou uma string  Desta forma, se escrevemos um algoritmo para ser aplicado um objeto X, então também pode ser aplicado a um objeto Y desde que Y seja suficientemente polimórfico a X

42  É o que permite que um objeto seja utilizado sabendo-se sobre ele apenas a sua interface ◦ Em particular, não precisamos conhecer a implementação dos seus métodos  Em OO a abstração tem mais alcance pois um objeto encapsula tanto dados como algoritmos ◦ Assim, podemos atribuir objetos ou passar objetos como argumentos, sem necessariamente saber como o objeto está implementado

43  É o que permite construir objetos que são especializações de outro objeto ◦ Isso permite o reuso de software já que objetos especializados herdam dos objetos genéricos uma série de atributos comuns  Por exemplo, considere um objeto que representa uma forma geométrica. Então, ele pode ter características tais como área, perímetro, centróide, etc. ◦ Um polígono é uma forma geométrica,  Portanto, herda todas as características de formas geométricas  Deve suportar também características específicas como número de lados e comprimento de arestas

44  A maneira mais simples é: class nome: var = valor... var = valor def metodo (self,... arg):... def metodo (self,... arg):...  As variáveis e os métodos são escritos precedidos pelo nome da classe e por um ponto (.)  Assim, uma variavel v definida numa classe c é escrita c.v  Os métodos sempre têm self como primeiro argumento ◦ self se refere a uma instância da classe  Uma nova instância da classe é criada usando nome ()

45 >>> class C: a = 2 b = 3 def f(self,x): return C.a*x+C.b >>> C.a = 9 9 >>> C.b 3 >>> obj=C() >>> obj.f(7) 17

46  No exemplo anterior, a e b eram atributos da classe C e portanto usáveis por qualquer instância de C  Mais freqüentemente, precisamos de atributos associados a instâncias individuais  Um atributo attr associado a uma instância obj tem nome obj.attr  Se queremos nos referir a um atributo attr de um objeto dentro de algum de seus métodos, usamos o nome self.attr

47 >>> class C: def init(self,a=2,b=3): self.a = a self.b = b def f(self,x): return self.a*x+self.b >>> obj1 = C() >>> obj1.init(2,3) >>> obj2 = C() >>> obj2.init(8,1) >>> obj1.f(7) 17 >>> obj2.f(7) 57

48  Se uma classe define atributos de classe, as instâncias herdam esses atributos da classe como atributos de instância  Ex.: >>> class C: a = 1 def f(self,x): self.a += x >>> c = C() >>> c.f(2) >>> c.a 3 >>> C.a 1

49  Um método como init do exemplo anterior é bastante útil para inicializar atributos da instância e é conhecido como construtor da classe  Na verdade, Python suporta construtores que podem ser chamados automaticamente na criação de instâncias ◦ Basta definir na classe um método chamado __init__ ◦ Este método é chamado automaticamente durante a criação de um nova instância da classe, sendo que os argumentos são passados entre parênteses após o nome da classe  Obs.: o método __init__ é apenas um exemplo de “método mágico” que é invocado de maneira não padrão (veremos outros adiante)

50 >>> class C: def __init__(self,a=2,b=3): self.a = a self.b = b def f(self,x): return self.a*x+self.b >>> obj1 = C() >>> obj2 = C(8,1) >>> obj1.f(7) 17 >>> obj2. f(7) 57

51  Para fazer uma classe C herdar de outra B, basta declarar C como: class C(B):...  Diz-se que C é sub-classe (ou derivada) de B ou que B ésuper-classe (ou base) de C  C herda todos os atributos de B  A especialização de C se dá acrescentando-se novos atributos (variáveis e métodos) ou alterando-se métodos  Se, um método de C, precisa invocar um método m de B, pode-se utilizar a notação B.m para diferenciar do m de C, referido como C.m

52 >>> class B: n = 2 def f(self,x): return B.n*x >>> class C(B): def f(self,x): return B.f(self,x)**2 def g(self,x): return self.f(x)+1 >>> b = B() >>> c = C() >>> b.f(3) 6 >>> c.f(3) 36 >>> c.g(3) 37 >>> B.n = 5 >>> c.f(3) 225

53  O construtor de uma classe D derivada de C precisa chamar o construtor de C  A chamada do construtor de C não é feita por default  Permite inicializar os elementos de C que não são específicos de D  Usa-se a notação C.__init__(self,...)

54  É possível construir uma classe que herda de duas ou mais outras. Ex.: class C(A,B):...  Nesse caso, a classe derivada herda todos os atributos de ambas as classes-base  Se ambas as classes base possuem um atributo com mesmo nome, aquela citada primeiro prevalece  No exemplo acima, se A e B possuem um atributo x, então C.x se refere ao que foi herdado de A

55  Framework web, escrito em Python  Focado em desenvolvimento ágil  “Nós fazemos a parte repetitiva, você faz o que interessa.”

56  Veremos o desenvolvimento de uma aplicação web utilizando o framework.  Nome do projeto: Controle de estoque de um bar.

57

58


Carregar ppt "Danilo Borges da Silva"

Apresentações semelhantes


Anúncios Google