Trường THPT Gia Định Họ tên học sinh: Trương Minh Trí Môn: Tin học 10 Học sinh lớp : 10CH BÀI 5: Ngônngữlậptrình I) Ngônngữ máy: _ Mỗi loại máy tính đều có ngônngữ máy của nó. Viết các chương trình bằng ngônngữ 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ônngữ cấp cao sang ngônngữ máy _ Các lệnh viết bằng ngônngữ 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ônngữlậptrì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ônngữ 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ônngữ để viết chương trình là ngônngữlập trình. Trong bài 5, ta sẽ đi tìm hiểu các loại ngônngữlậptrì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. Hình ảnh ví dụ về hợp ngữ _So với ngônngữ máy, hợp ngữ cho phép người lậptrì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ônngữ 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ậptrình chuyên nghiệp nhưng chưa thật sự thích hợp với đông đảo người lậptrì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ônngữlậptrình bậc cao _Đặc điểm: câu lệnh được viết với ngônngữ 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ônngữlậptrì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ônngữ này sang ngônngữ này sang ngônngữ máy Lịch sử phát triển các ngônngữlậptrình bậc cao: • FORTRAN (FORmula TRANslator) (1954, bởi công ty IBM) “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ônngữlậptrì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ônngữlậptrì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ậptrình COBOL. Bà sinh ngày 9/9/1906 và mất ngày 1/1/1992 (thọ 82 tuổi) • 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ậptrì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ônngữ BASIC qua những cái tên rất quen thuộc như VisualBasic, MSX Basic ngônngữ 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ậptrình BASIC: _ Mr. John Kemeny _ Mr. Thomas Kurtz _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ậptrì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ônngữ PASCAL Hai nhà sáng lập ra C++ và Java , hai loại ngôn ngữlậptrình thông dụng nhất hiện nay: _ Mr. Bjarne Stroustrup _ Mr. James Gosling Một đoạn mã viết bằng ngônngữlậptrình C++ Một đoạn mã viết bằng ngônngữlậptrì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. . 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,. 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