Lập trình cơ bản với c++ quyển 5

175 257 3
Lập trình cơ bản với c++  quyển 5

Đ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

ĐẠI HỌC QUỐC GIA HÀ NỘI Tú SÁCH KHOA HỌC MS:62-KHTN-2011 BỘ GIÁO TRÌNH TIN H Ọ C sở Chủ biên: Hồ Sĩ Đàm Quyển U p trình c b ả n ■ S i l yiarn^ Tác giả: Trần Thị Minh Châu - Lê Sỹ Vinh TT TT-TV * ĐHQGHN 005.13 TR-C(5) 2011 [ĨẼ ẩ5 Ha MỘI nhà xuất đại học q u ố c gia hà nội B Ộ G IÁ O TRÌNH TIN H Ọ C c sở Chủ biên: Hồ Sĩ Đàm Quyển LẬP TRỈNH Cff BẢN ■ vớir++ Tác giả: Trần Thị Minh Châu - Lê Sỹ Vinh NHÀ XUẤT BẢN ĐẠI HỌC QUỐC GIA HÀ NỘ MỤC LỤC Trang Giởi t h i ệ u Cềtuimg ỉ M đ ầ u 1.1 C hư ơn g trình ià g ì ? 1.2 Lặp trình g ì ? 1.2.1 M ứ c cao độc lập với máy tín h 10 ỉ 2.2 M ức thấp phụ thuộc vào máy t í n h 11 1.3 N gơn ngữ lập trình chương trình d ị c h 1 1.4 Môi trường lặp trinh bậc c a o .13 1.5 Lỗi lim lỗi 15 1.6 Lịch s c C + + 16 1.7 C hương trình C++ đầu t i ê n .17 Bài tặ p 20 Cỉiưưng B iến , kiểu d ữ liệu p h é p t o n .23 2.1 Kiều d ữ liệu 25 2.1.1 Kiểu liệu b ả n .25 2.1.2 Kiểu d ữ liệu dẫn x u ấ t .27 2.2 Khai báo sừ dụ ng b iế n 27 2.2.1 Định danh cách đặt tên b i ế n 27 2.2.2 Khai báo b i ế n 28 2.3 H ằ n g 29 2.4 Các p hép toán b n .29 2.4.1 Phép g n .29 lAp t r In h c bả n VỚIC+- 2.4.2 C ác phép toán số học .30 2.4.3 C ác phép toán quan h ệ 31 2.4.4 C ác phép toán lo gic .32 2.4.5 Đ ộ ưu tiên phép to n 32 2.4.6 T n g thích k i ể u .33 Bài t ậ p 33 C ỉiư ơng C c c ấ u trú c đ iề u k h i ể n 37 3.1 Luồng điều k h i ể n 37 3.2 C ác cấu trúc rẽ n h n h 38 3.2.1 Lệnh if -e ỉs e .38 3.2.2 Lệnh svvitch 44 3.3 C ác cấu trúc lặ p 48 3.3.1 V ò n g vvhile 48 3.3.2 V ò n g lặp vô tậ n 51 3.3.3 V ò n g d o - w h i l e 52 3.3.4 V ò n g f o r 55 3.4 C ác lệnh break c o n t in u e 59 3.5 Biểu thức điều kiện cấu trúc điều k h i ể n 62 Bài t ậ p 63 Chương 4, H m 67 4.1 C ác hàm có s ẵ n 68 4.2 Cấu trúc c h u n g h m 69 4.3 C ách sử d ụ n g h m 71 4.4 Biến toàn cục biến địa p h n g 71 4.4.1 P hạm vi b ié n 72 4.4.2 T hờ i gian sống b iế n , 73 4.5 T h am số, đối số, c chế truyền tham số cho h m .75 4.5.1 T ru y ền giá t r ị 75 4.5.2 T ru y ền tham c h i ế u 77 MỤC LỤC 4.5.3 Tham số mặc đ ịn h 79 4.6 Ị ỉàm trùng t ô n 81 4.7 }Ịàm đệ q u v 83 lỉài t ậ p 85 ChươĩìỊỊ 5, M n g 89 ỉ M ãng chiêu 89 5.1.1 Khai báo khởi tạo m ả n g 90 5.1.2 ứ n g dụng m n g 92 5.1.3 Trách nhiệỉĩi kiểm sốt tính hợp lệ chi số m ả n g 94 5.1.4 M ảng làm iham số cho h m 95 5.2 M àng nhiều ch iều 96 5.3 Mảng xâu kí tự 98 5.3.1 Khởi lạo giá trị cho xâu kí t ự 101 5.3.2 T hư viện xừ lý xâu kí tự 101 5.4 Tim kiếm xếp dừ liệu m n g 101 5.4.1 Tim kiém tuyến tín h 102 5.4.2 Tìm kiếm nhị p h â n 103 5.4.3 Sắp xêp ch ợ n 105 B ‘à ỉ tặ p 107 Cềtưưng ổ C o n trỏ n h 109 6.1 Bộ nhớ máy lín h 109 6.2 Biến địa chi b iế n 110 6-3 Bién tr ò 110 4, M t r ỏ 116 6.5 Bộ nhớ động 1Ỉ8 6.5.1 Cấp phát nhớ đ ộ n g 19 6.5.2 Giải nhớ đ ộ n g 119 6 M àng động t r ỏ 120 u \p TRlNH C BẢN VỚI C++ 6.7 T ruyền tham số t r ỏ 122 Bài tậ p 127 Chương Các kiểu liệu trừu tư ợ n g 131 7.1 Định nghĩa kiểu dừ liệu trừu tượng bàng cấu ưúc struct 132 7.2 Đ ịnh nghĩa kiểu d ữ liệu trừu tượng bàng cấu trúc c la s s 136 7.2.1 Q u y ền truy n h ậ p 140 7.2.2 T o án tử phạm vi định nghĩa hàm thành v i ê n 141 7.2.3 H àm khởi tạo hàm h ủ y .142 7.3 Lợi ích củ a lập trình h n g đối t ợ n g 145 7.4 Biên dịch riêng r ẽ 146 B ài t ậ p 150 Chương Vào liệ u 153 8.1 Khái niệm dò ng d liệ u 153 8.2 T ệp văn tệp nhị p h â n 154 8.3 V t ệ p .155 8.3.1 M t ệ p 156 8.3.2 Đ ó n g t ệ p 157 8.3.3 X lý tệp văn b ả n Ỉ58 8.3.4 X iý tệp nhị p h â n 161 Bài t ậ p 164 Phụ iụcA Phong cách iập trìn h 167 Phụ lục B Dịch chương trình C-H- GNƯ C++ ỉ 71 Phụ lục c Xử lý xâu thư viện cstring 175 Tàỉ liệu tham k h ảo .179 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 quvết 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 cỏ thể 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 (gần gũi với ngơn ngữ lự nhiên người) Giáo trình trang bị cho sinh viên kiến thức lập irình Ngơn ngừ lập trinh 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 tồn thể giới để phát triển chương trình từ đơn giàn đến phức tạp ỉ lơn nữa, mềm dẻo cùa C++ cho phép giải tốn thực tế cách nhanh chóng, ngồi cho phép chủng ta quản lý tương tác trực tiếp đến hệ thống, nhớ dê nâng cao hiệu quà chương trình Giáo trình chia thành chưcmg, chưcmg trình bày vấn đề lý thuyết lập trinh Các vấn đề lý thuyết mơ tả bàng ví dụ thực tế Ket 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 sỗ 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ố, hàng 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ố _ LẨP TRÌNH Cơ BẢN VỚI • Chương 3: Chươ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 trúc rẽ nhánh (if-clse, svvitch), cấu trúc lặp (tbr while, do-while) giới thiệu • Chương 4: Chương trình hàm giới ihiệu dê 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ảníì xâu kí tự Cách khai báo sừ dụng mảng chiều màne nhiều chiều ví dụ liên quan trình bày chi tiết chưong • Chương 6: Đây chưong tương đối dặc thù cho C++, chúng lơi trình bày nhớ kiểu liệu trò c ấ u trúc nhớ, cách quan 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 Irúc liệu trừu tượng (cụ thể struct class C++) Sinh viên sỗ 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 dối tưọng dừ 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 trinh C++ • Chương 8: Chúng giới thiệu cách vào dừ 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 ihiệ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 C h n g trình gì? Bạn chẩc 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 Ihực theo K-hi bạn đưa vào 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 toá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 lAp trình c với c 10 Mức cao độc lập với máy tính ++ Mức thấp phụ thuộc vào máy tinh o 'CỌ JZ c I vấn đ ề Ngôn ngữ tự nhiên ^— 7 - otfí JZ c oc> b ^ J Thiết kế thuật tốn Mă giả Lập trình Dịch Ngơn ngữ lập trình, C++ Java, Mâ máy Hình 1.1 Quy trình giải ỉốn Quy trình chia thành hai mức; mức cao độc lập với máy tính {machỉne 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 quà đầu Bước thường sử dụng búư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ế th u ậ t toán: Một thuật toán chi 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ả ipseudocode) 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 • Bước 2: Nếu khơng, ửiay y phần dư phép chia y/x • Bước 3: Nếu hai số X y có số bàng kết luận UCLN số lại X phần dư phép chia x/y CHƯƠNG VẢO RA D ữ LIỆU _ Sau thực 2, viết chưomg trình cho biết kích thước tệp văn student.txt, vinh.txt, hanoi.txt, hocluc.txt Kết ghi tệp văn all.txt Viết chương trình kiểm tra xem tệp văn student.txt có tồn hay khơng? Nếu tồn hình thơng tin sau: • Sổ lượng sinh viên tệp • Số lượng dòng tệp • Ghi vào cuối tệp văn dòng chừ “CHECKED” • Nếu khơng tồn tại, EXISTED” hình dòng chữ “NOT Tệp văn numbers.txt gồm nhiều dòng, dòng chứa danh sách sổ nguyên thực Hai số đứng liền cách dấu cách Hãy viết chương trình tổng hợp cácthông tin sau ghi vào tệp văn info.txt thơng tin sau: • Số lượng số tệp • Số lượng số nguyên • Số lượng sổ thực Lưu ý: Test chương trình với trưòng hợp tệp văn bàn number.txt chứa hay nliiều dòng trắng cuối tệp Trinh bày khác nhau, UXỈ điểm, nhược điểm tệp văn tệp văn nhị phân Khi nên dùng tệp văn nhị phân Cho file văn numbers.txt chứa số nguyên thực Hãy viết chương trình đọc số từ file numbers.txt ghi file nhị phân numbers.bin số nguyên nằm file numbers.txt Sau thực 7, viết chương trình đọc tính tổng tất số nguyên file nhị phân numbers.bin Hiện hình kết thu Ự^P TRlNH Cơ BẢN VỚI C++ 166 Sau thực 7, viết chương trình đọc số nguyên file nhị phân numbers.bin Ghi số nằm vị trí chằn (số tlle tính vị trí số 0) íìle nhị phân numbers.bin vào cuối tìle numbers.txt 10 Cho hai tlle văn bàn numl.txt num2.txt, mồi file chứa dãy số sấp không giảm, s ố lượng sổ mồi file khơng q 109 Hây viết chương trình đọc ghi tlle vãn numl2.txt số hai file nưml.txt num2.txt thỏa mãn điều kiện số tìle numl2.txt xếp khơng giảm 11 File văn bàn document.txt chứa văn tiếng Anh Các câu văn phân cách dấu Hãy ghi file văn sentences.txt nội dung văn document.txt, mồi câu viết dòng Ví dụ: document.txt seniences txl this is a good house! Houever^ too expensive this is a good house! However, too expensive 12.File văn document.txt chứa văn có lẫn câu tiếng Anh câu tiếng Việt Các câu văn phân cách bời dấu M Hãy ghi file văn english.txt (viet.txt) câu tiếng Anh (Việt) văn document.txt Phụ lục A PHONG CÁCH LẬP TRÌNH Phần giới thiệu điểm mà lập trình viên nên làm theo để chương trình dễ đọc, dễ hiểu, đạt hiệu cao v ề bản, chương trinh cần viết tường minh, đcm giản, dễ hiểu Không nên sử dụng cấu trúc lệnh phức tạp dễ dẫn đến nhầm lẫn khó tìm lỗi A l C h ú thích Trước lập trình cần phải ghi thích cho đoạn mã chương trình Việc thích giúp hiểu cách rõ ràng tưcmg minh công việc cần làm Quan trọng hơn, chủng giúp chủng ta dễ dàng hiểu quay lại kiểm tra tiếp tục làm việc với chương trinh Đặc biệt quan trọng giúp chia sẻ phát triển chương trình theo nhóm thời gian dài Cụ thể là, mồi hàm, đặc biệt hàm quan trọng, cần xác định ghi thích vẩn đề sau: • Mục đích cùa hàm gỉ? • Biến đầu vào hàm (tham biến) gì? • Các điều kiện ràng buộc biến đầu vào • có? Kết q trà hàm gì? • Các ràng buộc cùa kết trả có • Việc thích giúp hiểu rõ ràng yêu cầu hàm 68 _U P TRỈNH CO BẢN v i Ví dụ: // the function calculate the sum of two digits // input: two integer numbers smaller than 10 // output: an integer number getSum (int X, int y) { int sum = X + y; return sum; } A.2 Chia nhỏ chư ơng trình Trong lập trình, người ta thưòng sừ dụng chiến lược chia để trị, tức chương trình chia nhỏ thành chương trình Việc chia nhỏ thành chương trình làm tăng tính mơđun chương trình mang lại cho lập trình viên khả tái sử dụng mã Người ta khun ràng độ dài chương trình khơng nên vượt trang hình để lập trình viên kiểm sốt tốt hoạt động chương trình A.3 Biến tồn cục Xu hướng chung nên hạn chế sử dụng biển toàn cục Khi nhiều hàm sử dụng biển toàn cục, việc thay đổi giá trị biến toàn cục hàm dẫn đến thay đổi khơng mong muốn hàm khác Biến toàn cục làm cho hàm chương trình khơng độc lập với A.4 Cách đăt tên biến Tên biến nên dễ đọc, gợi nhớ đến công dụng biến hay kiểu dừ liệu mà biến lưu trừ Đổi với biển gồm nhiều từ, từ nẽn viết liền chừ lừ phía sau nên viết hoa Ví dụ numberStudents, savingAccount PHỤ LUC A PHONG CÁCH LẬP TRỈNH _ Các biến hàng nên viết hoa Nếu biến gồm nhiều từ, từ nên chia cách dấu gạch chân Ví dụ PI, NUMBER_ITERATION A.5 Cách đặt tên hàm Tên hàm nên dễ đọc, gợi nhớ đến mục đích hàm Tên hàm nên bẳt đầu bàng động từ Dối với hàm gồm nhiều từ, từ nên viết liền chừ từ phía sau nên viết hoa Ví dụ getSunij getMin, c a l c u l a t e S c o r e s A.6 Biểu thức Các biểu thức cần viết đơn giản, ngắn gọn dễ hiểu Các biểu thức dài tách nhỏ sử dụng biến trung gian Nên sử dụng cặp dấu ngoặc để tránh nhập nhằng nhầm lẫn thứ tự thực phép toán biểu thức Ví dụ: sum = a * b + a * b * c - d/e Có thể viết thành ab = a * bj sum = ab * (c + 1) - ( d / e ) ; I.ưu ý; Biểu thức điều kiện nên tuân thủ theo nguyên tắc A.7 V òng lặp Khơng nên sử dụng nhiều lệnh nhảy break, hay c o n t in u e để khỏi vòng lặp Với mồi vòng lặp, nên xác định rõ ràng điều kiện để vòng lặp kết thúc A.8 Khối chư ng trình Các đoạn chương trình cần trình bày theo thành khối (sử dụng dấu cách) Việc trình bày theo khối giúp dễ dàng hiểu cấu trúc thứ tự thực lệnh Ví dụ: lA p t r ì n h c a BẢN VỚI C++ w h ile (!d o n e ) { doSomething ; done = check ( ) ; } A.9 Ló p Mồi lóp (class) nên tách thành hai tệp riêng biệt Tệp header (.h) chứa khai báo lóp, tệp nguồn (.cpp) chứa định nghĩa phương thức lớp Việc tách dễ dàng cho việc theo dõi, tìm hiểu phát triển chương trình Ví dụ: t i m e h , tim e c p p Phụ lục B DỊCH CHƯƠNG TRÌNH C++ BẰNG GNƯ C++ B l Dịch liên kết Quá trình tạo tệp thực thi từ tệp mã nguồn có hai bước Bước 1: biên dịch tệp mã nguồn thành tệp mã object Các tệp có mở rộng cpp cc dịch thành tệp có mở rộng Bước 2: liên kết tệp mã object thành tệp thực thi Các tệp có mở rộng liên kết với thành tập thực thi (đi exe mơi trường DOS/Windows) Nếu chương trình chi gồm tệp mâ nguồn, ví dụ count.cpp, ta chi cần chạy lệnh g+-h -o count.exe count.cpp Kết tệp ửiực ứii có tên count.exe Hoặc ta chi dùng lệnh g++ count.cpp Kết tệp thực thi có tên mặc định (a.out mơi irường Unix/Linux) Nếu chưorng trình bao gồm nhiều tệp mà nguồn, chẳng hạn time test.cpp (chứa hàm main), time.cpp, time.h, ta dịch tệp có cpp cc lệnh sau g++ -c ĩile.cpp Sau liên kết lại bàng lệnh g++ time_test.o time.o -o time_test.exe LẬP TRiNH C BẢN VỚI c ++ 172 B.2 Tiện ích m ake G N U Ta có biên dịch cách lần lại gõ lệnh hướng dẫn Tuy nhiên, với chương trình lớn bao gồm nhiều tệp mã nguồn, dùng đến nhiều thư viện, việc gõ lệnh bàng tay mồi cần dịch chưong trình khơng phải cách làm hiệu Tiện ích make cơng cụ GNU cho phép tự động hóa quy trình dịch liên kết chương trình, make hệ thống thiết kế đề xây dựng chương trình từ mã nguồn lớn Từ đặc tả lập trình viên mã nguồn, tiện ích make gọi trình biên dịch liên kết cách hiệu để xây dựng chu(Tng trình thực thi Mục hướng dẫn tối giản cho việc sử dụng tiện ích make Để dùng tiện ích ma ke cho chương trình, lập trình viên phải tạo tệp có tên M ak e file nằm thư mục với tệp mã nguồn Tệp chứa lệnh hướng dẫn make làm làm để xây dựng chương trình M a k e íile gồm đặc tả, quản lý việc cập nhật tệp Mồi đặc tả tệp M a k e íile gồm phần: đích {targeí), quan hệ phụ thuộc (dependency), chi thị (instruction) Công thức sau: T a r g e t P i l e : DependencyPilei D ependencyFile DependencyPilen đó, T a r g e t P i l e tệp cần cập nhật mồi D ependencyP ilei tệp mà T a r g e t F i l e phụ thuộc vào Dòng thử hai đặc tả lệnh dịch T a r g e t P i l e , lệnh phải có kí tự TAB đứng trước kết thúc bàng kí tự xuống dòng Ví dụ, đặc tả M a k e file sau: time_test.exe: time.o time_test.o g++ time.o time_test.o -o time_test.exe dòng đầu chi ràng time_test.exe phụ thuộc hai tệp time.o time test.o, dòng thứ hai lệnh dùng g++ dịch tệp time_test.exe PHU LUC B DỊCH CHƯONG TRỈNH C-*-f BÀNG GNU c+* _m Tiếp Ihco, limc.o khơng có sẵn biên dịch lần đầu, ta phái viết đặc tả cho tệp này; time.o: time.cc time.h g++ -c time.cc Tương tự đặc tả cho time_test.o time_test.o: time.cc time.h g++ -c time_test.cc Do đó, Maketlle sỗ có dạng: time_test: time.o time_test.o g++ time.o time_test.o -o time_test time.o: time.cc time.h g++ -c time.cc time_test,o: time.cc time.h g++ -c time_test cc Và ta gõ từ dấu nhấc dòng lệnh make chương trình make sỗ đọc Makef i l e thực công việc sau: thấy time_test.exe phụ thuộc vào time.o, và; a) Kiểm tra time.o, thấy phụ thuộc time.cc time.h; b)Xác định xem time.o lồi thời chưa (cũ cùa tệp time.cc time.h) c) lỗi thời thi chạy lệnh g++ -c tỉme,cc để tạo time.o thấy time_test.exe phụ thuộc vào time_test.o, a) Kiểm tra time_test.o, thấy phụ thuộc time_test.cc time.h; lA p t r ỉ n h C b ả n V ới c ** b) Xác định xcm time tcst.o lỗi thời chưa (chưa dược dịch lừ bán cùa tệp time_test.cc tiine.h) c )n ế u lồi thời chạy lệnh g++ -c t i m e _ t e s t c c để tạo time_test.o thấy ràng tất tệp mà time_test.exe phụ thuộc cập nhật, nên chạy lệnh g++ t i m e o t i m e _ t e s t để tạo chương trình time_test.exe tim e _ te s t.o -o Phụ ỉục c x LÝ XÂU BẰNG THƯ VIỆN CSTRING c l M ột số hàm xử lý xâu thông dụng char *strcpy( char *á, const char *s )j Sao chép xâu s vào mảng char d Trả địa chi xâu d char *strncpy( char *ứ, const char *s, size_t n ); Chép tối đa n kí tự từ xâu s vào mảng char d Trả địa mảng d char *strcat( char *d, const char *s )j Chép xâu s vào cuối xâu d Kí tự xâu s đè lên kí tự nuli cuối xâu d Trả địa chì cùa xâu d char *strncat( char *d, const char *s, size_t n ); Chép tối đa n kí tự xâu s vào cuối xâu d Kí tự xâu s sỗ đè lên kí tự null cuối xâu d Trả địa cùa xâu d int strcmp(const char *sl, const char *s2); So sánh xâu sl xâu s2 Trả giá trị sl bàng s2, nhỏ (thường -1) sl nhỏ s2, lớn (thường 1) sl lớn s2 theo thứ tự từ điển int strncmp(const char *sl, const char *s2j size_t n); Tương tự hàm strcmpO chi so sánh n kí tự xâu sl với n kí tư xâu s2 LẬPTRlNHCƠ BẢNVỚIC + + 176 char *strtok( char *sl, const char *s2 ); Một chuỗi lời gọi hàm strtok có tác dụng tác xâu sl ihành mành ("token"), chẳng hạn từ dòng văn Xâu ki tự tách dựa theo kí tự chứa xâu s2 Ví dụ ta cần tach xâu "Hello, how are you?" thành từ, v ới ' kí tự ngăn cách từ, kết token "Hello", "how", "are", "ycu" Tuy nhiên, lần gọi hàm strtok tách token trà địa cùa token Khi khơng tìm token nào, hàm trả giá trị NULL Lần gọi trình phân tách xâu sl sè cần tham số s l, lần gọi sau tiếp tục tách sl tham số NƯLL size_t strlen( const char *s )j Trà độ dài cùa xâu s - số kí tự đứng trước kí tự null C.2 K huyến cáo việc sử dụng thư viện cstring Một số hàm thư viện cstring sử dụng không cẩn thận dẫn đến việc truy nhập ngồi khơng gian khai báo cùa mảng tình trạng xâu kí tự khơng kết thúc cách kí tự null Đối với hàm này, lập trình viên phài sử dụng cách cẩn trọng để đàm bảo không gây lồi liệu Mục đưa số khuyến cáo việc sử dụng hàm Các hàm s t r c p y s tr n c p y chép toàn xâu kí tự tham số thứ hai vào mảng char đích mà khơng quan tâm khơng gian khai báo mảng đích có đủ chỗ chứa hay khơng Lập trình viên phải tự đảm bảo ràng màng đích có đù chỗ cho xâu nguồn kí tự null kết thúc xâu Một lời khuyên nên dùng s tr n c p y thay cho s tr c p y , s tr n c p y cho phép kiểm sốt số lượng kí tự chép vào màng đích Tương tự, hàm s t r c a t s t r n c a t chép xâu kí tự tham số thứ hai vào cuối xâu kí tự tham số thứ mà không quan tâm không gian khai báo mảng đích có đủ chỗ chứa hai xâu hay không Lập PHỤ LỤC c -XỬ LÝ XAU BẰNG THƯ VIỆN CSTRING 7 trình viên phải tự đảm bảo mảng đích có đủ chỗ cho hai xâu kí tự null kết thúc xâu thứ hai s t r n c a t khun dùng cho phép kiểm sốt số lượng kí tự sỗ chép vào mảng đích Khi sử dụng s trn c p y , số kí tự cần chép (tham số thứ ba) không lớn độ dài xâu nguồn (tham số thứ hai), kí tự null khơng chép vào mảng đích, s tr n c p y khơng tự chèn thêm kí tự null vào cuối đoạn vừa chép Trong trường hợp này, lập trình viên khơng tự gắn kí tự nuli đánh dấu kết thúc xâu kết quả, xâu trở thành xâu có độ dài khơng xác định với nguy dẫn đến lỗi nghiêm trọng chạy chương trình Tinh trạng tương tự xảy hàm s t r n c a t TÀI LIỆU THAM KHẢO [1] Bjame Sưoustrup, The C++ Programming Language, 3'^*^ edition, Addison-VVesley, 1997 [2] Deitel & Deitel, C++ How to Program, 5th edition, Prentice Hall, 2005 [3] ISO/IEC JTC1/SC22AVG21 Stable release, ISO/IEC 14882:2003 (2003) [4] Juan Soulie, C ++ Language Tutorial, http://www.cplusplus.com NHÍỊ XUấT bAn Đ>ỌI h ọ c q u ố c om Hồ N ội 16 Hàng Chuối - Hai Bà Trưng - Hà Nội Điên thoai: Biên tảiP-Ché bản: (04) 39714896: Hành chính:(04) 3971489)9 : Tổng Biên tẳp: (04) 39714897: Fax: (04)39714899 C hịu • t r c h n h iệ• m x u ấ t bản: Giám đốc: P’HỪNG QUỐC BẤO Tổng biên tập: P^HẠM THỊ TRÂM Biên tập: L.AN HƯƠNG C hế bản: T’HANH NHÀN Trinh bày bia: Q'UANG HƯNG L Ậ P T R Ì N H C B Ả N v ỏ lỉl C + + I - _ Mãsố; IK-17ĐH2011 In 320 cuốn, khổ 17 X 24 cm tạii Còng ty CP in sách Việt Nam Số xuất bản: 790 - 201 l/CXB/3 - lOÓ^HQGHN, ngày 26/7/2011 Quyết định xuất số: 19 KH - TN/QĐ - NXBĐHQGHN In xong nộp lưu chiểu quý IV năm 2011 ... Trình bày ví dụ lỗi logic mà bạn gặp lập trình I.àm quen với mơi trường lập trình Dev -C++ Liệt kê chức mơi trường Dev -C++ Tìm hiểu so sánh mơi trường lập trình khác cho c C++ 10 Viết chương trình. .. chương trình 1.2 Lập trình gì? 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 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 lAp trình c với c... giúp cho cấu trúc chương trình dễ thấy LẨP TRÌNH Cơ BẢN VỚI chương trình dễ hiểu người lập trình Đây diốm quan trọng quy ước phong cách lập trình Phụ lục A hướng dẫn

Ngày đăng: 29/12/2019, 13:09

Từ khóa liên quan

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

Tài liệu liên quan