Python e Django – Programação de Alto Nível

Download Python  e  Django  – Programação de Alto Nível

Post on 19-Jan-2016

39 views

Category:

Documents

0 download

Embed Size (px)

DESCRIPTION

Python e Django Programao de Alto Nvel. Danilo Borges da Silva d aniloborges_@hotmail.com. Porqu Python ?. Simples o suficiente para um curso introdutrio Muitos recursos Orientao a Objetos Escalvel (mdulos, classes, controle de excees) - PowerPoint PPT Presentation

TRANSCRIPT

Python e Django Programao de Alto Nvel

Python e Django Programao de Alto NvelDanilo Borges da Silvadaniloborges_@hotmail.com

Simples o suficiente para um curso introdutrio Muitos recursos Orientao a Objetos Escalvel (mdulos, classes, controle de excees)Biblioteca embutida extensa e grande nmero de mdulos fornecidos por terceiros Grande variedade de aplicaes Linguagem interpretada (script) Multi-plataforma Gratuito Comunidade bastante desenvolvidaPorqu Python?Python: Tipos BsicosSo categorias de valores que so processados de forma semelhantePor exemplo, nmeros inteiros so processados de forma diferente dos nmeros de ponto flutuante (decimais) e dos nmeros complexosTipos primitivos: so aqueles j embutidos no ncleo da linguagemSimples: numricos (int, long, float, complex) e cadeias de caracteres (strings)Compostos: listas, dicionrios, tuplas e conjuntosTipos definidos pelo usurio: so correspondentes a classes (orientao objeto)Tipos de DadosSo reas de memria reservadas para armazenamentos de dadosOs nomes de variveis so identificadores: Nomes podem ser compostos de algarismos (0-9), letras (a-z ou A-Z) ou sublinhado ( _ )O primeiro caractere no pode ser um algarismoNo Palavras reservadas (if, while, etc) so proibidasServem para:Guardar valores intermediriosConstruir estruturas de dadosUma varivel modificada usando o comando de atribuio:Var = expresso possvel tambm atribuir a vrias variveis simultaneamente:var1,var2,...,varN = expr1,expr2,...,exprNVariveisVariveis so criadas dinamicamente e destrudas quando no mais necessrias, por exemplo, quando saem fora de escopo (veremos isso mais tarde)O tipo de uma varivel muda conforme o valor atribudo, i.e., int, float, string, etc.VariveisH vrios tipos numricos que se pode usar em python:Int: nmeros inteiros de preciso fixa1 , 2 , 15 , -19Long: nmeros inteiros de preciso arbitrria 1L , 10000L , -9999999LFloats: nmeros racionais de preciso varivel 1.0 , 10.5 , -19000.00005 , 15e-5 Complex: nmeros complexos1+1j , 20j , 1000+100J NmerosSo cadeias de caracteresConstituem outro tipo fundamental do pythonConstantes string so escritas usando aspas simples ou duplas Ex.: "a" ou 'aO 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"StringsPython usa a tabela de caracteres default do S.O. Ex.: ASCII, UTF-8Caracteres no imprimveis podem ser expressos usando notao 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 cdigo hexadecimal 41 (A maisculo)StringsA notao barra-invertida (\) pode ser desabilitada desde que a constante string seja precedida por um r (erre minsculo)So chamadas strings raw (cruas)Tambm possvel escrever constantes string em vrias linhas incluindo as quebras de linha usando trs aspas como delimitadoresStringsNotao para separar trechos de uma stringNotao: string[ndice1:ndice2]Retorna os caracteres desde o de ndice1 (inclusive) at o de ndice2 (exclusive)Se o primeiro ndice omitido, assumido 0Se o ltimo ndice omitido, assumido o fim da stringStrings Fatias (slices)Tambm chamadas expresses lgicasResultam em verdadeiro (True) ou falso (False)So usadas em comandos condicionais e de repetioServem para analisar o estado de uma computao e permitir escolher o prximo passo Operadores mais usadosRelacionais: > , < , ==, !=, >=, >> print "1.001 ao quadrado ",1.001**2 1.001 ao quadrado 1.002001Se o comando terminar com vrgula, o prximo print escrever na mesma linha.PrintO programa que computa elementos da srie de Fibonacci termina quando atinge um elemento com valor superior a uma constantePodemos tornar o programa mais flexvel se ao usurio for permitido estipular o valor mximoO comando input permite perguntar ao usurio um valor (normalmente atribudo a uma varivel)Formato: input(pergunta)onde pergunta uma string opcional que ser exibida para indicar o valor que se espera (i.e., prompt)Input o comando condicional por excelnciaFormatos:if expressao: comandosif expressao: comandos1 else: comandos2if expressao1: comandos1 elif expressao2: comandos2 else: comandos(N)IfRepete uma seqncia de comandos enquanto uma dada expresso booleana avaliada como verdadeiraFormato: while expresso: comando ... comandoWhilePython: ListasManeira de organizar dados de maneira a facilitar seu acessoAlgumas formas so clssicas:ListasArrays (vetores e matrizes)Tuplas (registros)rvoresLinguagens freqentemente possuem primitivas para construo dessas E.D. Estruturas de dados embutidasOutras E.D. mais complexas podem ser construdas combinando as E.D. clssicasEstruturas de dadosSo arranjos seqenciais de informaes mais simplesCaracterizam-se por permitir o acesso eficiente aos seus elementos em ordem seqencialA definio clssica de uma lista como estrutura de dados abstrata compreende:Operao de construo de uma lista vaziaOperao que testa se uma dada lista vaziaOperao para obter o primeiro elemento de uma listaUma operao para adicionar um novo elemento no incio de uma listaOperao para retirar o elemento inicial de uma listaListasRetorna uma progresso aritmtica de inteiros numa listaForma geral: range (incio, parada, incremento)incio (opcional) o primeiro valor a ser gerado (default: 0)parada o limite da progresso: a progresso termina no ltimo valor antes de paradaincremento (opcional) o passo da progresso (default:1)A funo rangePermite iterar sobre os elementos de uma listaForma geral: for var in lista : comandosOs comandos so repetidos para cada valor de listaDurante a repetio, var possui o valor corrente da listaUma grande utilidade da funo range construir a lista de iteraoEx.: >>>for i in range(1,7): print i,Comando forPython: Tuplas e StringsSo estruturas de dados parecidas com listas, mas com a particularidade de serem imutveisTuplas so seqncias e, assim como listas, podem ser indexadas e fatiadas, mas no possvel modific-lasUma tupla vazia se escreve ()Os parnteses so opcionais se no provocarem ambigidadeUma tupla contendo apenas um elemento deve ser escrita com uma vrgula ao finalTuplasManipulao de strings uma atividade freqente em programas PythonExiste um mdulo chamado string que contm uma grande quantidade de funcionalidades para trabalhar com stringsPara us-las:from string import *Entretanto, strings pertencem classe str e a maior parte do que existe no mdulo string aparece como mtodos da classe strMdulo StringPython: DicionriosSo estruturas de dados que implementam mapeamentosUm mapeamento uma coleo de associaes entre pares de valoresO primeiro elemento do par chamado de chave e o outro de contedoDe certa forma, um mapeamento uma generalizao da idia de acessar dados por ndices, exceto que num mapeamento os ndices (ou chaves) podem ser de qualquer tipo imutvelDicionriosConsidere que queiramos representar um caderno de telefonesUma soluo ter uma lista de nomes e outra de telefonesTelefone de nome[i] armazenado em telefone[i]Acrescentar Joao com telefone 20122232: nome+= Joao telefone+=20122232Para encontrar o telefone de Joao:Tel = telefone[nome.index[Joao]]Dicionrios tornam isso mais fcil e eficientetelefone[Joao] = 20122232Tel = telefone[Joao]Chaves vs. ndicesUma constante do tipo dicionrio escrita { chave1:contedo1, ... chaveN:contedoN}Uma varivel do tipo dicionrio pode ser indexada da maneira habitual, isto , usando colchetesO contedo associado a uma chave pode ser alterado atribuindo-se quela posio do dicionrioNovos valores podem ser acrescentados a um dicionrio fazendo atribuio a uma chave ainda no definidaNo h ordem definida entre os pares chave/contedo de um dicionrioCriando dicionriosget(chave,valor)Obtm o contedo de chaveNo causa erro caso chave no exista: retorna valorSe valor no for especificado chaves inexistentes retornam NoneMtodo getitems() retorna uma lista com todos os pares chave/contedo do dicionriokeys() retorna uma lista com todas as chaves do dicionriovalues() retorna uma lista com todos os valores do dicionriopop (chave)Obtm o valor correspondente a chave e remove o par chave/valor do dicionrioMtodos items, keys, values e popPython: funes uma tcnica de programao que nos permite pensar num problema em diversos nveisA idia que quando estamos pensando num problema macroscopicamente, no estamos preocupado com minciasDividir para conquistar:Um problema dividido em diversos sub-problemasAs solues dos sub-problemas so combinadas numa soluo do problema maiorAbstraoEm Python, sub-programas tm o nome de funes Formato geral: def nome (arg, arg, ... arg): comando . . . comando Onde:nome o nome da funoargs so especificaes de argumentos da funoUma funo pode ter 0, 1 ou mais argumentoscomandos contm as instrues a ser executadas quando a funo invocadaDefinindo funesPython: Classes uma disciplina de programao assim como a Programao EstruturadaTenta unificar as idias de algoritmos e estruturas de dados atravs do conceito de ObjetoUm objeto uma unidade de software que encapsula algoritmos e os dados sobre o qual os algoritmos atuamOs seguintes conceitos so importantes quando falamos de orientao a objetos:PolimorfismoAbstraoHeranaOrientao a Objetos o que permite que dois objetos diferentes possam ser usados de forma semelhantePor exemplo, tanto listas quanto tuplas ou strings podem ser indexadas por um nmero entre colchetes e suportam o mtodo lenAssim, se escrevemos ... for i in range(len(X)): print i, X[i]...no possvel saber de antemo se X uma tupla, uma lista ou uma stringDesta forma, se escrevemos um algoritmo para ser aplicado um objeto X, ento tambm pode ser aplicado a um objeto Y desde que Y seja suficientemente polimrfico a XPolimorfismo o que permite que um