associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

Diferenças para "IntroPython"

Diferenças entre as versões de 3 e 17 (14 versões de distância)
Revisão 3e 2004-07-29 15:44:10
Tamanho: 2448
Editor: RudaMoura
Comentário:
Revisão 17e 2004-08-07 22:49:46
Tamanho: 9349
Editor: 201008080086
Comentário:
Deleções são marcadas assim. Adições são marcadas assim.
Linha 19: Linha 19:

Um monte de coisas! Testar idéias de programação; automatizar tarefas repetitivas (manipulação de texto, cópia de arquivos, outras); criar programas em modo texto; programas em modo gráfico; programas que para a rede e a internet; etc.
Linha 21: Linha 24:

Python e Perl são linguagens com propósitos bastante parecidos. Uma vantagem do Python é a sua regularidade e facilidade de leitura (e se você já programou em Perl, sabe que isso é importante! Alguém tem/quer exemplos?).

Python e Java são linguagens bem diferentes, o que torna a comparação difícil ou sem signficado. Python sugere um desenvolvimento rápido, do tipo "editar-executar" (Python compila automaticamente quando executamos o programa). Já Java ("Já Java", hahaha) exige que o programador declare tipos, visibilidade de funções, separe cada classe (pública) em arquivos diferentes, e o desenvolvimento é do tipo "editar-compilar-executar" (ainda que o arquivo gerado tenha que ser interpretado...). Outra vantagem do Python que me vem à mente agora são suas estruturas de dados (p.ex.: listas e dicionários). Java usa classes para prover essas funcionalidades, mas geralmentes são necessários muito mais comandos (e ''casts'') para obter o mesmo resultado.
Linha 22: Linha 30:

O site oficial é: [http://python.org]
Linha 25: Linha 35:
Além da opção de ir ao site oficial, o Python geralmente já vem com o sistema ou a distribuição tem um pacote pronto pra instalar.

Depois que você "pegar" melhor a linguagem, experimente conhecer os módulos específicos para Linux.
Linha 26: Linha 40:

No site ofical tem um instalador pra Windows que é muito simples! Nem parece que está instalando uma linguagem de programação...
Linha 31: Linha 47:
  Se você NUNCA programou antes, é necessário entender alguns conceitos básicos.

 Por exemplo: você sabe o que é um "executável" certo? Experimente abrir um arquivo desses em algum editor de textos. A não ser que você tenha vivido anos na Matrix, não entenderá nada!

 Isso acontece porque o programa está escrito, ali, em linguagem de máquina, ou seja, apesar de você não entender nada, o computador entende muito bem.

 Mas não pense que alguém escreveu aquilo do jeito que está. Também não foi escrito ao estilo "morse" (10010010110)... inicialmente, o programador escreveu o que chamamos de "código-fonte" em alguma linguagem de programação, como C, Pascal ou Java, e, depois de terminado, compilou o código, ou seja, traduziu de C,Pascal ou Java para linguagem de máquina (também chamada de Assembly).

 Essas linguagens que eu citei acima são as linguagens compiladas, pois antes de serem executadas, seus códigos-fonte devem ser devidamente compilados.

 Python não é compilada, mas sim interpretada, assim como PHP, Perl e muitas outras, ou seja, não há o processo de compilação. O que acontece é que o código-fonte (ou script) é "traduzido" direto, através de um interpretador (imagine que ele é um intérprete mesmo, pois é assim que funciona!). Observação: Geralmente, quando uma linguagem é interpretada, existe um código intermediário (''bytecode''), com o qual o programador não precisa se preocupar. Seria muito lento interpretar diretamente o texto do código fonte. No caso do Python, o ''bytecode'' é salvo em arquivos '''.pyc''' e '''.pyo'''.

 Tal fato adiciona muita produtividade à linguagem, já que o processo de programar é somente escrever-rodar, ao contrário de escrever-compilar-rodar. Veja que o ciclo dum programa interpretado é bem mais eficiente, pois a fase de testes é MUITO simplificada:

Python: escrever-testar-corrigir-escrever-testar-distribuir
C: escrever-compilar-testar-corrigir-compilar-testar-distribuir

  Se você já tem um interpretador instalado em seu sistema, experimente escrever o seguinte script:
 
    print "Olá, mundo"

  Depois, num terminal, digite "python nome_do_script", e veja como é simples!
Linha 33: Linha 72:
  Python é dinamicamente tipado, o que significa que se você usou uma variável para armazenar um inteiro, nada lhe impede de usá-la posteriormente para armazenar uma string (frase). Na verdade, variáveis em Python não são declaradas, o que lhe dá muita flexibilidade.

  Quem determina o tipo de uma variável é o próprio interpretador. Se você escreve

   x = 2

   FRASE = 'Isso é um exemplo simples e bobo'

  O interpetador já sabe que x é um inteiro e FRASE é uma string. Mas isso não lhe impede de, posteriormente, escrever

   x = 'agora tudo mudou'

   FRASE = 3.2

 Como x já disse, tudo mudou, e isso é bem natural. Na verdade, raras são as vezes em que você precisa se preocupar com tipos. Geralmente você simplesmente atribui um valor a uma variável e pronto! Isso é bem simples.

 Então aqui vão alguns exemplos de tipos:

x = 2 #inteiro

p = 3.1415 #real, ou ponto flutuante

estringue = 'alguma frase' #string

lista = [3,4,5] #lista com elementos inteiros

lista2 = [2,'tres',4.0,[5,6]] #lista mista e aninhada

tupla1 = (1,2,3,'quatro') #isso se chama tupla. É como uma lista, mas não pode ser mudada

dic = {'site':'Python Brasil','url':'www.pythonbrasil.com.br'} # isso é um dicionário, que não passa de uma lista com qualquer tipo de indexador

Linha 34: Linha 106:
    * str
    * unicode
    * bool
    * float
    * int
    * long
    * complex
    * file
    * decimal (proposto, ainda não faz parte do Python)
Linha 36: Linha 117:
    * list
    * tuple
    * dict
Linha 39: Linha 123:
    * while
    * break/continue
Linha 42: Linha 124:
=== Iteradores (aka for) === == Estruturas de iteração ou loop ==
    * for
    
     Usando for:
     Se você programa em C, vai perceber que o for em Python é diferente. Ele itera sobre listas. Por exemplo:
Linha 44: Linha 130:
== Tratamento de erros e Excessões) == metallica=['James','Kirk','Lars','Trujillo']

for membro in metallica:
   print membro
 
   Ou seja, para cada elemento da lista, itere. Você terá acesso ao item corrente (print membro). Se quiser fazer iterações sobre progressões aritméticas, use a função range, que cria uma lista de inteiro em sequência. Exemplo:

for i in range(50):
   print i

   Isso vai imprimir na tela os números de 0 a 49.

  * while

== Tratamento de erros e exceções ==
    * try - except
    * try - finally
Linha 47: Linha 149:

Uma das características que me surpreendeu foi a facilidade de criar módulos simples. Por exemplo, se você quer criar um módulo chamado ''funcoesuteis'', é só criar um arquivo chamado ''funcoesuteis.py'' no mesmo diretório do seu programa principal. Nesse arquivo, coloque todos os '''def'''s e '''class'''es que quiser. No programa que for usar esse módulo, é só colocar {{{import funcoesuteis}}} e usar as funções como {{{funcoesuteis.funcao1()}}}, {{{funcoesuteis.funcao2()}}}, etc. Se quiser poupar digitação, use a forma {{{from funcoesuteis import funcao1, funcao2}}} e chame as funções diretamente: {{{funcao1()}}}, {{{funcao2()}}}.

(Melhorar: exemplos mais completos, descrição menos concisa e mais fácil de seguir, talvez explicar packages).
Linha 54: Linha 160:
(Sugestão: Coloca o programa sim! Assim o tutorial "cresce" junto com o leitor, em vez de ficar só no conhecimento básico - tem é que mergulhar fundo! Ao infinito e além!!)

Infelizmente ainda não está pronto, é um "vaporware" :( Mas você que domina Python pode ajudar a fazê-lo acontecer. Bom, por que mais um guia? Primeiro, os guias que estão no site são resumidos e falam apenas de poucos tópicos, falta um documento para realmente iniciar pessoas a linguagem Python, de forma efetiva. Um guia de introdução, ensinando a baixar e usar um pouco da linguagem, o "feijão com arroz" é um primeiro passo para termos mais gente envolvida e um trampolim para a pessoa buscar mais informações em outros tutorais. Eu pretendo escrever aqui este guia, mas que não seja o "guia do Rudá", espero que todos possam contribuir (inclusive se os autores de outros IntrosPython aqui permitirem, ripar o conteúdo e mover para este documento). Aliás, uma pequena crítica, não sou contra identificar o autor de um documento, é respeito ao autor, mas eu noto que não estamos "botando o dedo" no documento dos outros, alterando, contribuído, criticando, por mais que se tenha um autor de um documento definido, isto aqui é um Wiki! Vamos rabiscar, mexer, comentar! Não sejamos tímidos. :)

Guia de Introdução A Linguagem Python

Este é o Guia do PythonBrasil para uma rápida introdução a linguagem Python.

O que é Python?

O que eu posso fazer com Python?

Um monte de coisas! Testar idéias de programação; automatizar tarefas repetitivas (manipulação de texto, cópia de arquivos, outras); criar programas em modo texto; programas em modo gráfico; programas que para a rede e a internet; etc.

O que eu não posso fazer com Python?

Por que eu deveria usar Python e não Perl, Java ou outra linguagem?

Python e Perl são linguagens com propósitos bastante parecidos. Uma vantagem do Python é a sua regularidade e facilidade de leitura (e se você já programou em Perl, sabe que isso é importante! Alguém tem/quer exemplos?).

Python e Java são linguagens bem diferentes, o que torna a comparação difícil ou sem signficado. Python sugere um desenvolvimento rápido, do tipo "editar-executar" (Python compila automaticamente quando executamos o programa). Já Java ("Já Java", hahaha) exige que o programador declare tipos, visibilidade de funções, separe cada classe (pública) em arquivos diferentes, e o desenvolvimento é do tipo "editar-compilar-executar" (ainda que o arquivo gerado tenha que ser interpretado...). Outra vantagem do Python que me vem à mente agora são suas estruturas de dados (p.ex.: listas e dicionários). Java usa classes para prover essas funcionalidades, mas geralmentes são necessários muito mais comandos (e casts) para obter o mesmo resultado.

Aonde eu adquiro o Python?

