You are on page 1of 28

TRƯỜNG ĐẠI HỌC ĐỒNG THÁP

KHOA SƯ PHẠM TOÁN – TIN

NHÓM …

BÁO CÁO TỔNG KẾT NGHIÊN CỨU

HỌC PHẦN KIẾN TRÚC MÁY TÍNH VÀ HỢP NGỮ

TÊN ĐỀ TÀI

NGÀNH: KHOA HỌC MÁY TÍNH

LỚP:

Đồng Tháp, tháng năm 2023


TRƯỜNG ĐẠI HỌC ĐỒNG THÁP
KHOA SƯ PHẠM TOÁN – TIN

NHÓM …

BÁO CÁO TỔNG KẾT NGHIÊN CỨU

HỌC PHẦN KIẾN TRÚC MÁY TÍNH VÀ HỢP NGỮ

TÊN ĐỀ TÀI

NGÀNH: KHOA HỌC MÁY TÍNH

LỚP:

GIẢNG VIÊN HƯỚNG DẪN: GVC. Ths. NGUYỄN THỊ THÙY LINH
DANH SÁNH SINH VIÊN NHÓM…

STT MSSV HỌ TÊN GHI CHÚ

1 0022412706 Nguyễn Tuấn Thanh Nhóm trưởng


ĐT:0393524531
E-mail:tuanthanh1810547@gmail.com

2 0022410909 Ngô Tấn Phúc 0962784458


E-mail: tanp6679@gmail.com

3 0022410911 Tô Phước Đầy 0358350492


E-mail: phuocdayt@gmail.com

Bảng phân công công việc:

STT CÔNG VIỆC Họ tên

1 Tìm hiểu bảng mã, giải ví dụ minh họa, viết Nguyễn Tuấn Thanh
chương trình, thuật toán, giải thích chương trình,
tham gia đánh giá, phương hướng cải tiến

2 Tìm hiểu bảng mã, cách cài đặt môi trường, tham Ngô Tấn Phúc
gia đánh giá

3 Tìm hiểu bảng mã, các ký tự trong bảng mã Tô Phước Đầy


không xuất hiện trên màn hình chương trình,
tham gia đánh giá
ĐÁNH GIÁ CỦA GIẢNG VIÊN HƯỚNG DẪN

*Chú ý: Sai mẫu sẽ không chấm điểm, nộp trể hạn bị trừ 0.5 điểm/1ngày

ST NỘI DUNG ĐÁNH GIÁ ĐIỂM TỐI ĐIỂM NHẬN XÉT


T ĐA CHẤM
1 HÌNH THỨC 4.0
1.1.Nộp bài đúng tiến độ 1.0
1.2.Bố cục rõ ràng, hợp lý 1.0
1.3.Không có lỗi chính tả, không 1.0
lỗi in ấn
1.4.Có đánh STT và tên hình/bảng 1.0
Trình bày tài liệu tham khảo đúng
qui cách
2 NỘI DUNG 3.0
2.1. Nêu được kết quả chính đạt 0.5
được của đề tài
2.2.Trình bày có hệ thống, logic 0.5
ngắn gọn, súc tích, dễ hiểu
2.3. Đầy đủ nội dung theo qui định 0.5
2.4. Nội dung chính xác 0.5
2.5. Có sáng tạo, thông minh 0.5
2.6. Khả năng ứng dụng 0.5
3 DEMO 3.0
3.1. Không có lỗi, không sao chép 1.0
3.2. Hiệu quả, đáp ứng yêu cầu 2.0
TỔNG ĐIỂM 10.0

Ngày nộp: …………………….

Người nộp

<HỌ TÊN>
MỤC LỤC
1. MỞ ĐẦU:........................................................................................................................6
2. NỘI DUNG ĐỀ TÀI.......................................................................................................6
2.1. Đặt vấn đề:................................................................................................................6
2.2. Phương pháp giải quyết vấn đề:..............................................................................6
2.3. Thiết kế và cài đặt thuật toán:.................................................................................6
2.3.1. Tên chương trình con thứ nhất, ý nghĩa, các đối số, kiểu dữ liệu, đầu vào,
các bước xử lý, kết quả xuất ra...................................................................................7
2.3.2. Tên chương trình con thứ hai, ý nghĩa, các đối số, kiểu dữ liệu, đầu vào,
các bước xử lý, kết quả xuất ra...................................................................................9
2.4. Ví dụ minh họa cho giải thuật..............................................................................10
2.5. Đánh giá:................................................................................................................11
2.6. Giải bài tập minh họa............................................................................................11
2.7. Giới thiệu DEMO và hướng dẫn sử dụng...........................................................11
2.8. Nhận xét và bình luận, đề xuất:...........................................................................11
3. KẾT LUẬN...............................................................................................................25
3.1. Kết quả đạt được...................................................................................................25
3.2. Hạn chế...................................................................................................................25
3.3. Hướng phát triển...................................................................................................25
1. MỞ ĐẦU:
Bảng mã ASCII được biết dến như là một điều không thể thiếu với những người
lập trình và liên quan đến máy tin, sự xuất hiện của bảng mã ASCII đã giúp ích rất nhiều
cho sự phát triễn công nghệ. Chinh về thế để nâng cao hiểu biết về máy tính và phần mềm
trong đề tài này, chúng ta sẽ tìm hiểu và làm rõ và xây dựng chương trình mã hóa 256 ký
tự của bảng mã ASCII 8 bit.

2. NỘI DUNG ĐỀ TÀI


2.1. Đặt vấn đề:
Vấn đề đặt ra trong đề tài nguyên cứu này là:
 Tìm hiểu xem bảng mã ASCII là như thế nào?
 Cách tạo 1 chương trình in ra bảng mã ASCII mở rộng 256 ký tự.
 Cách tạo 1 chương trình nhập 1 số từ 0 đến 255 đẻ in ra ký tự được mã hóa trong
bảng mã.
Để xây dựng được các chương trình trên ta cần biết về kiểu dự liệu (ở đây nhóm nghuên
cứu của chúng tôi chọn ngôn ngữ C++ và chương trình được tạo sẽ có đuôi tệp là .cpp).
2.2. Phương pháp giải quyết vấn đề:
Dựa vào kiểu dữ liệu “char” trong C++ kết hợp với vòng lặp ta có thể giải quyết
được các vấn đề về xây dựng 1 chương trình như đã nói ở bên trên. Cụ thể:
 Với chương trình thứ nhất (in ra bảng mã ASCII 256 ký tự) ta cần tạo 1 vòng lập
chạy từ 0 đến 255 sau đó dùng các ép kiểu dữ liệu để in ra ký tự được mã hóa.
 Với chương trình thứ hai chúng ta sẽ tạo dữ liệu cho người dùng nhập từ bàn
phím 1 số bát kỳ trong khoảng từ 0 đến 255 sau đó như chương trình 1 sử dụng
cách ép kiểu để mã hóa ký tự của số được người dùng nhập từ bàn phím.
2.3. Thiết kế và cài đặt thuật toán:
In ra ký tự được mã hóa bảng mã ASCII 256 ký tự

In ra tất cả ký tự In ra 1 ký tự mã
của bảng mã hóa đươc nhập

Hình 2.3.1Sơ đồ tổng thể, phân rã của chương trình in ra ký tự bảng mã


ASCII 256 ký tự 8 bit
Trong chương trình in ra ký tự bảng mã ASCII 256 ký tu ta sẽ có hai chương trình
con thực hiện 2 công việc khác nhau: in ra tất cả ký tự của bảng mã và in ra 1 ký tự ngẫu
nhiên mà người dùng nhập từ bàn phím.
2.3.1. Tên chương trình con thứ nhất, ý nghĩa, các đối số, kiểu dữ liệu, đầu vào, các bước xử
lý, kết quả xuất ra.

