Este será o texto "Tutorial Básico de Python" que será colocado no programa acima descrito:
IntroduçãoEste tutorial foi criado com intuito de ensinar de maneira simples e objectiva esta linguagem de programação chamada Python.
Vale salientar que este tutorial não é um tutorial aprofundado, e nem um manual de referência.
O que é Python?Python é uma linguagem interpretada, bastante portável, orientada a objectos (incluindo herança múltipla).
Apresenta semântica dinâmica, um moderno mecanismo de tratamento de erros e excepções.
Algo só visto em linguagens modernas como Java e as versões mais recentes de C++.
Python possui uma forma eficiente de acesso e reutilização de código com o uso de módulos, coleta de lixo automática, recursos avançados de manipulação de textos, listas e outras estruturas de dados (como dicionários, mais poderoso que o hash de Perl, pois os valores assumidos podem conter qualquer outro tipo de objecto como até mesmo outros dicionários).
Python possui ainda uma sintaxe simples, quase como um pseudo-código, característica marcante da sintaxe, próxima a linguagem matemática, do MATLAB.
HistóriaSeu desenvolvimento teve início em 1990, pelo holandês Guido van Rossum, na CWI em Amesterdão e continuou na CNRI (fundação que sustenta a linguagem hoje) em Reston.
O conjunto de entidades e pessoas ligadas ao Python, sobretudo via Internet, formam a Python Software Activity (PSA).
CaracterísticasEm Python, diferentemente de C++ ou Java, as funções são tratadas como objectos, característica de linguagens de programação funcional como Lisp, muito utilizada em aplicações de inteligência artificial.
Outro ponto importante, oferecendo grande flexibilidade, é que, em Python, cada argumento de uma função pode assumir um valor default.
Módulos do PythonOs módulos, em Python, são colecções de funções.
Sua versão 1.5.2, de 1999, já incluía mais de 140 módulos, sem contar a extensão gráfica Tk que é importante na construção das ferramentas de utilização da linguagem.
E desconsiderando também outros módulos que podem ser encontrados a partir do site oficial (
www.python.org), quase todos livres e gratuitos.
Como ilustração, podemos citar alguns módulos, como o cgi (para programação de páginas dinâmicas), ftplib (para montagem de scripts para interação com servidores FTP), gzip (para leitura e escrita de arquivos comprimidos), math (para utilização de funções matemáticas), re (para busca de texto com expressões regulares, característica da linguagem Perl), string (para operações com strings), time (para obtenção de hora actual e conversão de formatos de data), xmllib (para interpretação de arquivos em formato XML).
Outro módulo especial é o NumPy, utilizado na computação científica.
O que é NumPyO NumPy é um conjunto de extensões para Python que oferecem várias funcionalidades para manipulação de conjuntos de objectos chamados arrays.
Estes, por sua vez, podem ter qualquer número de dimensões.
A vantagem destas extensões é que podemos processar grandes conjuntos de forma tão rápida quanto os resultados das linguagens não interpretadas de mais baixo nível.
A manipulação de grandes conjuntos numéricos, que é o caso do processamento de imagens, se fossem usadas as estruturas de dados padrão de Python, poderia ser muito lenta e ocupar muito espaço.
Entretanto, mesmo assim, comparando a execução de comandos de iteração (como o comando "for''), críticos em linguagens interpretadas, o Python se revela eficiente, sendo mais rápido, por exemplo, que o MATLAB.
Tanto Python como MATLAB podem facilmente agregar funções (boa extensividade).
O fato de o Python ter código aberto e ser gratuitamente distribuído, inclusive com o Numerical Python, foi um elemento decisivo na escolha desta linguagem, já que a intenção, entre outras, é beneficiar qualquer pessoa interessada em ferramentas de processamento de imagens.
Tipos de variáveis dinâmicosUm dos conceitos básicos de programação é a variável, que é um associação entre um nome e um valor.
Ou seja, temos em:
GeSHi (python):
a = 1Created by GeSHI 1.0.7.20
A variável a recebendo o valor de 1.
Em Python, não precisamos declarar variáveis; para criar uma, basta atribuir um valor a ela.
No exemplo acima, criamos uma variável chamada a.
Quando dizemos que a linguagem possui tipos de variáveis dinâmicos, o tipo de valor ao qual um nome está associado pode variar durante a execução de um programa.
Não quer dizer que não exista tipo -- embora em Python não o declaremos, as variáveis assumem um tipo -- apenas que este tipo pode variar durante o curso da execução.
Esta propriedade por si só não é tão importante, embora realmente torne a escrita dos programas mais ágil: não precisamos decidir de imediato qual informação será armazenada, e podemos converter uma informação entre diversos tipos sem definir uma nova variável.
Associada à orientação a objectos, no entanto, possui reflexos interessantes, que discutiremos mais adiante.
Controle de bloco por indentaçãoNa maior parte das linguagens, há instruções ou símbolos específicos que delimitam blocos de código que compõem um laço ou expressão condicional. Por exemplo, em C:
GeSHi (c):
if ( a < 0 ) {
/* bloco de código */
}Created by GeSHI 1.0.7.20
ou em Fortran:
GeSHi (c):
if ( a .lt. 0 ) then
/* bloco de código */
endifCreated by GeSHI 1.0.7.20
Nestes dois casos, os blocos são delimitados -- em C por chaves, e em Fortran pelo par then e endif.
Em Python, os blocos são demarcados apenas por indentação:
GeSHi (python):
if ( a < 0 ):
# bloco de código
# (ao fim da seção indentada
# termina o bloco)
# próxima instrução (após o if)Created by GeSHI 1.0.7.20
Esta propriedade faz com que a linguagem seja muito clara e fácil de ler -- a indentação está sempre correta -- mas também requer um controle formal sobre a indentação.
É importante convencionar se a indentação será feita por uma tabulação ou por um número determinado de espaços, já que todas as pessoas editando um programa Python devem usar o mesmo tipo.
Uma boa dica que evita confusão é usar 4 espaços para cada nível.
Tipos de variáveis de alto nívelComo dito antes, Python possui tipos, e alguns destes tipos merecem uma atenção especial por serem de alto nível, e portanto, bastante úteis.
Python oferece:
* Strings: a cadeia de caracteres, uma forma de dado muito comum, possui um tipo específico.
* Listas: uma lista é como um vector em outras linguagens: um conjunto de valores organizados (indexados) por um índice numérico e inteiro.
GeSHi (python):
a = [ "A", "B", "C" ]
print a[2]Created by GeSHI 1.0.7.20
* Tuplas: tuplas são listas imutáveis; em outras palavras, não podem ser alteradas uma vez criadas.
* Dicionários: dicionários são como listas, mas que possuem índices cujo tipo não precisa ser inteiro.
Dicionários são conhecidos em outras linguagens como arrays associativos ou hashes.
GeSHi (python):
autor = { "nome" : "Christian", "idade" : 26 }
print autor["nome"]Created by GeSHI 1.0.7.20
* Classes: classes são tipos especiais que servem para apoiar programação orientada a objectos, que será discutida a seguir.
Orientação a objectosNeste tópico, faremos uma rápida explicação sobre como pode ser feita a orientação a objectos.
Orientação a objectos (OO) é uma forma de estruturar um programa: ao invés de definirmos variáveis e criarmos funções, passando parâmetros entre elas, definimos objectos que possuem dados e acções associadas.
O programa orientado a objectos é resultado da 'colaboração' entre estes objectos.
Para a orientação a objectos ser utilizada, a linguagem de programação deve dar suporte a objectos (e aos seus tipos, as classes).
Em Python, há suporte completo a OO; aliás, a linguagem vai além de simples suporte: todos os elementos básicos em Python são objectos.
Segue um exemplo de uma classe, e da criação de um objecto, que nos termos da linguagem Python é chamado de instância:
GeSHi (python):
class Produto:
def vende(self):
# Aqui entrariam as acções que realizam uma venda
pass
p = Produto()
p.preco = 10.00
p.descricao = "Halls extra forte"
p.vende()
print pCreated by GeSHI 1.0.7.20
Por que utilizar Python?Uma boa pergunta é -- já que existe uma quantidade de linguagens diferentes -- por que aprender Python é importante ou mesmo interessante?
Há diversas respostas; a mais importante, na minha opinião, é que Python é fácil.
É fácil em diversos sentidos:
* Os conceitos fundamentais da linguagem são simples.
* A sintaxe da linguagem é clara e fácil de aprender.
* A linguagem possui um interpretador de comandos que permite aprender e testar rapidamente trechos de código.
* Na grande maioria dos casos, um programa em Python será muito mais curto que seu correspondente escrito em outra linguagem.
Isto também faz com que seja mais rápido de escrever.
* Existe suporte para todo tipo de biblioteca e banco de dados possível.
Ou seja, pode-se fazer em Python qualquer tipo de programa, mesmo que utilize gráficos, base SQL ou outra tecnologia externa.
* É possível escrever extensões a Python em C e C++ se é necessário performance máxima, ou se é desejável fazer interface com alguma ferramenta que possua biblioteca apenas nestas linguagens.
* Python permite que o programa funcione em múltiplas plataformas; em outras palavras, a sua aplicação feita para Linux pode rodar sem problemas em Windows e em outros sistemas.
* Python é pouco punitivo: em geral, "tudo pode" e há poucas regras arbitrárias; isto acaba por tornar prazeroso o uso da linguagem.