Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 17 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
17
Dung lượng
1,4 MB
Nội dung
T S DƯƠNG TỬ CƯỜNG NGƠN NGỮ LỘP TRÌNH C++ CƠBẢN Đến HƯỚNC ĐỐ! TƯỢNC Từ £)AỈ H Ọ C Q U O C G iA HA ÌMỌl ĨRUNG TÀM THÕNG ĨIN ĨHƯ VIÉN V - GO 03R8S NHÀ X U Ấ T BẢN KH O A HỌC VÀ K Ỹ THUẬT t HÀ NƠI • Clìịii trách ỉỉlìiệm xiiủì bdiì PGS.TS Tơ Đ n g Hải Biên tập ThS Vũ T h ị M in h L u ậ n Trììììì bày bìa Hương Lan NHÀ XUẤT BẢN KHOA HỌC VÀ KỸ THUẬT 70 - Trần Hưng Đạo, Hà Nội In 1000 bản, khổ 14,5 X 20,5 cm lại Xí nghiệp in NXB Lý hiạn Irị Giấy phép xuất bán số: 150-191, cấp ngày 4/2/2005 In xong nộp lưu chicu tháng 10 năin 2003 LỜI NĨI Đ Ầ U Ti'ong nliững nảni 1980, ngơn ngữ c k h ả n g định đưỢc vị trí quan trọng ngơn ngữ lập trìn h có cấu trúc tính đa nìình Một chương trình đưỢc thiết kơ^ trê n ngơn ngữ c thường p h i huy dưỢc nhiều tác dụng khó hội tụ ngơn ngữ lặỊ) trình khác Tuy độ phức tạp tốn cần giai qut trơn thực tê ngày tàng ngơn ngử c bộc lộ nhữ ng điểm yêUj n h ấ t clược sử d ụ n g cho dự án lốn Đố khác phục h n chê tồn ngơn ngữ c nói riêng ngơn ngữ lập trìn h có cấu trúc nói chung, nhà thiôt k ế ph ần mềm đả p h t triển ý tưỏng inoi Các ý tương này, x u ấ t từ n h ữ n g n m 1970 nh n g dược sử dụng inột cách rộng rãi để xây dựng phán mềm vào năm 1980 Điểm mâu chôt để xây dựng ý tương khả n ă n g thiết k ế p hần mềm m a n g nlìừng đặc tính thơ^ giới thực bên ngồi Kỹ t h u ậ t lập trìn h dựa ý iưởng có tên “Kỹ t h u ậ t lập trìn h hưống đố*i iưỢng” (Object - O riented - Program ing OOP) trê n kỹ t h u ậ t rnới n h iề u trìn h biên dịch dược th i ế t kô^ n h S m alltalk, C ' \ V.V Lập trìn h định hưống đơi tượng đưỢc p h t triển từ ngơn xigữ lập trìn h có cấu trúc n h n g th a y xoay q uan h chức n ă n g nhiộnì vụ đưỢc đ ặ t ra, OOP lại đ ặ t trọng tâ m vào việc xử lý liệu để thực chức n ă n g Trong lập trìn h định hưống đôi tưỢng, k h i niệm object (đôl tưỢng) trở t h n h khái niệm trọng tâm h ầ u n hư cơng việc ĩiìột chương trình đưỢc tiến h n h trê n đôl tưỢng Các th n h phần OOP bao gồm: đối tưỢng, thuộc tính, tác động (phương thức) giao diệu k h ả n n g n h ìn Ihấy đơi tượng Mọi đốĩ tưỢng th iế t lập OOP câu trúc độc lập bao gồm liệu tác động mà đơi tượng thực trê n liệu Khái niệm ẩốì tưỢng dùng riêng cho thực thể riêng biệt cho lớp nhiều thực thể Một đổi tưỢng thực tác động đưỢc định nghĩa bên qua thơng điệp dược gửi đên th â n đơi tưỢng điều cần lưu ý có ch ính đơl tượng thực tác động Qua th n g điệp đơi tượng n h ậ n dưỢc nhiệm vụ đòi hỏi ph ả i thực Như vậy, đơì tưỢng xem n h đại lượng mà hội tụ nh ữ n g đặc điểm sau: có tên, có trạ n g thái, có tác động mà đơi tượng thực k h ả nán-g ẩ n đôi vối đôi tượng khác Ngôn ngữ ngơn ngữ lập trìn h xây dự ng từ ý tưởng xem đại diộn điển hình cho phương pháp lập trìn h mới: lập trìn h hướng đơi tưỢng Vói ngơn ngữ này, ta có th ể làm quen với sô" khái niệm kỹ t h u ậ t lập trìn h liên quan dến t h ế giới thực: tín h đóng góp (encapsulation), tính th a k ế (inheritance) tính tương ứng bội (polymorphism) Các đặc tính khơng có ngơn ngữ lập trình truyền thơng làm cho có th ể p h t huy h ế t tác dụng th iê t kế dự án lốn n h n g củng dem lại nhiều khó k h ă n cho b n b ắ t đầu yới % Đã làm q u e n với n h ậ n thấy rằ n g chương trìn h viết ngơn ngữ súc tích, rõ rà n g đặc biệt nìộl c h n g mực SG cho p h é p Ị>hát t r i ể n t h e o m ộ t s u y Iighì hcl sức lự nhiên Sự p h t t n ổ n trải qua nhiều chặng dưịiìg vối nlìiổu Ị)hiên ban khác Tài liộu nàv sử dụng phiên b ả n hàng Borland - Borland c 3.1 để gíới thiệu ngơn ngữ Đây tìình biên dịch mà theo chúng tơi r ấ t tiện lợi cho việc n ghiên cứu thiôt kô phần mềm Cuôn sách biên soạiì dựa nhiếu tài liệu khác nh au trê n kinh nghiệm cliíiih tác giả làm việc vói Khác vối nội dung sơ" tài liộu khác, cuôn sách biên soạn đê bạn đọc có thê làm việc ngav với C++ mà khơng cần p h ả i biết ngôn ngữ c Nội dưng sách chia làm p h ầ n bao gồm 11 chường Phần I: C++ - Lập trinh bản, bao gồm chương; Chương I: Các khái niệm C++ Chương II: Các hàm dòng nhập xuất Chương III: Các phép toán câu lệnh điều khiển Chương IV: Bộ tien xử lý Chương V: Biến trỏ, biến th a m chiếu hàm Chvỉơng VI: Các kiểu liệu phức tạp Phần II: L ậ p trình hướìig đối tượng, bao gồm chương: Chương VII: Lớp đốì tưỢng Chương IIX: Tính th a kê Chương IX: Định nghĩa chồng h m tốn tử Chương X: Tính tương ứng bội Chương XI: Thư viện dòng n h ậ p x u ấ t Ngơn ngữ lập trình c ngơn ngữ lập trìn h khó c^' lại cịn phức tạp ngơn ngữ c địi hỏi tin h th ầ n chịu khó tìm tịi, h a m hiểu biết Tuv vậy, bạn n ắ m ngôn ngữ này, chúng tôi,tin tưởng rằn g, ta y bạn, trở th n h công cụ h ế t sức đắc lực vô tiện lợi giúp bạn giải toán kỹ t h u ậ t phức tạp mà trước bạn phải vất vả giải q u yết t r ê n ngôn ngữ ngôn ngữ khác Chúc bạn th n h công c Phần I C++ LẬP TRÌNH Cơ BẢN ■ Chương I CÁC KHÁI NIỆM C BẢ N VỂ C + + 1.1 CÁC KÝ HIỆU Các ký hiộu b ả n bao gồm n hữ ng ký tự phép sử d ụ n g trơng ngôn ngữ n h chữ cái, sô" tổ hỢp ký tự khác C++ sử dụng sô"ký tự sau: - 52 chữ in thưòng, in hoa ký tự gạch nốì: a, b, c, z, A, B, c, z _ - Các chữ sô"; 0, 1, 2, 3, 4, 5, 6, 7, 8, - Các ký tự đặc biệt đưỢc dùn g riêng ngôn ngữ: ^ - ? I ( ) [ ] + _ * / = ^ Ị A M I J ^ g Một sô" ký tự khác dấu cách (ký tự trắng), dấu xuông h n g dấu canh theo cột Các từ khoá C++ dùn g để viết xây dựng câu lệnh chương trình Cũng giơVig n h c, từ khố ln viết chữ thưịng khơng d ù n g cho mục đích khác nh đặt tên cho biến, cho h m v.v Có thể liệt kê sơ" từ khố sử d ụ n g C++: auto break case char continue default double else entry enum extern float for goto int long register if return sezeof short static struct switch typedef union class unsigned while void asm fortran pascal ad a volatile cortst 1.2 HẰNG Các thông tin mà giá trị không th ể t h a y đổi tro n g chướng t r ìn h gọi Các h ằ n g C++ chia làm sô" loại sau: H ằ n g sô hoc: Các hằn g có giá trị b ằ n g giá trị £Ơ" mà biểu diễn H ằng sơ" học lại chia làm hai loại • Hằng sị ngun: Loại sơ biểu diỗn dạng sô^ 10, sô" sơ' 16 Các sơ' 10 có ihể k iông số’ dương âm c ẩ n lưu ý dược dùng sô^ cliữ số^ dầu tiên số^ n J^un Ví dụ + 14 - H ằng sơ'ngun dương có giá trị 14; -12 ' H ằn g sô" nguyên âm có giá trị âm 12; 012 - Khơng phải h ằ n g sô" nguvên Các sô' n guyên sô" h ằ n g khơng có dấu đưỢc biểu diễn b ằ n g chữ sô" hệ đếm số’ - sô" từ đến Chữ h àng kiểu phải chữ số’ Đây nguyên n h â n chữ sô" không sử dụng chữ sô^ h ằ n g sô" 10 Ví dụ: 014 • H ằn g sơ" vổi giá trị 12 (cơ sô" 10) 0114 - H ằ n g sô" vỏi giá trị 76 (cơ số' 10) Các sô" n guyên sơ" 16 viết khơng có dấu ln đưỢc b ắ t đầu bơi o x Ox Trong hệ đếm sơ" 16 ngồi chữ sơ" từ đến người ta sử dụng chữ từ A đến F để biểu thị sơ' từ 10 đến 15 Ví dụ: o x c Oxc - H ằ n g sô" 16 có giá trị 12 (cơ sơ" 10) OXFF Oxff - H ằng sơ" 16 có giá trị 255 (cơ sơ" 10) • H ằ n g s ố thực: Là loại h ằ n g được viết dạng số 10 Một hằn g sơ^ thực dược biểu diỄa dưói dạng thập phân hay d n g khoa học Ví dụ: 12.0 - H ằng số* thực dương có giá trị \2.0 -12.5 - Hằng sô" thực âm có giá trị -12.15 1.2E1 1.2el - H ằng sô" thực với giá trị 12 H ằ n g ký tư bao gồm ký tự đơn viết tro ng dấư n h y đơn, ví dụ 'A', 'B', T Mỗi kỷ tự có giá trị mã ASCII Ví dụ mã ‘A' 65 '0' 48 H ằ n g k i ê u c h u ỗ i dãy ký tự đưỢc viết tro n g dấu n h y kép, ví dụ: "this is a string" h ằ n g kiểu chuỗi Đôl vối h ằ n g kiểu chuỗi cần lưu ý: • Độ dài h ằ n g kiểu chuỗi khơng hạ n c h ế có th ể khơng chứa ký tự • Trình biên dịch tự động đưa thêm byte có giá trị bằn g (NULL) vào sau chuỗi trìn h biên dịch Để p h â n biệt vói ký tự '0', byte viết dưỏi d n g '\0' Byte đưỢc xem n hư dấu hiệu kết thúc chuỗi, • Nêu dùng m ảng chiều để lưu trữ h ằ n g kiểu chuỗi sơ" p hần tử m ảng phải lớn sô" ký tự chuỗi đơn vị (để chứa byte NULL) Các ký tự dùng riêng (ký tự khơng in được) có th ể sử dụng ký tự bình thường nh n g viết chúng phải thêm ký tự \ trước C hẳng h n đưòng dẫn h ằ n g kiểu chuỗi, th ay cho "C :\b orlan dc\b gi" ta phải viết " C :\\b o r la n d c \\b g i" 10 (V) sô ký tự thuộc dạng khơng in dược (có giá trị ASCII từ đơn 31) n hư ng trìỉih biên dịch nhận biêt (‘h ún g Ihơn^^ qua cặp ký tự (dưỢc viết b ắ t dầu ký tự \) Các ký tự thường dược dùng dể điổu khiển hình máy 111 Báng 1.1 mô tả sô'ký tự thường hay sử dụng: Bảng I ỉ Tác d ụ n g Ký h iệ u Mò tả tro n g c Mả ASCII B>'te trắ n g \0 NULL (null byte) Ù1 \b BS (Backspace) Vổ đầu dòng \r 13 CR (Carier Return) C anh cột \t T (Horizontal Tab) Xng dịng \n 10 NL (New line) S a n g trang \f 12 FF ( Form feed) 'l'ín hiệu chng \a bel (Bell) 1.3 BIẾN Biên đại lượng thuộc kiểu n h ấ t định (sô" nguyên, sô thực v.v ) mà giá trị th a y đổi q trìn h thực chương trình Mục đích biến dùng để lưu trữ liệu việc sử d ụ ng biến thực th ông qua tên Khi đặt tên cho biến cần phải đảm bảo qui tắc sau: • Tên bao gồm dãy chữ cái, sô" phải b ắ t đầu 11 chư Không sử dụng ký tự đặc biệt để đặt tên cho biến kể dấu cách • Tên biến khơng trù n g với từ khố • Có p h â n biệt chữ thường chữ hoa đ ặ t tên cho biến 1.4 CÁ C LOẠI DỮ LIỆU VÀ CÁCH KHAI BÁO T ấ t biến ngôn ngữ c C++ phải k h i báo trước sử dụng Thơng qua việc kh báo trìn h biên dịch xác định kích thước biến (cấp p h t nhớ để lưu tr ữ giá trị biến nhố) Khai báo biến đưỢc thực qua cú pháp sau: K i ê u b iê n T ê n b iê n ; Dưới sơ" từ khố d n h cho việc khai báo biến, kích thước biến k h o ản g giá trị có th ể lưu tr ữ biến khai báo từ khố (đơl với loại m áy sử dụng 16 bit liệu): Bảng 1.2 K iể u K íc h t h c (b it) G iá t r i• ch a r [-126 - 125] u n s ig n e d char [0 ^ 255] in t 16 u n s ig n e d int 16 long in t 32 float 32 [-lOe-37 ^ 10e37 double 64 í-lOe-307 - lOe 3071 12 -32768 - +32767] [0 - 65535] -2e9 -í- +2e9 Trong kiơu biơn này; char dừỢc dùng khai báo cho liệu kiếu ký tự; int - Hệu kiểu sô" nguyên: f lo a t - dử liệu kiểu sô" thực; d o u b l e - liệu kiểu số’ thực với độ xác gấp đơi; u n s i g n e d - liệu kh ông dấu (chỉ d ù n g cho c h a r int); lo n g - Dữ liệu có độ dài lớn gâ^p hai lần (dùng cho int float) X Các biến khai báo trê n dịng (ví dụ in t y) trê n dòng khác nhau, chẳng hạn: intx, y; float z; int a; v ể vị trí kh báo biến, ngơn ngữ c địi hỏi việc khai báo biên phải đưỢc thực trước p h m vi mà chúng sử dụng (thông thường b ắ t đầu định ng hĩa hàm ) việc khai báo biến C++ cần dược thực trưóc biến sử dụng 1.5 MẢNG M ảng tập hỢp biến có kiểu p h â n bô" lien tục nhố Khi sử dụng m ảng cần phải lưu ý: • M ảng phải đ ặ t tên trưóc sử dụng N guyên tắc đ ặ t tê n m ảng giơng n hư biến; • Mỗi p h ầ n tử m ảng xem biến; • M ảng phải khai báo trước sử dụng 13 Dưói sơ" ví dụ vê khai báo m ảng C++: in t x[5]; m ả n g X vối p h ầ n tử thuộc kiểu int; char a[3]; m ảng a với p h ầ n tử thuộc kiểu char P h ầ n tử m ảng đưỢc tru y cập thông qua so* ph ần tử m ảng C++ ln có sô N h x [ l ] \ k p h ầ n tử thứ m ảng x[0] p h ầ n tử đầu mang C ần lưu ý thơng thưịng trìn h biên dịch C++ khơng kiểm tra giá trị đưỢc gán cho số’ p h ầ n tử mảng Điều đòi hỏi ngưòi lập trìn h phải h ê t sức ý làm việc với sơ" mảng Ngồi m ảng chiều nh ví dụ trên, C++ cịn cho phép định nghĩa nhiều kiểu m ảng khác Nếu để p h â n biột p h ầ n tử m ảng mà phải dùng đên clìỉ số* th i m ảng gọi hai chiều Ví dụ mảng chiều: in t a[3][3]; M ảng gồm phần tử tên p h ầ n tử là: ^[0][0], a[0][l], a[0][2 a a[2][0], a[2][l], a[2][2' Như đốỉ với m ảng hai chiều th ì sơ" dầu p h ầ n tử dùng đế h n g sô" thứ hai dùng để cột Các p h ầ n tử m ản g lưu trữ nhố theo hàng Theo định nghĩa ta có th ể kh báo m ả n g thuộc kiểu char, thực chất m ảng đưỢc dùng để lưu trữ xâu ký tự M ảng kiểu char khai báo n h sau: 14 char nanie[12]; Kích thirơc m ảng 12 Như m ảng dùng tie lưu Irữ 11 ký tự, ký tự cuôi -ký tự NULL sõdưỢc Irình biơn dịch tự động đưa thêm 1.6 CHÚ GIẢI C++ sử dụng hai loại giải Loại Ihứ n h ấ t dành cho mộl khôi ván viết hai ký hiệu /* (bắt đầu) */ (kôt thúc) Đây lả loại giải dùng c Loại tln'i hai dành cho đoạn ván đưỢc tính từ hai ký tự // cho đên CI dịng Loại nàv d ù n g cho C++ 1.7 CẤU TRÚC CỦA CHƯƠNG TRÌNH C++ Tiủ chương trình C++ xây dựng từ hàni Sô'^ lượng hàm chương trìn h khơng h n chơ^ bao giị phải có n h ắ t hàm có tên gọi main Thơng qưa hàm chương trìn h thực việc giao tiếp với hộ diều hành Khái niệm hàm đưỢc đề cập chi tiêt chương V Sau dây ví dụ cụ thể chương trình viết ti'ong C++: #include void main () { int i; i = i+1; cout