Curso de Python
para as Engenharias da UFRJ
DCC/IM

Acessos a esta página desde 21/06/2007: Page Visit Counter PageRank

Índice


Por que Estudar Python?

Trata-se de uma linguagem moderna com todas as características importantes para o desenvolvimento de habilidades de programação:

  1. orientação a objetos,
  2. persistência,
  3. recursividade,
  4. tratamento de exceções,
  5. estruturas de dados sofisticadas (como listas, tuplas e dicionários),
  6. há uma infinidade de bindings disponíveis.
  7. é uma linguagem funcional: [1], [2].

Para engenheiros, fornece o ambiente ideal para "costura" de aplicações e criação de interfaces, tanto em ambiente Linux, macOS e Windows. Se não bastasse, é fácil de aprender e, por ser interpretada (scripting language), permite que se testem rapidamente todos os conceitos estudados em sala de aula.

Linguagens declarativas tradicionais, como "C" ou Pascal (uma linguagem já morta, na minha opinião), apresentam uma certa dificuldade de aprendizado, devido a grande quantidade de linhas de código que devem ser digitadas para se fazer operações relativamente simples. Manipulação de ponteiros para implementação de estruturas de dados, em particular, nesse tipo de linguagem, é uma tarefa que exige um grau de conhecimento e maturidade, apenas adquirido por pessoas que pretendam se tornar profissionais de computação.

Em resumo, é muito mais fácil para o professor e para o aluno. Se alguém ainda se perguntar, para que isso vai servir na minha vida, então assista o discurso de formatura de Steve Jobs em Stanford. Na realidade, todos devem assistir este vídeo, ao menos uma vez.

Programar não é fácil, mas pode ser divertido, e principalmente depende do esforço individual de cada um, e da atitude correta. No entanto, são necessários vários anos para se atingir um nível de proficiência razoável, mas com muito treino se chega lá.


Módulos Disponíveis

O curso está dividido em quinze módulos, podendo ser estendido, caso haja uma maior disponibilidade de tempo. Aqui estão as ementas do curso: Comp I e Comp II.

Os módulos estão disponíveis no formato .ppt (Powerpoint), .odp (OpenOffice), .pdf (Adobe) ou .ps (GhostScript), com quatro transparências por slide, neste último caso.

MAB 114 - Computação I

  1. Introdução ppt odp ps
  2. Sistemas de Numeração ppt odp ps
  3. Tipos Básicos ppt odp ps
  4. Comandos Básicos ppt odp ps
  5. Listas ppt odp ps
  6. Tuplas e Strings ppt odp ps
  7. Dicionários ppt odp ps
  8. Funções ppt odp ps
  9. Recursão ppt odp ps

MAB 225 ou 241 - Computação II

  1. Classes ppt odp ps
  2. Exceções ppt odp ps
  3. Conjuntos ppt odp ps
  4. Módulos ppt odp ps
  5. Arquivos ppt odp ps
  6. Interfaces Gráficas com Tk ppt odp ps
  7. Video aulas do Cederj
  8. SharePoint - Python

Links Úteis

  1. Índice
  2. Índice dos Módulos
  3. Referência da biblioteca
  4. PEP 8 -- Style Guide for Python Code
  5. Python Learning Foundation
  6. Scientific Tools for Python
  7. Sage - um software livre de matemática
  8. Python for Fun
  9. Python Brasil
  10. Code Sampler
  11. Learning Python: Child's Play with RUR-PLE!
  12. Visual Python: 3D Programming for Ordinary Mortals
  13. Invent with Python
  14. Passing Arguments
  15. Tkinter Tour II
  16. Mutable vs Immutable Objects in Python
  17. Call by Object
  18. Working with Binary Data in Python
  19. Bokeh Visualization Library
  20. VisPy
  21. Astropy
  22. Flask
  23. Slice like a ninja
  24. Beautiful Soup (html and xml parser)
  25. Common Gotchas
  26. Unicode
  27. Algoritmos e Programação
  28. Video aulas do Cederj - Programação com Interfaces Gráficas (ead05030)

Exemplos

  1. Por tópicos
  2. Programas Simples
  3. w3schools
  4. programiz
  5. skillcrush
  6. freecodecamp
  7. beginnersbook
  8. sanfoundry
  9. geeksforgeeks
  10. mackay
  11. Com tkinter
  12. Com OpenGL e CGAL
  13. Doxygen of Source Code

Exercícios de programação

Projetos implementados em Python


Laboratórios

Todos os programas rodam com python 3.8 ou 2.7 e foram implementados em ambiente macOS/Fedora Linux/Ubuntu.

A grande maioria roda em Windows e macOS também, a menos dos laboratórios II, exercícios 11, 14 e 18.

  • O ex. 11 necessita de uma placa de captura de TV/FM e os drivers abertos são para Linux.
  • O ex. 11 pode utilizar o mplayer para reproduzir as rádios via streaming.
  • O ex. 14 necessita do cgal-bindings.
  • O ex. 18 acessa os dispositivos de CD/DVD, da maneira típica do Unix.

Nota: no macOS, é necessário instalar o ambiente python do MacPorts.

Computação I

Computação II


Avaliações


Livros (acesso on line ou estão à venda)


Infraestrutura Mínima


Instalação

A instalação básica só necessita do interpretador Python 3:

  1. Python em Windows
  2. Para ambiente Windows (X) é necessário fazer:

    1. Instalar o interpretador Python 3.8 x86_64 ou 2.7 x86_64 (sem suporte).
      • Pacotes opcionais para o Python 3.8:
        1. Atualizar o pip que é o instalador de pacotes do Python: python -m pip install -U pip
        2. Instalar o py2exe para converter python scripts em executáveis Windows, capazes de rodar sem haver python instalado: pip install py2exe
        3. Instalar o PyOpenGL para gráficos: pip install PyOpenGL PyOpenGL_accelerate
        4. Instalar o PyQt para ter uma GUI baseada no Qt: pip install PyQt5.
        5. Instalar o pygame para desenvolver jogos: pip install pygame
        6. Instalar o numpy para aplicações numéricas: pip install numpy
        7. Instalar o scipy para aplicações científicas: python -m pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose
        8. Instalar o matplotlib para gráficos e interface: python -m pip install -U matplotlib
        9. Instalar o Pillow, Python Imaging Library: python3 -m pip install --upgrade Pillow
        10. Instalar o wxPython para ter uma GUI toolkit para Python: pip install wxPython

      • Pacotes opcionais para o Python 2.7 x86 (descontinuado):
        1. Instalar o py2exe e o vc90crt-21022.8 para converter python scripts em executáveis Windows, capazes de rodar sem haver python instalado.
        2. Instalar o PyOpenGL para gráficos.
        3. Instalar o PyQt e o Eric 4 para ter um ambiente de desenvolvimento integrado (IDE).
        4. Instalar o pygame para desenvolver jogos.
        5. Instalar o numpy para aplicações numéricas.
        6. Instalar o scipy para aplicações científicas.
        7. Instalar o matplotlib para gráficos e interface.
        8. Instalar o PIL para processamento de imagens.
        9. Instalar o wxPython para ter uma GUI (interface gráfica para usuário) toolkit para Python.
    2. Instalar o RUR-PLE para ter um ambiente de auxílio ao aprendizado de Python.
    3. Instalar o mplayer, porque ninguém é de ferro e ver alguns filmezinhos sempre distrai. Todos os codecs já vêm embutidos (DivX, Xvid, AC3, mp3, etc...)
    4. Instalar o mpg123 para rodar o exemplo do alarme.
    5. Instalar o dnspython para rodar o exemplo do dns reverso: pip install dnspython

    Assista também aos vídeos (path, python e ícone) gerados no Camtasia com as instruções para alterar as variáveis de ambiente do Windows e testar a sua instalação.

    Esconder Python em Windows

  3. Python em Unix
  4. Para ambiente Linux (Fedora) é necessário fazer:

        sudo yum install python-tools
                    python-devel
                    python-mtTkinter
                    python2-matplotlib
                    python2-numpy
                    python2-scipy
                    python2-bitarray
                    python-enum34
                    python2-pillow-tk
                    python2-pyopengl
                    python2-dns
                    PyQt-devel
                    PyQt4-devel
                    python-qt5-devel
                    python-kaa-metadata
                    python2-future
                    notify-python
                    wxPython
                    gnuplot-py
                    CGAL-devel
                    rurple
                    eric
                    mplayer
                    mpg123
    
        sudo yum install python3-tools
                    python3-devel
                    python3-tkinter
                    python3-matplotlib
                    python3-numpy
                    python3-scipy
                    python3-bitarray
                    python3-pillow-tk
                    python3-pyopengl
                    python3-dns
                    python3-PyQt4-devel
                    python3-qt5-devel
        

    Para ambiente Linux (Ubuntu) é necessário fazer:

        sudo apt-get install idle
                    python-dev
                    python-tk
                    python-matplotlib
                    python-numpy
                    python-scipy
                    python-pil
                    python-pil.imagetk
                    python-opengl
                    python-dnspython
                    python-enum34
                    python-qt4
                    python-qt4-dev
                    python-pyqt5
                    python-qt4-gl
                    python-pyqt5.qtopengl
                    python-notify2
                    python-notify
                    python-kaa-metadata
                    python-wxglade
                    python-gnuplot
                    python-opencv
                    libcgal-dev
                    eric
                    mplayer
                    mpg123
    
        sudo apt-get install idle3
                    python3-dev
                    python3-tk
                    python3-matplotlib
                    python3-numpy
                    python3-scipy
                    python3-pil
                    python3-pil.imagetk
                    python3-opengl
                    python3-enum34
                    python3-dnspython
                    python3-pyqt4
                    python3-pyqt5
                    python3-pyqt4.qtopengl
                    python3-pyqt5.qtopengl
                    python3-notify2
                    pyqt5-dev
        

    Para ambiente macOS (Macports) é necessário fazer:

        sudo port install python38
                    py38-setuptools
                    py38-pip
                    py38-tkinter
                    py38-bitarray
                    py38-matplotlib
                    py38-numpy
                    py38-scipy
                    py38-Pillow
                    py38-opengl
                    py38-opengl-accelerate
                    py38-pyqt4
                    py38-dnspython
                    py38-wxpython-4.0
                    py38-docx
                    cgal4
                    mpg123
                    MPlayer
        
    Esconder Python em Unix

Existem também IDEs muito boas para Python, como:

  1. Eric
  2. PyCharm
  3. IDLE
  4. SPE
  5. Boa Constructor
  6. Eclipse
Da mesma forma, há verificadores de sintaxe/qualidade, como:
  1. pylint
  2. PyChecker

Para converter programas que rodam em python 2 para python 3, use o utilitário 2to3 do python-tools: 2to3 -w nome-do_programa


Turmas do Prof. Paulo Roma

Para aqueles matriculados no curso de Computação I (MAB-114) ou Computação II (MAB-225) ou (MAB-241) da Matemática (MAA), por favor, inscrevam-se no curso:

  1. MAB-114
  2. MAB-225
  3. MAB-241

Computação II Ep - EB3 [6415]

As notas das provas e trabalhos podem ser obtidas neste local:

  1. MAB114
  2. MAB225
  3. MAB241

A sexta nota (nota 6) é a média final. Revisão de todas as provas ao final do curso.

As atividades estão de acordo com o Calendário Acadêmico:

  1. Início dia 25 de agosto
  2. Término dia 13 de novembro

Agradecimentos

Parte das notas de aula foram adaptadas a partir do material do Prof. Claudio Esperança.
Nossos sinceros agradecimentos a ele.

/Paulo Roma.