Chương 5: UNIT

Một phần của tài liệu Giáo trình Pascal - Trường CĐSP Bến Tre pptx (Trang 40 - 44)

1. Khái Ni m V Unit

Vi c t o ra các chệ ạ ương trình con trong m t chộ ương trình đã làm cho vi c l pệ ậ

trình đ v t vã h n r t nhi u. Tuy nhiên, các chỡ ấ ơ ấ ề ương trình con này ch có tác d ngỉ ụ

trong chương trình ch a chúng mà thôi, trong m t chứ ộ ương trình khác mu n s d ngố ử ụ

chương trình con này b t bu c ph i vi t l i chúng, nh v y r t m t th i gian. Đắ ộ ả ế ạ ư ậ ấ ấ ờ ể

kh c ph c, ngắ ụ ười ta gom các chương trình con thường s d ng thành m t moduleử ụ ộ

đ c l p và biên d ch s n trên đĩa. Sau đó, b t kỳ chộ ậ ị ẵ ấ ương trình nào cũng có th sể ử

d ng l i các chụ ạ ương trình con này mà không c n ph i vi t l i chúng. Các moduleầ ả ế ạ

nh v y đư ậ ược g i là UNIT. Khái ni m Unit đọ ệ ượ ạc t o ra t version 4.0 c a Turboừ ủ

Pascal.

Có hai lo i UNIT là Unit chu n c a Pascal t o ra và Unit do ngạ ẩ ủ ạ ườ ậi l p trình tự

t o đ ph c v riêng cho mình.ạ ể ụ ụ

2. Các Unit Chu n

a. Gi i thi u m t s Unit chu nớ ộ ố

- Unit CRT: G m các h ng, ki u, bi n, hàm, th t c liên quan đ n ch đ mànồ ằ ể ế ủ ụ ế ế ộ

hình văn b n (TEXT mode).ả

- Unit PRINTER: G m các h ng, ki u, bi n, hàm, th t c liên quan đ n ch đ in nồ ằ ể ế ủ ụ ế ế ộ ấ

qua c ng LPT1 (Connector DB25).ổ

- Unit GRAPH: G m các h ng, ki u, bi n, hàm, th t c liên quan đ n ch đồ ằ ể ế ủ ụ ế ế ộ

đ h a.ồ ọ

- Unit DOS: G m các h ng, ki u, bi n, hàm, th t c liên quan đ n vi c x lí tr cồ ằ ể ế ủ ụ ế ệ ử ự

ti p các thanh ghi, các ng t và l i g i đ n các hàm ch c năng c a h đi u hànhế ắ ờ ọ ế ứ ủ ệ ề

MS-DOS.

- Unit OVERLAY: G m các h ng, ki u, bi n, hàm, th t c liên quan đ n vi c b tríồ ằ ể ế ủ ụ ế ệ ố

các đo n mã th c thi đạ ự ược truy xu t trên đĩa (n p/ nhã) thay vì đ t h t m t lúc vàoấ ạ ặ ế ộ

b nh khi ch y chộ ớ ạ ương trình.

- Các Unit khác: SYSTEM, TURBO3, GRAPH 3… là các Unit phiên b n 3.0 sả ử

d ng.ụ

Khi mu n s d ng m t Unit nào thì ta ph i khai báo tên Unit đó đ u chố ử ụ ộ ả ở ầ ương trình (tr các unit m c đ nh c a Pascal nh unit SYSTEM) v i cú pháp nh dừ ặ ị ủ ư ớ ư ưới đây.

b. M t s hàm và th t c hay dùng trong Unit CRTộ ố ủ ụ

- ClrScr: Th t c xoá màn hình.ủ ụ (adsbygoogle = window.adsbygoogle || []).push({});

- GotoXY(x, y: Byte): D i con tr t i v trí c t ờ ỏ ớ ị ộ x, dòng y trên màn hình. Thông

thường, màn hình trong TextMode(Co80) có 25 dòng (t dòng 1 đ n dòng 25)ừ ế

