Tải bản đầy đủ (.pdf) (200 trang)

Tài liệu lập trình C++ tiếng Việt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.78 MB, 200 trang )

Copyright © vietjack.com

Trang chia sẻ các bài học online miễn phí Trang 1

Mục lục
Học C++ cơ bản và nâng cao 9
Đối với độc giả 9
Điều kiện tiền đề 9
Tổng quan về C++ 9
Lập trình hướng đối tượng 10
Thư việc chuẩn C++ (C++ Standard Library) 10
ANSI Standard 10
Học tập C++ như thế nào? 10
Miền sử dụng của C++ 11
Cài đặt môi trường C++ 11
Cài đặt môi trường nội bộ cho C++ 11
Text Editor 11
C++ Compiler: 11
Cài đặt GNU C/C++ Compiler 12
Cài đặt trên UNIX/Linux 12
Cài đặt trên Mac OS X 12
Cài đặt trên Windows 12
Cú pháp C++ cơ bản 13
Cấu trúc chương trình C++ 13
Biên dịch và thực thi chương trình C++ 14
Dấu chấm phảy và khối (block) trong C++ 15
Định danh (Identifier) trong C++ 16
Từ khóa trong C++ 16
Trigraph trong C++ 17
Khoảng trắng (Whitespace) trong C++ 18
Comment trong C++ 19


Kiểu dữ liệu trong C++ 20
Copyright © vietjack.com

Trang chia sẻ các bài học online miễn phí Trang 2

Kiểu dữ liệu nguyên thủy trong C++ 20
Khai báo typedef trong C++ 23
Kiểu liệt kê enum trong C++ 24
Kiểu biến trong C++ 24
Định nghĩa biến trong C++ 25
Khai báo biến trong C++ 26
Ví dụ 27
Lvalue và Rvalue trong C++ 28
Phạm vi biến trong C++ 29
Biến cục bộ trong C++ 29
Biến toàn cục trong C++ 30
Khởi tạo biến cục bộ và biến toàn cục trong C++ 31
Hằng (Constant/Literal) trong C++ 32
Hằng số nguyên trong C++ 32
Hằng số thực trong C++ 33
Boolean literal trong C++ 33
Hằng ký tự trong C++ 34
Hằng chuỗi trong C++ 35
Định nghĩa hằng trong C++ 36
Sử dụng bộ tiền xử lý #define trong C++ 36
Sử dụng từ khóa const trong C++ 37
Modifier trong C++ 37
Qualifier trong C++ 39
Lớp lưu trữ (Storage Class) trong C++ 39
Lớp lưu trữ auto trong C++ 40

Lớp lưu trữ register trong C++ 40
Lớp lưu trữ static trong C++ 41
Lớp lưu trữ extern trong C++ 42
Lớp lưu trữ mutable trong C++ 43
Copyright © vietjack.com

Trang chia sẻ các bài học online miễn phí Trang 3

Toán tử trong C++ 43
Toán tử số học trong C++ 44
Toán tử quan hệ trong C++ 45
Toán tử logic trong C++ 45
Toán tử so sánh bit trong C++ 46
Toán tử gán trong C++ 49
Các toán tử hỗn hợp trong C++ 51
Thứ tự ưu tiên toán tử trong C++ 52
Vòng lặp trong C++ 53
Các lệnh điều khiển vòng lặp trong C++ 55
Vòng lặp vô hạn trong C++ 55
Điều khiển luồng trong C++ 56
Toán tử điều kiện ? : trong C++ 57
Hàm trong C++ 57
Định nghĩa một hàm trong C++ 58
Ví dụ 59
Khai báo hàm trong C++ 59
Gọi hàm trong C++ 60
Tham số của hàm trong C++: 61
Giá trị mặc định cho các tham số trong C++ 62
Number trong C++ 63
Định nghĩa Number trong C++ 63

Hàm toán học trong C++ 65
Số ngẫu nhiên (Random Number) trong C++ 67
Mảng (Array) trong C++ 68
Khai báo mảng trong C++ 69
Khởi tạo mảng trong C++ 69
Truy cập các phần tử mảng trong C++ 70
Chi tiết về mảng trong C++ 71
Copyright © vietjack.com

Trang chia sẻ các bài học online miễn phí Trang 4

Chuỗi (String) trong C++ 72
Chuỗi theo phong cách C 72
Lớp String trong C++ 75
Con trỏ trong C++ 76
Con trỏ là gì? 77
Cách sử dụng con trỏ trong C++ 78
Chi tiết về con trỏ trong C++ 79
Tham chiếu trong C++ 79
Tham chiếu và con trỏ trong C++ 80
Tạo tham chiếu trong C++ 80
Date và Time trong C++ 82
Date và Time hiện tại trong C++ 84
Định dạng Time bởi sử dụng cấu trúc tm trong C++ 85
Input/Output trong C++ 86
Header file cho I/O trong C++ 86
Standard Output Stream (cout) trong C++ 87
Standard Input Stream (cin) trong C++ 87
Standard Error Stream (cerr) trong C++ 88
Standard Log Stream (clog) trong C++ 89

