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ố, dòng 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 số chương trình con 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 chính xác giống như một thủ tục. Điểm khác biệt duy nhất so với thủ tục là sự hiện diện của một toán tử đặc biệt return,
 sau đó giá trị được trả về chương trình chính được viết.

Một hàm trả về giá trị trung bình cộng của hai số nguyên sẽ như sau:
trung bình động (int a, int b) { float avg = (a + b)/2.0; trở lại tháng tám; } Vẫn còn phải tìm 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 theo cách giống như một thủ tục: trung bình(10, 5); Giá trị do hàm trả về 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ó.

Sẽ đúng hơn nếu lưu trữ kết quả trong một biến (hoặc hiển thị nó trên màn hình):
float a = average(10, 5); Console.WriteLine(average(10, 5));< /code>

Thông thường, các lập trình viên sử dụng các hàm boolean trả về giá trị boolean đúng hoặc sai (true hoặc false).
Những chức năng như vậy rất hữu ích để kiểm tra một thuộc tính.
Hãy xem xét hai ví dụ về cách viết một hàm logic kiểm tra tính chẵn lẻ của một số

Và lưu ý cuối cùng về cách làm việc với hàm và thủ tục: số lượng hàm và thủ tục trong chương trình không bị giới hạn. 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ó.
Ngoài ra, sau khi chương trình đạt đến return trong hàm, chương trình sẽ ngay lập tức dừng thực thi hàm và trả về giá trị.
Nghĩa là, ví dụ thứ hai từ bảng cũng có thể được rút ngắn như sau:
bool isEven(int n)
{
    if (n % 2 == 0) {
        trả về Đúng
    }
    trả về Sai;
}

 

Cách tốt nhất:
kết quả biểu thức
n % 2 == 0
sẽ đúng (true) hoặc sai (sai)
Không cần viết câu điều kiện.
Đừng làm vậy.
Tất nhiên, bạn có thể làm điều đó, nhưng đây là một mục dài hơn.
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;   } }