Một nhóm lệnh có thể gộp lại thành 1 lệnh gọi là thủ tục (mảnh ghép).
1.9.1. Thiết lập thủ tục
Để thiết lập thủ tục chúng ta chọn nhóm lệnh Khác và sau đó nháy
lên nút Tạo một mảnh ghép. Xuất hiện hộp hội thoại New Block như
hình dưới đây. Nháy lên nút Options để mở rộng hộp hội thoại.
Nhập tên thủ tục
Nhấp lên nút Lựa chọn để mở rộng hộp hội thoại này đầy đủ sẵn sàng cho việc khởi tạo thủ tục có tham số.
Cho phép 3 loại tham số: số, xâu và logic.
Ví dụ: tạo thủ tục vẽ
đa giác có n canh, có độ dài d. Ở đây cần tạo 2 tham số có kiểu số.
Để tạo như hình bạn chỉ cần nhấn nút thêm nhãn, thêm đầu số mới, thêm nhãn, thêm đầu số mới, sau đó đổi tên.
Sau khi tạo xong bên cử sổ lệnh xuất hiện lệnh sau
Để tạo nội dung cho thủ tục ta tiến hành ghép khối lệnh vào. Các tham biến trong dòng định nghĩa thủ tục có màu xanh. Trong quá trình viết các lệnh mô tả thủ tục chúng ta có thể sử dụng các tham biến này như các biến nhớ bình thường, ngoại trừ các lệnh thao tác trực tiếp thay đổi giá trị của các biến nhớ này.
Ví dụ: Thủ tục vẽ đa giác
1.9.2. Thủ tục đệ qui
Trong mảnh ghép định nghĩa cũng được phép ghép khối lệnh vừa định nghĩa
Ví dụi: Thủ tục đếm ngược
Lời gọi
Như vậy chúng ta thấy các thủ tục có tham số vẫn có thể gọi chính nó, các thủ tục có tính chất như vậy được gọi là đệ qui.
Một trong các vấn đề quan trọng nhất của các thủ tục có lời gọi đến chính nó (thủ tục đệ qui) là vấn đề kiểm soát không để chương trình bị rơi vào trạng thái "quẩn" tức là chạy vô định không bao giờ dừng. Các thủ tục này cần có lệnh kiểm soát khi nào thì dừng chương trình.
Trong ví dụ trên, chính lệnh If sẽ đảm bảo thủ tục sẽ dừng khi giá trị tham số n nhỏ hơn hoặc = 0.
Biến nhớ của thủ tục: Các tham biến được định nghĩa trong thủ tục chính là các biến nhớ riêng của thủ tục này. Tất cả các tham biến, hay biến nhớ của thủ tục đều có màu xanh để phân biệt với biến nhớ của nhân vật trong Scratch có màu da 51 cam. Do vậy 2 hệ thống biến nhớ này là độc lập hoàn toàn với nhau. Các giá trị được truyền vào tham số của thủ tục có thể là giá trị số cụ thể, có thể là biến nhớ.
Không thể thay đổi giá trị của các tham biến hay biến nhớ của thủ tục. Khi thực hiện lời gọi thủ tục, các tham biến này được truyền 1 giá trị từ bên ngoài và giữ nguyên giá trị đó trong suốt thời gian thủ tục có hiệu lực.
Ví dụ 2: Thủ tục đệ qui vẽ cây
Chúng ta hãy quan sát cây trong hình bên và thiết kế thủ tục để vẽ cây này.
Phân tích
Chúng ta cùng phân tích các qui luật vẽ của hình
bên. Xuất phát từ gốc, thủ tục sẽ kẻ 1 cành gốc dài, sau đó xoay 90ođể vẽ 3 cành (lá tiếp theo) có
độ dài = 1/2 cành gốc ban đầu. Với mỗi cành lá đó, thủ tục lại được gọi tiếp
tục đệ qui. Do vậy thủ tục cần thiết lập sẽ có 2 tham số là độ dài cành và số
lượng lá. Đoạn chương trình kiểm tra điều kiện kết thúc: nếu độ dài cành < 5
thì chỉ vẽ cành thôi. Đoạn chương trình lặp gọi đệ qui để vẽ tiếp lá bên trong.
Vẽ xong quay lại vị trí cũ và xoay trái 60o
Khi ra khỏi lời gọi đệ qui thì xoay phải thêm 90onữa để quay lại vị trí xuất phát.
Qui trình vẽ bông hoa này như sau:
- Ở vòng lặp ngoài sẽ lặp 5 lần và vẽ 5 đoạn thẳng từ tâm đến vị trí tiếp cận vòng tròn.
- Ở vòng lặp trong là vẽ vòng tròn nhỏ.
Dựa vào phân tích trên xây dựng 2 hàm:
- Hàm vẽ hình
tròn - Hàm
vẽ hoa
0 Comments:
Đăng nhận xét