Cùng tìm hiểu tương tự với ngôn ngữ tự nhiên; ngôn ngữ máy tính; hợp ngữ; ngôn ngữ cấp cao; ngôn ngữ lập trình hướng đối tượng;... được trình bày cụ thể trong Bài giảng Chương 12: Ngôn ngữ máy tính.
Trang 212.1 Tương t v i ngôn ng t nhiênự ớ ữ ự
Trang 3• Ngôn ngữ máy tính là một biện pháp để giao
tiếp dùng để truyền đạt thông tin giữa người
và máy tính
• Tất cả ngôn ngữ máy tính có từ ngữ riêng của
chúng.
• Khác biệt chủ yếu giữa ngôn ngữ tự nhiên và
ngôn ngữ máy tính là ngôn ngữ tự nhiên có từ vựng lớn nhưng đa số ngôn ngữ máy tính sử dụng rất hạn chế hoặc hạn chế từ vựng
• Ngôn ngữ máy tính có thể phân thành các loại
Trang 4• Là ngôn ngữ của máy tính vật lý mà người dùng có
thể lập trình được
• Lệnh máy :
– Mỗi lệnh máy chỉ thực hiện một tác vụ rất đơn giản như 1 phép tính số học hay 1 hoạt động đọc/ghi vùng nhớ/thanh ghi CPU
– Một lệnh máy bao gôm 2 phần : mã lệnh và toán hạng Mã lệnh (opcode) là một chuỗi các bit 0 và 1 Mỗi chuỗi bit miêu tả 1 số, mỗi số miêu tả 1 lệnh máy cụ thể
– Toán hạng xác định dữ liệu nào sẽ bị xử lý bởi lệnh máy tương ứng Toán hạng cũng là chuỗi bit nhị phân, nhưng định dạng và ngữ nghĩa của nó phụ thuộc vào từng lệnh máy cụ thể
Ngôn ng c a máy tính ữ ủ
Trang 5• Các toán hạng điển hình có trong tập lệnh của máy
Trang 6Ví dụ: Giả sử ta có 2 biến nguyên 16 bit, biến nguyên thứ nhât (i) nằm ở vị trí nhớ 200h, biến nguyên thứ 2 (j) nằm
ở vị trí nhớ 202h.Đọan lệnh máy (Intel 80x86) sau đây sẽ thiết lập nội dung cho biến i = 5 rồi thiết lập nội dung của biến j theo công thức i+10 :
• Con người rất khó lập trình (rất khó viết và đọc) giải quyết
bài toán ngoài đời trực tiếp bằng ngôn ngữ máy vì quá xa
lạ với ngôn ngữ tự nhiên mà con người đã từng dùng
Ngôn ng c a máy tính ữ ủ
Trang 7Ưu điểm và hạn chế của ngôn ngữ máy tính
• Ưu: Chương trình viết ngôn ngữ máy tính có thể được
thi hành rất nhanh bằng máy tính
– Lập trình viên cần ghi mã số cho từng lệnh
– Lập trình viên cần ghi vị trí lưu trữ của lệnh và dữ liệu ở
dạng số
– Lập trình viên cần theo dõi vị trí lưu trữ của lệnh và dữ
liệu trong khi ghi chương trình
Ngôn ng c a máy tính ữ ủ
Trang 8• Hợp ngữ được sử dụng vào năm 1952 Lập trình bằng
START PROGRAM AT 0000 START DATA AT 1000 SET ASIDE AN ADDRESS FOR FRST SET ASIDE AN ADDRESS FOR SCND ASIDE AN ADDRESS FOR ANSR
H p ng ợ ữ
Trang 9• Trình dịch hợp ngữ của hệ thống máy tính là hệ thống
phần mềm, cung cấp bởi nhà sản xuất máy tính dịch chương trình hợp ngữ thành chương trình ngôn ngữ máy tính
H p ng ợ ữ
Assembler
One-to-once correspondence
Figure 12.2 Illustrating the translation process of an assembler
Trang 10• Ví dụ: Ch ươ ng trình h p ng m u c ng hai s và ợ ữ ẫ ộ ố
Halt, s d ng đ k t thúc ử ụ ể ế
chương trìnhXóa và thêm vào thanh ghi AThêm n i dung vào thanh ghi Aộ
Tr n i dung c a thanh ghi A ừ ộ ủ
L u tr thanh ghi Aư ữ
Trang 12Hạn chế:
• Phụ thuộc vào
• Người lập trình phải có kiến thức cần thiết về phần
cứng
• Các lệnh chỉ được viết ở mức mã máy nên viết
chương trình bằng hợp ngữ vẫn còn mất thời gian và không dễ dàng lắm
H p ng ợ ữ
Trang 13• Là ngôn ngữ máy chỉ có hai cấu trúc điều khiển cơ
bản để thực hiện các lệnh : tuần tự và nhảy Cấu trúc tuần tự là mặc định: sau khi thực hiện xong lệnh máy hiện hành sẽ thi hành tiếp lệnh đi ngay sau lệnh hiện hành trong chương trình Lệnh nhảy cho phép người lập trình xác định lệnh kế tiếp được thi hành ở đâu trong chương trình
• “Ngôn ngữ lập trình cấp thấp" để miêu tả các ngôn
ngữ của các máy nằm thấp dưới đáy chồng các máy nhiều cấp Thí dụ ngôn ngữ máy là ngôn ngữ lập trình cấp thấp
Ngôn ng l p trình c p th p ữ ậ ấ ấ
Trang 14• Là các ngôn ngữ của các máy nằm cao trên chồng
các máy nhiều cấp
• Cho phép dùng nhiều kiểu dữ liệu và nhiều cấu trúc
điều khiển hơn so với những gì được cung cấp bởi ngôn ngữ cấp thấp, đồng thời cách biểu diễn các lệnh cũng gần với ngôn ngữ tự nhiên
• Phân loại các ngôn ngữ lập trình cấp cao :
– Ngôn ngữ đa mục đích: Basic, C, C++, C#, Java, Fortran,
Pascal
– Ngôn ngữ lập trình stack : TrueType, Postscript,
– Lập trình khai báo : C, Pascal,
– Ngôn ngữ lập trình logic, lập trình thủ tục & lập trình hàm :
Prolog, Lisp,
– Ngôn ngữ lập trình hướng đối tượng : C++, C#, Java,
Ngôn ng c p cao ữ ấ
Trang 15Đặc điểm của ngôn ngữ cấp cao:
• Độc lập với máy
• Không đòi hỏi lập trình viên biết bất cứ thứ gì về cấu
trúc bên trong của máy tính
• Không xử lý mã máy
• Cho phép sử dụng máy tính giải quyết vấn đề ngay cả
khi người dùng không phải là chuyên gia lập trình
Ngôn ng c p cao ữ ấ
Trang 16short i, j; // khai báo 2 biên i, j thuộc kiểu số nguyên 16 bit
i = 5; // chứa 5 vào biến i
j = i +10; // chứa kết quả tính công thức i + 10 vào biến j
Ngôn ng c p cao ữ ấ
Trang 17• Chương trình dịch để dịch chương trình bằng ngôn
ngữ cấp cao phải chuyển đổi thành chương trình ngôn ngữ máy tính tương đương với nó trước khi nó có thể được thi hành trên máy tính.
Ngôn ng c p cao ữ ấ
Quá trình d ch c a m t trình biên d ch ị ủ ộ ị
Trang 18Ngôn ng c p cao ữ ấ
Minh h a quá trình biên d ch l i mã ngu n c a ch ọ ị ạ ồ ủ ươ ng trình
Trang 19• Linker (Liên kết, kết nối): được sử dụng để kết hợp
chính xác tất cả các tập tin đối tượng chương trình (module) của phần mềm, và chuyển đổi chúng vào chương trình thực thi cuối cùng.
Ngôn ng c p cao ữ ấ
Trang 20Ngôn ng c p cao ữ ấ
Quá trình biên d ch nhi u ch ị ề ươ ng trình ngu n ồ
và k t n i chúng v i nhau đ th c thi ch ế ố ớ ể ự ươ ng trình (n p module) ạ
Trang 21• Trình thông dịch: được sử dụng để phiên dịch các
chương trình được viết bằng ngôn ngữ cấp cao
• Trình thông dịch lấy các lệnh của một chương trình
ngôn ngữ cấp cao dịch nó sang các tập lệnh của ngôn ngữ máy và sau đó ngay lập tức thực thi kết quả các tập lệnh bằng ngôn ngữ máy
Ngôn ng c p cao ữ ấ
Vai trò c a trình thông d ch ủ ị
Trang 22• Những bất lợi chính của trình biên dịch so với trình
thông dịch là chúng chạy chậm hơn so với trình biên dịch khi dịch một chương trình hoàn tất
• So với biên dịch, thông dịch được dễ dàng hơn để
viết
• Lợi thế chính của thông dịch so với các trình biên dịch
là một lỗi cú pháp trong một biểu thức của chương trình được phát hiện thì sẽ đưa ra hướng giải quyết cho các lập trình viên ngay sau khi nó được dịch
Ngôn ng c p cao ữ ấ
Vai trò c a trình thông d ch ủ ị
Trang 23Thuận lợi của ngôn ngữ cấp cao:
Trang 24Hạn chế của ngôn ngữ cấp cao:
• Hiệu quả Thấp hơn
• Ít linh hoạt hơn
Ngôn ng c p cao ữ ấ
Trang 25L p trình h ậ ướ ng đ i t ố ượ ng(OOP) là gì?
• Các khái ni m v OOP l n đ u tiên đ ệ ề ầ ầ ượ c gi i ớ
thi u vào năm 1967 c a các nhà phát tri n c a ệ ủ ể ủ
m t ngôn ng l p trình có tên Simula67 ộ ữ ậ
• Khái ni m này b t đ u đ ệ ắ ầ ượ c ph bi n trong ổ ế
nh ng năm 1980 v i s phát tri n c a ngôn ữ ớ ự ể ủ
ng l p trình khác có tên Smalltalk, t đó khái ữ ậ ừ
ni m OOP đ ệ ượ ử ụ c s d ng r ng rãi ộ
Ngôn ng l p trình h ữ ậ ướ ng đ i ố
t ượ ng(OOP)
Trang 26L p trình hậ ướng đ i tố ượng(OOP) là gì?
• Nh ng ý tữ ưởng đ ng sau OOP c b n là ngôn ng l p ằ ơ ả ữ ậtrình đượ ử ục s d ng đ mô ph ng các v n đ c a th gi i ể ỏ ấ ề ủ ế ớ
th c trên các máy tính.ự
• Do đó cái c t lõi c a OOP là gi i quy t v n đ b ng cách ố ủ ả ế ấ ề ằxác đ nh các đ i tị ố ượng th gi i th c c a v n đ và x lý ế ớ ự ủ ấ ề ửyêu c u c a các đ i tầ ủ ố ượng, và sau đó t o ra mô ph ng c a ạ ỏ ủ
nh ng đ i tữ ố ượng, quy trình c a h , và đủ ọ ược yêu c u thông ầtin liên l c gi a các đ i tạ ữ ố ượng
Ngôn ng l p trình h ữ ậ ướ ng đ i ố
t ượ ng(OOP)
Trang 27Các khái ni m c b nệ ơ ả
1.Đ i tố ượ ng
• M t đ i tộ ố ượng là y u t ban đ u c a m t chế ố ầ ủ ộ ương trình
được vi t b ng m t ngôn ng OOP. M i đ i tế ằ ộ ữ ỗ ố ượng bao
g m m t b các th t c (g i là phồ ộ ộ ủ ụ ọ ương th c) và m t s ứ ộ ố
d li u (thu c tính).ữ ệ ộ
• M t chộ ương trình được vi t b ng m t ngôn ng OOP là ế ằ ộ ữ
m t t p h p các đ i tộ ậ ợ ố ượng liên k t v i nhau. ế ớ
Ngôn ng l p trình h ữ ậ ướ ng đ i ố
t ượ ng(OOP)
Trang 28Các khái ni m c b n ệ ơ ả
2.Ph ươ ng th c ứ
• M t ph ộ ươ ng th c c a m t đ i t ứ ủ ộ ố ượ ng xác
đ nh t p h p các thao tác mà đ i t ị ậ ợ ố ượ ng s ẽ
th c hi n khi m t thông báo t ự ệ ộ ươ ng ng ứ
v i các ph ớ ươ ng th c nh n đ ứ ậ ượ c c a đ i ủ ố
t ượ ng
• Trong m t đo n ch ộ ạ ươ ng trình, ph ươ ng
th c đ ứ ượ c đ nh nghĩa nh ch c năng ị ư ứ hoàn
ch nh v i các thông s và kh năng tr v ỉ ớ ố ả ở ề giá trị.
Ngôn ng l p trình h ữ ậ ướ ng đ i ố
t ượ ng(OOP)
Trang 29Ngôn ng l p trình h ữ ậ ướ ng đ i ố
t ượ ng(OOP)
Mô hình c a 1 đ i t ủ ố ượ ng s d ng trong OOP ử ụ
Trang 30Ngôn ng l p trình h ữ ậ ướ ng đ i ố
t ượ ng(OOP)
Trang 31Các khái ni m c b nệ ơ ả
4.L pớ
• M t l p là m t mô t c a m t hay nhi u đ i tộ ớ ộ ả ủ ộ ề ố ượng tương
t nhau. Khái ni m l p là tự ệ ớ ương t v i "ki u" trong các ự ớ ểquy ước th t c hủ ụ ướng ngôn ng ữ
• L p có 2 d ng: l p bi n và l p th c th ớ ạ ớ ế ớ ự ể
• Ví d , n u "s nguyên" là m t ki u (l p), sau đó "8" là ụ ế ố ộ ể ớ
m t th c th (đ i tộ ự ể ố ượng) c a ki u (l p) "s nguyên". ủ ể ớ ố
Tương t , "Ngự ười1" và "Người2" có th là hai th c th ể ự ể(đ i tố ượng) c a m t l p "Ngủ ộ ớ ười"
Ngôn ng l p trình h ữ ậ ướ ng đ i ố
t ượ ng(OOP)
Trang 32Các khái ni m c b n ệ ơ ả
5.Th a k ừ ế
• Trong OOP, k th aế ừ là m t c ch đ chia s mã l nh ộ ơ ế ể ẻ ệ
và hành vi. Nó cho phép m t l p trình viên tái s d ng các ộ ậ ử ụhành vi c a m t l p trong các đ nh nghĩa c a l p m iủ ộ ớ ị ủ ớ ớ
• K th a không c n ph i có gi i h n đ i v i m t l p cha. ế ừ ầ ả ớ ạ ố ớ ộ ớ
L p con có th k th a t nhi u l p cha. Đây g i là đa ớ ể ế ừ ừ ề ớ ọ
th a k ừ ế
Ngôn ng l p trình h ữ ậ ướ ng đ i ố
t ượ ng(OOP)
Trang 33Ngôn ng l p trình h ữ ậ ướ ng đ i ố
t ượ ng(OOP)
Ví d v c u trúc th a k c a l p ụ ề ấ ừ ế ủ ớ
Trang 34Ch ươ ng trình h ướ ng th t c ủ ụ
• Ngôn ng l p trình h ng th t c quy ữ ậ ướ ủ ụ ước s d ng th ử ụ ủ
t c tr u tụ ừ ượng mà th t đóng gói m t dãy các l nh vào ứ ự ộ ệtrong các th t c. ủ ụ
• Vai trò c a các th t c là chuy n đ i d li u đ u vào ủ ủ ụ ể ổ ữ ệ ầ
được xác đ nh b i các tham s vào các giá tr ị ở ố ị
• Mô hình c a ngôn ng l p trình h ng th t c có nguyên ủ ữ ậ ướ ủ ụ
t c t ch c m nh m đ qu n lý các hành đ ng và thu t ắ ổ ứ ạ ẽ ể ả ộ ậtoán nh ng y u kém v nguyên tác t ch c qu n lý d ư ế ề ổ ứ ả ữ
li u dùng chung. ệ
Trang 35Ch ươ ng trình h ướ ng đ i t ố ượ ng
• Ngôn ng l p trình h ng đ i t ng đóng gói d li u ữ ậ ướ ố ượ ữ ệcũng nh th t thao tác vào trong các th c th tr u tư ứ ự ự ể ừ ượng
g i là đ i tọ ố ượng.
• L p trình h ng đ i t ng cung c p nhi u công c ti n ậ ướ ố ượ ấ ề ụ ệ
d ng và h u ích h n l p trình hụ ữ ơ ậ ướng th t c.ủ ụ
• Vai trò c a các đ i t ng là ph c v nh m t kho d li u ủ ố ượ ụ ụ ư ộ ữ ệ
và đáp ng th c hi n các hành đ ng đứ ự ệ ộ ược yêu c u theo ầ
m t cách th c xác đ nh b i tr ng thái hi n t i c a h ộ ứ ị ở ạ ệ ạ ủ ệ
th ng. ố
• Mô hình c a ngôn ng l p trình h ng đ i t ng thì ủ ữ ậ ướ ố ượ
m nh m v t ch c qu n lý các hành đ ng và thu t toán ạ ẽ ề ổ ứ ả ộ ậ
và c qu n lý d li u dùng chung. ả ả ữ ệ
• K th a cung c p thêm s c m nh cho phép các l p đ c ế ừ ấ ứ ạ ớ ượphân lo i theo các thu c tính và theo th a s đ tách thành ạ ộ ừ ố ểnhi u l p ph vào m t siêu l p.ề ớ ụ ộ ớ
Trang 36Ch ươ ng trình h ướ ng đ i t ố ượ ng
Trang 38M T S NGÔN NG L P TRÌNH C P CAOỘ Ố Ữ Ậ Ấ
1 FORTRAN
• FORTRAN là t vi t t t c a FORmula TRANslation.ừ ế ắ ủ
• Đ c thi t k đ gi i quy t các v n đ khoa h c và k ượ ế ế ể ả ế ấ ề ọ ỹthu tậ
Trang 39M T S NGÔN NG L P TRÌNH C P CAOỘ Ố Ữ Ậ Ấ
C FORTRAN PROGRAM TO COMPUTE
C THE SUM OF 10 NUMBERS
SUM = 0
DO 50 I = 1, 10READ (5, 10)NSUM = SUM + N
END
Ví d v ch ụ ề ươ ng trình FORTRAN
Trang 40COBOL là t vi t t t c a ừ ế ắ ủ COmmon Business Oriented
Language. Các chu n m i COBOL có nh ng tính năng:ẩ ớ ữ
Đ nh d ng mi n phí, cho phép nh p l nh vào b t c v trí nào ị ạ ễ ậ ệ ấ ứ ịtrên dòng
Các chú thích trên dòng
M t s lo i d li u m i.ộ ố ạ ữ ệ ớ
Đi u ki n biên so n c a m t s mã phân đo n cho phép ề ệ ạ ủ ộ ố ạ
ngườ ậi l p trình vi t các chế ương trình đáp ng đứ ược v i các ớmôi trường khác nhau
D li u t đ ng xác nh n.ữ ệ ự ộ ậ
G i l nh c i ti n.ọ ệ ả ế
Chia s t p tin và khóa các b n ghi ẻ ậ ả
Các tính năng hướng đ i tố ượng: l p, đ i tớ ố ượng, th a k , ừ ế
M T S NGÔN NG L P TRÌNH C P CAOỘ Ố Ữ Ậ Ấ
Trang 41COBOL là t vi t t t c a ừ ế ắ ủ COmmon Business Oriented
Language. Các chu n m i COBOL có nh ng tính năng:ẩ ớ ữ
Đ nh d ng mi n phí, cho phép nh p l nh vào b t c v trí nào ị ạ ễ ậ ệ ấ ứ ịtrên dòng
Các chú thích trên dòng
M t s lo i d li u m i.ộ ố ạ ữ ệ ớ
Đi u ki n biên so n c a m t s mã phân đo n cho phép ề ệ ạ ủ ộ ố ạ
ngườ ậi l p trình vi t các chế ương trình đáp ng đứ ược v i các ớmôi trường khác nhau
D li u t đ ng xác nh n.ữ ệ ự ộ ậ
G i l nh c i ti n.ọ ệ ả ế
Chia s t p tin và khóa các b n ghi ẻ ậ ả
Các tính năng hướng đ i tố ượng: l p, đ i tớ ố ượng, th a k , ừ ế
M T S NGÔN NG L P TRÌNH C P CAOỘ Ố Ữ Ậ Ấ
Trang 42Các ràng bu c đ ộ ượ c ch đ nh đ t đ ng ch p nh n d li u ỉ ị ể ự ộ ấ ậ ữ ệ
M T S NGÔN NG L P TRÌNH C P CAOỘ Ố Ữ Ậ Ấ
Trang 43Tất cả các chương trình COBOL phải có bốn phần sau:
1 Phần xác minh: xác định các thông tin về chương trình
2 Phần môi trường: xác định máy tính và các thiết bị
ngoại vi được sử dụng để biên dịch và thực thi các
chương trình
3 Phần dữ liệu: xác định cấu trúc và định dạng của các
tập tin dữ liệu đầu vào và đầu ra cũng như tất cả các
vùng lưu trữ được sử dụng để lưu trữ những kết quả
trung gian và các giá trị khác trong quá trình xử lý
4 Phần thủ tục: chứa các các lệnh tuần tự được thực hiện
bởi chương trình
M T S NGÔN NG L P TRÌNH C P CAOỘ Ố Ữ Ậ Ấ
Trang 44M T S NGÔN NG L P TRÌNH C P CAOỘ Ố Ữ Ậ Ấ
Trang 45Tất cả các chương trình COBOL phải có bốn phần sau:
1 Phần xác minh: xác định các thông tin về chương trình
2 Phần môi trường: xác định máy tính và các thiết bị
ngoại vi được sử dụng để biên dịch và thực thi các
chương trình
3 Phần dữ liệu: xác định cấu trúc và định dạng của các
tập tin dữ liệu đầu vào và đầu ra cũng như tất cả các
vùng lưu trữ được sử dụng để lưu trữ những kết quả
trung gian và các giá trị khác trong quá trình xử lý
4 Phần thủ tục: chứa các các lệnh tuần tự được thực hiện
bởi chương trình
M T S NGÔN NG L P TRÌNH C P CAOỘ Ố Ữ Ậ Ấ
Trang 46• COBOL thường g i t t là ngôn ng “ọ ắ ữ self –
documenting” có các tính năng c a sau đây: ủ
1. Các câu l nh t ệ ươ ng t nh ti ng anh. ự ư ế
2. C u trúc câu và đo n c a nó gi ng v i ti ng anh ấ ạ ủ ố ớ ế
3. Chi u dài t i đa c a tên tr ề ố ủ ườ ng là 30 ký t V i chi u dài c a ự ớ ề ủ tên lên đ n 30 ký t , tên có th nh n di n chính xác nh ng ế ự ể ậ ệ ữ lĩnh v c và m c đích c a nó. ự ụ ủ
M T S NGÔN NG L P TRÌNH C P CAOỘ Ố Ữ Ậ Ấ
Trang 473) Basic
• BASIC là chữ viết tắt của Beginners All-purpose
Symbolic Instruction Code, BASIC được phát triển vào năm 1963 bởi các giáo sư John Kemeny và Thomas Kurtz thuộc đaih học Darmouth ,Mỹ
• Các đặc tính của BASIC:
1 Được thiết kế sử dụng các thiết bị đầu cuối như là phương pháp truy cập vào máy tính
2 Được thiết kế như một ngôn ngữ thông dịch để các lập trình
có thể tạo ra, chạy, kiểm tra và gỡ lỗi chương trình
3 Được thiết kế với rất ít câu lệnh, quy tắc cú pháp bởi vậy nó
có thể học và sử dụng dễ dàng
4 Bộ dịch ngôn ngữ sử dụng cho BASIC là thông dịch cho phép lập trình viên kiểm tra lỗi cú pháp và sửa nó ngay khi chương trình được nhập vào
M T S NGÔN NG L P TRÌNH C P CAOỘ Ố Ữ Ậ Ấ