Học một chương trình sẽ không để thiết kế phần mềm tương tác nhiều hơn so với học thể loại bút pháp như viết thơ. Kyle Woodbury
STDIO Hàm là một khái niệm vô cùng quen thuộc với bất kỳ một lập trình viên nào. Tuy nhiên ở mỗi ngôn ngữ khác nhau thì hàm cũng có những điểm không tương đồng với nhau. Tiếp tục chuỗi bài viết về chương trình tự học C++, bài viết này xin giới thiệu về cách khai báo và định nghĩa một hàm.
Nội dung bài viết

Giới thiệu

Hàm là một khái niệm vô cùng quen thuộc với bất kỳ một lập trình viên nào. Tuy nhiên ở mỗi ngôn ngữ khác nhau thì hàm cũng có những điểm không tương đồng với nhau. Tiếp tục chuỗi bài viết về chương trình tự học C++, bài viết này xin giới thiệu về cách khai báo và định nghĩa một hàm trong C++.

Tiền đề bài viết

Sau bài viết về khái niệm hàm, đây là bài viết tiếp theo nằm trong chuỗi những bài viết về lập trình C++ cơ bản.

Đối tượng hướng đến

Bài viết dành cho những đối tượng đang trong quá trình tìm hiểu lập trình căn bản.

Khai báo hàm

Thông thường hàm thực hiện việc tính toán trên các tham số và cho lại giá trị kết quả, hoặc chỉ thực hiện một chức năng nào đó mà không cần trả lại kết quả. Kiểu giá trị trả về này được gọi là kiểu của hàm.

Hàm thường được khai báo ở đầu chương trình. Cách để khai báo một hàm như sau:

<kiểu của hàm> <tên hàm>(danh sách tham số) ;

Trong đó:

  • Kiểu của hàm: Là kiểu dữ liệu mà hàm trả về. Nếu không có giá trị trả về thì kiểu của hàm là void. 

  • Tên hàm: Là tên của hàm, do người lập trình đặt. Tên hàm không được chứa ký tự đặt biệt, không được bắt đầu bằng số.

  • Danh sách tham số: là danh sách các tham số dùng như các biến cục bộ. Nếu có nhiều tham số, thì chúng sẽ được phân tách theo các dấu phẩy.

Ví dụ

int test(int);            // Hàm test có tham số kiểu int và kiểu hàm là int
int rand();               // Không tham số, kiểu hàm (giá trị trả lại) là int
void write(float) ;    //Hàm không trả lại giá trị (kiểu void).

Định nghĩa hàm

Cấu trúc một hàm bất kỳ được bố trí cũng giống như hàm main(). Cụ thể:

<kiểu hàm> <tên hàm>(danh sách tham số)
{
      dãy lệnh của hàm ;
      return (biểu thức trả về); // có thể nằm đâu đó trong dãy lệnh.
}

Trong đó return là để truyền dữ liệu cho nơi gọi hàm. Câu lệnh return bắt buộc là phải có đối với hàm có giá trị trả về. Và có thể có hoặc không  đối với hàm không có giá trị trả về (có kiểu trả về là void). Đối với hàm có giá trị trả về thì kèm theo sau return là một biểu thức. Kiểu giá trị của biểu thức này chính là kiểu của hàm. Tuỳ theo mục đích của hàm mà lập trình viên có thể đặt return bất cứ đâu trong dấu {} ở trên. Khi gặp return chương trình tức khắc thoát khỏi hàm và trả lại giá trị biểu thức sau return. Có thể có nhiều câu lệnh return trong hàm.

Ví dụ

int sum(int a, int b)
{
      return (a+b);
}

Ví dụ trên định nghĩa hàm  tính tổng 2 số nguyên (kiểu int). Hàm này có 2 tham số truyền vào (số nguyên a và số nguyên b) và giá trị trả về là số nguyên a+b.

Ví dụ

int getMax(int a, int b)
{
      if(a > b) return a;
      else return b;
}

Ví dụ trên định nghĩa hàm tìm số lớn nhất từ 2 tham số truyền vào a và b. Nếu a lớn hơn b thì trả về giá trị là a (return a), ngược lại sẽ trả về giá trị b (return b).

Một ví dụ về hàm không có giá trị trả về:

void printNumber(int a)
{
      std::cout << a;
}

Hàm trên thực hiện công việc in một số nguyên (được truyền vào) ra màn hình console. Không có kiểu trả về nên không cần return.

Lưu ý

  • Danh sách tham số trong khai báo hàm có thể có  hoặc không tên của biến, thong thường ta chỉ cần khai báo kiểu dữ liệu của tham số chứ không cần khai báo tên của biến. Trong khi trong định nghĩa hàm thì phải có đầy đủ.

Ví dụ

//Khai báo hàm
int sum(int, int); //không cần tên biến
int sum(int a, int b); //có tên biến

//Định nghĩa hàm
int sum(int a, int b)  // có tên biến
{
      return (a + b);
}

Giải thích

  • Cuối khai báo hàm phải có dấu chấm phẩy (;), trong khi cuối dòng đầu tiên của định nghĩa hàm không có dấu chấm phẩy.
  • Hàm có thể không có tham số (danh sách tham số rỗng), tuy nhiên cặp dấu ngoặc sau tên hàm vẫn phải được viết.

Bạn cần hỗ trợ các dự án kết nối không dây?

Quí doanh nghiệp, cá nhân cần hỗ trợ, hợp tác các dự án IoT, kết nối không dây. Vui lòng liên hệ, hoặc gọi trực tiếp 0942.111912.

  • TỪ KHÓA
  • Arduino
  • ESP32
  • ESP8266
  • Wifi
  • Bluetooth
  • Zigbee
  • Raspberry Pi
THẢO LUẬN
ĐÓNG