Thí dụ 2: Soạn thảo unit tra số liệu từ bảng trên đĩa chỉ gồm các con số. Unit này gồm nhiều cách tra, trong đó trình bày rõ procedure tra bảng theo phương pháp nội suy để lấy ra một trị số.
Giải:
Unit trabang ; Uses crt ; Interface ;
Tyfe ten = string [10] ;
mata = array [O .. 8] of real ; thongso = record
bs: mata ; end ;
Var sogi : thongso ; filetk: file of thongso ;
Ðœm90Aat®a^Aa>19#Nh
1: int€Ber ;
¬
CC
traxong : boolean ;
_ tỳ Procedure trans(j, k : integer ; sv : real ; tenfile : ten ; var sr: real) ;
{ Đặt procedure khác vào đây } :_{ Đặt procedure tiếp theo vào đây } : Implementation = mm —¬ — TH ——-
: Procedure trans(J, k : integer ; sv : real ; tenfile : ten ; var sr: real); : Var, SỈ, XI, X2: real ;
¬ —¬ œ ẻ ¬1 : begin assign(filetk, 'a : ' + tenfile) ; ba 45
20: — reset (filetk)..
2l: 1:= l;traxong : = false ; 22: while not (traxong) do 23: - begin
24: seek (filetk, ï - Ì) ;
25: read (filetk, sogi) ; 26: with sogi do 2T: begin 28: Hf sv > bs [j] then 29: begin 30: sI:=bs[j]; x1 :=bs[k];i:=i+ 1; 31: end else 32: begin 33: X2 := bs [K] ; traxong := true ; 34: end ;
35: Ifi < 2 then sr := x2 else
36: ST := XÌ + (X2 - XI) * (sV - s1) /(bs [j] - sV) ; 37: end ; 38: end ; 39: close (filetk) ; 40: end ; 41: 42: end. Chú thích:
- Đây là phương pháp tra nội suy hai dòng.
- Dòng 24: dịch chuyển con trỏ tới thành phần thứ ¡ - 1, như thế vị trí đầu tiên của con trỏ là Ö (vì ¡ = ]);
- Dòng 35: trường hợp số liệu vào sv < bs [j] ở ngay đòng đầu tiên thì không cần nội suy mà lấy luôn trị số bs (J] của dòng đang xét.
- J là thứ tự cột trị số dùng so sánh, k là thứ tự cột trị số cần tra.
Thí dụ 3: Soạn thảo chương trình tính chọn động cơ và thiết kế các bộ truyền trong hệ dẫn động cơ khí.
Giải:
1: {§0+,F+]
2: Program docobotr ;
3: uses Overlay, crt, trabang, dulieu, udc, udai, ubr, utv, uxic, solict ; 4: {§Oudc} ($O dai} ($O ubr} {$O utv} ($O uxic}
6: begin... end ; 7: begin
§: CÏrSCT ;
Q: OvrInit (docobotr OVR) ;
10: 1fƒOvrresult < > OvrOk then
11: begin
12: writeln (Loi Overlay ') ;
13: halt () ; 14: end ; 15: dulieutk(tk. sỈ ") ; 16: chondc ; 17: loatbotruyen ; 18: ketqua(tk.kql'; 19: ch := readkey ; 20: end. Chú thích
- Dòng 5, 6: Trong procedure này sẽ gọi đến procedure tinhdai ở unit UDai, procedure tinhbr ở Unit Ubr, procedure tinhtv ở Unit Utv hoặc procedure tinhxich ở unit Ủxic tùy thuộc trong sơ đồ có những bộ truyền nào;
- Dòng 9 - 14: Kiểm tra xem có lỗi Overlay không;
- Dòng 15: Procedure dulieutk (tk.sử) thuộc Unit dulieu, ở đó số liệu được lưu trữ ở file có tên là tk.s];
- Dòng 16: Procedulchondc thuộc unit Udc;
- Dòng 18: Procedure kếtquả (tk.kql ') thuộc Unit solict, ở đó kết quả được lưu trữ ở file có tên là tk.kql.
Câu hỏi tự kiểm tra
1. Các phương pháp tra số liệu từ bảng. Vì sao cần quy cách hóa các bảng trước khi soạn thảo các procedure ghi số liệu các bảng vào đĩa và tra số liệu từ bảng?
2. So sánh các tệp tin văn bản, đáp bản và bản ghỉ về cấu trúc và công dụng.
3. Cho một vài thí dụ để chứng tỏ ích lợi của việc ứng dụng tin học trong tính toán thiết kế máy và chỉ tiết máy.