Trong quá trình viết báo cáo đã nảy sinh ra nhiều ý tưởng về chương trình, mới đầu chương trình được viết theo như phần mô tả trên, dùng mảng để khai báo liệt kê cho các menu, tuy chương trình không có gì sai và chạy tốt. Nhưng khi chạy thì chương trình không được tối đa hóa cho các menumucluc và cả menucon, chẳng hạn như muốn sử dụng một số các phím lóng hoặc các ô của sổ được đặt làm nền cho các menu.
Các câu lệnh được khai báo một các tuần tự, phần nào đễ được khai báo trước dùng các thủ tục Procedure hay hàm Function. Phần của chương trình đã chủ yếu dùng mảng để định dạng cho nó theo một khuôn khổ nhất định, khi đó cảm thấy chương trình quá dài và không mang tích chất chuyên môn hóa. Chương trình chạy trậm, để khắc phục điều đó chương trình đã phải sử dụng đến biến Const. Biến Const cho phép bạn liệt kê toàn bộ các menu chương trình và được đẩy lên phía trên của chương trình, phần còn lại ta chỉ việc khai các toán tử được chọn.
58 trang |
Chia sẻ: maiphuongdc | Lượt xem: 2004 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đề tài Chương trình dạy học pascal, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
' DU LIEU va KIEU DU LIEU';
Muc_luc1[2]:=' LOGIC Boolean va Integer ';
Muc_luc1[3]:=' KIEU Real va CHARACTER';
Muc_luc1[4]:=' DEM DUOC va KHONG DEM DUOC';
Muc_luc1[5]:=' THI DU MINH HOA';
Muc_luc1[6]:=' TRO VE';
end;
ở trên có một số biến khai báo về kích thức độ rộng, độ cao của MucLuc1. Trong pascal nó cho phép xác định các tỷ lệ độ dài theo màn hình từ trên xuống, từ dưới lên, từ trái sang phải, từ phải sang trái. Tất cả các cái đó đều được qui định rõ trong Pascal. Menucon1 được liên kết với các File dữ liệu .
III. Menucon 2
Menucon2 được khai báo hoàn toàn giống như các Menu trên đều được xây dựng từ các hàm có sẵn trong Pascal. Menu con2 khai báo mảng gồm 5 mục mỗi mục là một kiểu dữ liệu khác nhau. Mỗi kiểu dữ liệu đề được mang một thông tin nhất định.
Menucon2 chúa các thông tin về “CAC KIEU KHAI BAO HANG & BIEM”
KHAI BAO HANG & BIEN
KIEU DU LIEU MOI & BIEU THUC
CAC CAU LENH INSTUCION
THI DU MINH HOA
TRO VE
Procedure MENU_C2(option: integer);
Var
C1,H1,RONG1,CAO1,i:integer;
Muc_luc2:Array[1..5] of string;
Begin
Muc_luc2[1]:=' KHAI BAO HANG $ BIEN';
Muc_luc2[2]:=' KIEU DU KIEU MOI & BIEU THUC ';
Muc_luc2[3]:='CAU LENH INSTRUCTION,STATEMENT';
Muc_luc2[4]:=' THI DU MINH HOA';
Muc_luc2[5]:=' TRO VE';
End;
Trong chương trình Menucon 2 khi khai báo cũng phải dùng mảng để liệt kê các mucluc nhỏ cho phép người sử dụng bao quát hết các menu nhỏ.
Chương trình cũng được khai báo trước bằng thủ tục Procedure , để sau chạy chương trình hàm thủ tục sẽ được gọi đến, giúp cho người lập trình kiểm soát được một cách tối đa.
Hàm GetMaxX GetMaxy qui đinh điểm đầu và điểm cuối nó được khai báo là số nguyên Integer.
IV. Menu con3
Mục lục của chương trình menucon3 tổ chức tương tự như các menu trên. Mục lục này chứa rất nhiều các thông tin, đó là những thông tin rất cần thiết không thể thiếu được mọi ngôn ngữ lập trình. Nguyên tắc làm cũng dựa trên cơ sở khai báo mảng một chiều, tạo ra một cách tuần tự từ a đến z .
Thủ tục được khai báo trước và đặt tại một vị trí nào đó trong chương trình chính. Khi chạy thì gọi hàm đó ra là xong.
“ THU TUC RA VAO DU LIEU REALN, READ, WRITELN,WRITE”
THU TUC VIET WRITELN & READ
THU TUC WRITE & READLN
DIEU KIEN IF.. THEN..
CAU LENH CASE ..OF..
THI DU MINH HOA
TRO VE
Procedure MENU_C3 (OPTION: integer);
Var
C1,H1,RONG1,CAO1,i:integer;
Muc_luc3:Array[1..6] of string;
Begin
Muc_luc3[1]:=' THU TUC VIET DU LIEU Write va Writeln';
Muc_luc3[2]:='THU TUC VAO DU LIEU Read va Readln';
Muc_luc3[3]:=' CAU LENH DIEU KIEN If..Then..Else..';
Muc_luc3[4]:=' CAU LENH LUA CHON Case..Of..';
Muc_luc3[5]:=' THI DU MINH HOA';
Muc_luc3[6]:=' TRO VE';
V. Menucon11
Hoàn toàn dựa theo các menu trước được gọi đến.
KHAI NIEM VE DO HOA
CAC CAU LENH DO HOA
THI DU MINH HOA
TRO VE
Thực hiện :
Procedure MENU_C10 (option: integer);
Var
C1,H1,RONG1,CAO1,i:integer;
Muc_luc10:Array[1..4] of string;{ dung luu cac dong menu }
Begin
Muc_luc10[1]:=' KHAI NIEM VE DO HOA';
Muc_luc10[2]:=' CAC CAU LENH DUNG DO HOA ';
Muc_luc10[3]:=' THI DU MINH HOA';
Muc_luc10[4]:=' TRO VE';
End;
Chương iii: Mối quan hệ giữa các Menu
1. Mối quan hệ của menumucluc vơí menucon
MenuMucLuc bao gồm toàn bộ các mục từ mục một cho đến mục mười. Trong mỗi mục nhỏ này thì lại liên kết một mục khác hay còn gọi là menucon. Các menucon nối với các menucon khác thành các mục nhỏ hơn.Từ các mục nhỏ này được liên kết đến các dữ liêu cần thiết .
Menu MucLuc
Menucon
Chương trình menumucluc liên kết được với các menucon nhờ vào các câu lệnh Case..of. Ngôn ngữ Pascal viết khá rõ về câu lệnh này, tiêu biểu như ở trong “ Chương trình dậy hoc pascal trên máy tính ”.
Câu lệnh được viết dưới dạng sau:
Case bt of
Tập hằng 1: Câu lệnh thuộc khối lệnh 1;
Tập hằng 2: Câu lệnh thuộc khối lệnh2;
.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
Tập hằng n: Câu lệnh thuộc khối lệnh n;
Else câu lênh (n+1) hoặc khối lệnh (n+1)
End.
Sau khi kiểm tra chương trình nếu nhận đúng câu lệnh 1 thì thực hiện theo cách tuần tự. Nếu Tập hằng 2 : Câu lệnh thuộc khối lệnh 2; thì máy thực hiện ,trong trường hợp khác gặp Else máy sẽ thự hiện đằng sau Else. Khi đó tên hằng 1 của khối lệnh 1 hoặc khối lệnh 2 sẽ có giá trị là False . Sau khi hoàn tất của câu lệnh Case of thì chương trình bắt đầu được chọn dưới mục Begin,thực hiện câu lệnh từ a -> z .
Sau khi thực hiện câu lệnh hoàn tất các biến đưa ra màn hình. Để quay lại menumucluc ta sử dụng bằng câu lệnh If , khi đó chương trình quay lại và bắt đầu thực hiện từ câu lệnh 1.
Cách thực hiện :
Procedure CALLMENU;
Var
Sott1, k :integer;
Begin
Sott1:=1;
Cleardevice;
Cuasonen;
MENU_MUCLUC (Sott1);
While true do
Begin
key:=readkey;
case key of
#0:
begin
key:=readkey;
if key = #72 then
Begin
Sott1:=Sott1-1; st; td;
if Sott1< 1 then Sott1:= 10;
End;
2. Mối quan hệ của menucon và file dữ liệu
Menucon
File dữ liệu
While true do
Begin
key:=readkey;
case key of
#27:exit;
#13: If Sott1 = 4 then EXIT else
case Sott1 of
1: begin
Restorecrtmode;
Textcolor(7);
Ten9:='d:\ tp \ bin \ 91.pas';
ReadData(ten9);
SetGraphMode(GetGraphMode);
Cuasonen9;
end;
2:begin
Restorecrtmode;
Textcolor(7);
Ten9:='d:\tp\bin\92.pas';
ReadData(ten9);
SetGraphMode(GetGraphMode);
Cuasonen9;
end;
3:begin
Restorecrtmode;
Textcolor(7);
Ten9:='d:\tp\bin\93.pas';
ReadData(ten8);
SetGraphMode(GetGraphMode);
Cuasonen9;
end;
End;
#0:
begin
key:= readkey;
if key= #72 then
Begin
Sott1:= Sott1 - 1; st;
if Sott1 < 1 then Sott1:= 4;
End;
if key= #80 then
Begin
Sott1:= Sott1 + 1; st;
if Sott1 > 4 then Sott1:= 1;
End;
end;
end; { of case key }
Sau khi menucon được gọi , các menucon được gắn với cac File dữ liệu , các File dữ liệu được khai báo trước đó và hoàn toàn độc lập . Chương trình cho phép đọc các File dữ liệu từ các menucon thông qua chương trình đọc dữ liệu đã được thiết kế sẵn . Để đọc các dữ liệu đó ta cũng phải khai báo các câu lệnh điều kiện If .. then.. else , sau khi chọn các File dữ liệu được load lên màn hình thông qua các hàm : Assign(biến_tệp, ten_tep); Reset(bien_tep);
Procedure ReadData(ch:string);
var
f1:text;
var
dd:string;
x, y, i: Integer;
begin
assign(f1,ch);
reset(f1);
while not eof(f1) do
begin
x := wherex;
y := wherey;
readln(f1,dd);
writeln(dd);
if wherey-y>1 then gotoxy(wherex,wherey-1);
if (wherey = 25) and (not eof(f1)) then readkey;
end;
readln;
close(f1);
end;
3. Mối quan hệ chung từ menumucluc đến các menu khác
Menu con
File dữ liệu
Menumụclục
Sau khi đã xây dựng xong chương trình một cách khái quát về các menu chính và các menucon. Từ menuchinh đi đến các menucon và cuối cùng đến các file dữ liệu. Các câu lệnh trong chương trình được sắp xếp theo một trật tự nhất định. Nếu sau mỗi lựa chọn thì dữ liệu được linh với menucon khác, đều thực hiện theo các câu lệnh như nhau, và được bắt đầu từ một vị trí nào đó trong chương trình. Tuy nhiên các phần liên kết dữ liệu được mô tả hoàn toàn giống nhau. Câu lệnh trong menumucluc được viết dưới dạng gọi một chương trình con, chương trình con này viết bằng hàm thủ tục, nó hoàn toàn là một chương trình hoàn chỉnh. Chương trình này chỉ chạy khi một chương trình con khác gọi đến. Sau khi được gọi ra menumucluc sẽ là TRURE tức là nếu đúng thì thực hiện còn sai thi bỏ qua và bắt đầu thực hiện các câu lệnh khá dưới Else. Menucon được gọi ra màn hình mang rất nhiều mục hay được gọi là các menucon của menucon.Các menucon có thể liên kết với các File dữ liệu. Tức nhiên các file dữ liệu này đã có sẵn trong pascal hoặc có thê do người lập chương trình làm ra. Để load được các file đó ta cũng phải khai báo các biến, sử dụng các câu lệnh If .. then .. else hoặc các câu lệnh Case .. of . File được đọc ra, trong ngôn ngữ pascal được xây dựng một công thức chung cho mọi trương hợp khi load file text xong có thể Enter để quay về chương trình. Khi trở về menucon và từ menucon trở về menumucluc. Sau đây là câu lệnh được dùng trong chương trình ‘ dạy học trên máy bằng ngôn ngữ pascal’ :
MENU_MUCLUC (Sott1);
While true do
Begin
key:=readkey;
case key of
#0:
begin
key:=readkey;
Sott1:=Sott1-1; st; td;
if Sott1<1 then Sott1:=10;
End;
if key = #80 then
Begin
Sott1:=Sott1+1; st;td;
if Sott1>10 then Sott1:=1;
if Sott1>10 then Sott1:=1;
End;
end;
#27: exit;
#13: begin procedures[Sott1]; Cuasonen; end;
else
begin
for k:=1 to 10 do
begin
if upcase(muclucindex[k]) = upcase(key) then
begin
procedures[k];
Cuasonen;
end;
end;
end;
end; { of case key }
MENU_MUCLUC(Sott1);
end;{ of While }
End;
Bạn có thể quan sát ở trên các câu lệnh liên kết một cách chặt chẽ, sau mỗi từ khóa là Begin được chọn chạy chương trình. Như trên toán tử lựa chọn câu lệnh đúng Case key of khi chạy nó khiểm tra key đó thì cho phép thực hiên. Hàm if dùng để liên kết các menucon, menumucluc, vị trí của cái được chọn từ 1 đến bao nhiêu gì đó thì nó sẽ thực hiện.
Sott1:=1;
Cleardevice;
Cuasonen10;
MENU_C10 (Sott1);
Begin
key:=readkey;
case key of
#27:exit;
#13: If Sott1=4 then EXIT else
case Sott1 of
1: begin
Restorecrtmode;
Textcolor(7);
Ten10:='d:\ tp\ bin\ 10.pas';
ReadData(ten10);
SetGraphMode(GetGraphMode);
Cuasonen10;
end;
2:begin
Restorecrtmode;
Textcolor(7);
Ten10:='d:\ tp\ bin\ 10.pas';
ReadData(ten10);
SetGraphMode(GetGraphMode);
Cuasonen10;
end;
3:begin
Restorecrtmode;
Textcolor(7);
Ten10:='d:\ tp\ bin\ 10.pas';
ReadData(ten10);
SetGraphMode(GetGraphMode);
Cuasonen10;
end;
4:begin
Restorecrtmode;
Textcolor(7);
Ten10:='d:\ tp\ bin\ 11.pas';
ReadData(ten10);
SetGraphMode(GetGraphMode);
Cuasonen10;
end;
End;
#0:begin
key:= readkey;
if key= #72 then
Begin
Sott1:= Sott1 - 1; st;
if Sott1 < 1 then Sott1:= 4
End;
if key= #80 then
Begin
Sott1:= Sott1 + 1; st;
if Sott1 > 4 then Sott1:= 1;
End;
end;
end; { of case key }
MENU_C10 (Sott1);
end;{ of While }
END;
Trên đây là cách liên kết từ một menucon gọi đến file, chương trình này hoàn toàn chính xác. Nếu menumucluc của menucon chọn là đúng thì menucon này liên kết với dữ liệu đó. Trong trường hợp khác thì các mục lục của menucon khác liên kết tới. Khi trở về ta dùng esc, esc được ràng buộc từ menumucluc đế menucon đến các file rất chặt chẽ với nhau. Các menucon của menumucluc khác cũng dùng các câu lệnh như vậy.
* SƠ Đồ KhốI CHươNG TRìNH
Sơ đồ bao gồm toàn tất cả các menu từ menu chính cho tới các menucon của chương trình, giúp cho việc quản lý các menu tổng quát.
MENU MUC LUC
MENU6
MENU7
MENU8
MENU9
MENU10
MENU4
MENU5
MENU1
MENU2
MENU3
file
file
file
file
Filed
file
file
file
file
file
file
file
file
file
file
file
file
file
file
file
file
file
file
file
file
file
file
file
file
file
file
file
file
file
file
file
file
file
Chương iv: phần hiểu biết sau khi làm chương trình
Trong quá trình viết báo cáo đã nảy sinh ra nhiều ý tưởng về chương trình, mới đầu chương trình được viết theo như phần mô tả trên, dùng mảng để khai báo liệt kê cho các menu, tuy chương trình không có gì sai và chạy tốt. Nhưng khi chạy thì chương trình không được tối đa hóa cho các menumucluc và cả menucon, chẳng hạn như muốn sử dụng một số các phím lóng hoặc các ô của sổ được đặt làm nền cho các menu.
Các câu lệnh được khai báo một các tuần tự, phần nào đễ được khai báo trước dùng các thủ tục Procedure hay hàm Function. Phần của chương trình đã chủ yếu dùng mảng để định dạng cho nó theo một khuôn khổ nhất định, khi đó cảm thấy chương trình quá dài và không mang tích chất chuyên môn hóa. Chương trình chạy trậm, để khắc phục điều đó chương trình đã phải sử dụng đến biến Const. Biến Const cho phép bạn liệt kê toàn bộ các menu chương trình và được đẩy lên phía trên của chương trình, phần còn lại ta chỉ việc khai các toán tử được chọn.
Ngoài ra có thể khai thác rất nhiều tính năng của Pascal, chẳng hạn như bạn tìm một số các chương trình nhỏ đã có sẵn trong các ví dụ của phần giúp đỡ. Trong chương trình nay đã có sử dụng một số tính năng như vậy. Chẳng hạn như xây dựng một ngày giờ hệ thống của máy hoặc có thể vẽ ra các ô của sổ nhỏ. Trong quá trình chạy thử không được thuận tiên, nhất là chỉ mỗi nhận mũi tên lên xuống chọn lựa các menu. Do đó để tiến chương trình bằng một số các lệnh Hotkey sử dụng các phím lóng mà không cần phải dùng Enter hoặc mũi tên lên xuống. Biến Hotkey trong phần trợ giúp nói rất rõ. Trong chương trình này đã phải dùng đế biến đó, làm cho linh họat hơn.
Chương trình chỉ dừng lại ở mức độ đó thôi, vì thời gian quá ngắn không thể đáp ứng được theo như mong muốn. Nếu ý tưởng này được áp dụng, mở rộng, chương trình sẽ được xây dựng ở mức độ cao hơn, chương trình sẽ đa tính năng hơn.
Sau đây là chương trình đã được hoàn tất:
{$F+}
PROGRAM Menu_doc;
USES dos, crt, Graph;
Type
MucLucArr = array[1..10] of string;
MucLucArr1 = array[1..6] of string;
MucLucArr2 = array[1..5] of string;
MucLucArr3 = array[1..6] of string;
MucLucArr4 = array[1..5] of string;
MucLucArr5 = array[1..4] of string;
MucLucArr6 = array[1..5] of string;
MucLucArr7 = array[1..5] of string;
MucLucArr8 = array[1..5] of string;
MucLucArr9 = array[1..4] of string;
MucLucArr10 = array[1..4] of string;
procedural = procedure;
const
hotkey='#';
Ten_Muc : MucLucArr = (' CHUONG #MOT',
' CHUONG #HAI',
' CHUONG #BA',
' CHUONG #BA',
' CHUONG B#ON',
' CHUONG #NAM',
' CHUONG #SAU',
' CHUONG BA#Y',
' CHUONG #TAM',
' CHUONG #CHIN',
' CHUONG M#UOI');
Muc_luc1 : MucLucArr1 = (' DU LIEU va KIEU DU LIEU',
' LOGIC Boolean va Integer ',
' KIEU Real va CHARACTER',
' DEM DUOC va KHONG DEM DUOC',
' THI DU MINH HOA',
' TRO VE');
Muc_luc2:MucLucArr2 =( ' KHAI BAO HANG $ BIEN',
' KIEU DU KIEU MOI & BIEU THUC ',
' CAU LENH INSTRUCTION,STATEMENT',
' THI DU MINH HOA',
' TRO VE');
Muc_luc3:MucLucArr3 =( ' THU TUC VIET DU LIEU Write va Writeln',
' THU TUC VAO DU LIEU Read va Readln',
' CAU LENH DIEU KIEN If..Then..Else..',
' CAU LENH LUA CHON Case..Of..',
' THI DU MINH HOA',
' TRO VE');
Muc_luc4:MucLucArr4 =( ' VONG LAP Repeat va While ',
' LENH DIEU KHIEN (GOTO)',
' VONG LAP For..',
' THI DU MINH HOA',
' TRO VE');
Muc_luc5:MucLucArr5 =( ' KHAI NIEM VE CHUONG TRINH CON',
' THU TUC Frocedure va Function ',
' DON VI CHUONG TRINH Unit ',
' TRO VE');
Muc_luc6:MucLucArr6 =( ' KHAI NIEM CHUNG VE MANG',
' KIEU DU LIEU CO CAU TRUC MANG ',
' MANG 1 CHIEU va 2 CHIEU',
' THI DU MINH HOA',
' TRO VE');
Muc_luc7:MucLucArr7 =( ' KHAI NIEM VA DINH NGHIA',
' BAN NGHI CO CAU TRUC THAY DOI',
' MO TA va SU DUNG Record ',
' CAU LENH With ',
' TRO VE');
Muc_luc8:MucLucArr8 =( ' CAU TRUC PHAN LOAI',
' OPEN va CLOSE OF FILE ',
' READFILE DA CO',
' TEXT FILE',
' TRO VE');
Muc_luc9:MucLucArr9 =( ' DINH NGHIA XAU KY TU',
' CAC THAO TAC XAU KY TU ',
' THI DU VE String',
' TRO VE');
Muc_luc10:MucLucArr10 = ( ' KHAI NIEM VE DO HOA',
' CAC CAU LENH DUNG DO HOA '
' THI DU MINH HOA',
' TRO VE');
VAR
procedures : array[1..10] of procedural;
muclucindex: array[1..10] of char;
muclucindex: array[1..10] of char;
ten1,ten2,ten3,ten4,ten5,ten6,ten7,ten8,ten9,ten10:string;
key: char;
tieu_de, tieu_de_5, tieu_de_0, tieu_de_8, tieu_de_9: string;
tieu_de_10, tieu_de_6, tieu_de_11, tieu_de_12: string;
tieu_de_13, tieu_de_701, tieu_de_14, tieu_de_1: string;
{*doc tep*} {----------------------------------------}
procedure ReadData(ch:string);
var
f1:text;
var
dd:string;
x, y, i: Integer;
begin
assign(f1,ch);
reset(f1);
while not eof(f1) do
begin
x := wherex;
x := wherex;
y := wherey;
readln(f1,dd);
writeln(dd);
if wherey-y>1 then gotoxy(wherex,wherey-1);
if (wherey = 25) and (not eof(f1)) then readkey;
end;
readln;
close(f1);
end;
{----------------------------------------------------}
Procedure MhDohoa;
Var
Gd, Gm : Integer;
ktra:integer;
Path:String;
Begin
Path:= 'c:\TP\BGI';
Repeat
Gd:=Detect;
Gd:=Detect;
InitGraph(Gd,Gm,Path);
Ktra:=GraphResult;
If Ktra0 then
begin
Write('Loi BGI. Go lai Path hoac ENTER de ra!');
readln(Path);If Path='' then EXIT
end
Until Ktra=0
End;
Procedure Cua_so(x1,y1,x2,y2,vien,Mau_tren,Mau_duoi,Mau_nen:integer);
Var i:integer;
Begin
For i:=1 to vien do
begin
SetColor(15);
line(x1+i,y1+i,x2-i,y1+i);{Tren}
line(x1+i,y1+i,x1+i,y2-i);{Trai}
SetColor(15);
line(x1+i,y2-i,x2-i,y2-i); {Duoi}
Line(x2-i,y2-i,x2-i,y1+i); {Phai}
Line(x2-i,y2-i,x2-i,y1+i); {Phai}
end;
SetFillStyle(1,Mau_nen);
Bar(x1+vien,y1+vien,x2-vien,y2-vien);
End;
{-----------------------------------------}
procedure st;
begin
Sound(1000); { Beep}
Delay(200); { For 200 ms }
NoSound; { Relief! }
end;
{------------------------------------------}
function toString(w: word): string;
var x:string;
begin
str(w, x);
toString:=x;
end;
PROCEDURE td;
VAR
year,ng, month, day: word;
date:string;
begin
getdate(year, month, day, ng);
date := toString(day) + '/' + toString(month) + '/' + toString(year);
Settextstyle(1,horizdir,1);
SETCOLOR(14);
outtextxy(490,340,' ESC ');
SETCOLOR(15);
SETCOLOR(15);
Settextstyle(0,horizdir,1);
outtextxy(490,410,'HA NOI ');
outtextxy(475,422,date);
end;
{--------------------------------}
{-------------------------------------------------}
procedure MENU_MUCLUC (option: integer);
Var
C,H,RONG,CAO,i, j:integer;
isHot: boolean;
oldColor:word;
begin
RONG:=280;CAO:=33;C:=(600 -rong) div 2; H:=105;
Settextstyle(1, horizdir, 1);
for i:=1 to 10 do
begin
if i = option then
Begin
cua_so(c, h+(i-1)*cao, c+rong,h+i*cao, 2,0,0,2);
cua_so(c, h+(i-1)*cao, c+rong,h+i*cao, 2,0,0,2);
setcolor(15);
End
else
Begin
cua_so(c, h+(i-1)*cao, c+rong,h+i*cao, 2,0,0,3);
setcolor(0);
End;
moveto(c+4, h+(i-1)*cao+4);
isHot := false;
for j:=1 to Length(Ten_Muc[i]) do
begin
if Ten_Muc[i][j] = '#' then
begin
isHot := true;
continue;
end;
if isHot = true then
begin
muclucindex[i] := Ten_Muc[i][j];
oldColor := getcolor;
setcolor(yellow);
outtext(Ten_Muc[i][j]);
setcolor(oldColor);
isHot := false;
end
else
begin
outtext(Ten_Muc[i][j]);
end;
end;
end;
end;
(*---------------------------------------------*)
Procedure MENU_C1(option : integer);
Var
C1,H1,RONG1,CAO1,i:integer;
Begin
RONG1:=250;CAO1:=35;C1:=(GetmaxX -rong1) div 2; H1:=125;
settextstyle(0,horizdir,1);
settextstyle(0,horizdir,1);
setbkcolor(1);
for i:=1 to 6 do
begin
if i=option then
Begin
cua_so(c1, h1+(i-1)*cao1, c1+rong1, h1+i*cao1, 2,0,0,2);
setcolor(15);
End
else
Begin
cua_so(c1, h1+(i-1)*cao1, c1+rong1, h1+i*cao1, 2,0,0,3);
setcolor(0);
End;
outtextxy(c1+13, h1+(i-1)*cao1+13, Muc_luc1[i]);
end;
end;
{--------------------------------}
Procedure MENU_C2(option: integer);
Var
C1,H1,RONG1,CAO1,i:integer;
C1,H1,RONG1,CAO1,i:integer;
Begin
RONG1:=275;CAO1:=35;C1:=(GetmaxX -rong1) div 2; H1:=145;
setbkcolor(1);
settextstyle(0,horizdir,1);
for i:=1 to 5 do
begin
if i=option then
Begin
cua_so(c1,h1+(i-1)*cao1,c1+rong1,h1+i*cao1,2,0,0,2);
setcolor(15);
End
else
Begin
cua_so(c1,h1+(i-1)*cao1,c1+rong1,h1+i*cao1,2,0,0,3);
setcolor(0);
End;
outtextxy(c1+13,h1+(i-1)*cao1+13,Muc_luc2[i]);
end;
End;
(*------------------------------*)
Procedure MENU_C3 (OPTION: integer);
Var
C1,H1,RONG1,CAO1,i:integer;
Begin
RONG1:=325;CAO1:=35;C1:=(GetmaxX -rong1) div 2; H1:=130;
setbkcolor(blue);
settextstyle(0,horizdir,1);
for i:=1 to 6 do
begin
if i=option then
Begin
cua_so(c1,h1+(i-1)*cao1,c1+rong1,h1+i*cao1,2,0,0,2);
setcolor(15);
End
else
Begin
cua_so(c1,h1+(i-1)*cao1,c1+rong1,h1+i*cao1,2,0,0,3);
setcolor(0);
End;
End;
outtextxy(c1+13,h1+(i-1)*cao1+13,Muc_luc3[i]);
end;
End;
{--------------------------------}
Procedure MENU_C10 (option: integer);
Var
C1,H1,RONG1,CAO1,i:integer;
Begin
RONG1:=240;CAO1:=35;C1:=(GetmaxX -rong1) div 2; H1:=160;
setbkcolor(blue);
settextstyle(0,horizdir,1);
for i:=1 to 4 do
begin
if i=option then
Begin
cua_so(c1,h1+(i-1)*cao1,c1+rong1,h1+i*cao1,2,0,0,2);
setcolor(15);
End
End
else
Begin
cua_so(c1,h1+(i-1)*cao1,c1+rong1,h1+i*cao1,2,0,0,3);
setcolor(0);
End;
outtextxy(c1+13,h1+(i-1)*cao1+13,Muc_luc10[i]);
end;
End;
{-------------------------------------------------------------------}
Procedure Cuasonen1;
begin
CUA_SO(85,33,585,390,1,1,0,8);
CUA_SO(75,48,569,403,2,1,0,7);
CUA_SO(125,348,230,380,1,1,0,8);
CUA_SO(115,360,220,390,1,1,0,9);
CUA_SO(530,348,430,380,1,1,0,8);
CUA_SO(530,348,430,380,1,1,0,8);
CUA_SO(520,360,420,390,1,1,0,9);dt;
Chu_bong(190,70,4,9,14,Tieu_de_0);
Chu_bong(81,100,4,9,14,Tieu_de_1);
end;
Procedure Cuasonen2;
begin
CUA_SO(95,30,578,390,1,1,0,8);
CUA_SO(80,48,563,403,2,1,0,7);
CUA_SO(125,348,230,380,1,1,0,8);
CUA_SO(115,360,220,390,1,1,0,9);
CUA_SO(530,348,430,380,1,1,0,8);
CUA_SO(520,360,420,390,1,1,0,9);dt;
Chu_bong(150,80,4,9,14,Tieu_de_2);
Chu_bong(120,110,4,9,14,Tieu_de_201);
end;
Procedure Cuasonen3;
begin
CUA_SO(95,30,578,390,1,1,0,8);
CUA_SO(80,45,563,403,2,1,0,7);
CUA_SO(125,348,230,380,1,1,0,8);
CUA_SO(125,348,230,380,1,1,0,8);
CUA_SO(115,360,220,390,1,1,0,9);
CUA_SO(530,348,430,380,1,1,0,8);
CUA_SO(520,360,420,390,1,1,0,9);dt;
Chu_bong(150,70,4,9,14,Tieu_de_3);
Chu_bong(140,100,4,9,14,Tieu_de_4);
end;
procedure Cuasonen10;
begin
CUA_SO(115,40,560,385,1,1,0,8);
CUA_SO(100,55,545,400,2,1,0,7);
CUA_SO(130,348,230,380,1,1,0,8);
CUA_SO(120,360,220,390,1,1,0,9);
CUA_SO(530,348,430,380,1,1,0,8);
CUA_SO(520,360,420,390,1,1,0,9);dt;
Chu_bong(155,90,4,9,14,Tieu_de_12);
end;
procedure Cuasonen;
begin
setbkcolor(0);
CUA_SO(35,15,590,465,4,0,0,5); {y1,x1,y2,x2}
CUA_SO(475,422,570,395,1,1,0,8);
CUA_SO(465,432,560,405,1,1,0,2);
CUA_SO(475,355,570,328,1,1,0,8);
CUA_SO(465,365,560,338,1,1,0,2); td;
Chu_bong(110,70,5,9,15,Tieu_de_14);
Chu_bong(90,40,5,9,15,tieu_de_13);
end;
{---------------*hetcuasonen***---------}
{------------------------------------}
Procedure MENU_CON_C1;
Var Sott1:integer;
Begin
Sott1:=1;
Cleardevice;
Cuasonen1;
Cuasonen1;
MENU_C1(Sott1);
While true do
Begin
key:=readkey;
case key of
#27:exit;
#13: If Sott1= 6 then EXIT else
case Sott1 of
1: begin
Restorecrtmode;
Textcolor(7);
Ten1:='d:\tp\bin\dl.pas';
ReadData(ten1);
SetGraphMode(GetGraphMode);
Cuasonen1;
end;
2:begin
Restorecrtmode;
Textcolor(7);
Ten1:='d:\tp\bin\12.pas';
Ten1:='d:\tp\bin\12.pas';
ReadData(ten1);
SetGraphMode(GetGraphMode);
Cuasonen1;
end;
3:begin
Restorecrtmode;
Textcolor(7);
Ten1:='d:\tp\bin\13.pas';
ReadData(ten1);
SetGraphMode(GetGraphMode);
Cuasonen1;
end;
4:begin
Restorecrtmode;
Textcolor(7);
Ten1:='d:\tp\bin\14.pas';
ReadData(ten1);
SetGraphMode(GetGraphMode);
Cuasonen1;
end;
end;
5:begin
Restorecrtmode;
Textcolor(7);
Ten1:='d:\tp\bin\14.pas';
ReadData(ten1);
SetGraphMode(GetGraphMode);
Cuasonen1;
end;
End;
#0:
begin
key := readkey;
if key = #72 then
Begin
Sott1:= Sott1 - 1; st;
if Sott1 < 1 then Sott1:= 6;
End;
if key = #80 then
Begin
Sott1:= Sott1 + 1; st;
Sott1:= Sott1 + 1; st;
if Sott1 > 6 then Sott1:= 1;
End;
end;
end; { of case key }
MENU_C1(Sott1);
end;{ of While }
End;
{--------------------------------}
Procedure MENU_CON_C2;
Var Sott1:integer;
Begin
Sott1:= 1;
Cleardevice;
Cuasonen2;
MENU_C2 (Sott1);
While true do
Begin
key:=readkey;
case key of
case key of
#27:exit;
#13: If Sott1= 5 then EXIT else
case Sott1 of
1: begin
Restorecrtmode;
Textcolor(7);
Ten2:='d:\tp\bin\21.pas';
ReadData(ten2);
SetGraphMode(GetGraphMode);
Cuasonen2;;
end;
2:begin
Restorecrtmode;
Textcolor(7);
Ten2:='d:\tp\bin\22.pas';
ReadData(ten2);
SetGraphMode(GetGraphMode);
Cuasonen2;
end;
3:begin
3:begin
Restorecrtmode;
Textcolor(7);
Các file đính kèm theo tài liệu này:
- thiet ke he thong nn Pascal-63.doc