Cấu trúc dữ liệu trong C++ 90
Định nghĩa một cấu trúc trong C++ 90
Truy cập các thành viên của cấu trúc trong C++ 91
Cấu trúc như là tham số hàm trong C++ 93
Con trỏ tới cấu trúc trong C++ 94
Từ khóa typedef trong C++ 97
Lớp và Đối tượng trong C++ 97
Định nghĩa Lớp trong C++ 98
Định nghĩa Đối tượng trong C++ 98
Truy cập các thành viên dữ liệu trong C++ 99
Copyright © vietjack.com

Trang chia sẻ các bài học online miễn phí Trang 5

Chi tiết về Lớp & Đối tượng trong C++ 100
Tính kế thừa trong C++ 101
Lớp cơ sở (Base Class) và Lớp thừa kế (Derived Class) trong C++ 102
Điều khiển truy cập và Tính kế thừa trong C++ 103
Kiểu kế thừa trong C++ 104
Đa kế thừa trong C++ 105
Nạp chồng toán tử và Nạp chồng hàm trong C++ 107
Nạp chồng hàm trong C++ 107
Nạp chồng toán tử trong C++ 109
Toán tử có thể nạp chồng và không thể nạp chồng trong C++ 112
Ví dụ về Nạp chồng toán tử trong C++ 112
Đa hình trong C++ 113
Hàm virtual trong C++ 116
Hàm pure virtual trong C++ 116
Trừu tượng hóa dữ liệu trong C++ 117
Nhãn truy cập (Access Label) trong C++ 118

Lợi ích của Trừu tượng hóa dữ liệu trong C++ 119
Ví dụ về Trừu tượng hóa dữ liệu trong C++ 119
Chiến lược thiết kế trong C++ 120
Tính đóng gói dữ liệu trong C++ 121
Ví dụ về Đóng gói dữ liệu trong C++ 122
Chiến lược thiết kế trong C++ 123
Interface trong C++ (Lớp trừu tượng) 123
Ví dụ về Lớp trừu tượng trong C++ 124
Chiến lược thiết kế trong C++ 127
File và Stream trong C++ 127
Mở một File trong C++ 128
Đóng một File trong C++ 129
Viết tới một File trong C++ 129
Copyright © vietjack.com

Trang chia sẻ các bài học online miễn phí Trang 6

Đọc một File trong C++ 129
Ví dụ về Đọc và Viết file trong C++ 129
Con trỏ vị trí File trong C++ 131
Xử lý ngoại lệ (Exception Handling) trong C++ 132
Ném Exception trong C++ 133
Bắt Exception trong C++ 134
Standard Exception trong C++ 135
Định nghĩa Exception mới trong C++ 137
Bộ nhớ động trong C++ 139
Toán tử new và delete trong C++ 139
Cấp phát bộ nhớ động cho Mảng trong C++ 141
Cấp phát bộ nhớ động cho Đối tượng trong C++ 141
Namespace trong C++ 142

Định nghĩa một Namespace trong C++ 143
using namespace directive trong C++ 144
Namespace không kề nhau trong C++ 146
Namespace lồng nhau trong C++ 146
Template trong C++ 148
Function Template trong C++ 148
Class Template trong C++ 150
Bộ tiền xử lý (Preprocessor) trong C++ 152
Bộ tiền xử lý # define trong C++ 153
Function-Like Macro trong C++ 154
Biên dịch có điều kiện trong C++ 155
Các toán tử # và ## trong C++ 156
Macro tiền định nghĩa trong C++ 158
Xử lý tín hiệu (Signal Handling) trong C++ 159
Hàm signal() trong C++ 160
Hàm raise() trong C++ 161
Copyright © vietjack.com

Trang chia sẻ các bài học online miễn phí Trang 7

Đa luồng (Multithread) trong C++ 163
Tạo Thread trong C++ 163
Kết thuốc Thread trong C++ 164
Ví dụ 165
Truyền tham số tới Thread trong C++ 166
Kết hợp và Tháo gỡ các Thread trong C++ 168
Lập trình Web trong C++ 171
CGI là gì? 171
Web Browsing 171
Sơ đồ cấu trúc CGI 172

