///Hàm (Function): Dùng để thực hiện một công việc cụ thể.
///Tác dụng của hàm:
///- Làm chương trình sáng hơn, rõ ràng hơn.
///- Dể bảo trì code hơn.
///- Có thể sử dụng nhiều lần.
///- Có thể sử dụng ở nhiều nơi trong chương trình.
///- ...
///Định nghĩa (Tạo) hàm:
///Cú pháp:
///kiểu_trả_về tên_hàm(danh_sách_tham_số){
///thân_hàm
///return giá_trị;
///}
///Trong đó:
///kiểu_trả_về: là kiểu bất kỳ mà lập trình viên mong
///muốn. Nếu kiểu_trả_về là void thì không có lệnh
///return giá_trị; hoặc lệnh là return; , nếu
///kiểu_trả_về khác void thì bắt buộc phải có lệnh
///return giá_trị;
///tên_hàm: Do lập trình viên tự đặt, thường tuân
///theo quy tắc đặt tên dạng lạc đà, ví dụ nhapLieu(),
///hienThi, tinhTong(), tinhBietThucDelta(), ...
///(): bắt buộc phải có cặp ngoặc tròn
///danh_sách_tham_số: dùng để nhận dữ liệu để xử lý.
///Nếu không cần dữ liệu để xử lý thì không có
///danh_sách_tham_số.
///{}: Bắt buộc phải có.
///return giá_trị; : giá_trị phải có kiểu tương
/// đương hoặc nhỏ hơn kiểu_trả_về. giá_trị sẽ được
///trả về nơi hàm được gọi.
///Ví dụ:
void demo(){
printf("\nHello function");
}
void tinhTong(float a,float b){
float tong;
tong=a+b;
printf("\nTong=%g",tong);
}
double tinhBietThucDelta(float a,float b,float c){
double d;
d=b*b-4*a*c;
return d;
}
///Sau khi định nghĩa (tạo) xong hàm, thì không có
///nghĩa là hàm sẽ được tự động thực thi.
///Hàm chỉ được thực thi khi nó được gọi (được yêu
///cầu).
///*Gọi hàm (yêu cầu hàm):
///tên_hàm(danh_sách_đối_số)
///Trong đó, số lượng đối số của danh_sách_đối_số
///phải bằng số lượng tham số của danh_sách_tham_số.
int main(){
demo();
tinhTong(10,20);
double delta;
delta=tinhBietThucDelta(1,3,2);
printf("\nDelta=%g",delta);
return 0;
}
///Lưu ý: - Không được phép định nghĩa (tạo) hàm trong
///hàm.
///- Trong hàm này được quyền (được phép) gọi hàm
///khác.