You are on page 1of 19

Ngôn ngữ lập trình C++

CHUYÊN ĐỀ NGÔN NGỮ LẬP TRÌNH C++


CHƯƠNG I. TỔNG QUAN

§ 1. Một số khái niệm cơ bản


1. 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. Ngôn ngữ lập trình C++ được xây dựng trên bảng chữ cái bao gồm
các kí tự sau:
 52 chữ cái in thường và in hoa của bảng chữ cái tiếng Anh: a..z, A..Z.
 10 chữ số thập phân Ả Rập: 0..9
 Các kí tự đặc biệt: + - * / = < > [ ] . , ;! # ^ $ %& ( ) : ‘ _ và dấu cách
2. Cú pháp
Là bộ quy tắc để viết chương trình. Các kí tự trong bảng chữ cái kết hợp với nhau theo quy tắc (có
tính quy ước) để tạo nên các từ, các từ lại được kết hợp với nhau theo quy tắc để tạo thành các câu lệnh
(statement). 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.
3. 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ụ: Xét biểu thức cộng
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 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ể.
4. Từ khóa (keyword)
Từ khóa là những từ dành riêng của ngôn ngữ lập trình, được ngôn ngữ lập trình quy định dùng với
ý nghĩa riêng xác định, người lập trình không được sử dụng với ý nghĩa khác. Từ khóa còn được gọi là
tên dành riêng, nó thường được dùng để khai báo biến định nghĩa các kiểu dữ liệu, định nghĩa ra các
toán tử, các hàm và viết các câu lệnh.
Ví dụ. Một số từ khóa: do, break, if, for, int, void,...

THPT Tı̃nh Gia 2 Page 1


Ngôn ngữ lập trình C++

Ý nghĩa và cách sử dụng chúng sẽ được lần lượt giới thiệu ở các mục sau. Ở đây ta chỉ cần nhớ:
 Không được dùng từ khóa để đặt tên cho các hằng, biến, mảng,...
 Từ khóa phải được viết bằng chữ thường. Chẳng hạn, không được viết INT hay Int mà phải viết
int.
5. Tên (Identifier)
Mọi đối tượng trong chương trình đều phải được đặt tên theo quy tắc của ngôn ngữ lập trình và
từng chương trình dịch cụ thể.
Tên được dùng để xác định các đối tượng khác nhau trong một chương trình. Tên là một khái niệm
rất quan trọng. Tên được đặt theo quy tắc sau:
 Tên là một dãy liên tiếp bao gồm chữ số, chữ cái, dấu gạch dưới
 Bắt đầu bằng chữ cái hoặc dấu gạch dưới,
 Không được trùng với từ khóa
 Độ dài theo quy định của chương trình dịch.
Ví dụ một số tên hợp lệ: i, j, x, bai_tap, ket_qua…
Trong các tên, chữ hoa và chữ thường được xem là khác nhau. Ví dụ, AB và Ab, aB, ab là các tên
khác nhau trong C++. Trong C++ thường dùng chữ hoa để đặt tên cho các hằng và dùng chữ thường để
đặt tên cho hầu hết các đối tượng khác như biến, mảng, hàm, cấu trúc. Tuy nhiên đây không phải điều
bắt buộc.
6. Chú thích (Comment)
Có thể đặt các đoạn chú thích trong chương trình nguồn. Các chú thích này giúp cho người đọc
chương trình nhận biết ý nghĩa của chương trình đó dễ hơn. Chú thích không ảnh hưởng đến nội dung
chương trình nguồn và được chương trình dịch bỏ qua.
Trong C++ các đoạn chú thích được đặt giữa cặp dấu /* ... */ hoặc có thể viết chú thích trên một
dòng theo sau cặp dấu //

THPT Tı̃nh Gia 2 Page 2


Ngôn ngữ lập trình C++

§ 2. Cấu trúc một chương trình

1. Cấu trúc chung


