Các thủ tục được thực hiện như sau: khi người sử dụng ấn 1 phím trên bàn phím
Trang 1Lời nói đầu
Hiện nay cùng với sự phát triển của Công nghệ tin học trên thế giới nóichung và Việt Nam nói riêng, những năm gần đây tin học đang chiếm một vai tròquan trọng không thể thiếu đợc trong tất cả các lĩnh vực, và luôn đợc làm mục tiêuhàng đầu để con ngời nghiên cứu, tìm tòi và áp dụng những thành tựu to lớn của tinhọc vào trong thực tế, trong những lĩnh vực nh Khoa học, Kinh tế, Kỹ thuật,…
Trong công cuộc đổi mới quản lý kinh tế xã hội hiện nay, việc nghiên cứuphát triển hệ thống thông tin về kinh tế xã hội và khoa học kỹ thuật có vị trí đặc biệtquan trọng bởi hệ thống thông tin kinh tế xã hội có chuẩn xác nhanh nhạy, đáp ứng
đợc mọi yêu cầu điều hành thì công tác quản lý mới đạt hiệu quả thiết thực Ngợclại, thông tin thiếu, thông tin chậm trễ và không chuẩn xác sẽ không chỉ làm ảnh h-ởng đến công cuộc phát triển kinh tế xã hội trớc mắt mà đôi khi còn gây tác hại chocả một thời kỳ rất dài
Vì vậy, nhu cầu cấp thiết đặt ra cho những ngời làm công tác về công nghệthông tin là phải tổ chức một hệ thống thông tin điều hành sắc bén, phục vụ kịp thờimọi yêu cầu của ngời sử dụng
Do nhu cầu thực tế đòi hỏi, việc nghiên cứu hệ thống thông tin kinh tế xã hộiphục vụ điều hành phải đợc sớm hoàn thành và đa vào thực tiễn áp dụng Nó sẽ khắcphục đợc nhiều khó khăn trong việc quản lý và xử lý thông tin
Với việc tin học hóa trong mọi hệ thống, các ngôn ngữ lập trình ra đời ngàycàng nhiều và hoàn thiện Ngôn ngữ Pascal là 1 ngôn ngữ thuật giải ,có tính cấu trúcchặt chẽ ,sáng sủa Hiện nay Pascal đã trở thành một trong các ngôn ngữ phổ biếnnhất ,thích hợp với nhiều ứng dụng khoa học, kỹ thuật, quản ký và đợc coi là ngônngữ thích hợp nhất cho tất cả mọi đối tợng…
Xây dựng một chơng trình kiểm tra đánh máy mô phỏng các kỹ năng đánhmáy của một ngời bình thờng cho phép thực hiện các chức năng về tốc độ đánh máycủa ngời đó với các mức độ khó khác nhau và máy tính sẽ đa ra các thông tin về số
ký tự đánh đợc trong một khoảng thời gian nhất định Đây là một bài tập về lập trìnhnhằm nâng cao kỹ năng về lập trình Turbo Pascal và kỹ năng đồ hoạ
Để hoàn thành bài tập này, tôi đã tham khảo rất nhiều các tài liệu, cũng nh
đợc sự hớng dẫn tận tình của các thầy cô giáo trong khoa CNTH, đặc biệt là thầyThS.Thái Thanh Tùng là ngời chịu trách nhiệm hớng dẫn chính bài tập tực hành tốtnghiệp cho tôi.Tuy nhiên trong quá trình lập trình cũng nh thiết kế đồ hoạ còn cónhững sai sót nên tôi rất mong đợc sự góp ý của các thầy cô và các bạn
Em xin chân thành cảm ơn !
Trang 2Chơng I : các khái niệm cơ bản đợc sử dụng trong chơng
trình Trong chơng trình này chỉ dùng các hàm và thủ tục về đồ hoạ nên tôi chỉ trình bày một số khái niệm liên quan.
I Màn hình đồ hoạ
Màn hình văn bản (Text) đợc thiết lập để hiển thị 25 dòng và mỗi dòng
có thể chứa đợc 80 ký tự.
Màn hình đồ hoạ đợc cấu thành từ một ma trận các chấm ảnh nhỏ
(Pixel) Sự bố trí các Pixel trên màn hình nh thế nào và bao nhiêu đợc gọi là độ phân giải của màn hình (Resolution)
Do mỗi kiểu màn hình có cách xử lý riêng nên ta thiết lập tập tin điều khiển đồ hoạ ( *.bgi ở trong th mục \BGI) và kiểu chữ (Font) ( *.chr ở trong th mục \BGI ).
Đối với màn hình VGA (hiện nay phổ biến ) thì hệ toạ độ là 640 x 480
Có nghĩa là chiều ngang có 640 Pixel, chiều dọc có 480 Pixel.
Trang 4ch¬ng II : ThiÕt kÕ ch¬ng tr×nh phÇn I : C¸c modul chÝnh trong ch¬ng tr×nh.
Các module chính trong chương trình bao gồm:
Số ký tự /phút=Số ký tự đánh được trong một phút
Độ chính xác của việc gõ phím: Độ chính xác= Số ký tự chính xác/Số
ký tự sinh ra*100
Trang 5Phần II : hai thủ tục quan trọng trong chơng trình
I-Thủ tục Vephimnhan(phim :char,kieuve:integer)
Thủ tục này dùng để thực hiện vẽ một phím trên bàn phím khi phím này đợc nhấn.Nêú các phím ký tự đặc biệt trên bàn phím đợc nhấn Ví dụ: < , > ,? ,+, \ , ( , ) thì ngoài phím ký tự ,phím Shift cũng đợc nhấn theo.
Thủ tục này đợc thực hiện nh sau :
Khi ngời sử dụng nhấn một phím trên bàn phím sẽ sinh ra một ký tự của phím vừa nhấn Thủ tục Vephimnhan sẽ quét qua toàn bộ các ký tự trên bàn phím và kiểm tra xem đó có phải là các phím vừa đợc nhấn không Nừu không phải là phím đợc nhấn thì sẽ không vẽ lại phím đó.Nừu phím đợc kiểm tra là phím nhấn thì ta sẽ vẽ lại phím đó theo kiểu vẽ mà ta đa vào
Kiểu vẽ phím ở đây đợc sử dụng gồm có 2 chế độ:
- Chế độ phím đang đợc nhấn :phím đó sẽ bị lún xuống với màu khác tất cả các phím khác trên bàn phím
- Chế độ phím không đợc nhấn :phím đó sẽ đợc vẽ nổi và cùng màu với các phím còn lại trên bàn phím
*Ta có thể đa ra đoạn mã Code của chơng trình nh sau :
Trang 7Thủ tục GoPhim đợc thực hiện nh sau :
Lấy mã phím đợc sinh ra thông qua thủ tục sinh mã phím “SinhMa(Muc)” Kiểm tra xem đó có phải là phím ESC không ,nếu đúng là phím ESC thì sẽ dừng việc gõ phím Ngợc lại thủ tục sẽ chờ ngời sử dụng gõ một phím trong một khoảng thời gian Nếu quá thời gian đó thì thủ tục sẽ bỏ qua và sinh một mã khác Nếu ngời sử dụng gõ phím thì thủ tục sẽ gọi lại thủ tục Vephimnhan
để vẽ lại phím vừa đợc nhấn và kiểm tra xem phím nhấn đã chính xác với phím vừa đợc sinh ra cha
Quá trình này sẽ tiếp tục cho đến khi ngời sử dụng nhấn ESC để kết thúc quá trình gõ phím.
*Ta có thể đa ra đoạn mã Code của chơng trình nh sau:
end;
Delay(1000);{Doi go phim va sinh ma}
Trang 9Const ds :integer=32; {do sau cua phim}
Const dr :integer=34; {do rong cua phim}
Const kc :integer=5; {khoang cach giu cac phim}
Const xmenu:integer=60; {toa do x cua menu}
Const ymenu:integer=10; {toa do y cua menu}
Const drm :integer=120; {do rong cua 1 o menu}
Const dsm :integer=40; {do sau cua 1 o menu}
Const h1:array[1 15]of
string=('ESC','1','2','3','4','5','6','7','8','9','0','-','+','=','<-');
Const hp1:array[1 15] of
integer=(27,49,50,51,52,53,54,55,56,57,48,45,43,61,8);
Const h2:array[1 12] of
string=('Q','W','E','R','T','Y','U','I','O','P','[',']'); Const hp2:array[1 12] of
integer=(90,88,67,86,66,78,77,44,46,39,92,42,47);
Const h5:array[1 5]of string=('?','<','>','(',')');
Const hp5:array[1 5]of integer=(63,60,62,40,41);
Const mnu:array[1 4]of string=('CHU CAI','CHU CAI &
tg_doi :integer; {thoi gian doi go mot phim}
chu :array[1 154] of string; {xau in ra de go phim}
machu :array[1 100] of integer;
xchu,ychu:integer; {xchu=30,ychu=160;//vi tri in ra hang chu ngau nhien}
xhp4,yhp4,xhp2,yhp2,xhp3,yhp3,xhp5,yhp5:integer;
Muc :integer;{Muc go phim}
SoKytu :integer;{So ky tu go duoc}
SoKyTuSinh :integer;{So ky tu sinh cua chuong trinh} TenFile :String;
Trang 10TS :ThiSinh;
F :text;
-}
outtextxy(getmaxx div 2,280,'Ngon ngu lap
trinh: Turbo Pascal');
outtextxy(getmaxx div 2,getmaxy-120,'Giao vien huong dan: thay ThS.Thai Thanh Tung');
outtextxy(getmaxx div 2,getmaxy-100,'Sinh vien:Nguyen Tran Tuan Anh ');
outtextxy(getmaxx div 2-30,getmaxy-80,'Lop: 00B3');
if(mau=7) then setcolor(mau)
{ -Procedure Ve_O(i,x1,y1,ds1,dr1,dam:integer);
Begin
If(dam=0) then setlinestyle(0,1,1)
Trang 12{ -{*****thu tuc ve phim capslock******}
{ -{*****thu tuc ve phim shift******}
{ -{***thu tuc ve phim Ctrl *****}
Trang 13{ -{****thu tuc ve phim Alt***}
{ -{thu tuc ve phim Enter}
Procedure ve_enter(chon:integer);
Var x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6:integer; Begin
Trang 18{ -Thu tuc sinh phim
Trang 20{ -Hien thi thong tin va ghi vao
Writeln('Ket qua kiem tra');
Writeln('Thi sinh dang nhap: ',TS.Hoten);
Writeln('So ky tu/phut: ',TS.Tocdo:8:3);
Writeln('Do chinh xac: ',TS.Chinhxac:8:3); Write('Ban co ghi ket qua khong(C/K)?');
Trang 2120,1);
if(k=0) then
begin Muc:=1;
GoPhim;
end else if(k=1) then begin
Muc:=2;
GoPhim;
end else if(k=2) then
begin Muc:=3;
GoPhim;
end else if (k=3) then Break;
end;
if(c=#0) then begin
ve_o_menu(x+kt*(drm+kc),y,2);
ve_o_menu(x+k*(drm+kc),y,1);
end;
Trang 23Kết luận
Sau một thời gian tập trung nghiên cứu, tham khảo các tài liệu về ngôn ngữlập trình Turbo Pascal, cùng với sự tận tình hớng dẫn của thầy ThS.Thái Thanh Tùngcũng nh các thầy cô giáo trong Khoa Công nghệ Tin học-Viện Đại học Mở Hà nội,tôi đã hoàn thành đợc bài tập thực hành tốt nghiệp của mình Trong quá trình làmbài tập, tôi cũng đã tìm hiều thêm đựoc nhiều vấn đề liên quan đến ngôn ngữ Pascal
và càng thấy đợc những tiện ích của ngôn ngữ bậc cao này trong việc viết các chơngtrình Tuy nhiên, trong một khoảng thời gian có hạn và trình độ còn nhiều hạn chế,bài tập thựcc hành tốt nghiệp này cũng không tránh khỏi những sai sót mắc phải nh-
ng nó cũng đã thể hiện đợc phần nào những cố gắng và tìm tòi của tôi
Tôi mong và hy vọng rằng, sau khi xem xong phần bài tập của tôi, các thầycô giáo sẽ có những ý kiến đóng góp để bài tập đợc hoàn thiện hơn
Xin chân thành cảm ơn các thầy cô !
Trang 24Tài liệu tham khảo:
1 - Ngôn ngữ lập trình Pascal <Quách Tuấn Ngọc-Nhà xuất bản Giáo dục> 2- Cơ sở lý thuyết đồ hoạ <Nhà xuất bản TP Hồ Chí Minh biên soạn> 3- Lập trình hớng đối tợng với Turbo Pascal <Nhà xuất bản Đại học>
4- Object oriented Programming wich Turbo Pascal <Dintermann>
5- Turbo vision Guide <Robert ,Keller >
6- Object oriented Power for Think Pascal programmer <Chuck Sphare> 7- Đồ hoạ vi tính <Tuyển tập Nhà xuất bản Giáo dục>
Trang 25Mục lục
Lời nói đầu 1
Chơng I : các khái niệm cơ bản đợc sử dụng trong chơng trình 2
I Màn hình đồ hoạ 2
II Các hàm đồ hoạ 2
chơng II : Thiết kế chơng trình 4
phần I : Các modul chính trong chơng trình 4
Phần II : hai thủ tục quan trọng trong chơng trình 5
I-Thủ tục Vephimnhan(phim :char,kieuve:integer) 5
II – Thủ tục GoPhim : 7
Chơng III : Phần thể hiện chơng trình 9
Kết luận 23
Tài liệu tham khảo: 24