Cấu trúc của hàm cơ bản trong C# | How Kteam

Dẫn nhập

Ở các bài học trước, chúng ta đã cùng nhau tìm hiểu về các CẤU TRÚC VÒNG LẶP TRONG C#. Trong quá trình viết code, chúng ta thường thấy code của mình quá dài, quá rườm rà, khó khăn cho việc tái sử dụng lại. Để giải quyết vấn đề này, chúng ta sẽ cùng nhau tìm hiểu về hàm trong C#.

Nội dung

Để đọc hiểu bài này tốt nhất các bạn nên có kỹ năng và kiến thức cơ bản về các phần :

Trong bài học này, chúng ta sẽ cùng tìm hiểu các vấn đề:

  • Cấu trúc của hàmtrong C#

Cấu trúc của hàm trong C#    

Cú pháp khai báo hàm:          

[Từ khóa 1] [Từ khóa 2] [Từ khóa n]  ([Parameter]){ }

Trong đó :

  •  [ Từ khóa 1 ], [ Từ khóa 2 ], [ Từ khóa n ]là các từ khóa như :public,static,read only… và có thể không điền .
  •  Kiểu tài liệu trả về như : từ khóavoid ,hay mọi kiểu tài liệu nhưint, long, bool ,SinhVien…
  •  Tên hàm :
    • Là tên gọi của hàm.
    • Tên bạn có thể đặt tùy ý nhưng nên đặt tên theo quy tắc đặt tên để có sự đồng bộ ngầm định giữa các lập trình viên và dễ tìm, dễ nhớ (xem lại quy tắc đặt tên ở bài BIẾN TRONG C #).
    • Hãy xem cách khởi tạo hàm giống khởi tạo một biến ở chỗ. Đều cần kiểu dữ liệu và tên. Có thể có các từ khóa. Tên để tái sử dụng hàm ở nơi mong muốn.
  • Parameterlà tham số truyền vào để sử dụng nội bộ trong hàm. Cấu trúc khởi tạo như một biến bình thường. Có thể không điền.
  • Hàmchỉ được khai báo bên trongclass.

Lưu ý:

  • Mọihàm đều phải có cặp ngoặc nhọn { } bộc lộ là một khối lệnh. Mọi dòng code giải quyết và xử lý của hàm đều được viết bên trong cặp ngoặc nhọn { } này .
  • Không thể khai báo mộthàm trong mộthàm khác theo cách thường thì .

Một hàm cơ bản hay thấy với cấu trúc bắt buộc phải có trong lập trình C # console hàm Main

static void Main(string[] args)

{
}

Trong đó :

  •  static là từ khóa static (sẽ tìm hiểu kỹ hơn ở bài sau). Có thể không sử dụng cũng được. Nhưng ở trường hợp hàmMaincủa console C # thì phải có .
  •  void là kiểu trả về. Với hàm có kiểu trả về làvoid thì sẽ không cần từ khóareturntrong hàm. Hoặc có nhưng chỉ đơn thuần là ghireturn;
  •  Mainlà tên hàm. Có thể đặt tùy ý. Nhưng ở trường hợp này là bắt buộc phải làMainvì mỗi chương trình console C # đều cần hàmMain.
  •  string[] argslàparameter truyền từ bên ngoài vào để sử dụnghàm

    .Có thể không có cũng được. nhưng ở trường hợp hàm

    Maincủa console C # là bắt buộc phải có. Ở đây có thể thay thế sửa chữa tênargsbằng bất kỳ tên nào khác như đặt tên một biến thông thường .

Hàm void

Hàm void là hàm có kiểu trả về là void. Chúng ta cùng xem qua khai báo hàm sau :

void Demo()

{
/ / some code

return;

}

  •  Vì hàmvoid ( hàm có kiểu trả về làvoid) thì không cần viếtreturn; nên tất cả chúng ta có thể bỏ return; đi.

void Demo()

{
/ / some code

        }

Một chú ý quan tâm về sau : vì tất cả chúng ta đang viết code trên nền console C #. Bắt buộc phải có hàm Main. Nhưng hàm Main lại có từ khóa static. Nên để trong hàm Main có thể sử dụng các hàm mà ta viết ra thì các hàm đó cũng phải có từ khóa static .

static void Main(string[] args)
        {
            // Gọi lại hàm để sử dụng
            Demo();
            Console.ReadKey();
        }

        static void Demo()
        {
            Console.WriteLine("Called from Demo! HowKteam.com");
        }
  • Kết quả vẫn xuất ra dòng chữ “Called from Demo ! HowKteam. com” như được viết bên trong hàm Main. Nhưng thật sự nó đã được gọi từ hàm Demo.

Cấu trúc của hàm cơ bản trong C#, C# cơ bản, tự học C#, Kteam, HowKteam

  •  Khi sử dụng hàm ta sẽ gọi lại tên hàm kèm theo dấu () biểu thị đó là một hàm. Sau này nếu có parameter thì sẽ thêm giá trị vào bên trong dấu ().
  • Chúng ta có thể gọi lại nhiều lần và có thể thấy code tất cả chúng ta viết rất rõ ràng và rất dễ tái sử dụng .
static void Main(string[] args)
        {
            // Gọi lại hàm nhiều lần
            // dòng chữ Called from Demo! HowKteam.com cũng được in ra nhiều lần
            Demo();
            Demo();
            Demo();
            Demo();
            Console.ReadKey();
        }

        static void Demo()
        {
            Console.WriteLine("Called from Demo! HowKteam.com");
        }

Nhiều dòng chữ ” Called from Demo ! HowKteam. com ” được in ra màn hình hiển thị

Cấu trúc của hàm cơ bản trong C#, C# cơ bản, tự học C#, Kteam, HowKteam

Hàm có kiểu trả về khác void

Với hàm có kiểu trả về khác void. Trong thân hàm bắt buộc phải có dòng return ;

Giá trị trả về phải có kiểu tài liệu tương ứng với Kiểu tài liệu trả về khi khai báo hàm .

  /// 
        /// Hàm trả về giá trị số nguyên 5 thông qua tên hàm
        /// Lưu ý giá trị trả về phải cùng kiểu dữ liệu với kiểu trả về của hàm
        /// Ở đây là kiểu int
        /// 
        /// 
        static int ReturnANumber()
        {
            // bắt buộc phải có cấu trúc return trong thân hàm
            return 5;
        }

Chúng ta có thể sử dụng hàm này thông thường. Và có thêm một lợi thế là có thể lấy giá trị trả về của hàm trải qua lời gọi tên hàm .

static void Main(string[] args)
        {
            Console.WriteLine(ReturnANumber());
            Console.ReadKey();
        }
       
        /// 
        /// Hàm trả về giá trị số nguyên 5 thông qua tên hàm
        /// Lưu ý giá trị trả về phải cùng kiểu dữ liệu với kiểu trả về của hàm
        /// Ở đây là kiểu int
        /// 
        /// 

        static int ReturnANumber()
        {
            // bắt buộc phải có cấu trúc return trong thân hàm
            return 5;
        }

Kết quả số 5 Open trên màn hình hiển thị

Cấu trúc của hàm cơ bản trong C#, C# cơ bản, tự học C#, Kteam, HowKteam

Chúng ta có thể gọi hàm trong hàm như sau : ( để hiểu về trình tự gọi hàm các bạn có thể xem lại phần ví dụ của bài NHẬP XUẤT CONSOLE CƠ BẢN TRONG C # )

static void Main(string[] args)
        {
            Demo();
            Console.ReadKey();
        }
      

        /// 
        /// Hàm trả về giá trị số nguyên 5 thông qua tên hàm
        /// Lưu ý giá trị trả về phải cùng kiểu dữ liệu với kiểu trả về của hàm
        /// Ở đây là kiểu int
        /// 
        /// 

        static int ReturnANumber()
        {
            // bắt buộc phải có cấu trúc return trong thân hàm
            return 5;
        }

        /// 
        /// in ra màn hình một giá trị nào đó
        /// 

        static void Demo()
        {
         // trong hàm Demo gọi lại hàm ReturnANumber
            Console.WriteLine(ReturnANumber());
        }

Kết quả vẫn là số 5 được in ra màn hình hiển thị

Cấu trúc của hàm cơ bản trong C#, C# cơ bản, tự học C#, Kteam, HowKteam

Parametter

Chúng ta đã biết cách khởi tạo và sử dụng một hàm. Vậy giờ có một nhu yếu như sau : Viết hàm tính tổng 2 số nguyên .

  •  Chúng ta có thể sử dụng biến toàn cục (sẽ được nói rõ ở bài sau) để xử lý :
static void Main(string[] args)
        {
            Console.WriteLine(SumTwoNumber());
            Console.ReadKey();
        }


        /// 
        ///  hai biến firstNumber và secondNumber hiện là biến toàn cục của các hàm nằm bên trong class Program nhưng lại là biến cục bộ của class Program
        ///  Cần có từ khóa static vì các hàm sử dụng nó đều có từ khóa static
        /// 

        static int firstNumber = 5;
        static int secondNumber = 10;
             

        /// 
        /// hàm trả ra kết quả tổng của 2 số firstNumber và secondNumber
        /// 
        /// 

        static int SumTwoNumber()
        {
            return firstNumber + secondNumber;
        }

Kết quả màn hình xuất ra giá trị tổng của hai biến firstNumber secondNumber. 5 + 10 = 15

Cấu trúc của hàm cơ bản trong C#, C# cơ bản, tự học C#, Kteam, HowKteam

Nhưng khi dùng chiêu thức như vậy rõ là khá phiền phức khi muốn in ra màn hình hiển thị tổng của hai số một cách linh động. Hay muốn thực thi tính tổng hai số nhiều lần. Để tạo sự linh động cho hàm thì tất cả chúng ta sẽ tìm hiểu và khám phá thêm về parameter :

  •  Có thể hiểu đơn thuầnparametterlà
    • Tập hợp một hay nhiều biến chứa các giá trị thiết yếu để thao tác trong hàm .
    • Các giá trị của các biến này là những giá trị mà người dùng truyền vào khi gọi hàm đó .
    • Khai báo mộtparamettercũng giống như khai báo biến ( xem lại bàiBIẾN TRONG C#). Khi khai báo nhiềuparametterthì các khai báo phải cách nhau bởi dấu “, ”

Trở lại bài toán trên. Chúng ta muốn 2 số cần tính tổng này là 2 số do người dùng quyết định hành động, 2 số này không cố định và thắt chặt. Vì thế ta phát sinh sáng tạo độc đáo :

  • Cho người dùng truyền vào 2 số họ muốn tính tổng vào 2 biến .
  • Từ đó ta chỉ cần tính tổng giá trị 2 biến đó rồi trả hiệu quả về cho người dùng .

Các bạn xem qua ví dụ sau :

static void Main(string[] args)
        {

            // khi sử dụng hàm phải truyền đúng số lượng, thứ tự parameter vào như khai báo của hàm
            // đồng thời kiểu dữ liệu truyền vào của parameter phải trùng khớp với khai báo của hàm

            Console.WriteLine(SumTwoNumber(5, 10));
            Console.ReadKey();
        }               
             

        /// 
        /// hàm trả ra kết quả tổng của 2 số firstNumber và secondNumber
        /// 

        /// 
        /// 
        /// 

        static int SumTwoNumber(int firstNumber, int secondNumber)
        {
            return firstNumber + secondNumber;
        }

Kết quả màn hình hiển thị vẫn in ra giá trị 15 .

Cấu trúc của hàm cơ bản trong C#, C# cơ bản, tự học C#, Kteam, HowKteam

  • Các khai báoint firstNumber,int secondNumber là các khai báo parametter. Với khai báo này ta hiểu rằng muốn sử dụng hàm này thì cần truyền vào 2 giá trị kiểu int.
  • Cácparametterđược xem như các biến cục bộ có phạm vị sử dụng trong hàm ( biến cục bộ sẽ được trình diễn ở bài sau ) .
  • Cácparametter được khởi tạo ngay khi gọihàmvà được hủy khi kết thúc gọihàm.
  • Số lượngparameter là không số lượng giới hạn .
  • Khi sử dụng hàm phải truyền vào đủ và đúngparameter. ( Đủ số lượng, đúng kiểu tài liệu và đúng thứ tự như khai báo )
  • Có thể khai báo cácparametervới các kiểu tài liệu khác nhau .
  • Hàm sử dụng sẽ tạo ra các bản sao củaparametertruyền vào trên RAM. Sau đó dùng những bản sao đó để giải quyết và xử lý tài liệu. Cho nên kết thúc lời gọi hàm giá trị của cácparametersẽ không bị biến hóa .

Cùng xét thêm một ví dụ nữa nào :

static void Main(string[] args)
        {
            int firstNum = 0;
            int secondNum = 3;


            // in ra màn hình 10 lần tổng 2 số
            for (int count = 0; count < 10; count++)
            {
                // in ra màn hình tổng của 2 số
                PrintSumTwoNumber(firstNum, secondNum);


                // tính toán để tạo ra 2 số mới. Không quan trọng lắm
                firstNum += count;
                secondNum += count * 2 % 5;
            }

            Console.ReadKey();
        }
       

        /// 
        /// In ra màn hình tổng của 2 số
        /// 
        /// 
        /// 

        static void PrintSumTwoNumber(int firstNumber, int secondNumber)
        {
            Console.WriteLine("{0} + {1} = {2}",firstNumber, secondNumber, SumTwoNumber(firstNumber, secondNumber));
        }   

        /// 
        /// hàm trả ra kết quả tổng của 2 số firstNumber và secondNumber
        /// 
        /// 
        /// 
        /// 

        static int SumTwoNumber(int firstNumber, int secondNumber)
        {
            return firstNumber + secondNumber;
        }

Kết quả màn hình hiển thị xuất ra 10 giá trị tổng của 2 số

Cấu trúc của hàm cơ bản trong C#, C# cơ bản, tự học C#, Kteam, HowKteam

  • Ví dụ về cácparametervới kiểu tài liệu khác nhau
static void Main(string[] args)
        {
            PrintSomeThing("K9", 22);
            PrintSomeThing("HowKteam.com", 1);
            Console.ReadKey();
        }

    
        static void PrintSomeThing(string name, int age)
        {
            // in ra màn hình tên và tuổi được truyền vào
            Console.WriteLine("This is {0}, {1} years old.", name, age);
        }

Kết quả khi chạy chương trình :

Cấu trúc của hàm cơ bản trong C#, C# cơ bản, tự học C#, Kteam, HowKteam

  •  Nếu không sử dụng parametter trong hàm thì không nên khai báo parametter để tránh lãng phí bộ nhớ!

Kết luận

Qua bài này tất cả chúng ta đã nắm được hàm là gì, cách sử dụng hàm .

Bài sau chúng ta sẽ tìm hiểu về BIẾN TOÀN CỤC VÀ BIẾN CỤC BỘ TRONG C#.

Xem thêm: Services là gì?

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.

Thảo luận

Nếu bạn có bất kể khó khăn vất vả hay vướng mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI và ĐÁP trên thư viện Howkteam. com để nhận được sự tương hỗ từ hội đồng .