Thursday, May 26, 2016

Módulos

Módulos, exceções e arquivos

 Uma vez escrito, um script pode ser salvo em arquivo com terminação ".py" (py de Python). O mesmo vale para script com definições de funções.

Um arquivo .py é chamado de módulo e aqui vem a parte interessante: um módulo pode ser incorporado em outro script, fazendo sua importação via o comando import.

import meu_modulo
Para isto dar certo o módulo deve estar no diretório corrente, ou no caminho de busca do Python. Uma vez importado o módulo todas suas funções passam a fazer parte do script importador, podendo ser chamadas e usadas normalmente.

Coleções de módulos são agrupadas num package. O mesmo import pode importar a coleção inteira numa só vez.

 


Quando escrevemos um programa uma série de coisas são assumidas sobre o meio ambiente onde ele vai rodar. Por exemplo ao baixar um arquivo pela internet assumimos que a url é correta e bem formada, que o site ainda existe e funciona, que a página html está lá e será encontrada, etc.

Na prática qualquer destas hipóteses pode falhar. O mesmo pode acontecer ao ler um arquivo que assumimos ser  codificado num dado padrão, mas que pode estar em outro resultando em leitura de lixo ou até travamento do programa.

Para gerenciar este tipo de problema existe o mecanismo de exception  (exceção) no Python. O programador que cria o acesso à internet ou cria o leitor de arquivos, ao encontrar uma situação como descrito cria um objeto exceção disponível para o usuário e lança um aviso de exceção, o que interrompe a execução do programa e volta a execução para o programa usuário.

Usando o comando try e seu par, except  é possível ler o objeto exceção lançado e tomar providências de acordo, por exemplo imprimir mensagem de anomalia.

 


Estes tópicos e ainda uma introdução à leitura de arquivos estão no novo notebook que disponibilizei aqui.

Monday, May 23, 2016

Funções

Funções

Funçoes são procedimentos conceitualmente autônomos, isto é tem um propósito próprio bem definido. A grande diferença é que funções podem ser chamadas recebendo dados externos na forma de seus argumentos, e podem retornar valores e objetos resultantes de sua computação.

Todas as variáveis que funções utilizam tem escôpo local, isto é não são visíveis nem acessíveis pelo programa que as invoca.  Toda a comunicação entre o mundo da função e o mundo do programa é via argumentos na entrada e valores retornados na saída.

Funções são super importantes por diversas razões, entre as quais:

  • decompõem o problema maior em blocos conceituais menores, facilitando a programação
  • podem ser reutilizadas em outros programas, tornando programar mais eficiente e mais fácil
  • tornam o programa mais fácil de depurar por partes
Em Python funções são objetos de primeira classe e podem ser manipuladas como tal. 

Coloquei no Dropbox um notebook sobre funções aqui.
 

Sunday, May 22, 2016

Loops

Loops podem ser complicados

Vamos escrever um loop (termo para repetição, universalmente adotado) para percorrer uma lista imprimindo seus elementos. Coisa simples agora que você conhece os comandos básicos do Python.

L = [1, 2, 3, 4, 5]
for x in L:
        print(x)
            print('Fim.')
 
A saida deste sript é:
1
2
3
4
5
Fim.

Agora vamos modificar o script ligeiramente e eu gostaria que você estudasse o que acontece e tivesse uma explicação clara do ocorrido. Se você tiver IDLE instalado digite o script e observe sua execução:

L = [1, 2, 3, 4, 5]
    c = 6
for x in L:
                if x < 10:
           L.append(c)
           c = c + 1
       print(x)
        print('Fim.')
A saida observada será:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Veremos o que houve em post futuro. (Dica: você está mexendo no limite da repetição).

Agora analise o que ocorre no script abaixo, quase igual ao anterior:
L = [1, 2, 3, 4, 5]
    c = 6
for x in L[:5]:
                if x < 10:
           L.append(c)
           c = c + 1
       print(x)
            print('Fim.')
Que saida vamos obter? Digite o código no IDLE e execute. O que você esperava é o que ocorre?

(dica: Quando voce fatia (slice) a lista para obter L[:5] o Python faz uma cópia deste pedaço da lista L original. Portanto você passa a ter a lista L original e uma cópia de pedaço, L[:5] )
 

Friday, May 20, 2016

Comandos do Python

Comandos

Neste notebook introduzimos os comandos básicos do Python.

O notebook pode ser baixado aqui.

Além de apresentar os comandos if for while break ilustramos resolvendo alguns dos exemplos da lista de exercícios 1.

A versão HTML do notebook está anexada em Recursos.

 

 

Thursday, May 19, 2016

Conjuntos, dicionários e mapeamentos

Ainda tipos de dados nativos

Coloquei no Dropbox mais um notebook Jupyter com texto sobre conjuntos (set), dicionários (dict) e um tópico mais avançado sobre "comprehensions" que é o equivalente em Python 3 do map, lambda em Python 2.

Este notebook pode ser baixado aqui.

Tambem coloquei aqui no blog uma página HTML cópia deste notebook, que pode ser vista nos Recursos na barra direita do blog.

Em Python o tipo de dados set modela a noção de conjunto, ou seja uma coleção de elementos quaisquer onde não existe ordem entre eles e todos são únicos (sem repetição de elementos).

O tipo de dados dict é extremamente útil. Dicionários são pares compostos por chave e valor. Encontrar um valor dada uma chave é uma operação muito rápida e eficiente. A operação reversa (e não unívoca) pode ser bem mais lenta.

Na prática usaremos dicionários frequentemente.





Comprehensions são uma forma de mapear listas, dicionários ou conjuntos em outros similares, aplicando alguma função em cada elemento.

Por exemplo, dada uma lista de números queremos um modo rápido de extrair todos os pares. Isto pode ser feito com um comando, um "list comprehension", da seguinte forma:

 L = [ 1, 2, 3, 4]
 Lpar = [x for x in L if x % 2 == 0]
Num certo sentido isto lembra SQL, não é mesmo?




Com isto cobrimos o básico de tipos de dados e passaremos adiante para comandos do Python.

Breve estaremos em condição de codificar e executar nossos algoritmos em Python.



Wednesday, May 18, 2016

Atraso no incio do curso

Atrasos no início do curso

Devido a fatores diversos o início do curso tem sido postergado. Para aqueles que mostram interesse maior sugiro que tentem começar em casa mesmo, usem este blog como guia e sintam-se a vontade para me consultar por email ou até comentários aqui no blog mesmo.

Tipos de dados

Tipos de dados do Python

Python é uma linguagem orientada a objetos e todos termos num programa representam objetos. Objetos são instâncias do que se chama tipos de dados.

Os tipos de dados mais elementares na linguagem incluem caracteres, números e variáveis.

Outros tipos de dados são pré definidos no interpretador Python e utilíssimos, usamos todo dia. Estes são:
  • strings
  • list
  • tuple
  • set
  • dict (dicionário)
Vamos examinar os três primeiros agora e os dois restantes em post futuro. Coloquei um notebook aqui para vocês baixarem e estudarem. 

Como de hábito anexei a versão HTML na lista de Recursos.