Giáo trình Ngôn ngữ lập trình C++ - Trường THPT chuyên Lê Hồng Phong

docx 52 trang Mạnh Nam 07/06/2025 120
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Ngôn ngữ lập trình C++ - Trường THPT chuyên Lê Hồng Phong", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

Tóm tắt nội dung tài liệu: Giáo trình Ngôn ngữ lập trình C++ - Trường THPT chuyên Lê Hồng Phong

Giáo trình Ngôn ngữ lập trình C++ - Trường THPT chuyên Lê Hồng Phong
 Ngôn ngữ lập trình C++
 SỞGIÁO DỤC VÀ ĐÀO TẠO NAM ĐỊNH
 TRƯỜNG THPT CHUYÊN LÊ HỒNG PHONG
 Ngôn ngữ lập trình C++
 (Tài liệu lưu hành nội bộ)
Tác giả: Đặng Trung Kiên
Trình độ chuyên môn: - Cử nhân Sư phạm Tin học
 - Cử nhân Sư phạm Toán học
Chức vụ: Giáo viên
Nơi công tác: Trường THPT chuyên Lê Hồng Phong
 Đặng Trung Kiên Trang 1 Ngôn ngữ lập trình C++
 BÀI 2. CÁC THÀNH PHẦN CỦA NGÔN NGỮ LẬP TRÌNH 
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
 • Ngữ nghĩa
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
Trong C++, bảng chữ cái bao gồm các kí tự sau:
 • 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 0 1 2 3 4 5 6 7 8 9
 • Các kí tự đặc biệt
 + - * / = [ ] ,
 ; # A $ @ & ( ) { }
 c % _ \ !
 Các kí tự đặc biệt còn có thêm các dấu không nhìn thấy như dấu cách (số thứ tự 
trong bảng mã ASCII 32, kí hiệu là ‘ ‘ ), dấu nhảy cách tab, dấu xuống dòng (số thứ 
tự trong bảng mã ASCII là 13, còn kí hiệu là ‘\n’)
 Việc thực hành thường xuyên sẽ khiến các em nhớ dần các kí hiệu của một ngôn 
ngữ lập trình. Một số lưu ý dành cho các em
 Các em nên nhớ số thứ tự trong bộ mã ASCII của các kí tự, vì có lúc ta sẽ phải 
dùng đến chúng:
 • Ví dụ, kí tự ‘A’ có số thứ tự trong bộ mã ASCII là 65, cho tới kí tự ‘Z’ có 
 số thứ tự trong bộ mã ASCII là 90
 • Kí tự ‘a’ có số thứ tự trong bộ mã ASCII là 97, cho tới kí tự ‘z’ có số thứ 
 tự trong bộ mã ASCII là 122
 • Kí tự ‘0’ có số thứ tự trong bộ mã ASCII là 48, cho tới kí tự ‘9’ có số thứ 
 tự trong bộ mã ASCII là 57.
b) Cú pháp
 Trong ngôn ngữ lập trình, 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. Nếu tổ hợp các kí tự không hợp lệ, chương trình dịch 
sẽ thông báo lỗi cú pháp tới người lập trình
 Đặng Trung Kiên Trang 2 Ngôn ngữ lập trình C++
Lấy ví dụ, thông thường các câu lệnh khi kết thúc sẽ có dấu chấm phẩy để đánh dấu 
kết thúc câu lệnh đó, giống kiểu viết hết một câu trong Tiếng Việt thì phải có dấu 
chấm (có những lúc cuối câu lệnh không cần phải có dấu chấm phẩy):
Xét chương trình sau trong ngôn ngữ lập trình C++:
 #include 
 using namespace std;
int main()
{
 cout << "Hello world!";
 return 0;
}
Câu lệnh cout <<"Hello world!" ; này viết đúng cú pháp. 
Tuy nhiên, nếu ta bỏ dấu ; ở vị trí cuối câu, chương trình 
dịch có thể báo lỗi sau: “ expected ; before return” nghĩa 
là mong đợi người lập trình thêm dấu ; trước return
a) Ngữ nghĩa
 Đối với ngôn ngữ lập trình cũng vậy, 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 tổ hợp các kí hiệu sau:
 (1) A+B
 (2) I+J
