Tài liệu Ngôn ngữ lập trình C++ - Ngô Huyền Diệu

Tài liệu Ngôn ngữ lập trình C++ - Ngô Huyền Diệu

Lập trình là sử dụng cấu trúc dữ liệu và các câu lệnh của ngôn ngữ lập trình cụ thể để mô tả dữ liệu và diễn đạt các thao tác của thuật toán. Chương trình viết bằng ngôn ngữ lập trình bậc cao nói chung không phụ thuộc vào máy, nghĩa là một chương trình có thể thực hiện trên nhiều máy. Chương trình viết bằng ngôn ngữ máy có thể được nạp trực tiếp vào bộ nhớ và thực hiện ngay còn chương trình viết bằng ngôn ngữ lập trình bậc cao phải được chuyển đổi thành chương trình trên ngôn ngữ máy mới có thể thực hiện được.

Chương trình đặc biệt có chức năng chuyển đổi chương trình được viết bằng ngôn ngữ lập trình bậc cao thành chương trình thực hiện được trên máy tính cụ thể được gọi là chương trình dịch.

Chương trình dịch nhận đầu vào là chương trình viết bằng ngôn ngữ lập trình bậc cao (chương trình nguồn) thực hiện chuyển đổi sang ngôn ngữ máy (chương trình đích).

Xét ví dụ, bạn chỉ biết tiếng Việt nhưng cần giới thiệu về trường của mình cho đoàn khách đến từ nước Mĩ, chỉ biết tiếng Anh. Có hai cách để bạn thực hiện điều này.

Cách thứ nhất: Bạn nói bằng tiếng Việt và người phiên dịch giúp bạn dịch sang tiếng Anh. Sau mỗi câu hoặc một vài câu giới thiệu trọn một ý, người phiên dịch dịch sang tiếng Anh cho đoàn khách. Sau đó, bạn lại giới thiệu tiếp và người phiên dịch lại dịch tiếp. Việc giới thiệu của bạn và việc dịch của người phiên dịch luân phiên cho đến khi bạn kết thúc nội dung giới thiệu của mình. Cách dịch trực tiếp như vậy được gọi là thông dịch.

Cách thứ hai: Bạn soạn nội dung giới thiệu của mình ra giấy, người phiên dịch dịch toàn bộ nội dung đó sang tiếng Anh rồi đọc hoặc trao văn bản đã dịch cho đoàn khách đọc. Như vậy, việc dịch được thực hiện sau khi nội dung giới thiệu đã hoàn tất. Hai công việc đó được thực hiện trong hai khoảng thời gian độc lập, tách biệt nhau. Cách dịch như vậy được gọi là biên dịch.

Sau khi kết thúc, với cách thứ nhất không có một văn bản nào để lưu trữ, còn với cách thứ hai có hai bản giới thiệu bằng tiếng Việt và bằng tiếng Anh có thể lưu trữ để dùng lại về sau.

Tương tự như vậy, chương trình dịch có hai loại là thông dịch và biên dịch.

 

docx 65 trang Đoàn Hưng Thịnh 02/06/2022 4790
Bạn đang xem 20 trang mẫu của tài liệu "Tài liệu Ngôn ngữ lập trình C++ - Ngô Huyền Diệu", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Chủ đề 1
 KHÁI NIỆM LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH
Như đã biết, mọi bài toán có thuật toán đều có thể giải được trên máy tính điện tử. Khi giải bài toán trên máy tính điện tử, sau các bước xác định bài toán và xây dựng hoặc lựa chọn thuật toán khả thi là bước lập trình.
Lập trình là sử dụng cấu trúc dữ liệu và các câu lệnh của ngôn ngữ lập trình cụ thể để mô tả dữ liệu và diễn đạt các thao tác của thuật toán. Chương trình viết bằng ngôn ngữ lập trình bậc cao nói chung không phụ thuộc vào máy, nghĩa là một chương trình có thể thực hiện trên nhiều máy. Chương trình viết bằng ngôn ngữ máy có thể được nạp trực tiếp vào bộ nhớ và thực hiện ngay còn chương trình viết bằng ngôn ngữ lập trình bậc cao phải được chuyển đổi thành chương trình trên ngôn ngữ máy mới có thể thực hiện được.
Chương trình đặc biệt có chức năng chuyển đổi chương trình được viết bằng ngôn ngữ lập trình bậc cao thành chương trình thực hiện được trên máy tính cụ thể được gọi là chương trình dịch.
Chương trình dịch nhận đầu vào là chương trình viết bằng ngôn ngữ lập trình bậc cao (chương trình nguồn) thực hiện chuyển đổi sang ngôn ngữ máy (chương trình đích).
Xét ví dụ, bạn chỉ biết tiếng Việt nhưng cần giới thiệu về trường của mình cho đoàn khách đến từ nước Mĩ, chỉ biết tiếng Anh. Có hai cách để bạn thực hiện điều này.
Cách thứ nhất: Bạn nói bằng tiếng Việt và người phiên dịch giúp bạn dịch sang tiếng Anh. Sau mỗi câu hoặc một vài câu giới thiệu trọn một ý, người phiên dịch dịch sang tiếng Anh cho đoàn khách. Sau đó, bạn lại giới thiệu tiếp và người phiên dịch lại dịch tiếp. Việc giới thiệu của bạn và việc dịch của người phiên dịch luân phiên cho đến khi bạn kết thúc nội dung giới thiệu của mình. Cách dịch trực tiếp như vậy được gọi là thông dịch.
Cách thứ hai: Bạn soạn nội dung giới thiệu của mình ra giấy, người phiên dịch dịch toàn bộ nội dung đó sang tiếng Anh rồi đọc hoặc trao văn bản đã dịch cho đoàn khách đọc. Như vậy, việc dịch được thực hiện sau khi nội dung giới thiệu đã hoàn tất. Hai công việc đó được thực hiện trong hai khoảng thời gian độc lập, tách biệt nhau. Cách dịch như vậy được gọi là biên dịch.
Sau khi kết thúc, với cách thứ nhất không có một văn bản nào để lưu trữ, còn với cách thứ hai có hai bản giới thiệu bằng tiếng Việt và bằng tiếng Anh có thể lưu trữ để dùng lại về sau.
Tương tự như vậy, chương trình dịch có hai loại là thông dịch và biên dịch.
a) Thông dịch
Thông dịch (interpreter) được thực hiện bằng cách lặp lại dãy các bước sau:
 Kiểm tra tính đúng đắn của câu lệnh tiếp theo trong chương trình nguồn;
 Chuyển đổi câu lệnh đó thành một hay nhiều câu lệnh tương ứng trong ngôn ngữ máy;
 Thực hiện các câu lệnh vừa chuyển đổi được.
Như vậy, quá trình dịch và thực hiện các câu lệnh là luân phiên. Các chương trình thông dịch lần lượt dịch và thực hiện từng câu lệnh. Loại chương trình dịch này đặc biệt thích hợp cho môi trường đối thoại giữa người và hệ thống. Tuy nhiên, một câu lệnh nào đó phải thực hiện bao nhiêu lần thì nó phải được dịch bấy nhiêu lần.
Các ngôn ngữ khai thác hệ quản trị cơ sở dữ liệu, ngôn ngữ đối thoại với hệ điều hành,... đều sử dụng trình thông dịch.
b) Biên dịch
Biên dịch (compiler) được thực hiện qua hai bước:
 Duyệt, kiểm tra, phát hiện lỗi, kiểm tra tính đúng đắn của các câu lệnh trong chương trình nguồn;
 Dịch toàn bộ chương trình nguồn thành một chương trình đích có thể thực hiện trên máy và có thể lưu trữ để sử dụng lại khi cần thiết.
Như vậy, trong thông dịch, không có chương trình đích để lưu trữ, trong biên dịch cả chương trình nguồn và chương trình đích có thể lưu trữ lại để sử dụng về sau.
Thông thường, cùng với chương trình dịch còn có một số dịch vụ liên quan như biên soạn, lưu trữ, tìm kiếm, cho biết các kết quả trung gian,... Toàn bộ các dịch vụ trên tạo thành một môi trường làm việc trên một ngôn ngữ lập trình cụ thể. Ví dụ, Turbo Pascal 7.0, Free Pascal 1.2, Visual Pascal 2.1,... trên ngôn ngữ Pascal, Turbo C++, Visual C++,... trên ngôn ngữ C++.
Các môi trường lập trình khác nhau ở những dịch vụ mà nó cung cấp, đặc biệt là các dịch vụ nâng cấp, tăng cường các khả năng mới cho ngôn ngữ lập trình.
Một số đặc trưng của ngôn ngữ C++
C++ là một ngôn ngữ lập trình bậc trung. Nó có nghĩa là bạn có thể sử dụng C++ để phát triển những ứng dụng bậc cao, và cả những chương trình bậc thấp hoạt động tốt trên phần cứng.
C++ là một ngôn ngữ lập trình hướng đối tượng. Khác với ngôn ngữ lập trình C - một ngôn ngữ lập trình hướng thủ tục, chương trình được tổ chức theo thuật ngữ “chức năng”, một chức năng gồm có những hành động mà bạn muốn làm. C++ được thiết kế với một cách tiếp cận hoàn toàn mới được gọi là lập trình hướng đối tượng, nơi mà chúng ta sử dụng những đối tượng, các lớp và sử dụng các khái niệm như: thừa kế, đa hình, tính đóng gói, tính trừu tượng Những khái niệm này khá phức tạp, nên nếu bạn chưa hiểu về chúng, đừng lo lắng, chúng ta sẽ lần lượt làm rõ từng khái niệm trong mỗi bài học khác nhau.
C++ là một ngôn ngữ lập trình hướng cấu trúc giống ngôn ngữ C, nó có nghĩa là chúng ta có thể tổ chức chương trình trên khái niệm functions.
C++ có thể chạy trên nhiều nền tảng khác nhau như Windows, Mac OS, một số biến thể của UNIX 
Lý do chọn ngôn ngữ lập trình C++:
Ngôn ngữ lập trình C++ có thể được dùng để làm những công việc sau:
C++ được thiết kế để viết những hệ thống lớn, thậm chí C++ được dùng để tạo nên hệ điều hành máy tính (Linux, Mac OS X, Windows ).
C++ được dùng để tạo nên các game lớn của hãng Blizzard (World of Warcraft, Diablo series, StarCraft series ). Gần như toàn bộ các game bom tấn trên thị trường hiện nay cũng dùng C++ để phát triển. Một số công cụ sử dụng trong việc lập trình game có sử dụng C++ như Unreal engine, Cocos2d-x framework, Các ông lớn trong ngành công nghiệp game như Valve, CryTek cũng sử dụng C++.
C++ có thể được sử dụng ở phía Web server vì C++ có thể đáp ứng được yêu cầu về tốc độ xử lý, khả năng phản hồi nhanh.
Các thể loại game chơi trên Playstation, XBox, được tạo ra từ C++. Có thể thấy C++ là ngôn ngữ có truyền thống lâu đời trong ngành công nghiệp phát triển game.
Các sản phẩm phần mềm nổi tiếng khác được phát triển bằng C++ như MS Office, Photoshop, Maya / 3ds, Auto CAD 
Tuy rằng bên cạnh C++ còn có những ngôn ngữ lập trình khác như C#, Java, có thể làm được những ứng dụng lớn cho máy tính, nhưng đối với các ứng dụng có yêu cầu về mặt tốc độ xử lý, hoặc có tính thương mại cao, người ta vẫn ưu tiên C++.
Với mục đích muốn tìm hiểu 1 ngôn ngữ lập trình cơ bản thì việc học tốt C++ có thể làm nền tảng vững chắc để tiếp cận những ngôn ngữ lập trình khác một cách dễ dàng hơn. Bởi vì C++ có thể được sử dụng theo hướng lập trình hướng cấu trúc như C, cũng có thể sử dụng các khái niệm trong lập trình hướng đối tượng giống những ngôn ngữ mới sau này, nên C++ có thể dùng làm cầu nối giữa nhiều ngôn ngữ khác nhau. Một ví dụ điển hình, khi sử dụng Java trên Android Studio để phát triển ứng dụng trên điện thoại di động, chúng ta có thể tích hợp các thư viện được viết sẵn bằng ngôn ngữ C++ nhằm mục đích tối ưu hóa.
Chủ đề 2
 CÁC THÀNH PHẦN CỦA NGÔN NGỮ LẬP TRÌNH C++
