Chuyển tới nội dung chính

Máy tính thực thi một chương trình như thế nào?

P00-M01-L001 · 120 phút · DRAFT

Bạn không cần biết lập trình để bắt đầu. Bài học giải thích mọi thuật ngữ trước khi sử dụng. Mục tiêu là sau khi học, bạn có thể tự mô tả cách thiết bị IoT nhận dữ liệu, xử lý, phát cảnh báo và biết cách phát hiện dữ liệu đầu vào không hợp lệ.

Thời lượng: khoảng 120 phút (thời gian tham khảo, có thể học nhiều phiên). Đầu vào: không yêu cầu kiến thức trước. Đầu ra: giải thích được nguyên lý và tự viết thuật toán bằng ngôn ngữ tự nhiên, chưa cần C hay Python.

1. Bạn sẽ học được gì?​

Năng lựcSau bài học bạn tự làm đượcBài tập kiểm tra
LO1 — Phần cứng và phần mềmPhân loại sensor, RAM, firmware, mã nguồn C; giải thích vì sao firmware không phải linh kiệnE01 — Hardware vs Software
LO2 — Thực thi chương trìnhMô tả CPU, RAM, Flash, Input/Output cùng xử lý một giá trị cảm biếnE02 — Data Flow
LO3 — Thuật toánViết từng bước Input → Validate → Decide → Output bằng pseudocodeE03 — Sensor Alert Logic
LO4 — Kiểm thửLập bảng trường hợp bình thường, ranh giới, lỗi và hiểu vì sao cần kiểm tra trước khi tínhE02 và E03

Cách học bài này​

Bạn nên học mỗi khái niệm → xem sơ đồ → tự trả lời câu hỏi nhỏ → đối chiếu ví dụ → làm bài tập. Dừng lại để tự giải thích bằng ngôn ngữ của bạn. Không cần thuộc lòng thuật ngữ tiếng Anh.

Hoạt độngThời gian tham khảo
Định hướng và câu hỏi đầu vào5 phút
Hardware, Software, OS, Firmware + E0120 phút
CPU, RAM, Flash, I/O + E0230 phút
Algorithm, Pseudocode, Validation và ranh giới20 phút
Independent Lab E0335 phút
Reflection và tổng kết10 phút
Tổng120 phút

Câu hỏi khởi động​

Khi mở một chương trình trên máy tính, thành phần nào thực thi các lệnh? Đó là CPU. Nhưng CPU cần được cung cấp chương trình, dữ liệu và kết nối với các bộ phận khác. Chúng ta sẽ lần lượt tìm hiểu.


2. Hardware, Software, OS và Firmware​

2.1. Hardware — Phần cứng là gì?​

Hardware là các bộ phận vật lý của thiết bị, ví dụ: vi điều khiển, chip RAM, chip Flash, cảm biến, màn hình, dây kết nối, đèn LED.

Một cảm biến nhiệt độ là linh kiện có nhiệm vụ tạo ra tín hiệu hoặc dữ liệu biểu diễn nhiệt độ. Nó không phải chương trình. Một bo mạch vẫn tồn tại khi chưa được nạp firmware, dù chưa chắc đã thực hiện được chức năng mong muốn.

2.2. Software — Phần mềm là gì?​

Software là chương trình, chỉ dẫn và dữ liệu cho phép hệ thống thực hiện hành vi. Ví dụ ứng dụng trên Windows, chương trình Python đọc file, hoặc mã nguồn C dùng để mô phỏng cảm biến.

Điểm quan trọng: một chương trình được lưu trong phần cứng không vì thế mà trở thành phần cứng.

Hãy hình dung: USB là phần cứng; tệp chương trình chứa trong USB là phần mềm. Tương tự, chip Flash là phần cứng, còn firmware lưu trong Flash vẫn là phần mềm.

So sánh Hardware và Software

Sơ đồ 1. Cảm biến, CPU, RAM, Flash thuộc hardware; firmware và mã nguồn chương trình thuộc software.

