1. Tóm tắt lý thuyết
1.1. Khái niệm lập trình, ngôn ngữ lập trình
-
Lập trình là sử dụng cấu trúc dữ liệu và các câu lệnh của một ngôn ngữ lập trình cụ thể để mô phỏng dữ liệu và diễn đạt các thao tác của thuật toán
-
Ngôn ngữ lập trình là ngôn ngữ dùng để diễn tả thuật toán sao cho máy tính hiểu và thực hiện được.
1.2. Phân loại ngôn ngữ lập trình
– Có 3 loại ngôn ngữ lập trình:
-
Ngôn ngữ máy: Bao gồm các kệnh được mã hóa bằn các kí hiêu 0- 1. Chương trình được viết trên ngôn ngữ máy có thể được nạp vào bộ nhớ và thực hiện ngay. Đây là ngôn ngữ duy nhất mà máy tính có thể trực tiếp hiểu và xử lí được.
-
Hợp ngữ: Là loại ngôn ngữ sử dụng một số từ để thực hiện lệnh trên thanh ghi. Hơp ngữ sử dụng các từ viết tắt tiếng anh để diễn tả câu lệnh.
-
Ngôn ngữ bậc cao: Gần với ngôn ngữ tự nhiên, có tính độc lập cao, ít phụ thuộc vào loại máy và chương trình phải dịch sang ngôn ngữ máy mới thực hiện được.
– Lập trình là việc sử dụng cấu trúc dữ liệu và các lệnh của ngôn ngữ lập trình cụ thể để mô tả dữ liệu và diễn đạt các thao tác của thuật toán.
1.3. Chương trình dịch
– Chương trình có chức năng chuyển đổi chương trình viết trên ngôn ngữ lập trình bậc cao thành chương trình thực hiện được trên máy tính gọi là chương trình dịch.
Trong đó:
-
Chương trình nguồn: Là chương trình viết trên ngôn ngữ lập trình bậc cao
-
Chương trình đích: Là chương trình nguồn được chuyển đổi sang ngôn ngữ máy nhờ chương trình dịch
– Chương trình dịch được chia thành hai loại: Thông dịch và biên dịch
+ Thông dịch: Thực hiện lặp đi lặp lại dãy các bước sau:
-
Kiểm tra tính đúng đắn của câu lệnh tiếp theo trong chương trình nguồn
-
Chuyển đổi câu lệnh đó thành các câu lệnh tương ứng trong ngôn ngữ máy
-
Thực hiện các câu lệnh vừa chuyển đổi.
Thông dịch phù hợp với môi trường đối thoại giữ người và máy.
+ Biên dịch: Thực hiện qua hai bước sau:
-
Duyệt, kiểm tra, phát hiện lỗi, xác định chương trình nguồn có dịch được không
-
Dịch chương trình nguồn thành một chương trình đích có thể thực hiện trên máy và lưu trữ lại để sử dụng về sau.
Biên dịch thuận tiện cho các chương trình ổn định và cần thực hiện nhiều lần.
2. Bài tập minh họa
Câu 1: Trong chế độ biên dịch, một chương trình đã được dịch thông suốt, hệ thống không báo lỗi. Có thể khẳng định rằng ta đã có một chương trình đúng hay chưa? Tại sao?
Hướng dẫn giải
Không thể khẳng định chương trình đúng vì chương trình có thể vẫn còn chứa lỗi ngữ nghĩa.
Câu 2: Trong chế độ thông dịch, giả sử hai phần ba số câu lệnh trong chương trình đã được thự hiện. Có thể khẳng định rằng chương trình không còn chứa lỗi cú pháp nữa hay không? Tại sao?
Hướng dẫn giải
Không thể khẳng định. Cú pháp của các câu lệnh chưa thực hiện chưa được kiểm tra.
3. Luyện tập
3.1. Bài tập tự luận
Câu 1: Hãy nêu sự khác biệt giữa 2 loại của chương trình dịch là biên dịch và thông dịch?
Câu 2: Chương trình dịch là gì? Tại sao cần phải có chương trình dịch?
3.2. Bài tập trắc nghiệm
Câu 1: Hãy chọn phương án ghép đúng. Ngôn ngữ máy là
A. Bất cứ ngôn ngữ lập trình nào mà có thể diễn đạt thuật toán để giao cho máy tính thực hiện
B. Ngôn ngữ để viết các chương trình mà mỗi chương trình là một dãy lệnh máy trong hệ nhị phân
C. Các ngôn ngữ mà chương trình viết trên chúng sau khi dịch ra hệ nhị phân thì máy có thể chạy được
D. Diễn đạt thuật toán để có thể giao cho máy tính thực hiện
Câu 2: Hãy chọn phương án ghép sai. Ngôn ngữ lập trình bậc cao là ngôn ngữ
A. Thể hiện thuật toán theo những quy ước nào đó không phụ thuộc vào các máy tính cụ thể
B. Mà máy tính không hiểu trực tiếp được, chương trình viết trên ngôn ngữ bậc cao trước khi chạy phải dịch sang ngôn ngữ máy
C. Có thể diễn đạt được mọi thuật toán
D. Sử dụng từ vựng và cú pháp của ngôn ngữ tự nhiên (tiếng Anh)
Câu 3: Phát biểu nào không đúng trong các phát biểu dưới đây?
A. Chương trình dịch cho phép chuyển chương trình viết bằng một ngôn ngữ lập trình nào đó sang chương trình trên ngôn ngữ máy để máy có thể thực hiện được mà vẫn bảo toàn được ngữ nghĩa của chương trình nguồn;
B. Chương trình dịch giúp người lập trình có thể lập trình trên một ngôn ngữ lập trình gần với ngôn ngữ tự nhiên hơn, do đó giảm nhẹ được nỗ lực lập trình, tăng cường hiệu suất lập trình
C. Chương trình dịch giúp tìm ra tất cả các lỗi của chương trình
D. Một ngôn ngữ lập trình có thể có cả chương trình thông dịch và chương trình biên dịch
Câu 4: Hãy chọn phương án ghép đúng. Ngôn ngữ lập trình là ngôn ngữ
A. Cho phép thể hiện các dữ liệu trong bài toán mà các chương trình sẽ phải xử lí
B. Dưới dạng nhị phân để máy tính có thể thực hiện trực tiếp
C. Diễn đạt thuật toán để có thể giao cho máy tính thực hiện
D. Có tên là “ngôn ngữ thuật toán” hay còn gọi là “ngôn ngữ lập trình bậc cao” gần với ngôn ngữ toán học cho phép mô tả cách giải quyết vấn đề độc lập với máy tính
Câu 5: Hãy chọn phương án ghép đúng. Hợp ngữ là ngôn ngữ
A. Mà máy tính có thể thực hiện được trực tiếp không cần dịch
B. Có các lệnh được viết bằng kí tự nhưng về cơ bản mỗi lệnh tương đương với một lệnh máy . Để chạy đượ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ể chạy trực tiếp dưới dạng kí tự
4. Kết luận
Qua bài học này, các em cần nắm được những nội dung sau: