Trong ngành công nghệ thông tin chắc hẳn các lập trình viên đều quen với khái niệm function là gì và tính năng của nó trong việc viết code. Để hiểu hơn về cách hoạt động của một function, ta cần biết về những chi tiết cấu tạo và cách thực hiện.
Function là một khái niệm còn khá mơ hồ và được sử dụng phổ biến trong ngành công nghệ thông tin. Khái niệm function là gì có thể khá mới mẻ với bạn, tuy nhiên với những lập trình viên thì khái niệm function là gì vô cùng đơn giản. Nếu bạn cũng đang theo đuổi ngành công nghệ thông tin và mong muốn được trở thành một lập trình viên thì khái niệm function là gì chính là những kiến thức cơ bản nhất.
I. Function là gì?
Trong mọi lĩnh vực, khái niệm function là gì mang những ý nghĩa khác nhau, tuy nhiên đối với ngôn ngữ lập trình function được gọi là hàm. Function là một đoạn gồm nhiều câu lệnh có thể được tái sử dụng. Function là một công cụ cho phép các lập trình viên phân tách cấu trúc chương trình thành nhiều phân đoạn khác nhau với mục đích riêng biệt.
Nói một cách đơn giản thì function được xem hộp đen có một đầu vào và một đầu ra. Lập trình viên chính là người đưa dữ liệu đầu vào tương thích và tự động function sẽ cho bạn một kết quả đầu ra. Mỗi lần lập trình viên sử dụng một câu lệnh thì được gọi là một lời gọi hàm hay còn gọi là function call.
Function là gì?
Mỗi hàm được định nghĩa một nhiệm vụ nhất định, dù bạn có thể chia đoạn code của mình thành nhiều hàm riêng biệt, nhưng việc sắp xếp và định nghĩa hàm vẫn là điều nên làm.
Để định nghĩa một function là gì trong ngôn ngữ lập trìnhC++ thì ta phải xác định đầu hàm và thân hàm cũng như các phần của một hàm:
Kiểu trả về: Một hàm có thể trả về giá trị hoặc không. Không phải tất cả mọi function đều có giá trị trả về tùy vào mục đích tạo hàm của người lập trình.
Tên hàm là một trong những yếu tố cấu tạo nên dấu hiệu hàm
Danh sách tham số là dữ liệu được truyền và khi gọi hàm bao gồm các kiểu, thứ tự và số lượng của tham số trong hàm. Cũng như kiểu trả về, một hàm không bắt buộc có tham số, có nhiều hàm không có tham số.
Thân hàm gồm nhiều lệnh nhằm xác định công việc mà hàm sẽ phải thực hiện.
II. Hàm trong PHP là gì?
Function là gì trong PHP? Nó đóng vai trò quan trọng như thế nào? Hàm là một loạt tập hợp nhiều đoạn mã, khi lệnh gọi hàm xuất hiện, function sẽ thực thi các đoạn mã nhiều lần trong một số trường hợp nhất định. Khi tạo hàm thì các đoạn mã không hoạt động nếu như không được có lệnh gọi hàm.
Function là gì trong PHP
Ví dụ trong PHP, function là gì được định nghĩa sẵn để hoàn thành một số việc, tuy nhiên lập trình viên vẫn có thể tạo ra những hàm riêng biệt phục vụ cho mục đích công việc.
III. Khai báo (declare) và định nghĩa (define) function
Những yếu tố tạo nên một function bao gồm:
- Data type of output hay một dạng trả về của hàm
- Function name là tên gọi của hàm
- Function Parameters là danh sách những tham số
- Block of statements là khối lệnh
Hiểu được ý nghĩa của một function là gì, ta thấy một hàm được xây dựng thường có những mục đích riêng để giải quyết cho một công việc nào đó. Công việc này có thể được thực hiện lặp đi lặp lại hoặc không tùy vào mục đích của người lập trình. Tên hàm thường được đặt để diễn đạt công việc mà nhân viên IT đang hướng tới để dễ dàng nhận diện.
Đặc điểm của một hàm:
- Không phải hàm nào cũng có giá trị trả về
- Một hàm phải có tên cũng như quy tắc đặt tên cũng phải theo quy tắc đặt tên biến
- Hàm có thể có một tham số, nhiều tham số hoặc không có tham số nào
- Khối lệnh chứa những dòng lệnh sẽ được thực hiện sau khi gọi hàm
- Khai báo hàm là điều bắt buộc khi định nghĩa và mã nguồn một hàm, vì vậy ta nên khai báo hàm trước khi gọi hàm đó.
IV. Sử dụng hàm (do function call)
Mục đích sử dụng function là gì? Hàm trong lập trình C++ được sử dụng khi lập trình gọi hàm để thực thu công việc được xác định. Khi một function được gọi tức là chương trình sẽ được chuyển đến hàm đã được gọi và function này sẽ thực hiện nhiệm vụ và sau khi trả kết quả về, chương trình lại quay lại với chương trình chính ban đầu.
Function call là gì?
Để có thể thực hiện gọi hàm, lập trình sẽ chuyển các tham số bắt buộc kèm theo tên hàm và khi hàm trả về một kết quả thì bạn có thể lưu trữ giá trị này. Hiểu được function là gì và cách hoạt động của nó, lập trình sẽ dễ dàng hơn trong việt xác định function call và cách gọi hàm.
V. Hoạt động bên trong lời gọi hàm
Như đã đề cập ở trên, mỗi hàm đều được tạo nên để thực hiện một công việc mà lập trình viên xác định cho chúng. Một chương trình sẽ không thể chạy nếu như có một công việc khác xen ngang. Ví dụ như khi bạn đang tưới cây mà nhận được cuộc gọi từ người thân, bạn bắt buộc phải dừng việc tưới cây để nghe điện thoại và việc tưới cây sẽ được tiếp tục sau khi cuộc gọi kết thúc.
Ngôn ngữ lập trình C++ cũng hoạt động tương tự như vậy. Chương trình sẽ thực hiện chuỗi các câu lệnh hiện tại, nhưng khi xuất hiện một lời gọi hàm thì function này sẽ tạm dừng hoạt động để chuyển đến thực hiện hàm mới gọi. Sau khi hoàn thành function mới, CPU sẽ quay lại thực hiện những câu lệnh còn lại phía sau đã được đánh dấu khi lời gọi hàm xuất hiện. Hiểu rõ về cách hoạt động của function là gì, ta thấy việc thực hiện trở nên dễ dàng hơn.
VI. Địa chỉ của hàm (function address)
Khi tạo ra một chương trình, mỗi hàm mang một định nghĩa khác nhau và được cấp phát cho nhiều vùng nhớ khác nhau nằm trong thiết bị lưu trữ máy tính. Trong khái niệm function là gì, hệ điều hành được xác định là nơi cung cấp vùng nhớ cho function để lưu trữ các đoạn mã lệnh.
Khi thực hiện một function call gọi biến nhờ vào tên biến, chương trình tìm đến vùng biến đang được nắm giữ nhằm truy xuất giá trị của biến.
Khi thực hiện một function thông qua tên hàm, chương trình sẽ tạm gián đoạn công việc đang thực hiện và chuyển vùng nhớ function đang nắm giữ để thực hiện mã lệnh trong vùng nhớ mới.
VII. Sử dụng từ khóa return
Từ khóa return trong function là gì được sử dụng ở những ngữ cảnh khác nhau:
Đối với hàm kiểu void - không có giá trị trả về thì từ khóa return có chức năng kết thúc công việc chương trình đang thực hiện tại thời điểm sử dụng. Khi gặp từ khóa return, chương trình sẽ thoát khỏi khối lệnh của function và dừng mọi công việc đang thực thi.
Từ khóa return trong function là gì
Đối với hàm kiểu khác void - hàm có giá trị trả về thì từ khóa return lại là một công cụ bắt buộc phải có. Từ khóa return có chức năng kết thúc công việc hiện tại của hàm, trả về kết quả, vì vậy lập trình cần có một biến đi kèm với return.
VIII. Hàm có tham số
Để tìm hiều về function là gì, ta cần biết về tham số. Truyền tham số vào trong giá trị của function chính là một trong những tính năng hữu dụng của hàm. Nếu lập trình một hàm tính tổng của hai số giá trị đầu vào, lập trình viên cần sử dụng tham số, sau đó truyền giá trị của tham số vào trong function để nó trả về kết quả.
Đối với những hàm có tham số, tham số phải khai báo các biến và chấp nhận giá trị của biến - biến chính thức. Khi gọi hàm, có ba cách để truyền giá trị vào là gọi hàm nhờ vào giá trị bên trong C++ và gọi hàm bởi con trỏ trong C++, gọi hàm bởi tham chiếu trong C++.
Để gọi hàm nhờ vào giá trị bên trong C++, phương thức này hoạt động nhờ vào sự sao chép giá trị thực của tham số vào một tham số chính thức của hàm.
Để gọi hàm nhờ con trỏ trong C++, phương thức này sẽ nhờ vào sự sao chép địa chỉ của tham số vào trong biến chính thức. Địa chỉ này được sử dụng để truy cập tham số được sử dụng trong function call.
Phương thức gọi hàm nhờ tham chiếu trong C++ nhờ vào sao chép địa chỉ của tham số vào tham số chính thức. Bên trong hàm, tham số được dùng cho việc truy cập tham số thực sự sử dụng khi gọi hàm.
IX. Phạm vi biến của hàm
Phạm vi biến của function là gì? Phạm vi biến được dùng để xác định nơi mà ta có thể truy cập vào của biến. Biến được khai báo trong block hay còn gọi là khối lệnh và được gọi là biến cục bộ. Ta có thể truy cập vào một biến đã được khai báo trong khối lệnh con của biến đó khi những khối lệnh này được đặt trong khu vực của khối lệnh chứa biến.
Phạm vi biến trong function là gì
Bên cạnh đó, việc đặt tên cho nhiều khối lệnh lồng nhau được compiler cho phép, tuy nhiên việc đặt tên cho biến nhằm mục đích tránh nhầm lẫn khi thiết kế chương trình, vì vậy những cái tên khác nhau sẽ dễ dàng hơn cho tester sau khi hoàn thành chương trình.
X. Hàm main
Sau khi đã tìm hiểu về function là gì, một định nghĩa khác cũng quen thuộc không kém chính là hàm main. Khi ngôn ngữ lập trình C++ được thực thi, một lời gọi hàm sẽ được hệ điều hành gửi đến địa chỉ của hàm main và tất cả những mã bên trong sẽ thực thi theo thứ tự từ trên xuống dưới. Kết quả cuối cùng là hàm main trả về một gia trị số nguyên cho hệ điều hành. Đây cũng là lý do chính hàm main được định nghĩa là int main() {}.
Kết quả của hàm main có ý nghĩa như thế nào với hệ điều hành? Giá trị trả về của hàm main hay còn được gọi là status code là nơi thông báo với hệ điều hành về sự thành công khi thực hiện chương trình. Lập trình viên thường quy ước kết quả của hàm main là 0 là thành công còn giá trị âm là có lỗi xảy ra.
XI. Nguyên mẫu hàm (Function prototype)
Với ngôn ngữ lập trình C++, từ những kiến thức về function là gì, ta xác nhận được hàm gồn hai phần: khai báo và định nghĩa. Ở phần khai báo, chương trình được cung cấp tên function, kiểu trả về, thông tin tham số đầu vào và khối lệnh đứng sau phần khai báo hàm. Ngôn ngữ lập trình C++ cũng hỗ trợ tách riêng 2 phần khai báo và định nghĩa, trong đó phần khai báo nằm riêng được gọi là nguyên mẫu hàm hay function prototype.
1. Định nghĩa cho function prototype
Để định nghĩa cho nguyên mẫu hàm, lập trình viên cần đảm bảo ghi đúng thông tin đã cung cấp trong phần khai báo. Sau đó, phần định nghĩa này sẽ được đặt dưới phần khai báo. Khi khai báo nguyên mẫu hàm, tên miền của tham số chưa cần cung cấp ngay mà chỉ cần quan tâm đến kiểu dữ liệu của mỗi tham số.
Tính năng của function là gì
2. Tại sao lại phải sử dụng function prototype?
Trong khái niệm function là gì, việc sử dụng function prototype là không bắt buộc tùy thuộc vào nhu cầu của mỗi người. Tuy nhiên nếu sử dụng function prototype thì có thể giúp cho chương trình của bạn rõ ràng hơn. Khi chương trình có nhiều hàm cần được xử lý, việc định nghĩa tràn lan ra file mã nguồn tạo ra một mặt trận gây rối mắt. Bằng một cách khác, lập trình viên có thể khai báo toàn bộ các nguyên mẫu hàm cần sử dụng tại vị trí trên cùng của mã nguồn, còn phần định nghĩa ở phía dưới. Khi nào cần xem hay dò lại thì chương trình cũng rất gọn gàng, dễ xem xét.
3. Phím tắt trong Visual studio 2015 khi thao tác với function prototype
Click chuột trái vào tên hàm của function prototype và nhấn F12, visual studio sẽ di chuyển con trỏ đến phần định nghĩa của nguyên mẫu hàm.
Trong trường hợp function prototype chưa được định nghĩa và con trỏ không có sự di chuyển khi nhấn F12 thì visual studio 2015 cũng có thể giúp người lập trình tạo ra mẫu định nghĩa nguyên mẫu. Để tạo được định nghĩa nguyên mẫu bằng hàm tự động thì lập trình có thể click chuột trái vào tên hàm của function prototype và chọn tổ hợp phím Ctrl + > và Enter.
Vậy nếu bạn đang ở phần định nghĩa và muốn quay lại vị trí khai báo, phải làm sao? Để di chuyển ngược lại, lập trình viên có thể click vào tên hàm của phần định nghĩa và nhấn phím F12 như trên, visual studio sẽ tự động chuyển con trỏ đến vị trí nguyên mẫu hàm.
XII. Thử định nghĩa lại một số hàm toán học thông dụng
Trong function là gì, ngôn ngữ lập trình C++ có một số hàm:
- Ham Pow là một dạng function giúp tích lũy thừa số của các cơ số và số mũ cho trước. Thông thường khi tính lũy thừa, chúng ta thường nhân số mũ lần giá trị cơ số với nhau. Tuy nhiên với hàm pow, chúng ta có thể sử dụng biến result để lưu trữ giá trị tính toán, sau khi chương trình được thực hiện giá trị trả về lũy thừa và biến result bị hủy.
- Hàm Abs là một hàm trả về giá trị tuyệt đối của giá trị đầu vào. Vì hàm này có trả giá trị đầu ra nên đây là một kiểu dữ liệu khác kiểu void. Khi chọn hàm abs, lập trình viên chỉ cần đưa giá trị đầu vào và kết quả trả lại chính là giá trị tuyệt đối của giá trị đầu vào.
XIII. Kết
Khái niệm function là gì có vẻ khá mơ hồ và khó định nghĩa với những người không chuyên, tuy nhiên với những lập trình viên thì khái niệm function là gì không khó. Trong ngôn ngữ lập trình C++, function là một trong những yếu tố chính đảm bảo chương trình được tạo và có thể thực thi một số công việc đã xác định. Tùy vào mục đích sử dụng mà mỗi lập trình viên sẽ sử dụng mỗi function khác nhau. Có thể nói, ngành công nghệ thông tin nói riêng và ngành trí tuệ nhân tạo nói chung là tương lai của sự phát triển quốc gia.