Nhập môn Tư duy Lập trình/Chương trình là một dãy lệnh — máy làm đúng từng chữ
2/7
Bài 2 / 7~9 phútMáy thực thi lệnh thế nàoMiễn phí lượt xem

Chương trình là một dãy lệnh — máy làm đúng từng chữ

Máy không đoán ý bạn. Nó đọc từng dòng theo thứ tự và làm đúng chữ bạn viết, kể cả khi chữ đó rõ ràng không phải điều bạn muốn.

TL;DR: Máy tính không đọc ý bạn, nó đọc chữ bạn viết theo đúng thứ tự bạn xếp: từ dòng đầu tới dòng cuối, không nhảy cóc và không tự sắp xếp lại cho hợp lý hơn. Chương trình là một dãy lệnh; mỗi lệnh làm một việc cụ thể, và máy thi hành lần lượt từng lệnh một, y như cách một người bị bịt mắt làm theo tờ hướng dẫn: chỉ làm đúng những gì được nói ra, theo đúng thứ tự nói ra. Đảo hai dòng lệnh thì kết quả đảo theo, dù thứ tự mới có vô lý tới đâu trong đời thực — máy không có quyền tự sửa ý bạn.

Bạn nhờ một người bạn "đóng cửa sổ giùm, trời sắp mưa" — người đó tự hiểu luôn: đóng cửa sổ, rồi có khi còn cất nốt mấy bộ đồ đang phơi ngoài ban công, dù bạn chỉ nói đúng một câu. Con người giỏi đoán ý, tự chêm thêm những bước bạn không nói ra vì "chắc bạn cũng muốn vậy".

Máy tính thì không làm được điều đó. Nó không đoán, không tự thêm bước nào bạn chưa viết, và không tự sắp xếp lại nếu bạn viết sai thứ tự. Bài này giải thích chương trình là gì, và vì sao máy chỉ làm đúng, đúng y, những gì bạn viết, theo đúng thứ tự bạn viết ra.

1. Analogy — pha mì gói cho người bịt mắt

Một người bị bịt mắt đứng trước bàn bếp, chờ bạn ra lệnh pha một gói mì. Bạn không được chỉ tay, chỉ được nói ra từng câu một, và người đó làm đúng những gì bạn nói, không hơn. Bạn nói "xé bao mì" thì họ xé; bạn nói "đổ mì ra tô" thì họ đổ. Nhưng nếu bạn lỡ nói "đợi 3 phút" trước khi nói "đổ nước sôi vào tô", họ vẫn cứ đợi 3 phút — đợi để làm gì cũng được, miễn là bạn không nói rõ. Người bịt mắt không tự sửa thứ tự cho hợp lý hơn, vì họ không được phép đoán.

Pha mì bịt mắtMáy chạy chương trình
Từng câu hướng dẫn được nói raTừng dòng lệnh trong chương trình
Người bịt mắt làm đúng câu vừa nghe, không suy đoán thêmMáy thi hành đúng dòng lệnh, không suy diễn ý định
Nói câu nào làm câu đó, theo đúng thứ tự nóiChạy dòng nào, làm dòng đó, theo đúng thứ tự dòng
Quên nói một bước thì bước đó không xảy raQuên viết một lệnh thì lệnh đó không chạy
💡 Cách nhớ

Máy là người bịt mắt kỷ luật nhất bạn từng gặp: không đoán, không bỏ sót, không tự sửa — chỉ làm đúng, làm đủ, làm theo đúng thứ tự bạn viết.

2. Chương trình là một dãy lệnh

Chương trình là một dãy lệnh — một danh sách các việc cụ thể, xếp theo thứ tự, mà máy sẽ làm lần lượt từ trên xuống dưới. Mỗi lệnh làm đúng một việc: lệnh print(...) in một dòng chữ ra màn hình.

print("Xin chao")
print("Day la dong lenh thu hai")

Chương trình trên có hai lệnh. Máy chạy lệnh đầu tiên, in ra Xin chao, rồi mới chạy tới lệnh thứ hai. Không có lựa chọn nào khác về thứ tự cả: dòng nằm trên luôn chạy trước dòng nằm dưới nó.

3. Cơ chế bên dưới — vì sao máy không suy diễn ý định?

Máy tính không đọc chương trình như đọc một đoạn văn, hiểu nghĩa cả đoạn rồi tự quyết làm gì trước. Nó chỉ có đúng một lệnh trước mặt tại một thời điểm. Làm xong lệnh đó, nó chuyển sang lệnh ngay bên dưới — không nhảy lung tung, không nhìn trước những lệnh sắp tới để "tối ưu" lại thứ tự bạn viết.

Bốn ô xếp dọc nối tiếp bằng mũi tên một chiều: Dòng lệnh 1, Dòng lệnh 2, Dòng lệnh 3, Dòng lệnh 4 — không có đường tắt hay đường vòng, máy chỉ đi xuống theo đúng một hướng

Bốn ô trên là bốn dòng lệnh. Mũi tên chỉ đúng một hướng: trên xuống dưới, không đường tắt, không đường vòng. Đây là lý do máy không "hiểu ý" được như con người: con người đọc cả đoạn, tự chắp nối ngữ cảnh, đoán luôn những bước bạn quên nói ra. Máy thì không có cái nhìn tổng thể đó — nó chỉ thấy từng lệnh một, làm xong lệnh này mới biết tới lệnh kế tiếp, kể cả khi thứ tự bạn viết rõ ràng không có lý.

Từ bài này trở đi, mọi chương trình bạn đọc trong khoá đều chạy theo đúng mũi tên một chiều đó, cho tới khi bạn học tới lệnh rẽ nhánh và lệnh lặp ở các bài sau.

4. Ví dụ minh hoạ — làm theo đúng từng dòng

Quay lại chuyện pha mì. Viết thành chương trình, ba bước chính pha mì trở thành ba nhóm lệnh:

# 1. Chuan bi
print("Xe bao mi")
print("Do goi mi ra to")

# 2. Nau
print("Do nuoc soi vao to")
print("Doi 3 phut")

# 3. Hoan thien
print("Cho goi gia vi vao")
print("Tron deu")

Sáu lệnh print, chạy đúng sáu lần, đúng thứ tự viết. Không lệnh nào bị bỏ qua, không lệnh nào chạy hai lần trừ khi bạn viết nó hai lần.

Thử đoán

Đoạn code dưới đảo hai dòng so với bản gốc: "Doi 3 phut" giờ đứng TRƯỚC "Do nuoc soi vao to". Trước khi đọc tiếp, đoán xem chương trình in ra đúng sáu dòng theo thứ tự nào — viết hẳn ra giấy, đừng đoán trong đầu.

# 1. Chuan bi
print("Xe bao mi")
print("Do goi mi ra to")

# 2. Nau
print("Doi 3 phut")
print("Do nuoc soi vao to")

# 3. Hoan thien
print("Cho goi gia vi vao")
print("Tron deu")

Output thật:

Xe bao mi
Do goi mi ra to
Doi 3 phut
Do nuoc soi vao to
Cho goi gia vi vao
Tron deu

Máy không thấy gì vô lý ở việc "đợi 3 phút" khi tô mì còn chưa có nước trong đó. Nó chỉ thấy sáu lệnh print, và in đúng sáu dòng theo đúng thứ tự bạn viết — không kiểm tra xem có hợp lý ngoài đời không, không tự sửa giúp bạn.

5. Điều máy không làm — pitfall thường gặp

Nhầm 1: Nghĩ máy tự "hiểu" phần bạn quên viết.

# Muc tieu: in loi chao, roi in ten chuong trinh
print("Chao ban")

Nếu bạn định in cả tên chương trình nhưng quên viết dòng print thứ hai, máy không tự thêm nó vào giùm bạn. Chương trình chỉ in đúng một dòng Chao ban, hết — phần bạn nghĩ trong đầu mà chưa gõ ra không tồn tại với máy.

✅ Viết đủ từng lệnh cho từng việc bạn muốn máy làm; máy không đoán phần còn thiếu.

Nhầm 2: Nghĩ lệnh viết trùng thì máy tự gộp lại.

print("Xong roi")
print("Xong roi")

Chương trình trên in Xong roi hai lần, không phải một. Máy không nhận ra hai dòng "giống ý nhau" rồi tự rút gọn — nó chỉ đếm số lệnh và chạy đúng số đó.

✅ Muốn in một lần thì chỉ viết một lệnh; máy chạy chính xác số lệnh bạn viết ra, không hơn không kém.

6. Liên hệ các bài khác

  • Bài 02 — Biến và phép gán — bài tiếp theo dạy máy giữ trạng thái qua từng dòng thế nào, vẫn dựa trên đúng ý "chạy đúng thứ tự" bạn vừa học ở đây.
  • Bài 04 — Bảng trace — công cụ để tự chạy tay một chương trình nhiều dòng hơn, đúng từng bước như ví dụ pha mì ở mục 4.

7. Tóm tắt

  • Đọc một chương trình bằng cách lần theo đúng thứ tự dòng, đừng đọc như đọc một đoạn văn tổng thể — thói quen này dùng lại xuyên suốt cả khoá.
  • Chương trình chạy ra kết quả lạ thì việc kiểm trước tiên là thứ tự các dòng, trước khi nghi ngờ bất cứ điều gì khác.
  • Quên viết một lệnh thì bước đó không xảy ra; viết lệnh hai lần thì nó chạy hai lần — máy không tự sửa, không tự gộp.
  • Bài 02 thêm biến vào bức tranh này: máy vẫn chạy đúng thứ tự dòng như ở đây, nhưng giờ mỗi dòng còn có thể đổi giá trị của một ô nhớ.

8. Tự kiểm tra

Tự kiểm tra
0/6 câu đã trả lời
  1. Q1
    Vì sao máy không thể tự sửa thứ tự hai dòng lệnh bị viết sai, dù thứ tự đúng nghe rất hiển nhiên với con người?
  2. Q2
    Đoạn sau đổi chỗ dòng đầu và dòng cuối so với "Chào buổi sáng, hôm nay trời đẹp, chúc ngày tốt lành". Nó in ra theo thứ tự nào?
    
    print("Chuc ban ngay tot lanh")
    print("Hom nay troi dep")
    print("Chao buoi sang")
    
  3. Q3
    Nếu bạn quên viết một lệnh print cần thiết, điều gì xảy ra khi máy chạy chương trình?
  4. Q4
    Người bạn bị bịt mắt trong ví dụ pha mì khác gì với người bạn bình thường khi nhận chỉ dẫn, và khác biệt đó ánh xạ sang máy tính ở điểm nào?
  5. Q5
    Vì sao viết cùng một lệnh print hai lần thì máy in ra hai dòng, không phải một?
  6. Q6
    Chương trình và lệnh khác nhau ở điểm nào? Cho ví dụ bằng chính từ ngữ của bạn.

Bài tiếp theo: Biến và phép gán

Bài này đáng gửi cho bạn học cùng?

Copy link đã gắn nguồn — dán group, chat, hoặc LinkedIn.

Bài này có giúp bạn hiểu bản chất không?

Hỏi đáp về bài này

Chưa có câu hỏi

Đặt câu hỏi

Có gì chưa rõ trong bài? Đặt câu hỏi đầu tiên — câu trả lời từ cộng đồng giúp bạn (và người sau).

Đặt câu hỏi đầu tiên

Bài tiếp theo

Biến, phép gán, và kiểu — dấu bằng không phải 'bằng nhau'