Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Paradigmas PYTHON, Notas de estudo de Engenharia Informática

uma apresentação sobre a linguagem de programação PYTHON

Tipologia: Notas de estudo

2014

Compartilhado em 16/09/2014

joel-sarmento-barros-3
joel-sarmento-barros-3 🇧🇷

4.3

(8)

30 documentos

1 / 26

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
CENTRO DE ENSINO SUPERIOR FUCAPI – CESF
ENGENHARIA DA COMPUTAÇÃO
"Tendo, pois, tal esperança, usamos de muita ousadia no falar."
Jesus de Nazaré
www.facebook.com/vsegueme www.twier.com/vemesegueme30
LINGUAGEM DE PROGRAMAÇÃO PYTHON
MANAUS-AM
MAIO / 2011
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a

Pré-visualização parcial do texto

Baixe Paradigmas PYTHON e outras Notas de estudo em PDF para Engenharia Informática, somente na Docsity!

CENTRO DE ENSINO SUPERIOR FUCAPI – CESF

ENGENHARIA DA COMPUTAÇÃO

"Tendo, pois, tal esperança, usamos de muita ousadia no falar."

Jesus de Nazaré www.facebook.com/vsegueme www.twi�er.com/vemesegueme

LINGUAGEM DE PROGRAMAÇÃO PYTHON

MANAUS-AM

MAIO / 2011

CENTRO DE ENSINO SUPERIOR FUCAPI – CESF

ENGENHARIA DA COMPUTAÇÃO

ANDREZA CARVALHO DE SOUZA - 200810067

ALBERT OTTO -

DELSON DO VALE ASSUNÇÃO - 2008100

JOEL SARMENTO BARROS – 200810055

PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO

MANAUS-AM

MAIO / 2011

INTRODUÇÃO

O Python é uma linguagem de programação de alto nível criada por Guido Van Rossum, cuja primeira versão foi publicada em 1991. O Python suporta vários paradigmas de programação, como a programação

Tipos primitivos: são aqueles já embutidos no núcleo da linguagem Simples: números (int, long, float, complex) e cadeias de caracteres (st rings). Compostos: listas, dicionários, tuplas e conjuntos Tipos definidos pelo usuário: são correspondentes a classes (orienta -ção objeto).

VALORES NUMERICOS Como já foi dito acima, o Python suporta números inteiros, reais e complexos, que podemos manipular com as operações aritméticas convencionais (ver Tab. 2.1). Por exemplo Listagem 2.1:

n = 35*2 # Variável inteira x = 3.14 / 2.0 # Variável real z = 1 j # Variável complexa

Neste exemplo n = 3 · 52 = 75 e à variável z é atribuído o valor da unidade imaginária, que em Python é representada por j, mas que tem sempre que se seguir a um número para se distinguir da variável j. As operações que envolvam números inteiros e reais retornam um resultado real e as que envolvam dois inteiros devolvem um inteiro. Uma consequência importante desta última propriedade é que o mesmo operador divisão efetua a divisão inteira para dois valores inteiros, mas a divisão real quando um dos valores é real. Listagem 2.2:

print 1/3 #Imprime 0 print 1/3.0 #Imprime 0. prin t 1.0 / 3.0 #Imprime 0.

Este comportamento vai mudar na versão 3.0 do Python, sendo então o operador / sempre a divisão real, e utilizando // para a divisão inteira. Podemos forçar esse novo comportamento já na versão actual do Python se a primeira linha do nosso programa for:

Listagem 2.3:

from future import d i v i s i o n

Tabela 2.1: Operadores aritméticos

Operador Descrição

/ // ** %

Soma Subtração Multiplicação Divisão (real ou inteira) Divisão inteira Elevar a uma potência Módulo (resto da divisão inteira)

"Tendo, pois, tal esperança, usamos de muita ousadia no falar."

Jesus de Nazaré www.facebook.com/vsegueme www.twi�er.com/vemesegueme

