Sách Giải

https://sachgiai.com

Giải bài tập tin học lớp 11 bài 2 trang 13: Các thành phần và ngôn ngữ lập trình

Giải bài tập tin học lớp 11 bài 2 trang 13: Các thành phần và ngôn ngữ lập trình
A. TÓM TẮT LÝ THUYẾT
1. Các thành phần cơ bản
Mỗi ngôn ngữ lập trình có 3 thành phần cơ bản, đó là: bảng chữ cái, cú pháp và ngữ nghĩa.
a) Bảng chữ cái là tập các kí tự được dùng đề viết chương trình. Không được phép dùng bất kì kí tự nào ngoài các kí tự quy định trong bảng chữ cái.
Trong Pascal, bảng chữ cái bao gồm các kí tự:
• Các chữ cái thường và các chữ in hoa của bảng chữ cái tiếng Anh:
Bảng chữ cái của các ngôn ngữ lập trình nói chung không khác nhau nhiều.

b) Cú pháp là bộ qui tắc để viết chương trình, mà dựa vào chúng, người lập trình và chương trình dịch biết được tổ hợp nào của ức kí tự trong bảng chữ cái là hợp lệ. Nhờ đó, có thể mô tả chính xác thuật toán đó máy tính thực hiện.

c) Ngữ nghĩa xác định ý nghĩa thao tác cần phải thực hiện, ứng với tổ hợp kí tự dựa vào ngữ cảnh của nó.
Tóm lại, cú pháp cho biết cách viết chương trình hợp lệ còn ngữ nghĩa xác định ý nghĩa của các tố hợp kí tự trong chương trình.

2. Một số khái niệm
a) Tên
- Mọi đối tượng trong chương trình đều phải được đặt tên theo quy tắc của ngôn ngữ lập trình và từng chương trình dịch cụ thể.
- Tên trong Turbo Pascal là một dãy liên tiếp không quá 127 kí tự bao gồm chữ số, chữ cái hoặc dấu gạch dưới và bắt đầu bằng chữ cái hoặc dấu gạch dưới.
- Nhiều ngôn ngữ lập trình (Pascal, chẳng hạn), phân biệt ba loại tên, đó là:
+ Tên dành riêng:
+  Tên chuẩn;
+ Tên do người lập trình đặt.
- Tên dành riêng: Tên được dùng với ý nghĩa xác định, người lập trình không được sử dụng với ý nghĩa khác và chúng còn được gọi là từ khóa.
Ví dụ, một số tên dành riêng:
Trong Pascal: program, uses, const, type, var, begin, end. 
Trong C++: main, include, if, while, void.
- Tên chuẩn: Tên dùng với ý nghĩa nào đó, nhưng người lập trình có thể khai báo và dùng chúng với ý nghĩa và mục đích khác. Ý nghĩa của chúng được qui định trong các thư viện của ngôn ngữ lập trình.
Ví dụ, tên chuẩn:
Trong Pascal: abs, sqr, sqrt, integer, longint, by te, real, extended, break 
Trong C++: cin, cout, getchar
-  Tên do người lập trình đặt: Tên được dùng với ý nghĩa riêng, xác định bằng cách khai báo trước khi sử dụng và chúng không được trùng với tên dành riêng.
Ví dụ, tên do người lập trình đặt: Al, baitap1, bai thi....

b) Hằng và biến
- Hằng là các đại lượng có giá trị không thay đổi trong quá trình thực hiện chương trình.
- Hằng số học là các số nguyên hay số thực (dấu phẩy tĩnh hoặc dấu phẩy động) có dấu hoặc không dấu. Ví dụ, 2. 0. -5, +18, 1.5, I.OE-6,... 
- Hằng logic là giá trị đúng hoặc sai tương ứng với true hoặc false. Ví dụ hằng lôgic trong Pascal: TRUE, FALSE.
- Hằng xâu là chuỗi kí tự trong bảng chữ cái. Khi viết, chuỗi kí tự này được đặt trong dấu nháy (Pascal dùng dấu nháy đơn, còn C++ dùng dấu nháy kép). Ví dụ, hằng xâu trong Pascal: ‘hoctottinhoc11, ‘ha noi’,..trong C++: “TINHOC”, “HA NOI”,...
- Biến là đại lượng được đặt tên, dùng để lưu trữ giá trị và giá trị có thể được thay đổi trong quá trình thực hiện chương trinh. Các biến dùng trong chương trình đều phải khai báo.

c) Chú thích
Chúng ta có thể đặt các đoạn chú thích trong chương trình nguồn. Chúng giúp cho người đọc chương trình nhận biết ngữ nghĩa của chương trình đó dễ hơn. Nó không ảnh hưởng đến nội dung chương trình nguồn và được chương trình dịch bỏ qua.
Trong Pascal các đoạn chú thích đặt giữa cặp dấu { và } hoặc (* và *), còn trong C++ là đặt các đoạn chú thích giữa cặp dấu /* và */
 
B. CÂU HỎI VÀ BÀI TẬP
I. BÀI TẬP CƠ BẢN
1. Tại sao người ta phải xây dựng các ngôn ngữ lập trình bậc cao? 
2. Chương trình dịch là gì? Tại sao cần phải có chương trình dịch?
3. Biên dịch và thông dịch khác nhau như thế nào?
4. Hãy cho biết các điểm khác nhau giữa tên dành riêng và tên chuẩn?
5. Hãy tự viết ra ba tên đúng theo quy tắc của Pascal và có độ dài khác nhau.
6. Hãy cho biết những biểu diễn nào dưới đây không phải là biểu diễn hàng trong
Pascal và chỉ rỏ lỗi trong từng trường hợp;
a)150.0 b) -22           c) 6.23 d)‘43’
e) A20) f)1.06F.-15 g) 4-6            h)‘C’
i) ‘TRUH’
Hướng dẫn trả lời
1. Người ta phải xây dựng các ngôn ngữ lập trình bậc cao, bởi những lí do sau:
- Ngôn ngữ lập trình bậc cao gần với ngôn ngữ tự nhiên hơn, thuận tiện cho đông đảo người lập trình (không chỉ cho những người lập trình chuyên nghiệp).
- Ngôn ngữ lập trình bậc cao nói chung không phụ thuộc vào loại máy, cùng một chương trình có thể thực hiện trên nhiều loại máy khác nhau.
- Chương trình viết bằng ngôn ngữ bậc cao dễ hiểu, dễ hiệu chỉnh và dề nâng cấp hưn.
- Ngôn ngữ lập trình bậc cao cho phép làm việc với nhiêu kiểu dữ liệu và cách tổ chức dữ liệu da dạng, thuận tiện cho mô tả thuật toán.

2. Chương trình dịch là chương trình đặc biệt, có chức năng chuyển đổi chương trình được 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 cụ thề.
-  Chúng ta cần phải có chương trinh dịch bời vì chương trình dịch có chức năng chu7ểm đổi chương trình được viết bằng 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 cụ thể. Nó nhận đầu vào là chương trình viết bằng ngôn ngữ lập trình bậc cao (chương trình nguồn) là dữ liệu vào (Input), thực hiện chuyển đổi bằng ngôn ngữ máy (chương trình đích) lá kết quả ra (Output).
Ngài ra, chương trình dịch trải qua hai giai (đoạn: phân tích và tổng hợp. Giai đoạn phân tích nhăm phân tích chương trình nguồn về tù vựng và cú pháp. Giai đoạn tổng hợp nhằm tạo ra chương trình đích gồm ba bước, đó là:
- Sinh mã trung gian (chuyển chương trình nguồn về chương trình trung gian);
- Tối hoa ứu (chỉnh sữa tối ưu chương trình trung gian);
- Sinh ưu mã (tạo chương trình đích từ chương trinh trung gian đã tối ưu).
 
3. Biên dịch và thông dịch khác nhau ở những điểm sau:
- Trình biên dịch 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 toàn bộ chương trình nguồn thành một chương trình dịch có thể thực hiện trên máy vả có thể lưu trữ lại để sử dụng về sau khi cần thiết.
Trình thông dịch lần lượt dịch từng câu lệnh ra ngôn ngữ máy rồi thực hiện ngay câu lệnh vừa dịch được hoặc thông báo lỗi nếu không dịch được.

4. Các điểm khác nhau giữa tên dành riêng và tên chuẩn, đó là: tên dành riêng không được dùng khác với ý nghĩa xác định, tên chuẩn có thể dùng với ý nghĩa khác.

5. Ba tên đúng theo quy tắc của Pascal và có độ dài khác nhau: tinhoc tin_hoc_2007 hanoi2007
Lưu ý: Tên trong Pascal được đặt theo quy tắc sau đây:
Chỉ bao gồm chữ cái, chữ số và dấu gạch dưới;
Không bắt đầu bằng chữ sổ;
Độ dài theo quy định của trình dịch (Turbo Pascal không quá 127 kí tự:, Free Pascal không quá 255 kí tự).
Tuy nhiên, tên không nên đặt quá dài hay quá ngắn mà nên đặt sao cho gợi nhớ ý nghĩa đối tượng mang tên đó.

6. Những biểu diễn sau đây không phải là hằng trong Pascal:
Biểu diễn Diễn giải
c) 6,23 Dấu phẩy phải thay bằng dấu chấm (.)
e) A20 Là tên chưa có giá trị
Chú ý.

Biểu diễn Diễn giải
g) 4+6 Là biểu thức hẳng trong Pascal chuẩn cũng được coi là hăng trong Turbo Pascal (TP)
h) ‘C Sai qui định về hằng xâu: thiếu dấu nháy đom ở cuối
i) ‘TRUE’ Là hăng xâu nhưng không phải là hăng lôgíc
 
II. BÀI TẬP NÂNG CAO
1. Khi lập trình người sử dụng cần quan tâm đến những yếu tổ nào?
2. Chương trình dịch có mấy loại? Đó là những loại nào? 
3. Trình thông dịch được thực hiện như thế nào? Nó được áp dụng vào những loại ngôn ngữ nào?
4. Trình biên dịch được thực hiện như thế nào? Nó được áp dụng vào những dịch
vụ nào?
5. Chương trình dịch có những chức năng nào?
6. Ngôn ngữ lập trình có mấy thành phần cơ bản? Đó là những thành phẩn nào?
7. Hãy đưa ra 5 tên đúng, 5 tên sai theo quy tắc của Pascal có độ dài khác nhau.
8. Hãy cho biết những biểu diễn nào dưới dày không phái là biểu diễn hằng trong Pascal và chi rõ lỗi trong từng trường hợp:
a) 255.45 b)+50           c) 7:57 d) ‘55*
e)45lì 0 f) 05li+20      h) 15-5       i)‘l-ALSI-:*
9) Hãy đưa ra 3 đoạn chú thích đúng, 3 đoạn chú thích sai trong Pascal
 
Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây