Trả lời nhanh
Bài 16 giúp em phân biệt ba loại ngôn ngữ lập trình (ngôn ngữ máy, hợp ngữ, ngôn ngữ bậc cao) và làm quen với Python. Ngôn ngữ bậc cao dễ viết, dễ hiểu nhất vì câu lệnh gần ngôn ngữ tự nhiên. Python có hai chế độ: gõ lệnh trực tiếp (dấu nhắc >>>, chạy ngay) và soạn thảo (viết cả chương trình, lưu rồi chạy).
Tóm tắt kiến thức cần nhớ của Bài 16
Trước khi làm bài, em nắm chắc ba ý chính sau. Có chúng, hầu hết câu hỏi trong bài đều trả lời được ngay.
- 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.
- Ba loại: ngôn ngữ máy (chỉ gồm dãy 0 và 1, máy hiểu trực tiếp), hợp ngữ (dùng từ gợi nhớ viết tắt, cần dịch sang ngôn ngữ máy), ngôn ngữ bậc cao (gần ngôn ngữ tự nhiên, cần chương trình dịch).
- Python là ngôn ngữ bậc cao, cú pháp ngắn gọn, có môi trường lập trình cho phép gõ lệnh và chạy ngay.
Ba loại ngôn ngữ lập trình nhìn qua một hình
Hình dưới cho thấy càng lên cao, ngôn ngữ càng gần con người và càng xa phần cứng. Vì thế ngôn ngữ bậc cao phải qua bước dịch mới chạy được.

Mẹo nhớ: “Bậc cao thì gần người, bậc thấp thì gần máy”. Người viết thích bậc cao, còn máy chỉ chạy được ngôn ngữ máy.
Giải phần Khởi động trang 86
Đề: Quan sát các đoạn chương trình viết bằng những ngôn ngữ lập trình khác nhau ở Hình 16.1, câu lệnh trong ngôn ngữ nào dễ hiểu nhất?
Trả lời: Câu lệnh viết bằng Python dễ hiểu nhất.
Vì sao? Python dùng từ khoá tiếng Anh quen thuộc như print, không cần nhiều ký hiệu phụ như dấu chấm phẩy hay cặp ngoặc nhọn. Em đọc một dòng lệnh gần như đoán được nó làm gì.
1. Ngôn ngữ lập trình bậc cao
Hoạt động 1 trang 86
Câu 1: Ngôn ngữ lập trình là gì? Có những loại nào?
- Ngôn ngữ lập trình là ngôn ngữ dùng để mô tả thuật toán sao cho máy tính hiểu và thực hiện được.
- Có ba loại: ngôn ngữ máy, hợp ngữ và ngôn ngữ lập trình bậc cao.
Câu 2: Kể tên một số ngôn ngữ lập trình bậc cao. C/C++, Java, C#, Python, JavaScript, Pascal… Em chỉ cần kể được hai đến ba tên là đủ ý.
| Loại | Dạng câu lệnh | Máy chạy trực tiếp? | Mức dễ viết |
|---|---|---|---|
| Ngôn ngữ máy | Dãy bit 0 và 1 | Có | Rất khó |
| Hợp ngữ | Từ gợi nhớ ngắn gọn | Không, cần dịch | Khó |
| Ngôn ngữ bậc cao | Gần ngôn ngữ tự nhiên | Không, cần dịch | Dễ nhất |
Câu hỏi trang 87
Đề: Viết chương trình bằng loại ngôn ngữ nào dễ nhất? A. Ngôn ngữ máy; B. Hợp ngữ; C. Ngôn ngữ lập trình bậc cao.
Đáp án: C. Ngôn ngữ bậc cao có câu lệnh gần ngôn ngữ tự nhiên nên dễ viết, dễ đọc, dễ sửa.
- A sai: ngôn ngữ máy chỉ gồm 0 và 1, người viết rất dễ nhầm.
- B sai: hợp ngữ dễ hơn ngôn ngữ máy nhưng vẫn phụ thuộc chặt vào phần cứng.
2. Môi trường lập trình Python
Hoạt động 2 trang 87
Câu 1. Môi trường lập trình Python cho phép soạn thảo chương trình Python, kiểm tra cú pháp, báo lỗi và thực hiện chương trình (cả chương trình hoàn chỉnh lẫn từng câu lệnh). Môi trường có hai chế độ: gõ lệnh trực tiếp và soạn thảo.
Câu 2. Phân biệt hai chế độ:
| Tiêu chí | Chế độ gõ lệnh trực tiếp | Chế độ soạn thảo |
|---|---|---|
| Dấu hiệu nhận biết | Có dấu nhắc >>> |
Cửa sổ soạn thảo có con trỏ nhấp nháy, không có dấu nhắc |
| Cách chạy | Gõ một lệnh rồi nhấn Enter, kết quả hiện ngay | Viết nhiều lệnh, lưu tệp (đuôi .py) rồi chạy cả chương trình |
| Lưu lại | Không lưu được thành chương trình | Lưu và chạy lại nhiều lần |
| Phù hợp với | Thử nhanh một lệnh, tính nhẩm | Chương trình có nhiều lệnh |
Câu hỏi 1 trang 88
Đề: Dấu nhắc chính là con trỏ soạn thảo chương trình Python. Đúng hay sai?
Đáp án: Sai. Dấu nhắc >>> chỉ xuất hiện ở chế độ gõ lệnh trực tiếp, báo rằng Python đang chờ em nhập lệnh. Con trỏ soạn thảo là vạch nhấp nháy dùng khi gõ chương trình ở chế độ soạn thảo. Hai thứ khác nhau và ở hai cửa sổ khác nhau.
Câu hỏi 2 trang 88
Giống nhau: cả hai đều là cách để Python thực hiện các câu lệnh em viết, và đều dùng chung cú pháp Python.
Khác nhau:
- Gõ lệnh trực tiếp: mỗi lệnh chạy ngay khi nhấn Enter, kết quả hiện ngay bên dưới, không lưu thành chương trình.
- Soạn thảo: gõ cả dãy lệnh trước, lưu thành tệp, sau đó chạy một lượt từ đầu đến cuối.
3. Một số lệnh Python đầu tiên
Hoạt động 3 trang 88
Quan sát các lệnh ở chế độ gõ lệnh trực tiếp, em rút ra ba điều:
- Python tự nhận biết kiểu dữ liệu của giá trị em nhập: số nguyên, số thực hay xâu kí tự.
- Python tính được các phép toán thông thường và phân biệt số nguyên với số thực.
- Lệnh
print()in dữ liệu ra màn hình, có thể in một hoặc nhiều giá trị cùng lúc.
>>> 7 + 2
9
>>> 7 / 2
3.5
>>> "Xin chào"
'Xin chào'
>>> print(7, "con mèo")
7 con mèo
Lưu ý: phép chia / luôn cho kết quả là số thực, kể cả khi chia hết (ví dụ 6 / 3 cho 2.0).
Câu hỏi 1 trang 89
Đề: Kết quả mỗi lệnh là gì, thuộc kiểu dữ liệu nào?
Theo thứ tự các lệnh trong sách, kết quả là:
2.5: số thực.13.5: số thực.Bạn là học sinh lớp 10: xâu kí tự.13.5: số thực.
Cách nhận kiểu nhanh: có dấu nháy bao quanh là xâu kí tự; có dấu chấm thập phân hoặc kết quả của phép / là số thực; số không có phần thập phân là số nguyên.
Câu hỏi 2 trang 89
Với biểu thức 13+10*3/2-3*2, Python tính theo thứ tự ưu tiên: nhân, chia trước; cộng, trừ sau.
10*3= 30, rồi30/2= 15.0 (phép chia cho số thực).3*2= 6.13 + 15.0 - 6= 22.0.
Kết quả là 22 (Python hiển thị dạng 22.0 vì có phép chia). Giá trị bằng 22, kiểu số thực.
Luyện tập trang 90
Luyện tập 1: Viết lệnh tính biểu thức
| Biểu thức | Lệnh Python | Kết quả |
|---|---|---|
| 10 + 13 | >>> 10+13 |
23 |
| 20 − 7 | >>> 20-7 |
13 |
| 3 × 10 − 16 | >>> 3*10-16 |
14 |
| 12/5 + 13/6 | >>> 12/5+13/6 |
khoảng 4.5667 (số thực) |
Lỗi hay gặp: viết dấu nhân là chữ x thay vì *. Python sẽ báo lỗi cú pháp hoặc hiểu x là một tên chưa khai báo.
Luyện tập 2: Các lệnh sau có lỗi không? Vì sao?
Theo đáp án sách, cả hai lệnh đều có lỗi. Vì đề gốc là hai dòng lệnh in hình, em hãy dùng cách kiểm tra sau để tự chỉ ra lỗi của từng lệnh:
- Đếm dấu nháy: mỗi xâu phải mở và đóng bằng cùng một loại nháy.
- Đếm dấu ngoặc: ngoặc mở
(phải có ngoặc đóng). - Kiểm tra tên lệnh: Python phân biệt chữ hoa, chữ thường, nên
PrinthayPRINTđều sai, chỉprintđúng. - Kiểm tra phép toán: không viết thiếu toán hạng (như
5 + * 3).
Ví dụ tự đặt để em thấy lỗi:
print("Xin chao) # thiếu nháy đóng
Print("Xin chao") # sai chữ hoa
print("Xin chao" # thiếu ngoặc đóng
Luyện tập 3: Viết lệnh in thông tin ra màn hình
Đề yêu cầu in ra màn hình một số thông tin theo mẫu (gồm các số và văn bản). Cách làm: dùng print() với nhiều giá trị, cách nhau bằng dấu phẩy. Python sẽ tự chèn một dấu cách giữa các giá trị.
print(1, 3, 5, 7) # in: 1 3 5 7
print("Tong =", 1+3+5+7) # in: Tong = 16
Hai ví dụ trên là ví dụ minh hoạ cách viết. Khi làm bài, em thay nội dung bằng đúng dòng thông tin đề yêu cầu. Chữ phải đặt trong dấu nháy, số thì không.
Vận dụng trang 90
Vận dụng 1: Xâu giữa cặp ba dấu nháy kép
Xâu kí tự viết giữa cặp nháy đơn hoặc nháy kép phải nằm trọn trên một dòng. Còn xâu đặt giữa """…""" có thể trải trên nhiều dòng, xuống dòng ở đâu thì khi in cũng xuống dòng ở đó.
print("""Xin chào
các bạn lớp 10""")
Kết quả in ra hai dòng: Xin chào và các bạn lớp 10. Nếu viết cùng nội dung xuống dòng giữa cặp nháy kép đơn, Python báo lỗi vì xâu chưa đóng ở cuối dòng.
Vận dụng 2: In bảng nhân trong phạm vi 10
Em hiểu “bảng nhân trong phạm vi 10” là các phép nhân i × j với i, j từ 1 đến 10. Cách đơn giản nhất cho người mới là dùng vòng lặp for (em sẽ học kỹ ở các bài sau).
for i in range(1, 11):
for j in range(1, 11):
print(i, "x", j, "=", i*j)
Vòng ngoài chọn thừa số thứ nhất, vòng trong chọn thừa số thứ hai. Chương trình in 100 dòng, từ 1 x 1 = 1 đến 10 x 10 = 100.
Nếu chưa học vòng lặp, em có thể in riêng từng dòng, ví dụ bảng nhân 2:
print(2, "x", 1, "=", 2*1)
print(2, "x", 2, "=", 2*2)
print(2, "x", 3, "=", 2*3)
Hãy gõ chương trình vào chế độ soạn thảo, lưu lại rồi chạy. Đây là lúc em thấy rõ vì sao cần chế độ soạn thảo.
Lỗi sai thường gặp ở Bài 16
- Nhầm dấu nhắc
>>>với con trỏ soạn thảo (đã nói ở Câu hỏi 1 trang 88). - Gõ cả dấu
>>>vào lệnh khi chép sang chế độ soạn thảo. Dấu này không phải phần của lệnh. - Viết
Printthay choprint. - Dùng dấu phẩy thập phân kiểu Việt Nam (
2,5). Python dùng dấu chấm:2.5. - Quên nháy quanh văn bản, khiến Python hiểu chữ đó là tên biến.
Bài tập tự luyện (có đáp án)
- Dự đoán kết quả:
print(7//2, 7%2, 2**5).
Đáp án:3 1 32. Phép//là chia lấy phần nguyên,%là chia lấy phần dư,**là luỹ thừa. - Viết lệnh in dòng
Tuoi: 16trong đó 16 là số.
Đáp án:print("Tuoi:", 16). - Tìm lỗi:
print("Chao ban').
Đáp án: mở bằng nháy kép nhưng đóng bằng nháy đơn nên xâu chưa được đóng. Sửa thànhprint("Chao ban"). - Xác định kiểu của
10/5và10//5.
Đáp án:10/5cho2.0(số thực);10//5cho2(số nguyên).
Xem thêm các bài trong cùng chương
- Lý thuyết Tin học 10 Bài 16
- 20 câu trắc nghiệm Tin học 10 Bài 16
- Sách bài tập Tin học 10 Bài 16
- Bài 15: Hoàn thiện hình ảnh đồ họa
- Bài 17: Biến và lệnh gán
- Bài 18: Các lệnh vào ra đơn giản
- Bài 19: Câu lệnh rẽ nhánh If
- Giải SGK Tin học 10 Kết nối tri thức (cả năm)
Cùng chuyên đề: Bài nằm trong mục lục Lý thuyết Tin 10 Bài 16 Kết nối tri thức: Ngôn ngữ bậc cao và Python.
Câu hỏi thường gặp
Ngôn ngữ lập trình bậc cao khác ngôn ngữ máy và hợp ngữ ở điểm nào?
Ngôn ngữ bậc cao có câu lệnh gần ngôn ngữ tự nhiên, dễ viết và dễ đọc, nhưng cần chương trình dịch để chuyển sang ngôn ngữ máy. Ngôn ngữ máy chỉ gồm 0 và 1 và máy chạy trực tiếp; hợp ngữ dùng từ gợi nhớ nhưng vẫn cần dịch và phụ thuộc phần cứng.
Khi nào dùng chế độ gõ lệnh trực tiếp, khi nào dùng chế độ soạn thảo trong Python?
Dùng gõ lệnh trực tiếp để thử nhanh một lệnh hay tính toán đơn giản vì kết quả hiện ngay. Dùng chế độ soạn thảo khi chương trình có nhiều lệnh, cần lưu thành tệp .py và chạy lại nhiều lần.
Vì sao 10*3/2 trong Python cho kết quả 15.0 chứ không phải 15?
Phép chia / trong Python luôn trả về số thực, dù hai số chia hết. Muốn kết quả là số nguyên, em dùng phép chia lấy phần nguyên //, ví dụ 30//2 cho 15.
Lệnh print() trong Python dùng để làm gì?
print() in dữ liệu ra màn hình. Có thể in nhiều giá trị cùng lúc bằng cách ngăn cách bằng dấu phẩy, Python tự chèn một dấu cách giữa các giá trị. Văn bản phải đặt trong dấu nháy, còn số thì không.