34
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012

Prof. Natalia Castro Fernandes Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Prof. Natalia Castro Fernandes Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

Prof. Natalia Castro Fernandes

Mestrado em Telecomunicações – UFF

2º semestre/2012

Page 2: Prof. Natalia Castro Fernandes Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

Operações básicas� +

� -

� /

*� *

� ** ou pow(a,b)

� %

� =

� ==, !=, <, >, <=, >=

� or, and, not

Page 3: Prof. Natalia Castro Fernandes Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

Valor dos operadores� 10/3

� 10.0/3

� 10/3.0

10%3� 10%3

� 10.0%3

� A = ‘casa’ e B = ‘teste’. A+B=?

Page 4: Prof. Natalia Castro Fernandes Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

Variáveis� São nomes dados a áreas de memória

� Nomes compostos de algarismos,letras ou _� O primeiro caractere não pode ser um algarismo� Palavras reservadas (if, while, etc) são proibidas

� Funcionalidades:� Guardar valores intermediários� Criar estruturas de dados

� Uma variável é modificada usando o comando de atribuição:� Var = expressão

� var1,var2,...,varN = expr1,expr2,...,exprN

Page 5: Prof. Natalia Castro Fernandes Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

Exercício� Qual o resultado:

� a=1

b=2

a, b = 2*a,ba, b = 2*a,b

� a=1

b=2

a,b=b,a

Page 6: Prof. Natalia Castro Fernandes Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

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 Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

Comportamento de variáveis� Variáveis

� Criadas dinamicamente

� Destruídas automaticamente quando não mais necessáriasnecessárias

� Tipo da variável muda conforme valor atribuído� A = ‘Casa’ #A é uma string

� A+1 #Gera erro

� A = 1 #Agora A passou a ser um inteiro

� A+1 #Resulta em 2

Comentários são colocados com o uso do #

Page 8: Prof. Natalia Castro Fernandes Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

Tipos de variáveis� Tipos primitivos

� Embutidos na linguagem� Tipos

� Simplesint� 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 Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

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 Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

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 frente� A=j � erro

� A=1j � Número complexo

Page 11: Prof. Natalia Castro Fernandes Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

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 Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

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� \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 Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

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.”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 Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

Tipos de variáveis� Índices de strings

� Primeiro caractere com índice 0

� Último caractere com índice -1

� Exemplo:� A=‘teste’� A=‘teste’

� A[0]=‘t’

� A[4]=‘e’

� A[-1]=‘e’

� Trechos de strings� Representaçã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 Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

Tipos de variáveis� Exemplos

>>> a = 'abcde‘

>>> a[0:2]

'ab'

>>> a [2:]>>> a [2:]

'cde'

>>> a[:]

'abcde'

>>> a[-1:]

'e'

>>> a[:-1]

'abcd'

Page 16: Prof. Natalia Castro Fernandes Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

Tipos de variáveis� Tipos primitivos

� Simples

� Compostos� Listas Veremos tipos compostos e

definidos pelo usuário mais � Listas

� Dicionários

� Tuplas

� Conjuntos

� Definidos pelo usuário� Classes

definidos pelo usuário mais a frente.

Page 17: Prof. Natalia Castro Fernandes Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

Expressões booleanas� Usadas como condições

� If e laços (for e while)

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

� True = qualquer valor não nulo

� False = 0

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

Page 18: Prof. Natalia Castro Fernandes Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

Expressões booleanas� O operador or retorna o primeiro operando se esse for

verdadeiro� Caso contrário retorna o segundo

� O operador and retorna o primeiro operando se for falso� O operador and retorna o primeiro operando se for falso� Caso contrário retorna o segundo

� Ordem de avaliação� Operadores relacionais

� not

� and

� or (último a ser avaliado)

Page 19: Prof. Natalia Castro Fernandes Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

Expressões booleanas

Exercício: Qual o resultado?• 1==1• 1==2• 1==1 or 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 Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

Funções embutidas� Funções disponíveis para o programador por padrão

� Exemplos� abs(x) – Valor absoluto de x

int(x) – Converte x para inteiro� int(x) – Converte x para inteiro

� long(x) - Convert x para inteiro longo

� float(x) – Converte x para ponto flutuante

� complex(re,im) – Cria número complexo com parte real re e parte imaginária im

� round(x) - Arredonda o valor de x

Page 21: Prof. Natalia Castro Fernandes Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

Módulos� Módulo

� Arquivo definindo:� Funções

� VariáveisVariáveis

� Classes

� Biblioteca padrão é dividida em módulos� Exemplo

� 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 Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

Módulos� Utilização de módulos

� Comando import

� Uso:� import modulo� import modulo

� from modulo import nome,...,nome

� from modulo import *

Page 23: Prof. Natalia Castro Fernandes Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

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

# Fibonacci numbers module

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

print b,a, b = b, a+b

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

result.append(b)a, b = b, a+b

return result

Page 24: Prof. Natalia Castro Fernandes Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

Exemplo� Entre no interpretador e digite:

>>> import fibo

>>> fibo.fib(1000)� >>> fibo.fib(1000)

� >>> fibo.fib2(100)

� >>> fibo.__name__

Page 25: Prof. Natalia Castro Fernandes Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

Importando módulos� import modulo

� Importa o módulo completo.

� Exemploimport math Usa o nome do módulo import math

math.cos(0.67)

� from modulo import *

� Importa o módulo completo

� Exemplofrom 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 Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

Importando módulos� from modulo import função1, função2

� Importa apenas funções especificadas

� Exemplofrom math import cos Usa a função diretamentefrom math import cos

cos(0.67)

Usa a função diretamente

Page 27: Prof. Natalia Castro Fernandes Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

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

# Fibonacci numbers module Comentário

def fib(n): # write Fibonacci series up to n

a, b = 0, 1

while b < n:

print b,

a, b = b, a+b

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 Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

Criando o seu próprio código� Função principal

� Tudo o que está fora das definições de função

� Contudo, é mais formal usar o seguinte:

if __name__ == "__main__":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 Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

Criando o seu próprio código� Comando condicional ‘if ’

� Uso� if expressao:

� comandos

� if expressao:

Tipo 1: Se, então faça

� if expressao:� comandos1

� else:� comandos2

� if expressao1:� comandos1

� elif expressao2:� comandos2

� else:� comandos(N)

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 Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

Criando o seu próprio código� Exemplo:

� a = input("Entre com um numero:")

� if a < 0:� print a," é negativo“� print a," é negativo“

� elif (a==0):� print a, “ é zero”

� else :� print a, “ é positivo”

� print "Obrigado!"

Page 31: Prof. Natalia Castro Fernandes Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

Criando o seu próprio código� Laço while

� Uso� while (expressão):

� Executa enquanto expressão for True� Executa enquanto expressão for True� Atenção: Pode criar loops infinitos!!

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

� B= B+1� print B

Page 32: Prof. Natalia Castro Fernandes Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

Criando o seu próprio código� Função print

� Escrever texto na tela sem pular de linha� Uso

� print “texto1”, “texto2”, variável1, “texto3”� 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 Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

Criando o seu próprio código� Função input

� Recebe dados da linha de comando� Uso: input(“Texto qq”)� Exemplo:� 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 Mestrado em Telecomunicações …natalia/prog_avan/slide2.pdf · 2012-10-08 · A+1 #Gera erro A = 1 #Agora A p sou a ser um inteiro A+1 #Resulta em

Criando o seu próprio código� Exercí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 � 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.