Cấu hình Web Server 172
Chương trình CGI đầu tiên 173
Hello World! This is my first CGI program 174
HTTP Header 174
Biến môi trường của CGI 175
Thư viện CGI trong C++ 178
Phương thức POST và GET 178
Truyền thông tin bởi sử dụng phương thức GET 178
Ví dụ URL đơn giản sử dụng phương thức GET 179
Ví dụ về FORM bởi sử dụng phương thức GET 181
Truyền thông tin bởi sử dụng phương thức POST 181
Truyền Checkbox Data tới CGI Program 182
Truyền Radiobutton Data tới CGI Program 184
Truyền Text Area Data tới CGI Program 186
Truyền DropDown Box Data tới CGI Program 187
Sử dụng Cookie trong CGI 189
Cách nó làm việc 189
Thiết lập Cookie 190
Thu hồi Cookie 191
Copyright © vietjack.com

Trang chia sẻ các bài học online miễn phí Trang 8

Ví dụ về File Upload 193
Thư viện Template chuẩn (STL) trong C++ 195
Thư viện chuẩn C++ (C++ Standard Library) 198
Thư viện hàm chuẩn trong C++ (Standard Function Library) 198
Thư viện lớp hướng đối tượng trong C++ (Object Oriented Class Library) 198
Tài liệu tham khảo C++ 199
Link hữu ích về C++ 199












Copyright © vietjack.com

Trang chia sẻ các bài học online miễn phí Trang 9

Học C++ cơ bản và nâng cao
C++ là ngôn ngữ lập trình bậc trung (middle-level), được phát triển bởi Bjarne Stroustrup năm 1979
tại Bell Labs. C++ chạy trên các nền tảng đa dạng, như Windows, Mac OS, và các phiên bản Unix
đa dạng.
Bài hướng dẫn này sẽ cung cấp chi tiết khái niệm về C++ từ cơ bản tới nâng cao, kèm theo các ví
dụ thực hành trực tuyến đa dạng giúp bạn thích thú bài học và hiểu sâu hơn các khái niệm đã
được đề cập.
Loạt bài hướng dẫn của chúng tôi dựa trên nguồn tài liệu của: Tutorialspoint
Đối với độc giả
Loạt bài hướng dẫn về C++ được chuẩn bị cho người mới học, giúp họ hiểu các khái niệm C++ từ
cơ bản tới nâng cao.
Điều kiện tiền đề
Trước khi bắt đầu học theo loạt bài này và thực hành với các ví dụ về C++ đa dạng, mình giả sử
rằng bạn đã biết khái niệm về một chương trình máy tính là gì và thế nào là một ngôn ngữ lập trình
máy tính.

Tổng quan về C++
C++ là một ngôn ngữ lập trình kiểu tĩnh, mục đích tổng quát, phân biệt kiểu chữ mà hỗ trợ lập trình
hướng đối tượng, lập trình thủ tục.
C++ được coi như là ngôn ngữ bậc trung (middle-level), khi nó kết hợp các đặc điểm và tính
năng của ngôn ngữ bậc cao và bậc thấp.
C++ được phát triển bởi Bjarne Stroustrup năm 1979 tại Bell Labs ở Murray Hill, New Jersey, như
là một bản nâng cao của ngôn ngữ C và với tên gọi đầu tiên là “C với các Lớp”, nhưng sau đó
được đổi tên thành C++ vào năm 1983.
C++ là một Superset của C, và bất kỳ chương trình C nào cũng là một chương trình C++.
Ghi chú: Khi nói một ngôn ngữ lập trình là kiểu tĩnh khi việc kiểm tra kiểu được thực hiện trong
thời gian biên dịch (compile-time), chứ không phải là run-time.
Copyright © vietjack.com

Trang chia sẻ các bài học online miễn phí Trang 10

Lập trình hướng đối tượng
C++ hỗ trợ đầy đủ lập trình hướng đối tượng, bao gồm 4 tính năng trụ cột của lập trình hướng đối
tượng là:
 Tính bao đóng (Encapsulation)
 Ẩn dữ liệu (Data hiding)
 Tính kế thừa (Inheritance)
 Tính đa hình (Polymorphism)
Thư việc chuẩn C++ (C++ Standard Library)
C++ chuẩn gồm 3 phần quan trọng:
 Core Language cung cấp tất cả các khối bao gồm biến, kiểu dữ liệu (data type) và literals,

 Thư viện chuẩn C++ (C++ Standard Library) cung cấp tập hợp hàm đa dạng để thao tác file,
string, …
 Standard Template Library (STL) cung cấp tập hợp phương thức đa dạng để thao tác cấu
trúc dữ liệu, …