Chương trình con thứ nhất: in ra tất cá ký tự của bảng mã ASCII mở rông.
Có dang:
void in_bang_ma( );
{
cout<< “\nBang ma ASCII 8bit:”<<endl;
for(int i=0;i<256;i++){

cout<<i<<"\t\t\t"<<char(i)<<endl;

}
}
Thuật toán:
 Bước 1: Ta sẽ khởi tạo 1 hàm con có kiểu trả về là void
 Bước 2: Ta sẽ dùng 1 biến để gán giá trị chạy từ 0 đến 256
 Bước 3: Sử dụng 1 vòng lặp for với bước nhảy là 1 và bắt bđầu từ 0 kết thúc ở 255.
Sau đó tiến hành ép kiểu dữ liệu về kiểu char để in ra màn hình hiện thị của người
dùng.
Giải thích code:
Để in ra 256 ký tự của bảng mã ta sẽ sử dụng 1 vòng lặp for() chạy từ 0 đến 255 và
bước nhảy là 1:

for(int i=0;i<256;i++){

cout<<i<<"\t\t\t"<<char(i)<<endl;

Lệnh “\t\t\t” dùng để phân cách, khoảng trống khiến chương trình dễ nhìn hơn. Câu
lệnh char(i) ứng với mỗi giá trị của i sẽ in ra ký tự được mã hóa bởi bảng mã.

Đầu ra của dữ liệu:


2.3.2. Tên chương trình con thứ hai, ý nghĩa, các đối số, kiểu dữ liệu, đầu vào, các bước xử lý,
kết quả xuất ra.

Chương trình con thứ hai: in ra ký tự được mã hóa bởi 1 số được người dùng nhập
từ bàn phím (số này nằm trong khoảng từ 0 đến 255).
Code C++:
void ma_hoa_1_ky_tu (int so){
cout<<"\nKu tu cua ban la: ";

cout<<so<<"\t\t\t"<<char(so);

}
Trong hàm main của chuongr trình ta sẽ sử dụng câu lệnh:
int so;

do{

cout<<"Nhap so ma ban muon in ra ky tu tren man hinh: ";

cin>>so;

}while(so<0||so>256);

Thuật toán:

 Bước 1: Ta sẽ khởi tạo 1 biến số để lưa giá trị của số được người dùng nhập từ
bàn phím.
 Bước 2: Tạo 1 chương trình con để thực hiện chương trình, ở đây ta sẽ sử dụng
kiểu void - kiểu không có giá trị trả về để thực hiện chương trình này, và truyền
vào tham số.
 Bước 3: Thực hiện ép kiểu tương tự như chương trình 1, xuất ra màn hình ký tự
được mã hóa.
Giải thích code:

Đầu tiên trong hàm main() chúng ta cần khai báo 1 biến “so” và sử dụng 1 vòng
lặp do – while để người dùng nhập vào:

do{

cout<<"Nhap so ma ban muon in ra ky tu tren man hinh: ";

cin>>so;

} while (so<0||so>256);

Lệnh này dùng để cho người dùng nhạp vào từ bàn phím 1 số có giá trị nằm trong
khoảng [0;255] bởi vì bảng mã ascii 8 bit có 256 ký tự và bắt đầu từ 0 và kết thúc tại 255,
nếu người dùng nhập không dúng khoảng đó khối lệnh do – while sẽ yêu cầu người dùng
nhập lại.

Tiếp theo chúng ta sẽ xây dựng ngoài hàm main() 1 chương trình con:

void ma_hoa_1_ky_tu (int so){


cout<<"\nKu tu cua ban la: ";

cout<<so<<"\t\t\t"<<char(so);

}
cout<<so<<"\t\t\t"<<char(so); Lệnh này sẽ in ra số mà người dùng nhập vào từ bàn
phím được lưu trữ bởi biến “so” thong qua câu lệnh cin>>so; để in ký tự mã hóa trong
bảng mã ascii trong c++ ta dùng lệnh char(so) để ép kiểu và mã hóa in ra màn hình ký tự
trong bảng mã.

Đầu vào dữ liệu (INPUT):


Một số nguyên có giá trị từ [0;255], được người dùng nhập từ bàn phím.
Đầu ra dữ liệu (OUTPUT):
Ký tự được mã hóa trong bảng mã ASCII mở rộng 8 bit ứng với 1 số nguyên được
người dùng nhập vào.
2.4. Ví dụ minh họa cho giải thuật
Ví dụ: nhập vào 1 số nguyên và ỉn ra ký tự được mã hóa trong bảng mã ASCII 8
bit.
INPUT: 65
OUTPUT: ký tự được mã hóa
Ta thấy trong bảng mã ASCII số 65 mã hóa cho ký tự “A” nên output lúc này là ký
tự “A”. Vì thế sử dụng phương pháp ép kiểu cho số 65 trở thành dạng ký tự sau đó in ra
màn hình.
2.5. Đánh giá:
Với việc sử dụng ép kiểu dữ liệu giải thuật tương đối dễ dàng thực hiện với tốc độ
nhanh chóng, độ phức tạp không cao và tính chính xác được đảm bảo.
2.6. Giải bài tập minh họa
Sau đây chúng ta sẽ cùng xem cách để viết chương trình xử lý số 65 về ký tự được
mã hóa trong bảng mã.
#include<iostream>
using namespace std;
int main(){
Cout<<char(65);
return 0;
}

2.7. Giới thiệu DEMO và hướng dẫn sử dụng


2.8. Nhận xét và bình luận, đề xuất:
Để thực hiện chương trình in ra ký tự được mã hóa trong bảng mã ASCII 256 ký tự
ta cần 1 phần mềm chuyên dụng cho việc viết code chương trình. Chúng tôi khuyến nghị
nên sử dụng phần mềm DEV C++ để thực hiện việc tạo chương trình vì tính tiện dụng,
giao diện thân thiện với người dùng và không cần cài đặt thêm môi trường.

Sau đây là cách hướng dẫn tải và sử dụng DEV C++:

1. Đầu tiên ta cần truy cập vào trình duyệt và tìm kiếm với từ khóa “dowload devc+
+” hoặc bạn có thể truy cập trực tiếp vào đường dẫn
https://sourceforge.net/projects/orwelldevcpp/:
Hình 2.8.1. Cú pháp tìm kiếm dowload Dev C++
Sau đó nhấp vào đường link đầu tiên:

2. Ấn vào mục Dowload sau đó mở tệp đã tải về máy lên:


Hình 2.8.4 Giao diện trang web Dowload ứng dụng

Hình 2.8.5 Mở tệp đã tải về máy

3. Chọn ngôn ngữ sau đó tiến hành cài đặt:


Hình 2.8.6 Cài đặt chương trình trên máy

4. Chọn nơi lưu ứng dụng và khởi động và giải nén chương trình:
Hình 2.8.7 Chọn nơi lưu ứng dụng

Hình 2.8.8 Tiến hành cài đặt


Hình 2.8.9 Tiến hành các bước cài đặt tiếp theo

Hình 2.8.10 Tiến hành các bước cài đặt tiếp theo

Hình 2.8.11 Tiến hành các bước cài đặt tiếp theo
Hình 2.8.12 Bước cài đặt cuối cùng
Để biên soạn chương trình ta chọn File – New – Source file hoặc nhấn tổ hợp phím
Ctrl + N

Hình 2.8.13. Tạo file chương trình c++

Sau đây là chương trình thực hiện in ra bảng mã ASCII 256 ký tự 8bit và thực hiện
in ra ký tự được mã hóa của 1 số đc nhập vào từ bàn phím:
Hình 2.8.14. Chuong trình in ra bảng mã và mã hóa 1 số thành ký tự

Để chạy chương trình ta chọn Execute sau đó chọn Compile & Run:

Hình 2.8.15 Cách chạy chương trình trong Dev C++

Kết quả sau khi thực hiện chương trình trên:


Hình 2.8.16. Kết quả chạy chương trình in ra bảng mã ASCII 256 ký tự

Hình 2.8.17. Kết quả chạy chương trình in ra bảng mã ASCII 256 ký tự
Hình 2.8.18. Kết quả chạy chương trình in ra bảng mã ASCII 256 ký tự

Hình 2.8.19. Kết quả chạy chương trình in ra bảng mã ASCII


Hình 2.8.20. Kết quả chương trình in ra ký tự được mã hóa
Giới thiệu về bảng mã ASCII 8 bit:

ASCII là viết tắt của cụm từ American Standard Code for Information Interchange,
có nghĩa là chuẩn mã trao đổi thông tin Hoa Kỳ. Đây là bộ mã hóa ký tự cho bảng chữ cái
La Tinh và được dùng để hiển thị văn bản trong máy tính.

Bảng mã ASCII 8 bit là bảng mã mở rộng của bảng mã ASCII tiêu chuẩn, mỗi ký tự trong
bản mã được mã hóa bằng 8 bit (8 bit không đến 8 bit 1) mã hóa 256 ký tự và được đánh
số từ 0 đến 255. Ưu điiểm của bảng mã mở rộng so với bảng mã tiêu chuẩn là có thể mã
hóa được
Hình 2.8.21. Bảng mã ASCII 256 ký tự 8 bit
Giải thích code:

Đầu tiên đẻ thực hiện chương trình ta phải khai báo một thư viện dùng để
nhập xuất cơ bản với C++ là iostream bằng câu lệnh. #include<iostream>;

using namespace std; dùng để khai báo sử dụng các hàm có trong std là cout và
cin;

int main() hàm main dùng để chạy chương trình bên trong nó và khi kết thúc ta sẽ
dùng một lệnh return 0; để báo chương trinh đã chạy xong

Để in ra 256 ký tự của bảng mã ta sẽ sử dụng 1 vòng lặp for() chạy từ 0 đến 255 và
bước nhảy là 1:

for(int i=0;i<256;i++){

cout<<i<<"\t\t\t"<<char(i)<<endl;

Lệnh “\t\t\t” dùng để phân cách, khoảng trống khiến chương trình dễ nhìn hơn. Câu
lệnh char(i) ứng với mỗi giá trị của i sẽ in ra ký tự được mã hóa bởi bảng mã.
int so; khai báo một biến “so” biến này có kiểu dữ liệu là int: dùng để lưu số
nguyên;

do {

cout<<"Nhap so ma ban muon in ra ky tu tren man hinh: ";

cin>>so;

} while(so<0||so>256); lệnh này dùng để cho người dùng nhạp vào từ bàn phím 1
số có giá trị nằm trong khoảng [0;255] bởi vì bảng mã ascii 8 bit có 256 ký tự và bắt đầu
từ 0 và kết thúc tại 255, nếu người dùng nhập không dúng khoảng đó khối lệnh do – while
sẽ yêu cầu người dùng nhập lại;

cout<<so<<"\t\t\t"<<char(so); Lệnh này sẽ in ra số mà người dùng nhập vào từ bàn


phím được lưu trữ bởi biến “so” thong qua câu lệnh cin>>so; để in ký tự mã hóa trong
bảng mã ascii trong c++ ta dùng lệnh char(so) để ép kiểu và mã hóa in ra màn hình ký tự
trong bảng mã.

Chú ý:
Chương trình trên chỉ in ra được các ký tự có thể nhìn thấy trên bảng mã những ký
tự chức năng khác sẽ hiện thị rổng.

Mã số Ký tự Ghi chú

000 NUL Vô giá trị

007 BEL Chuông

008 BS Backspace

009 HT Tab ngang

010 LF Nguồn cấp dòng

013 CR Vận chuyển trở lại

032 Space Dấu cách

Bảng 2.8.1 Các ký tự không hiện thị ra được


3. KẾT LUẬN
3.1. Kết quả đạt được
Thông qua tìm hiểu về cách thực hiện chương trình in ra bảng mã ASCII 256 ký tự
8 bit, về lý thuyết các vấn đề liên quan đến bảng mã ASCII cơ bản đã được tìm hiểu rõ và
có cái nhìn trực quan sơ bộ. Thông qua đó đã giúp cho nhóm chúng tôi có kinh nghiệm
trong việc sử dụng ngôn từ và kỹ năng viết và thực hành làm báo cáo trở nên chỉnh chu,
trình bày có khoa học hơn về 1 vấn đề nguyên cứu. Ngoài ra nhóm còn đạt được tiếng nói
chung cho việc phân chia công việc 1 cách công bằng có hiệu quả và tiết kiệm thời gian
được nhiều hơn.
3.2. Hạn chế
Do đây là một trong những đề tài nghiên cứu đầu tiên của nhóm nên ít nhiều cũng
có những điểm hạn chế đó là khả năng tìm hiểu, giải quyết vấn đề còn nhiều khó khăn và
tốn nhiều thời gian cho giai đoạn nghiên cứu lên kế hoạch thực hiện. Ngoài ra sự chuyên
nghiệp trong cách trình bài vấn đề còn nhiều thiếu xót.
Về chương trình thực hiện: thông qua đánh giá sơ bộ của nhóm chương trình còn
nhiều thiếu sót nhất là trong khâu thẩm mỹ, thuật toán của chương trình in ra chưa đạt
tính thẩm mĩ cao.
Bên cạnh đó vẫn còn có những thiếu sót mang tính chủ quan, chúng tôi chân thành
đón nhận và mong nhận được những lời góp ý để nhóm có thể hoàn thiện hơn trong việc
nghiên cứu trong tương lai.
3.3. Hướng phát triển
Về cơ bản chương trình của nhóm chúng tôi thực hiện là dùng để hiện thị ra bảng
mã ascii 256 ký tự, với vòng lặp for chương trình dễ dàng được thực hiện. Nhưng khi
chạy bảng mã ascii 256 ký tự rất dài (do chỉ in ra 1 ký tự và sau đó xuống dòng ký tự mới
sẽ được thực hiện tiếp theo), do không có kinh nghiệm thực hiện những đề tài dạng như
thế này.

*Ưu điểm: độ phức tạp của thật toán là không cao, dễ dàng sử dụng.

*Nhược điểm: chương trình in ra khó nhìn.

Cách khắc phục: thêm câu lệnh để chia bảng mã thành 4 cột.
if((i+1)%4==0){
cout<<endl;}
TÀI LIỆU THAM KHẢO
[1] TOTOLINK VIET NAM: 3/8/2020, Bảng mã ASCII là gì? Tổng quan về bảng mã
ASCII - TOTOLINK Việt Nam
[2] Điện máy xuyen á: Bảng Mã Ascii 256 Ký Tự - Bảng Mã Ascii 256 Kí Tự Chuẩn Và
Đầy Đủ Nhất (dienmayxuyena.com)
[3] Didongviet: Bảng mã ASCII chuẩn nhất và đầy đủ nhất mà bạn cần biết - THÔNG
TIN GIẢI TRÍ (sixdegreesfromdave.com)
PHỤ LỤC
Code xử lý tiêu biểu
#include<iostream>
using namespace std;
void in_bang_ma( )
{
cout<< "\nBang ma ASCII 8bit:"<<endl;
for(int i=0;i<256;i++){
cout<<i<<"\t\t\t"<<char(i)<<endl;
}
}
void ma_hoa_1_ky_tu (int so){
cout<<"\nKu tu cua ban la: ";
cout<<so<<"\t\t\t"<<char(so);
}
int main(){
in_bang_ma();
int so;
do{
cout<<"Nhap so ma ban muon in ra ky tu tren man hinh: ";
cin>>so;
}while(so<0||so>256);
ma_hoa_1_ky_tu(so);
return 0;
}

You might also like