Cách tạo truyện tranh, phim hoạt hình từ Scratch

KỂ CHUYỆN VÒNG ĐỜI CỦA BƯỚM

Tải hình ảnh nhân vật: Vòng đời của Bướm

1. Kịch bản:

Có một con bướm bay ngang qua rừng và đẻ trứng trên một chiếc lá.

Sau vài ngày quả trứng nở ra một con sâu bướm. Sâu bướm rất ham ăn.

Nó ăn hết những chiếc lá xung quanh, no bụng nó chui vào một cái kén và treo ngược mình lên một cành cây rồi đánh một giấc no say.

Một thời gian sau, con sâu bướm quyết định đi ra ngoài và lúc này nó đã trở thành một con bướm xinh đẹp.

2. Các nhân vật chính:

Bướm, sâu, kén, lá cây có quả trứng. Ta sẽ lập trình cho các nhân vật lần lượt hiện và ẩn theo từng yêu cầu của kịch bản.

3. Lập trình cho từng nhân vật.

a. Nhân vật bướm, sâu, lá, kén

a. Nhân vật là các đoạn văn Đoạn 1, đoạn 2, đoạn 3, đoạn 4

Liên kết chia sẻ toàn bộ dự án tại đây: https://scratch.mit.edu/projects/1020333752

 

 

Toạ độ sân khấu Scratch

Hệ tọa độ trên Scratch

Trên Scratch, sân khấu có chiều rộng là 360 và chiều dài là 480 pixel, được xác định theo hệ trục tọa độ xy trong toán học. Trục x theo chiều ngang có giá trị từ -240 đến 240, trục y theo chiều dọc có giá trị từ -180 đến 180
Trong hệ tọa độ của trục hoành (trục x), số âm là số nhỏ hơn 0, được biểu diễn bằng dấu trừ (-) và giảm dần hướng về phía bên trá, ngược lại là số dương và tăng dần hướng về bên phải. Tương tự đối với trục tung (trục y), số âm sẽ giảm dần hướng về phía bên bên dưới màn hình, ngược lại là số dương tăng dần hướng về bên trên màn hình.
 
 
Toạ độ của một điểm được xác định bởi toạ độ x và toạ độ y của điểm đó. Để xác định toạ độ của một điểm trên sân khấu, từ điểm đó chúng ta kẻ một đường thẳng vuông góc với trục x, đường thẳng đó cắt trục x tại điểm có x bằng bao nhiêu thì đó sẽ là vị trí x của điểm đó. Tương tự như với trục y, ta tìm đƣợc vị trí y. Cặp số (x,y) chính là toạ độ của điểm đó. Trục x và trục y giao nhau tại điểm có toạ độ (0,0).
 

Sân khấu, phông nền Scratch


Sân khấu là gì?

Trong chương trình Scratch, Stage là khu vực sân khấu hiển thị kết quả đầu ra trong khi lập trình. Sân khấu cũng là nơi duy nhất giúp người dùng tương tác với sản phẩm do chúng ta tạo ra. Sân khấu là nơi biểu diễn của các đối tượng, hiển thị các loại ảnh nền khác nhau, hiển thị các hiệu ứng đồ họa…

Cách thêm phông nền cho sân khấu

Thêm đối tượng từ thư viện 

Scratch cung cấp thư viện sẵn có với nhiều hình ảnh sân khấu thuộc nhiều chủ đề khác nhau như trong nhà, ngoài trời, sân khấu…

Vẽ mới 
Bạn có thể vẽ mới các phông nền cho sân khấu dựa trên các công cụ có sẵn trong Scratch, chủ động tạo nên hình ảnh sân khấu cho riêng mình

Lấy ngẫu nhiên 

Lựa chọn này cho phép hệ thống lấy ngẫu nhiên 1 phông nền bất kỳ trong hệ thống thư viện sẵn có của nó

Tải phông nền lên

Chúng ta có thể tìm kiếm các hình ảnh trên mạng. Sau đó tải về máy tình rồi biến nó thành phông nền trong Scratch

 

https://youtu.be/V_zDfZKBNmE



DẠNG BÀI XỬ LÝ XÂU (STRING) – PHẦN 2

Bài 4: Xử Lý Xâu – Đảo Ngược Xâu

Nhân vật sẽ yêu cầu người chơi nhập vào một sâu bất kỳ. Sau đó nhân vật sẽ thông báo xâu có thứ tự ngược lại so với sâu người dùng nhập vào.

Ví dụ: người dùng nhập vào xâu “abc123” thì nhân vật sẽ thông báo lại là “321cba”

Gợi Ý Hướng Giải Quyết:

  • Tạo một biến lưu xâu đảo ngược
  • Duyệt từng phần tử trong xâu nhưng sẽ duyệt từ dưới lên (hay chính là duyệt từ phần tử cuối cùng)
  • Khi duyệt đến phần tử nào thì nối phần tử đó vào xâu đảo ngược