Cấu trúc chung của một chương trình thường bao gồm phần khai báo và phần thân. Trong đó, phần
thân nhất thiết phải có, phần khai báo có thể có hoặc không, tùy vào từng chương trình
[<phần khai báo>]
<phần thân>
2. Các thành phần của chương trình
a) Phần khai báo
- Khai báo thư viện
Mỗi ngôn ngữ lập trình thường có sẵn một số thư viện cung cấp một số chương trình lập trình
sẵn. Vì vậy, để sử dụng các chương trình đó ta cần phải khai báo thư viện chứa nó. Trong ngôn
ngữ lập trình C++, ta có thể khai báo sử dụng một số thư viện hoặc sử dụng lệnh sau để khai
báo rằng chương trình sẽ sử dụng tất cả các thư viện chuẩn của C++:
#include <bits/stdc++.h>
- Khai báo không gian tên (namespace)
Nếu #include nhiều tệp, thư viện, mỗi thư viện sẽ cung cấp nhiều tính năng khác nhau. Thỉnh
thoảng, một số tính năng sẽ có cùng tên gọi, khi đó chương trình sẽ không biết sử Ngôn ngữ lập
trình C++ dùng tên nào. Để tránh vấn đề này, người ta tạo ra các không gian tên (namespaces),
là các loại thư mục về tên. Sử dụng câu lệnh using namespace std; để chỉ dẫn rằng bạn sẽ sử
dụng namespace std trong phần tiếp theo của tệp chương trình nguồn. Namespace này là một
trong các namespace được biết đến nhiều nhất vì nó tương ứng với thư viện standard (std), một
thư viện đi kèm mặc định với C++ mà iostream cũng nằm trong đó.
- Khai báo hằng:
Một số đại lượng được sử dụng nhiều lần trong chương trình thì người ta thường đặt tên cho nó,
thao tác đặt tên cho những giá trị như vậy là khai báo hằng.
- Khai báo biến toàn cụ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. Để sử dụng được biến thì ta cần phải khai báo trước khi sử dụng.
b) Phần thân chương trình
Phần thân chương trình bao gồm bắt buộc một hàm chính có tên là main (đây là hàm sẽ được thực
thi đầu tiên trong chương trình, ta có thể tạm gọi đây là chương trình chính) và có thể bao gồm một số
hàm khác. Hàm main được khai báo như sau:
int main ()
{
//các câu lệnh…
}
3. Ví dụ một chương trình đơn giản
#include <bits/stdc++.h>
THPT Tı̃nh Gia 2 Page 3
Ngôn ngữ lập trình C++

using namespace std;


int main()
{
cout << "Hello world!" << endl;
}
Chương trình đơn giản trên cho ra kết quả là đưa ra dòng chữ Hello world ra màn hình.
- Lệnh #include <bits/stdc++.h> là khai báo thư viện chuẩn của C++ sẽ sử dụng trong chương
trình.
- Lệnh using namespace std; là khai báo sử dụng namespace std.
- Lệnh int main() là khai báo hàm main.
- Ký tự { là bắt đầu một khối lệnh.
- Lệnh cout << "Hello world!" << endl; là đưa ra màn hình dòng chữ Hello world! và dấu
xuống dòng.
- Ký tự } là kết thúc một khối lệnh.

THPT Tı̃nh Gia 2 Page 4


Ngôn ngữ lập trình C++

§ 3. Soạn thảo, dịch, thực hiện và hiệu chỉnh chương trình trên Code::Blocks
Để có thể soạn thảo, dịch, thực hiện, hiệu chỉnh chương trình được viết bằng ngôn ngữ lập trình
C++, ta có thể sử dụng nhiều phần mềm hỗ trợ ngôn ngữ này như: Turbo C++ (TC30), Visual C++,
DevCpp (DevC++), Code::Blocks (CB),… Trong tài liệu này, các chương trình và minh họa được thử
nghiệm trên CB.
1. Cài đặt và giao diện làm việc Code::Blocks
Địa chỉ để tải bộ cài về máy tính: http://www.codeblocks.org/downloads/26
Chọn đúng phiên bản cho hệ điều hành của mình (thường là windows 7) và tên chứa « mingw » để
tải về. Sau khi tải về máy tính ta thực hiện cài đặt cài đặt, màn hình làm việc của Code::Blocks sau khi
thực hiện cài đặt như sau:

