BASIC
CONTROL STATEMENTS
DATA TYPE
FUNCTIONS
FILE I/O
THAM KHẢO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Tạo hàm (function) trong C

Trong bài này chúng ta sẽ tìm hiểu về function trong ngôn ngữ C, giúp bạn hiểu rõ function là gì và tại sao nên sử dụng nó khi lập trình.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Ở những bài trước chúng ta cũng có sử dụng function rồi đấy, đó là hai function scanfprintf nằm trong thư viện stdio.sh. Hai function này có công dụng xử lý dữ liệu nhập xuất.

1. Function là gì?

Function hay còn gọi là hàm, là tập hợp một nhóm lệnh dùng để xử lý một chức năng nào đó, được đặt dưới một cái tên và khi nào cần thì chỉ cần gọi đến tên là được.

Ví dụ function scanf dùng để nhập thông tin từ bàn phím, ta chỉ cần gọi và sử dụng chứ không cần quan tâm bên trong nó là gì, chỉ cần biết công dụng và cách dùng của nó là được.

Bài viết này được đăng tại [free tuts .net]

Có hai nhóm function như sau:

  • Function có sẵn trong thư viện C, là những function có sẵn trong ngôn ngữ C, khi cần sử dụng bạn chỉ cần gọi đến là được.
  • Function do người dùng định nghĩa, là những function do chính bạn tự tạo ra để thực hiện một công việc nào đó.

2. Hàm main trong C là gì?

Hàm main trong C thực chất cũng là một function nhé các bạn, mà nó là function đặc biệt được dùng để chạy chương trình chính.

Ví dụ trong file abc.c bạn có 10 function thì trình biên dịch sẽ không biết bắt đầu biên dịch từ đâu, và nếu có hàm main thì nó sẽ hiểu là phải bắt đầu từ hàm này. Vì vậy những function mà bạn định nghĩa thường được sử dụng trong hàm main.

Bạn có thể tự tạo function ở vị trí trên hàm main, trong hàm main đều được nhé. Chi tiết thì ta sẽ tìm hiểu ở những phần tiếp theo.

2. Cách tạo function trong C

Để tạo function thì ta thực hiện theo cú pháp sau:

void functionName()
{
    ... .. ...
    ... .. ...
}

Trong đó void là kiểu dữ liệu trả về (void = không trả về gì cả), còn functionName là tê ncủa function mà bạn muốn đặt. Quy tắt khi đặt tên hàm sẽ giống với đặt tên biến, và nó phải là duy nhất nhé.

Ví dụ: Viết function hiển thị số lớn nhất trong ba số nhập vào từ bàn phím.

#include <stdio.h>

void findMax(){
	int a, b, c, max;
	printf("Nhap vao so thu 1:");
	scanf("%d", &a);
	
	printf("Nhap vao so thu 2:");
	scanf("%d", &b);
	
	printf("Nhap vao so thu 3:");
	scanf("%d", &c);
	
	max = a;
	if (a < b){
		max = b;
	}
	if (a < c){
		max = c;
	}
	
	printf("So lon nhat la %d \n", max);
}


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

Trong hàm main mình đã gọi đến function findMax() để sử dụng một lần. Nếu bạn muốn sử dụng nhiều lần thì chỉ cần thêm là được.

int main() {
	
	findMax();
	findMax();
	findMax();
        // ...
	
  	return 0;
}

Nếu viết function chỉ để gom thành một nhóm như vậy thì quá đơn giản. Vấn đề to lớn tiếp theo đó là:

Giả sử mình muốn viết một function trả về giá trị lớn nhất thì lam thế nào? Tức không sử dụng mấy hàm printf và scanf trong hàm.

Được thôi, chẳng qua là bạn chưa học đến mà thôi. Ta sẽ sử dụng đến hai khái niệm đó là tham số của function và giá trị trả về của function.

Tham số của function

Tham số chính là dữ liệu mà bạn muốn truyền vào function, sẽ được đặt trong cặp dấu ngoặc nhọn nhé.

void functionName(int var1, char var2, ...){
	// Code
}

Như bạn thấy, tham sô truyền vào cũng phải khai báo kiểu giá trị cho nó.

Mình sẽ viết lại ví dụ ở trên bằng cách sử dụng tham số nhé.

#include <stdio.h>

void findMax(int a, int b, int c){
	int max;
	
	max = a;
	if (a < b){
		max = b;
	}
	if (a < c){
		max = c;
	}
	
	printf("So lon nhat la %d \n", max);
}


int main() {
	int a, b, c;
	
	printf("Nhap vao so thu 1:");
	scanf("%d", &a);
	
	printf("Nhap vao so thu 2:");
	scanf("%d", &b);
	
	printf("Nhap vao so thu 3:");
	scanf("%d", &c);
	
	findMax(a, b, c);
	
  	return 0;
}

