Bài 3: Câu lệnh điều kiện
Trong Bài học trước, bạn đã học cách sử dụng dữ liệu từ Cảm biến quang học trong một dự án để sắp xếp Đĩa theo màu sắc. Trong Bài học này, bạn sẽ dựa trên những kiến thức đã học để khám phá các tùy chọn trong VEXcode cho phép dự án đưa ra quyết định bất kể Cảm biến quang học phát hiện màu nào. Bạn sẽ tìm hiểu về:
- Tại sao việc tối ưu hóa quá trình ra quyết định lại quan trọng trong môi trường công nghiệp.
- Sự khác biệt giữa các khốiNếu thì,Nếu thì khácvàNếu không thì.
Kiểm tra nhiều điều kiện
Trong Bài học trước, bạn đã tạo một dự án có thể sắp xếp Đĩa theo màu sắc thành bảng màu đỏ hoặc bảng màu xanh lá cây. Mặc dù cách này hiệu quả, nhưng dự án chỉ có thể sắp xếp một Đĩa tại một thời điểm. Trong môi trường nhà máy, nhiều đồ vật cần được phân loại và xếp lên pallet nhiều lần. Để thực hiện điều này một cách hiệu quả, Cánh tay 6 trục cần có khả năng đưa ra quyết định nhiều lần về cách di chuyển các vật thể hoặc liệu có cần sự can thiệp của con người hay không. Hãy xem xét các khối lập phương bạn đã di chuyển trong khóa học Giới thiệu về cánh tay 6 trục.
Sẽ thế nào nếu có một khối lập phương màu xanh trong khu vực tải hàng? Điều gì sẽ xảy ra trong dự án ở Bài học trước? Trong môi trường công nghiệp, cần phải xem xét tất cả các điều kiện có thể xảy ra. Nếu một vật thể lạ rơi vào các vật thể cần phân loại, con người có thể sẽ phải can thiệp để đảm bảo rằng khu vực làm việc và những công nhân xung quanh luôn an toàn và hoạt động hiệu quả.
Tuần tựNếu thìkhối
Trong Bài học trước, bạn đã sử dụng haiNếu thìtheo trình tự để kiểm tra hai điều kiện riêng biệt lần lượt, về cơ bản là đặt ra hai câu hỏi trong dự án.

Đầu tiên, Vật thể có màu đỏ không?, rồiVật thể có màu xanh lá cây không?. Mỗi điều kiện được kiểm tra mỗi khi dự án được chạy, bất kể cảm biến quang học phát hiện ra điều gì. Mặc dù cấu trúc này cho phép bạn sắp xếp từng Đĩa một cách hiệu quả, nhưng đây không phải là cách hiệu quả nhất để thực hiện việc đó. Đĩa đỏ có thể được phân loại, nhưng Cảm biến quang học cũng có thể phát hiện đĩa xanh từ các vật thể khác trong môi trường và ngược lại. Ngoài ra, không có sự cân nhắc nào dành cho vật thể không có màu đỏ cũng không có màu xanh lá cây, chẳng hạn như vật thể bất ngờ có thể gây ra vấn đề về an toàn.
Hình ảnh luồng dự án
Trong suốt Bài học này, hình ảnh giải thích luồng dự án VEXcode sẽ được chia sẻ. Bạn có thể tái tạo những hình ảnh này trong sổ tay kỹ thuật của mình khi thực hiện Bài học.
Sử dụng các công cụ trong Google Slides hoặc Microsoft PowerPoint như mũi tên, hộp hoặc sơ đồ để giúp tạo hình ảnh trực quan phù hợp nhất với sổ tay của bạn.

Tuần tựNếu thì nếu không thìkhối
Có một khối khác có thể được sử dụng để cho phép chúng ta kiểm tra cả điều kiện màu đỏ và màu xanh lá cây cũng như tính đến màu khác nhau. KhốiIf then elselà khối C chạy các khối bên trong nhánhifhoặc nhánhelse, dựa trên giá trị Boolean được báo cáo.

Sau khi chạy nhánh ifhoặc nhánh else, dự án sẽ chuyển sang khối tiếp theo trong ngăn xếp. Luồng dự án của các khốiNếu thì kháccũng có thể được hiển thị để làm cho các nhánh dễ nhìn thấy hơn.

Lưu ý rằng trong các ví dụ này, nhánh elseđược sử dụng để xử lý tình trạng một đối tượng không phải màu đỏ cũng không phải màu xanh lá cây. Trong trường hợp đó, cần có sự can thiệp của con người. Trước đó bạn đã biết rằng đèn xanh trên Tháp tín hiệu được sử dụng để báo hiệu cần có sự can thiệp của con người. Ngoài ra, chức năng dừng có kiểm soát sẽ dừng chuyển động của Cánh tay 6 trục để đảm bảo an toàn cho con người và máy móc. Có thể thêm khối tháp tín hiệu Setvà khối dừng điều khiểnSetvào nhánhelse, để một vật thể không phải màu đỏ hoặc không phải màu xanh lá cây có thể kích hoạt các tính năng an toàn này.

Những hình ảnh cho đến nay chỉ cho thấy cách xử lý tình trạng vật thể có màu đỏ. Cần phải có Nếu thì khácđể kiểm tra tình trạng của vật thể có màu xanh lá cây hay không.

Chúng ta hãy cùng suy nghĩ về luồng dự án với cấu trúc này. Mỗi lần chạy dự án, nhiều nhánh sẽ chạy, bất kể cảm biến quang học phát hiện màu nào.

Chúng ta hãy nghĩ về điều này với một chiếc đĩa màu đỏ làm ví dụ. Nếu Cảm biến quang học phát hiện màu đỏ, tình trạng của khốiNếu thì khácđầu tiên sẽ được báo cáo là đúng. Khối bên trong nhánhnếusẽ chạy, di chuyển Cánh tay 6 trục trên bảng màu đỏ. Tuy nhiên, điều kiện bên trong khốiIf then elsethứ hai sẽ báo cáo là sai. Điều này có nghĩa là khối bên trong nhánhelsecủa nó sẽ chạy, đưa Cánh tay 6 trục vào trạng thái dừng có kiểm soát và nhấp nháy màu xanh lam trên Tháp tín hiệu. Vì Cánh tay 6 trục sẽ ở trạng thái dừng được kiểm soát nên không có khối nào khác trong dự án có thể chạy và điều đó sẽ dừng mọi hoạt động cho đến khi vấn đề được giải quyết.

Mặc dù chúng ta có thể tính đến một vật thể bất ngờ (như Khối lập phương màu xanh), nhưng Cánh tay 6 trục sẽ không bao giờ đạt đến điểm trong dự án thả Đĩa lên pallet. Thay vì kiểm tra điều kiện đỏ và xanh lá cây lần lượt, có một cách để kiểm tra xem một vật thể có màu xanh lá cây haychỉnếu vật thể không phải màu đỏ.
Lồng nhauNếu thì nếu khôngkhối
Mỗi nhánh của khốiNếu thì kháccó thể chấp nhận các khối C khác bên trong chúng. Đây được gọi là 'lồng ghép'. Điều này có nghĩa là khốiIf then elsethứ hai có thể được lồng vào nhánhelsecủa khối đầu tiên, như thế này.
Bây giờ tình trạng Cảm biến quang phát hiện màu xanh lá cây sẽ chỉ được kiểm tra khi tình trạng trước đó (Cảm biến quang phát hiện màu đỏ) báo cáo là sai. Vì vậy, khi Cảm biến quang học phát hiện màu đỏ, chỉ nhánhhoặcđầu tiên sẽ chạy, di chuyển Đĩa lên trên bảng màu đỏ.

Nếu Cảm biến quang học phát hiện màu xanh lá cây, tình trạng của nhánhnếuđầu tiên (Quang học phát hiện màu đỏ) sẽ báo cáo là sai và do đó nhánhnếusẽ chạy. Tình trạng của khối Nếu thì kháclồng nhau sẽ được kiểm tra để xem Cảm biến quang học có phát hiện màu xanh lá cây hay không. Điều kiện đó sẽ được báo cáo là đúng, do đó khối bên trong nhánhhoặcthứ hai sẽ chạy, di chuyển Đĩa qua bảng màu xanh lá cây.
Nếu Cảm biến quang học không phát hiện thấy màu đỏ hay màu xanh lá cây (giống như trường hợp Khối lập phương màu xanh được nhặt lên), cả hai điều kiện đều sẽ báo cáo là sai và do đó nhánhelsecủa khốiIf then elselồng nhau sẽ chạy, kích hoạt lệnh dừng có kiểm soát và cảnh báo công nhân về sự cần thiết phải can thiệp của con người. Các luồng dự án này cũng có thể được hình dung dưới dạng sơ đồ luồng, giống như sơ đồ ở đây.

Lồng nhauNếu thì nếu khôngkhốicó thể được xem như một danh sách câu hỏi xếp tầng. Các câu hỏi như sau:
- Vật đó có màu đỏ không?
- Đúng? Hãy bỏ bảng màu đỏ sang một bên và ngừng đặt câu hỏi.
- KHÔNG? Hãy hỏi một câu hỏi khác.
- Vật đó có màu xanh không?
- Đúng? Hãy bỏ bảng màu xanh lá cây đi và ngừng đặt câu hỏi.
- KHÔNG? Khi đó vật thể không có màu đỏ hoặc màu xanh lá cây. Thay đổi màu của Tháp tín hiệu và kích hoạt lệnh dừng có kiểm soát.
- Vật đó có màu xanh không?
Lưu ý rằng các câu hỏi chỉ được hỏi nếu câu hỏi trước đó được trả lời là phủ định.
Trong khi khối này xử lý tất cả các điều kiện mà chúng ta muốn kiểm tra, vẫn có một khối khác sẽ kiểm tra các điều kiện theo cùng một cách, nhưng dễ xây dựng hơn so với các khối lồng nhau.
Nếu không thìKhối
Khối Else if cho phép bạn kiểm tra nhiều điều kiện trong cùng một khối. Mỗi điều kiện trong khối này sẽ được kiểm tra tuần tự, chỉ khi điều kiện trước đó báo cáo là sai. Nếu tất cả các điều kiện Boolean cho các nhánh else if đều sai, các khối bên trong phần else sẽ được chạy.

Khối này có luồng dự án giống như khốiIf then elselồng nhau, nhưng dễ xây dựng hơn vì không cần phải lồng các khối. Bạn sẽ tìm hiểu thêm về cách lập trình với khối Else iftrong Bài học sau.
Kiểm tra sự hiểu biết của bạn
Trước khi chuyển sang Bài học tiếp theo, hãy đảm bảo rằng bạn hiểu các khái niệm trong Bài học này bằng cách trả lời các câu hỏi sau vào sổ tay kỹ thuật của bạn.
Kiểm tra câu hỏi hiểu biết của bạn > (Google Doc/ .docx / .pdf)
ChọnTiếp theo >để áp dụng khối Else iftrong một dự án.