1. Trang chủ
  2. » Luận Văn - Báo Cáo

báo cáo lập trình hướng đối tượng kc263 đề tài mạch kiểm tra chẳn lẻ 4 bit

13 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Mạch Kiểm Tra Chẵn Lẻ 4 Bit
Tác giả Sinh Viên Thực Hiện
Người hướng dẫn Giảng Viên Hướng Dẫn
Trường học Đại Học Cần Thơ
Chuyên ngành Lập Trình Hướng Đối Tượng
Thể loại Báo Cáo
Năm xuất bản 2023-202
Thành phố Cần Thơ
Định dạng
Số trang 13
Dung lượng 2,98 MB

Nội dung

Tạo file cho chương trình...73... Mô tả chức năng Mạch kiểm tra chẵn lẻ 4 bit là một mạch điện tử được sử dụng để xác định tính chẵn hoặc lẻ của một số nhị phân 4 bit.. Mạch này thường s

Trang 1

ĐẠI HỌC CẦN THƠ TRƯỜNG BÁCH KHOA KHOA ĐIỆN TỬ-VIỄN THÔNG

*******

BÁO CÁO LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

(KC263)

ĐỀ TÀI: MẠCH KIỂM TRA CHẲN

LẺ 4 BIT

Giảng viên hướng dẫn: Sinh viên thực hiện:

Năm học 2023-202

Trang 2

1 Mô tả chức năng 1

2 Phương thức thực hiện 1

II SƠ ĐỒ NGUYÊN LÝ 1

III BẢNG SỰ THẬT 1

IV VIẾT CHƯƠNG TRÌNH 2

V CÁC BƯỚC THỰC HIỆN 6

1 Tạo project mới 6

2 Tạo file cho chương trình 7

3 Viết code cho file 7

4 Kiểm tra lỗi 9

5 Chạy chương trình 9

6 Kết quả 11

VI KẾT LUẬN 11

HẾT

Trang 3

I THIẾT KẾ

1 Mô tả chức năng

Mạch kiểm tra chẵn lẻ 4 bit là một mạch điện tử được sử dụng để xác định tính chẵn hoặc lẻ của một số nhị phân 4 bit Mạch này thường sử dụng các cổng logic để phân tích số lượng bit 1 trong một từ nhị phân và xác định xem tổng số bit 1 là chẵn hay lẻ

Mạch hoạt động như sau:

 Khi một từ nhị phân 4 bit được đưa vào mạch, mạch sẽ phân tích và đưa ra kết quả là 1 nếu tổng số bit 1 là chẵn (đối với mạch chẵn) hoặc 0 nếu tổng số bit 1 là lẻ (đối với mạch chẵn)

 Đối với mạch lẻ, kết quả sẽ ngược lại: 1 nếu tổng số bit 1 là lẻ và 0 nếu tổng số bit 1 là chẵn

2 Phương thức thực hiện

- Mạch được thiết kế sử dụng cổng XOR để xác định tính chẳn lẻ.

- Sử dụng ngôn ngữ C++.

II SƠ ĐỒ NGUYÊN LÝ

III BẢNG SỰ THẬT

Trang 4

IV VIẾT CHƯƠNG TRÌNH

Gồm 2 file: file main.cpp và file Gate.h

#include "Gate.h"

int main() {

char stopme;

//Setting labels

ExOrGate exor1 (" EXOR1 ");

ExOrGate exor2 (" EXOR2 ");

ExOrGate exor3 (" EXOR3 ");

Connector c1 (&exor1, &exor3);

Connector c2 (&exor2, &exor3);

/*exor1.setNextPin(1);

exor1.setNextPin(0);

exor2.setNextPin(1);

exor2.setNextPin(1);

*/

Trang 5

// The output shows order of operators

cout << " Ngo vao 1: "<< exor1.getPinA()<< endl;

cout << " Ngo vao 2: "<< exor1.getPinB()<< endl;

cout << " Ngo vao 3: "<< exor2.getPinA()<< endl;

cout << " Ngo vao 4: "<< exor2.getPinB()<< endl;

cout << " Ngo ra EXOR : "<< exor3.getOutput()<< endl;

cin >> stopme; //holds open window under some conditions return 0;

}

