TC­720 (30 h, 2 Créditos) TÓPICOS ESPECIAIS: PROGRAMAÇÃO CIENTÍFICA COM PYTHON, GNUPLOT, METAPOST, E LATEX (1o Trimestre de 2009) Prof. Nelson Luís Dias HORÁRIO: 3as Feiras, 13:30­15:30. LOCAL: Laboratório Didático de Computação (LDC), CESEC (PPGMNE). NÚMERO MÁXIMO DE VAGAS: 12. MOTIVAÇÃO: Python é uma linguagem moderna interpretada cuja simplicidade e ferramentas pré­ existentes permitem o desenvolvimento rápido de algoritmos, aumentando muito a eficiência de programação. A existência de módulos pré­compilados de aplicacações científicas torna­o, na prática, similar a Matlab, com as vantagens de ser de código aberto e gratuito. Discutiremos a utilização de Python no pré­ e pós­processamento de dados utilizados em programas compilados em C e Fortran; no interfaceamento com bibliotecas escritas nestas linguagens para maior eficiência; na produção de gŕaficos (GnuPlot e MetaPost) e relatórios e artigos (LaTeX). Requisitos: saber usar um computador. Esteja preparado/a para escrever seus próprios programas e rodá­los durante as aulas, no laboratório de computação do CESEC. CRITÉRIO PARA NOTA: Freqüência, e um paper completo (mínimo de 10 páginas A4; margens de 2.5cm, letras tamanho 12) sobre tema a ser escolhido entre uma das 12 aulas do curso (no início!). Cada aluno/a deverá escrever sobre um tema diferente. PROGRAMAÇÃO TENTATIVA Aula Data Conteúdo 1 Ter 03/mai Pequeno histórico de linguagens de programação e outras ferramentas em aplicações científicas. Prós e contras. Arquivos de texto e binários. Codificações de caracteres acentuados: ISO8859­1 e UTF­8. As vantagens de uma filosofia: quase tudo é texto! 2 Ter 10/mai Figuras em Postscript. Postscript é uma linguagem. É relativamente difícil programar em Postscript. Alternativas: desenhar com Metapost, plotar com Gnuplot. Filosofia: plotar a partir de arquivos­texto. Vantagens: velocidade, compacidade, programabilidade. Aprenda a ler os manuais! 3 Ter 17/mai Exemplos com Metapost. 4 Ter 24/mai Exemplos com Gnuplot. 5 Ter 31/mai A herança de Pascal: escopo de variáveis em Fortran, Pascal, C e Python A herança de Modula­2: módulos, e o escopo de funções/sub­rotinas em Fortran, Pascal, C e Python. Import × #include. 6 Ter 7/abr Enfim Python: breve introdução à linguagem: tipos, variáveis. Armadilhas comuns para quem está acostumado com C/Fortran. Lists, Dictionaries e Sets. Functions e Classes. Tuples. Strings. Slicing. Declare um objeto no ponto em que você precisa dele. Funções: retorne tudo em Tuples. Argumentos: declare funções que funcionam com “qualquer tipo” de variável. 7 Ter 14/abr Leitura e escritura (Files), e controle de fluxo (ifs, loops). Else também existe em whiles e fors. Simulando switch com Dictionaries. Lendo por linhas, e separando os campos: o pão­ com­manteiga do processamento de dados, e muito melhor do que planilhas eletrônicas. 8 Ter 21/abr Juntando as ferramentas: Python+Gnuplot. Strings de múltiplas linhas. Abrir e fechar arquivos, e executar comandos. Usando Python para expandir Gnuplot com loops, leitura e escritura de variáveis. Exemplo com Séries de Fourier. Plotando arquivos em massa. 9 Ter 28/abr Juntando as ferramentas: Python + Numpy, Python + SciPy. Usando módulos pré­ compilados em C e Fortran (o melhor de 2 mundos). 10 Ter 05/mai Idéias simples em LaTeX: escrevendo pequenos documentos. As maneiras mais simples e úteis de modificar o visual. Não tente escolher onde vai a figura! As tabelas são a pior parte: usando booktabs e makecell para produzir tabelas com boa aparência, e bons antecedentes. 11 Ter 12/mai Noweb, e programação literária: documentando seus programas em qualquer linguagem. Escrevendo o manual junto com o programa. 12 Ter 19/mai Classes em Python, e uma forma de ressucitar os records de Pascal: programação orientada a objetos é útil em programação científica? A herança de uma base sexagesimal, e os detalhes que estragam gudo: tentando somar graus, minutos e segundos.