Programação C++ para Sistemas Embarcados
Semestre 2014/2
Cursos: Engenharia Elétrica, Engenharia Eletrônica, Engenharia de Controle e Automação, Engenharia de Produção Elétrica
Turmas: 08202
Código da disciplina: EEL7323
Carga horária: 72 horas-aula
Número de créditos: 4
Professores: Eduardo Augusto Bezerra
Horário das aulas
- Ter 18:00-21:30
Ementa
Conceitos Introdutórios, Paradigma de orientação a objetos, Classes, Estruturas de Dados, Encapsulamento, Herança, Polimorfismo, Tratamento de exceções, Templates, Entrada e Saída, Alocação de memória, Programação de Sistemas Embarcados.
Objetivos
O cumprimento da disciplina busca dar ao aluno, ao final do semestre, condições de:
- Dar continuidade aos estudos de programação de sistemas computacionais.
- Compreender os conceitos fundamentais do paradigma de programação orientada a objetos.
- Desenvolver a capacidade de análise de programas em C++ de complexidade baixa ou média.
- Entender o funcionamento básico de sistemas operacionais para acesso a periféricos.
- Desenvolver programas em C++ para sistemas embarcados baseados em microprocessadores e microcontroladores.
Metodologia
- O conteúdo programático será desenvolvido por meio de aulas expositivas com auxílio de recursos multimídia.
- Aulas teóricas e práticas, expositivas, com slides preparados a partir dos livros texto da disciplina
- Exercícios a serem resolvidos em aula e extra-classe pelos alunos
- Práticas, em laboratório, onde os alunos seguirão tutoriais fornecidos pelo professor com instruções para utilização de ferramentas e placas de desenvolvimento
- O material das aulas é disponibilizado na página da disciplina
- A plataforma Moodle é a ferramenta oficial da universidade e da disciplina para comunicação com os alunos e para entrega de trabalhos.
- Atendimento aos alunos em horário extra-classe visando esclarecer dúvidas pontuais e individuais
- Auxílio de monitor para esclarecer dúvidas
Avaliação
- Serão desenvolvidos trabalhos durante o semestre, que serão utilizados como base para a implementação do trabalho final.
- A nota final (NF) do semestre será a nota obtida na avaliação do trabalho final da disciplina.
- Condição para a aprovação:
- Freqüência > 75% e NF >= 6,0
Bibliografia
- Livro texto:
- Walter J. Savitch, “C++ absoluto”, Addison Wesley, 2004 ISBN 85-88639-09-2. Disponível na biblioteca da UFSC em “Livros Eletrônicos”. Título original: Absolute C++.
- Bibliografia complementar:
- H. M. Deitel e P. J. Deitel, C++: como programar, São Paulo: Pearson Prentice Hall, 2006. ISBN 85-7605-056-0 – Disponível na biblioteca da UFSC em “Livros Eletrônicos”. Título original: C++ How to Program.
- Victorine V. Mizrahi, Treinamento em Linguagem C++: módulo 1, Makron Books, 2007. ISBN 9788534602907 – Disponível na biblioteca da UFSC em “Livros Eletrônicos”.
- Victorine V. Mizrahi, Treinamento em Linguagem C++: módulo 2, Makron Books, 2007. ISBN 9788534603034 – Disponível na biblioteca da UFSC em “Livros Eletrônicos”.
- Herb Sutter, Programação avançada em C++, Pearson Makron Books, 2006. ISBN 85-346-1545-4 – Disponível na biblioteca da UFSC em “Livros Eletrônicos”. Título original: Exceptional C++ Style.
- Richard C. Lee; William M. Tepfenhart, UML e C++ – Guia Prático de Desenvolvimento Orientado a Objeto, Makron Books, ISBN 85-346-1364-8 – Disponível na biblioteca da UFSC em “Livros Eletrônicos”.. Título original: UML and C++ – A Practical Guide to Object-Oriented Development.
- B. Stroustrup, The C++ Programming Language. Reading: Addison-Wesley, 1997.
- W. Wolf, Computer as Components – Principles of embedded computing system design, Morgan Kaufmann Publishers, 2000.
- L. Lavagno, UML for real design of embedded real-time systems, Kluwer Academic, 2003.
- Christopher Hallinan, Embedded Linux Primer, Prentice Hall, 2007.
Equipe de apoio
- Paulo Villa – email: prcvilla AT gmail com
Trabalho prático
- Especificação do Trabalho Final: “a ser definido”
- Data da entrega e apresentações: /12/2014
Organização das aulas
Aula | Data | Conteúdo |
1 | 12/08 |
|
2 | 19 / 08 |
|
3 | 26 / 08 |
|
4 | 02 / 09 |
|
5 | 09 / 09 |
|
6 | 16 / 09 |
|
7 | 23 / 09 |
|
8 | 30 / 09 |
|
9 | 07 / 10 |
|
10 | 14 / 10 |
|
11 | 21 / 10 |
|
12 | 28 / 10 |
|
13 | 04 / 11 |
|
14 | 11 / 11 |
|
15 | 18 / 11 |
|
16 | 25 / 11 |
|
17 | 02 / 12 |
|
18 | 09 / 12 |
|
Material de apoio
- [1] Notas de aula C++ Prof. Eduardo Bezerra – herança, herança múltipla, classes virtuais, funções virtuais, funções friend, classes abstratas, sobrecarga de funções, sobrecarga de operadores, polimorfismo, template, GUI.
- [2] Notas de aula “Classes” Prof. Eduardo Bezerra – Classes e objetos em C++
- [3] “Ponteiros” Prof. Eduardo Bezerra – “Ponteiros” e exemplos
- [4] “Strings” – material sobre strings em C++
- [5] “Strings – getline” – Dica para ler strings com espacos em C++
- [6] Tutorial introdução Linux/C++ “Hello World!” - Primeira aula prática!
- [7] Estrutura de um programa
- [8] Variáveis e definições
- [9] Operadores
- [10] Controle do fluxo da execução de um programa
- [11] Funções
- [12] Structs e Classes
- [13] Exercícios – possível solução para o exercício 5
- [14] Objetos
- [15] Classes
- [16] Abstração
- [17] Encapsulamento
- [18] Classes e construtores
- [19] Exercícios sobre classes e objetos
- [20] Material sobre linux – Comandos mais usados em uma página; Comandos básicos; Resumo dos comandos básicos; Exercícios
- [Arquivos] – material sobre arquivos em C++
- [Bibliotecas padrão] – Resumo das bibliotecas padrão do C++
- [Pilha] – uma classe “Pilha” para armazenar dados genéricos
- [Fila] – uma classe “Fila” para armazenar dados genéricos
- [Lista] – uma classe “Lista” para armazenar dados genéricos
- [Lista encadeada] – exemplo de lista encadeada genérica, armazenando alunos, professores, …
- [Árvores] – Nodo para construção de árvores binárias (de inteiros): Nodo_arvoreb.h e Nodo_arvoreb.cpp. Classe para criação e manipulação de Árvore Binária de Pesquisa utilizando Nodo_arvoreb.h: ABP.h, ABP.cpp e testeABP.cpp.
- [Standard Template Library – STL] – Tutorial STL – Exemplo de vector, com métodos disponíveis, e comparação com list
- Aplicações exemplo:
- Classe SystemUser (ler antes o arquivo README.txt)
- Classe Racional (solução)
- Herança bastante simples: (Pessoa.cpp, Aluno.cpp, main.cpp)
- Herança: (Heranca)
- Agregação: (Agregacao)
- Herança: (Sistema Bank Account)
- Exemplo/exercício de herança: ex_heranca.cpp, mmamals.cpp, e vmammals.cpp