Curso em Vídeo
Fundamentos de Programação em C++
Apresentação do Curso e Objetivos
História do Curso
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 eu criei um curso de verão, em formato concentrado, em que foi ministrada a disciplina "Fundamentos de Programação em C++" que deu origem a este curso em vídeo.
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.
A primeira aula foi gravada usando o Google Classroom. Como a qualidade ficou no formato VGA, as demais aulas foram gravadas usando outras ferramentas, o que melhorou a qualidade para HD.
Em algumas aulas você vai ouvir latidos de doguinhas e barulhos eventuais.
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.
Sobre o curso
Para detalhes da disciplina e sua ementa acesse: LEP01579 - Fundamentos de Programação em C++
Equipamento utilizado para gravar as aulas
Notebook Dell-Inspiron-7580-i7 16gb de memória ram
Computadores com sistema operacional Gnu/Linux - Fedora.
Softwares utilizados
Compilador g++ da GNU.
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.
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
Três 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.
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.
Lista de Programas a Serem Utilizados
Sistema operacional
GNU/Linux - Fedora.
Modelagem UML
Gestão de projetos
Trello, GTD
Documentação - manuais.
Controle de versões (acesso ao repositório de programas)
Edição de projetos (editor)
IDEs
Bibliotecas
Bibliotecas de IA - Inteligência Artificial.
Site referência
Visualizadores
evince.
ggv, gv.
acroread (leitor pdf - manuais internet).
Gráficos
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
Disponibilizamos o curso no Youtube - acesse a playlist aqui.
Aula 00 - Apresentação do Curso
Neste vídeo uma apresentação geral do curso
Aula 01 - Introdução à Programação - Porque Aprender Programação (2h.43m)
Título: Fundamentos de Programação em C++ 01: Introdução à Programação - Porque Aprender Programação (2h.43m)
Conteúdo:
O que são programas/softwares.
Porque programar?
Licenças de programas.
Classificação dos programas/softwares.
Softwares de base e aplicados.
Classificação quanto a visão do programador: Compilado/interpretado, paradigmas de programação, alto nível e baixo nível, desempenho, serial/concorrente/paralelo.
Classificação quanto a visão do usuário: kernel numérico, interface em linha de comando, interface iterativa, alternando terminal e janela gráfica, terminal e janela gráfica simultânea, somente gráfica.
Que tipo de software devo desenvolver.
Aula 02 - Introdução aos Algoritmos (HP15C) (3h.14min)
Título: Fundamentos de Programação em C++ 02: Introdução aos Algoritmos (HP15C) (3h.14min)
Conteúdo:
O que são algoritmos?
Classificação dos algoritmos.
Notação prefixa, posfixa e reversa
Aplicação com calculadoras - HP15C (dados da calculadora e exemplos práticos de algoritmos/programas)
Aula 03 - Introdução à Programação em C++ (3h)
Título: Fundamentos de Programação em C++ 03: Introdução à Programação em C++ (3h)
Conteúdo:
Porque C++?
Um pouco de história (exemplo de programa em linguagem B, C, C++).
Características da linguagem.
O padrão internacional ANSI ISO C++.
As versões mais recentes de C++11, C++14, C++17, C++20.
O que é "Modern C++?"
Diferenças nomenclatura C++ - POO
Aula 04 - Etapas de Edição, Pré-Processamento, Compilação e Linkagem. Compiladores e IDEs (2h.25min)
Título: Fundamentos de Programação em C++ 04: Etapas de Edição, Pré-Processamento, Compilação e Linkagem. Compiladores e IDEs (2h.25min)
Conteúdo:
Etapas de edição, pré-processamento, compilação e linkagem.
Compiladores e IDEs.
Debuggers e profilers.
Compilador g++ da GNU e compiladores online.
Ambiente de desenvolvimento integrado - IDEs: para Windows, GNU/Linux e Mac OS X.
Código obsoleto.
Aula 05 - Conceitos Básicos de C++ (2h.32min)
Título: Fundamentos de Programação em C++ 05: Conceitos Básicos de C++ (2h.32min)
Conteúdo:
Sintaxe de C++.
Palavras chave de C++.
Declarações e definições.
Exemplos de uso da função main, uso de cout, cin.
Declarações e escopo.
Uso de espaço de nomes std::.
Exemplo de uso de diretriz de pré-processamento.
Aula 06 - Usando Operadores de C++ (1h.35min)
Título: Fundamentos de Programação em C++ 06: Usando Operadores de C++ (1h.35min)
Conteúdo:
Mostra os operadores de C++ e vários exemplos de uso.
Operadores aritméticos, de atribuição, compostos, relacionais, lógicos, condicional.
Operadores incremento e decremento, vírgula, módulo %, resolução de escopo, de bits, strong_ordering <=>.
Estes veremos depois: size_t, sizeof, typedef, typeid, new, delete
Aula 07 - Usando Estruturas de Controle e Repetição (1h.45min)
Título: Fundamentos de Programação em C++ 07: Usando Estruturas de Controle e Repetição (1h.45min)
Conteúdo:
Uso das estruturas de controle:
if(), if()...else, if()..else if()..else,
if constexpr(), switch() cas, operador?.
Uso das estruturas de repetição:
for(), while(), do{..}while(), break, continue,
for(auto...), for_each().
Aula 08 - Usando Funções (40min)
Título: Fundamentos de Programação em C++ 08: Usando Funções (40min)
Conteúdo:
Veremos o protótipo de funções, declaração e definição e alguns exemplos.
A seguir apresentamos:
- O uso de funções da biblioteca padrão.
- Funções recursivas.
- Funções inline.
Aula 09 - Usando Funções - continuação (1h.50min)
Título: Fundamentos de Programação em C++ 09: Usando Funções - continuação (1h.50min)
Conteúdo:
Funções com parâmetros pré-definidos.
Funções a passagem de parâmetros por cópia, referência e ponteiro.
Apresentaremos novamente a função main(), agora descrevendo como obter informações a partir dos dados digitados na linha de comando.
Exemplo de processamento dos parâmetros de main() com uso da função getopt().
Veremos ainda algumas novidades de C++ moderno como funções lambda, uso de bind, novo formato de funções, o uso de function, e o uso de elipse "...".
Aula 10 - Conceito de Tipos - Tipos padrões da linguagem (2h)
Título: Fundamentos de Programação em C++ 10: Conceito de Tipos - Tipos padrões da linguagem (2h)
Conteúdo:
Neste capítulo veremos uma introdução ao conceito de tipos: o que é um tipo.
O uso dos tipos predefinidos de C++, incluindo o consumo de memória e valores limites dos tipos predefinidos, exemplos de uso de caracteres, números inteiros, flutuantes e unsigned.
Usando sufixos para os tipos predefinidos, o uso de e sentenças para uso de tipos predefinidos.
Aula 11 - Conceito de Tipos - Tipos do programador (1h.51min)
Título: Fundamentos de Programação em C++ 11: Conceito de Tipos - Tipos do programador (1h.51min)
Conteúdo:
A definição de tipos do usuário:
Uso de vetores no estilo de C.
Estruturas.
Uniões.
Enumerações.
Classes.
Aula 12 - Conceito de Tipos - Tipos da biblioteca padrão (1h.51min)
Título: Fundamentos de Programação em C++ 12: Conceito de Tipos - Tipos da biblioteca padrão (1h.51min)
Conteúdo:
Os tipos definidos em bibliotecas externas.
Uma introdução aos gabaritos - template.
Uma introdução a biblioteca stl de C++.
A classe vector.
A classe string.
Aula 13 - Entrada e Saída (1h.52min)
Título: Fundamentos de Programação em C++ 13: Entrada e Saída (1h.52min)
Conteúdo:
Iniciamos com uma introdução à entrada e saída de dados.
Em seguida apresentamos a biblioteca-padrão para entrada e saída de dados.
A classe ios_base.
Os manipuladores de <iomanip>.
A classe <ios>.
A classe <ostream>.
A classe <istream>.
As classes istringstream e ostringstream.
Aula 14 - Projeto Integração - Introdução (48min)
Título: Fundamentos de Programação em C++ 14: Projeto Integração - Introdução (48min)
Conteúdo:
Projeto Integração - Introdução ao projeto.
Neste projeto veremos a implementação de um código em C++ que realiza o cálculo de integrais.
Veremos várias versões do mesmo código, a cada nova versão iremos explicar as diferentes e quais novidades de C++ estão sendo utilizadas.
Desta forma daremos um apanhado geral dos conceitos básicos de C++.
Aula 15 - Projeto Integração - Versão 0.1 (1h.09min)
Título: Fundamentos de Programação em C++ 15: Projeto Integração - Versão 0.1 (1h.09min)
Conteúdo:
Projeto Integração:
– Código no estilo de C, mas usando conceitos de C++, como cin/cout; Uso de std:: ;
– Tudo dentro da função int main();
Aula 16 - Projeto Integração - Versão 0.2 (33min)
Título: Fundamentos de Programação em C++ 16: Projeto Integração - Versão 0.2 (33min)
Conteúdo:
Projeto Integração:
Todos os códigos dentro de main(), otimização memória, tempo processamento.
Uso do programa make e do arquivo Makefile
Nesta versão declaramos as variáveis perto de onde serão utilizadas.
Esta é uma das características que diferenciou C++ de C.
A vantagem é que além de economizar memória (o objeto é criado apenas quando vai ser usado), deixa o código mais claro.
Código semi estruturado - Usando uma função.
Aula 17 - Projeto Integração - Versão 0.3 (44min)
Título: Fundamentos de Programação em C++ 17: Projeto Integração - Versão 0.3 (44min)
Conteúdo:
Projeto Integração:
Parte do código que calcula a integral foi separada e colocada na função AreaFuncao2G.
A função AreaFuncao2G recebe os parâmetros por cópia.
Note que estamos começando a usar conceitos do paradigma de programação estruturada, em que os códigos são organizados em funções.
Note que ainda temos mistura do código do método de integração com código da função específica.
Aula 18 - Projeto Integração - Versão 0.4 (50min)
Título: Fundamentos de Programação em C++ 18: Projeto Integração - Versão 0.4 (50min)
Conteúdo:
Projeto Integração:
Código estruturado - Usando duas funções.
Em relação a versão anterior parte do código que calcula a função do segundo grau foi separada da função que calcula a Área.
Código estruturado - Usando duas funções.
Aula 19 - Projeto Integração - Versão 0.5 (48min)
Título: Fundamentos de Programação em C++ 19: Projeto Integração - Versão 0.5 (48min)
Conteúdo:
Projeto Integração:
Uso do conceito de ponteiro para funções.
Generaliza a possibilidade de cálculo da integral com funções da biblioteca padrão.
Aula 20 - Projeto Integração - Versão 0.5.1 (1h.25min)
Título: Fundamentos de Programação em C++ 20: Projeto Integração - Versão 0.5.1 (1h.25min)
Conteúdo:
Projeto Integração:
– Código estruturado usando funções e ponteiro de função para acessar a função matemática a ser integrada.
– Uso de vários arquivos de disco.
Aula 21 - Projeto Integração - Versão 0.5.2-Qt (1h.59min)
Título: Fundamentos de Programação em C++ 21: Projeto Integração - Versão 0.5.2-Qt (1h.59min)
Conteúdo:
Projeto Integração:
Uso de diálogos da biblioteca Qt para entrada de dados.
Nesta versão o que muda é a forma de interação do usuário com o programa, pois o mesmo disponibiliza diálogos de Qt para entrada de dados.
Criamos objetos derivados do tipo QDialog.
Usamos os objetos criados.
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).