1 / 13

Linguagem de Programação C++

Linguagem de Programação C++. Usando Makefiles. 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. Solução: modularização.

bob
Download Presentation

Linguagem de Programação C++

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. #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.setEnd(14); mem.read(); cout << mem.getDados() << endl; system("PAUSE"); return 0; } Exemplo: teste.cpp usa Memoria

  5. #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 Exemplo: Memória usa Registrador

  6. #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; } Exemplo: Memoria.cpp

  7. 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; }; Exemplo: Registrador agrupa 2 arqs

  8. #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); } 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){ ... } Exemplo: Registrador.cpp

  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).

More Related