Trong menucon ba này có rất nhiều cái hay. Các mục có các câu lệnh cơ
bản mà bạn cần phải biết rõ, dùng mũi tên lên xuống chọn mục bất kỳ, giả sử
bạn đã chọn vào mục một, bạn có thể tìm rất nhiều về thông tin để xem cách viết
thủ tục ra vào dữ liệu và các câu lệnh vong lặp. Bạn muốn thoát khỏi menucon
bằng ESC hay dùng mũi tên chọn mục trở về.
61 trang |
Chia sẻ: lylyngoc | Lượt xem: 2659 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Luận văn 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
Trang1
Luận văn
Chương trình dạy học
pascal
Trang2
PHẦN A: KHÁI QUÁT VỀ CHƯƠNG TRÌNH
I. GIỚI THIỆU VỀ ĐỀ TÀI
Theo xu hứng thế phát triển của thời đại hiện nay, công nghệ thông tin
đóngvai trò rất quan trọng trong mọi lĩnh vực kinh tế, chính trị, xã hội, nó đã ăn
sâu vào mọi lĩnh vực và tầm quan trọng của công nghệ thông tin trong thời đại
hiện nay là một điều không thể phủ nhận. Chiếc máy tính đã trở nên thông dụng,
ta có thể thấy nó ở mọi nơi trong mọi lĩnh vực, từ văn phòng công sở của các
công ty đến máy tính trong mỗi gia đình.
Hiện nay ở nước ta việc sử dụng rộng rãi máy tính không còn chỉ bó hẹp
trong viện nghiên cứu , các trường đại học , các trung tâm máy tính mà
cònmở rộng ra mọi cơ quan ,xí nghiệp Ngày nay tin học đã thâm nhập
vào tất cả mọi hoạt động của toàn xã hội loài người và máy tính điện tử trở
thành công cụ đắc lực không chỉ giảm nhẹ lao đông (kể cả lao động trí óc) mà
còn giúp thêm con người những năng lực mới .
Việt Nam hiện nay máy tính, đặc biệt máy vi tính trong những năm gần
đây đã quen thuộc với mọi người. Bước đầu tin học đã được đưa vào các
trường trung học ,đại học nhằm đi tới phổ cập tin học cho mọi người . Số
lượng máy tính ngày một nhiều , do vậy việc giảng dạy tin học trong các
trường đại học, trung học và một bước trong các trường phổ thông cũng đang
được đẩy mạnh đi đôi với việc tăng cường trang bị máy vi tính., và để khai
thác hết công suất của máy tính.
Ngôn ngữ lập trình Pascal do giáo sư N.Wirth sáng tác năm 1970 , là một
ngôn ngữ thuật giải , có tính cấu trúc chặt chẽ ,sáng sủa và với mục đích làm
công cụ giảng dạy cho sinh viên.Song hiện nay Pascal đã trở thành một trong
các ngôn ngữ phổ biến nhất , thích hợp với nhiều ứng dụng khoa học, kỹ thuật,
quản lý và được coi là ngôn ngữ thích hợp nhất cho tất cả các đối tượng nhập
môn tin học như cán bộ , học sinh phổ thông , sinh viên Học Pascal các bạn học
sinh ,sinh viên còn học được lối tư duy rõ ràng, mạch lạc.
Trang3
Do vậy để đáp ứng nhu cầu về việc học tin học cũng như học các môn lập
trình, chung tôi xin trân trọng mang tới cho các ban học sinh, sinh viên ,ban dọc
chương trình “chương trỡnh dạy học pascal”.
Chương trình có thể là một trong những tài liệu tốt để mọi người có thể học
và tự học Pascal. Chương trình gồm đầy đủ về lí thuyết và một số dạng bài ví dụ
cụ thể.
II. MỤC LỤC CỦA CHƯƠNG TRÌNH
1. Chương I
a. Dữ liệu và kiểu dữ liệu
b. Logic và integer
c. Kiểu thực và Character
d. Kiểu dữ liệu đếm được và không đếm được
e. Ví dụ minh họa
2. Chương II
a. Khai báo hằng
b. Các kiểu dữ liệu mới và biểu thức
c. Các câu lệnh Instruction
d. Ví dụ minh họa
3. Chương III
a. Thủ tục Write
b. Thủ tục Read
c. Câu lệnh If.. then..
d. Câu lệnh Case .. of..
e. Ví dụ minh họa
4. Chương IV
a. Vòng lặp Repeat
b. Lệnh điều khiển Goto
c. Vòng lặp For
d. Ví dụ minh họa
Trang4
5. Chương V
a. Khái niệm về chương trình con
b. Thủ tục Function
c. Đơn vị chu trình Unit
d. Vi dụ minh họa
6. Chương VI
a. Khái niệm mảng
b. Khái niệm cấu trúc mảng
c. Mảng một chiều và hai chiều
d. Ví dụ minh họa
7. Chương VII
a. Khái niệm bản ghi
b. Bản ghi có cấu trúc
c. Mô tả và sử dụng Record
d. Câu lệnh With
8. Chương VIII
a. Cấu trúc phân loại
b. Mở và đóng các File
c. Đọc file đã có trên đĩa
d. Text file
9. Chương IX
a. Định nghĩa xâu kí tự
b. Thao tác xâu kí tự
c. Ví dụ minh họa
10. Chương X
a. Khái niệm về đồ họa
b. Các câu lệnh đồ họa
c. Ví dụ minh họa
Trang5
PHẦN B: KHÁI QUÁT VÀ THIẾT KẾ HỆ THỐNG
CHƯƠNG TRÌNH
CHƯƠNG I : KHÁI QUÁT VỀ CHƯƠNG TRÌNH
I.I. GIỚI THIỆU SƠ LƯỢC VỀ CHƯƠNG TRÌNH
Như đã giới thiệu với bạn đọc ở chương I, ngôn ngữ Pascal là ngôn ngữ
thuật giải có các cấu trúc chặt chẽ. Do vậy thông qua lưu đồ thuật giải của
chương trình, người quản lý có thể xây dựng cũng như cập nhật dữ liệu, phát
triển phần mềm một cách có hiệu quả nhất. Để hiểu rõ vấn đề ta vào xem xét
một số vấn đề cũng như thiết kế sau.
1. Tìm hiểu
Triển khai đề tài áp dụng từ trung tâm học sinh chúng em đã tìm tòi nghiên
cứu áp dụng một sách về lập trình Pascal hiện nay như : ngôn ngữ lập trình
Pascal, tự học lập trình Pascal, 100 bài toán lập trình Pascal... Để đưa ra những
Menu giới thiệu tới bạn đọc cách học ngôn ngữ lập trình Pascal, một cách nhanh
nhất và hiệu quả nhất.
2. Phân tích
Dựa trên những ý tưởng và tham khảo một số sách trên, em đã phân tích và
triển khai áp dụng vào đề tài thực tập. Tuy có chút ít thay đổi nhưng em vẫn
luôn tôn trọng tác giả sách cũng như ý kiến của người dụng.
Phân tích thiết kế những yêu cầu trọng yếu của phần mềm, triển khai
những yêu cầu quan trọng trước như lý thuyết còn những phần quan trọng
khác thực hiện sau đầy đủ hơn như phần bài tập áp dụng....
Quá trình phân tích(thuật giải) bao gồm các bước sau: Xáđịnh yêu cầu của
đề bài, tìm kiếm và bổ xung dữ liệu, thiết kế giao diện chương trình.
Trang6
I.II. THIẾT KẾ SƠ LƯỢC MENU HỆ THỐNG
- Thiết kế xây dựng giao diện giới thiệu đề tài tốt nghiệp bằng ngôn ngữ
TorboPascal.
- Thiết kế Munnu chương trình và màn hình đồ họa bằng ngôn ngữ
TorboPascal.
- Để thể hiện mô hình của toàn bộ hệ thống ta xem các sơ đồ đặc tả chức
năng sau.
1. Sơ đồ chức năng
Sơ đồ chức năng Menu chính
Menu chương trình
CHƯƠNG MỘT
CHƯƠNG HAI
CHƯƠNG BA
CHƯƠNG BỐN
CHƯƠNG NĂM
CHƯƠNG MƯỜI
CHƯƠNG CHÍN
CHƯƠNG TÁM
CHƯƠNG SÁU
CHƯƠNG BẨY
Trang7
2. Sơ đồ menu chương một
3. Sơ đồ Menu chương hai
4. Mô hình sơ đồ Menu chương ba
CHƯƠNG MỘT
Dữ liệu
và kiểu
dữ liệu
Logic và
Interger
Kiểu
character
Dữ liệu không
đếm được và
đếm được
Ví dụ
minh họa
Trở về
menu
chính
Chương ba
Thủ tục
write
Thủ tục
read
Câu lênh
if..then..
Vi dụ
minh họa
Trở về Menu
chính
Chương hai
Khai báo
hằng
Kiểu dữ
liệu mới
và biểu
Câu lệnh
Intruction
Vi dụ minh họa Trở về menu
chính
Trang8
5. Mô hình Menu chương bốn
6. Mô hình Menu chương năm
7. Mô hình Menu chương sáu
Chương năm
đơn vị
chu trình
unit
Thủ tục
funcion
Khái niệm
về chương
trình con
Trở về
Menu
chính
Chương sáu
Câu lệnh
If ...
then...
Mảng
một chiều
,hai chiều
Khái
niệm
cấu trúc
mảng
Khái niệm
mảng
Vi dụ
minh
họa
Chương bốn
Vòng lặp
repeat
Lệnh Goto Vòng
lặp for
Ví dụ
minh
họa
Trở về
menu
chính
Trang9
8. Mô hình Menu chương bảy
9. Sơ đồ Menu chương tám
10. Sơ đồ Menu chương chín
Chương bảy
Mô tả và sử
dụng record
Khái niệm
bản ghi
Bản ghi có
cấu trúc
Câu lệnh with Trở về Menu
chính
Chương tám
Cấu trúc
phân loại
Mở và đóng
tệp
đọc file
trên đĩa
Text file Trở về
Menu chính
Chương chín
định nghĩa
xâu kí tự
Thao tác
xâu kí tự
Ví dụ
minh họa
Trở về
Menu chính
Trang10
11. Sơ đồ Menu chương mười
Chương mười
Khái
niệm về
đồ họa
Các câu
lệnh đồ
họa
Ví dụ
minh họa
Trở về Menu
chính
Trang11
CHƯƠNG II: MÔ TẢ CHƯƠNG TRÌNH
I. CHƯƠNG TRÌNH MỤC LỤC
Chương trình chính được liệt kê ra mucluc , cho phép người sử dụng
bao quát toàn bộ các Menu và quản lý chương trình tốt nhất .
Để vẽ ra được một cái Menu chính thì có nhiều cách làm khác nhau. Bạn
có thể dùng hàm GoToxy(i, j). Ngoài ra có thể dùng mảng để khai báo rồi cho
mảng đó chay từ 1..n .
Ten_Menu: Array[1..n] of String;
Mảng có thể là Integer hoặc String. Trong Menu này thì được khai báo
thuộc String. Mảng thì được khai báo trong hàm Var. Chương trình chính được
khai báo trước dùng hàm thủ tục Procedure.
Cách thực hiện:
Procedure MENU_MUCLUC (option: integer);
Var
C,H,RONG,CAO,i: integer;
CHUONG MOT
CHUONG HAI
CHUONG BA
CHUONG BON
CHUONG NAM
CHUONG SAU
CHUONG BAY
CHUONG TAM
CHUONG CHIN
CHUONG MUOI
Trang12
Ten_Muc:Array[1..10] of string; { dung luu cac dong menu }
begin
Ten_Muc[1]:=' CHUONG MOT ';
Ten_Muc[2]:=' CHUONG HAI ';
Ten_Muc[3]:=' CHUONG BA ';
Ten_Muc[4]:=' CHUONG BON ';
Ten_Muc[5]:=' CHUONG NAM ';
Ten_Muc[6]:=' CHUONG SAU';
Ten_Muc[7]:=' CHUONG BAY ';
Ten_Muc[8]:=' CHUONG TAM';
Ten_Muc[9]:=' CHUONG CHIN';
Ten_Muc[10]:=' CHUONG MUOI ';
RONG:=280;CAO:=33;C:=(600 -rong) div 2; H:=105;
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);
setcolor(15);
End
else
Begin
cua_so(c,h+(i-1)*cao,c+rong,h+i*cao,2,0,0,3);
setcolor(0);
End;
textbackground(0);
sttextstyle(1,horizdir,1);
outtextxy(c+4,h+(i-1)*cao+4,Ten_Muc[i]);
end;
end;
Trang13
II. CHƯƠNG TRÌNH MENUCON 1
Để tạo một Menucon thì cũng không khác gì so với Menu Chính của
chương trình. Menucon được tạo ra từ khai báo mảng .
Mục_lục1[1..6] of String;
Vị trí đặt của mảng là không cố định, ta có thể thu nhỏ mảng lại, phần đó
được khai báo sau. Trong các MucLuc này được đánh tên nhãn một cách đầy đủ,
chương trình Menucon1 khai báo trước , dùng hàm thủ tục.
Menu con1: Được gán với nhãn
“ CAC KIEU DU LIEU
DU LIEU CO SO & DON GIAN CHUAN ”
Các câu lệnh thực hiện:
Procedure MENU_C1(option : integer);
Var
C1,H1,RONG1,CAO1,i:integer;
Muc_luc1:Array[1..6] of string;
Begin
Muc_luc1[1]:=' 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;
DU LIEU & KIEU DU KIEU
LOGIC & INTEGER
KIEU REAL & CHARACTER
DEM DUOC &KHONG DEM DUOC
THI DU MINH HOA
TRO VE
Trang14
Ở 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”
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;
KHAI BAO HANG & BIEN
KIEU DU LIEU MOI & BIEU THUC
CAC CAU LENH INSTUCION
THI DU MINH HOA
TRO VE
Trang15
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”
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';
THU TUC VIET WRITELN & READ
THU TUC WRITE & READLN
DIEU KIEN IF.. THEN..
CAU LENH CASE ..OF..
THI DU MINH HOA
TRO VE
Trang16
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.
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;
KHAI NIEM VE DO HOA
CAC CAU LENH DO HOA
THI DU MINH HOA
TRO VE
Trang17
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 .
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 .
Menu
MucLuc Menucon
Trang18
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
Trang19
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);
Trang20
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;
Trang21
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
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
Menu con File dữ liệu Menumụclục
Trang22
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;
Trang23
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;
Trang24
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;
Trang25
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.
Trang26
Trang27
* 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
Trang28
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:
Trang29
{$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',
Trang30
' 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',
Trang31
' 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*} {----------------------------------------}
Trang32
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
Trang33
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;
{-----------------------------------------}
Trang34
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;
{--------------------------------}
Trang35
{-------------------------------------------------}
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;
Trang36
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
Trang37
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);
Trang38
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;
{--------------------------------}
Trang39
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);
Trang40
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;
Trang41
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);
Trang42
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);
Trang43
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
Trang44
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';
Trang45
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);
Ten2:='d:\tp\bin\23.pas';
ReadData(ten2);
SetGraphMode(GetGraphMode);
Cuasonen2;
end;
4:begin
Restorecrtmode;
Textcolor(7);
Ten2:='d:\tp\bin\24.pas';
ReadData(ten2);
SetGraphMode(GetGraphMode);
Cuasonen2;
end;
End;
Trang46
#0:
begin
key:=readkey;
if key= #72 then
if key= #72 then
Begin
Sott1:= Sott1 - 1; st;
if Sott1 < 1 then Sott1:= 5;
End;
if key= #80 then
Begin
Sott1:= Sott1 + 1; st;
if Sott1 > 5 then Sott1:= 1;
End;
end;
end; { of case key }
MENU_C2(Sott1);
end;{ of While }
End;
{--------------------------------}
Procedure MENU_CON_C3;
Var Sott1:integer;
Begin
Sott1:=1;
Cleardevice;
Cuasonen3;
MENU_C3(Sott1);
While true do
Begin
key:=readkey;
Trang47
case key of
#27:exit;
#13: If Sott1= 6 then EXIT else
case Sott1 of
1: begin
Restorecrtmode;
Textcolor(7);
Ten3:='d:\tp\bin\31.pas';
ReadData(ten3);
SetGraphMode(GetGraphMode);
Cuasonen3;
end;
2:begin
Restorecrtmode;
Textcolor(7);
Ten3:='d:\tp\bin\32.pas';
ReadData(ten3);
SetGraphMode(GetGraphMode);
Cuasonen3;
end;
3:begin
Restorecrtmode;
Textcolor(7);
Ten3:='d:\tp\bin\33.pas';
ReadData(ten3);
SetGraphMode(GetGraphMode);
Cuasonen3;
end;
4:begin
Restorecrtmode;
Trang48
Textcolor(7);
Ten3:='d:\tp\bin\34.pas';
ReadData(ten3);
SetGraphMode(GetGraphMode);
Cuasonen3;
end;
5:begin
Restorecrtmode;
Textcolor(7);
Ten3:='d:\tp\bin\34.pas';
ReadData(ten3);
SetGraphMode(GetGraphMode);
Cuasonen3;
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;
if Sott1 > 6 then Sott1:= 1;
End;
end;
end; { of case key }
Trang49
MENU_C3 (Sott1);
end;{ of While }
End;
{-------------------------------------------------------------}
Procedure MENU_CON_C10;
Var Sott1:integer;
Begin
Sott1:=1;
Cleardevice;
Cuasonen10;
MENU_C10 (Sott1);
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);
Ten10:='d:\tp\bin\10.pas';
ReadData(ten10);
SetGraphMode(GetGraphMode);
Cuasonen10;
end;
2:begin
Restorecrtmode;
Textcolor(7);
Ten10:='d:\tp\bin\10.pas';
Trang50
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
Trang51
Sott1:= Sott1 + 1; st;
if Sott1 > 4 then Sott1:= 1;
End;
end;
end; { of case key }
MENU_C10 (Sott1);
end;{ of While }
END;
{======= HET DINH DANG ========----=========}
{-----------------GOI CHUONG TRINH RA MAN HINH ---------------}
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;
Trang52
if key = #80 then
Begin
Sott1:=Sott1+1; st;td;
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;
procedure initProcedural;
begin
procedures[1] := MENU_CON_C1;
procedures[2] := MENU_CON_C2;
procedures[3] := MENU_CON_C3;
procedures[4] := MENU_CON_C4;
procedures[5] := MENU_CON_C5;
Trang53
procedures[6] := MENU_CON_C6;
procedures[7] := MENU_CON_C7;
procedures[8] := MENU_CON_C8;
procedures[9] := MENU_CON_C9;
procedures[10] := MENU_CON_C10;
end;
{--------------------------------}
BEGIN
Clrscr;
Begin
initProcedural;
Tieu_de:='GIOI THIEU ';
Tieu_de_0:='CAC KIEU DU LIEU';
Tieu_de_1:='DU LIEU CO SO & DON GIAN CHUAN';
Tieu_de_2:='KHAI BAO HANG va BIEN';
tieu_de_201:=' KIEU_BIEU THUC_CAU LENH';
Tieu_de_3:='THU TUC VAO RA DU LIEU';
Tieu_de_4:='CAC CAU LENH DIEU KIEN';
Tieu_de_5:= 'VONG LAP XAC DINH For';
Tieu_de_6:=' KHONG XAC DINH While&Repeat';
Tieu_de_7:='CHUONG TRINH CON: ';
tieu_de_701:='Procedure va Function';
Tieu_de_8:='KIEU DU LIEU CO CAU TRUC:';
tieu_de_801:=' KIEU MANG ARRAY';
Tieu_de_9:='KIEU DU LIEU CO CAU TRUC ';
tieu_de_901:='BAN GHI: Record';
Tieu_de_10:='KIEU DU LIEU CO CAU TRUC:';
tieu_de_101:='KIEU TEP File';
Tieu_de_11:='SAU KY TU String';
Tieu_de_12:='CAC THU TUC VE DO HOA';
Trang54
Tieu_de_13:='CHUONG TRINH DAY HOC PASCAL';
Tieu_de_14:=' TREN MAY VI TINH ';
MhDohoa;
CALLMENU;
CloseGraph;
End;
END.
Trang55
PHẦN C : HƯỚNG DẪN NGƯỜI SỬ DỤNG
CHƯƠNG TRÌNH
Sau đây chúng tôi xin hướng dẫn các bạn sử dụng chương trình “ Dạy
học pascal trên máy tính ”. Thực ra mà nghĩ phần mền này muốn sử dụng nó
thì không có gì là khó cả. Bởi vì sao ? Vì trên chương trình chính tức là
phần menumucluc nó đã được thể hiện khác rõ các chi tiết. Menumucluc khá
đặc sắc, bạn có thể thất màu sáng của các chữ cái hiện lên rất rõ lét. Mỗi một
chương đều gán một ký tự chữ cái nhất định. Khi vào đến chương trình của
menumucluc gồm có 10 chương.
Trước mắt bạn là menumucluc, bạn có thể ấn một phím bất kỳ trên bàn
phím, tuy nhiên phím đó phải trùng với phím trên menumucluc thì chương trình
Trang56
cho phép bạn đến các menucon khác. Ngoài ra bạn có thể dùng những phím kết
hợp Shift + một chữ cái sáng trên menu hoặc cũng có thể dùng mũi tên lên
xuống để chọn lựa các mục. Khi không muốn sử dụng nữa bạn phải ấn ESC để
thoát khỏi chương trình đó.
Nếu một trong các chương trình đó được chọn, thì từ menu này lại mở ra
một menucon khác. menucon khác này cũng gồm có nhiều các
Mục liệt kê. Bạn ấn vào mục nào đó thì mục đó đã được chọn. Mục này sẽ
tìm đến địa chỉ của một File nào đó.
Đây là menucon của chương một sau khi bạn chọn. Nếu ban chọn mục thì
nó cho phép bạn xem thông tin đó
VD: Bạn chọn mục dữ liệu và kiểu dữ liệu, mục dữ liệu sẽ tìm đến một đã
được qui định sắn trong chương trình. Nếu trong trường hợp cái nguồn dữ liệu
File đó đã không tồn tại thì ngay lập tức quay lại chương trình menucon1. Các
mục khác cũng như vậy. Để thoát khỏi chương trình bạn hãy ấn ESC về chương
trình menumucluc.
Về menumucluc bạn lại chọn hai, Chương hai đưa ra cho bạn một
Trang57
menunucon giống y như menucon trên.
Trong menucon hai gồm rất nhiều thông tin bạn cần đọc.
VD: Ban muốn xem kiểu dữ liệu mới khai báo như thế nào cấu trúc của nó
ra sao. Khi đọc xong các thông tin bạn ấn phím Enter để trở về menucon.
Dùng mũi tên lên xuống chọn các chương trình menucon khác và load các
File thông tin cầc biết. Dùng ESC thoát vê menumucluc.
Sau khi thoát về chương trình chính bạn chọn vào chương ba bằng cách ấn
Enter, mũi tên lên xuống.
Phím “ H ” hoặc “h” , nếu không bạn ấn Shift + h thì chương trình cũng
hiểu và bạn vào được menucon thứ ba .
Trang58
Trong menucon ba này có rất nhiều cái hay. Các mục có các câu lệnh cơ
bản mà bạn cần phải biết rõ, dùng mũi tên lên xuống chọn mục bất kỳ, giả sử
bạn đã chọn vào mục một, bạn có thể tìm rất nhiều về thông tin để xem cách viết
thủ tục ra vào dữ liệu và các câu lệnh vong lặp. Bạn muốn thoát khỏi menucon
bằng ESC hay dùng mũi tên chọn mục trở về.
Bạn chọn chương bốn cửa sổ của chương bốn không khác gì so với các
chương trên, nhưng nội dung trong menucon bốn giới thiệu về một số các thủ
tục và hàm, cách xây dựng hàm thủ tục theo một tổ chức dữ liệu. Để biết rõ hơn
bạn hãy chọn chương trình để biết thêm về các thông tin khác.
Trang59
Dùng Shift + O thì chữ năng này hiện ra.
Trở lại bạn dùng ESC .
Chọn chương sáu cho biết thông tin về các kiểu dữ liệu về mảng:
Khi trở về menumucluc bạn lại chọn tiếp chương bảy, của sổ của chương
bảy xuất hiên dưới dạng hình thứ sau:
Trong chương này mang thông tin về cách khai báo bản ghi, bạn hãy chọn
các mục khác để biết thêm các thông tin khác.
Bạn hãy chọn chương tám của sổ xuất hiện:
Trang60
Nếu bạn chọn chương chín thì cũng vậy nhưng thông tin lại khác bạn hãy
tự chọn và xem chi tiết.
Trang61
Bạn chọn chương mười cho bạn biết thêm về phần đồ họa.
Trong toàn bộ các menucon về thiết kế hoàn toàn giống nhau, chương
trình mong các bạn xây dựng thêm để cho chương trình linh hoạt, hấp dẫn.
Các file đính kèm theo tài liệu này:
- 12_3568.pdf