Disciplina: FSC1189 - Algoritmo e Programação
Professor: Prof. Hans Rogério Zimermann
Instituição: Universidade Federal de Santa Maria (UFSM)
Centro: Centro de Ciências Naturais e Exatas (CCNE)
Departamento: Departamento de Física
Semestre: 2026/1
Carga Horária: 60 horas (16 semanas)
Este repositório utiliza dupla licença:
| Material | Licença | Observações |
|---|---|---|
Código-fonte (notebooks .ipynb, scripts Python) |
MIT License | Implementações, algoritmos, exercícios resolvidos |
| Conteúdo Didático (apostila, listas, guias) | CC BY 4.0 | Apostila, GUIA_DEBUGGING, Plano de Ensino, Listas |
Atribuição: Prof. Hans Rogério Zimermann, UFSM, 2026
Para mais detalhes, consulte LICENSE (MIT) e LICENSE_CC.md (Creative Commons).
Este material completo fornece uma formação em Algoritmos e Programação orientada para licenciandos em Física, com ênfase em aplicações práticas e contextualizadas na disciplina.
Formato: Markdown (90 páginas)
Conteúdo: 10 capítulos didáticos cobrindo:
- Capítulo 1: Introdução a Algoritmos
- Capítulo 2: Lógica de Programação
- Capítulo 3: Variáveis e Tipos de Dados
- Capítulo 4: Estruturas de Controle
- Capítulo 5: Estruturas de Repetição
- Capítulo 6: Vetores e Matrizes
- Capítulo 7: Funções e Procedimentos
- Capítulo 8: Métodos Numéricos em Física
- Capítulo 9: Tratamento de Dados e Visualização
- Capítulo 10: Projetos Integrados em Física
Características:
- ✅ Exemplos em Português Estruturado (Portugol) para VisualG
- ✅ Fórmulas em MathJax para melhor visualização matemática
- ✅ Contextualizações com fenômenos físicos reais
- ✅ Tom técnico e profissional
- ✅ Orientado para alunos com base em cálculo e física
Como usar:
- Leia a apostila sequencialmente
- Execute os exemplos em VisualG (disponível gratuitamente)
- Compare com as implementações em Python nos notebooks
Jupyter Notebook com exercícios dos Capítulos 1-3
Exercícios inclusos:
-
1.1: Cálculo de Trajetória de Projétil
- Resolução analítica
- Código Python com NumPy
- Visualização da trajetória
-
2.1: Análise de Movimento com Operadores Lógicos
- Classificação automática de movimentos
- Tabelas de teste
-
3.1: Validação de Dados Experimentais
- Verificação de medidas dentro de tolerância
- Gráficos de validação
-
3.2: Conversor de Temperatura
- Funções reutilizáveis
- Múltiplas conversões
Exercícios Propostos:
- Energia Potencial Gravitacional
- Lei de Coulomb
Como usar:
# Abrir em Jupyter Notebook
jupyter notebook notebooks/01_Conceitos_Basicos.ipynb
# Ou em Google Colab
# Faça upload do arquivo e executeJupyter Notebook com exercícios dos Capítulos 4-6
Exercícios inclusos:
-
4.1: Classificação de Estados de Matéria
- Estruturas condicionais
- Funções com retorno
-
5.1: Tabela de Queda Livre
- Loops com range
- Uso de pandas
- Gráficos com matplotlib
-
5.2: Série de Leibniz para π
- While loops
- Análise de convergência
- Gráficos de convergência
-
6.1: Produto Escalar
- Operações com vetores
- Casos de teste
-
6.2: Matriz de Coordenadas
- Matrizes NumPy
- Visualização 3D
Exercícios Propostos:
- Validação Repetida de Entrada
- Soma de Vetores
Notas Importantes:
- Usa bibliotecas: NumPy, Pandas, Matplotlib
- Visualizações profissionais
- Análise de erros e convergência
Jupyter Notebook com exercícios dos Capítulos 7-10
Exercícios inclusos:
-
7.1: Módulo de Funções Físicas
- Cálculo de energias (cinética, potencial, mecânica)
- Cálculo de trabalho
-
8.1: Método da Bisseção
- Encontrar raízes de equações
- Análise de convergência
-
8.2: Diferenciação Numérica
- Diferenças finitas
- Comparação de métodos
- Análise de precisão
-
8.3: Integração Numérica
- Regra do Trapézio
- Convergência do método
-
10.1: Projeto - Análise de Pêndulo Simples
- Dados experimentais
- Regressão linear
- Estimação de g
-
10.2: Projeto - Queda com Arrasto
- Equações diferenciais
- Simulação numérica
- Velocidade terminal
Exercícios Propostos:
- Lei de Coulomb Numérica
- Oscilador Harmônico Amortecido
Bibliotecas usadas:
- NumPy, Pandas, Matplotlib
- SciPy (odeint, fsolve)
- Visualização 3D
Jupyter Notebook dedicado à simulação de circuito RC (Capítulo 10.3)
Exercícios inclusos:
- 10.3: Projeto — Circuito RC
- Equação diferencial:
$V_C(t) = V_0(1 - e^{-t/RC})$ - Simulação da carga e descarga do capacitor
- Análise da constante de tempo
$\tau = RC$ - Visualização da curva de tensão
- Equação diferencial:
Exercícios Propostos:
- Variação de R e C e seus efeitos na constante de tempo
- Comparação analítica × numérica
Bibliotecas usadas:
- NumPy, Matplotlib
- SciPy (odeint)
Jupyter Notebook com exercícios do Capítulo 9
Exercícios inclusos:
-
9.1: Estatísticas descritivas
- Média, variância, desvio padrão
- Detecção de outliers (
$3\sigma$ )
-
9.2: Interpolação de dados
- Interpolação linear entre pontos experimentais
- Estimativa de valores intermediários
-
9.3: Visualização avançada
- Histogramas e gráficos de dispersão
- Curvas de ajuste com Matplotlib
Exercícios Propostos:
- Análise estatística de medidas de laboratório
- Regressão linear com estimativa de incerteza
Bibliotecas usadas:
- NumPy, Pandas, Matplotlib
- SciPy (interpolate, stats)
Jupyter Notebook de projeto integrador final (Capítulos 1-10)
Conteúdo:
-
Integração de todos os conceitos da disciplina:
- Algoritmos, estruturas de controle e repetição
- Métodos numéricos aplicados
- Tratamento e visualização de dados
-
Simulação física completa com múltiplos componentes
-
Documentação profissional de código
-
Análise e comunicação de resultados
Objetivo: Demonstrar domínio completo da disciplina em um projeto autônomo de simulação física.
Bibliotecas usadas:
- NumPy, Pandas, Matplotlib
- SciPy, e outras conforme o projeto
Pasta: listas/
Conteúdo: 7 listas cobrindo todo o programa da disciplina:
- L01: Algoritmos e Lógica — Pensamento computacional e fluxogramas.
- L02: Variáveis e Controle — Tipos de dados e estruturas SE-SENÃO.
- L03: Estruturas de Repetição — Loops PARA e ENQUANTO.
- L04: Vetores e Matrizes — Manipulação de arrays multidimensionais.
- L05: Funções e Métodos Numéricos — Modularização e raízes/integração.
- L06: Dados e Visualização — Pandas e Matplotlib aplicados.
- L07: Projetos Integrados — Problemas complexos de Física.
| Semana | Capítulos | Atividades | Avaliação |
|---|---|---|---|
| 1-2 | 1-3 | Lab em VisualG; trajetória de projétil | — |
| 3 | 3-4 | SE-SENÃO; validação de dados | — |
| 4 | 4 | Revisão; exercícios integrados | P1 |
| Semana | Capítulos | Atividades | Avaliação |
|---|---|---|---|
| 5 | 5 | Loops PARA; tabelas de queda livre | — |
| 6 | 5 | ENQUANTO; série de Leibniz; convergência | Lista 3 |
| 7 | 6 | Vetores; produto escalar; visualização 3D | — |
| 8 | 5-6 | Revisão módulo 2 | P2 |
| Semana | Capítulos | Atividades | Avaliação |
|---|---|---|---|
| 9 | 7 | Funções; escopo; módulos | — |
| 10 | 8 | Bisseção; diferenciação numérica | Lista 5 |
| 11 | 8 | Euler; integração numérica; circuito RC | P3 |
| 12 | 9 | Análise estatística; regressão linear | Projeto 1 |
| Semana | Capítulos | Atividades | Avaliação |
|---|---|---|---|
| 13 | 10 | Simulação dinâmica; pêndulo | — |
| 14 | 10 | Big-O empírico; oscilador amortecido | Lista 7 |
| 15 | 10 | Projeto Capstone integrado | Projeto 2 |
| 16 | 1-10 | Revisão geral | Prova Final |
Consulte PLANO_DE_ENSINO_16_SEMANAS.md para cronograma detalhado.
- VisualG (gratuito)
- Download: https://www.visualg.com.br
- Compatível com Windows, Linux, macOS
# Instalar dependências
pip install numpy pandas matplotlib scipy jupyter
# Ou usar Anaconda (recomendado)
conda install numpy pandas matplotlib scipy jupyter
# Ou usar Google Colab (sem instalação)
# https://colab.research.google.comjupyter notebook notebooks/01_Conceitos_Basicos.ipynb- Acesse https://colab.research.google.com
- Clique em "Arquivo" → "Abrir notebook"
- Selecione a guia "Upload"
- Faça upload do arquivo .ipynb
- Instale a extensão Jupyter no VS Code
- Abra o arquivo .ipynb
- Execute as células
- Estude o conceito primeiro: Leia a apostila
- Veja exemplos: Execute os códigos em VisualG
- Compare linguagens: Veja a mesma solução em Python
- Experimente: Modifique os códigos e observe o resultado
- Pratique: Solva os exercícios propostos
- Estude a matemática: Entenda a fórmula e a derivação
- Implemente do zero: Não apenas copie
- Teste convergência: Varie parâmetros
- Visualize: Use gráficos para entender o comportamento
- Resgate conceitos físicos: De cálculo e mecânica
- Valide resultados: Compare com soluções analíticas
- Use dados reais: Quando possível
- Analise erros: Entenda fontes de erro
-
Algoritmos em VisualG — Laysarielly (GitHub): https://github.com/laysarielly/visualg-algoritmos/tree/master/Algoritmos
- Coleção de algoritmos em Portugol para VisualG
- Exemplos práticos e exercícios comentados
- Útil como referência e inspiração para os exercícios da disciplina
-
PortalFísica: https://www.portalfisica.com
- Recursos didáticos em Física
- Problemas e simulações
-
NumPy Documentation: https://numpy.org/doc/
- Referência completa
- Tutoriais
-
SciPy Documentation: https://docs.scipy.org/
- Métodos numéricos avançados
- Otimização e integração
- "Numerical Methods for Physics and Engineering" - Guazzelli & Luca
- "Python for Data Analysis" - Wes McKinney
- "Introduction to Scientific Computing" - Marcus Recktenwald
Após completar este material, você estará preparado para:
- ✅ Implementar algoritmos em múltiplas linguagens
- ✅ Resolver problemas físicos numericamente
- ✅ Analisar e visualizar dados experimentais
- ✅ Usar programação como ferramenta de pesquisa
- ✅ Comunicar resultados com clareza
-
Simulação de Sistema Solar
- Integração numérica de órbitas
- Visualização 3D
- Conservação de energia
-
Análise de Dados Experimentais
- Ajuste de curvas
- Estimação de parâmetros
- Análise de incertezas
-
Simulação de Dinâmica Molecular
- Potencial de Lennard-Jones
- Integração de trajetórias
- Propriedades termodinâmicas
-
Processamento de Imagens em Física
- Análise de microscopia
- Detecção de características
- Quantificação
Para dúvidas sobre:
- Conceitos de Programação: Consulte os notebooks com exercícios resolvidos
- Sintaxe Portugol/VisualG: Revise os exemplos na apostila
- Métodos Numéricos: Estude os notebooks 03 com análise detalhada
- Aplicações Físicas: Relacione com conceitos de cálculo e mecânica
Este material foi desenvolvido para fins educacionais na Universidade Federal de Santa Maria.
Recomendações:
- Use e compartilhe livremente
- Cite a fonte apropriadamente
- Contribua com melhorias e correções
Ao completar este material, você deve ser capaz de:
- Entender o conceito de algoritmo e sua importância
- Escrever e compreender pseudocódigo
- Implementar código em Português Estruturado
- Usar estruturas de controle efetivamente
- Trabalhar com vetores e matrizes
- Criar e usar funções reutilizáveis
- Implementar métodos numéricos básicos
- Resolver equações numericamente
- Integrar e diferenciar numericamente
- Analisar dados experimentais
- Visualizar dados com gráficos
- Simular sistemas físicos
- Validar e comparar resultados
Última atualização: Abril de 2026
Versão: 1.0