2.3. Program và Source Code​

Program (chương trình) là tập lệnh xử lý một công việc cụ thể. Source code (mã nguồn) là cách con người viết chương trình bằng ngôn ngữ như C hoặc Python.

Ví dụ người lập trình viết quy tắc nếu nhiệt độ lớn hơn 30°C thì bật LED. Mã nguồn được chuyển thành dạng có thể thực thi tùy nền tảng: C thường cần biên dịch thành mã máy; Python thường chạy thông qua trình thông dịch và môi trường thực thi Python.

Ở bài này bạn chỉ cần hiểu mã nguồn mô tả logic; CPU thực thi lệnh ở dạng phù hợp với phần cứng. Quy trình biên dịch sẽ học kỹ trong Phase lập trình.

2.4. Operating System — Hệ điều hành​

Hệ điều hành (Operating System — OS) là phần mềm quản lý tài nguyên máy tính và cung cấp dịch vụ cho chương trình, như quản lý tiến trình, tệp, bộ nhớ và thiết bị I/O.

Windows, Ubuntu Linux và Android là những ví dụ quen thuộc.

Có phải mọi thiết bị IoT đều cần OS? Không. Một vi điều khiển nhỏ có thể chạy firmware trực tiếp, không cần hệ điều hành đầy đủ. Một số thiết bị khác dùng RTOS hoặc Linux. Chúng ta chưa cần tìm hiểu RTOS trong bài này.

2.5. Firmware — Phần mềm gắn với thiết bị​

Firmware là phần mềm dành cho phần cứng/thiết bị cụ thể. Firmware của bộ đo nhiệt độ có thể đọc cảm biến, kiểm tra dữ liệu, điều khiển LED và gửi thông điệp mạng.

Firmware thường được lưu trong bộ nhớ không mất dữ liệu như Flash, để khi tắt rồi bật nguồn chương trình vẫn tồn tại.

Tình huống: Ban đầu LED bật khi nhiệt độ lớn hơn 30°C, sau đó đổi thành lớn hơn 35°C. Nếu ngưỡng được viết trong firmware thì cập nhật phần mềm có thể đổi hành vi mà không thay sensor hay bo mạch. Nếu ngưỡng được lưu như tham số cấu hình, thay đổi cấu hình cũng có thể thực hiện mà không cần nạp lại firmware.

2.6. Bảng so sánh nhanh​

Đối tượngHardware hay Software?Vì sao
Cảm biến nhiệt độ vật lýHardwareLinh kiện đo
Chip RAM trên boardHardwareLinh kiện chứa dữ liệu đang làm việc
Chip FlashHardwareLinh kiện lưu nội dung bền vững
Firmware trong FlashSoftwareCác lệnh điều khiển thiết bị
File mã nguồn CSoftwareVăn bản mô tả logic chương trình
Hệ điều hành LinuxSoftwareChương trình quản lý tài nguyên

Tự kiểm tra sau phần 2​

Câu A: Nếu chỉ cập nhật firmware, liệu có nhất thiết phải thay bo mạch?
Câu B: Firmware được lưu trong chip Flash; vì sao không gọi firmware là hardware?

Hãy tự nói thành lời hoặc ghi câu trả lời. Sau đó làm bài E01 — Nhận diện hardware và software. Nếu chưa phân biệt được firmware với chip Flash, hãy quay lại sơ đồ 1 trước khi sang phần tiếp theo.


3. CPU, RAM, Flash, Input và Output​

Để hiểu các thành phần này, ta theo dõi một giá trị nhiệt độ thực tế đi qua thiết bị.

3.1. CPU — Bộ xử lý trung tâm​

CPU (Central Processing Unit) thực hiện các lệnh của chương trình: nhận hoặc đọc dữ liệu, thực hiện phép tính, so sánh, lựa chọn nhánh xử lý và điều khiển thiết bị ngoại vi.

