Scratch là một môi trường lập trình trực quan cho phép người học xây dựng chương trình bằng cách kéo, thả và ghép các khối lệnh thay vì phải tự viết cú pháp. Tuy nhiên, khi mới làm quen, số lượng khối lệnh khá lớn có thể khiến người học bối rối: khối nào dùng để di chuyển, khối nào xử lý điều kiện, khối nào dùng để lưu điểm số?
Thực tế, các khối lệnh trong Scratch được chia thành nhiều nhóm dựa trên chức năng. Mỗi nhóm đảm nhận một nhiệm vụ riêng và khi kết hợp với nhau, chúng tạo thành một chương trình hoàn chỉnh. Hiểu được các nhóm khối lệnh trong Scratch vì thế là một trong những bước quan trọng giúp bạn chuyển từ việc kéo thả thử nghiệm sang tư duy lập trình có hệ thống.
1. Khối lệnh trong Scratch là gì?

1.1. Khái niệm khối lệnh trong Scratch
Khối lệnh (Block) là những thành phần trực quan được Scratch cung cấp để người dùng xây dựng chương trình. Mỗi khối đại diện cho một câu lệnh hoặc một chức năng cụ thể.
Thay vì viết:
character.move(10)
người học chỉ cần kéo khối lệnh tương ứng vào khu vực lập trình. Các khối có hình dạng đặc biệt để người dùng biết chúng có thể ghép với nhau như thế nào.
Ví dụ, một chương trình đơn giản có thể gồm:
Khi bấm vào cờ xanh
di chuyển 10 bước
nói "Xin chào!" trong 2 giây
Các khối được ghép theo thứ tự và Scratch sẽ thực hiện chúng khi chương trình được kích hoạt.
1.2. Vì sao Scratch chia khối lệnh thành nhiều nhóm?
Việc phân chia khối lệnh thành từng nhóm giúp người học dễ tìm kiếm và hiểu chức năng của chúng. Mỗi nhóm thường liên quan đến một khía cạnh nhất định của chương trình như chuyển động, hiển thị, âm thanh, điều kiện hay dữ liệu.
Đặc biệt, màu sắc của từng nhóm cũng tạo ra một cách nhận diện trực quan. Khi đã quen, bạn có thể nhanh chóng biết mình cần tìm ở đâu thay vì phải kiểm tra từng khối lệnh.
1.3. Các nhóm khối lệnh trong Scratch
Trong Scratch, các nhóm khối lệnh cốt lõi thường được sử dụng gồm:
- Motion – Chuyển động
- Looks – Hiển thị
- Sound – Âm thanh
- Events – Sự kiện
- Control – Điều khiển
- Sensing – Cảm biến
- Operators – Toán tử
- Variables – Biến
- My Blocks – Khối của tôi
Mỗi nhóm có một vai trò riêng, nhưng chúng thường được kết hợp với nhau trong cùng một chương trình.
2. Nhóm khối lệnh Motion – Chuyển động

2.1. Chức năng của nhóm Motion
Motion là nhóm khối lệnh dùng để điều khiển vị trí, hướng và chuyển động của Sprite trên Stage.
Đây là nhóm đặc biệt quan trọng khi xây dựng game hoặc hoạt ảnh trong Scratch. Chẳng hạn, bạn có thể sử dụng Motion để khiến nhân vật đi sang trái, sang phải, thay đổi tọa độ hoặc quay theo một hướng nhất định.
2.2. Một số khối lệnh tiêu biểu
Một số khối thường gặp gồm:
move () steps
turn clockwise () degrees
turn counterclockwise () degrees
go to x: () y: ()
glide () secs to x: () y: ()
change x by ()
change y by ()
Các khối này cho phép bạn kiểm soát chuyển động của Sprite theo nhiều cách khác nhau.
2.3. Ví dụ sử dụng
Để điều khiển nhân vật di chuyển khi nhấn phím mũi tên, bạn có thể kết hợp Motion với Events:
Khi phím [mũi tên phải] được nhấn
thay đổi x một lượng 10
Khi người chơi nhấn phím, tọa độ X của nhân vật tăng lên và Sprite di chuyển sang phải.
3. Nhóm khối lệnh Looks – Hiển thị

3.1. Chức năng
Looks kiểm soát cách Sprite và một số thành phần trên Stage được hiển thị. Nhóm này thường được dùng để tạo hội thoại, thay đổi trang phục, kích thước hoặc hiệu ứng hình ảnh.
3.2. Các khối lệnh thường gặp
Một số khối tiêu biểu:
say ()
think ()
switch costume to ()
next costume
change size by ()
set size to () %
change color effect by ()
Trong đó, say và think đặc biệt hữu ích khi tạo hội thoại giữa các nhân vật.
3.3. Ứng dụng thực tế
Ví dụ, khi nhân vật bắt đầu một màn chơi:
Khi bấm vào cờ xanh
nói "Chào mừng bạn đến với trò chơi!" trong 2 giây
chuyển sang trang phục tiếp theo
Kết hợp nhiều khối Looks theo thứ tự có thể tạo ra những đoạn hoạt ảnh đơn giản mà không cần viết mã nguồn phức tạp.
4. Nhóm khối lệnh Sound – Âm thanh