Bài 5: Trộn 2 Xâu

Nhân vật sẽ yêu cầu người chơi nhập vào hai sâu bất kỳ. Chương trình sẽ trộn hai xâu lại với nhau rồi sau đó nhân vật sẽ nói ra kết quả.

Việc trộn xâu sẽ được thực hiện theo nguyên tắc sau:

  • Lần lượt từ trái sang phải, một ký tự của xâu thứ nhất rồi đến một ký tự của xâu thứ hai.
  • Nếu xâu nào hết phần tử thì chỉ nói ra các ký tự của phần tử còn lại.

Bài 6: Phân Tách Chữ Và Số Trong Xâu

Nhân vật sẽ yêu cầu người chơi nhập vào một xâu bất kỳ chứa cả chữ và số. Chương trình sẽ dồn hết chữ sang bên trái (đúng thứ tự) và chữ số sang bên phải (giữ đúng thứ tự). Sau đó nhân vật sẽ nói ra kết quả.

Ví dụ:

  • Xâu người chơi nhập vào là 184a4hgs1
  • Xâu nhân vật cần thông báo là ahgs1841

Gợi Ý Hướng Giải Quyết:

Với bài tập này, trước tiên ta phải phân tách các ký tự trong xâu người chơi nhập vào thành 2 loại chữ và số. Các ký tự chữ tách ra sẽ được lưu thành xâu A, các ký tự số tách ra sẽ tạo thành xâu B (theo đúng thứ tự). Cuối cùng ta chỉ cần nối xâu A và xâu B thì ta sẽ được xâu kết quả.

Các bạn có thể xem lại bài tập tách chữ ra khỏi xâu (hay còn gọi là xóa mọi ký tự số, ký tự đặc biệt trong xâu bất kỳ) ở bài viết Dạng bài xử lý xâu – phần 1

 

Bài 7: Nối Xâu Ở Vị Trí Chỉ Định

Nhân vật yêu cầu người chơi nhập vào hai xâu và lần lượt lưu vào biến A và B. Tiếp theo, nhân vật tiếp tục yêu cầu nhập vào 1 số n nhỏ hơn độ dài của xâu A. Nếu người chơi nhập lớn hơn, yêu cầu nhập lại cho đến khi nào đúng. Sau đó chương trình sẽ chèn xâu B vào xâu A ở vị trí n mà người chơi nhập. Cuối cùng nhân vật sẽ nói ra xâu kết quả.

Ví dụ:

  • Người chơi nhập A = abc, B = 124
  • Người chơi nhập n = 2
  • Xâu kết quả là: a124bc

Gợi Ý Hướng Giải Quyết:

  • Tạo các biến A, B và n như đề bài yêu cầu
  • Cho nhân vật hỏi và lưu câu trả lơi của người chơi vào các biến như đề bài yêu cầu
  • Riêng với biến n thì ta cần cho NV hỏi sau đó kiểm tra lại đáp án xem có thỏa mãn điều kiện (n < length of A) không. Nếu không thì cần repeat việc hỏi cho đến khi thỏa mãn điều kiện
  • Duyệt từng phần tử của xâu A từ phần tử thứ 1 cho đến phần tử n-1 và lưu nó thành xâu mới, tạm gọi là xâu A1
  • Duyệt từng phần tử của xâu A từ phần tử thứ n cho đến hết và lưu nó vào một xâu mới, tạm gọi là A2
  • Ta nối A1, B và A2 thì sẽ được xâu đề bài yêu cầu

Bài 8: Phân Tách Từ Trong Xâu

Nhân vật sẽ yêu cầu người chơi nhập vào một tên đầy đủ bao gồm họ, tên đệm và tên. Chương trình sẽ giúp phân tách đâu là họ, đâu là tên đệm và đâu là tên. Sau đó nhân vật sẽ thông báo kết quả ra màn hình.

Ví dụ:

  • Tên người chơi nhập vào là Lê Hoàng ==> Kết quả nhân vật sẽ nói ra là: Họ là Lê, tên là Hoàng
  • Tên người chơi nhập vào là Nguyễn Văn An ==> Kết quả nhân vật sẽ nói ra là: Họ là Nguyễn, tên điệm là Văn, tên là An
  • Tên người chơi nhâp vào là Lê Thị Ngọc Anh ==> Kết quả nhân vật sẽ nói ra là: Họ là Lê, tên đệm là Thị Ngọc, tên là Anh

Gợi Ý Hướng Giải Quyết:

  • Chúng ta sẽ dùng dấu hiệu là dấu cách để phân tách các từ trong một xâu.
  • Cần duyệt từng phần tử trong xâu cho đến khi gặp xấu cách. Như vậy thì toàn bộ các ký tự vừa duyệt qua sẽ thuộc 1 từ. Cứ lặp đi lặp lại như vậy cho đến hết xâu thì ta sẽ tách được hêt các từ trong xâu đó
  • Tuy nhiên số lượng từ trong xâu là không thể biết trước. Tên có thể có 2, 3, 4, 5 từ. Do đó ta sẽ dùng list (thay vì biến) để lưu các từ tách ra được vì ta không biết cần phải lập bao nhiêu biến cho đủ
  • Cuối cùng, phần tử đầu tiên trong list chính là họ. Phần tử cuối cùng trong list sẽ là tên. Phần tử còn lại ở giữa (nếu có) sẽ là tên đệm

Nguồn: Nga Hoàng

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.

Dạng bài xử lý xâu (String) – Phần 1

Xâu là gì?

Xâu hay chuỗi (tiếng anh là String) là một kiểu dữ liệu. Xâu là một dãy các ký tự trong bảng mã ASCII. Hiểu đơn giản, xâu là một chuỗi ký tự bao gồm chữ hoa, chữ thường, số và một số ký tự đặc biệt

Lưu ý: chữ ở đây được hiểu là các chữ cái trong bảng chữ cái tiếng anh.

Ví dụ về xâu (string): abc123, hello, scratch…

Xâu Trong Scratch

Trong Scratch, có 2 câu lệnh liên quan đến xử lý xâu:

 Độ dài của… : Câu lênh này sẽ trả về số lượng ký tự có trong xâu.

Ví dụ, khi click vào câu lệnh “ Độ dài của Scratch” thì câu lệnh này sẽ trả về số 7 vì chữ Scratch có 7 ký tự

 Ký tự thứ …  của chuỗi … : Câu lệnh này sẽ giúp lấy ra ký tự ở vị trí nào đó của xâu.

Ví dụ, khi click vào câu lệnh “Ký tự thứ 1 của chuỗi Scratch” thì câu lệnh này sẽ trả về chữ “S” vì ký tự thứ nhất (chữ cái thứ nhất) trong chuỗi (từ) Scratch là chữ “S”

Bài 1: Xử Lý Xâu – Đếm Ký Tự Trong Xâu

Nhân vật sẽ yêu cầu người chơi nhập vào một sâu bất kỳ. Sau đó:

  • Khi ấn phím 1, nhân vật sẽ nói ra số ký tự có trong xâu đó
  • Khi ấn phím 2, nhân vật sẽ nói ra số ký tự là chữ cái có trong xâu
  • Khi ấn phím 3, nhân vật sẽ nói ra số ký tự là số có trong xâu
  • Khi ấn phím 4, nhân vật sẽ nói ra số ký tự không phải là chữ cũng không phải là số có trong xâu

Gợi Ý Hướng Giải Quyết:

  1. Dùng câu lệnh “Độ dài của… ” để đếm số ký tự trong xâu người dùng nhập vào
  2. Tạo biến “số chữ cái” để lưu số lượng chữ cái có trong sâu. Tạo list “chữ cái” gồm 26 chữ cái trong bảng chữ cái tiếng anh. Duyệt từng ký tự trong xâu và kiểm tra xem ký tự đó có thuộc list chữ cái hay không. Nếu thuộc thì tăng giá trị của biến chữ cái lên 1 đơn vị
  3. Tạo biến “số số” để lưu số lượng số có trong sâu. Tạo list “số” gồm 10 chữ số từ 0 đến 9. Duyệt từng ký tự trong xâu và kiểm tra xem ký tự đó có thuộc list “số” hay không. Nếu thuộc thì tăng giá trị của biến c”số số” lên 1 đơn vị
  4. Tạo biến “số ký tự đặc biệt” để lưu số lượng số ký tự đặc biệt có trong sâu. Duyệt từng ký tự trong xâu và kiểm tra xem ký tự đó có không thuộc cả list “chữ cái” và list “số” hay không. Nếu không thuộc cả hai thì tăng giá trị của biến c”số ký tự đặc biệt” lên 1 đơn vị

Bài 2: Xóa Một Loại Ký Tự Nào Đó Trong Xâu

Nhân vật sẽ yêu cầu người chơi nhập vào một sâu bất kỳ. Chương trình sẽ xóa bỏ mọi ký tự không phải là chữ trong xâu đó. Sau đó nhân vật sẽ thông báo xâu kết quả ra màn hình.

Gợi Ý Hướng Giải Quyết:

Scratch không có câu lệnh xóa một ký tự nào đó trong xâu. Do đó ta sẽ phải tạo ra một biến để lưu xâu mới. Tất cả các ký tự trong xâu cũ thỏa mãn điều kiện sẽ được thêm vào xâu mới. Cụ thể:

  • Tạo list “chữ cái” gồm 26 chữ cái trong bảng chữ cái tiếng anh.
  • Duyệt từng ký tự trong xâu và kiểm tra xem ký tự đó có thuộc list chữ cái hay không. Nếu thuộc thì nối nó vào biến chứa xâu mới

Lưu ý: Nếu đề bài cho là xóa ký tự chữ hoặc xóa ký tự đặc biệt thì ta cũng làm tương tự. Hướng làm chung là tìm các ký tự thỏa mãn yêu cầu của đề bài rồi nối vào xâu mới