ANSI Standard
ANSI Standard bảo đảm rằng C++ là portable, nghĩa là: code bạn viết cho compiler của Microsoft
sẽ được biên dịch mà không xảy ra lỗi khi sử dụng một compiler trên Mac, UNIX, và Windows box
hoặc một Alpha.
ANSI Standard đã tồn tại trong thời gian dài, và tất cả C++ compiler đều hỗ trợ ANSI Standard.
Học tập C++ như thế nào?
Điều quan trọng nhất khi học tập C++ là trọng tâm vào các khái niệm.
Mục đích của việc học một ngôn ngữ lập trình là trở thành một lập trình viên giỏi hơn, tức là để
thiết kế và thực thi các hệ thống mới hiệu quả hơn, hoặc sửa đổi chương trình cũ.
Copyright © vietjack.com

Trang chia sẻ các bài học online miễn phí Trang 11

C++ hỗ trợ các phong cách lập trình đa dạng. Bạn có thể viết trong Fortran, C, Smalltalk, … trong
bất kỳ ngôn ngữ nào. Mỗi style có thể đạt được mục tiêu của nó một cách hiệu quả trong khi duy trì
runtime và space hiệu quả.
Miền sử dụng của C++
C++ được sử dụng bởi hàng nghìn lập trình viên trong mỗi lĩnh vực ứng dụng cơ bản.
C++ đang được sử dụng phổ biến để viết device driver và các phần mềm khác mà dựa vào thao
tác trực tiếp của phần cứng dưới ràng buộc về realtime.
C++ được sử dụng rộng rãi để đào tạo, nghiên cứu.
Bất cứ hai đã sử dụng Apple Macintosh hoặc một PC chạy trên Windows đã là gián tiếp sử dụng
C++, bởi vì User Interface của các hệ thống này được viết bằng C++.
Cài đặt môi trường C++
Cài đặt môi trường nội bộ cho C++
Nếu bạn muốn cài đặt môi trường C++, bạn cần hai phần mềm có sẵn trong máy sau đây:
Text Editor
Nó sẽ được sử dụng để soạn chương trình của bạn. Ví dụ như Windows Notepad, OS Edit
command, Brief, Epsilon, EMACS và Vim hoặc Vi.
Tên và phiên bản của Text Editor có thể đa dạng trên các hệ điều hành khác nhau. Ví dụ, Notepad

sẽ được sử dụng trên Windows và Vim hoặc Vi có thể được sử dụng trên Windows cũng như Linux
hoặc UNIX.
Các file, mà bạn tạo với editor này, được gọi là các source file và với C++, chúng được đặt tên với
đuôi mở rộng là .cpp, .cp, hoặc .c.
Trước khi bắt đầu lập trình, đảm bảo rằng bạn có một Text editor và bạn có đủ kinh nghiệm để
soạn một chương trình C++.
C++ Compiler:
C++ Compiler được sử dụng để biên dịch source code của bạn thành chương trình có thể thực thi.
Copyright © vietjack.com

Trang chia sẻ các bài học online miễn phí Trang 12

Hầu hết C++ compiler không quan tâm phần đuôi mở rộng bạn cung cấp cho source code, nhưng
nếu bạn không xác định, thì theo mặc định, nó sẽ sử dụng đuôi là .cpp.
Compiler được sử dụng thường xuyên nhất là GNU C/C++ compiler, hoặc bạn có thể sử dụng các
Compiler khác từ HP hoặc Solaris nếu bạn có Hệ điều hành tương ứng.
Cài đặt GNU C/C++ Compiler
Cài đặt trên UNIX/Linux
Nếu bạn đang sử dụng Linux hoặc UNIX, thì kiểm tra xem GCC đã được cài đặt trên hệ thống
chưa bằng việc nhập lệnh sau tại dòng lệnh (command line):
$ g++ -v
Nếu bạn đã cài đặt GCC, thì nó sẽ in thông báo sau:
Using built-in specs.
Target: i386-redhat-linux
Configured with: /configure prefix=/usr
Thread model: posix
gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)
Nếu GCC chưa được cài đặt, bạn cần phải cài đặt theo hướng dẫn có
tại:
Cài đặt trên Mac OS X

Nếu bạn sử dụng Mac OS X, cách đơn giản nhất để cài đặt GCC là tải môi trường phát triển Xcode
từ Website của Applet và theo các chỉ dẫn.
Bạn có thể tải Xcode từ: developer.apple.com/technologies/tools/.
Cài đặt trên Windows
Để cài đặt GCC trên Windows, bạn cần cài đặt MinGW. Để cài đặt MinGW, bạn truy
cập:www.mingw.org, và từ đó tới trang để tải MinGW. Tải phiên bản mới nhất của MinGW, sẽ có
tên là MinGW-<version>.exe.
Trong khi cài đặt MinGW, tối thiểu bạn phải cài đặt gcc-core, gcc-g++, binutils, và MinGW runtime.
Copyright © vietjack.com

Trang chia sẻ các bài học online miễn phí Trang 13