Trong hệ thống mẫu, CPU kiểm tra câu hỏi 31 có lớn hơn 30 không?. Kết quả là có, nên chương trình điều khiển LED bật.

MCU (Microcontroller Unit) là vi điều khiển tích hợp CPU cùng các tài nguyên khác, thường gồm RAM, bộ nhớ chương trình và các thiết bị ngoại vi trên một chip. Vì vậy, CPU là một bộ phận bên trong nhiều MCU, còn MCU là hệ thống vi điều khiển tích hợp.

3.2. RAM — Bộ nhớ đang làm việc​

RAM (Random Access Memory) chứa dữ liệu mà chương trình đang sử dụng, chẳng hạn biến temperature, bộ đếm hoặc vùng đệm. RAM thông thường là bộ nhớ volatile: mất nội dung khi ngắt nguồn.

Hình dung CPU như người làm việc, RAM như tờ giấy ghi chú trên bàn để tính toán nhanh. Đây chỉ là phép ví von; cách bộ nhớ và thanh ghi vận hành trong CPU phức tạp hơn.

Ví dụ: giá trị vừa đọc là 31°C được chương trình lưu trong một biến để so sánh với ngưỡng. Biến đó có thể nằm trong RAM hoặc thanh ghi tùy cách thực thi.

3.3. Flash và SSD — Lưu trữ không mất dữ liệu​

Flash là công nghệ bộ nhớ non-volatile (không mất nội dung khi tắt nguồn). Firmware có thể lưu trong Flash của MCU. SSD cũng dùng bộ nhớ không mất dữ liệu, nhưng thường là thiết bị lưu trữ cho máy tính.

Điểm khác biệt căn bản:

Tiêu chíRAM thông thườngFlash
Công dụng phổ biếnDữ liệu đang làm việcLưu firmware và dữ liệu cần giữ lâu
Khi mất nguồnThường mất nội dungVẫn giữ nội dung
Ví dụ trong thiết bịGiá trị nhiệt độ đang xử lýChương trình điều khiển

Không phải cứ chương trình chạy là phải sao chép toàn bộ firmware từ Flash vào RAM: nhiều MCU có thể thực thi chương trình trực tiếp từ Flash.

3.4. Input và Output (I/O)​

Input là giá trị/tín hiệu đi vào quá trình xử lý, không chỉ tên của linh kiện đầu vào. Output là kết quả/tín hiệu hệ thống tạo ra.

Ví dụ:

  • Input: giá trị cảm biến cung cấp là 31°C (cảm biến là nguồn input).
  • Process: chương trình kiểm tra dữ liệu và so sánh 31 > 30.
  • Output: LED bật, hoặc hệ thống gửi thông điệp cảnh báo.

Ghi log lỗi cũng là output. Vì vậy khi gặp dữ liệu không hợp lệ, có thể không bật LED theo cảnh báo nhiệt độ nhưng vẫn phát sinh log/báo lỗi.

Luồng dữ liệu cảm biến, MCU, RAM, Flash và LED

Sơ đồ 2. Input mang giá trị cụ thể 31°C; CPU/MCU xử lý quy tắc; LED là output. Flash lưu firmware và RAM hỗ trợ dữ liệu làm việc.

3.5. Đi theo dữ liệu từng bước​

Giả sử ngưỡng cảnh báo là lớn hơn 30°C:

  1. Thiết bị đang chạy firmware lưu trong Flash.
  2. Cảm biến tạo dữ liệu nhiệt độ 31°C.
  3. Chương trình nhận/đọc giá trị 31°C; có thể lưu nó tạm thời trong RAM.
  4. CPU thực hiện phép so sánh: 31 > 30 → đúng.
  5. Chương trình ra lệnh bật LED.
  6. LED là bộ phận vật lý phát tín hiệu cảnh báo.

Thử thay input bằng 30°C: phép so sánh 30 > 30 là sai, nên theo quy tắc đang học LED không bật. Điều kiện ranh giới này rất quan trọng khi kiểm thử.