print s [ : : 2 ] #Todos os elementos , incremento 2 , #imprime ' ace ' print s [ : : −1 ] #Todos os e lementos em ordem inv e r sa , #imprime ' f e d c b a ' print s [ 3 : ] #I n í c i o no í n d i c e 3 , imprime ' d e f '

LISTAS

Uma lista é um conjunto ordenado de objetos. Uma lista pode ser alterada,inserindo, apagando ou substituindo um ou mais elementos. Em Python as listas são delimitadas por parêntesis retos. Listagem 2.8:

l = [ 3. 1 4 , " pi " , 7 ] print l [ 0 ] #Imprime 3. l [ 2 ] += 3 # Agora l é [ 3. 1 4 , " p i " ,10] l. append (1 j ) #Ins e r e o número complexo 1 j #no f im da l i s t a

As listas, tal como as cadeias de caracteres e tuplos suportam inde usando sequências. Listagem 2.9:

l = [ 1 , "a" , 3. 1 4 , 2. 7 1 8 ] print l [ : 2 ] #Imprime [ 1 , ' a ' ]

Tabela 2.2: Métodos das listas

Método Descrição insert(i,v) append(v) remove(v) pop()

Insere o valor v na posição i Acrescenta o valor v ao 0 01 Cm da lista Remove da lista o primeiro item com valor v Retorna o último valor da lista, removendo-o.

index(v) count(v) sort() reverse()

Retorna o índice da primeira ocorrência de v. Se não existir retorna um erro. Número de vezes que v está na lista Ordena a lista Inverte a ordem dos elementos da lista

print s [ 4 : 2 ] #I n í c i o no í n d i c e 4 , termina no 2 , #como não corresponde a nenhum índice #p o s s í v e l , r e torna uma cadeia de #c a r a c t e r e s vaz ia , ' '

Em Python as cadeias de caracteres são imutáveis e embora possamos aceder a caracteres individuais não os podemos alterar:

In [1]: s = “abc” In [2]: s[0] = “z” TypeError: 'str' object does not support item assignment

Podemos no entanto atribuir à mesma variável um novo valor construído com base no anterior:

In [1]: s = “abc” In [2]: s = “z” + s[1:] In [3]: print s zbc

TUPLOS

Os tuplos são sequências ordenadas de objectos, semelhantes às listas, mas imutáveis. Os tuplos são delimitados por parêntesis.

Listagem 2.10:

Classe.método(instância, argumento). Os métodos devem referenciar explicitamente a referência para o objeto incluindo o parâmetro self como o primeiro argumento do método.[23] Antes da versão 3.0, Python possuia dois tipos de classes: "old-style" e "new-style". Classes old-style foram eliminadas no Python 3.0, e todas são new-style. Em versões entre 2.2 e 3.0, ambos tipos de classes podiam ser usadas. A sintaxe de ambos estilos é a mesma, a diferença acaba sendo de onde objeto da classe é herdado, direta ou indiretamente (todas classes new- style herdam de object e são instancias de type). As classes new-styles nada mais são que tipos definidos pelo usuário.

TRATAMENTO DE EXCEÇÕES

Python suporta e faz uso constante de tratamento de exceções como uma forma de testar condições de erro e outros eventos inesperados no programa. É inclusive possível capturar uma exceção causada por um erro de sintaxe. O estilo da linguagem apóia o uso de exceções sempre que uma condição de erro pode aparecer. Por exemplo, ao invés de testar a disponibilidade de acesso a um recurso, a convenção é simplesmente tentar usar o recurso e capturar a exceção caso o acesso seja rejeitado (recurso inexistente, permissão de acesso insuficiente, recurso já em uso, ...). Exceções são usadas frequentemente como uma estrutura de seleção, substituindo blocos if-else, especialmente em situações que envolvem threads

. Uma convenção de codificação é o EAFP, do inglês, "é mais fácil pedir perdão que permissão". Isso significa que em termos de desempenho é preferível capturar exceções do que testar atributos antes de os usar. Segue abaixo exemplos de código que testam atributos ("pedem permissão") e que capturam exceções ("pedem perdão"): Teste de atributo if hasattr( spam, 'eggs') : ham = spam. eggs else : handle_error ()

Captura de exceção try : ham = spam. eggs except AttributeError : handle_error () Ambos os códigos produzem o mesmo efeito, mas há diferenças de desempenho. Quando spam possui o atributo eggs, o código que captura exceções é mais rápido. Caso contrário, a captura da exceção representa uma perda considerável de desempenho, e o código que testa o atributo é mais rápido. Na maioria dos casos o paradigma da captura de exceções é mais rápido, e também pode evitar problemas de concorrência. [27]^ Por exemplo, num ambiente multitarefa, o espaço de tempo entre o teste do atributo e seu uso de fato pode invalidar o atributo, problema que não acontece no caso da captura de exceções.

Exceções Em geral, com laços convencionais, todas as necessidades `normais' de controle de um programa podem ser implementadas. No entanto, quando algo inesperado ocorre, ou uma condição de erro conhecido é atingida, Python oferece uma forma adicional de controlar o fluxo de execução: a exceção. A exceção é um recurso de linguagens de programação modernas que serve para informar que uma condição incomum ocorreu. Embora existam outras aplicações, em geral comunicam-se através de exceções erros ou problemas que ocorrem durante a execução de um programa. Exceções são internamente geradas pelo interpretador Python quando situações excepcionais ocorrem. No exemplo abaixo,

a = [1, 2, 3] print a[5] o código interno do interpretador sabe que não podemos acessar uma lista através um índice não-existente, e gera uma exceção: Traceback (most recent call last): File "", line 1, in? IndexError: list index out of range Vamos analisar a mensagem exibida. A primeira linha anuncia um traceback, que é a forma como é exibida a pilha de execução que gerou a exceção. A segunda indica a linha de código na qual ocorreu o problema, e o arquivo. Como estamos usando o modo interativo neste exemplo, o arquivo aparece como , que é a entrada padrão. A terceira linha indica o tipo de exceção levantada -- neste caso, IndexError -- e informa uma mensagem que descreve mais especificamente o problema. Tratando exceções A exceção normalmente imprime um traceback e interrompe a execução do programa. Uma ação comum é testar e controlar a exceção; para este fim, usamos uma cláusula try/except: a = [1, 2, 3] try: ... print a[5] ... except IndexError: ... print "O vetor nao possui tantas posições!" O vetor nao possui tantas posições!

Estrutura if E estrutura do if do Python não é muito diferente ao if de outras linguagens de programação, exceto pela ausência de delimitador de bloco de comandos, que no Python é feita pela indentação do texto. Sua sintaxe é apresentada abaixo: if <condição 1>: elif <condição 2>: elif <condição 3>: ... else: Os elif (contração else + if ) e o else são opcionais na estrutura do if. As condicionais foram apresentadas na seção 2.7.1. Booleanos e condicionais. Segue abaixo um pequeno programa para fazer uma simples checagem da paridade de um número:

1 2 3 4 5 6 7 8 9

#!/bin/env python

-- coding: iso-8859-1 --

Verifica se um número é par ou impar

n = input("Entre com um inteiro: ") if type(n) == int: if (n % 2) == 0: print '%d é um par' % n else : print '%d é impar' % n else: print 'Este número (%s) não é um inteiro!' % n O comando input , introduzido no código acima, permite a entrada apenas de valores numéricos. Para a entrada de strings , deve-se usar o raw_input , que possui uma sintaxe semelhante ao input.

Estrutura for A estrutura de laço for segue a mesma ideia do for do bash , com a adição da sentença else. No laço for , a variável do laço alterna seu conteúdo com os valores da lista passada e caso nenhum break seja encontrado, até que o último elemento da lista seja processado, os comandos da sentença else serão executados. Sua sintaxe segue a forma abaixo: for <variável> in : ... break ... continue else: O break , continue e o else são opcionais. O break e o continue podem aparecer em qualquer nível de indentação, dentro do laço for. Ao alcançar um break , o laço irá terminar imediatamente, enquanto que um continue irá iniciar, imediatamente, a próxima interação do laço for. Abaixo segue alguns exemplos de laços for , executados no interpretador Python :

semana = ['dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sab'] for s in semana: ... print s, ... dom seg ter qua qui sex sab for d in range(30): ... if (d+1) % 7 == 0: ... print '%4s' % (d+1) ... else : ... print '%4s' % (d+1), ... 1 2 3 4 5 6 7 8 9 10 11 12 13 14

O break é empregado para interromper o for interno, a cada vez que o resto da divisão do número testado é nulo, que indica ter encontrado um divisor. List Comprehension List Comprehension é uma forma curta de se criar uma lista a partir de um laço for embutido. Sua sintaxe é apresentada a seguir: [ expressão_com_var for var in lista_de_valores if ]

O if é opcional. Os dois exemplos a segui geram uma lista de múltiplos de 4:

[ 4*x for x in range(1,11)] [4, 8, 12, 16, 20, 24, 28, 32, 36, 40] [ x for x in range(1,41) if x % 4 == 0 ] [4, 8, 12, 16, 20, 24, 28, 32, 36, 40] Vários List Comprehension podem ser associados em uma única lista: [ '%d%d' % (x, y) for x in range(2) for y in range(2)] ['00', '01', '10', '11'] Generator Expression Generator Expression são similares a List Comprehension , com um diferença fundamental, ele retorna um iterador a uma tupla e não uma lista. ( expressão_com_var for var in lista_de_valores if ) b = ( '%d%d' % (x, y) for x in range(2) for y in range(2)) for i in b: print i ... 00 01

10 11

b <generator object at 0x7fece5bb8690>

Uma grande vantagem de Generator Expression com relação a List Comprehension é o uso de recursos, já que estas primeiras utilizam

estruturas mais simples, próprias para o uso em laços e acessos sequências, um iterador.

Estrutura while O laço while é empregado quanto se deseja realizar um teste a cada interação do laço. O while também suporta as sentenças break , continue e else , como no laço for. Sua sintaxe é apresentada a seguir: while <contição>: ... break ... continue else: O código a seguir retorna os primos no intervalo de 1 a n , usando uma técnica diferente da apresentada no exemplo anterior. 1 2 3 4 5 6 7 8 9

#!/bin/env python

-- coding: iso-8859-1 --

primo2.py: imprime os primos

from math import sqrt

print 'Imprime os números primos de 1 até n. \n '

Entra com o limite:

n = input('Entre com o limite superior para o primo: ')

print ' \n São primos:' a = range(n+1) r = int(sqrt(n)) for i in range(2, r): if a[i] == 0:

SUB-PROGRAMAS

Programas são divididos em sub-programas, cada sub-programas é invocado por meio de um identificador e uma lista de entradas, os resultados computados por um sub-programa pode ser combinado com os de outro sub- programa. Em Python, subprogramas têm o nome de funções. FUNÇÕES Uma função é um bloco de código ao qual são opcionalmente passados parâmetros e pode retornar um único valor. Por exemplo podemos escrever o exemplo de uma tabuada como sendo Listagem 4.1: def tabuada (n ) : print "A tabuada do" ,n , " é : " for i in range ( 1 , 1 1 ) : print n , "" , i , "=" ,n i tabuada ( 9 ) #Chama a função tabuada que #acabamos de d e f i n i r para n=

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. A instrução return pode ser seguida de um valor, sendo esse o valor da chamada da função. Listagem 4.2: def soma ( a , b ) : return a+b c = soma ( 2 , 3 ) print soma ( " abc " , " de f " ) # Imprime a b c d e f

Neste exemplo de0 01 C nimos uma função que retorna a soma de dois números,