34
Conceitos básicos Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Embed Size (px)

Citation preview

Page 1: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Conceitos básicos

Prof. Natalia Castro FernandesEngenharia de Telecomunicações – UFF

2º semestre/2012

Page 2: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Operações básicas+-/*** ou pow(a,b)%===, !=, <, >, <=, >=or, and, not

Page 3: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Valor dos operadores10/310.0/310/3.010%310.0%3A = ‘casa’ e B = ‘teste’. A+B=?

Page 4: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

VariáveisSão nomes dados a áreas de memória

Nomes compostos de algarismos,letras ou _O primeiro caractere não pode ser um algarismoPalavras reservadas (if, while, etc) são proibidas

Funcionalidades:Guardar valores intermediáriosCriar estruturas de dados

Uma variável é modificada usando o comando de atribuição:Var = expressãovar1,var2,...,varN = expr1,expr2,...,exprN

Page 5: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

ExercícioQual o resultado:

a=1b=2

a, b = 2*a,b

a=1 b=2 a,b=b,a

Page 6: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Tipos de variáveis

O tipo da variável não é explicitamente definido em Python!

Exemplo: Crie uma string contendo a palavra ‘teste’

Page 7: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Comportamento de variáveisVariáveis

Criadas dinamicamenteDestruídas automaticamente quando não mais

necessáriasTipo da variável muda conforme valor

atribuídoA = ‘Casa’ #A é uma stringA+1 #Gera erroA = 1 #Agora A passou a ser um inteiroA+1 #Resulta em 2

Comentários são colocados com o uso

do #

Page 8: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Tipos de variáveisTipos primitivos

Embutidos na linguagemTipos

Simples int

Números inteiros de precisão fixa (1 palavra=32 bits) Exemplos: 1 , -2 , 25 Representação em hexadecimal:

a=0xab Em decimal, a=171

Representação em octal: a=030

Em decimal, a = 24

Page 9: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Tipos de variáveis long

Números inteiros de precisão arbitrária (Tantas palavras quanto for necessário)

Exemplos: 1L , 10000L , -9999999L

float Números racionais de precisão variável (2

palavras) Exemplos: 1.043, 123e14, 2e5 Uso de ‘e’ ou ‘E’ representando potência de 10

2e2 equivale a 200

Page 10: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Tipos de variáveis complex

Números complexos Exemplos: 1+1j , 20j , 1000+100J Pode-se usar j ou J, mas sempre com um número

na frenteA=j erroA=1j Número complexo

Page 11: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Tipos de variáveis String

Sequência de caracteres Exemplos: ‘casa’, “casa” Pode-se usar ‘’ ou “” indistintamente A representação de um caractere ou de uma

string é feita de forma indistinta Operações

+ Concatenação* Repetição

“a”*3 = “aaa”

Page 12: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Tipos de variáveis Caracteres especiais que não são impressos são

representados com a barra invertida (\) \n = new line \r = carriage return \t = tab \b = backspace \\ = \

Qual o resultado das seguintes operações? Por quê?

>>> “ab\rd”>>> print “ab\rd”>>> print “abc\td”>>> print “abc\nd”>>> print “abc\\nd”>>> print “ab\bc”

Page 13: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Tipos de variáveis Strings podem ser escritas em várias linhas

A = “A minha frase de exemplo \ pode ser muito longa, \

de tal forma que eu prefira \ escrevê-la em várias linhas.”A = ‘‘‘ A minha frase de exemplo pode ser muito longa,

de tal forma que eu prefira escrevê-la em várias linhas.’’’A = “““A minha frase de exemplo pode ser muito longa,

de tal forma que eu prefira escrevê-la em várias linhas.”””

Page 14: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Tipos de variáveis Índices de strings

Primeiro caractere com índice 0Último caractere com índice -1Exemplo:

A=‘teste’A[0]=‘t’A[4]=‘e’A[-1]=‘e’

Trechos de stringsRepresentação: A[início:fim]Omitir início ou fim significa trecho a partir do inicio

ou até o fim

InclusoExcluso

Page 15: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Tipos de variáveisExemplos>>> a = 'abcde‘>>> a[0:2]'ab'

>>> a [2:]'cde'>>> a[:]'abcde'>>> a[-1:]'e'>>> a[:-1]'abcd'

Page 16: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Tipos de variáveisTipos primitivos

Simples Compostos

Listas Dicionários Tuplas Conjuntos

Definidos pelo usuárioClasses

Veremos tipos compostos e definidos

pelo usuário mais a frente.

Page 17: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Expressões booleanasUsadas como condições

If e laços (for e while)Resultam True ou False

True e False são palavras especiais de Python (lembrar de usar letra maiúscula)

True = qualquer valor não nuloFalse = 0

Avaliação feita da esquerda para a direitaResultado retornado tão logo seja possível

Page 18: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Expressões booleanasO operador or retorna o primeiro operando se

esse for verdadeiroCaso contrário retorna o segundo

O operador and retorna o primeiro operando se for falsoCaso contrário retorna o segundo

Ordem de avaliaçãoOperadores relacionais notandor (último a ser avaliado)

Page 19: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Expressões booleanasExercício: Qual o resultado?

• 1==1• 1==2• 1==1 or 1==2• 1==1 and 1==2• 1<2 and 2<3• not 1<2• not 1<2 or 2<3• not (1<2 or 2<3)• ‘alo’ and 1• “alo” or 1

Page 20: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Funções embutidasFunções disponíveis para o programador por

padrãoExemplos

abs(x) – Valor absoluto de xint(x) – Converte x para inteirolong(x) - Convert x para inteiro longofloat(x) – Converte x para ponto flutuantecomplex(re,im) – Cria número complexo com

parte real re e parte imaginária imround(x) - Arredonda o valor de x

Page 21: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

MódulosMódulo

Arquivo definindo: Funções Variáveis Classes

Biblioteca padrão é dividida em módulosExemplo

Módulo math Funções matemáticas como seno e cosseno, variáveis como o pi, etc.

Nome do módulo = nome do arquivo sem o ‘.py’Qualquer script que você crie pode ser visto como

um módulo

Page 22: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

MódulosUtilização de módulos

Comando importUso:

import modulo from modulo import nome,...,nome from modulo import *

Page 23: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Exemplo Crie o script fibo.py com o seguinte código

# Fibonacci numbers module

def fib(n): # write Fibonacci series up to n a, b = 0, 1 while b < n: print b, a, b = b, a+b

def fib2(n): # return Fibonacci series up to n result = [] a, b = 0, 1 while b < n: result.append(b) a, b = b, a+b return result

Page 24: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

ExemploEntre no interpretador e digite:

>>> import fibo

>>> fibo.fib(1000)

>>> fibo.fib2(100)

Page 25: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Importando módulosimport modulo

Importa o módulo completo.Exemplo

import mathmath.cos(0.67)

from modulo import *Importa o módulo completoExemplo

from math import *cos(0.67)

Usa o nome do módulo na frente da função

Usa a função diretamente

Page 26: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Importando módulosfrom modulo import função1, função2

Importa apenas funções especificadasExemplo

from math import coscos(0.67)

Usa a função diretamente

Page 27: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Criando o seu próprio códigoVoltando ao exemplo do Fibonacci (fibo.py)

# Fibonacci numbers module

def fib(n): # write Fibonacci series up to n a, b = 0, 1 while b < n: print b, a, b = b, a+b

Comentário

Definição de uma função

Atribuição de valores a variáveis

Laço com expressão booleana

Bloco a ser repetido

Indentação

Page 28: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Criando o seu próprio códigoFunção principal

Tudo o que está fora das definições de funçãoContudo, é mais formal usar o seguinte:if __name__ == "__main__":

Permite criar um script e um módulo importável ao mesmo tempo

Organiza melhor o código

Page 29: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Criando o seu próprio códigoComando condicional ‘if’

Uso if expressao:

comandos

if expressao: comandos1

else: comandos2

if expressao1: comandos1

elif expressao2: comandos2

else: comandos(N)

Tipo 1: Se, então faça

Tipo 2: Se, então faça. Senão, faça.

Tipo 3: Se, então faça. Senão, se, então faça. Senão, faça.elif else if

elif pode ser repetido várias vezes

Page 30: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Criando o seu próprio códigoExemplo:

a = input("Entre com um numero:") if a < 0:

print a," é negativo“ elif (a==0):

print a, “ é zero” else :

print a, “ é positivo” print "Obrigado!"

Page 31: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Criando o seu próprio códigoLaço while

Uso while (expressão):

Executa enquanto expressão for TrueAtenção: Pode criar loops infinitos!!

Ex: A=1 B=1 while (A==1):

B= B+1 print B

Page 32: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Criando o seu próprio códigoFunção print

Escrever texto na tela sem pular de linhaUso

print “texto1”, “texto2”, variável1, “texto3” Resultado: texto1 texto2 1 texto3

Se o comando terminar com vírgula, o próximo print continua da mesma linha Ex:

print “texto1”, print “texto2” Resultado: texto1 texto2

Page 33: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Criando o seu próprio códigoFunção input

Recebe dados da linha de comandoUso: input(“Texto qq”)Exemplo:

A=input(“Digite a sua idade”)print A

Observação: strings só podem ser recebidas com o input se forem colocadas entre ‘’ ou “” Função raw_input

Interpreta qualquer entrada como string Não precisa de ‘’ ou “”

Espera até o usuário digitar alguma coisa

Page 34: Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012

Criando o seu próprio códigoExercício

Faça um programa que peça do usuário um número e escreva na tela se ele é primo ou não.

Transforme o seu programa em uma função e crie um módulo.

Importe o seu módulo e mostre o uso da sua função.