Introdução à Python - Módulo 2

Preview:

DESCRIPTION

Introdução a Python - II JTIMS - Módulo 2 Mini curso - 2013 www.jhoonb.coom

Citation preview

Introdução à Python 3

Minicurso de Introdução a linguagem de programação Python.

II JTIMS - Jornada de Tecnologias da Informação de Mato Grosso do Sul

M 2

CONTEÚDO PROGRAMÁTICO

Os módulos e arquivos usados, serão disponíveis no site após o termino de cada aula, url:

jhoonb.com/courses

CONTEÚDO PROGRAMÁTICO

Módulo 2:1. Funções.

a. Definindo, parâmetros, variável global, multíplos retornos2. Paradigmas de Programação.

a. Exemplo de POO.b. Programação Funcional, List comprehension

3. Tipo de Dados (métodos).a. list, dic, str, tuple

4. Exemplos.5. Exercícios.

MÓDULO 2: Criando Funções

Dividir para Conquistar!

MÓDULO 2: Criando Funções

Um problema é dividido em diversos subproblemas. As soluções dos sub-problemas são combinadas numa solução do problema maior.

MÓDULO 2: Criando Funções

“It is better to have 100 functions operate on one data structure than 10 functions on 10 data

structures.” - Alan Perlis.

MÓDULO 2: Criando Funções

Uma função é um bloco de código ao qual são opcionalmente passados parâmetros e pode opcionalmente também retornar valores.Uma função é definida pela instrução def que é seguida pelo nome da função e por parêntesis, que contêm a lista de parâmetros. Opcionalmente uma função pode usar a instrução return que termina a função e retorna ao chamador.

MÓDULO 2: Criando Funções

Para criar uma função em Python, usa-se a palavra reservada: def

def <nomefuncao>(<parametros>):

<indentação> <comandos>

MÓDULO 2: Criando Funções

❖ Não é necessário especificar os tipos dos dados nos parâmetros.

❖ As variáveis declaradas dentro das funções tem escopo local, quando a função termina elas são destruídas.

MÓDULO 2: Criando Funções

❖ Pode-se usar funções com retornos, usando return no final da função.

def soma(a,b):

return a+b

>>> soma(2,3)

>>> 5

MÓDULO 2: Criando Funções

def foo(x):

x = x+1

print(x)

x = 10

print(x) -> 10

foo(x) -> 11

print(x) -> 10

MÓDULO 2: Criando Funções

def funcao1():

print("a função 1 é essa")

def funcao2():

print("a funcao 2 é essa")

a,b = 2,3

print(" a + b é igual a ", a + b )

MÓDULO 2: Criando Funções

>>> funcao1()

>>> a função 1 é essa

>>> funcao2()

>>> a funcao 2 é essa

>>> a mais b é igual = 5

MÓDULO 2: Passagem por parâmetros

Parâmetros são variáveis que recebem valor do chamador, essas variáveis serão usadas localmente, no escopo da função.Pode-se passar N parâmetros para um função, e no Python NÃO é necessário especificar o tipo da variável.Veja o exemplo:

MÓDULO 2: Passagem por parâmetros

def spam(eggs, foo):

print(eggs, foo)

>>> spam(2,3)

>>> 2 3

>>> spam(‘zaz zaz’, ‘ e zaz’ )

>>> zaz zaz e zaz

MÓDULO 2: Passagem por parâmetros

Passagem por parâmetro não altera a variável chamada:

def spam(x):

x = ‘CHAPOLIN’

>>> x = ‘CHAVES’

>>> spam(x)

>>> x <- ‘CHAVES’

MÓDULO 2: Variável Global

Para se usar uma variável do escopo global dentro do escopo de uma função (que é local), usa-se a palavra reservada global na frente da variável.

global x

MÓDULO 2: Variável Global

def foo():

global x

x += 1

print(x)

x = 10

print(x) -> 10

foo() -> 11

print(x) -> 11

MÓDULO 2: Retorno de função

Python fornece múltiplos retornos de função,ex.:

def spam(x):

return x,x,x,x

>>> spam(‘spam’)

>>> (‘spam’,’spam’,’spam’,’spam’)

>>> a,b,c,d = spam(‘eggs’)

