Skip to content Skip to navigation Skip to collection information

OpenStax-CNX

You are here: Home » Content » Lập trình nâng cao » Đơn vị chương trình và thư viện chuẩn

Navigation

Recently Viewed

This feature requires Javascript to be enabled.
 

Đơn vị chương trình và thư viện chuẩn

Module by: Thu Nguyen. E-mail the author

Summary: Đơn vị Chương trình và thư viện chuẩn

ĐƠN VỊ CHƯƠNG TRÌNH VÀ THƯ VIỆN CHUẨN

1. Khái niệm đơn vị chương trình:

Thuật ngữ Unit trong Pascal được gọi là :”Đơn vị chương trình”. Mỗi Unit được xem như một Modul nhỏ chứa đựng một số công cụ cần thiết giúp cho người lập trình dễ dàng thiết kế chương trình.

Lệnh tham chiếu đến Unit được đặt ở đầu chương trình với cú pháp:

USES tênUnit;

Ví dụ: Uses CRT,Graph;

Các Unit được tổ chức trong Pascal dưới 2 dạng:

* Các file độc lập với phần mở rộng là TPU(Turbo Pascal Unit), ví dụ Graph.TPU

* File thư viện chuẩn với phần mở rộng TPL, ví dụ Turbo.TPL

Khi file Turbo.exe được gọi, nghĩa là chương trình Pascal được khởi động từ file Turbo.tpl cũng tự động được tải vào bộ nhớ. Lúc này các Unit chứa trong các thư viện chuẩn sẽ sẵn sàng được tham chiếu đến. Việc truy cập đến các Unit trong thư viện chuẩn nhanh hơn so với truy cập vào các Unit độc lập vì chúng đã thường trú trong bộ nhớ.

2. Thư viện chuẩn:

Thư viện chuẩn của Pascal có tên là Turbo.tpl, thư viện này chứa 5 Unit:

2.1 Crt

CRT bao gồm các thủ tục quản lý màn hình, bàn phím và âm thanh.

2.2 Dos:

Unit này chứa các chức năng quản lý tệp, đĩa, ngày tháng.

2.3 Overlay:

Unit này được sử dụng khi chương trình nguồn có dung lượng lớn. Sử dung Overlay để tải từng phần chương trình nguồn vào bộ nhớ để chạy.

2.4 Printer:

Unit này định nghĩa tên máy in là LST. Việc kết xuất thông tin bằng lệnh Write khi tham chiếu đến LST sẽ cho phép ta in ra máy in các kết quả bài toán.

2.5 System:

Đây là đơn vị cơ bản và quan trọng nhất của pascal, nó chứa các thủ tục vào ra như Read, Write…Khi Pascal được khởi động và thư viện chuẩn được nạp vào bộ nhớ thì Unit này cũng tự động liên kết với mọi chương trình, vì thế ở đầu chương trình không cần đến lời gọi Uses System.

  1. Xây dựng Unit:

Cấu trúc một Unit bao gồm 4 phần cơ bản sau:

  • Phần tiêu đề:

Unit tenUnit;

Lưu ý rằng Pascal quy định bắt buộc tên Unit sau này sẽ được dùng làm tên tệp để lưu trữ tệp nguồn của Unit.

  • Phần khai báo chung

Bắt đầu bằng từ khóa INTERFACE.

Trong phần này ta khai báo các kiểu dữ liệu mới, các biến, hằng, hàm, thủ tục mà sau này các chương trình tham chiếu đến các Unit sẽ sử dụng.

Ví dụ chúng ta xây dựng một Unit lấy tên là HHP (hình học phẳng) trong đó có các hàm tính diện tích, chu vi các hình chữ nhật, tam giác, hình tròn. Khi đó phần khai báo chung sẽ là:

INTERFACE

Function dtcn(a,b:real):real;

Function dttg(a,b,c:real):real;

Function dttr(a:real):real;

Function cvcn(a,b:real):real;

Function cvtg(a,b,c:real):real;

Function cvtr(a:real):real;

  • Phần nội dung:

Bắt đầu bằng từ khóa IMPLEMENTTATION. Tại đây ta sẽ xây dựng các hàm, thủ tục mà tên của chúng đã được giới thiệu ở phần Interface.

Ví dụ:

IMPLEMENTATION

Function dtcn(a,b:real):real;

Var s:real;

Begin

S:=a*b;

Dtcn:=s;

End;

…..

Function cvcn(a,b:real):real;

Var c:real;

Begin

c:=(a+b)*2;

cvcn:=c;

End;

….

  • Phần khởi động:

Phần khởi động đặt giữa 2 từ khóa Begin và End, sau End là dấu . Trong phần này ta đưa vào các lệnh gán giá trị ban đầu cho các biến.