và 80 c t (c t 1 đ n c t 80). V y to đ góc trên trái c a màn hình là (1, 1),ộ ộ ế ộ ậ ạ ộ ủ

to đ góc dạ ộ ưới ph i là (80, 25)ả 10.

- Delay(ms: Word): Th t c trì hoãn chủ ụ ương trình trong ms mili-giây.

- Sound(hz: Word): Th t c phát ra âm thanh qua loa bên trong (internal speaker)ủ ụ

v i t n s ớ ầ ốhz.

- Nosound: Th t c ng ng phát ra âm thanh.ủ ụ ừ

- Keypressed: Hàm cho k t qu là TRUE n u có m t phím đế ả ế ộ ượ ấc n.

- Readkey: Hàm cho k t qu là mã ASCII c a ký t khi phím đế ả ủ ự ượ ấc n.

- TextBackGround(color: Byte): Th t c ch n màu n n. Ta có th đ t màu n nủ ụ ọ ề ể ặ ề

cho toàn màn hình b ng cách đ t l nh này v a trằ ặ ệ ừ ướ ệc l nh ClrScr.

- TextColor(color: Byte): Th t c ch n màu cho ch . ủ ụ ọ ữ

Dưới đây là danh sách các h ng màu mà Pascal đ nh s n.ằ ị ẵ

· Black = 0 Đen.

· Blue = 1 Xanh dương. · Green = 2 Xanh l c.ụ

· Cyan = 3 Xanh tr ng sáo.ứ

· Red = 4 Đ .ỏ

· Magenta = 5 Tím cánh sen.

· Brown = 6 Nâu.

· LightGray = 7 Xám sáng. · DarkGray = 8 Xám t i.ố

· LightBlue = 9 Xanh dương sáng. · LightGreen = 10 Xanh l c sáng.ụ

· LightCyan = 11 Xanh tr ng sáo sáng.ứ

· LightRed = 12 Đ sáng.ỏ

· LightMagenta = 13 Tím cánh sen sáng. · Yellow = 14 Vàng.

· White = 15 Tr ng.ắ

(8 h ng tr đ u tiên t Black đ n LightGray áp d ng cho c màu ch l nằ ị ầ ừ ế ụ ả ữ ẫ

màu n n. Các h ng tr còn l i ch áp d ng cho màu ch ).ề ằ ị ạ ỉ ụ ữ

Unit CRT cũng thi t l p bi n h th ng TextAttr đ xác đ nh ch đ màuế ậ ế ệ ố ể ị ế ộ

c a màn hình văn b n hi n t i. Ví d đ thi t l p màn hình có màu chủ ả ệ ạ ụ ể ế ậ ữ (adsbygoogle = window.adsbygoogle || []).push({});

xanh l c sáng trên n n xanh da tr i ta thi t l p câu l nh gán:ụ ề ờ ế ậ ệ

TextAttr:=LightGreen+16*Blue;

II. THI T L P UNIT

1. Các Bước T o M t Unit

a. Bước 1

T o ra m t t p tin Pascal có đuôi ạ ộ ậ .PAS và có c u trúc nh trình bày dấ ư ưới đây, l u ý là tên c a unit ph i trùng v i tên t p tin.ư ủ ả ớ ậ

10 Hi n nay đ i v i các màn hình TextMode gi l p c a Windows khi ch y Borland Pascal có th đệ ố ớ ả ậ ủ ạ ể ược thi tế l p m c đ nh t i 80 c t và 50 dòng. Sinh viên ph i th c th trên màn hình. M t s màn hình LCD wide screenậ ặ ị ớ ộ ả ử ụ ể ộ ố cũng có th cho s c t l n h n! H u nh các projector hi n nay h tr kém ch đ văn b n. C n c n th n khiể ố ộ ớ ơ ầ ư ệ ỗ ợ ế ộ ả ầ ẩ ậ l p trình đ hi n th (cu i cùng) trên projector.ậ ể ể ị ố

UNIT <Tên Unit>; {Tên unit b t bu c ph i trùng v i tên t p tin}ắ ộ ả ớ ậ

INTERFACE {Không có d u ; đây}ấ ở

{Đây là ph n giao di n c a Unit. Trong ph n này chúng ta s khai báo các unitầ ệ ủ ầ ẽ

đã có mà các unit này s d ng, khai báo các h ng, ki u, bi n mà các chử ụ ằ ể ế ương trình khác s s d ng. Khai báo các hàm, th t c mà chẽ ử ụ ủ ụ ương trình khác s g iẽ ọ

t i, ch khai báo tên chớ ỉ ương trình con, các tham s , ki u k t qu . Nh ng hàm,ố ể ế ả ữ

th t c thi t l p ph n sau mà không khai báo trong ph n này thì các chủ ụ ế ậ ở ầ ầ ương trình khác không g i t i đọ ớ ược.}

IMPLEMENTATION {Không có d u ; đây}ấ ở

{Đây là ph n hi n th c các hàm, th t c đã khai báo trong ph n Interface.ầ ệ ự ủ ụ ầ

Trong ph n này n u có các chầ ế ương trình con được dùng riêng bên trong Unit mà không khai báo trong ph n Interface, các chầ ương trình con này s khôngẽ

th truy c p để ậ ược b i ngở ười dùng Unit.} BEGIN

{Ph n ch a các câu l nh s đầ ứ ệ ẽ ược th c thi ngay trự ước khi câu l nh đ u tiênệ ầ

c a chủ ương trình g i Unit này đọ ược th c hi n. Ph n này không b t bu c ph iự ệ ầ ắ ộ ả

có, tuy nhiên trong trường h p đó v n ph i gi l i t khóa “END.” dợ ẫ ả ữ ạ ừ ưới đây.}

END.

b. Bước 2

Unit không được thi t k đ ch y mà đ biên d ch đ t lên đĩa nên ta khôngế ế ể ạ ể ị ặ

th nh n CTRL+F9 mà làm theo trình t sau:ể ấ ự  Ch n menu ọ Compile (Alt + C).

 Ti p t c ch n ế ụ ọ Destination đ chuy n thành ể ể Disk. L u ýư : Destination Disk là t o unit lên đĩa, Memory là t o unit lên b nh RAM.ạ ạ ộ ớ

 Ch n l i menu ọ ạ Complie và ch n ti p ch c năng ọ ế ứ Complie (Alt + F9). Lúc này trên đĩa xu t hi n t p tin là tên c a unit ta t o v i ph n m r ngấ ệ ậ ủ ạ ớ ầ ở ộ

là TPU.

K t đây, ta có th s d ng unit này b ng cách g i nó trong câu l nh USESể ừ ể ử ụ ằ ọ ệ

nh đã nói trên.ư

2. Ví d ng d ngụ ứ (adsbygoogle = window.adsbygoogle || []).push({});

Dưới đây là chương trình t o ra m t unit đ n gi n có 3 hàm là ạ ộ ơ ả HamMu đ

tính a mũ n (an), GiaiThua đ tính ể n giai th a (n!) và USCLN đ tính ể ướ ốc s chung l n nh t c a hai s nguyên không âm..ớ ấ ủ ố

Unit MyUnit; {Trùng tên v i t p tin MyUnit.pas}ớ ậ

INTERFACE

Function HamMu(a: Real; n: Integer): Real; Function GiaiThua(n: Integer): Longint;

Function USCLN(X,Y:Word):word;

IMPLEMENTATION

Function HamMu(a: Real; n: Integer): Real; Var tam: Real;

i: Integer; Begin tam := 1; For i:=1 to n do tam := tam * a; HamMu := tam; End;

Function GiaiThua(n: Integer): Longint; Var tam: Longint;

i: Integer; Begin tam := 1; For i:=1 to n do tam := tam * i; GiaiThua := tam; End;

