Bài giảng
Bài giảng
NGÔN NGỮ LẬP TRÌNH
NGÔN NGỮ LẬP TRÌNH
BẬC CAO
BẬC CAO
Ths. Trần Thị Ngọc Linh
Ths. Trần Thị Ngọc Linh
Chương 1. Giới thiệu ngôn ngữ C và C++
Chương 1. Giới thiệu ngôn ngữ C và C++
Chương 2. Các thành phần cơ bản, các kiểu dữ
Chương 2. Các thành phần cơ bản, các kiểu dữ
liệu cơ sở và các phép toán
liệu cơ sở và các phép toán
Chương 3. Các thao tác xử lý INPUT/OUTPUT
Chương 3. Các thao tác xử lý INPUT/OUTPUT
Chương 4. Cấu trúc điều khiển
Chương 4. Cấu trúc điều khiển
NỘI DUNG
Chương 1. Giới thiệu ngôn ngữ C và C++
Chương 1. Giới thiệu ngôn ngữ C và C++
1.1 Lịch sử ngôn ngữ C và C++
1.1 Lịch sử ngôn ngữ C và C++
-
Do tác giả Dennis Ritchie và Brian Kerninghan xây
Do tác giả Dennis Ritchie và Brian Kerninghan xây
dựng vào những năm 1970
dựng vào những năm 1970
-
Đặc điểm căn bản: vừa có đặc trưng của ngôn ngữ bậc
Đặc điểm căn bản: vừa có đặc trưng của ngôn ngữ bậc
cao và có khá đầy đủ các chức năng của ngôn ngữ bậc
cao và có khá đầy đủ các chức năng của ngôn ngữ bậc
thấp
thấp
-
Có nhiều ngôn ngữ C:
Có nhiều ngôn ngữ C:
Hãng Borland: Turbo C
Hãng Borland: Turbo C
→
→
C++
C++
→Delphi
→Delphi
Hãng Microsoft: MicrosoftC
Hãng Microsoft: MicrosoftC
→
→
C++
C++
→
→
Visual C++
Visual C++
1.2 Lịch sử phát triển của lập trình hướng đối
1.2 Lịch sử phát triển của lập trình hướng đối
tượng
tượng
Lập trình hướng đối tượng(LTHĐT) không
phải là đặc quyền của một ngôn ngữ đặc biệt
nào. Các khái niệm trong LTHĐT được thể
hiện trong nhiều ngôn ngữ lập trình khác nhau.
Những ngôn ngữ cung cấp được khả năng
LTHĐT được gọi là ngôn ngữ LTHĐT. Do đó
sự phát triển của lập trình hướng đối tượng. Ta
có thể tổng quan chúng như sau:
SIMULAR(66)
SMALLTALK(71)
SMALLTALK(80)
JAVA(95)
ADA(83)
C++(86)
ADA(95)
EIFFEL(90)
Khái niệm về lập trình hướng đối tượng
Khái niệm về lập trình hướng đối tượng
Lập trình hướng đối tượng (Object Oriented
Lập trình hướng đối tượng (Object Oriented
Programming- gọi tắt là OOP) chính là phương pháp
Programming- gọi tắt là OOP) chính là phương pháp
lập trình lấy đối tượng (Object) làm nền tảng để xây
lập trình lấy đối tượng (Object) làm nền tảng để xây
dựng thuật giải, xây dựng chương trình.
dựng thuật giải, xây dựng chương trình.
Khái niệm hướng đối tượng được xây dựng trên nền
Khái niệm hướng đối tượng được xây dựng trên nền
tảng của khái niệm lập trình có cấu trúc và sự trừu
tảng của khái niệm lập trình có cấu trúc và sự trừu
tượng hóa dữ liệu. Sự thay đổi căn bản ở chỗ, một
tượng hóa dữ liệu. Sự thay đổi căn bản ở chỗ, một
chương trình hướng đối tượng được thiết kế xoay
chương trình hướng đối tượng được thiết kế xoay
quanh dữ liệu mà chúng ta có thể làm việc trên đó, hơn
quanh dữ liệu mà chúng ta có thể làm việc trên đó, hơn
là theo bản thân chức năng của chương trình. Điều này
là theo bản thân chức năng của chương trình. Điều này
hoàn toàn tự nhiên một khi chúng ta hiểu rằng mục tiêu
hoàn toàn tự nhiên một khi chúng ta hiểu rằng mục tiêu
của chương trình là xử lý dữ liệu
của chương trình là xử lý dữ liệu
1.3. Một số khái niệm trong lập trình hướng đối tượng
1.3. Một số khái niệm trong lập trình hướng đối tượng
Đối tượng
- Trong thế giới thực, khái niệm đối tượng được hiểu như
là một thực thể, nó có thể là người, vật hoặc một bảng dữ
liệu cần xử lý trong chương trình,... Trong LTHĐT thì
đối tượng là biến thể hiện của lớp.
Lớp
Lớp
- Là một bản mẫu mô tả các thông tin cấu trúc dữ liệu và
- Là một bản mẫu mô tả các thông tin cấu trúc dữ liệu và
các thao tác hợp lệ của các phần tử dữ liệu.
các thao tác hợp lệ của các phần tử dữ liệu.
- Khi một phần tử dữ liệu được khai báo là phần tử của
- Khi một phần tử dữ liệu được khai báo là phần tử của
một lớp thì nó được gọi là
một lớp thì nó được gọi là
đối tượng
đối tượng
.
.
- Các hàm được định nghĩa hợp lệ trong một lớp được
- Các hàm được định nghĩa hợp lệ trong một lớp được
gọi là các
gọi là các
phương thức
phương thức
(method) và chúng là các hàm
(method) và chúng là các hàm
duy nhất có thể xử lý dữ liệu của các đối tượng của lớp
duy nhất có thể xử lý dữ liệu của các đối tượng của lớp
đó.
đó.
-
-
Mỗi đối tượng có riêng cho mình một bản sao các phần
Mỗi đối tượng có riêng cho mình một bản sao các phần
tử dữ liệu của lớp. Mỗi lớp bao gồm: danh sách các
tử dữ liệu của lớp. Mỗi lớp bao gồm: danh sách các
thuộc tính (attribute) và danh sách các phương thức để
thuộc tính (attribute) và danh sách các phương thức để
xử lý các thuộc tính đó.
xử lý các thuộc tính đó.
- Công thức phản ánh bản chất của kỹ thuật LTHĐT là:
- Công thức phản ánh bản chất của kỹ thuật LTHĐT là:
Đối tượng = Dữ liệu + Phương thức
Đối tượng = Dữ liệu + Phương thức
Ví dụ:
Ví dụ:
Xét lớp HINH_CN bao gồm các thuộc tính:
Xét lớp HINH_CN bao gồm các thuộc tính:
(x1,y1) toạ độ góc trên bên trái, d,r là chiều dài và chiều
(x1,y1) toạ độ góc trên bên trái, d,r là chiều dài và chiều
rộng của HCN. Các phương thức nhập số liệu cho HCN,
rộng của HCN. Các phương thức nhập số liệu cho HCN,
hàm tính diện tích, chu vi và hàm hiển thị. Lớp
hàm tính diện tích, chu vi và hàm hiển thị. Lớp
HINH_CN có thể được mô tả như sau:
HINH_CN có thể được mô tả như sau:
Mô t l p ả ớ
Mô t l p ả ớ HINH_CN
HINH_CN
Thuộc tính:
x1,y1
d,r
Phương thức:
Nhập_sl
Diện tích
Chu vi
Hiển thị
Chú ý:
Chú ý:
Trong LTHĐT thì lớp là khái
Trong LTHĐT thì lớp là khái
niệm tĩnh, có thể nhận biết ngay từ văn
niệm tĩnh, có thể nhận biết ngay từ văn
bản chương trình, ngược lại đối tượng là
bản chương trình, ngược lại đối tượng là
khái niệm động, nó được xác định trong
khái niệm động, nó được xác định trong
bộ nhớ của máy tính, nơi đối tượng chiếm
bộ nhớ của máy tính, nơi đối tượng chiếm
một vùng bộ nhớ lúc thực hiện chương
một vùng bộ nhớ lúc thực hiện chương
trình. Đối tượng được tạo ra để xử lý
trình. Đối tượng được tạo ra để xử lý
thông tin, thực hiện nhiệm vụ được thiết
thông tin, thực hiện nhiệm vụ được thiết
kế, sau đó bị hủy bỏ khi đối tượng đó hết
kế, sau đó bị hủy bỏ khi đối tượng đó hết
vai trò.
vai trò.
Trừu tượng hóa:
Trừu tượng hóa:
Là cách biểu diễn những đặc tính chính và bỏ
Là cách biểu diễn những đặc tính chính và bỏ
qua những chi tiết vụn vặt hoặc những giải
qua những chi tiết vụn vặt hoặc những giải
thích. Khi xây dựng các lớp, ta phải sử dụng
thích. Khi xây dựng các lớp, ta phải sử dụng
khái niệm trừu tượng hóa.
khái niệm trừu tượng hóa.
Ví dụ:
Ví dụ:
Ta có thể định nghĩa một lớp để mô tả các đối
Ta có thể định nghĩa một lớp để mô tả các đối
tượng trong không gian hình học bao gồm các
tượng trong không gian hình học bao gồm các
thuộc tính trừu tượng như là kích thước, hình
thuộc tính trừu tượng như là kích thước, hình
dáng, màu sắc và các phương thức xác định
dáng, màu sắc và các phương thức xác định
trên các thuộc tính này.
trên các thuộc tính này.
BAO GÓI THÔNG TIN
-
-
Việc đóng gói dữ liệu và các phương thức
Việc đóng gói dữ liệu và các phương thức
vào một đơn vị cấu trúc lớp được xem như một
vào một đơn vị cấu trúc lớp được xem như một
nguyên tắc
nguyên tắc
bao gói thông tin
bao gói thông tin
.
.
- Dữ liệu được tổ chức sao cho các đối tượng ở
- Dữ liệu được tổ chức sao cho các đối tượng ở
lớp khác không truy nhập vào, mà chỉ cho
lớp khác không truy nhập vào, mà chỉ cho
phép các phương thức trong cùng lớp hoặc
phép các phương thức trong cùng lớp hoặc
trong những lớp có quan hệ kế thừa với nhau
trong những lớp có quan hệ kế thừa với nhau
mới được quyền truy nhập. Chính các phương
mới được quyền truy nhập. Chính các phương
thức của lớp sẽ đóng vai trò như là giao diện
thức của lớp sẽ đóng vai trò như là giao diện
giữa dữ liệu của đối tượng và phần còn lại của
giữa dữ liệu của đối tượng và phần còn lại của
chương trình.
chương trình.
- Nguyên tắc bao gói dữ liệu để ngăn cấm sự
- Nguyên tắc bao gói dữ liệu để ngăn cấm sự
truy nhập trực tiếp trong lập trình được gọi là
truy nhập trực tiếp trong lập trình được gọi là
sự che giấu thông tin
sự che giấu thông tin
KẾ THỪA
KẾ THỪA
Là quá trình mà các đối tượng của lớp này được
Là quá trình mà các đối tượng của lớp này được
quyền sử dụng một số tính chất của các đối tượng
quyền sử dụng một số tính chất của các đối tượng
của lớp khác. Sự kế thừa cho phép ta định nghĩa
của lớp khác. Sự kế thừa cho phép ta định nghĩa
một lớp mới trên cơ sở một hay nhiều lớp đã có
một lớp mới trên cơ sở một hay nhiều lớp đã có
, ta
, ta
còn nói các phương thức đó trong lớp con cháu
còn nói các phương thức đó trong lớp con cháu
(descendant) được dẫn xuất (derivation) từ các lớp
(descendant) được dẫn xuất (derivation) từ các lớp
tổ tiên (ancestor).
tổ tiên (ancestor).
Lớp mới này, ngoài những thành phần được kế
Lớp mới này, ngoài những thành phần được kế
thừa, sẽ có thêm những thuộc tính và các hàm mới.
thừa, sẽ có thêm những thuộc tính và các hàm mới.
Nguyên lý kế thừa hỗ trợ cho việc tạo ra cấu trúc
Nguyên lý kế thừa hỗ trợ cho việc tạo ra cấu trúc
phân cấp các lớp.
phân cấp các lớp.
Tương ứng bội
Tương ứng bội
- Là khả năng của một khái niệm (chẳng hạn các
- Là khả năng của một khái niệm (chẳng hạn các
phép toán) có thể sử dụng với nhiều chức năng
phép toán) có thể sử dụng với nhiều chức năng
khác nhau.
khác nhau.
Ví dụ:
Ví dụ:
P
P
hép c ng (+) có th dùng đ th c hi n cho các toán ộ ể ể ự ệ
hép c ng (+) có th dùng đ th c hi n cho các toán ộ ể ể ự ệ
h ng là s , là xâu và c l p.ạ ố ả ớ
h ng là s , là xâu và c l p.ạ ố ả ớ
- Hành vi của phép toán tương ứng bội phụ
- Hành vi của phép toán tương ứng bội phụ
thuộc vào kiểu dữ liệu mà nó sử dụng để xử lý.
thuộc vào kiểu dữ liệu mà nó sử dụng để xử lý.
- Tương ứng bội đóng vai quan trọng trong việc
- Tương ứng bội đóng vai quan trọng trong việc
tạo ra các đối tượng có cấu trúc bên trong khác
tạo ra các đối tượng có cấu trúc bên trong khác
nhau nhưng cùng dùng chung một giao diện bên
nhau nhưng cùng dùng chung một giao diện bên
ngoài (như tên gọi).
ngoài (như tên gọi).
Liên kết động
Liên kết động
Là dạng liên kết các thủ tục và hàm khi
Là dạng liên kết các thủ tục và hàm khi
chương trình thực hiện lời gọi tới các hàm, thủ
chương trình thực hiện lời gọi tới các hàm, thủ
tục đó. Như vậy trong liên kết động, nội dung
tục đó. Như vậy trong liên kết động, nội dung
của đoạn chương trình ứng với thủ tục, hàm sẽ
của đoạn chương trình ứng với thủ tục, hàm sẽ
không được biết cho đến khi thực hiện lời gọi
không được biết cho đến khi thực hiện lời gọi
tới thủ tục, hàm đó.
tới thủ tục, hàm đó.
TRUYỀN THÔNG BÁO
TRUYỀN THÔNG BÁO
-
-
Truyền thông báo cho một đối tượng là yêu cầu
Truyền thông báo cho một đối tượng là yêu cầu
đối tượng thực hiện một việc gì đó. Cách ứng
đối tượng thực hiện một việc gì đó. Cách ứng
xử của đối tượng được mô tả bên trong lớp
xử của đối tượng được mô tả bên trong lớp
thông qua các phương thức.
thông qua các phương thức.
- Trong chương trình, thông báo gửi đến cho một
- Trong chương trình, thông báo gửi đến cho một
đối tượng chính là yêu cầu thực hiện một công
đối tượng chính là yêu cầu thực hiện một công
việc cụ thể, nghĩa là sử dụng những hàm tương
việc cụ thể, nghĩa là sử dụng những hàm tương
ứng để xử lý dữ liệu đã được khai báo trong đối
ứng để xử lý dữ liệu đã được khai báo trong đối
tượng đó. Vì vậy, trong thông báo phải chỉ ra
tượng đó. Vì vậy, trong thông báo phải chỉ ra
được hàm cần thực hiện trong đối tượng nhận
được hàm cần thực hiện trong đối tượng nhận
thông báo. Thông báo truyền đi cũng phải xác
thông báo. Thông báo truyền đi cũng phải xác
định tên đối tượng và thông tin truyền đi.
định tên đối tượng và thông tin truyền đi.
Ví dụ: Lớp CONGNHAN có thể là đối tượng cụ thể được
đại diện bởi Hoten nhận được thông báo cần tính lương
thông qua hàm TINHLUONG đã được xác định trong lớp
CONGNHAN. Thông báo đó sẽ được xử lý như sau:
CONGNHAN.TINHLUONG (Hoten)
↑
Đối tượng
↑
Thông báo
↑
Thông tin
Trong chương trình hướng đối tượng, mỗi đối tượng chỉ
tồn tại trong thời gian nhất định. Đối tượng được tạo ra khi
nó được khai báo và sẽ bị hủy bỏ khi chương trình ra khỏi
miền xác định của đối tượng đó. Sự trao đổi thông tin chỉ
có thể thực hiện trong thời gian đối tượng tồn tại.
Các ưu điểm của lập trình
Các ưu điểm của lập trình
hướng đối tượng
hướng đối tượng
Thông qua thừa kế, loại bỏ được đoạn chương
Thông qua thừa kế, loại bỏ được đoạn chương
trình dư thừa khi mô tả dữ liệu
trình dư thừa khi mô tả dữ liệu
Chương trình được xây dựng từ các đơn thể có
Chương trình được xây dựng từ các đơn thể có
khả năng trao đổi với nhau nên việc thiết kế và
khả năng trao đổi với nhau nên việc thiết kế và
lập trình sẽ tuân theo quy trình nhất định
lập trình sẽ tuân theo quy trình nhất định
Sự che giấu thông tin đảm bảo cho sự an toàn,
Sự che giấu thông tin đảm bảo cho sự an toàn,
không bị ảnh hưởng bởi chương trình khác
không bị ảnh hưởng bởi chương trình khác
Dễ mở rộng và nâng cấp hệ thống
Dễ mở rộng và nâng cấp hệ thống
Kỹ thuật truyền thông báo giúp cho việc
Kỹ thuật truyền thông báo giúp cho việc
mô tả giao diện với các hệ thống bên ngoài
mô tả giao diện với các hệ thống bên ngoài
trở nên đơn giản hơn
trở nên đơn giản hơn
Có thể quản lý được độ phức tạp của phần
Có thể quản lý được độ phức tạp của phần
mềm
mềm
Có thể xây dựng được ánh xạ giữa các đối
Có thể xây dựng được ánh xạ giữa các đối
tượng có thực bên ngoài với các đối tượng
tượng có thực bên ngoài với các đối tượng
trong chương trình
trong chương trình
1.4. Cài đặt C++
1.4. Cài đặt C++
-
Có sẵn trong bộ nhớ gốc
Có sẵn trong bộ nhớ gốc
-
Chạy chương trình Install trong disk 1 và làm theo
Chạy chương trình Install trong disk 1 và làm theo
hướng dẫn
hướng dẫn
1.5. Môi trường Borland C++
1.5. Môi trường Borland C++
1.6. Thiết lập cấu hình cho môi trường
1.6. Thiết lập cấu hình cho môi trường
Chương 2. Các thành phần cơ bản, các
Chương 2. Các thành phần cơ bản, các
kiểu dữ liệu cơ sở và các phép toán
kiểu dữ liệu cơ sở và các phép toán
2.1. Các thành phần cơ bản
2.1. Các thành phần cơ bản
2.1.1. Bộ ký tự
2.1.1. Bộ ký tự
Bao gồm:
Bao gồm:
-
Các chữ cái: a,…z,A…,Z
Các chữ cái: a,…z,A…,Z
-
Các chữ số: 0,...,9
Các chữ số: 0,...,9
-
Các ký hiệu phép toán: +,-,*,/, so sánh, ()
Các ký hiệu phép toán: +,-,*,/, so sánh, ()
-
Ký tự nối và dấu gạch dưới
Ký tự nối và dấu gạch dưới
-
Các ký hiệu: “;”,”,”,”,’,[,%,…
Các ký hiệu: “;”,”,”,”,’,[,%,…
2.1.2. Tên
2.1.2. Tên
-
Là tên gọi các biến, tên các hàm, tên lớp do người sử
Là tên gọi các biến, tên các hàm, tên lớp do người sử
dụng tạo ra và tuân theo qui tắc sau:
dụng tạo ra và tuân theo qui tắc sau:
-
Bắt đầu bằng chữ cái
Bắt đầu bằng chữ cái
-
Không được trùng với từ khóa
Không được trùng với từ khóa
2.1.3. Từ khóa
2.1.3. Từ khóa
- Là từ được C dành riêng cho việc xây dựng các câu
- Là từ được C dành riêng cho việc xây dựng các câu
lệnh, các khai báo, các phép tính,…
lệnh, các khai báo, các phép tính,…
asm, car, bool, break, marry, catch, to char, class,
const, const_cast, continue, default, delete, do,
double, dynamic_cast, else, enum, explicit, extern,
false, float, for, friend, goto, if, inline, int, long,
mutable, namespace, new, operator, private,
protected, public,
2.1.4. Lời giải thích
2.1.4. Lời giải thích
- Có thể đặt bất kỳ chỗ nào trong chương trình và được
- Có thể đặt bất kỳ chỗ nào trong chương trình và được
viết sau ký hiệu: /*
viết sau ký hiệu: /*
2.1.5. Cấu trúc của một chương trình C và qui tắc viết
2.1.5. Cấu trúc của một chương trình C và qui tắc viết
chương trình
chương trình
MAIN()
FUNC1() FUNC2() FUNCN()
KHAI BÁO TH VI NƯ Ệ
2.2. Các kiểu dữ liệu và cách khai báo
2.2. Các kiểu dữ liệu và cách khai báo
2.2.1. Khái niệm về kiểu dữ liệu
2.2.1. Khái niệm về kiểu dữ liệu
- Là kiểu được định nghĩa trong C để giải quyết các bài
- Là kiểu được định nghĩa trong C để giải quyết các bài
toán. Gồm kiểu dữ liệu cơ sở, kiểu dẫn xuất, kiểu do
toán. Gồm kiểu dữ liệu cơ sở, kiểu dẫn xuất, kiểu do
người dùng định nghĩa
người dùng định nghĩa
2.2.2. Kiểu dữ liệu cơ sở và khai báo
2.2.2. Kiểu dữ liệu cơ sở và khai báo
2.2.2.1. Kiểu số nguyên
2.2.2.1. Kiểu số nguyên
-
Các kiểu số nguyên bao gồm:
Các kiểu số nguyên bao gồm:
Tên kiểu Phạm vi giá trị Số
byte
short int (enum, int)
unsigned int
có dấu: -32768 to 32767
không dấu: 0 to 65535
2
long
Unsigned long
có dấu:-2147483648 to 2147483647
không dấu: 0 to 4294967295
4
2.2.2.2. Kiểu số thực
2.2.2.2. Kiểu số thực
-
Gồm các kiểu sau:
Gồm các kiểu sau:
2.2.2.3. Kiểu ký tự
2.2.2.3. Kiểu ký tự
Tên kiểu Phạm vi giá trị Số byte
float 3.4e + / - 38 (7 digits)
4
double 1.7e + / - 308 (15 digits) 8
long double 1.2e + / - 4932 (19 digits) 10
Tên kiểu Phạm vi giá trị Số byte
char
unsigned char
có dấu: -128 to 127
không dấu: 0 to 255
1