Thêm thư mục phụ bin của MinGW tới biến môi trường PATH, để mà bạn có thể xác định các tool
trên command line bởi các tên đơn giản của chúng.
Khi việc cài đặt hoàn tất, bạn có thể chạy gcc, g++, ar, ranlib, dlltool, và một số GNU tool khác từ
Windows command line.
Cú pháp C++ cơ bản
Khi chúng ta xem xét một chương trình C++, nó có thể được định nghĩa như là một tập hợp của
các đối tượng, mà giao tiếp thông qua việc triệu hồi các phương thức của mỗi đối tượng đó. Dưới
đây, chúng tôi miêu tả ngắn gọn ý nghĩa của class (lớp), object (đối tượng), method (phương thức)
và các biến đối tượng:
 Object - Đối tượng có các trạng thái và hành vi. Ví dụ: một đối tượng dog có các trạng thái
là color, name, breed, và các hành vi là wagging, barking, eating. Một đối tượng là một
minh họa của một lớp.
 Class - Một lớp có thể được định nghĩa như là một template/blueprint, mà miêu tả hành
vi/trạng thái mà đối tượng hỗ trợ.
 Methods - Về cơ bản, một phương thức là một hành vi. Một lớp có thể chứa nhiều phương
thức. Phương thức là nơi tính logic được viết, dữ liệu được thao tác và tất cả action được
thực thi.
 Instant Variables - Mỗi đối tượng có tập hợp biến đối tượng duy nhất của nó. Trạng thái

của một đối tượng được tạo ra bởi các giá trị được gán cho các biến đối tượng của nó.
Cấu trúc chương trình C++
Bạn theo dõi một đoạn code đơn giản sẽ in Hello World.
#include <iostream>
using namespace std;

// main() is where program execution begins.

int main()
{
Copyright © vietjack.com

Trang chia sẻ các bài học online miễn phí Trang 14

cout << "Hello World"; // prints Hello World
return 0;
}
Chương trình trên có các phần sau:
 Ngôn ngữ C++ định nghĩa một số header, mà chứa tong tin cần thiết và hữu ích cho
chương trình của bạn. Với chương trình này, header là <iostream> là cần thiết.
 Dòng using namespace std; nói cho compiler sử dụng std namespace. Namespce là phần
bổ sung gần đây cho C++.
 Dòng tiếp theo // main() is where program execution begins. là một comment đơn dòng
trong C++. Các comment đơn dòng bắt đầu với // và kết thúc ở cuối dòng.
 Dòng int main() là hàm main, tại đây việc thực thi chương trình bắt đầu.
 Dòng tiếp theo cout << "This is my first C++ program."; làm thông báo “This is my first
C++ program” được hiển thị trên màn hình.
 Dòng tiếp theo return 0; kết thúc hàm main() và làm nó trả về giá trị 0 tới tiến trình đang gọi.
Biên dịch và thực thi chương trình C++
Dưới đây là cách lưu file, biên dịch và chạy chương trình. Bạn theo các bước sau:

 Mở một text editor và thêm đoạn code trên.
 Lưu file với tên: hello.cpp.
 Mở một dòng nhắc lệnh (command prompt) và tới thư mục nơi bạn lưu file đó.
 Soạn 'g++ hello.cpp ' và nhấn Enter để biên dịch code trên. Nếu không có lỗi xảy ra trong
code của bạn thì dòng nhắc lệnh sẽ đưa bạn tới dòng tiếp theo và tạo a.out file có thể thực
thi.
 Bây giờ, bạn soạn „a.out‟ để chạy chương trình.
 Bạn sẽ thấy „Hello World‟ được in trên cửa sổ.
$ g++ hello.cpp
Copyright © vietjack.com

Trang chia sẻ các bài học online miễn phí Trang 15

$ ./a.out
Hello World
Bạn chắc chắn rằng g++ là trong path của bạn và bạn đang chạy nó trong thư mục mà chứa
hello.cpp file.
Bạn có thể biên dịch chương trình C/C++ bởi sử dụng makefile. Để biết thêm chi tiết, bạn có thể
truy cập: Makefile Tutorial.
Dấu chấm phảy và khối (block) trong C++
Trong C++, dấu chấm phảy là ký tự kết thúc lệnh (statement terminator). Nghĩa là, mỗi lệnh đơn
phải kết thúc bởi một dấu chấm phảy. Nó chỉ dẫn sự kết thúc của một thực thể logic.
Dưới đây là ví dụ về 3 lệnh khác nhau:
x = y;
y = y+1;
add(x, y);
Một khối (block) là một tập hợp các lệnh được kết nối một cách logic, mà được bao quanh bởi các
dấu ngoặc móc mở và đóng. Ví dụ:
{
cout << "Hello World"; // prints Hello World

return 0;
}
Hai dạng sau là tương đương, C++ không quan tâm bạn đặt bao nhiêu lệnh trên một dòng. Ví dụ:
x = y;
y = y+1;
add(x, y);
Là giống với:
x = y; y = y+1; add(x, y);
Copyright © vietjack.com

