hàm trong c
|

Bài 13. Hàm trong C#

This entry is part 17 of 21 in the series Khóa học C# cơ bản

Khái niệm hàm là khái niệm phải có trong hầu hết các ngôn ngữ lập trình hiện nay. Vậy hàm trong C# là gì, chức năng, cách sử dụng của nó như thế nào, mình sẽ trình bày ngay sau đây.

Hàm trong C#

Hàm hay thủ tục là một kiểu dữ liệu cho phép chúng ta thực thi một hay nhiều câu lệnh một cách riêng biệt bằng cách gọi đến và truyền tham số. Thủ tục này được sinh ra nhằm mag tính tái sử dụng lại một đoạn code có sẵn giúp lập trình viên tiết kiệm thời gian mà không phải code đi code lạ nhiều lần.

Ngoài ra, hàm hay thủ tục chỉ được mang một chức năng và chỉ được mang đúng một chức năng đó mà thôi.

Cú pháp để khai báo một hàm như sau:

Mình sẽ không trình bày chi tiết về từ khóa static ở đây vì phần này là phần nâng cao hơn. <kiểu dữ liệu> là kiểu trả về của hàm đó, kiểu này phải tương ứng với giá trị trả về của hàm đó. <tên hàm> là tên của hàm đó, tên này sẽ được dùng để gọi hàm khi cần thiết. [danh sách tham chiếu] là những tham chiếu được sử dụng để truyền vào khi gọi hàm. [trả về] là câu lệnh dùng để trả về giá trị của hàm sau khi hàm được thực thi.

Lưu ý: Các ô nằm trong cặp ngoặc [] là các ô mà khi lập trình có thể có hoặc có thể không. Ngược lại với các ô nằm trong cặp ngoặc <> thì những ô này khi lập trình bắt buộc phải có.

Cú pháp để gọi tới hàm đó sau khi hàm đó được khai báo như sau:

Chi tiết hơn mình sẽ trình bày trong các phần sau đây.

Hàm không có tham số truyền vào

Hàm không có tham số truyền vào là loại thủ tục dựa trên cấu trúc thủ tục thông thường nhưng sẽ không có tham số. Loại thủ tục này thường dùng khi chúng ta không cần thêm tham số phục vụ cho việc tính toán trong hàm.

Ví dụ về một hàm không có tham số truyền vào như sau:

Chương trình này sẽ cho ra kết quả:

Nhìn vào ví dụ chúng ta có thể thấy khi chúng ta sử dụng hàm không có tham số thì chúng ta cũng không cần phải truyền tham số vào cho nó. Nếu như bạn cố gắng truyền tham số vào trong nó. Chương trình sẽ báo lỗi.

Câu lệnh return

Nhắc đến hàm chúng ta không thể không nhắc tới câu lệnh return này. Câu lệnh này giúp chúng ta có thể trả về giá trị của một hàm khi hàm đó thực thi. Câu lệnh này cũng sẽ kết thúc hàm ngay tại đó và sẽ không thực hiện ới các câu lệnh phía sau đó nếu câu lệnh này được gọi. Cú pháp sử dụng câu lệnh return này như sau:

Chúng ta sẽ xét một ví dụ như sau:

Chương trình này cho ra kết quả:

Như các bạn có thể thấy ở đây mình đã khai báo một thủ tục tên là add và có danh sách tham chiếu là a, b 2 biến tham chiếu này khi gọi hàm bắt buộc phải truyền đủ 2 tham số cho nó. Ở trường hợp này mình truyền vào lần lượt là 12. Trong hàm add mình đã dùng một câu lệnh return trả về giá trị của hàm là a + b vì vậy nên khi mình gọi hàm và truyền tham số vào thì hàm này sẽ trả về là tổng của 2 số đó. Đáp án 3 là kết quả chính xác.

Đối với câu lệnh return này, các bạn có thể trả về mọi kết quả mà bạn muốn nhưng trong trường hợp giá trị trả về của bạn phải đúng với kiểu trả về của hàm.

Lưu ý: Khi các bạn sử dụng hàm có trả về dữ liệu thì phải có một câu lệnh trả về là điều bắt buộc, dưới đây là ví dụ về chương trình không có câu lệnh trả về dữ liệu khi sử dụng hàm có trả về.

Chương trình lúc này sẽ báo lỗi:

Lỗi này nói rằng trong hàm add bên trong lớp Program không có câu lệnh trả về dữ liệu.

Để khắc phục điều này chúng ta sẽ đi tì hiểu về hàm không trả về dữ liệu ngay sau đây.

Hàm void

Hàm không trả về dữ liệu là một hàm khi khai báo thì bên trong nó không cần tới câu lệnh return để trả về dữ liệu. Điều này rất tốt khi mà chúng ta dùng hàm để phục vụ cho việc tiền xử lý dữ liệu hoặc hậu xử lý chương trình. Ngoài ra loại thủ tục này thường được sử dụng để làm tác vụ mà không liên quan tới tính toán.

Cú pháp sử dụng hàm void này như sau:

Đối với loại thủ tục này đã lược bỏ đi phần kiểu dữ liệu trả về mà thay vào đó trực tiếp là void điều này khai báo thủ tục đó sẽ không có giá trị trả về.

Ví dụ chương trình sử dụng hàm để in ra các số từ 1 tới 10 như sau:

Chương trình này cho ra kết quả:

Mình đã khai báo một thủ tục không có giá trị trả về tên là in_ra với 2 tham chiếu là a, b bên trong chương trình mình sử dụng một hàm for để xử lý việc in ra các số từ a tới b.

Mặc dù không sử dụng được câu lệnh return để trả về, nhưng chúng ta có thể trả về một giá trị “không có gì” mà.

Chương trình trên cho ra kết quả:

Trong hàm for bên trong thủ tục in_ra mình đã sử dụng một câu lệnh logic “nếu i chia hết cho 5” bên trong có chứa một câu lệnh return. Điều đặc biệt là câu lệnh return này không trả về gì hết, nhưng nó vẫn hợp lệ. Vậy nên khi i = 5 hàm đó kết thúc ngay lập tức khi gọi tới câu lệnh return nên chỉ in ra tới số 5.

Về bản chất thủ tục vẫn trả về giá trị nhưng giá trị có thể gọi là “không có gì” vậy nên chúng ta thay thế <kiểu dữ liệu> từ hàm thành kiểu void. Kiểu void trong C# được định nghĩa là không có gì !

Tổng kết

Như vậy là trong bài học ngày hôm này mình đã trình bày cho các bạn sơ lược về hàm trong C#. Bìa học tiếp theo mình sẽ trình bày về Hàm đệ quy trong C#. Đây sẽ là một khái niệm mới cũng như là tương đối khó đối với những bạn mới học lập trình. Cảm ơn bạn đã đọc bài viết này. Hãy tiếp tục ủng hộ Lập trình không khó trong các bài viết tiếp theo nhé !

(ngoài ra bạn có thể thử sức với các bài tập sau)

Similar Posts

Subscribe
Notify of
guest
0 Bình luận
Inline Feedbacks
View all comments