Bài 13. Hàm Trong C# - Khóa Học Lập Trình C# Không Khó 2021
Có thể bạn quan tâm
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 không có tham số truyền vào
- Câu lệnh return
- Hàm void
- Tổng kết
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:
static <kiểu dữ liệu> <tên hàm>([danh sách tham chiếu]) { <câu lệnh>; [trả về]; }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:
<tên hàm>([tham số truyền vào]);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:
using System.IO; using System; namespace luyencodec_ { class Program { static void WriteToScreen() { // hàm không có tham số Console.WriteLine("Ham khong co tham so"); } static void Main() { WriteToScreen(); Console.ReadKey(); // dừng màn hình } } }Chương trình này sẽ cho ra kết quả:
Ham khong co tham soNhì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:
return <giá trị>;Chúng ta sẽ xét một ví dụ như sau:
using System.IO; using System; namespace luyencodec_ { class Program { static int add(int a, int b) { return a + b; } static void Main() { Console.WriteLine(add(1, 2)); Console.ReadKey(); // dừng màn hình } } }Chương trình này cho ra kết quả:
3Như 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à 1 và 2. 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ề.
using System.IO; using System; namespace luyencodec_ { class Program { static int add(int a, int b) { Console.WriteLine(a); Console.WriteLine(b); } static void Main() { Console.WriteLine(add(1, 2)); Console.ReadKey(); // dừng màn hình } } }Chương trình lúc này sẽ báo lỗi:
main.cs(8,20): error CS0161: `luyencodec_.Program.add(int, int)': not all code paths return a valueLỗ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:
static void <tên hàm>([danh sách tham chiếu]) { [câu lệnh]; }Đố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:
using System.IO; using System; namespace luyencodec_ { class Program { static void in_ra(int a, int b) { for (int i = a; i <= b; ++i) { Console.WriteLine(i); } } static void Main() { in_ra(1, 10); Console.ReadKey(); // dừng màn hình } } }Chương trình này cho ra kết quả:
1 2 3 4 5 6 7 8 9 10Mì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à.
using System.IO; using System; namespace luyencodec_ { class Program { static void in_ra(int a, int b) { for (int i = a; i <= b; ++i) { Console.WriteLine(i); if (i % 5 == 0) { return ; } } } static void Main() { in_ra(1, 10); Console.ReadKey(); // dừng màn hình } } }Chương trình trên cho ra kết quả:
1 2 3 4 5Trong 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)
- Kiểm tra số nguyên tố (VL11)
Từ khóa » Hàm Main Trong C#
-
Cấu Trúc Của Hàm Cơ Bản Trong C# | How Kteam
-
Tìm Hiểu Hàm Trong C# - Freetuts
-
Hàm Main Trong C# Tại Sao được Gán Private? - Programming
-
Hàm Trong C# - Quản Trị Máy Tính
-
Hàm Trong C#: Cách Viết Và Gọi Hàm | Codelearn
-
Phương Thức Trong Lập Trình C# Cơ Bản
-
Ngôn Ngữ C# - Định Nghĩa Hàm
-
Hàm Trong C# – Sửa Máy Nhanh
-
Cấu Trúc Một Chương Trình C# đơn Giản - .vn
-
Tìm Hiểu C# Và ứng Dụng: Lớp Và đối Tượng Trong C# - VOER
-
Phương Thức Trong C# Là Gì? Cách Gọi Phương Thức ... - CodeGym
-
Cách Gọi 1 Hàm Trong Lập Trình C#.giúp Em Với
-
Main() And Command-line Arguments | Microsoft Docs
-
Cấu Trúc Của Hàm Cơ Bản Trong C# | How Kteam