Bài 3: Xóa Ký Tự Trùng Trong Xâu

Nhân vật sẽ yêu cầu người dùng nhập một xâu bất kỳ từ bàn phím.

Sau đó, chương trình sẽ kiểm tra nếu thấy có 2 ký tự liền nhau và giống nhau thì xóa đi một ký tự.

Ví dụ nhập vào là aaxbbbccccd thì đưa ra kết quả axbcd

Gợi Ý Hướng Giải Quyết:

Bài tập này có ý tưởng giải quyết tương tự như bài 2 – xóa một loại ký tự nào đó trong xâu. Tuy nhiên, thay vì so sánh từng ký tự với danh sách chữ cái và danh sách số thì ta cần so sanh ký tự đang xét với ký tự phía trước nó để xem có trùng không. Nếu không trùng thì ta thêm ký tự đó vào xâu kết quả.

Cụ thể:

  • Tạo xâu “xâu mới” để lưu kết quả. Đặt giá trị của xâu mới là ký tự đầu tiên của xâu người dùng nhập vào.
  • Tạo biến số thứ tự để giúp duyệt từng ký tự trong xâu. Ở đây ta có thể đặt stt = 2 vì ta sẽ luôn thêm ký tự thứ nhất của xâu người dùng nhập vào vào xâu kết quả. Ta sẽ cần xét từ ký tự thứ 2 và so sánh ký tự đang xét (ký tự có vị trí stt) với ký tự trước nó (ký tự có vị trí stt – 1)
  • Duyệt từng ký tự của xâu người dùng nhập vào (bắt đầu duyệt từ ký tự thứ 2). Nếu thấy ký tự nào không trùng với ký tự trước nó thì nối ký tự đó vào xâu “xâu mới”

 

 

Dạng bài ứng dụng List – Danh sách (phần 3)

Bài viết này sẽ tổng hợp và hướng dẫn giải dạng bài danh sách (chuỗi) hay dãy số tạo bởi quy luật trong kỳ thi tin học trẻ bằng Scratch 3.0.

Dạng 3: Cho Dãy Số Được Tạo Bởi Quy Luật. Sau Đó Học Sinh Cần Thực Hiện Các Thao Tác Cơ Bản Trong Dãy Số Đó.

Các Bước Giải Dạng 3:

  • Bước 1: Tìm quy luật của dãy số
  • Bước 2: Lập trình tạo dãy số với khoảng 10 phần tử theo đúng quy luật đã phát hiện. Sau đó, hãy so sánh dãy số mình vừa tạo với dãy số của đề cho
  • Bước 3: Tạo dãy số hoàn chỉnh theo yêu cầu của đề bài (đề bài thường sẽ có phần giới hạn dãy số như: phần tử cuối cùng là số nào đó, dãy có … phần tử, dãy có … số chắn hoặc … số lẻ)
  • Bước 4: Thực hiện các bài toán cơ bản (như dạng 1) trên dãy số vừa tạo

Ví Dụ: Đề Thi Tin Học Trẻ Tỉnh Bắc Giang Năm 2018

Cho Dãy Số Sau: 4, 7, 10, 13, … 70. Tính Số Số Hạng Và Tổng Của Dãy Số Đó.

Phân Tích Các Bước Giải:

  • Bước 1: Dãy số có quy luật là bắt đầu bằng số 4, số sau hơn số trước 3 đơn vị
  • Bước 2: Lập trình tạo dãy số với 10 phần tử

  • Bước 3: Tạo dãy số hoàn chỉnh. Dãy số đề bài cho số cuối cùng là 70. Do đó ta sẽ thêm các số cho đến khi nào số vừa được thêm vào là 70

  • Bước 4: Thông báo độ dài dãy và tính tổng (Tham khảo hướng dẫn chi tiết trong bài viết về dãy phần 1)

Nguồn: Nga Hoàng

Dạng bài ứng dụng List – Danh sách (phần 2)

Bài viết này sẽ hướng dẫn giải dạng bài danh sách (chuỗi) trong kỳ thi tin học trẻ bằng Scratch 3.0 ví dụ như tính tìm số lớn nhất, nhỏ nhất, sắp xếp dãy số tăng dần, giảm dần theo thuật toán nổi bọt

Dạng 2: Cho Dãy Số Ngẫu Nhiên. Yêu Cầu Tìm Số Lớn Nhất, Nhỏ Nhất Hoặc Sắp Xếp Dãy Số Theo Thứ Tự Tăng Dần Hoặc Giảm Dần.

Bài 6: Tìm Số Lớn Nhất Trong Dãy

