intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Tự học C++ trong 21 ngày

Chia sẻ: Mai Anh | Ngày: | Loại File: DOC | Số trang:133

269
lượt xem
80
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Giáo trình tự học C++ trong 21 ngày Người học tự tạo các ứng dụng đơn giản. Sách cần thiết cho học sinh, sinh viên làm đồ án môn học liên quan đến C#. Xem tới đâu, thực hành tới đó

Chủ đề:
Lưu

Nội dung Text: Tự học C++ trong 21 ngày

  1. Tù häc C++ trong 21 ngµy. Teache yourself C++. Danh mục: Các phần của một chương trình C++. Giới thiệu hàm Cout. Trình bày chú thích. Định nghĩa hàm. Hằng số và biến số. Các kiểu biến số. Typedef. Ký tự dặc biệt. Hằng số. Hằng số liệt kê. Biểu thức và câu lệnh. Câu lệnh . Biểu thức. Các toán tử. Toán tử tăng và giảm. Câu lệnh if. Toán tử lô gíc. Toán tử phụ thuộc. Các loại hàm. Khai báo hàm Nguyên mẫu hàm. Biến khu vực (biến địa phương). Biến toàn cục. Giá trị trả về. Tham số mặc định. Các hàm xếp chồng. Các hàm InLine. Trang 1
  2. Tù häc C++ trong 21 ngµy. Đệ qui. Các lớp cơ bản Tạo ra một kiểu mới. Khai báo lớp( class ). Định nghĩa đối tượng (objects). Private và public. Class. Các hàm trong lớp. Cách đặt khai báo lớp và hàm. Các loại vòng lặp. Lệnh goto. While. Continue và break. While(1). Do ... While. FOR. Vòng lặp lồng. Switch. Con trỏ. Con trỏ, địa chỉ, biến. Khai báo con trỏ. Reference Cú pháp: Trang 2
  3. Tù häc C++ trong 21 ngµy. I Các phần của chương trình C++. Các chương trình C++ bao gồm : các đối tượng (obj), các bi ến (var) và các thành phần khác. I.1 Một chương trình đơn giản. Ví dụ lấy chương trình HELLO.CPP để giải thích các phần của một chương trình C++. 1: #include 2: 3: int main() 4: { 5: cout
  4. Tù häc C++ trong 21 ngµy. đúng, dấu ngoặc < > sẽ làm cho bộ tiền xử lý tìm kiếm file " iostream.h" trong th ư m ục mà chứa tất cả các file H cho bộ biên dịch. - ( file "iostream.h" [ Input-Oput-Stream] được dùng bởi hàm "cout"_ giúp cho vi ệc vi ết ra màn hình. ) - Dòng 3 bắt đầu chương trình thông thường với hàm có tên " main() ". M ọi ch ương ttrình C++ đều có 1 hàm main(). Nói chung," hàm là 1 khối mã lệnh mà thực hiện 1 hoặc nhiều công việc." Các hàm thông thường được gọi bởi các hàm khác, nhưng main() là đ ặc biệt. Khi chương trình bắt đầu, main() được tự động gọi lên. - ( main(), giống như tất các hàm, phải định rõ loại giá trị nào nó sẽ trả về. Kiểu giá trị trả về đối với main() trong HELLO.CPP là "void" _nghĩa là hàm này sẽ không trả về bất cứ giá trị nào. ) - Tất cả các hàm bắt đầu với một ngoặc mở ({) và kết thúc một dấu ngoặc đóng (}). Dấu ngoặc của main() là trên dòng 4 và dòng 7. - Phần căn bản của chương trình là dòng số 5. Hàm "cout" dùng để in m ột bản tin ra màn hình. - Cách dùng cout : từ cout đặt sau toán tử (
  5. Tù häc C++ trong 21 ngµy. 11: cout
  6. Tù häc C++ trong 21 ngµy. I.3 Chú thích (Comments). Dùng để giải thích câu lệnh cho dễ hiểu và giới thiệu được các thông tin về tác gi ả và thời gian sửa đổi mới nhất cho dễ nâng cấp. Trong C++ có hai cách báo hiệu lời chú thích là : ( // ) và ( /* ). Dấu ( // ) này bảo cho chương trình biên dịch bỏ qua tất cả nh ững gì sau d ấu chú thích này, tới tận hết dòng. Dấu ( /* ) này bảo cho chương trình biên d ịch b ỏ qua t ất c ả nh ững gì sau d ấu chú thích này, tới khi tìm thấy một ( /* ) khác. Cách sử dụng Comments: Một qui luật chung, nên có một chú thích ở đầu của toàn chương trình, nói lên ch ương ttrình làm cái gì. Mỗi hàm cũng nên có chú thích giải thích hàm làm cái gì và nó trả về giá trị nào. Nếu trong chương trình có câu lệnh nào khó hiểu thì cũng nên có chú thích làm sáng tỏ vấn đề. Listing 2.3. HELP.CPP demonstrates comments. 1: #include 2: 3: int main() 4: { 5: /* this is a comment 6: and it extends until the closing 7: star-slash comment mark */ 8: cout
  7. Tù häc C++ trong 21 ngµy. - Có hàm hoặc chương trình gì. - Mô tả chung về công việc của chương trình. - Tên tác giả. - Lịch sử của quá trình sửa đổi. - Trình biên dịch và kết nối nào và các công c ụ khác đ ược dùng đ ể th ực hi ện chương trình. - Thêm các chú ý nếu cần. Ví dụ : /************************************************************ Program: Hello World File: Hello.cpp Function: Main (complete program listing in this file) Description: Prints the words "Hello world" to the screen Author: Jesse Liberty (jl) Environment: Turbo C++ version 4, 486/66 32mb RAM, Windows 3.1 DOS 6.0. EasyWin module. Notes: This is an introductory, sample program. Revisions: 1.00 10/1/94 (jl) First release 1.01 10/2/94 (jl) Capitalized "World" ************************************************************/ I.4 Hàm ( Functions ). Hàm main() là đặc biệt. Các hàm thông thường được gọi trong chương trình c ủa b ạn. Một chương trình được xử lý từng dòng theo thứ tự mà nó có trong mã ngu ồn, t ận khi đ ến một hàm. Sau đó chương trình rẽ nhánh để xử lý hàm. Khi hàm k ết thúc, nó tr ả l ại đi ều khiển cho dòng mã ngay sau nó. Khi một chương trình cần thực hiện một dịch vụ, nó có thể gọi một hàm đ ể th ực hi ện dịch vụ đó. Ví dụ sau minh hoạ điều đó: Listing 2.4. Demonstrating a call to a function. 1: #include 2: 3: // function Demonstration Function 4: // prints out a useful message 5: void DemonstrationFunction() Trang 7
  8. Tù häc C++ trong 21 ngµy. 6: { 7: cout
  9. Tù häc C++ trong 21 ngµy. cẩn thận đối với việc phân biệt thược về chuyên môn. Trong sách này sẽ sử dụng các số hạng đó có thể hoán đổi cho nhau.  Thân hàm bao gồm : một dấu ngoặc mở, không có ho ặc có các câu l ệnh và d ấu ngo ặc đóng. Các lệnh cấu trúc nên công vi ệc của hàm. M ột hàm có th ể tr ả v ề m ột giá tr ị, s ử dụng một lệnh trả về. Lệnh này cũng làm cho hàm kết thúc. Nếu không đ ưa vào m ột lệnh trả về bên trong hàm, nó sẽ tự động trả về dạng void ở cuối hàm. Giá tr ị đ ược tr ả về phải là dạng đã được khai báo ở đầu hàm. Listing 2.5. FUNC.CPP demonstrates a simple function. 1: #include 2: int Add (int x, int y) 3: { 4: 5: cout
  10. Tù häc C++ trong 21 ngµy. In Add(), received 3 and 5 Back in main(). c was set to 8 Exiting... II Hằng số và biến số. II.1 Biến số là gì: Trong C++, biến số là nơi để lưu giữ thông tin. M ột bi ến s ố là m ột v ị trí trong b ộ nh ớ của máy tính mà có thể lưu giữ một giá trị và từ đó bạn có th ể truy nhập vào giá tr ị đó sau này. Bộ nhớ của máy tính có thể được xem như là m ột loạt các "cubbyholes". M ỗi "cubbyholes" hay vị trí trong bộ nhớ được đánh số lần lượt. Những số này đ ược bi ết là đ ịa chỉ bộ nhớ. Một biến lưu giữ trong một hoặc nhiều "cubbyholes" để lưu một giá trị. Tên biến ( ví dụ : myVariable) là một nhãn trên 1 hay nhiều "cubbyholes", vì vậy có thể tìm nó dễ dàng không cần sự hiểu biết địa chỉ bộ nhớ thông thường của nó. Cách thiết lập biến: Khi định nghĩa một biến trong C++, bạn phải bảo cho trình biên d ịch bi ết bi ến là ki ểu gì : số nguyên, ký tự,.... Đây là thông tin báo cho trình biên dịch bi ết kích th ước lớn bao nhiêu để thiết lập một khoảng bộ nhớ và kiểu giá trị bạn muốn lưu trong biến của bạn. Mỗi "cubbyholes" là lớn 1 byte. Nếu kiểu biến tạo ra là kích thước 2 byte, nó cần 2 byte của bộ nhớ, hay 2 "cubbyholes". Kiểu biến sẽ cho trình biên d ịch bi ết c ần bao nhiêu b ộ nh ớ để dành cho biến. II.1.1 Kích thước kiểu số nguyên (Intergers) - Một biến char (dùng để lưu ký tự) thường là một byte long. Một short interger là 2 byte trên hầu hết các máy tính, một long interger thường là 4 byte, và một interger (không phải là long hay short) có thể là 2 hay 4 byte. - Một character là một chữ đơn, số, hay biểu tượng chiếm 1 byte của bộ nhớ. Listing 3.1. Determining the size of variable types on your computer. 1: #include 2: 3: int main() Trang 10
  11. Tù häc C++ trong 21 ngµy. 4: { 5: cout
  12. Tù häc C++ trong 21 ngµy. Int (32 bit) 4 bytes -2,147,483,648 to 2,147,483,647 Unsigned int (16 bit) 2 bytes 0 to 65,535 Unsigned int (32 bit) 2 bytes 0 to 4,294,967,295 Char 1 byte 256 character values Float 4 bytes 1.2e-38 to 3.4e38 Double 8 bytes 2.2e-308 to 1.8e308 Cách tạo một biến: Đầu tiên là kiểu biến, sau đó là một hoặc nhi ều dấu cách, sau đó là tên bi ến và dấu chấm phẩy. Example 1 main() { unsigned short x; unsigned short y; ULONG z; z = x * y; } Example 2 main () { unsigned short Width; unsigned short Length; unsigned short Area; Area = Width * Length; } Có thể tạo nhiều biến cùng một lúc như sau: unsigned int myAge, myWeight; // two unsigned int variables long area, width, length; // three longs II.1.4 Từ khoá. Bao gồm : if, while , for, main. Không được sử dụng từ khóa làm tên biến. II.1.5 Gán giá trị cho biến Gán giá trị cho biến bằng cách sử dụng toán tử (=). Ví dụ: unsigned short Width; Trang 12
  13. Tù häc C++ trong 21 ngµy. Width = 5; Bạn có thể gộp ba bước thành một bước. unsigned short Width = 5; Tương tự, có thể khởi tạo cho nhiều biến cùng một lúc như sau: long width = 5, length = 7; Ví dụ này khởi tạo biến số nguyên long là width =5 và biến số nguyên long là length =7. Ta có thể kết hợp cả khai báo và khởi tạo như sau: int myAge = 39, yourAge, hisAge = 40; Listing 3.2. A demonstration of the use of variables. 1: // Demonstration of variables 2: #include 3: 4: int main() 5: { 6: unsigned short int Width = 5, Length; 7: Length = 10; 8: 9: // create an unsigned short and initialize with result 10: // of multiplying Width by Length 11: unsigned short int Area = Width * Length; 12: 13: cout
  14. Tù häc C++ trong 21 ngµy. Ta định nghĩa bằng cách: sau từ khoá typedef là kiểu và sau đó là tên mới. Ví dụ: Typedef unsigned short int USHORT Tên mới USHORT sẽ dùng ở bất cứ đâu thay thế cho việc viết : unsigned short int. Listing 3.3. A demonstration of typedef. 1: // ***************** 2: // Demonstrates typedef keyword 3: #include 4: 5: typedef unsigned short int USHORT; //typedef defined 6: 7: void main() 8: { 9: USHORT Width = 5; 10: USHORT Length; 11: Length = 10; 12: USHORT Area = Width * Length; 13: cout
  15. Tù häc C++ trong 21 ngµy. 8: cout
  16. Tù häc C++ trong 21 ngµy. 3: { 4: for (int i = 32; i
  17. Tù häc C++ trong 21 ngµy. Nếu chương trình có một biến số nguyên đặt tên là : students và một biến khác tên là : classes, có thể tính toán có bao nhiêu sinh viên, nếu đã biết có 15sinh viên/1 lớp : Students = classes * 15 ; Trong ví dụ này, 15 là hằng số kiểu chữ số. Đo ạn mã tr ở lên d ễ đ ọc và d ễ s ửa. N ếu thay thế bằng một hằng số kiểu chữ cho giá trị này thì sẽ là: Students = classes * studentsPerClass ; Nếu sau đó muốn thay đổi số sinh viên/lớp, có thể làm điều đó ở n ơi định nghĩa hằng số studentsPerClass không cần thực hiện sự thay đổi ở bất cứ nơi nào bạn dùng giá trị này. Có hai cách khai báo một hằng số kiểu biểu tượng trong C++. Cách truyền th ống và ki ểu hiện nay là dùng bộ tiền xử lý, #define. Hằng số định nghĩa với #define để đ ịnh nghĩa m ột hằng số theo cách truyền thống, có thể thực hiện như sau: #define studentsPerClass 15 Chú ý rằng studentsPerClass là không phải là kiểu cụ thể ( int, char,....). #define thực hiện một sự thay thế đoạn văn bản đơn giản. Mỗi lần tiền xử lý nhìn thấy từ studentsPerClass, nó sẽ thay bằng 15. Vì bộ tiền xử lý chạy trước trình biên dịch, do đó trình biên dịch không bao gi ờ nhìn thấy hằng số ; nó chỉ thấy số 15. Các biến định nghĩa const, mặc dù #define làm việc, có một cách mới tốt hơn nhiều cách định nghĩa hằng trong C++ : const unsigned short int studentsPerClass = 15; Ví dụ này cũng khai báo một hằng số biểu tượng đặt tên studentsPerClass, nhưng lần này studentsPerClass là kiểu unsigned short int. Phương pháp này có một số ưu điểm làm cho việc sửa dễ dàng hơn và ngăn ngừa sự rối loạn. Sự khác nhau lớn nhất là hằng này có m ột kiểu, và trình biên dịch có thể bắt buộc dùng đúng theo kiểu của nó. Chú ý : không nên dùng kiểu int chung mà chỉ rõ kiểu short hay long. II.2.3 Hằng số liệt kê. Cho phép tạo ra nhiều kiểu mới và sau đó để định nghĩa các bi ến của những kiểu này,toàn bộ giá trị được hạn chế trong một tập các giá ttrị có th ể. Ví d ụ bạn có th ể khai báo COLOR là một bảng kiệt kê, và có thể định nghĩa có 5 giá tr ị đ ối v ới COLOR : RED, BLUE, GREEN, WHITE và BLACK. Cú pháp đối với hằng số liệt kê được viết với từ khoá enum, sau đó là tên kiểu, một dấu ngoặc mở, mỗi giá trị được phân cách bởi một dấu phẩy, cu ối cùng là d ấu ngo ặc đóng và dấu chấm phẩy. Ví dụ: Enum COLOR { RED, BLUE, GREEN, WHITE, BLACK } ; Lệnh này thực hiện 2 công việc: - Nó đặt tên COLOR cho liệt kê, đó là một kiểu mới. Trang 17
  18. Tù häc C++ trong 21 ngµy. - Nó gán cho RED một hằng số biểu tượng 0, BLUE một hằng số biểu tượng 1, GREEN là 3, và tiếp tục. Mọi hằng số liệt kê có giá trị nguyên. Nếu không chỉ rõ cách xác định khác thì hằng số đ ầu tiên sẽ có giá trị 0, và tiếp tục tăng lên. Bất cứ 1 trong các hằng số này có thể đ ược kh ởi t ạo với một giá trị cụ thể. Vì vậy nếu viết: enum Color { RED=100, BLUE, GREEN=500, WHITE, BLACK=700 }; thì RED có giá trị 100; BLUE có giá trị 101 ; GREEN có giá tr ị 500; WHITE có giá tr ị 501; và BLACK có giá trị 700. Có thể định nghĩa biến kiểu COLOR, nhưng chúng có thể được gán 1 trong các giá trị liệt kê ( trong trường hợp này, RED, BLUE, GREEN, WHITE, ho ặc BLACK, ho ặc 100, 101, 500, 501, 700 ). Có thể gán bất cứ giá trị màu nào cho bi ến COLOR. Trong th ực t ế, b ạn có th ể gán bất cứ số nguyên nào, thậm chí nếu nó không là màu theo qui định, m ặc dù m ột trình biên dịch tốt phát ra cảnh báo nếu bạn thực hiện. Do đó các bi ến c ủa ki ểu li ệt kê th ường là giá trị kiểu " unsigned int ", và những hằng số li ệt kê đó t ương đ ương v ới các bi ến s ố nguyên. Ví dụ : Listing 3.7. A demonstration of enumerated constants. 1: #include 2: int main() 3: { 4: enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Â_Saturday }; 5: 6: Days DayOff; 7: int x; 8: 9: cout > x; 11: DayOff = Days(x); 12: 13: if (DayOff == Sunday || DayOff == Saturday) 14: cout
  19. Tù häc C++ trong 21 ngµy. Output: What day would you like off (0-6)? 1 Okay, I'll put in the vacation day. What day would you like off (0-6)? 0 You're already off on weekends! Trên dòng 4, hằng số kiểu liệt kê DAYS được định nghĩa, với 7 giá trị bắt đầu từ 0. Người sử dụng được nhắc nhở đối với ngày trong dòng 9. Giá tr ị đ ược ch ọn, m ột s ố gi ữa 0 và 6, được so sánh trên dòng 13 với các giá trị liệt kê chủ nhật và thứ bẩy, và hành động đi theo. Ta không thể đánh từ " Sunday " khi được nhắc tới đối v ới 1 ngày; ch ương trình s ẽ không biết dịch như thế nào ký tự "Sunday" ra một giá trị đã liệt kê. III Biểu thức và câu lệnh Một chương trình là một tập các lệnh xử lý nối tiếp nhau. III.1 Câu lệnh: Trong C++ một câu lệnh điều khiển chuỗi xử lý, ước lượng m ột biểu th ức, ho ặc không có gì ( câu lệnh rỗng ). Tất cả các câu lệnh k ết thúc v ới m ột d ấu ch ấm ph ẩy, th ậm chí câu lệnh "null". Một trong các câu lệnh thông dụng là lệnh gán : X=a+b; Không giống như trong đại số, câu lệnh này không có nghĩa là x b ằng a+b. Mà đ ọc là " Gán giá trị của phép cộng a và b cho x" hoặc " Gán cho x, a+b ". Toán tử gán sẽ gán bất cứ cái gì bên phải dấu bằng cho bất cứ cái gì bên trái dấu bằng. Chú ý : Câu lệnh null là một câu lệnh không làm cái gì. III.1.1 Khoảng trắng Khoảng trắng ( tabs, spaces, và các dòng m ới) thường được b ỏ qua trong câu l ệnh. Câu lệnh gán ở trên sẽ được viết như sau: X=a+b; Hoặc như là : X =a + b ; Khoảng trắng có thể được dùng để cho chương trình dễ đọc,dễ sửa hơn, ho ặc nó có th ể được dùng để tạo ra mã kinh khủng và không thể đọc ra đ ược. Trong tr ường h ợp này,nh ư tất cả mọi thứ, C++ cung cấp khả năng. Các ký tự khoảng trắng ( tab, space, newline )không thể nhìn thấy được. N ếu các ký t ự này được in ra, bạn chỉ nhìn thấy khoảng trắng trên giấy. Trang 19
  20. Tù häc C++ trong 21 ngµy. III.1.2 Các lệnh khối và lệnh phức. Bất cứ nơi nào bạn có thể đưa vào một câu lệnh đơn, bạn có th ể đ ưa vào m ột câu lệnh phức, cũng có thể được gọi là một khối. Một khối bắt đ ầu v ới 1 dấu ngo ặc m ở ({) và kết thúc với 1 dấu ngoặc đóng (}). Mặc dù vậy m ọi câu lệnh trong kh ối ph ải k ết thúc v ới một dấu chấm phẩy, khối tự nó không kết thúc với một dấu chấm phẩy. Ví dụ : { temp = a; a = b; b = temp; } Khối mã này hoạt động như một lệnh và sự trao đổi các giá trị trong các biến a và b III.2 Biểu thức Một biểu thức trả về một giá trị. Do đó, 3+2 ; trả về giá tr ị 5 và vì vậy là m ột bi ểu thức. Tất cả các biểu thức là các lệnh. 3.2 // returns the value 3.2 PI // float const that returns the value 3.14 SecondsPerMinute // int const that returns 60 Giả sử rằng PI là một hằng số bằng 3.14 và SecondsPerMinute là một hằng số bằng 60, tất cả 3 câu lệnh này là các biểu thức. Biểu thức phức tạp x = a + b; không chỉ cộng a và b và gán kết quả cho x, nhưng tr ả v ề giá tr ị c ủa vi ệc gán (giá tr ị c ủa x). Vì vậy, lệnh này cũng là một biểu thức. Vì là một biểu thức, nó có th ể bên phải c ủa toán t ử gán: y = x = a + b; Dòng này được xác định trong lệnh sau : Cộng a với b. Gán kết quả của biểu thức a+b cho x. Gán kết quả của biểu thức x = a+b cho y Listing 4.1. Evaluating complex expressions. 1: #include 2: int main() 3: { 4: int a=0, b=0, x=0, y=35; 5: cout
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2