Trong những bài trước, Mytour đã giới thiệu về các toán tử trong Pascal cũng như hằng và cách khai báo hằng trong Pascal. Bài viết này Mytour sẽ tiếp tục giới thiệu về quy trình trong Pascal.
Định nghĩa quy trình trong Pascal
Trong Pascal, quy trình được định nghĩa bằng từ khóa Procedure. Cấu trúc tổng quát của định nghĩa quy trình có dạng như sau:
procedure ten_quy_trinh(tham_so(s): kieu1, tham_so(s): kieu2, ... );
< khai_báo_cục_bộ='' của='' thủ_tục>
bắt_đầu
< phần_thân='' của='' quy_trình>
kết_thúc;
Định nghĩa quy trình trong Pascal gồm một tiêu đề, các khai báo cục bộ, và một phần của quy trình. Tiêu đề quy trình bao gồm từ khoá procedure và tên được chỉ định cho quy trình. Dưới đây là các phần của một quy trình trong Pascal:
- Tham_số: Các đối số tạo liên kết giữa chương trình gọi và các định danh quy trình, còn được gọi là tham_số hình thức. Quy tắc cho các tham_số trong quy trình tương tự như cho các hàm.
- Khai báo cục bộ: Khai báo cục bộ đề cập đến việc khai báo cho các nhãn, hằng, biến, hàm và các quy trình, chỉ áp dụng trong Thân thủ tục.
- Thân thủ tục: Thân thủ tục chứa tập hợp các lệnh định nghĩa thủ tục. Luôn đi kèm với từ khóa Begin và End, và là một phần của thủ tục mà các thao tác được thực thi.
Dưới đây là đoạn mã nguồn của thủ tục có tên là findMin(). Thủ tục này có 4 tham số x, y, z và m, và lưu trữ giá trị nhỏ nhất trong 3 biến đầu tiên vào biến m. Biến m được truyền bằng tham chiếu.
Đặc tả thủ tục trong Pascal
Tạo đặc tả thủ tục trong Pascal để thông báo cho trình biên dịch về tên và cách gọi thủ tục. Các thành phần của thủ tục được xác định rõ ràng.
Cú pháp đặc tả thủ tục có dạng như sau:
procedure ten_thu_tuc(tham_so(s): kieu1, tham_so(s): kieu2, ... );
Lưu ý rằng tên của thủ tục không ảnh hưởng đến các yếu tố khác. Ví dụ, với định nghĩa thủ tục findMin() ở trên, dưới đây là cú pháp đặc tả thủ tục:
quy_trình tìmMin(x, y, z: nguyên; var m: nguyên);
Gọi quy_trình trong Pascal
Trong quá trình định nghĩa một quy trình, bạn phải xác định rõ công việc mà quy trình cần thực hiện. Để sử dụng quy trình, bạn cần gọi quy trình đó để thực hiện các công việc cụ thể được chỉ định.
Khi một chương trình gọi quy trình, quyền kiểm soát của chương trình sẽ được chuyển đến quy trình được gọi. Quy trình được gọi sẽ thực hiện các công việc được xác định, và khi thực hiện đến lệnh Kết_thúc, quyền kiểm soát sẽ trở lại chương trình gọi.
Để gọi quy trình trong Pascal, chỉ cần cung cấp đủ tham số yêu cầu kèm theo tên quy trình như sau:
Sau khi đoạn mã trên được biên dịch và thực thi, kết quả sẽ là như sau:
Chương trình con đệ quy trong Pascal
Một chương trình hoặc chương trình con có thể gọi các chương trình con khác. Khi một chương trình con gọi chính nó, chương trình đó được gọi là chương trình con đệ quy.
Để nắm rõ hơn về chương trình con đệ quy trong Pascal, bạn có thể tham khảo ví dụ về việc tính giai thừa của số n như dưới đây:
Trong đoạn mã dưới đây, giai thừa của một số đã được tính bằng cách gọi chính nó (còn gọi là chương trình con đệ quy):
Khi đoạn mã trên được biên dịch và thực thi, nó sẽ trả về kết quả như sau:
Dưới đây là một ví dụ khác, tạo ra dãy Fibonacci cho một số cụ thể bằng cách sử dụng hàm đệ quy:
Khi mã nguồn được biên dịch và thực thi, kết quả trả về sẽ như sau:
Tham số của một chương trình con
Nếu một chương trình con (hàm hoặc thủ tục) sử dụng các tham số, nó cần phải khai báo các biến để chứa giá trị của các tham số đó. Những biến này được gọi là tham số hình thức của chương trình con.
Các tham số hình thức này hoạt động giống như các biến cục bộ trong chương trình con và được tạo ra khi chương trình con được gọi và bị hủy khi thoát khỏi chương trình con.
Khi gọi một chương trình con, có 2 phương pháp để truyền các đối số vào chương trình con.
Theo mặc định, Pascal sử dụng phương pháp truyền theo giá trị, có nghĩa là mã trong chương trình con không thể thay đổi các đối số được sử dụng để gọi các chương trình con. Ví dụ với hàm max(), nó sử dụng phương pháp truyền theo giá trị.
Các chương trình (exProcedure) gọi thủ tục findMin() ở trên sử dụng phương pháp truyền theo tham chiếu.
Hy vọng sau bài viết này, bạn đọc sẽ có thêm thông tin về thủ tục trong Pascal. Nếu quan tâm đến toán tử trong Pascal cũng như ưu nhược điểm của Pascal, bạn có thể tham khảo thêm bài viết trên trang web Mytour.