Giao diện chính được chia làm 4 phần:


(1) Thanh công cụ: gồm các nút lệnh cho phép mở, đóng chương trình mới, cho phép thực thi
(chạy) chương trình…
(2) Danh sách các file của nguồn của chương trình được hiển thị ở bên trái.
(3) Phần trung tâm (soạn thảo): là nơi viết mã nguồn (code) C++.
(4) Phần thông báo: là nơi nhìn thấy các lỗi dịch chương trình được hiển thị nếu đoạn mã có lỗi.
2. Các bước để viết một chương trình
a) Tạo project mới, soạn thảo mã nguồn chương trình
Khi ta viết một chương trình nghĩa là ta đang làm việc với một dự án (project). Một project được
tạo nên bởi nhiều file: file .cpp, .h, các hình ảnh của chương trình, … Code::Blocks tập hợp tất các các
file của project tại một giao diện, người dùng có thể truy cập đến tất cả các phần khác nhau của project
thông qua một cú kích chuột. Do vậy khi muốn tạo một chương trình mới, ta cần tạo một project mới

THPT Tı̃nh Gia 2 Page 5


Ngôn ngữ lập trình C++

qua lệnh « new project ». Để tạo một project mới, chọn File\New\Project. Trong cửa sổ được hiển thị,
chọn Console application, nhấn Go, chọn Next, chọn C++, Next.

Trong cửa số kế tiếp, đặt tên và chọn thư mục lưu cho project. Sau đó chọn Next, rồi Finish.

THPT Tı̃nh Gia 2 Page 6


Ngôn ngữ lập trình C++

Trong danh sách file nguồn bên trái cửa sổ, chọn project tương ứng, ở trong thư mục Sources, có
một file mặc định tên là “main.cpp”. Đây là file mặc định cho chương trình in ra “Hello World” đơn
giản mà Code::Blocks đã sinh ra. Để phù hợp với yêu cầu của bài toán ta phải đổi tên file này bằng
cách click phải chuột vào file main.cpp rồi chọn rename file sau đó gõ tên phù hợp vào cửa sổ hiện ra.
Về cơ bản, việc soạn thảo chương trình tương tự như soạn thảo văn bản. Lưu chương trình vào đĩa
bằng cách nhấn lệnh Save (Ctrl + S).
b) Dịch và chạy chương trình
Để chương trình có thể được máy tính thực thi (chạy) thì ta phải thực hiện dịch mã nguồn sang
dạng một file dạng nhị phân sau đó máy tính có thể thực thi file nhị phân này.
- Để dịch chương trình ta sử dụng tổ hợp phím: Ctrl + F9 hoặc click vào biểu tượng trên
thanh công cụ hoặc chọn chức năng Build -> Build trên thanh menu. Nếu chương trình viết có
lỗi thì sẽ không thể dịch được và các lỗi sẽ được thông báo ở phần (4).
- Để chạy chương trình ta sử dụng tổ hợp phím: Ctrl + F10 hoặc click vào biểu tượng trên
thanh công cụ hoặc chọn chức năng Build -> Run trên thanh menu.
- Để thực hiện 2 thao tác dịch và chạy liên tiếp ta sử dụng phím F9 hoặc click vào biểu tượng
trên thanh công cụ hoặc chọn chức năng Build -> Build and run trên thanh menu.
3. Gỡ rối và sửa lỗi
Khi dịch chương trình, nếu có lỗi thì Code::Blocks sẽ thông báo lỗi cho ta thấy ở ngay tại khu vực
soạn thảo và cả khu vực thông báo. Dựa vào những thông báo đó ta sẽ sửa lại các câu lệnh cho phù
hợp. Đến khi không còn các lỗi cú pháp thì chương trình có thể dịch và chạy được.
Sau khi chương trình được dịch và chạy thì cũng không thể đảm bảo rằng nó sẽ cho ra được kết quả
đúng như mong muốn. Nếu như chưa có kết quả đúng, ta phải tìm xem chương trình sai ở lệnh nào,
quá trình này gọi là gỡ rối.
Để gỡ rối ta nên sử dụng các thao tác sau để quá trình này thực hiện dễ dàng hơn:
- Chạy đến một dòng lệnh mong muốn: ta click chuột vào bên trái một dòng lệnh (sẽ có hình tròn
màu đỏ hiện lên tại vị trí click) sau đó sử dụng phím F8 thì máy tính sẽ thực thi các lệnh từ đầu
chương trình chính cho đến dòng lệnh được đánh dấu và dừng lại.
- Chạy từng dòng lệnh: trong khi đang thực hiện gỡ rối, ta có thể cho máy tính chỉ chạy từng
dòng lệnh một khi ta ấn phím F7 hoặc Shift + F7.
- Kiểm tra giá trị các biến trong quá trình gỡ rối: trong quá trình gỡ rối chạy từng dòng lệnh, ta
nên cho hiển thị cửa sổ watches (bằng cách chọn lệnh Debug -> Debugging windows ->
watches). Trong cửa sổ Watches, ta có thể kiểm tra giá trị của biến bằng cách gõ tên biến vào
cột đầu tiên trong cửa sổ. Hình dưới là một ví dụ:

