CHƯƠNG 5: CÁC NGÔN NGỮLẬP TRÌNH... Chương 5: Các ngôn ngữ lập trìnhzKhái niệm ngôn ngữ lập trìnhzSự tiến hóa của ngôn ngữ lập trìnhzCác ngôn ngữ lập trình tiêu biểuzBiên dịch và thông dị
Trang 1CHƯƠNG 5:
CÁC NGÔN NGỮ
LẬP TRÌNH
Trang 2Chương 5: Các ngôn ngữ lập trình
z Khái niệm ngôn ngữ lập trình
z Sự tiến hóa của ngôn ngữ lập trình
z Các ngôn ngữ lập trình tiêu biểu
z Biên dịch và thông dịch
z Các phương pháp lập trình
Trang 3Khái niệm ngôn ngữ lập trình (1)
z Con người “nói chuyện” với nhau:
• Ngôn ngữ tự nhiên
z Con người “nói chuyện” với máy tính:
• Ngôn ngữ lập trình
Trang 4Khái niệm ngôn ngữ lập trình (2)
z Ngôn ngữ lập trình(Programming language) là một
hệ thống dùng để viết các chương trình cho máy tính
bao gồm:
• Cú pháp(Syntax): một chuỗi các kí hiệu hợp lệ
• Ngữ nghĩa(Semantic): ý nghĩa của các kí hiệu
z Chương trình (Program) là một tập lệnh (instruction )
điều khiển việc xử lý dữ liệu (data) của máy tính
Program = Data Structures + Alg orithms
Trang 5Sự tiến hóa của ngôn ngữ lập trình
Machine Language Assembly language
High Level Language
Được dịch bởi Compiler hoặc Interpreter
Được dịch bởi Assembler (Pascal, C, C++, Java, C#, Prolog, Lisp, )
(Assembly language)
Trang 6Machine Language (1)
z Là ngôn ngữ duy nhất được máy tính hiểu trực tiếp
z Sử dụng hệ thống số nhị phân để biểu diễn lệnh (Instruction)
z Instruction = mẫu bit (bit pattern) được hiểu bởi phần cứng
máy tính
• Instruction: Opcode | Operands
• Chương trình là một dãy các chỉ thị
CPU
I/O
Memory
010001001100
000110100010
Trang 7Machine Language (2)
) Ưu điểm
9 Chương trình viết bằng ngôn ngữ máy
thực thi nhanh
9 Lập trình khó
9 Phụ thuộc cấu hình phần cứng của máy
9 Dễ dẫn đến sai sót
9 Khó bảo trì và sửa lỗi
Trang 8Assembly Language (1)
Dùng Alphanumberic code để biểu diễn lệnh và địa chỉ ô nhớ thay vì bit pattern
MOV A, r0 #store
• Ví dụ 2: Tính (A+B)2 = A2 + 2AB + B2
LOAD A
MULT A
LOAD A
MULT B
MULT 2
LOAD B
MULT B
ADD H1
Trang 9Assembly Language (2)
Trang 10Assembly Language (3)
z Chương trình được viết bằng ngôn ngữ Assembly trước khi được
thực thi bởi CPU nó phải được dịch sang mã máy (machine code).
z Ưu điểm
• Việc lập trình nhanh hơn, và chương trình đọc dễ hiểu hơn ngôn ngữ mã máy
• Nguời lập trình dễ nhớ lệnh hơn dùng mã máy
z Nhược điểm
• Chương trình phụ thuộc bộ xử lý
• Chương trình chạy chậm hơn khi được viết bằng mã máy
Source code in
Assembly language
Object code in Machine language
Assembler
Trang 11Ngôn ngữ lập trình cấp cao
z Thân thiện với người sử dụng, bởi vì nó dùng các khái niệm, thuật ngữ gần với ngôn ngữ tự nhiên.
• Ví dụ 1:
if A > B then print “A larger than B”
else print “A less than B”
• Ví dụ 2:
int fact(int n) {
if (n==0)
return 1 else
return n*fact(n-1) }
z Độc lập với các hệ máy
z Chương trình dễ đọc, dễ hiểu, dễ bảo trì
z Khả chuyển trên nhiều hệ máy khác nhau
z Chương trình phải được dịch sang mã máy trước khi được thực thi
n!=
n*(n-1)! n>0
Trang 12Một số ngôn ngữ lập trình cấp cao
z BASIC, Beginner's All-Purpose Symbolic Instruction Code
• John Kermeny và Thomas Kurtz (1964) tại trường đại học
Dartmouth
z COBOL, COmmon Business Oriented Language,
• Bộ quốc phòng Hoa Kỳ (1960) hình thức tựa tiếng Anh
z C
• Dennis Ritchie, phòng thí nghiệm Bell vào năm 1972
z FORTRAN, FORmula TRANslator
• IBM, John Backus (1957) dành cho khoa học, kỹ sư & toán học
z PASCAL
• Niklaus Wirth, Zurich, Thụy Sĩ,1968, giảng dạy lập trình
• Blaise Pascal (1623 - 1662) người đầu tiên tạo ra máy tính
Trang 13Lịch sử phát triển các NNLT
Trang 14Quá Trình Dịch Một Chương Trình
Trang 15Thông dịch & Biên dịch (1)
Source program Compiler Target program
Target program
Biên dịch
Source program Interpreter Output
Input
Thông dịch
Trang 16Thông dịch & Biên dịch (2)
Hiển thị lỗi từng dòng lệnh của chương trình nguồn
Trong quá trình dịch, nếu phát
hiện lỗi, compiler sẽ hiển thị lỗi
của toàn bộ chương trình nguồn.
Mỗi lần thực thi chương trình đều phải dịch lại mã nguồn Ælàm cho chương trình chạy chậm.
Mã đối tượng được lưu lại thành
các tập tin Obj để sử dụng cho
các lần thực thi chương trình sau
đó, mà không cần phải dịch lại
chương trình Ælàm cho chương
trình chạy nhanh hơn
Dịch và thực thi từng dòng lệnh một của chương trình nguồn.
Dịch toàn bộ chương trình nguồn
thành mã đối tượng.
Interpreter Compiler
Trang 17Các phương pháp lập trình
z Lập trình cấu trúc (Structural Programming)
• Tính đơn thể,
• Cấu trúc điều khiển
• Vào/Ra đơn
• Dễ: viết, đọc, hiểu, kiểm lỗi và hiệu chỉnh
z Lập trình hướng đối tượng (Object Oriented
• Phương pháp kết hợp cả dữ liệu và các câu lệnh của
chương trình
• Tạo ra các đối tượng (object)