Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 162 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
162
Dung lượng
3,37 MB
Nội dung
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 10 1.3 Ngôn ngữ lập trình chương trình dịch 10 1.4 Môi trường lập trình bậc cao 11 1.5 Lỗi tìm lỗi 13 1.6 Lịch sử C C++ .14 1.7 Chương trình C++ .15 Bài tập 19 Chương 2.1 Biến, kiểu liệu phép toán 20 Kiểu liệu 22 2.1.1 Kiểu liệu 22 2.1.2 Kiểu liệu dẫn xuất 24 2.2 Khai báo sử dụng biến 24 2.2.1 Định danh cách đặt tên biến 24 2.2.2 Khai báo biến .25 2.3 Hằng .25 2.4 Các phép toán 26 2.4.1 Phép gán 26 2.4.2 Các phép toán số học 26 2.4.3 Các phép toán quan hệ 27 2.4.4 Các phép toán lô-gic 28 2.4.5 Độ ưu tiên phép toán 28 2.4.6 Tương thích kiểu 29 Bài tập 30 Chương Các cấu trúc điều khiển 32 3.1 Luồng điều khiển 32 3.2 Các cấu trúc rẽ nhánh .33 3.2.1 Lệnh if-else 33 3.2.2 Lệnh switch .39 3.3 Các cấu trúc lặp 43 3.3.1 Vòng while .43 3.3.2 Vòng do-while 46 3.3.3 Vòng for 49 3.4 Các lệnh break continue 54 3.5 Biểu thức điều kiện cấu trúc điều khiển 57 Bài tập 59 Chương Hàm 61 4.1 Các hàm có sẵn .62 4.2 Cấu trúc chung hàm 63 4.3 Cách sử dụng hàm 64 4.4 Biến toàn cục biến địa phương .65 4.4.1 Phạm vi biến 65 4.4.2 Thời gian sống biến 67 4.5 Tham số, đối số, chế truyền tham số cho hàm 68 4.5.1 Truyền giá trị 68 4.5.2 Truyền tham chiếu 69 4.5.3 Tham số mặc định 72 4.6 Hàm trùng tên 74 4.7 Hàm đệ quy 76 Bài tập 78 Chương 5.1 Mảng 80 Mảng chiều 80 5.1.1 Khai báo khởi tạo mảng 81 5.1.2 Ứng dụng mảng 83 5.1.3 Trách nhiệm kiểm soát tính hợp lệ số mảng 85 5.1.4 Mảng làm tham số cho hàm 85 5.2 Mảng nhiều chiều .86 5.3 Mảng xâu kí tự 88 5.3.1 Khởi tạo giá trị cho xâu kí tự 90 5.3.2 Thư viện xử lý xâu kí tự .90 5.4 Tìm kiếm xếp liệu mảng 91 5.4.1 Tìm kiếm tuyến tính 91 5.4.2 Tìm kiếm nhị phân .92 5.4.3 Sắp xếp chọn 94 Bài tập 96 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 Phụ lục A Phong cách lập trình 153 Phụ lục B Dịch chương trình C++ GNU C++ 157 Phụ lục C Xử lý xâu thư viện cstring 160 Tài liệu tham khảo 162 Giới thiệu Lập trình bước quan trọng quy trình giải toá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 toá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 toá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 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 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 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++, 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 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, 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 yê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ì? chương trình dịch trình soạn thảo bút/giấy bút/giấy Lập trình hiểu đơn giản trình viết lệnh hướng dẫn máy tính thực để giải toán cụ thể Lập trình bước quan trọng quy trình giải toán mô tả Hình 1.1 Hình 1.1: Quy trình giải toá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 toá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 toá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ố 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 toá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 lô-gic (xem chi tiết Mục 1.5) 1.2.2 Mức thấp phụ thuộc vào máy tính Các ngôn ngữ lập trình bậc cao, ví dụ C, C++, Java, Visual Basic, C#, thiết kế để người tương đối dễ hiểu dễ sử dụng Tuy nhiên, máy tính không hiểu ngôn ngữ bậc cao Do đó, trước chương trình viết ngôn ngữ bậc cao chạy được, phải dịch sang ngôn ngữ máy, hay gọi mã máy, mà máy tính hiểu thực Việc dịch thực chương trình máy tính gọi chương trình dịch 1.3 Ngôn ngữ lập trình chương trình dịch Như thấy, trình giải toán thông qua bước khác để chuyển đổi từ ngôn ngữ tự nhiên mà người hiểu sang ngôn ngữ máy mà máy tính hiểu thực Ngôn ngữ lập trình thường chia thành hai loại: ngôn ngữ lập trình bậc thấp ngôn ngữ lập trình bậc cao Ngôn ngữ lập trình bậc thấp hợp ngữ (assembly language) mã máy ngôn ngữ gần với ngôn ngữ máy mà máy tính hiểu Đặc điểm ngôn ngữ chúng có liên quan chặt chẽ đến phần cứng máy tính Các họ máy tính khác sử dụng ngôn ngữ khác Chương trình viết ngôn ngữ chạy mà không cần qua chương trình dịch Các ngôn ngữ bậc thấp dùng để viết chương trình cần tối ưu hóa tốc độ Tuy nhiên, chúng thường khó hiểu người không thuận tiện cho việc lập trình Ngôn ngữ lập trình bậc cao Pascal, Ada, C, C++, Java, Visual Basic, Python, … ngôn ngữ có mức độ trừu tượng hóa cao, gần với ngôn ngữ tự nhiên người Việc sử dụng ngôn ngữ cho việc lập trình dễ dàng nhanh nhiều so với ngôn ngữ lập trình bậc thấp Khác với ngôn ngữ bậc thấp, chương trình viết ngôn ngữ bậc cao nói chung sử dụng nhiều loại máy tính khác Các chương trình viết ngôn ngữ bậc cao muốn chạy phải dịch sang ngôn ngữ máy cách sử dụng chương trình dịch Chương trình dịch chia thành hai loại trình biên dịch trình thông dịch Một số ngôn ngữ bậc cao C, C++ yêu cầu loại chương trình dịch gọi trình biên dịch (compiler) Trình biên dịch dịch mã nguồn thành mã máy – dạng thực thi Kết việc dịch chương trình thực thi chạy nhiều lần mà không cần dịch lại Ví dụ, với ngôn ngữ C++ 10 #ifndef STUDENT_H #define STUDENT_H #include using namespace std; #define MAX_NAME_LENGTH 20 struct Student { char name [MAX_NAME_LENGTH + 1]; float score; Student () { name[0] = '\0'; score = 0; } Student (const char*, float); void println() { cout