Giáo trình Ngôn ngữ lập trình C++ - Trường THPT chuyên Lê Hồng Phong
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
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 10File đính kèm:
giao_trinh_ngon_ngu_lap_trinh_c_truong_thpt_chuyen_le_hong_p.docx

