Đèn giao thông
Mục tiêu: Vẽ sơ đồ khối chu trình đèn giao thông rồi lập trình: xanh 5 giây, vàng 2 giây, đỏ 5 giây, lặp mãi; đèn đỏ thì người đi bộ qua đường.
Em sẽ học gì
- Nội dung trong bài: vẽ sơ đồ khối cho chu trình của đèn giao thông, một thuật toán có lặp.
- Lập trình đèn đổi màu, bằng ba trang phục và khối đợi.
- Rồi thêm người đi bộ, qua đường khi đèn đỏ, nhờ thông báo.
- Về kỹ thuật lập trình, bài này ta học: cấu trúc lặp trong sơ đồ khối: mũi tên quay ngược lên, chính là khối liên tục.
- Mô hình hoá: mỗi trạng thái của đèn là một trang phục và một khoảng chờ.
- Vẽ sơ đồ trước, lập trình sau: mỗi khối của sơ đồ thành một khối lệnh.
- Hai nhân vật phối hợp bằng thông báo: đèn phát, người đi bộ nhận.

Bài làm như sau. Sân khấu rộng từ âm 240 đến 240 theo chiều ngang x, và từ âm 180 đến 180 theo chiều dọc y. Điểm chính giữa sân khấu có x bằng 0, y bằng 0. Chú mèo là người đi bộ, đứng chờ ở bên trái: x bằng âm 200, y bằng âm 120. Thêm cột đèn: rê chuột vào nút Chọn một Nhân vật, chọn Tải nhân vật lên, rồi chọn file đèn xanh. Đặt tên là Đèn, và đặt đèn ở bên phải: x bằng 150, y bằng 30.

Mỗi màu đèn là một trang phục. Mở thẻ Trang phục, bấm vào nút thêm trang phục, chọn Tải trang phục lên, và chọn file đèn vàng. Thêm tiếp trang phục thứ ba: file đèn đỏ. Đèn đã có ba trang phục: den_xanh, den_vang, den_do.

Quay lại thẻ Code. Trước khi lập trình, ta vẽ thuật toán thành sơ đồ khối, ghim ở bên phải. Bật đèn xanh, chờ 5 giây. Bật đèn vàng, chờ 2 giây. Bật đèn đỏ, chờ 5 giây. Rồi mũi tên quay ngược lên đèn xanh: đây là cấu trúc lặp. Chu trình cứ thế chạy mãi, không có điểm kết thúc.

Việc cần làm: lặp mãi: đèn xanh 5 giây, đèn vàng 2 giây, đèn đỏ 5 giây.
Chọn nhóm Sự kiện, kéo khối: Khi bấm vào cờ xanh, là hình bầu dục Bắt đầu.

Mũi tên quay ngược lên là khối vòng lặp mãi mãi, tên là liên tục, trong nhóm Điều khiển.

Bên trong, khối chuyển sang trang phục, trong nhóm Hiển thị, chọn den_xanh: bật đèn xanh.

Khối đợi, trong nhóm Điều khiển, gõ 5 giây.

Tiếp theo, khối chuyển sang trang phục, chọn den_vang,

rồi khối đợi, gõ 2 giây.

Cuối cùng, khối chuyển sang trang phục, chọn den_do,

và khối đợi, gõ 5 giây. Ta vừa làm: lặp mãi: đèn xanh 5 giây, đèn vàng 2 giây, đèn đỏ 5 giây. Mỗi khối lệnh ứng với một khối của sơ đồ.

Chạy thử: bấm cờ xanh, và theo dõi sơ đồ khối bên phải: đèn xanh 5 giây, đèn vàng 2 giây, đèn đỏ 5 giây, rồi quay lại đèn xanh. Chương trình chạy đúng như sơ đồ khối.

Bấm nút đỏ để dừng. Thêm người đi bộ. Trong sơ đồ, ngay khi bật đèn đỏ, đèn báo cho người đi bộ biết. Hình bình hành là khối đưa thông tin ra ngoài.

Trong Scratch, đó là khối phát thông báo, trong nhóm Sự kiện: chèn vào ngay dưới khối đèn đỏ, bấm vào ô thông báo, chọn Thông báo mới, đặt tên là đèn đỏ.

Giờ đến người đi bộ. Chọn nhân vật Sprite1, là chú mèo.

Việc cần làm: nhận thông báo đèn đỏ thì về chỗ chờ, rồi đi qua đường: 20 lần, mỗi lần 20 bước.
Kéo khối Khi nhận thông báo, trong nhóm Sự kiện, chọn thông báo đèn đỏ.

Chọn nhóm Chuyển động, gắn khối đi tới điểm x y: mặc định đúng chỗ mèo đang đứng chờ, x âm 200, y âm 120.

Khối lặp lại, trong nhóm Điều khiển, gõ 20 lần.

Bên trong, khối di chuyển, gõ 20 bước,

khối trang phục kế tiếp, để mèo bước chân,

và khối đợi, gõ 0,1 giây. Hai mươi lần như vậy mất chưa tới 3 giây, kịp trước khi hết 5 giây đèn đỏ. Ta vừa làm: nhận thông báo đèn đỏ thì mèo về chỗ chờ, rồi đi 20 lần, mỗi lần 20 bước, sang bên kia đường.

Chạy thử cả mô hình: bấm cờ xanh, đèn xanh, mèo đứng chờ. Đèn vàng, vẫn chờ. Đèn đỏ: mèo nhận thông báo và đi qua đường. Đèn xanh trở lại thì mèo đã sang tới nơi.

Bấm nút đỏ để dừng.

Bài tập
Bài tập: dùng đồng hồ kiểm tra các khoảng 5, 2, 5 giây. Rồi thêm chế độ ban đêm: đèn vàng nhấp nháy.