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 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...

pdf12 trang | Chia sẻ: putihuynh11 | Lượt xem: 413 | Lượt tải: 0download
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:

  • pdfnnlt_3_2_napchongham_4029_1993528.pdf