Bài giảng Nhập môn Tin học - Chương 3: Ngôn ngữ máy, cung cấp cho người học những kiến thức như: Phân loại ngôn ngữ máy; Định dạng của lệnh trong ngôn ngữ máy; Thuận lợi và bất lợi của ngôn ngữ máy; hợp ngữ - Assembly/Symbolic language; ngôn ngữ trung gian của trình biên dịch và thông dịch;...Mời các bạn cùng tham khảo!
Trang 1(Computer languages)
Trang 2Phân loại ngôn ngữ máy
• Assembly language
• High-level language
2
Trang 3Ngôn ngữ máy - Machine language
• Là ngôn ngữ duy nhất mà bộ vi xử lý nhận biết và thực hiện trực tiếp không cần sử dụng chương trình dịch.
• Thường được viết dưới dạng chuỗi các bit nhị phân 0 và 1
• Lệnh thực thi nhanh vì các lệnh được đọc và thực thi trực tiếp
Trang 4Định dạng của lệnh trong ngôn ngữ máy
• Opcode- Operation code
• Opcode báo cho máy tính thực hiện lệnh nào trong tập lệnh của máy
• Operand (Address/Location)
• Operand chỉ cho máy tính địa chỉ của dữ liệu mà trên đó lệnh sẽ được thực thi
4
Trang 5Định dạng của lệnh trong ngôn ngữ máy
Trang 6Ví dụ
6
Trang 7Thuận lợi và bất lợi của ngôn ngữ máy
Trang 8Hợp ngữ -Assembly/Symbolic language
• Là ngôn ngữ lập trình mà giải quyết những hạn chế của ngôn ngữ máy
• Sử dụng mã chữ và số thay vì mã số cho các chỉ thị trong tập lệnh.
Ví dụ: sử dụng lệnh ADD thay vì sử dụng lệnh 1110 (Binary) hoặc 14 (deciaml) cho lệnh cộng.
• Cho phép các vị trí lưu trữ được biểu diễn theo dạng thức địa chỉ chữ và số thay vì
địa chỉ số
Ví dụ: biểu diễn vị trí bộ nhớ 1000, 1001, 1002 cho lệnh FIRST, SCND, ANSR
8
Trang 9ASIDE AN ADDRESS FOR ANSR
Trang 11Hợp ngữ -Assembly/Symbolic language
• Assembler: là phần mềm dùng để chương trình hợp ngữ sang ngôn ngữ máy
Trang 12Hợp ngữ -Assembly/Symbolic language
• Ví dụ: các lệnh trong tập lệnh của hợp ngữ
Mnemonic Opcode Meaning
HLT CLA ADD SUB STA
00 10 14 15 30
Halt, để kết thúc chương trình Xóa và thêm vào thanh ghi A Thêm nội dung vào thanh ghi A Trừ nội dung của thanh ghi A Lưu trữ thanh ghi A
12
Trang 13Hợp ngữ -Assembly/Symbolic language
• Ví dụ: chương trình cộng 2 số và lưu kết quả
Trang 14• Tương đương giữa chương trình sử dụng ngôn máy và chương
…
14
Trang 15Thuận lợi và bất lợi của ngôn ngữ Assembly
Trang 16Thuận lợi và bất lợi của ngôn ngữ Assembly
• Bất lợi:
• Phụ thuộc vào máy
• Người lập trình phải có kiến thức 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ó
16
Trang 17Ngôn ngữ cấp cao – High-level language
• Không phụ thuộc vào máy
• Người lập trình không cần biết nhiều về cấu trúc bên trong của máy tính, nơi mà
chương trình viết bằng ngôn ngữ cấp cao sẽ thực thi.
• Ngôn ngữ cấp cao cho phép người lập trình sử dụng các lệnh gần với ngôn ngữ
tự nhiên, các biểu thức và các ký hiệu toán học.
Trang 18Ngôn ngữ cấp cao – High-level language
• Các loại 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,
18
Trang 19Ngôn ngữ cấp cao – High-level language
• Ví dụ: chương trình trên được viết bằng ngôn ngữ
cấp cao C:
short 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
Trang 20Trình biên dịch - Compiler
• Là chương trình dịch dùng để chuyển một chương trình được viết bằng ngôn ngữ cấp cao thành một chương trình bằng ngôn ngữ máy.
• Biên dịch thành một tập các chỉ thị của ngôn ngữ máy cho các chỉ thị trong
chương trình của ngôn ngữ cấp cao.
20
Trang 21Trình biên dịch - Compiler
• Compiler:
Trang 22Trình biên dịch - Compiler
• Một máy tính sẽ hỗ trợ các chương trình dịch khác nhau cho những ngôn ngữ cấp cao khách nhau
22
Trang 23Trình biên dịch - Compiler
• Chương trình viết bằng ngôn ngữ cấp cao độc lập với máy tính
Trang 24Trình biên dịch - Compiler
• Kiểm tra lỗi cú pháp (Syntax errors)
• Trình biên dịch ngoài chức năng biên dịch từ ngôn ngữ cấp cao sang ngôn ngữ máy
còn có chức năng kiểm tra lỗi cú pháp
• Các loại lỗi cú pháp:
• Ký tự và kết hợp các ký tự không hợp lệ
• Trình tự của các lệnh trong chương trình không hợp lệ
• Sử dụng tên của các biến chưa được định nghĩa
24
Trang 25Trình biên dịch - Compiler
• Quy trình kiểm lỗi của trình
biên dịch
Trang 26• Bất kỳ sự thay đổi nào trong chương trình đều phải biên dịch lại toàn bộ chương trình.
• Cách tiếp cận Module thường được áp dụng trong việc xây dựng những phần mềm lớn với nhiều tập tin chương trình nguồn
26
Trang 27Liên kết - Linker
• Không cần phải viết lại những chương trình cho những module có sẵn trong thư viện với chức năng tương tự
• Mỗi tập tin chương trình nguồn có thể được biên dịch và hiệu chỉnh một các độc lập
để tạo ra một đối tượng tập tin chương trình tương ứng
• Chương trình liên kết được sử dụng để kết hợp tất cả các đối tượng tập tin chương trình một cách chính xác
• Tạo một tập tin thực thi chương trình cuối cùng
Trang 28Liên kết - Linker
28
Trang 29Trình thông dịch - Interpreter
• Interpreter là một trình thông dịch những chương trình được viết bằng ngôn ngữ cấp cao.
• Lấy một lệnh của ngôn ngữ cấp cao chuyển thành ngôn ngữ máy và thực thi
ngay lập tức và đưa ra kết quả
Trang 30Ngôn ngữ trung gian của trình biên dịch và thông dịch
• Intermediate: là ngôn ngữa trung gian, kết hợp của trình biên dịch và thông dịch
Trang 31Thuận lợi và bất lợi của ngôn ngữ cấp cao
Trang 32Thuận lợi và bất lợi của ngôn ngữ cấp cao
• Bất lợi:
• Hiệu quả thấp hơn vì thời gian thực thi lâu và tốn bộ nhớ
• Ít linh hoạt hơn vì không có cơ chế kiểm soát CPU và bộ nhớ32
Trang 33Ngôn ngữ lập trình hướng đối tượng - OOP
• Là ngôn ngữ lập trình mô phỏng các vấn đề của thế giới thực trên máy tính.
• Bản chất 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.
• Xử lý yêu cầu của các đối tượng.
• Mô phỏng các đối tượng, tiến trình và giao tiếp giữa chúng
Trang 34Ngôn ngữ lập trình hướng đối tượng -OOP
• Thuận lợi:
• Khả năng mô hình hóa gần với tự nhiên
• Thiết kế theo hướng modular
• Trừu tượng hóa
• Liên kết động
• Tái sử dụng mã lệnh
• Dễ bảo trì34
Trang 35Các khái niệm trong lập trình hướng đối tượng
• Đối tượng (Object)
• Mỗi đối tượng bao gồm một bộ các phương thức và thuộc tính.
• Mỗi đối tượng có một tên riêng biệt và tất cả các tham chiếu đến đối tượng đó được tiến hành qua tên của nó
• Mỗi đối tượng có khả năng nhận vào các thông báo, xử lý dữ liệu, và trả kết quả
Trang 36Các khái niệm trong lập trình hướng đối tượng
Trang 37Các khái niệm trong lập trình hướng đối tượng
• Thông báo (Messages):
• Là cơ chế để hỗ trợ giao tiếp giữa các đối tượng.
• Tất cả các máy tính trong một chương trình được viết bằng một ngôn ngữ OOP được thực hiện bằng cách gửi thông báo cho một đối tượng để gọi các phương thức thực thi
Trang 38Các khái niệm trong lập trình hướng đối tượng
• Thừa kế (Inheritance)
• Là một cơ chế để chia sẻ mã lệnh và hành vi (phương thức)
• 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 khi định nghĩa lớp mới
• Lớp con có thể kế thừa từ nhiều lớp cha Đây gọi là đa thừa kế38
Trang 39• Mô hình của ngôn ngữ lập trình hướng thủ tục:
• Mạnh về mặt tổ chức và quản lý các hành động và thuật toán
• Yếu về cách tổ chức quản lý dữ liệu dùng chung
Trang 41• Để tạo ra chương trình có cấu trúc, các chương trình Pascal gồm nhiều khối Mỗi khối
bắt đầu bằng BEGIN và kết thúc bằng END
Trang 42Một số ngôn ngữ lập trình cấp cao
• Ví dụ một chương trình viết bằng ngôn ngữ Pascal
42
PROGRAM SUMNUMS (INPUT, OUTPUT);
(* PROGRAM TO COMPUTE THE SUM OF 10 NUMBERS *) (* DECLARATION OF VARIABLES *)
VAR SUM, N : REAL;
Trang 44Một số ngôn ngữ lập trình cấp cao
• Ví dụ chương trình viết bằng ngôn ngữ C
44
Trang 45Một số ngôn ngữ lập trình cấp cao
• Ngôn ngữ C++
• C+ + được phát triển bởi Bjarne Stroustrup tại phòng thí nghiệm
Bell vào đầu những năm 1980
• C++ chứa tất cả các yếu tố cơ bản của các ngôn ngữ C, nhưng
được mở rộng thêm tính năng lập trình hướng đối tượng
• C+ + khó học hơn so với C.
• C+ + hoàn toàn tương thích với C
• Chương trình C có thể được biên dịch như là chương trình C++
Trang 46}
Trang 47Một số ngôn ngữ lập trình cấp cao
• Java :
• Java là một ngôn ngữ chính được sử dụng cho các ứng dụng dựa trên Internet Được
phát triển tại Sun Microsystems vào năm 1991 bởi một nhóm do James Gosling lãnh đạo
• Java được công bố chính thức vào tháng 5 năm 1995, và phiên bản phát hành
thương mại đầu tiên đã được thực hiện trong năm 1996
Trang 48Một số ngôn ngữ lập trình cấp cao
• Tính chất của Java:
• Chỉ biên dịch một lần, các chương trình Java được biên dịch độc lập và được thông
dịch bởi hệ thống “Java Runtime” tại thời gian thực thi của chương trình
• Java đơn giản, dễ cài đặt và dễ sử dụng
• Java không hỗ trợ kiểu con trỏ và đa thừa kế Do đó, Java được coi là một ngôn ngữ lập trình hướng đối tượng hoàn toàn
• Việc biên dịch được thực hiện bởi máy độc lập
48
Trang 49Đặc điểm của một ngôn ngữ lập trình tốt
Trang 50Cách chọn ngôn ngữ cho việc xây dựng ứng dụng
• Tính tự nhiên của ứng dụng
• Thân thiện với ngôn ngữ
• Dễ học, dễ sử dụng.
• Có sẵn các công cụ để phát triển chương trình.
• Thực thi hiệu quả
• Mang tính chất của một ngôn ngữ lập trình tốt.
50
Trang 51Review
Trang 52A Chuyển đổi ngôn ngữ máy sang ngôn ngữ lập trình bậc cao
B Chuyển đổi chương trình viết bằng hợp ngữ hoặc ngôn ngữ lập
trình bậc cao sang ngôn ngữ máy
C Chuyển đổi hợp ngữ sang ngôn ngữ lập trình bậc cao
D Chuyển đổi ngôn ngữ máy sang hợp ngữ
Trang 53A Chuyển đổi các ngôn ngữ lập trình khác sang ngôn ngữ máy
B Chuyển đổi ngôn ngữ máy sang ngôn ngữ bậc cao
C Chuyển đổi hợp ngữ sang ngôn ngữ lập trình bậc cao
D Cả A_, B_, C_ đều đúng
Trang 54A Là bất cứ ngôn ngữ lập trình nào mà có thể mô tả thuật toán để giao cho máy tính thực
hiện
B Là ngôn ngữ duy nhất mà máy tính có thể hiểu và thực hiện được
C Là ngôn ngữ gần với ngôn ngữ tự nhiên, có tính độc lập cao và không phụ thuộc vào
các loại máy
Trang 55A Mà máy tính có thể thực hiện được trực tiếp không cần dịch
B Sử dụng một số từ để thực hiện các lệnh trên thanh ghi Để thực hiện được cần dịch ra
ngôn ngữ máy
C Mà các lệnh không viết trực tiếp bằng mã nhị phân
D Không viết bằng mã nhị phân, được thiết kế cho một số loại máy có thể hiểu và thực
hiện trực tiếp các câu lệnh dưới dạng kí tự
Hợp ngữ là ngôn ngữ
Trang 56A Là loại ngôn ngữ mô tả thuật toán dưới dạng văn bản theo những quy ước nào đó và
hoàn toàn không phụ thuộc vào các máy tính cụ thể
B Là loại ngôn ngữ mà máy tính không thực hiện trực tiếp được Trước khi thực hiện
phải dịch ra ngôn ngữ máy
C Là ngôn ngữ gần với ngôn ngữ tự nhiên, có tính độc lập cao và không phụ thuộc vào
các loại máy
D Là loại ngôn ngữ có thể mô tả được mọi thuật toán
Trang 57A Ngôn ngữ máy
B Hợp ngữ
C Ngôn ngữ bậc cao
D Cả 3 câu đều đúng