Tự kiểm tra sau phần 3​

Tự trả lời trước khi mở bài tập:

  • RAM và Flash khác nhau ở điểm nào khi mất điện?
  • Trong mô tả Input → Process → Output, 31°C thuộc bước nào?
  • Nếu cảm biến gửi 30°C, LED bật hay tắt? Bạn có thể viết được phép so sánh không?

Tiếp theo hãy làm E02 — Tìm đường đi của dữ liệu cảm biến. Không cần viết C hoặc Python. Mục tiêu là mô tả đúng vai trò và luồng xử lý.


4. Algorithm — Thuật toán là gì?​

Algorithm là dãy bước được xác định rõ để giải quyết một vấn đề. Thuật toán không bắt buộc phải viết bằng ngôn ngữ lập trình. Bạn có thể mô tả bằng lời, bảng, lưu đồ hoặc pseudocode.

Một thuật toán tốt cho người mới học nên trả lời bốn câu:

  1. Input: Nhận gì?
  2. Validate: Dữ liệu có hợp lệ không?
  3. Decide / Process: Cần xử lý và kiểm tra điều kiện nào?
  4. Output: Trả ra kết quả hoặc hành động gì?

4.1. Pseudocode — Mã giả​

Pseudocode là cách viết thuật toán gần với ngôn ngữ lập trình, nhưng không yêu cầu cú pháp chính xác của C hay Python.

INPUT temperature

IF temperature is not a valid number:
OUTPUT "INVALID"
ELSE IF temperature > 30:
OUTPUT "ALERT"
ELSE:
OUTPUT "NORMAL"
Từ khóaÝ nghĩaVí dụ
INPUTNhận dữ liệuĐọc nhiệt độ
IFKiểm tra điều kiệnNếu không phải số
ELSE IFKiểm tra điều kiện tiếp theoNếu nhiệt độ > 30
ELSENhánh khi các điều kiện trước saiBình thường
OUTPUTTrả kết quảALERT / NORMAL / INVALID

Đọc mã giả từ trên xuống: Khi điều kiện temperature is not a valid number đúng, chương trình xuất INVALID và không đi sang nhánh so sánh nhiệt độ.

Lưu đồ thuật toán kiểm tra nhiệt độ

Sơ đồ 3. Lưu đồ dùng nhánh quyết định: kiểm tra hợp lệ trước, sau đó mới so sánh và chọn output.

4.2. Phân biệt > và >=​

Temperaturetemperature > 30temperature >= 30
29°CSaiSai
30°CSaiĐúng
31°CĐúngĐúng

Dấu > nghĩa là lớn hơn, không bao gồm giá trị bằng ngưỡng. Dấu >= nghĩa là lớn hơn hoặc bằng.

Đây là lý do các bài kiểm thử cần có giá trị đúng ranh giới — ví dụ 30°C — thay vì chỉ chọn 20°C và 40°C.

4.3. Micro-check trước Independent Lab​

Không cần chạy chương trình. Với thuật toán chỉ xét nhiệt độ phía trên, bạn hãy tự dự đoán:

InputBạn dự đoán Output
29°C…
30°C…
31°C…
abc…

Câu giải thích: Tại sao 30°C và 31°C có thể dẫn tới hai kết quả khác nhau? Viết một câu về phép so sánh.

Bạn có thể dừng tại đây để suy nghĩ, trả lời trong sổ hoặc nhờ AI Tutor đánh giá. Không cần xem trước lời giải Independent Lab.


5. Input Validation — Kiểm tra dữ liệu trước khi xử lý​

Trong thiết bị IoT thực tế, cảm biến và kết nối không phải lúc nào cũng cung cấp dữ liệu mà chương trình mong đợi.

5.1. Dữ liệu hợp lệ và không hợp lệ​

Giả sử chương trình cần một giá trị số:

InputPhân loạiGiải thích
31.5Hợp lệ về kiểu dữ liệuLà số có thể so sánh
abcKhông hợp lệKhông biểu diễn số
Không nhận được dữ liệuKhông hợp lệThiếu input
999Có thể bất thườngLà số, nhưng phải so với phạm vi cảm biến cụ thể

Lưu ý: 999°C không tự động vô hiệu trong mọi hệ thống; mức hợp lệ phụ thuộc đặc tính cảm biến và yêu cầu sản phẩm.

5.2. Khi dữ liệu sai, chương trình nên làm gì?​

Một lựa chọn có thể là:

  • Không dùng dữ liệu sai để so sánh ngưỡng nhiệt độ.
  • Ghi log lỗi hoặc xuất trạng thái INVALID.
  • Cân nhắc bật cảnh báo lỗi hay đưa hệ thống về trạng thái an toàn nếu sản phẩm yêu cầu.

Không có quy tắc duy nhất cho mọi thiết bị: ví dụ hệ thống giám sát phòng máy có thể cần báo lỗi cảm biến thay vì chỉ tắt LED.

Trong bài lab này, ta quy định rõ nếu input không hợp lệ, xuất INVALID. Đây là quy tắc kiểm thử của bài tập, không phải tiêu chuẩn an toàn chung.

5.3. Đọc, kiểm tra, quyết định, xuất kết quả​

Thứ tự đúng về mặt thiết kế:

READ INPUT
VALIDATE INPUT
IF invalid:
OUTPUT INVALID
ELSE:
COMPARE WITH THRESHOLD
OUTPUT ALERT OR NORMAL

Nếu bỏ bước VALIDATE, việc so sánh một chuỗi abc với số 30 có thể gây lỗi hoặc cho kết quả sai tùy hệ thống.


6. Chuẩn bị cho Independent Lab — Hai cảm biến​

Bài E03 — Sensor Alert Logic khác ví dụ trước ở chỗ có hai input:

  • temperature: nhiệt độ (°C).
  • humidity: độ ẩm (%).

6.1. Hiểu yêu cầu trước khi viết thuật toán​

Bài lab quy định:

  • Nếu một input không phải số, xuất INVALID.
  • Nếu humidity nằm ngoài đoạn 0 đến 100, xuất INVALID.
  • Nếu cả hai hợp lệ, kiểm tra nhiệt độ > 30 HOẶC độ ẩm > 80.
  • Nếu ít nhất một điều kiện cảnh báo đúng, xuất ALERT; nếu không, xuất NORMAL.

Trong bài này, không có giới hạn miền giá trị nhiệt độ bổ sung ngoài việc phải là số. Đừng tự tạo giới hạn nếu bài không nêu; thực tế giới hạn phụ thuộc từng loại cảm biến.

6.2. Toán tử logic OR​

Ký hiệu OR ở đây nghĩa là ít nhất một điều kiện đúng.

Điều kiện nhiệt độ > 30Điều kiện độ ẩm > 80OR
SaiSaiSai
SaiĐúngĐúng
ĐúngSaiĐúng
ĐúngĐúngĐúng

Điều quan trọng là OR khác AND. AND yêu cầu cả hai điều kiện cùng đúng; OR chỉ cần một điều kiện đúng.

6.3. Ví dụ nhỏ về hai giá trị đầu vào​

Với temperature = 28 và humidity = 70:

  • Cả hai là số, độ ẩm nằm trong 0–100.
  • 28 > 30 sai; 70 > 80 cũng sai.
  • Do đó ví dụ này thuộc trạng thái bình thường.

Với temperature = 28 và humidity = 85:

  • Dữ liệu hợp lệ.
  • Nhiệt độ không vượt ngưỡng, nhưng độ ẩm vượt 80.
  • Vì quy tắc dùng OR, vẫn có cảnh báo.

Các ví dụ trên minh họa cách đọc yêu cầu, không phải lời giải pseudocode đầy đủ của E03.

6.4. Test case — Trường hợp kiểm thử​

