Các bài viết trước Taimienphi.vn đã giới thiệu cho bạn 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 Taimienphi.vn sẽ giới thiệu tiếp cho bạn về thủ tục trong Pascal.
Định nghĩa thủ tục trong Pascal
Trong Pascal, thủ tục được định nghĩa bằng cách sử dụng từ khóa Procedure. Cấu trúc chung của định nghĩa thủ tục có dạng như dưới đây:
procedure name(argument(s): type1, argument(s): type 2, ... );
< local="" declarations="">
begin
< procedure="" body="">
end;
Định nghĩa thủ tục trong Pascal bao gồm một header, các khai báo cục bộ và một phần của procedure. Header procedure bao gồm từ khoá procedure và tên được chỉ định cho thủ tục. Dưới đây là các phần của một thủ tục (procedure) trong Pascal:
- Argument: Các tham số tạo liên kết giữa chương trình gọi và các định danh thủ tục, còn được gọi là tham số hình thức. Quy tắc cho các tham số trong thủ tục giống như cho các hàm.
- Local declaration: Local declaration đề cập đến các khai báo cho các nhãn, hằng, biến, hàm và các thủ tục, chỉ áp dụng cho Procedure Body.
- Procedure Body: Procedure Body có chứa tập hợp các lệnh định nghĩa thủ tục. Nó luôn luôn đi kèm các từ Begin và End, và là một phần của thủ tục mà các phép toán được thực thi.
Dưới đây là mã nguồn của thủ tục có tên gọi là findMin(). Thủ tục này bao gồm 4 tham số x,y,z và m, và lưu trữ tối thiểu 1 trong 3 biến đầu tiên trong biến m. Biến m được truyền bằng tham chiếu.
Khai báo thủ tục trong Pascal
Khai báo thủ tục trong Pascal để thông báo cho trình biên dịch về tên thủ tục và cách gọi thủ tục. Các phần của thủ tục được định nghĩa riêng biệt.
Cú pháp khai báo thủ tục có dạng như sau:
procedure name(argument(s): type1, argument(s): type 2, ... );
Lưu ý tên của thủ tục không liên quan đến các thứ khác. Ví dụ với định nghĩa thủ tục findMin() ở trên, dưới đây là cú pháp khai báo thủ tục:
procedure findMin(x, y, z: integer; var m: integer);
Gọi thủ tục trong Pascal
Trong quá trình tạo một thủ tục, bạn phải cung cấp định nghĩa về những gì thủ tục phải làm. Để sử dụng thủ tục, bạn phải gọi thủ tục đó để thục hiện các nhiệm vụ được chỉ định.
Khi một chương trình gọi thủ tục, chương trình kiểm soát sẽ được chuyển sang thủ tục được gọi. Một thủ thục được gọi thực thi các nhiệm vụ đã được chỉ định, khi thực thi đến lệnh End, nó sẽ mang chương trình kiểm soát trở lại chương trình gọi.
Để gọi thủ tục trong Pascal, chỉ cần đáp ứng đủ các tham số yêu cầu cùng với tên thủ tục như hình dưới đây:
Khi đoạn mã trên được biên dịch và thực thi, nó sẽ trả về kết quả dưới đây:
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.
Để hiểu rõ hơn về chương trình con đệ quy trong Pascal, bạn tham khảo ví dụ tính giai thừa của số n được định nghĩa dưới đây:
Chương trình dưới đây tính giai thừa của 1 số cho trước bằng cách tự gọi chính nó (còn được gọi là chương trình đó được 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ả dưới đây:
Dưới đây là ví dụ khác, tạo Fibonacci Series cho số cụ thể sử dụng hàm recursive:
Khi đoạn mã trên được biên dịch và thực thi, nó sẽ trả về kết quả dưới đây:
Đối 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 đối số, nó phải khai báo các biến chấp nhận các giá trị của đối số. Các biến này được gọi là các tham số hình thức của chương trình con.
Các tham số hình thức hoạt động như các biến cụ bộ trong chương trình con và được tạo ra khi mục nhập vào chương trình con và bị hủy khi thoát khỏi mục.
Khi gọi một chương trình con, có 2 cách để chuyển các đối số đến chương trình con.
Mặc định Pascal sử dụng cách gọi theo giá trị để chuyển các đối số. Tức 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ụ hàm max () sử dụng cách gọi theo giá trị.
Các chương trình (exProcedure) gọi thủ tục findMin () ở trên sử dụng cách gọi bằng tham chiếu.
Hy vọng sau bài viết trên bạn đọc sẽ có thêm nhiều thông tin về thủ tục trong Pascal. Ngoài ra để tìm hiểu rõ hơn về toán tử trong Pascal cũng như những ưu nhược điểm của Pascal, bạn đọc có thể tham khảo một số bài viết khác trên Taimienphi.vn nhé.
- Bộ nhớ trong Pascal
- Chuỗi trong Pascal