Bài giảng Nguyên lý lập trình hướng đối tượng: Bài 2 - TS. Lý Anh Tuấn
lượt xem 2
download
Bài giảng Nguyên lý lập trình hướng đối tượng: Bài 2 Hàm và Nạp chồng hàm, cung cấp cho người học những kiến thức như: Hàm định nghĩa trước; Hàm người dùng định nghĩa; Tham số; Nạp chồng và đối số mặc định. Mời các bạn cùng tham khảo!
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Nguyên lý lập trình hướng đối tượng: Bài 2 - TS. Lý Anh Tuấn
- NGUYÊN LÝ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Bài 2: Hàm và Nạp chồng hàm Giảng viên: TS. Lý Anh Tuấn Email: tuanla@tlu.edu.vn
- Nội dung 1. Hàm định nghĩa trước ◦ Hàm trả về giá trị và hàm không trả về giá trị 2. Hàm người dùng định nghĩa ◦ Định nghĩa, khai báo, gọi hàm 3. Phạm vi ◦ Biến cục bộ ◦ Hằng và biến toàn cục 4. Tham số ◦ Truyền giá trị ◦ Truyền tham biến 5. Nạp chồng và đối số mặc định 2
- Giới thiệu hàm Xây dựng các khối cho chương trình Cách gọi trong các ngôn ngữ khác ◦ Thủ tục, chương trình con, phương thức ◦ Trong C++: hàm I-P-O ◦ Đầu vào – Xử lý – Đầu ra ◦ Là các thành phần cơ bản của mỗi chương trình ◦ Sử dụng hàm cho mỗi thành phần này 3
- Hàm định nghĩa trước Trong các thư viện có sẵn rất nhiều hàm Hai kiểu hàm: ◦ Hàm trả về giá trị ◦ Hàm không trả về giá trị (void) Phải “#include” thư viện phù hợp ◦ Ví dụ: , (các thư viện của “C”) (dùng cho cout, cin) 4
- Hàm định nghĩa trước Có rất nhiều hàm toán học ◦ Nằm trong thư viện ◦ Hầu hết trả về một giá trị (câu trả lời) Ví dụ: theRoot = sqrt(9.0); ◦ Các thành phần: sqrt = tên của hàm thư viện theRoot = biến được sử dụng để nhận câu trả lời 9.0 = đối số hoặc “khởi tạo đầu vào” của hàm 5
- Lời gọi hàm Xét lệnh gán: theRoot = sqrt(9.0); ◦ Biểu thức “sqrt(9.0)” được hiểu như là một lời gọi hàm ◦ Đối số trong lời gọi hàm (9.0) có thể là một literal, một biến, hoặc một biểu thức Lời gọi có thể là một phần của biểu thức: ◦ VD: bonus = sqrt(sales)/10; ◦ Dựa vào kiểu trả về của hàm để biết nơi được phép sử dụng lời hàm 6
- Ví dụ: Hàm định nghĩa trước 7
- Ví dụ: Hàm định nghĩa trước Tình huống kết quả: Nhap ngan sach mua tham lot san cho can phong (VND): 2000000 Voi ngan sach 2000000.00 VND Ban co the lot duoc mot dien tich mat san hinh vuong kich thuoc 4.85 m moi canh. 8
- Một số hàm định nghĩa trước #include , thư viện gồm các hàm: ◦ abs() // Trả về giá trị tuyệt đối của một số int ◦ labs() // Trả về giá trị tuyệt đối của một số long int ◦ fabs() // Trả về giá trị tuyệt đối của một số float Hàm pow(x, y): Trả về x mũ y ◦ VD: Cho biết kết quả in ra của đoạn mã lệnh double result, x = 3.0, y = 2.0; result = pow(x, y); cout
- Một số hàm toán học Kiểu Kiểu giá Tên Mô tả Ví dụ Giá trị Thư viện đối số trị trả về sqrt Căn bậc hai double double sqrt(4.0) 2.0 cmath pow Lũy thừa double double pow(2.0,3.0) 8.0 cmath abs Giá trị tuyệt đối int int abs(-7) 7 cstdlib kiểu int abs(7) 7 labs Giá trị tuyệt đối long long labs(-70000) 70000 cstdlib kiểu long labs(70000) 70000 fabs Giá trị tuyệt đối double double fabs(-7.5) 7.5 cmath kiểu double fabs(7.5) 7.5 10
- Một số hàm toán học ceil Làm tròn lên double double ceil(3.2) 4.0 cmath ceil(3.9) 4.0 floor Làm tròn xuống double double floor(3.2) 3.0 cmath floor(3.9) 3.0 exit Kết thúc chương int void exit(1); Không có cstdlib trình rand Số ngẫu nhiên Không có int rand( ) Thay đổi cstdlib srand Thiết lập hạt unsigned void srand(42); Không có cstdlib giống cho rand int
- Hàm void định nghĩa trước Không trả về giá trị Thực hiện một hành động, nhưng không gửi câu trả lời Khi được gọi, bản thân nó là một câu lệnh ◦ VD: exit(1); //Không trả về giá trị, do vậy không được sử dụng để gán Các khía cạnh khác tương tự như hàm trả về giá trị 12
- Bộ phát sinh số ngẫu nhiên Trả về số “được chọn ngẫu nhiên” Sử dụng trong mô phỏng, trò chơi ◦ rand(): không có tham số, trả về giá trị giữa 0 & RAND_MAX ◦ Thu hẹp phạm vi: rand() % 6: trả về số ngẫu nhiên giữa 0 & 5 ◦ Tịnh tiến: rand() % 6 +1: dịch chuyển giữa 1 & 6 13
- Hạt giống số ngẫu nhiên Các số giả ngẫu nhiên ◦ Gọi rand() tạo ra một chuỗi các số ngẫu nhiên Sử dụng “hạt giống” để sửa đổi chuỗi srand(seed_value); ◦ Là hàm void có một đối số ◦ Có thể sử dụng bất cứ giá trị hạt giống nào, VD: srand(time(0)); ◦ time() trả về thời gian hệ thống ◦ time() nằm trong thư viện 14
- Các ví dụ ngẫu nhiên Số thực ngẫu nhiên giữa 0.0 & 1.0: (RAND_MAX – rand())/static_cast (RAND_MAX) ◦ Ép kiểu cho phép chia số thực Số nguyên ngẫu nhiên giữa 1 & 6: rand() % 6 + 1 ◦ “%” là toán tử chia lấy phần dư Số nguyên ngẫu nhiên giữa 10 & 20: rand() % 11 + 10 15
- Hàm người dùng định nghĩa Cho phép tự viết hàm của riêng mình Xây dựng các khối chương trình ◦ Chia để trị ◦ Khả đọc ◦ Sử dụng lại Định nghĩa hàm có thể nằm: ◦ Cùng file với hàm main(), hoặc ◦ Trong file riêng rẽ để những người khác cũng có thể sử dụng 16
- Các thành phần của hàm Khai báo hàm/nguyên mẫu hàm ◦ Thông tin cho trình biên dịch ◦ Thông dịch chính xác lời gọi Định nghĩa hàm ◦ Sự thực thi hay mã lệnh thực hiện công việc của hàm Lời gọi hàm ◦ Chuyển điều khiển cho hàm 17
- Khai báo hàm Còn được gọi là nguyên mẫu hàm Bộ biên dịch dựa vào nó để thông dịch lời gọi ◦ Cú pháp: FnName(); ◦ Ví dụ: double totalCost( int numberParameter, double priceParameter); Được đặt trước bất kỳ lời gọi nào ◦ Trong không gian khai báo của hàm main() ◦ Hoặc trong không gian toàn cục trước hàm main() 18
- Định nghĩa hàm Sự thực thi của hàm, giống như sự thi hàm main() Ví dụ: double totalCost( int numberParameter, double priceParameter) { const double TAXRATE = 0.1; double subtotal; subtotal = priceParameter * numberParameter; return (subtotal + subtotal * TAXRATE); } Lưu ý thụt vào đầu dòng chuẩn 19
- Vị trí đặt định nghĩa hàm Đặt sau hàm main(), không nằm bên trong hàm main() Các hàm là bình đẳng, không hàm nào là thành phần của hàm khác Các tham số hình thức trong định nghĩa ◦ Giữ chỗ cho dữ liệu gửi vào ◦ Sử dụng tên biến để tham chiếu tới dữ liệu trong định nghĩa Lệnh return ◦ Trả dữ liệu về cho lời gọi 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Nguyên lý ngôn ngữ lập trình - Chương 7: Ngôn ngữ lập trình hàm
49 p | 240 | 40
-
Bài giảng Nguyên lý ngôn ngữ lập trình - Chương 8: Ngôn ngữ lập trình logic
42 p | 183 | 32
-
Bài giảng Nguyên lý ngôn ngữ lập trình - Chương 1: Giới thiệu
44 p | 339 | 29
-
Bài giảng Nguyên lý và phương pháp lập trình - TS. Nguyễn Tuấn Đăng
38 p | 235 | 15
-
Bài giảng Nguyên lý và phương pháp lập trình: Phần 1 - TS. Nguyễn Tuấn Đăng
30 p | 210 | 11
-
Bài giảng Nguyên lý ngôn ngữ lập trình - Chương 6: Ngôn ngữ lập trình hướng đối tượng
38 p | 101 | 10
-
Bài giảng Nguyên lý hệ điều hành (Bài giảng tuần 3) - Nguyễn Hải Châu
8 p | 109 | 5
-
Bài giảng Nguyên lý và phương pháp lập trình: Tối ưu hóa vòng lặp và logic - TS. Nguyễn Tuấn Đăng
32 p | 69 | 4
-
Bài giảng Nguyên lý lập trình hướng đối tượng: Bài 1 - TS. Lý Anh Tuấn
34 p | 34 | 3
-
Bài giảng Nguyên lý lập trình hướng đối tượng: Bài 8 - TS. Lý Anh Tuấn
45 p | 27 | 2
-
Bài giảng Nguyên lý lập trình hướng đối tượng: Bài 7 - TS. Lý Anh Tuấn
28 p | 15 | 2
-
Bài giảng Nguyên lý lập trình hướng đối tượng: Bài 6 - TS. Lý Anh Tuấn
38 p | 26 | 2
-
Bài giảng Nguyên lý lập trình hướng đối tượng: Bài 5 - TS. Lý Anh Tuấn
37 p | 23 | 2
-
Bài giảng Nguyên lý lập trình hướng đối tượng: Bài 4 - TS. Lý Anh Tuấn
29 p | 18 | 2
-
Bài giảng Nguyên lý lập trình hướng đối tượng: Bài 3 - TS. Lý Anh Tuấn
43 p | 22 | 2
-
Bài giảng Nguyên lý lập trình hướng đối tượng: Bài 0 - TS. Lý Anh Tuấn
4 p | 35 | 2
-
Bài giảng Nguyên lý lập trình hướng đối tượng: Bài 9 - TS. Lý Anh Tuấn
36 p | 34 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn