Programação básica

programas são um conjunto de instruções para o computador

variáveis

quantidades são representadas por variáveis no mesmo sentido que são aplicadas em algebra

podemos alocar valores para variáveis:


In [7]:
x = 1.0                 # isso é uma alocação

x, y = 3.0, 4.5         # python permite fazer alocações multiplas

u, v = 2*x+1, (x+y)/3   # podemos usar expressões matemáticas nas alocações

vamos usar variáveos extensivamente para representar grandezas físicas

em python podemos usar nomes com várias letras ou mesmo numeros e letras

variáveis não podem começar com um número

alguns caracterers com & não podem ser usados em nomes de variáveis pois são reservados

python distingue entre maiúsculas e minúsculas, logo, x é diferente de X e podem ter valores distintos

de a suas variáveis nomes que tenham significado relacionado ao que elas são. Por exemplo, se voce vai usar uma variavel para energia, não a denomine de E, use energia ou ener

Tipos básicos

em física usamos três tipos básicos de variáveis: inteiro, ponto flutuante e complexo

Inteiro


In [2]:
print (1 + 1)
a = 4
type(a)


2
Out[2]:
int

Floats


In [5]:
c = 2.1
print 'the value in c is a ',type(c)


the value in c is a  <type 'float'>

Complexos

note que em python a unidade de complexo é o j e não i como usual


In [7]:
a = 1.5 + 0.5j
print a.real
print a.imag
type(1. + 0j)


1.5
0.5
Out[7]:
complex

Boleanos


In [15]:
print 3 > 4
test = (3 > 4)
print test
type(test)


False
False
Out[15]:
bool

strings


In [16]:
x = 'isso é uma string'
print x
print 'a variável x é ',type(x)

y = '1.23'
print 'a variável y é ',type(y)


isso é uma string
a variável x é  <type 'str'>
a variável y é  <type 'str'>

é importante tentar sempre usar o tipo de variável adequada pois um integer ocupa menos memoria que um float e este ocupa menos que um complexo. Em programas que operam com milhões ou bilhões de números essa diferença pode ficar relevanterecebem

inteiros não sofrem com problemas de precisão

em python variáveis não precisam ser declaradas com tipo definido antes de serem usadas. As variáveis definem o tipo baseado no input que recebem

operações básicas

em python as operações aritiméticas funcionam como esperado em algebra, seguindo as regras usuais


In [31]:
print 3 + 5    # adição
print 10 - 5.  # subtração
print 7 * 3.   # multiplicação
print 2**10    # potencia

print 7./2

print 14 % 3    # retorna o resto da divisão
print 14.3 % 3

print 14//3     # retorna a parte inteira da divisão
print 14/3.


8
5.0
21.0
1024
3.5
2
2.3
4
4.66666666667

python também permite algumas construções que podem ter utilidade em programas mais complexos:


In [5]:
x = 0

x += 1        # adicione 1 a x
print x

x -= 4        # subtraia 4 de x
print x

x *= -2.6     # multiplique x por -2.6
print x

y = 2

x /= 5*y     # divide por 5 vezes y
print x

x //= 0.4    # divide x por 3.4 e arredonda para inteiro
print x


1
-3
7.8
0.78
1.0

Entrada e saída

já vimos acima uma das principais formas de saída: print

exitem diferenças do print em python 2.7 e 3: fiquem atentos!


In [21]:
# um exemplo de uso do print

x=1
y=2

print("o valor de x é",x,'e o valor de y é',y)
print 'o valor de x é',x,'e o valor de y é',y


('o valor de x \xc3\xa9', 1, 'e o valor de y \xc3\xa9', 2)
o valor de x é 1 e o valor de y é 2

input

fazer input é um pouco mais elaborado

o formato básico é:


In [22]:
x = input('Entre com o valor de x:')


Entre com o valor de x:5.6

In [24]:
print 'ovalor de x é', x, 'e o seu tipo é', type(x)


ovalor de x é 5.6 e o seu tipo é <type 'float'>

nessa função também existe diferença entre python 2.7 e 3. Em python 3 input sempre recebe a variável como string e a definição de tipo de variável é feita depois. Em 2.7 a variável é definida com base no que foi entrado.


In [26]:
x = input('Entre com o valor de x:')
print 'ovalor de x é', x, 'e o seu tipo é', type(x)


Entre com o valor de x:'hello'
ovalor de x é hello e o seu tipo é <type 'str'>

In [27]:
# quando pre-definimos o tipo de entrada desejada
x = float(input('Entre com o valor de x:'))
print 'ovalor de x é', x, 'e o seu tipo é', type(x)


Entre com o valor de x:'hello'
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-27-430357335a5e> in <module>()
----> 1 x = float(input('Entre com o valor de x:'))
      2 print 'ovalor de x é', x, 'e o seu tipo é', type(x)

ValueError: could not convert string to float: hello

módulos, pacotes e funções

muitas operações que vamos precisar fazer são mais complicadas que pura aritmética

python tem pacotes e funções prontas para lidar com boa parte dessas complicações

normalmente as coisas são organizadas em pacotes com um dado nome, que contém coisas relacionadas.

por exemplo o pacote math contém funções matemáticas:


In [10]:
from math import log, log10        # esse é o formato para importar pacotes

print log(100.0), log10(100.0)


 4.60517018599 2.0

In [11]:
# se tentarmos usar uma função não importada teremos um erro

print sqrt(4.0)


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-11-4b02637f1935> in <module>()
      1 # se tentarmos usar uma função não importada teremos um erro
      2 
----> 3 print sqrt(4.0)

NameError: name 'sqrt' is not defined

In [12]:
# uma solução é importar todo o pacote
from math import *
print sqrt(4.0)


2.0

importar todo o pacote deve ser evitado por economia de memória. Além disso pode levar a conflitos inesperados de nomes de variáveis.

Exercício:

Suponha que a posição de um ponto no espaço bidimensional é dado em coordenadas polares $r$, $\theta$ e queremos convertê-lo em coordenadas cartesianas x , y. Escreva um programa para fazer essa conversão. Para isso faça:

1 - Obter do usuário os valores de $r$ e $\theta$.

2 - converter esses valores em coordenadas cartesianas usando as fórmulas:

$x = rcos(\theta)$ e $y = rsin(\theta)$


In [ ]: