Ebook lập trình C full tiếng việt

226 539 0
Ebook lập trình C full tiếng việt

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Mục lục Giới thiệu Chương Mở đầu 1.1 Chương trình gì? 1.2 Lập trình gì? 1.2.1 Mức cao độc lập với máy tính 1.2.2 Mức thấp phụ thuộc vào máy tính 11 1.3 Ngơn ngữ lập trình chương trình dịch 11 1.4 Môi trường lập trình bậc cao 12 1.5 Lỗi tìm lỗi 14 1.6 Lịch sử C C++ 15 1.7 Chương trình C++ 16 Bài tập 20 Chương Biến, kiểu liệu phép toán 21 2.1 Kiểu liệu 23 2.1.1 Kiểu liệu 23 2.1.2 Kiểu liệu dẫn xuất 25 2.2 Khai báo sử dụng biến 25 2.2.1 Định danh cách đặt tên biến 25 2.2.2 Khai báo biến 26 2.3 Hằng 26 2.4 Các phép toán 27 2.4.1 Phép gán 27 2.4.2 Các phép toán số học 27 2.4.3 Các phép toán quan hệ 28 2.4.4 Các phép toán logic 29 2.4.5 Độ ưu tiên phép toán 29 2.4.6 Tương thích kiểu 30 Bài tập 31 Chương Các cấu trúc điều khiển 33 3.1 Luồng điều khiển 33 3.2 Các cấu trúc rẽ nhánh 34 3.2.1 Lệnh if-else 34 3.2.2 Lệnh switch 40 3.3 Các cấu trúc lặp 44 3.3.1 Vòng while 44 3.3.2 Vòng do-while 47 3.3.3 Vòng for 50 3.4 Các lệnh break continue 55 3.5 Biểu thức điều kiện cấu trúc điều khiển 58 Bài tập 60 Chương Hàm 62 4.1 Các hàm có sẵn 63 4.2 Cấu trúc chung hàm 64 4.3 Cách sử dụng hàm 65 4.4 Biến toàn cục biến địa phương 66 4.4.1 Phạm vi biến 66 4.4.2 Thời gian sống biến 68 4.5 Tham số, đối số, chế truyền tham số cho hàm 69 4.5.1 Truyền giá trị 69 4.5.2 Truyền tham chiếu 70 4.5.3 Tham số mặc định 73 4.6 Hàm trùng tên 75 4.7 Hàm đệ quy 77 Bài tập 79 Chương Mảng 81 5.1 Mảng chiều 81 5.1.1 Khai báo khởi tạo mảng 82 5.1.2 Ứng dụng mảng 84 5.1.3 Trách nhiệm kiểm sốt tính hợp lệ số mảng 86 5.1.4 Mảng làm tham số cho hàm 86 5.2 Mảng nhiều chiều 87 5.3 Mảng xâu kí tự 89 5.3.1 Khởi tạo giá trị cho xâu kí tự 91 5.3.2 Thư viện xử lý xâu kí tự 91 5.4 Tìm kiếm xếp liệu mảng 92 5.4.1 Tìm kiếm tuyến tính 92 5.4.2 Tìm kiếm nhị phân 93 5.4.3 Sắp xếp chọn 95 Bài tập 97 Chương Con trỏ nhớ 99 6.1 Bộ nhớ máy tính 99 6.2 Biến địa biến 99 6.3 Biến trỏ 100 6.4 Mảng trỏ 105 6.5 Bộ nhớ động 107 6.5.1 Cấp phát nhớ động 107 6.5.2 Giải phóng nhớ động 108 6.6 Mảng động trỏ 109 6.7 Truyền tham số trỏ 111 Bài tập 115 Chương Các kiểu liệu trừu tượng 118 7.1 Định nghĩa kiểu liệu trừu tượng cấu trúc struct 118 7.2 Định nghĩa kiểu liệu trừu tượng cấu trúc class 124 7.2.1 Quyền truy nhập 127 7.2.2 Toán tử phạm vi định nghĩa hàm thành viên 128 7.2.3 Hàm khởi tạo hàm hủy 129 7.3 Lợi ích lập trình hướng đối tượng 132 7.4 Biên dịch riêng rẽ 133 Bài tập 137 Chương Vào liệu 140 8.1 Khái niệm dòng liệu 140 8.2 Tệp văn tệp nhị phân 141 8.3 Vào tệp 141 8.3.1 Mở tệp 142 8.3.2 Đóng tệp 143 8.3.3 Xử lý tệp văn 144 8.3.4 Xử lý tệp nhị phân 147 Bài tập 151 Chương Viết chồng toán tử 153 9.1 Hàm friends 153 9.1.1 Hàm friend 153 9.1.2 Lớp Friend (Friend Class) 158 9.2 Khai báo viết chồng toán từ 158 9.3 Viết chồng hàm số toán tử toán học 159 9.4 Viết chồng hàm toán tử gán 162 9.5 Viết chồng hàm toán tử so sánh 163 9.6 Viết chồng toán tử > 165 9.6.1 Tạo riêng toán tử > 171 9.7 Nạp chồng new delete 173 9.7.1 Nạp chồng new delete 173 9.7.2 Nạp chồng new delete cho mảng 178 9.7.3 Nạp chồng new delete khơng có throw 180 Chương 10 Tính chất Lớp 182 10.1 Tính đóng gói quyền truy cập 182 10.2 Thừa kế 182 10.3 Kế thừa tạo tử hủy tử 192 10.3.1 Khi hàm khởi tử hủy tử thi hành 192 10.3.2 Truyền tham số cho hàm tạo tử lớp sở 196 10.4 Phương thức ảo 198 10.5 Tính đa hình 200 Chương 11 Một số vấn đề khác 202 11.1 Các thị tiền xử lý 202 11.1.1 Lệnh thị bao hàm tệp #include 202 11.1.2 Lệnh định nghĩa #define 202 11.1.3 Chỉ thị biên dịch có điều kiện #if, #else 203 11.1.4 Chỉ thị biên dịch có điều kiện #ifdef #ifndef 203 11.1.5 Chỉ thỉ thông báo lỗi #error 204 11.2 Kỹ thuật xử lý ngoại lệ bắt lỗi 205 11.3 Lập trình nhiều file 207 11.4 Mẫu (Template) thư viện STL 209 11.4.1 Mẫu (Tempate) 209 11.4.2 Hàm khái quát (Generic function) 210 11.4.3 Lớp khái quát (Generic class) 212 11.4.4 Giới thiệu thư viện chuẩn STL 215 Phụ lục A Phong cách lập trình 217 Phụ lục B Dịch chương trình C++ GNU C++ 221 Phụ lục C Xử lý xâu thư viện cstring 224 Tài liệu tham khảo 226 Giới thiệu Lập trình bước quan trọng quy trình giải tốn Nhiều ngơn ngữ lập trình đời nhằm giúp giải toán cách hiệu Mỗi ngơn ngữ lập trình có mạnh nhược điểm riêng Các ngơn ngữ lập trình chia thành hai loại ngơn ngữ lập trình bậc thấp (gần gũi với ngơn ngữ máy), ngơn ngữ lập trình bậc cao (ngần gũi với ngơn ngữ tự nhiên người) Giáo trình trang bị cho sinh viên kiến thức lập trình Ngơn ngữ lập trình C++ sử dụng để minh họa cho việc lập trình Việc lựa chọn C++ ngơn ngữ lập trình hướng đối tượng chuyên nghiệp sử dụng rộng rãi toàn giới để phát triển chương trình từ đơn giản đến phức tạp Hơn nữa, mềm dẻo C++ cho phép giải tốn thực tế cách nhanh chóng, cho phép quản lý tương tác trực tiếp đến hệ thống, nhớ để nâng cao hiệu chương trình Giáo trình chia thành chương, chương trình bày vấn đề lý thuyết lập trình Các vấn đề lý thuyết mơ tả ví dụ thực tế Kết thúc chương phần tập để sinh viên giải nắm rõ lý thuyết Cấu trúc giáo trình sau:  Chương 1: giới thiệu khái niệm lập trình quy trình giải tốn Sinh viên hiểu ngơn ngữ lập trình bậc cao ngơn ngữ lập trình bậc thấp Cuối chương chúng tơi giới thiệu mơi trường lập trình ngơn ngữ lập trình C++  Chương 2: Chúng tơi giới thiệu khái niệm biến số, số, kiểu liệu phép toán Sau học, sinh viên biết cách khai báo sử dụng biến số, số, phép toán biến số  Chương 3: Trương giới thiệu cấu trúc chương trình cấu trúc điều khiển Cụ thể cấu rẽ nhánh (if-else, switch), cấu trúc lặp (for, while, do-while) giới thiệu  Chương 4: Chương trình hàm giới thiệu để sinh viên hiểu chiến lược lập trình “chia để trị” Chúng tơi trình bày chi tiết cách khai báo sử dụng hàm, cách truyền tham số, truyền giá trị cho hàm  Chương 5: Chương trình bày cấu trúc liệu kiểu mảng xâu kí tự Cách khai báo sử dụng mảng chiều mảng nhiều chiều ví dụ liên quan trình bày chi tiết chương  Chương 6: Đây chương tương đối đặc thù cho C++, chúng tơi trình bày nhớ kiểu liệu trỏ Cấu trúc nhớ, cách quản lý xin cấp phép nhớ động thông qua việc sử dụng biến trỏ trình bày  Chương 7: Trong chương chúng tơi trình bày cấu trúc liệu trừu tượng (cụ thể struct class C++) Sinh viên hiểu biết cách tạo cấu trúc liệu trừu tượng phù hợp với kiểu đối tượng liệu cần biểu diễn Cuối chương, chúng tơi giới thiệu lập trình hướng đối tượng, mạnh ngơn ngữ lập trình C++  Chương 8: Chúng giới thiệu cách vào liệu Sinh viên giới thiệu chi tiết cách làm việc với tệp liệu Chương Mở đầu Trong chương này, giới thiệu qua số khái niệm về: chương trình, lập trình, ngơn ngữ lập trình 1.1 Chương trình gì? Bạn chắn dùng qua nhiều chương trình khác nhau, ví dụ chương trình soạn thảo văn “Microsoft Word” Chương trình, hay phần mềm, hiểu đơn giản tập lệnh để máy tính thực theo Khi bạn đưa cho máy tính chương trình u cầu máy tính thực theo lệnh chương trình, bạn chạy chương trình 1.2 Lập trình gì? Lập trình hiểu đơn giản q trình viết lệnh hướng dẫn máy tính thực để giải tốn cụ thể Lập trình bước quan trọng quy trình giải tốn mơ tả Hình 1.1 Ngơn ngữ tự nhiên Mã giả Lập trình Mức thấp phụ thuộc vào máy tính chương trình dịch Thiết kế thuật tốn trình soạn thảo Xác định vấn đề bút/giấy bút/giấy Mức cao độc lập với máy tính Ngơn ngữ lập trình, C++, Java Dịch Mã máy Hình 1.1: Quy trình giải tốn Quy trình chia thành hai mức: mức cao độc lập với máy tính (machine independent) mức thấp phụ thuộc vào máy tính (machine specific) 1.2.1 Mức cao độc lập với máy tính Mức cao độc lập với máy tính thường chia thành ba bước là: xác định vấn đề, thiết kế thuật toán lập trình Xác định vấn đề: Bước định nghĩa toán, xác định liệu đầu vào, ràng buộc, yêu cầu cần giải kết đầu Bước thường sử dụng bút/giấy ngôn ngữ tự nhiên tiếng Anh, tiếng Việt để mô tả xác định vấn đề cần giải Thiết kế thuật toán: Một thuật toán dẫn nhằm giải toán Các dẫn cần diễn đạt cách hoàn chỉnh xác cho người hiểu tiến hành theo Thuật tốn thường mơ tả dạng mã giả (pseudocode) Bước sử dụng giấy bút thường không phụ thuộc vào ngôn ngữ lập trình Ví dụ thuật tốn “tìm ước số chung lớn (UCLN) hai số x y” viết ngôn ngữ tự nhiên:  Bước 1: Nếu x>y thay x phần dư phép chia x/y  Bước 2: Nếu không, thay y phần dư phép chia y/x  Bước 3: Nếu hai số x y có số kết luận UCLN số cịn lại  Bước 4: Nếu không, quay lại Bước mã giả: repeat if x > y then x := x mod y else y := y mod x until x = or y = if x = then UCLN := y else UCLN := x Lập trình bước chuyển đổi thuật tốn sang ngơn ngữ lập trình, phổ biến ngơn ngữ lập trình bậc cao, ví dụ ngơn ngữ C++, Java Bước này, lập trình viên sử dụng chương trình soạn thảo văn để viết chương trình Trong sau trình lập trình, người ta phải tiến hành kiểm thử sửa lỗi chương trình Có ba loại lỗi thường gặp: lỗi cú pháp, lỗi thời gian chạy, lỗi logic (xem chi tiết Mục 1.5) 10 X temp; temp = a;a = b;b = temp; } Tuy nhiên, bạn cần ý không thêm câu lệnh biểu thức statement tên hàm Đoạn mã sau không biên dịch // This will not compile.templateint i; // this is an errorvoid swapargs(X &a, X &b){ X temp; temp = a; a = b; b = temp;} Chú ý bạn định nghĩa hàm khái quát với nhiều kiểu khác biểu thức template tham số kiểu biến có sẵn ngôn ngữ C++ 11.4.3 Lớp khái quát (Generic class) Mở rộng so với generic function, bạn định nghĩa generic class Thực vậy, bạn áp dụng nhiều thuật tốn khác lớp này, nhiên, kiểu thực tế liệu xử lý cần mô tả tham số đối tượng khởi tạo Lớp khái quát có lợi trường hợp mà hành vi đối tượng mang tính tổng qt hóa cao Ví dụ, với thuật tốn quản lý hàng đợi số nguyên làm việc tốt với hàng đợi ký tự, chế với quản lý danh sách liên kết danh sách liên lạc làm việc vợi danh sách liên kết phân tự động Khi bạn xây dựng lớp khái quát, bạn thực thi định nghĩa quản lý hàng đợi danh sách liên kết cho kiểu liệu khác Trình biên dịch tự động sinh mã nguồn đặc tả kiểu liệu mà bạn mô tả, bạn khởi tạo đối tượng Dạng tổng quát định nghĩa sau: template class class-name {}; Trong đó, bạn thay thể kiểu liệu bạn cần làm việc thay cho Type đối tượng khởi tạo.Trong trường hợp cần thiết, bạn định nghĩa nhiều loại liệu cách sử dụng dấu chấm phẩy Khi có generic class bạn định nghĩa đối tượng lớp sau: class-name ob; Trong type tên kiểu liệu lớp thực thi thuật tốn với kiểu liệu đó.Sau ví dụ cài đặt lớp ngăn xếp generic class 212 Ví dụ 12.5: // This function demonstrates a generic stack.#include using namespace std; const int SIZE = 10; // Create a generic stack classtemplate class stack { StackType stck[SIZE]; // holds the stackint tos; // index of top-of-stack public: stack() { tos = 0; } // initialize stack void push(StackType ob); // push object on stack StackType pop(); // pop object from stack }; // Push an object.template void stack::push(StackType ob) { if(tos==SIZE) { cout

Ngày đăng: 15/05/2015, 15:57

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan