Bài 1: Khái niệm về lập trình và ngôn ngữ lập trình


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 để viết chương trình

2. Phân loại ngôn ngữ lập trình

Ngôn ngữ lập trình được chia thành ba loại:

- Ngôn ngữ máy: Ngôn ngữ duy nhất máy có thể trực tiếp hiểu và thực hiện

- Hợp ngữ: Rất gần với ngôn ngữ máy, nhưng mã lệnh được thay bằng tên viết tắt của thao tác (thường là tiếng Anh)

- 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

3. Chương trình dịch

a. Khái niệm

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

Hình 1. 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

b. Phân loại

Chương trình dịch được chia thành hai loại: Thông dịch và biên dịch

b.1. 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

-  Loại chương trình dịch này đặc biệt thích hợp cho môi trường đối thoại giữa người dùng và hệ thống, như các ngôn ngữ khai thác hệ quản trị cơ sở dữ liệu, đối thoại với hệ điều hành…

b.2. 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

- Loại chương trình dịch này thuận tiện cho các chương trình ổn định và cần thực hiện nhiều lần

- Kèm với chương trình dịch, người dùng còn được cung cấp các dịch vụ lên quan như biên soạn, lưu trữ... tạo thành một môi trường làm việc trên một ngôn ngữ lập trình. Ví dụ: Turbo Pascal 7.0, Free Pascal 1.2, Visual Pascal 2.1,...

4. Bài tập

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?

Gợi ý trả lời:

- Biên dịch: 

+ Đọc và dịch toàn bộ mã nguồn trong một lần 

+ Thực thi chương trình vừa biên dịch được 

+ Chương trình có thể được lưu trữ để dùng về sau 

- Thông dịch: 

+ Đọc và dịch từng câu lệnh trong mã nguồn

+ Thực thi từng câu lệnh sau khi câu lệnh đó được dịch xong

+ Không được lưu trữ để dùng về sau

Câu 2

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?

Gợi ý trả lờ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 3

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?

Gợi ý trả lờ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.

Câu 4

Sau khi chương trình đã được dịch thông suốt, không còn lỗi cú pháp, có cần tiếp tục hiệu chỉnh, tức là tìm và sửa lỗi trong chương trình nguồn nữa hay không?

Gợi ý trả lời:

Có. Cần kiểm tra ngữ nghĩa.

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 để viết chương trình

2. Phân loại ngôn ngữ lập trình

Ngôn ngữ lập trình được chia thành ba loại:

- Ngôn ngữ máy: Ngôn ngữ duy nhất máy có thể trực tiếp hiểu và thực hiện

- Hợp ngữ: Rất gần với ngôn ngữ máy, nhưng mã lệnh được thay bằng tên viết tắt của thao tác (thường là tiếng Anh)

- 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

3. Chương trình dịch

a. Khái niệm

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

Hình 1. 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

b. Phân loại

Chương trình dịch được chia thành hai loại: Thông dịch và biên dịch

b.1. 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

-  Loại chương trình dịch này đặc biệt thích hợp cho môi trường đối thoại giữa người dùng và hệ thống, như các ngôn ngữ khai thác hệ quản trị cơ sở dữ liệu, đối thoại với hệ điều hành…

b.2. 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

- Loại chương trình dịch này thuận tiện cho các chương trình ổn định và cần thực hiện nhiều lần

- Kèm với chương trình dịch, người dùng còn được cung cấp các dịch vụ lên quan như biên soạn, lưu trữ... tạo thành một môi trường làm việc trên một ngôn ngữ lập trình. Ví dụ: Turbo Pascal 7.0, Free Pascal 1.2, Visual Pascal 2.1,...

4. Bài tập

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?

Gợi ý trả lời:

- Biên dịch: 

+ Đọc và dịch toàn bộ mã nguồn trong một lần 

+ Thực thi chương trình vừa biên dịch được 

+ Chương trình có thể được lưu trữ để dùng về sau 

- Thông dịch: 

+ Đọc và dịch từng câu lệnh trong mã nguồn

+ Thực thi từng câu lệnh sau khi câu lệnh đó được dịch xong

+ Không được lưu trữ để dùng về sau

Câu 2

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?

Gợi ý trả lờ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 3

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?

Gợi ý trả lờ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.

Câu 4

Sau khi chương trình đã được dịch thông suốt, không còn lỗi cú pháp, có cần tiếp tục hiệu chỉnh, tức là tìm và sửa lỗi trong chương trình nguồn nữa hay không?

Gợi ý trả lời:

Có. Cần kiểm tra ngữ nghĩa.

Bài học tiếp theo

Bài 2: Các thành phần của ngôn ngữ lập trình

Bài học bổ sung