1. Trang chủ
  2. » Cao đẳng - Đại học

Giáo trình lập trình C++

194 24 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 194
Dung lượng 0,93 MB

Nội dung

TRƯỜNG ĐẠI HỌC MỞ TP.HCM GIÁO TRÌNH LẬP TRÌNH C++ LÊ PHÚ HIẾU Biên soạn      TRƯỜNG ĐẠI HỌC MỞ TP.HCM GIÁO TRÌNH LẬP TRÌNH C++ DÙNG CHO SINH VIÊN THUỘC KHỐI NGÀNH KỸ THUẬT KHÔNG CHUYÊN VỀ CÔNG NGHỆ THÔNG TIN Tác giả Lê Phú Hiếu THÀNH PHỐ HỒ CHÍ MINH LỜI NĨI ĐẦU C++ ngơn ngữ lập trình (NNLT) ưa chuộng sử dụng rộng rãi tính mạnh mẽ, đa dụng Đây NNLT nhiều trường đại học cao đẳng nước sử dụng để giảng dạy lập trình ban đầu cho sinh viên Giáo trình “Lập trình C++” viết nhằm phục vụ cho đối tượng sinh viên hệ Cao đẳng Đại học thuộc khối ngành Kỹ thuật (Không chuyên Cơng nghệ Thơng Tin) Mục tiêu giáo trình nhằm cung cấp kiến thức ngôn ngữ lập trình C++, đủ để giải tốn lập trình nhiều lĩnh vực khác như: tính toán, kỹ thuật, sinh học, quản lý, … Với số lượng trang khiêm tốn, giáo trình giới hạn, khơng đề cập đến cách tiếp cận lập trình hướng đối tượng mà nhấn mạnh đến kiểu lập trình truyền thống, lập trình đơn thể (module), theo tiếp cận hướng cấu trúc Kiểu lập trình truyền thống quan trọng theo ý kiến cá nhân bắt buộc phải giảng dạy cho người bắt đầu học lập trình trước chuyển sang học lập trình theo tiếp cận hướng đối tượng Giáo trình tổ chức thành chương, cuối chương có câu hỏi tập để cố kiến thức phần lý thuyết Phần lý thuyết trình bày đọng, tập trung vào kiến cốt lõi, cần thiết để áp dụng viết mã chương trình Phần giải tập thực tài liệu khác Các chương trình ví dụ minh họa tài liệu thử nghiệm chạy tốt môi trường Visual C++ 6.0 Giáo trình dùng làm tài liệu cho sinh viên tự học Giảng viên sử dụng để tham khảo giảng dạy môn lập trình Mặc dù có nhiều cố gắng khơng thể tránh khỏi thiếu sót, mong nhận nhận xét, phê bình đồng nghiệp bạn đọc để tài liệu hoàn thiện Tác giả Mục lục BỘ GIÁO DỤC VÀ ĐÀO TẠO _ 1  CHƯƠNG MỘT SỐ KHÁI NIỆM CƠ BẢN VỀ LẬP TRÌNH _ 13  1.  Thuật toán (Algorithm) 13  1.1.  Khái niệm 13  1.2.  Các đặc trưng thuật toán 13  1.3.  Các cơng cụ biểu diễn thuật tốn _ 14  2.  Ngơn ngữ lập trình (NNLT) _ 15  3.  Chương trình (máy tính) _ 16  4.  Các bước xây dựng chương trình 17  5.  Câu hỏi tập _ 18  CHƯƠNG CÁC YẾU TỐ CƠ BẢN CỦA NNLT C/C++ 21  1.  Bộ ký tự (character set) 21  2.  Danh hiệu (identifier) 21  3.  Từ khóa (keyword) 22  4.  Chú thích (comment) 22  5.  Các kiểu liệu (base type) 23  5.1.  Số nguyên 23  5.2.  Số thực (độ xác đơn – chữ số lẻ) 23  5.3.  Số thực (độ xác kép – 15 chữ số lẻ): _ 24  5.4.  Kí tự _ 24  6.  Hằng (constant) _ 25  Một số kí tự đặc biệt: 26  7.  Biến (variable) 27  8.  Biểu thức (expression) _ 29  9.  Chuyển đổi kiểu (type conversion) _ 29  10.  Các toán tử (operator) _ 30  10.1.  Toán tử số học _ 30  10.2.  Toán tử quan hệ (so sánh) 30  10.3.  Toán tử logic 31  10.4.  Toán tử gán _ 31  10.5.  Toán tử điều kiện ( ? : ) _ 32  10.6.  Toán tử tăng (++), giảm (––) đơn vị _ 33  Biểu thức có dạng 33  10.7.  Toán tử dịch chuyển số học _ 34  10.8.  Tốn tử thao tác bít _ 34  10.9.  Tốn tử ép kiểu (đã nói trên) 34  10.10. Toán tử “lấy địa của” ( & ) 34  10.11. Toán tử sizeof: _ 34  11.  Độ ưu tiên trật tự kết hợp toán tử (precedence and associativity) _ 35  12.  Câu lệnh (statement, instruction) 36  13.  Xuất / Nhập liệu đơn giản C/C++ 37  14.  Một vài chương trình C/C++ đơn giản _ 39  15.  Câu hỏi 46  16.  Bài tập phép toán biểu thức 49  CHƯƠNG CÁC CẤU TRÚC ĐIỀU KHIỂN (CONTROL STRUCTURES) 62  1.  Cấu trúc rẽ nhánh (if … then … else …) 62  2.  Cấu trúc lựa chọn (switch ) _ 66  3.  Cấu trúc lặp while (…) _ 69  4.  Cấu trúc lặp … while (…) 71  5.  Cấu trúc lặp for (…) _ 74  6.  Câu lệnh break _ 77  7.  Câu lệnh continue (ít dùng) _ 78  8.  Câu lệnh goto 78  9.  Câu hỏi 79  10.  Bài tập 91  10.1.  Cấu trúc rẻ nhánh _ 91  10.2.  Cấu trúc lựa chọn _ 92  10.3.  Cấu trúc lặp _ 93  CHƯƠNG HÀM (FUNCTION) 102  1.  Khái niệm 102  2.  Khai báo định nghĩa hàm _ 103  3.  Lệnh return _ 104  4.  Các dạng hàm _ 104  4.1.  Hàm khơng có tham số _ 104  4.2.  Hàm với nhiều tham số _ 106  4.3.  Hàm nguyên mẫu (function prototype) _ 107  4.4.  Tổ chức chương trình “C/C++” (trên tập tin) _ 108  5.  Các phương pháp truyền tham số _ 109  6.  Phạm vi (scope) cấp lưu trữ (storage class) đối tượng 111  6.1.  Phạm vi _ 111  6.2.  Cấp lưu trữ _ 113  7.  Cơ chế gọi hàm nhớ stack 120  8.  Hàm có tham số với giá trị ngầm định (Function with default arguments) 123  9.  Nạp chồng hàm (Function overloading) 124  10.  Một số gợi ý thiết kế hàm 126  11.  Một số ví dụ minh họa 127  12.  Câu hỏi _ 127  13.  Bài tập _ 131  CHƯƠNG KIỂU MẢNG (ARRAY) _ 134  1.  Khái niệm 134  2.  Khai báo & khởi tạo giá trị phần tử mảng “C/C++” _ 134  3.  Truy xuất phần tử mảng _ 136  4.  Truyền tham số mảng cho hàm _ 137  5.  Các thao tác mảng chiều _ 138  5.1.  Nhập giá trị cho phần tử mảng 138  5.2.  Xuất giá trị phần tử mảng (ra hình) 140  5.3.  Thêm phần tử vào mảng 141  5.4.  Xóa phần tử khỏi mảng _ 142  5.5.  Tìm kiếm mảng _ 143  5.6.  Sắp xếp mảng 145  6.  Câu hỏi _ 149  7.  Bài tập _ 149  Mảng chiều _ 149  Mảng chiều _ 152  CHƯƠNG CON TRỎ (POINTER) 153  1.  Khái niệm 153  2.  Khai báo biến trỏ _ 153  3.  Truy xuất biến trỏ _ 154  4.  Số học trỏ _ 155  5.  Liên hệ trỏ mảng 156  6.  Con trỏ đa cấp _ 157  7.  Truyền tham số trỏ cho hàm _ 158  8.  Mảng trỏ 158  9.  Từ khóa const với trỏ _ 159  10.  Cấp phát động _ 160  10 SINHVIEN sv[MAX]; Con trỏ trỏ đến biến kiểu struct typedef struct{ … ; … } ; * ; Ví dụ: typedef struct{ int tuso, mauso; }PHANSO; PHANSO *pps; Ta truy xuất biến thành phần pps sau: (*pps).tuso (*pps).mauso hay 180 pps->tuso pps->mauso Truyền tham số kiểu struct cho hàm Truyền tham trị: chương trình chậm phải tốn thời gian chép giá trị biến cấu trúc dùng làm tham số thực cho tham số hình thức Truyền tham biến hay tham trỏ: dù kích thước biến cấu trúc có lớn địa biến kích thước địa vùng nhớ Kiểu union Một biến kiểu union bao gồm nhiều thành phần giống biến cấu trúc, khác chỗ: trường thuộc tính biến cấu trúc cấp phát vùng nhớ khác nhau, trường biến union cấp phát chung vùng nhớ Độ dài biến union độ dài thành phần dài biến Khai báo biến union giống khai báo biến struct Ví dụ: typedef union { unsigned int n; unsigned char ch[2]; 181 }VAL; VAL x; x.n=0x1B1A; đó: ch[0] = 1A ch[1]=1B Bài tập 1) Cho trước thời điểm giờ, phút, giây Viết chương trình tính thời điểm giây sau, giây trước 2) Viết chương trình tính khoảng cách (số giây) thời điểm cho trước 3) Cho trước ngày, tháng, năm Viết chương trình tính ngày hơm sau, ngày hơm trước 4) Viết chương trình tính khoảng cách (số ngày) ngày, tháng, năm cho trước 5) Viết chương trình thực phép tính (+, -, *, /) phân số 6) Viết chương trình thực phép tính (+, -, *, /) số phức 7) Viết chương trình thực phép cộng, phép nhân ma trận 182 CHƯƠNG File Giới thiệu chung File chế cho phép lưu trữ liệu cách lâu dài, với số lượng lớn (về mặt lý thuyết không hạn chế) C++ xem File đơn dãy byte File đánh dấu kết thúc kí hiệu đặc biệt (CTRL+Z cho DOS CTRL+D cho UNIX, ) Để làm việc với File đĩa, trước hết ta phải liên kết file với dòng (stream) nhập/xuất cách tạo đối tượng File thuộc lớp: fstream (dùng cho việc Vào/Ra File), ofstream(dùng cho Ghi File), ifstream (dùng cho Đọc File) Các lớp khai báo tập tin tiêu đề Có loại Vào/Ra file đĩa C++: Vào/Ra file định dạng (formatted file I/O), Vào/Ra file nhị phân (binary file I/O) Quy trình thao tác file: mở file – kiểm tra – xử lý file – đóng file Thao tác kiểu file 2.1 Mở File ( liên kết kênh nhập/xuất với file đĩa ) Dùng hàm thiết lập: filevar( ); Hoặc dùng hàm thành phần open đối tượng luồng nhập/xuất: filevar; filevar.open( , ); Các chế độ mở file: 183 Chế độ Mô tả ios::in Mở để đọc ( mặc định cho ifstream ) ios::out Mở để ghi ( mặc định cho ofstream ) ios::ate Bắt đầu đọc/ghi cuối file ios::app Bắt đầu ghi cuối file ios::trunc Cắt bỏ file (TRUNCate) ios::nocreate Lỗi file không tồn ios::noreplace Lỗi mở để ghi file tồn tại, trừ ate app thiết lập ios::binary Mở file chế độ nhị phân ( mặc định văn bản) 2.2 Xử lý File Trước đọc/ghi file, cần kiểm tra file mở thành công hay không: if (!file) … else … Trong trình làm việc với file, cần dùng hàm kiểm tra kết thúc tập tin vòng lặp: while(!file.eof()) … Vào/Ra kí tự: hàm get() put() làm hàm thành phần ofstream ifstream cho phép đọc kí tự từ file, ghi kí tự file Vào/Ra file nhị phân: hàm read() write() cho phép thực việc đọc/ghi số lượng lớn byte liệu từ đệm sang file Các tham số cho hàm read() write() địa đệm liệu kích thước chúng Địa phải ép thành kiểu char kích thước tính byte 184 Vào/Ra đối tượng (objects I/O): dùng chế độ mở file nhị phân, hàm read(), write() Con trỏ file: đối tượng file kết hợp với giá trị nguyên gọi get pointer ( trỏ đọc ) put pointer ( trỏ ghi ) Hai giá trị cho biết vị trí đọc vị trí ghi trỏ trình làm việc với file Để điều khiển trỏ file phục vụ cho việc đọc/ghi file vị trí tùy ý, ta dùng hàm seekg(), seekp() (để di chuyển trỏ file đến vị trí mong muốn), tellg(), tellp() (để đọc vị trí hành trỏ file) Hàm seekg() tellg() cho phép thiết lập kiểm tra trỏ đọc, hàm seekp() tellp() thực tương tự trỏ ghi Hàm seekg() seekp() có tham số: tham số thứ biểu diễn độ lệch (offset), tính từ vị trí cụ thể xác định tham số thứ (ios::beg, ios::cur, ios:end) 2.3 Đóng File Dùng hàm close() đối tượng file 2.4 Ví dụ Vào/Ra File định dạng Hàm ghi file số nguyên void WriteIntFile() { ofstream outf( “test.dat”, ios::out ); if ( ! outf ) { cerr

Ngày đăng: 31/10/2022, 14:29

w