Lập trình ngôn ngữ C nâng cao gồm các nội dung chính sau: Biểu thức, hàm, lệnh, mảng, con trỏ, và tham chiếu, lập trình hướng đối tượng,...Mời các bạn cùng tham khảo!
Chương Mở đầu Chương giói thiệu phần chương trình C++ Chúng ta sử dụng ví dụ đơn giản đế trình bày cấu trúc chương trình C++ cách thức biên dịch chúng Các khái niệm hằng, biến, việc lưu trữ chúng nhớ tháo luận chương Sau đặc tả sơ khái niệm lập trình Lập trình Máy tính số cơng cụ để giải hàng loạt toán lớn Một lời giải cho tốn gọi giải th u ậ t (algorithm); mơ tá chuồi bước cần thực đế giải tốn Một ví dụ đơn giản cho tốn vả giải thuật là: Bài tốn: xếp danh sách số theo thứ tự tăng dần G iải thuật:G iả sử danh sách cho listl ; tạo danh sách rỗng, list2, để lưu danh sách xếp Lặp lặp lại cơng việc, tìm số nhỏ listl, xóa khỏi listl, thêm vào phần tử danh sách list2, lỉstl rỗng Giải thuật diễn giải thuật ngữ trừu tượng mang tính chất dề hiểu Ngơn ngữ thật hiểu máy tính ngơn ngữ máy Chương trình diễn đạt ngơn ngữ máy gọi thực thi Một chương trình viết ngơn ngừ khác trước hết cần dịch sang ngôn ngữ máy để máy tính hiếu thực thi Ngơn ngữ máy khó hiểu lập trình viên họ khơng thể sử dụng trực tiếp ngơn ngữ máy đế viết chương trình Một trừu tượng khác ngơn ngữ assembly Nó cung cấp tên dỗ nhớ cho lệnh ký hiệu dễ hiếu cho liệu Bộ dịch gọi assembler chuyển ngôn ngữ assembly sang ngôn ngừ máy Ngay ngơn ngữ assembly khó sử dụng Những ngôn ngữ cấp cao C++ cung cấp ký hiệu thuận tiện hon nhiều cho việc thi hành giải thuật Chúng giúp cho lập trình viên khơng phải nghĩ nhiều thuật ngữ cấp thấp, giúp họ tập trung vào giải thuật T rìn h biên dịch (compiler) sè đảm nhiệm việc dịch chương trình viết ngơn ngữ cấp cao sang ngơn ngữ assembly Mã assembly tạo trình biên dịch sau tập hợp lại đế cho chương trình thực thi Chương 1: Mở đầu 1.1 Một chưong trình C++ đon giản Danh sách 1.1 trình bày chương trình C++ Chương trình chạy xuất thơng điệp Hello World Danh sách 1.1 #inđude int main (void) { co u t« "Hello World'll"; _ _ Chú giải Hàng sử dụng thị tiền xử lý #include để chèn vào nội dung tập tin header iosteam.h chương trình, iostrcamli tập tin header chuẩn C++ chứa đựng định nghĩa cho xuất nhập Hàng định nghĩa hàm gọi main Hàm khơng có hay có nhiều tham số (parameters); tham số xuất sau tên hàm, cặp dấu ngoặc Việc xuất từ void dấu n |o ặ c chi định hàm main khơng có tham số Hàm có kiểu trả về; kiểu trả xuất trước tên hàm Kiếu trả cho hàm main int (ví dụ: số nguyên) Tất chương trình C++ phải có hàm main nhất.Việc thực thi chương trình hàm main Dấu ngoặc nhọn bắt đầu thân hàm mam Hàng câu lệnh (statement) Một lệnh tính toán đế cho giá trị Ket thúc lệnh ln ln đánh dấu dấu chấm phẩy (;) Câu lệnh xuất chuỗi "Hello World®" đế gởi đến dòng xuất cout Chuồi dãy ký tự đặt cặp nháy kép Ký tự cuối chuồi (\n) ký tự xuống hàng (newline) Dòng đối tượng dùng đế thực xuất nhập, cout dòng xuất chuấn C++ (xuất chuấn thường hiểu hình máy tính) Ký tự « tốn tử xuất, xem dịng xuất tốn hạng trái xem biểu thức toán hạng phải, tạo nên giá trị biếu thức gởi đến dòng xuất Trong trường hợp này, kết chuồi "Hello Worlđ\n" gởi đến dòng cout, làm cho hiến thị hình máy tính Dấu ngoặc đóng kết thúc thân hàm main 1.2 Biên dịch chương trình C++ Bảng 1.1 trình bày chương trình danh sách 1.1 biên dịch chạy môi trường UNIX thông thường Phần in đậm xem đầu vào (input) người dùng phần in thường xem đáp ứng hệ thống Dấu nhắc hàng lệnh UNIX xuất ký tự dollar($) Chương 1: Mở đầu Bảng 1.1 $ c c hello.cc $ a.out Hello World $ Chú giải Lệnh để triệu gọi dịch AT&T c++ môi trường UNIX cc Đối số cho lệnh (hello.cc) tên tập tin chứa đựng chương trình Theo qui định tên tập tin có phần mở rộng c, c, cc (Phần mở rộng khác hệ điều hành khác nhau) Ket biên dịch tập tin thực thi mặc định a.out Đế chạy chương trình, sử dụng a.out lệnh Đây kết cung cấp chương trình Dấu nhắc hệ thống định chương trình hồn tất thực thi Lệnh cc chấp nhận phần tùy chọn Mồi tùy chọn xuất name, name tên cùa tùy chọn (thườnệ kỷ tự đơn) Một vài tùy chọn yêu cầu có đối số Ví dụ tùy chọn xuất (-o) cho phép định rõ tập tin cung cấp trình biên dịch thay aout Bảng 1.2 minh họa việc sử dụng tùy chọn cách định rõ hello tên tập tin thực thi Bảng 1.2 $ c c heflo.cc -o heDo $ heBo Hello World $ Mặc dù lệnh thực khác phụ thuộc vào trình biên dịch, thủ tục biên dịch tương tự dùng mơi trường MS-DOS Trình biên dịch C++ dựa Windows dâng tặnẹ môi trường thân thiện với người dùng mà việc biên dịch đơn giản cách chọn lệnh từ menu Qui định tên MS-DOS Windows tên tập tin nguồn C++ phải có phần mở rộng cpp 1.3 Viêc biên dich C++ diễn • • Biên dịch chương trình C++ liên quan đến số bước (hầu hết bước suốt với người dùng): • Đầu tiên, tiền xử lý C++ xem qua mã chương trình thực thị định thị tiền xử lý (ví dụ, #include) Ket mã chương trình sửa đối mà khơng cịn chứa chi thị tiền xử lý Chương 1: Mở đầu • Sau đó, trình biên dịch C++ dịch mã chương trình Trình biên dịch trình biên dịch C++ thật phát mã assembly hay mã máy, trình chuyển đổi dịch mã sang c Ớ trường họp thứ hai, mã c sau dịch sè tạo thành mã assembly hay mã máy thơng qua trình biên dịch c Trong hai trường hợp, đầu khơng hồn chỉnh chương trình tham khảo tới thủ tục thư viện chưa định nghĩa phần chương trình Ví dụ Danh sách 1.1 tham chiếu tới tốn tị « mà thực định nghĩa thư viện 10 riêng biệt • Cuối cùng, trình liên kết hồn tất mã đối tượng cách liên kết với mã đối tượng module thư viện mà chương trình tham khảo tới Ket cuối tập tin thực thi Hình 1.1 minh họa bước cho hai trình chuyến đối C++ trình biên dịch C++ Thực tế tất bước triệu gọi lệnh đơn (như C Q người dùng chí khơng thấy tập tin phát Hình 1.1 Việc biên dịch C++ c++ Program ► 17 C++ Program _J7 C++ TRANSLATOR c ► Code ► c COMPILER V ► C++ NATIVE COMPILER 1.4 Biến Biến tên tượng trưng cho vùng nhớ mà liệu lưu trữ sử dụng lại Các biến sử dụng đế giữ giá tri liệu mà chúng dùng nhiều tính tốn khác chương trình Tất biến có hai thuộc tính quan trọng: • Kiếu thiết lập biến định nghĩa (ví dụ như: integer, real, character) Một định nghĩa, kiểu biến C++ chuyển đổi Chương 1: Mở đầu • Giá trị chuyến đối cách gán giá trị cho biến Loại giá trị biến nhận phụ thuộc vào kiểu Ví dụ, biến số ngun giữ giá trị nguyên (chắng hạn, 2, 100, -12) Danh sách 1.2 minh họa sử dụng vài biến đon giản Danh sách 1.2 #mdude int main (void) { int woikDays; float workHoure, payRate, weeklyPay; woikDays=5; workHours _ 7.5; payRate=38.55; weeklyPay= woikDays * workHours * payRate; cout« "Weekly Pay= " « weeklyPay« V; 10 11 Chú giải Hàng định nghĩa biến int (kiếu số nguyên) tên workDays, biến đại diện cho số ngày làm việc tuần Theo luật chung, trước tiên biến định nghĩa bàng cách chi định kiểu nó, theo sau tên biến cuối kết thúc dấu chấm phấy Hàng định nghĩa ba biến float (kiếu số thực) thay cho số làm việc ngày, số tiền phải trả hàng giờ, số tiền phải trả hàng tuần Như thấy hàng này, nhiều biến kiếu định nghĩa lượt qua việc dùng dấu phấy đế ngăn cách chúng Hàng câu lệnh gán Nó gán giá trị cho biến workDays Vì thế, sau câu lệnh thực thi, workDays biểu thị giá trị Hàng gán giá ứị 7.5 tới biến workHours Hàng gán giá trị 38.55 tới biến payRate Hàng tính tốn số tiền phải trá hàng tuần từ biến workDays, workHours, payRate (* toán tử nhân) Giá trị kết lưu vào biến weeklyPay 10-12 Các hàng xuất ba mục là: chuồi "Weekly Pay = ", giá trị biến weeklyPay, ký tự xuống dòng Khi chạy, chương trình cho kết sau: Weekly Pay = 1445.625 Khi biến định nghĩa, giá trị khơng định nghĩa gán cho giá trị thật Ví dụ, weeklyPay có giá trị khơng định nghĩa hàng thực thi Việc gán giá trị cho biến lần gọi khỏi tạo Việc chắn Chương 1: Mở đầu biến khởi tạo tmớc 11Ó sử dụng cơng việc tính tốn quan trọng Một biến định nghĩa khởi tạo lúc Điều xem thói quen lập trình tốt giành trước khả sử dụng biến trước khởi tạo Danh sách 1.3 phiên sửa lại danh sách 1.2 mà có sử dụng kỹ thuật Trong mục đích khác hai chương trình tương tương Danh sách 1.3 #include int main (void) { int woricDays=5; float workHours=7.5; float payRate=38.55; float weeklyPay=woikDays*workHours* payRate; 10 cout« "Weekly Pay="; cout« weeklyPay; cout«\n'; 11 1.5 Xuất/nhập đơn giản Cách chung mà chương trình giao tiếp với giới bên ngồi thông qua thao tác xuất nhập hướng ký tự đơn giản C++ cung cấp hai toán tử hữu dụng cho mục đích » cho nhập « cho xuất Chúng ta thấy ví dụ việc sử dụng tốn tử xuất « Danh sách 1.4 sê minh họa thêm cho việc sử dụng toán tử nhập » Danh sách 1.4 #inelude int main (void) { int woricDays=5; float workHours=7.5; float payRate,weeklyPay, 10 11 12 cout« "What is the hourlypay rate? cin»payRate; weeklyPay= workDays * woricHours * payRate; cout« "Weekly Pay= cout« weeklyPay; cout«W ; 13 Chương 1: Mở đầu Chú giải Hàng xuất lời nhắc nhở What is the hourly pay rate? để tìm liệu nhập người dùng Hàng đọc giá trị nhập gõ người dùng chép giá trị tói biến payRatc Tốn tử nhập » lấy dịng nhập tốn hạng trái (cán dịng nhập chuấn C++ mà tương ứng với liệu nhập vào từ bàn phím) biến (mà dừ liệu nhập chép tới) toán hạng phải 9-13 Phần cịn lại chương trình trước Khi chạy, chương trình sè xuất sau (dữ liệu nhập người dùng in đậm); What Lsthe hourlypay rate? 33.55 Weekly Pay = 1258.125 Cả hai « » trả tốn hạng trái kết chúng, cho phép nhiều thao tác nhập hay nhiều thao tác xuất kết họp câu lệnh Điều minh họa danh sách 1.5 với trường hợp cho phép nhập số làm việc ngày số tiền phải trả Danh sách 1.5 //include int main (void) { int wotfcDays=5; float workHouK, payRate, weeklyPay; cout« "What are the work hours and the hourlypay rate? cin » workHours » payRate; weeklyPay=workDays * workHours * payRate; cout« "Weekly Pay=" « weeklyPay « V; 10 j _ _ _ Chú giải Hàng đọc hai giá trị nhập nliập vào từ người dùng chép tương ứng chúng tới hai biến workHours payRale Hai giá trị cần tách biệt không gian trống (chắng hạn, nhiều khoản trắng ký tự tab) Câu lệnh tương đương với: (cin » workHours)» payRale; Vì kết » tốn hạng trái, (cin»workHours) định giá cho cin mà sau sử dụng toán hạng trái cho toán tử » Chương 1: Mở đầu Hàng xiày kết việc kết hợp từ hàng 10 đến hàng 12 danli sách 1.4 Nó xuất "Weekly Pay = ", theo sau giá trị biến weeklyPay, cuối ký tự xuống dịng Câu lệnh tương đương với: ((cout« 'Weekly Pay= " ) « weeklyPay)« Vi'; Vì kết « tốn hạng trái, (cout« "Weekly Pay = ") định giá cho cout mà sau sử dụng tốn hạng trái tốn tử « ké tiếp Khi chạy, chương trình hiển thị sau: What are the work hours and the houriypay rate? 75 33.55 Weekly Pay = 1258.125 1.6 Chú thích Chú thích thường đoạn văn Nó dùng đế giải thích vài khía cạnh chương trình Trình biên dịch bở qua hồn tồn thích chương trình Tuy nhiên thích có ý nghĩa quan trọng người đọc (người xem mã chương trình có sẵn) người phát triển phần mềm C++ cung cấp hai loại thích: • Những sau // (cho đến kết thúc hàng mà xuất hiện) xem thích • Những đóng ngoặc cặp dấu ỉ* */ xem thích Danh sách 1.6 minh họa việc sử dụng hai hình thức Danh sách 1.6 #inđude /* Chuong trinh tinh toantong so tien phai teahang tuan cho mot cong nhan đua tren tong so gio lamviec va so tien phai tra moi gió */ int main (void) { int workDays=5; //songay lamviec trongtuan float workHours=7.5; // so gio lamviec float payRate=33.50; // so tien phai tra moi gio float weeklyPay, //tong so tien phai tra moi tuan 10 weeklyPay= workDays * workHours * payRate; cout