1. Các thành phần cơ bản
Mỗi ngôn ngữ lập trình thường có ba thành phần cơ bản là bảng chữ cái, cú pháp và ngữ nghĩa.
Bảng chữ cái là tập các kí tự được dùng để viết chương trình. Không được phép dùng bất kì kí tự nào ngoài các kí tự quy định trong bảng chữ cái:
 Các chữ cái thường và các chữ cái in hoa của bảng chữ cái tiếng Anh:
a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
 10 chữ số thập phân Ả Rập: 0 1 2 3 4 5 6 7 8 9
 Các kí tự đặc biệt:
+
-
*
/
\
=
<
>
[
]
.
,
;
‘
#
^
$
@
&
(
)
{
}
:
“
!
dấu cách (mã ASCII 32)
_ (dấu gạch dưới)
b) Cú pháp là bộ quy tắc để viết chương trình. Dựa vào chúng, người lập trình và chương trình dịch biết được tổ hợp nào của các kí tự trong bảng chữ cái là hợp lệ và tổ hợp nào là không hợp lệ. Nhờ đó, có thể mô tả chính xác thuật toán để máy thực hiện.
c) Ngữ nghĩa xác định ý nghĩa thao tác cần phải thực hiện, ứng với tổ hợp kí tự dựa vào ngữ cảnh của nó.
Ví dụ 
Phần lớn các ngôn ngữ lập trình đều sử dụng dấu cộng (+) để chỉ phép cộng. Xét các biểu thức: 
	 	A + B 	(1) 
	 	I + J 	(2) 
Giả thiết A, B là các đại lượng nhận giá trị thực và I, J là các đại lượng nhận giá trị nguyên. Khi đó dấu "+" trong biểu thức (1) được hiểu là cộng hai số thực, dấu "+" trong biểu thức (2) được hiểu là cộng hai số nguyên. Như vậy, ngữ nghĩa dấu "+" trong hai ngữ cảnh khác nhau là khác nhau. 
Tóm lại, cú pháp cho biết cách viết một chương trình hợp lệ, còn ngữ nghĩa xác định ý nghĩa của các tổ hợp kí tự trong chương trình. 
Các lỗi cú pháp được chương trình dịch phát hiện và thông báo cho người lập trình biết. Chỉ có các chương trình không còn lỗi cú pháp mới có thể được dịch sang ngôn ngữ máy.
Các lỗi ngữ nghĩa khó phát hiện hơn. Phần lớn các lỗi ngữ nghĩa chỉ được phát hiện khi thực hiện chương trình trên dữ liệu cụ thể.
2. Một số khái niệm
a) Tên - Định danh (Identifier) trong C++
Một Định danh (Identifier) trong C++ được dùng để đặt cho chương trình, hằng, kiểu, biến, chương trình con... Tên có hai loại là tên chuẩn và tên do người lập trình đặt. 
Tên chuẩn là tên do C++ đặt sẵn như tên kiểu: int, char, float, ; tên hàm: sin, cos... 
Tên do người lập trình tự đặt để dùng trong chương trình của mình. 
Sử dụng bộ chữ cái, chữ số và dấu gạch dưới (_) để đặt tên, nhưng phải tuân thủ quy tắc: 
Bắt đầu bằng một chữ cái hoặc dấu gạch dưới (chữ số không được đứng đầu) 
Không có khoảng trống ở giữa tên; 
Không được trùng với từ khóa; 
Độ dài tối đa của tên là không giới hạn, tuy nhiên chỉ có 31 ký tự đầu tiên là có ý nghĩa; 
Không cấm việc đặt tên trùng với tên chuẩn nhưng khi đó ý nghĩa của tên chuẩn không còn giá trị nữa. 
C++ không cho phép các ký tự như @, $ và % bên trong tên. C++ là ngôn ngữ lập trình phân biệt kiểu chữ. Vì thế, Manpower và manpower là hai tên khác nhau.
Ví dụ về Identifier (Tên) thích hợp:
Hoang
nam
abc
Sinh_vien
a_123
caogia50
_nhanvien
J
a23b9
vietJack
Ví dụ về Identifier (Tên) không hợp lệ: Do Dai, 12A2, dien%tich, Tin@hoc
b. Từ khóa trong C++
Bảng dưới liệt kê các từ được dành riêng trong C++. 
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
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
Lưu ý: - Các từ khóa phải được viết bằng chữ thường
	- Không được dùng từ khóa vào mục đích khác, hoặc đặt tên một đối tượng nào đó (biến, hằng, tên hàm ...) trùng với từ khóa.
