Giáo trình được chia ra làm 17 chương và mỗi chương được chia làm các mục khác nhau. Các chương được sắp xếp theo trình tự từ lập trình hướng thủ tục trên C++ đến lập trình hướng đối tượng và các lớp thư viện cơ bản. Nhiều mục bao gồm các ví dụ để mô tả cách sử dụng. Giáo trình được chia thành 2 phần ebook, phần 1 sẽ gồm 12 chương đầu, mời các bạn cùng tham khảo.
ĐẶNG NGỌC HỒNG THÀNH C++ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Tài liệu học tập Trang | CuuDuongThanCong.com https://fb.com/tailieudientucntt PHỤ LỤC GIỚI THIỆU .7 MÔI TRƯỜNG PHÁT TRIỂN TÍCH HỢP IDE 10 CHƯƠNG CƠ BẢN VỀ C++ 23 CHƯƠNG BIẾN VÀ CÁC KIỂU DỮ LIỆU 26 Từ khóa 26 Kiểu liệu nguyên thủy 27 Khai báo biến 28 Phạm vi tác dụng biến 29 Khởi tạo giá trị cho biến 30 Khởi tạo giá trị cho biến tĩnh static 31 Giới thiệu xâu kí tự 32 CHƯƠNG HẰNG 34 Hằng số nguyên 34 Hằng số thực có dấu chấm động 34 Hằng kí tự xâu kí tự 35 Hằng logic 36 Định nghĩa #define 36 Khai báo const 37 CHƯƠNG TOÁN TỬ 38 Toán tử gán 38 Toán tử thực phép toán số học 39 Toán tử gán hợp 40 Toán tử tăng v{ giảm 40 Toán tử logic 42 Toán tử điều kiện 43 Toán tử phân tách 45 Trang |2 CuuDuongThanCong.com https://fb.com/tailieudientucntt C++ Toán tử so sánh 41 Toán tử dịch bit 45 Toán tử chuyển đổi kiểu liệu 48 Các toán tử khác 49 Thứ tự ưu tiên toán tử 49 CHƯƠNG XUẤT NHẬP CƠ BẢN 52 Xuất liệu chuẩn cout 52 Nhập liệu chuẩn cin 53 Nhập liệu nhờ lớp stringstream 55 CHƯƠNG CÁC CẤU TRÚC LỆNH ĐIỀU KHIỂN 58 Cấu trúc lệnh có điều kiện: if else 58 Cấu trúc lặp 60 Cấu trúc lựa chọn: switch 67 CHƯƠNG HÀM 72 Khai báo sử dụng hàm 73 Phạm vi tác dụng biến 77 Hàm không trả giá trị - Hàm void 78 Tham biến tham trị 79 Giá trị mặc định tham số hình thức 82 Chồng chất hàm 83 Hàm nội tuyến 84 H{m đệ quy 85 CHƯƠNG CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC 88 Mảng 88 Xâu kí tự 91 CHƯƠNG CON TRỎ 93 Toán tử tham chiếu & 93 Khai báo biến trỏ 96 Con trỏ, mảng xâu kí tự 98 Trang |3 CuuDuongThanCong.com https://fb.com/tailieudientucntt C++ Toán tử tham chiếu ngược * 94 Các phép toán số học trỏ 100 Con trỏ trỏ vào trỏ 102 Con trỏ void 104 Con trỏ null 105 Con trỏ hàm 105 CHƯƠNG 10 BỘ NHỚ ĐỘNG 107 Toán tử new new[] 107 Toán tử delete delete[] 109 CHƯƠNG 11 KIỂU DỮ LIỆU STRUCT VÀ CON TRỎ STRUCT 110 Struct 110 Con trỏ struct 114 Struct lồng 115 Kích thước nhớ struct 115 CHƯƠNG 12 CÁC KIỂU DỮ LIỆU KHÁC 117 Kiểu liệu tự định nghĩa 117 Kiểu liệu union thường 117 Kiểu liệu union ẩn danh 118 Kiểu liệu enum 118 CHƯƠNG 13 LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 120 Lịch sử hình thành 120 Lớp v{ đối tượng 126 Hàm tạo hàm hủy 130 Chồng chất hàm tạo 132 Sao chép hàm tạo 133 Tính đóng gói – Encapsulation 139 Con trỏ đối tượng 140 Con trỏ this 141 Th{nh viên tĩnh – Từ khóa static 143 Trang |4 CuuDuongThanCong.com https://fb.com/tailieudientucntt C++ Lớp khai báo nhờ từ khóa struct union 141 Hàm bạn lớp bạn 144 Chồng chất toán tử 147 Tính kế thừa - Inheritance 153 Các mức truy cập 156 Tính đa kế thừa – Multiple Inheritance 159 Tính đa hình – Polymorphism 160 Tính trừu tượng hóa - Abstraction 172 Hàm mẫu – Template Function 173 Lớp mẫu – Template class 173 CHƯƠNG 14 NAMESPACE 178 Từ khóa namespace 178 Từ khóa using 179 Phạm vi namespace 180 T|i định danh cho namespace 181 Namespace std 181 CHƯƠNG 15 NGOẠI LỆ 182 Mệnh đề try…catch 182 Mệnh đề throw 182 Thư viện chuẩn exception 183 CHƯƠNG 16 LÀM VIỆC VỚI FILE 186 Mở file 186 Đóng file 188 File văn 188 Kiểm tra trạng thái cờ hiệu 189 Con trỏ get put 190 File nhị phân 192 CHƯƠNG 17 CÁC LỚP THƯ VIỆN 194 Lớp số phức complex 194 Trang |5 CuuDuongThanCong.com https://fb.com/tailieudientucntt C++ Bộ đệm v{ Đồng hóa 193 Lớp ngăn xếp stack 196 Lớp h{ng đợi queue 197 Lớp vector 198 Lớp string 200 Lớp list 203 Lớp map 203 Lớp set 204 Các lớp thư viện nhập xuất 204 HƯỚNG DẪN THỰC HÀNH 212 BÀI THỰC HÀNH SỐ 212 BÀI THỰC HÀNH SỐ 213 BÀI THỰC HÀNH SỐ 214 BÀI THỰC HÀNH SỐ 215 BÀI THỰC HÀNH SỐ 215 BÀI THỰC HÀNH SỐ 216 BÀI TẬP NÂNG CAO 218 BÀI TẬP LỚN 225 DANH SÁCH HÌNH 228 TRA CỨU TỪ KHÓA 229 C++ TÀI LIỆU THAM KHẢO 230 Trang |6 CuuDuongThanCong.com https://fb.com/tailieudientucntt GIỚI THIỆU Cấu trúc giáo trình Gi|o trình chia làm 17 chương chương chia làm mục khác C|c chương xếp theo trình tự từ lập trình hướng thủ tục C++ đến lập trình hướng đối tượng lớp thư viện Độc giả truy cập vào mục từ phần phụ lục nằm đầu sách Nhiều mục bao gồm ví dụ để mơ tả cách sử dụng Tơi khun bạn nên đọc ví dụ hiểu đoạn mã chương trình trước đọc chương Một cách thức tốt để tăng lượng kiến thức nhận l{ h~y chỉnh sửa, bổ sung mã lệnh dựa ví dụ mẫu, theo hướng tư của thân, để từ hiểu c|ch đầy đủ nội dung mà ta tiếp thu Sau đọc xong giáo trình, tơi cịn cung cấp số tập thực hành đề nghị để độc giả nên thử nghiệm Hãy giải tập này, chúng hữu ích giúp bạn cố lại kiến thức môn học hiểu sâu sắc phần lý thuyết Một điều mà độc giả cần lưu ý: h~y đọc trang cuối s|ch, để nắm số thuật ngữ anh-việt tương ứng sử dụng giáo trình Tơi có gắng sử dụng tên gọi phù hợp với đại đa số giáo trình hành Tuy nhiên, độc giả nên nắm thuật ngữ tiếng anh tương ứng, để tham khảo thêm tài liệu chuyên môn tiếng anh Một vài ý tương thích C C++ Chuẩn ANSI-C++ tổ chức tiêu chuẩn quốc tế thống đưa Nó thức mắt v{o th|ng 11 năm 1997 v{ duyệt lại vào Trang |7 CuuDuongThanCong.com https://fb.com/tailieudientucntt C++ Khi viết giáo trình này, tơi khơng thể tránh khỏi sai sót Rất mong đóng góp ý kiến quý báu bạn độc c|c bạn đồng nghiệp Mọi đóng góp xin liên hệ theo địa email: dnhthanh@hueic.edu.vn Hi vọng với ý kiến đóng góp bạn, giáo trình ngày hồn thiện năm 2003 Tuy nhiên, ngơn ngữ C++ đ~ tồn trước thời gian kh| d{i (v{o năm 1980) Trước đó, có nhiều trình dịch khơng hỗ trợ c|c tính bao gồm chuẩn ANSI-C++ Giáo trình xây dựng c|c chương trình dịch đại hỗ trợ đầy đủ chuẩn ANSI-C++ Tơi đảm bảo ví dụ hoạt động tốt độc giả sử dụng trình dịch hỗ trợ ANSI-C++ Có nhiều chọn lựa, miễn phí phần mềm thương mại Trong giáo trình này, tơi giới thiệu đến các bạn hai công cụ biên dịch C++ GCC MinGW – miễn phí Visual C++ - thương mại Trình biên dịch http://ftp.jaist.ac.jp/pub/eclipse/technology/epp/downloads/release/helios/R/eclipse-cpp-helioswin32.zip http://nchc.dl.sourceforge.net/project/mingw/Automated%20MinGW%20Installer/mingw-getinst/mingw-get-inst-20100831/mingw-get-inst-20100831.exe Trang |8 CuuDuongThanCong.com https://fb.com/tailieudientucntt C++ Các ví dụ gi|o trình n{y xây dựng chủ yếu chế độ console (m{n hình DOS) Điều có nghĩa l{ sử dụng chế độ văn để hiển thị kết Mọi trình dịch C++ hỗ trợ chế độ dịch console Với mơi trường phát triển tích hợp IDE cho C++ miễn phí, sử dụng chương trình Codeblocks Eclipse Chúng mơi trường phát triển tích hợp hỗ trợ soạn thảo biên dịch C++ Chúng hỗ trợ môi trường GCC để biên dịch C C++ Với CodeBlocks, tải phần mềm địa http://www.codeblocks.org/downloads Đối với Eclipse, trình soạn thảo biên dịch ngơn ngữ lập trình chun nghiệp ho{n tồn miễn phí (vì ta cấu hình kết hợp với công cụ biên dịch kh|c để tạo mơi trường phát triển tích hợp cho ngơn ngữ lập trình khác nhau) Chúng ta dùng để soạn thảo biên dịch Java, PHP, JSP, Python… v{ hiển nhiên C/C++ Đ}y l{ dự án mã nguồn mở, tiêu tốn hàng triệu đôla IBM Để tải thời điểm n{y (năm 2010) l{ Eclipse Helios, ta truy cập đến địa bên dưới1 Đối với Eclipse, nên sử dụng kết hợp với trình biên dịch C++ MinGW, l{ dự án mở Chúng ta tải địa bên dưới2 Với Eclipse, cơng việc cấu hình ban đầu tương đối phức tạp Nhưng l{ trình soạn thảo tuyệt vời Ta sử dụng để soạn thảo nhiều ngơn ngữ lập trình c|ch c{i đặt thêm plugin hỗ trợ Nhiều nhà phát triển đ~ sử dụng Eclipse làm tải cho việc phát triển ứng dụng mình: Embarcadero sử dụng để phát triển JBuider, Adobe sử dụng để phát triển Flash Buider nhiều hãng phần mềm tiếng khác Nếu lập trình viên Java, Eclipse lựa chọn bỏ qua Nếu phát triển Flash theo dự án mã nguồn mở từ Adobe, Eclipse l{ lựa chọn hoàn hảo Nếu phát triển C/C++, với trình soạn thảo Eclipse l{ lựa chọn khơng tồi Việc sử dụng thành thạo Eclipse lợi cho tiến hành nghiên cứu Java, lập trình Web, Flex, Python… sau C++ Bên cạnh đó, chúng tơi giới thiệu mơi trường phát triển tích hợp IDE Microsoft Visual Studio Đ}y l{ trình biên dịch thương mại trình biên dịch chuyên nghiệp tiếng hệ điều hành Windows Ta sử dụng để phát triển ứng dụng NET ứng dụng Win32 Nếu muốn phát triển ứng dụng theo hướng Microsoft, ta nên sử dụng Visual Studio Phiên đến thời điểm VS 2010 Nhưng cần lưu ý rằng, nghiên cứu Visual C++, chọn lựa phiên dành cho Win32 mà ứng dụng CLI (common language infrastructure) phát triển NET Và Visual C++ for NET có số khác biệt so với Visual C++ for Win32 Trang |9 CuuDuongThanCong.com https://fb.com/tailieudientucntt MƠI TRƯỜNG PHÁT TRIỂN TÍCH HỢP IDE CodeBlocks Trước tiên, tìm hiểu cách tạo dự án, biên dịch tập tin C++ CodeBlocks Độc giả cần lưu ý rằng, CodeBlocks tổ chức công việc theo dự án Chúng ta biên dịch tập tin cpp c|ch đơn lẻ Tuy nhiên, làm việc theo dự án giúp ích cho nhiều làm việc với tác vụ lớn Đầu tiên khởi động codeblocks, sau v{o File > New > Project Trong hộp thoại ra, chọn console application (Hình 1) Và nhấp Go, sau nhấp Next Trong hộp thoại tiếp theo, ta chọn C++ nhấp Next Hình – Tạo dự án CodeBlocks Hộp thoại yêu cầu điền thông tin dự án xuất H~y điền tên dự án, vị trí lưu trữ dự |n Sau nhấp Next Cuối nhấp Finish Nếu ta muốn bổ sung tập tin khác lớp đối tượng, ta bổ sung chúng từ menu File > New T r a n g | 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt C++ Trong cửa sổ quản lý dự án, ta nhấp đôi chuột vào tệp main.cpp Nội dung soạn thảo nhập vào tập tin Chương Con trỏ trỏ kiểu char, tương tự psize==sizeof(int) trỏ kiểu int Vì đ}y, ta chưa x|c định trỏ kiểu gì, nên ta sử dụng tham số trỏ void Nếu trỏ char, ta sử dụng biến trỏ pchar để khởi tạo giá trị cho cách ép kiểu từ trỏ void Hoàn to{n tương tự cho biến trỏ pint Mục đích hàm increase tìm giá trị tham số data Trong hàm main, ta sử dụng hai biến char int Giá trị kí tự ‘x’ l{ kí tự ‘y’, số 1602 1603 Con trỏ null Một trỏ null trỏ dùng để khởi gán cho biến trỏ có kiểu liệu Trong C++, quy định int *p; p = 0; char *c; c = 0; Ta không nên nhầm lẫn trỏ null trỏ void Một trỏ null giá trị cụ thể mà trỏ trỏ đến, trỏ đến “mọi vị trí” Trong đó, trỏ void trỏ đặc biệt, trỏ đến “v{i vị trí” Con trỏ hàm C++ cho phép thực thi tính tốn với trỏ trỏ vào hàm Khi thực thi điều này, xem h{m l{ tham số trỏ vào hàm khác, chúng không tồn tham chiếu ngược Để khai báo trỏ hàm, cần khai báo khai b|o prototype cho hàm, tên hàm bao dấu () đồng thời bổ sung * phía trước tên Kết 12 C++ Chương trình #include using namespace std; int addition(int a, int b) { return a+b; } int substraction(int a, int b) { return a-b; T r a n g | 105 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương Con trỏ } int operation (int x, int y, int (*functocall) (int, int)) { int g; g=(*functocall)(x,y); return (g); } int main() { int m, n; int (*minus)(int, int) = substraction; m = operation(7, 5, addition); cout