Hàm là một đoạn chương trình thực hiện một tác vụ được định nghĩa cụ thể, Việc phân tách chức năng thành hàm sẽ giúp chương trình dễ lập trình và dễ …
Khái niệm về hàm – function:
– Các hàm được sử dụng để rút gọn cho một chuỗi các chỉ thị được thực hiện nhiều lần (khả năng sử dụng lại).
– Việc phân tách chức năng thành hàm sẽ giúp chương trình dễ lập trình và dễ hiểu khi xem xét hoạt động tổng thể
– Việc gỡ lỗi chương trình trở nên dễ dàng hơn khi cấu trúc của chương trình rõ ràng với hình thức lập trình theo module
– Chương trình cấu tạo từ các hàm cũng dễ dàng bảo trì, bởi vì sự sửa đổi khi có yêu cầu được giới hạn trong từng hàm của chương trình
Các thành phần của hàm: Hàm là một đoạn chương trình dùng để giải quyết một vấn đề cụ thể nào đó. Một hàm gồm các thành phần sau:
- Tên hàm: do người lập trình tự đặt theo qui tắc đặt tên của C++
- Input: đầu vào của hàm
- Output: đầu ra của hàm
- Processing: quá trình xử lý của hàm (thuật toán)
Ghi chú: Output có thể là
- Void: không trả về kết quả
- int: kết quả trả về kiểu số nguyên
- float: kết quả trả về kiểu số thực
- …
Ví dụ: Viết hàm tính diện tích hình tròn khi biết bán kính
Tên hàm: TinhDienTichHinhTron
- Input: bán kính
- Output: diện tích hình tròn
- Processing: S=bán kính * 2 * PI
Cú pháp khai báo hàm
- <kiểu trả về>: kiểu dữ liệu của input, nếu hàm không có output thì kiểu trả về là void
- <ds tham số>: là tất cả các input của hàm (bao gồm cả kiểu dữ liệu của input và tên của input, các input cách nhau bởi dấu ,)
- Thân hàm: thuật toán
Vi dụ: Viết hàm tính diện tích hình tròn khi biết bán kính
Vi dụ: In ra màn hình n lần từ Hello, mỗi từ trên 1 dòng
Cách gọi hàm
- Ta có thể gọi hàm ở bất kỳ vị trí nào, trong chương trình chính hoặc trong thân của một hàm khác
- Hàm phải được khai báo ở vị trí sau phần khai báo thư viện (prototype)
- Cách gọi hàm đối với hàm có kiểu trả về void
Vi dụ: Muốn in ra màn hình 10 lần từ Hello ta gọi hàm như sau:
InHello (10);
- Cách gọi hàm đối với hàm có kiểu trả về khác void
- Khai báo biến có cùng kiểu trả về với hàm
- Gán giá trị của hàm vào cho biến vừa khai báo
- Xử lý biến theo ý muốn
Ví dụ: ta có bán kính hình tròn r=6. Cần tính diện tích hình tròn rồi in diện tích đó ra màn hình ta có thể gọi như sau:
Hàm đệ qui: là hàm gọi lại chính nó trong thân hàm. Xây dựng hàm đệ qui cần xác định 2 yếu tố điều kiện sau:
- Điều kiện dừng: là trường hợp mà hàm trả về kết quả trực tiếp
- Điều kiện đệ qui: là trường hợp và hàm gọi lại chính nó ở mức độ nhỏ hơn
Vi dụ: Viết hàm tính tổng S=1 + 2 + 3 +…+ n
- Điều kiện dừng: n=1 => S(1)=1
- Điều kiện đệ qui: n>1: S(n)=n+S(n-1)
Các bước thực hiện để giải quyết một bài toán
- Bước 1: Xác định tên hàm, input, output, thuật toán
- Bước 2: Cài đặt chương trình
- Bước 3: Gọi hàm trong chương trình chính.
VD1: Viết hàm tìm ước chung của 2 số nguyên dương a và b. Viết hàm main tính ước chung lớn nhất cho 2 số nguyên nhập vào từ bàn phím, sử dụng hàm đã viết ở trên
Bước 1: Xác định tên hàm, input, output, thuật toán
- Tên hàm: UCLN (ước chung lớn nhất)
- Input: 2 số nguyên a, b (kiểu int)
- Output: ước chung lớn nhất của a,b là 1 số nguyên
- Sử dụng thuật toán euclid => số lần lặp của bài toán không xác định => sử dụng vòng lặp while
- Thuật toán euclid tìm UCLN của a và b
Nếu a>b thi UCLN(a,b)=UCLN(a-b,b)
Nếu a<b thi UCLN(a,b)=UCLN(a,b-a)
Bước 2: Cài đặt chương trình
- Tạo project mới: File -> new ->Project
- Cài đặt hàm
- Gọi hàm
Vd2: Viết hàm kiểm tra số nguyên dương n có phải là số nguyên tố hay không? Viết hàm main minh họa kiểm tra số nguyên nhập vào từ bàn phím có phải là số nguyên tố hay không?
Bước 1: Xác định tên hàm, input, output, thuật toán
- Tên hàm: ktraSNT (kiểm tra số nguyên tố)
- Input: 01 số nguyên dương n (kiểu int)
- Output: có hoặc không, đúng hoặc sai, true hoặc false => kiểu trả về là int (1: đúng, 0: sai)
- Thuật toán:
Đếm số ước của n.So sánh số ước của n với 2. Nếu số ước bằng 2 thì đó là số nguyên tố, ngược lại không phải số nguyên tố
Bước 2: Cài đặt chương trình
- Tạo project mới: File -> new ->Project
- Chọn ngôn ngữ là C++
- Tên project:
- Cài đặt hàm
- Gọi hàm
VD3: Viết chương trình đếm các số nguyên tố trong khoảng [2:100] ?
#include <conio.h> #include <stdio.h> //khai báo prototype int KTNT(int a); //hàm main void main() { int dem=0; for (int i = 2; i <= 100; i++) { int kt = KTNT(i); if (kt==1) { dem++; } } printf("co %d so nguyen to",dem); getch(); } // hàm được viết ở đây int KTNT(int a) { int demuoc=0; for (int i = 2; i < a; i++) { if (a%i==0) { demuoc ++; } } if (demuoc==0) { return 1; } else { return 0; } }
VD4: Viết hàm tính xn bằng hàm sử dụng đệ qui
Bước 1: Xác định tên hàm, input, output, thuật toán
- Tên hàm: LuyThua
- Input: 01 số thực x, 01 số nguyên dương n
- Output: xn là một số thực (float)
- Thuật toán đệ qui
- Điều kiện dừng: n=0 => Lũy thừa =1
- Điều kiện đệ qui n>0: LuyThua(x,n)=x*LuyThua(x,n-1);
Bước 2: Cài đặt chương trình
- Tạo project mới
- Cài đặt hàm
Bài tập tương tự
Bài tập 1.Viết hàm tính diện tích hình tam giác khi biết ba cạnh của tam giác đó. Viết hàm main minh họa
Bài tập 2.Viết hàm tính tổng các số chẵn nhỏ hơn n cho trước.
Bài tập 3.Viế thàm tính n!=1*2*3*…*n
Bài tập 4.Viết hàm tính (n dấu căn)
Bài tập 5.Viết hàm tính sử dụng hàm đệ qui
Bài tập 6.Viết hàm tính tổng các ước của số nguyên n. Viết hàm main minh họa
Bài tập 7.Viết hàm cho biết số ngày của một tháng khi biết tháng và năm. Viết hàm main minh họa.
Bài tập 8.Viết hàm đổi chỗ 2 số nguyên x, y. Viết hàm main minh họa
Bài tập 9.Viết hàm tìm BCNN của hai số nguyên dương a và b
Bài tập 10.Viết hàm kiểm tra số nguyên dương n có các chữ số toàn là chữ số lẻ hay không?
Bài tập 11.Viết hàm xuất số đảo của số nguyên dương n.Viết hàm main minh họa
Bài tập 12.Nhập vào số nguyên dương h, viết hàm in ra màn hình các tam giác sau
Bài tập 13.Nhập n>=0. Viết hàm tính S(n)=1-2+3-4+ … +(-1)n-1n.
Bài tập 14.Nhập n>=0. Viết hàm tính
Bài tập 15.Nhập n>=0. Viết hàm tính
Bài tập 16.Nhập n>=0. .Viết hàm tính
Xem thêm Mảng một chiều