Trang chia sẻ các bài học online miễn phí Trang 16

Định danh (Identifier) trong C++
Một Định danh (Identifier) trong C++ là một tên được sử dụng để nhận diện một biến, hàm, lớp,
module, hoặc bất kỳ user-defined item nào (người dùng tự định nghĩa). Một Định danh (Identifier)
bắt đầu với một chữ cái từ A tới Z hoặc từ a tới z hoặc một dấu gạch dưới (_) được theo sau bởi 0
hoặc nhiều chữ cái, dấu gạch dưới và ký số (từ 0 tới 9).
C++ không cho phép các ký tự như @, $ và % bên trong các Identifier. C++ là ngôn ngữ lập trình
phân biệt kiểu chữ. Vì thế, Manpower và manpower là hai Identifier khác nhau trong C++.
Dưới đây là một số ví dụ về Identifier (Định danh) thích hợp:
mohd zara abc move_name a_123
myname50 _temp j a23b9 retVal
Từ khóa trong C++
Bảng dưới liệt kê các từ được dự trữ (dành riêng) trong C++. Những từ này không thể được sử
dụng như là constant hoặc biến hoặc bất kỳ tên Identifier (Định danh) nào.
asm
else
new
this
auto

enum
operator
throw
bool
explicit
private
true
break
export
protected
try
case
extern
public
typedef
catch
false
register
typeid
char
float
reinterpret_cast
typename
class
for
return
union
Copyright © vietjack.com

Trang chia sẻ các bài học online miễn phí Trang 17


const
friend
short
unsigned
const_cast
goto
signed
using
continue
if
sizeof
virtual
default
inline
static
void
delete
int
static_cast
volatile
do
long
struct
wchar_t
double
mutable
switch
while
dynamic_cast

namespace
template

Trigraph trong C++
Một Trigraph là một dãy 3 ký tự mà biểu diễn một ký tự đơn và dãy này luôn luôn bắt đầu với 2 dấu
hỏi.
Các Trigraph được mở rộng bất cứ nơi đâu chúng xuất hiện, bao gồm bên trong String literal và
Character literal, trong comment, và trong các preprocessor directive (các directive tiền xử lý).
Dưới đây là các dãy trigraph được sử dụng thường xuyên nhất:
Trigraph
Thay thế cho
??=
#
??/
\
Copyright © vietjack.com

Trang chia sẻ các bài học online miễn phí Trang 18

??'
^
??(
[
??)
]
??!
|
??<
{
??>

}
??-
~
Tất cả compiler không hỗ trợ Trigraph và chúng được khuyên là không nên sử dụng bởi vì tính khó
hiểu của nó.
Khoảng trắng (Whitespace) trong C++
Một dòng mà chỉ chứa khoảng trắng (Whitespace), có thể là một comment, được biết đến như là
một dòng trống, và C++ hoàn toàn bỏ qua nó.
Khoảng trắng (Whitespace) là khái niệm được sử dụng trong C++ để miêu tả blank, tab, ký tự
newline, và comment. Khoảng trắng (Whitespace) phân biệt các phần của lệnh và giúp compiler
nhận diện vị trí một phần tử trong một lệnh, ví dụ như int, vị trí phần kết thúc và vị trí phần tử tiếp
theo bắt đầu. Do đó, trong lệnh sau:
int age;
Phải có ít nhất một Whitespace (thường là khoảng trống) giữa int và age để compiler có thể phân
biệt chúng. Trong lệnh:
fruit = apples + oranges; // Get the total fruit
Các ký tự khoảng trắng (Whitespace) giữa fruit và =, hoặc giữa = và apples là không cần thiết; tuy
nhiên, để giúp cho code của bạn dễ đọc hơn, bạn có thể thêm chúng vào.
Copyright © vietjack.com

Trang chia sẻ các bài học online miễn phí Trang 19

Comment trong C++
Comment của chương trình là các lời diễn giải, mà bạn có thể bao trong C++ code, và giúp cho bất
kỳ ai đọc source code dễ dàng hơn. Tất cả ngôn ngữ lập trình đều cho phép một số mẫu comment
nào đó.
C++ hỗ trợ các comment đơn dòng và đa dòng. Tất cả ký tự có trong comment được bỏ qua bởi
C++ compiler.
Comment trong C++ bắt đầu với /* và kết thúc với */. Ví dụ:
/* This is a comment */


/* C++ comments can also
* span multiple lines
*/
Một comment cũng có thể bắt đầu với //, kéo dài tới phần cuối của dòng. Ví dụ:
#include <iostream>
using namespace std;