THPT Tı̃nh Gia 2 Page 7


Ngôn ngữ lập trình C++

THPT Tı̃nh Gia 2 Page 8


Ngôn ngữ lập trình C++

§ 4. Các kiểu dữ liệu

Các bài toán trong thực tế thường có dữ liệu vào và kết quả ra thuộc những kiểu dữ liệu quen biết
như số nguyên, số thực, kí tự,... Khi cần lập trình cho những bài toán như vậy, người lập trình sử dụng
các kiểu dữ liệu đó thường gặp một số hạn chế nhất định, phụ thuộc vào các yếu tố như dung lượng bộ
nhớ, khả năng xử lí của CPU,...
Vì vậy, mỗi ngôn ngữ lập trình thường cung cấp một số kiểu dữ liệu chuẩn cho biết phạm vi giá trị
có thể lưu trữ, dung lượng bộ nhớ cần thiết để lưu trữ và các phép toán tác động lên dữ liệu. Dưới đây
xét một số kiểu dữ liệu thường dùng trong C++:
1. Kiểu kí tự
Một giá trị kiểu kí tự char chiếm 1 byte (8 bit) và biểu diễn được một kí tự thuộc bộ mã ASCII. Ví
dụ, kí tự A có mã ASCII là 65, kí tự a có mã ASCII là 97, kí tự 0 có mã ASCII là 48, kí tự dấu cách có
mã ASCII là 32. Có hai kiểu kí tự: [signed] char và unsigned char.

2. Kiểu số nguyên

THPT Tı̃nh Gia 2 Page 9


Ngôn ngữ lập trình C++

3. Kiểu số thực

4. Kiểu logic
Một giá trị kiểu bool chiếm 1 byte và biểu diễn giá trị false (0) hoặc true (1 hay một số khác 0).

THPT Tı̃nh Gia 2 Page 10


Ngôn ngữ lập trình C++

§ 6. Biến và khai báo biến

