intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Nguyên lý lập trình hướng đối tượng: Bài 2 - TS. Lý Anh Tuấn

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:56

23
lượt xem
1
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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!

Chủ đề:
Lưu

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

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. Ví dụ: Hàm định nghĩa trước 7
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. Đị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
  20. 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
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2