Basic Cpp Course (2007.1)
From EmbeddedAcademy
Professor (Professor)
Instrutores (Lecturers)
Carga Horária
- 2 Créditos
- 30 Horas
Ementa do Curso (Summary)
- Aula 1 (29/05/07)
- Características da linguagem C
- Sistemas de tipos
- Variáveis e operadores
- Estruturas de controle
- Aula 2
- Funções
- Vetores
- Strings
- Aula 3
- Introdução aos Ponteiros
- Ponteiros
- Funções
- Diretivas de compilação
- Aula 4 (19/06/07)
- Alocação Dinâmica de Memória em C
- Entrada e Saída em C
- Aula 5
- Tipos avançados de dados
- Estruturas
- Uniões
- Enumerações
- Arquivos cabeçalho
- Tipos avançados de dados
- Aula 6
- Introdução a linguagem C++
- Declaração de Classes
- Alocação dinâmica
- Extra
- Code documentation in C++
- Aula 7
- O ponteiro this
- Overload de operadores
- Membros estáticos
- Friends
- Herança
- Aula 8
- Métodos virtuais
- Classes abstratas
- Templates
- Aula 9
- Namespaces
- Exceções
- Casts
- O operador typeid
- Entrada e Saída
- Extra
- Unit Tests in C++
- Aula 10
- Visão geral da STL
- Algumas classes da STL: vector basic_string, queue, stack, set, const_iterator e map
- Extra
- Linux Socket Programming In C++
Pré-requisitos (Prerequisite)
- Noções de Orientação a Objetos.
Metodologia (Methodology)
Aulas expositivas e programação em sala de aula.
Avaliação (Evaluation)
- Exercícios
- 1 prova
- 1 projeto [1]
Bibliografia (Bibliography)
- The C Programing Language
- Brian W. Kernighan
- Dennis M. Ritchie
- The C++ Programiming Language, Bjarne Stroustrup
- C Completo e Total
- Qualquer livro de C++ que você quiser
Local e Hora (Local and Hour)
- Horário: segunda a sexta (18:30)
- Local: Bloco Embedded.
Calendário (Calendar)
- 29/05/2007 - Início das aulas
- 07/07/2007 - Prova
- 07/07/2007 - Último dia para entrega dos exercícios
- 07/07/2007 - Data Limite para a definição dos grupos para o projeto
Dúvidas e Discussão
- DiscussaoCursoCpp
- Lista de Discussão PLC 07.1
Apresentações (Presentations)
- Aula 1 (Versão em pdf)
- Aula 2
- Aula 3
- Aula 4 (Versão em pdf)
- Aula 7
- Aula 8
- Aula 9
- Aula 10
- Extra: Code Documentation in C++
- Extra: Linux Socket Programming In C++
- Extra: Gtkmm
Apresentações do curso anterior
- Aula 1 (Versão em pdf)
- Aula 2
- Aula 3
- Aula 4 (Versão em pdf)
- Aula 5
- Aula 6
- Aula 7
- Aula 8
- Aula 9
- Aula 10
- Extra: Code Documentation in C++
- Extra: Unit Tests in C++ - Sample implementation
- Extra: Linux Socket Programming In C++
- Extra: Gtkmm
Exercícios (Exercises)
Aula 1:
- 1- Escreva um programa para calcular as raízes
equação do segundo grau.
gcc raiz.c -o raiz -lm
- 2- Encapsule o programa anterior em uma função
recebe como parâmetros os valores de a, b e c.
- 3- Escreva um programa que inverta o sinal de
numero inteiro usando complemento de 2.
Aula 2:
- 4- Escreva um programa que lê strings do teclado até que duas strings iguais sejam digitadas consecutivamente. A saída é a concatenação de todas as strings lidas e os tamanhos da maior a da menor.
- 5- Faça um programa que calcula o determinante de uma matriz 2*2. O usuário entra com a matriz e o programa imprime o determinante na tela.
- 6- Crie uma função chamada swap que recebe os dois ponteiros para inteiros como parâmetro inverte seus conteúdos.
Aula 3:
- 7- Implemente as seguintes funções:
int mystrlen(char *c)
retorna o tamanho da string c
void mystrcpy(char *dest, char *orig)
copia orig para dest
void mystrcat(char *dest, char *orig)
concatena orig em dest
int mystrchar(char *str, char c)
Retorna o índice onde c ocorre em str
Declare um ponteiro para uma das funções que você fez neste exercício e chame-a utilizando o mesmo.
- 8-Crie as seguintes macros:
min(a,b)
Retorna o mínimo entra a e b
isPar(a)
Retorna 1 se a for par e 0 caso contrário
Aula 4:
9-Escreva uma função que receba como parâmetro uma matriz de strings a imprima na tela ou em um arquivo.
10- Crie um programa que lê os nomes dos alunos e as suas notas de um arquivo de texto, os valores lidos devem ser mostrados em forma de tabela. Os nomes e notas devem ser guardados em uma matriz alocada dinamicamente. Exemplo para o arquivo de entrada:
Allan Lima 8.7 Ádrian Lívio 6.66 André Felipe 9.2 Beltrano Oliveira
Aula 5:
11-Crie as estruturas:
- Carro, guardando modelo, cor, ano, fabricante, o número de portas e o valor do aluguel.
- Cliente, guardando nome, endereço, celular e data de nascimento.
- Locacao, guardando a data da locação, o cliente que realizou o aluguel, o carro alugado e número de dias da locação.
Crie um pequeno programa que:
- Crie locações, atribuindo todas as informações necessárias.
- Diga que usuário alugou um determinado carro.
- Diga quais carros um cliente tem alugado.
- Liste todos os carros e clientes em atraso.
Sinta-se à vontade para criar outros tipos que possam ajudar na resposta.
12-Crie um arquivo cabeçalho chamado ponto.h que irá conter as seguintes definições:
Estrutura ponto, com os atributos x e y Função distância que calcula a distância entre dois pontos
Crie também um arquivo chamado ponto.c que irá conter a definição da função distancia Por fim crie um arquivo chamado main.c que irá testar o seu header Obs.: Para calcular a raiz quadrada de um número utilize a função sqrt() definida no header math.h
13-Crie as seguintes estruturas:
struct Node { // Nó da pilha
int value;
struct Node *next;
};
struct Stack { // Pilha
struct Node *first;
};
Defina também as funções:
void push(struct Stack *stack, struct Node *node);
Insere node no topo de stack
struct Node *pop(struct Stack *stack);
Remove e retorna o primeiro elemento de stack
Não se esqueça de desalocar a memória no final do programa Sinta-se à vontade para criar funções auxiliares
Aula 6:
14- Crie um classe chamada Ponto: – Seus atributos são as suas coordenadas x e y – Implemente um construtor que recebe estes dois parâmetros – Defina os métodos gets inline e os sets normalmente – Escreva um método chamado equals que recebe um outro ponto como argumento retornando true se as coordenadas de ambos forem iguais e false caso contrário. – Implemente um método chamado distancia que recebe um outro ponto como argumento e calcula a distância entre os dois
15- Implemente uma classe chamada Circulo – Seus atributos são o ponto que determina o seu centro e o tamanho do raio – Defina um construtor que recebe estes dois argumentos – Defina os métodos gets e set inline – Implemente um método chamado equals que recebe um outro círculo como argumento retornado true se as coordenadas e o raio de ambos forem iguais e false caso contrário. – Escreva um método chamado área que calcula a área do círculo – Crie um método chamado perimetro que calcula o perímetro do círculo – crie um método chamado contém, que recebe como parâmetro um ponto e retorna true se o ponto estiver contido no círculo
Aula 7:
16-Crie uma classe Ponto e implemente os seguintes operadores:
== != + -
17- Implemente a seguinte hierarquia de classes:
- Classe Empregado
- Atributos:
- Nome
- Celular
- Salário
- Departamento
- Atributos:
- Classe Gerente
- Atributos
- Os empregados que gerencia
- O número empregados que gerencia
- Atributos
- Classe Secretária
- Atributos
- O empregado do qual é secretaria (chefe)
- Atributos
- Classe Temporário
- Atributos
- A data de início do contrato
- O número de meses do contrato
- Atributos
- Classe Secretária Temporária
- Atributos:
- Área de consultoria
- Atributos:
Crie um conjunto de funcionários, pelo menos um de cada tipo. Trate todos os funcionários como "Empregado"s. Imprima na tela a folha de pagamento anual, com o valor do salário em cada mês de cada funcionário. A folha deve conter o nome o e-mail o salário e o departamento de cada funcionário.
Aula 8:
18-Crie uma classe abstrata ElementoGeometrico com os seguintes métodos públicos virtuais: float virtual perimetro() = 0; float virtual area() = 0; Crie as classes Circulo e Quadrado que herdam de ElementoGeometrico e implementam os seus métodos Sinta-se a vontade para definir os atributos e construtores necessários para cada classe
19-Crie um template chamado Vetor Esta classe irá guardar um array de elementos genéricos Os seus métodos são: void inserir(T &elemento); int procurarIndice(T &elemento); bool contem(T &elemento); void remover(T &elemento); Desafios: Faça a sua classe funcionar corretamente com char * Implemente o operador []
Aula 9:
20- Crie um namespace chamado banco e dentro dele declare uma classe chamada Conta com os atributos saldo e número com os seguintes métodos: – void debitar(float valor); – void creditar(float valor);
21-Crie também uma exceção chamada SaldoInsuficienteException que será lançada pelo método debitar. 22- Crie um programa chamado mycopy que recebe como argumento, na sua função main, dois caminhos para arquivos de texto e copia todo o conteúdo o primeiro para segundo. Caso o arquivo de origem não exista, o programa deve tratar a excessão.
Aula 10:
23- Crie uma função que recebe um vetor e um double x como parâmetro. Ela deve retornar o valor do polinômio dado pelo vetor no ponto dado por x – Exemplo: Um vetor contendo 1, 2, 3 representa – x^2 + 2x + 3
24-Crie uma mapa que associa o nome de uma função a um ponteiro para uma função. Utilize classe map. passe o nome da função que você quer chamar por linha de comando
Ferramentas (Tools)
Links
- C/C++ Reference [4] [5]
- Uma API de Sockets em C++ [6]
- Basic Cpp Course

