Bài giảng Nhập môn tin học - Chương 3: Ngôn ngữ máy (Computer languages) - Từ Thị Xuân Hiền

Ngô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

Thường khó đọc

Lệnh thực thi nhanh vì các lệnh được đọc và thực thi trực tiếp

 

pptx 50 trang yennguyen 4220
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Nhập môn tin học - Chương 3: Ngôn ngữ máy (Computer languages) - Từ Thị Xuân Hiền", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Nhập môn tin học - Chương 3: Ngôn ngữ máy (Computer languages) - Từ Thị Xuân Hiền

Bài giảng Nhập môn tin học - Chương 3: Ngôn ngữ máy (Computer languages) - Từ Thị Xuân Hiền
Chương 3: Ngôn ngữ máy (Computer languages) 
12/2/2021 
1 
Phân loại ngôn ngữ máy 
Machine language 
Assembly language 
High-level language 
12/2/2021 
2 
Ngô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 
Thường khó đọc 
Lệnh thực thi nhanh vì các lệnh được đọc và thực thi trực tiếp 
12/2/2021 
3 
Đị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. 
12/2/2021 
4 
Định dạng của lệnh trong ngôn ngữ máy 
12/2/2021 
5 
Ví dụ 
12/2/2021 
6 
Thuận lợi và bất lợi của ngôn ngữ máy 
Thuận lợi: 
Lệnh thực hiện rất nhanh 
Bất lợi: 
Phụ thuộc vào máy 
Khó viết chương trình 
Dễ bị lỗi 
Khó hiệu chỉnh 
12/2/2021 
7 
Hợ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 . 
C ho 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 
12/2/2021 
8 
Hợp ngữ -Assembly/Symbolic language 
C ung cấp những lệnh giả được sử dụng để hướng dẫn hệ thống gắn kết các lệnh của chương trình vào trong bộ nhớ của máy tính . 
Ví dụ: 
	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 
12/2/2021 
9 
Hợp ngữ -Assembly/Symbolic language 
Ví dụ: 
 Ngôn ngữ máy dạng nhị phân NNM dạng Hex NN Assembly 
10111000 00000101 00000000 b8 05 00 mov ax, 5 
10100011 00000000 00000002 a3 00 02 mov [200], ax 
10100001 00000000 00000002 a1 00 02 mov ax, [200] 
00000101 00001010 00000000 05 0a 00 add ax, 10 
10100011 00000010 00000010 a3 02 02 mov [202],ax 
12/2/2021 
10 
Hợ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 
12/2/2021 
11 
Hợp ngữ -Assembly/Symbolic language 
Ví dụ: các lệnh trong tập lệnh của hợp ngữ 
12/2/2021 
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 
Hợp ngữ -Assembly/Symbolic language 
Ví dụ: chương trình cộng 2 số và lưu kết quả 
12/2/2021 
13 
Tương đương giữa chương trình sử dụng ngôn máy và chương trình sử dụng ngôn ngữ Assembly 
12/2/2021 
Memory location 
Nội dung 
Ý nghĩa 
Opcode 
Address 
0000 
10 
1000 
Xóa và gán số thứ nhất vào FIRST của thanh ghi A 
0001 
14 
1001 
Thêm số thứ hai tại SCND của thanh ghi A 
0002 
30 
1002 
Lưu nội dung của thanh ghi A vào ANSR 
0003 
00 
Dừng chương trình 
1001 
Lưu trữ giá trị trong FIRST 
1002 
Lưu trữ giá trị trong SCND 
1003 
Lưu trữ giá trị trong ANSR 
14 
Thuận lợi và bất lợi của ngôn ngữ Assembly 
Thuận lợi: 
Dễ hiểu và dễ sử dụng 
Dễ định vị hơn và sửa lỗi chính xác 
Dễ hiệu chỉnh chương trình 
Không quan tâm đến địa chỉ 
Dễ dàng xác định đúng vị trí 
Hiệu xuất cao hơn ngôn ngữ máy tính 
12/2/2021 
15 
Thuậ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ó. 
12/2/2021 
16 
Ngô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. 
12/2/2021 
17 
Ngô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,.. 
12/2/2021 
18 
Ngô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 
12/2/2021 
19 
Trì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. 
12/2/2021 
20 
Trình biên dịch - Compiler 
Compiler : 
12/2/2021 
21 
Trì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 
12/2/2021 
22 
Trì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 
12/2/2021 
23 
Trì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 
12/2/2021 
24 
Trình biên dịch - Compiler 
Quy trình kiểm lỗi của trình biên dịch 
12/2/2021 
25 
Liên kết - Linker 
Đối với một phần mềm lớn, để lưu trữ tất cả các dòng lệnh trong chương trình sẽ gặp các vấn đề: 
K hó khăn khi nhiều lập trình viên làm việc đồng thời trong việc xây dựng và phát triển phần mềm. 
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. 
12/2/2021 
26 
Liê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. 
12/2/2021 
27 
Liên kết - Linker 
12/2/2021 
28 
Trì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ả 
12/2/2021 
29 
Ngô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 sẽ tăng tốc độ và dễ dàng hơn: 
Trước hết, trình biên dịch sẽ biên dịch chương trình nguồn sang chương trình đối tượng trung gian. 
Trình thông dịch nhận chương trình đối tượng trung gian và dịch sang chương trình ngôn ngữ máy và thực thi. 
12/2/2021 
30 
Thuận lợi và bất lợi của ngôn ngữ cấp cao 
Thuận lợi: 
Dễ sử dụng trên từng máy, độc lập với máy 
Dễ đọc, dễ hiểu và dễ sử dụng 
Lỗi ít 
Chi phí viết chương trình thấp. 
Dễ dàng lưu trữ và dễ bảo trì 
12/2/2021 
31 
Thuậ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ớ 
12/2/2021 
32 
Ngô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 
12/2/2021 
33 
Ngô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ì 
12/2/2021 
34 
Cá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ả. 
12/2/2021 
35 
Các khái niệm trong lập trình hướng đối tượng 
Phương thức : 
Các thao tác mà đối tượng sẽ thực hiện. 
Thuộc tính : 
Danh sách các tính chất mô tả đối tượng. 
Ví dụ: 
	. Đối tượng: Sinh viên 
	. Thuộc tính: Họ SV, Tên SV, Ngày Sinh 
	. Phương thức: xuất thông tin sinh viên 
