_ Một chương trình được viết bằng hợp ngữ phải được dịch ra ngôn ngữ máy tính thông qua một chương trình gọi là chương trình hợp dịch Assembler... Tên gọi này ghép
Trang 1Trường THPT Gia Định Họ tên học sinh: Trương Minh Trí
BÀI 5: Ngôn ngữ lập trình
I) Ngôn ngữ máy:
_ Mỗi loại máy tính đều có ngôn ngữ máy của nó Viết các chương trình bằng ngôn ngữ máy, con người
khai thác triệt để được đặc điểm phần cứng của máy Từ một chương trình khác, muốn thực hiện trên máy tính thì ta phải dùng chương trình dịch để dịch ra
Mô phỏng cách dịch từ ngôn ngữ cấp cao sang ngôn ngữ máy
_ Các lệnh viết bằng ngôn ngữ máy thường ở dạng hệ nhị phân hoặc hệ hexa
_ Nhược điểm:
+ Không thuận lợi cho con người trong việc viết hoặc hiểu chương trình
+ Nhớ một cách máy móc các dòng số không gợi ý nghĩa
+Dùng nhiều câu lệnh để diễn tả chi tiết thao tác của thuật toán
Một số ngôn ngữ lập trình khác đã được phát triển
II) Hợp ngữ: (assembly language) _ Hợp ngữ là một ngôn ngữ cấp thấp dùng để viết các chương trình máy tính.
Qua bài 4, ta thấy rằng: Việc diễn tả thuật toán bằng cách liệt kê hoặc sơ đồ khối chưa cho máy khả năng tự thực hiện thuật toán
Ta cần diễn tả thuật toán bằng ngôn ngữ mà máy tính hiểu được:
Kết quả diễn tả thuật toán như vậy cho ta một chương trình , còn ngôn ngữ để viết
chương trình là ngôn ngữ lập trình.
Trong bài 5, ta sẽ đi tìm hiểu các loại ngôn ngữ lập trình cũng như độ phụ thuộc của chúng vào kiến trúc và hoạt động của máy tính
Trang 2Hình ảnh ví dụ về hợp ngữ
_So với ngôn ngữ máy, hợp ngữ cho phép người lập trình sử dụng một số thuật ngữ tiếng Anh để thể hiện các lệnh cần thực hiện
_ Một chương trình được viết bằng hợp ngữ phải được dịch ra ngôn ngữ máy tính thông qua một chương
trình gọi là chương trình hợp dịch (Assembler).
“Thông thường, một trình hợp dịch hiện đại tạo ra mã nhị phân (object code) bằng cách phiên dịch các lệnh hợp ngữ thành mã thực thi (opcodes) và phân tích các biểu danh (symbolic names) ứng với các vùng nhớ cùng các thực thể khác Việc dùng các biểu danh để tham chiếu là một tính năng then chốt của các trình hợp dịch, nó tiết kiệm một khối lượng lớn công việc tính toán và sửa đổi thủ công sau mỗi lần cải tiến ứng dụng Hầu hết các trình hợp dịch đều hỗ trợ macro nhằm giúp cho việc thay thế một nhóm lệnh bằng một định danh ngắn gọn Trong quá trình dịch, nhóm lệnh tương ứng sẽ được chèn trực tiếp vào vị trí macro thay vì một lời gọi hàm (subroutine) Các trình hợp dịch nói chung dễ tạo hơn so với các chương trình dịch cho ngôn ngữ cấp cao”
Ví dụ: * Ta cộng giá trị trong hai thanh AX và BX bằng một lệnh của hợp ngữ như sau:
ADD AX, BX
* Bộ vi xử lý x86/IA-32 có thể thực hiện được chỉ thị nhị phân sau:
10110000 01100001 (thập lục phân: 0xb061)
bằng một hợp ngữ dễ nhớ hơn: mov al, 061h
_Nhược điểm: thuận lợi hơn cho các nhà lập trình chuyên nghiệp nhưng chưa thật sự thích hợp với đông
đảo người lập trình
III)Ngôn ngữ bậc cao:
_Từ đầu những thập kỷ năm mươi của thế kỷ XX, người ta đã xây dựng những ngôn ngữ lập trình bậc cao _Đặc điểm: câu lệnh được viết với ngôn ngữ tự nhiên hơn, có tính độc lập cao, ít phụ thuộc vào các loại máy cụ thể
_Giống như hợp ngữ, mỗi ngôn ngữ lập trình bậc cao đều cần một chương trình dịch để dịch những chương
trình viết bằng ngôn ngữ này sang ngôn ngữ này sang ngôn ngữ máy
Lịch sử phát triển các ngôn ngữ lập trình bậc cao:
FORTRAN (FORmula TRANslator) (1954, bởi công ty IBM)
Trang 3“Fortran (hay FORTRAN) là một ngôn ngữ
lập trình biên dịch, tĩnh, kiểu mệnh lệnh được phát triển từ thập niên 1950 và vẫn được dùng nhiều trong tính toán khoa học hay phương pháp số cho đến hơn nửa thế kỷ sau đó Tên gọi này
ghép lại từ tiếng Anh Formula Translator/Translation nghĩa là dịch công thức
Các phiên bản đầu có tên chính thức là FORTRAN, nhưng chữ hoa được chuyển sang chữ thường từ phiên bản Fortran 90 Tiêu chuẩn quốc tế cho tên gọi này ngày nay là "Fortran”
_ Một số phiên bản tiêu biểu: Fortran IV, Fortran 77, Fortran 90, Fortran 95, Fortran 2003.
_ Một số lệnh trong FORTRAN: lệnh gán, lệnh gọi chương trình con (có các cấu trúc rẽ nhánh hoặc lặp)
Ví dụ: Chương trình “Chào thế giới”
COBOL (Common Business-Oriented Language) (1959)
_COBOL là một ngôn ngữ lập trình thế hệ thứ ba và là một trong những ngôn ngữ lập trình lâu nhất còn
được sử dụng (từ thập niên 1960)
_Ưu điểm của ngôn ngữ lập trình COBOL:
COBOL có rất nhiều chức năng để xử lý tập tin, nhất là theo cách xử lý hàng loạt (batch processing) Không có ngôn ngữ nào có chức năng này ngoài COBOL
COBOL rất dễ viết, dễ đọc lại để sửa hoặc viết thêm vào (rất quan trọng đối với thế giới chuyên nghiệp vì người viết chương trình rất có thể đã rời công ty 20, 30 năm sau, mà chương trình vẫn tiếp tục chạy)
_ Hiện tại Cobol là ngôn ngữ chạy nhiều nhất trên các máy vi tính Mainframe, hằng ngày, hàng triệu dòng Cobol được viết trong những chương trình "Business"
_ Năm 2006, công ty nghiên cứu thị trường công nghệ thông tin, Gartner, ra thông báo rằng hiện tại 60% các chương trình chuyên nghiệp được viết hằng ngày được viết bởi ngôn ngữ COBOL
Ngôn ngữ lập trình FORTRAN (FORmula TRANslator) của hãng IBM vào năm 1954 với cha đẻ của
nó: Mr John Backus
1 program chaothegioi
2
3 print*,"Chao The Gioi!"
4
5 end program chaothegioi
6
Rear Admiral Grace Murray Hopper – người được coi là
mẹ đẻ của ngôn ngữ lập trình COBOL Bà sinh ngày 9/9/1906 và mất ngày 1/1/1992 (thọ 82 tuổi)
Trang 4 Algol 60 (ALGOrithmic Language 1960) và BASIC ( Beginner’s All-purpose Symbolic
Instruction Code) (1965)
Các câu lệnh trên được viết bằng chương trình Algol 60 Ngôn ngữ lập trình của chương trình BASIC
_ Đặc biệt, phần mềm OpenOffice , một bộ ứng dụng văn phòng cạnh tranh với MS Office cũng được viết trên nền BASIC Chúng ta biết ngôn ngữ BASIC qua những cái tên rất quen thuộc như VisualBasic, MSX
Basic ngôn ngữ BASIC được viết chủ yếu dựa trên nền FORTRAN II và một phần của Algol 60
PASCAL (9/1968)
_ Pascal là một ngôn ngữ lập trình cho máy tính thuộc dạng mệnh lệnh, được Niklaus Wirth phát triển vào
năm 1970 là ngôn ngữ đặc biệt thích hợp cho kiểu lập trình có cấu trúc
procedure Absmax(a) Size:(n, m) Result:(y)
Subscripts:(i, k);
value n, m; array a; integer n, m, i, k;
real y;
comment The absolute greatest element of the
matrix a, of size n by m
is transferred to y, and the subscripts of
this element to i and k;
begin integer p, q;
y := 0; i := k := 1;
for p:=1 step 1 until n do
for q:=1 step 1 until m do
if abs(a[p, q]) > y then
begin y := abs(a[p, q]);
i := p; k := q
end
end Absmax
10 INPUT "What is your name: ", U$
20 PRINT "Hello "; U$
30 INPUT "How many stars do you want: ", N
40 S$ = ""
50 FOR I = 1 TO N
60 S$ = S$ + "*"
70 NEXT I
80 PRINT S$
90 INPUT "Do you want more stars?
", A$
100 IF LEN(A$) = 0 THEN GOTO 90
110 A$ = LEFT$(A$, 1)
120 IF A$ = "Y" OR A$ = "y" THEN GOTO 30
130 PRINT "Goodbye "; U$
140 END
Hai cha đẻ của ngôn ngữ lập trình BASIC:
_ Mr John Kemeny _ Mr Thomas Kurtz
Trang 5_Mọi chương trình Pascal bắt đầu bằng từ khóa Program, cùng với một danh sách tùy chọn các phần mô tả các tập tin ngoài và sau đó là một khối các dòng lệnh nằm giữa các từ khóa Begin và End
_Pascal, nguyên thể đơn thuần là ngôn ngữ lập trình thủ tục với một loạt các từ khóa chuẩn if, while, for, và các thành phần khác
_Pascal có các kiểu đơn như integer (số nguyên), character (ký tự), boolean (logic), v.v và enumerations (liệt kê), là kiểu mới được đưa vào Pascal sau này
C++ và Java
_C++ là một loại ngôn ngữ lập trình Đây là một dạng ngôn ngữ đa mẫu hình tự do có kiểu tĩnh và hỗ trợ
lập trình thủ tục, dữ liệu trừu trượng, lập trình hướng đối tượng, và lập trình đa hình Từ thập niên 1990, C+
+ đã trở thành một trong những ngôn ngữ thương mại phổ biến nhất.
_Java là một ngôn ngữ lập trình dạng lập trình hướng đối tượng (OOP) Khác với phần lớn ngôn ngữ lập
trình thông thường, thay vì biên dịch mã nguồn thành mã máy hoặc thông dịch mã nguồn khi chạy, Java được thiết kế để biên dịch mã nguồn thành bytecode, bytecode sau đó sẽ được môi trường thực thi (runtime environment) chạy Bằng cách này, Java thường chạy nhanh hơn những ngôn ngữ lập trình thông dịch khác như Python, Perl, PHP,
Nikalus Wirth – cha đẻ
của ngôn ngữ lập trình Pascal
1 program
ChaoThegioi(output);
2
3
4
5 begin
6
7 writeln('Chao The
gioi!');
8
9 end.
10
Một đoạn mã viết bằng ngôn ngữ PASCAL
Hai nhà sáng lập ra C++ và Java , hai loại ngôn ngữ lập trình thông dụng nhất hiện nay:
_ Mr Bjarne Stroustrup _ Mr James Gosling
Trang 6Một đoạn mã viết bằng ngôn ngữ lập trình C++ Một đoạn mã viết bằng ngôn ngữ lập trình Java
oOo 1 class Nguoi
2
3 {
4
5 public:
6
7 virtual void Chao() // Hàm ảo
8
9 {
10
11 cout << "Toi chua biet
chao";
12
13 };
14
15 };
16
17
// -18
19 class NguoiViet : public
Nguoi
20
21 {
22
23 public:
1 /* Example.java */
2
3
4
5 public class Example
6
7 {
8
9 public static void main(String args[])
10
11 {
12
13 System.out.println("Hello World");
14
15 }
16
17 }
18