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 21 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 3I 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 4IV 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 6class 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 8V 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 92 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 114 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 12Tạ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 136 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á