Trong Turbo Pascal có nhiều đơn vị chương trình (Unit) trong đó chứa những chương trình con mà khi cần đến người lập trình chỉ cần gọi chúng bằng những
tên cụ thể. Ví dụ đơn vị CRT là Unit chứa các chương trình con xử lí màn hình
như thủ tục: GOTOXY, ClrScr,v.v... Printer là Unit chứa các thủ tục in như Writeln (Lst,....). DOS Là Unit chứa các hàm của DOS. SYSTEM là Unit
chứa các chương trình con về hệ thống. GRAPH là Unit về đồ hoạ v.v..
Ngoài ra Unit cũng có thể do chính người lập trình tự tạo.
Một Unit do bạn tạo ra sẽ đ ược chứa trong một file, giả sử File có tên
DonVi.PAS. Cấu tạo tổng quát của Unit tự tạo nh ư sau:
Unit DonVi; (*Tên Unit đặt trùng với tên File *)
Uses <Tên các unit cần dùng >;
Interface
(*Phần khai báo các thủ tục và hàm P *)
Implementation
(*Khai báo dữ liệu và các thủ tục và hàm của Unit này *)
End. (*Kết thúc Unit bằng End có dấu chấm *)
Ví dụ ta viết lại chương trình giải phương trình bậc hai bằng Unit
Unit PTBHai; Uses Crt; Interface a,b,c,dx,x1,x2: Real; Implementation Procedure Vao; Begin
Write(' Vào hệ số a ='); Readln(a);
Write(' Vào hệ số b ='); Readln(b);
Write(' Vào hệ số c ='); Readln(c);
End;
Procedure TinhDelta; Begin
Dx:=b*b-4*a*c;
If dx>=0 Then DeltaKhongAm Else DeltaAm;
End; Procedure DeltaKhongAm; Begin x1:=(-b+Sqrt(dx))/(2*a); x2:=(-b-Sqrt(dx))/(2*a); ClrScr; Writeln('x1=',x1); Writeln('x2=',x2);
End;
Procedure DeltaAm; Begin
Writeln('Phương trình vô nghiệm');
End; End.
Cách gọi Unit trong chương trình:
Program PhuongTrinhBacHai; Uses Crt, PTBHai; Begin ClrScr; Vao; TinhDelta; End.
7.Chương trình con là thành phần của Turbo Pascal.
Các chương trình con là thành phần của Turbo Pascal bao gồm:
Các hàm số học: ABS, ARCTAN, COS, SIN, EXP, LN, SQRT,SQR.
Các hàm vô hướng: SUCC, PRED, ODD.
Các hàm chuyển đổi: CHR, ORD, ROUND, TRUNC.
Hàm Frac (x) cho giá trị là phần thập phân của x
Hàm Int (x) cho giá trị là phần nguyên của x
Hàm Random, cho giá trị là số ngẫu nhiên nằm trong khoảng 0 và 1
Hàm Random (n), cho giá trị số thực nằm trong khoảng 0 và n (n là số nguyên) Thủ tục Randomize, là thủ tục đảm bảo cho hàm Random chạy với một số ngẫu
nhiên. Nên gọi thủ tục này trước khi gọi Random.
Hàm Upcase (ch), cho ký tự chữ lớn tương ứng với Ch.
Hàm KeyPressed (trong Crt), hàm cho kết quả True nếu ta gõ một ký tự, False nếu không gõ.
Hàm ReadKey (trong Crt), đ ọc một ký tự từ bàn phím. Thủ tục GotoXY ( X, Y); ( trong Crt)
Hai hàm Wherex, Wherey cho toạ độ con trỏ.
Thủ tục ClrScr; (trong Crt), xoá toàn bộ màn hình và đặt con trỏ vào vị trí phía trên, bên trái.
Thủ tục ClrEof; (trong Crt), xoá toàn bộ các ký tự bên phải con trỏ màn hình, sau khi xoá con trỏ vẫn ở nguyên tại chỗ.
Thủ tục DelLine; (trong Crt), xoá toàn bộ dòng màn hình chứa con trỏ,
sau đó dồn các dòng ở phía dưới lên.
Thủ tục InsLine; (trong Crt*), xen một dòng trắng vào màn hình từ vị trí con trỏ.
Thủ tục LowVideo và NormVideo; (trong Crt), sau khi gọi LowVideo, mọi ký tự hiện ra màn hình đều có độ sáng yếu cho tới khi gọi thủ tục
NormVideo.
Thủ tục Delay(Time); (trong Crt), tạo ra khoảng thời gian trễ (khoảng ms). Time là một số nguyên. Delay thường được dùng để làm chậm chương trình lại cho ta quan sát, khảo sát...
Thủ tục Sound(F) và NoSound; tạo ra âm thanh với tần số là F ( F: số
nguyên) cho đến khi ta gọi NoSound.
Thủ tục Halt (trong system), dừng hoạt động ch ương trình và trở về hệ
điều hành.
Thủ tục Exit, khi gặp thủ tục này trong chương trình con thì kết thúc
chương trình con đó và quay về chương trình gọi nó.
V.v..
Ví dụ 1: Dùng Sound(F), Delay(n) và NoSound đ ể phát âm, kéo dài và tắt âm
thanh Program AmThanh; Uses Crt; Var i: Integer ; Begin For i:=100 To 1000 Do Begin Sound(i); Delay(50); Nosound; End; End.
Ví dụ 2: Dùng hàm Random để tạo các số ngẫu nhiên và dùng hàm Keypressed
để điều khiển. Program TaoSoNgauNhien; Uses Crt; Procedure NgauNhien; Var Ch: Char; Begin Randomize; Repeat Writeln(Random); Until Keypressed; End; Begin
NgauNhien;
End.
Câu hỏi và bài tập:
Thế nào là biến toàn cục và biến cục bộ cho ví dụ?
Nói rõ sự khác nhau giữa tham biến biến và tham biến trị?
Khi nào thì cần tham biến biến? Cho ví dụ minh hoạ
Khi nào thì cần tham biến trị? Cho ví dụ minh hoạ
Để đỡ rắc rối trong việc truyền tham biến nhiều khi ta khai báo biến to àn cục cho
mọi chương trình con, nhưng phương pháp này có h ạn chế gì? hãy chỉ ra
X là biến toàn cục, trong thủ tục A cũng có khai báo biến X (cục bộ), đứng trong A nếu dùng X thì Xđó là gì? (toàn cục hay cục bộ)
Cho xâu a ='0123456789' hãy lập một chương trình con đảo thành a ='9876543210', bạn thử viết cho cả đệ quy v à không đệ quy.
Lập trình (theo kiểu thủ tục) giải phương trình bậc nhất hai ẩn sau:
ax+by=c dx+ey=f