Mô tả

Một chương trình được viết  trong ngôn ngữ C gọi là một dãy các hàm, trong đó có một hàm chính ( hàm main()). Hàm chia các bài toán lớn thành các công việc nhỏ hơn giúp thực hiện những công việc lặp lại nào đó một cách nhanh chóng mà không phải viết lại đoạn chương trình. Thứ tự các hàm trong chương trình C  là bất kỳ, song chương trình bao giờ cũng đi thực hiện từ hàm main(). Hàm có thể xem là một đơn vị độc lập của chương trình. Hàm trong C có vai trò ngang nhau, vì vậy không có phép xây dựng một hàm bên trong các hàm khác.

Các tiện ích của hàm

  1. Tái sử dụng
    Là một module chương trình, giải quyết một công việc hoàn chỉnh, được dùng nhiều lần trong chương trình
  2. Tối ưu mã (code)
    • Tránh việc viết lại các đoạn trình giống nhau trong chương trình
    • Phân cấp (chia) chương trình theo tư tưởng: chia để trị => chương trình dễ hiểu, dễ quản lý, dễ bảo trì

Các loại hàm trong C

Có hai loại hàm trong ngôn ngữ C

  1. Các hàm thư viện (Library Functions): Là các hàm được khai báo trong tập tin header của C như: scanf(), printf(), gets(), puts(), ceil(), floor() v.v..
  2. Các hàm do người lập trình định nghĩa (User-defined functions): Là các hàm do lập trình viên định nghĩa. 

Khai báo hàm

Cú pháp khai báo một hàm trong ngôn ngữ C:

kieu_ham ten_ham (danh sach tham so)
{
/* noi dung cua ham */
}

Trong đó :

  • kieu_ham : là một kiểu dữ liệu chuẩn của C, hoặc kiểu do người dùng tự định nghĩa
  • ten_ham : được đặt theo quy tắc của tên biến, có phân biệt chữ hoa với chữ thường
  • danh sach tham so : các tham số hình thức của  các hàm trong c

Giá trị trả về

Một hàm trong C có thể có giá trị trả về hoặc không có giá trị trả về. Trường hợp hàm không có giá trị, sử dụng từ khóa void để mô tả kiểu của hàm.

Ví dụ hàm không có giá trị trả vê:

void hello()
{  
printf("hello c");  
}  

Nếu một hàm có giá trị trả về, chúng ta cần sử dụng kiểu dữ liệu như: int, long, char .v.v. Dữ liệu trả về phụ thuộc vào kiểu khai báo của hàm

Ví dụ hàm có giá trị trả về:

int get()
{  
return 10;  
}  

Ví dụ trên về là số 10 kiểu dữ liệu số nguyên. Nếu chúng ta muốn trả về kiểu số thực thì phải khai báo float trước tên hàm

float get()
{  
return 10.2;  
}  

Vị trí của hàm

  • Có thể khai báo sau hoặc trước hàm main() trong c.
  • Nếu khai báo sau hàm main() thì phải khai báo prototype của hàm ở đầu chương trình, sau đó phần triển khai nội dung hàm được đặt sau hàm main()
  • Funtion prototype:
    • Khai báo kiểu hàm, tên hàm và các tham số , kết thúc bằng dấu chấm phẩy.
    • Ví dụ : int SUM (int x , int y);        => prototype của hàm SUM
    • Chú ý :  Trong phần triển khai của hàm , thì danh sách tham biến và kiểu dữ liệu của hàm phải trùng khớp với những gì đã khai báo  trong phần prototype

Lời gọi hàm

  • Hàm được gọi bất kì nơi đâu trong chương trình, có thể từ hàm main() hoặc một hàm khác trong chương trình.
  • Khi hàm A muốn gọi hàm B thì hoặc là B phải triển khai trước A hoặc là B đã khai báo prototype ở đầu chương trình.
  • Hàm được gọi thông qua tên hàm và danh sách các tham số. Ví dụ : Sum(10,20) hoặc Sum(20,a),..
  • Hàm có thể được gọi theo nhiều cách khác nhau
  • Trong C, không có các hàm lồng nhau

Các tham số trong ngôn ngữ C

Một hàm trong ngôn ngữ C không có tham số hoặc nhiều tham số

Ví dụ hàm không có tham số:

void hello()
{  
printf("hello c");  
}  

Ví dụ hàm có một tham số:

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

Cách gọi một hàm trong ngôn ngữ C

Nếu hàm có giá trị trả về, chúng ta nhận giá trị của hàm. Cú pháp gọi một hàm trong ngôn ngữ C như sau:

variable=function_name(arguments...);  

1) variable: Nếu hàm có kiểu dữ liệu là void, không cần khai báo variable, bởi vì hàm void không có giá trị trả về.

2) function_name: Là tên hàm sẽ được gọi.

3) arguments: Truyền các tham số cho hàm.

Ví dụ gọi một hàm:

hello();//G?i hàm không có giá tra ve
int value=get();//G?i hàm có giá tri tra ve
int value2=add(10,20);//goi ham truyen tham so

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

#include <stdio.h>

void xin_chao()
{
    printf("xin chao lap trinh C\n");
}

int main()
{
    xin_chao();
    return 0;
}

Ví dụ về hàm có giá trị trả về:

#include <stdio.h>

int tinh_mu_ba(int n)
{
    return n*n*n;
}

int main()
{
    int kq1=0,kq2=0;
    
    kq1=tinh_mu_ba(2);
    kq2=tinh_mu_ba(3);
    
    printf("%d \n",kq1);
    printf("%d \n",kq2);
    
    return 0;
    
}
Đăng nhập
Đăng ký
Hotline: 0904251826
x