#ifndef GATE_H_

#define GATE_H_

#include <string.h>

#include <iostream>

using namespace std;

class LogicGate {

public:

LogicGate(string n){

label = n;

}

string getLabel(){

return label;

}

bool getOutput(){

output = performGateLogic();

return output;

}

virtual bool performGateLogic(){

cout << "ERROR! performGateLogic BASE" << endl; return false;

}

virtual void setNextPin(bool source) {

cout << "ERROR! setNextPin BASE" << endl;

}

private:

string label;

bool output;

};

Trang 6

class BinaryGate : public LogicGate {

public:

BinaryGate(string n) : LogicGate(n) {

pinATaken = false;

pinBTaken = false;

}

bool getPinA() {

if (pinATaken == false) {

cout << "Enter Pin A input for gate " << getLabel() << ": "; cin >> pinA;

pinATaken = true;

}

return pinA;

}

bool getPinB() {

if (pinBTaken == false) {

cout << "Enter Pin B input for gate " << getLabel() << ": "; cin >> pinB;

pinBTaken = true;

}

return pinB;

}

virtual void setNextPin(bool source) {

if (pinATaken == false) {

pinA = source;

this->pinATaken = true;

}

else if (pinBTaken == false) {

pinB = source;

this->pinBTaken = true;

}

}

private:

bool pinA, pinATaken, pinB, pinBTaken;

};

class ExOrGate : public BinaryGate {

public:

ExOrGate(string n) : BinaryGate(n) {};

virtual bool performGateLogic() {

bool a = getPinA();

bool b = getPinB();

Trang 7

if ((a == 1 && b == 0) || (a==0 && b==1) ) { return true;

}

else {

return false;

}

}

};

class Connector{

public:

Connector(LogicGate *fgate, LogicGate *tgate) { fromgate = fgate;

togate = tgate;

tgate->setNextPin(fromgate->getOutput()); }

LogicGate *getFrom() {

return fromgate;

}

LogicGate *getTo() {

return togate;

}

private:

LogicGate *fromgate, *togate;

};

#endif /* GATE_H_ */

Trang 8

V CÁC BƯỚC THỰC HIỆN

1 Tạo project mới

Mở CODE COMPOSER STUDIO lên chọn File → New → Project như

hình bên dưới

Trong hộp thoại New Project chọn C/C++ → C++Project →Next

Đặt tên cho Project, tại mục Executable → Empty Project và mục

Toolchains → MinGW GCC nhấn Finish để hoàn tất

Trang 9

2 Tạo file cho chương trình

Tiến hành tạo File Gate.h Bấm chuột phải vào chọn New → Header

File, đặt tên Gate.h và nhấn Finish.

Tiếp tục tạo File main.cpp Bấm chuột phải vào chọn New → Source

File, đặt tên main.cpp và nhấn Finish.

3

Viết code cho file

Nhập code cho file main.cpp

Nhập code cho file Gate.cpp

Trang 11

4 Kiểm tra lỗi

Nhấp chuột phải vào lthdt và chọn Build Project kiểm tra chương trình

có lỗi hay không Nếu lỗi hãy chỉnh sửa và tiếp tục kiểm tra đến khi hết lỗi

5 Chạy chương trình

Trang 12

Tại mục C/C++ Application chọn lthdt Debug sau đó tại mục main chọn

Browser ở phần C/C++ Application để lấy địa chỉ chứa file chạy của lthdt.

Chọn file lthdt.exe theo đường dẫn Chọn Open → Run

Trang 13

6 Kết quả

Nhập ngõ vào nhị phân để kiểm tra ngõ ra chẳn lẻ

NHẬN XÉT: Mạch chạy đúng theo yêu cầu, kiểm tra được tính chẳn lẻ

của đầu vào (input)

VI KẾT LUẬN

- Mạch kiểm tra chẳn lẻ sử dụng ngôn ngữ C++ cho ra kết quả đạt yêu cầu đồ

án

- Kết quả chạy chương trình cho phép người dùng kiểm tra được tính chẳn lẻ của Input

HẾT

Chúng em trân trọng cảm ơn thầy đã hổ trợ chúng em trong suốt quá

Ngày đăng: 09/06/2024, 17:51

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w