Procedure HoanChuyen(var x,y:word); VAR Tam:word;

BEGIN

Tam:=x; x:=y; y:=Tam; END;

Function USCLN(x,y:Word):word; BEGIN

While (y<>0) DO Begin

IF (x<y) THEN HoanChuyen(x,y) ELSE x:=x-y;

End;

USCLN:=x; END;

END.

Sau khi biên d ch ta s có t p tin unit là MyUnit.TPU. Khi s d ng unit nàyị ẽ ậ ử ụ

người dùng có th g i các hàm đã khai báo trong ph n INTERFACE nh ngể ọ ầ ư

không th g i t i Procedure HoanChuyen để ọ ớ ược.

III. T P TIN TURBO.TPL

File \BP\BIN\TURBO.TPL (Turbo Pascal Library) là t p tin th vi n gom cácậ ư ệ

Unit thường dùng nh t vào m t t p tin duy nh t và đấ ộ ậ ấ ược n p vào b nhạ ộ ớ

th vi n này mà không c n đ c đĩa. M c đ nh, sau khi cài đ t, TURBO.TPLư ệ ầ ọ ặ ị ặ

ch a các Unit SYSTEM, DOS, OVERLAY, PRINTER, CRT. Riêng đ i v iứ ố ớ

Unit System.tpu ta không c n ph i khai báo “USES SYSTEM;” đ s d ngầ ả ể ử ụ

các th t c writeln hay readln .v.v. ủ ụ (adsbygoogle = window.adsbygoogle || []).push({});

Pascal cũng cho phép ta g b kh i TURBO.TPL các Unit không c n thi tỡ ỏ ỏ ầ ế

ho c thêm vào đó các Unit khác b ng cách ch y fileặ ằ ạ

\BP\BIN\TPUMOVER.EXE.

TPUMOVER.EXE ch y trong môi trạ ường DOS. Cú pháp s d ng nh sau:ử ụ ư • H i cú pháp s d ngỏ ử ụ :

TPUMOVER.EXE 

Xem m t t p tin th vi n đang ch a các Unit nàoộ ậ ư ệ : TPUMOVER.EXE <Tên t p tin th vi n> ậ ư ệ  • Thêm/ b t/trích m t Unit kh i t p tin th vi nớ ỏ ậ ư ệ :

TPUMOVER.EXE <Tên t p tin th vi n> <Tác v > ậ ư ệ ụ 

Trong đó <tên t p tin th vi n> là t p tin có đuôi file m c đ nh là .TPLậ ư ệ ậ ặ ị

Và tác v là m t trong 3 trụ ộ ường h p sau đây:ợ

<+UnitName> : Đ thêm Unit UnitName này vào t p tin th vi n.ể ậ ư ệ

<-UnitName> : Đ lo i Unit UnitName này kh i t p tin th vi n.ể ạ ỏ ậ ư ệ

<*UnitName> : Đ trích Unit UnitName này kh i t p tin th vi n.ể ỏ ậ ư ệ

B n c n c n th n khi lo i m t Unit ra kh i t p tin th vi n. Đ an toàn, t tạ ầ ẩ ậ ạ ộ ỏ ậ ư ệ ể ố

h n h t nên trích xu t nó ra đã … trơ ế ấ ước khi làm thao tác lo i b .ạ ỏ

Ví d :ụ

Thêm MyUnit.TPU vào t p tin th vi n TURBO.TPL :ậ ư ệ

TPUMOVER.EXE TURBO.TPL +MyUnit.TPU 

Xem coi t p tin th viên TURBO.TPL đang ch a các Unit nào:ậ ư ứ

TPUMOVER.EXE TURBO.TPL 

G Unit OVERLAY.TPU kh i TURBO.TPL:ỡ ỏ

TPUMOVER.EXE TURBO.TPL -OVERLAY.TPU 

Một phần của tài liệu Giáo trình Pascal - Trường CĐSP Bến Tre pptx (Trang 40 - 44)