Fundamentos de Programação em C++
Apresentação da Disciplina e Objetivos
LEP01580 - Fundamentos de Programação em C++
Pré-requisito: Sem pré-requisito
Créditos: 4 (3 teóricos e 1 prático)
Carga Horária: 85h (3*17+2*17)
Horários das aulas
Formato - Aulas Online
Sala
Online - Google Meet e Youtube
Aulas disponibilizadas no Youtube
Equipamentos
Computadores com sistema operacional Gnu/Linux - Fedora (ou outra distribuição e/ou Windows/Mac OS X).
Compilador g++ da GNU.
Monitoria
Nome do monitor:
Atualmente sem monitor.
Horário de monitoria:
Objetivos
Ao final da disciplina saber/ter conhecimento de
Instalação de compilador.
Conceitos básicos de algoritmos.
Entrada e saída via teclado/terminal.
Estruturas de dados.
Estruturas de controle.
Estruturas de repetição.
Construir pequenos programas.
Resumo da Ementa
Parte I - Introdução ao Computador, Algoritmos e Programas (15h)
Parte II - Introdução à Programação com C++(20h)
Parte III - Projeto de Integração Numérica (8h)
Parte IV - Material Completar (8h)
Conteúdo Programático
1. Parte I: Introdução ao Computador, Algoritmos e Programas (15h)
1. Conceitos básicos de INFORMÁTICA
Três vídeos terceiros; ~1h.
2. Conceitos básicos de HARDWARE
Dez vídeos terceiros, ~ 3.35h.
3. Conceitos básicos de SOFTWARES
Quatro vídeos terceiros, ~1.24h.
4. Conceitos básicos de PARADIGMAS DE PROGRAMAÇÃO
Tr6es vídeos terceiros, ~0.4h.
5. Introdução à PROGRAMAÇÃO(2h.43m)
Porque aprender programação.
6. Introdução aos ALGORITMOS (HP15C) (3h.14min):
Exemplos de algoritmos aplicados em programas para calculadoras RPN.
7. Usando um programa em modo terminal (2h);
O software gnuplot.
8. Usando uma biblioteca (1h);
A biblioteca de acesso ao gnuplot.2. Parte II: Introdução à Programação com C++ (20h)
1. Porque estudar C++ - (1h.49min):
Oito vídeos falando de linguagens, incluindo C, C++.
2. Introdução à Programação em C++ (3h):
História, características e vantagens da linguagem.
3. Etapas de Edição, Pré-Processamento, Compilação e Linkagem. Compiladores e IDEs (2h.25min);
Mostra cada uma das etapas e apresenta o compilador g++ da GNU e algumas IDEs.
4. Conceitos Básicos de C++ (2h.32min):
Mostra as definições básicas da linguagem.
5. Usando Operadores de C++ (1h.35min):
Mostra os operadores e seu uso;
6. Usando Estruturas de Controle e Repetição (1h.45min)
Mostra as estruturas de controle e repetição e seu uso.
7. Usando Funções (40min + 1h.50min = 2h.30min):
Mostra os diferentes tipos de funções e seu uso.
8. Vetores 1D, Matrizes 2D e 3D; (2h):
Mostra os vetores 1D, 2D, 3D no formato de C e seu uso.
9. Entrada e saída para arquivos de disco; (2h):
Mostra conceitos básicos de entrada e saída de dados para um dispositivo(o disco rígido).3. Parte II: Projeto Integração Numérica - Parte Modelagem Estruturada (8h)
1. Projeto Integração - Introdução (48min):
Apresenta uma introdução/escopo do problema a ser resolvido, uma especificação resumida, a elaboração básica.
2. Projeto Integração - Versões 0.1 e 0.2 (1h.49min + 33min = 2h.22min):
Mostra a implementação mais direta usando apenas main().
Mostra versão com otimizações memória e velocidade processamento.
3. Projeto Integração - Versões 0.3 (45min), 0.4 e 0.4.2 + (50min):
Mostra o uso de função com parâmetros por cópia e uso de arquivo Makefile.
Mostra o uso de funções com parâmetros por cópia e referência.
Mostra o uso de função main com argc e argv.
4. Projeto Integração - v0.5 (49min), v0.5.1(1.25h) e v0.5.2 (2h):
Mostra generalização para integrar qualquer função usando ponteiro de função.
Mostra o uso básico de Qt, com diálogos simples.
Mostra o uso de vários arquivos; Mostra documentação com Javadoc/Doxygen; Mostra uso de alvos e criação de biblioteca em arquivo Makefile.4. Material Complementar
1. Vídeo Curso de C++ Completo (em inglês) (excelente!).
2. Vídeo Curso de C++ Completo (português).
3. Curso de C++17 (novidades de C++ 17) em Inglês.
4. Noções de standart C++ (Avançado).
5. Documentação de código - Clean Code, Funções matemáticas de <cmath>.Nota: Os alunos irão desenvolvimento códigos de programas usando os computadores do laboratório e de sua casa; Parte dos algoritmos/códigos serão aplicados a cálculo numérico - Projeto de integração com Trapézio/Simpson e/ou estatística e exemplos de engenharia.
Avaliações
Exercícios
O arquivo de apresentação de cada aula inclui uma seção exercícios. Os exercícios passados em uma semana devem ser entregues no primeiro dia de aula da próxima semana (de cada grupo de 3 exercícios o aluno é obrigado a fazer 1. Por exemplo: exercícios 1, 4, 7, 10, 13, etc).
Testes
Os testes são realizados no início da aula e tem duração de até 20 minutos.
Abordam temas já vistos e o material da aula presente. De cada 10 testes a pior nota é desconsiderada.
Provas
Duas provas teóricas.
Nas provas são incluídos pontos extras. Mas os pontos extras só serão contabilizados para quem passar na média final, isto é, primeiro calcula a média final, aqueles que passaram terão contabilizados os pontos extras.
Lista de Programas a Serem Utilizados
Material Extra
Material da disciplina (apresentação das aulas), material extra e fontes relacionadas a disciplina são disponibilizados aos alunos via compartilhamento do dropbox.
Site com Softwares:
Apostilas:
Apostila: Modelo de IC/MSC/DSC os arquivos para o modelo podem ser baixados no link Github.
Apostila: Calculadoras Científicas RPN Programáveis - Breve Histórico e Exemplos de Uso.
Veja na página de softwares desenvolvidos um emulador para calculadoras HP.
Apostila: Provas e Provas Resolvidas de C++ versão de 2018 (entre em contato para dados atuais).
Apostila: Metodologia Científica em Engenharia (versão bem preliminar em desenvolvimento, disponibiliza apenas para alunos).
Aulas que podem ser uteis:
Github:
Github do LDSC: https://github.com/ldsc
Exemplo Software modo terminal: Simulat - Simulador Transf. Calor e Massa em Telhas
Links úteis
Bibliografia
Veja lista de referências bibliográficas em: Bibliografia Programação
Nota importante:
Os alunos do curso de engenharia de petróleo da UENF fazem as disciplinas do ciclo básico na cidade de Campos, e a parte profissionalizante na cidade de Macaé. Em função da COVID19 e problemas associados os alunos ficaram sem a disciplina de FCC - Fundamentos de Ciências da Computação normalmente dada em Campos. Para ajudar os alunos foi criado um curso de verão, curso concentrado, em que foi ministrada esta disciplina. Na prática isto significa que o curso foi montado para ajudar nossos alunos e com o material e equipamento que foi possível utilizar.
Considero que o resultado ficou razoável, mas ainda estamos esperando a chegada de equipamentos, como filmadores/microfones/computador de melhor qualidade para que não ocorram problemas operacionais e técnicos durante a gravação das aulas.
Exemplo
No exemplo a seguir, extraído do site cppreference.com, temos o cálculo do polinômio de Legendre.
Exemplo
No exemplo a seguir, temos um extrato de código, a função calcula a autocorrelação de imagens usando múltiplas threads (processamento paralelo).