Slogan của bài học: “Đừng lặp lại chính mình – Hãy viết một lần, dùng mãi mãi!”
Chào các em! Thầy Khỉ lại đây với một bước ngoặt quan trọng trong hành trình lập trình của các em. Hôm nay chúng ta sẽ học về HÀM VÀ THỦ TỤC – bí quyết để viết code sạch, dễ bảo trì và chuyên nghiệp!
MỤC TIÊU BÀI HỌC
- Hiểu được khái niệm hàm và thủ tục trong lập trình
- Biết cách tạo và sử dụng “Khối của tôi” trong Scratch
- Phân biệt được hàm có giá trị trả về và thủ tục không trả về
- Ứng dụng để tái sử dụng code hiệu quả
KHÁI NIỆM: TẠI SAO CẦN HÀM VÀ THỦ TỤC?
Vấn đề thực tế:
Hãy tưởng tượng các em cần vẽ nhiều ngôi nhà trong chương trình:
- Mỗi ngôi nhà cần: vẽ hình vuông + vẽ hình tam giác + vẽ cửa sổ
- Nếu vẽ 10 ngôi nhà → phải viết code 10 lần!
- Khi cần sửa kiến trúc → phải sửa 10 chỗ!
Giải pháp thông minh: Tạo hàm vẽ_nhà() → chỉ cần viết 1 lần, gọi 10 lần!
PHÂN LOẠI TRONG SCRATCH
1. THỦ TỤC (PROCEDURE) – Không trả về giá trị
- Thực hiện một nhiệm vụ cụ thể
- Ví dụ: vẽ hình, di chuyển nhân vật, phát âm thanh
2. HÀM (FUNCTION) – Có trả về giá trị
- Thực hiện tính toán và trả về kết quả
- Ví dụ: tính toán, kiểm tra điều kiện
THỰC HÀNH 1: TẠO THỦ TỤC ĐẦU TIÊN – VẼ HÌNH VUÔNG
Bài toán: Vẽ nhiều hình vuông ở các vị trí khác nhau
Phân tích không dùng hàm:
// Vẽ hình vuông thứ nhất
repeat (4)
—–move (50) steps
—–turn cw (90) degrees
end// Vẽ hình vuông thứ hai → Code lặp lại!
go to x: (100) y: (100)
repeat (4)
—–move (50) steps
—–turn cw (90) degrees
end
Phân tích dùng hàm:
Định nghĩa hàm vẽ_hình_vuông
↓
Khi cần vẽ hình vuông → gọi hàm vẽ_hình_vuông
Triển khai trong Scratch:
Bước 1: Tạo khối mới
- Vào mục My Blocks → Make a Block
- Đặt tên:
vẽ hình vuông
Bước 2: Định nghĩa hàm:
define vẽ hình vuông
repeat (4)
move (50) steps
turn cw (90) degrees
end
Bước 3: Sử dụng hàm:
when green flag clicked
erase all
pen down
vẽ hình vuông
go to x: (100) y: (100)
vẽ hình vuông
go to x: (-100) y: (-100)
vẽ hình vuông
THỰC HÀNH 2: THỦ TỤC CÓ THAM SỐ – VẼ ĐA GIÁC LINH HOẠT
Bài toán: Vẽ các đa giác với số cạnh và kích thước khác nhau
Tạo khối có tham số:
- Tạo block mới:
vẽ đa giác - Thêm input:
số cạnhvàđộ dài cạnh
Định nghĩa hàm:
define vẽ đa giác số cạnh: (số_cạnh) độ dài: (độ_dài)
set [góc_quay v] to ((360) / (số_cạnh))
repeat (số_cạnh)
move (độ_dài) steps
turn cw (góc_quay) degrees
end
Sử dụng:
when green flag clicked
pen down
vẽ đa giác số cạnh: (3) độ dài: (50) // Tam giác
vẽ đa giác số cạnh: (5) độ dài: (30) // Ngũ giác
vẽ đa giác số cạnh: (8) độ dài: (20) // Bát giác
THỰC HÀNH 3: TẠO HÀM CÓ GIÁ TRỊ TRẢ VỀ
Bài toán: Tạo hàm tính giai thừa
Phân tích thuật toán:
Hàm tính_giai_thừa(n):
Nếu n = 0 → trả về 1
Ngược lại → trả về n × tính_giai_thừa(n-1)
Hàm tính_giai_thừa(n):
Nếu n = 0 → trả về 1
Ngược lại → trả về n × tính_giai_thừa(n-1)
Trong Scratch (sử dụng biến toàn cục):
Bước 1: Tạo biến kết_quả_tính_toán
Bước 2: Tạo hàm:
define tính giai thừa của (n)
if <(n) = [0]> then
set [kết_quả_tính_toán v] to [1]
else
tính giai thừa của ((n) - (1))
set [kết_quả_tính_toán v] to ((kết_quả_tính_toán) * (n))
end
Bước 3: Sử dụng hàm:
when green flag clicked
ask [Nhập số cần tính giai thừa:] and wait
tính giai thừa của (answer)
say (join [Kết quả: ] (kết_quả_tính_toán)) for (5) seconds
THỰC HÀNH 4: DỰ ÁN TỔNG HỢP – VẼ THÀNH PHỐ THU NHỎ
Kết hợp tất cả kiến thức đã học:
Tạo các hàm cơ bản:
define vẽ nhà kích_thước: (kích_thước)
// Code vẽ ngôi nhà với kích thước linh hoạt
define vẽ cây chiều_cao: (chiều_cao)
// Code vẽ cây với chiều cao thay đổi
define vẽ xe vị_trí_x: (x) vị_trí_y: (y)
// Code vẽ xe tại vị trí chỉ định
Chương trình chính:
when green flag clicked
erase all
pen down
vẽ nhà kích_thước: (50)
go to x: (100) y: (0)
vẽ nhà kích_thước: (70)
go to x: (-50) y: (-50)
vẽ cây chiều_cao: (80)
go to x: (0) y: (-100)
vẽ xe vị_trí_x: (0) vị_trí_y: (-100)
LỢI ÍCH CỦA VIỆC SỬ DỤNG HÀM VÀ THỦ TỤC
1. Tái sử dụng code:
- Viết một lần, dùng nhiều nơi
- Tiết kiệm thời gian và công sức
2. Dễ bảo trì:
- Sửa lỗi ở một chỗ → tất cả nơi sử dụng đều được cập nhật
- Giảm thiểu lỗi phát sinh
3. Tổ chức code rõ ràng:
- Code ngắn gọn, dễ đọc, dễ hiểu
- Chia nhỏ vấn đề phức tạp thành các phần đơn giản
4. Làm việc nhóm hiệu quả:
- Mỗi người phát triển các hàm khác nhau
- Dễ dàng tích hợp và kiểm tra
BÀI TẬP THỰC HÀNH
Bài tập cơ bản:
Tạo thư viện vẽ hình học
- Hàm vẽ hình tròn (bán kính)
- Hàm vẽ hình sao (số cánh, kích thước)
- Hàm vẽ hình xoắn ốc
Bài tập trung bình:
Xây dựng máy tính khoa học
- Hàm tính lũy thừa (cơ_số, số_mũ)
- Hàm tính căn bậc hai (số)
- Hàm giải phương trình bậc 2 (a, b, c)
Bài tập nâng cao:
Phát triển game mini
- Hàm tạo vật phẩm ngẫu nhiên
- Hàm tính điểm số với các hệ số khác nhau
- Hàm kiểm tra va chạm giữa các nhân vật
KẾT LUẬN: TƯ DUY CỦA LẬP TRÌNH VIÊN CHUYÊN NGHIỆP
Các em thân mến,
Học về hàm và thủ tục không chỉ là học một kỹ thuật, mà là học một TƯ DUY hệ thống:
“Lập trình viên giỏi không viết code, họ thiết kế hệ thống. Họ không giải quyết vấn đề, họ xây dựng công cụ để giải quyết vấn đề.”
Qua bài học này, các em đã:
- Biết cách chia nhỏ bài toán phức tạp thành các phần đơn giản
- Hiểu được giá trị của việc tái sử dụng code
- Bắt đầu suy nghĩ như một kiến trúc sư phần mềm
Đây chính là bước chuyển mình từ “người viết code” thành “người thiết kế hệ thống”!
Ở bài tiếp theo, chúng ta sẽ học về DANH SÁCH VÀ MẢNG – công cụ quản lý dữ liệu hàng loạt cực kỳ mạnh mẽ!
The Coding Monkey!
