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

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

Laboratorio de Programação II (EC) – Prof. Bernardo Copstein Engenharia da Computação, FACIN, PUCRS 1 Linguagem de Programação C++ Usando Makefiles.

Apresentações semelhantes


Apresentação em tema: "Laboratorio de Programação II (EC) – Prof. Bernardo Copstein Engenharia da Computação, FACIN, PUCRS 1 Linguagem de Programação C++ Usando Makefiles."— Transcrição da apresentação:

1 Laboratorio de Programação II (EC) – Prof. Bernardo Copstein Engenharia da Computação, FACIN, PUCRS 1 Linguagem de Programação C++ Usando Makefiles

2 Laboratorio de Programação II (EC) – Prof. Bernardo Copstein Engenharia da Computação, FACIN, PUCRS 2 Problema: Colocar todas as classes em um único fonte: Colocar todas as classes em um único fonte: Pode tornar o fonte muito extenso e difícil de manipular; Pode tornar o fonte muito extenso e difícil de manipular; Dificulta a reutilização das classes em outros sistemas; Dificulta a reutilização das classes em outros sistemas; Dificulta o trabalho em equipe. Dificulta o trabalho em equipe.

3 Laboratorio de Programação II (EC) – Prof. Bernardo Copstein Engenharia da Computação, FACIN, PUCRS 3 Solução: modularização Agrupam-se as classes relacionadas em módulos; Agrupam-se as classes relacionadas em módulos; Para cada módulo dois arquivos: Para cada módulo dois arquivos: Declarações: Declarações: Terminação.h; Terminação.h; Contém apenas as declarações de classes e constantes; Contém apenas as declarações de classes e constantes; Implementação: Implementação: Terminação.cpp Terminação.cpp Contém a implementação das classes definidas no.h correspondente; Contém a implementação das classes definidas no.h correspondente; Inclui o.h correspondente. Inclui o.h correspondente. Para usar uma classe em outro módulo: Para usar uma classe em outro módulo: Basta incluir o.h correspondente Basta incluir o.h correspondente

4 Laboratorio de Programação II (EC) – Prof. Bernardo Copstein Engenharia da Computação, FACIN, PUCRS 4 Exemplo: teste.cpp usa Memoria #include #include #include "Memoria.h" using namespace std; int main(int argc, char *argv[]){ mem.setDados(550); mem.setDados(550); mem.setEnd(14); mem.setEnd(14); mem.write(); mem.write(); mem.setEnd(14); mem.setEnd(14); mem.read(); mem.read(); cout << mem.getDados() << endl; cout << mem.getDados() << endl; system("PAUSE"); system("PAUSE"); return 0; return 0;}

5 Laboratorio de Programação II (EC) – Prof. Bernardo Copstein Engenharia da Computação, FACIN, PUCRS 5 Exemplo: Memória usa Registrador #include "Registrador.h" class Memoria{ public: public: Memoria(int umTamanho); Memoria(int umTamanho); void setDados(int umValor); void setDados(int umValor); void setEnd(int umValor); void setEnd(int umValor); int getDados(void); int getDados(void); void read(void); void read(void); void write(void); void write(void); private: private: Registrador16 endereco; Registrador16 endereco; Registrador16 dados; Registrador16 dados; int tamanho; int tamanho; Registrador8 *memoria; Registrador8 *memoria;}; Arquivo Memoria.h

6 Laboratorio de Programação II (EC) – Prof. Bernardo Copstein Engenharia da Computação, FACIN, PUCRS 6 Exemplo: Memoria.cpp #include #include #include "Memoria.h" Memoria::Memoria(int umTamanho){ if (umTamanho < 0){ if (umTamanho < 0){ tamanho = 10; tamanho = 10; }else{ }else{ tamanho = umTamanho; tamanho = umTamanho; } memoria = new Registrador8[tamanho]; memoria = new Registrador8[tamanho];} void Memoria::setDados(int umValor){ dados.set(umValor); dados.set(umValor);} void Memoria::setEnd(int umValor){ endereco.set(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 Laboratorio de Programação II (EC) – Prof. Bernardo Copstein Engenharia da Computação, FACIN, PUCRS 7 Exemplo: Registrador agrupa 2 arqs class Registrador8{ public: public: Registrador8(void); Registrador8(void); Registrador8(int umValor); Registrador8(int umValor); int set(int umValor); int set(int umValor); int get(void); int get(void); private: private: int consiste8(int umValor); int consiste8(int umValor); int valor; 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 Laboratorio de Programação II (EC) – Prof. Bernardo Copstein Engenharia da Computação, FACIN, PUCRS 8 Exemplo: Registrador.cpp #include "Registrador.h" Registrador8::Registrador8(void){ valor = 0; valor = 0;} Registrador8::Registrador8(int umValor){......} int Registrador8::set(int umValor){......} int Registrador8::get(void){ return(valor); return(valor);} int Registrador8::consiste8(int umValor){ if ((umValor 255)) return(0); if ((umValor 255)) return(0); return(1); 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){... }

9 Laboratorio de Programação II (EC) – Prof. Bernardo Copstein Engenharia da Computação, FACIN, PUCRS 9 Compilando vários módulos IDE: cria-se um projeto IDE: cria-se um projeto Comando de linha: Comando de linha: Cria-se um makefile Cria-se um makefile Makefile Makefile Roteiro de compilação Roteiro de compilação Indica dependências e comandos de compilação Indica dependências e comandos de compilação Nome do arquivo: Makefile Nome do arquivo: Makefile Ativação: make Ativação: make

10 Laboratorio de Programação II (EC) – Prof. Bernardo Copstein Engenharia da Computação, FACIN, PUCRS 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 Laboratorio de Programação II (EC) – Prof. Bernardo Copstein Engenharia da Computação, FACIN, PUCRS 11 Exercícios: 1. 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 Laboratorio de Programação II (EC) – Prof. Bernardo Copstein Engenharia da Computação, FACIN, PUCRS 12 Exercícios 2. 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 Laboratorio de Programação II (EC) – Prof. Bernardo Copstein Engenharia da Computação, FACIN, PUCRS 13 Exercício 3. 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 "Laboratorio de Programação II (EC) – Prof. Bernardo Copstein Engenharia da Computação, FACIN, PUCRS 1 Linguagem de Programação C++ Usando Makefiles."

Apresentações semelhantes


Anúncios Google