M A R C E L O R O D R I G U E S
F U N C E M E – J U N H O 2 0 1 6
INTRODUÇÃO A LÓGICA
DE PROGRAMAÇÃO
LÓGICA DE PROGRAMAÇÃO?
• PROGRAMA → PROBLEMA
• PROBLEMA
• ANÁLISE
• ALGORITMO
• PROGRAMA
Lógica de Programação é a técnica de desenvolver sequências
lógicas para atingir um determinado objetivo. Essas sequências
lógicas são adaptadas para linguagem de computador pelo
programador a fim de produzir software. Uma sequência lógica
é denominada algoritmo.
ALGORITMO - PASSO A PASSO
① DEFINIR O PROBLEMA
② ANÁLISE:
① Entrada
② Saída
③ Objetivos
③ ALGORITMO:
① Sequência de Instruções
④ INSTRUÇÕES:
① Sequência de comandos
② Seleção condicional
③ Iteração
⑤ LINGUAGEM DE PROGRAMAÇÃO:
① PYTHON, C++, JAVA, etc.
POR QUÊ PYTHON?
• Python é uma linguagem livre;
• Python é multiplataforma;
• Python tem uma biblioteca padrão imensa;
• Pequena curva de aprendizado;
• Simplicidade;
EXEMPLO ALGORITMO
NOME DO ALGORITMO: SOMA
INICIO
LER VALOR1
LER VALOR2
SOMA ← VALOR1 + VALOR2
ESCREVER SOMA
FIM
Arquivo: soma.py
val1 = float(raw_input(‘digite um numero: ’))
val2 = float(raw_input(‘digite um numero: ’))
soma = val1 + val2
print soma
VARIÁVEIS
• São nomes dados a áreas de memória
• Nomes podem ser compostos de algarismos, letras ou _;
• O primeiro caractere não pode ser um algarismo;
• Palavras reservadas (if, while, etc) são proibidas;
• Servem para:
• Guardar valores intermediários;
• Construir estruturas de dados;
• Uma variável é modificada usando o comando de atribuição:
• var = expressão
TIPOS DADOS
• TIPOS PRIMITIVOS
• INTEIROS (1, 5, 10, 100, …, 4 )
• REAIS (1.0, 5.1, 10.4, …, 4.6)
• STRINGS (‘a’, ‘abc’, ‘carro’, ‘casa’)
• BOOLEAN (‘TRUE’ ou ‘FALSE’)
• TIPOS COMPOSTOS:
• LISTAS (PYTHON) []
• DICIONÁRIOS (PYTHON) {}
• TUPLAS (PYTHON) ()
LÓGICA PROPOSICIONAL
Sistema lógico que busca formalizar a noção de proposição, e
de como um conjunto de proposições pode ser criado pela
combinação de proposições de forma a gerar um resultado
consistente que possa ser aplicado para determinar se este
conjunto é verdadeiro ou falso. É essencial aprender os
conceitos básicos da Lógica Proposicional, pois é baseado
nesta lógica que as instruções das linguagens de programação
são construídas.
Proposição é uma afirmação qualquer que fazemos, que pode
assumir o valor de Verdadeiro (V) ou Falso (F). Por exemplo:
"Hoje está chovendo."
"O Sol é amarelo."
"Você está doente."
PRINCIPAIS OPERADORES LÓGICOS
• NEGAÇÃO (NOT)
• CONJUNÇÃO (AND)
• DISJUNÇÃO (OR)
TABELA VERDADE
Tabela verdade é um tipo de tabela matemática usada em
lógica para determinar se uma fórmula é válida.
P=“ESTAMOS EM 2014”
NEGAÇÃO (NOT)
P NOT(P)
V F
F V
TABELA VERDADE
P=“HOJE É SEGUNDA”
Q=“ESTÁ CHOVENDO”
CONJUNÇÃO (AND)
P Q P AND Q
V V V
V F F
F V F
F F F
TABELA VERDADE
P=“HOJE É SEGUNDA”
Q=“ESTÁ CHOVENDO”
DISJUNÇÃO (OR)
P Q P AND Q
V V V
V F V
F V V
F F F
PRECEDÊNCIA DOS OPERADORES
LÓGICOS
QUANDO HOUVER
AMBIGUIDADE: ASSOCIATIVA A
DIREITA.
PRECEDÊNCIA
NOT 1
AND 2
OR 2
OPERADORES ARITMÉTICOS
OPERADORES ARITMÉTICOS
+ SOMA A + B
- SUBTRAÇÃO A – B
* MULTIPLICAÇÃO A * B
/ DIVISÃO A / B
% MÓDULO A % B
** EXPONECIAÇÃO A ** B
ORDEM DOS OPERADORES
ARITMÉTICOS
• P: Parênteses têm a mais alta precedência e podem ser
usados para forçar uma expressão a ser avaliada na ordem
que você quiser. Já que expressões entre parênteses são
avaliadas primeiro, 2 * (3-1) é 4, e (1+1)**(5-2) é 8. Você
também pode usar parênteses para tornar uma expressão
mais fácil de ler, como em (minuto * 100) / 60, ainda que isso
não altere o resultado.
• E: Exponenciação ou potenciação tem a próxima precedência
mais alta, assim 2**1+1 é 3 e não 4, e 3*1**3 é 3 e não 27.
• MDAS: Multiplicação e Divisão têm a mesma precedência,
que é mais alta do que a da Adição e da Subtração, que
também têm a mesma precedência. Assim 2*3-1 dá 5 em vez
de 4, e 2/3-1 é -1, não 1 (lembre-se de que na divisão inteira,
2/3=0).
OPERADORES RELACIONAIS
OPERADORES
ARITMÉTICOS
== IGUAL
!=
DIFERENT
E
<=
MENOR
OU IGUAL
>=
MAIOR OU
IGUAL
< MENOR
> MAIOR
EXERCÍCIO
EXERCÍCIO 1
ESTRUTURAS DE CONTROLES
• Para poder escrever programas úteis, quase sempre
precisamos da habilidade de checar condições e mudar o
comportamento do programa de acordo com elas. As
instruções condicionais nos dão essa habilidade. A forma
mais simples é a instrução SE (IF):
if x > 0:
print "x é positivo”
• A expressão booleana depois da instrução if é chamada de
condição. Se ela é verdadeira (true), então a instrução
identada é executada. Se não, nada acontece.
ESTRUTURAS DE CONTROLES
• Um segundo formato da instrução if é a execução
alternativa, na qual existem duas possibilidades e a condição
determina qual delas será executada.
if x % 2 == 0:
print x, “par”
else:
print x, “impar”
• Se o resto da divisão de x por 2 for 0, então sabemos que x é
par, e o programa exibe a mensagem para esta condição. Se
a condição é falsa, o segundo grupo de instruções é
executado. Desde que a condição deva ser verdadeira (True)
ou falsa (False), precisamente uma das alternativas vai ser
executada.
ESTRUTURAS DE CONTROLES
• Às vezes existem mais de duas possibilidades e
precisamos de mais que dois ramos. Uma condicional
encadeada é uma maneira de expressar uma operação
dessas:
if x < y:
print x, "é menor que", y
elif x > y:
print x, "é maior que", y
else:
print x, "e", y, "são iguais”
ESTRUTURAS DE CONTROLES
• elif é uma abreviação de “else if” (“senão se”). De novo,
precisamente um ramo será executado. Não existe limite para
o número de instruções elif, mas se existir uma instrução
else ela tem que vir por último:
if escolha == ’A’:
funcaoA()
elif escolha == ’B’:
funcaoB()
elif escolha == ’C’:
funcaoC()
else:
print "Escolha inválida.”
ESTRUTURAS DE CONTROLES
• Um condicional também pode ser aninhado dentro de outra.
Poderíamos ter escrito o exemplo tricotômico (dividido em três)
como segue:
if x == y:
print x, "e", y, "são iguais”
else:
if x < y:
print x, "é menor que", y
else:
print x, "é maior que", y
• O condicional mais externo tem dois ramos. O primeiro ramo
contém uma única instrução de saída. O segundo ramo contém
outra instrução if, que por sua vez tem dois ramos. Os dois ramos
são ambos instruções de saída, embora pudessem conter
instruções condicionais também.
ESTRUTURAS DE REPETIÇÃO (WHILE)
• O loop while tem como função repetir determinado bloco de
comando, até que uma determinada condição seja verdadeira. Para
que o bloco seja executado no momento correto, devemos manter
uma rígida endentação, ou seja, tudo que pertencer ao bloco do
while, deve estar quatro espaços a frente, isto ajuda a deixar o
código legível e organizado.
• O while é um comando muito útil, mas pode ser perigoso, pois se
não tratarmos corretamente o critério de parada, o laço pode não ter
fim, e o programa não faz o que deveria.
x = 100
while x > 0:
print x, “x > 0”
x = x – 1
ESTRUTURAS DE REPETIÇÃO (WHILE)
• Aqui temos um laço que seria executado eternamente (while
True:). Porém, dentro dele, fazemos uma verificação, e quando a
variável i estiver guardando um valor maior que 100, será
executado o comando break.
• O comando break literalmente quebra o laço, então, naquele
instante, o programa sai do laço.
i = 0
while True:
print “Não vou parar nunca!”
i = i + 1
if i > 100:
break
• Assim, juntamente ao comando while, vimos agora o comando
break que pode ser muito útil para quebrar laços fora da
comparação padrão.
ESTRUTURAS DE REPETIÇÃO (WHILE)
• No exemplo abaixo, inicialmente i recebe o valor 0, e é comparado com 100.
Como 0 é menor que 100, o laço começa. Logo em seguida, temos uma
comparação: if 1 % 2 == 0:, aqui verificamos se i é par. Caso i seja múltiplo de
dois, há um comando continue. continue faz com que esta iteração do laço
termine e o programa passe para a próxima iteração.
• Desta forma, o programa ignora tudo o que está após o if. No caso de i não ser
par, o programa não executa o continue, e imprime o valor de i na tela.
• Se um continue estivesse fora do if, sempre o programa executaria este
continue, e nunca seria executado o que há após ele. Assim, o continue
controla a execução do laço sem quebrá-lo.
i=0
while i < 100:
if i % 2 == 0:
i = i + 1
continue
print i
i = i + 1
ESTRUTURAS DE REPETIÇÃO (FOR)
• O comando for, em Python, difere do que normalmente
se vê em outras linguagens de programação, onde esse
comando tem a finalidade de realizar uma iteração
baseada numa progressão aritmética, percorrendo os
números definido pelo usuário, enquanto em Python a
iteração é feita percorrendo os itens de uma sequência,
seja ela uma lista ou até mesmo uma string. Vamos
analisar o código abaixo:
for i in range(10):
print i
ESTRUTURAS DE REPETIÇÃO (FOR)
• A estrutura anterior utiliza uma variável criada, no caso i, para
percorrer cada elemento da lista criada com o comando
range(10), com isso, cada repetição feita pelo loop for fará
com que a variável i aponte para um diferente valor dentro da
lista formada pela função range e logo em seguida imprima
esse valor.
• Nota: Quando fazemos range(10), teremos uma lista de
inteiros de 0 a 9.
• A função for também pode ser aplicada com o uso de listas,
observemos o caso abaixo:
lista = ['vida', 42, 'o universo', 6, 'e', 7, 'tudo’]
for item in lista:
print “O item atual é:”, item
EXERCÍCIOS
EXERCÍCIO 2
E
EXERCÍCIO 3
FUNÇÃO
• Imagina que temos a seguinte situação num programa
qualquer:
Instrução1
Bloco1
Instrução2
Bloco1
FUNÇÃO
• Uma função normalmente contém instruções para
realizar uma operação específica e devolver o resultado.
• Os parâmetros de entrada são os valores que são
passados para serem processados pela função.
• A função usa os valores de entrada para determinar os
resultados das suas instruções.
• Uma função pode ter vários valores de entrada, assim
como pode não ter nenhum.
• Quando a função contém mais de um parâmetro, eles
são separados por vírgulas.
FUNÇÃO
• O valor de retorno de uma função é o valor que a função
irá devolver.
• Assim como parâmetros, a função pode não ter nenhum
valor de retorno ou ter vários.
• Quando há mais de um valor de retorno, a função
devolve uma lista de valores de retorno.
• Ter vários valores de retorno é algo meio exclusivo de
Python.
FUNÇÃO
def myfunc():
print ‘hello world’
def pow(base, expoente):
potencia = base**expoente
return potencia
FUNÇÃO
• Diferentemente de outras linguagens como o caso do
Pascal, as funções em Python podem ser declaradas
em qualquer parte do programa, mas só podem ser
usadas depois de declaradas.
• Isto quer dizer que qualquer referência a uma função
antes da linha de declaração da mesma resultará num
erro.
FUNÇÃO
def soma(valor1, valor2):
result = valor1 + valor2
return result
valor = soma(3, 5)
print soma
MÓDULOS
• Módulos são programas feitos para serem
reaproveitados em outros programas.
• Eles tipicamente contêm funções, variáveis, classes e
objetos que provêm alguma funcionalidade comum.
• Por exemplo, o módulo math contém funções
matemáticas como sin, exp, etc, além da constante pi.
MÓDULOS
• Qualquer programa que você escreva e salve num
arquivo pode ser importado como um módulo;
• Por exemplo, se você salva um programa com o nome
prog.py, ele pode ser importado usando o comando:
import prog
• Entretanto, a “importação” só ocorre uma vez;
• Python assume que variáveis e funções não são
mudados e que o código do módulo serve meramente
para inicializar esses elementos
MÓDULOS
• Após a importação de um módulo, este é compilado,
gerando um arquivo .pyc correspondente;
• No exemplo, um arquivo prog.pyc será criado;
• Python só recompila um programa se o arquivo .py for
mais recente que o arquivo .pyc;
MÓDULOS
$ cat prog.py
def myfunc():
print ‘hello world’
>>> import prog
>>> prog.myfunc()
$ ls prog*
LEITURA E ESCRITA DE ARQUIVOS
• Python proporciona funções (veremos mais à frente o
que é isso) que permitem solicitar ao sistema operativo
acesso ao disco a fim de ler ou gravar algum conjunto
de dados.
• De forma genérica as operações que podemos realizar
sobre os arquivos no disco são: Abertura, Leitura,
Escritura e Fechamento.
ABRINDO ARQUIVOS
• O formato básico para abertura de arquivos é:
arq = open('nome_arq', 'modo’)
• O primeiro argumento da função open é uma string que
contem o nome do arquivo ('nome_arq') com o qual vamos
trabalhar.
• O segundo argumento é outra string que é o modo com que
desejamos tratar o arquivo:
• "r" modo de leitura: abre o arquivo só para ser lido.
• "w" modo de escrita: cria um novo arquivo. Se já existe, apaga seu
conteúdo.
• "a" modo de continuação: abre (se existe) ou cria (caso não exista)
o arquivo a fim de poder escrever no final dele.
ABRINDO ARQUIVOS
Para ler uma linha do arquivo utilizamos o método
readline.
# -*- coding: utf-8 -*- #
arq = open(‘file.txt’, ‘r’)
linha = arq.readline()
print linha
linha = arq.readline(5)
print linha
arq.close()
ESCREVENDO ARQUIVOS
O Python permite escrever usando a função write():
# -*- coding: utf-8 -*- #
arq = open(‘texto.txt’, ‘w’)
arq.write(‘ola n‘)
arq.write(‘mundo!n’)
arq.close()
NUMPY - ABRINDO ARQUIVOS
# -*- coding: utf-8 -*- #
import numpy as np
d = np.genfromtxt('data_table3.txt', skip_header=1)
print d
print type(d)
print d.shape
print np.mean(d, axis=0)
print np.mean(d, axis=1)
NUMPY – SALVANDO ARQUIVOS
# -*- coding: utf-8 -*- #
import numpy as np.
x = np.arange(0.0, 5.0, 1.0)
np.savetxt('test1.txt', x)
np.savetxt('test2.txt', x, fmt='%1.2f')
ABRINDO ARQUIVOS NETCDF
# -*- coding: utf-8 -*- #
from netCDF4 import Dataset
data = Dataset(‘file.nc’, ‘r’)
pcp = data.variables[‘pcp’][:]
lat = data.variables[‘latitude’][:]
lon = data.variables[‘longitude’][:]
data.close()
print pcp.shape
print lat
print lon
GRÁFICOS EM PYTHON
• matplotlib (http://matplotlib.org/) é uma biblioteca do
Python para criação de gráficos em 2D, bastante
utilizada para visualização de dados e que apresenta
uma série de possibilidades gráficas, como gráficos de
barra, linha, pizza, histogramas, entre muitos outros.
• O matplotlib já está incluso na distribuição Anaconda (e
em praticamente todas as distribuições de Python
focadas em Análise de Dados e programação
científica).
GRÁFICOS EM PYTHON
# -*- coding: utf-8 -*- #
import numpy as np
import matplotlib.pyplot as plt
plt.plot([0,10,20,30])
plt.show()
GRÁFICOS EM PYTHON
# -*- coding: utf-8 -*- #
import numpy as np
import matplotlib.pyplot as plt
y = [20,50,30]
x = range(len(y))
width_n = 0.4
bar_color = 'yellow'
plt.bar(x, y, width=width_n,
color=bar_color)
plt.show()
GRÁFICOS EM PYTHON
Mais exemplos:
http://matplotlib.org/examples/index.html

Introducao a Lógica de Programação

  • 1.
    M A RC E L O R O D R I G U E S F U N C E M E – J U N H O 2 0 1 6 INTRODUÇÃO A LÓGICA DE PROGRAMAÇÃO
  • 2.
    LÓGICA DE PROGRAMAÇÃO? •PROGRAMA → PROBLEMA • PROBLEMA • ANÁLISE • ALGORITMO • PROGRAMA Lógica de Programação é a técnica de desenvolver sequências lógicas para atingir um determinado objetivo. Essas sequências lógicas são adaptadas para linguagem de computador pelo programador a fim de produzir software. Uma sequência lógica é denominada algoritmo.
  • 3.
    ALGORITMO - PASSOA PASSO ① DEFINIR O PROBLEMA ② ANÁLISE: ① Entrada ② Saída ③ Objetivos ③ ALGORITMO: ① Sequência de Instruções ④ INSTRUÇÕES: ① Sequência de comandos ② Seleção condicional ③ Iteração ⑤ LINGUAGEM DE PROGRAMAÇÃO: ① PYTHON, C++, JAVA, etc.
  • 4.
    POR QUÊ PYTHON? •Python é uma linguagem livre; • Python é multiplataforma; • Python tem uma biblioteca padrão imensa; • Pequena curva de aprendizado; • Simplicidade;
  • 5.
    EXEMPLO ALGORITMO NOME DOALGORITMO: SOMA INICIO LER VALOR1 LER VALOR2 SOMA ← VALOR1 + VALOR2 ESCREVER SOMA FIM Arquivo: soma.py val1 = float(raw_input(‘digite um numero: ’)) val2 = float(raw_input(‘digite um numero: ’)) soma = val1 + val2 print soma
  • 6.
    VARIÁVEIS • São nomesdados a áreas de memória • Nomes podem ser compostos de algarismos, letras ou _; • O primeiro caractere não pode ser um algarismo; • Palavras reservadas (if, while, etc) são proibidas; • Servem para: • Guardar valores intermediários; • Construir estruturas de dados; • Uma variável é modificada usando o comando de atribuição: • var = expressão
  • 7.
    TIPOS DADOS • TIPOSPRIMITIVOS • INTEIROS (1, 5, 10, 100, …, 4 ) • REAIS (1.0, 5.1, 10.4, …, 4.6) • STRINGS (‘a’, ‘abc’, ‘carro’, ‘casa’) • BOOLEAN (‘TRUE’ ou ‘FALSE’) • TIPOS COMPOSTOS: • LISTAS (PYTHON) [] • DICIONÁRIOS (PYTHON) {} • TUPLAS (PYTHON) ()
  • 8.
    LÓGICA PROPOSICIONAL Sistema lógicoque busca formalizar a noção de proposição, e de como um conjunto de proposições pode ser criado pela combinação de proposições de forma a gerar um resultado consistente que possa ser aplicado para determinar se este conjunto é verdadeiro ou falso. É essencial aprender os conceitos básicos da Lógica Proposicional, pois é baseado nesta lógica que as instruções das linguagens de programação são construídas. Proposição é uma afirmação qualquer que fazemos, que pode assumir o valor de Verdadeiro (V) ou Falso (F). Por exemplo: "Hoje está chovendo." "O Sol é amarelo." "Você está doente."
  • 9.
    PRINCIPAIS OPERADORES LÓGICOS •NEGAÇÃO (NOT) • CONJUNÇÃO (AND) • DISJUNÇÃO (OR)
  • 10.
    TABELA VERDADE Tabela verdadeé um tipo de tabela matemática usada em lógica para determinar se uma fórmula é válida. P=“ESTAMOS EM 2014” NEGAÇÃO (NOT) P NOT(P) V F F V
  • 11.
    TABELA VERDADE P=“HOJE ÉSEGUNDA” Q=“ESTÁ CHOVENDO” CONJUNÇÃO (AND) P Q P AND Q V V V V F F F V F F F F
  • 12.
    TABELA VERDADE P=“HOJE ÉSEGUNDA” Q=“ESTÁ CHOVENDO” DISJUNÇÃO (OR) P Q P AND Q V V V V F V F V V F F F
  • 13.
    PRECEDÊNCIA DOS OPERADORES LÓGICOS QUANDOHOUVER AMBIGUIDADE: ASSOCIATIVA A DIREITA. PRECEDÊNCIA NOT 1 AND 2 OR 2
  • 14.
    OPERADORES ARITMÉTICOS OPERADORES ARITMÉTICOS +SOMA A + B - SUBTRAÇÃO A – B * MULTIPLICAÇÃO A * B / DIVISÃO A / B % MÓDULO A % B ** EXPONECIAÇÃO A ** B
  • 15.
    ORDEM DOS OPERADORES ARITMÉTICOS •P: Parênteses têm a mais alta precedência e podem ser usados para forçar uma expressão a ser avaliada na ordem que você quiser. Já que expressões entre parênteses são avaliadas primeiro, 2 * (3-1) é 4, e (1+1)**(5-2) é 8. Você também pode usar parênteses para tornar uma expressão mais fácil de ler, como em (minuto * 100) / 60, ainda que isso não altere o resultado. • E: Exponenciação ou potenciação tem a próxima precedência mais alta, assim 2**1+1 é 3 e não 4, e 3*1**3 é 3 e não 27. • MDAS: Multiplicação e Divisão têm a mesma precedência, que é mais alta do que a da Adição e da Subtração, que também têm a mesma precedência. Assim 2*3-1 dá 5 em vez de 4, e 2/3-1 é -1, não 1 (lembre-se de que na divisão inteira, 2/3=0).
  • 16.
  • 17.
  • 18.
    ESTRUTURAS DE CONTROLES •Para poder escrever programas úteis, quase sempre precisamos da habilidade de checar condições e mudar o comportamento do programa de acordo com elas. As instruções condicionais nos dão essa habilidade. A forma mais simples é a instrução SE (IF): if x > 0: print "x é positivo” • A expressão booleana depois da instrução if é chamada de condição. Se ela é verdadeira (true), então a instrução identada é executada. Se não, nada acontece.
  • 19.
    ESTRUTURAS DE CONTROLES •Um segundo formato da instrução if é a execução alternativa, na qual existem duas possibilidades e a condição determina qual delas será executada. if x % 2 == 0: print x, “par” else: print x, “impar” • Se o resto da divisão de x por 2 for 0, então sabemos que x é par, e o programa exibe a mensagem para esta condição. Se a condição é falsa, o segundo grupo de instruções é executado. Desde que a condição deva ser verdadeira (True) ou falsa (False), precisamente uma das alternativas vai ser executada.
  • 20.
    ESTRUTURAS DE CONTROLES •Às vezes existem mais de duas possibilidades e precisamos de mais que dois ramos. Uma condicional encadeada é uma maneira de expressar uma operação dessas: if x < y: print x, "é menor que", y elif x > y: print x, "é maior que", y else: print x, "e", y, "são iguais”
  • 21.
    ESTRUTURAS DE CONTROLES •elif é uma abreviação de “else if” (“senão se”). De novo, precisamente um ramo será executado. Não existe limite para o número de instruções elif, mas se existir uma instrução else ela tem que vir por último: if escolha == ’A’: funcaoA() elif escolha == ’B’: funcaoB() elif escolha == ’C’: funcaoC() else: print "Escolha inválida.”
  • 22.
    ESTRUTURAS DE CONTROLES •Um condicional também pode ser aninhado dentro de outra. Poderíamos ter escrito o exemplo tricotômico (dividido em três) como segue: if x == y: print x, "e", y, "são iguais” else: if x < y: print x, "é menor que", y else: print x, "é maior que", y • O condicional mais externo tem dois ramos. O primeiro ramo contém uma única instrução de saída. O segundo ramo contém outra instrução if, que por sua vez tem dois ramos. Os dois ramos são ambos instruções de saída, embora pudessem conter instruções condicionais também.
  • 23.
    ESTRUTURAS DE REPETIÇÃO(WHILE) • O loop while tem como função repetir determinado bloco de comando, até que uma determinada condição seja verdadeira. Para que o bloco seja executado no momento correto, devemos manter uma rígida endentação, ou seja, tudo que pertencer ao bloco do while, deve estar quatro espaços a frente, isto ajuda a deixar o código legível e organizado. • O while é um comando muito útil, mas pode ser perigoso, pois se não tratarmos corretamente o critério de parada, o laço pode não ter fim, e o programa não faz o que deveria. x = 100 while x > 0: print x, “x > 0” x = x – 1
  • 24.
    ESTRUTURAS DE REPETIÇÃO(WHILE) • Aqui temos um laço que seria executado eternamente (while True:). Porém, dentro dele, fazemos uma verificação, e quando a variável i estiver guardando um valor maior que 100, será executado o comando break. • O comando break literalmente quebra o laço, então, naquele instante, o programa sai do laço. i = 0 while True: print “Não vou parar nunca!” i = i + 1 if i > 100: break • Assim, juntamente ao comando while, vimos agora o comando break que pode ser muito útil para quebrar laços fora da comparação padrão.
  • 25.
    ESTRUTURAS DE REPETIÇÃO(WHILE) • No exemplo abaixo, inicialmente i recebe o valor 0, e é comparado com 100. Como 0 é menor que 100, o laço começa. Logo em seguida, temos uma comparação: if 1 % 2 == 0:, aqui verificamos se i é par. Caso i seja múltiplo de dois, há um comando continue. continue faz com que esta iteração do laço termine e o programa passe para a próxima iteração. • Desta forma, o programa ignora tudo o que está após o if. No caso de i não ser par, o programa não executa o continue, e imprime o valor de i na tela. • Se um continue estivesse fora do if, sempre o programa executaria este continue, e nunca seria executado o que há após ele. Assim, o continue controla a execução do laço sem quebrá-lo. i=0 while i < 100: if i % 2 == 0: i = i + 1 continue print i i = i + 1
  • 26.
    ESTRUTURAS DE REPETIÇÃO(FOR) • O comando for, em Python, difere do que normalmente se vê em outras linguagens de programação, onde esse comando tem a finalidade de realizar uma iteração baseada numa progressão aritmética, percorrendo os números definido pelo usuário, enquanto em Python a iteração é feita percorrendo os itens de uma sequência, seja ela uma lista ou até mesmo uma string. Vamos analisar o código abaixo: for i in range(10): print i
  • 27.
    ESTRUTURAS DE REPETIÇÃO(FOR) • A estrutura anterior utiliza uma variável criada, no caso i, para percorrer cada elemento da lista criada com o comando range(10), com isso, cada repetição feita pelo loop for fará com que a variável i aponte para um diferente valor dentro da lista formada pela função range e logo em seguida imprima esse valor. • Nota: Quando fazemos range(10), teremos uma lista de inteiros de 0 a 9. • A função for também pode ser aplicada com o uso de listas, observemos o caso abaixo: lista = ['vida', 42, 'o universo', 6, 'e', 7, 'tudo’] for item in lista: print “O item atual é:”, item
  • 28.
  • 29.
    FUNÇÃO • Imagina quetemos a seguinte situação num programa qualquer: Instrução1 Bloco1 Instrução2 Bloco1
  • 30.
    FUNÇÃO • Uma funçãonormalmente contém instruções para realizar uma operação específica e devolver o resultado. • Os parâmetros de entrada são os valores que são passados para serem processados pela função. • A função usa os valores de entrada para determinar os resultados das suas instruções. • Uma função pode ter vários valores de entrada, assim como pode não ter nenhum. • Quando a função contém mais de um parâmetro, eles são separados por vírgulas.
  • 31.
    FUNÇÃO • O valorde retorno de uma função é o valor que a função irá devolver. • Assim como parâmetros, a função pode não ter nenhum valor de retorno ou ter vários. • Quando há mais de um valor de retorno, a função devolve uma lista de valores de retorno. • Ter vários valores de retorno é algo meio exclusivo de Python.
  • 32.
    FUNÇÃO def myfunc(): print ‘helloworld’ def pow(base, expoente): potencia = base**expoente return potencia
  • 33.
    FUNÇÃO • Diferentemente deoutras linguagens como o caso do Pascal, as funções em Python podem ser declaradas em qualquer parte do programa, mas só podem ser usadas depois de declaradas. • Isto quer dizer que qualquer referência a uma função antes da linha de declaração da mesma resultará num erro.
  • 34.
    FUNÇÃO def soma(valor1, valor2): result= valor1 + valor2 return result valor = soma(3, 5) print soma
  • 35.
    MÓDULOS • Módulos sãoprogramas feitos para serem reaproveitados em outros programas. • Eles tipicamente contêm funções, variáveis, classes e objetos que provêm alguma funcionalidade comum. • Por exemplo, o módulo math contém funções matemáticas como sin, exp, etc, além da constante pi.
  • 36.
    MÓDULOS • Qualquer programaque você escreva e salve num arquivo pode ser importado como um módulo; • Por exemplo, se você salva um programa com o nome prog.py, ele pode ser importado usando o comando: import prog • Entretanto, a “importação” só ocorre uma vez; • Python assume que variáveis e funções não são mudados e que o código do módulo serve meramente para inicializar esses elementos
  • 37.
    MÓDULOS • Após aimportação de um módulo, este é compilado, gerando um arquivo .pyc correspondente; • No exemplo, um arquivo prog.pyc será criado; • Python só recompila um programa se o arquivo .py for mais recente que o arquivo .pyc;
  • 38.
    MÓDULOS $ cat prog.py defmyfunc(): print ‘hello world’ >>> import prog >>> prog.myfunc() $ ls prog*
  • 39.
    LEITURA E ESCRITADE ARQUIVOS • Python proporciona funções (veremos mais à frente o que é isso) que permitem solicitar ao sistema operativo acesso ao disco a fim de ler ou gravar algum conjunto de dados. • De forma genérica as operações que podemos realizar sobre os arquivos no disco são: Abertura, Leitura, Escritura e Fechamento.
  • 40.
    ABRINDO ARQUIVOS • Oformato básico para abertura de arquivos é: arq = open('nome_arq', 'modo’) • O primeiro argumento da função open é uma string que contem o nome do arquivo ('nome_arq') com o qual vamos trabalhar. • O segundo argumento é outra string que é o modo com que desejamos tratar o arquivo: • "r" modo de leitura: abre o arquivo só para ser lido. • "w" modo de escrita: cria um novo arquivo. Se já existe, apaga seu conteúdo. • "a" modo de continuação: abre (se existe) ou cria (caso não exista) o arquivo a fim de poder escrever no final dele.
  • 41.
    ABRINDO ARQUIVOS Para leruma linha do arquivo utilizamos o método readline. # -*- coding: utf-8 -*- # arq = open(‘file.txt’, ‘r’) linha = arq.readline() print linha linha = arq.readline(5) print linha arq.close()
  • 42.
    ESCREVENDO ARQUIVOS O Pythonpermite escrever usando a função write(): # -*- coding: utf-8 -*- # arq = open(‘texto.txt’, ‘w’) arq.write(‘ola n‘) arq.write(‘mundo!n’) arq.close()
  • 43.
    NUMPY - ABRINDOARQUIVOS # -*- coding: utf-8 -*- # import numpy as np d = np.genfromtxt('data_table3.txt', skip_header=1) print d print type(d) print d.shape print np.mean(d, axis=0) print np.mean(d, axis=1)
  • 44.
    NUMPY – SALVANDOARQUIVOS # -*- coding: utf-8 -*- # import numpy as np. x = np.arange(0.0, 5.0, 1.0) np.savetxt('test1.txt', x) np.savetxt('test2.txt', x, fmt='%1.2f')
  • 45.
    ABRINDO ARQUIVOS NETCDF #-*- coding: utf-8 -*- # from netCDF4 import Dataset data = Dataset(‘file.nc’, ‘r’) pcp = data.variables[‘pcp’][:] lat = data.variables[‘latitude’][:] lon = data.variables[‘longitude’][:] data.close() print pcp.shape print lat print lon
  • 46.
    GRÁFICOS EM PYTHON •matplotlib (http://matplotlib.org/) é uma biblioteca do Python para criação de gráficos em 2D, bastante utilizada para visualização de dados e que apresenta uma série de possibilidades gráficas, como gráficos de barra, linha, pizza, histogramas, entre muitos outros. • O matplotlib já está incluso na distribuição Anaconda (e em praticamente todas as distribuições de Python focadas em Análise de Dados e programação científica).
  • 47.
    GRÁFICOS EM PYTHON #-*- coding: utf-8 -*- # import numpy as np import matplotlib.pyplot as plt plt.plot([0,10,20,30]) plt.show()
  • 48.
    GRÁFICOS EM PYTHON #-*- coding: utf-8 -*- # import numpy as np import matplotlib.pyplot as plt y = [20,50,30] x = range(len(y)) width_n = 0.4 bar_color = 'yellow' plt.bar(x, y, width=width_n, color=bar_color) plt.show()
  • 49.
    GRÁFICOS EM PYTHON Maisexemplos: http://matplotlib.org/examples/index.html