1002770 1 1 4.5 pt
Importância central: Conhecimento genérico do funcionamento de um computador e da representação de dados em formato digital.
Capacidade de equacionar a resolução de um problema sobre a forma de um algoritmo. Conhecimento dos paradigmas da programação imperativa, funcional e por objetos e capacidade operacional de programação numa linguagem de programação de muito alto nível (Python).
Importância secundária: Capacidade para procurar e utilizar bibliografia e ferramentas de software adequadas usando a internet.
Conhecimento operacional de algoritmos básicos de análise numérica aplicados a situações simples da física.
Capacidade para realizar, em grupo, e de forma modular, pequenos projetos de software.
O modelo de von Neumann do computador digital. Arquitetura de um computador moderno.
Representação digital de dados. Códigos binários para representação de inteiros, reais (vírgula flutuante), caracteres (ASCII, unicode), imagem e som.
Operações numéricas sobre dados binários. Processadores. Funcionamento de um CPU. Linguagens de programação. Sistemas operativos.
Introdução à linguagem de programação Python.
A instrução de atribuição. Aliasing". Noção de ponteiro.
Tipos numéricos: inteiros, inteiros longos, números em vírgula flutuante e complexos. Sequências (listas, tuplas e sequências de caracteres). Booleanos e operações sobre booleanos. Iteração sobre sequências e operações de fatiagem.
Abrangências. Dicionários.
Instruções de controlo de fluxo.
Funções. Espaço dos nomes e regras de alcance. Mecanismo de passagem de argumentos e devolução de valores.
Programação funcional e imperativa.
Módulos. Ferramentas de introspecção e metaprogramação.
Ficheiros. Formatação. Redirecção dos canais de fluxo de entrada e saída.
Exceções. As instruções raise e try..except..finally.
Programação orientada por objetos. Noção de classe e instâncias de classe.
Atributos e métodos. Herança, encapsulamento e polimorfismo. Sobrecarga de operadores.
Recursão. Iteradores e geradores.
Aplicações em Análise Numérica aplicada a problemas de Física.
Resolução de equações não-lineares.
Interpolação de Lagrange.
Ajuste de curvas por mínimos quadrados.
Derivação e integração numérica.
Resolução de equações diferenciais ordinárias (aplicações: equações do decaimento radioativo, osciladores, projéteis, movimento planetário, etc.).
Método de Monte-Carlo (aplicações simples).
d_10> Computadores e Programação ‹ voltar ao plano de estudos Ano lectivo 2012-2013
aulas práticas laboratoriais 60
concretização da avaliação em 20122013
Projecto: 30.0%
GUIDO van ROSSUM. Tutorial de Python.
LUTZ, M.; ASCHER, D. Learning Python. O'Reilly
DOWNEY, A.; ELKNER, J. & MAYERS, C. How to think like a computer scientist. Green Tee Press.
KIUSALAAS, J. Numerical methods in engineering with Python. Cambridge University Press.
MARUCH, S.; MARUCH, A. Python for dummies. Wiley.
O ensino desta disciplina é teórico-prático, com grande ênfase na compreensão e desenvolvimento de algoritmos para problemas concretos, incluindo uma primeira abordagem a algumas ferramentas de análise numérica aplicada a problemas simples de física.