LẬP TRÌNH C++
(3 Tín chỉ)
Gv: Nguyễn Văn Hùng
Khoa: Khoa học máy tính
Ngôn ngữ lập trình C++
1/56
Chương 6: HÀM (FUNCTION)
6.1. Hàm
6.2. Hàm và mảng dữ liệu
6.3. Hàm và cấu trúc
6.4. Đệ quy
Ngôn ngữ lập trình C++
2/56
Hàm
-
Ngôn ngữ lập trình C++
Khái niệm
Khai báo và định nghĩa
Lời gọi và sử dụng hàm
Biến và truyền tham số
Khai báo hàm trùng tên
Ngôn ngữ lập trình C++
5/56
Khai báo và định nghĩa hàm
Khai báo hàm:
- Hàm có thể trả về hoặc không trả về giá trị. Trường hợp hàm
trả về giá trị thì kiểu của giá trị trả lại được gọi là kiểu của
hàm.
- Hàm được chia làm 2 loại:
+ Hàm định nghĩa sẵn
+ Hàm do người lập trình tự định nghĩa.
Ngôn ngữ lập trình C++
6/56
Khai báo và định nghĩa hàm
Hàm định nghĩa sẵn: có trong tệp thư viện *.h. Để sử dụng
được các hàm này ta cần phải khai báo tệp tiêu đề theo cú
pháp #include<Tentaptinthuvien>
Ví dụ: #include<iostream>
#include<cmath>
Ngôn ngữ lập trình C++
7/56
Khai báo các biến cục bộ;
Các câu lệnh;
return(biểu thức);
}
Ngôn ngữ lập trình C++
9/56
Khai báo và định nghĩa hàm
Định nghĩa hàm:
Ví dụ: Định nghĩa hàm tính luỹ thừa n (với n nguyên) của một
số thực bất kỳ.
Hàm này có hai đầu vào (đối thực x và số mũ nguyên n) và
đầu ra (giá trị trả lại) kiểu thực với độ chính xác gấp đôi là xn.
double luythua(float x, int n) //x,n là các tham số hình
thức
{
int i ;
// i là biến cục bộ
double kq = 1 ;
// kq để lưu kết quả
for (i=1; i
Cú pháp:
Ten_ham(Ds_tham_so_thuc_te);
Trong đó: Ds_tham_so_thuc_te phân tách nhau bởi dấu phẩy
(,)
Ngôn ngữ lập trình C++
12/56
Lời gọi và sử dụng hàm
Ví dụ:
double luythua(float x, int n)
{
int i ;
double kq = 1 ;
for (i=1; i
cout
19/56
Biến và truyền tham số
- Các bước thực hiện:
+ Tại thời điểm gọi: giá trị của tham số thực tế được sao
chép vào trong ô nhớ của tham số hình thức
+ Trong quá trình thực hiện: mọi thao tác trên tham số hình
thức là sự thao tác trên ô nhớ riêng của nó
+ Khi kết thúc: sự thay đổi giá trị của tham số hình thức
không làm ảnh hưởng đến giá trị của tham số thực tế.
Ngôn ngữ lập trình C++
20/56
Biến và truyền tham số
Ví dụ: Cho hàm: luythua(float x, int n) tính xn. Giả sử trong
chương trình chính ta có các biến a, b đang chứa các giá trị
a=2, b=3 và biến f chưa có giá trị. Để tính ab và gán giá trị tính
được cho f, ta có thể gọi f = luythua(a,b). Khi gặp lời gọi này,
chương trình sẽ tổ chức như sau:
- Tạo 2 biến mới có tên x và n. Gán nội dung các ô nhớ
này bằng các giá trị trong lời gọi, tức gán 2 cho x và 3 cho n.
- Tới phần khai báo của hàm, chương trình tạo thêm
các biến kq và i.
- Tiến hành tính toán (gán lại kết quả cho kq).
- Cuối cùng lấy kết quả trong kq gán cho ô nhớ f
Biến và truyền tham số
+ Truyền theo tham trỏ:
Trong phương pháp này:
- Tham số hình thức là tham số vào ra, do đó nó sẽ nhận giá
trị vào cho chương trình con và trả về kết quả cho chương
trình gọi.
- Tham số hình thức là một con trỏ và tham số thực tế phải là
một biến
Phương pháp thực hiện:
- Tại thời điểm gọi: nó truyền một đường dẫn truy cập, thông
thường chỉ là một địa chỉ, đến chương trình con được gọi
- Khi kết thúc: mọi thay đổi giá trị của tham số hình thức đều
làm giá trị của tham số thực tế thay đổi theo.
Ngôn ngữ lập trình C++
25/56