Chương trình con: thủ tục và hàm - 2


Hàm là một chương trình con trả về một kết quả (số, chuỗi ký tự, v.v.)

Hãy tưởng tượng rằng bạn đã đặt hàng một sản phẩm từ một cửa hàng trực tuyến. Từ quan điểm lập trình, bạn đã gọi một chương trình con nào đó và không giống như một thủ tục, chương trình con này phải trả về một kết quả - giao sản phẩm bạn đã đặt. Các chương trình con này được gọi là hàm.
Một hàm được định dạng giống như một thủ tục: hàm <tên hàm> (danh sách các tham số dưới dạng <tên biến>:<loại của nó> được phân tách bằng dấu chấm phẩy): <loại giá trị trả về>; bắt đầu <thân chức năng> kết thúc;
Sự khác biệt giữa một hàm và một thủ tục là một hàm phải trả về một giá trị. Để làm điều này, bạn cần sử dụng tên hàm như một biến hoặc biến đặc biệt Kết quả: hàm Sum(a, b:integer): số nguyên; bắt đầu Tổng := a + b; kết thúc; hoặc hàm Sum(a, b:integer): số nguyên; bắt đầu Kết quả := a + b; kết thúc;
Hàm trả về giá trị trung bình cộng của hai số nguyên sẽ như sau: hàm trung bình (a, b: số nguyên): thực; bắt đầu   trung bình := (a + b)/2; kết thúc; Vẫn còn phải hiểu cách gọi hàm này trong chương trình chính:
Bạn không nên gọi một hàm giống như cách bạn gọi một thủ tục: trung bình(10, 5); Giá trị trả về của hàm sẽ bị mất. Như thể hàng hóa từ cửa hàng trực tuyến không được trao cho bất kỳ ai mà bị vứt bỏ. Không chắc là khách hàng sẽ thích nó.

Đúng hơn là lưu kết quả vào một biến (hoặc in kết quả ra màn hình): a := trung bình(10, 5);

hoặc

writeln(trung bình(10, 5));

Các lập trình viên thường sử dụng các hàm boolean trả về các giá trị boolean: đúng hoặc sai (True hoặc False)
Các chức năng như vậy rất hữu ích cho   kiểm tra một số thuộc tính.
Hãy xem xét hai ví dụ về cách viết một hàm lô-gic để kiểm tra tính chẵn của một số
Và lưu ý cuối cùng về thao tác với hàm và thủ tục: số lượng hàm và thủ tục trong chương trình là không hạn chế. Ngoài ra, một chương trình con có thể gọi một chương trình con khác và thậm chí gọi chính nó.
 

1)  Cách tốt hơn:
kết quả biểu thức
n % 2 == 0
sẽ đúng (True) hoặc sai (False)
Không cần viết câu điều kiện!
2) Đừng làm thế!
Bạn có thể viết như vậy, nhưng nó sẽ trở thành một bản ghi dài hơn, vì vậy tốt hơn là không làm điều đó
bool isEven(int n) { trả lại (n % 2 == 0); } bool isEven(int n) { nếu (n % 2 == 0) trả về đúng; khác trả về Sai; }