A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Linguagem de Programação C++

Apresentações semelhantes


Apresentação em tema: "Linguagem de Programação C++"— Transcrição da apresentação:

1 Linguagem de Programação C++
Usando Makefiles

2 Problema: Colocar todas as classes em um único fonte:
Pode tornar o fonte muito extenso e difícil de manipular; Dificulta a reutilização das classes em outros sistemas; Dificulta o trabalho em equipe.

3 Solução: modularização
Agrupam-se as classes relacionadas em módulos; Para cada módulo dois arquivos: Declarações: Terminação “.h”; Contém apenas as declarações de classes e constantes; Implementação: Terminação “.cpp” Contém a implementação das classes definidas no “.h” correspondente; Inclui o “.h” correspondente. Para usar uma classe em outro módulo: Basta incluir o “.h” correspondente

4 Exemplo: teste.cpp usa Memoria
#include <iostream> #include <stdlib.h> #include "Memoria.h" using namespace std; int main(int argc, char *argv[]){ mem.setDados(550); mem.setEnd(14); mem.write(); mem.read(); cout << mem.getDados() << endl; system("PAUSE"); return 0; }

5 Exemplo: Memória usa Registrador
#include "Registrador.h" class Memoria{ public: Memoria(int umTamanho); void setDados(int umValor); void setEnd(int umValor); int getDados(void); void read(void); void write(void); private: Registrador16 endereco; Registrador16 dados; int tamanho; Registrador8 *memoria; }; Arquivo Memoria.h

6 Exemplo: Memoria.cpp #include <iostream>
#include <stdlib.h> #include "Memoria.h" Memoria::Memoria(int umTamanho){ if (umTamanho < 0){ tamanho = 10; }else{ tamanho = umTamanho; } memoria = new Registrador8[tamanho]; void Memoria::setDados(int umValor){ dados.set(umValor); void Memoria::setEnd(int umValor){ endereco.set(umValor); int Memoria::getDados(void){ return(dados.get()); } void Memoria::read(void){ int aux = endereco.get(); if (aux >= tamanho-1) return; int low,high; high = memoria[aux].get(); low = memoria[aux+1].get(); dados.set(high*256+low); void Memoria::write(void){ int aux = dados.get(); int low = aux % 256; int high = aux / 256; memoria[endereco.get()] = high; memoria[endereco.get()+1] = low;

7 Exemplo: Registrador agrupa 2 arqs
class Registrador8{ public: Registrador8(void); Registrador8(int umValor); int set(int umValor); int get(void); private: int consiste8(int umValor); int valor; }; class Registrador16{ public: Registrador16(void); Registrador16(int umValor); int set(int umValor); int get(void); private: int consiste16(int umValor); int valor; };

8 Exemplo: Registrador.cpp
Registrador16::Registrador16(void){ valor = 0; } Registrador16::Registrador16(int umValor){ ... int Registrador16::set(int umValor){ if (consiste16(umValor)){ valor = umValor; return(1); return(0); int Registrador16::get(void){ return(valor); int Registrador16::consiste16(int umValor){ #include "Registrador.h" Registrador8::Registrador8(void){ valor = 0; } Registrador8::Registrador8(int umValor){ ... int Registrador8::set(int umValor){ int Registrador8::get(void){ return(valor); int Registrador8::consiste8(int umValor){ if ((umValor < 0)||(umValor > 255)) return(0); return(1);

9 Compilando vários módulos
IDE: cria-se um projeto Comando de linha: Cria-se um makefile Makefile Roteiro de compilação Indica dependências e comandos de compilação Nome do arquivo: Makefile Ativação: make

10 Exemplo: Makefile all: teste teste: teste.o Memoria.o Registrador.o
g++ -o teste teste.o Memoria.o Registrador.o teste.o: teste.cpp g++ -c teste.cpp Memoria.o: Memoria.cpp g++ -c Memoria.cpp Registrador.o: Registrador.cpp g++ -c Registrador.cpp

11 Exercícios: Faça dowload dos módulos Memoria e Registrador, crie uma aplicação teste, crie um makefile, compile e execute a aplicação teste.

12 Exercícios Crie uma classe MemoriaPipin. A memória do processador Pipinn é endereçada de 0 a 99 ou através dos mnemônicos “W”, “X”, “Y”, “Z”, “T1”, “T2”, “T3”, “T4”. Implemente esta classe usando a classe Memoria como “atributo”. Faça um exemplo de uso.

13 Exercício Crie uma classe ULA usando a classe Registrador16. Faça um exemplo de uso integrado com a classe MemoriaPipinn (por exemplo buscando valores na memória e armazenando o resultado das operações).


Carregar ppt "Linguagem de Programação C++"

Apresentações semelhantes


Anúncios Google