Professional Documents
Culture Documents
Hồ Chí Minh
2
Lịch sử về NNLT C++
• Năm 1978 ngôn ngữ lập trình C ra đời.
• Năm 1983 NN C++ chính thức được
giới thiệu.
• Thực chất, C++ giống như C và được
bổ sung thêm một số mở rộng quan
trọng, trong đó, quan trọng nhất là ý
tưởng về lập trình hướng đối tượng.
• C++ không phải là NNLT hướng đối
tượng đầu tiên, tuy nhiên C++ là NNLT
hướng đối tượng hoàn thiện đầu tiên
3
Một số khác biệt giữa C++ và C
4
Một số khác biệt giữa C++ và C
• Cách ghi chú thích
– Có thể dùng thêm cách chú thích bằng
cách dùng: //
• Cách chuyển đổi kiểu dữ liệu (ép kiểu)
Ví dụ:
y = 1;
float x = 1.7;
int y = (int) x;
z = 65;
char ch = ‘A’;
int z = (int) ch;
5
Một số khác biệt giữa C++ và C
• Vị trí khai báo biến
– Trong C++ ta có thể khai báo biến tại bất
cứ vị trí nào
• Khai báo struct và union
C: C++:
struct Phanso struct Phanso
{ {
int tu, mau; int tu, mau;
}; };
… …
struct Phanso p; Phanso p;
6
Một số khác biệt giữa C++ và C
• Toán tử new (cấp phát) và delete (hủy bộ
nhớ) Khai báo và cấp
phát một con trỏ
a kiểu thực
C: C++:
float *a; float *a;
a = (float *) malloc (sizeof(float)); a = new float;
*a = 3.14; *a = 3.14;
… Khai báo
và …
cấp
free a; delete a;
phát một mảng a
gồm 100 số thực
C: C++:
float *a; float *a;
a = (float *) malloc (100*sizeof(float)); a = new float[100];
… …
free a; delete[] a;
7
Một số khác biệt giữa C++ và C
• Truyền tham số cho hàm
Viết hàm cộng
hai phân số a và
b, kết quả được
C: lưu vào phân số C++:
void Cong(Phanso *a, Phanso b) a void Cong(Phanso &a, Phanso b)
{ {
…. ….
} }
… …
Phanso a,b; Phanso a,b;
a.tu = 1; a.mau = 5; a.tu = 1; a.mau = 5;
b.tu = 2; b.mau = 3; b.tu = 2; b.mau = 3;
Cong(&a, b); Cong(a, b);
9
Trước hết chúng ta hãy ôn tập lại các kỹ
thuật lập trình với ngôn ngữ C
10
Khái niệm con trỏ
• Khi nói đến một biến, ta thường quan
tâm đến:
– Tên biến
– Giá trị của biến
– Địa chỉ của biến trong bộ nhớ
Tên biến
Giá trị của biến
x
5
0FF2
11
Khái niệm con trỏ (tt)
• Con trỏ được dùng để lưu địa chỉ của
biến hay ô nhớ
• Con trỏ kiểu gì sẽ lưu địa chỉ của biến
kiểu ấy.
Ví dụ:
int x = 5;
int *px = &x; // px mang địa chỉ của biến x
*px = 6; // x lập tức bị mang giá trị 6
px = 9; // px sẽ chỉ vào ô nhớ có địa chỉ là 9
12
Khái niệm con trỏ (tt)
• Trong C, mảng cũng được đồng nhất với
con trỏ
Ví dụ:
int a[4] = {1,2,3,4};
/* a cũng có thể được xem là con trỏ mang địa chỉ
của ô nhớ đầu tiên trong mảng (đ/c của a[0]) */
int x = *a; // x = 1;
x = *(a+1); // x mang giá trị của ô nhớ kế tiếp x = 2
*(a+2)=7; // gán a[2] là 7
13
Chuỗi và các hàm liên quan
• Trong C không có khái niệm chuỗi
thuần túy như trong Pascal (string)
• Chuỗi được hiểu là một mảng các ký tự
(cũng có thể được coi là một con trỏ
kiểu ký tự)
• Bài tập: Hãy nhập vào từ có 2 tiếng, sau
đó tìm cách đảo ngược 2 tiếng này.
– VD: Nhập vào: Dai hoc -> xuất: hoc Dai
14
Câu hỏi và thảo luận
15
Chân thành cảm ơn !
16
16