Biến (variable) 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.
1. Khai báo
Các biến dùng trong chương trình đều phải khai báo tên và kiểu dữ liệu trước khi sử dụng. Tên
biến dùng để xác lập quan hệ giữa biến với địa chỉ bộ nhớ nơi lưu trữ giá trị biến. Việc khai báo biến
được thực hiện theo mẫu:
Tên_kiểu_dữ_liệu Tên_biến;
Trong đó, Tên_biến có thể là 1 biến hoặc danh sách các biến được ngăn cách nhau bởi dấu phẩy (,).
Câu lệnh dưới đây dùng để khai báo hai biến kiểu số nguyên a, b và biến số thực r:
int a;
int b;
float r;
Hoặc với hai biến a, b cùng một kiểu dữ liệu thì có thể khai báo:
int a, b;
2. Phạm vi của biến
Tất cả các biến đều phải đặt tên và chỉ rõ kiểu dữ liệu của nó trước khi sử dụng. Một biến có thể là
biến toàn cục hoặc là biến cục bộ. Biến toàn cục là biến được khai báo ở bên ngoài các hàm. Biến cục
bộ là biến được khai báo bên trong phần thân hàm hoặc khối lệnh. Phạm vi của biến cục bộ bị giới hạn
bởi cặp dấu {} nơi khai báo chúng. Như ví dụ dưới đây, biến x, y là 2 biến cục bộ của hàm main, nó
không thể sử dụng cho các hàm khác bên ngoài hàm main còn biến ket_qua là biến toàn cục, nó có thể
được sử dụng ở mọi nơi trong chương trình.

3. Khởi tạo biến


Khi khai báo biến cục bộ, mặc định biến này sẽ được gán cho một giá trị bất kì. Tuy nhiên, đôi lúc
ta muốn gán cho nó một giá trị xác định ngay từ lúc khai báo biến (gọi là khởi tạo). Có hai cách để
khởi tạo biến:
Cách 1: Kiểu_dữ_liệu Tên_biến = Giá_trị_khởi_tạo;
Ví dụ: int a = 0; // Khai báo biến a kiểu int và cho nó giá trị ban đầu là 0
double x, y = 3.14, z;
Cách 2: Kiểu_dữ_liệu Tên_biến (Giá_trị_khởi_tạo);
Ví dụ: int a(0);

THPT Tı̃nh Gia 2 Page 11


Ngôn ngữ lập trình C++

4. Một số chú ý khi khai báo biến


Cần đặt tên biến sao cho gợi nhớ đến ý nghĩa của biến đó. Điều này rất có lợi cho việc đọc, hiểu và
sửa đổi chương trình khi cần thiết. Ví dụ, cần đặt tên hai biến biểu diễn điểm toán, điểm tin thì không
nên vì ngắn gọn mà đặt tên biến là d1, d2 mà nên đặt là dtoan, dtin.
Không nên đặt tên biến quá ngắn hay quá dài, dễ mắc lỗi khi viết nhiều lần tên biến. Ví dụ, không
nên dùng d1, d2 hay diemmontoan, diemmontin cho điểm toán, điểm tin của học sinh. Trong những
trường hợp tên dài, có thể dùng dấu _ hoặc in hoa các chữ cái đầu tiên của mỗi từ trong tên biến:
diem_toan, diemToan,…
C++ phân biệt chữ in hoa, in thường nên khi khai báo biến cần lưu ý. Thông thường ta hay dùng
chữ thường để đặt tên biến: x, y, a, b,… và hay dùng chữ in hoa để đặt tên hằng: N, M,…
Khi khai báo biến cần đặc biệt lưu ý đến phạm vi giá trị của nó. Ví dụ, khi khai báo biến biểu diễn
số tuổi có thể sử dụng kiểu số nguyên dương unsigned short, nhưng biến biểu diễn nhiệt độ thì dùng
kiểu số thực float.

THPT Tı̃nh Gia 2 Page 12


Ngôn ngữ lập trình C++

§ 7. Hằng