>>> print(a,b,c,d)

>>> ‘eggs’ ‘eggs’ ‘eggs’ ‘eggs’

MÓDULO 2: Exercícios.

Exercícios!

MÓDULO 2:

Paradigmas de Programação

MÓDULO 2: Paradigmas de Programação

Python é uma linguagem multiparadigma, isso quer dizer que existe mais de uma maneira de programar e abstrair os códigos.

MÓDULO 2: Paradigmas de Programação

Existem vários paradigmas, como por exemplo:

Programação Orientada a Objetos.Programação Funcional.Programação Estruturada/Imperativa.Programação Lógica.

MÓDULO 2: Paradigmas de Programação

Programação Funcional:Python, Erlang, Haskell, F#, OCaml ...

Trata a computação como uma avaliação de funções matemáticas. [tipos imutáveis]

MÓDULO 2: Paradigmas de Programação

Programação Orientada a Objetos:Python, JAVA, C++, Smaltalk, Ruby ...

Trata a computação como baseada na composição e interação entre diversas unidades de software chamadas de objetos.

MÓDULO 2: Paradigmas de Programação

Programação Estruturada/Imperativa:Python, C, Go, Pascal, Lua ...

MÓDULO 2: Paradigmas de Programação

Programação Lógica:Prolog, Lisp, Planner ...

Baseada na Lógica matemática, de construção, demostrações e inferências.

tem como objetivo realizar funções ou esquemas lógicos por meio de parâmetros e metas.

MÓDULO 2: Paradigmas de Programação

MÓDULO 2: Paradigmas de Programação

“A language that doesn't affect the way you think about programming, is not worth

knowing.” Alan Perlis

MÓDULO 2: Orientação a Objetos

Uma Breve, rápida, curta, pequena demonstração

MÓDULO 2: Orientação a Objetos

class Chapolin(object):

‘’’ Mais rapido que uma lesma mais forte que um gambá

é o chapolin colorado!! ‘’’’

def __init__(self):

self.forca = ‘ de um gamba’

self.qi = ‘ de uma mula’

self.velocidade = ‘ de lesma’

MÓDULO 2: Orientação a Objetos

class Chapolin(object):

‘’’ Mais rapido que uma lesma mais forte que um gambá

é o chapolin colorado!! ‘’’’

def __init__(self):

self.forca = ‘ de um gamba’

self.qi = ‘ de uma mula’

self.velocidade = ‘ de lesma’

new Style Class

MÓDULO 2: Orientação a Objetos

class Chapolin(object):

‘’’ Mais rapido que uma lesma mais forte que um gambá

é o chapolin colorado!! ‘’’’

def __init__(self):

self.forca = ‘ de um gamba’

self.qi = ‘ de uma mula’

self.velocidade = ‘ de lesma’

new Style Class

DOCSTRING

MÓDULO 2: Orientação a Objetos

class Chapolin(object):

‘’’ Mais rapido que uma lesma mais forte que um gambá

é o chapolin colorado!! ‘’’’

def __init__(self):

self.forca = ‘ de um gamba’

self.qi = ‘ de uma mula’

self.velocidade = ‘ de lesma’

new Style Class

DOCSTRING

Construtor

MÓDULO 2: Orientação a Objetos

class Chapolin(object):

‘’’ Mais rapido que uma lesma mais forte que um gambá

é o chapolin colorado!! ‘’’’

def __init__(self):

self.forca = ‘ de um gamba’

self.qi = ‘ de uma mula’

self.velocidade = ‘ de lesma’

new Style Class

DOCSTRING

Construtor

MÓDULO 2: Orientação a Objetos

class Chapolin(object):

‘’’ Mais rapido que uma lesma mais forte que um gambá

é o chapolin colorado!! ‘’’’

def __init__(self):

self.forca = ‘ de um gamba’

self.qi = ‘ de uma mula’

self.velocidade = ‘ de lesma’

new Style Class

DOCSTRING

Inicializador

MÓDULO 2: Orientação a Objetosdef frase1(self):

print(‘Não contam com minha ASTUCIA!’)

def frase2(self):

print(‘PALMA PALMA NAO PRIEMOS CANICO!’)