c. 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 (khoảng trắng), tab, ký tự newline (dòng mới), 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 diemthi;
Phải có ít nhất một Whitespace (thường là khoảng trống) giữa int và diemthi để compiler (chương trình dịch) có thể phân biệt chúng. 
Trong lệnh:	tongLuong = luongCoBan + phuCap; // tinh tong luong
Các ký tự khoảng trắng (Whitespace) giữa luongCoBan và =, hoặc giữa = và phuCap 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.
d. Diễn giải (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/C++ code, và giúp cho bất kỳ ai đọc source code (mã nguồn) 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/C++ compiler.
Comment trong C/C++ bắt đầu với /* và kết thúc với */. Ví dụ:
/* Day la mot comment don dong */
/* C/C++ cung ho tro cac comment
 * ma co nhieu dong
 */
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ụ:
cout << "Hoc C/C++ co ban va nang cao"; 
// In dong chu Hoc C/C++ co ban va nang cao 
Khi code trên được biên dịch, nó sẽ bỏ qua // In dong chu Hoc C/C++ co ban va nang cao và cuối cùng cho kết quả: Hoc C/C++ co ban va nang cao
Bên trong comment /* và */, các ký tự // không có ý nghĩa đặc biệt gì. Bên trong 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" 2 dạng comment này vào nhau. Ví dụ:
/* Comment ve dong lenh in dong chu theo y muon: 
cout << "Xin chao cac ban!"; 
// in dong chu Xin chao cac ban! 
*/
Khi code trên được biên dịch cho kết quả là : Xin chao cac ban!
Chủ đề 3
CẤU TRÚC CHƯƠNG TRÌNH C++ CƠ BẢN
Các thành phần cấu tạo nên một chương trình C++ bao gồm các từ khóa, câu lệnh, cấu trúc điều khiển, hằng, biến và các toán tử. 
Cấu trúc một chương trình C++ cơ bản: 
Gồm: - Khai báo thư viện. 
- Chương trình chính - Hàm main() 
1. Khai báo thư viện trong C++
Khi chúng ta lập trình một phần mềm hoặc một chương trình dù nhỏ hay lớn thì đều phải thao tác với các thiết bị của máy tính như bàn phím, chuột, màn hình ... để nhận dữ liệu nhập vào và in kết quả trả về.
Vấn đề đặt ra là để thao tác được với các thiết bị đó thì chúng ta sẽ phải lập trình thì máy tính mới giao tiếp được, nhưng công việc đó không hề đơn giản và mất thời gian. Vì vậy người ta đã viết sẵn ra các thư viện để khi muốn sử dụng thì chỉ cần khai báo.
Ta có thể định nghĩa:Thư viện trong lập trình là nơi cung cấp sẵn cho chúng ta những hàm những phương thức có thể sử dụng được ở nhiều chương trình giúp rút ngắn thời gian lập trình lại. Các thư viện luôn được tích hợp sẵn trong các trình soạn thảo code nhưng khi chúng ta bắt đầu viết code vẫn phải có thao tác đó là khai báo những thư viện nào cần cho chúng ta khi code.
Để khai báo sử dụng thư viện trong C++ thì ta sử dụng cú pháp sau:
	#include 
Một số thư viện thường gặp trong lập trình C++:
iostream ( thư viện này chứa hàm xuất nhập cout và cin)
stdio.h (chứa hàm scanf, printf...)
conio.h (chứa hàm clrscr, getch...)
cmath(chứa hàm toán học như sqrt, abs, pow, )
string/cstring (nó chứa các hàm về chuỗi )
cctype (chứa các hàm để thao tác với các ký tự)
Ví dụ về khai báo thư viện:
#include 
#include 
#include 
Lưu ý: - Đối với một chương trình C++ nhập xuất căn bản thì bắt buộc ta phải sử dụng thư viện ostream
- Khi đó ta sử dụng lệnh: using namespace std; 
std (standard) là một gói các thực thể thường dùng được định nghĩa sẵn trong thư viện iostream thuộc các phiên bản C++ standard để tiện cho lập trình viên khi sử dụng và tránh các lỗi khai báo trùng. Một số thực thể trong std: cout, cin, string, abs, sin, cos, tan, malloc 
2. Kiểu dữ liệu 
Bảng dưới đây liệt kê 7 kiểu dữ liệu cơ bản trong C/C++:
Kiểu dữ liệu
Từ khóa
Logic (có 2 giá trị True, False)
bool
Ký tự
char
Số nguyên
int
Số thực
float
Số thực dạng Double
double
Kiểu không có giá trị
void
Kiểu Wide character
wchar_t
Bên cạnh các kiểu dữ liệu gốc này, C/C++ cũng cung cấp các kiểu dữ liệu user-define
a. Kiểu số nguyên
Kiểu số nguyên là kiểu số mà khi chia cho 1 sẽ dư 0, nghĩa là đây là một số không có dấu phẩy động. Gồm có:
Kiểu dữ liệu
Số ô nhớ
Giới hạn
Int
2 byte
-32768 .. 32767 (-215 . . 215-1)
unsigned int
2 byte
0 .. 65535 (0 .. 216)
Long
4 byte
-2147483648 (-231) đến 2147483647 (231-1)
unsigned long
4 byte
0 đến 4294967295 (232)
long long
8 byte
-263 .. 263 – 1
unsigned long long
8 byte
0 .. 264
b. Kiểu số thực
Kiểu dữ liệu
Số ô nhớ
Giới hạn
Chữ số chính xác sau dấu thập phân
Float
4 byte
3.4E-38 đến 3.4E+38
7 đến 8 
Double
8 byte
1.7E-308 đến 1.7E+308
15 đến 16
long double
10 byte
3.4E-4932 đến 1.1E4932
17 đến 18
c. Kiểu kí tự
Mỗi ký tự char sẽ chiếm 1 byte (8 bit) trong bộ nhớ và chúng được biểu diễn thông qua bảng mã ASCII.
Kiểu dữ liệu
Số ô nhớ
Giới hạn
Char
1 byte
-128 ... 127
unsigned char
1 byte
0 ... 255
3. Biến và khai báo biến trong C++
Biến là đại lượng được đặt tên, dùng để lưu trữ giá trị và giá trị có thể được thay đổi trong quá trình thực hiện chương trình.
Tên biến do người lập trình tự đặt và phải tuân thủ theo quy tắc đặt tên.
Cú pháp khai báo biến:
Kieu_du_lieu	 Danh_sach_ten_bien ;
Trong đó:- Kieu_du_lieu là một trong những kiểu dữ liệu đã liệt kê ở mục 3
- Danh_sach_ten_bien là một hoặc nhiều tên biến được viết phân cách nhau bởi dấu phẩy (,)
Ví dụ: 
	int a ;	// Khai báo biến a có kiểu số nguyên
	float x1, x2 ;	// Khai báo biến x1, x2 có kiểu số thực
	bool GT ;	// Khai báo biến GT có kiểu logic
Lưu ý:
 - Giữa Kieu_du_lieu và Danh_sach_ten_bien phải có sử dụng ít nhất 1 ký tự trắng (space)
- Không đặt trùng tên biến trong cùng một chương trình
- Khai báo biến được thực hiện trong hàm main()
4. Hàm main()
Là quan trọng nhất trong chương trình C++. Trong lập trình thì trình biên dịch sẽ xử lý code từ trên xuống dưới và từ trái qua phải. Nhưng với hàm main - là nơi chứa những đoạn code sẽ được chạy đầu tiên, nghĩa là khi biên dịch chương trình thì nội dung trong hàm main sẽ được chạy đầu tiên mà không quan trọng vị trí của nó trong file.
Cú pháp:
Kieu_du_lieu main() 	 	 
 	{ 
 	Các câu lệnh. Cuối mỗi lệnh là dấu “;” 
return 0;
 	} 
Trong đó: 
- Kieu_du_lieu nếu có là một trong những kiểu dữ liệu đã liệt kê ở mục 3
- Nội dung của hàm main tiếp ngay sau phần khai báo chính thức được bao trong các ngoặc nhọn ( { } ). Lệnh return kết thúc hàm main và trả về mã đi sau nó, trong trường hợp này là 0. Đây là một kết thúc bình thường của một chương trình không có một lỗi nào trong quá trình thực hiện. Như bạn sẽ thấy trong các ví dụ tiếp theo, đây là một cách phổ biến nhất để kết thúc một chương trình C++.
- Câu lệnh có hai dạng:
Lệnh đơn.
Lệnh ghép: Gồm nhiều câu lệnh đơn được đặt giữa hai dấu { và }. Lệnh ghép còn được gọi là một khối lệnh.
5. Câu lệnh xuất/nhập trong C++
Sau khi khai báo sử dụng thư viện iostream, ta dùng lệnh xuất / nhập là cout / cin
a. Lệnh xuất kết quả ra màn hình
Cú pháp: cout << Kết quả ra ; 
hoặc cout << Kết quả ra << endl ; 
Trong đó: 
Toán tử << dùng để ngăn cách các giá trị.
Kết quả ra có thể là:
- Chuỗi kí tự: 	cout << "Hello World" ; 	 // In dong chu Hello World 
- Giá trị của biến: 	cout << a << endl; 	 //In giá trị cua bien a
- Biểu thức: 	cout << a + b <<end; 	 //In kết quả cua bieu thức a +b
- Vừa chuỗi kí tự và biến hoặc biểu thức 
cout << “Gia tri cua a la : ” << a << end; 	 
cout << “Tong cua 2 so a va b la : ” << a + b << end; 
endl là một đối tượng được xác định trước của lớp ostream. Nó được sử dụng để chèn một ký tự xuống dòng.
Ví dụ: Khi viết 3 câu lệnh sau:
cout << "Learn";
cout << " C++"<< endl;
cout << "New line" << endl;
Hoặc 	cout << "Learn C++" ;
cout << endl;
cout << "New line" ;
cout << endl;
Đều cho kết quả là:	 Learn C++
New line
Bạn cũng có thể chèn 1 kí tự xuống dòng bằng lệnh cout << “\n” (là cú pháp xuống dòng trong C, mà C++ được phát triển dựa trên C nên nó vẫn dùng được hầu hết các cú pháp và thư viện trong C)
Ví dụ: chương trình C++ in ra màn hình câu: Chao cac ban moi lam quen voi C++
#include 
using namespace std; 
main() 
{ 
cout << "Chao cac ban moi lam quen voi C++"; 
}
b. Lệnh nhập dữ liệu cho biến từ bàn phím
Cú pháp: cin >> Danh_sách_tên_biến ; 
Ví dụ: Để nhập giá trị cho 2 số nguyên a, b ta có thể viết:
 cin >> a >> b ;
hoặc cin >> a ;
cin >> b; 
Ví dụ: chương trình C++ in ra màn hình tổng của 2 số nguyên a và b
#include 
using namespace std; 
int main() 	//khai báo kiểu dữ liệu là int cho main()
{ 
int a, b ;	//Khai báo biến a, b kiểu số nguyên
cout << "Nhap gia tri cho a = "; 	
cin >> a ;	
cout << "Nhap gia tri cho b = "; 	
cin >> b ; 
cout << “Tong 2 so la : ” << a+b ;
return 0; 
}
6. Các toán tử của C++
a. Toán tử toán học
Toán tử toán học dùng để xử lý tính toán trong toán học như: Các phép toán cộng, trừ, nhân và chia,.. Hoặc những phép tính nâng cao hơn như chia lấy dư, chia lấy phần nguyên 
Bảng sau đây là danh sách 7 toán tử toán học thường dùng nhất trong C++ 
(Giả sử hai số nguyên x = 5, y = 2 và các phép toán là độc lập).
Toán tử
Ý nghĩa
Ví dụ
+
Cộng hai số
x + y = 7
-
Trừ hai số
x - y = 3
*
Nhân hai số
x * y = 10
/
Chia hai số
x / y = 2
%
Chia lấy dư
x % y = 1
++
Tăng lên một đơn vị
x++ = 6 / ++x = 6
--
Giảm xuống một đơn vị
y-- = 1 / --y = 1
Lưu ý: 
- Nếu hai toán hạng đều là số nguyên thì kết quả x/y là phần nguyên của phép chia.
- Nếu ít nhất một trong hai toán hạng là số thực thì kết quả là số thực a/b. (Ví dụ số thực a = 5, số nguyên b = 2 thì a/b = 2.5)
- Phép chia lấy phần dư: % không áp dụng được nếu các toán hạng là số thực.
- Toán tử tăng ++ và giảm -- có hai cách dùng:
+ Nếu đặt sau toán hạng: Chương trình sẽ chạy hết dòng lệnh đó rồi mới tăng hoặc giảm giá trị.
+ Nếu đặt trước toán hạng: Chương trình sẽ tăng hoặc giảm rồi mới chạy dòng lệnh.
Ví dụ: Phân biệt ++x và x++
#include 
using namespace std;
int main()
{
// Truong hop dat sau
int x = 10;
cout << x++ << endl; 	// in ra 10
cout << x << endl; 	// in ra 11
// Truong hop dat truoc
x = 10;
cout << ++x << endl; 	// in ra 11
return 0;
}
b. Toán tử gán trong C++
Toán tử gán được dùng để gán giá trị vào một biến. Ta chỉ có một toán tử gán duy nhất đó là dấu bằng =
è Câu lệnh gán: Tên_biến = Biểu_thức ;
Phép gán sẽ tính giá trị của biểu thức vế phải và gán giá trị đó vào biến ở vế trái. Kết quả của biểu thức và biến phải thuộc cùng một kiểu dữ liệu.
Ví dụ: 
int a, b; 	//Khai báo biến a, b 
a = 10 ;	// Gán a = 10
b = a*a+1;	//b = 102 +1 = 101 
Ta có thể viết lại như sau:
int a(10), b; 	//Khai báo biến a, b và gán a = 10
b = a*a+1;	//b = 102 +1 = 101 
Tuy nhiên, khi kết hợp toán tử gán = với những toán tử toán học thì sẽ tạo ra những phiên bản khác như bảng sau:
Toán tử
Ví dụ
Tương đương với
=
x = 5
x = 5
+=
x += 5
x = x + 5
-=
x -= 5
x = x - 5
/=
x /= 5
x = x / 5
*=
x *= 5
x = x * 5
%=
x %= 5
x = x % 5
c. Toán tử so sánh trong C++
Toán tử so sánh dùng để so sánh hai biểu thức / toán hạng với nhau và trả về true hoặc false. Đây là những toán tử rất quan trọng trong lập trình, nhất là khi sử dụng trong vòng lặp và các lệnh rẻ nhánh.
Toán tử
Ví dụ
Ý nghĩa
= =
x = = y
Trả về true nếu x bằng y, ngược lại trả về false
>
x > y
Trả về true nếu x lớn hơn y, ngược lại trả về false
<
x < y
Trả về true nếu x bé hơn y, ngược lại trả về false
>=
x >= y
Trả về true nếu x lớn hơn hoặc bằng y, ngược lại trả về false
<=
x <= y
Trả về true nếu x bé hơn hoặc bằng y, ngược lại trả về false
!=
x != y
Trả về true nếu x khác y, ngược lại trả về false
Chú ý: Khi thực hiện phép so sánh giữa hai toán hạng, kết quả thu được thuộc kiểu bool (true hoặc false). Điều này là hợp lý vì các biểu thức so sánh đều là các mệnh đề logic. 
Ví dụ: So sánh 102 với 62 + 82 
a = 10 ; b = 6 ; c = 8; 
bool x = (a*a == b*b+c*c); // Kết quả là true 
d. Toán tử logic trong C++
Toán tử logic trong C++ được dùng để kiểm tra mối quan hệ giữa hai biến hoặc hai toán hạng. Chúng ta có ba toán tử thông dụng and, or, not tương ứng như sau:
Toán tử
Ví dụ
Ý nghĩa
&&
A && B
Trả về true nếu A và B đều bằng TRUE, ngược lại trả về false
||
A || B
Trả về true nếu A hoặc B bằng true, ngược lại trả về false
!
!A
Trả về true nếu A bằng false, ngược lại trả về true
e. Toán tử điều kiện trong C++
 ? : 
điều kiện sẽ được tính và kiểm tra. Nếu điều kiện đúng thì kết quả là biểu thức 1, 
ngược lại kết quả là biểu thức 2. 
Ví dụ: Để tìm số lớn nhất max trong hai ố a và b: max = a > b ? a : b; 
7. Hằng số trong C++
Hằng là các đại lượng có giá trị không thay đổi trong quá trình thực hiện chương trình.
a. Danh sách hằng số trong C++
Hằng số (Constant)
Ví dụ
Hằng số thập phân
10, 20, 450, vv.
Hằng số thực hoặc số thực dấu phảy động
10.3, 20.2, 450.6, vv.
Hằng số Octal
021, 033, 046, vv.
Hằng số Hexadecimal
0x2a, 0x7b, 0xaa, vv.
Hằng số ký tự
'a', 'b', 'x', vv.
Hằng số chuỗi String
"c", "c++ program", vv.
b. Định nghĩa hằng trong C/C++
Có hai cách định nghĩa hằng trong C/C++
b. 1. Sử dụng bộ tiền xử lý #define 
Cú pháp	#define tên_hằng Giá_trị
Ví dụ sau giải thích cú pháp trên:
#include 
using namespace std;
#define CHIEUDAI 10 
#define CHIEURONG 5
#define NEWLINE endl
int main()
{
 int dientich; 
 dientich = CHIEUDAI * CHIEURONG;
 cout << dientich;
 cout << NEWLINE;
 cout << “la dien tich hinh chu nhat” ;
 return 0;
}
Khi code trên được biên dịch và thực thi, nó cho kết quả sau:
50
la dien tich hinh chu nhat
b. 2. Sử dụng từ khóa const 
const Kiểu_dữ_liệu tên_hằng = giá_trị;
Ví dụ sau giải thích chi tiết cú pháp trên:
#include 
using namespace std;
int main()
{
 const int CHIEUDAI = 30;
 const int CHIEURONG = 10;
 const char NEWLINE = '\n';
 int dientich; 
 dientich = CHIEUDAI * CHIEURONG;
 cout << dientich;
 cout << NEWLINE;
 cout << “la dien tich can tinh”;
 return 0;
}
Khi code trên được biên dịch và thực thi, nó cho kết quả sau:
300
la dien tich can tinh
c. Dãy thoát trong C++
Một số kí tự trong C/C++ khi được đứng trước bởi dấu \ thì chúng sẽ mang một ý nghĩa đặc biệt như bắt đầu dòng mới '\n' hay tạo một tab '\t'. Chúng được biết như là escape sequence (dãy thoát). Bảng dưới đây thể hiện một số mã escape sequence phổ biến:
Escape sequence
Ý nghĩa
\\
Ký tự \
\'
Ký tự '
\"
Ký tự "
\?
Ký tự ?
\b
Backspace (Xóa 1 kí tự trước nó)
\n
Newline
\r
Carriage return (xóa toàn bộ chuỗi trước nó)
\t
tab ngang
\v
tab dọc
\ooo
Số hệ cơ số 8 của một tới 3 chữ số
\xhh . . .
Số hệ cơ số 16 của một hoặc nhiều chữ số
Dưới đây là ví dụ minh họa một số ký tự escape sequence thường dùng:
Ví dụ 1: #include 
using namespace std;
int main()
{
 cout << "Hello\tWorld\n\n";	// Giữa Hello và World là một dấu Tab ngang
 return 0;
}
Khi code trên được biên dịch và thực thi, nó cho kết quả: Hello	World
Ví dụ 2: 	#include 
using namespace std;
int main()
{
 cout << "Hello\nWorld\n\n"; 
 return 0;
}
Khi code trên được biên dịch và thực thi, nó cho kết quả là:
Hello
World
8. Một số hàm toán học thường dùng
Để sử dụng các hàm toán học, ta cần khai báo sử dụng thư viện cmath: #include 
Tên hàm
Giá trị hàm trả về
sqrt(x)
căn bậc hai của x
cbrt(x)
căn bậc ba của x
pow(a, x)
a mũ x
abs(x)
giá trị tuyệt đối của số nguyên x
fabs(x)
giá trị tuyệt đối của số thực x
sin(x), cos(x), tan(x)
sin, cos, tan của x
log(x), log10(x) 
Logarit Nepe, Logarit thập phân của x
ceil(x)
Giá trị được làm tròn lên của x. (ceil(2.8) = 3 ; ceil(-3.2) = -3)
floor(x)
Giá trị được làm tròn xuống của x 
(Ví dụ: floor(2.8) = 2 ; floor(-3.2) = - 4)
round(x)
Giá trị được làm tròn của x (round(2.8) = 3 ; round(2.4) = 2)
Ví dụ: 
#include 
#include 
using namespace std;
int main() {
double a(4.3), b(5.2);
cout << pow(a,b) << endl; //Tinh luy thua a^b
cout << sqrt(a) << endl; //Tinh can bac 2 cua a
cout << cos(b) << endl; //Tinh cos cua b
return 0;
}
9. Biểu thức trong C++
a. Biểu thức số học
Trong lập trình, biểu thức số học là một biến kiểu số hoặc một hằng số hoặc các biến kiểu số và các hằng số liên kết với nhau bởi một số hữu hạn toán tử số học, các dấu ngoặc tròn ( và ) tạo thành một biểu thức có dạng tương tự như cách viết trong toán học với những quy tắc sau:
Chỉ dùng cặp ngoặc tròn để xác định trình tự phép toán trong trường hợp cần thiết;
Viết lần lượt từ trái qua phải;
Không được bỏ qua dấu nhân (*) trong tích;
Các phép được thực hiện theo thứ tự:
Thực hiện các phép toán trong ngoặc trước;
Nếu dãy phép toán không chứa ngoặc thì thực hiện từ trái sang phải, theo thứ tự các toán tử nhân (*), chia (/), chia lấy phần dư (%) thực hiện trước và các toán tử cộng (+), trừ (-) thực hiện sau
Ví dụ
Biểu thức trong toán học
Biểu thức trong C++
5a + 6b
5*a + 6*b
sin2x - sinxcosx
sin(2*x) – sin(x)*cos(x)
Chú ý: Biểu thức chứa 1 hằng hay biến kiểu số thực, thì giá trị biểu thức là kiểu số thực.
b. Biểu thức quan hệ
Hai biểu thức cùng kiểu liên kết với nhau bởi phép toán quan hệ cho ta một biểu thức quan hệ.
Biểu thức quan hệ có dạng:
Ví dụ:
x < 5 
i + 1 >= 2*j
Biểu thức quan hệ được thực hiện theo trình tự:
Tính giá trị các biểu thức;
Thực hiện phép toán quan hệ.
Kết quả của biểu thức quan hệ là giá trị true (đúng) hoặc false (sai).
Trong ví dụ trên, nếu x có giá trị 3 thì biểu thức x = 2*j sẽ cho giá trị false.
Ví dụ: Điều kiện để M(x, y) thuộc hình tròn tâm I(a,b), bán kính R là:
	sqrt((x – a)*(x – a) + (y – b)*(y – b)) <= R
hoặc 	pow((x – a),2) + pow((y – b),2) <= pow(R, 2)
c. Biểu thức logic
Biểu thức logic đơn giản là biến logic hoặc hằng logic.
Biểu thức logic là các biểu thức logic đơn giản, các biểu thức quan hệ liên kết với nhau bằng toán tử logic. Giá trị biểu thức logic là true hoặc false. Các biểu thức quan hệ đặt trong cặp ngoặc ( và ).
Toán tử ! (not) được viết trước biểu thức cần phủ định, ví dụ:
!(x = 1.
Ví dụ 1
Để thể hiện điều kiện 5 ≤x ≤11, trong C++ cần tách thành phát biểu dưới dạng “5≤x và x≤11”:
ta viết:	(5 <= x) && (x <=11)
Ví dụ 2
Giả thiết M, N là 2 số nguyên, Điều kiện xác định M, N đồng thời chia hết cho 3 hay đồng thời không chia hết cho 3 được thể hiện trong C++ như sau:
((M % 3 ==0) && (N % 3 == 0 )) || ((M % 3 != 0) && (N % 3

Tài liệu đính kèm:

  • docxtai_lieu_ngon_ngu_lap_trinh_c_ngo_huyen_dieu.docx