Với giả thiết A và B là hai số thực, I, J là hai số nguyên. Khi đó dấu ‘+’ trong biểu 
thức (1) được hiểu là cộng hai số thực, kết quả thu được sẽ phải là một số thực, dấu 
‘+’ trong biểu thức (2) được hiểu là cộng hai số nguyên, do đó kết quả thu được sẽ 
phải là một số nguyên. Như vậy, ngữ nghĩa (ý nghĩa) củ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ệ, con 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 dịch được 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ể Ví dụ:
#include using namespace std;
int main()
{ int x=5,y=0;
 cout <<x/y;
 return 0;
}
Đây là chương trình đưa ra màn hình kết quả của phép chia x cho y, không hề có lỗi 
 Đặng Trung Kiên Trang 3 Ngôn ngữ lập trình C++
sai về cú pháp, nên chương trình dịch không hề báo lỗi, nhưng khi chạy chương trình 
lại xuất hiện lỗi về ngữ nghĩa. Đó là phép chia cho số 0. Tuy nhiên nếu thay y bằng 
một số khác 0 thì chương trình lại ra một kết quả đúng.
2. Một số khái niệm
a) Tên
 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 hay còn gọi là định danh 
(identificater).
Quy tắc đặt tên trong ngôn ngữ lập trình C++: Tên là dãy kí tự liền nhau gồm 
các chữ cái a..z (từ a tới z), A..Z (từ A tới Z), các chữ số 0..9 (từ 0 tới 9), và dấu 
gạch nối dưới (dấu _). Tên bắt đầu bằng chữ cái hoặc dấu gạch dưới. Tuy nhiên, 
tên không được bắt đầu bằng chữ số. Tên không được chứa các kí tự đặc biệt như 
dấu cách, dấu chấm câu,.... Ví dụ về cách đặt tên đúng: toi_yeu_lop10tin, dp, dfs
Ví dụ về cách đặt tên sai: toi-yeu-lop10tin (sai vì chứa dấu gạch ngang) 3PI (sai vì 
bắt đầu bằng chữ số)
Pi$ (sai vì chứa kí tự đặc biệt $)
-pi” (sai vì chứa kí tự đặc biệt —)
Lưu ý: Khác với Pascal, Ngôn ngữ lập trình C++ có phân biệt chữ hoa và chữ 
thường. Do vậy, tên n sẽ khác tên N
Ngôn ngữ lập trình C++ chia ra làm ba loại tên:
 • Tên dành riêng
 • Tên chuẩn
 • Tên do người lập trình đặt
Tên dành riêng
 Một số tên đượ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 sử dụng với ý nghĩa khác. Những tên này được gọi là 
tên dành riêng (còn được gọi là từ khóa).
Chú ý: Không được đặt tên (tên biến, tên hằng, tên kiểu, tên hàm,...) trùng với 
các từ khóa
Ví dụ: Một số tên dành riêng: main, include, if, while, void
Main: ý nghĩa là hàm chính, chương trình C++ có thể có nhiều hàm, khi chạy 
chương trình, sẽ chạy từ hàm chính trước.
Include: trong Tiếng Anh là bao gồm, bao hàm, thường được dùng với ý nghĩa khai 
báo các thư viện
If: nghĩa là nếu, xuất hiện trong câu lệnh rẽ nhánh nếu.thì, nếu một điều kiện xảy ra 
thì thực hiện lệnh,..
Tên chuẩn
 Một số tên được ngôn ngữ lập trình dùng với ý nghĩa nhất định nào đó. 
 Đặng Trung Kiên Trang 4 Ngôn ngữ lập trình C++
Những tên này được gọi là tên chuẩn. Tuy nhiên, người lập trình có thể khai báo 
và dùng chúng với ý nghĩa và mục đích khác.
Ý nghĩa của các tên chuẩn được quy định trong các thư viện của ngôn ngữ lập trình
Ví dụ trong ngôn ngữ lập trình C++: Cin ,cout, min, max, ..
Ví dụ về tên min,
Ý nghĩa 1: trong thư viện mang tên của C++ (thư viện của ngôn ngữ 
lập trình là nơi chứa một số chương trình thông dụng đã được lập trình sẵn), min 
được dùng với ý nghĩa tên của hàm dùng để tìm giá trị nhỏ nhất trong hai số
#include #include using namespace 
std;
int main()
{ cout<<min(6,8);
 return 0;
}
Chương trình trên sẽ đưa ra giá trị 6, vì 6 là giá trị 
nhỏ nhất trong hai số 6 và 8
Tên do người lập trình đặt
 Tên do người lập trình đặt được dùng với ý nghĩa riêng, xác định bằng cách 
khai báo trước khi sử dụng. Các tên này không được trùng với tên dành riêng.
Ví dụ:
Tên do người lập trình đặt:
TIN
TUHOC
THANHCONG
b) Hằng và biến
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.
 Trong ngôn ngữ lập trình C++, có các loại hằng sau:
 • Hằng số học là các số nguyên hay số thực (dấu phẩy tĩnh hoặc dấy phẩy động)
 • Hằng logic là giá trị đúng hoặc sai tương ứng với true hoặc false.
 • Hằng xâu là dãy kí tự trong bộ mã ASCII. Khi viết, dãy kí tự này được đặt trong 
 dấu nháy kép 
 • Hằng kí tự chỉ gồm một kí tự trong bộ mã ASCII. Khi viết, kí tự này được đặt 
 trong dấu nháy đơn ‘
Ví dụ:
Hằng số học 2 10 -5 +18
1e6 (nghĩa là 1 nhân với 10 mũ 6, e nghĩa là 10)
Hằng logic
 Đặng Trung Kiên Trang 5 Ngôn ngữ lập trình C++
Trong C++:
true false
Chú ý là C++ phân biệt hoa thường nên không được viết là TRUE FALSE
Về hằng logic trong C++, true còn mang giá trị 1, false còn mang giá trị 0, nên khi 
đưa giá trị các biến ra màn hình, có thể sẽ hiện ra 1 hoặc 0, chứ không hiện ra true 
hoặc false. Tuy nhiên, với một biến x nếu mang giá trị logic, ta gán cho x bằng 1 hoặc 
true đều giống nhau.
- Hằng xâu “Information”, “Lop 10 Tin”
Lưu ý: ở đây xâu “Lop 10 Tin” có dấu cách giữa các từ, theo quy tắc đặt tên thì không 
được phép có dấu cách, tuy nhiên với tên xâu thì không cần theo quy tắc đó, dấu cách 
ở trong xâu này chính là một kí tự trong bộ mã ASCII.
- Hằng kí tự ‘a’ ‘0’ ‘1’
 Lưu ý là ‘0’ ở đây là kí tự 0, chứ không phải là số 0
Biến
 Biến là đại lượng được đặt tên, dùng để lưu trữ giá trị có thể được thay đổi 
trong quá trình thực hiện chương trình. Ví dụ, biến x, biến y, biến z,....
c) Chú thích
 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.
 Các cách tạo chú thích trong C++ là:
 • Đặt // trên một dòng
 • Đặt giữa cặp dấu /* và */
Ví dụ:
#include 
#include 
using namespace std;
int main()
{ for(long i=2;i<=100;i++)
if (i%2==0)cout<<i<<" ";//Neu i la so chan thi dua gia 
tri i ra man hinh
 return 0;
 TÓM TẮT
 Các thành phần của ngôn ngữ lập trình: bảng chữ cái, cú pháp, và ngữ nghĩa
 - Mọi đối tượng trong chương trình đều phải được đặt tên:
 ➢ Tên dành riêng: Được dùng với ý nghĩa riêng, không được dùng với ý 
 nghĩa khác.
 ➢ Tên chuẩn: Tên dùng với ý nghĩa nhất định, khi cần dùng với ý nghĩa 
 khác thì phải khai báo
 Đặng Trung Kiên Trang 6 Ngôn ngữ lập trình C++
 ➢ Tên do người lập trình đặt: Cần khai báo trước khi sử dụng 
 - Hằng: Đại lượng có giá trị không thay đổi trong quá trình thực hiện 
 chương trình
 - Biến: Đại lượng được đặt tên. Gía trị của biến có thể thay đổi trong 
 quá trình thực hiện chương trình.
 BÀI TẬP
1. Chương trình dịch là gì? Tại sao cần phải có chương trình dịch?
2. Biên dịch và thông dịch khác nhau như thế nào?
3. Hãy cho biết các điểm khác nhau giữa tên dành riêng và tên chuẩn?
4. Hãy tự viết ra ba tên đúng theo quy tắc đặt tên của ngôn ngữ lập trình C++?
5. Hãy cho biết những biểu diễn nào dưới đây không phải là biểu diễn hằng trong 
ngôn ngữ lập trình C++ và chỉ rõ lỗi trong từng trường hợp, nếu đúng biểu diễn hằng 
trong ngôn ngữ lập trình C++, hãy chỉ rõ đó là hằng gì:
a) 150.0
b) -22
c) 6,23
d) ‘43’
e) A20
f) 1.06E-15
g) 4+6
h) ’C’
i) ‘TRUE’
 Đặng Trung Kiên Trang 7 Ngôn ngữ lập trình C++
 CHƯƠNG II. CHƯƠNG TRÌNH ĐƠN GIẢN
 BÀI 3. CẤU TRÚC CHƯƠNG TRÌNH
1. Cấu trúc chung
 Chương trình viết bằng ngôn ngữ lập trình C++ gồm hai phần: phần khai báo 
và phần thân. Phân thân chương trình nhất thiết phải có. Phần khai báo có thể có 
hoặc không tùy theo từng chương trình cụ thể.
 Khi diễn giải cú pháp của ngôn ngữ lập trình người ta thường sử dụng ngôn 
ngữ tự nhiên. Các diễn giải bằng ngôn ngữ tự nhiên được đặt giữa cặp dấu < và dấu 
>. Các thành phần của chương trình có thể có hoặc không được đặt trong cặp dấu [ 
và ]
Với quy ước trên, cấu trúc của một chương trình viết bằng ngôn ngữ lập trình C++ 
có thể được mô tả như sau:
 [ ]
2. Các thành phần của chương trình
a) Phần khai báo
 Có thể có các khai báo cho:
 • Thư viện
 • Hằng
 • Biến
 • Chương trình con (gọi là hàm trong C++)
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 thông dụng đã được lập sẵn. Để sử dụng các chương trình đó cần phải 
khai báo thư viện chứa nó.
Ví dụ: Khai báo thư viện trong C++
#include 
Thư viện iostream trong C++ cung cấp các chương trình (lệnh, hàm) thực hiện các 
nhiệm vụ vào ra dữ liệu chuẩn (input, output). Ví dụ muốn đưa màn hình dòng chữ 
“Xin chào”, ta dùng lệnh cout<<”Xin chao”;
Tuy nhiên nếu ta dùng lệnh cout<<”Xin chao”; luôn, mà không khai báo thư viện 
#include thì chương trình dịch sẽ báo lỗi cú pháp:
—cout was not declare in this scope” nghĩa là từ cout lúc này lại được hiểu là một 
định danh, và chương trình dịch cho rằng nó không được khai báo kiểu dữ liệu. Do 
vậy, muốn sử dụng lệnh cout với ý nghĩa đưa ra màn hình dữ liệu nào đó, ta phải 
khai báo thư viện chứa cout chính là
#include 
 Cách khai báo thư viện trong C++:
 #include 
 Đặng Trung Kiên Trang 8 Ngôn ngữ lập trình C++
Khai báo hằng
Ví dụ: Khai báo hằng trong C++
const int maxn=1000;
const double pi=3.1416
Cú pháp của khai báo hằng trong C++ là:
const = Khai báo 
hằng thường được sử dụng cho những giá trị xuất hiện nhiều lần trong chương trình
Khai báo biến
Chú ý: Tất cả các biến trong chương trình đều phải được đặt tên và khai báo cho 
chương trình dịch biết để lưu trữ, và xử lý. Biến chỉ nhận một giá trị tại mỗi thời 
điểm thực hiện chương trình được gọi là biến đơn. Cách khai báo biến sẽ được trình 
bày riêng trong các bài sau.
Ví dụ, khai báo biến x có kiểu dữ liệu là số nguyên như sau: using namespace 
std;
long x=0; //1
int main()
{
 cout<<x+5; //2
 return 0;
}
Đoạn chương trình trên có ý nghĩa khai báo biến x có kiểu dữ liệu là long (nghĩa là 
số nguyên với phạm vi trong khoảng -2147483648 đến 2147483647), và gán giá trị 
ban đầu của x=0. Câu lệnh 2 dùng để đưa giá trị x+5 ra màn hình. Nếu ta bỏ đi câu 
lệnh 1, thì chương trình dịch sẽ báo lỗi: “x was not declared in this scope'’", nghĩa 
là chương trình dịch không hiểu x có kiểu dữ liệu là gì, hay x không được khai báo 
(declared).
b) Phần thân chương trình (thân hàm trong c++)
Sau đây là cú pháp của phần thân chương trình:
int main()
{ [khai báo biến]
 [các câu lệnh]
 [khai báo biến]
 [các câu lệnh]
 return 0;
}
 • int là kiểu dữ liệu trả về của hàm, ở đây int là viết tắt của integer (nghĩa là số 
 nguyên)
 • main(), main trong tiếng anh nghĩa là chính,khi chạy chương trình trong 
 C++, chương trình sẽ tìm đến hàm main()này đầu tiền (vì sau này có thể có 
 nhiều hàm được cài đặt trong C++ chi tiết có thể tham khao chương trình con 
 Đặng Trung Kiên Trang 9 Ngôn ngữ lập trình C++
 trong C++). Hai dấu () là cần thiết phải có, nhưng bên trong không chứa gì 
 cả.
 • Return nghĩa là trả về, giá trị trả về của hàm số. Ở đây giá trị trả về của hàm 
 số này thường là 0. Nếu không có câu lệnh return, hàm sẽ tự trả về giá trị 0 
 khi kết thúc chương trình.
 • Trong hàm main, ta có thể khai báo biến (có thể có hoặc không), sau đó dùng 
 tới biến đó (muốn dùng biến nào thì khai báo trước biến đó). Các biến được 
 khai báo bên trong một hàm (ở đây là hàm main) được gọi là biến cục bộ 
 (local variable) (biến cục bộ trong C++ là biến được khai báo bên trong 
 cặp dấu { }, biến được khai báo bên ngoài cặp dấu {} được gọi là biến 
 toàn cục)
 • Cặp dấu { } được gọi là cặp dấu mở đầu và kết thúc cho một
 chương trình, ở đây là mở đầu và kết thúc cho hàm main.
3. Ví dụ một chương trình đơn giản
 Như vậy, ta có thể tóm lại toàn bộ cấu trúc của một chương trình viết bằng 
ngôn ngữ lập trình C++ là:
[khai báo thư viện]
[khai báo hằng]
[khai báo biến, biến ở đây gọi là biến toàn cục]
[khai báo chương trình con (hàm số)]
int main()
{[khai báo biến (biến ở đây gọi là biến cục bộ)] [các 
câu lệnh]
 return 0;
}
Sau đây là VD về một chương trình đơn giản viết bằng ngôn ngữ lập trình C++
Ví dụ 1:
#include 
using namespace std;
int main()
{cout << "Hello World!";}
Chương trình này làm nhiệm vụ đưa ra màn hình dòng chữ Hello World.
Ví dụ 2. Nhập vào hai số nguyên x, y. Đưa ra màn hình tổng giá trị của hai số x và y
#include //1
using namespace std; //2
long x,y; //3
int main() //4
{ cin>>x>>y;//5
 cout<<x+y;//6
 return 0;//7
 Đặng Trung Kiên Trang 10

File đính kèm:

  • docxgiao_trinh_ngon_ngu_lap_trinh_c_truong_thpt_chuyen_le_hong_p.docx