Bài giảng Công nghệ phần mềm - Chương 8: Lập trình và ngôn ngữ lập trình - Nguyễn Thanh Bình
Lꢀp trình và ngôn
ngꢁ lꢀp trình (8)
Nguyꢀn Thanh Bình
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ꢅu
• dꢌ bꢍo trì, phát triꢅn
2
1
Ngô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ꢌ hiꢅu
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
ꢁ
3
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
4
2
Kiꢅ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++...
ꢁ
ꢁ
5
ð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
6
3
ð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)
7
ð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
•
8
4
Mô-ñ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
9
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 mô-ñ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
10
5
Mô-ñ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
ꢁ
11
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)
12
6
Lꢀ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...
13
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...
14
7
Lꢀ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...
ꢁ
15
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
ꢁ
16
8
Chꢜ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
17
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ꢏ
18
9
Chꢜ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
19
Phong cách lꢀp trình
ꢀ
Cꢈn cóꢃchươngꢃtrình dꢌ hiꢅu
ꢁ
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
ꢁ
20
10
Phong 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ꢅu
chú thích
• ñꢈy ñꢏ, dꢌꢃñꢜc
hꢐn chꢆ sꢔ dꢇng cꢒu trúc khó hiꢅu
• break, continue, goto...
ꢁ
ví dꢇ
• quy ưꢗc lꢀp trình C++
21
11
Bạn đang xem tài liệu "Bài giảng Công nghệ phần mềm - Chương 8: Lập trình và ngôn ngữ lập trình - Nguyễn Thanh Bình", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_cong_nghe_phan_mem_chuong_8_lap_trinh_va_ngon_ngu.pdf