Một test case là một bộ input, kết quả mong đợi và lý do tại sao kết quả đó đúng.

Ví dụ về cách ghi bảng cho một cảm biến nhiệt độ:

InputKết quả mong đợiVì sao
29NORMALNhỏ hơn ngưỡng
30NORMALBằng ngưỡng, không lớn hơn
31ALERTLớn hơn ngưỡng
abcINVALIDKhông phải số

Đối với bài E03, bạn hãy tự xây dựng bảng hai cột input temperature và humidity rồi nêu kết quả. Ít nhất 8 trường hợp cần bao phủ:

  1. Cả hai bình thường.
  2. Chỉ nhiệt độ vượt ngưỡng.
  3. Chỉ độ ẩm vượt ngưỡng.
  4. Đúng ngưỡng 30°C.
  5. Đúng ngưỡng 80%.
  6. Độ ẩm ở ranh giới hợp lệ 0% hoặc 100%.
  7. Có dữ liệu chữ.
  8. Độ ẩm ngoài khoảng 0–100.

Đừng chỉ kiểm tra một tình huống lý tưởng. Ranh giới và dữ liệu sai là nơi dễ có lỗi thiết kế nhất.

6.5. Checklist trước khi làm E03​

  • Tôi phân biệt được dữ liệu đầu vào với cảm biến vật lý.
  • Tôi có thể viết Input → Validate → Decide → Output.
  • Tôi biết > khác >= ở giá trị bằng ngưỡng.
  • Tôi hiểu OR nghĩa là ít nhất một điều kiện đúng.
  • Tôi biết phải kiểm tra kiểu số trước khi so sánh.
  • Tôi biết thiết kế test case bao gồm ranh giới và dữ liệu sai.

Khi đã sẵn sàng, mở Independent Lab E03 và tự viết pseudocode. Không cần code C/Python và không cần thiết bị thật.


7. Review, Reflection và tiêu chí hoàn thành​

Tóm tắt 6 điều cần nhớ​

  1. Hardware là thành phần vật lý; software là chương trình/chỉ dẫn.
  2. Firmware vẫn là software dù thường nằm trong chip Flash.
  3. CPU thực thi lệnh; RAM hỗ trợ dữ liệu đang làm việc; Flash lưu dữ liệu/program bền vững.
  4. Input là giá trị đi vào; Process là cách hệ thống xử lý; Output là kết quả.
  5. Pseudocode diễn đạt thuật toán không phụ thuộc ngôn ngữ lập trình.
  6. Input validation, boundary case và OR cần được hiểu trước khi thiết kế cảnh báo IoT.

Reflection — Tự giải thích theo cách hiểu của bạn​

  1. Vì sao firmware là software nhưng Flash là hardware?
  2. Khi input là 31°C, CPU, RAM và LED tham gia như thế nào?
  3. Sự khác biệt giữa temperature > 30 và temperature >= 30 là gì?
  4. Nếu dữ liệu là abc, tại sao không nên đưa trực tiếp vào phép so sánh?
  5. Trong bài hai cảm biến, khi một giá trị vượt ngưỡng nhưng giá trị còn lại bình thường, OR có ý nghĩa gì?

Chính sách đánh giá​

Bài học yêu cầu hoàn thành E01, E02, E03 theo rubric tương ứng (mỗi bài ít nhất 80/100) và có reflection. Website hiện không tự chấm, không lưu điểm hoặc xác nhận đã hoàn thành. Bạn có thể tải bài làm và gửi cho AI Tutor để nhận phản hồi dựa trên bằng chứng.

Bài học kế tiếp: P00-M01-L002 — Bit, Byte và biểu diễn dữ liệu (chưa biên soạn).


8. Tài liệu tham khảo và hướng đọc tiếp​

Những nguồn này là tài liệu bổ trợ. Nội dung cốt lõi và đủ yêu cầu để làm các bài E01–E03 đã được giải thích ở phía trên.

Bài tập của bài học​