12/2/2021 
36 
Cá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. 
12/2/2021 
37 
Cá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) . 
C ho 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ế 
12/2/2021 
38 
Ngôn ngữ lập trình hướng thủ tục 
Quy ước sử dụng thủ tục trừu tượng, đóng gói một dãy các lệnh vào trong một thủ tục. 
Vai trò của các thủ tục là chuyển dữ liệu đầu vào được xác định bởi các tham số thành các giá trị. 
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. 
12/2/2021 
39 
Một số ngôn ngữ lập trình cấp cao 
FORTRAN 
COBOL 
BASIC 
PASCAL 
PL/1 
C/C++ 
C# 
Java 
12/2/2021 
40 
Một số ngôn ngữ lập trình cấp cao 
Pascal: 
Được tạo ra năm 1971 bởi giáo sư Nicklaus Wirth của Viện Công nghệ liên bang ở Zurich, Thụy Sĩ. 
Pascal được phát triển dựa trên các khái niệm liên quan đến cấu trúc chương trình, đặc biệt biểu thức điều khiển và cấu trúc lặp. 
Để 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 
12/2/2021 
41 
Mộ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 
12/2/2021 
42 
PROGRAM SUMNUMS (INPUT, OUTPUT); 
(* PROGRAM TO COMPUTE THE SUM OF 10 NUMBERS *) 
(* DECLARATION OF VARIABLES *) 
VAR SUM, N : REAL; 
VAR I: INTEGER; 
(*MAIN PROGRAM LOGIC STARTS HERE *) 
BEGIN 
	SUM:= 0; 
	FOR I:= 1 TO 10 DO 
	BE GIN 
	READ (N); 
	SUM:= SUM + N; 
	END; 
	WRITELN (“THE SUM OF GIVEN NUMBERS =”, SUM); 
END 
Một số ngôn ngữ lập trình cấp cao 
Ngôn ngữ C 
Ngôn ngữ C được phát triển năm 1972 tại phòng thí nghiệm Bell của AT & T, Mỹ bởi Dennis Ritchie và Brian Kemiglian. 
Mục tiêu của họ là phát triển một ngôn ngữ có những ưu điểm của ngôn ngữ lập trình cấp cao với hiệu quả của ngôn ngữ máy. 
12/2/2021 
43 
Mộ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 
12/2/2021 
44 
Mộ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 ++ 
12/2/2021 
45 
Mộ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++ 
12/2/2021 
46 
#include 
#include 
int main() 
{ 
	int tong, i, n; 
	tong =0; 
	for(i=0; i<10; i++) 
	{ 
	cout<<"n="; 
	cin>>n; 
	tong=tong+n; 
	} 
	cout<<"\nTong cac so vua nhap:"<<tong; 
} 
Mộ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. 
12/2/2021 
47 
Mộ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 
12/2/2021 
48 
Đặc điểm của một ngôn ngữ lập trình tốt 
Tính đơn giản 
Tính tự nhiên 
Sự trừu tượng hóa 
Tính hiệu quả 
Có cấu trúc 
Tính chắc chắn 
Tính cục bộ 
Tính mở rộng 
Phù hợp cho các môi trường 
12/2/2021 
49 
Cá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. 
12/2/2021 
50 

File đính kèm:

  • pptxbai_giang_nhap_mon_tin_hoc_chuong_3_ngon_ngu_may_computer_la.pptx