Hằng là đại lượng có giá trị không thay đổi trong quá trình thực hiện chương trình.
1. Sử dụng bộ tiền xử lý #define
Sử dụng cấu trúc sau để định nghĩa 1 hằng:
#define dinh_danh gia_tri
Ví dụ:
#define CHIEUDAI 15
#define CHIEURONG 12
#define NEWLINE '\n'
2. Sử dụng từ khóa const
Có thể định nghĩa hằng qua từ khóa const, cấu trúc như sau:
const kieu_du_lieu ten_bien = gia_tri;
Ví dụ:
const int CHIEUDAI = 15;
const int CHIEURONG = 12;
const char NEWLINE = '\n';
3. Các loại hằng trong chương trình
Một số loại hằng thông dụng trong khi viết chương trình:
- Hằng số nguyên
- Hằng số thực
- Hằng kí tự
- Hằng chuỗi
- Hằng số kiểu liệt kê

THPT Tı̃nh Gia 2 Page 13


Ngôn ngữ lập trình C++

§ 8. Phép toán, biểu thức, câu lệnh gán


Để mô tả các thao tác trong thuật toán, mỗi ngôn ngữ lập trình đều xác định và sử dụng một số
khái niệm cơ bản: phép toán, biểu thức, gán giá trị cho biến.
1. Phép toán
Tương tự trong toán học, trong các ngôn ngữ lập trình đều có những phép toán số học như cộng,
trừ, nhân, chia trên các đại lượng thực, các phép toán chia nguyên và lấy phần dư, các phép toán quan
hệ,…
Bảng dưới đây là kí hiệu các phép toán đó trong toán và trong C++:
Phép toán Trong toán học Trong ngôn ngữ C++
Các phép toán số học + (cộng), - (trừ), x (nhân), / (chia), +, -, *, / (chia) , % (lấy phần
mod (lấy phần dư) dư).
Các phép toán quan hệ < (nhỏ hơn), ≤ (nhỏ hơn hoặc bằng), > <=, >, >=, ==, !=
(lớn hơn), ≥ (lớn hơn hoặc bằng), =
(bằng), ≠ (khác)
Các phép toán lôgic  (phủ định),  (hoặc),  (và) !, || , &&
2. Biểu thức
Biểu thức là một sự kết hợp giữa các phép toán và các toán hạng để diễn đạt một công thức toán
học nào đó. Khi viết biểu thức có thể dùng các dấu ngoặc tròn ( và ) để thể hiện đúng trình tự tính toán
trong biểu thức. Mỗi biểu thức sẽ có một giá trị và nói chung cái gì có một giá trị đều được xem là biểu
thức. Như vậy, hằng, biến đều được xem là biểu thức.
a) Biểu thức số học
Biểu thức số học là một biến hoặc một hằng kiểu số hoặc kết hợp giữa các giá trị số và các phép
toán số học và các dấu ngoặc tròn.
Ví dụ:

Hàm số học chuẩn


Để lập trình được dễ dàng, thuận tiện hơn, các ngôn ngữ lập trình đều có thư viện chứa một số
chương trình tính giá trị những hàm toán học thường dùng. Các chương trình như vậy được gọi là các
hàm số học chuẩn. Mỗi hàm chuẩn có tên riêng. Đối số của hàm là một hay nhiều biểu thức số học và
được đặt trong cặp ngoặc tròn ( và ) sau tên hàm. Bản thân hàm chuẩn cũng được coi là một biểu thức
số học và nó có thể tham gia vào biểu thức số học như một toán hạng (giống như biến và hằng). Kết

THPT Tı̃nh Gia 2 Page 14


Ngôn ngữ lập trình C++

quả của hàm có thể là nguyên hoặc thực hay phụ thuộc vào kiểu của đối số. Bảng dưới đây cho biết
một số hàm chuẩn trong thư viện thường dùng:

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ệ tạo thành một biểu thức quan hệ.
Một biểu thức quan hệ có dạng:
<Biểu thức 1> <Phép toán quan hệ> <Biểu thức 2>
Trình tự thực hiện:
- 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ị logic (true hoặc false).
Ví dụ:

THPT Tı̃nh Gia 2 Page 15


Ngôn ngữ lập trình C++

c) Biểu thức logic


Biểu thức logic có thể là một biến, hằng logic hoặc là các biểu thức quan hệ liên kết với nhau bởi
các phép toán logic. Các biểu thức quan hệthường được đặt trong cặp ngoặc ( và ). Giá trị biểu thức
lôgic là true hoặc false.
- Phép toán ! cho kết quả là giá trị nghịch đảo của biểu thức đứng sau nó (nghịch đảo của true là
false, nghịch đảo của false là true).
Ví dụ:
! (1>2) = !(false) = true;
- Phép toán && cho ra kết quả là true nếu và chỉ nếu 2 biểu thức được liên kết đều có giá trị là
true.
Ví dụ:
x=4;
(x>0) && (x % 2 == 0) = (true) && (true) = true
(x>0) && (x % 3 == 0) = (true) && (false) = false
- Phép toán || cho ra kết quả là true nếu và chỉ nếu một trong 2 biểu thức được liên kết có giá trị
là true.
Ví dụ:
x=4;
(x>0) || (x % 2 == 0) = (true) || (true) = true
(x>0) || (x % 3 == 0) = (true) || (false) = true
(x==0) || (x % 3 ==0) = (false) || (false) = false
3. Câu lệnh gán và biểu thức gán
Lệnh gán là một trong những lệnh cơ bản nhất của các ngôn ngữ lập trình. Trong C++, câu lệnh
gán có dạng:
<tên biến> = <biểu thức>
Ý nghĩa: Tính toán biểu thức bên phải rồi lưu kết quả tính được vào tên biến ở vế trái.
Ví dụ.
Cho khai báo:
float r; int i;
Khi dùng các lệnh:
i = 10;// Đọc là i gán bằng 10
r = i * 5 + 2.5;
thì biến i có giá trị là 10, biến r có giá trị là 52.5
Nếu thực hiện tiếp lệnh gán: r = 2/10; thì giá trị của biến R bây giờ là 0.2.
Như vậy, nếu một biến được gán nhiều lần thì nó sẽ lấy giá trị của lần gán sau cùng, tính đến thời
điểm đang xét.
Ngôn ngữ C++ cung cấp một số phép gán nhanh như sau:
Bình thường Rút gọn
x = x+1 x++ hoặc ++x

THPT Tı̃nh Gia 2 Page 16


Ngôn ngữ lập trình C++

x = x-1 x—hoặc –x
x = x+a x+=a
x = x-a x -= a
x = x*a x *=a
x = x/a x/=a
x=x%a x %=a
4. Thứ tự ưu tiên các phép toán
Các phép toán có độ ưu tiên khác nhau, điều này có nghĩa là trong cùng một biểu thức một số phép
toán này được thực hiện trước một số phép toán khác. Thứ tự ưu tiên của các phép toán này được trình
bày trong bảng sau:

THPT Tı̃nh Gia 2 Page 17


Ngôn ngữ lập trình C++

§ 9. Vào/ ra trong C++

1. Vào/ra với thiết bị chuẩn (vào từ bàn phím, đưa dữ liệu ra màn hình)
a) Nhập dữ liệu từ bàn phím
Cấu trúc:
cin >> biến 1 >> ... >> biến n;
Ví dụ:
int x; float y;
cin>>x>>y;
Khi gặp lệnh này, máy tính sẽ dừng lại để đợi người chạy chương trình nhập vào các giá trị tương
ứng với các biến.
b) Đưa kết quả ra màn hình
Cấu trúc:
cout<< giá trị<< giá trị<<…<<giá trị;
Ví dụ:
cout<<5<<x+y<< "hello”;
Định dạng khi in ra màn hình
 Để quy định số thực được in ra có đúng p chữ số sau dấu chấm thập phân, ta sử dụng hàm