O site oficial é: [http://python.org]

Linux

Além da opção de ir ao site oficial, o Python geralmente já vem com o sistema ou a distribuição tem um pacote pronto pra instalar.

Depois que você "pegar" melhor a linguagem, experimente conhecer os módulos específicos para Linux.

Windows

No site ofical tem um instalador pra Windows que é muito simples! Nem parece que está instalando uma linguagem de programação...

Macintosh

Entendendo Python

  • Se você NUNCA programou antes, é necessário entender alguns conceitos básicos.
  • Por exemplo: você sabe o que é um "executável" certo? Experimente abrir um arquivo desses em algum editor de textos. A não ser que você tenha vivido anos na Matrix, não entenderá nada! Isso acontece porque o programa está escrito, ali, em linguagem de máquina, ou seja, apesar de você não entender nada, o computador entende muito bem. Mas não pense que alguém escreveu aquilo do jeito que está. Também não foi escrito ao estilo "morse" (10010010110)... inicialmente, o programador escreveu o que chamamos de "código-fonte" em alguma linguagem de programação, como C, Pascal ou Java, e, depois de terminado, compilou o código, ou seja, traduziu de C,Pascal ou Java para linguagem de máquina (também chamada de Assembly). Essas linguagens que eu citei acima são as linguagens compiladas, pois antes de serem executadas, seus códigos-fonte devem ser devidamente compilados.

    Python não é compilada, mas sim interpretada, assim como PHP, Perl e muitas outras, ou seja, não há o processo de compilação. O que acontece é que o código-fonte (ou script) é "traduzido" direto, através de um interpretador (imagine que ele é um intérprete mesmo, pois é assim que funciona!). Observação: Geralmente, quando uma linguagem é interpretada, existe um código intermediário (bytecode), com o qual o programador não precisa se preocupar. Seria muito lento interpretar diretamente o texto do código fonte. No caso do Python, o bytecode é salvo em arquivos .pyc e .pyo. Tal fato adiciona muita produtividade à linguagem, já que o processo de programar é somente escrever-rodar, ao contrário de escrever-compilar-rodar. Veja que o ciclo dum programa interpretado é bem mais eficiente, pois a fase de testes é MUITO simplificada:

Python: escrever-testar-corrigir-escrever-testar-distribuir C: escrever-compilar-testar-corrigir-compilar-testar-distribuir

  • Se você já tem um interpretador instalado em seu sistema, experimente escrever o seguinte script:
    • print "Olá, mundo"
    Depois, num terminal, digite "python nome_do_script", e veja como é simples!

Tipos de dados, constantes, variáveis e expressões

  • Python é dinamicamente tipado, o que significa que se você usou uma variável para armazenar um inteiro, nada lhe impede de usá-la posteriormente para armazenar uma string (frase). Na verdade, variáveis em Python não são declaradas, o que lhe dá muita flexibilidade. Quem determina o tipo de uma variável é o próprio interpretador. Se você escreve
    • x = 2 FRASE = 'Isso é um exemplo simples e bobo'
    O interpetador já sabe que x é um inteiro e FRASE é uma string. Mas isso não lhe impede de, posteriormente, escrever
    • x = 'agora tudo mudou' FRASE = 3.2
  • Como x já disse, tudo mudou, e isso é bem natural. Na verdade, raras são as vezes em que você precisa se preocupar com tipos. Geralmente você simplesmente atribui um valor a uma variável e pronto! Isso é bem simples. Então aqui vão alguns exemplos de tipos:

x = 2 #inteiro

p = 3.1415 #real, ou ponto flutuante

estringue = 'alguma frase' #string

lista = [3,4,5] #lista com elementos inteiros

lista2 = [2,'tres',4.0,[5,6]] #lista mista e aninhada

tupla1 = (1,2,3,'quatro') #isso se chama tupla. É como uma lista, mas não pode ser mudada

dic = {'site':'Python Brasil','url':'www.pythonbrasil.com.br'} # isso é um dicionário, que não passa de uma lista com qualquer tipo de indexador

Tipos simples (números, strings)

  • str
  • unicode
  • bool
  • float
  • int
  • long
  • complex
  • file
  • decimal (proposto, ainda não faz parte do Python)

Tipos agrupados (listas, tuplas, dicionários)

  • list
  • tuple
  • dict

Estuturas de controle

  • if

Estruturas de iteração ou loop

  • for
    • Usando for: Se você programa em C, vai perceber que o for em Python é diferente. Ele itera sobre listas. Por exemplo:

metallica=['James','Kirk','Lars','Trujillo']

for membro in metallica:

  • print membro Ou seja, para cada elemento da lista, itere. Você terá acesso ao item corrente (print membro). Se quiser fazer iterações sobre progressões aritméticas, use a função range, que cria uma lista de inteiro em sequência. Exemplo:

for i in range(50):

  • print i Isso vai imprimir na tela os números de 0 a 49.
  • while

Tratamento de erros e exceções

  • try - except
  • try - finally

Módulos

Uma das características que me surpreendeu foi a facilidade de criar módulos simples. Por exemplo, se você quer criar um módulo chamado funcoesuteis, é só criar um arquivo chamado funcoesuteis.py no mesmo diretório do seu programa principal. Nesse arquivo, coloque todos os defs e classes que quiser. No programa que for usar esse módulo, é só colocar import funcoesuteis e usar as funções como funcoesuteis.funcao1(), funcoesuteis.funcao2(), etc. Se quiser poupar digitação, use a forma from funcoesuteis import funcao1, funcao2 e chame as funções diretamente: funcao1(), funcao2().

(Melhorar: exemplos mais completos, descrição menos concisa e mais fácil de seguir, talvez explicar packages).

Classes

Um exemplo Completo

Pretendo deixar um aplicativo de exemplo para sintetizar tudo. Uma idéia que me ocorreu agora é fazer um programinha gráfico (usando tk) de perguntas e repostas (quiz). Não sei se é confundir muito botar tk no meio, mas creio que se a pessoa entendeu o tutorial vai ser capaz de entender um pouco do código, mesmo porque com o quiz eu posso usar dicionários, listas, abrir/fechar arquivos (aka usar módulos), talvez usar classes e mostrar um exemplo prático que teoricamente rodaria em todas as plataformas.

(Sugestão: Coloca o programa sim! Assim o tutorial "cresce" junto com o leitor, em vez de ficar só no conhecimento básico - tem é que mergulhar fundo! Ao infinito e além!!)


RudaMoura