1.2.4 Bắt đầu với chương trình đầu tiên của bạn (4)

Chúng tôi đã nói về block ở các phần trước. Bây giờ hãy cùng đi sâu hơn một chút. Một trong những loại block được dùng phổ biến nhất trong chương trình C++ là hàm (function).

Nếu bạn liên tưởng một function với toán học, bạn đang đi đúng hướng. Tưởng tượng một function như một chiếc hộp đen, nơi mà bạn có thể cho cái gì đó vào (mặc dù không phải luôn cần thiết phải làm như vậy) sau đó lấy ra cái gì đó ra, giống như một trò ảo thuật với chiếc mũ vậy. Cái mà bạn cho vào trong hộp được gọi là đối số của hàm (function arguments) hay còn gọi là tham số của hàm (function parameters). Cái mà bạn lấy ra từ cái hộp đó gọi là kết quả của hàm (function results).

Nếu bạn cảm thấy hơi mơ hồ thì cũng đừng lo lắng, chúng tôi sẽ còn nói về function nhiều lần và chi tiết hơn.

Quay trở lại chương trình. Têu chuẩn của ngôn ngữ C++ giả định rằng giữa rất nhiều block có thể đặt vào chương trình, nhưng có một block luôn luôn phải có, nếu không thì chương trình sẽ không thể chạy đúng. Block này luôn luôn có cùng tên là main.

Mỗi function trong C++ bắt đầu với các thông tin sau:

  • kết quả của function là gì ?
  • tên của function là gì ?
  • function có bao nhiêu tham số và tên của chúng là gì ?

Hãy nhìn đọc chương trình của chúng ta, chấp nhận thực tế rằng bạn chưa hoàn toàn hiểu tất cả mọi thứ

  • kết quả của chương trình là một giá trị nguyên (chúng ta có thể thấy điều đó với từ khóa int, nó là viết tắt của integer)
  • tên của function là main
  • function không yêu cầu tham số nào (chúng ta có thể thấy điều đó với từ khóa void).

Tập hợp những thông tin này đôi khi được gọi là prototype, nó giống như một nhãn hiệu gắn liền với một function trong chương trình của bạn. Prototype không nói gì về cái mà function sẽ thực hiện. Nó được viết bên trong function và những cái bên trong function được gọi là function body. Function body bắt đầu với mở ngoặc nhọn { và kết thúc với đóng ngoặc nhọn }. Function body có thể trống rỗng, có nghĩa là function không làm gì cả.

Ví dụ: Chúng ta thậm chí có thể tạo ra một function lười biếng như thế này:

void lazy(void) { }

Function này không cho ra kết quả gì (từ khóa void đầu tiên), tên nó là “lazy”, nó không có tham số nào và hoàn toàn không làm gì cả

Về tên của function thì nó còn phụ thuộc vào một số ràng buộc cứng nhắc khác nữa. Chúng ta sẽ đề cập đến nó sau.