Lập trình và ngôn ngữ lập trình
Trang 1L ậ p trình và ngôn
Khoa Công nghệ Thông tin
Trường ðại học Bách khoa
ðại học ðà Nẵng
L ậ p trình
k ỹ năng c á nhân
năng lực cá nhân
hiểu biết các công cụlập trình
l ậ p trình viên c ầ n
nguyên tắc lập trình
kinh nghiệm
l ậ p trình viên t ố t
viết chương trình
• ñ úng ñắ n
• d hi ể
Trang 2Ngôn ng ữ l ậ p trình
Có nhi ề u ph ươ ng pháp l ậ p trình khác nhau
nhiều ngôn ngữlập trình khác nhau
ð i ể m chung c ủ a các ngôn ng ữ l ậ p trình
(NNLT)
dễ diễn ñạt
dễ thực thi trên máy tính
M ộ t s ố tính ch ấ t c ủ a NNLT
kiểu và kiểm tra kiểu
mô-ñun hóa
4
Ki ể u
H ầ u h ế t các NNLT ñề u có khái ni ệ m
ki ể u
ki ể u s ố , ki ể u lô-gíc
m ộ t bi ế n có ki ể u d ữ li ệ u xác ñị nh
Ki ể m tra ki ể u
ñả m b ả o m ộ t toán t ử /hàm ch ỉ áp d ụ ng
cho nh ữ ng toán t ử /tham s ố có ki ể u
cho phép
Trang 3Ki ể u
Ngôn ng ữ ñị nh ki ể u (types languages)
có hệthống kiểu
cho phép kiểm tra sửd ng kiểu phù hợp mà
không cần thực thi chương trình
• ki ể m tra t ĩ nh
Ngôn ng ữ ñị nh ki ể u cho phép
phát hiện sớm một sốlỗi liên quan ñến kiểu
Ngôn ng ữ ñị nh ki ể u
C, Java, C++
ð a hình
Ư u ñ i ể m c ủ a h ệ th ố ng ki ể u và ki ể m tra ki ể u
chặt chẽ
dễ kiểm tra
Tuy nhiên
hệ thống kiểu phải mềm dẽo trong sửdụng
• ñ a hình
Trang 4ð a hình
M ộ t s ố tình hu ố ng ñ a hình
Viết hàm áp dụng cho các mảng có sốphần
tửkhác nhau
• ki ể u m ả ng ñượ c ki ể m tra khi biên d ị ch
• s ố ph ầ n t ử c ủ a m ả ng ñượ c ki ể m tra khi th ự c thi
Áp dụng hàm cho các kiểu dữliệu khác
nhau
• xây d ự ng nhi ề u phiên b ả n c ủ a hàm t ươ ng ứ ng v ớ i
các ki ể u khác nhau
• ho ặ c ch ỉ xây d ự ng m ộ t phiên b ả n c ủ a hàm, x ử lý
khác nhau ñượ c th ự c hi ệ n khi th ự c thi
• template (C++), generic (Java)
8
ð a hình
M ộ t s ố tình hu ố ng ñ a hình
Vi ế t hàm áp d ụ ng cho các m ả ng có s ố ph ầ n t ử khác
nhau
• ki ể u m ả ng ñượ c ki ể m tra khi biên d ị ch
• s ph ầ n t ử c a m ả ng ñượ c ki ể m tra khi th ự c thi
Áp d ụ ng hàm cho các ki ể u d ữ li ệ u khác nhau
• xây d ựng nhiều phiên bản của hàm tươ ng ứ ng v ớ i các
ki ể u khác nhau
• ho ặ c ch ỉ xây d ựng một phiên bản của hàm, xử lý khác
nhau ñượ c th ự c hi ệ n khi th ự c thi
• template (C++), generic (Java)
• ho ặ c s ử d ng kiểu con/lớp con
• ñ a hình trong ngôn ng ữ l ậ p trình h ướ ng ñố i t ượ ng
Trang 5Mô- ñ un hóa
Xu ấ t hi ệ n vào nh ữ ng n ă m 70
ð óng vai trò quan tr ọ ng ñể t ạ o ra ph ầ n
m ề m ch ấ t l ượ ng
Thi ế t k ế hướ ng mô- ñ un
phần mềm = tập hợp các mô-ñun và quan
hệ giữa chúng
H ầ u h ế t các NNLT ñề u h ỗ tr ợ mô - ñ un hóa
Mô- ñ un hóa
M ộ t mô- ñ un g ồ m hai ph ầ n
Ph ầ n giao di ệ n
• giao tiếp với bên ngoài ñun ay
mô-ñun khác
Ph ầ n thân
• nội dung của mô-ñun
• cục bộ ñối với mỗi mô-ñun, che dấu ñối
với mô-ñun khác
Trang 6Mô- ñ un hóa
Các mô- ñ un ch ỉ trao ñổ i d ữ li ệ u qua ph ầ n
giao di ệ n
không sử dụng biến toàn cục
N ế u thay ñổ i ph ầ n thân thì ít ả nh h ưở ng
(ho ặ c không ả nh h ưở ng) ñế n các mô- ñ un
khác
Trong ngôn ng ữ l ậ p trình c ấ u trúc
mô-ñun = hàm
Trong ngôn ng ữ l ậ p trình h ướ ng ñố i t ượ ng
mô-ñun = lớp / phương thức
12
Các ph ươ ng pháp l ậ p trình
c ơ b ả n
L ậ p trình th ủ t ụ c/c ấ u trúc (procedural
programming)
L ậ p trình h ướ ng ñố i t ượ ng (object-oriented
programming)
L ậ p trình hàm (functional programming)
L ậ p trình lô-gíc (logic programming)
Trang 7L ậ p trình th ủ t ụ c
ñượ c s ử d ụ ng ph ổ bi ế n
l ậ p trình có c ấ u trúc
phù h ợ p v ớ i thi ế t k ế hướ ng ch ứ c
n ă ng
NNLT th ủ t ụ c
Fortran, Ada, Pascal, C
L ậ p trình h ướ ng ñố i t ượ ng
khái ni ệ m c ơ b ả n
ñối tượng, lớp
ñóng gói
thừa kế
ña hình
xu h ướ ng phát tri ể n c ủ a các NNLT hi ệ n ñạ i
NNLT h ướ ng ñố i t ượ ng
Smalltalk, C++, Java, Delphi
Trang 8L ậ p trình hàm
tính toán các bi ể u th ứ c
hàm tính toán dựa trên các giá trịcủa tham
số
thao tác trên danh sách
áp d ụ ng
lĩnh vực tính toán
trí tuệnhân tạo
NNLT hàm
LISP, Scheme
16
L ậ p trình lô-gíc
th ự c hi ệ n các bi ể u th ứ c lô-gíc
khái niệm hợp giải (resolution)
• tìm ki ế m giá tr ị c ủ a các bi ế n sao cho bi ể u th ứ c
lô-gíc có giá tr ị ñ úng
ứ ng d ụ ng
xây dựng hệ chuyên gia
xửlý ngôn ngữtựnhiên
NNLT lô-gíc
Prolog
Trang 9Ch ọ n NNLT
quy ế t ñị nh quan tr ọ ng trong phát tri ể n
ph ầ n m ề m
gi ả m chi phí
mã ngu ồ n ch ấ t l ượ ng
d ễ b ả o trì, phát tri ể n
Ch ọ n NNLT
d ự a vào nhi ề u y ế u t ố (1)
yêu cầu của khách hàng
• khách hàng t ự b o trì s ả n ph ẩ m
chương trình dịch
• c ầ n có chương tr ình d ị ch có ch ấ t l ượ ng t ố t
công cụ hỗtrợ
• d dàng quá trình l ậ p trình, b ả o trì
kinh nghiệm của lập trình viên
• ch ọ n NNLT mà l ậ p trình làm ch ủ
Trang 10Ch ọ n NNLT
d ự a vào nhi ề u y ế u t ố (2)
yêu cầu tính khảchuyển (portability)
• th ự c hi ệ n trên nhi ề u máy tính/plaform khác nhau
lĩnh vực ứng dụng
• h th ố ng nhúng: C, Assembly
• h th ố ng qu ả n lý: NET, VB, C++
• h chuyên gia: Prolog
• m ạ ng: Java, NET
• website: PHP, ASP
• không t ồ n t ạ i ngôn ng ữ ña năng cho mọ i ứ ng
d ng
20
Phong cách l ậ p trình
C ầ n có chương tr ình d ễ hi ể
ph ụ thu ộ c vào ñặ c ñ i ể m NNLT
phong cách c ủ a ng ườ i l ậ p trình
Phong cách l ậ p trình không do l ậ p trình viên t ự ñặ t ra
mà do t ổ ch ứ c/doanh nghi ệ p/d ự án ñặ t ra
các lu ậ t l ậ p trình
các quy ướ c l ậ p trình
M ụ c ñ ích
mã ngu ồ n d ễ hi ể u, d ễ ki ể m th ử , d ễ b o trì
ít l ỗ i
Trang 11Phong cách l ậ p trình
M ộ t s ố nguyên t ắ c l ậ p trình
ñặ t tên
• có ý ngh ĩ a, g ợ i nh ớ
trình bày
• r ỏ ràng, d ễ hi ể
chú thích
• ñầ y ñủ , d ễ ñọ c
h n ch ế s ử d ng c ấ u trúc khó hi ể
• break, continue, goto
ví d ụ
• quy ướ c l ậ p trình C++