Danh sách
Danh sách (list) lưu trữ nhiều giá trị cùng lúc, giống như mảng (array) trong các ngôn ngữ lập trình văn bản. Dùng khi cần lưu danh sách tên người chơi, bảng xếp hạng điểm, tập hợp các từ…
Tạo danh sách
Phần tiêu đề “Tạo danh sách”Vào nhóm Các biến số → bấm Tạo một danh sách → đặt tên (ví dụ
(bảng điểm :: list)) → chọn phạm vi (tất cả nhân vật / chỉ nhân vật này), tương tự
tạo biến.
Thêm, xoá, thay thế phần tử
Phần tiêu đề “Thêm, xoá, thay thế phần tử”thêm phần tử [10] vào trong [bảng điểm v] xóa phần tử thứ (1) của [bảng điểm v] Xóa hết tất cả trong liệt kê [bảng điểm v] thêm phần tử [5] tại vị trí (1) của [bảng điểm v] thay thế phần tử thứ (1) của danh sách [bảng điểm v] bằng [99]
Đọc phần tử và kiểm tra
Phần tiêu đề “Đọc phần tử và kiểm tra”(phần tử thứ (1) của [bảng điểm v]) (kích thước của [bảng điểm v]) <[bảng điểm v] chứa phần tử [10]?> (số thứ tự của [10] trong [bảng điểm v])
(kích thước của [danh sách v]) trả về số phần tử hiện có trong danh sách - rất hữu
ích làm điều kiện dừng khi duyệt qua toàn bộ danh sách.
Duyệt qua toàn bộ danh sách
Phần tiêu đề “Duyệt qua toàn bộ danh sách”Kết hợp biến đếm với vòng lặp lặp lại (10) để đi qua từng phần tử - cách làm
tương đương vòng for trong Python:
khi bấm vào @greenFlag đặt [i v] thành (1) lặp lại (kích thước của [bảng điểm v]) nói (phần tử thứ (i) của [bảng điểm v]) trong (1) giây thay đổi [i v] một lượng (1)
Ví dụ: lưu điểm cao nhất
Phần tiêu đề “Ví dụ: lưu điểm cao nhất”khi bấm vào @greenFlag hỏi [Nhập điểm của bạn:] và đợi thêm phần tử (trả lời) vào trong [bảng điểm v] hiện danh sách [bảng điểm v]
Bảng điểm sẽ hiện trực tiếp trên sân khấu dưới dạng bảng, có thể kéo giãn kích thước để xem toàn bộ.
Nhập dữ liệu vào danh sách
Phần tiêu đề “Nhập dữ liệu vào danh sách”Nhiều bài tập cần sẵn một dãy số trong danh sách trước khi xử lý. Có ba cách
đưa dữ liệu vào danh sách, ví dụ với danh sách (dãy số :: list).
Cách 1. Nhập từ bàn phím bằng khối tự tạo
Phần tiêu đề “Cách 1. Nhập từ bàn phím bằng khối tự tạo”Gói phần hỏi từng số vào một khối tự tạo để bài nào cũng dùng lại được.
Khối nhập danh sách :: custom xoá sạch danh sách cũ, hỏi số lượng phần tử N, rồi hỏi lần
lượt từng số và thêm vào cuối danh sách:
định nghĩa nhập danh sách Xóa hết tất cả trong liệt kê [dãy số v] hỏi [Nhập số lượng phần tử N:] và đợi đặt [số lượng v] thành (trả lời) đặt [vị trí v] thành (1) lặp lại cho đến khi <(vị trí) > (số lượng)> hỏi (kết hợp [Nhập phần tử thứ ] (vị trí)) và đợi thêm phần tử (trả lời) vào trong [dãy số v] thay đổi [vị trí v] một lượng (1) end
Ở mỗi bài, chỉ cần đặt lệnh nhập danh sách :: custom ngay dưới khi bấm vào @greenFlag, trước
phần xử lý:
khi bấm vào @greenFlag nhập danh sách :: custom hiện danh sách [dãy số v]
Muốn mang khối sang một dự án khác, kéo cả khối định nghĩa nhập danh sách vào Ba lô
(Backpack, ở cuối màn hình lập trình, cần đăng nhập tài khoản Scratch), rồi mở
dự án mới và kéo ra.
Cách 2. Nhập bằng tay trên sân khấu
Phần tiêu đề “Cách 2. Nhập bằng tay trên sân khấu”Khi phải chạy thử nhiều lần với cùng một dãy số, gõ lại N số mỗi lần rất mất thời gian. Có thể điền sẵn dữ liệu ngay trên sân khấu:
- Bước 1: tạo danh sách
(dãy số :: list)như mục Tạo danh sách, đánh dấu vào ô bên cạnh tên danh sách để nó hiện trên sân khấu. - Bước 2: bấm dấu + ở góc dưới bên trái khung danh sách, gõ số đầu tiên rồi nhấn Enter. Scratch tự thêm một dòng mới cho số tiếp theo.
- Bước 3: muốn sửa một phần tử thì bấm vào nó và gõ lại; muốn xoá thì bấm vào phần tử rồi bấm dấu × bên phải.
Dữ liệu này được lưu cùng dự án.
Cách 3. Tải danh sách lên từ file
Phần tiêu đề “Cách 3. Tải danh sách lên từ file”Với dãy dài (vài chục, vài trăm số), nhanh nhất là chuẩn bị sẵn một file văn bản:
- Bước 1: dùng Notepad (hoặc TextEdit) tạo file, ví dụ
day-so.txt, mỗi số viết trên một dòng, rồi lưu lại. - Bước 2: trên sân khấu, bấm chuột phải vào khung danh sách
(dãy số :: list), chọn nhập (import), rồi chọn file vừa tạo. Mỗi dòng trong file trở thành một phần tử của danh sách.
Ngược lại, chọn xuất (export) để lưu nội dung danh sách ra file .txt.
Chương tiếp theo bước sang phần nâng cao, bắt đầu với thông điệp và cảm biến.