Như bạn thấy, đoạn code nhập dữ liệu sẽ nằm ở hàm main, và ba giá trị a, b, c sẽ truyền vào hàm thông qua các tham số.

Bấy nhiêu là chưa đủ, giả sử mình muốn lấy giá trị lớn nhất đó để thực hiện thêm một thao tác khác ở hàm main thì làm thế nào? Rất đơn giản, hãy tìm hiểu qua phần giá trị trả về (return).

Giá trị trả về của hàm (return)

Trong hàm main mình có một đoạn code return 0;, và đó chính là giá trị trả về của hàm main.

Nếu mình muốn bỏ dòng đó thì phải thay thế kiểu trả về là void thay vì là int.

// Khong tra ve gi ca
void main() {
	
}

// Tra ve kieu int
void main() {
	
}

// Tra ve kieu char
void main() {
	
}

Như vậy, ở hàm mà bạn tự định nghĩa cũng áp dụng cách này nhé.

Quay lại ví dụ trên, mình sẽ viết lại hàm findMax trả về số lớn nhất (kiểu int).

#include <stdio.h>

int findMax(int a, int b, int c){
	int max;
	
	max = a;
	if (a < b){
		max = b;
	}
	if (a < c){
		max = c;
	}
	
	return max;
}


void main() {
	int a, b, c, max;
	
	printf("Nhap vao so thu 1:");
	scanf("%d", &a);
	
	printf("Nhap vao so thu 2:");
	scanf("%d", &b);
	
	printf("Nhap vao so thu 3:");
	scanf("%d", &c);
	
	// Lay gia tri lon nhat
	max = findMax(a, b, c);
	
	printf("So lon nhat la : %d", max);
  	return 0;
}

Như bạn thấy, trong hàm main mình đã gọi đến hàm findMax và gán nó vào biến max để lấy số lớn nhất max = findMax(a, b, c);. Lúc này biến max chính là số lớn nhất trong ba số a, b, c.

Lý thuyết tạo hàm - function trong C rất đơn giản, bạn chỉ cần nắm vững một số khái niệm sau: Các tạo hàm, tham số truyền vào, giá trị trả về, cách gọi làm là được nhé. Bài này mình sẽ dừng ở đây, hẹn gặp lại bạn ở các bài tiếp theo.

Cùng chuyên mục:

Cách điều khiển Keypad trong Arduino

Cách điều khiển Keypad trong Arduino

Cách điều khiển màn hình LCD trong Arduino

Cách điều khiển màn hình LCD trong Arduino

Hướng dẫn điều khiển cảm biến ánh sáng trong Arduino

Hướng dẫn điều khiển cảm biến ánh sáng trong Arduino

Cách điều khiển công tắc (switch) trong Arduino

Cách điều khiển công tắc (switch) trong Arduino

Cách điều khiển button trong Arduino

Cách điều khiển button trong Arduino

Hướng dẫn điều khiển đèn LEG bằng Touch Sensor

Hướng dẫn điều khiển đèn LEG bằng Touch Sensor

Hướng dẫn điều khiển đèn LEG bằng nút nhấn trong Arduino

Hướng dẫn điều khiển đèn LEG bằng nút nhấn trong Arduino

Hướng dẫn điều khiển đèn LEG RGB trong Arduino

Hướng dẫn điều khiển đèn LEG RGB trong Arduino

Hướng dẫn bật tắt đèn LED trong Arduino

Hướng dẫn bật tắt đèn LED trong Arduino

Viết chương trình Arduino đầu tiên

Viết chương trình Arduino đầu tiên

Các kiến thức cần biết trước khi học lập trình với Arduino

Các kiến thức cần biết trước khi học lập trình với Arduino

Hướng dẫn cài đặt và sử dụng Arduino IDE

Hướng dẫn cài đặt và sử dụng Arduino IDE

Arduino là gì? Ứng dụng của Arduino trong cuộc sống

Arduino là gì? Ứng dụng của Arduino trong cuộc sống

Cách nhân hai số trong ngôn ngữ C

Cách nhân hai số trong ngôn ngữ C

Cách cộng hai số nguyên trong C

Cách cộng hai số nguyên trong C

Tổng hợp hơn 1000 bài tập C / C++ có lời giải

Tổng hợp hơn 1000 bài tập C / C++ có lời giải

Bài này sẽ tổng hợp hơn 1000 bài tập C / C++ có lời giải…

Các hàm trong thư viện ctime C / C++

Các hàm trong thư viện ctime C / C++

Các hàm trong thư viện cstdio C / C++

Các hàm trong thư viện cstdio C / C++

Các hàm trong thư viện cctype C / C++

Các hàm trong thư viện cctype C / C++

Các hàm trong thư viện cstring C / C++

Các hàm trong thư viện cstring C / C++

Top