Các bước thực hiện:

  • Tạo biến tên là max để lưu giá trị của số lớn nhất.
  • Ban đầu, ta giả sử phần tử đầu tiên trong dãy có giá trị lớn nhất và đặt giá trị của max là giá trị của phần tử đầu tiên trong dãy.
  • So sánh phần tử tiếp theo trong dãy với max. Nếu phần tử đó lớn hơn max thì đặt giá trị của max là giá trị của phần tử đó. Việc so sánh này sẽ bắt đầu từ phần tử thứ 2 trong dãy cho đến hết.
  • Khi duyệt hết phần tử trong dãy, ta có max chính là giá trị lớn nhất của dãy số.

Bài 7: Tìm Số Nhỏ Nhất Trong Dãy

Làm tương tự như bài 6. Các bước thực hiện như sau:

  • Tạo biến tên là min để lưu giá trị của số nhỏ nhất.
  • Ban đầu, ta giả sử phần tử đầu tiên trong dãy có giá trị nhỏ nhất và đặt giá trị của min là giá trị của phần tử đầu tiên trong dãy.
  • So sánh phần tử tiếp theo trong dãy với min. Nếu phần tử đó nhỏ hơn min thì đặt giá trị của min là giá trị của phần tử đó. Việc so sánh này sẽ bắt đầu từ phần tử thứ 2 trong dãy cho đến hết.
  • Khi duyệt hết phần tử trong dãy, ta có min chính là giá trị nhỏ nhất của dãy số.

Bài 8: Sắp Xếp Dãy Số Theo Thứ Tự Tăng Dần

Có rất nhiều cách (thuật toán) để sắp xếp dãy số. Trên thực tế, lập trình trình viên sẽ lựa chọn những thuật toán nhanh nhất giúp tối ưu chương trình. Tuy nhiên, trong trường hợp này, chúng ta sẽ chọn thuật toán đơn giản nhất để giới thiệu về thuật toán sắp xếp. Đó là thuật toán sắp xếp nổi bọt (Bubble Sort)

Thuật toán sắp xếp nổi bọt (Bubble Sort) là kiểu so sánh bắt cặp tất cả các phần tử trong dãy cần sắp xếp và đổi chỗ hai phần tử trong cặp nếu chúng không thỏa điều kiện thứ tự.

Ví Dụ, Sắp Xếp Tăng Dần Cho Dãy Số [5, 3, 8, 4, 6]

Dãy Ban Đầu [5, 3, 8, 4, 6] Gồm 5 Phần Tử Nên Độ Dài Dãy Cần Sắp Xếp Là 5.

  • Đầu tiên chúng ta sẽ bắt cặp 5 và 3 với nhau. Vì 3 bé hơn nên ta đổi chỗ 2 số này. Dãy mới là [3, 5, 8, 4, 6]
  • Tiếp theo, chúng ta bắt cặp 5 với 8. 5 bé hơn nên chúng ta không làm gì.
  • Tiếp theo, chúng ta bắt cặp 8 với 4. Vì 4 bé hơn nên ta đổi chỗ 2 số này. Dãy mới là [3, 5, 4, 8, 6]
  • Tiếp theo, chúng ta bắt cặp 8 với 6. Vì 6 bé hơn nên ta đổi chỗ 2 số này. Dãy mới là [3, 5, 4, 6, 8]
  • Sau 4 lần so sánh, ta đã đặt được số 8 là số lớn nhất xuống cuối dãy.
Số 8 Lớn Nhất Đã Được Sắp Xếp Đúng Vị Trí. Vậy Ta Bỏ Số 8 Ra Khỏi Dãy Cần Sắp Xếp. Do Đó Độ Dài Dãy Cần Sắp Xếp Bây Giờ Là 4. Dãy Hiện Tại Cần Sắp Xếp Là [3, 5, 4, 6]
  • Đầu tiên chúng ta sẽ bắt cặp 3 với 5. 3 bé hơn 5 nên chúng ta không làm gì.
  • Tiếp theo, chúng ta bắt cặp 5 với 4. Vì 4 bé hơn nên ta đổi chỗ 2 số này. Dãy mới là [3, 4, 5, 6]
  • Tiếp theo, chúng ta bắt cặp 5 với 6. 5 bé hơn 6 nên chúng ta không làm gì.
  • Sau 3 lần so sánh, ta đã đặt được số 6 là số lớn nhất xuống cuối dãy.
Số 6 Lớn Thứ Hai Đã Được Sắp Xếp Đúng Vị Trí. Vậy Ta Bỏ Số 6 Ra Khỏi Dãy Cần Sắp Xếp. Do Đó Độ Dài Dãy Cần Sắp Xếp Bây Giờ Là 3. Dãy Hiện Tại Cần Sắp Xếp Là [3, 4, 5]
  • Đầu tiên chúng ta sẽ bắt cặp 3 với 4. 3 bé hơn 4 nên chúng ta không làm gì.
  • Tiếp theo, chúng ta bắt cặp 4 với 5. 4 bé hơn 5 nên chúng ta không làm gì.
  • Sau 2 lần so sánh, ta đã đặt được số 5 là số lớn nhất xuống cuối dãy.

Số 5 Lớn Thứ Ba Đã Được Sắp Xếp Đúng Vị Trí. Vậy Ta Bỏ Số 5 Ra Khỏi Dãy Cần Sắp Xếp. Do Đó Độ Dài Dãy Cần Sắp Xếp Bây Giờ Là 2. Dãy Hiện Tại Cần Sắp Xếp Là [3, 4]

  • Chúng ta sẽ bắt cặp 3 với 4. 3 bé hơn 4 nên chúng ta không làm gì.
  • Sau 1 lần so sánh, ta đã đặt được số 4 là số lớn nhất xuống cuối dãy.

Số 4 Lớn Thứ Tư Đã Được Sắp Xếp Đúng Vị Trí. Vậy Ta Bỏ Số 4 Ra Khỏi Dãy Cần Sắp Xếp. Do Đó Độ Dài Dãy Cần Sắp Xếp Bây Giờ Là 1. Dãy Hiện Tại Cần Sắp Xếp Là [3]. Vì Chỉ Có 1 Số Nên Chúng Ta Không Cần So Sánh Gì Nữa.

Vậy việc sắp xếp của chúng ta đã hoàn thành! Kết quả [3, 4, 5, 6, 8]

Bài 9: Sắp Xếp Dãy Số Theo Thứ Tự Giảm Dần

Làm tương tự như bài 7. Chỉ cần thay điều kiện so sánh hai số để đổi chỗ các phần tử là được.

Nguồn: Nga Hoàng

Dạng bài ứng dụng List – Danh sách (phần 1)

Dạng 1: Cho Dãy Số Đơn Giản (Liên Tiếp Dạng 1, 2, 3, 4, 5… ). Thực Hiện Các Thao Tác Cơ Bản Trong Dãy Số.

Bài 1: Duyệt Từng Phần Tử Trong Dãy

Duyệt từng phần tử trong dãy là một kỹ thuật vô cùng quan trọng, hầu hết sử dụng trong tất cả các bài. Kỹ thuật này có thể hiểu đơn giản là chúng ta sẽ xem xét giá trị của từng phần tử trong dãy, lần lượt từ phần tử đầu tiên cho đến hết.

Để duyệt từng phần tử, chúng ta cần một biến. Biến này sẽ đại điện cho số thứ tự của từng phần tử. Ban đầu, biến này sẽ được đặt bằng 1 để chúng ta bắt đầu duyệt từ phần tử đầu tiên trong dãy. Sau khi duyệt xong phần tử đó, chúng ta tăng biến lên 1 để duyệt sang phần tử tiếp theo. Khi nào biến này lớn hơn độ dài của dãy thì có nghĩa là chúng ta đã duyệt hết toàn bộ dãy.

Ví dụ: Cho chú mèo nói ra từng phần tử có trong dãy số

Bài 2: Đếm Số Phần Tử Có Trong Dãy

Câu lệnh/biến “kích thước của …” giúp trả về số lượng phần tử có trong dãy.

Gọi “kích thước của ….” (length of …) là câu lệnh/biến vì câu lệnh này không giúp nhân vật thực hiện gì cả. Nó chỉ trả về kết quả là một số và số này cần được nối vào câu lệnh khác để tạo thành một hành động hoàn thiện cho nhân vật. 

Bài 3: Đếm Số Phần Tử Là Số Chẵn, Số Lẻ Hoặc Chia Hết Cho Một Số Nào Đó Trong Dãy

Để kiểm tra xem một số (một phần tử) là sỗ chẵn (chia hết cho 2) hoặc số lẻ (số chia 2 dư 1) hoặc chia hết cho một số nào đó ta cần sử dụng phép toán mod

Phép mod có thể hiểu đơn giản là phép chia lấy dư. Ví dụ, 5 chia 2 bằng 2 dư 1. Khi đó ta sẽ viết là 5 mod 2 = 1. Phép toán này có nghĩa là 5 chia 2 dư 1. Trong phép toán mod, ta không quan tâm đến kết quả của phép chia mà chỉ quan tâm đến phần dư.

Như vậy:

  • Nếu số a chia hết cho 2 (số chẵn) thì a mod 2 = 0
  • Nếu a là số lẻ, thì a mod 2 = 1
  • Nếu a là một số chia hết cho 3 thì a mod 3 = 0

Dựa vào phép mod, ta có thể tìm được các số chẵn, số lẻ hoặc số chia hết cho một số nào đó trong dãy. Khi đó, ta có thể đếm trực tiếp các số thỏa mãn yêu cầu hoặc thêm các số thỏa mãn yêu cầu sang một dãy khác và đếm số phần tử của dãy mới.

Đếm số số chẵn, số số lẻ có trong dãy số

Đếm số chia hết cho 3 trong dãy số

Bài 4: Tính Tổng Các Số Trong Dãy

Chúng ta cần tạo một biến để lưu giá trị tổng của các số trong dãy. Ban đầu, hãy đặt tổng = 0. Sau đó tạo vòng lặp duyệt từng phần tử trong dãy. Đi đến phẩn tử nào của dãy thì cộng giá trị của phần tử đó vào biến tổng. Khi duyệt xong toàn bộ dãy, giá trị

Tính tổng tất cả các phần tử trong dãy

Bài 5: Tính Tổng Các Số Chẵn Trong Dãy

Bài tập này là sự kết hợp giữa bài 3 và bài 4 đã trình bày ở trên. Thay vì đi đến phẩn tử nào của dãy thì cộng giá trị của phần tử đó vào biến tổng, ta cần thêm một câu lệnh điều kiện để chỉ cộng những phần tử hợp lệ.

Nguồn: Nga Hoàng

Tìm hiểu về Danh Sách (List) Trong Scratch

List Là Gì?

List (Danh sách) có thể hiểu là một kiểu biến đặc biệt. Nó cho phép lưu nhiều biến khác bên trong nó.

List cấu thành bởi nhiều phần tử. Mối phần tử gồm 2 thành phần là “số thứ tự” và “giá trị” (tương tự như biến). Trong Scratch, số thứ tự của List được bắt đầu từ số 1.

Trong ví dụ về list trong ảnh phía trên, tao có 2 list, list có tên là “Danh sách toạ độ x” và “Danh sách toạ độ y” .

List “Danh sách toạ độ x” có 8 phần tử.  Các phần tử được đánh số thứ tự từ 1 cho đến 8.

  • Các số 1, 2, 3…8 là số thứ tự của phần tử hay tiếng anh là item number.
  • Các giá trị -210,-150… là giá trị của phần tử, hay tiếng anh là item.

Giá trị (item) của các phần tử trong list thì có thể trùng nhau. 

Tuy nhiên số thứ tự (item number) của phần tử là duy nhất. Chúng ta có thể dùng số thứ tự để ám chỉ giá trị của phần tử đó. Ví dụ mylist[6] có nghĩa là phần tử thứ 6 trong list “Danh sách toạ độ x” và nó có giá trị là “computer”. Sẽ chỉ có duy nhất một phần tử thứ 6, không thể có 2 phần tử có cùng số thứ tự là 6.

Cách Tạo List Trong Scratch

 

  • Bước 1: Chọn mục “Các biến số”
  • Bước 2: Click vào nút “Tạo một danh sách”
  • Bước 3: Điền tên của danh sách vào mục “Tên danh sách mới”
  • Bước 4: Chọn Cho tất cả nhân vật nếu muốn Danh sách này có thể được sử dụng bởi tất cả các nhân vật. Chọn Chỉ cho nhân vật này nếu muốn Danh sách này chỉ có thể được sử dụng bởi nhân vật hiện tại
  • Bước 5: Click “OK” để hoàn thành việc tạo Danh sách.

 

 

Tìm hiểu Clone trong Scratch

Clone Là Gì?

Clone có nghĩa là bản sao. húng ta cần một nhân vật chính. Nhân vật này sẽ được lập trình để tạo ra các bản sao. Tiếp theo, ta sẽ lập trình cho các bản sao hoạt động thay cho bản chính. Khi các bản sao đã hoàn thành nhiệm vụ, chúng ta sẽ xoá chúng đi. 

Khi Nào Thì Có Thể Sử Dụng Clone?

Khi chúng ta muốn nhiều nhân vật làm các hành động tương tự nhau thì ta có thể sử dụng Clone để tránh phải tạo nhiều nhân vật và lập trình lặp đi lặp lại.

Hướng Dẫn Lập Trình Để Bản Chính Sinh Ra Các Bản Sao

Trong bài viết này, Sprite sẽ được hiểu là bản chính. Clone là các bản sao mà Sprite (bản chính) sinh ra.

Câu lệnh “Tạo bản sao của bản thân tôi” thuộc mục Điều khiển sẽ giúp tạo một bản sao. Nếu chúng ta muốn tạo ra nhiều bản sao, hãy cho câu lệnh này vào bên trong một câu lệnh lặp. Các bạn có thể sử dụng Lặp lại … lần khi bạn biết chính xác số bản sao mà bạn muốn sinh ra. Nếu không rõ số lượng bản sao muốn sinh ra, hãy dùng vòng lặp Liên tục và kết hợp thêm câu lệnh Đợi để các bản sao không sinh ra quá nhanh.

Dưới đây là ví dụ phần lập trình cho sprite (bản chính) tạo ra các bản sao.

Hướng Dẫn Lập Trình Cho Bản Sao

Sự kiện duy nhất chúng ta có thể sử dụng cho bản sao là “Khi tôi bắt đầu là một bản sao”. Chỉ duy nhất những câu lệnh nối bên dưới Sự kiện này mới được áp dụng cho Bản sao. Tất cả các câu lệnh bên dưới các sự kiện khác sẽ được áp dụng cho bản chính.

Ngoại trừ sự khác biệt trong cách sử dụng câu lệnh Event, tất cả các câu lệnh khác đều có thể áp dụng cho bản sao. Bên dưới Event “Khi tôi bắt đầu là một bản sao” chúng ta có thể lập trình cho  sao chuyển động, kiểm tra chạm hoặc bất cứ việc gì chúng ta muốn. Những câu lệnh này sẽ được áp dụng cho toàn bộ các bản sao được sinh ra.

Có thể sử dụng nhiều event Khi tôi bắt đầu là một bản sao để nhiều đoạn chương trình dành cho bản sao chạy song song với nhau.

Sau khi clone (bản sao) thực hiện xong nhiệm vụ của mình, chúng ta cần xoá chúng đi. Câu lệnh Xoá bản sao này giúp xoá một bản sao. Trong một chương trình, nếu chúng ta sinh ra quá nhiều clone mà không xoá chúng đi (sau khi chúng đã hoàn thành nhiệm vụ) thì chương trình sẽ dễ bị lag do phải xử lý quá nhiều nhân vật.

Dưới đây là một ví dụ về phần lập trình cho bản sao. Mỗi khi bản sao được sinh ra, chúng sẽ lướt đi đến vị trí ngẫu nhiên trên sân khấu. Khi nào chạm cạnh sân khấu thì chúng sẽ bị xoá đi (biến mất).

Lưu Ý Khi Sử Dụng Clone

  • Chúng ta không lập trình cho bản chính hoạt động mà chỉ lập trình cho chúng sinh ra các bản sao. Vì vậy bản chính sẽ đứng yên trên sân khấu. Chúng ta có thể ẩn bản chính để không làm ảnh hưởng đến sự hoạt động của chương trình.
  • Khi ẩn bản chính, các bản sao cũng sẽ thừa kế tính chất này của bản chính. Vì vậy bản sao cũng bị ẩn. Để bản sao hiện, chúng ta cần thêm câu lệnh Hiện phía dưới event Khi tôi bắt đầu là 1 bản sao

TÌM HIỂU VỀ CLONE NÂNG CAO

Ở phần này, chúng ta sẽ sử dụng clone một cách cao cấp hơn. Đó là phân biệt các clone với nhau và lập trình hành động riêng biệt cho các clone khác nhau.

Sprite (nhân vật) sẽ được hiểu là bản chính. Clone là các bản sao mà Sprite (bản chính) sinh ra.

  • Bản chính thì có thể sử dụng mọi câu lệnh Event trong mục Event như thông thường. Bản chính thì sẽ sử dụng câu lệnh “Tạo bản sao của bản thân tôi” để tạo bản sao.
  • Các hành động của bản sao thì sẽ được lập trình bên dưới câu lệnh Event “Khi tôi bắt đầu là một bản sao”. Việc lập trình hành động cho bản sao thì có thể thực hiện tương tự như nhân vật bình thường
  • Sau khi bản sao hoàn thành nhiệm vụ, chúng ta cần xoá chúng đi. Lưu ý: không ẩn (hide) các bản sao đã hoàn thành nhiệm vụ. Khi chương trình có quá nhiều clone thì sẽ dẫn đến hiện tượng lag.

Có Thể Phân Biệt Các Bản Sao (Clone) Với Nhau Không?

Có! Chúng ta có thể dùng costume (hình dáng) khác nhau để phân biệt các bản sao với nhau. Do đó, chúng ta cũng có thể dựa vào hình dáng khác nhau của Clone để lập trình các hành động khác nhau cho Clone.

Chúng ta sẽ thực hiện một ví dụ nhỏ để làm rõ điều này. Chú mèo Scratch sẽ có 4 costume là 4 màu sắc khác nhau. Chúng ta sẽ lập trình để mèo Scratch tạo ra 4 clone và mỗi clone sử dụng một costume khác nhau

Trong đoạn chương trình trên, chú mèo Scratch lần lượt di chuyển ra từng vị trí, đổi costume rồi tạo clone. Sau đó lại tiếp tục lặp lại công việc di chuyển ra vị trí mới, đổi cosutme rồi tạo clone. Như vậy chú mèo đã tạo ra 4 clone với 4 costume khác nhau.

Lưu ý: Trên màn hình kết quả, chỉ là 4 clone do chú mèo vừa tạo ra. Bản chính đã bị ẩn

Cách Phân Biệt Các Clone (Bản Sao)

Chúng ta sẽ tạo ra một đoạn chương trình nữa. Đoạn chương trình này sẽ kiểm tra xem clone có đang được click vào hay không. Nếu nó đang được click vào thì chúng ta sẽ tiếp tục kiểm tra xem costume của nó là costume số mấy. Và sau đó clone sẽ nói ra màu tương ứng với màu da của nó.

Nếu các clone có màu khác nhau nói ra màu khác nhau thì có nghĩa là chúng ta có thể phân biệt các clone với nhau.

Tham khảo bài viết của Nga Hoàng.