def frase3(self):

print(‘Meus novimentos sao FRIAMENTE calculados’)

def frase4(self):

print(‘se aproveitam de minha nobreza’)

MÓDULO 2: Orientação a Objetosdef frase1(self):

print(‘Não contam com minha ASTUCIA!’)

def frase2(self):

print(‘PALMA PALMA NAO PRIEMOS CANICO!’)

def frase3(self):

print(‘Meus novimentos sao FRIAMENTE calculados’)

def frase4(self):

print(‘se aproveitam de minha nobreza’)

Métodos

MÓDULO 2: Orientação a Objetosdef frase1(self):

print(‘Não contam com minha ASTUCIA!’)

def frase2(self):

print(‘PALMA PALMA NAO PRIEMOS CANICO!’)

def frase3(self):

print(‘Meus novimentos sao FRIAMENTE calculados’)

def frase4(self):

print(‘se aproveitam de minha nobreza’)

Métodos

self: explicito

MÓDULO 2: Orientação a Objetos

def atributos(self):

print(‘Força: ’,self.forca)

print(‘Q.I.: ’, self.qi)

print(‘Velocidade: ’, self.velocidade)

def troca_atributos(self, f,q,v):

self.forca = f

self.qi = q

self.velocidade = v

MÓDULO 2: Orientação a Objetos

def atributos(self):

print(‘Força: ’,self.forca)

print(‘Q.I.: ’, self.qi)

print(‘Velocidade: ’, self.velocidade)

def troca_atributos(self, f,q,v):

self.forca = f

self.qi = q

self.velocidade = v

self: referencia os tributos da classe

MÓDULO 2: Orientação a Objetos

def quem_podera_me_defender(self):

print(‘EEEEEEEEEEEEEEEEU!!!!!’)

MÓDULO 2: Orientação a Objetos

>>> chapolin = Chapolin()

MÓDULO 2: Orientação a Objetos

>>> chapolin = Chapolin()

Instância da Classe, um novo objeto

MÓDULO 2: Orientação a Objetos

>>> chapolin = Chapolin()

>>> chapolin.quem_podera_me_defender()

MÓDULO 2: Orientação a Objetos

>>> chapolin = Chapolin()

>>> chapolin.quem_podera_me_defender()

chama um dos métodos pelo operador .

MÓDULO 2: Orientação a Objetos

>>> chapolin = Chapolin()

>>> chapolin.quem_podera_me_defender()

‘EEEEEEEEEEEEEEEEU!!!!!’

MÓDULO 2: Orientação a Objetos

>>> chapolin = Chapolin()

>>> chapolin.quem_podera_me_defender()

‘EEEEEEEEEEEEEEEEU!!!!!’

>>> chapolin.frase2()

‘PALMA PALMA NAO PRIEMOS CANICO!’

MÓDULO 2: Orientação a Objetos

Isso sem mencionar:Polimorfismo.

MÓDULO 2: Orientação a Objetos

Isso sem mencionar:Polimorfismo.Encapsulamento.

MÓDULO 2: Orientação a Objetos

Isso sem mencionar:Polimorfismo.Encapsulamento.Classes abertas.

MÓDULO 2: Orientação a Objetos

Isso sem mencionar:Polimorfismo.Encapsulamento.Classes abertas.Herança Múltipla.

MÓDULO 2: Orientação a Objetos

Isso sem mencionar:Polimorfismo.Encapsulamento.Classes abertas.Herança Múltipla.Sobrecarga de Operadores

MÓDULO 2: Funcional

Paradigma Funcional

MÓDULO 2: Programação funcional

Uma Breve, rápida, curta, pequena demonstração

MÓDULO 2: Programação funcional

Em programação Funcional, as funções são tratadas como valores de primeira importância(First Class Function), o que é o mesmo que dizer que funções podem ser parâmetros ou valores de entrada para outras funções e podem ser os valores de retorno ou saída de uma função. Então podemos entender paradigma funcional como um mapeamento dos valores de entrada nos valores de retorno, através de funções.

MÓDULO 2: Programação funcional

● Legibilidade e manutenibilidade gerados. Isso é porque cada função é criada para realizar uma determinada tarefa específica seus argumentos.

● Como o código é mais fácil ao refatorar, as alterações no design são geralmente mais fáceis de implementar.

MÓDULO 2: Programação funcional

Python, conceitos Funcionais:

Lambdafirst-class functionsHigher-order functionsmap()functools.reduce()filter()

MÓDULO 2: Programação funcional

Python, conceitos Funcionais:

Lambdafirst-class functionsHigher-order functionsmap()functools.reduce()filter()

MÓDULO 2: Funcional

Todos os números pares de 1 a 5 milhões:

...

MÓDULO 2: Funcional

Todos os números pares de 1 a 5 milhões:

par = lambda x: x % 2 == 0

todos = list(filter(par,range(1,5000001)))

MÓDULO 2: Funcional

Todos os números pares de 1 a 5 milhões:

ou

MÓDULO 2: Funcional

Todos os números pares de 1 a 5 milhões:

todos = list(filter(lambda x: x % 2 == 0,range(1,5000001)))

MÓDULO 2: Funcional

criptografar uma texto, com a criptografia de Cezar:

...

MÓDULO 2: Funcional

criptografar uma texto, com a criptografia de Cezar:

texto = list(“as arveres samos nozes”)

crip = lambda x: chr(ord(x)+1)

novo = list(map(crip, texto))

MÓDULO 2: Funcional

decriptar o texto:

decrip = lambda x: chr(ord(x)-1)

novo = list(map(crip, novo))

MÓDULO 2: Funcional

Somar todos os números de 1 a 1000:

from functools import reduce

soma = reduce(lambda x,y: x+ y, range(1,1001))

MÓDULO 2: Funcional

Somar todos os números de 1 a 1000:

from functools import reduce

soma = reduce(lambda x,y: x+ y, range(1,1001))

Existe uma maneira bem mais fácil e poderosa em Python...

MÓDULO 2: List comprehension

List comprehension!

MÓDULO 2: List comprehension

List comprehension!

Elimina o uso de:

MÓDULO 2: List comprehension

List comprehension!

Elimina o uso de:functools.reduce()

MÓDULO 2: List comprehension

List comprehension!

Elimina o uso de:functools.reduce()filter()

MÓDULO 2: List comprehension

List comprehension!

Elimina o uso de:functools.reduce()filter()map()

MÓDULO 2: List comprehension

List comprehension!

Uma compreensão de lista é uma construção sintática disponível em algumas linguagens de programação para criação de uma lista baseada em listas existentes. Ela segue a forma da notação de definição de conjunto matemática (Teoria formal de Conjunto) como forma distinta para uso de funções de mapa e filtro.

MÓDULO 2: List comprehension

Exemplo do poder dessa feature na linguagem Python.

MÓDULO 2: List comprehension

MÓDULO 2: List comprehension

S é o conjunto de todos os números "2 vezes x" onde x é um elemento do conjunto dos números naturais N, pelo qual x ao quadrado é maior que 3

MÓDULO 2: List comprehension

Em Python usando List comprehension

MÓDULO 2: List comprehension

Em Python usando List comprehension

S = [2 * x for x in range(101) if x ** 2 > 3]

MÓDULO 2: List comprehension

S = [2 * x for x in range(101) if x ** 2 > 3]

MÓDULO 2: Funcional

Finalizando

MÓDULO 2: Funcional

Finalizando

MÓDULO 2: Estrutura/tipos de Dados

Estrutura/tipos de Dadoslist, str, dict

MÓDULO 2: Estrutura/tipos de Dados

List em Python é:Listas são conjuntos de elementos de qualquer tipo separados por vírgula e que estão entre colchetes, e que podem ser modificados.>>> lista = [2, 3, 4, ‘eggs’]

>>> lista[2] = 5

>>> print(lista)

[2,3, 5, ‘eggs’]

MÓDULO 2: Estrutura/tipos de Dados

Métodos de list:

.append(x) adiciona um elemento ao fim da lista

.count() retorna o número de vezes que x aparece na lista

.extend([x]) estende a lista com novos elementos passados

.index(x) retorna o índice (ou posição) de um determinado elemento da lista.

.insert(x,y) insere x na posicao y posição.

MÓDULO 2: Estrutura/tipos de Dados