Phần khởi động không bắt buộc phải có, trong trường hợp không có phần này thì ta bỏ đi từ khóa Begin.

* Cấu trúc tổng thể của một Unit:

UNIT  <Tên Unit>;    {phải trùng với tên file}

INTERFACE

    USES ............;

    CONST..........;

    TYPE ............;

    VAR  .............;

    Procedure  <Tên thủ tục>[(Các tham số)];

    Function  <Tên hàm>[(Các tham số)]:<Kiểu hàm>;

IMPLEMENTATION

    Procedure  <Tên thủ tục>[(Các tham số)];

    [Các khai báo]

    Begin

        .............

    End;

 

    Function  <Tên hàm>[(Các tham số)]:<Kiểu hàm>;

    [Các khai báo]

    Begin

        .............

    End;

END.

  • Phần hướng dẫn:

Mỗi khi xây dựng xong cần có phần hướng dẫn để người sử dụng không gặp phải các lỗi khi chương trình tham chiếu đến Unit

Ví dụ: cách sử dụng Unit HHP tính diện tích chu vi tam giác

Program tinh_dtcv;

Uses crt,hhp;

Var m,n,q:real;

Begin

Clrscr;

Write(‘Cho biet 3 canh’); readln(a,b,c);

If(a+b>c) and (a+c>b) and (b+c>a) then

Begin

Writeln( ‘Dien tich tam giac la’,dttg(a,b,c):5:2);

Writeln( ‘chu vi tam giac la’,cvtg(a,b,c):5:2);

End

Else

Writeln(‘So lieu da cho khong tao thanh tam giac’);

Readln;

End.

Bài tập 1 a) Xây dựng Unit HHP. Unit này tạo nên một số hàm dùng để tính diện tích, chu vi các hình tròn, chữ nhật, tam giác.

b) sử dụng Unit HHP tính diện tích, chu vi hình CN, hình tròn.

Bài tập 2:  a) Tạo Unit MYTOOL lưu ở file MYTOOL.PAS.

UNIT  MYTOOL;      

INTERFACE

    USES CRT;

    VAR  m:Integer;

    Function  UCLN(a,b:Integer):Integer;

    Function  NGUYENTO(n:Word):Boolean;

IMPLEMENTATION

    Function  UCLN(a,b:Integer):Integer;

    Begin

        While a<>b Do

           Begin

               If a>b Then a:=a-b  Else  b:=b-a;

           End;

        UCLN:=a;

    End;

    Function  NGUYENTO(n:Word):Boolean;

    Var d,i:Word;

    Begin

        d:=0;

        For i:=2 To n DIV 2 Do

           If n MOD i=0 Then d:=d+1;

        NGUYENTO:=d=0;

    End;

END.

 b) Viết một chương trình có sử dụng Unit MYTOOL.

Uses Crt, MyTool;

Var  a,b:Integer;

Begin

    CLRSCR;

    Write(10,5,’CHUONG TRINH MINH HOA’);

    Write(‘Nhap a = ‘); Readln(a);

    Write(‘Nhap b = ‘); Readln(b);

    Writeln(‘UCLN cua ‘,a,’ va ‘,b,’ la:’,UCLN(a,b));

    Write(‘Nhap m = ‘); Readln(m);

    If  NGUYENTO(m) Then

        Writeln(m,’ la so nguyen to!’)

    Else

        Writeln(m,’ khong phai la so nguyen to!’);

    Readln;

End. 

4. Một số Unit chuẩn:

4.1 System:

Đây là Unit cơ bản và quan trọng nhất của Pascal, nó chứa các thủ tục vào ra như Read, Write…, các hàm sơ cấp thông dụng như Ln,Sqrt, Sin, Cos…Khi Pascal được khởi động và thư viện chuẩn được nạp vào bộ nhớ thì Unit này cũng tự động liên kết với mọi chương trình, vì thế ở đầu chương trình không cần đến lời gọi USES SYSTEM.

4.2 Dos:

Unit này chứa các chức năng quản lý tệp, đĩa, ngày tháng.Ngoài ra, có thể dùng Unit này để gọi trực tiếp các lệnh của HĐH Dos.

4.3 CRT:

CRT là Unit liên quan đến các thủ tục trình bày màn hình. Trong CRT có các thủ tục sau:

  1. Gotoxy(m,n):

Chuyển con trỏ tới tọa độ cột m và dòng n. (1<=m<80; 1<=n<=25)

  1. CLRSCR: xóa màn hình
  2. Delay(n): làm chậm lệnh phía trước n mili giây. Giá trị lớn nhất là 65536 ms.
  3. Thuộc tính màu

