Tài liệu Ngôn ngữ lập trình - Bài 3.2: Tham số và nạp chồng - Nguyễn Xuân Hùng: Giảng viên: Nguyễn Xuân Hùng
Mobile: 0908 386 366
Email: nguyenxuanhung@wru.vn
BÀI 3.2. THAM SỐ VÀ NẠP CHỒNG
NGÔN NGỮ LẬP TRÌNH
Nguyễn Xuân Hùng – Khoa CNTT – Trường Đại học Thủy Lợi
NỘI DUNG
1. Các tham số.
2. Sự nạp chồng và đối số mặc định.
3. Kiểm tra và gỡ rối.
10/17/20142 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
4.1 Các tham số
• Hai dạng tham số cơ bản đó là tham trị và tham chiếu.
• Tham trị: thì chỉ có giá trị của đối số truyền vào
• Tham chiếu: thì đối số là biến và biến này được gắn vào
tham số. Vì thế giá trị của biến này có thể bị thay đổi bởi
lời gọi hàm.
10/17/20143 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
4.1 Các tham số
4.1.1 Tham trị
Ví dụ: Viết một hàm trả về phí thuê dịch vụ luật, với tham
số truyền vào là số giờ và số phút. Phí dịch vụ này được
tính bằng tỉ số RATE = 150 USD trên một phần tư giờ.
double fee(int hoursWorked, int minutesWorked);
Ta có hai tham tham trị là hoursWorked và
minutesWorked.
Tham trị thực tế là một biến cục...
12 trang |
Chia sẻ: putihuynh11 | Lượt xem: 485 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Ngôn ngữ lập trình - Bài 3.2: Tham số và nạp chồng - Nguyễn Xuân Hùng, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Giảng viên: Nguyễn Xuân Hùng
Mobile: 0908 386 366
Email: nguyenxuanhung@wru.vn
BÀI 3.2. THAM SỐ VÀ NẠP CHỒNG
NGÔN NGỮ LẬP TRÌNH
Nguyễn Xuân Hùng – Khoa CNTT – Trường Đại học Thủy Lợi
NỘI DUNG
1. Các tham số.
2. Sự nạp chồng và đối số mặc định.
3. Kiểm tra và gỡ rối.
10/17/20142 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
4.1 Các tham số
• Hai dạng tham số cơ bản đó là tham trị và tham chiếu.
• Tham trị: thì chỉ có giá trị của đối số truyền vào
• Tham chiếu: thì đối số là biến và biến này được gắn vào
tham số. Vì thế giá trị của biến này có thể bị thay đổi bởi
lời gọi hàm.
10/17/20143 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
4.1 Các tham số
4.1.1 Tham trị
Ví dụ: Viết một hàm trả về phí thuê dịch vụ luật, với tham
số truyền vào là số giờ và số phút. Phí dịch vụ này được
tính bằng tỉ số RATE = 150 USD trên một phần tư giờ.
double fee(int hoursWorked, int minutesWorked);
Ta có hai tham tham trị là hoursWorked và
minutesWorked.
Tham trị thực tế là một biến cục bộ, khi hàm được gọi thì
giá trị của đối số được tính toán và tham trị tương ứng sẽ
được khởi tạo bằng giá trị này.
Ví dụ minh họa: (Click Me)
10/17/20144 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
4.1 Các tham số
4.1.2 Tham chiếu
• Để phân biệt với tham trị, một đối số là tham chiếu ta gán
dấu & phía sau tên kểu trong danh sách tham số.
• Ví dụ:
void getInput (double& receiver);
Hoặc
void getInput (double &receiver);
Đối số tương ứng trong lời gọi đến hàm đó phải là một
biến chứ không phải hằng số hay biểu thức
Ví dụ minh họa: Đảo giá trị hai số nhập từ bàn phím, và
hiển thị kết quả. (Click Me)
10/17/20145 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
4.1 Các tham số
4.1.2 Tham chiếu
• Bài tập 1: (Click Me)
10/17/20146 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
4.2 Nạp chồng và đối số mặc định
4.2.1 Nạp chồng
• C++ cho phép bạn đưa ra hai hoặc nhiều hơn các định
nghĩa khác nhau cho cùng một tên hàm, điều này có
nghĩa là bạn có thể sử dụng lại tên này trong nhiều tình
huống khác nhau. Vậy khi có hai hoặc nhiều hơn định
nghĩa một tên hàm thì gọi là nạp chồng.
• Ví dụ: Viết hàm tính trung bình cộng của hai số, ba số:
void ave(double n1, double n2);
void ave(double n1, double n2, double n3);
10/17/20147 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
4.2 Nạp chồng và đối số mặc định
4.2.1 Nạp chồng
• Chú ý: Khi khai báo nạp chồng một tên hàm, các khai
báo cho hai định nghĩa hàm khác nhau phải có tham số
hình thức khác nhau. Bạn không thể nạp chồng một tên
hàm bằng cách đưa ra hai định nghĩa mà chỉ khác nhau
kiểu của giá trị trả về.
• Ví dụ: sự nạp chồng sau là không thể:
double ave(double n1, double n2);
int ave(double n1, double n2);
double ave(double &n1, double n2);
10/17/20148 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
4.2 Nạp chồng và đối số mặc định
4.2.2 Đối số mặc định
• Bạn có thể định ra một đối số mặc định cho một hoặc
nhiều tham trị trong hàm.
• Ví dụ:
void showVolume(int length, int width = 1, int height=1);
• Trong lời gọi hàm nếu không truyền đối số cho nó thì nó
sẽ nhận đối số mặc định. Khi bỏ qua các đối số mặc định,
phải bỏ qua các đối số từ bên phải.
• Ví dụ: Viết hàm trả về thể tích của hình hộp với các tham
số length, width, height, nếu width và height không được
truyền vào thì lấy mặc định là 1. (Click Me)
10/17/20149 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
4.3 Kiểm tra và gỡ lỗi các hàm
4.3.1 macro assert
• Một sự xác nhận là một lời phát biểu đúng hoặc sai. Sự
xác nhận được sử dụng để kiểm tra tính hợp lệ của
chương trình.
• Macro assert được sử dụng giống như một hàm void có
một tham trị có kiểu bool. Vì một sự xác nhận chỉ là một
biểu thức Boolean, nên điều này có nghĩa là đối số của
assert là một xác nhận. Khi macro assert được gọi, đối số
xác nhận của nó được tính toán. Nếu nó có giá trị true thì
không có gì xảy ra. Nếu đối số có giá trị false thì chương
trình kết thúc và một thông điệp lỗi được đưa ra.
10/17/201410 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
4.3 Kiểm tra và gỡ lỗi các hàm
macro assert
Macro assert được định nghĩa trong thư viện cassert, vì vậy
bất kì chương trình nào sử dụng macro assert phải chứa chỉ
thị sau:
#include
• Một ưu điểm của việc sử dụng assert đó là bạn có thể tắt lời
gọi assert. Để tắt tất các các xác nhận, ta thêm như sau:
#define NDEBUG
#include
• Ví dụ: Nhập điểm của môn học toán, lý, hóa và đưa ra
trung bình cộng của môn học đó. (Click Me)
10/17/201411 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
EOF!
10/17/2014Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi12
Các file đính kèm theo tài liệu này:
- nnlt_3_2_napchongham_4029_1993528.pdf