main()
{
cout << "Hello World"; // prints Hello World

return 0;
}
Khi code trên được biên dịch, nó sẽ bỏ qua // prints Hello World và cuối cùng cho kết quả sau:
Hello World
Bên trong một comment dạng /* và */, các ký tự // không có ý nghĩa đặc biệt gì. Bên trong một
comment dạng //, các ký tự /* và */ không có ý nghĩa đặc biệt gì. Vì thế, bạn có thể “lồng (nest)” bất
kỳ dạng comment nào bên trong dạng khác. Ví dụ:
/* Comment out printing of Hello World:
Copyright © vietjack.com

Trang chia sẻ các bài học online miễn phí Trang 20


cout << "Hello World"; // prints Hello World

*/
Kiểu dữ liệu trong C++
Trong khi làm việc với bất kỳ ngôn ngữ lập trình nào, bạn cần sử dụng các kiểu biến đa dạng để

lưu giữ thông tin. Các biến, không gì khác ngoài các vị trí bộ nhớ được dành riêng để lưu giá trị.
Nghĩa là, khi bạn tạo một biến, bạn dành riêng một số không gian trong bộ nhớ cho biến đó.
Bạn có thể thích lưu thông tin của các kiểu dữ liệu (Data Type) đa dạng như Character, Wide
Character, integer, floating-point, double floating point, Boolean, …. Dựa trên kiểu dữ liệu của một
biến, hệ thống sẽ cấp phát bộ nhớ và quyết định những gì có thể được lưu giữ trong bộ nhớ dành
riêng đó.
Kiểu dữ liệu nguyên thủy trong C++
Tên tiếng Anh là Primitive Type, còn có thể gọi là kiểu dữ liệu gốc, kiểu dữ liệu có sẵn trong C++.
Bên cạnh các kiểu dữ liệu gốc này, C++ cũng cung cấp các kiểu dữ liệu user-defined. Bảng dưới
đây liệt kê 7 kiểu dữ liệu cơ bản trong C++:
Kiểu dữ liệu
Từ khóa
Boolean
bool
Character
char
Integer
int
Floating point
float
Double floating point
double
Copyright © vietjack.com

Trang chia sẻ các bài học online miễn phí Trang 21

Valueless
void
Wide character
wchar_t

Một số kiểu cơ bản có thể được sửa đổi bởi sử dụng một hoặc nhiều modifier này:
 signed
 unsigned
 short
 long
Bảng sau hiển thị kiểu biến, lượng bộ nhớ nó dùng để lưu giá trị trong bộ nhớ, và giá trị lớn nhất và
nhỏ nhất có thể được lưu giữ với các kiểu biến đó:
Kiểu
Độ rộng bit
Dãy giá trị
char
1byte
-127 tới 127 hoặc 0 tới 255
unsigned char
1byte
0 tới 255
signed char
1byte
-127 tới 127
int
4bytes
-2147483648 tới 2147483647
unsigned int
4bytes
0 tới 4294967295
signed int
4bytes
-2147483648 tới 2147483647
short int
2bytes

-32768 tới 32767
Copyright © vietjack.com

Trang chia sẻ các bài học online miễn phí Trang 22

unsigned short int
Range
0 tới 65,535
signed short int
Range
-32768 tới 32767
long int
4bytes
-2,147,483,647 tới 2,147,483,647
signed long int
4bytes
Tương tự như long int
unsigned long int
4bytes
0 tới 4,294,967,295
float
4bytes
+/- 3.4e +/- 38 (~7 digits)
double
8bytes
+/- 1.7e +/- 308 (~15 digits)
long double
8bytes
+/- 1.7e +/- 308 (~15 digits)
wchar_t

2 or 4 bytes
1 wide character
Kích cỡ của các biến có thể khác với những gì hiển thị trên bảng, phụ thuộc vào compiler và máy
tính bạn đang sử dụng.
Dưới đây là ví dụ sẽ đưa ra kích cỡ chính xác của các kiểu dữ liệu đa dạng trên máy tính của bạn.
#include <iostream>
using namespace std;

int main()
{
cout << "Size of char : " << sizeof(char) << endl;
cout << "Size of int : " << sizeof(int) << endl;
cout << "Size of short int : " << sizeof(short int) << endl;
cout << "Size of long int : " << sizeof(long int) << endl;
cout << "Size of float : " << sizeof(float) << endl;
Copyright © vietjack.com

Trang chia sẻ các bài học online miễn phí Trang 23

cout << "Size of double : " << sizeof(double) << endl;
cout << "Size of wchar_t : " << sizeof(wchar_t) << endl;
return 0;
}
Ví dụ này sử dụng endl, mà chèn một ký tự newline sau mỗi dòng, và toán tử << được sử dụng để
truyền nhiều giá trị tới màn hình. Chúng tôi cũng sử dụng toán tử sizeof() để lấy kích cỡ của các
kiểu dữ liệu đa dạng.
Khi code trên được biên dịch và thực thi, nó cho kết quả sau (kết quả có thể đa dạng tùy thuộc vào
compiler và máy tính bạn đang sử dụng).
Size of char : 1
Size of int : 4

