Basic Cpp Course (2007.1)

From EmbeddedAcademy

Contents

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
  • 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

Apresentações (Presentations)

Apresentações do curso anterior

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:

Image:ExercicioCPP7-2007.1.jpg

  • Classe Empregado
    • Atributos:
      • Nome
      • E-mail
      • Celular
      • Salário
      • Departamento
  • Classe Gerente
    • Atributos
      • Os empregados que gerencia
      • O número empregados que gerencia
  • Classe Secretária
    • Atributos
      • O empregado do qual é secretaria (chefe)‏
  • Classe Temporário
    • Atributos
      • A data de início do contrato
      • O número de meses do contrato
  • Classe Secretária Temporária
    • Atributos:
      • Área de consultoria

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