setprecision(p) ngay trước giá trị thực cần đưa ra
cout << fixed<< setprecision(p) << giá trị;
Ví dụ:
cout<<fixed<< setprecision(3) << 3.1412;
Kết quả ngoài màn hình sẽ đưa ra giá trị là 3.14
 Để quy định độ rộng tối thiểu là w vị trí cho giá trị được in trong các toán tử xuất, ta dùng hàm:
setw(w). Hàm này cần đặt trong toán tử xuất và nó chỉ có hiệu lực cho một giá trị được in gần nhất.
Các giá trị in ra tiếp theo sẽ có độ rộng tối thiểu mặc định là 0.
Lệnh cout << setw(5) << “C” << “++”; sẽ ghi ra màn hình 4 dấu cách và 3 kí tự C++.
 Chỉ thị xuống dòng endl
2. Vào / ra với file
Vào/ra với file cũng tương tự như với thiết bị chuẩn, nhưng trước khi thực hiện thao tác vào/ ra thì
ta cần sử dụng lệnh sau:
- Đối với thao tác nhập dữ liệu từ file:
Ta sử dụng lệnh với cấu trúc:
freopen("<tên file>","r",stdin);
Ví dụ: freopen("baitap.inp","r",stdin);
- Đối với thao tác đưa dữ liệu ra file:
freopen("<tên file>","w",stdout);
Ví dụ: freopen("baitap.out","w",stdout);

THPT Tı̃nh Gia 2 Page 18


Ngôn ngữ lập trình C++

Bài tập chương I


Bài 1. Viết chương trình nhập vào từ bàn phím 2 số nguyên có giá trị không quá 109. Hãy đưa ra màn
hình tích của 2 số đã nhập.
Bài 2. Viết chương trình nhập vào từ bàn phím số thực a. Yêu cầu đưa ra màn hình diện tích hình tròn
bán kính a, kết quả làm tròn 2 chữ số thập phân.
Bài 3. Viết chương trình nhập số tự nhiên N, N  200 từ bàn phím. Tính và đưa kết quả tổng S ra màn
hình, S = 1 + 2 + 3 + … + N.
Bài 4. Viết chương trình nhập hai số thực a, b vào từ bàn phím, tính và đưa kết quả biểu thức P =
√ ra màn hình. Kết quả làm tròn đến 2 chữ số thập phân.
Bài 5. Hãy viết chương trình nhập từ bàn phím số a (a > 0) rồi tính và đưa ra diện tích phần được gạch
chéo trong hình 1. Kết quả làm tròn đến 4 chữ số thập phân đưa ra màn hình.

Bài 6. Hãy viết chương trình nhập từ bàn phím 2 kích thước chiều dài k1 và chiều rộng k2 của hình
chữ nhật. Tính và đưa ra chu vi, diện tích của hình chữ nhật và của đường tròn tiếp xúc với 2 chiều của
hình chữ nhật đó (hình 2). Kết quả làm tròn đến 3 chữ số thập phân, đưa ra màn hình.
Bài 7. Yêu cầu nhập vào 1 số nguyên có 3 chữ số từ file có tên “bai7.inp”. Hãy đưa ra file có tên
“bai7.out” chữ số hàng chục của số đã cho.
Bài 8. Yêu cầu nhập từ file “bai8.inp” một số nguyên dương có 5 chữ số, có dạng . Hãy đưa ra
2 2 2 2 2
file “bai8.out” giá trị: a + b + c + d + e .
Bài 9. Cho 4 số nguyên x, y, z, t trong file “bai9.inp” thể hiện tọa độ của 2 điểm (x,y) và (z,t) trong hệ
tọa độ Đề các. Yêu cầu đưa ra file “bai9.out” khoảng cách giữa 2 điểm đã cho, kết quả làm tròn đến 2
chữ số thập phân.
Bài 10. Cho trong file “bai10.inp” một số có 8 chữ số ở hệ cơ số 2 (hệ nhị phân). Yêu cầu chuyển đổi
số đã cho sang hệ thập phân, kết quả ghi ra file “bai10.out”.

THPT Tı̃nh Gia 2 Page 19

You might also like