Buổi 3: Cấu trúc Rẽ nhánh (If - Then - Else) & Cảm ứng Va chạm
Theory & practice
🧠 Bài 3: Tư duy Logic — Nếu, Thì và Không thì
🎯 Mục tiêu bài học
Sau bài học này, bạn có thể:
- Hiểu điều kiện đúng và sai trong lập trình.
- Phân biệt khối
Nếu ... thìvàNếu ... thì ... không thì. - Dùng cảm biến để nhân vật hoặc robot đưa ra quyết định.
- Kết hợp điều kiện với vòng lặp để tạo chương trình thông minh.
1. Robot thông minh biết ra quyết định
Một robot thông minh không chỉ di chuyển theo một hướng. Nó cần quan sát môi trường và lựa chọn hành động phù hợp.
Ví dụ:
- Nếu phía trước có vật cản, thì robot dừng lại.
- Nếu trời tối, thì bật đèn.
- Nếu nhấn phím mũi tên phải, thì nhân vật di chuyển sang phải.
- Nếu không có vật cản, robot tiếp tục tiến về phía trước.
Cách suy nghĩ này được gọi là tư duy điều kiện.
2. Điều kiện đúng và sai
Một điều kiện chỉ có hai kết quả:
| Kết quả | Ý nghĩa |
|---|---|
Đúng | Thực hiện các lệnh bên trong |
Sai | Bỏ qua hoặc thực hiện nhánh Không thì |
Một số điều kiện thường gặp trong PictoBlox:
Đang chạm vào [Tường]?
Phím [mũi tên phải] được nhấn?
Khoảng cách nhỏ hơn 15 cm?
Điểm_số lớn hơn 10?
Màu đỏ đang chạm màu xanh?Các khối điều kiện thường có dạng hình lục giác và được đặt vào vị trí kiểm tra của khối Nếu.
3. Khối Nếu ... thì
Khối này chỉ thực hiện hành động khi điều kiện đúng.
Nếu <Đang chạm vào [Tường]?> thì
Phát âm thanh [Cảnh báo]
Đi lùi 10 bướcNếu nhân vật chưa chạm vào tường, các lệnh bên trong sẽ không được thực hiện.
Ví dụ: Điều khiển bằng bàn phím
Khi bấm vào cờ xanh
Liên tục
Nếu <Phím [mũi tên phải] được nhấn?> thì
Thay đổi x một lượng 5Vòng lặp Liên tục giúp chương trình kiểm tra bàn phím nhiều lần trong mỗi giây.
4. Khối Nếu ... thì ... không thì
Khối này giúp chương trình lựa chọn một trong hai hành động.
Nếu <Đang chạm vào [Tường]?> thì
Phát âm thanh [Cảnh báo]
Đi lùi 10 bước
Xoay phải 90 độ
Không thì
Di chuyển 5 bướcChương trình hoạt động như sau:
- 1Kiểm tra nhân vật có chạm vào tường không.
- 2Nếu có, nhân vật cảnh báo, lùi lại và đổi hướng.
- 3Nếu không, nhân vật tiếp tục tiến về phía trước.
| Điều kiện | Hành động |
|---|---|
| Chạm tường | Cảnh báo, lùi và quay |
| Không chạm tường | Tiếp tục tiến |
5. Kết hợp điều kiện với cảm biến
Robot có thể dùng cảm biến siêu âm để đo khoảng cách đến vật cản.
Khi bấm vào cờ xanh
Liên tục
Đặt [Khoảng_cách] thành [Giá trị cảm biến siêu âm]
Nếu <Khoảng_cách nhỏ hơn 15> thì
Dừng động cơ
Phát âm thanh [Cảnh báo]
Lùi trong 1 giây
Quay phải 90 độ
Không thì
Chạy thẳng với tốc độ 5Trong chương trình này:
Khoảng_cách < 15là điều kiện.- Khi vật cản ở gần hơn 15 cm, robot tránh vật cản.
- Khi đường phía trước an toàn, robot tiếp tục di chuyển.
6. Kết hợp nhiều điều kiện
Đôi khi robot cần kiểm tra nhiều thông tin cùng lúc.
Điều kiện Và
Cả hai điều kiện đều phải đúng.
Nếu <Khoảng_cách nhỏ hơn 15 và Tốc_độ lớn hơn 0> thì
Dừng động cơĐiều kiện Hoặc
Chỉ cần một trong hai điều kiện đúng.
Nếu <Chạm cạnh hoặc chạm màu đỏ> thì
Quay lạiĐiều kiện Không
Đảo ngược kết quả của điều kiện.
Nếu <Không chạm vào tường> thì
Tiếp tục di chuyển7. Thực hành: Nhân vật tìm đường
Yêu cầu
Lập trình cho nhân vật:
- 1Liên tục di chuyển về phía trước.
- 2Kiểm tra xem có chạm vào tường không.
- 3Nếu chạm tường, lùi lại và đổi hướng.
- 4Nếu không chạm tường, tiếp tục tiến.
Gợi ý chương trình
Khi bấm vào cờ xanh
Đặt [Tốc_độ] thành [5]
Liên tục
Nếu <Đang chạm vào [Tường]?> thì
Phát âm thanh [Cảnh báo]
Di chuyển -10 bước
Xoay phải 90 độ
Chờ 0.2 giây
Không thì
Di chuyển [Tốc_độ] bướcHãy thử thay đổi góc quay từ 90 độ thành 45 độ. Quan sát đường đi của nhân vật có gì khác.
8. Lỗi thường gặp
Quên đặt điều kiện trong vòng lặp
Nếu chỉ kiểm tra một lần, robot sẽ không tiếp tục quan sát môi trường.
Nên dùng:
Liên tục
Nếu <Điều kiện> thì
Thực hiện hành độngNhầm dấu so sánh
Khoảng_cách nhỏ hơn 15nghĩa là vật cản đang ở gần.
Khoảng_cách lớn hơn 15nghĩa là phía trước còn khoảng trống.
Robot liên tục quay tại chỗ
Sau khi gặp vật cản, robot cần lùi ra xa trước khi quay:
Dừng động cơ
Lùi lại
Quay phải🧩 Thử thách
Hãy tạo một robot có ba mức phản ứng:
Nếu <Khoảng_cách nhỏ hơn 10> thì
Dừng và lùi lại
Không thì
Nếu <Khoảng_cách nhỏ hơn 25> thì
Giảm tốc độ
Không thì
Di chuyển bình thườngRobot sẽ:
- Dừng khi vật cản quá gần.
- Giảm tốc khi bắt đầu đến gần vật cản.
- Chạy bình thường khi đường phía trước an toàn.
✅ Ghi nhớ
- Điều kiện chỉ có kết quả
ĐúnghoặcSai. Nếu ... thìthực hiện hành động khi điều kiện đúng.Nếu ... thì ... không thìgiúp chọn giữa hai hành động.- Vòng lặp giúp robot kiểm tra điều kiện liên tục.
- Cảm biến cung cấp thông tin để robot đưa ra quyết định.
- Nên cho robot dừng hoặc lùi trước khi đổi hướng.
Câu hỏi nhanh
- 1Điều kiện trong lập trình có những kết quả nào?
- 2
Nếu ... thìkhác gì vớiNếu ... thì ... không thì? - 3Vì sao cần đặt lệnh kiểm tra cảm biến trong vòng lặp?
- 4Robot nên làm gì khi khoảng cách đến vật cản nhỏ hơn mức an toàn?