2. CẤU TRÚC CỦA CHƯƠNG TRÌNH PASCAL
2.2. Cấu trúc chung của chương trình Pascal
Chương trình là một dãy các câu lệnh chỉ thị cho máy các công việc phải thực hiện. Một chương trình Pasccalđầy đủ gồm ba phần chính:
+Phần tiêuđề +Phần khai báo
+Phần thân chương trình
Program Têntựđặt;{Phần tiêuđề}
{Phần khai báo }
Uses ... {khai báo sử dụng thưviện chuẩn}
Label ... {khai báo nhãn}
Const ... {khai báo hằng}
Type ...{khai báo kiểu dữ liệu}
Var ... {khai báo biến}
Function ...{khai báo các chương trình con}
62
Procedure ... {hàm và thủ tục}
{Phần thân chương trình}
Begin {Các lệnh}
End.
2.2.1. Phần tiêuđề chương trình
Phần này bắt đầu bằng từ khóa Program, sau đó ít nhất là một khoảng trắng và một tên do người dùng tự đặt, cuối cùng kết thúc bằng dấu chấm phẩy ‘;’.
Ví dụ: Program Btap1;
hoặc: Program Giai_pt_bac2;
Phần tiêu đề chiếm một dòng, còn gọi là phần đầu của chương trình,nó có thể không có cũng được.
2.2.2. Phần khai báo
Phần khai báo có nhiệm vụ giới thiệu và mô tả các đối tượng, các đại lượng sẽ tham gia trong chương trình, giống như ta giới thiệu các thành viên trong một cuộc họp. Nó gồm khai báo sử dụng thưviện chuẩn, khai báo nhãn, khai báo hằng, khai báo kiểu dữ liệu mới, khai báo biến, và khai báo các chương trình con. Tùy theo yêu cầu cụ thể màmỗi khai báo này có thể có hoặc không.
Khai báo nhãn (Label) chỉ dùng khi trong chương trình có sử dụng lệnh nhảy vô điều kiện GOTO. Nhược điểm của lệnh GOTO là làm mất tính cấu trúc của chương trình, trong khi có thể thay thế nó bằng các câu lệnh có cấu trúc của Pascal. Vì thế, để rèn luyện kỹ năng lập trình có cấu trúc, chúng ta sẽ không dùng lệnh GOTO trong giáo trình này.
Các thủ tục và hàm được dùng khi có nhu cầu thiết kế các chương trình lớn, phức tạp. Đối với các bài toán nhỏ, đơn giản, việc sử dụng chương trình con là chưa cần thiết. Chi tiết về phần này sẽ được trình bày kỹ trong các bài sau.
Sau đây ta điểm qua vài nét về các khai báo thông dụng nhất.
a) Khai báo hằng và khai báo biến
Biến là đại lượng có giá trị thay đổi được, còn Hằng làđại lượng có giá trị không đổi, chúng được dùng trong chương trình để lưu trữ các dữ liệu, tham gia vào các biểu thức tính toán và các quá trình xử lý trong máy. Việc khai báo có tác dụng xác định tên và kiểu dữ liệu của biến hay hằng. Biến và hằng là những thành phần khó có thể thiếu được trong một chương trình.Để khai báo biến ta dùng từ khóa Var, để khai báo hằng ta dùng từ khóa Const, ví dụ:
Const N=10;
Var x, y: Real;
i, k: Integer;
b) Khai báo (định nghĩa) một kiểu dữ liệu mới
Ngoài các kiểu dữ liệu mà bản thân ngôn ngữ đã có sẵn như kiểu thực, kiểu nguyên, kiểu ký tự, kiểu lôgic,... người dùng có thể tự xây dựng các kiểu dữ liệu mới phục vụ cho chương trình của mình, nhưng phải mô tả sau từ khóa TYPE. Khi đã định nghĩa một kiểu dữ liệu mới, ta có thể khai báo các biến thuộc kiểu dữ liệu này. Ví dụ, ta định nghĩa một kiểu dữ liệu mới có tên là Mang:
Type Mang= Array[1..10] of Real;
Bây giờ có thể khai báo hai biến A và B có kiểu dữ liệu là kiểu Mang:
Var A, B:Mang;
64
c) Khai báo sử dụng thưviện chuẩn
Turbo Pascal có sẵn một số hàm và thủ tục chuẩn, chúng được phân thành từng nhóm theo chức năng mang các tên đặc trưng, gọi là các thư viện hay đơn vị chương trình (Unit), như:
Crt, Graph, Dos, Printer... Muốn sử dụng các hàm hay thủ tục của thư viện nào, ta phải khai báo có sử dụng thư viện đó, lời khai báo phải để ởngay sau phần tiêuđề của chương trình theo cú pháp:
Uses danhsáchthưviện;
Ví dụ: do thủ tục Clrscr nằm trong thư viện CRT, nên nếu trong chương trình mà có dùng lệnh Clrscr, thì phải khai báo:
Uses CRT;
Muốn sử dụng cả hai thưviện CRT và GRAPH, ta khai báo:
Uses CRT, GRAPH;
2.2.3. Phần thân chương trình
Đây là phần chủ yếu nhất của một chương trình, bắt buộc phải có.
Thân chương trình bắt đầu bằng từ khóa BEGINvà kết thúc bằng END. (có dấu chấm ở cuối). Giữa khối BEGIN và END là các lệnh. Mỗi lệnh phải kết thúc bằng dấu chấm phẩy ‘;’. Một lệnh, nếu dài, thì có thể viết trên hai hay nhiều dòng, ví dụ:
Writeln(‘Phuong trinh co hai nghiem la X1= ‘, X1:8:2,’va X2= ‘, X2:8:2);
Ngược lại, một dòng có thể viết nhiều lệnh miễn là có dấu
‘;’để phân cách các lệnh đó, chẳng hạn:
Write(‘Nhap A, B, C: ‘); Readln(A,B,C);
Thông thường mỗi dòng chỉ nên viết một lệnh để dễ đọc, dễ kiểm tra lỗi.