4.1. Chức năng của nhóm Sound
Sound được sử dụng để thêm và điều khiển âm thanh trong chương trình. Đây là nhóm thường xuất hiện trong các trò chơi, hoạt ảnh hoặc dự án tương tác.
4.2. Một số khối lệnh tiêu biểu
start sound ()
play sound () until done
stop all sounds
change volume by ()
set volume to () %
Hai khối start sound và play sound until done có cách hoạt động khác nhau. Khối đầu tiên bắt đầu phát âm thanh và chương trình có thể tiếp tục thực hiện các lệnh phía sau, trong khi khối thứ hai chờ cho âm thanh phát xong mới tiếp tục.
4.3. Ví dụ ứng dụng
Trong một trò chơi, khi nhân vật thu thập được vật phẩm:
Khi nhân vật chạm vào vật phẩm
phát âm thanh [pop]
thay đổi [Điểm] một lượng 1
Ở đây, Sound có thể kết hợp với Sensing và Variables để tạo phản hồi trực quan và âm thanh cho người chơi.
5. Nhóm khối lệnh Events – Sự kiện

5.1. Vai trò của Events
Events xác định thời điểm một đoạn chương trình bắt đầu thực thi. Đây là nhóm rất quan trọng bởi nhiều chương trình Scratch cần một sự kiện để kích hoạt các hành động.
5.2. Các khối lệnh phổ biến
Một số khối thường gặp:
when green flag clicked
when () key pressed
when this sprite clicked
when I receive ()
broadcast ()
broadcast () and wait
Ví dụ, when green flag clicked thường được sử dụng để bắt đầu trò chơi hoặc hoạt ảnh.
5.3. Ví dụ
Khi bấm vào cờ xanh
nói "Bắt đầu!" trong 2 giây
di chuyển 20 bước
Events cũng có thể dùng để truyền thông tin giữa các Sprite thông qua broadcast.
Ví dụ:
Sprite A:
phát tin [Bắt đầu game]
Sprite B:
Khi tôi nhận được [Bắt đầu game]
chuyển sang trang phục tiếp theo
Cơ chế này rất hữu ích khi xây dựng các chương trình có nhiều nhân vật cùng tương tác.
6. Nhóm khối lệnh Control – Điều khiển

6.1. Chức năng
Control kiểm soát luồng thực thi của chương trình. Nếu Events giúp xác định khi nào chương trình bắt đầu, thì Control giúp quyết định các lệnh được thực hiện bao nhiêu lần, trong điều kiện nào và theo trình tự ra sao.
Đây cũng là nhóm giúp người học làm quen rõ hơn với các khái niệm lập trình như vòng lặp và điều kiện.
6.2. Các cấu trúc quan trọng
Một số khối tiêu biểu:
wait () seconds
repeat ()
forever
if () then
if () then else
wait until ()
repeat until ()
stop ()
create clone of ()
Ví dụ:
Khi bấm vào cờ xanh
lặp lại mãi mãi
di chuyển 10 bước
Khối forever khiến hành động bên trong được lặp lại liên tục cho đến khi chương trình dừng.
Trong khi đó, if then cho phép chương trình đưa ra quyết định:
nếu <chạm vào [Chướng ngại vật]?> thì
nói "Bạn đã thua!"
6.3. Tầm quan trọng của Control
Control là một trong những nhóm quan trọng nhất khi bắt đầu xây dựng game. Nó cho phép bạn tạo vòng lặp, điều kiện, thời gian chờ và cơ chế nhân bản Sprite.
Khi đã hiểu Control, người học bắt đầu chuyển từ việc thực hiện các hành động tuần tự sang xây dựng những chương trình có logic.
7. Nhóm khối lệnh Sensing – Cảm biến
7.1. Chức năng
Sensing giúp chương trình nhận biết thông tin từ môi trường hoặc tương tác của người dùng.
Nhờ nhóm này, Sprite có thể biết mình đang chạm vào đối tượng nào, người chơi có nhấn phím hay không hoặc khoảng cách tới một Sprite khác là bao nhiêu.
7.2. Các khối thường gặp
touching ()?
touching color ()?
ask () and wait
answer
key () pressed?
mouse down?
distance to ()
timer
7.3. Ví dụ thực tế
Trong game mê cung, bạn có thể kiểm tra xem nhân vật có chạm vào tường hay không:
nếu <chạm vào màu [màu của tường]?> thì
nói "Không thể đi qua!"
Một ví dụ khác là tương tác với người chơi:
hỏi "Bạn tên gì?" và đợi
nói (nối [Xin chào ] (trả lời))
Sensing vì vậy đóng vai trò như cầu nối giữa chương trình và người sử dụng.
8. Nhóm khối lệnh Operators – Toán tử

8.1. Chức năng
Operators thực hiện các phép tính, so sánh và xử lý logic. Nhóm này trở nên đặc biệt quan trọng khi chương trình bắt đầu có nhiều điều kiện hoặc cần xử lý dữ liệu.
8.2. Các nhóm toán tử chính
Toán học:
() + ()
() - ()
() * ()
() / ()
So sánh:
() < ()
() = ()
() > ()
Logic:
() and ()
() or ()
not ()
Xử lý chuỗi:
join () ()
letter () of ()
length of ()
8.3. Ví dụ
Giả sử trò chơi có điều kiện thắng khi người chơi đạt ít nhất 10 điểm:
nếu <(Điểm) > 10> thì
nói "Bạn đã chiến thắng!"
Operators cũng có thể kết hợp với Control:
nếu <<Điểm > 10> và <Thời gian < 30>> thì
nói "Hoàn thành thử thách!"
Những biểu thức như vậy giúp chương trình có khả năng đưa ra quyết định dựa trên nhiều điều kiện.
9. Nhóm khối lệnh Variables – Biến

9.1. Biến trong Scratch là gì?
Biến là nơi lưu trữ một giá trị có thể thay đổi trong quá trình chương trình chạy.
Ví dụ, một trò chơi có thể cần các biến:
- Điểm
- Mạng
- Thời gian
- Cấp độ
9.2. Các khối lệnh cơ bản
set [variable] to ()
change [variable] by ()
show variable
hide variable
Ví dụ, khi bắt đầu trò chơi:
Khi bấm vào cờ xanh
đặt [Điểm] thành 0
Khi người chơi thu thập một vật phẩm:
thay đổi [Điểm] một lượng 1
9.3. Ứng dụng của biến
Variables là thành phần gần như không thể thiếu khi xây dựng những trò chơi có hệ thống điểm hoặc trạng thái.
Ví dụ, thay vì tạo riêng một đoạn chương trình cho từng mức điểm, bạn có thể lưu điểm trong biến và sử dụng Operators để kiểm tra giá trị đó.
10. Nhóm khối lệnh My Blocks – Khối của tôi
10.1. My Blocks dùng để làm gì?
My Blocks cho phép người dùng tự tạo các khối lệnh của riêng mình. Có thể hình dung đây là cách tạo một “hàm” hoặc thủ tục đơn giản trong Scratch.
Ví dụ, nếu chương trình thường xuyên phải thực hiện một chuỗi hành động:
di chuyển
phát âm thanh
đổi trang phục
nói một câu
thay vì lặp lại toàn bộ các khối này nhiều lần, bạn có thể tạo một My Block như:
hành động đặc biệt
Sau đó gọi khối này ở những vị trí cần thiết.
10.2. Khi nào nên sử dụng My Blocks?
My Blocks đặc biệt hữu ích khi chương trình có nhiều đoạn lệnh giống nhau hoặc khi muốn chia chương trình thành những phần nhỏ dễ quản lý.
Đây cũng là cơ hội tốt để người học làm quen với tư duy tái sử dụng mã – một khái niệm rất quan trọng trong lập trình thực tế.
11. Các nhóm khối lệnh trong Scratch phối hợp với nhau như thế nào?
Điểm thú vị của Scratch không nằm ở việc sử dụng từng nhóm khối lệnh riêng biệt mà ở khả năng kết hợp chúng.
11.1. Events + Motion
Ví dụ:
Khi phím [mũi tên phải] được nhấn
thay đổi x một lượng 10
Events xác định thời điểm hành động xảy ra, còn Motion thực hiện việc di chuyển.
11.2. Events + Control + Motion
Khi bấm vào cờ xanh
lặp lại mãi mãi
di chuyển 5 bước
Ba nhóm phối hợp để tạo chuyển động liên tục cho Sprite.
11.3. Sensing + Control + Operators
nếu <<chạm vào [Quái vật]?> và <Điểm > 10>> thì
nói "Bạn đã đủ điểm!"
Sensing cung cấp thông tin, Operators xử lý điều kiện và Control quyết định hành động.
11.4. Variables + Operators + Control
thay đổi [Điểm] một lượng 1
nếu <Điểm > 10> thì
phát tin [Qua màn]
Đây là mô hình rất phổ biến trong game Scratch: dữ liệu được lưu bằng biến, xử lý bằng toán tử và kiểm soát bằng điều kiện.
11.5. Looks + Sound + Events
Khi nhân vật được nhấp vào
nói "Xin chào!" trong 2 giây
phát âm thanh [Hello]
chuyển sang trang phục tiếp theo
Sự kết hợp này giúp các dự án Scratch trở nên sinh động và có tính tương tác cao hơn.
12. Cách học và ghi nhớ các nhóm khối lệnh trong Scratch
12.1. Không nên học thuộc tất cả khối lệnh ngay từ đầu
Scratch có khá nhiều khối lệnh và việc cố gắng ghi nhớ toàn bộ ngay từ đầu thường không mang lại hiệu quả.
Theo tôi, cách dễ hơn là học thông qua từng dự án nhỏ. Khi gặp một yêu cầu cụ thể, hãy tìm nhóm khối lệnh phù hợp rồi thử nghiệm cách sử dụng.
12.2. Học theo chức năng
Bạn có thể ghi nhớ nhanh bằng cách đặt câu hỏi:
- Muốn nhân vật di chuyển → Motion.
- Muốn nhân vật nói hoặc thay đổi hình ảnh → Looks.
- Muốn phát âm thanh → Sound.
- Muốn xác định khi nào chương trình chạy → Events.
- Muốn lặp hoặc kiểm tra điều kiện → Control.
- Muốn nhận biết tương tác → Sensing.
- Muốn tính toán hoặc so sánh → Operators.
- Muốn lưu dữ liệu → Variables.
- Muốn tạo lệnh riêng → My Blocks.
Cách tiếp cận này thực tế hơn nhiều so với việc học thuộc tên từng khối.
12.3. Học thông qua các dự án nhỏ
Một số dự án phù hợp cho người mới gồm:
- Hoạt ảnh nhân vật đơn giản.
- Trò chơi bắt vật thể.
- Game tính điểm.
- Game mê cung.
- Trò chơi hỏi đáp.
- Hoạt cảnh có nhiều nhân vật tương tác.
Mỗi dự án sẽ giúp bạn sử dụng một nhóm khối lệnh khác nhau và dần hình thành tư duy lập trình.
13. Một số lỗi thường gặp khi sử dụng khối lệnh Scratch
13.1. Đặt khối lệnh không đúng vị trí
Một số khối chỉ hoạt động đúng khi được đặt bên trong cấu trúc như if, repeat hoặc forever. Vì vậy, hãy chú ý hình dạng của khối khi kéo thả.
13.2. Không có khối sự kiện để khởi động chương trình
Bạn có thể tạo rất nhiều lệnh nhưng nếu không có sự kiện phù hợp để kích hoạt chúng, chương trình sẽ không hoạt động như mong đợi.
13.3. Sử dụng vòng lặp không phù hợp
forever sẽ lặp liên tục, trong khi repeat chỉ lặp theo số lần xác định. Chọn sai loại vòng lặp có thể khiến chương trình chạy quá nhiều lần hoặc không dừng.
13.4. Quản lý biến chưa hợp lý
Một lỗi phổ biến là không thiết lập giá trị ban đầu cho biến.
Ví dụ, nếu biến Điểm cần bắt đầu từ 0, nên thiết lập:
Khi bấm vào cờ xanh
đặt [Điểm] thành 0
Việc khởi tạo biến giúp trò chơi hoạt động ổn định hơn mỗi khi bắt đầu lại.
14. Kết luận: Hiểu nhóm khối lệnh để làm chủ Scratch
Nắm được các nhóm khối lệnh trong Scratch là nền tảng quan trọng đối với bất kỳ ai mới bắt đầu học lập trình bằng Scratch. Thay vì cố gắng ghi nhớ toàn bộ khối lệnh, bạn chỉ cần hiểu mỗi nhóm giải quyết vấn đề gì và khi nào nên sử dụng chúng.
Motion giúp nhân vật di chuyển, Looks kiểm soát hiển thị, Sound xử lý âm thanh, Events kích hoạt chương trình, Control quản lý luồng thực thi, Sensing nhận biết tương tác, Operators xử lý phép tính và logic, Variables lưu trữ dữ liệu còn My Blocks giúp tạo các khối lệnh tùy chỉnh.
Điều đáng chú ý là một dự án Scratch hoàn chỉnh thường không chỉ sử dụng một nhóm. Khi biết kết hợp Events, Control, Sensing, Operators, Variables cùng các nhóm khác, bạn đã bắt đầu tiếp cận những khái niệm quan trọng của lập trình như sự kiện, điều kiện, vòng lặp, biến, toán tử và hàm.
Vì vậy, nếu mới học Scratch, đừng quá áp lực về việc phải nhớ hết tất cả các khối. Hãy bắt đầu bằng một dự án nhỏ, thử nghiệm từng nhóm và quan sát cách chúng phối hợp. Qua mỗi dự án, việc lựa chọn và kết hợp khối lệnh sẽ trở nên tự nhiên hơn.