Size of short int : 2
Size of long int : 4
Size of float : 4
Size of double : 8
Size of wchar_t : 4
Khai báo typedef trong C++
Bạn có thể tạo một tên mới cho một kiểu dữ liệu đang tồn tại bởi sử dụng typedef trong C++. Cú
pháp đơn giản sau để định nghĩa một kiểu dữ liệu mới bởi sử dụng typedef:
typedef type newname;
Ví dụ sau nói cho compiler rằng feet là tên khác của int:
typedef int feet;
Bây giờ, khai báo sau là hoàn toàn hợp lệ và sẽ tạo một biến integer gọi là distance:
feet distance;
Copyright © vietjack.com

Trang chia sẻ các bài học online miễn phí Trang 24

Kiểu liệt kê enum trong C++
Kiểu liệt kê enum khai báo một tên kiểu tùy ý và một tập hợp của 0 hoặc nhiều Identifier (Định
danh) mà có thể được sử dụng như là các giá trị của kiểu đó. Mỗi Enumerator là một constant có
kiểu là kiểu liệt kê (enumeration).
Để tạo một Enumeration, bạn sử dụng từ khóa enum trong C++. Form chung của kiểu liệt kê enum
là:
enum enum-name { list of names } var-list;
Tại đây, enum-name là tên kiểu liệt kê. Danh sách tên được phân biệt bởi dấu phảy.
Ví dụ, code sau định nghĩa một bản liệt kê màu gọi là color và biến c là kiểu của color. Cuối cùng, c
được gán giá trị blue.
enum color { red, green, blue } c;
c = blue;
Theo mặc định, giá trị của name đầu tiên là 0, name thứ hai là 1 và name thứ 3 là 2, …. Nhưng bạn

có thể cung cấp cho một name một giá trị cụ thể bằng việc thêm một Initializer (giá trị khởi tạo). Ví
dụ, trong enumeration sau, green sẽ có giá trị là 5:
enum color { red, green=5, blue };
Ở đây, blue sẽ có giá trị là 6 bởi vì mỗi name sẽ có giá trị lớn hơn của name trước đó là 1.
Kiểu biến trong C++
Một biến cung cấp nơi lưu giữ được đặt tên để chúng ta có thể thao tác. Mỗi biến trong C++ có một
kiểu cụ thể, mà quyết định: kích cỡ và cách bố trí bộ nhớ của biến; dãy giá trị có thể được lưu giữ
bên trong bộ nhớ đó; và tập hợp hoạt động có thể được áp dụng cho biến đó.
Tên biến có thể gồm các ký tự, các ký số, dấu gạch dưới. Nó phải bắt đầu bởi hoặc một ký tự hoặc
một dấu gạch dưới. Các ký tự chữ hoa và chữ thường là khác nhau bởi C++ là ngôn ngữ phân biệt
kiểu chữ.
Dưới đây là các kiểu biến cơ bản trong C++ đã được giới thiệu trong chương trước:
Copyright © vietjack.com

Trang chia sẻ các bài học online miễn phí Trang 25

Kiểu
Miêu tả
bool
Lưu giữ giá trị true hoặc false
char
Là một kiểu integer, kích cỡ 1 byte
int
Kích cỡ tự nhiên nhất của integer của máy tính
float
Giá trị single floating-point
double
Giá trị double floating-point
void
Không trả về giá trị nào

wchar_t
Kiểu wide character
C++ cũng cho phép định nghĩa các kiểu biến khác, sẽ được giải thích trong các chương tới, đó
là: Enumeration, Pointer, Array, Reference, Data structure, và Class.
Tiếp theo là cách định nghĩa, khai báo và sử dụng các kiểu biến đa dạng:
Định nghĩa biến trong C++
Định nghĩa biến trong C++ nghĩa là nói cho compiler nơi và lượng bộ nhớ cần tạo để lưu giữ biến
đó. Một định nghĩa biến xác định một kiểu dữ liệu, và chứa danh sách của một hoặc nhiều biến có
kiểu đó, như sau:
type variable_list;
Ở đây, type phải là một kiểu dữ liệu hợp lệ trong C++, gồm char, w_char, int, float, double, bool
hoặc bất kỳ đối tượng nào mà người dùng tự định nghĩa, … và variable_list có thể chứa một hoặc
nhiều tên Identifier (Định danh) phân biệt nhau bởi dấu phảy. Sau đây là một số khai báo hợp lệ
trong C++:
int i, j, k;

×