Có 2 thủ tục gán thuộc tính màu cho ký tự viết ra màn hình là:

TEXTCOLOR(Mã màu): màu chữ

TEXTBACKGROUND(Mã màu) : màu nền

Bảng 3.1

Table 1
Mã màu Tên hằng Màu Mã màu Tên hằng Màu
0 Black Đen 4 Red Đỏ
1 Blue Xanh lam 5 Magenta Tím
2 Green Xanh lá cây 6 Brown Nâu
3 Cyan Xanh lơ 7 LightGray Xám nhạt
8 DackGray Xám sẫm 12 LightRed Đỏ sáng
9 LightBlue Xanh lam sáng 13 LightMagenta Tím sáng
10 LightGreen Xanh lá mạ sáng 14 Yellow Vàng
11 Lightcyan Xanh lơ sáng 15 White Trắng
  1. Hàm keypressed:

Hàm keypressed kiểm tra xem trong quá trình làm việc có phím nào được bấm hay không?

Vd:

If keypressed then…

Hoặc Repeat … until keypressed;

  1. Hàm Readkey:

Hàm Readkey nhận diện phím được bấm, giá trị mà nó nhận về là một ký tự

  1. Hàm Getkey:

Hoạt động như hàm Readkey nhưng giá trị mà nó nhận là một số dương đối với các phím thông thường, nếu là các phím có mã quét mở thì giá trị Getkey nhận gồm 2 số: số đầu là số 0 và số thứ 2 là mã quét mở của phím.

Ví dụ: nếu bấm J thì Getkey cho số 75. Nếu nhấn <- thì Getkey cho 0-75

Enter: 13

Esc:27

Bài tập mẫu: Thiết kế menu với 4 tùy chọn:

Tamgiac chunhat Tron Ketthuc

Để chuyển con trỏ đến một chức năng nào đó ta bấm phím <- hoặc->, để chọn chức năng, ta bấm phím Enter, kết thúc công việc ấn phím End.

Program Menu;

Uses CRt;

label h1,h2,h3;

Var c1,c2,c3,c4:String[20];

l1,l2,l3,l4:byte;

chon:char;

Procedure tr; {thu tuc tinh hinh tron}

Var a,dt,cv:real;

Begin

clrscr;

write('cho biet ban kinh hinh tron'); readln(a);

dt:=pi*a*a; cv:=2*pi*a;

writeln('dien tich hinh la:',dt:12:4);

writeln('chu vi hinh la:',cv:12:4);

writeln('bam enter quay ve menu');

repeat until Keypressed;

end;

Procedure cn; {thu tuc tinh hinh chu nhat}

Var a,b,p,dt,cv:real;

Begin

clrscr;

write('cho biet do dai 2 canh'); readln(a,b);

dt:=a*b; cv:=(a+b)/2;

writeln('dien tich hinh la:',dt:12:4);

writeln('chu vi hinh la:',cv:12:4);

writeln('bam enter quay ve menu');

repeat until Keypressed;

end;

Procedure tg; {thu tuc tinh tam giac}

Var a,b,c,p,dt,cv:real;

Begin

clrscr;

write('cho biet ba canh tam giac'); readln(a,b,c);

if (a+b>c) and (a+c>b) and (b+c>a) then

begin

p:=(a+b+c)/2;

dt:=sqrt(p*(p-a)*(p-b)*(p-c));

cv:=a+b+c;

writeln('dien tich hinh la:',dt:12:4);

writeln('chu vi hinh la:',cv:12:4);

end

else

write('so lieu nhap khong tao thanh tam giac');

writeln('bam enter quay ve menu');

repeat until Keypressed;

end;

Procedure w1; {thiet ke chuc nang thu nhat}

Begin

Textbackground(5);

textcolor(10);

window(1,2,l1+1,2);write(c1);

gotoxy(1,1);

End;

Procedure w2;

Begin

Textbackground(5);

textcolor(10);

window(l1+2,2,l1+l2+2,2);write(c2);

gotoxy(1,1);

End;

Procedure w3;

Begin

Textbackground(5);

textcolor(10);

window(l1+l2+3,2,l1+l2+l3+3,2);write(c3);

gotoxy(1,1);

End;

Procedure w4;

Begin

Textbackground(5);

textcolor(10);

window(l1+l2+l3+4,2,l1+l2+l3+l4+4,2);write(c4);

gotoxy(1,1);

End;

Begin{THAN CHUONG TRINH CHINH}

Clrscr;

c1:='Tamgiac';l1:=length(c1);

c2:='Chunhat';l2:=length(c2);

c3:='Tron';l3:=length(c3);

c4:='Ketthuc';l4:=length(c4);

CLRSCR;

textcolor(red);

textbackground(green);

write('bam ->,<- di chuyen menu| Bam enter de chon| Bam End ket thuc');

h1: w1;w2;w3;w4;w1;

while keypressed do chon:=readkey;

chon:=readkey;{tinh tam giac}

if ord(chon)=13 then

begin

textcolor(blue);textbackground(14);

window(1,4,80,25);

tg;

clrscr;

goto h1;

end

else

begin

if ord(chon)=0 then chon:=readkey;

if ord(chon)=79 then halt; {bam End ket thuc}

if ord(chon)=77 then w2;

end;

h2: w1;w2;w3;w4;w2;

while keypressed do chon:=readkey;

chon:=readkey;{tinh chu nhat}

if ord(chon)=13 then

begin

textcolor(blue);textbackground(14);

window(1,4,80,25);

cn;

clrscr;

goto h2;

end

else

begin

if ord(chon)=0 then

begin

chon:=readkey;

if ord(chon)=79 then halt; {bam End ket thuc}

if ord(chon)=77 then w3;

if ord(chon)=75 then goto h1;

end;

end;

h3: w1;w2;w3;w4;w3;

while keypressed do chon:=readkey;

chon:=readkey; {tinh hinh tron}

if ord(chon)=13 then

begin

textcolor(blue);textbackground(14);

window(1,4,80,25);

tr;

clrscr;

goto h3;

end

else

begin

if ord(chon)=0 then

begin

chon:=readkey;

if ord(chon)=79 then halt; {bam End ket thuc}

if ord(chon)=77 then w4;

if ord(chon)=75 then goto h2;

end;

end;

while keypressed do chon:=readkey;

chon:=readkey; {tinh hinh tron}

if ord(chon)=13 then halt

else

if ord(chon)=0 then

chon:=readkey;

if ord(chon)=79 then halt; {bam End ket thuc}

if ord(chon)=75 then goto h3;

END.

Bài tập: Lập chương trình tạo menu 2 mức, mức 1 theo chiều ngang, mức 2 theo chiều dọc theo mẫu:

Table 2
HINH PHANG HINH KHONG GIAN
Tam giac Hinh tru
Tron Hinh cau

Yêu cầu: khi con trỏ ở một trong 2 chức năng HINH PHANG, HINH KHONG GIAN, nếu bấm Enter thì xuất hiện menu phía dưới, nếu bấm phím mũi tên thì sẽ chuyển con trỏ sang phải hoặc trái. Khi menu mức 2 xuất hiện sẽ có con trỏ dich chuyển lên xuống, bấm Enter thực hiện tính diện tích, chu vi (đối với hình phẳng), hoặc thể tích đối với Hình không gian).

Collection Navigation

Content actions

Download:

Collection as:

PDF | EPUB (?)

What is an EPUB file?

EPUB is an electronic book format that can be read on a variety of mobile devices.

Downloading to a reading device

For detailed instructions on how to download this content's EPUB to your specific device, click the "(?)" link.

| More downloads ...

Module as:

PDF | More downloads ...

Add:

Collection to:

My Favorites (?)

'My Favorites' is a special kind of lens which you can use to bookmark modules and collections. 'My Favorites' can only be seen by you, and collections saved in 'My Favorites' can remember the last module you were on. You need an account to use 'My Favorites'.

| A lens I own (?)

Definition of a lens

Lenses

A lens is a custom view of the content in the repository. You can think of it as a fancy kind of list that will let you see content through the eyes of organizations and people you trust.

What is in a lens?

Lens makers point to materials (modules and collections), creating a guide that includes their own comments and descriptive tags about the content.

Who can create a lens?

Any individual member, a community, or a respected organization.

What are tags? tag icon

Tags are descriptors added by lens makers to help label content, attaching a vocabulary that is meaningful in the context of the lens.

| External bookmarks

Module to:

My Favorites (?)

'My Favorites' is a special kind of lens which you can use to bookmark modules and collections. 'My Favorites' can only be seen by you, and collections saved in 'My Favorites' can remember the last module you were on. You need an account to use 'My Favorites'.

| A lens I own (?)

Definition of a lens

Lenses

A lens is a custom view of the content in the repository. You can think of it as a fancy kind of list that will let you see content through the eyes of organizations and people you trust.

What is in a lens?

Lens makers point to materials (modules and collections), creating a guide that includes their own comments and descriptive tags about the content.

Who can create a lens?

Any individual member, a community, or a respected organization.

What are tags? tag icon

Tags are descriptors added by lens makers to help label content, attaching a vocabulary that is meaningful in the context of the lens.

| External bookmarks