Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 9 - Cơ sở của C++ được biên soạn bao gồm các nội dung chính sau: Các điểm khác về cú pháp so với C; Cấp phát động với new và delete; Truyền tham khảo; Một số vấn đề với hàm số trong C++; Quá tải. Mời các bạn cùng tham khảo bài giảng!
Trang 1K THU T L P TRÌNH H C ĐI N Ỹ Ậ Ậ Ệ Ơ Ệ TỬ
Trang 21. T ng quan v ngôn ng l p trìnhổ ề ữ ậ
2. Gi i thi u s b ngôn ng Cớ ệ ơ ộ ữ
3. Ki u, toán t và bi u th c ể ử ể ứ
Trang 4Các đi m khác nhau so v i C ể ớ
• C là ngôn ngữ lập trình cấu trúc, nó cho phép tạo 1 ứng dụng gồm nhiều module chức năng (file), mỗi module chứa nhiều hàm chức năng, các hàm này có thể bị bao đóng trong module chứa chúng hay có thể được truy xuất bởi bất kỳ nơi nào khác ngoài module chứa nó C là ngôn ngữ không được kiểm tra kiểu chặt, nghĩa là chương trình dịch không có khả năng và không bao giờ kiểm tra kiểu, bạn có thể gán chuỗi vào biến nguyên
Trang 5Các đi m khác nhau so v i C ể ớ
• C++ là sự nới rộng của C, nó cung cấp thêm một số khả năng để cho phép lập trình hướng đối tượng Ứng dụng được viết theo hướng đối tượng là 1 tập các đối tượng tương tác lẫn nhau, C++ cung cấp phát biểu "class" để người lập trình đặc tả các đối tượng cấu thành ứng dụng Tuy nhiên, mức độ hỗ trợ hướng đối tượng của C++ còn yếu, không trong sáng và dễ làm người lập trình mắc lỗi trong quá trình viết code
Trang 6Các đi m khác nhau so v i C ể ớ
• C++ cũng là ngôn ngữ lớn hơn với nhiều tính năng và phức tạp hơn so với C Giữa C và C++ có rất nhiều khác biệt Liệt kê 11 điểm khác biệt chính giữa 2 ngôn ngữ
này
1.Không phải ngôn ngữ hướng đối
tượng. Là một ngôn ngữ tượng (gồm 4 khái niệm về hướng hướng đối
đối tượng).
2.Là một ngôn ngữ lập trình thủ
tục Không phảithủ tục. là ngôn ngữ lập trình
3 Chỉ hỗ trợ các structure Hỗ trợ các lớp và đối tượng
4 Không có biến tham chiếu , chỉ
hỗ trợ con trỏ Hỗ trợ cả trỏ biến tham chiếu và con
Trang 7Các đi m khác nhau so v i C ể ớ
5. Không thể khai báo hàm trong
các structure. Có thể khai báo hàm trong các structure.
6. Sử dụng các
hàm scanf và printf để nhập xuất. Sử dụng các hàm cin>> và cout<< để nhập xuất.
7 Không thể khai báo hàm trong
các structure. Có thể khai báo hàm trong các structure.
8 Được xem là một ngôn ngữ lập
trình cấp thấp. Được xem là sự kết hợp giữa ngôn ngữ lập trình cấp thấp và
cấp cao.
Trang 8Các đi m khác nhau so v i C ể ớ
Trang 9Các đi m khác nhau so v i C ể ớ
Danh sách các tính năng h tr trong C++ ỗ ợ
Classes Abstract classes Exception handling
Member functions Access control
(public, private, protected)
Mutable members
Constructors and
destructors Friend functions overloadingOperator
Derived classes Pointers to
members ReferencesVirtual functions Static members Templates
Trang 10Các đi m khác nhau so v i C ể ớ
Inline functions Run-time type
identification Type safe linkage
Default arguments // comments new and delete
Trang 11C p phát đ ng new và delete ấ ộ
• Trong các chương trình C, tất cả các cấp phát động bộ nhớ đều được xử lý thông qua các hàm thư viện như
malloc(), calloc() và free() C++ định nghĩa một phương
thức mới để thực hiện việc cấp phát động bộ nhớ bằng cách dung hai toán tử new và delete Sử dụng hai toán
tử này sẽ linh hoạt hơn rất nhiều so với các hàm thư viện của C
Trang 12C p phát đ ng new và delete ấ ộ
C p phát đ ng trong C ấ ộ
Trang 13C p phát đ ng new và delete ấ ộ
C p phát đ ng trong C++ ấ ộ
• Chúng ta nhận thấy rằng, cách viết của C++ sáng sủa và
dễ sử dụng Toán tử new thay thế cho hàm malloc() hay
calloc() của C có cú pháp như sau :
Trang 14C p phát đ ng new và delete ấ ộ
Trong đó:
type_name: Mô tả kiểu dữ liệu được cấp phát Nếu kiểu dữ liệu mô tả phức tạp, nó có thể được đặt bên trong các dấu ngoặc
initializer: Giá trị khởi động của vùng nhớ được cấp phát
Nếu toán tử new cấp phát không thành công thì nó sẽ trả
Trang 17C p phát đ ng new và delete ấ ộ
Trang 19Truy n tham chi u ề ế
• Trong C++ cho phép sử dụng loại biến thứ ba là biến tham
chiếu So với 2 loại biến quen biết nói trên, thì biến này có những đặc điểm sau:
- Biến tham chiếu không được cấp phát bộ nhớ,
không có địa chỉ riêng
- Nó dùng làm bí danh cho một biến (kiểu giá trị) nào
đó và nó sử dụng vùng nhớ của biến này
Trang 20Truy n tham chi u ề ế
• Tạo ra các biến thực u, v và biến tham chiếu thực r Biến r không được cấp phát bộ nhớ, nó là một tên khác (bí danh) của u và nó dùng chung vùng nhớ của biến u
Trang 21Truy n tham chi u ề ế
Công d ng: ụ
• Biến tham chiếu thường được sử dụng làm đối của hàm
để cho phép hàm truy nhập đến các tham số biến trong lời
Trang 22Truy n tham chi u ề ế
a • Vì biến tham chiếu không có địa chỉ riêng, nó chỉ là bí danh
của một biến kiểu giá trị nên trong khai báo phải chỉ rõ nó tham chiếu đến biến nào Ví dụ nếu khai báo (báo lỗi)
b • Biến tham chiếu có thể tham chiếu đến một phần tử mảng,
Trang 23Truy n tham chi u ề ế
c • Không cho phép khai báo mảng tham chiếu
d • Biến tham chiếu có thể tham chiếu đến một hằng Khi đó
nó sẽ sử dụng vùng nhớ của hằng và nó có thể làm thay đổi giá trị chứa trong vùng nhớ này
tham chiếu đến một phần tử mảng cấu trúc để nhập dữ liệu
và thực hiện các phép tính trên các trường của phần tử mảng cấu trúc
Trang 24Truy n tham chi u ề ế
Trang 25Truy n tham chi u ề ế
Trang 26Truy n tham chi u ề ế
• Hằng tham chiếu được khai báo theo mẫu:
• Giống như biến tham chiếu, hằng tham chiếu có thể tham chiếu đến một biến hoặc một hằng
Trang 27Truy n tham chi u ề ế
• Sự khác nhau giữa biến và hằng tham chiếu ở chỗ: Không cho phép dùng hằng tham chiếu để làm thay đổi giá trị của vùng nhớ mà nó tham chiếu
Trang 28Truy n tham chi u ề ế
Cách dùng:
- Hằng tham chiếu cho phép sử dụng giá trị chứa trong một vùng nhớ, nhưng không cho phép thay đổi giá trị này
- Hằng tham chiếu thường được sử dụng làm đối của hàm
để cho phép hàm sử dụng giá trị của các tham số trong lời gọi hàm, nhưng tránh không làm thay đổi giá trị của các tham số
Trang 30Quá t i các toán t ả ử
Trang 31Quá t i các toán t ả ử
• Nếu quá nhiều CVector hãy để ý rằng một số trong chúng tham chiếu đến tên lớp CVector còn số còn lại là tên các hàm (constructor và destructor)
• Hàm operator+ của lớp CVector được dùng để quá tải toán
tử số học +
Trang 32Quá t i các toán t ả ử
• Bảng tổng kết về việc các hàm operator phải được khai báo như sau:
Trang 33Quá t i các toán t ả ử
Trang 34Quá t i các toán t ả ử