Métodos de list:

.pop(x), .pop() remove o elemento da posição indicada e o retorna, ou o ultimo se não passar nenhuma elemento

.remove() remove o primeiro elemento da lista.

.reverse() estende a lista com novos elementos passados

.sort() ordena os elementos da lista.

MÓDULO 2: Estrutura/tipos de Dados

exemplos...

MÓDULO 2: Estrutura/tipos de Dados

Dict, dicionários(Mapeamento):

MÓDULO 2: Estrutura/tipos de Dados

Dicionários são conjuntos não ordenados de pares, onde o primeiro elemento do par, o índice, é chamado de chave e o outro de valor. Um dicionário, em Python, suporta qualquer tipo de objeto, seja ele uma lista ou até mesmo outros dicionários e pode ser modificado. Para criar um dicionário basta declarar pares “chave:valor” separados por vírgula e delimitados por chaves.

Dict, dicionários(Mapeamento):

MÓDULO 2: Estrutura/tipos de Dados

>>> dic = {1:'um', 2:'dois', 3:'tres'}

>>> dic[1]

'um'

>>> dic[4]='quatro'

>>> dic

{1: 'um', 2: 'dois', 3: 'tres', 4: 'quatro'}

Dict, dicionários(Mapeamento), exemplo:

MÓDULO 2: Estrutura/tipos de Dados

.keys() - retorna as chaves do dicionário

.values() - retorna os valores do dicionário

.items() - returna uma tupla contendo chave/valor.

x in y.keys() - verifica se a chave x existe no dicionario y

x in y.values() - verifica se o valor x existe no dicionário y

del x[key] - deleta a chave/valor do key do dicionário x

Dict, dicionários(Mapeamento), Métodos:

MÓDULO 2: Estrutura/tipos de Dados

.clear() - remove todos os elementos do dicionário

x in d - verifica se a chave x existe no dicionário d

x not in d - verifica se a chave x não está no dict d

.update(d) atualiza o dict com outro o dict d passado

Dict, dicionários(Mapeamento), Métodos:

MÓDULO 2: Estrutura/tipos de Dados

Strings são seqüências de caracteres entre aspas que não podem ser modificadas, a menos que você reatribua. Podem ser acessadas via [].

Strings, str:

MÓDULO 2: Estrutura/tipos de Dados

Podemos acessar o conteúdo de uma string usando colchetes []. Exemplo:

>>> nome = “KIKO”

>>> nome[0]

‘K’

Strings, str, fatiando strings (slice):

MÓDULO 2: Estrutura/tipos de Dados

>>> nome = “KIKO”

>>> nome[0]

‘K’

>>> nome[0:2]

‘KI’

>>> nome[:2]

‘KI’

Strings, str, fatiando strings (slice):

MÓDULO 2: Estrutura/tipos de Dados

>>> nome = “KIKO”

>>> nome[2:]

>>> ‘K0’

>>> nome[:]

>>> ‘KIKO’

>>> nome[0::2]

>>> ‘KK’

Strings, str, fatiando strings (slice):

MÓDULO 2: Estrutura/tipos de Dados

Técnica:

STRING[INICIO : FINAL - 1: INCREMENTO]

Strings, str, fatiando strings (slice):

MÓDULO 2: Estrutura/tipos de Dados

.find(x) - retorna o posicao do valor x se existir

.replace(x,y) - retorna a string trocando x por y

.upper() - retorna a string com as letras maiúsculas.

.lower() - retorna a string com as letras minúsculas.

.count(x) - retorna o número de ocorrências de x na string

.strip() - retorna a string se espaços no começo e final.

Strings, str, métodos:

Exercícios/Dúvidas?

MÓDULO 2: Exercícios

list: http://docs.python.org/3/library/stdtypes.html#list

dict: http://docs.python.org/3/library/stdtypes.html#mapping-types-dict

str: http://docs.python.org/3/library/stdtypes.html#text-sequence-type-str

tuple: http://docs.python.org/3/library/stdtypes.html#tuple

range: http://docs.python.org/3/library/stdtypes.html#range

MÓDULO 2: Referências

MÓDULO 2: FIM

Material disponível em:jhoonb.com/courses