Sách tự học lập trình - Công nghệ thông tin | Trường đại học Công Nghệ Sài Gòn

Sách tự học lập trình - Công nghệ thông tin | Trường đại học Công Nghệ Sài Gòn được sưu tầm và soạn thảo dưới dạng file PDF để gửi tới các bạn sinh viên cùng tham khảo, ôn tập đầy đủ kiến thức, chuẩn bị cho các buổi học thật tốt. Mời bạn đọc đón xem!

Bùi Vi t Hà
We support approaches to coding that engage young people in
thinking creatively, reasoning systematically, and working
collaboratively essential skills for everyone in today's society. --
Chúng tôi h m t công c l p trình m i giúp tr tr suy nghĩ
hợp lý hơn, hệ thng hơn, sáng tạo hơn, làm việc nhóm và rèn
luyn các k n thinăng cầ ết trong xã hi hôm nay.
Hà Ni 2016
2 | T h c l p t r ì n h S c r a t c h
Mc l c
Vì sao Scratch? ......................................................................................................................... 6
Mục đích ............................................................................................................................... 7
Bắt đầu .................................................................................................................................. 7
Ni dung bài h c .................................................................................................................. 7
Câu h i và bài t p ................................................................................................................. 7
M rng ................................................................................................................................ 7
CHƯƠNG 1: LÀM QUEN VỚI SCRATCH ........................................................................... 8
Bài 1. Tư duy máy tính là gì ..................................................................................................... 9
Mục đích ............................................................................................................................... 9
Bắt đầu .................................................................................................................................. 9
Ni dung bài h c ................................................................................................................ 10
Câu h i và bài t p ............................................................................................................... 14
M rng .............................................................................................................................. 15
Bài 2. Làm quen v i Scratch .................................................................................................. 17
Mục đích ............................................................................................................................. 17
Bắt đầu ................................................................................................................................ 17
Ni dung bài h c ................................................................................................................ 18
Câu h i và bài t p ............................................................................................................... 22
M rng .............................................................................................................................. 23
CHƯƠNG 2: BẮT ĐẦU LP TRÌNH SCRATCH .............................................................. 24
Bài 3. Chuy ng 1 ............................................................................................................. 25ển độ
Mục đích ............................................................................................................................. 25
Bắt đầu ................................................................................................................................ 25
Ni dung bài h c ................................................................................................................ 25
Câu h i và bài t p ............................................................................................................... 37
M rng .............................................................................................................................. 38
Bài 4. V hình 1 ...................................................................................................................... 39
Mục đích ............................................................................................................................. 39
Bắt đầu ................................................................................................................................ 39
Hoạt độ ng bài h c............................................................................................................... 39
Câu h i và bài t p ............................................................................................................... 48
M rng .............................................................................................................................. 49
Bài 5. Âm thanh 1................................................................................................................... 50
3 | T h c l p t r ì n h S c r a t c h
Mục đích ............................................................................................................................. 50
Bắt đầu ................................................................................................................................ 50
Ni dung bài h c ................................................................................................................ 50
Câu h i và bài t p .............................................................................................................. 57
M rng .............................................................................................................................. 58
Bài 6. Chuy ng 2 ............................................................................................................. 60ển độ
Mục đích ............................................................................................................................. 60
Bắt đầu ................................................................................................................................ 60
Ni dung bài h c ................................................................................................................ 60
Câu h i và bài t p ............................................................................................................... 66
M rng .............................................................................................................................. 67
Bài 7. V hình 2 ...................................................................................................................... 70
Mục đích ............................................................................................................................. 70
Bắt đầu ................................................................................................................................ 70
Ni dung bài h c ................................................................................................................ 71
Câu h i và bài t p ............................................................................................................... 76
M rng .............................................................................................................................. 76
Bài 8. Âm thanh 2................................................................................................................... 77
Mục đích ............................................................................................................................. 77
Bắt đầu ................................................................................................................................ 77
Ni dung bài h c ................................................................................................................ 77
Câu h i và bài t p .............................................................................................................. 87
M rng .............................................................................................................................. 88
CHƯƠNG 3: TÌM HIỂU SÂU HƠN SCRATCH ................................................................. 89
Bài 9. H i tho i ...................................................................................................................... 90
Mục đích ............................................................................................................................. 90
Bắt đầu ................................................................................................................................ 90
Ni dung bài h c ................................................................................................................ 91
Câu h i và bài t p ............................................................................................................... 98
M rng .............................................................................................................................. 98
Bài 10. H i và truyi tho n thông ........................................................................................ 100
Mục đích ........................................................................................................................... 100
Bắt đầu .............................................................................................................................. 100
Ni dung bài h c .............................................................................................................. 100
Câu h i và bài t p ............................................................................................................. 104
M rng ............................................................................................................................ 105
4 | T h c l p t r ì n h S c r a t c h
Bài 11. C n .................................................................................................................. 107m biế
Mục đích ........................................................................................................................... 107
Bắt đầu .............................................................................................................................. 107
Ni dung bài h c .............................................................................................................. 108
Câu h i và bài t p ............................................................................................................. 113
M rng ............................................................................................................................ 113
CHƯƠNG 4: SCRATCH NÂNG CAO ............................................................................... 115
Bài 12. X lý s 1 ................................................................................................................. 116
Mục đích ........................................................................................................................... 116
Bắt đầu .............................................................................................................................. 116
Ni dung bài h c .............................................................................................................. 116
Câu h i và bài t p ............................................................................................................. 123
M rng ............................................................................................................................ 123
Bài 13. X lý s 2 ................................................................................................................. 125
Mục đích ........................................................................................................................... 125
Bắt đầu .............................................................................................................................. 125
Ni dung bài h c .............................................................................................................. 125
Câu h i và bài t p ............................................................................................................. 129
M rng ............................................................................................................................ 129
Bài 14. X lí xâu ký t 1 ...................................................................................................... 130
Mục đích ........................................................................................................................... 130
Bắt đầu .............................................................................................................................. 130
Ni dung bài h c .............................................................................................................. 130
Câu h i và bài t p ............................................................................................................. 137
M rng ............................................................................................................................ 137
Bài 15. X lí xâu ký t 2 ...................................................................................................... 138
Mục đích ........................................................................................................................... 138
Bắt đầu .............................................................................................................................. 138
Ni dung bài h c .............................................................................................................. 138
Câu h i và bài t p ............................................................................................................. 143
M rng ............................................................................................................................ 144
Bài 16. Làm vi i List 1 .................................................................................................. 145c v
Mục đích ........................................................................................................................... 145
Bắt đầu .............................................................................................................................. 145
Ni dung bài h c .............................................................................................................. 145
Câu h i và bài t p ............................................................................................................. 155
5 | T h c l p t r ì n h S c r a t c h
M rng ............................................................................................................................ 156
Bài 17. Làm vi i List 2 .................................................................................................. 157c v
Mục đích ........................................................................................................................... 157
Bắt đầu .............................................................................................................................. 157
Ni dung bài h c .............................................................................................................. 157
Câu h i và bài t p ............................................................................................................. 170
M rng ............................................................................................................................ 170
Bài 18. Th t .................................................................................................................. 171 c 1
Mục đích ........................................................................................................................... 171
Bắt đầu .............................................................................................................................. 171
Ni dung bài h c .............................................................................................................. 171
Câu h i và bài t p ............................................................................................................. 181
M rng ............................................................................................................................ 182
Bài 19. Th t .................................................................................................................. 184 c 2
Mục đích ........................................................................................................................... 184
Bắt đầu .............................................................................................................................. 184
Ni dung bài h c .............................................................................................................. 185
Câu h i và bài t p ............................................................................................................. 199
M rng ............................................................................................................................ 199
Bài 20. Clone. Phân thân c a nhân v t ................................................................................. 202
Mục đích ........................................................................................................................... 202
Bắt đầu .............................................................................................................................. 202
Ni dung bài h c .............................................................................................................. 202
Câu h i và bài t p ............................................................................................................. 208
M rng ............................................................................................................................ 208
6 | T h c l p t r ì n h S c r a t c h
Vì sao Scratch?
Trên tay các b n là cu n sách ng, ngôn ng l p T h p trình Scratchc l , một môi trườ
trình "kéo th i v" rt mới đố i Vi t Nam. Vì sao m i c n h ng l p trình ọi ngườ ọc môi trườ
này? Vì sao Scratch l i thích h p cho l i thi u nhi, thi u niên và phù h p cho vi a tu ế ế ệc đưa
các ki c l c hến th p trình cho các b c này?
Môi trường và ngôn ng lp trình Scratch do nhóm nghiên cu Lifelong Kindegarden
Group thuộc đại h t lc MIT (Massachusetts Institute of Technology) thiế ập đầu năm 2008.
Ý tưởng ban đầ ới, đơn giảu ca nhóm ch là thiế t l p mt ngôn ng lp trình m n, ch dùng
kéo th , dành cho t l t hình, ng d n, kích tr con để thiế ập trò chơi, phim hoạ ụng đơn giả
thích s ng làm vi c nhóm c . sáng tạo trong môi trườ a tr
Tuy nhiên Scratch ch bùng n t qu thc s năm 2014 khi một s ốc gia như Anh, M đã
đổ i m i đột phá chương trình giảng dy môn Tin h i dung ki n ọc trong nhà trường, đưa nộ ế
thc Khoa học máy tính vào nhà trườ ững đềng ngay t cp Tiu hc. Mt trong nh ngh
quan tr ng nh l n, d ng t của các chương trình này là cần đưa các ngôn ngữ ập trình đơn giả
kéo th ng d y t ng ngay t u h c. Vi u ch nh như Scratch vào giả rong nhà trườ Ti ệc điề
chương trình môn Tin học này đã kéo theo sự gia tăng bùng nổ ca Scratch trên phm vi
toàn th i. S t biế gi lượng học sinh đăng ký tham gia trang Scratch tăng độ ến c v s lượng
và ch ng. Th ng minh tính h p d n c ng l p trình kéo th ất lượ c tế đã ch ủa các môi trườ như
Scratch, s p trình c nh . Scratch vô cùng thích h p cho tr l i t n đam mê lậ a tr a tu 6 đế
14, t p Ti u h c, THCS c t Nam. Chính vì v i mc là các c a Vi ậy trong Chương trình đổ i
giáo d a Vi t Nam sau 2018, B Giáo d i dung c c ục & Đào tạo cũng đã quyết định đưa nộ
kiến th c Khoa h c máy tính trong môn Tin h c p Ti u h c, và nh ng ngôn c vào ngay t
ng l p trình kéo th là m n t ng và h c sinh. như Scratch sẽ t la ch ốt cho các nhà trườ
Scratch là gì?
Tóm t t m l ột vài ý để tr i cho câu h i: vy Scratch là gì?
- ng l p trình ng d nh s Scratch là 1 môi trườ ụng đặc biệt, trong đó việc “viết” lệ được thc
hin b ằng thao tác “kéo thả”.
- u ra c a Scratch h các công ngh ng d ng m t c a CNTT-ICT, do v y các Đầ tr i nh
ng dng ca Scratch rt phong phú, h p dn, nht là tr nh.
- Scratch có s phát tri n bùng n l c bi t là sau khi m qu c gia có 2 năm trở ại đây. Đặ t s
tim l thu t m nh trên th gi ng dc khoa hc k ế ới đã quyế nh đưa Scratch vào giảt đi y
trong nhà trường cho hc sinh t cp Tiu hc.
- Scratch hoàn toàn mi n phí và có th chia s r ng rãi trong c ng. ộng đồ
- Scratch r t thích h t o ra các ng d h a, animation, bài h ng, mô ợp để ụng đồ c, bài gi
phng ki n th trình di n t t phù hế c, ễn, sách điệ ử, trò chơi, … rấ p v ng, giáo viên, ới nhà trườ
hc sinh.
- ng t d y h c sinh làm quen vScratch là môi trườ t nhất để ới tư duy máy tính, khoa học
máy tính ngay t l u h c. a tui ti
Nội dung, đối tượng cun sách
7 | T h c l p t r ì n h S c r a t c h
Cun sách s bao quát t chính c ng l p trình Scratch bao g m: t c các ch đề ủa môi trườ
chuyển động, đồ ha, âm thanh, hi thoi, cm biến, biến nh, x s - xâu ký t - mng
s, th t ng c a sách có th ng, hục và clone. Đối tượ là giáo viên tin học, giáo viên thườ c
sinh tt c các c p t u h c, THCS, THPT. Ti
V ng n i dung c n sách này s là m t trung dung gi ng d ng thu n túy định hướ a cu a
thc t c ế và ki n th c hàn lâm c a khoa hế ọc máy tính. Chúng tôi không đi quá sâu vào họ
thut s gây nhàm chán, khó hi u v u vào các i học sinh, nhưng cũng không sa đà quá nhi
k năng thiết kế trò chơi, phim hoạt hình, …
Ni dung sách s c chia thành nhi u bài h . M i bài h u có chung 1 c u trúc đượ c nh ọc đề
nhất định. Người hc có th t h c, th c ho c h ực hành dưới s hướng d n c a giáo viên.
Cu trúc 1 bài h c s thng nh bao g m các ph n sau. t s
Mục đích
Gii thiu ng n m ục đích, yêu cầ ần đạ ức và năng lựu c t v kiến th c của ngưi hc.
Bắt đầu
Phn m u c a m i bài h ng b u b ng nh ng câu h liên quan đầ c s thườ ắt đầ i, đặt vấn đề
đế n bài h n bọc để người đọc suy nghĩ và chuẩ ị, trước khi bư c vào phn chính thc. Mô
hình c n kh y ngu n c ng ca ph ởi động này chính là khơi dậ m h ủa người học, giúp người
hc s luôn ch ng trong quá trình hđộ c tp và luy n t p.
Ni dung bài h c
Ni dung i bài h i nghichính ca m c s c tr bao g m m t dãy các ho ng ho ạt độ m dành
cho ngư c, đi học. Người hc có th t h c ho ng dặc làm theo hướ n của giáo viên để thc
hin các ho ng này. Các hoạt độ ạt động s d n d n d n d c khám phá và t ng ắt người h
bước nm bt kiến thc, dựa trên đó sẽ c theo yêu chình thành năng lự u ca bài hc.
Câu h i và bài t p
Các bài t p, bài luy n tr m ho ng c ki n th c nghi c lập trình giúp người hc c ế c đã được
hc và rèn luy các bài tn k y thu i quy t v năng lập trình, tư du t toán và gi ế ấn đề. Đa số p
là đơn giản. Các bài tp khó s có kèm thêm du *.
M rng
Đây là phầ có ý nghĩa vậ ệm dành cho ngườn thc s n dng, m rng, tìm tòi tri nghi i hc.
Đa số , bài tcác vấn đề p trong phn này là nhng bài khó, yêu cầu người h c phải suy nghĩ,
th nghi m, th c hành nhi i h c t các bài toán, v ều hơn. Nếu ngườ ọc làm đượ t c ấn đề được
đặt ra trong phn này thì chng t đã xuất sc hoàn thành mc tiêu, m c đích của bài h c.
8 | T h c l p t r ì n h S c r a t c h
CHƯƠNG 1: LÀM QUEN VỚI SCRATCH
9 | T h c l p t r ì n h S c r a t c h
Bài 1. Tư duy máy tính là gì
Mục đích
Hc xong bài này, b n có th :
- gi i quy t 1 v , máy tính s nào. Hiểu được: để ế ấn đề "tư duy", "suy nghĩ" như thế
- gi i quy c th nào, thông qua Biết được để ết 1 bài toán trên máy tính cần đượ c hiện như thế
các ví d minh ha c th.
Bắt đầu
1. Hàng ngày chúng ta v u ẫn được nghe, xem, quan sát các chương trình máy tính được điề
khin b i. Hãy k y mà em bi ởi con ngườ ra 1 vài chương trình như vậ ết?
Gi ý:
- Dây chuy n t ng l p ráp máy tính. độ
- Máy tính b ng tính toán các phép tính. túi t độ
- Các trò chơi trên máy tính.
2. Em đã nghe đượ "tuy duy máy tính" hay "máy tính nghĩ" đâu chưa? Hãy nêu ra c cm t
1 vài ngu n thông tin mà em bi t. Ti ng Anh c m t này là "Computer thinking". Em hi u ế ế
thế nào v c m t này?
3. Quan sát Robot Asimo Nh n. t b
hoc xem video:
Em hãy tr l i các câu h i sau:
- Robot này có suy nghĩ giống ngưi không?
- c chRobot th t hoạt động như 1 máy tính, vậy máy tính có suy nghĩ không? Máy tính có
tư duy không?
4. Em hãy quan sát k t qu cế ủa 1 chương trình máy tính đơn giản bng cách m và chy
chương trình Start.Meo chay.sb2.
- chuyMô t ển độ ủa con mèo. Mèo đã thựng c c hin các công vic gì, theo th t các bước
như thế nào?
- v i hình sau: So sánh điều em đã mô tả
https://youtu.be/NZngYDDDfW4
10 | T h c l p t r ì n h S c r a t c h
- Em có rút t lu n gì không? ra được kế
5. Câu h i cho t t c :
- Máy tính s c hi c lên k tư duy như thế nào để th ện các chương trình, công việc đượ ế
hoạch trước?
- Máy tính suy nghĩ và thự ệc như thếc hin công vi nào?
- i máy tính? Vai trò của con người như thế nào đi v
Ni dung bài h c
1. trên bàn c vuông Quân c
Em hãy nhìn lên bàn c ô vuông sau. các quân c trên bàn c này m n ch c sang i l đi đượ
ô bên c nh theo hàng ngang ho c hàng d c. Câu h i: quân c màu xanh c n ph ải đi bao
nhiêu bước và đi như thế nào để đến đư c v trí quân c màu đỏ?
Tr l ời: Đi bằng 6 bước và có th đi theo nhiều cách để đến đích.
Trên thc t c hiế t t c các bài toán c n gi i, các v c n gi i quy c th ấn đề ết cũng phải đượ n
theo từng bước.
Ghi nh: máy tính th c hi n công vi c theo t ừng bước.
T v màu trí quân c
xanh đế trí màu đỏn v
nhiều cách đi khác nhau,
nhưng cần ch ra các cách
đi với ít bước nht.
11 | T h c l p t r ì n h S c r a t c h
Em có th tìm được r c git nhi u các ví d khác v vi i quyết vấn đề theo các bước trên
th th thc t c cế. Hãy cùng xem các ví d sau, em c n li ệt kê các bướ để c hin các công
việc đó.
- ng, em ph ng, ph nào, hãy li t kê lHàng ngày đi từ nhà đến trườ ải đi qua các đườ ần lượt
các đườ đó.ng, ph
- n vi Các bước để thc hi c nấu cơm.
- bài toán khai tri n 1 s thành tích các s nguyên t , Giải 1 bài toán theo các bưc, ví d
bài toán gi t, bài toán ch ng minh m ng th ng th ải phương trình bậc nh ột đẳ c, b t đ c.
2. Quét nhà
Em quan sát căn phòng. Nhiệm v ca em là c n góc nhà, v trí có ần quét rác và đưa rác đế
thùng rác. Em ch được dùng ch ng ngang và d c theo các lổi quét theo các hướ ối đi trong
phòng.
Hình ảnh dưới đây chỉ ra các công vic ph c hii th ện đồng thi là th t của chúng để hoàn
thành công việc được giao trên.
Sơ đồ thc hin là: 1 - 2 - 3 - 4 - 5.
1
2
4
5
Thùng rác
Cái ch i
12 | T h c l p t r ì n h S c r a t c h
Các em quan sát và tr l i các câu h i sau:
- Nếu thay đổ các bưi th t c là: 3 - 1 - 2 - - 5 thì công vi4 c có hoàn thành không?
- N u ch -2 thành: 2 - 1 - 3 - 4 - 5 thì k t qu công vi ế thay đổi bước 1 ế c ra sao?
- c 4, 5 có th c không? Các bướ đổi ch cho nhau đượ
Kết lun
- ng gi i quy t các bài toán th Thông thường người ta thườ ế c tế thông qua các bước.
- t c là quan tr hoàn thành nhi m v . Th các bướ ọng để
3. Quan sát m mô ph ột chương trình máy tính ng gii quyết vấn đề
Có rt nhi m ho t vu ph n m ặc trò chơi mô phỏng gi i quy ế ấn đề thông qua các bước.
- i ti ng m t th Trò chơi Pacman nổ ế i.
- n m Socoban Ph m trò chơi xếp đồ
- n tho i Tìm đường trên điệ
Trong trò chơi này, Pacman là
người đào vàng sẽ có nhim
v tìm vàng dc theo các con
đường trong 1 mê cung. Tuy
nhiên trên đường đi thường
xut hin các con qu s tìm
cách giết hại người đào vàng.
Người đào vàng phải có
nhim v tránh các con qu
đồng th c càng ời đào đượ
nhiu vàng càng t t.
Mt bác công nhân có nhim
v chuy n các thùng trong
vườn đế trí đã đượn v c đặt
trước. Mi ln bác công nhân
ch có th đẩy được 1 thùng đi
1 bướ ờng đi trong vườc. Đư n
rt khó vì có nhiu b ng ức tườ
và nhi u thùng. Bác công nhân
phải tìm ra được 1 cách dch
chuyn t hoàn ối ưu nhất để
thành nhi m v .
13 | T h c l p t r ì n h S c r a t c h
Các em có th tìm hi u ví d khác n ểu và đưa ra nhiề a.
Theo em có nh m gì chung v i các ví d ững điể trên?
4. Máy tính "nghĩ" như thế nào?
Em hãy quan sát sơ đồ hay đượ sau c mô phng cho các công vic x lý trên máy tính.
Input (đầu vào):
Đầu vào được hiu là:
- Bài toán hay v c n gi i quy ấn đề ết.
- Các thông s , d u c a bài toán. liệu ban đầ
B x lý:
Là chương trình máy tính, phần mm hoc thiết b vi x lý bt k có chức năng tiếp nhn
đầu vào, sau đó tiến hành gii quyếy bài toán.
Output (đầu ra):
Kết qu c a bài toán, v hi n u ra. ấn đề được th đầ
Ví d bài toán tìm đường đi tối ưu.
Bài toán tìm đường đi (tối ưu)
gia hai v trí trong thành ph .
Cho trướ c hai v trí Đu và Cui,
máy tính s ph a trên b i d ản đồ
giao thông thành ph tìm ra để
được 1 cách đi với khong cách
hoc thi gian t ối ưu nhất.
Trên màn hình máy tính s hi n
đường đi tối ưu đó với các thông
tin có liên quan.
B x
Input
Output
14 | T h c l p t r ì n h S c r a t c h
Input (đầu vào)
X
Output (đầu ra)
- V u và Cu trí 2 điểm Đầ i.
- B ng giao thông ản đồ đườ
thành ph.
- nh khác v giao Các qui đị
thông, các tuyến đường 1
chiều, ….
Thc hiện tìm đường đi tối
ưu từ ầu đế v trí Đ n v trí
Cui.
Máy tính th n bài toán c hi
theo 1 qui trình đã được con
ngườ i xác đ nh (lp trình)
trước th c cheo các bướ t
ch, t m tìm ra ối ưu, bảo đả
được kết qu.
Th hi n trên màn hình
đường đi tối ưu này.
Như vậy "tư duy của máy tính" thc ch t là vi c con người cung cp cho máy tính các d
liệu đầ ấn đề thông qua các chương trình, cáu vào và cách x lý v c bước, hay các lnh mt
cách tu c bài toán, vn t , ch m b o gi i quy t chẽ, đả ết đượ ấn đề được đặt ra.
5. Con ngườ ng máy tính để gì và như thếi s d gii quyết vấn đề nào?
Trên thc tế i s d i quy t các bài toán mà n u không có máy con ngườ ụng máy tính để gi ế ế
tính s t. r t khó gi i quy ế
Qui trình con người s d giụng máy tính để i quyết vấn đề ờng theo các bước như sau: thư
- nh bài toán, v c n gi i quy t (ví d Xác đị ấn đề ế ụ: bài toán tìm đường đi trên bản đồ).
- nh các d u (v u và Cu ng Xác đị liệu đầu vào ban đầ trí 2 điểm Đầ i, bản đồ giao thông đườ
phố, …).
- Xây d m các l nh, ựng chương trình để đưa vào máy tính xử lý (lập chương trình bao gồ
đưa vào máy tính để x lý).
- Máy tính ch , th hi u ra trên màn hình ạy theo chương trình đã nạp và đưa ra kết qu ện là đ
máy tính.
Câu h i và bài t p
1. Em hãy li n 1 s công vi c hàng ngày t kê các bước đ thc hi nhà em (như thổi cơm,
quét nhà, gi t quần áo, ….).
2. Em hãy ch m mô ph ng gi i quy . ra thêm các trò chơi và phần m ết vấn đề
3. Cách gi i quy t bài toán ế sau là đúng hay sai?
Bài toán: cho trướ
c 3 s a, b, c, tính tng a + b + c n
2 2 2
ếu biế t r ng mỗi bưc ch được phép
thc hin 1 phép toán 2 s .
Input: a, b, c.
X lý theo các bước sau:
B1. Tính a
2
+ b
2
B2. Tính c
2
B3. Ly k t qu B1 c ng v i B2. ế
Output: in ra kết qu .
15 | T h c l p t r ì n h S c r a t c h
4. Cho trướ ện 1 trong các điềc s t nhiên N (N>1). Mỗi bước em ch có th thc hi u sau:
- Giảm N đi 1.
- u N là ch n. Chia đôi N nế
Gi s cho N = 100. H i em có th n nhanh nh thc hi ất là bao nhiêu bước để thu được s
1.
5. Em hãy tìm 1 đườ g đi từ trí A đến v n v trí B.
M rng
S d ng cách mô t trên, em hãy vi x i 1 mô hình x lý vấn đề ết và trình bày sơ đồ lý v
s bài toán sau (vi t và mô t Input, Output và Bế x lý).
1. Đầ a, b, c, đầ nhưng đã đượ tăng u vào là 3 s bt k u ra là các s này c sp xếp theo th t
dn. Ví d đầu vào là 5, - u ra c a bài toán ph i là -1, 3, 5. Bi ng m 1, 3 thì đầ ết r ỗi bước ch
cho phép th c có thc hi i ch 2 s c nh nhau hoện đổ so sánh 2 s b ki t k để m tra xem
s nào l nào nhớn hơn, số hơn.
2. Bài toán tính t ng c b c a, b, c n u bi ng m cho phép a 3 s t k cho trướ ế ết r i bước ch
thc hi c ln: l y t ng 2 s u c a 1 s dương, đổi d (t âm thành dương và ngượ i), ki m tra
2 s xem s nào l y 1 hi u c a 1 s ớn hơn, hoặc l dương lớn hơn trừ đi 1 s dương nhỏ hơn.
3. Gi i bài toán chuy Socoban sau. ển đồ
A
B
16 | T h c l p t r ì n h S c r a t c h
17 | T h c l p t r ì n h S c r a t c h
Bài 2. Làm quen v i Scratch
Mục đích
Hc xong bài này, b n s bi ết:
- Làm quen và bi ng ng d ng m p trình kéo th . ết 1 môi trườ i: l
- L p trình t u khi n máy tính ho ng t nh tu n t . ức là đi ạt độ heo các bước, các l
- c qui trình ho n c ng Sratch. Hiếu đượ ạt động cơ bả ủa 1 chương trình trong môi trườ
Bắt đầu
Trong bài trước các em đã đượ ệm "tư duy máy tính", tức làm quen vi khái ni c là cách mà
máy tính có th c", "hành ng" theo s u khi n c i. Bây "nghĩ" và "làm việ độ điề ủa con ngườ
gi chúng ta s làm quen v i m ng c a máy tính. Chúng ta t trong những hành độ th đó củ
s được làm quen vi một môi trường giao tiếp mi để con người có th điều khi n máy tính
có th c", ng Scratch. "suy nghĩ" và "làm việ đó là môi trườ
1. Em hãy quan sát 1 chương trình chạy trên môi trường Scratch và đưa ra các nhn xét ca
mình. Chương trình được ghi trong tp . Start.Dance.sb2
Các g i ý:
- Để chạy chương trình, em nháy lên hình lá c màu xanh phía trên ca s chính. Em có
nhn xét gì v ho ng c u bé trên màn hình? ạt đ a c
- d phía trên (c nh hình lá c Để ừng chương trình em bấm nút tròn màu đỏ ).
- n các ho ng c u bé, âm thanh tr ng và quan sát n n sân kh u. Em hãy chú đế ạt độ a c
2. Em m t p , ch n xét c a em v ng Start.Color.sb2 y chương trình và viết l i nh hoạt độ
ca nhân vt.
18 | T h c l p t r ì n h S c r a t c h
Gi ý:
- i màu s c bên ngoài c a con mèo. Quan sát s thay đổ
- Em có th gi i thích vì sao mèo l i màu c a mình không? ại thay đổ a b lông c
Ni dung bài h c
1. Làm quen v i giao di n Scratch
Scratch là môi trường mà em s được hc trong môn hc này. Các em hãy quan sát giao
din chính c a Scratch:
Thực đơn
Sân kh u
Ca s l nh
Khu v c t o
nhân v t
Thanh công
c nhanh
Nút tr
giúp nhanh
Nút tr
giúp
Nhân v t
Khung điều
khin
Khu vc to
sân khu,
nn
19 | T h c l p t r ì n h S c r a t c h
Chúng ta cùng tìm hiu nhanh các v trí quan tr ng trong giao di n Scratch.
Sân khu
Sân kh u là c hi n chính c a ph m. Khi ph n m y chúng ta quan sát a s th n m m ch
phn m m thông qua sân kh u di n ca nh c, xem phim, ấu, tương tự như khi chúng ta xem biể
xem Tivi.
Nhân vt
Nhân vt xu n trên sân kh ng chính c a các ho ng. Có th có nhi u t hi ấu, là đối tư ạt độ
nhân v ng v ng lo i. Khi l u tiên ch y Scratch, nhân vật, đa dạ kích thước và ch ần đầ t
chính là 1 chú mèo xinh xn.
Ca s l nh
Ca s a s l nh ch a các "l u khi n ho ng c a nhân v t. M i nhân v t có 1 c ệnh" đ điề ạt độ
lnh riêng. Trong c y không c n ph i vi nh mà cha s ết l c n kéo th nh t khung các l
điều khin bên cnh sang. Vì v ng lậy Scratch được gi là môi trườ p trình kéo th.
Khung điều khin
Là nơi chứ ụ" dùng để ạo ra chương trình. Tạa các "công c t i khung này cha các mu lnh,
người lp trình s dng các công c này để ết chương trình củ vi a mình.
Khung điều khi n này s có 3 TAB thông tin: Script (Lnh) , (Trang Costume (Backdrop)
phc / Nn sân kh u) và (Âm thanh). Sound
Các l i nhóm bao g m các l n ệnh trong Scratch được chia thành nhóm, m ệnh có ý nghĩa gầ
tương tự ệnh như vậ nhau và th hin bng 1 màu c th. Có 10 nhóm các l y trong Scratch.
Khi nháy lên 1 nhóm, khung phía dưi s xut hin các lnh ca nhóm này.
Thực đơn
Thực đơn chứa các lnh chính ca Scratch.
Thanh công c nhanh
Nhóm đang hoạt động hin
Các bi u t ng và tên nhóm ượ
Các l nh c c a nhóm hi n th th i. S
dng các lnh này b ng cách kéo th sang
ca s lnh bên cnh.
20 | T h c l p t r ì n h S c r a t c h
Thanh công c nhanh ch l nh làm vi i nhân v t và các l nh. a mt s c nhanh v
Nút tr giúp nhanh
Nút này có ý nghĩa như như: nháy chuột lên nút, sau đó nháy chuột lên 1 lnh bt k s hin
th ni dung mô t ca lnh này.
Nút tr giúp
Nháy nút này để hin các tr giúp nhanh ca phn mm.
Khu vc to nhân v t
Ti khu v t, chc này em có th thc hiện các thao tác như tạo thêm nhân v nh s a ngo i
hình nhân v i trang ph c), b ật (thay đổ sung âm thanh, ….
Khu vc to sân kh u, n n
Ti khu vc này em có th thc hin các thao tác v i sân kh u, t ấu như trang trí sân khấ o
thêm các c nh sân kh u khác, t o âm thanh n n cho sân kh u.
2. Điều khin nhân vt bng các lnh
Các em hãy th hi u khi n ho ng c a nhân vc hiện các bước sau để ểu cách điề ạt độ t con
mèo.
(i) Nháy nút , nháy lên nhóm l nh (màu tím) Scripts Look
(ii) Kéo th l nh t u khi khung điề ển phia dưi sang ca s
bên ph "Hello!" thành "Xin chào". ải, sau đó sửa ch
(iii) Nháy lên nút nhóm Motion (màu xanh th m)
(iv) Kéo th l nh t u khi ng c bên ph i, khung điề ển phia dưi sa a s
sau đó sửa s 10 thành 100.
(v) Dùng chut kéo 2 lệnh trên sát vào nhau như hình dưới đây, ta thu đư ạn chương c 1 đo
trình gm 2 l nh.
Kéo th
Nháy chut ti
đây để chy
đoạn chương
trình này
Đoạn chương trình
= Dãy các l nh
21 | T h c l p t r ì n h S c r a t c h
Bây gi để chy đoạn chương trình này em hãy nháy chuộ ủa đoạt lên v trí bt k c n
chương trình trên, và quan sát xem con mèo thay đổi như thế nào.
Các em s y gì? th
Nếu bây gi em tách 2 l nh trên r y th em th i ra và ch ấy có gì thay đổi?
3. B n "B ắt đầu 1 chương trình đơn giản bng s ki ắt đầu chương trình"
Bây gi chúng ta s ng nhau hoàn thi ện đoạn chương trình trên thành một chương trình
hoàn ch nh.
Chn nút nhóm l nh có ch ki n), kéo th l nh sau sang c l nh chính. Events (s a s
Sau đó em điề nh để ạn chương trình gồu ch có 1 đo m 3 lnh sau.
Bây gi nh trên Scratch. Em có th phóng to c chúng ta đã có 1 chương trình hoàn chỉ a s
chy c nh ch y b ng cách nháy bi ng lá c xanh. Khi ủa chương trình và thực hiên l ểu tượ
chạy chương trình, nhân vậ nói "Xin chào" trong 2 giây, sau đó sẽt ca chúng ta s chuyn
động v phía trước 100 bước.
Chương trình trên có thể ểu như sau: viế t l i dưới dng các dòng ch tiếng Vit cho d hi
Nế ế u nháy vào lá cờ xanh (n u s ki n này x y ra)
Thể hi n dòng ch "Xin chào" trong 2 giây.
Chạy v c. phía trước 100 bướ
Cách vi c dùng trong tin h p các v , bài toán và viết như trên thường đượ c, khi thiết l ấn đề ết
các bước thc hiện để gii quyết trên máy tính.
Môt vài kết lu u. ận ban đầ
- Các nhân v u khi n b ng các l nh trong c l nh. t có th điề a s
- L nh có th c kéo th t khung các m u l nh, không ph ng l nh trên màn hình. đượ i vi t tế
Lệnh điều khin s kin khi nháy lên lá
c xanh s chạy đoạn chương trình dưới
Nhân vt nói "Xin chào" trong 2 giây.
Nhân vt ch y v c (pixel). phía trước 100 bướ
2 l nh này s c th đượ c
hi kin nếu s n trên xy
22 | T h c l p t r ì n h S c r a t c h
- Nhóm các l nh g n li n nhau t y các l nh s l ạo thành 1 đoạn chương trình. Khi chạ ần lượt
chy t trên xuống dưới.
- hoàn thi nh, c nh s ki u cĐể ện 1 chương trình hoàn chỉ ần đưa lệ n lên đầ a
đoạn chương trình.
- Để chạy chương trình nháy lên nút có hình lá c xanh. Nháy nút tròn đỏ ừng chương s d
trình đang chạy.
- phóng to c y b ng cách nháy vào nút góc trái trên màn hình. Có th a s ch
6. Phân lo i các nhóm l n nhân v t ệnh điều khi
Em hãy quan sát vào khu v u khi n các l nh c a Scratch. Toàn b h ng l nh ực khung điề th
được chia làm bao nhiêu nhóm? Mỗi nhóm có tên là gì và đặc trưng bi màu sc gì?
Em hãy nhìn vào sơ đồ sau để thy toàn b các nhóm lnh trong Scratch.
- Hãy li t kê các nhóm l nh c a Scratch, màu s hi n c c th ủa nhóm và nêu nhanh ý nghĩa
các nhóm này.
- V ng l p trình kéo th Scratch chúng ta không c n h c thu chi ới môi trườ c lòng và nh
tiết tng l nh. Ch c n hi nh, cách s d ng và kéo th chúng sang c l nh là ểu ý nghĩa lệ a s
ng được.
Câu h i và bài t p
1. Trong ví d trên, n t 2 l ếu em đặ ệnh tách ra như hình sau:
thì em có th y 2 l ch ệnh trên như 1 chương trình không?
Nhóm l nh chuy n
độ
Nhóm l nh th
hi
Nhóm l nh âm thanh
Nhóm l nh s ki n
Nhóm l u khi n ệnh điề
Nhóm l nh c m bi n ế
Nhóm l nh bút v
Nhóm l nh tính toán
Nhóm l nh d u li
Nhóm l nh m
23 | T h c l p t r ì n h S c r a t c h
Kết lu i rn: các l nh r c nhau không tạo thành 1 chương trình hoàn chỉnh. Các lnh cn kết
ni vi nhau.
2. Nút n góc ph l m ải dưới ca c a s ệnh có ý nghĩa gì? Hãy thao tác và trả
li câu hi trên.
3. Hai nút nh này n m trên thanh công c nhanh phía trên màn hình có tác d ng gì?
Để hiu em hãy thc hin thao tác sau:
- Nháy chu t lên 1 trong 2 nút trên.
- u l n lên nhân v Sau đó em nháy chuột nhi t.
- Em thấy điề đó suy ra ý nghĩa củu gì xy ra? T a 2 nút trên.
4. Để ột chương trình mớ to m i, em thc hin lnh File / New.
Em hãy t i và t n sau v i nhân v t chính ạo 1 chương trình mớ ạo 1 đoạn chương trình đơn giả
con mèo.
Chạy chương trình và quan sát xem con mèo thự ững hành độc hin nh ng gì.
5. Để ại chương trình đang làm việ ệp chương trình ghi l c, em thc hin lnh File / Save. T
Scratch c n có ph n m r ng là *.sb ho c *.sb2
M rng
Em hãy tìm hi u các l nh trong nhóm chuy ng (motion) và vi ển độ ết 1 chương trình hoàn
chỉnh điề ển độu khin nhân vt ca em chuy ng trên màn hình.
24 | T h c l p t r ì n h S c r a t c h
CHƯƠNG 2: ẮT ĐẦB U LẬP TRÌNH
SCRATCH
25 | T h c l p t r ì n h S c r a t c h
Bài 3. Chuy ng 1 ển độ
Mục đích
Hc xong bài này, b n có th :
- u khi n nhân v t di chuy n trên màn hình (sân kh u) b ng dãy l n. Điề ệnh đơn giả
- p trang ph hi n bên ngoài, qu n áo) cho nhân v Thiết l c (costume, th t.
- Thay đổi nn sân khu, màn hình.
Bắt đầu
Em hãy m , quan sát và ch chương trình moving 1.khoidong.sb2 ạy chương trình.
a) em hãy mô t nh ng gì x y ra trên màn hình.
b) theo em các l t (con cánh cam) chuy ng? ệnh nào đã làm cho nhân vậ ển độ
A. Lnh ?
B. Lnh ?
C. Lnh ?
Em có nhn xét gì v màu s a các l nh làm nhân v t chuy ng? c c ển độ
Ni dung bài h c
1. Cùng quan sát nhóm l nh Motion
Em hãy quan sát nhóm các l nh trong nhóm chuy ng (motion) c a Scratch. ển độ
26 | T h c l p t r ì n h S c r a t c h
Em có nhn xét gì v các l nh này?
- T nh trong nhóm Chuy u có cùng màu xanh. t c các l ển động đề
- Các l nh này có cùng ch u khi n ho ng c t trên màn hình. ức năng điề ạt độ a các nhân v
2. T nhân v c sân kh u ọa độ ật và kích thướ
Để điề có th u khin chuy ng nhân vển độ t d dàng chúng ta cn tìm hiu thêm thông tin v
sân khấu mà trên đó các nhân vật đóng vai chính.
Kích thước sân kh u
Sân kh u nh t 480 x 360. Chi m / pixel), luôn có kích thước hình ch ều ngang = 480 (điể
chiều cao = 360 (điểm / pixel).
Tâm c a sân kh u chính là tâm c a h màn hình. trc tọa độ
Mi v trí trên sân kh u s u b i 2 s , 2 t (x, y). được đánh dấ ọa độ đây:
x = kho ng cách t v n tr ng (tr c Y); y = kho ng cách t v trí này trí này đế ục đứ c tung, tr
đế n tr c ngang (trc hoành, trc X).
Cp s i là t c a v (x, y) được g ọa độ trí, điểm đã cho.
Giá tr t x ch y t - n 240. a đ 240 đế
Giá tr t y ch y t - n 180. a đ 180 đế
Em hãy xác định trên sân khu các v trí có tọa độ sau:
(0, 0); (10, -10); (100, 100).
T a đ c m trên mủa điể t
phng có trc t a đ cách
tính tọa độ.
Điểm A trên hình có tọa độ
x=4 theo tr c hoành (ngang)
và y=3 theo tr c tung (ngang).
27 | T h c l p t r ì n h S c r a t c h
Mô hình tọa độ và kích thước sân khu c a Scratch.
Tọa độ ca nhân vt
Khi nhân vt chuy nh nhân v t này b ng t cển động trên màn hình, chúng ta xác đị a đ a
chúng. T a nhân vọa độ ọa độ ca nhân vật được tính là t của điểm chính tâm c t. Ví d
điểm tính t a đ c ủa con mèo như hình dưới đây.
Em hãy kéo th l nh sau và ki m tra xem nhân v a chúng ta chuy ng ần lượt các l t c ển độ
như thế nào. Viết mô t sang ct bên cnh.
Biế t được kích thưc, t a đ sân kh u chúng ta có th u khi n nhân v t chuy n điề ển động đế
bt c v trí nào chúng ta mu n.
2. Hướng chuyển động ca nhân vt
V trí này s nh t c xác đị a đ a
nhân v t con mèo.
28 | T h c l p t r ì n h S c r a t c h
Khi chuy ng b nh , nhân v t bao gi n theo 1 ển độ i l cũng di chuyể
hướ ng nhất định. Trong Scratch, các hướng được qui đ nh b i 1 s đo góc, như chỉ ra theo
sơ đồ sau.
Giá tr
góc c ng tính t -180 n 180 . ủa hướ
o
đế
o
Lnh t quay theo chi ng h 1 góc cho cho phép nhân v ều kim đồ
trước (ví d theo hình 15 độ nh).
Lnh t quay theo chi ng h 1 góc cho phép nhân v ều ngược kim đồ
cho trước (ví d 15 độ theo hình nh).
Khi 1 nhân vt m o, nhân v ng m ng i đư c khi t ật này luôn hướng theo hướ ặc định là hư
ph
i (right, 90
o
).
Hãy cho bi ng các nhân v t ết hướ này là hướng nào?
right
left
up
down
Mặc định nhân
vật có hướng
right (90
o
)
Nhân vật đang
xoay theo hướng
down (180 -
o
/
Nhân vật đang
xoay theo hướng
left (-90 )
o
Nhân vật đang
xoay the ng o hướ
up (0 )
o
29 | T h c l p t r ì n h S c r a t c h
3. Hãy cho nhân v t chuy n trên sân kh u ển động đơn giả
Bây gi các em hãy cùng th u khi n các nhân v c hiện các chương trình đơn giản điề t
chuyển động trên màn hình.
1. Thi t qu n. ết lập 2 chương trình sau và quan sát kế thc hi
Nhn xét:
- K c hi t chuy ng theo 1 hình ết qu th ện 2 chương trình này là như nhau (nhân vậ ển độ
vuông và quay v v u), tuy nhiên v t khó quan sát vì t trí ban đầ ới chương trình 1 rấ c đ
chuyển động nhanh quá, còn chương trình 2 thì dễ ển độ dàng quan sát s chuy ng ca nhân
vt.
- nh m d ng thTrong chương trình 2, lệ (ý nghĩa tạ c hiện chương trình trong
1 giây) có ý nghĩa giúp chúng ta quan sát đư ển động rõ ràng hơn. Kinh nghiệc s chuy m
này hay được s dng.
- L nh có màu vàng nh m trong nhóm l u khi n (Control) mà các t n ệnh Điề
em s c làm quen trong các bài h p theo. đượ c tiế
2. Bây gi em s cho nhân v t chính chuy ng theo chi u ngang trên sân kh u, ví d ển độ
chy t trái sang phải và ngược li.
Em hãy thi nh sau: ết lập chương trình có các lệ
Lnh này có tác d ng cho nhân v t
chính quay lại (xoay ngược kim đồng
h
180 )
30 | T h c l p t r ì n h S c r a t c h
Các em s y gì? th
Em s thấy chú mèo khi quay ngược kim đồ 180 độ ộn ngưng h s b l c!
Để để điề khc ph c l i này chúng ta s dùng lnh u ch nh
cách xoay người ca nhân vt. Lnh này có 3 la ch n bng cách dùng chu t nháy ch n ti
nút phía ph nh. 3 l n quay là: ch (left-i ca l a ch quay trái phi right); không quay
(don’t rotate); và quay tròn (all around). Chúng ta nhìn th y chú mèo b l c là do ộn ngượ
la chn quay tròn.
Bây gi y vi ết lại đoạn chương trình trên:
4. Thêm l p nh l
Chúng ta s quan sát k u c a m n hơn chương trình đã làm trong phần đầ ục trên và chú ý đế
4 nhóm l nh l p l i gi ng nhau.
Để khi ph ếi vi t li các nhóm lnh ging nhau nhiu ln, trong Scratch (và trong mi môi
trườ điềng lập trình khác), người ta s dng các lệnh để u khin các cu trúc lp này.
Trong Scratch lệnh điều khin này có dng sau:
nhóm
nhóm
nhóm
nhóm
31 | T h c l p t r ì n h S c r a t c h
Ý nghĩa của lnh là cho phép thc hin nhóm các lnh nm bên trong lnh này có th được
thc hi c ti ên ln l p l l n. S l n l p có th u ch nh tr i 1 s điề ếp tr nh.
Quay tr l trên, chúng ta có th vi t l i ví d ế ại đoạn chương trình trên bằng 1 chương trình
khác, ng n g n. L nh l y t nhóm l u khi n. ặp được l ệnh Điề
K thut l t cặp chương trình được s c t d ng r t nhi u trong th ế, trong t các môi trường
lp trình máy tính.
Em hãy vi p trên và ch y th ki . ết lại đoạn chương trình lặ để m tra k t quế
5. B sung nhân v t
Đối tượng điề ủa 1 chương trình Scratch là nhân vậu khin chính c t trên sân khu. Chúng ta
điều khin nhân vt b c ng cách kéo thằng chương trình đượ đưa ra (bằ mu lnh) trên Ca
s l nh c a nhân v t. M i nhân v t có 1 c l nh (Script Window) c u a s ủa riêng mình. Điề
đặ c bit thú v là chúng ta có th to ra nhiu nhân vt trên sân khu.
1. Khu v c làm vi c v ới nhân vật.
Khu vực phía dướ ấu chính là nơi tậi sân kh p trung thông tin ca các nhân vt có trong
chương trình. Nháy lên chữ i nh s xu t hi n các thông tin ca nhân vt này. Khung thông
tin nhân vật và các tính năng tương ứng như sau:
Kéo th các nhóm l nh mu n l p vào v trí
này. Có th i giá tr s 10 b ng 1 s thay đổ
hiê
1. Kéo th nhóm
lnh này vào đây
2. K c, nhóm ết qu thu đượ
lệnh được thc hin lp 4
l
Các nút l nh b sung
thêm nhân v t.
Ca s thông tin c a nhân
vt. Tại đây có thể thay
đổi, s a tr c tiếp thông
tin ca nhân vt.
32 | T h c l p t r ì n h S c r a t c h
Khi nháy chu i lên bi ng nh t s n thêm 1 b ng ch n các l nh nt ph ểu tượ ân v có xut hi a
đố i v i nhân vt này.
Ti ca s thông tin c t chúng ta có tha nhân v thc hin các thao tác sau.
2. B sung thêm nhân v n d u ật từ thư việ ữ liệ
Để b sung thêm nhân vt t 1 thư việ ện các bướn có sn, em hãy thc hi c sau.
- Nháy nút t i khung nhân v t.
- n c các nhân v n có s n. Xut hi a s ật trong thư việ
Kho thư việ ảnh ngườ dùng, … có thển này có rt nhiu hình i, con vật, đồ chn làm nhân
vt của chương trình.
Tên ca nhân v t
Hướng xoay hi n
Hin th hay n nhân v t.
La chọn cách xoay hướng nhân vt.
quay tròn không trái ph i
quay
Bng ch n các l nh v i nhân v t khi nháy
chut phi lên nhân v t. Các ch trên ức năng từ
xung: xem thông tin; to 1 bn sao; xóa; ghi
hình nh ra file; n không hi n trên màn
hình.
33 | T h c l p t r ì n h S c r a t c h
- Nháy chu n bt ch 1 hình và nháy nút OK để sung hình này vào chương trình như 1 nhân
vt mi.
Hình nh sau mô t 1 chương trình có 4 nhân vật.
3. Ho ng c a em ạt độ
Em hãy thi sung vào sân kh u t n 5 nhân vết lập 1 chương trình, bổ 2 đế ật. Sau đó em viết
các ch c lương trình độ ập điều khin các nhân vt này.
6. Thay đổi nn sân khu
1. N n sân kh u là gì?
Nn sân kh u là nh ng gì th hi n trên c u a s chính c ủa chương trình. Các nhân vật đề
hoạt động trên n n c a sân kh u.
Hình nn sân kh u
Hình nh thu nh c a
sân khu và các chc
năng với sân khu đây
Danh sách các nhân vt
hin t b ại đây. Có thể
sung không hn chế s
lượng nhân vt cho mi
chương trình Scratch.
34 | T h c l p t r ì n h S c r a t c h
Trong hình trên, nn sân kh u là r ng. Chúng ta có th b sung thêm nhi u hình n ền để đưa
lên trang trí cho sân khu.
Ca s điều ch nh, b sung n n sân kh u có d ạng như hình sau.
2. B sung thê n sân kh m nề ấu vào chương trình
Để b sung thêm hình nh sân khu t 1 thư việ ện các bướn có sn, em hãy thc hi c sau.
- Nháy nút t i khung thông tin sân kh u.
- n c các hình n n sân kh n có s n. Xut hi a s ấu trong thư việ
Nháy nút vào Backdrops để
chc làm vi n sân kh u c vi n
Ca s chnh sa tr c
tiếp đồ ha, hình nh
ca nn sân khu.
Các nút công
c b sung,
tp m u ới, điề
chnh nn sân
khu.
Danh sách nn
sân khu hi n
tại đây
35 | T h c l p t r ì n h S c r a t c h
- Nháy ch n hình n n mu ốn đưa vào chương trình và nháy nút OK.
Hình nn sâu kh u s hình sau. đưa vào chương trình tương tự
Chú ý: khi nháy lên nút sân khấu phía dưới, ca s t hi n cho Backdrops như hình sau xuấ
phép ch nh s p hình h a sân kh u. Có th t tên các n n sân kh u trong a tr c ti ế ảnh đ đặ
ca s này.
Khung điều khi n nhân v t và
sân kh sung ấu sau khi đã bổ
thêm nhi u nhân v t và n n
sân khu
36 | T h c l p t r ì n h S c r a t c h
7. Cho nhân v t chào h i
Nhóm các l nh Chuy ng ch u khi n nhân v t di chuy n trên sân kh ển độ điề ấu, nhưng còn
th hi n bên ngoài c a các nhân v i dùng các l nh c a nhóm ật như ăn mặc, nói, hát thì ph
khác.
Chúng ta cùng làm quen vi m t vài l n c a nhóm l nh Th hi n (Look) c ệnh đơn giả a
Scratch. B u t ắt đầ 1 chương trình như sau:
Chú mèo trước khi xut phát s chào khán gi: "Chào các bn, tôi là Mèo con" trong 2 giây.
Sau đó Mèo chạ trí cũ. Khi về đich, My vòng quanh sân khu 1 vòng và quay tr li v èo s
chào: "Chúc các b n ng ngon".
Các l c kéo th ệnh đượ vào chương trình như sau:
2 l nh m i trong đoạn chương trình trên là:
Dãy các hình n n
sân khu hi n
đâ
37 | T h c l p t r ì n h S c r a t c h
Lnh này th hi n n i dung câu nói trên màn hình và d ng toàn b chương trình trong 1 thời
gian nh nh (ví d 2 giây trong ví d trên). Hình nh th hiất đị ện có ý nghĩa nhân vật đang
nói.
Lnh này th hi n n i dung câu nói trên màn hình (không d ng toàn b chương trình). Hình
nh th hi ện có ý nghĩa nhân vật đang nói.
Câu h i và bài t p
1. Vi u khi n nhân v t th n các công vi c sau: ết chương trình điề c hi
- u 8 vòng theo chi ng h . Đi vòng quanh sân kh ều ngược kim đồ
- u 5 vòng theo chi ng h . Đi vòng quanh sân kh ều kim đồ
- n, tôi chu n bTrước khi đi nói "Chào các bạ đi". Sau đó nhân vật s đi vòng quanh sân
khu 4 l n, m s d ng l i và nói câu: "Tôi v a hoàn thành công vi c" trong i lần đi về
khong th p. ời gian 2 giây trước khi đi tiế
2. Em hãy thi u khi n nhân v t chuy sau, ết lập các chương trình đ điề ển động theo các sơ đồ
chú ý đến mi ngã r nên dng l i vài gi ngh ây để ngơi.
3. Em hãy vi t o ra 4 nhân v y các nhân v t này chào hết 1 chương trình nhỏ t, khi ch ỏi như
sau.
A
B
C
38 | T h c l p t r ì n h S c r a t c h
M rng
Viết chương trình thực hin các công vic sau:
- p 4 nhân v Thiết l ật như hình dưới đây.
- L t cho m i nhân v t chuy ng quanh sân kh u theo chi ng h 4 ần lượ ển độ ều ngược kim đồ
ln. Con này ch y sau con kia.
39 | T h c l p t r ì n h S c r a t c h
Bài 4. V hình 1
Mục đích
Hc xong bài này b n s bi ết:
- S d ng khái ni m bút v u khi n nhân v n trên màn để điề t v các đường, hình đơn giả
hình.
- Thay đổ ắc, đội màu s rng, kiu ca nét v.
- Làm quen v i khái ni m c m bi n và các l nh c m bi n. ế ến đơn giả
- âu l u khi n r nhánh (selection). Biết các c ệnh điề
Bắt đầu
1. Gi s có 1 h bút v , b ng màu và 1 t gi y tr ng. H b u v . Trong ọa sĩ với 1 s a s ắt đầ
các t a h n công vi c v csau, t nào liên quan đế ọa sĩ này:
- y ra m t bàn. Tri gi
- Nhc bút.
- U ống nước.
- H bút.
- Hát.
- gi i lao. Ngh
- Di chuyn bút trên giy.
- Lia bút, rê bút.
- n màu khác. Ch
- n bút khác. Ch
2. Em đã từ trên máy tính chưa? Hãy kể 1 vài chương ng làm quen vi các phn m m t p v
trình như vậy.
3. Trong bài h c này chúng ta s c làm quen và h c cách Scratch có th v c trên đượ đượ
màn hình dướ ủa chương trình. Chương trình si s điều khin c điều khin nhng công c
sau đây:
- bút v
- b ng màu
- nh c bút, h bút
và nhi i b ều tính năng nổ t khác.
Hoạt động bài hc
1. Ch v theo chuy ng nhân v t ế độ ển độ
Trong Scratch, chế v p r n theo nguyên t c sau: độ được thiết l ất đơn giả
40 | T h c l p t r ì n h S c r a t c h
- h bút (pen down). Đặt chế độ
- ng s t o ra v Khi đó khi nhân vật chuyển độ ết trên đường đi của mình, đó chính là nét v
được to ra theo màu sc, kiu bút có sn ca h thng.
- có th i màu v , nét bút v . Trong quá trình v thay đổ
- k t thúc ch v c n nh c bút (pen up). Để ế ế độ
Các l nh c a nhóm v u có màu xanh lá cây. (pen) đề
Chúng ta chú ý các lnh sau:
- L nh thi t l p ch v , Sau l nh này m i chuy ng c a nhân v u ế ế độ : ển độ t s đề
để li nét v a mình. trên đường đi củ
- L nh h y ch v . Chú ý sau l nh này các hình v không b xóa trên màn hình. ế độ :
- L nh thi t l p màu v nh màu v b ế : . Cách xác đị i lệnh này như sau:
nháy chu t lên ô vuông c trên màn hình có màu a lệnh, sau đó nháy chuột lên 1 v trí b t k
sc mu nh. ốn xác đị
- L nh thi t l ng r ng nét v . Giá tr ế ập độ :
- L nh xóa t các hình v trên màn hình: . t c
Em hãy thi t qu . ết lập 1 chương trình vẽ đơn giản như mô tả dưới đây và quan sát kế
Xóa các hình đượ trước v c
đó.
Thiết l p ch : h bút. ế độ vẽ
Đặt màu v là màu: xanh.
Thiết l ng nét bút = ập độ rộ
5.
Cho nhân v t chuy ng lên n độ
vị trí góc ph i trên c a sân
kh u.
2. V 1 s hình hình h n ọc đơn giả
Các em s cùng th c hành v các hình hình h ng Scratch: hình vuông, ch nh c sau b t,
hình thoi, hình bình hành, hình thang.
41 | T h c l p t r ì n h S c r a t c h
Để đượ thc hiện các chương trình vẽ c các hình trên chúng ta c nh tần xác đị a đ nh các đỉ
ca các hình này.
Ví d v nh t nh là: ới hình vuông, chúng ta xác đị a đ các đỉ
Chương trình có thể ập như hình dưới đây. Chú ý rằ ệnh "go to x:0 y:0" đượ được thiết l ng l c
đặ t trư c lnh "pen down" ch ra rng ch sau khi nhân vt d ch chuy n vển đế trí (0,0) m i
bắt đầu quá trình v .
Kết qu c hi n nh phủa chương trình được th i.
Tương tự ạo chương trình vẽ tương ứ chúng ta thiết lp t a đ ca các hình còn li và t ng.
(0, 0)
(150,0)
(150, 150)
(0,150)
Em viết chương trình điều
khin nhân v u chuy n t bắt đầ
độ ng t v trí (0,0), sau đó lần
lượt di chuy trí ển đến các v
(150,0), (150,150), (0,150),
cui cùng quay tr trí ban l i v
đầu (0,0).
42 | T h c l p t r ì n h S c r a t c h
Ẩn nhân vật trong các bài toán vẽ hình
Trong 1 s bài toán v hình n u không có nhu c u hi n th nhân v t thì Scratch cho phép n, ế
không hi n th t b ng l nh t nhóm Hi n th nh (tm th i) nhân v (Look). Ngược li l
có tác dng hi n th l nh nhân v t trên màn hình. tr i hình
Sử d ng hình nh con rùa làm nhân v a bài toán v hình ật củ
Logo là phn m u tiên cho phép l p trình t o bút v trên màn hình. Trong ph n mềm đầ m
Logo s d ng hình v t o ra các nhân v t hình nh ảnh con rùa để ẽ. Chúng ta cũng có thể
Rùa trong các bài t p v t o ra khung c nh gi ng trong ph n m hình để m Logo.
3. Thay đổi màu và nét bút
Quan sát các tính chất sau liên quan đến các tính cht ca công vi . c v
(0,
(200,0)
(200,150)
(0,150
(0,
(200,0)
(150,150)
(50,150)
(0, 0)
(200, 0)
(100, 80)
(100, -80)
(0, 0)
(200, 0)
(150,150)
(-50,150)
43 | T h c l p t r ì n h S c r a t c h
Tính ch t 1
Tính ch t 2
Tính ch t 3
Em hãy a các thu c tính trong các c ng trên. ch ra tên c t ca b
Có 3 thông s sau liên quan đế (color), độn bút v trong Scratch: màu v rng nét bút (size)
và độ m nét bút (shade).
Màu bút v (pen color)
Màu sc c c thi c ca bút v đượ ết l i lp b nh . Giá tr màu s a bút
v trong Scratch được đánh số 0 đế t n 200 theo di màu cu vng.
Ta có bng giá tr màu ng n sau:
Giá tr
Màu
Giá tr
Màu
Giá tr
Màu
0
Đỏ
70
Xanh lá cây
130
Xanh thm
30
Vàng
100
Xa da tri
170
Hng
Độ rng nét (pen size) bút
Độ rng của nét bút đư c tính bằng pixel (điểm). Lnh s thiết lp
kích thước ca nét bút v hin thi.
Độ m nét bút (pen shade)
Di màu theo sc
cu v c thiồng đượ ết
lp trong Scratch,
ly giá tr s t 0
0
70
130
170
200
Di các giá tr
màu c a bút v
t n 200. 0 đế
30
100
44 | T h c l p t r ì n h S c r a t c h
Độ đậ m (hay độ m nht) ca bút v i tham sđược đo bở shade có gía tr t 0 đến 100. Giá
tr 0 là đậm nht (độ m = 0), giá tr = 100 là m hoàn toàn.
Lnh thiết lập độ m ca nét bút.
Ngoài 3 lnh thi p thông s chính th m nét bút, trong ết l c cho màu bút, kích thước và độ
Scratch còn có các l y. nh làm thay đổi các giá tr
Thay đổi màu ca bút theo giá tr đưc nhp
trong lnh.
Thay đổ kích thưới c nét bút theo giá tr được
nhp trong l nh.
Thay đổi độ m bút theo giá tr được nhp
trong lnh.
Em hãy thi c hi n k i màu s m ết lập các chương trình thự ết qu thay đổ ắc, kích thước và độ
s d ng các m u l nh trên.
Em hãy vi hi n trên màn hình các hình v ết lại các đoạn chương trình thể sau:
4. Thi p bút v riêng ết l
M c đích c a chúng ta trong bài luy n này là thi ết
lp m t bút v t trên sân kh u) và có (như 1 nhân vậ
kh ng tnăng vẽ các nét bút đú i v trí đầu bút như
hình bên.
Chú ý nét v c a bút xu u ngòi t phát t chính đầ
bút trong hình.
Em hãy th c hi ện các bước sau đây:
- B sung thêm 1 nhân v n t vào chương trình. L
này hãy ch n nhân v t bút chì (pencil) trong danh
sách để đưa vào sân kh u.
45 | T h c l p t r ì n h S c r a t c h
Chn bút v theo
hình nh này
(pencil).
- xóa nhân v t mèo b ng cách nháy chu i lên mèo t u Sau đó em có thể t ph i ca s điề
khin nhân v t và ch n l nh delete.
Bây gi t duy nh t trên màn Bút chì đã hiện như nhân vậ
hình. Tuy v y n u th n l nh v chúng ta s y nét v ế c hi th
xut phát t điểm gia c nh bên). a bút chì (xem hình
Trong Scratch, nét v s xu t phát t c a nhân v t. Do tâm
vy mu n nét v u bút chì chúng ta c n chuy đi qua đầ n
tâm ca hình v v u bút chì. trí đầ
Cách th c hiện như sau:
- Nháy ch u khi n nhân v ọn bút chì trong khung điề t.
- Nháy lên TAB Costume. S xu t hi n màn hình ch nh s a hình nh trang ph c ca nhân
vt hi i, cn th th đây là bút chì.
Bên ph i là c nh s h a nhân v n ( y là bút chì). Nhi m v a s ch a đồ a c ật đang ch đâ
ca chúng ta là chuyn tâm ca nhân vt v đầu bút. Em thc hiện theo các bưc sau.
1. Nháy chut
lên nút có hình
du cng (+)
này. Đây là chức
năng chọn tâm
ca hình nhân
vt.
46 | T h c l p t r ì n h S c r a t c h
Hãy s d v 1 hình vuông trên màn hình. ụng bút này để
5. V u ki n và s m bi n theo điề kin c ế
Những chương trình mà chúng ta đã biế t đều là 1 dãy các l nh b u b ng l nh s ki n ắt đầ
. L u khi y khi nháy chuệnh này điề ển đoạn chương trình gắn phía dưi ch t
lên lá c.
Trong nhóm các lnh s ki n còn có 1 l u khi n theo s ki n nháy lên 1 phím b t k . ệnh điề
Đó là lnh . L lệnh này có ý nghĩa tương tự nh trên, ch khác là
nhóm các l nh g c nháy. ắn bên dưới s thc hiện khi phím tương ứng đượ
Chúng ta hãy cùng thiết lập chương trình sau:
Nế ếu có s kiện nháy lên lá cờ: kh i t o ch độ v hẽ đồ ọa
vớ i các tham s ban đầu.
2. Xut hin 2
đường vch
ngang, dọc như
hình bên. Em
hãy nh n gi
rê chuột đến
điểm đầu bút và
nh chut.
3. u Công việc điề
ch nh v trí tâm nhân
vật bút chì đã hoàn
thành. Em có th kim
tra để xem bút s v
như thế nào.
47 | T h c l p t r ì n h S c r a t c h
Nế u s ki nmột trong các phím ← → ↓ đượ c b m, nhân vật sẽ
xoay các góc 90 độ trái, 90 độ ải và 180 đ ph ộ.
Nếu phím ↑ đượ ến lên phía trước b m, nhân v t s ti c 10
bước.
Chúng ta s d ng l nh n b ng , trong đó phím tương ứng được ch
cách nháy chu a s a st lên nút hình tam giác và ch ng cọn tên phím tương ứ ki n. Trên c
lnh c a nhân v t này s đặt 5 chương trình như sau.
Thiết lập chương trình như dưới đây và quan sát hoạ ủa chương trình.t động c
Chú ý: Trong các bài tiếp theo các em s u khi n bàn phím b ng còn được học thêm cách đi
các công c c m bi n khác c a Scratch. ế
6. L nh Stamp v hình c a nhân v t lên màn hình
Các đoạn chương
trình này được đặt
trong cùng 1 ca s
lnh c a nhân v t,
và được thc hin
đồ ng th i.
Nháy chu t lên v trí này
s hi n ra t t c các phím
trên bàn phím. La chn
1 để thiết lp lnh cho s
kin nháy phím này.
48 | T h c l p t r ì n h S c r a t c h
Lnh Stamp có ch t lên màn hình t trí và th m th c hi n ức năng in hình nhân vậ i v ời điể
lnh (v u ki ới điề ện đang ở chế độ h bút).
Em hãy thi có th v ết lập chương trình để được hình dưới đây.
Em cn t o m t nhân v t m t tâm c a nhân v ới có hình tròn màu xanh đặc, sau đó cần đ t
đúng vị trí tâm hình tròn.
Câu h i và bài t p
1. Hãy vi n v các hình sau. ết chương trình để thc hi
2. Hãy vi các hình sau, k p các công c màu s ết chương trình vẽ ết h c và stamp.
3. Trong ví d c a m i và b sung thêm yêu c u sau: ục 5, em hãy thay đổ
- s vàng, khi sang ph i màu v là xKhi nhân vật đi sang trái thì màu vẽ anh lá cây, đi lên
với màu đỏ và đi xuố ng vi màu xanh thm.
49 | T h c l p t r ì n h S c r a t c h
4. S d ng l nh vi hình sau: Stamp để ết chương trình v
M rng
1. Xây d ựng chương trình có các chức năng sau.
- t là bút chì và qu bóng hình tròn. Có 2 nhân v
- Khi chạy chương trình, cả bóng đề 2 bút chì và qu u v lên 1 hình vuông 2 bên màn
hình.
- Bút chì k hình vuông màu vàng, qu bóng t o hình vuông màu xanh.
50 | T h c l p t r ì n h S c r a t c h
Bài 5. Âm thanh 1
Mục đích
Hc xong bài này, b n s bi ết:
- K i âm thanh v i nhân v t. Nhân v t nói và th hi n l i nói b ng ch và âm thanh. ết n
- Các l nh t n sân kh u. ạo âm thanh, đánh trống và chơi nhạc trên n
- u khi n nhân v t nh y múa. Điề
Bt đầu
1. Chúng ta đã biế ệnh say có ý nghĩa như thết l nào.
Lnh s làm cho mèo con kêu meo meo như sau
Tuy v y chúng ta ch nhìn th y mèo kêu mà không nghe th y gi ng nói c a mèo. V y có
cách nào để nghe được ging ca mèo, hay ca bt k mt nhân vt nào khác hay không?
2. Trong bài h c này, em s c làm quen và h n âm thanh. đượ ọc đưc các lệnh liên quan đế
Có rt nhiều điề đang ở phía trưu thú v c.
- Âm thanh, gi ng nói có th phát ra t nhân v t hay không? Nhân v nào? t s "nói" như thế
- n c a sân kh u có th b c hay không? Nhc n ật lên đượ
- a chúng ta có th c không? Nhân vt c hát đượ
- t có th h tr ng, th c hay không? Nhân v chơi các nhạc cụ, đán ổi kèn đượ
Nhưng câu hỏi như vậ n lượy em s được l t làm quen trong bài hc này.
Ni dung bài h c
1. Nhân v t có th nói, hát
Chúng ta hãy b t đ u t nhóm l nh Sound (âm thanh) và th n l nh c hi
trong nhóm lnh này.
Chương trình ngắn sau đây sẽ cho chúng ta cm giác nhân vt có th nói, hi thoi và giao
tiếp b ng âm thanh trong Scratch.
51 | T h c l p t r ì n h S c r a t c h
Như vậy các nhân vt trong Scratch không nhng có th "nói" bng ch trên màn hình, mà
còn có th hát, nói b ng âm thanh th a mình thông qua loa c a máy tính. t c
Mi nhân v u có th m t hay nhi u âm thanh, gi ật trong Scratch đề ọng nói đi kèm. Số
lượ ng âm thanh ca m i nhân vt là không hn chế.
Lnh cho phép nhân v hi n âm thanh c a mình tr p trên máy tính. play sound t th c tiế
2. Nhóm l nh âm thanh
Nhóm l nh âm thanh (sound) có màu tím s m. Các l nh làm vi i âm thanh r ng, c v ất đa dạ
chúng ta s b u b ng nhóm l u tiên: các l nh b t, t t âm thanh c a nhân t đ ệnh đơn giản đầ
vt.
Các l nh b t âm thanh (sound) c a nhân
vt (hoc sân kh u)
Các l n nhệnh đánh trống và liên quan đế p
trng
Các l c và liên n ệnh chơi nhạ quan đế
nhc c
Các l nh làm vi âm c với cường độ
thanh
Các l nh làm vi i nh p tr ng c v
Em s nghe và nhìn thy
gì?
Em s nghe th y ti ng kêu ế
meo meo c a Mèo và nhìn
thy dòng ch Meo meo
trên màn hình.
Trong lnh play sound cho phép hi n th và l a
chọn âm thanh tương ứng ca nhân vt. Chn âm
thanh cn th hi n cho nhân v t này.
52 | T h c l p t r ì n h S c r a t c h
Em hãy th và phân bi khác bi t khi th c hi n c a các nhóm l nh sau: t s
Lệnh đầu tiên phát âm
thanh "meo meo", ngay sau
đó thực hin lnh say
không c i âm thanh ần đợ
kết thúc.
Lệnh đầu tiên phát âm thanh
"meo meo" và đợi cho đến khi
âm thanh k t thúc m i thế c
hin l nh say.
Lnh say n được th c hi
trước, sau đó đế n l nh play
sound.
Em hãy th n c 3 nhóm l nh trên và tr l i các m c hi ệnh đề sau đúng hay sai.
1. C n l nh trên có tác d ng hoàn toàn gi ng nhau. 3 đoạ
2. Các đoạn lnh s 1 và 3 có tác dng ging nhau.
3. L nh s n b t âm thanh có trong l ng th i các l nh ti p play sound thc hi ệnh này đồ i v ế
theo ca lnh này.
4. L nh s n b t âm thanh có trong l nh, ch nghe xong âm thanh s play sound thc hi
thc hin các l nh ti p theo. ế
5. L nh s n b t âm thanh có trong l nh, ch nghe xong play sound .. until done thc hi
âm thanh s n các l nh ti p theo. thc hi ế
Chú ý: Lnh s d ng t t c các âm thanh đang bật trong chương trình.
3. Âm thanh, nh n sân kh u c n
Âm thanh không ch nhân v t, mà sân kh có âm thanh, nh n c ấu cũng có thể c n a
riêng mình. Chúng ta hãy th n m a âm c hi t hoạt động đơn giản sau để hiểu ý nghĩa củ
thanh sân khu.
(a) Em hãy b sung n n sân kh u m kho các hình a ph n m m, ví d , l i t ảnh đã có củ y
hình nh sau (bedroom).
(b) Làm ẩn đi nhân vật chính là chú mèo.
(c) Nháy ch n bi ng sân kh u khi i và kéo th n ểu tượ ấu trong khung điề n phía dướ đoạ
chương trình như trong hình ảnh sau.
53 | T h c l p t r ì n h S c r a t c h
Chúng ta chú ý đến đoạn chương trình ngắn ca sân khu này.
Khi chạy chương trình này, nghe đượem s thy mi khi nháy chut lên sân khu s c 1 âm
thanh nh phát ra.
Trên thc tế m i nhân v u n n c u có th gán v i m t hay t và sân kh ủa 1 chương trình đề
nhiu âm thanh khác nhau. Các âm thanh này r ng, có th là l ng, nh t đa d i nói, tiếng độ c
nn, bài hát. Các t p âm thanh có th dùng bao g m các d ạng wav, mp3, …..
4. Thu âm tr p âm thanh cho nhân v t c tiế
Trong hoạt động này, em s thc hi c tin vi c thu âm tr ếp t t o ra máy tính qua micro để
mt âm thanh ca nhân vật. Các bước th c hiện như sau.
(1) La ch a nhân vn trong l nh play sound crecord t.
Kéo th 2 l nh
này t c a s
lnh c a sân
khu.
Làm t Mèo con ẩn đi nhân vậ
B sung thêm hình
nh sân khu này.
Nháy t vào c l nh c u. ại đây để a s a sân kh
Sân kh u có các âm
thanh, nhc n n riêng c a
mình.
Nhân vt có âm thanh,
nhc, ging nói riêng.
S lượng âm thanh cho
mi nhân vt là không
hn ch . ế
Lnh này n m trong nhóm s ki n (event) c a sân kh u.
Các l n m i khi nháy chuệnh bên dưới s thc hi t lên sân
Bt âm thanh c a sân kh ấu được ghi
trong lnh
54 | T h c l p t r ì n h S c r a t c h
hoc vào TAB Sounds c u khi n và nháy lên bi ng micro . ủa khung điề ểu tượ
Ca s c ti sau s xu t hiện để chun b thu âm tr ếp.
Trong quá trình đang thu âm, cửa s này có dạng như sau:
Khi kết thúc thu âm, âm thanh v c thu s hi n th trên c ừa đượ a s như sau:
Nháy nút này để b t đ u
thu âm.
Nháy nút này để kết thúc
thu âm.
Trong thi gian thu âm,
nút này chuy . ển màu đỏ
55 | T h c l p t r ì n h S c r a t c h
Bây gi có th n vi t tên cho âm thanh v a thu âm. thc hi ệc đặ
5. B sung âm thanh cho nhân v t và sân kh u
Trong hoạt động này, em s thc c sân hin thao tác b sung âm thanh cho nhân v t (ho
khu) l y t 1 kho âm thanh có s n c a phn m m.
Ca s làm vi âm thanh c a nhân v t c vi hoc sân kh u
Như chúng ta đã biết, trong Scratch, các nhân v t có th nói, hát, phát ra tiếng nói ca mình.
Sân khẫu cũng có thể có âm thanh nn. Trong màn hình Scratch nếu nháy lên nút Sound
chúng ta s vào ch sung thêm âm thanh cho nhân vức năng cho phép bổ ật. Cũng trên màn
hình này s hi n toàn b danh sách các âm thanh hi a nhân v i các âm ện đang có củ t. V
th thanh có sn chúng ta có th c hin các thao tác sau:
- nh s a âm thanh. Ch
- Xóa âm thanh.
- Thay đổi tên âm thanh.
Khu vc làm vic
vi âm thanh ca
nhân vt hoc sân
khu.
Âm thanh hi n th i
Xóa âm thanh
V trí đổi tên âm thanh
Khu vc ch a nh s
âm thanh
Danh sách âm thanh
56 | T h c l p t r ì n h S c r a t c h
Mi nhân v c nhi u âm thanh, em có th b sung âm thanh tt có th đi kèm 1 hoặ các kho
có s c ti c ln, có th thu âm tr ếp ho y t các t p âm thanh trên máy tính.
Em hãy th n thao tác b sung âm thanh cho nhân v t b ng cách l y t 1 kho có s n. c hi
B sung âm thanh t kho có s n
- Nháy vào nút hình loa phía trên khung làm vi i âm thanh c c v a nhân vt.
- n c có danh sách các âm thanh. Xut hi a s
- Em nháy ch n 1 âm thanh và nháy nút OK.
Em s thấy âm thanh này đã được đưa vào khu vực âm thanh ca nhân vt.
B sung âm thanh t t p ngoài
- Nháy nút .
- n h p h i m t p có d ng hình sau. Tìm ki m t p âm thanh ngoài. Xut hi i tho ơng tự ế
Danh sách các âm thanh ca
nhân v n th t t hi ại đây.
57 | T h c l p t r ì n h S c r a t c h
- n t p âm thanh mu n b sung và nháy nút . T p âm thanh này s Ch Open được đưa vào
danh sách âm thanh c t (ho c sân kh u). a nhân v
Câu h i và bài t p
1. Thi p nhân v t là th y giáo, thu âm l i nói "Chào em" và viết l ết đoạn chương trình thầy
giáo nói và th hi n dòng ch "Chào em" trên màn hình.
2. Thi p nhân v t là h i nói "Em chào th " và viết l c sinh, thu âm l y ết đoạn chương trình
em h c sinh chào th y giáo, nói và th hi n dòng ch "Em chào th y" trên màn hình.
58 | T h c l p t r ì n h S c r a t c h
3. Thi p 2 nhân v t là th y giáo và h c sinh. Thu âm gi ng nói c y "Chào em", ết l a th
ging nói h c sinh "Em chào th " và th n thi y c hi ết kế chương trình như sau:
- y nói "Chào em" và th hi n l i chào trên màn hình. Th
- Sau 1 giây, h c sinh s i "Em chào th " và hi n dòng ch trên màn hình. chào l y
4. Thi ết lâp chương trình như sau:
- N n sân kh u là hình nh m ng. ột ngôi trư
- t chính là hai b n h c sinh nh Nhân v đang đi học.
- Em b sung bài hát "Em yêu trường em" cho nhân vt hai bn nh này.
- y thì hát bài hát trên. Khi hát xong thì hai b n nh s chào mCho chương trình chạ i
người.
M rng
1. Em hãy vi n có âm thanh v i các yêu c u sau. ết 1 chương trình đơn giả
- t chính là 1 em bé. Nhân v
- Em bé s y vòng qu u, m y s v ng lên ti ng th a bàn ch anh sân kh i bước ch ế ch thch c
chân.
2. Vi ết chương trình sau:
59 | T h c l p t r ì n h S c r a t c h
- n tr ng, có 1 cái bút chì là nhân v Màn hình n t chính.
- Khi chạy chương trình, bút bắ các hình đa giác đề ắt đầt đu v u trên màn hình, b u là tam
giác, t u. giác và ngũ giác đề
- Khi nháy chu t lên màn hình thì l i 1 bài hát quen thu c vang lên. Em có th tìm ch n m t
bài hát b t k .
60 | T h c l p t r ì n h S c r a t c h
Bài 6. Chuy ng 2 ển độ
Mục đích
Hc xong bài này, b n s bi ết:
- Các l nh chuy ng ph ển độ c tạp hơn trên màn hình.
- n gi t và máy tính. Giao tiếp đơn giả a nhân v
- S d ng l nh l n và l p vô h n. ặp đơn giả
- u làm quen v u khi Bước đầ i lệnh điề ển if … then …
- Làm vi i 2 ho c nhi u nhân v c v ật. Chương trình song song.
Bắt đầu
1. Quan sát chương trình sau, ển độbn có nhn xét gì v chuy ng ca nhân vt.
2. Quan sát ti ếp chương trình sau.
- B n n xét gì v chuy ng c a nhân v m gì gi ng và khác nhau so v có nh ển độ ật? Có điể i
chương trình trên.
Ni dung bài h c
1. Điều khin nhân vt khi chm biên màn hình
Có bao gi n u chúng ta cho các nhân v t chuy ng ra kh m vi màn em nghĩ rằng ế ển độ i ph
hình thì s nào không? Ho ng này s u khi n nhân v như thế ạt độ giúp em đi ật tránh được
hiện tượ ệnh riêng như vậy, đó là lệng trên. Trong Scratch có 1 l nh ,
61 | T h c l p t r ì n h S c r a t c h
Lnh này có tác d nhân vụng như sau: khi t
chuyển động chm cnh sân khu, nhân v t s t
động dng và quay lại theo hướng đối xứng gương
với hướng ban đầu. Hướng ban đầu và hưng quay
đượ c ch ra trong hình bên.
Chú ý: lnh này ch ng có trong Scratch và thư
được đặt sau các chuyển động ca nhân v t đ
điều khin chuy ng này . ển độ
Em hãy th ki m tra tác đoạn chương trình sau để
dng ca lnh trên.
2. L p vô h n nh l
Chúng ta đã đượ c làm quen v i lệnh trong nhóm đi ển dùng để ạn chương u khi làm cho 1 đo
trình thc hi c n l p l i 1 s l n (l nh repeat). N u chúng ta mu ế ốn 1 đoạn chương trình đượ
lp l n l n thì c n s d ng l i vô h ệnh dưới đây.
Bây gi thì em hãy th l c nêu trong ph n m u, em có i và hiểu hai chương trình đã đượ đầ
th tr l ời đươc câu hỏi đặt ra.
3. H i tho a 2 nhân v i gi t, chương trình song song
Trong hoạt động này chúng ta cùng thiết kế 1 chương trình đơn giản sau.
Khi nhân vt chuy ng g p ển độ
cnh sân khu, nhân vt s d ng
lại và quay hướng theo góc đối
xng với hướng lúc đi đến.
Nhóm các l nh n m trong khung này s c l p l n l n đượ i vô h
cho đến khi ngườ ụng nháy nút đỏi s d trên màn hình hoc có
lnh cho phép d ng vòng l p ho ặc chương trình.
Lnh wait (1) secs
tác d t ng cho nhân v
dng li trong 1 th i
gian để quan sát đượ c
d hơn.
Nhân vt chuy ng liên t c, vô h n dển độ c
theo các cnh c a 1 hình vuông.
Nhân vt chuy ng liên t c, vô h n, mển độ i
khi g p c nh sân kh u thì quay l p. ại đi tiế
62 | T h c l p t r ì n h S c r a t c h
Nhân vt: Mèo và Cánh c t.
Nội dung chương trình cần th n. c hi
Mèo (trông th y Chim) chào "Xin chào
bạ n Cánh c t".
Chờ trong 3 giây.
Cánh c t (th y Mèo chào) chào "Chào Mèo con".
Em hãy phân tích yêu c u c u bài và vi t ra các công vi n th n c a Mèo và ủa đầ ế c c c hi
Cánh c t.
Công vic c a Mèo
Công vic c a Cánh c t
Em cn th c hiện các bước sau:
- B sung thêm nhân v t chim cánh c i tên 2 nhân v t như hình trên và đổ t thành "Mèo" và
"Cánh c t".
- l nh c t, em vi t cho Mèo và Trong ca s a Mèo và Cánh c ết 2 chương trình riêng biệ
Cánh cụt như hình dưới đây. Chú ý: hai chương trình sẽ ện đồ thc hi ng thi, song song, nên
cần để câu chào ca Mèo trong 5 giây, còn Cánh ct thì cn cn ch đợi 3 giây đúng theo
yêu c i chào Mèo. ầu, sau đó mờ
- K c hi ết qu th ện chương trình.
Em hãy b sung thêm các l m r ng yêu c u c a bài toán trên. ệnh để
Mèo (trông th y Chim) chào "Xin chào b n Cánh c ụt".
Đồng th i Mèo ti c v ến 10 bướ ề phía Cánh c t.
Chờ trong 3 giây.
Cánh c t quay l i phía Mèo.
Cánh c t chào "Chào Mèo con".
63 | T h c l p t r ì n h S c r a t c h
4. Chuy ng b c ển độ ằng thay đổi trang ph
Để mô t chuy ng cển độ a nhân vt, ngoài các lnh cho phép nhân vt d ch chuyn v trí
trên màn hình, chúng ta còn có th s d ng hi u nh nhân v t. ứng thay đổi hình
Mi nhân v có th u hình nh minh h i là trang ph c. Nút Costume t s có nhi ọa, được g
cho phép em b sung và ch nh s a các hình nh trang ph c này. Ví d nhân v t Hip-hop sau
có đế ế n 12 b trang ph y kục. Như vậ t hợp thay đổi trang phc và d ch chuy n trên màn hình
s t o ra các hình nh chuy ng th a nhân v t. Phim ho c thi ển độ c c ạt hình cũng đượ ết kế
da trên nguyên tc này.
Trong nhóm lnh l u khi n trang ph c sau. Th hin (Look) có 2 ệnh điề
Lnh ng cho nhân v t chuy n sang trang ph p theo trong danh có tác d c tiế
sách.
Lnh ng cho nhân v t chuy n sang trang ph n có tác d c được ch
trong danh sách.
Bây gi em hãy thi t Hip-hop c a chúng ta v ết kế đoạn chương trình cho nhân vậ a dch
chuyn trên màn hình (dùng l nh move), v i trang ph c (dùng l nh next costume). ừa thay đổ
Quan sát chương trình trên, em có nhậ n xét gì v chuy ng c a chú bé Hip-hop? ển độ
Các trang
phc ca
nhân vt.
Scratch cho
phép t o ra
nhiu hình
nh - trang
phc khác
nhau ca 1
nhân v t.
Ca s v ,
chnh sa
trang phc
ca nhân vt.
Chương trình 1.
- p: 10 l n. Vòng l
- i trang ph c sau m Nhân vật thay đổ ỗi 10 bước.
- Sau khi thay trang phc thì dừng chương trình 1
64 | T h c l p t r ì n h S c r a t c h
Bây gi chúng ta s m t vòng l p lên 100, nhân ốt lên chương trình trên bằng cách tăng số
vt s i trang phthay đổ c ch sau 5 bước và thi gian ch ch là 0.5 giây. Hi u ng chuy n
độ ng s t t lên.
5. L u khi n ệnh điề ển có điều ki
Trong hoạt độ ệnh điềng này em s làm quen vi 1 lnh quan trng ca Scratch, l u khin có
điề u ki ng cện if … then (nếu …. thì). Đây là 1 lệnh, 1 tư duy quan trọ a vi c đi u khin
máy tính làm vi c.
Trên thc tế ng r t hay g p tình hu c quy nh tùy theo chúng ta thườ ống mà hành động đượ ết đị
các điề u kin c th . Ví d:
- i n ng tôi s Nếu tr thì đi chơi.
- b n g giúp b n. Nếu ặp không làm được bài thì tôi s
Mệnh đề trên đượ c th hi n t ng quát thành câu l nh sau:
Nếu thì <điều kin> <hành động>
đây <điề ệnh đề Đúng hoặu kin> là 1 biu thc, hoc m luôn có giá tr c Sai. Các mnh
đề , biu thc ch mang ý nghĩa đúng, sai được gi là biu thc logic.
Ví d các biu th c logic.
1 = 2
Nhn giá tr sai.
15 > 3.4
Nhn giá tr đúng.
Lnh th n l u ki n (logic) là l nh này n m trong nhóm l nh c hi ệnh theo điề ệnh If …. then, lệ
Điều khin (Control) có màu nâu.
Trong Scratch có 1 s l nh là các m logic, ch có giá tr ệnh đề đúng và sai. Chúng ta cùng
tìm hi m biu 2 l nh này trong nhóm l nh C ến (Sensing).
Lệnh này đóng vai trò 1 điều kin logic. Lnh ch tr li giá tr
Đúng nế u nhân v t hin th i va ch m với 1 đ i tư ng khác ch ra
trong lnh (nhân v t khác ho nh sân kh u). c c
Lnh này ch tr l i giá tr u nhân v t hi n th i ti p xúc v Đúng nế ế i
màu s c ch ra ngay trong l nh. ắc đượ
Điề u kin thc hi n l nh mô t bng 1 biu
thc hay giá tr d ng
Đúng / Sai (logic). Biu
thc logic th n hình trám nh n u. hi 2 đầ
Nhóm l nh trong v trí này s được th c
hin khi bi u th ức logic trên là Đúng
Chương trình 2.
- p: 100 l n. Vòng l
- i trang ph c sau m Nhân vật thay đổ ỗi 5 bước.
- Sau khi thay trang ph nhanh 0.5 giây. c thì ngh
65 | T h c l p t r ì n h S c r a t c h
Ví d đoạn chương trình sau kiểm tra xem nhân vt có ch m vào c nh sân kh u hay không,
nếu đúng thì sẽ thông báo "Tôi va phi cnh sân kh u r i".
Bây gi em hãy th c hi i nhi m v ện chương trình v sau.
Vn là bài toán cho chú Mèo chuy ng t do, vô h n ển độ
trên màn hình, n u g p c nh sân kh u thì quay l i (xem ế
ví d m c 1). Tuy nhiên b sung thêm yêu c u sau:
Trên sân khu v thêm 1 v . ạch đứng màu đ
Mèo ch được phép chuy ng t do vùng bên trái ển độ
vạch đỏ. N u ch m v s l p t c quay sáng trái vế ạch đỏ i
góc nghiêng 45 độ.
Em hãy cùng th c hiện chương trình này theo các bước sau.
1) Ch nh s a sân kh u, b ng th . sung thêm 1 đườ ẳng đứng màu đỏ
Em hãy nháy ch n bi ng sân kh u, nháy ti nh ểu tượ ếp nút Backdrops, khi đó màn hình chỉ
sa hình nh sân khấu như hình dưới đây. Em hãy thự ếp theo sơ dưới đây.c hin ti đồ
1. L n a ch
kiu hình nh
Vector Mode
2. L n a ch
công c k
đoạn thng
3. L n a ch
màu đỏ cho
công c v
4. L a chọn độ
dày c ng ủa đườ
k
5. K n 1 đoạ
thẳng đứng
tại đây.
66 | T h c l p t r ì n h S c r a t c h
2) Bây gi em thi l c 1. ết kế ại chương trình đã có trong mụ
3) Trong vòng l p này, em c l u khi n nhân v u va ch ần đưa vào thêm 1 số ệnh để điề t nế m
với đoạn th thì ph i quay l ng sau: ẳng đứng màu đỏ ại. Đoạn chương trình này có dạ
Nế ế u <nhân v t ti p xúc v i màu đỏ> thì
Quay lại theo hướng 45 độ
Em kéo th ra màn hình l nh c a nhân v t các l n thông s và kéo th ệnh sau, sau đó điề
chúng vào đúng vị trí.
4) K ết qu em thu đượ ạn chương trình sau:c đo
5) Chạy chương trình và kim tra kết qu.
Câu h i và bài t p
1. Em hãy mô t k c ết qu ủa đoạn chương trình sau:
Để thiết lập màu đúng của lnh - biu thc logic này em
làm như sau:
- Nháy chu trí ô vuông ch n màu c a l nh. t lên v
- Di chuy n chu t ra sân kh n th ng ấu và nháy lên đoạ
đứng. Màu c n thủa đoạ ng này s t n vào bi u động điề
thc c a l nh này.
67 | T h c l p t r ì n h S c r a t c h
2. M r c 4, cho c u bé Hip-hop chuy ộng đoạn chương trình trong mụ ển động vô hn t trái
qua ph p c nh sân kh u thì quay l i và c y ti p t i, g như vậ ế c.
3. Các bi u th c logic sau là đúng hay sai?
A. 4 < 5.
B. 5 + 7 - 2 > 10.
C. 2
3
= 3
2
D. √2 > 1.4
4. Em hãy ch i thích k t qu ạy đoạn chương trình sau và giả ế chương trình.
M rng
1. Thi n ết kế 1 trò chơi đơn giả
Em hãy thi n "Th bóng" theo các yêu c u sau: ết kế 1 trò chơi đơn giả
Nhân vật: qu bóng và thanh ngang.
Quả bóng s do t trên tr n xu ng. N u g p c nh rơi tự ế
sân kh u s ng b t l i và chuy ng liên t c. ẽ tự độ ển độ
Nế u qu bóng ch m thanh ngang, nó s b ật lên 1 góc 15 độ
và chuy c lên trên.ển động ngượ
Người dùng điề ải, trái đ điu khi n dùng các phím ph ều
khiển qu bóng sao cho bóng không b i. rơi xuống phía dướ
Gi ý cách thc hin.
Bước 1. t l p 2 nhân v trên sân kh u. Các nhân v t này có th Thiế t Bóng Thanh ngang
chn t kho các hình nh có s n c n m a ph m.
68 | T h c l p t r ì n h S c r a t c h
Bước 2. t l u khi n thanh ngang b ng các l nh s ki n khi b m phím Thiế ập chương trình điề
phi, trái.
Bước 3. t l hình dung công vi c c Thiế ập chương trình cho Bóng. Có thể ủa Bóng như sau:
Quay hướ ống dướng xu i.
Lặ p vô h n l n
d ển 10 bư phía trướch chuy c (v c)
N ế ế ới màu đỏu ti p xúc v thì
quay hư ng lên trên 15 đ
N ế u g p c nh sân kh u, quay l i.
Đoạn chương trình có dạng sau.
69 | T h c l p t r ì n h S c r a t c h
2. L m t ốt lên trò chơi này
Em hãy làm tốt trò chơi này bằng cách b sung yêu cu sau:
Nếu để rơi xuống phía dướ ng trò chơi. Bóng i thì d
Chú ý s d ng các g i ý sau:
- v ki ng. Có th thêm 1 đường ngang phía dưới để ểm soát khi Bóng rơi xuố
- S d ng l nh Stop All t nhóm l u khi d ệnh Điề ển để ừng chương trình.
70 | T h c l p t r ì n h S c r a t c h
Bài 7. V hình 2
Mục đích
Hc xong bài này, b n có th :
- n v hình ph u, xo n c, hình ngh thu Thc hi c tạp hơn: hình tròn, đa giác đề t.
- K p màu s v hình ngh ết h ắc để thu t.
- L nh l p c nh, l u khi n. đị ặp có điề
Bắt đầu
1. Quan sát các hình đa giác đều sau.
- Em có nh n xét gì v s u liên h v i s đo các góc trong và ngoài của các đa giác này, nế
cnh c ủa đa giác?
2. Em có th t ng h u n c ổng quát cách tính góc α với trườ ợp đa giác đề ạnh như hình dưới
đây?
3. Em hãy trình bày theo cách riêng c a em cách v u b ng Scratch. nh đa giác đề
71 | T h c l p t r ì n h S c r a t c h
Ni dung bài h c
1. Th c hành v 1 s u hình đa giác đề
Da trên quan sát trong phn m u, em hãy vi v các đầ ết các chương trình đơn giản sau để
hình tam giác, t u. giác, ngũ giác và lục giác đ
2. Tìm qui lu t c a cách v u đa giác đề
Nếu quan sát k c quy lu t (hay còn g i là hơn các chương trình trên chúng ta sẽ tìm ra đượ
thut toán) của các chương trình này.
Chú ý: nếu s c nh l n thì có th u ch dài c hình v t quá gi i h n điề ỉnh đ ạnh để không vượ
sân khu.
Em hãy áp d ng qui lu v u 9 và 11 c nh, s d ng nhân v t là bút t trên đ các đa giác đề
chì.
Để thc hin phép chia 360 / <s cnh> em hãy dùng ln (toán t) phép chia t
nhóm l nh màu xanh lá cây. Ví d n u v u 9 c nh chúng Tính toán (Operators) ế đa giác đề
ta nhp các giá tr 360 và 9 vào toán t . này như sau:
Vi hình 9 c dài c nh 100, em ph u ch nh v u cạnh, độ ải điề trí ban đ a bút chì sao cho hình
nm trong khung màn hình.
S c ạnh đa giác
Chiu dài c ạnh đa giác
Giá tr này = 360 / s c ạnh đa giác
72 | T h c l p t r ì n h S c r a t c h
Vi hình 11 c nh, b t bu i làm ng n l dài c c ph ại độ ạnh đa giác.
Da trên qui lut này, em hãy vi u có 7, 8, 10 c nh. ết chương trình vẽ các hình đa giác đ
3. V hình tròn
Để v u n c i n khá lđược hình tròn chúng ta hình dung như 1 đa giác đ ạnh nhưng vớ n. Em
hãy th hình tròn theo cách v u v c nh l n. c hiện chương trình vẽ 1 đa giác đề i s
Chú ý:
1. Em có th không c n thi p s c nh l y. Có th c n v v c nh nh ết l ớn như vậ ch i s
hơn, ví dụ ẫn thu đượ 180, hoc thm chí 90, v c hình tròn.
2. Mu n v vòng tròn nh em có th dành c nh là các s 0.5. chọn độ bé hơn 1, ví d
Luyn tp 1: hãy v hình sau
Trong chương trình này, em
dùng thu i v ật toán đối v
đa giác đều vi s cnh =
360, độ dài cnh = 2.
73 | T h c l p t r ì n h S c r a t c h
G i ý: Trư c khi th c hi vòng tròn, c n v n th ng t v ện đoạn chương trình vẽ 1 đoạ trí
hin thi ca nhân v n vật đế trí b t d ầu đường tròn. Thc hin công vi c này b ng l nh
thông thường. Ví d có th s d ụng đoạn chương trình sau.
Luyn t p 2: v hình sau.
Gợi ý: tương tự trên, trước khi bắt đầu v hình tròn, cho nhân v theo chi u kim ật quay 90 độ
đồ ng h. Ví d chương trình sau.
Luyn tp 3: v các hình sau.
Cách th c hiện tương tự trên.
Hình th nh t
Hình th 2
4. V hình ph ng nhau c tp v p li vòng l
Chúng ta đã được làm quen và hiu ý nghĩa của các lnh lp (lnh repeat, forever). Các
lnh này cho phép th hi n ng n g n, d nh có các l nh ho hiểu hơn khi chương trì ặc đon
Lnh này s v đoạn
thng n ng tròn i v i đư
được v trong lnh lp
Lnh này s làm cho bút v quay
xuống dướ được vòng tròn như i để v
trong hình v yêu c u.
74 | T h c l p t r ì n h S c r a t c h
lnh l p l i. Trong Scratch có 2 l nh l p: l p v i s l n c định repeat và l p vô h n l n
forever.
Trong chương trình các vòng lặp có th c lđượ ng vào nhau, tc là vòng lp này nm trong
1 vòng l p khác. Có r t nhi u ví d mô t p l thc tế các vòng l ồng nhau như vy.
Ví d: khi xét các công vi i làm trong 1 tu n l n th 7), có c hàng ngày em ph (t th 2 đế
công việc đi học. Khi đó mô tả ặp đầ các công vic này trong 1 tun, chúng ta có 1 vòng l u
tiên:
Lặ p lại 6 ngày trong tu n
Sáng d y s ớm, ăn sáng
Đi học
Bây gi n u xét trong c 1 h bao g m 17 tu n, m i tu u l p l c trên, ế c k ần đề i lch h
chúng ta s có mô hình vòng l p l ng nhau:
Lặ p lại 17 tu n của h c k
Lặ p l i 6 ngày trong tu n
Sáng d y s ớm, ăn sáng
Đi học
Các vòng l p l ng nhau theo nhi u khác nhau. Ví d ng h p vòng có th u mc và ki trườ
lp 1 mức ta có các trường hp sau:
2 vòng l p repeat l ng
nhau
Vòng lp repeat nm
trong vòng lp forever
Vòng lp vô h n forever
nm trong vòng l p repeat
Bay gi em hãy thi hi n hình v ết lập chương trình thể dưới đây.
Phân tích bài toán này chúng ta th y:
Vòng lp ngoài cùng: th n 4 l n vi n th ng xu t phát t c hi c v 1 đoạ
tâm điểm ca hình.
Vòng lp bên trong: v hình tròn.
75 | T h c l p t r ì n h S c r a t c h
vòng lp bên ngoài chúng ta
có đoạn lnh:
vòng l n lặp trong là đoạ nh v
đường tròn mà chúng ta đã biết:
Ghép 2 vòng lp này l ồng vào nhau chúng ta thu được.
Chú ý trước khi thc hi n vòng l u tiên em c vặp đầ ần đưa bút vẽ v trí ban đ u là tâm ca
hình:
Kết qu chương trình như sau:
Vòng lp ngoài, th c hi n 4 l n vi 1 c v
đoạn thng t v dài 100. trí tâm (0,0) độ
Vòng lp trong v ng tròn v n l p. đườ i 90 l
Sau khi v ng bút v 90 vòng tròn, quay hướ
độ sang trái để thc hin vòng lp ngoài tiếp
theo.
76 | T h c l p t r ì n h S c r a t c h
Câu h i và bài t p
1. Em hãy vi các hình sau: ết chương trình vẽ
2. Vi ết chương trình vẽ các hình sau:
3. Vi hi n m i nhánh 1 màu khác nhau. ết lại các chương trình trên nhưng thể
M rng
Thiết kế chương trình Bút v t do như sau:
Trên màn hình khi di chuy n chu t, bút v luôn đi
theo con tr t. chu
- B m phím Space: b u ch v . ắt đ ế độ
- Nháy chu t thúc ch v . t: kế ế độ
- B m phím x: chuy n màu v là Xanh.
- B m phím d: chuy n màu v . là Đ
77 | T h c l p t r ì n h S c r a t c h
Bài 8. Âm thanh 2
Mc đích
Hc xong bài này, b n s bi ết:
- K i âm thanh v i nhân v p trình cho nhân v t nói và th hi n l i nói b ng ch ết n t. L
âm thanh.
- u khi n c nh t c trên n n sân kh u. Điề ác l ạo âm thanh, đánh trống và chơi nhạ
- u khi n nhân v t nh y múa theo nh c n Điề n.
Bắt đầu
Em hãy quan sát b n nh u cách ghi các n , nh p, c sau. Em có hi t nhạc, cao độ, trường độ
phách c n nh c này không? a b
Trong bài hc này chúng ta s cùng nhau tìm hi u các l có th ệnh để đánh được đúng các
nt ca bn nh c này.
Ni dung bài h c
1. K i âm thanh v n sân kh ng d ng k chuy n ết n i nhân vt, n u.
Như chúng ta đã biế ục và âm thanh đi t, mi nhân vt trong Scratch có th có nhiu trang ph
kèm, s ng các âm thanh hay trang ph c này là không h n ch . lượ ế
Tương tự ấu cũng có thể, sân kh có nhiu hình nh nn sân khu (backdrop) và âm thanh
kèm theo v ng không h n ch . i s lượ ế
Các l nh làm vi i trang ph c, âm thanh, n n sân kh u trong Scratch bao g c v m:
Ý nghĩa lệnh
Nhân vt
Sân khu
Chuyn trang ph c /
nn sân khấu tương
ng.
78 | T h c l p t r ì n h S c r a t c h
Ý nghĩa lệnh
Nhân vt
Sân khu
Chuyn sang trang
phc / nn sân khu
tiếp theo trong danh
sách.
Bật âm thanh tương
ng và thc hin
ngay các l nh ti p ế
theo
Bật âm thanh tương
ng và ch xong mi
thc hin các l nh
tiếp theo
Chú ý quan trng: Dãy các trang ph n n sân kh u hay âm thanh còn có th nh b ng c, xác đị
s t ho c tên c a chúng. Ví dth n u chúng ta s dế ng các bi n nhế để lưu số th
t ho c để lưu tên của các trang phc, nn sân kh u hay âm thanh này thì các l nh
trên có th s d ng các bi n nh t khai thác. ế rên để
Chuyn n n sân kh u sang n n có s th t trong danh sách
stt.
Chuyn n n sân kh u sang n n có tên trong danh sách là
name.
Chuyn trang ph c c a nhân v t sang trang ph c có s th
t trong danh sách là stt.
Chuyn trang ph c c a nhân v t sang n n có tên trong danh
sách là name.
Bt âm thanh có s t th trong danh sách là stt.
Bt âm thanh có tên trong danh sách là name.
Thiết lp ng d ng k chuy n
Chúng ta s p m ng d n có k i âm thanh v i hình nh. Gi s n thiết l t ụng đơn giả ết n mu
thc hin m t bài k chuy n b ng gi ng nói theo tranh, ví d i m ". Em hãy ụ, bài thơ "hỏ
thiết kế mô hình chương trình bao gồm 4 hình nh nn sân khu và 4 tp âm thanh k
chuyện tương ứ ảnh tương ứng. Chú ý mi tp âm thanh s là ging k mô t hình ng.
79 | T h c l p t r ì n h S c r a t c h
Đoạn chương trình chính được xây dng trên ca s lnh ca sân khu. Cn to thêm biến
nh stt để lưu số th t c m 1 vòng l p (s a các tệp âm thanh. Chương trình bao gồ vòng
lp = s lượng hình nh n n). T i m ỗi bước, c n th n l nh c hi
dùng để ật nghe âm thanh cho đế động tăng b n khi xong thì t stt lên 1 và chuyn sang nn
sâu khu ti p theo. ế
2. Tr ng và nh p tr ng
Chắc các em đã được làm quen vi các b tr ng trong dàn nhc và vai trò ca trng gi
nhp trong các bi u di n âm nh c. Trong ho ng này chúng ta s làm quen v ạt độ i các lnh
trng c a Scratch.
Dãy âm thanh
tương ứng vi
dãy hình nh
nn sâu kh u.
Dãy hình n n sân
khu chính ca câu
chuyn muốn đưa
vào ng d ng này.
Thiết lp giá tr u cho stt = 1 ban đầ
Vòng lp chính ca
chương trình. Số ln lp =
s lượng hình n n = s
lượng âm thanh tương ứng.
80 | T h c l p t r ì n h S c r a t c h
Lnh gõ tr ng . play drum for beat
Lnh này có tác d gõ (công c ghi trong tham s u tiên) và kéo dài ụng đánh 1 công cụ đ
trong kho tính theo nhng th i gian p (beat) tr ng, th i gian này ghi trong tham s th 2 ca
lnh.
Ví d: l i nh s n tr ng n n (tr ng n đánh 1 lầ n ) và đợ
1/2 nh p tr ng ti p theo. p tr i giá tr = s nh p tr ng trong 1 ế đây nhị ống được đo bở tempo
phút. Ví d n u temp = 60 thì nh p tr ng s theo t ng giây, m i giây 1 l ng. ế ần đánh trố
Lnh thi p nh p tr ng là . ết l set tempo to
Chú ý: Nhp tr hi n ống (beat) còn có ý nghĩa trong việc th ện trường độ t nhc s được h c
trong phn sau.
Em hãy so n và ch y th n c đoạ hương trình trống sau đây.
Chn b gõ tr ng
tại đây.
Chn nh p tr ng
tại đây.
B các công c
tr i.ng hiện đạ
Chương trình bao gồm 10 vòng lp,
mi vòng lp s bao g m 2 nh p
trng.
Nhp 1: s l ng chính ần lượt đánh trố
và thanh ngang 1/4 nh p, xen gi a
ngh 1/4 nhp.
Nhp 2: s lần lượt đánh mặt mũ trên
tr ng g 1/4 nh p, xen gi a ngh
S lượng nh p tr ng
trong 1 giây (beat per
i )
81 | T h c l p t r ì n h S c r a t c h
Bng sau cho chúng ta nh n d ng thêm 1 s hình nh công c trong giàn tr ng.
Snare
Drum
Tambourine
Bongo
Bass Drum
Hand Clap
Conga
Side Stick
Claves
Cabasa
Crash
Cymbal
Wood Block
Guiro
Open Hi-
Hat
Cowbell
Vibraslap
Closed Hi-
Hat
Triangle
Open Cuica
3. Em bé nh y và múa theo nh p tr ng.
Em hãy thi hi n trong hình sau. ết lập 1 chương trình đơn giản như thể
82 | T h c l p t r ì n h S c r a t c h
4. Đánh nốt nhc
Trong hoạt động này em s được hc cách Scratch điều khi n các công c c. Các chơi nhạ
em chú ý đến các yếu t sau:
1. Công c chơi nhạc.
2. Độ cao nt nhc.
3. Trường độ nt nhc.
Độ cao của nốt nhạc
Lnh phát n c chính trong Scratch là . L nh này có tác d ng phát 1 t nh play note for beats
nt nhc a l c đúng cao đ và trường độ được ghi ngay trong tham s c ệnh. Trường độ đượ
tính theo nhp tr ng (beat).
Khi la chọn cao độ nt nhc, em s thy hi n hình nh mô t phím đàn Piano như hình
dưới đây. Mỗi nt nhc có 1 ký t ch cái th hin và giá tr cao đ ca nót nhc.
Cao độ nt nhc
Trường độ nt nhc
Chương trình sử
dng các hình nh
trang phc khác nhau
ca nhân vật để mô t
hoạt động nhày múa
ca nhân vt
Khi nhn chu t vào v trí mu n nh n ập cao đ t
nhc s xu t hi n hình nh bên th hi n phím
đàn cho người dùng d quan sát và nhp. Bên
cnh giá tr s còn ký hi u các nt nhc.
83 | T h c l p t r ì n h S c r a t c h
Bàng ký hi u các n t nh c:
Đô
Mi
Pha
Son
La
Si
Đô
C
D
E
F
G
A
B
C
Ví d các giá tr n t chính c n nh c mô t trong hình sau: a b ạc đượ
Note
48
50
52
53
55
57
59
Trường độ c a n t nh c
Trường độ ạc. Trong Scratch, đơn vị đo trường độ ch ra đội theo thi gian ca nt nh là
beat (nh đượp tr t. Giá trống) mà chúng ta đã biế trường độ c th hin trong bng sau:
Vi lnh ngh (kho ng l ng c n nh c) chúng ta s d ng l nh sau: a b
Bng các ký hiêuj kho ng l ng trong khuôn nh ạc như sau:
Ký hiu ngh
trên nt
nhc
beat
4
2
1
0.5
0.25
Note
60
62
64
65
67
69
71
Ký hiu nt
nhc
Trường độ
(beat)
4
2
1
0.5
0.25
0.125
0.0625
Trườ ng đ ngh
84 | T h c l p t r ì n h S c r a t c h
Bây gi nhìn vào 1 b n nh n, chúng ta có th vi ng ạc đơn giả ết đoạn chương trình mô phỏ
bn nh ạc đó.
Em quan sát bn nh c và th n các l ng trong các ô tr ng c ng c hi ệnh Scratch tương ứ a b
sau:
Bây gi chúng ta s ng thi n nh ết lập các đoạ ạc dài hơn, dựa trên các bài hát quen thuc
mà em đã biết.
Ví d 1: m n nhột đoạ c bài hát Đi học (nh ạc Bùi Đình Thảo, thơ Minh Chính).
\
Em hãy điền tiếp các lnh Scratch cho các khuông nhp 3, 4, 5.
Nhp 1
Nhp 2
Nhp 2
Đoạn nhc
này có 6
khuông nh p.
85 | T h c l p t r ì n h S c r a t c h
Nhp 4
Nhp 5
Nhp 6
Ví d 2: m n nhột đoạ c bài Người Hà Ni (nhc: Nguyễn Đình Thi).
Đoạn đầ ập như hình trên. Em hãy viế ếp đoạu của bài hát được thiết l t ti n sau ca bn nhc
này.
Lựa ch n công c ụ chơi nhạc.
Lnh thi p công c c trong Scratch là . ết l chơi nh set instrument to
Bng sau mô t b ng hình các công c chơi nh c h tr trong Scratch.
Piamo
Bass
Saxophone
Electric
piano
Pizzicato
Flute
Organ
Cello
Wooden
Flute
Guitar
Trombone
Bassoon
Electric
guitar
Clarinet
Choir
Nhc c a ch l n
tại đây.
86 | T h c l p t r ì n h S c r a t c h
5. M bài hát, b n nh c hoàn ch t s nh
Em hãy cùng th n t n nh c hoàn ch nh sau. c hi o chương trình chơi các bả
Bài 1. Chúc sinh nhật. Happy birthday.
Bài 2. Cả nhà thương nhau. Nhạc và lời: Phan Văn Minh.
87 | T h c l p t r ì n h S c r a t c h
Câu h i và bài t p
1. Em hãy t o khuôn nh c cho m t bài hát hoàn ch nh:
2. Em hãy t o khuôn nh c cho m t bài hát hoàn ch m ngón tay. ỉnh: Đế
88 | T h c l p t r ì n h S c r a t c h
M rng
Thiết lập chương trình đơn giản sau.
Gi ý: thi t l t có hình các nút tròn trên. Vế p 15 nhân v i m i nhân v - nút tròn s d ng t
lnh b ki n nháy chu t s ột sau. Đoạn chương trình sau dành cho nút đỏ đầu tiên (C, 48).
Trên màn hình là 15 nút
tròn dùng để mô t các
nt nhc. Trên m i nút có
ch cái ký hiu tên n t và
giá tr ng c nh tương ứ a l
th hi n n c này. t nh
Nháy chu t lên các nút
tròn này s phát âm thanh
chính là nt nhạc tương
ng.
89 | T h c l p t r ì n h S c r a t c h
CHƯƠNG 3: TÌM HIỂU SÂU HƠN
SCRATCH
90 | T h c l p t r ì n h S c r a t c h
Bài 9. H i tho i
Mục đích
- n giao ti p h - Thc hi ế i tho i ại ngườ máy đơn giản.
- n nh , s d ng bi n nh trong cách gi i quyKhái nim biế ế ết vấn đề.
Bắt đầu
1. Em hi u th nào là h - máy, cho 1 vài ví d . ế i tho i ại ngườ
2. Em th n h n sau gi n Hoa và Lan. c hiện đoạn chương trình trình diễ i thoại đơn giả a 2 b
Hoa: Chào Lan.
Lan: Chào b n Hoa, lâu l m m i g ặp.
Hoa: B n bây gi ng nào? ờ học trườ
Lan: Tôi h ng THCS B n kh e không?ọc trườ ế Văn Đàn. Bạ
Hoa: Cám ơn bạ n, tôi v n kh e.
Ví d có th viết chương trình sau mô tả đoạn h i trên. i tho
Hoa
Lan
Theo em, chương trình trên có phải là hi thoại người - máy hay không? Vì sao?
3. Đoạn văn sau mô tả ại ngườ 1 hi tho i - máy tính.
Máy tính: B n hãy nh p 1 s ố tự nhiên.
Ngườ i: th c hi n độ ng tác nh p 1 s t bàn phím, ví dụ nhập
số 12.
Máy tính: B n hãy nh p ti p 1 s nhiên khác. ế ố tự
Ngườ i: th c hi n độ ng tác nh p 1 s t bàn phím, ví dụ nhập
số 18.
Máy tính (sau 1 giây su p 2 s nhiên 12, y nghĩ): B n đã nhậ ố tự
18. Ư ớc s chung l n nh t 2 s này là 6.
Em có nhn xét gì v cuc hi tho i trên.
91 | T h c l p t r ì n h S c r a t c h
Ni dung bài h c
1. B i tho n ắt đầu 1 chương trình hộ ại đơn giả
Em hãy thi n ho ng h i tho i sau. ết lập chương trình để thc hi ạt độ
Nhân v t chính là 1 th y giáo, h d ng máy tính. ọc sinh là ngưi s
Thầy giáo: Chào h c sinh, em tên là gì?
Họ c sinh nh p t bàn phím: Hòa Anh.
Thầy giáo: Chào Hòa Anh, r c làm quen v i em. ất vui đượ
Sau 2 giây.
Th nhiên.ầy giáo: Bây gi em hãy nh p t bàn phím 1 s ố tự
Họ c sinh nh p t bàn phím: 15
Thầy giáo: T t l p s 15. ắm, em đã nhậ
Trong ví d c làm quen v i 1 d ng h i tho i th gi a máy tính và trên, chúng ta đượ c s
ngườ i s d u; hụng. Máy tính đưa ra yêu cầ c sinh tr l i thông qua bàn phím; máy tính nhn
kết qu t qu p ti p theo tùy thuvà đưa ra thông điệ ế c vào kế đã nhận được.
Để mô t quá trình hi thoi trên chúng ta s dng lnh sau t nhóm lnh Cm biến
(Sensing).
Lnh ( t hi n câu h i trên ask and wait) s cho phép nhân v
màn hình và ch i dùng nh p câu tr l bàn phím vào 1 dòng nh p li u. Câu tr l ngư i t i
này s u th c" hay "l nh" . Giá tr được lưu trong "biể này sau đó có th
đượ c s dng li vào các công vic khác. Chúng ta cùng xét ví d c th ca lnh này.
Trong lệnh trên chúng ta đã sử dng lnh trong nhóm lnh Tính toán
dùng để kết ni 2 giá tr hoc 2 cm t.
Chương trình đầy đủ ại này như sau: c a hoạt đ ng hi tho
Kết qu c a l nh th hi n màn hình
bên ph i
V p tr l nh t bàn trí nh i ca l
phím, k t qu n nhế lưu vào "biế "
Giá tr d giáo viên answer đưc s ụng để
tiếp t i tho i dc h i vi học sinh dướ ạng đầy
đủ c dnhư hình trên hoặ ng rút gọn như hình
92 | T h c l p t r ì n h S c r a t c h
2. Bi n nh là gì? ế
Trong hoạt động 1, chúng ta đã làm quen vi l t nh hay "bi n nh là 1 k thuế " answer, đây
được s d ng xuyên trong Tin h ng lụng thườ ọc, trong các môi trườ p trình. Cm t answer
luôn được hiu v nhới ý nghĩa là 1 vùng trong b máy tính để lưu tr mà ngườ giá tr i s
dng nh p t bàn phím thông qua l nh . Hi n bi n nh ask and wait ểu đơn giả ế đưc tạo ra để
lưu trữ ệu. Khi đượ d li c to ra ri thì chúng ta có th thc hin các phép tính vi biến nh
tương tự như vớ ệu lưu trong biế i d li n nh này.
Em hãy th n nh c hiện các chương trình đơn giản sau, qua đó hiểu được ý nghĩa của biế
trong Scratch.
Chương trình 1.
Thy giáo yêu c u h c sinh nh p t bàn phím 2 s t này nhiên m, n, sau đó thông báo 2 số
và t ng c a chúng.
Bước 1. Tạo 1 chương trình mới, b sung thêm nhân vt Thy giáo, khi t i o 2 bi n nh mế
đặt tên là m, n.
Để to 1 biến nh m i, em vào nhóm lnh D liu (Data) và nháy nút Make a Variable. Ca
s t o bi n nh ế có d ng sau, em nh p m t , ch n và nháy i ô Variable name For all sprites
OK.
Nháy nút Make a
Variable khnày để i
to 1 bi n nh mế i
93 | T h c l p t r ì n h S c r a t c h
Tương tự em to thêm biến nh có tên n. Hình nh sau trên khung mu lnh ca nhóm D
liu (Data) s xu t hi n các l nh làm vi i bi n nh . c v ế
Có hai l nh làm vi c quan tr ng v n nh i biế là:
Lnh thi p, gán 1 giá tr c ết l th cho bi n nh . ế
Lệnh thay đổi giá tr c n nh m a biế (tăng lên hoặc gi đi) theo 1
giá tr c . th
Chú ý: Nháy chut ph i lên 1 bi ến nh s xu t hi n 1 b ng ch n nh để thc hin thêm các
lnh b sung cho bi n nh này. ế
Bước 2. Thc hi a thn h i tho i gi y giáo và h i dùng máy tính). ọc sinh (ngườ
Đặ đâyt tên biến nh
Chn ki u bi n nh chung hay ế
ch riêng cho nhân vt hin thi.
Danh sách các biến nh đã khởi
to hi n đây.
Các l nh c a nhóm l nh làm
vic vi biến nh .
Các l i bi nh b sung v ến nh hin thi:
rename variable
: đổi tên biến nh.
delete variable: xóa bi n nh . ế
94 | T h c l p t r ì n h S c r a t c h
Bước 3. Thông báo t ng 2 s m, n.
Để th hin thông báo này chúng ta cn hin th 1 thông tin ch và giá tr tng m + n. Dùng
lnh / bi u th nhóm l n yêu c u này. c (t ệnh Tính toán) để thc hi
Lnh hay toán t m + n. dùng để tính giá tr
Kết qu c a thông báo này như sau:
Chương trình 2.
Thay đổi chương trình trên, yêu cầu hc sinh nhp 1 s t nhiên vi yêu c u s y ph i >
100. Giáo viên s liên t c sinh c n nh u nh p l u c thông báo cho h ập đúng và yêu cầ i nế
hc sinh nhập không đúng số theo yêu cu.
Để thc hiện chương trình này chúng ta sẽ s dng mt lnh lp m i, lnh l u kiặp có điề n
repeat until để kim tra hc sinh có nhập đúng yêu cầu hay không. Lnh lp này không ch
ra trước s ln lp, lnh s thc hi n vi c lặp cho đến khi 1 điề ện logic đượu ki c thc hi n.
Vi yêu c u c th c u ki n c n ki m tra là giá tr s mà h c sinh nh p ủa chương trình 2, điề
cn > 100. N u ki p sếu điề ện này đúng thì việc l d ng l i. Chúng ta s s d ng l nh, bi u
th thc logic so sánh t nhóm l nh tính toán, c bi u th c cần đưa vào vị trí ki m
tra ca lnh l p là .
Kết qu c xây d chương trình 2 đượ ựng như sau:
Biu th u ki n c nh l p: ức logic là điề a l
nhóm l nh này s c l p l i liên t đượ c cho
đế đúng.n khi biu thc này có giá tr
Gán giá tr c a answer
vào bi n nh . ế m
Gán giá tr c a answer
vào bi n nh . ế n
95 | T h c l p t r ì n h S c r a t c h
3. L nh, bi u th c, hàm có giá tr dùng như biến nh
Trong Scratch có rt nhi u l a 1 bi u th cm hàm s ệnh có ý nghĩa củ và được dùng tương tự
như biế mà em đã biến nh answer t.
Em cần chú ý đế ủa Scratch đển hình dng các lnh c phân bit.
Lệnh có 2 đầu thng
góc
Đây là các lệnh bình thường, không
có giá tr l u thtr ại như 1 biể c.
Lệnh có 2 đầu nhn
Đây là các lệnh tr li giá tr logic,
tức là Đúng hoặc Sai (True or
False).
Lệnh có 2 đầu tròn
Đây là các lệnh tr li giá tr s hoc
ch.
Trong các loi lnh trên, 2 lo i sau có th s d n nh , có th ụng như 1 biế đưa vào trong các
điều kin, biu thc tính toán ca các lnh khác.
Các bi u th nh hay bi n nh này có th chèn vào các v ng trong các c, l ế có giá tr trí tr
lnh khác nhau ca Scratch. Hình sau mô t nh c a các giá tr qui đị có th chèn.
Sau đây là 1 vài lệnh có ý nghĩa biể ụng như các biếu thc và có th s d n nh trong Scratch.
Nhóm Chuyn
động (Motion)
Tr li giá tr là tọa độ X ca
nhân v i th m hi n th t t ời đi i.
Nhóm Chuyn
động (Motion)
Tr li giá tr là tọa độ Y ca
nhân v i th m hi n th t t ời đi i.
Nhóm Cm biến
(Sensing)
Tr li trạng thái logic Đúng / Sai,
đúng nếu nhân vt va chm vi 1
nhân v t khác ho nh sân c c
khu.
Nhóm Cm biến
(Sensing)
Tr li trạng thái logic Đúng / Sai,
đúng nếu nhân vt tiếp xúc vi
màu s c ch n trong l nh. ắc đượ
Nhóm Cm biến
(Sensing)
Tr li trạng thái logic Đúng / Sai,
đúng nếu người dùng nhn phím
tương ứng.
Nhóm Tính toán
(Operators)
Tr l s ng u nhiên ni giá tr m
gia 2 giá tr s được ghi trên
thanh lnh.
Ti các v trí tròn ch cho phép nh p
hoc chèn giá tr s, nguyên ho c th p
Ti các v trí cho phép nh p hovuông c
chèn giá tr c logic. s , ch ho
96 | T h c l p t r ì n h S c r a t c h
Nhóm Cm biến
(Sensing)
Tr l i gian hi n thi giá tr th i
(giây, phút, giờ, năm, ….). Các
thông s có th l a n. ch
- year: năm (2016)
- 12) month: tháng (1
- date: ngày c a tháng (1 31)
- day of week: ngày c n a tu
(17)
- hour: gi hi n th 23) i (0
- n th 59) minute: phút hi i (0
- n th i (0 59) second: giây hi
Nhóm Tính toán
(Operators)
Tr l y ký ti giá tr là ghép
ni ca 2 biu th c trong ô vuông
ca lnh.
4. M ví d s d n nh và hàm s t s ng biế
4.1. Để điều khin nhân v t chính xu t hin ngu nhiên trên màn hình, em có th s dng
đoạn lnh sau:
4.2. Chúng ta mu n th hi n th i gian ch y online trên màn hình, ví d trong hình sau.
thì cn th n l nh sau: c hi
4.3. Điề ạm đáy màn hình chưa.u kin kim tra xem nhân vật đã ch
4.4. Điề ỉnh trên màn hình hay chưa.u kin kim tra xem nhân vật đã ch m đ
5. T o nút cho phép nh u ch nh bi n nh trên màn hình ập điề ế
97 | T h c l p t r ì n h S c r a t c h
Ho ết động này cho phép thi t lp giao di i s d ng nh p ho u ch nh ện cho phép ngư ặc điề
d liu ngay trên màn hình trong quá trình ch n nh p b ng l nh ạy chương trình mà không cầ
ask and wait.
Chúng ta cùng thc hin bài toán sau.
Chương trình cho phép ngườ ập điề i dùng nh u ch nh 2 giá trị s
m, n ngay trên màn hình và sau khi ngườ i dùng nháy chu t lên
nhân v ng c a hai sật chính thì chương trình thông báo tổ
này.
Để cho biến nh luôn hin th giá tr trên màn hình em cn nháy chn vào ô hin th bên
cnh bi ng bi n nh y vểu tượ ế . Làm tương tự như vậ i biến nh n. Các bi ến nh hi n
trên màn hình s có d ạng như sau:
Bây gi chúng ta hãy th i dùng có th c hiện thao tác cho phép ngườ thay đổi trc tiếp giá tr
ca các biến nh này trên màn hình. V i m i bi n nh ế thc hin 2 thao tác sau:
- Nháy chu i lên v n nh trên sân kh u và nháy ch n l nh . t ph trí biế slider
- Nháy chu i lên v n nh 1 l n n a và ch n l nh t ph trí biế set slider min and max để thiết
lp vùng d u mu u ch li ốn điề nh tr c p giá tr tiế c n nha biế . Xu t hi n h p h i nh i tho
sau, cn nh p 2 giá tr . Min Max
Bây gi em có th t l p các l n theo yêu c u c thiế ệnh để thc hi ủa chương trình.
98 | T h c l p t r ì n h S c r a t c h
Câu h i và bài t p
1. Các l n nh ng công vi c gì? ệnh sau đây thực hi
A.
B.
C.
2. Em hãy vi nh ho các yêu c u sau. ết các l ặc đoạn chương trình mô tả
A. Mô t i gian hi n th ng ti ng Vi t, ví d : th i b ế
Bây gi là 15 gi 20 phút 14 giây.
B. Cho nhân vt chuy ng ng u nhiên trên sân kh u, n u g p c nh sân kh u thì quay l ển độ ế i.
C. Đếm ngượ Time được gán ban đầc thi gian: biến nh u giá tr 10 và s hin th đếm
ngược trên màn hình v 0.
M rng
1. Hãy thi t k n ế ế 1 trò chơi đơn giả Mèo và Bóng sau:
Trên màn hình có con Mèo và qu Bóng.
99 | T h c l p t r ì n h S c r a t c h
Thi gian cho mi cuc chơi là 15 giây. Trên
màn hình bi n nh Time s 15 v ế đếm ngược t
0.
Khi b t đầu chương trình, quả bóng s d ch
chuyn nhanh trên sân kh u m t cách ng u nhiên.
Nhim v c t nhanh ủa người chơi là nháy chuộ
lên qu bóng, càng nhi u l n càng t t.
Khi thi gian lùi v 0, t ng l i. Mèo con rò chơi dừ
thông báo "Game Over" và sau đó thông báo số
ln b n nháy chu t chính xác lên qu bóng.
Thiết l la i lp 2 nhân v t Mèo và Bóng. T o 2 bi n nh ế Time - thi gian c a m ần chơi và
ClickCount m s l ên qu bóng. dùng để đế ần người chơi nháy đúng l
Chương trình cho Mèo.
Chương trình cho Bóng.
2. B sung thêm âm thanh vào trò chơi trên cho chương trình thêm sinh động khi chơi.
100 | T h c l p t r ì n h S c r a t c h
Bài 10. H i tho i và truy n thông
Mục đích
- n bài toán h u khi n thông qua p. Thc hi i thoại có điề thông điệ
- i quy t v p truy n thông gi a các nhân v Gi ế ấn đề thông qua thông điệ t.
Bắt đầu
1. Em đã bao giờ ạn đều đ tham d 1 cu c h p lp mà các b ng thanh nói, không ai chu
nghe ai c 1 vài ví d chưa? Hãy kể thc tế như vậy.
2. Em hãy mô t theo u bi a em v ng c n t (email) trên hi ết c hoạt độ ủa mô hình thư điệ
thc tế.
3. Trên l p h c, cô giáo ra 1 bài t p yêu c u c l p làm. Sau 5 phút, cô nói: b n nào xung
phong lên b ng làm. M n lên b ng làm cho c l p xem. t s cánh tay giơ lên. Cô gọi 1 b
Em có nh i thon xét gì v mô hình h i trong ví d trên.
Ni dung bài h c
1. Bài toán h i tho u khi a 3 nhân v t ại có điề n gi
Chúng ta cùng nhau xây dựng chương trình với bài toán sau:
Có 3 bn: Lan, Bình, Vi u, t trên sân kh
Lan
Bình
Vit
Đầu tiên Lan chào: "Xin
chào b n Bình, b ạn đi đâu
đấy"?.
Bình nghe hi u và tr i: lờ
"Tôi đi chơ i v i m ".
Sau đó Lan nói: "Việt đấy
à, chào b n".
Việt nghe th y và tr i: lờ
"Chào Lan, bạn đi đâu đấy?
101 | T h c l p t r ì n h S c r a t c h
Qui trình thc hin bài toán h i tho - truy i ền thông này như sau.
- p "H i Bình" và "Chào Vi Lan thiết lập 2 thông điệ t".
- n Bình, b y?" và g p "H i Bình". Lan nói "Xin chào b ạn đi đâu đấ ửi đi thông điệ
- p "H i Bình" thì th n 3 vi c sau: Bình nhận được thông điệ c hi
+ Thi p "Bình xong r ết lập thông điệ i".
+ Nói: "Tôi đi chơi với m".
+ G p "Bình xong r ửi đi thông điệ i".
- p "Bình xong r i" thì th n ti p 2 vi c sau: Lan nhận được thông điệ c hi ế
+ Lan nói: "Vi y à, chào b n". ệt đấ
+ G p "Chào Vi i đi thông điệ t".
- p "Chào Vi t" thì nói: "Chào Lan, b y". Vit khi nhận được thông điệ ạn đi đâu đấ
Chương trình đượ như sau.c xây dng và thiết kế
Chương trình của Lan.
Chương trình của Bình.
Chương trình của Vit.
2. G i và nh p ận thông điệ
Đọ c và ghi nh các lnh truyn thông trong Scratch.
Để x lý các bài toán hi thoi - truyn thông, trong Scratch có 2 lnh quan tr ng sau trong
nhóm . S n ki
102 | T h c l p t r ì n h S c r a t c h
Lnh phát / truy ng th i có th t o ra 1 ền thông điệp, đồ
thông điệ p m i. M i nhân v t có th t o ra và phát
không h n ch các th p. M p có 1 tên ế ông điệ ỗi thông điệ
riêng và tn t i trong su i gian th t th c hin chương
trình.
S ki n nh p. L nh s ki n này cho phép ận thông đi
người nhận thông điệp x lý chính xác
Ca s t p mạo 1 thông điệ i.
- nh , ch n . Vào l broadcast New Message
- p tên c p t . Nh ủa thông đi i v trí Message Name
- Nháy . OK
Như vậ ận thông điệ ận thông điệy mô hình gi và nh p, x lý khi nh p là các công c chính x
lý bài toán truy t trong mô hình Scratch.n thông, quan h gi a các nhân v
Xét 1 vài ví d sau, em hãy vi a mình c p gì gi ết suy nghĩ củ ần đưa ra quan hệ, thông điệ a
các nhân vật để gii quyết các bài toán sau.
Bài toán, vấn đề
Quan h truy n thông gi a nhân v t
Có 1 thy giáo và nhi u h c sinh trên sân kh u.
Ti 1 thời điể ói đượm thy ch n c vi 1 hc sinh.
Làm th h c sinh nào biế nào để ết được thy
đang nói và đang hỏi ai?
Trên sân khu có 3 nhân v t: 1 bút chì, 2 nút có
màu xanh và đỏ. Khi người dùng nháy lên nút
đỏ thì bút chì v màu đỏ, khi người dùng nháy
Mi nhân vật được
phép t o và g i thông
điệp ca mình ra cng
đồng cho tt c.
Người nhận đúng thông
điệp s x p lý thông điệ
này và t p ạo ra thông điệ
tr l i thông i, g i l
điệ p này cho c ng
Mô hình g i và nh n thông
điệp gia các nhân vt.
103 | T h c l p t r ì n h S c r a t c h
lên nút xanh, bút s v màu xanh. Mô t
hình truy n thông c a sân kh u này.
Trên sân khu có 2 v ng viên, 1 qu bóng ận độ
và 1 tr ng tài. Khi tr ng tài th i còi, 2 v ng ận độ
viên b bóng sang nhau. Hãy mô t ắt đầu đá quả
mô hình truy n thông c u này. a sân kh
3. S d ng "nút l nh" trong các bài toán giao ti ếp
Chúng ta cùng nhau thc hin m n có s d ng các "nút l hi u ột chương trình đơn giả ệnh" để
thêm vai trò c p trong các bài toán có giao ti p. ủa thông điệ ế
Thiết lập 1 chương trình bao gồm có 3 nút lnh: Desert, City và Castle. Khi nháy lên các nút
này thì n n sân kh u s i hình ng. thay đổ ảnh tương
Để xây d n th n các vi c sau: ựng chương trình này, em cầ c hi
- p 1 d án Scratch m sung 3 n n sân kh t tên Desert, City và Sastle. Thiết l i, b ấu và đặ
- T o m i 3 nhân v t có hình nút l nh có tên Desert, City và Sastle.
- Làm n nhân v t chính (Mèo con) trên sân kh u.
- V i 3 nhân v t (nút l nh) v o, m i nhân v p có tên trùng v a khi t t thi t lế ập 1 thông điệ i
tên ca nhân vt.
- Xây d ng ng v ựng 3 đoạn chương trình tươ i 3 nút lệnh này như sau:
Desert
City
Castle
Bây gi có th a nhân v thiết lập đoạn chương trình củ t chính như sau:
Thiết lp 3 hình
nn sân kh u v i
các tên gi desert
(sa m c), city
(thành ph), castle
Thiết lp 3 nhân
vt dng nút l nh
vi tên g i desert
(sa m c), city
(thành ph), castle
104 | T h c l p t r ì n h S c r a t c h
4. Vai trò truy n thông c p ủa thông điệ
Trong hoạt động trên em đã thấ ọng nhưy rõ vai trò của thông điệp quan tr thế nào trong vic
điều khin kết ni gia các nhân vt trên sân khu và gii quyết các bài toán nói chung trong
môi trường Scratch.
Thông điệp có tính năng truyền thông tin tuyệt đối chính xác.
Thông điệp đượ ận thông điệc truyn qua các Message có tên chính xác, khi nhân vt nh p
này s x lý thông qua l nh , do v y s when I receive <message> tuyt đối chính xác.
Truyền thông điệ ần như tp rất nhanh chóng, g c thời.
Thông điệp đượ ần như tức gi bng lnh gbroadcast c thi, không có hiu ng chm ch
v thi gian.
Việc lập trình s d p truy n thông r t sáng s ụng thông điệ ủa, rõ ràng và đơn giản.
Em hãy th ki ng cách th c 3 b ng 2 cách. Cách 1 s m tra b c hiện chương trình trong mụ
dụng thông điệp, cách 2 s dng biến nh để điều khi n.
Câu h i và bài t p
1. M t nhân v t có th t ng th u nhi p và g ng th ạo đồ i nhi ều thông điệ ửi đ i t t c các
thông điệp đó được hay không?
2. M t nhân v t có th nh n và x ng th p t a ch lý đồ ời 2 thông điệ 2 đị khác nhau được
hay không? Cho ví d .
3. Vi u c u sau. ết chương trình cho bài yê
Trên màn hình có 3 nhân v ng v ật: Mèo con, Lan và Hùng đang đứ trí như trong hình. Cả
Lan và Hùng đề u mun Mèo chy v phía mình.
Khi nháy chu t lên Lan, Mèo s quay v ng Lan và ch y v phía Lan. hướ
Khi nháy chu t lên Hùng, Mèo s quay v ng Hùng và ch y v phía Hùng. hướ
105 | T h c l p t r ì n h S c r a t c h
M rng
1. M r ng bài t p l n c hình 2, em hãy thi t do sau. a bài V ết lập chương trình Vẽ
Yêu cu:
- n bao g m 1 cây bút chì và 2 nút Giao di
Xanh, Đỏ góc dưới màn hình.
- n chu t trên màn hình, bút v Khi di chuy
luôn đi theo vị trí con tr.
- n phím Space s b v . Nh t / t t ch ế độ
- Nháy chu s t lên nút màu xanh hoặc đỏ
có tác dụng đổi màu v thành xanh hoặc đỏ.
2. Thi n sau. ết lập chương trình đơn giả
u: Yêu c
- n ph n m m bao g m: 1 Th y giáo, 2 Giao di
nút l nh "Tính t ng" và "Tính hi u". 2 giá tr s
m, n có th nh u chính ngay trên màn ập, đi
hình.
- i dùng nháy lên các nút l nh "Tính Khi ngườ
tng" và "Tính hi u", th y giáo s thông báo k ết
qu c ng ngay trên màn ủa phép tính tương ứ
hình.
Ví d k c a phép s ết qu Tính hiu như sau:
V u c a Mèo trí ban đầ
con, Lan và Hùng.
106 | T h c l p t r ì n h S c r a t c h
107 | T h c l p t r ì n h S c r a t c h
Bài 11. C m bi n ế
Mục đích
- m và mô hình c m bi n trong Scratch. Khái ni ế
- c các l nh c m bi n: t , kho ng cách, màu s Hiểu đượ ến đơn giả a đ c.
- C m bi n va ch ế m gia các nhân vt.
- n nh chung và riêng. Mô hình biế
Bắt đầu
1. Em có nghe, đọ ại đó là các giác quan nào?c sách báo nói v 6 giác quan, em hãy nh l
2. Gi s em mu n vi t (nhân v a em ch y t do trong 1 ết 1 chương trình cho 1 con vậ t) c
vòng tròn màu đỏ, không cho nhân vt chy ra ngoài. Em s ph i làm gì?
3. Trong các câu sau, câu nào có liên quan đế ện, câu nào liên quan đến s ki n cm biến?
- Sáng ch nh ng t p hát. ật em đến trườ
- ng em b lóa m t vì m i chi u th ng vào m Đi trên đườ t tr ế t.
- B n An r . ất thích màu đỏ
- Sáng em th h khi nghe chuông báo th c giấc đúng 6 c.
- Sáng nào b m y s t p th d em cũng dậ ớm vào lúc 6h để c.
- , b em l p t l Khi nhận được thư mẹ c viết thư trả i.
- n phím Enter, d p s ng Internet. Khi nh liệu được nh đưa lên mạ
- Em bé r t s ng n, m i khi nghe ti ng l n thì khóc. tiế ếng độ
Qua các ví d trên em hãy ch gi ng nhau và khác nhau gi a 2 khái ni ra s m S n ki
Cm biến. Hãy điền suy nghĩ của em vào bng sau:
108 | T h c l p t r ì n h S c r a t c h
Vấn đề / câu h i
S kin
Cm bi n ế
Hành động xut phát t bên
ngoài hay t b n thân nhân
vt
S vic có ph thuc vào b n
thân nhân vt hay không?
S vi c lên k hoệc có đượ ế ch
trước hay không?
S vi c th c hi n ệc có đượ
theo thời gian định trước hay
không?
S vic có các tham s liên
quan đến các giác quan con
người hay không?
Ni dung bài h c
1. Các câu l m bi n trong Scratch. nh c ế
Các l nh c n n nh Sensing (C m bi n). Các l u m biế m trong nhóm l ế ệnh này thường điề
khin, x lý thông qua các thông s mang tính c m nh nh tính và không ph c vào ận, đị thu
các tác độ ng bên ngoài (s kin). Chính vì vy chúng ta g i chúng là các lnh cm bi ến. Để
so sánh cm bi m nhến và s ki n c ện chúng ta thường nghĩ đế n c a các giác quan c a con
người và các s kiện độc lp t bên ngoài.
Trong Scratch, các lnh c m bi ng là các bi u th c, hàm s . Các hàm s y s l ến thườ tr i
giá tr c a các thông s mang tính "c m bi n", ch ph thu c vào n t. B ng sau ế i t i nhân v
cho ta m t t ng quan v các hàm hay dùng nh nh C m bi n. t trong nhóm l ế
Cm bi n màu s ế c.
Cm bi n kho ng cách, va ch ế m.
Cm bi n chuế t và bàn phím.
Cm bi n thế i gian.
Thông tin thuc tính c t và sân a nhân v
khu.
109 | T h c l p t r ì n h S c r a t c h
Lnh h tr h i tho i nh p d liu tr p c tiế
t bàn phím.
2. C m bi n màu s c ế
Cm bi n màu s c là nh ng càm nh n, nh n bi n màu s c. Em hãy cùng th c ế ết liên quan đế
hin các ho hi u các l nh c m bi n màu s ạt động sau để ến liên quan đế c trong Scratch.
Nhân vt chính c a chúng ta là 1 con chó nh hi m gi a sân kh u. ện đang n
Yêu cu th c hiện chương trình.
Cho con chó nh ng ng u nhiên, m i l n ch y chạy theo các hướ
10 bư ế ớc và ngh 0.3 giây. N u chó ch m vạch đỏ thì lập t c b
đặt vào v trí tâm c a vòng tròn trình l i ti p , chương ế
tục.
Em hãy s d ng l nh c m bi n u khi n nh n bi t khi chó ch ế để điề ế m
vạch đỏ. Để chn màu c n chính xác em th n: sau khi kéo th l nh trên ra c m biế c hi a s
lnh, em nháy chu t lên ô màu bên ph i lệnh, sau đó nháy chuột lên vạch đỏ trên sân khu
để chn màu cm biến.
Chương trình đượ ới đây.c mô t trong hình dư
3. C m bi n kho ng cách, va ch ế m
Trong môi trườ ệnh liên quan đếng Scratch có 2 l n cm biến khong cách, va chm.
Lnh này s tr l i giá tr u nhân v n th i va ch m v đúng nế t hi i
1 nhân v t khác / ho c va ch m v chu c va ch i con tr t / ho m
vi c i nó trnh sân khấu. Ngược l v giá tr sai.
Lnh này s tính và tr v giá tr kho ng cách t nhân v n th t hi i
đế n 1 nhân vt khác / ho ếc đ n v trí con tr chut.
Chúng ta cùng tìm hiu c m bi n kho ng cách, va ch m thông qua ví d ế sau.
Trò chơi Chó đuổi Mèo.
110 | T h c l p t r ì n h S c r a t c h
Chương trình riêng cho Mèo và Chó đưc th hin trong hình sau. Có th to thêm âm thanh
tiếng kêu m ng r c a Chó khi b c Mèo. ắt đượ
4. C m bi n chu t và bàn phím ế
Em hãy thi i Bóng. ết kế trò chơi đơn giản Mèo đuổ
Yêu cu c ủa trò chơi như sau:
Mèo s n Bóng và ch y v phía luôn hướng đế
Bóng. Nếu b c bóng thì Mèo s kêu lên ắt đượ
tiếng "B c bóng r thêm âm ắt đượ i" (có th
thanh để ế trò chơi thêm hấp dn) và k t thúc.
Người chơi sẽ dùng chuột để điều khin qu
bóng. Nháy chu t lên màn hình s l p t c làm
cho Bóng d ch chuy n v ển nhanh đế trí chut.
Người dùng cũng có thể click và rê chut trên
màn hình để kéo th Bóng chy trn khi Mèo.
Trên sân khu có 2 nhân v t chính là Chó và Mèo.
Mèo đượ điềc u khin chuy ng bển độ ng bàn phím.
Người dùng s dng các phím up, down, left, right
để d ch chuy ng lên, xuển mèo theo các hướ ng,
trái, phải tương ứ ần điề ển đểng. C u khi Mèo tránh
gp Chó.
Chó chuy ng ng u nhiên trên màn hình. N u ển độ ế
Chó va ch Mèo, Chó s kêu "Ha ha ha" và t m vi
to lên 10%.
111 | T h c l p t r ì n h S c r a t c h
Em cn s d ng l nh c m bi n và l nh chuy ng ế ển độ để
điều khi ng vển Mèo luôn hướ Bóng và chy v phía Bóng.
Vi Bóng, em c n s d ng các l nh c m bi n chu nh th ế t là để xác đị i
điểm ngườ ọa đội dùng nháy chut, dùng các hàm , để tính t chính xác
ca chut t i th ời điểm nháy chut.
Chương trình dành cho Bóng (trái) và Mèo (phải) như hình dưới đây.
5. C m bi n th i gian ế
Các hàm c n th i g m bi n t m th i gian theo m biế ian trong Scratch bao g ế động đế
giây, và hàm l i các giá tr c a th i gian h ng. L nh tr th
có tác dụng đặt l i t đẩu cho bi . ến đếm
Áp dng: thi ng h kim ch y trên màn hình. ết kế chương trình mô tả đồ
Thiết lp d án chương trình như sau:
- Sân kh u n n là m ng h kim (analog clock) ặt đồ
- t là: kim giây, kim phút, kim gi . Có 3 nhân v
Chú ý thiết l i vp tâm c a các kim này t trí tâm hình tròn.
- các kim v v t phát: tâm c ng v i tâm c a sân kh u. Đưa tất c trí xu a các kim mày trù
112 | T h c l p t r ì n h S c r a t c h
Để vi u khiết chương trình điề n, em s viết cho t ng hừng kim đồ . V là tính góc quay ấn đề
ca t chính xác theo thừng kim đồng h i gian. S d ng hàm tính giá để
tr ca giây, phút, gi theo th i gian h ng. th
Chương trình cho kim giây.
Chương trình cho kim phút.
Chương trình cho kim giờ.
Câu h i: em có th y chính xác không? ấy chương trình chạ
V hình n n
sân khu là
mt tròn ca
đồng h kim.
Thiết lp 3
nhân vt là
kim giây, kim
phút, kim gi .
Th i gian theo giây có giá tr t 0
đến 59, tương ứng vi giá tr góc
quay là 0 đến 360. Do đó mỗi
giây, góc c n quay kim giây là
<giá tr giây> * (360/60) =
Thi gian theo phút có giá tr t 0
đến 59, tương ứng vi giá tr góc
quay là 0 đến 360. Do đó mỗi
phút, góc c n quay kim phút là
<giá tr phút> * (360/60) =
Th i gian theo gi có giá tr t 0
đến 23, tương ứng vi giá tr góc
quay là 0 đến 360x2 = 720. Do đó
mi gi, góc c n quay kim gi
<giá tr gi > * (720/24) =
113 | T h c l p t r ì n h S c r a t c h
6. Ki : dùng chung và riêng u bi n nhế
Khi khi t o 1 bi n nh n l n 1 trong 2 ki u, bi n nh dùng ế trong Scratch, chúng ta c a ch ế
chung và biến nh dùng riêng.
Chú ý: N u chúng ta kh o 1 bi n nh riêng cho 1 nhân v t thì bi n nh này ch xuế i t ế ế t
hin trong b ng l nh c t này mà không hi n trong b ng l nh c a nhân v a các nhân vt
khác. Tuy nhiên bi n nh này s xu c tính c a nhân v t này. Các nhân vế t hiện như 1 thuộ t
khác mu n truy c p giá tr y c n th n thông qua l nh, hàm c m bi n truy xu t thu c hi ế c
tính ca nhân vt.
Trong ví d trên, bi c kh o cho nhân v t Lan th t khác ến Count là riêng đư i t ì các nhân v
s truy c p bi n nh ế y thông qua l nh .
Câu h i và bài t p
1. M r i Mèo, b sung thêm bi m cho phép Chó va ch m vào Mèo ộng trò chơi Chó đuổ ến đế
3 l n thì k ết thúc chương trình.
2. M r t Bóng, b sung thêm bi m i gian t khi b n ộng trò chơi Mèo bắ ến đế th ắt đầu cho đế
khi Mèo b c bóng, th hi n th i gian này trên màn hình. ắt đượ
M rng
1. Trò chơi ết chương trình điĂn táo. Vi u khin con Cánh cam bng bàn phím, chuyn
động đế ờng đi khôngn v trí Qu táo góc phi dưới sân khu, dọc đư được va chm vi bt
c vết màu nào trên màn hình. N u ch m vào các vế ết màu này thì b thua.
Biến nh dùng chung: t m i nhân t c
v t đ u có quy n nh i giá tr c ập, thay đổ a
biến nh này. Bi n nhế chung còn có tên
gi Global Variable.
Biến nh dùng riêng: ch nhân v t là ch
ca biến này có quy n nh i giá tr , ập, thay đổ
các nhân vt khác ch có quy n xem, khai
thác giá tr i . Bi n nh riêng còn có tên gế
Local Variable.
114 | T h c l p t r ì n h S c r a t c h
2. M r hi ng h kim ch y chính xác trên màn hình. ộng chương trình thể ện đồ
Gi ý:
Cần điều khin kim phút chy theo tng giây và kim gi theo tng
phút.
Mun vậy đối vi kim phút và kim gi cn thiế t l p thêm biến nh
(riêng) angle cho mi nhân v t này và tính toán chính xác góc c n
quay theo th i gian.
Bng sau mô t chi ti u khi n các kim gi , phút, giây chính xác. ết các điề
Điều khin
kim giây
theo tng
giây.
Kim giây không c u n thay đổi điề
khin, c p nh t theo t ng giây.
Th i gian theo giây có giá tr t 0
đến 59, tương ứng vi giá tr góc
quay là 0 đến 360. Do đó mỗi giây,
góc c n quay kim giây là <giá tr
giây> * (360/60) = <giây>*6.
Điều khin
kim phút
theo tng
giây.
Nâng cấp điều khin kim phút theo
tng giây.
Th i gian theo phút có giá tr t 0
đến 59, tương ứng vi giá tr góc
quay là 0 đến 360. Do đó mỗi phút,
góc c n quay kim phút là <giá tr
phút> * (360/60) = <phút>*6.
Điều khin
kim gi theo
tng phút.
Nâng cấp điều khin kim gi theo
tng phút.
Th i gian theo gi có giá tr t n 0 đế
23, tương ứng vi giá tr góc quay là
0 đến 360x2 = 720. Do đó mỗi gi,
góc c n quay kim gi là <giá tr gi >
* (720/24) = <gi >*30.
115 | T h c l p t r ì n h S c r a t c h
CHƯƠNG 4: SCRATCH NÂNG CAO
116 | T h c l p t r ì n h S c r a t c h
Bài 12. X lý s 1
Mục đích
- n nh và vai trò c n nh . Biế a biế
- Phân bi t bi n nh và bi u th ế c.
- n v i giá tr s và logic. Các phép tính, tính toán đơn giả
- n m lý s n. Thc hi t vài bài bài toán x đơn giả
Bắt đầu
1. Chúng ta nh l c trong bài V ại 2 đoạn chương trình vẽ hình vuông và ngũ giác đều đã họ
hình 2.
V hình vuông
V u hình ngũ giác đề
Em có suy nghĩ gì về vic có th t v ổng quát hóa đoạn chương trình này để 1 hình đa giác
đề u n cnh bt k ?
2. Các bi u th h c, ví d : c s
7
8
+
9
10
7+
5
6
23
50
2 +
1
2
45− cos15
s được tính toán như thế nào trong Scratch?
Ni dung bài h c
1. Bi n nh và hàm s ế
Chúng ta đã làm quen với biế n nh và các l nh tr l i giá tr (hay còn g i là hàm s ong ) tr
Scratch. Ho ng này là m ng c ki n th ạt độ t c ế ức đã biết.
Định nghĩa biến nh:
Biến nh là 1 vùng trong b t tên b ng m t dãy ch và s nhớ, được đặ , dùng để lưu
tr (s th các giá tr , ch c logic). Bi n nh do h ho ế có th ng t n hoo s ặc do người
dùng t t giúp gi t các bài toán l p trình. ạo ra để i quyế
117 | T h c l p t r ì n h S c r a t c h
Qui định đặt tên biến nh: Scratch không đặ ặt cho cách đặt các điều kin ch t tên biến nh.
Tên biến nh phân bi t ch hoa, ch ng và có th u cách. Tuy nhiên v thườ cha d i các
ngôn ng l p trình b c cao thì tên bi n nh nh khá ch . Các em c n ế thường được qui đị t ch
nh 1 s qui t ng cho các ngôn ng l p trình b ắc chung này để áp d ậc cao trong tương lai.
Tên bi n nh i là dãy ch , không có d u cách, không nên ch a các ký t ế ph hoc s
đặc bi \ / + - t tên biệt như : ; , [ ] { } ( ). Nên đ ến nh là 1 cm t có ý nghĩa để d nh.
Không nên đặt tên biến nh vi quá nhiu ch hoa
Ví d tên bi n nh p l : x1, abc, solution, time_out, click_count, con_meo, ế như sau là hợ
chim_bay, thoi_gian, ….
Các t n nh p l : 12+23, sinx, ANHSang, ên biế như sau thì không nên và không hợ
C://thu_muc, ….
Chú ý: các bi n nh dùng chung c n có tên khác nhau tế ng đôi một trong chương trình.
Biến nh t tên trùng nhau. riêng nhân vt có th đặ
Định nghĩa hàm số:
Hàm s do n i dùng ho ng t t tên b ng m t dãy ch và s , gườ c h th ạo ra, được đặ
dùng để tính toán mt giá tr trong b nào đó, được lưu trữ nh và được s dng
tương tự như các biế n nh trong các câu lnh.
Hàm s có th có ho c không có các tham s u vào. Ví d . đầ
- Hàm l X c trí con chu t hi n th i. Hàm này không có tham s . tr i tọa độ a v
Các bi n nh i l p trình ế do ngư
to ra s hi n trong khung l nh th
D liu (Data).
Các hàm s o s n trong h được t
thống, mang ý nghĩa khác nhau và đều
tr li các giá tr có ý nghĩa trong quá
trình gi t vi quyế ấn đề.
118 | T h c l p t r ì n h S c r a t c h
- Hàm ng trên bàn phím. Hàm có 1 tham s là tên phím tương ứ
s l i giá trtr Đúng nếu phím này đượ ếu phím này không được nhn, và tr li Sai n c
nhn.
- Hàm tính t ng có 2 tham s u vào là 2 s . Hàm s l t ng c a hai đầ tr i giá tr
s này. Tham s đầu vào có th l y giá tr c ho y t các bi n nh th c l ế ho c hàm s khác.
Ví d các cách truy n tham s cho hàm tính t ng này: , ,
.
Biến nh t nhi u ý ng . Chúng ta hãy cùng xét 1 ví d y c m h ng có r hĩa trên thực tế sau, l
t ví d v các hình t u trong ph n m giác, ngũ giác đ đầu c a bài h c này.
S d ng các bi n nh c nh c n v , bi n nh ế so_canh để lưu số a đa giác mu ế do_dai_canh
để lưu độ ạnh đa giá, khi đó đoạn chương trình vẽ 1 đa giác đề ổng quát như sau: dài c u t
2. Các thao tác làm vi n nh c vi biế
Đố i v i biến nh, 2 lnh quan trng nht là lênh gán giá tr và l i giá trệnh thay đổ c a biến
nh. Các lệnh này được th c hi ện trong Scratch như sau, so sánh vi cách vi t trong 1 s ế
ngôn ng l p trình b c cao khác.
Lnh
Scratch
Pascal
C, Java
Gán giá tr cho bi n nh ế
m:=10;
m = 10;
Thay đổi giá tr ca biến nh +
1
m:=m+1;
m++;
Thay đổi giá tr ca biến nh -
1
m:=m-1;
m--;
Mt s l nh, thao tác khác v i bi . ến nh
Hin giá tr bi n nh trên sân kh u, xóa bi n nh i tên bi n nh . ế ế ớ, đổ ế
Nút chọn để làm hin / n giá tr
biến nh trên sân kh u.
Lệnh đổi tên biến nh.
Xóa biến nh .
Nháy chu t ph i lên bi n nh t ế i
khung điề ển Data đểu khi hin
bng ch n này.
119 | T h c l p t r ì n h S c r a t c h
Khi biến nh c hi n th trên sân kh u thì có th c hi n các thao tác sau b ng cách đã đượ th
nháy chu t ph i lên v trí bi n nh . ế
Đoạn chương t ạnh tăng dầrình sau mô t bài toán v liên tục các hình đa giác đều vi s c n
t n 18. K hi n trong hình ph 4 đế ết qu th i.
3. Ki u trong Scratch u d li
Khi 1 biến nh c kh o trong Scratch, chúng ta không c n khai báo bi u d u cho đượ i t li
biến nhi này. Trong quá trình làm vi c, tùy thu u nh p, bi n nh c vào d li ế i t động nhn
biết 1 trong 3 kiu d liu sau:
S (Number). Bao g m s nguyên và th p phân.
Logic (Boolean). Kiu d u ch có 2 giá tr li Đúng (true) và Sai (false).
Xâu (String). u d u là dãy các ch , kí t . Ki li
Ví d n u bi n nh o thì có th gán cho n các giá tr sau: ế ế được khi t
Thanh trượt điều chnh giá tr
biến nh ngay trên màn hình.
Chế hi n th ng độ bình thư
có tên và giá tr bi n nh . ế
Chế hi n th l n chđộ có giá
tr bi n nh . ế
Bt / tắt thanh trượt điều chnh d lin
biến nh
Thiết lp kho ng d liu min/max cho
thanh trượt.
n biến nh trên
sân khu
120 | T h c l p t r ì n h S c r a t c h
Gán giá tr s cho n
Gán xâu ký t cho n
Gán giá tr logic cho n
Em hãy th n các l n k t qu vào c c hi ệnh sau và điề ế t ph i trong b ảng dưới đây, từ đó có
nhn xét gì v u d u và cách th hi n chúng trong Scratch. các ki li
Biếu th c, lnh
Kết qu
4. Các phép tính đơn giản vi s trong Scratch
Nhóm l nh Operators (màu xanh lá cây) bao g nh, phép tính làm vi c v u m các l i d li
s, logic và xâu ký t . Trong bài h c này chúng ta làm quen v n v ới các phép tính đơn giả i
s.
Phép tính cộng, tr nhân, chia s p phân ố thậ
(hàm) phép c ng 2 s
(hàm) phép tr 2 s
(hàm) phép nhân 2 s
(hàm) phép chia 2 s , k th p ết qu
phân.
Làm tròn số
(hàm) làm tròn s c a 1 s , l y s nguyên g n nh t s
này.
(hàm) làm tròn (lên) c , l y s nguyên g n nha 1 s t
trên s này.
(hàm) làm tròn (dưới) ca 1 s, ly s nguyên gn nht
dướ i s này.
Phép chia số nguyên
(hàm) l y s nguyên dư của 2 s
(hàm) lấy thương nguyên của 2 s
nguyên
Phép tính lũy thừa
(hàm) l
ấy lũy thừa ca 2 s thp phân n
a
121 | T h c l p t r ì n h S c r a t c h
(hàm) l
ấy lũy thừa ca 2 s nguyên n
a
Phép lấy căn thức, trị tuyệt đối
(hàm) l y giá tr tuy . ệt đối ca 1 s
(hàm) lấy căn bậ ơng a c 2 ca 1 s
(a
1/2
)
(hàm) l
ấy căn bậc n ca 1 s a (a
1/n
)
Ví d:
1/2 + 3/4
m
2
+ n -
2
mn
| x | + | x + 2| - | x - 1|
x
2
- x + 1
(a + b)
2
5. Ki u logic u d li
Em đã đượ c làm quen v i lệnh điề ển có điề là 1 điều khi u kin . Biif .. then u thc sau if u
kin logic. Khi th n, l nh s ki u ki n này, n u n c hi ểm tra điề ế đúng (true) thì s thc hi
đoạn lnh sau t khóa then, nếu sai (false) thì b qua lnh này.
Tương tự ổng quát hơn: lệnh điề đầy đủ có điề chúng ta có 1 lnh t u khin u kin if .. then …
else. Bi u th c sau if là 1 điều kin logic. Khi thc hin, l nh s ki u ki n này, n u ểm tra điề ế
đúng (true) (false) s c hi n l nh sau t khóa th ện đoạ then, nếu sai s n l nh thc hiện đoạ
sau t khóa . else
<điều kin> = bi u th c logic
đoạn chương trình sẽ thc hin nếu <điều
ki n> này . đúng (true)
<điều kin> = bi u th c logic
đoạn chương trình sẽ thc hin nếu <điều
ki n> này . đúng (true)
đoạn chương trình sẽ thc hin nếu <điều
ki n> này . sai (false)
122 | T h c l p t r ì n h S c r a t c h
Các , phép tính v u th n nh toán t i bi c và biế logic trong Scratch bao gm.
Phép toán logic
Kết qu
(hàm) toán t logic . and (và)
Tr l khi c 2 bi u th u ại true (đúng) khi và chỉ c thành phần đề
true (đúng).
(hàm) toán t logic . or (hoc)
Tr l u 1 trong 2 bi u th c thành ph n là true i true (đúng) nế
(đúng), các trường hp khác s tr li false (sai).
(hàm) toán t . not (ph / không) định
Tr l u bi u th i, tr ếi true (đúng) n ức là false (sai) và ngược l
li false n u bi u th ế ức là true (đúng).
Bng c th các phép tính logic and, or, not như sau.
Toán t Toán t and (và) or ( c) ho
Toán t not (không)
6. Bi u th c logic u di n bi
Em hãy bi u di u ki ng Scratch. ễn các điề ện logic sau trong môi trườ
a > 10 và a < 100
m >= 100
0 < m < 20
ngay = 10 và thang = 3 và nam
= 2016
m là s và 0 < m < 100ố lẻ
m là s ch n và m > 20
Chú ý đến các ô nhp tr c tiế p d liu trên các dòng lênh. Có 2 lo i ô ch nht và ô tròn.
A
B
A and B
true
true
true
true
false
false
false
true
false
false
false
false
A
B
A or B
true
true
true
true
false
true
false
true
true
false
false
false
A
not A
true
false
true
true
123 | T h c l p t r ì n h S c r a t c h
Ô vuông, ch t nh
Ô tròn
Câu h i và bài t p
1. Vi t hàm ki n không? ế ểm tra xem năm year có phải là năm nhuậ
Tính cht t t cho 4 và không chia hoán hc của năm nhuận: là năm chia hế ết cho 100, hoc
chia hết cho 400.
2. Vi p hai giá tr bàn phím và ki m tra ết chương trình nhậ month (tháng) và year (năm) từ
xem giá tr nh p vào có h p l hay không?
3. Bi u di n các bi u th u dùng l nh Scratch\ c sa
(7/8) + (9/10)
ax
2
+ bx + c
m*n 2(m+n)-
|x| |2x 1|- -
10
2
+ (3+ 7/8)
4. Bi u di u ki n logic sau b ng l nh Scratch ễn các điề
(m > 100) và (n < 100)
mn < 0
(m + n) > (m + n
2 2
)
(x >= 2) ho c (y <= 10)
m không chia h t cho 4ế
m không b ng 0
M rng
1. Vi n th trên màn hình th h ng, vi d : ết chương trình hiể ời gian đầy đủ th
Ngày 16 tháng 5 năm 2016
12 gi 45 phút 24 giây
2. n sau: Thiết kế trò chơi đơn gi
Ô d u vuông, ch li nht có th
nhp s , ch u th hoc bi c logic.
Ô d u tròn ch p s holi th nh c
biu th . c logic, không nhập được ch
124 | T h c l p t r ì n h S c r a t c h
Trên sân khu có 3 qu bóng v i các s u 1, 5, 10 hi
chuyển động ngu nhiên, lúc n lúc hin trên màn
hình.
Nhim v c a em là nháy chu t chính xác lên các qu
bóng, em s m theo s c ghi trên được tích lũy điể đượ
qu bóng.
Thi gian cho mi lần chơi là 10 giây. Bạn nào đạt
được điểm cao thì càng gii. Khi kết thúc 1 lần chơi,
giáo viên s m c a em trên màn hình. thông báo điể
125 | T h c l p t r ì n h S c r a t c h
Bài 13. X lý s 2
Mục đích
- M t vài thu n v i s nguyên, phân s . ật toán đơn giả
- , tìm s nguyên t chung c a hai s . Bài toán tìm ước s ố, tìm ước s
- Bài toán rút g n phân s c s chung l n nh chung nh nh ố, tính ướ t, bi s t.
- n. Thiết lập 1 vài trò chơi số đơn giả
Bắt đầu
1. Em đã bao giờ đặt bút tính 100! chưa? Thử ly bút và tính xem có khó không?
2. Em hãy nh l i m t s khái ni s h n b i này. m v ọc để chu cho bài h c m
- nào là s nguyên t , h p s ? Thế
- n 1 s t nhiên thành tích các th nguyên t . Khai tri a s
- t nhiên. Khái niệm và cách tính ƯSCLN và BSCNN của 2 s
- nào là 1 phân s t n? Thế i gi
Ni dung bài h c
1. M thu t toán s n t s đơn giả
Kiểm tra n có chia h t cho hay không? ế m
S d ng hàm l y s . N u giá tr này = 0 thì n chia h dư phép chia (mod): ế ết
cho m, ngược li n không chia hết cho m.
Kiểm tra a có ph c sải là ướ thực s c th c sự c a m hay không? (Ướ ực sự là ướ ố khác 1 và
chính số đó).
Hàm ki ểm tra như sau:
Kiểm tra nă ải là năm nhuậ (năm nhuận là năm m year có ph n hay không? chia hết cho 4 và
không chia hết cho 100, ho c chia h t cho 400). ế
Hàm ki ểm tra năm nhuận như sau:
Em hãy vi p các hàm ki m tra sau: ết tiế
1. Hàm kiểm tra hai phân s m/n và p/q có b ng nhau hay không?
2. Hàm ki m tra s ố p có là b c a c hai s n, m hay không?ội số
126 | T h c l p t r ì n h S c r a t c h
3. Hàm ki m tra s ng th a c hai s n, m hay không?p có là ước số đồ ời củ
4. Hàm ki m tra s m c ố p có ph i là nghi ủa phương trình bậc nhất px + q = 0 hay không?
2. Bài toán tìm các ướ nhiên cho trước s th c s ca 1 s t c
Bài toán: yêu c u nh p 1 s t nhiên n t thông báo t t c bàn phím, chương trình sẽ các
ước s th c s ca n trên màn hình.
Ví d nh p s 1, 2, 5, 10, 20, 25, 50 trên màn 100 thì chương trình thông báo các giá trị
hình.
Ý tưởng cách gii (thut toán) của bài toán này như sau:
Thiết lp 1 bi n ch y num, cho num ch y t n n-1 (chú ý không tính khi num = n), vế 1 đế i
mỗi bước l c sp, ki m tra xem num có ph ải là ướ c a n hay không. N ếu đúng thì đưa num
vào DS các s s . được in ra k t quế
Mô t t toán này m ng minh: thu ột cách tườ
Gán num = 1
Lặp cho đến khi num = n
N ếu n mod num = 0 thì
thông báo num
tăng n lên 1 đơn vị
Để viết chương trình trên Scratch, chúng ta thiết lp 2 biến nh num saying . Biến num
để để chy và kiếm tra ước s ca n. Biến saying lưu lại các ư c c th và hin th thông
báo ra màn hình.
Câu h i: trong bài toán trên n i yêu c c s ếu thay đổ ầu "ưc s th " bằng "ước số" thì chương
trình s ph nào? ải thay đổi như thế
3. Bài toán tìm ƯSCNN của hai s t nhiên
Bài toán: yêu c u nh p 2 s t nhiên n, m t t qu bàn phím, chương trình sẽ thông báo kế
ướ c s chung l n nht c a hai s n, m trên màn hình.
Chúng ta s d ng bi n nh ( ế gcd greatest common divisor) k phép tính. để u trữ ết qu
Thut t là dùng 1 bitoán đơn giản nh ến nh t m, ví d , cho y t n n và num num ch 1 đế
kiểm tra xem num có là ướ ếu đúng thì gán giá trịc s c a đ ng thi n, m hay không, n này
vào . gcd
127 | T h c l p t r ì n h S c r a t c h
Cách th 2 hay hơn xuấ n>m, khi đó t phát t nhn xét: nếu n=m thì rõ ràng gcd = n. Gi s
gcd, là ướ ủa n, m nên cũng sẽ là ước c c ca n-m, bng cách thay thế n bng n-m chúng ta s
tìm ti i cếp v p n- n k t qu i cùng. Thu t toán sau dm, m, cách này đi nhanh hơn đế ế cu a
trên ý tưởng trên và đượ ẩn để tính ƯSCLc coi là thut toán chu N ca 2 s t nhiên n, m.
Lặp cho đến khi m = n
N ếu m > n thì
- n m = m
còn không thì
- m n = n
Gán gcd = m.
Đoạn chương trình thể ật toán trên như sau: hin thu
Em hãy hoàn thi ện chương trình này trên Scratch.
4. Bài toán ki uyên t m tra s ng
Bài toán: yêu c u nh p 1 s t nhiên n t thông báo s này là bàn phím. Chương trình sẽ
nguyên t hay h p s .
Ý tưởng ca li giải này là đếm s các ước s th c s ca n. Nếu s ước s th c s < 2 thì n
s là nguyên t .
Thuật toán sau sau đếm s các ước s th c s ca n. S dng biến count để đếm s các ước
s cthc s a n. Bi n nh ế num được tạo ra dùng để chy theo 1 vòng l p t n n-1 và 1 đế
kim tra xem num có phải là ước c a n hay không. N u ế num là ước ca n thì tăng count
lên 1. Biến c gán giá tr u = 0. count đượ ban đầ
Gán num = 1, count = 0
Lặp cho đến khi num = n
N ếu num là ư ớc c a n thì
. Tăng count lên 1 đơn vị
Tăng num lên 1 đơn vị.
Vòng lp chính l n khi ặp cho đế
Lnh ki m tra chính c p: a vòng l
gim s l ớn hơn trong 2 số đi 1 giá
tr bng hiu ca 2 sy.
Kết qu gán cho bi n ế
d
128 | T h c l p t r ì n h S c r a t c h
Đoạn chương trình trong Scratch mô t ật toán trên như sau: thu
Chương trình hoàn chỉnh cho phép nhp t bàn phím 1 s và thông báo kết qu trên màn
hình.
5. Bài toán tính nhanh 100!
Chúng ta đã biết cách tính a n sn giai tha n! = 1.2.3…. n (tích củ t u tiên, tính nhiên đầ
t 1). Vi n ln thì vi t khó. Máy tính s giúp em tính r t nhanh bài toán này. c tính n! r
Đoạn chương trình sau mô tả vic tính n!
Biến nh s n t góp ph t qu . Vòng l p count tăng dầ 1 đến n để ần tính tăng cho kế kq
ngoài có n vòng. Các bi n c gán giá tr u = 1. ế count kq đượ ban đầ
Các thi u. ết lập ban đầ
Vòng lp chính (n vòng)
Nhóm l nh chính trong vòng l p:
tăng kq theo phép nhân với count
và và tăng count lên 1.
Hin th k ết qu
129 | T h c l p t r ì n h S c r a t c h
Viết lại chương trình t n đưính n! hoàn chnh, giá tr c nhp t bàn phím.
Câu h i và bài t p
1. Vi p s m t m s c a m, tính c 1 và n. ết chương trình nhậ bàn phím và đế các ước s
d n ếu m = 10 thì thông báo đáp số là 4.
2. Vi u vào là n, m và ki m tra xem n, m có nguyên t ết đoạn chương trình với d liu đầ
cùng nhau hay không? Hai s c g đượ i là nguyên t cùng nhau n a chúng = 1. ếu ƯSCLN củ
3. Vi p 3 s v c tam giác ết đoạn chương trình nhậ dương a, b, c và kim tra xem có th đượ
ABC vi các c nh có s đo a, b, c hay không.
M rng
1. Vi p s t nhiên n t bàn phím và in ra khai tri n s n thành ết chương trình cho phép nhậ
tích ca các th nguyên t . a s
Ví d đầu vào là 12 thì thông báo ra là: 12 = 2.2.3
2. Thi sau. ết kế trò chơi Rút g n phân s
Mi ln nháy lên nút New Game s b u t đ
trò chơi.
Thy giáo s u nhiên 1 phân s đưa ra ngẫ
trên màn hình và yêu c n ầu người chơi rút gọ
phân s này và nh p 2 s p/q là phân s t i
gin c a phân s trên màn hình.
Sau khi nh p th y giáo s thông báo ngay là
đúng hay sai, nếu sai thì cn nhp li, nếu
đúng thì kết thúc.
130 | T h c l p t r ì n h S c r a t c h
Bài 14. X lí xâu ký t 1
Mục đích
- không là s ho Giá tr c logic.
- n v i giá tr là ch ho n. Các phép tính, tính toán đơn giả ặc văn bả
- n x , ký t n. Thc hiện 1 vài bài toán đơn gi lý ch ự, văn bả
Bắt đầu
1. Trong các bi u th c giá tr u các giá tr ho c logic: sau, hãy đánh dấ là s
a. Heal The World
b. Min < Max
c. 321 + 231 + 123
d. Sông Mê Kông dài hơn sông Hồng
e. N c ếu hôm nay tr hời mưa em sẽ nhà
f. (x < 10) and (x > 1)
2. Em hi u th nào là 1 xâu ký t ? Các n i dung sau có ph i là 1 dãy ký t không? ế
Hanoi1 + Hanoi2
123456789
Hà Ni là th t Nam đô của nước Vi
x
2
+ y + z = 192
2 2
Gi
ải phương trình ax
2
+ bx + c = 0
Ni dung bài h c
1. Cách xâu ký t trong máy tính được lưu trữ
Xâu ký t c hi u là 1 dãy các ký t , ví d "Hà N i", "English", "letters", "hòa bình". đượ
Dãy các ký t t o nên 1 xâu s t 1. được đánh số
Ví d t alphabet.
Chú ý:
- Dãy ký t c a xâu có th c bi \ cha các ký t đặ ệt như : ; / { } [ ] ( ) …..
- D là 1 ký t , ta dùng ký hi d u cách. ấu cách (Space) cũng được coi ệu └┘để ch
Tng s các ký t c c a xâu ký t này. ủa 1 xâu được gi là độ dài
2. Các hàm x lý xâu ký t trong Scratch
1
2
3
4
5
6
7
8
alphabet
131 | T h c l p t r ì n h S c r a t c h
Trong môi trường Scratch có 3 hàm x lý xâu ký t sau:
(hàm) toán t n i 2 xâu ký t .
(hàm) tr l i ký t <1> c a xâu ký t <world> th
(hàm) tr l dài c a xâu ký t <world> ại độ
Toán t ng n và tr l i kcó tác d i 2 xâu ký t ết qu là xâu được kết
ni. Ví d l nh s tr l "Hòa bình" là ni xâu ký t i ca 2 t "Hòa " và
"bình". Lnh l ng nhau nhi u m join có th c.
Hàm s l i 1 ký t c trong 1 xâu, t . Ví d l nh tr th
s l i giá tr tr là ch "t".
Hàm l dài c a 1 xâu, t c. Ví d ltr ại độ cho trướ tr i
s 7.
Sau đây là 1 số ệnh đơn giản khác liên quan đế thao tác, l n xâu ký t.
Gán xâu ký t ng Str là r
Gán giá tr ca xâu String1 cho
xâu . Str
Ly ra 1 ký t ng u nhiên c a
xâu . Str
B sung xâu vào cuString1 i
ca xâu Str.
B sung xâu u String1 vào đầ
ca xâu Str.
3. Spelling English Word. Bài toán h c phát âm ng Anh tiế
Em bắt đầu bài h c b ng 1 ví d n sau: Bài h c phát âm ti ng Anh (spelling word). đơn giả ế
Thy giáo yêu c u h c sinh nh p 1 t y s di n gi ng tiếng Anh, sau đó thầ i cách phát âm t
ch c ng Anh này. a t tiế
Ví d: nếu h c sinh nh p t thì giáo viên s . peace đưa ra cách phát âm "p e a c e"
Em to bi n nh t i dùng nh n m m s tách t ng ch ế word để lưu trữ do ngườ ập, sau đó phầ
ca t a t d ng bi n ch ng ch cnày và đưa lên màn hình. Sử ế y index để đưa từ này ra
màn hình. Bi n nh c ế saying để lưu kết qu ần đưa ra màn hình.
Đoạn chương trình chính như sau.
132 | T h c l p t r ì n h S c r a t c h
Chương trình hoàn chỉnh ca bài hc này, kết qu hin trong hình bên phi.
4. Ki m tra tính ch t c a t , xâu ký t
4.1. Ki m tra 1 xâu ký t i là nh phân hay không. có phả
Xâu nh phân là xâu ch bao g m các ký t 0 ho ki m tra 1 xâu ký t có ph c 1. Đ Str i là
nh phân hay không, em hãy th n theo cách sau. Bi n nh t qu kic hi ế kq dùng để lưu kế m
tra, xâu là nh i n m tra phân n c lếu kq = 1, ngượ ếu kq = 0 thì xâu không là nh ki phân. Để
ký t là 0 ho c 1 hay không chúng ta dùng bi u th . B u ch c ắt đầ
chương trình, em gán kq = 0, trong quá trình kiểm tra trong vòng lp nếu gp 1 ký t không
là 0 hoc 1 thì gán ngay kq = 1.
Gán giá tr ban đầu cho biến
Vòng lp chính.
Vi m n l p, l y ra i l
ch = 1
ký t ng c a xâu tương ứ
word
,
rồi đưa vào cuối ca biến
saying, và b xung thêm 1
133 | T h c l p t r ì n h S c r a t c h
Em hãy vi ày. ết hoàn thiện chương trình n
4.2. Ki m tra 1 xâu ký t ng (palindrome) hay không. có phải là đối xứ
Một xâu được g ng (palindrome) n u các ký t , ch t ng ọi là đối x ế ạo thành xâu này đối x
qua tr ng. Hay nói cách khác các t nc thẳng đứ ếu đọc xuôi hay ngượ ều như nhau đưc đ c
gi là palindrome. Ví d:
redivider reviver, noon, civic, radar, , rotor, kayak, level , racecar, madam refer. ,
Phân tích: N dài c ng n u các c p ch v i ch ếu độ a xâu là len thì xâu đã cho sẽ là đối x ế
s i có giá tr(1, len), (2, len-1), … phả b ng nhau. Do v y ch c n ki m tra theo 1 vòng lp
ch s t . Xâu g1 đến len/2 là đủ c ký hiu là . Str
Chương trình
Em hãy vi ết hoàn thiện chương trình này.
5. Hàm l xâu con c a 1 xâu ho y c t
kayak
racecar
1
2
3
4
5
1
2
3
4
5
6
7
Ban đầu gán kq = 1
Vòng lp v dài c ới độ a xâu Str
Gán ch cho 1 ký t theo vòng
Kim tra n u ch không là nh ế
phân thì gán kq = 0
134 | T h c l p t r ì n h S c r a t c h
Bài toán: cho trướ ết 1 chương trình đểc 1 xâu ký t vStr ới độ dài . Clen n vi ly ra 1 phn
ca xâu này (xâu con), tính t v c a xâu này. tri istart đến v trí iend
Ví d v i xâu "happy new year", = 3, dài xâu con = = 3. istart iend = 5, độ iend - istart + 1
Xâu con được tr l n ại được lưu trong biế string là "ppy"
Thut toán c t l i sủa bài toán này khá đơn giản. Thiế p 1 vòng l p v bước lp iend - istart
+ 1, bi n index b v , m y 1 ch t xâu g i cế ắt đầu t trí istart ỗi bước l ốc và đưa vào cuố a
xâu k . ết qu string
Đoạn chương trình tính xâu con như sau.
Em hãy hoàn thi sung ph n yêu c u nh p xâu ký t g , nh p 2 ện chương trình này bổ c Str
ch s bắt đầu và kết thúc xâu con istart iend .
6. Hàm xóa 1 ký t (1 ph n) c a xâu
Bài toán: cho trướ ết chương trình xóa đi xâu con củc 1 xâu ký t vStr ới độ . Cdài len n vi a
xâu này, tính t v n v trí . tri istart đế iend
Ví d v i xâu "happyness new year", = 6, = 9, xâu m istart iend sau khi đã xóa xâu con có
giá tr là "happy new year"
Thut toán ca bài toán này o bi n nh ph dùng m k t qu . như sau. Tạ ế string để lưu tạ ế
Vòng lp chính ch y su u dài c a xâu g . V i m i ký t c t chi c Str ủa Str, chương trình
kim tra n u vế trí này < ho c > nào vào cu i cistart iend thì đưa ký tự a xâu string
(ngược li không làm gì c).
Đoạn chương trình xóa xâu con như sau.
happy new year
3
5
Thiết lp xâu = tr ng string
Thiết lp giá tr u c n ban đầ a biế
Vòng lp chính s vòng =
iend - istart + 1
B sung 1 ký t vào cu i ca
i
happyness new year
6
9
happy new year
ppy
135 | T h c l p t r ì n h S c r a t c h
Em hãy hoàn thi sung ph n yêu c u nh p xâu ký t g , nh p 2 ện chương trình này bổ c Str
ch s bắt đầu và kết thúc xâu con cn xóa istartiend.
7. Hàm chèn xâu (ký t ) vào xâu khác t c i v trí cho trướ
Bài toán: cho 2 xâu ký t và xâu th 2 . C n chèn xâu vào xâu g: xâu gc Str Str1 Str1 c
Str Str ti v trí istart, k t qu ghi l i trong chính xâu gế c .
Để chun b chương trình chúng ta cùng tìm hiểu qua 1 ví d c th. Xâu g c Str = "free
games", xâu c n chèn = "online", v trí chèn = 6. Str1 istart
Đầ u tiên chúng ta cho biến nh index chy và gán tng ch ca xâu Str vào 1 biến trung
gian n v , quá trình này t chuy n sang vi sung xâu string. Khi đế trí istart m dừng để c b
Str1 index1 vào string. Công vi c th n b ng 1 bi n nh khác là ệc này dượ c hi ế . Khi đã bổ
sung xong Str1 thì quá trình b sung Str l p t ng có 2 i tiế c b index. Chương trình này sẽ
vòng l p l ng nhau.
Thut toán trên có th vi ết lại như sau:
Gán các giá tr u index =1, index1 = 1 ban đầ
Thực hi n l dài Str ặp cho đến khi index > độ
N ếu index = istart thì
Th c hi n vòng l p có s c b dài xâu Str1 ố bư ằng độ
B ổ sung Str1 vào cuối string
Gán ký t th index c a xâu Str vào string
Gán Str = string
Thiết lp xâu = tr ng string
Thiết lp giá tr u c n ban đầ a biế
Vòng lp chính
Kim tra n u v trí ký t hi n ế
thi có ch s ho < istart c >
iend thì đưa vào cuối ca xâu
Gán string l . i cho Str
online
free games
free onlinegames
1
2
3
4
5
6 = istart
6 = istart
136 | T h c l p t r ì n h S c r a t c h
Đoạn chương trình sau mô tả phn thut toán chính ca bài toán.
Chương trình hoàn chỉ ần lượnh s yêu cu hc sinh nhp l t các thông s:
- c Str Xâu g
- n chèn Str1 Xâu c
- V n chèn trí c
Chương trình thực hin công vic chèn và thông báo kết qu ra màn hình.
Vòng lặp ngoài, điều kin dng khi
duyt xong xâu Str
Kiểm tra điề ện đểu ki thc hin vòng lp trong
Vòng lp trong, b sung xâu Str1 vào cu i ca
string. Vòng lp này ch n. thc hiện đúng 1 lầ
Các l nh vòng l p ngoài: b sung t ng
ch c a xâu Str vào cu a string. i c
Gán tr l i string vào Str là xâu g c ban
137 | T h c l p t r ì n h S c r a t c h
Câu h i và bài t p
1. Các bi u th ức nào dưới đây viết đúng?
(m
2
+ n ) và (m
2 2
- n )
2
(a + b) = a
2 2
+ 2ab + b
2
abc < bce
2. Sau 2 l nh sau thì bi n nh Str s xâu ký t gì? ế lưu trữ
M rng
Thiết kế 1 trò chơi Ghép ch t o t chính xác sau.
Phn m m s n ghép 2 t này l t o đưa ra trên màn hình 2 từ, người chơi cầ i với nhau để
thành 1 t đúng.
Ví d n u 2 t u là c i là ế cho ban đầ ped wikiia thì t ần ghép đúng phả wikipedia. Ngưởi
chơi được yêu c u nh p t c n ghép t b n khi t ng l àn phím cho đế o được t đúng thì dừ i.
Nếu sau 10 l n v n nh p sai thì thua và ph n m m s đưa ra đáp án đúng.
138 | T h c l p t r ì n h S c r a t c h
Bài 15. X lí xâu ký t 2
Mục đích
Hc xong bài này b n s hi u:
- M thu n x và xâu ký t . t s ật toán đơn giả lý ch
- Thi n v i ch và xâu ký t . ết lập 1 vài trò chơi đơn giả
Bt u đầ
Em hãy đọc để trò chơi liên quan đế dưới đây. Em đã biết và đã hiu 1 s n ch, xâu ký t
từng chơi các trò chơi này chưa? Em hãy phát biểu suy nghĩ của mình xem có th lp trình
để mô phng c c hay không? húng đượ
1. Trò chơi sắp xếp từ
Trên màn hình xu t hi n 1 dãy các t . Nhi m v c a
người chơi là cần sp xếp li các ty theo 1 th t
nh t định có ý nghĩa nào đó, ví dụ, s p x p lế ại để tr
thành 1 câu có nghĩa. Người chơi thao tác bằng cách
kéo th các ch ho trên màn hình. ặc đánh số các t
2. Trò chơi đoán từ hangman
Trên màn hình hi n yêu c khi cho bi ầu đoán 1 t ết ý
nghĩa củ này. Người chơi đoán từa t bng cách nhp
tng ch u t o nên t này (b ng bàn phím ho cái c c
chut). Nếu nh p hi n trên màn đúng thì chữ cái đó sẽ
hình t trí trong t ại đúng vị ừ. Người chơi chỉ được
phép nh p sai 1 s l n nh nh. ất đị
Ni dung bài h c
1. S nh phân
Em có hiu s nh phân là gì không?
Trong các s sau, s nào là nh phân?
345671
1011101
1001002
1010101
11011a1b
3220011
1111111
0000111
Nhng s mà chúng ta làm vi u là các s p phân, hay còn g i là s ệc hàng ngày đề th đưc
viết trong h thp phân. Các s thp phân s d ng 10 ch s 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 để th
hiện. Nhưng trong máy tính chỉ lưu trữ có th hiu 2 ch s là 0 và 1. Do vy các s trong
máy tính ch bao g m các ch s 0, 1. Các s này được gi là s . Hnh phân đếm ch
dùng ch s 0 và 1 g i là . H p phân ti ng Anh g i là , h nh phân h nh phân th ế decimal
gi là binary.
Bng sau cho ta bi ng gi sết tương ứ a 1 s nh phân và th p phân.
139 | T h c l p t r ì n h S c r a t c h
decimal
binary
decimal
binary
decimal
binary
decimal
binary
1
1
5
101
9
1001
13
1101
2
10
6
110
10
1010
14
1110
3
11
7
111
11
1011
15
1111
4
100
8
1000
12
1100
16
10000
2. Chuy phân sang th p phân n s nh
Bài toán: cho 1 s nh phân (binary), c n chuy i s này sang h p phân. a
n
a
n-1
….a
1
a
0
ển đổ th
Chúng ta quan sát qui lut bi t tu di n s i d ng nh phân và tìm ra qui lu dướ ng quát cho
vic chuyển đổi s viết theo h nh phân sang h th p phân.
100 100 = 1.2 + 0.2 + 0 = 4 (h p phân)
2
th
111 111 = 1.2 + 1.2 + 1 = 7 (h p phân)
2
th
Tng quát chúng ta thy:
a
n
a
n-1
….a
1
a
0
(binary) = a + a .2 + a
n
.2
n-1
n-1
.2
n-2
+ …. + a
1 0
(decimal)
Nhìn vào công thức trên chúng ta chưa hình dung đưc thu c hit toán cn th n trên máy
tính. Chúng ta s t l i quá trình tính toán theo t viế ừng bước nh c s để tính đượ thp phân.
a
n
2.a
n
+ a
n-1
2.( 2.a + a
n n-1
) + a
n-2
2.( 2.( 2.a + a -3
n n-1
) + a
n-2
) + an
……
2.(
a
n
.2
n-3
+ a
n-1
.2
n-4
+ …. + a
0
) + a
1
2.(
a
n
.2
n-2
+ a + a
n-1
.2
n-3
+ ….
1
) + a
0
.
Như vậy sau đúng n+1 bước thì quá trình tính trên kết thúc và kết qu thu được s thp phân
cn tìm.
S nh n nh . S phân ban đầu được đưa vào biế Binary thp phân là k ết qu đuọc lưu trong
biến nh Decimal. Các bi n nhế trung gian bao gm index, lench.
Gán ban đầu: Decimal = 0, index = 1
len = độ dài xâu Binary
Thực hi n vòng l p v dài len ới độ
ch = ch ng ch index c a Binaryữ số tương ứ ỉ số
Decimal = 2.Decimal + ch
Tăng index lên 1
Đoạn chương trình mô tả ến đổ thut toán bi i h nh phân sang thp phân Binary Decimal
như sau.
140 | T h c l p t r ì n h S c r a t c h
Chương trình hoàn chỉ ủa bài toán này như sau:nh c
3. Chuy p phân sang nh phân n s th
Bài toán: cho trước s thp phân, hãy biu din s này sang h nh phân.
Bài toán này gi i quy t v c l ế ấn đề ngượ i so v i bài toán trên.
Để c cách làm bài này, chúng ta ltìm đượ i quan sát công thc:
a
n
a
n-1
….a
1
a
0
(binary) = a + a .2 + a
n
.2
n-1
n-1
.2
n-2
+ …. + a
1 0
(decimal)
Gi s thập phân ban đầu là D, chúng ta s phân tích quá trình tính toán để tính được ln
lượt các s a , a , a
0 1
, …., a
n-1 n
như sau.
S thập phân ban đầu: D
a
0
= D mod 2 (tính s + a = D/2 (làm tròn s gán D = D/2). dư); a
n
.2
n-2
n-1
.2
n-3
+ …. + a
1
); (
a
1
= D mod 2; D = D/2.
…….
a
n-1
= D mod 2, D = D/2.
a
n
= D mod 2, D/2 = 0, k ết thúc.
Như vậy qui trình trên s dng li khi D = 0.
Bắt đầu vòng l dài ặp độ
Ly ra ký t ng c tương ứ a xâu
Thay đổi Decimal = 2*Decimal + ch
Tăng index lên 1
141 | T h c l p t r ì n h S c r a t c h
S thập phân đầu vào lưu trong biến nh Decimal. Xâu nh n nh phân đầu ra lưu trong biế
Binary. Bi n ế ch dùng để tính các giá tr trung gian a . Thu
i
t toán chuyển đổi trên đư c
viết tường minh như sau:
Gán Binary = r ng
Thực hi n l n khi Decimal = 0 ặp cho đế
Đặt ch = Decimal mod 2;
Decimal = Decimal / 2 (làm tròn xu ng)
B sung ch vào bên trái c a Binary
Đoạn chương trình mô tả ển đổ thut toán chuy i s Nh phân sang Thập phân trên được viết
trong Scratch như sau:
Chương trình hoàn chỉ ủa bài toán này như dưới đây.nh c
4. Ki m tra 1 ký t m trong 1 t khác hay không / t có n
Bài toán: Cho trước 2 xâu . CStr1 Str n kim tra xem xâu có nStr1 m trong xâu Str
không, n u có thì c n ch trí ký t u tiên c trong . N u không n m trong ế ra v đầ a Str1 Str ế
thì tr l i giá tr 0.
Ví d : 2 xâu là . bab ababab
Gán Binary = rng.
Vòng lp chính v u ki n d ng Decimal = ới điề
0
Tính ch = s dư Decimal chia 2
Gim Decimal khi chia cho 2
B vào csung ch bên trái a
ababab
bab
2
142 | T h c l p t r ì n h S c r a t c h
Xâu bab m c tìm th y trong xâu 2 l l u tiên, ặc dù đượ ababab ần nhưng hàm sẽ tr i v trí đầ
tc là giá tr 2.
Gi s 2 xâu dài là . K c l Str1 Str có độ len1 len ết qu a thuật toán được tr i trong
biến . N u không tìm th y (Str1 không n m trong Str) thì là vpos ế pos = 0, ngưc li pos > 0
trí đầu tiên nStr1 m trong . Str
Ý tưở ng ca thu u tật toán như sau: Bắt đ v u tiên ctrí đầ a xâu Str, tiến hành kim tra ln
lượt các v trí bắt đầ ếu t 1 b ng bi n . V i mindex i v trí như vậy cn tiến hành kim tra
len1 ph n t tiếp theo xem có trùng v không. N u trùng thì l p t ng vòng l p, i Str1 ế c d
gán giá tr . N u không trùng thì ti p t m tra ti p. Trong pos = index ế ế ục tăng index và kiể ế
vòng l p ki m tra bên trong s d ng thêm các bi n nh , . Bi n ế : indexin index1, ch1, kq ế kq
có ý nghĩa kq = 1 nếu đã tìm thấy Str1 trong Str. Trong vòng lp trong, s dng biến nh
indexin Str index1 Str1 để chy trên xâu đồ ng th i v i biến chy trên .
Mô t t toán trên b ng l thu ời tường minh như sau:
Gán các giá tr u: pos = 0, index = 1 ban đầ
Thực hi n l n khi pos > 0 ho c index > len-len1+1 ặp cho đế
Gán index1 = 1, kq = 1, indexin = index
L ặp cho đế n khi index1 > len1 ho c kq = 0
Đặt ch = ký t th index c a Str
Đặt ch1 = ký t th index1 c a Str1
N ếu ch khác ch1 thì gán kq = 0
Tăng index1 lên 1
Tăng indexin lên 1
N ếu kq = 1 thì
Gán pos = index
n ếu không thì
Tăng index lên 1
Đoạn chương trình Scratch mô tả ật toán trên như sau: thu
ababab
bab
ababab
bab
Index = 1
Index = 2
Indexin
Index1
Indexin
Index1
vòng l p đ u tiên, Index = 1
Str1 không trùng v i xâu con trong
Str.
kq = 0, pos = 0
vòng lp th 2, Index = 2
Str1 trùng v i xâu con trong
Str.
kq = 1, pos = 2
143 | T h c l p t r ì n h S c r a t c h
Em hãy hoàn thi c a bài toán này. ện chương trình đầy đủ
Chương trình sẽ yêu cu hc sinh nhp 2 d liu:
- u g c Str. Xâu d li
- u c n ki m tra Str1 Xâu d li
Chương trình sẽ thông báo kết qu có tìm th y hay không. N u tìm th y thì ch ra v trí mà ế
Str1 Str n m trong .
Câu h i và bài t p
1. Vi p t bàn phím 1 xâu ký t bết chương trình nhậ t k Str. Sau đó tiến hành đổi ch 2
phn t b t k trong xâu trên và hin th k t qu trên màn hình. ế
2. Vi n công vi ết chương trình thực hi c sau:
Nhp t bàn phím 1 xâu ký t b n hành hoán v ng u nhiên các ký t c t k Str, sau đó tiế a
Str, k t qu hi n ra màn hình ca 2 xâu Str và Str1. ết qu đưa vào xâu Str1. Kế th
3. Vi n công vi ết chương trình thực hi c sau:
- p 1 xâu ký t b t k t bàn phím. Nh Str
- n vi c thi p xâu bThc hi ết l Str1 ằng cách thay đổi ngược li th t các ký t ca xâu
Str Str Str1. Ví d n u ếu ban đầ = "abcdef" thì k t qu xâu ế = "fedcba".
Thiết lp các giá tr u: ban đầ
pos = 0, index = 1
Vòng lp ngoài, chính
Thiết lp các giá tr u cho ban đầ
vòng l p trong, ki m tra s
trùng nhau gia Str1 và 1 ph n
ca Str
Vòng lp trong
Kim tra 2 ký t
tương ứng ca Str1 và
Tăng các biến chy
trong vòng lp trong
Kim tra k t qu c a vòng ế
lp trong, chu n b tăng
biến index cho vòng l p
144 | T h c l p t r ì n h S c r a t c h
- hi n k xâu trên màn hình. Th ết qu Str1
M rng
Thiết kế (Hangman) d n sau. trò chơi tìm từ ạng đơn giả
T c n nh Word ần tìm được lưu trong biế
(được gán cứng trong chương trình). Giao
diện chương trình là trò chơi dự đoán từ
này. T dài <= 8. Word có độ
Trên màn hình s ng th hiện các ô tương ứ
với độ dài c c n tìm. Các cha t chưa
được đoán sẽ hi n du ?, các ch đã đoán
ri s hi n chính xác trên màn hình.
Chương trình sẽ ục đưa ra câu hỏ liên t i:
"Nhp ch ". Nhi m v c cái để đoán từ a
người chơi là nhập 1 ch Ncái. ếu ch cái
này có trong t thì nó s hi n ra trên màn
hình (có th 1 ho c nhi u). N ếu không có thì chương trình thông báo "không có chữ cái
này" và yêu c u nh p ti p t n khi nào l t các ch cái c ế ục, cho đế ật được hế a t đã cho.
145 | T h c l p t r ì n h S c r a t c h
Bài 16. Làm vi c v i List 1
Mục đích
Hc xong bài này b n s :
- a List (m ng, dãy giá tr ), bi t cách thi p dãy trong Scratch. Hiểu ý nghĩa củ ế ết l
- ng d ng List gi i 1 s bài t n. ập đơn giả
- t toán s p x , tìm min, max trong dãy. Thu ếp, đổi ch
Bắt đầu
Em đã từng xem, tng biết các thông tin đư t kê như mc li t danh sách, ví d như danh
sách hc sinh l p h nh, thành ph ọc, danh sách các món ăn, danh sách các tỉ ố, ….
Em hãy li ng bi nhà, ng và ệt kê thêm các danh sách thông tin mà em đã từ ết đến trườ
ngoài xã h i.
Chúng ta đã được làm quen vi khái nim biến nh , là công c để u trữ các thông tin giúp
ngườ i lp trình có th t u quạo ra được các chương trình hiệ hơn. Tuy nhiên mỗi biến nh
ch lưu trữ được 1 giá tr t m. N , chúng ta c i 1 thời điể ếu như, ví dụ n lưu trữ đồng thi tên
ca tt c h c sinh trong l p h c, thì ph nào. Rõ ràng t ng bi n nh c ải làm như thế ế th
không th gi i quy c yêu c u trên. ết đượ
Bài h c này s giúp em hi c m m c hi n yêu c ểu đượ t công c ới để th ầu trên đây.
Ni dung bài h c
1. Bi n nh u danh sách (List) ế ki
Biến nh ki m t dãy giá tr , có th là s ho . Ví d y ểu danh sách dùng để lưu trữ c ch
tên học sinh sau được đánh số 1 đế t n 6, có th được lưu trong 1 biến nh kiu danh sách
(list).
Bình
Nguyt
Vũ Hùng
Vân
Bình
1
2
3
4
5
6
146 | T h c l p t r ì n h S c r a t c h
Để mô t 1 dãy (s, ch) tổng quát, ngư , …., ai ta hay dùng ký hiu: a , a
1 2 n
. S hng tng
quát s ký hi u là a .
i
Trong Scratch, biến nh ki u danh sách không c u d u và s ng ần khai báo trước ki li lượ
phn t . Thao tác t o ra các bi n nh ế ki u danh sách r n, trong nhóm l nh D ất đơn giả liu
(Data).
Vic khi t o bi n nh danh sách r n, b nh t nhóm l nh ế ất đơn giả i nút l Make a List
Data.
Cũng giống như biế bình thưn nh ng, biến nh dng danh sách có th là biến nh chung
hoc riêng. Nếu là bi n nhế chung thì t t c các nhân v u có s d ng, c p nh t đ th t và
thay đổi d liu. Nếu là biến nh riêng thì ch có nhân vt là ch mi có các quyn truy cp,
s d i thông tin. ụng và thay đổ
Vic nh c hi c có p d u vào bi n nh li ế List có th th n b ng l nh ho
th nh p tr p trên sân kh u c a Scratch. c tiế
Lnh sung thêm 1 thông tin vào cu i danh sách ccó tính năng bổ a
biến nh d ng List.
Ví d l nh s b sung thêm 1 tên h c sinh là "Vi t Anh" vào cu i
ca biến nh HS (bi ến nh d ng List).
Chú ý: khác v i bi n nh ng, bi n d ng u khai báo là dùng riêng cho nhân ế thông thườ ế List nế
vt s không hi n trong các thu c tính c a nhân v không th ật, do đó các nhân vật khác s
truy c p hay s d ng các bi n nh riêng này. ế
Em hãy gi nh sau và ghi sang c t bên ph ải thích ý nghĩa của các l i.
Nút Make a List dùng đ
khi to 1 bi n nhế d ng
Giao din t o bi n nh s ng ế
List. Có 2 loi: biến nh
chung và biến nh riêng cho
mi nhân vt.
Xut hin các l nh làm
vic vi biến nh List.
147 | T h c l p t r ì n h S c r a t c h
Chúng ta s cùng nhau tìm hi u sâu s ng d ng c a bi n nh ắc hơn các ứ ế List trong các hot
động tiếp theo.
2. Nh p danh sách h c sinh l p h c
Em hãy th n sau. c hiện chương trình đơn giả
Chương trình yêu cầu người dùng nhp h tên
hc sinh trong lp hc vào mt danh sách, trong
thông báo ghi rõ là đang nhập hc sinh th my.
Để kết thúc ch cn nhp 1 d liu rng, tc là
bm Enter ngay.
Biến nh c sinh s t tên là HS. Chúng ta s d ng thêm 1 danh sách lưu trữ tên h được đặ
biến nh na Stt l t c n th p. Dùng ngay bi n dùng để ưu số th a h c sinh hi ời đang nh ế
Stt để kim tra khi nào thì kết thúc quá trình nh p li u t bàn phím.
Chương trình hoàn chỉ ủa bài toán này như sau:nh c
3. Các thao tác tr c ti p trên danh sách ế
Có nhiều cách để thao tác vi d liu c n nh danh sách: thông qua các l nh, nh p tra biế c
tiếp trên màn hình Scratch ho p thông qua t p (Text File).. c nh
Các thao tác tr p v u trên bi n nh danh sách: b sung, chèn, xóa, .... c tiế i d li ế
Điều kin kim tra
vòng l p là Stt = 0
Kim tra n u d u ế li
nhp vào khác r ng
thì b sung vào danh
sách HS, nếu người
dùng không nh p, ch
nhấn Enter thì đặt Stt
= 0 để kết thúc quá
148 | T h c l p t r ì n h S c r a t c h
B dung d u <thing> vào cu n li i ca biế
nh. L nh này s làm cho dãy d u c li a
biến nh n t n m cutăng thêm 1 phầ i danh
sách.
Lnh này s xóa, h y kh i danh sách 1 phân
t đượ c xác định trước. Nếu ch s c n a ph
t ghi trên l nh n m ngoài ph m vi c a dãy
(ví d = 0 ho dài dãy) thì l nh không ặc > độ
có tác d a lng. M a ch n khác ct l nh n u ế
thiết lp tham s thì l nh có d ng sau all
s xóa toàn b d
liu c n nh n nh v a biế này (hay đưa biế
trạng thái như lúc mới khi to).
Lnh này s chèn thêm 1 ph n t có giá tr
<thing> vào trước phn t th <1> ca dãy.
Nếu thay th ế ch s c th b ng <random>
nh thì l
s chèn vào 1 v trí b t k c a dãy. Sau l nh
này dãy s n t . tăng lên 1 phầ
Lnh này s thay th n t <1> cj ế ph th a
dãy b ng giá tr <thing>. N u thay th s ế ế ch
c th b ng <random>
thì
lnh s thay th vào vào 1 v ế trí b t k ca
dãy. Chú ý: l ph n ệnh này không làm tăng số
t c a dãy.
Các l nh sau s có ch p, khai thác d u danh sách: ức năng truy cậ li
(hàm) tr l i giá tr c c a m t ph n t th
ca dãy. N u tham s thay b ng <random> ế
, l nh s l tr i
1 ph n t b t k trong dãy.
(hàm) tr l dài c a dãy. ại độ
(hàm logic) ki m tra xem dãy có ch a ph n
t được ghi ti v trí <thing> hay không.
Lệnh này có tính năng hiển th tt c các
phn t c a dãy.
Nhp d liu tr c ti p trên màn hình Scratch ế
Có th nh p nhanh và tr p d u ki u danh sách trên màn hình c a Scratch. Mu n v c tiế li y
chúng ta đặt chế ế hiđộ n th bi n nh y trên màn hình.
149 | T h c l p t r ì n h S c r a t c h
Hnh nh c n nh danh sách s hi a biế ện ra như hình dưới đây. Bây giờ chúng ta có th thao
tác trc tiếp trên bi n nh nh p d ế này để liu.
Chuyn nhp d u t li Plain Text File
Mt cách nhp d liu nhanh và hi u qu n a là nhập trước d liu vào 1 t ng d ng ệp văn bả
plane text (t p *.txt), m d n nh p nhanh vào ỗi đơn vị liệu ghi trên 1 dòng, sau đó chuyể
danh sách c a Scratch. Qui trình nh trong hình sau. ập này được mô t
Nháy nút
này để bt
đầu tiến
hành nh p
liu.
Bước tiếp theo chúng ta nhp trc tiếp d liu theo tng
phn t c a danh sách. Có th dùng các phím lên, xu ng
để chuyn lên, xung trong danh sách. Tiến hành nhp
cho đến khi xong. Mun xóa 1 phn t nháy du x bên
h ô à
Nháy chut
phi trên
vùng bi n ế
nh
chn
Sau khi ch n t p d u li
ngoài (d ng *.txt), Scratch
s l p t c chuy n t d t c
liu t t p này vào bi n nh . ế
150 | T h c l p t r ì n h S c r a t c h
4. Bài toán tìm Min, Max
Bài toán: cho trước 1 dãy s cha trong 1 biến nh danh sách. Yêu cu cn tìm và hin th
phn t nhó nh t (Min) và l n nh t (Max) c a dãy này.
Thut toán, hay cách gii quy ết bài toán này như sau:
To ra 2 bi n nh : biế ến index để chy d c theo dãy s , bi n so sánh ế min để lưu kết qu
trung gian. khi di chuyn d c theo dãy s , so sánh và giá tr ph n t c a dãy, n u giá tr min ế
này < thì l p t c thay th b ng giá tr y. Trong ví d mô ph ng trên, bi n nh min ế min ế
min được thay đổ ệnh Scratch như sau:i 3 ln. Thut toán mô t bng l
Chương trình hoàn chỉnh như sau:
Giá tr ban đầu ca
biến nh
min
, gán cho
phn t đầu tiên ca
Khi kết thúc, min
giá tr = ph n t nh
nht ca dãy
min
index
Vòng lp v l n l i s ặp = độ
dài dãy s .
So sánh ph n t
tương ứng ca dãy
vi min, n u < ế
min thì thay th ế
min b ng giá tr
151 | T h c l p t r ì n h S c r a t c h
Em hãy vi tìm giá tr ph n t l n nh t (Max) c a 1 dãy sết chương trình tương tự cho
trước.
5. Bài toán tìm ki m giá tr trong ế dãy
Tìm ki m thông tin là 1 bài toán l n có r t nhi u ng d ng r ng rãi trên th . Trong hoế c tế t
động này chúng ta cùng tìm hi u m ng h n nh c này. ột vài trườ ợp đơn giả t ca công vi
Bài toán tìm 1 phn t
Cho trước 1 danh sách d liu, cn tìm ra 1 phn t thỏa mãn 1 đi ện nào đó. Ví dụu ki thc
tế ca bài toán này rt nhi u. Ví d :
- Tìm trong l p 1 b n nam có chi u cao l ớn hơn 1,7m.
- Tìm trong dãy 1 s là s nguyên t .
Chúng ta cùng tìm hiu và gi i quy ết bài toán này.
Bài toán c có th s dãy d u là dãy s , c n tìm 1 ph n t th đơn giản hóa như sau: Giả li
trong dãy trên có giá tr . Dãy s bi n nh danh sách có tên . = a trên được lưu trong ế dayso
Đầu vào (Input): Danh sách dayso, giá tr a.
Đầu ra (Output): Thông báo "không tìm th y" ho c "có" và ch ra s th t ca phn t
được tìm thy có giá tr . a
Chúng ta s d ng bi n nh s c n t y trong dãy. N u pos = 0 ế pos để lưu lại ch a ph tìm th ế
tc là không tìm thy. Thu n này mô t ật toán đơn giả như sau:
Gán các giá tr u: ban đ pos =
0, = 1. index
Vòng lặp chính có điều
kin d ng n u pos > 0. ế
152 | T h c l p t r ì n h S c r a t c h
Chương trình hoàn chỉnh như sau:
Bài toán tìm tt c các ph n t
Cho trước 1 danh sách d liu, cn tìm ra tt c các ph n t ca dãy u kithỏa mãn 1 điề n
nào đó, đế đã tìm đượm s lượng các phn t c. Ví d:
- Tìm trong l p t các b n có tên "Hùng". t c
- Tìm t chia h t c các s ết cho 3 trong dãy s cho trước.
Cách làm bài này tương tự như bài toán tìm 1 phầ n t, ch khác là chúng ta s duyt dãy t
đầu đế dùng để m đượn cui và có thêm 1 biến nh na count đếm s lượng các phn t c.
Nếu t c là không tìm thcount = 0 y.
Chương trình chính yêu cầu như sau:
- Dãy s p t cho trước đã được nh trước và
- u nh p giá tr s c : hoChương trình yêu cầ ần tìm, sau đó đưa ra kết qu c thông báo không
tìm thy, ho y và s ặc thông báo đã tìm thấ lượng ph n t tìm được.
thiết lp các giá tr u. ban đầ
Vòng lp v dài ci s bước bng độ a
Kim tra: n u giá tr ph n ế
t c n ủa dãy = a thì tăng biế
count lên 1
153 | T h c l p t r ì n h S c r a t c h
Chương trình hoàn chỉnh như sau.
6. Bài toán s p dãy p xế
Sp x p 1 dãy d ế liệu cho trước là 1 bài t c toán r t hay g p trên th ế. Ví d :
- S p x p l ng x p hàng theo th t t n cao. ế ớp đứ ế thấp đế
- S p x p tên h c sinh trong l p theo th t ABC (th t t n). ế điể
- S p x p các t nh thành ph theo di n tích, dân s . ế
Chúng ta s cùng nhau tìm hi u bài toán s p x p dãy s trong ho ng này. Hãy b u t ế ạt độ t đ
1 ví d n: s p x p dãy 4 s sau theo th t n. đơn giả ế tăng dầ
Dãy s g c: 10 7 9 4
1. Tìm ph n t nh i ch v c dãy: nhất là 4, đổ ới 7, thu đượ 4 10 9 7
2. Tìm ph n t nh nht trong 3 s cuối, đó là 7, đổi ch cho 10, thu được: 4 7 9 10
Thut toán s d ụng trên được gi là Sp xếp chn.
Đổ i chỗ 2 phần tử c a dãy
Trong cách làm trên chúng ta thy thao tác lõi là "đổi ch trong dãy, hay t" hai ph n t ng
quát hơn là đổi ch 2 biến nh bt k trong b nh máy tính.
Cho 2 biến nh , v i giá tr gi a 2 bi n nh y. Cách m n i các giá tr đã gán. Tìm cách đổ ế
thc hin ph bi n nh t là s thêm 1 bi n nh trung gian, ký hi u là ế ế tg. Các bước như sau:
154 | T h c l p t r ì n h S c r a t c h
Đoạn chương trình đổi ch 2 phn t th i, j ca dãy s dayso như sau.
Bài toán sắp x p dãy: Thu t toán ch n ế
Gi s dãy c n s p x p theo th t n là: ế tăng dầ a , a
1 2
, …., a
n
Thut toán chn th c hi ện như sau:
Có th mô t t toán này theo cách vi t sau: thu ế
Vòng l p n-1 l n, cho i ch y t n n 1 đế -1
Chọn ra ph n t nh nh t trong các s , a ố a
i+1 i+2
, …, a
n
Giả s s ch ố này là j
N a ế u a > a
i j
thì đổi ch
i
, a
j
Để thiết kế chương trình chúng ta tạo ra các biến nh sau:
i, j - n nh vòng ngoài và vòng l p trong. các biế chy
jmin - ch s phn t nh nhất đư c tìm thy vòng lp bên trong.
min - giá tr phn t nh nht, dùng trong vòng lp trong tìm min.
tg - bi n nh trung gian dùng cho vi 2 ph n t . ế ệc đổi ch
Gán m cho tg, tg = m
Gán n cho m, m = n
Gán tg cho n, n = tg
Bướ c 1. Tìm trong các s a
2
, a
3
, …., a
n
phần t nh nh t, gi là a i ả sử
j
. Đổ
chỗ a
1
, a u a > a
j
nế
1 j
Bướ c 2. Tìm trong các s a
3
, a
4
, …., a
n
phần t nh nh t, gi là a i ả sử
j
. Đổ
chỗ a
2
, a u a > a
j
nế
2 j
………
Bướ c n-2. Tìm trong các s a
n-1
, a
n
phần t nh nh t, gi là a i ả sử
j
. Đổ
chỗ a
n-2
, a > a
j
nếu a
n-2 j
Bước n-1. Đổ ếi ch a n
n-1
, a
n
u a > a
n-1 n
.
155 | T h c l p t r ì n h S c r a t c h
Sơ đồ ật toán đư như sau: thu c mô t
Toàn b đoạn chương trình chính như sau:
Em hãy hoàn thi ện chương trình này.
Câu h i và bài t p
1. T o 1 bi n danh sách và nh p tr c ti p thành 1 dãy s . ế ế
Thiết lp thông s ba u cho bi n ch . n đầ ế y i = 1
Vòng lp ngoài theo i, ch y t n n-1 1 đế
Chun b cho vòng l p trong. Thi p ết l
các tham s u cho . ban đầ j, jmin min
Vòng lp trong v y t n n i j ch i+1 đế
Ra kh i vòng l p trong, ki m tra ph n t
th i vi min.
Tăng i lên 1, vòng lp
ài
156 | T h c l p t r ì n h S c r a t c h
2. T o 1 bi n danh sách và nh p tr c ti p 1 danh sách tên h c sinh trong l p. ế ế
3. Th n bài toán chèn 1 ph n t p x c 1 dãy sc hi vào dãy đã sắ ếp đúng: cho trướ đã được
sp x p theo th t P. Hãy vi P này ế tăng dần, cho trước 1 s ết đoạn chương trình chèn số
vào dãy trên sao cho dãy v p x ẫn được s ếp đúng.
4. Cho trướ ết chương trình đc 1 dãy s, hãy vi sp xếp li dãy s này theo các yêu c u sau:
(a) Dãy gi n. m d
(b) Các s âm lên trướ dương ởc, các s phía sau.
(c) Các s chẵn lên trước, s l phía sau.
5. Cho trướ ết chương trình đểc 1 danh sách tên hc sinh trong lp. Hãy vi sp xếp li danh
sách hc sinh này theo th t t n. điể
6. Cho trướ ết chương trình sinh 1 dãy sốc 1 dãy s. Hãy vi là 1 hoán v ngu nhiên ca dãy
s u. ban đầ
M rng
Thiết k i dế ng d ng thao tác v1 chương trình ứ liu là danh sách h ọc sinh như sau:
Khi khởi động chương trình, Mèo sẽ thông
báo tên các h c sinh hi n có trong danh sách.
Trên màn hình có 3 nút l nh.
Khi nháy lên nút , quá trình nh p Input Data
tr lic tiếp d u t bàn phím b u. Nh p t đ
liên tục cho đến khi nhn Enter không nhp
gì c .
Khi nháy lên nút Delete Data, chương trình
s yêu c u ng ười dùng nh p tên h c sinh
muốn xóa, sau đó kiểm tra và xóa tên này
trong danh sách.
Khi nháy lên nút n th toàn b danh sách h n có. View Data, chương trình hiể c sinh hi
157 | T h c l p t r ì n h S c r a t c h
Bài 17. Làm vi c v i List 2
Mục đích
Trong bài này bn s h c và biết:
- M ng d n c u List t s ụng đơn giả a d li
- M thu u List t s ật toán nâng cao đối với dũ liệ
- ng d ng th c a danh sách. c tế
Bắt đầu
Em hãy đọ sau đây và suy nghĩ xem có thểc yêu cu của 1 trò chơi Tìm hiểu động vt thiết
kế h thng d liệu như thế nào để có 1 chương trình, bài học hay.
Phn m m s ra liên t i, em c n tr l c các câu h i
trc tiếp b ng cách gõ bàn phím. N ếu gõ đúng tên
con vt thì hình nh c ng v t này s n trên ủa độ hi
màn hình. Nếu gõ không đúng, gõ sai thì thông báo
"sai" ho c hình s không hi n. nh
C n khi em nh n Enter ngay thì trò như vậy cho đế
chơi kết thúc.
Các g ng câu h i ý b i:
- s em có 10 hình nh con v t dùng làm d t k b d Gi liệu cho trò chơi này, em s thiế ế
liệu như thế nào.
- n nh o ra 10 bi n nh và 10 nhân v t trên sân kh Có 1 cách đơn gi t là t ế ấu dùng để lưu tr
tên ca các con vt và th hi n hình nh con v t.
- N u gi s em mu ng con v t lên thì em s phế ốn tăng số lượ ải làm gì? Có cách nào khi tăng
con v c nhân vt mà không ph n nh hoải tăng thêm biế t không?
Chúng ta hãy tìm hiu bài toán này và nhi khác trong bài h c này. ều bài toán tương tự
Ni dung bài h c
1. Tìm hi t ểu động v
Trong hoạt động đầu tiên này, chúng ta s quay tr l ng v ại bài toán, trò chơi Tìm hiểu độ t
và cùng xem n u s d ng các bi n nh d nên r t m c, ế ế anh sách thì chương trình sẽ tr ch l
sáng sa.
158 | T h c l p t r ì n h S c r a t c h
Chúng ta s s d ng 2 bi n danh sách chính là . Bi n Animal là ế Animal Animal_list ế
danh sách tên các con v n tìm hi u. Bi n s u chi tit c ế Animal_list lưu thông tin tra cứ ết
tương ứ ảng thông tin như sau. ng ca các con vật đã có trong danh sách Animal. Ví d 1 b
Chú ý bng này có th dòng l n tùy ý. có s
Animal
Animal_list
mèo
Mèo - loài v t nuôi trong nhà r t ph bi n trong m ế ọi gia đình.
khng
long
Khng long - loài v t kh ng l nh t ch ng t cách ất trên trái đ t, đã tuy
đây hàng triệu năm
chó
Chó - loài v t nuôi có tác d ng gi nhà r bi n. t ph ế
voi
Voi - n nh n nay. Voi s ng nhi u châu Phi và con vt 4 chân l t hi
châu Á.
nga
Nga - kéo xe, ch , r bi n trên th loài vật thường dùng để đồ t ph ế ế gii.
sư tử
Sư tử ật ăn thị n, đượ - là động v t ln nht trên c c mnh danh là chúa rng
xanh.
Tiếp theo chúng ta s thi hình nh các con v t. Ch c n t o 1 nhân v t cho ết kế cách lưu trữ
công vi c cc này. Hình nh các con v t khác nhau s ng v i trang ph tương ứ a nhân vt
này.
Chương trình sẽ ục đưa ra câu liên t
hi "Em thích con vật gì?". Ngưi
chơi trả li bng cách nhp tên con
vt t bàn phím.
Nếu nh nh con v ập đúng hình ả t s
hiện trên màn hình và giáo sư sẽ
thông báo thông tin k hơn về động
vt này.
Trò chơi kế ời chơi t thúc khi ngư
Thiết lp h thng trang ph c (costume) v i tên
trùng kh i bp v ng . Animal
159 | T h c l p t r ì n h S c r a t c h
Bây gi chúng ta s ho ng c này có th tóm t thiết kế sơ đồ ạt đ ủa chương trình này. Sơ đồ t
trong hình sau, bắt đầu t sân khu.
Chúng ta s b u t u. Sân kh a s l nh c a riêng ắt đầ sân kh ấu trong Scratch cũng có cử
mình. Trong bài toán này, sân kh u s b ki n . ắt đầu chương trình với s
Yêu cu h c sinh nh p tên 1 con v t t
bàn phím. Thông tin nh p s được lưu
trong biến nh . name
Nếu kh ng x p. name ác r lý tiế
Nếu = r ng d name ừng chương trình.
Chuyển điều khin sang nhân vt
con mèo.
Chuyn trang phục sang tên lưu
trong biến nh và th hi n. name
Chuyển điều khin sang nhân vt
thy giáo.
Tìm ki m thông tin trong b ng
Animal_list v con v t ghi trong
biến nh name. N u tìm th y thì ế
hin th thông tin con v t y trên
Chuyển điều khin sang
nhân v . t con mèo
n, không th hin trên
màn hình.
Gửi thông điệp:
Gửi thông điệp: End
Thc hin l nh yêu c u nh p tên
con vt trong 1 vòng l p vô h n.
Kim tra xem d u nh p có li
rng hay không.
Nếu d liu nh p không r ỗng thì lưu kết qu
nhp vào bi n ế name và truy p ền thông điệ Go
cho 2 nhân v t của chương trình.
Nếu d liu nh p làg r ng thì truy n
thông điệp . End
160 | T h c l p t r ì n h S c r a t c h
Đây là cửa s lnh ca nhân vt con mèo (con mèo có 5 trang phc khác).
Khi nhận thông điệp , nhân vGo t thy giáo c n th n x lý bi n nh , ki m tra c hi ế name
xem ng không. N u có th tìm ra ch s name có tên trong b Animal ế chính xác dòng chưa
tên tương ứ y, sau đó sẽng vi biến name th hin trên màn hình d liu có trong bng
Animal_list name. Ch s chính xác dòng cha tên con v ng vật tương ứ i được lưu trong
biến nh pos.
2. Bài toán sinh hoán v , t p con ng u nhiên
Trên thc t có rế t nhiều bài toán đòi hỏi vic sinh ngu nhiên các tp hp con, sinh ngu
nhiên các hoán v ong ho ng này chúng ta s cùng gi i quyị, … Tr ạt đ ết một vài bài toán đó
trong môi trường Scratch.
Bài toán 1. c 1 xâu ký t , c n sinh ra 1 xâu là hoán v ng u nghiên cCho trướ Str Strout a
xâu u. Str ban đầ
Khi bắt đầu chương trình, nhân
vt không hin th trên màn hình.
Khi nhận thông điệp , chuyGo n
trang phc sang giá tr ghi trong
biến nh name và hi n th trên
Khi nhận thông điệp , End n
không hi n th và d ng toàn b
chương trình.
Kiểm tra điều kin tên con
vt trong biến có nname m
trong danh sách Animal hay
không, n u có m ế i x
Vòng lặp này có tính năng
tìm ra giá tr v trí cpos a
biến name trong danh sách
Thông báo thông tin chi tiết
v y thông tin t con vt, l
bng Animal_list.
161 | T h c l p t r ì n h S c r a t c h
Bài toán 2. c dãy s . C n sinh ra 1 hoán v ng u Cho trướ (hoc ch) a , a
1 2
, …., a
n
nhiên của dãy này, đưa ra dãy sau: ủa dãy ban đầb , b
1 2
, …., b
n
là hoán v c u.
Bài toán 3. c dãy s . C n sinh ra m t dãy ngCho trướ (hoc ch) a , a
1 2
, …., a
n
u
nhiên m ph n t c a dãy trên: v b , b
1 2
, …, b
m
ới m cho trước.
Bài toán 1. Str Strout c 1 xâu ký t Cho trướ , c n sinh ra 1 xâu là hoán v ngu nghiên ca
xâu u. Str ban đầ
Ý tưởng ban đầu ca thuật toán này khá đơn giản: ly ngu nhiên các ký t t xâu và bStr
sung vào xâu Strout. Yêu c u c a bài toán là sau khi th c hi n giá xâu c n gi tr Str
nguyên, không thay đổi. S dng các lnh c th ca Scratch có th viết li cách làm trên
dưới dng cây l ệnh như sau:
Đặt Strout = r ng dài xâu Str , len = độ
Đặt Str_temp = Str
Thiếp l p l p v i s vòng l p = len
L b c y ra 1 ký t t k ủa xâu Str_temp
Đưa ký tự này vào cu i c a Strout
Xóa ký t này t Str_temp
Trong Scratch không có l nh xóa 1 ký t c i cùng c ủa xâu, do đó dòng cuố a thut toán trên
cn th t toán xóa 1 ký t có ch s khc hiện như 1 chương trình. Thuậ index i 1 xâu
Str_temp như sau:
Đặt Str_temp = r dà xâu Strỗng, index1 = 1, len = độ
Thiếp l p l p v i s vòng l p = len
Kiểm tra: n u index1 <> index thìế
L y ra ký t th index1 c a Str
Đưa ký tự này vào cu i của Str_temp
Tăng index lên 1
Thiết l p Str = Str_temp
Kết hp 2 thu ật toán trên, chúng ta có chương trình trong Scratch.
162 | T h c l p t r ì n h S c r a t c h
Bài toán 2. c dãy s . C n sinh ra 1 hoán v ng u Cho trướ (hoc ch) a , a
1 2
, …., a
n
nhiên của dãy này, đưa ra dãy sau: ủa dãy ban đầb , b
1 2
, …., b
n
là hoán v c u.
Input: Dãy List, Dãy List_out Output:
Bài toán 2 cách th bài toán 1, ch n trên bi n danh c hiện tương tự có điểm khác là thc hi ế
sách, ch không ph i trên bi n xâu ký t . ế
Cách đơn giả ủa List và đưa vào cuốn: ly t phn t ngu nhiên c i ca Listout, sau đó xóa
phn t này kh i danh sách g c List.
Cách trên s xóa d u t danh sách g li c.
Chương trình dưới đây được viế t l i hoàn chnh, danh sách gc List không b xóa d liu.
Do vy c n t o thêm 1 bi n danh sách trung gian List_temp. ế
Gán Str cho Str_temp
Ly 1 ký t ng u nhiên
t Str_temp và đưa
vào cu . i Strout
Xóa ký t này khi
Str_temp kết qu đưa
vào . Str_temp1
Gán li Str_temp1
cho Str_temp
163 | T h c l p t r ì n h S c r a t c h
Bài toán 3. C c dãy s . C n sinh ra m t dãy ngho trướ (hoc ch) a , a
1 2
, …., a
n
u
nhiên m ph n t c a dãy trên: v b , b
1 2
, …, b
m
ới m cho trước.
Input: Dãy List, s m; Output: Dãy List_out
Ý tưởng và cách thc hi ện bài toán này tương tự bài toán 2 và khá đơn giản như sau, chú ý
rng dãy g c List yêu c u không b xóa.
Thut toán l y ra ng u nhiên ph n t t 1 dãy g u m ốc ban đầ List được viết như sau:
Đặt dãy List_temp và Listout = r ng.
Gán t ng ph n t a dãy List vào List_temp. ử củ
Thiết l p vòng l dài m ặp độ
L y ra 1 ph n t ng u nhiên c a List_temp.
Đưa phầ n t y vào cu i c a danh sách Listout.
Xóa ph n t này t List_temp.
Chương trình hoàn chỉnh trên Scratch như sau.
164 | T h c l p t r ì n h S c r a t c h
3. T n sinh bài ki m tra tr c nghi m điể
Chúng ta s cùng tìm hi u m ng d ng n a c c dùng t a d liệu danh sách, khi chúng đượ
như dữ điển để liu t sinh ngu nhiên các bài kim tra tr c nghi m.
Mô mình bài toán c th như sau.
Gi s ng d u, bao g ng c có 2 b li m 2 danh sách quc gia và th đô tương ứ a qu c gia
đó. Ví dụ như vậ 1 bng y.
Quc gia
Th đô
Argentina
Buenos Aires
Armenia
Yerevan
Australia
Canberra
Austria
Viên
Azerbaijan
Baku
Croatia
Zagreb
Cuba
La Habana
Síp
Nicosia
Cng hòa Czech
Praha
Venezuela
Caracas
Vit Nam
Hà N i
Liên bang Nga
Moscow
165 | T h c l p t r ì n h S c r a t c h
Vương quc Anh
Luân Đôn
Hoa k
Washington
Uruguay
Montevideo
Uzbekistan
Tashkent
Chương trình cần đưa ra các loạ ệu đưi câu hi trc nghim sau, d li c ly ngu nhiên t
các bng d u trên. li
(a) <Th đô> là thủ đô của nước nào?
(b) <Quc gia> có th đô là ?
Phn m m s t ng sinh bài ki độ m tra trc
nghim theo 1 trong 2 lo i câu hỏi như trên.
Trên màn hình có 4 nút A, B, C, D. Bên c nh là
b 4 d liệu được ly ra và hin th ngu nhiên
trên màn hình.
Người thc hin bài kiếm tra bng cách nháy
chut lên 1 trong các đáp án.
Chương trình sẽ thông báo ngay đúng hay sai,
hin th d n sang câu hấu đúng, sai và chuyể i
tiếp theo.
Giao diện khi làm bài như sau:
Giao din khi nháy chọn phương
án đúng, chú ý dấ u tích bên c nh
phương án đã click.
Giao din khi nháy chọn phương
án sai, chú ý du tích chéo bên
cạnh phương án đã click.
166 | T h c l p t r ì n h S c r a t c h
Sơ đồ ủa chương trình như sau: hoạt động c
Sau đây là giả h cho sơ đồi thíc trên.
- B (làm l n t i sân kh u n n ắt đầu chương trình, thông điệp Reset ại) được đưa ra và chuyể
để tính toán, x lý các thông tin ban đầu.
- p , sân kh u s n vi c sinh ng u nhiên d ng câu h i trNhận được thông điệ Reset thc hi c
nghim, sinh ng u nhiên b 4 phương án, trong đó có 1 phương án đúng. Dữ liệu được ly
t 2 b ng dsQGdsThudo. Sau khi sinh xong b d u s p li phát đi thông điệ Bắt đầu
(Start). Chú ý là sau khi b độ d liệu được sinh, các thông tin này s t ng hin th trên
màn hình.
- y giáo khi nh p n công vi n thông Th ận được thông điệ Bắt đầu thì thc hi c sau: th hi
tin câu hi trên màn hình và ch l người chơi trả i.
Reset
Done
Done
B t đ u
Nhân vt th i y giáo s ra câu h
trc nghim trên màn hình.
V trí các nút A, B, C, D và 4 biến nh
dùng để ệu đượ th hin b d li c sinh
ngu nhiên cho câu h i tr c nghim.
Nhân vt và sân kh u chính: th y giáo, 4
nút A, B, C, D và nút d - Sai. ấu Đúng
Sân kh u s tham gia gi i quy ết bài toán
à
167 | T h c l p t r ì n h S c r a t c h
- d ng tr l i câu h i do th ng cách nháy chuNgười s ầy giáo đưa ra bằ t lên 1 trong các nút
A, B, C, D.
- ABCD (1 trong A, B, C, D) khi nh m bi n chu t thì l p t n nh Nút ận được c ế c gán biế
choice cho phương án mà ngưi dùng tr l p ời, sau đó phát thông điệ Done (đã xong). Thông
điệp này s ng th y giáo và nút d -Sai. phát đồ i cho th ấu Đúng
- y giáo khi nh n thô p s l p t n là Th ng điệ Done c kiểm tra xem đáp án người dùng đã chọ
đúng hay sai và thông báo đúng / sai ngay trên màn hình.
- - Sai khi nh s l p t i dùng Nút dấu Đúng ận thông điệp Done c kiểm tra xem đáp án ngườ
đã chọn là đúng hay sai và tính toán, thay đổ (sau khi đã i trang phc và dùng lnh stamp
show) để c Chéo (sai) tin dấu Check (đúng) hoặ i v trí tương ứng mà người dùng đã nháy
chut.
- - Sai chNút Đúng 3 giây sau thì phát thông điệ ận thông điệp . Khi nhReset p Reset thì nút
dấu Đúng - Sai s n b ng cách th n l nh c hi hide.
Bài t p: em hãy vi nh cho bài toán trên. ết chương trình hoàn ch
4. Bài luy n tr c nghi m có hình nh
Bài toán trong ho ng 3 v d u sinh ạt động này có ý nghĩa gần tương tự như trong hoạt độ li
bài ki m tra tr c nghi m. D u và hình nh c ng này l y t bài toán Tìm hi u li a hoạt đ
động v t ca ho t động 1.
168 | T h c l p t r ì n h S c r a t c h
Sơ đồ ủa chương trình thể làm vic c hin trong mô hình sau.
Bài t p: em hãy vi nh cho bài toán trên. ết chương trình hoàn ch
4. S d ng nhi u danh sách có liên k t ế
Trong ví d trên chúng ta s d ng 2 bi n nh d ng danh sách ds_QG và ds_Thudo có liên ế
quan đến nhau theo nghĩa 1 1, nghĩa là mỗ ảng này tương ứ ới chính dòng đó - i dòng ca b ng v
H thng
trang phc
ca nhân
vt này
tương thích
vi 2 bng
d li u
chính:
Animal
H thng sân kh u và nhân
vt tham gia ho ng trong ạt độ
bài toán này: nhân v t chính,
thầy giáo, 4 nút phương án
và sân kh u
Done
Next
Click chut
Chn ngẫu nhiên 4 phương án, gán vào
các biến nh Aname, Bname, Cname,
Dname; sinh ng u nhiên 1 phương án
đúng, hiển th trang phục theo phương án
Khi người dùng clíck chut, np
la chn vào bi n nhế choice
và g p . ửi thông điệ Done
Hin th
câu hi:
Đây là con
Kim tra
choice và
đáp án
đúng, hiện
thông báo
Đúng rồi,
hoc Sai
ri. Ch 2
giây và gi
thô điệ
Next
169 | T h c l p t r ì n h S c r a t c h
ca b a hai bảng kia. Đây là cách tạo quan h đơn giản gi ng. Th gic t các quan hế a các
bng có th ph c c tạp hơn. Chúng ta hãy quan sát 1 ví d a quan h như vậy.
Gi s chúng ta có 3 bi n nh d ế ạng danh sách như sau:
Bài toán 1. Viết chương trình nhập các bảng dữ liệu có liên kết trên.
Gi s n, c n l p danh sách các t nh, thành đã có danh sách các vùng miề ập chương trình nh
ph vi ch s liên k t vùng mi n chính xác. ế
Em hãy thi và hoàn thi ết kế ện chương trình này.
Bài toán 2. Bài toán tra cứu d u liệ
Gi s vùng mi n, c n l u nh p ch s vùng mi n, đã có danh sách các ập chương trình yêu cầ
chương trình sau đó sẽ đưa ra danh sách tấ t c các tnh thành ph thuc vùng min này.
Tnh
Thái Nguyên
Hà Ni
Thanh Hóa
Thái Bình
Qung Ngãi
m Đồng
Cần Thơ
Kiên Giang
Gia Lai
Cao B ng
Ch s
1
2
3
2
3
4
5
5
4
1
Vùng
1. Trung du B c B
2. Đồng bng Bc B
3. Trung B
4. Tây Nguyên
5. Nam B
Đầu tiên chương trình yêu cầu em nhp 1
s là ch s vùng, mi n mu n tra c u d
liu.
Sau đó chương trình sẽ tính toán và hin
kết qu tra c u là s lượng và danh sách
c th các tình, thành ph thuc vùng,
miền đã nhập.
Nếu nh s vùng, mi n, ập không đúng chỉ
Đầu tiên chương trình thông báo v trí
ca nút lnh nhp d liu. Khi nháy
lên nút Input Data, em b t đ u nh p
d liu. Vi c nh p d liệu được tiến
hành theo 2 bước:
Bướ c 1: nhp tên t nh, thành ph
(không được trùng v ới tên đã có).
Bướ c 2: nhp ch s vùng, min.
170 | T h c l p t r ì n h S c r a t c h
Em hãy thi và hoàn thi ết kế ện chương trình này.
Câu h i và bài t p
1. Cho trướ ết chương trình thực 1 dãy s t nhiên bt k, hãy vi c hin các công vic sau:
- m và li n c a dãy trên. Đế t kê các s ch
- m và li là nguyên t trong dãy trên. Đế t kê các s
2. Gi s ho . Vi p s chúng ta đã có 1 dãy số c ch: a
1
, a
2
, …., a
n
ết chương trình nhậ
t nhiên m và sinh ra ng u nhiên các s l y theo th t t b
1
, b
2
, …, b
m
trái sang phi
của dãy ban đầu.
3. Dãy s Fibonaci là dãy s c là dãy 1, 1, 2, 3, 5, 8, 13, …. tứ a , a
1 2
, …., a
n
…. thỏa
mãn điều kin:
a
1
= a = 1
2
a
n
= a
n-1
+ a
n-2
v ới n > 2
Hãy vi h nh p s m t bàn phím và th hi n trên màn hình m s h u tiên ết chương trìn ạng đầ
ca dãt Fibonaci này.
M rng
Hãy thi và vi ng bài h ng Anh có âm thanh sau. ết kế ết chương trình mô phỏ c phát âm tiế
Phn m m yêu c u nh p 1 t ng Anh b hi n cách phát âm tiế t kỳ, sau đó thông báo và thể
ca t này v i âm thanh th t.
Yêu cu b sung của chương trình:
Khi thc hi cái c a tn vi t các chệc phát âm, chương trình sẽ đưa ra màn hình lần lượ đã
cho ngay trên màn hình, đưa chữ và âm thanh đồ ng thi.
171 | T h c l p t r ì n h S c r a t c h
Bài 18. Th t c 1
Mục đích
Hc xong bài này em s :
- c vai trò c t m giúp gi i quyBiết và hiểu đượ a th ục như 1 nhóm con chương trình nhằ ết
công vi c d hơn.
Bắt đầu
1. Tư duy chia 1 bài toán lớn thành các bài toán nh hơn.
Trên thc tế khi g p m c l chia nh công vi t công vi ớn, con người luôn tìm cách ệc đó ra để
làm từng bước.
- c giao quét 1 ngôi nhà l n, em s chia thành nh ng phòng nh và quét d n t ng Khi đượ
phòng m t.
- N u ph i bê 1 ch ng sách l n em s khuân và bê chuy n t ng cu n sách ho ng vài ba ế c t
cun sách cho nh .
- c giao nhi u bài t p v ng chia ra m i ngày làm 1 ít bài tKhi đượ nhà, em thườ ập để cui
tun kh n l i thành nhi u. i d
Em có th ch ra rt nhi u ví d thc tế na.
Trong bài toán tin hc, vi c l n thành nhi u vi làm t ng vic chia 1 công vi c nh hơn để c
đượ c g ọi chung là "chia để trị". Đây là một k thut hay dùng nht trong các bài toán tin
hc, nht là l p trình máy tính.
Ni dung bài h c
1. Có th rút g ng cách nào? ọn chương trình bằ
Chúng ta hãy b t đ u ho ng này b ạt độ ằng chương trình vẽ 1 đa giác đều đã biết.
Đoạn chương trình, như em thấ ức năng tách biệy, có th chia làm 2 phn vi ch t rõ rt.
- n 1 bao g m các l nh thi u cho vi . Ph ết lập ban đầ c v
- n 2 là các l nh v u. Ph hình đa giác đề
Đoạn chương trình
chun b cho vi . c v
chương trình vẽ hình đa
giác đều 5 cnh.
172 | T h c l p t r ì n h S c r a t c h
Chương trình trên bây giờ có th tách làm 2 phn, phn 1 có tên , ph"Chun b v" n 2 có
tên "V u 5 cđa giác đề nh".
Khi đó chương trình gốc ca chúng ta bây gi rút gn l i ch còn 2 "l nh".
Em có nhn xét gì v ng trên? hoạt độ
Các g i ý:
- Nhóm các l nh vào thành 1 l nh m i?
- ân nhóm th này có l i ích gì? Vic ph ế
2. Thi d ng khái ni m th t c trong Scratch ết lp và s
Trong hoạt động này, em s thc hin thao tác thi p các th t c cết l th cho một chương
trình c th. Chúng ta hãy b u t u 5 c nh t ắt đầ chương trình vẽ hình đa giác đề rên.
Lnh thi p th t c có trong nhóm l nh ết l More Blocks như hình sau.
Thiết lp nhóm
lnh có tên Chun
Thiết lp nhóm
lnh có tên V đa
giác đều 5 cnh
Nhóm l nh More
Blocks (thêm các
lệnh khác), trong đó
l c vnh làm vi i
Lnh kh i t o th t c.
173 | T h c l p t r ì n h S c r a t c h
Để kh i to 1 th tc m i, nháy nút Make a Block trong nhóm lnh More
Blocks.
Ca s New Block xu n. t hi
Ví d em t o ra th t c v i tên "Chu n b v ẽ" như hình sau.
Bây gi em hãy kéo th nhóm l nh có ch nh chu n b vào khung c năng là các lệ cho vi c v
ca lnh t i cdefine là lệnh định nghĩa thủ ục như sau. Khung bên dướ a lnh define dùng để
định nghĩa nội dung ca th tc.
Tương tự và định nghĩa thủ em hãy to thêm 1 th tc na có tên V đa giác đều 5 cnh tc
này như sau:
Bây gi , khi nhìn vào khu v c m u l nh c a nhóm More Blocks chúng ta s y xu n th t hi
2 l ng v i 2 th t o ra. ệnh tương ứ c v a t
Nhp tên th t i v trí này. c t
Nhp xong nh n nút OK.
Nháy nút OK em s
thy xu t hi n l nh
define trong c a s
Kéo th nhóm các lệnh này vào dưới và gn
vi lệnh định nghĩa thủ tc (define).
174 | T h c l p t r ì n h S c r a t c h
Các l nh m i này s d ng hoàn toàn gi t, và có được s ống như các lệnh khác mà em đã biế
th s d ng nhi u l n.
Bây gi c n s d ng 2 l t n trong khung chương trình chính, em chỉ ệnh trên để ạo thành đoạ
chương trình chính thứ ạng như sc ca bài toàn. Ca s lnh ca nhân vt có khuôn d au:
Theo em s d ng th t c mang l i nh ng l i ích nào? Ch ọn các phương án em thấy đúng,
gii thích vì sao.
A. Nhìn chương trình thấy d hi ểu hơn, đơn giản hơn.
B. Chương trình chính đượ ọn hơn.c viết ngn g
C. S d ng th t làm cho s l c vi n g c s ệnh đượ ết ra ít hơn, ng ọn hơn.
D. Mi th t c có th u là 1 bài toán con. hi
E. Làm cho chương trình trở ấu trúc hơn. nên d hiu, có c
3. Các thao tác khác v t c i th
1. Xóa th t c
Mun xóa 1 th t c chúng ta kéo th dòng l nh t c nào u khi n define th o khung điề
lnh gi c khi xóa th t n h y h t các dòng l nh c t c này ữa màn hình. Chú ý trướ c c ế a th
trong ca s l nh.
2 l ng v i 2 th tệnh tương ứ c v a
khi t t hio xu n trong khung l nh.
Đoạn chương trình
chính ch còn 2
2 th t nh ục được đị
nghĩa cùng trên 1
màn hình l nh.
175 | T h c l p t r ì n h S c r a t c h
Chú ý:
- N u ch kéo th 1 dòng l nh define th t c thì s xóa th t c này. ế
- N u kéo th t c và c nh g n kèm theo thì s xóa c t c và các l nh này. ế th ác l th
2. Đổi tên thủ tục
Muốn đổ ục đó tại tên 1 th tc cn thc hin lnh: nháy chu t phi lên dòng cha th t i
khung điề ệnh, sau đó chọu khin l n chức năng edit.
4. M ví d t c t s đơn giản v th
Trong hoạt động này chúng ta s cùng thc hi các th c cn các bài toán thi t kế ế t . th
1. Th t c v u n c nh v dài c nh d, các s c ẽ đa giác đ ới độ n, d cho trướ
Th tục này đã được mô t trong hoạt động trên. Chúng ta s dng lnh Make a Block để
to ra 1 th t c có tên V đa giác đều, sau đó kéo thả ệnh tương ứ các l ng vào khung ca th
tục này như sau.
Kéo th
Kéo th
Chức năng đổi tên th
tục đã xác định trước
đó
176 | T h c l p t r ì n h S c r a t c h
Sau đây là minh họ ục này. Trướa cho vic chy th t c khi chy các bi n ế
nh nd cần gán trước các giá tr.
2. Th t c v tròn bi ẽ vòng ết tâm và bán kính
Th t c này yêu c u có 3 tham s - t tâm c a vòng tròn và R - bán kính là (Tx, Ty) a đ
vòng tròn c n v .
Để phân tích th tc này chúng ta xu t phát t
th tc v u trong ho c đa giác đề ạt động trư
Để t c hình tròn, ạo đượ chúng ta ch c ần tăng số n trong th tc trên lên 1 s khá l n, ví d
90, 180, 360. Tuy nhiên độ dài cnh cd n tính l i chính xác. C nh d có th tính qua bán
kính R theo công th trên: d =
ức đã ghi ở 2Rsin(
𝛼
2
). Ví d v ới n = 90, khi đó α = 360/90 =
4. Do đó theo công thức trên ta s d = 2Rsin(2).
Cạnh AB được tính
theo công thc:
AB = 2Rsin(
𝛼
2
)
Ni dung ca th c t V đa giác
đều n d. Các bi n nh ế được
khi to t trước.
177 | T h c l p t r ì n h S c r a t c h
3. Th t c v ng th c ẽ đườ ẳng đi qua 2 điểm A và B cho trư
Gi s m A có t m B có t X, P t n điể a đ (P
1
X, P
1
Y), điể ọa độ (P
2 2
Y), khi đó thủ c v đoạ
thng n ối 2 điểm này như sau:
3. Th t c gán d u t 1 bi n nh danh sách này sang bi n nh danh sách khác liệ ế ế
Gi s c 1 bi n nh ki u danh sách , c n xây d ng th t c chuy n d u t cho trướ ế List li
List Listout sang .
4. Th t c sinh ng u nhiên 1 hoán v ị các s 1, 2, 3, …, n
Cho trước s c c t nhiên , th t n n xây d ng s u nhiên 1 hoán v c a dãy s 1, 2, sinh ng
3, …, n và kế đưa vào biết qu n nh List.
Để thc hin th t c này, chúng ta cn to ra thêm 1 dãy ph n a, ví d n List_temp. Đoạ
chương trình củ ục như sau.a th t
Tính độ dài cnh d =
2Rsin(
𝛼
2
) với α = 4
T a đ u v = (Tx, Ty-điểm bắt đầ
Đoạn chương trình vẽ đường tròn.
Thut toán ca th t n ục này đơn giả
như sau:
- i dung c a dãy Listout. Xóa n
- Chuy t các ph n t cển đổi lần lượ a
dãy sang . List Listout
178 | T h c l p t r ì n h S c r a t c h
Dưới đây là đoạn chương trình hoàn chỉnh để s dng th tc trên.
5. Th t i th t khác và g i chính nó c g c
Như chúng ta đã thấ ục sau khi đượy, th t c khi to s hi n ra trong khung các mu lnh và
đượ thườ c s d t lụng như mộ nh bình ng. Do vy hoàn toàn có th xy ra là trong n i dung
ca 1 th t c này có l i g n th t c khác, ho c m t ọi đế t th c s có l n chính nó. i gọi đế
Trong hoạt động này chúng ta sm quen vi các hiện tượng này.
a. Th t c có th g i chính nó
Khi trong th tc có li g t chú ý nh t là ph u kiọi đến chính nó, điểm cần đặc bi ải có điề n
đả m bảo không để th t c chy vô h n. Trong ví d sau, th t c Countdown có nhi m v
hi in th giá tr bi n nh n 0. Quá trình này c n ph t thúc vế n và đếm ngược cho đế i kế ới đ u
kin n > 0.
Dãy các s t 1 đến n đã được
đưa vào dãy List_temp t trước
đó.
Thut toán ca th t c: ch n
ngu nhiên 1 s t List_temp,
đưa số này vào List, sau đó xóa
s này t List_temp và l p l i
quá trình trên cho đến khi dãy
Các l nh
chun b ban
đầu được đưa
vào 1 th t c
Init, kh o i t
2 dãy List,
List_temp
đưa dãy 1..n
à
Đoạn chương trình
h
179 | T h c l p t r ì n h S c r a t c h
b. Th t c g t c ọi thủ
Chúng ta quay li 1 ví d đã biết trong các bài trước, v bông hoa 5 cánh như hình sau.
Dựa trên chương trình gốc này, chúng ta s t o 2 th t c: vòng l p ngoài và V hoa V
vòng tròn nh hoa vòng tròn nh vòng l p t trong. Th c V s g i V bên trong các
lnh c a mình. N i dung c 2 th t th ục này trong hình dưới đây.
5. ngôi sao 5 cánh Chương trình v
Trong hoạt động này chúng ta s thiết l i ập chương trình vẽ ngôi sao 5 cánh như hình dướ
đây vớ cho trưới bán kính R c. Để thun tin cho vic phân tích bài toán, chúng ta cn v
thêm hình 1 ngôi sao 5 cánh bên v i các tham s mô t k u trúc c a ngôi sao này. hơn cấ
Điều ki dện để ng th
Li gi chính
Chúng ta nh l i 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ạ tâm đến thng t n v trí tiếp cn
vòng tròn.
- vòng l p trong là v vòng tròn
nh
180 | T h c l p t r ì n h S c r a t c h
Phân tích bài toán.
Quan sát hình trên bên phái cho cho chúng ta g n yêu c u bài toán. Thii ý cách thc hi ết
lp 2 b ng, bi n nh ế d tạng List để lưu trữ ọa đ các đi m A , A , A , A , A . Các bi n m ng
1 2 3 4 5
ế
này s ký hi u là . B ng s các t X, m ng s PointX PointY PointX lưu trữ ọa độ PointY
lưu trữ các t a đ y.
Như v y các bước để gii quy ết bài toán này như sau:
1. Thi p t m A , A , A , A , A ng . ết l a đ các điể
1 2 3 4 5
và đưa vào 2 mả PointX, PointY
2. V hình ngôi sao b ng cách n i v m A , A , A , A , A . các điể
1
-A
3 2
-A
4 3
-A
5 4
-A
1 5
-A
2
Đoạn chương trình sau mô tả ọa độ y điể cách thiế t l p t m A
1
, A , A , A , A Các t
2 3 4 5.
a đ
này l sung vào 2 danh sách . ần lượt được b PointX, PointY
Đoạn chương trình sau thự ặp điểc hin công vic v các nét ni các c m A , A , A -
1
-A
3 2
-A
4 3
A
5
, A , A . Vi n trong 1 vòng l p 5 l n.
4
-A
1 5
-A
2
ệc này cũng được th c hi
Vòng lp 5 l n, m n th n: i l c hi
- B u t vắt đầ trí (0, 0), dch
chuyển 1 đoạn bng R, np thông
tin t a đ X, Y vào 2 bng PointX,
PointY.
X 72 độ
181 | T h c l p t r ì n h S c r a t c h
Toàn b các th t c c ủa chương trình như sau:
Câu h i và bài t p
1. Cho trước dãy s List, hãy viết 1 th tc sinh ngu nhiên 1 hoán v ca dãy này, kết qu
s ng đưa vào mả Listout.
2. Cho trước 1 xâu ký t Str. Viết 1 th tc sinh ngu nhiên 1 hoán v ca xâu này, kết qu
đưa vào xâu Strout.
3. Hoàn thi hoa. ện chương trình Vẽ
Xác đị nh các ch s
index index1
V đoạn th ng n m t ối điể
điể đếm có ch s index n
điểm có ch s index1
182 | T h c l p t r ì n h S c r a t c h
4. Hãy th n bài toán v hình ngôi sao theo cách khác, ví d dài c nh ngôi sao c hi ụ: tính độ
(khong cách d = A , thu t toán v chính s t phát t v , th n l p
1
A
3
như sau: xuấ trí A
1
c hi
5 l , di chuy dài d. ần thao tác sau: xoay trái 36 độ ển theo độ
M rng
Viết chương trình thực hin bài luyn theo yêu c u sau.
Ý nghĩa của chương trình này rấ hương trình khác t ln và có nhiu ng dng trong các c
nhau, vì các giá tr s c n nh n trên màn hình r t khó, khó quan sát. a biế được th hi
Để thc hin bài toán này chúng ta to ra 1 nhân vật có tên Number có đầy đủ toàn b 10
trang phc chính là các ch s 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Cá s c ch này và độ rng ca
chúng trên màn hình được lưu trong 2 dãy như hình dưới đây.NumbersWidth
Biến nh i dùng nh p. Th t c sau có nhi m v n s n trên n dùng để lưu số do ngườ th hi
màn hình b ng nhân v . t Number
Chương trình sẽ ầu ngườ yêu c i
dùng nh p 1 s t nhiên t bàn
phím, sau đó thể hin sy trên
màn hình b ng các ch s l n, rõ
Các hình nh,
trang phc c a
nhân v t Number.
183 | T h c l p t r ì n h S c r a t c h
Yêu cu nh p s n hành b i sân kh u. Sau khi nh p xong d p n được tiế liệu, thông điệ
Show Number Show Number được g c i đi và khi nhận thông điệp này, th t s c kích đượ
ho t đ hi n s p trên màn hình. th đã nhậ
184 | T h c l p t r ì n h S c r a t c h
Bài 19. Th t c 2
Mục đích
Hc xong bài này, b n s bi ết:
- p th t c có tham s . Thiết l
- Phân bi t bi n nh riêng c t n nh c a nhân v ế a th c và biế t.
- ng d ng ti p theo c t ế a th c.
Bắt đầu
Trong bài h c trước, em đã được làm quen v i khái ni m th t c. Th t nh ục sau khi được đị
nghĩa sẽ ện ra trong khung điề nh như 1 lệ hi u khin l nh mu và em có th s dng lnh này
như mọi lnh khác. Ví d th tc V đa giác đều sau.
Chúng ta cùng nhau xem li n i i dung c a th t c này, em có nh n xét gì khi quan sát n
dung này?
Em hãy quan sát các bi n nh . ế n d
Như vy các biến nh , n d được t o ra b i nhân v ật đang thực hi n th t c này và không
ph thuc v o th t c. Do v y khi g i th t c này, các bi n nh ế n, d c u ần được gán d li
trước. Ví d:
Trong Scratch, em đã biế t có r t nhi u lnh có tham s, tc là chúng ta cho th nhp trc
ti liếp d ệu trên dòng định nghĩa của lnh này.
Ví d n t c v s c dài c nh ếu như chúng ta có thủ 1 đa giác đều, trong đó tham số ạnh và độ
có th c ti c t nh p tr ếp như lệnh sau thì vic áp dng th tc này trên th ế s n ti n và thu
đơn giản hơn rất nhiu.
Trong bài hc này chúng ta s làm quen v i lo t c có tham s này. i th
Các bi n nh màu cam ế n d
sm là bi n nhế c a nhân v ật đang
thc hin th t c này.
185 | T h c l p t r ì n h S c r a t c h
Ni dung bài h c
1. Thi p tham s cho th t c ết l
Trong hoạt động này chúng ta s cùng nhau thiết lp các th t c có tham s trong Scratch,
bắt đầu t bài to u trên. án v đa giác đề
(a) Để thiết l p th t c chúng ta ch n nhóm lnh More Blocks sau đó nháy lên nút Make
a Block.
(b) Xut hin h p h i tho m i New Block như hình dưới đây. Nháy lên nút Options để
rng h p h i. i tho
(c) Hp h i tho o th t c m r i t ộng như sau.
Nháy nút này để bt
đầ u kh i to 1 th
tc mi.
Nháy lên nút Options để
m r ng h p h i tho i
này đầy đủ sn sàng cho
vic khi to th t c
186 | T h c l p t r ì n h S c r a t c h
Chú ý ý nghĩa các nút chèn tham số và ch vào tên c a th t c.
(d) Đầ u tiên c n nhp tên c a th t c trướ c. Ví d nhp tên "V đa giác đều ".
(e) Sau khi nh p tên chính c t c thì b u có th nh p tham s a th t đ .
Trong ví d p tên th t c là V u, em s nháy nút dưới đây, sau khi nhậ đa giác đề
để to 1 tham s dng s u tiên. (number) đầ
Xut hin khung tham s v i tên i thành . "number1". Em hãy thay đổ "n"
Nhp tên th t à các tham c v
s c t a th c tại đây.
Các nút này dùng để đưa
tham s vào th t c. Cho
phép 3 lo i tham s , xâu : s
Chèn gi a các tham bi n là ế
ch ng nút này. được chèn b
Nhp tên c a th
tc tại đây.
187 | T h c l p t r ì n h S c r a t c h
(f) Ti p theo, em hãy chèn 1 n ch vào th t ), sau cùng b ế đoạ c ("cnh v dài cới độ nh"
sung thêm 1 tham biến d ng s n ữa, đặt tên là "d" như hình sau.
(g) Sau khi t o xong tên c t c, em s y xu n l nh , bi ng sau trên a th th t hi define ểu tượ
ca s l nh c a nhân v t. Em hãy chú ý quan sát các tham biến đã đượ ịnh nghĩa trong c đ
th tc.
Các tham bi t c s có màu xanh. Trong quá trình vi nh ến đượ ịnh nghĩa trong thủc đ ết các l
mô t t c chúng ta có th s d ng các tham bi n nh ng, th ến này như các biế bình thườ
ngoi tr nh thao tác tr i giá tr ccác l c tiếp thay đổ a các bi n nhế này.
Nháy nút này để to ra
tham s u tiên d ng s đầ
ca th a t c. Tên c
tham s s m nh là ặc đị
"number1", em hãy đổi
thành "n".
Nháy OK để kết thúc
khi to tên c t a th c.
Nháy nút này để to ra
thêm dòng ch "cnh vi
độ dài cnh" trong tên
Các tham bi n trong ế
dòng định nghĩa thủ
tc có màu xanh.
188 | T h c l p t r ì n h S c r a t c h
(h) Bây gi n n i dung c t c b ng các l t. Chú ý s d ng các chúng ta điề a th ệnh đã biế
tham bi n c t n nh ng. ế a th ục như các biế thông thư
(i) Sau khi th t g, tên c t c s xu t hi n t u l nh ục đượ ịnh nghĩa xonc đ a th i khung m
như 1 lệ bình thườnh có tham s ng ca Scratch.
(j) Bây gi a bài này s n b ng 2 l chương trình chính củ được viết đơn giả ệnh như sau.
Toàn b c l nh và k a s ết qu thc hiện chương trình như sau.
2. Th t c Count Down ục đếm ngư
Th t c Count Down t c bây gi có th vi ng có tham sục đếm ngượ bài trướ ết dưới d như
sau.
Chú ý li g i chính nó s có tham s thay đổi.
Trong ni dung c a th t c
cn s d ng các tham bi n ế
như các biến nh bình
h
189 | T h c l p t r ì n h S c r a t c h
3. Bi n nh c a th t c ế
Các tham bi t c n nh riêng c t c này. ến đượ nh nghĩa trong thủc đ chính là các biế a th
Chúng ta có th t o ra nhi u bi n nh ế như vậy trong quá trình định nghĩa thủ tc mi. Trong
ho ết động này chúng ta cùng phân tích sâu hơn về các tham biến hay bi n nh riêng này ca
th tc trong Scratch.
Các tham bi t c có th hi n nh riêng c tến đượ nh nghĩa trong thủc đ ểu như các biế a th c
này. V y các bi n nh m gì khác bi i khái ni n nh ng ế này có đặc điể t v m biế thông thườ
mà ta đã biết.
(1) Tt c i bi các tham bi n, hay bi n nh c t u có màu phân bi t vế ế a th ục đề xanh để ến
nh c a nhân v t trong Scratch có màu da cam. Do v y 2 h ng bi n nh th ế p này là độc l
hoàn toàn v i nhau.
Li gi chính th t c g c
Count down vi giá tr tham
s n - 1.
Biến nh d ng s
Biến nh d ng xâu
ký t
Biến nh d ng logic
(đúng / sai)
V trí các tham s ,
biến nh riêng c a th
tc.
Biến nh tham s c a th
tc có màu xanh.
Biến nh c a nhân
vt trong Scratch có
màu da cam.
190 | T h c l p t r ì n h S c r a t c h
(2) Các giá tr được truy ến vào tham s ca th t c có th là giá tr s c th , có th là bi n
nh.
Trong ví d 3 tham s c a th t c truy n giá tr thông qua các bi n nh . sau c ục đều đượ ế
Trong ví d trên, giá tr c n nh nhân v c truy n vào th t a biế t Str đượ c (ti thời điểm gi
th tc này) thông qua tham bi n . Chú ý bi n màu da cam khác bi n toàn vế Str ế Str t hoà i
tham bi n màu xanh. ế Str
Ví d: lệnh sau đây nếu được th c hi n trong th t c trên s gán giá tr c a tham bi n ế Str
ca th t c cho bi ến nh . Str
Còn trong ví d sau, sau khi gán tr c ti p bi n nh Str thành "Hà N i" thì giá tr tham bi n ế ế ế
Str c ta th c vẫn không thay đổi.
(3) Các tham biến, bi n nh riêng c t c ch t c này. ế a th có ý nghĩa bên trong thủ
Các bi n nh màu xanh ch có tác d ng n u vi d nh bên ế ế c s ụng chúng được đặt trong các l
trong th t c này.
Ví d: 2 lnh sau n t ngay n nh ếu đặ trong chương trình chính sẽ không có ý nghĩa vì biế
màu xanh Str không có tác d ng.
(4) Không th i giá tr c a các tham bi n hay bi n nh c a th t thay đổ ế ế c.
Các tham bi n hay bi n nh bên trong th t c không th ế ế thc hiện được các lệnh thay đổi
giá tr như xóa, gán hoặc thay đổi thông tin. Khi thc hin li gi th tc, các tham biến này
đượ c truyn 1 giá tr t bên ngoài và gi nguyên giá tr t thđó trong suố i gian th tc có
hiu l c.
4. M t c v i xâu ký t t s th
4.1. Th t y ra 1 xâu con t xâu g c ục lấ
Th t c này có các tham bi u vào: ến đầ
Str: xâu g u. ốc ban đầ
start, end: v trí các ký t b u và k t thúc c n l y ra xâu con t xâu g . t đ ế c Str
Kết qu c gán cho bi n nh . xâu con đượ ế string
191 | T h c l p t r ì n h S c r a t c h
4.2. Th t t xâu khác ục chèn 1 xâu vào mộ
Các tham s c t a th c:
Str1: xâu, n i dung c n chèn.
Str: xâu ký t g u. ốc ban đầ
start: v trí c n chèn trong xâu g . c Str
Kết qu trí xâu g vào v c Str sau khi đã chèn Str1 start s c gán cho bi n nh . đượ ế string
4.3. Th t ục xóa 1 xâu con trong 1 xâu ký tự
Các tham bi n c a th t c này: ế
192 | T h c l p t r ì n h S c r a t c h
Str: xâu ký t g c.
start, end: v u và cu c n xóa. trí đầ i trong xâu Str
Kết qu c a vi c xóa các ký t trong xâu s gán vào xâu . Str string
4.4. Th t n s p phân sang nh phân ục chuyể ố thậ
Th t c này có 1 tham bi n là . K t qu vi c chuy ế Decimal ế ển đổ phân đưi sang xâu nh c
lưu trong biến nh Binary.
4.5. Th t n s nh phân sang th p phân ục chuyể
Th t c này có 1 tham bi n là . K chuy i xâu nh phân này sang s p ế Binary ết qu ển đổ th
phân được lưu trong biến nh . Decimal
193 | T h c l p t r ì n h S c r a t c h
5. M t c v t s th i s
5.1. Th t m tra 1 s i là nguyên t hay không. ục kiể ố có phả
Th t c này có 1 tham s duy nh t nhiên . K t qu ki m tra ghi trong bi n nh t là s n ế ế
nguyento n n. N u ế nguyento = 1 thì là s i n thì nguyên tố, ngược l ếu nguyento = 0 là hp
s.
5.2. Th t n 1 s t nhiên thành tích các th a s nguyên t ục khai tri
Th t c này ch có 1 tham s duy nh . K khai tri n thành tích các th t là n ết qu n a s
nguyên t . được lưu trong dãy Number_list
194 | T h c l p t r ì n h S c r a t c h
5.3. Th t h USCLN và BSCNN c a 2 s t nhiên ục tín
C 2 th t u có các tham bi n là các s . ục này đề ế m n
Kết qu t c chung l n nhước s a 2 s trên s n nh . được lưu trong biế gcd
Kết qu i s t c c a th t c tính b chung nh nh a 2 s m n nh n được lưu trong biế
lcm.
195 | T h c l p t r ì n h S c r a t c h
6. M bài toán x n dãy s t s lý liên quan đế
Trong hoạt động này chúng ta s cùng nhau gii quyết mt s bài toán c điển liên quan đến
dãy s . Dãy s c ký hi n nh d ng danh sách . cho trước s đượ ệu là lưu trữ trong biế nList
6.1. Bài toán tìm ph n t nh nh t và l n nh t c a 1 dãy s c ố cho trướ
Giá tr nh nh a dãy s n nh . t c nList được lưu trong biế Min
Giá tr l n nh a dãy s n nh . t c nList được lưu trong biế Max
6.2. Bài toán tính s các kho u c a 1 dãy s c ảng đơn đi cho trướ
Khoảng đơn điệ ục đơn điệu (tăng ho ự). Đểu ca 1 dãy s là 1 dãy con liên t c gim thc s
hiểu rõ hơn định nghĩa này, chúng ta quan sát 1 số ví d sau:
196 | T h c l p t r ì n h S c r a t c h
Dãy s g c
Phân tích
S các khong
đơn điệu
1 1 1 1 1 1 1
dãy này ch bao g m các s h ng b ng nhau
nên không có b kho u nào. t k ảng đơn điệ
0
1 2 3 3 3 -2 - 3
khoảng đơn điệu tăng đầu tiên (1 2 3), tiếp
theo là 1 khoảng đi ngang, sự đi ngang
không đượ ảng đơn điệc tính là kho u. Do vy
dãy này ch có 2 kho u. ảng đơn điệ
2
1 1 2 3 4 4 3 2 1 1 1 1 2
khoảng đi ngang đầu tiên (1 1) không đưc
tính là khoảng đơn điệu. Dãy này ch có 3
khoảng đơn điệu.
3
Chúng ta s d ng các bi n nh sau: ế
nList: dãy s u. đã cho ban đầ
count: bi m các kho c a dãy sến đế ảng đơn điệu tăng thực s ố. Đây chính là đáp án cần tìm.
status: bi n nhế ghi li trng thái ca phn t hin th i của dãy khi chúng ta đang phân tích.
Ý nghĩa của bi ến này như sau:
status = 0, phn t c không c n xét. y chưa xét hoặ
status = 1, phn t hi n th m trong 1 kho . ời đang nằ ảng đơn điệu tăng thực s
status = -1, ph n t hi n th i không n m trong 1 kho . ảng đơn điệu tăng thực s
Th t s t các giá tr u cho bi n count và status. count = 0. status = 0. Kic Init đặ ban đầ ế m
tra dãy nList n u có > 1 ph n t thì m p t c làm vi ế i tiế c.
Th t c chính c ài toán. a b
197 | T h c l p t r ì n h S c r a t c h
6.3. Bài toán tìm 1 dãy con liên t dài l n nh t c a m t dãy s cho ục đơn điệu tăng có độ
trước
Phân tích bài toán.
Gọi dãy đã cho là a , ...., a
1
, a
2 N
. Vì dãy cn tìm là dãy liên tc nên chúng ta có th
dánh d c t các dãy con liên t c n 1 l n duy u ấu và tìm đượ t c ục đơn điệu tăng chỉ t t đầ
dãy. Nh ng làm bài toán này ch c n 1 vòng duy t tuy n tính t ận xét trên cho ta ý tưở ế 1 đến
N.
Trong quá trình duyt chúng ta s s d ng các bi n nh sau: ế
Thông tin v dãy c ng các bi n sau: ần tìm được lưu tro ế
bmax ch đầ s phn t u tiên c ủa dãy con đơn điệu tăng cực đại.
lengthmax độ dài c ủa dãy con đơn điệu tăng cực đại.
Như vậy dãy này s có các ch s là bmax, bmax+1, ...., bmax+lengthmax-1
Chúng ta cần lưu thông tin củ c đơn điệu tăng hiệa dãy con liên t n thi, tc là dãy mà chúng
ta đang khảo sát:
bcurr s ph n t ch đầu tiên ca dãy
lengthcurr độ i hin th i ca dãy.
Phần khai báo ban đầu như sau:
bmax = 1; lengthmax = 1;
bcurr = 1; lengthcurr = 1;
198 | T h c l p t r ì n h S c r a t c h
Phần chương trình duyệ như sau:t chính
cho k ch y t n N 2 đế
if a < a
k-1 k
then
lengthcurr:=lengthcurr + 1;
if lengthmax < lengthcurr then
bmax : = bcurr;
lengthmax : = lengthcurr;
else
bcurr : = k; lengthcurr : = 1;
Th t khai c Init
báo các giá tr ban
đầ u c a các biến
nh.
Th t c chính
Processing
199 | T h c l p t r ì n h S c r a t c h
Toàn b chương trình hoàn chỉnh như sau.
Câu h i và bài t p
1. Có ngườ ới", đúng hay sai?i nói "to m t th tc tc là to thêm mt lnh m
2. Vi t i tham s n tính s h ng dãy Fibonaci th n. ết th c v
3. Cho trướ ết chương trình tìm ra 1 dãy con liên tụ ằng 0 có độc 1 dãy s. Vi c có các s b dài
cực đại trong dãy trên.
4. Cho trướ ết chương trình gộc 2 dãy s List1, . ViList2 p 2 dãy này vào thành 1 dãy và sp
xếp theo th t n. K tăng dầ ết qu đưa vào dãy Listout.
M rng
Thiết kế ng bài h c tính c ng, tr n sau. chương trình mô phỏ đơn giả
Chương trình sẽ t động sinh
các phép toán c ng, tr s đơn
giản. Người dùng nhp trc tiếp
t bàn phím đáp án. Nút Check
s kiểm tra đáp án đó là đúng
hay ai và thông báo trên màn
hình. Nếu làm sai, chương trình
s ghi đáp án đúng bên cạnh
đáp án sai.
Sau khi làm xong, nháy nút
Next để t động sinh chuyn
200 | T h c l p t r ì n h S c r a t c h
C th n c hơn, yêu cầu các bước th c hi ủa chương trình như sau:
Phn m m t ng sinh phép toán và d u bài toán, yêu c độ li ầu người chơi nhập đáp án từ
bàn phím.
Khi người dùng nh i dùng nhp xong, đáp án do ngườ p s hin trên phép tính màn hình.
Khi nó nút Check xut hiện. Nháy nút này để ểm tra đúng hay sai. ki
201 | T h c l p t r ì n h S c r a t c h
Nếu sai, chươnh trình sẽ ện đáp án đúng bên dướ hin thông báo sai ri và hi i. Đồng thi
xut hiện nút Next. Nháy lên nút này để bắt đầu 1 phép tính mi.
Nếu xu ng th i xu n nút Next. đúng, chương trình sẽ t hiện thông báo Đúng rồi. Đồ t hi
Nháy lên nút này để bt đầu 1 phép tính mi.
Em hãy thi và hoàn thi ết kế ện chương trình này.
202 | T h c l p t r ì n h S c r a t c h
Bài 20. Clone. Phân thân c a nhân v t
Mục đích
Hc xong bài h c này, b n s hi ểu đưc:
- Khái ni a nhân v a Clone. m phân thân (clone) c ật và ý nghĩa củ
- t và thu c tính c a Clone. Tính ch
- M ng d ng Clone trong các bài toán th . t vài c tế
Bắt đầu
Em hãy nhìn vào hình nh 1 ng d ng c a Scratch sau và có nh n xét gì?
Để thiết kế chương trình trên em phi làm gì?
- S d ng l nh liên t stamp c?
- T o ra nhi u nhân v t có hình d ng gi ng nhau và cho chúng chuy ng? ển độ
- Em có cách nào khác hay không?
Trong bài hc này, chúng ta s làm quen v i 1 khái ni m hoàn toàn m i trong Scratch có th
gii quy t d dàng bài toán trên. ế
Ni dung bài h c
1. Khái ni m phân thân - clone trong Scratch
Tt c t khác là các nhân v u có th "phân thân", t o ra các nhân vật trong Scratch đ c là t
song sinh vi chính b n thân mình. Các nhân v ật được phân thân đó gọi là Clone.
Chúng ta cùng xem 1 chương trình ngắn để bước đầu làm quen và phân biệt được 2 khái
nim: nhân v t chính (g a nhân v t này. c) và phân thân (Clone) c
Trên màn hình em s y nhi u th
con mèo và chu t cùng chuy n
động. Rõ ràng đây không phải là
hình nh c nh , a l stamp
phi là các nhân vt.
203 | T h c l p t r ì n h S c r a t c h
Chúng ta cùng xem đoạn chương trình của nhân vt chính con mèo.
Nhân vt g c và Clone
Bng sau li n nhân v c và clone. ệt kê các thông tin nhanh liên quan đế t g
Nhân vt g c
Clone
Mô t nhanh
Là nhân vt ho ng chính ạt độ
trên sân kh i sấu cho ngườ
dng kh o, ho ng i t ạt độ
vĩnh viễn.
Là nhân vt phân thân t 1 nhân v t
g c, đư c khi to b i l nh create
clone of. Clone sau khi được to ra
s tính chcó đầy đủ ất như 1 nhân
vật bình thường và k ế tha mi
Nhân vt chính, g c
Nhân vật được phân thân, là
song sinh ca nhân v t g c.
Nhân v c gật này đượ i clone
ca nhân vt chính.
Đoạn chương trình điều
khin . clone
Đoạn chương trình khởi
to . clone
Mèo con
Clone
Nhân vt g t c là khái nim Nhân v
(Sprite) mà chúng ta v n bi n ết t trước đế
nay trong môi trường Scratch.
Mi nhân v c t o ra s có các ật khi đượ
tính cht, thu nh, ộc tính riêng như hình ả
t a đ x, y, hướng quay, trang phc, âm
thanh, kích thướ c, các biến nh riêng. Mi
nhân v t có 1 c l nh riêng c a mình. a s
Mi nhân v t o ra các phân thân t có th
(clone) ca riêng mình.
Clone được khi to t 1 nhân vt
gc. Clone là 1 phân thân ca nhân
vt gc và có mi thuc tính ca
nhân v t gc.
Khi b t đ u kh o, clone k i t ế tha
toàn b tính ch t, thu c tính c a
nhân v c. Tuy nhiên sau khi ra t g
đờ điềi, có th u khin clone bng tt
c các lnh của Scratch như 1 nhân
v t bình thường. Điểm khác bi t ch
ch:
- u khi n ClonCác chương trình điề e
bt buc nm trong l nh s ki n
when I start as a clone.
- B n thân clone có th xóa chính
mình.
204 | T h c l p t r ì n h S c r a t c h
Nhân vt g c
Clone
thuc tính t nhân v t g c c a
mình. Clone không hoạt động vĩnh
vin.
Khi to Clone
Nhân vt chính dùng l nh
để
to Clone. Có th t o Clone
ca mình hoc ca các nhân
vt khác.
Chú ý: Sân khấu cũng có
quyn t o Clone cho m i
nhân v t.
Điều khin
Clone
Clone sau khi được to ra s chu
s điều khi n c nh s ki n a câu l
. Cho phép
nhiu ch u khi n ương trình cùng điề
1 Clone.
Xóa Clone
Clone t xóa b n thân mình b ng
lnh .
Thi gian s ng
Vĩnh viễn
Ch hoạt động trong thi gian chy
chương trình.
Chúng ta cùng xét 1 ví d sau. Ví d này minh h gi a nhân v t chính và các a cho quan h
phân thân - a chính mình. clone c
Chương trình cụ trên Scratch như sau: th
To 1 bi n nh riêng có tên CloneID ế
ca nhân vật chính. Chương trình sẽ
lần lượ ạo ra 3 clone, và trướt t c mi
ln t o s gán giá tr CloneID l n
lượt là 1, 2, 3. Các clone này s ế k
tha biến nh CloneID cho riêng
mình v i các giá tr l ần lượt là 1, 2,
3. Khi t o ra, các clone s di ch uyn
ngu nhiên, t do trên màn hình và
luôn hin giá tr CloneID c a riêng
mình để phân bit vi các clone
khác.
205 | T h c l p t r ì n h S c r a t c h
Clone có ý nghĩa gì trong các ứng dng thc tế ca Scratch, chúng ta cùng tìm hiu các hot
động tiếp theo.
2. R ng hoa
Chương trình đơn giản sau cho em hiu thêm hoạt động ca clone.
Chương trình đơn giả có đúng 1 nhân vận này ch t là
bông hoa, nhưng vớ ảnh đi nhiu hình p mt khác
nhau.
Mục đích của chương trình là tạo ra 1 rng hoa vi
nhiu màu sc s c s .
Để y, em c m nhilàm như vậ ần sưu tầ u hình nh hoa
vi màu sắc đa dạng khác nhau và đưa vào thành các
trang phc ca nhân v t này.
Chương trình đượ ựng đơn giản như sau:c xây d
- t chính bông hoa c n t o ra nhi u hình n Nhân v ảnh khác nhau nhưng có kích thước g
ging nhau làm trang ph : c. Ví d
- Trong m t t o ra 50 clone c a chính mình. ạch chương trình chính, em cho bông hoa lần lượ
Thiết lp các hình bông hoa có
kích thước gn ging nhau và
màu s ng khác nhau. ắc đa dạ
Dãy các trang ph c (costume)
được đánh số t 1
Lnh này s t o ra 50 b n clone c a nhân v t chính. Các
phân thân clone này khi t o ra có trang ph c và khuôn
dng ging v i nhân v t t chính và ại đúng vị trí ca
nhân v ật chính (nhưng nằm phía dưới).
206 | T h c l p t r ì n h S c r a t c h
- M i phân thân, clone s di chuy n nhanh t i 1 v u nhiên trên màn hình v hi n trí ng i th
trang phc ng u nhiên.
3. i chu t Trò chơi mèo đuổ
Trong hoạt động này, em hãy thi t k i Chu ế ế trò chơi Mèo đuổ t.
Nhân vt chính c a chúng ta là Mèo và Chu c mô t ột. Trò chơi đư đơn giản như sau:
- t s c phân thân và ch y lung tung (ng u nhiên) trên màn hình. Th y mèo tLũ chuộ đượ xa
chuột đã quay đầu b chy.
- u khi n b u khi n). Nhi cMèo được điề ởi con người (dùng các phím điề m v ủa người chơi
là điều khi i và bển mèo đuổ t chu t càng nhiu càng t t.
- i gian m là 1 phút. Trên màn hình luôn hi n th s ng chu b t. Th i lần chơi chỉ lượ ột đã bị
Khi kết thúc trò chơi, bạn nào bắt được s chu chi n th ng. Khi k t thúc, t nhiều hơn sẽ ế ế
thông báo Game Over s hi n trên màn hình.
Để thiết kế chương trình chúng ta bắt đầu t các nhân vt. H thng nhân vt bao gm: mèo,
chut, các ch s t n 9) và nút thông báo Game Over. (đủ 0 đế
S d ng 2 bi n nh ế t ng
th:
Time - thời gian chơi và
Count - s ng chu lượ t b
207 | T h c l p t r ì n h S c r a t c h
Sơ đồ ủa trò chơi như sau: hoạt động c
4. Trò chơi bóng bay
Trò chơi đượ như sau:c mô t
T i các qu bóng bay s xu n ng u nhiên và bay lên trên. Nhi m v cphía dướ t hi ủa ngưi
chơi là nháy chuột lên các qu bóng bay này. Mi khi nháy lên qu bóng bay s n và biến
mt. Th hi n sời gian chơi là 1 phút. Góc trái trên màn hình sẽ th bóng bay đã được nháy
trúng. Người thng cuộc là người đã làm nổ nhiu s bóng bay nht. Khi hết thi gian, màn
hình xu t hi n dòng ch và âm thanh "Game Over".
Gi ý thi t kế ế chương trình.
Bắt đầu
Mèo chuy ng ển độ
theo s điều khi n
bng bàn phím
của người chơi.
Ăn xong chuột,
kêu meo meo,
tăng biến
Count
lên 1 đơn vị
thông báo
hin
th s
trên màn
hình.
Lần lượt sau mi 2
giây t sinh ra 1
clone
c a chính
mình. Chuyển động
ngu nhiên, n u ế
thy mèo thì tránh
xa.
Nếu b va ch m v i
mèo, kêu " i", i tr
thông báo cho mèo
biết và t xóa b n
thân (clone).
Không hin th
gì trên màn
hình.
Nhận được thông
báo
hin th s
thì
tiến hành hi n th
giá tr
Count ti
góc trái dưới màn
hình.
Ẩn thông báo. Đặt
giá tr
Time = 60
và bắt đầu đếm
ngược theo tng
giây. M i giây
giảm Time đi 1
đơn vị.
Nếu Time = 0 thì
dng toàn b
chương trình, hiển
th
Game Over.
208 | T h c l p t r ì n h S c r a t c h
Em hãy thi p 3 nhân v , và bi n thông báo . Ngoài ết l t sau: Bóng bay Ch s Game Over
ra cn có thêm 2 bi n nh chung là - ế Time thời gian dùng để đếm ngược khi chơi và Count
- bi n nh ghi l i s ế ợng bóng bay đã được đánh trúng.
Nhim v m i nhân v ật trên như sau:
1. Bóng bay
Bóng bay s ng t o các c a mình và bay lên t 1 v u nhiên phía được t độ clone trí ng
dướ i. Bóng bay đư c thiế ết k có 1 s hình nh v i màu s nháy ắc khác nhau. Người chơi sẽ
chut lên các qu m v t lên các bóng này. Nhi c u càng tủa người chơi là nháy càng nhiề
qu bóng bay. Bóng bay s bi n m t ra ngoài màn hình ho c b ế t nếu vượ người chơi nháy
đúng.
2. Ch s
Góc trái trên màn hình s luôn th hi n s qu bón t này s d ng g bay đã bấm đúng. Nhân vậ
biến nh Count để đếm s bóng bay b nháy chu hi n con s này t i góc trái ột đúng và thể
trên màn hình.
3. Bi n thông báo Game Over
Trò chơi kết thúc sau 60 giây. Nhân vt Bin thông báo này có nhi n và m v đọc thi gia
thông báo kết thúc trò chơi sau đúng 60 giây. Biến dùng làm nhiTime m v đếm ngược
thi gian.
Câu h i và bài t p
1. Vi c phân thân thành 3 clone, 1 con ch y sang trái, 1 con ết chương trình cho con Mèo gố
chy sang ph i và 1 con ch y lên trên.
2. Em hãy làm cho trò chơi đẹp lên như sau:Rng hoa
Sau khi xu n các bông hoa s t i màu và xoay tròn trên màn hình. Em st hi động đổ thy
mt bc tranh s c sc màu s ỡ, lung linh đẹp mt.
3. Các phân thân c a nhân v c có th c hay không? Vì sao? t g đặt tên đượ
4. Có th l u khi n riêng cho t c hay không? L y ví d c . ập trình đi ng Clone đượ th
M rng
Thiết kế . trò chơi vui sau: Tên l a b n rng
209 | T h c l p t r ì n h S c r a t c h
Các nhân v t chính của trò chơi này.
Sơ đồ ủa chương trình như sau. hoạt động c
Phía trên các con r ng s xu n ng u t hi
nhiên và bay ngang qua màn hình theo
chiều ngang. Phía dưới có hình 1 tên la.
Nhim v c u khi n ủa người chơi là đi
tên lửa này đế ồng. Người chơi n bn r
thng cu c n u b ng. ế ắn được > 100 con r
S ng b c luôn hi n tcon r ắn đượ i góc
trái dư i. Ngư ời chơi sẽ thua nếu s ng
rng xu t hi ện quá đông > 10. Người chơi
dùng phím Space để bn, dùng phím trái,
h i đ điề khi h ê l
Sau m i giây l i
sinh ra 1 clone,
tăng biến
gragon-
count
lên 1 và
chuyển động ngang
Chu s điều khi n c a
ngư ời chơi, ng theo
cách người dùng phím
điều khin.
Người dùng bm phím
Space - sinh ra 1 clone
và b n tên l a theo
hướng lên trên.
Nếu b n trúng r ng, t
biến m u g p c nh t. Nế
trên màn hình cũng biến
mt.
Nếu g p tên l a thì
tăng biến
count, t
biến m t và gi m
biến
dragon-count
đi 1 đơn vị. Thông
báo
Show Number
.
Nếu nh n thông
điệp
Show
Number thì hi n
th s
count
trên
màn hình.
Kim soát 2
giá tr:
count
dragon-
Nếu count >
100, d ng
chương trình và
hin th
Victory
.
Nếu dragon-
count
> 10 thì
dừng chương
trình và hin th
Game Over.
| 1/209

Preview text:

Bùi Việt Hà
We support approaches to coding that engage young people in
thinking creatively, reasoning systematically, and working collaboratively -
- essential skills for everyone in today's society.
Chúng tôi h tr mt công c lp trình mi giúp tr suy nghĩ
hợp lý hơn, hệ thống hơn, sáng tạo hơn, làm việc nhóm và rèn
luyn các k năng cần thiết trong xã hi hôm nay. Hà Ni 2016
Mc lc
Vì sao Scratch? ......................................................................................................................... 6
Mục đích ............................................................................................................................... 7
Bắt đầu .................................................................................................................................. 7
Nội dung bài học .................................................................................................................. 7
Câu hỏi và bài tập ................................................................................................................. 7
Mở rộng ................................................................................................................................ 7
CHƯƠNG 1: LÀM QUEN VỚI SCRATCH ........................................................................... 8
Bài 1. Tư duy máy tính là gì ..................................................................................................... 9
Mục đích ............................................................................................................................... 9
Bắt đầu .................................................................................................................................. 9
Nội dung bài học ................................................................................................................ 10
Câu hỏi và bài tập ............................................................................................................... 14
Mở rộng .............................................................................................................................. 15
Bài 2. Làm quen với Scratch .................................................................................................. 17
Mục đích ............................................................................................................................. 17
Bắt đầu ................................................................................................................................ 17
Nội dung bài học ................................................................................................................ 18
Câu hỏi và bài tập ............................................................................................................... 22
Mở rộng .............................................................................................................................. 23
CHƯƠNG 2: BẮT ĐẦU LẬP TRÌNH SCRATCH .............................................................. 24
Bài 3. Chuyển động 1 ............................................................................................................. 25
Mục đích ............................................................................................................................. 25
Bắt đầu ................................................................................................................................ 25
Nội dung bài học ................................................................................................................ 25
Câu hỏi và bài tập ............................................................................................................... 37
Mở rộng .............................................................................................................................. 38
Bài 4. Vẽ hình 1 ...................................................................................................................... 39
Mục đích ............................................................................................................................. 39
Bắt đầu ................................................................................................................................ 39
Hoạt động bài học............................................................................................................... 39
Câu hỏi và bài tập ............................................................................................................... 48
Mở rộng .............................................................................................................................. 49
Bài 5. Âm thanh 1................................................................................................................... 50
2 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Mục đích ............................................................................................................................. 50
Bắt đầu ................................................................................................................................ 50
Nội dung bài học ................................................................................................................ 50
Câu hỏi và bài tập .............................................................................................................. 57
Mở rộng .............................................................................................................................. 58
Bài 6. Chuyển động 2 ............................................................................................................. 60
Mục đích ............................................................................................................................. 60
Bắt đầu ................................................................................................................................ 60
Nội dung bài học ................................................................................................................ 60
Câu hỏi và bài tập ............................................................................................................... 66
Mở rộng .............................................................................................................................. 67
Bài 7. Vẽ hình 2 ...................................................................................................................... 70
Mục đích ............................................................................................................................. 70
Bắt đầu ................................................................................................................................ 70
Nội dung bài học ................................................................................................................ 71
Câu hỏi và bài tập ............................................................................................................... 76
Mở rộng .............................................................................................................................. 76
Bài 8. Âm thanh 2................................................................................................................... 77
Mục đích ............................................................................................................................. 77
Bắt đầu ................................................................................................................................ 77
Nội dung bài học ................................................................................................................ 77
Câu hỏi và bài tập .............................................................................................................. 87
Mở rộng .............................................................................................................................. 88
CHƯƠNG 3: TÌM HIỂU SÂU HƠN SCRATCH ................................................................. 89
Bài 9. Hội thoại ...................................................................................................................... 90
Mục đích ............................................................................................................................. 90
Bắt đầu ................................................................................................................................ 90
Nội dung bài học ................................................................................................................ 91
Câu hỏi và bài tập ............................................................................................................... 98
Mở rộng .............................................................................................................................. 98
Bài 10. Hội thoại và truyền thông ........................................................................................ 100
Mục đích ........................................................................................................................... 100
Bắt đầu .............................................................................................................................. 100
Nội dung bài học .............................................................................................................. 100
Câu hỏi và bài tập ............................................................................................................. 104
Mở rộng ............................................................................................................................ 105
3 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Bài 11. Cảm biến .................................................................................................................. 107
Mục đích ........................................................................................................................... 107
Bắt đầu .............................................................................................................................. 107
Nội dung bài học .............................................................................................................. 108
Câu hỏi và bài tập ............................................................................................................. 113
Mở rộng ............................................................................................................................ 113
CHƯƠNG 4: SCRATCH NÂNG CAO ............................................................................... 115
Bài 12. Xử lý số 1 ................................................................................................................. 116
Mục đích ........................................................................................................................... 116
Bắt đầu .............................................................................................................................. 116
Nội dung bài học .............................................................................................................. 116
Câu hỏi và bài tập ............................................................................................................. 123
Mở rộng ............................................................................................................................ 123
Bài 13. Xử lý số 2 ................................................................................................................. 125
Mục đích ........................................................................................................................... 125
Bắt đầu .............................................................................................................................. 125
Nội dung bài học .............................................................................................................. 125
Câu hỏi và bài tập ............................................................................................................. 129
Mở rộng ............................................................................................................................ 129
Bài 14. Xử lí xâu ký tự 1 ...................................................................................................... 130
Mục đích ........................................................................................................................... 130
Bắt đầu .............................................................................................................................. 130
Nội dung bài học .............................................................................................................. 130
Câu hỏi và bài tập ............................................................................................................. 137
Mở rộng ............................................................................................................................ 137
Bài 15. Xử lí xâu ký tự 2 ...................................................................................................... 138
Mục đích ........................................................................................................................... 138
Bắt đầu .............................................................................................................................. 138
Nội dung bài học .............................................................................................................. 138
Câu hỏi và bài tập ............................................................................................................. 143
Mở rộng ............................................................................................................................ 144
Bài 16. Làm việc với List 1 .................................................................................................. 145
Mục đích ........................................................................................................................... 145
Bắt đầu .............................................................................................................................. 145
Nội dung bài học .............................................................................................................. 145
Câu hỏi và bài tập ............................................................................................................. 155
4 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Mở rộng ............................................................................................................................ 156
Bài 17. Làm việc với List 2 .................................................................................................. 157
Mục đích ........................................................................................................................... 157
Bắt đầu .............................................................................................................................. 157
Nội dung bài học .............................................................................................................. 157
Câu hỏi và bài tập ............................................................................................................. 170
Mở rộng ............................................................................................................................ 170
Bài 18. Thủ tục 1 .................................................................................................................. 171
Mục đích ........................................................................................................................... 171
Bắt đầu .............................................................................................................................. 171
Nội dung bài học .............................................................................................................. 171
Câu hỏi và bài tập ............................................................................................................. 181
Mở rộng ............................................................................................................................ 182
Bài 19. Thủ tục 2 .................................................................................................................. 184
Mục đích ........................................................................................................................... 184
Bắt đầu .............................................................................................................................. 184
Nội dung bài học .............................................................................................................. 185
Câu hỏi và bài tập ............................................................................................................. 199
Mở rộng ............................................................................................................................ 199
Bài 20. Clone. Phân thân của nhân vật ................................................................................. 202
Mục đích ........................................................................................................................... 202
Bắt đầu .............................................................................................................................. 202
Nội dung bài học .............................................................................................................. 202
Câu hỏi và bài tập ............................................................................................................. 208
Mở rộng ............................................................................................................................ 208
5 | T ự h ọ c l ậ p t r ì n h S c r a t c h Vì sao Scratch?
Trên tay các bạn là cuốn sách T hc lp trình Scratch, một môi trường, ngôn ngữ lập
trình "kéo thả" rất mới đối với Việt Nam. Vì sao mọi người cần học môi trường lập trình
này? Vì sao Scratch lại thích hợp cho lứa tuổi thiếu nhi, thiếu niên và phù hợp cho việc đưa
các kiến thức lập trình cho các bậc học này?
Môi trường và ngôn ngữ lập trình Scratch do nhóm nghiên cứu Lifelong Kindegarden
Group thuộc đại học MIT (Massachusetts Institute of Technology) thiết lập đầu năm 2008.
Ý tưởng ban đầu của nhóm chỉ là thiết ậ
l p một ngôn ngữ lập trình mới, đơn giản, chỉ dùng
kéo thả, dành cho trẻ con để thiết lập trò chơi, phim hoạt hình, ứng dụng đơn giản, kích
thích sự sáng tạo trong môi trường làm việc nhóm của trẻ.
Tuy nhiên Scratch chỉ thực sự bùng nổ từ năm 2014 khi một số quốc gia như Anh, Mỹ đã
đổi mới đột phá chương trình giảng dạy môn Tin học trong nhà trường, đưa nội dung kiến
thức Khoa học máy tính vào nhà trường ngay từ cấp Tiểu học. Một trong những đề nghị
quan trọng nhất của các chương trình này là cần đưa các ngôn ngữ lập trình đơn giản, dạng
kéo thả như Scratch vào giảng dạy trong nhà trường ngay từ Tiểu học. Việc điều chỉnh
chương trình môn Tin học này đã kéo theo sự gia tăng bùng nổ của Scratch trên phạm vi
toàn thế giới. Số lượng học sinh đăng ký tham gia trang Scratch tăng đột biến cả về số lượng
và chất lượng. Thực tế đã chứng minh tính hấp dẫn của các môi trường lập trình kéo thả như
Scratch, sự đam mê lập trình của trẻ nhỏ. Scratch vô cùng thích hợp cho trẻ lứa tuổi từ 6 đến
14, tức là các cấp Tiểu học, THCS của Việt Nam. Chính vì vậy trong Chương trình đổi mới
giáo dục của Việt Nam sau 2018, Bộ Giáo dục & Đào tạo cũng đã quyết định đưa nội dung
kiến thức Khoa học máy tính trong môn Tin học vào ngay từ cấp Tiểu học, và những ngôn
ngữ lập trình kéo thả như Scratch sẽ là một lựa chọn tốt cho các nhà trường và học sinh. Scratch là gì?
Tóm tắt một vài ý để trả lời cho câu hỏi: vy Scratch là gì?
- Scratch là 1 môi trường lập trình ứng dụng đặc biệt, trong đó việc “viết” lệnh sẽ được thực
hiện bằng thao tác “kéo thả”.
- Đầu ra của Scratch hỗ trợ các công nghệ và ứng dụng mới nhất của CNTT-ICT, do vậy các
ứng dụng của Scratch rất phong phú, hấp dẫn, nhất là t ẻ r nhỏ.
- Scratch có sự phát triển bùng nổ 2 năm trở lại đây. Đặc biệt là sau khi một số quốc gia có
tiềm lực khoa học kỹ thuật mạnh trên thế giới đã quyết đ n
i h đưa Scratch vào giảng dạy
trong nhà trường cho học sinh từ cấp Tiểu học.
- Scratch hoàn toàn miễn phí và có thể chia sẻ rộng rãi trong cộng đồng.
- Scratch rất thích hợp để tạo ra các ứng dụng đồ họa, animation, bài học, bài giảng, mô
phỏng kiến thức, trình diễn, sách điện tử, trò chơi, … rất phù hợp với nhà trường, giáo viên, học sinh.
- Scratch là môi trường tốt nhất để dạy học sinh làm quen với tư duy máy tính, khoa học
máy tính ngay từ lứa tuổi tiểu học.
Nội dung, đối tượng cun sách
6 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Cuốn sách sẽ bao quát tất cả các chủ đề chính của môi trường lập trình Scratch bao gồm:
chuyển động, đồ họa, âm thanh, hội thoại, cảm biến, biến nhớ, xử lý số - xâu ký tự - mảng
số, thủ tục và clone. Đối tượng của sách có thể là giáo viên tin học, giáo viên thường, học
sinh tất cả các cấp từ Tiểu học, THCS, THPT.
Về định hướng nội dung của cuốn sách này sẽ là một trung dung giữa ứng dụng thuần túy
thực tế và kiến thức hàn lâm của khoa học máy tính. Chúng tôi không đi quá sâu vào học
thuật sẽ gây nhàm chán, khó hiểu với học sinh, nhưng cũng không sa đà quá nhiều vào các
kỹ năng thiết kế trò chơi, phim hoạt hình, …
Nội dung sách sẽ được chia thành nhiều bài học nhỏ. Mỗi bài học đều có chung 1 cấu trúc
nhất định. Người học có thể tự học hoặc học, thực hành dưới sự hướng dẫn của giáo viên.
Cấu trúc 1 bài học sẽ thống nhất sẽ bao gồm các phần sau. Mục đích
Giới thiệu ngắn mục đích, yêu cầu cần đạt về kiến thức và năng lực của người học. Bắt đầu
Phần mở đầu của mỗi bài học sẽ thường bắt đầu bằng những câu hỏi, đặt vấn đề liên quan
đến bài học để người đọc suy nghĩ và chuẩn bị, trước khi bước vào phần chính thức. Mô
hình của phần khởi động này chính là khơi dậy nguồn cảm hứng của người học, giúp người
học sẽ luôn chủ động trong quá trình học tập và luyện tập.
Ni dung bài hc
Nội dung chính của mỗi bài học sẽ bao gồm một dãy các hoạt động hoặc trải nghiệm dành
cho người học. Người học có thể tự học, đọc hoặc làm theo hướng dẫn của giáo viên để thực
hiện các hoạt động này. Các hoạt động sẽ dần dần dẫn dắt người học khám phá và từng
bước nắm bắt kiến thức, dựa trên đó sẽ hình thành năng lực theo yêu cầu của bài học.
Câu hi và bài tp
Các bài tập, bài luyện trắc nghiệm hoặc lập trình giúp người học củng cố kiến thức đã được
học và rèn luyện kỹ năng lập trình, tư duy thuật toán và giải quyết vấn đề. Đa số các bài tập
là đơn giản. Các bài tập khó sẽ có kèm thêm dấu *.
M rng
Đây là phần thực sự có ý nghĩa vận dụng, mở rộng, tìm tòi trải nghiệm dành cho người học.
Đa số các vấn đề, bài tập trong phần này là những bài khó, yêu cầu người ọ h c phải suy nghĩ,
thử nghiệm, thực hành nhiều hơn. Nếu người học làm được tất cả các bài toán, vấn đề được
đặt ra trong phần này thì chứng tỏ đã xuất sắc hoàn thành mục tiêu, mục đích của bài học.
7 | T ự h ọ c l ậ p t r ì n h S c r a t c h
CHƯƠNG 1: LÀM QUEN VỚI SCRATCH
8 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Bài 1. Tư duy máy tính là gì Mục đích
Học xong bài này, bạn có thể:
- Hiểu được: để giải quyết 1 vấn đề, máy tính sẽ "tư duy", "suy nghĩ" như thế nào.
- Biết được để giải quyết 1 bài toán trên máy tính cần được thực hiện như thế nào, thông qua
các ví dụ minh họa cụ thể. Bắt đầu
1. Hàng ngày chúng ta vẫn được nghe, xem, quan sát các chương trình máy tính được điều
khiển bởi con người. Hãy kể ra 1 vài chương trình như vậy mà em biết ? Gợi ý:
- Dây chuyền tự động lắp ráp máy tính.
- Máy tính bỏ túi tự động tính toán các phép tính.
- Các trò chơi trên máy tính.
2. Em đã nghe được cụm từ "tuy duy máy tính" hay "máy tính nghĩ" ở đâu chưa? Hãy nêu ra
1 vài nguồn thông tin mà em biết. Tiếng Anh cụm từ này là "Computer thinking". Em hiểu
thế nào về cụm từ này?
3. Quan sát Robot Asimo Nhật bản. hoặc xem video: https://youtu.be/NZngYDDDfW4
Em hãy trả lời các câu hỏi sau:
- Robot này có suy nghĩ giống người không?
- Robot thực chất hoạt động như 1 máy tính, vậy máy tính có suy nghĩ không? Máy tính có tư duy không?
4. Em hãy quan sát kết quả của 1 chương trình máy tính đơn giản bằng cách mở và chạy
chương trình Start.Meo chay.sb2.
- Mô tả chuyển động của con mèo. Mèo đã thực hiện các công việc gì, theo thứ tự các bước như thế nào?
- So sánh điều em đã mô tả với hình sau:
9 | T ự h ọ c l ậ p t r ì n h S c r a t c h
- Em có rút ra được kết luận gì không? 5. Câu hỏi cho tất cả:
- Máy tính sẽ tư duy như thế nào để thực hiện các chương trình, công việc được lên kế hoạch trước?
- Máy tính suy nghĩ và thực hiện công việc như thế nào?
- Vai trò của con người như thế nào đối với máy tính?
Ni dung bài hc
1. Quân c trên bàn c vuông
Em hãy nhìn lên bàn cờ ô vuông sau. các quân cờ trên bàn cờ này mỗi lần chỉ đi được sang
ô bên cạnh theo hàng ngang hoặc hàng dọc. Câu hỏi: quân cờ màu xanh cần phải đi bao
nhiêu bước và đi như thế nào để đến được vị trí quân cờ màu đỏ?
Từ vị trí quân cờ màu
xanh đến vị trí màu đỏ có nhiều cách đi khác nhau,
nhưng cần chỉ ra các cách
đi với ít bước nhất.
Trả lời: Đi bằng 6 bước và có thể đi theo nhiều cách để đến đích.
Trên thực tế tất cả các bài toán cần giải, các vấn đề cần giải quyết cũng phải được thực hiện theo từng bước.
Ghi nhớ: máy tính thực hiện công việc theo từng bước.
10 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Em có thể tìm được rất nhiều các ví dụ khác về việc giải quyết vấn đề theo các bước trên
thực tế. Hãy cùng xem các ví dụ sau, em cần liệt kê các bước cụ thể để thực hiện các công việc đó.
- Hàng ngày đi từ nhà đến trường, em phải đi qua các đường, phố nào, hãy liệt kê lần lượt các đường, phố đó.
- Các bước để thực hiện việc nấu cơm.
- Giải 1 bài toán theo các bước, ví dụ bài toán khai triển 1 số thành tích các số nguyên tố,
bài toán giải phương trình bậc nhất, bài toán chứng minh một đẳng thức, bất ẳ đ ng thức. 2. Quét nhà
Em quan sát căn phòng. Nhiệm vụ của em là cần quét rác và đưa rác đến góc nhà, vị trí có
thùng rác. Em chỉ được dùng chổi quét theo các hướng ngang và dọc theo các lối đi trong phòng. Thùng rác Cái chổi
Hình ảnh dưới đây chỉ ra các công việc phải thực hiện đồng thời là thứ tự của chúng để hoàn
thành công việc được giao trên.
Sơ đồ thực hiện là: 1 - 2 - 3 - 4 - 5. 5 4 2 3 1
11 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Các em quan sát và trả lời các câu hỏi sau :
- Nếu thay đổi thứ tự các bước là: 3 - 1 - 2 - 4 - 5 thì công việc có hoàn thành không?
- Nếu chỉ thay đổi bước 1-2 thành: 2 - 1 - 3 - 4 - 5 thì kết quả công việc ra sao?
- Các bước 4, 5 có thể đổi chỗ cho nhau được không? Kết lun
- Thông thường người ta thường giải quyết các bài toán thực tế thông qua các bước.
- Thứ tự các bước là quan trọng để hoàn thành nhiệm vụ.
3. Quan sát một chương trình máy tính mô phng gii quyết vấn đề
Có rất nhiều phần mềm hoặc trò chơi mô phỏng giải quyết vấn đề thông qua các bước.
- Trò chơi Pacman nổi tiếng một thời.
Trong trò chơi này, Pacman là
người đào vàng sẽ có nhiệm
vụ tìm vàng dọc theo các con
đường trong 1 mê cung. Tuy
nhiên trên đường đi thường
xuất hiện các con quỉ sẽ tìm
cách giết hại người đào vàng.
Người đào vàng phải có
nhiệm vụ tránh các con quỉ
đồng thời đào được càng nhiều vàng càng tốt.
- Phần mềm trò chơi xếp đồ Socoban
Một bác công nhân có nhiệm
vụ chuyển các thùng trong
vườn đến vị trí đã được đặt
trước. Mỗi lần bác công nhân
chỉ có thể đẩy được 1 thùng đi
1 bước. Đường đi trong vườn
rất khó vì có nhiều bức tường
và nhiều thùng. Bác công nhân
phải tìm ra được 1 cách dịch
chuyển tối ưu nhất để hoàn thành nhiệm vụ.
- Tìm đường trên điện thoại
12 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Bài toán tìm đường đi (tối ưu)
giữa hai vị trí trong thành phố.
Cho trước hai vị trí Đầu và Cuối,
máy tính sẽ phải dựa trên bản đồ
giao thông thành phố để tìm ra
được 1 cách đi với khoảng cách
hoặc thời gian tối ưu nhất .
Trên màn hình máy tính sẽ hiện
đường đi tối ưu đó với các thông tin có liên quan.
Các em có thể tìm hiểu và đưa ra nhiều ví dụ khác nữa.
Theo em có những điểm gì chung với các ví dụ trên?
4. Máy tính "nghĩ" như thế nào?
Em hãy quan sát sơ đồ sau hay được mô phỏng cho các công việc xử lý trên máy tính. Input
B x Output Input (đầu vào):
Đầu vào được hiểu là:
- Bài toán hay vấn đề cần giải quyết .
- Các thông số, dữ liệu ban đầu của bài toán.
B x lý:
Là chương trình máy tính, phần mềm hoặc thiết bị vi xử lý bất kỳ có chức năng tiếp nhận
đầu vào, sau đó tiến hành giải quyếy bài toán. Output (đầu ra):
Kết quả của bài toán, vấn đề được thể hiện ở đầu ra.
Ví dụ bài toán tìm đường đi tối ưu.
13 | T ự h ọ c l ậ p t r ì n h S c r a t c h Input (đầu vào) X Output (đầu ra)
- Vị trí 2 điểm Đầu và Cuối. Thực hiện tìm đường đi tối Thể hiện trên màn hình
- Bản đồ đường giao thông
ưu từ vị trí Đầu đến vị trí đường đi tối ưu này. thành phố. Cuối.
- Các qui định khác về giao
Máy tính thực hiện bài toán
thông, các tuyến đường 1
theo 1 qui trình đã được con chiều, …. người xác ị đ nh (lập trình)
trước theo các bước chặt
chẽ, tối ưu, bảo đảm tìm ra được kết quả.
Như vậy "tư duy của máy tính" thực chất là việc con người cung cấp cho máy tính các dữ
liệu đầu vào và cách xử lý ấ
v n đề thông qua các chương trình, các bước, hay các lệnh một
cách tuần tự, chặt chẽ, đảm bảo giải quyết được bài toán, vấn đề được đặt ra.
5. Con người s dụng máy tính để gii quyết vấn đề gì và như thế nào?
Trên thực tế con người sử dụng máy tính để giải quyết các bài toán mà nếu không có máy
tính sẽ rất khó giải quyết.
Qui trình con người sử dụng máy tính để giải quyết vấn đề th ờng ư theo các bước như sau:
- Xác định bài toán, vấn đề cần giải quyết (ví dụ: bài toán tìm đường đi trên bản đồ).
- Xác định các dữ liệu đầu vào ban đầu (vị trí 2 điểm Đầu và Cuối, bản đồ giao thông đường phố, …).
- Xây dựng chương trình để đưa vào máy tính xử lý (lập chương trình bao gồm các lệnh,
đưa vào máy tính để xử lý).
- Máy tính chạy theo chương trình đã nạp và đưa ra kết quả, thể hiện là đầu ra trên màn hình máy tính.
Câu hi và bài tp
1. Em hãy liệt kê các bước để thực hiện 1 số công việc hàng ngày ở nhà em (như thổi cơm,
quét nhà, giặt quần áo, ….).
2. Em hãy chỉ ra thêm các trò chơi và phần mềm mô phỏng giải quyết vấn đề.
3. Cách giải quyết bài toán sau là đúng hay sai?
Bài toán: cho trước 3 số a, b, c, tính tổng a2 + b2 + c2 nếu biết ằ
r ng mỗi bước chỉ được phép
thực hiện 1 phép toán 2 số. Input: a, b, c.
Xử lý theo các bước sau: B1. Tính a2 + b2 B2. Tính c2
B3. Lấy kết quả B1 cộng với B2. Output: in ra kết quả.
14 | T ự h ọ c l ậ p t r ì n h S c r a t c h
4. Cho trước số tự nhiên N (N>1). Mỗi bước em chỉ có thể thực hiện 1 trong các điều sau: - Giảm N đi 1.
- Chia đôi N nếu N là chẵn.
Giả sử cho N = 100. Hỏi em có thể thực hiện nhanh nhất là bao nhiêu bước để thu được số 1.
5. Em hãy tìm 1 đường đi từ vị trí A đến vị trí B. B A
M rng
Sử dụng cách mô tả mô hình xử lý vấn đề ở trên, em hãy viết và trình bày sơ đồ xử lý với 1
số bài toán sau (viết và mô tả Input, Output và Bộ xử lý) .
1. Đầu vào là 3 số bất kỳ a, b, c, đầu ra là các số này nhưng đã được sắp xếp theo thứ tự tăng
dần. Ví dụ đầu vào là 5, -1, 3 thì đầu ra của bài toán phải là -1, 3, 5. Biết rằng mỗi bước chỉ
cho phép thực hiện đổi chỗ 2 số cạnh nhau hoặc có thể so sánh 2 số bất kỳ để kiểm tra xem
số nào lớn hơn, số nào nhỏ hơn.
2. Bài toán tính tổng của 3 số bất kỳ cho trước a, b, c nếu biết rằng mỗi bước chỉ cho phép
thực hiện: lấy tổng 2 số dương, đổi dấu của 1 số (từ âm thành dương và ngược lại), kiểm tra
2 số xem số nào lớn hơn, hoặc lấy 1 hiệu của 1 số dương lớn hơn trừ đi 1 số dương nhỏ hơn.
3. Giải bài toán chuyển đồ Socoban sau.
15 | T ự h ọ c l ậ p t r ì n h S c r a t c h
16 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Bài 2. Làm quen với Scratch Mục đích
Học xong bài này, bạn sẽ biết:
- Làm quen và biết 1 môi trường ứng dụng mới: lập trình kéo thả.
- Lập trình tức là điều khiển máy tính hoạt động theo các bước, các lệnh tuần tự.
- Hiếu được qui trình hoạt động cơ bản của 1 chương trình trong môi trường Sratch. Bắt đầu
Trong bài trước các em đã được làm quen với khái niệm "tư duy máy tính", tức là cách mà
máy tính có thể "nghĩ" và "làm việc", "hành động" theo sự điều khiển của con người. Bây
giờ chúng ta sẽ làm quen với một trong những hành động cụ thể đó của máy tính. Chúng ta
sẽ được làm quen với một môi trường giao tiếp mới để con người có thể điều khiển máy tính
có thể "suy nghĩ" và "làm việc", đó là môi trường Scratch.
1. Em hãy quan sát 1 chương trình chạy trên môi trường Scratch và đưa ra các nhận xét của
mình. Chương trình được ghi trong tệp Start.Dance.sb2. Các gợi ý:
- Để chạy chương trình, em nháy lên hình lá cờ màu xanh phía trên cửa sổ chính. Em có
nhận xét gì về hoạt động của cậu bé trên màn hình?
- Để dừng chương trình em bấm nút tròn màu đỏ phía trên (cạnh hình lá cờ).
- Em hãy chú đến các hoạt động của cậu bé, âm thanh trống và quan sát nền sân khấu.
2. Em mở tệp Start.Color.sb2, chạy chương trình và viết lại nhận xét của em về hoạt động của nhân vật.
17 | T ự h ọ c l ậ p t r ì n h S c r a t c h Gợi ý:
- Quan sát sự thay đổi màu sắc bên ngoài của con mèo.
- Em có thể giải thích vì sao mèo lại thay đổi màu của bộ lông của mình không?
Ni dung bài hc
1. Làm quen vi giao din Scratch
Scratch là môi trường mà em sẽ được học trong môn học này. Các em hãy quan sát giao diện chính của Scratch: Thanh công Thực đơn Nút tr c nhanh giúp nhanh Nút tr giúp Sân khu
Ca s lnh Nhân vt ự ạ Khu v c t o nhân vt
Khu vc to Khung điều sân khu, khin nn
18 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Chúng ta cùng tìm hiểu nhanh các vị trí quan trọng trong giao diện Scratch. Sân khu
Sân khấu là cửa sổ thể hiện chính của phần mềm. Khi phần mềm chạy chúng ta quan sát
phần mềm thông qua sân khấu, tương tự như khi chúng ta xem biểu diễn ca nhạc, xem phim, xem Tivi. Nhân vt
Nhân vật xuất hiện trên sân khấu, là đối tượng chính của các hoạt động. Có thể có nhiều
nhân vật, đa dạng về kích thước và chủng loại. Khi lần đầu tiên chạy Scratch, nhân vật
chính là 1 chú mèo xinh xắn.
Ca s lnh
Cửa sổ lệnh chứa các "lệnh" để điều khiển hoạt động của nhân vật. Mỗi nhân vật có 1 cửa sổ
lệnh riêng. Trong cửa sổ này không cần phải viết lệnh mà chỉ cần kéo thả các lệnh từ khung
điều khiển bên cạnh sang. Vì vậy Scratch được gọi là môi trường lập trình kéo thả.
Khung điều khin
Là nơi chứa các "công cụ" dùng để tạo ra chương trình. Tại khung này chứa các mẫu lệnh,
người lập trình sử dụng các công cụ này để viết chương trình của mình.
Khung điều khiển này sẽ có 3 TAB thông tin: Script (Lệnh) , Costume (Backdrop) (Trang
phục / Nền sân khấu) và Soun d (Âm thanh).
Các lệnh trong Scratch được chia thành nhóm, mỗi nhóm bao gồm các lệnh có ý nghĩa gần
tương tự nhau và thể hiện bằng 1 màu cụ thể. Có 10 nhóm các lệnh như vậy trong Scratch.
Khi nháy lên 1 nhóm, khung phía dưới sẽ xuất hiện các lệnh của nhóm này.
Nhóm đang hoạt động hiện
Các biểu tượng và tên nhóm
Các lệnh cụ thể của nhóm hiện thời. Sử
dụng các lệnh này bằng cách kéo thả sang
cửa sổ lệnh bên cạnh. Thực đơn
Thực đơn chứa các lệnh chính của Scratch.
Thanh công c nhanh
19 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Thanh công cụ nhanh chứa một số lệnh làm việc nhanh với nhân vật và các lệnh.
Nút tr giúp nhanh
Nút này có ý nghĩa như như: nháy chuột lên nút, sau đó nháy chuột lên 1 lệnh bất kỳ sẽ hiển
thị nội dung mô tả của lệnh này. Nút tr giúp
Nháy nút này để hiện các trợ giúp nhanh của phần mềm.
Khu vc to nhân vt
Tại khu vực này em có thể thực hiện các thao tác như tạo thêm nhân vật, chỉnh sửa ngoại
hình nhân vật (thay đổi trang phục), bổ sung âm thanh, ….
Khu vc to sân khu, nn
Tại khu vực này em có thể thực hiện các thao tác với sân khấu như trang trí sân khấu, tạo
thêm các cảnh sân khấu khác, tạo âm thanh nền cho sân khấu.
2. Điều khin nhân vt bng các lnh
Các em hãy thực hiện các bước sau để hiểu cách điều khiển hoạt động của nhân vật con mèo.
(i) Nháy nút Scripts, nháy lên nhóm lệnh Look (màu tím) (ii) Kéo thả lệnh
từ khung điều khiển phia dưới sang cửa sổ
bên phải, sau đó sửa chữ "Hello!" thành "Xin chào".
(iii) Nháy lên nút nhóm Motion (màu xanh thẫm) (iv) Kéo thả lệnh
từ khung điều khiển phia dưới s n a g cửa sổ bên phải,
sau đó sửa số 10 thành 100.
(v) Dùng chuột kéo 2 lệnh trên sát vào nhau như hình dưới đây, ta thu được 1 đoạn chương trình gồm 2 lệnh.
Nháy chut ti
đây để chy đoạn chương trình này Đoạn chương trình
= Dãy các lnh Kéo th
20 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Bây giờ để chạy đoạn chương trình này em hãy nháy chuột lên vị trí bất kỳ của đoạn
chương trình trên, và quan sát xem con mèo thay đổi như thế nào. Các em sẽ thấy gì?
Nếu bây giờ em tách 2 lệnh trên rời ra và chạy thử em thấy có gì thay đổi?
3. Bắt đầu 1 chương trình đơn giản bng s kin "Bắt đầu chương trình"
Bây giờ chúng ta sẽ cùng nhau hoàn thiện đoạn chương trình trên thành một chương trình hoàn chỉnh.
Chọn nút nhóm lệnh có chữ Events (sự kiện), kéo thả lệnh sau sang cửa sổ lệnh chính.
Sau đó em điều chỉnh để có 1 đoạn chương trình gồm 3 lệnh sau.
Lệnh điều khin s kin khi nháy lên lá
c xanh s chạy đoạn chương trình dưới
Nhân vt nói "Xin chào" trong 2 giây.
Nhân vt chy v phía trước 100 bước (pixel).
Bây giờ chúng ta đã có 1 chương trình hoàn chỉnh trên Scratch. Em có thể phóng to cửa sổ
chạy của chương trình và thực hiên lệnh chạy bằng cách nháy biểu tượng lá cờ xanh. Khi
chạy chương trình, nhân vật của chúng ta sẽ nói "Xin chào" trong 2 giây, sau đó sẽ chuyển
động về phía trước 100 bước.
Chương trình trên có thể viết ạ
l i dưới dạng các dòng chữ tiếng Việt cho dễ hiểu như sau:
Nếu nháy vào lá cờ xanh (nếu sự kiện này xảy ra)
Thể hiện dòng chữ "Xin chào" trong 2 giây.
2 lnh này s được thc
Chạy về phía trước 100 bước.
hin nếu s kin trên xy
Cách viết như trên thường được dùng trong tin học, khi thiết lập các vấn đề, bài toán và viết
các bước thực hiện để giải quyết trên máy tính.
Môt vài kết luận ban đầu.
- Các nhân vật có thể điều khiển bằng các lệnh trong cửa sổ lệnh.
- Lệnh có thể được kéo thả từ khung các mẫu lệnh, không phải viết từng lệnh trên màn hình.
21 | T ự h ọ c l ậ p t r ì n h S c r a t c h
- Nhóm các lệnh gắn liền nhau tạo thành 1 đoạn chương trình. Khi chạy các lệnh sẽ lần lượt
chạy từ trên xuống dưới.
- Để hoàn thiện 1 chương trình hoàn chỉnh, cần đưa lệnh sự kiện lên đầu của đoạn chương trình.
- Để chạy chương trình nháy lên nút có hình lá cờ xanh. Nháy nút tròn đỏ sẽ dừng chương trình đang chạy.
- Có thể phóng to cửa sổ chạy bằng cách nháy vào nút góc trái trên màn hình.
6. Phân loi các nhóm lệnh điều khin nhân vt
Em hãy quan sát vào khu vực khung điều khiển các lệnh của Scratch. Toàn bộ hệ thống lệnh
được chia làm bao nhiêu nhóm? Mỗi nhóm có tên là gì và đặc trưng bởi màu sắc gì?
Em hãy nhìn vào sơ đồ sau để thấy toàn bộ các nhóm lệnh trong Scratch. Nhóm lệnh chuyển độ Nhóm lệnh sự kiện Nhóm lệnh thể Nhóm lệnh điều khiển hiệ Nhóm lệnh âm thanh Nhóm lệnh cảm biến Nhóm lệnh bút vẽ Nhóm lệnh tính toán Nhóm lệnh dữ liệu Nhóm lệnh mở
- Hãy liệt kê các nhóm lệnh của Scratch, màu sắc thể hiện của nhóm và nêu nhanh ý nghĩa các nhóm này.
- Với môi trường lập trình kéo thả Scratch chúng ta không cần học thuộc lòng và nhớ chi
tiết từng lệnh. Chỉ cần hiểu ý nghĩa lệnh, cách sử dụng và kéo thả chúng sang cửa sổ lệnh là dùng được.
Câu hi và bài tp
1. Trong ví dụ trên, nếu em đặt 2 lệnh tách ra như hình sau:
thì em có thể chạy 2 lệnh trên như 1 chương trình không?
22 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Kết luận: các lệnh rời rạc nhau không tạo thành 1 chương trình hoàn chỉnh. Các lệnh cần kết nối với nhau. 2. Nút
nằm ở góc phải dưới của cửa sổ lệnh có ý nghĩa gì? Hãy thao tác và trả lời câu hỏi trên. 3. Hai nút nhỏ
này nằm trên thanh công cụ nhanh phía trên màn hình có tác dụng gì?
Để hiểu em hãy thực hiện thao tác sau:
- Nháy chuột lên 1 trong 2 nút trên.
- Sau đó em nháy chuột nhiều lần lên nhân vật.
- Em thấy điều gì xảy ra? Từ đó suy ra ý nghĩa của 2 nút trên.
4. Để tạo một chương trình mới, em thực hiện lệnh File / New.
Em hãy tạo 1 chương trình mới và tạo 1 đoạn chương trình đơn giản sau với nhân vật chính con mèo.
Chạy chương trình và quan sát xem con mèo thực hiện những hành động gì.
5. Để ghi lại chương trình đang làm việc, em thực hiện lệnh File / Save. Tệp chương trình
Scratch cần có phần mở rộng là *.sb hoặc *.sb2
M rng
Em hãy tìm hiểu các lệnh trong nhóm chuyển động (motion) và viết 1 chương trình hoàn
chỉnh điều khiển nhân vật của em chuyển động trên màn hình.
23 | T ự h ọ c l ậ p t r ì n h S c r a t c h CHƯƠNG 2: ẮT B ĐẦU LẬP TRÌNH SCRATCH
24 | T ự h ọ c l ậ p t r ì n h S c r a t c h Bài 3. Chuyển động 1 Mục đích
Học xong bài này, bạn có thể:
- Điều khiển nhân vật di chuyển trên màn hình (sân khấu) bằng dãy lệnh đơn giản.
- Thiết lập trang phục (costume, thể hiện bên ngoài, quần áo) cho nhân vật .
- Thay đổi nền sân khấu, màn hình. Bắt đầu
Em hãy mở chương trình moving 1.khoidong.sb2, quan sát và chạy chương trình.
a) em hãy mô tả những gì xảy ra trên màn hình.
b) theo em các lệnh nào đã làm cho nhân vật (con cánh cam) chuyển động? A. Lệnh ? B. Lệnh ? C. Lệnh ?
Em có nhận xét gì về màu sắc của các lệnh làm nhân vật chuyển động?
Ni dung bài hc
1. Cùng quan sát nhóm lnh Motion
Em hãy quan sát nhóm các lệnh trong nhóm chuyển động (motion) của Scratch.
25 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Em có nhận xét gì về các lệnh này?
- Tất cả các lệnh trong nhóm Chuyển động đều có cùng màu xanh.
- Các lệnh này có cùng chức năng điều khiển hoạt động của các nhân vật trên màn hình.
2. Tọa độ nhân vật và kích thước sân khu
Để có thể điều khiển chuyển động nhân vật dễ dàng chúng ta cần tìm hiểu thêm thông tin về
sân khấu mà trên đó các nhân vật đóng vai chính.
Kích thước sân khu
Sân khấu luôn có kích thước hình chữ nhật 480 x 360. Chiều ngang = 480 (điểm / pixel),
chiều cao = 360 (điểm / pixel).
Tâm của sân khấu chính là tâm của hệ trục tọa độ màn hình.
Mỗi vị trí trên sân khấu sẽ được đánh dấu bởi 2 số, 2 tọa độ (x, y). Ở đây:
x = khoảng cách từ vị trí này đến trục đứng (trục tung, trục Y); y = khoảng cách từ vị trí này
đến trục ngang (trục hoành, trục X).
Cặp số (x, y) được gọi là tọa độ của vị trí, điểm đã cho.
Giá trị tọa độ x chạy từ -240 đến 240.
Giá trị tọa độ y chạy từ -180 đến 180.
Em hãy xác định trên sân khấu các vị trí có tọa độ sau:
(0, 0); (10, -10); (100, 100).
Tọa độ của điểm trên mặt
phẳng có trục tọa độ và cách tính tọa độ.
Điểm A trên hình có tọa độ
x=4 theo trục hoành (ngang)
và y=3 theo trục tung (ngang).
26 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Mô hình tọa độ và kích thước sân khấu của Scratch.
Tọa độ ca nhân vt
Khi nhân vật chuyển động trên màn hình, chúng ta xác định nhân vật này bằng tọa độ của
chúng. Tọa độ của nhân vật được tính là tọa độ của điểm chính tâm của nhân vật. Ví dụ
điểm tính tọa độ của con mèo như hình dưới đây.
Vị trí này sẽ xác định tọa độ của nhân vật con mèo.
Em hãy kéo thả lần lượt các lệnh sau và kiểm tra xem nhân vật của chúng ta chuyển động
như thế nào. Viết mô tả sang cột bên cạnh.
Biết được kích thước, tọa độ sân khấu chúng ta có thể điều khiển nhân vật chuyển động đến
bất cứ vị trí nào chúng ta muốn.
2. Hướng chuyển động ca nhân vt
27 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Khi chuyển động bởi lệnh
, nhân vật bao giờ cũng di chuyển theo 1
hướng nhất định. Trong Scratch, các hướng được qui định bởi 1 số đo góc, như chỉ ra theo sơ đồ sau. up left right down
Giá trị góc của hướng tính từ -180o đến 180o. Lệnh
cho phép nhân vật quay theo chiều kim đồng hồ 1 góc cho
trước (ví dụ 15 độ theo hình ảnh). Lệnh
cho phép nhân vật quay theo chiều ngược kim đồng hồ 1 góc
cho trước (ví dụ 15 độ theo hình ảnh).
Khi 1 nhân vật mới được khởi tạo, nhân vật này luôn hướng theo hướng mặc định là hướng phải (right, 90o). Nhân vật đang Nhân vật đang xoay theo hướng xoay theo hướng down (180o / - left (-90o) Mặc định nhân Nhân vật đang vật có hướng xoay theo hướng right (90o) up (0o)
Hãy cho biết hướng các nhân vật này là hướng nào?
28 | T ự h ọ c l ậ p t r ì n h S c r a t c h
3. Hãy cho nhân vt chuyển động đơn giản trên sân khu
Bây giờ các em hãy cùng thực hiện các chương trình đơn giản điều khiển các nhân vật
chuyển động trên màn hình.
1. Thiết lập 2 chương trình sau và quan sát kết quả thực hiện. Nhận xét:
- Kết quả thực hiện 2 chương trình này là như nhau (nhân vật chuyển động theo 1 hình
vuông và quay về vị trí ban đầu), tuy nhiên với chương trình 1 rất khó quan sát vì tốc độ
chuyển động nhanh quá, còn chương trình 2 thì dễ dàng quan sát sự chuyển động của nhân vật.
- Trong chương trình 2, lệnh
(ý nghĩa tạm dừng thực hiện chương trình trong
1 giây) có ý nghĩa giúp chúng ta quan sát được sự chuyển động rõ ràng hơn. Kinh nghiệm
này hay được sử dụng. - Lệnh
có màu vàng nhạt nằm trong nhóm lệnh Điều khiển (Control) mà các
em sẽ được làm quen trong các bài học tiếp theo.
2. Bây giờ em sẽ cho nhân vật chính chuyển động theo chiều ngang trên sân khấu, ví dụ
chạy từ trái sang phải và ngược lại .
Em hãy thiết lập chương trình có các lệnh sau:
Lệnh này có tác dụng cho nhân vật
chính quay lại (xoay ngược kim đồng hồ 180 )
29 | T ự h ọ c l ậ p t r ì n h S c r a t c h Các em sẽ thấy gì?
Em sẽ thấy chú mèo khi quay ngược kim đồng hồ 180 độ sẽ bị lộn ngược!
Để khắc phục lỗi này chúng ta sẽ dùng lệnh để điều chỉnh
cách xoay người của nhân vật. Lệnh này có 3 lựa chọn bằng cách dùng chuột nháy chọn tại
nút phía phải của lệnh. 3 lựa chọn quay là: chỉ quay trái phi (left-right); không quay
(don’t rotate); và quay tròn (all around). Chúng ta nhìn thấy chú mèo bị lộn ngược là do lựa chọn quay tròn.
Bây giờ hãy viết lại đoạn chương trình trên:
4. Thêm lnh lp
Chúng ta sẽ quan sát kỹ hơn chương trình đã làm trong phần đầu của mục trên và chú ý đến
4 nhóm lệnh lặp lại giống nhau. nhóm nhóm nhóm nhóm
Để khỏi phải viết lại các nhóm lệnh giống nhau nhiều lần, trong Scratch (và trong mọi môi
trường lập trình khác), người ta sử dụng các lệnh để điều khiển các cấu trúc lặp này.
Trong Scratch lệnh điều khiển này có dạng sau:
30 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Kéo thả các nhóm lệnh muốn lặp vào vị trí
này. Có thể thay đổi giá trị số 10 bằng 1 số hiê
Ý nghĩa của lệnh là cho phép thực hiện nhóm các lệnh nằm bên trong lệnh này có thể được
thực hiện lặp lại 1 số lần. Số lần lặp có thể điều chỉnh trực tiếp trên lệnh.
Quay trở lại ví dụ trên, chúng ta có thể viết lại đoạn chương trình trên bằng 1 chương trình
khác, ngắn gọn. Lệnh lặp được lấy từ nhóm lệnh Điều khiển. 1. Kéo thả nhóm lệnh này vào đây
2. Kết quả thu được, nhóm
lệnh được thực hiện lặp 4 lầ
Kỹ thuật lặp chương trình được sử dụng rất nhiều trong thực tế, trong tất cả các môi trường lập trình máy tính.
Em hãy viết lại đoạn chương trình lặp trên và chạy thử để kiểm tra kết quả.
5. B sung nhân vt
Đối tượng điều khiển chính của 1 chương trình Scratch là nhân vật trên sân khấu. Chúng ta
điều khiển nhân vật bằng chương trình được đưa ra (bằng cách kéo thả mẫu lệnh) trên Cửa
sổ lệnh của nhân vật. Mỗi nhân vật có 1 cửa sổ lệnh (Script Window) của riêng mình. Điều
đặc biệt thú vị là chúng ta có thể tạo ra nhiều nhân vật trên sân khấu.
1. Khu vực làm việc với nhân vật .
Khu vực phía dưới sân khấu chính là nơi tập trung thông tin của các nhân vật có trong
chương trình. Nháy lên chữ i nhỏ sẽ xuất hiện các thông tin của nhân vật này. Khung thông
tin nhân vật và các tính năng tương ứng như sau: Các nút lệnh bổ sung thêm nhân vật.
Cửa sổ thông tin của nhân
vật. Tại đây có thể thay
đổi, sửa trực tiếp thông tin của nhân vật.
31 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Khi nháy chuột phải lên biểu tượng nhân vật sẽ có xuất hiện thêm 1 bảng chọn các lệnh nữa đối ớ v i nhân vật này.
Bảng chọn các lệnh với nhân vật khi nháy
chuột phải lên nhân vật. Các chức năng từ trên
xuống: xem thông tin; to 1 bn sao; xóa; ghi
hình nh ra file; n không hin trên màn hình.
Tại cửa sổ thông tin của nhân vật chúng ta có thể thực hiện các thao tác sau. Tên của nhân vật Hướng xoay hiện
Lựa chọn cách xoay hướng nhân vật. quay tròn trái phải không quay
Hiển thị hay ẩn nhân vật .
2. Bổ sung thêm nhân vật từ thư viện dữ liệu
Để bổ sung thêm nhân vật từ 1 thư viện có sẵn, em hãy thực hiện các bước sau. - Nháy nút tại khung nhân vật.
- Xuất hiện cửa sổ các nhân vật trong thư viện có sẵn.
Kho thư viện này có rất nhiều hình ảnh người, con vật, đồ dùng, … có thể chọn làm nhân vật của chương trình.
32 | T ự h ọ c l ậ p t r ì n h S c r a t c h
- Nháy chuột chọn 1 hình và nháy nút OK để bổ sung hình này vào chương trình như 1 nhân vật mới.
Hình ảnh sau mô tả 1 chương trình có 4 nhân vật . Danh sách các nhân vật
hiện tại đây. Có thể bổ sung không hạn chế số
lượng nhân vật cho mỗi chương trình Scratch. 3. Hoạt động của em
Em hãy thiết lập 1 chương trình, bổ sung vào sân khẩu từ 2 đến 5 nhân vật. Sau đó em viết
các chương trình độc lập điều khiển các nhân vật này.
6. Thay đổi nn sân khu
1. Nền sân khấu là gì?
Nền sân khấu là những gì thể hiện trên cửa sổ chính của chương trình. Các nhân vật đều
hoạt động trên nền của sân khấu. Hình nền sân khẩu Hình ảnh thu nhỏ của sân khấu và các chức
năng với sân khấu ở đây
33 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Trong hình trên, nền sân khấu là rỗng. Chúng ta có thể bố sung thêm nhiều hình nền để đưa
lên trang trí cho sân khấu.
Cửa sổ điều chỉnh, bổ sung nền sân khấu có dạng như hình sau.
Nháy nút Backdrops để vào
chức làm việc với nền sân khấu
Cửa sổ chỉnh sửa trực
tiếp đồ họa, hình ảnh của nền sân khấu. Các nút công cụ bổ sung, tạp mới, điều chỉnh nền sân khấu. Danh sách nền sân khấu hiện tại đây
2. Bổ sung thêm nền sân khấu vào chương trình
Để bổ sung thêm hình ảnh sân khấu từ 1 thư viện có sẵn, em hãy thực hiện các bước sau. - Nháy nút
tại khung thông tin sân khấu.
- Xuất hiện cửa sổ các hình nền sân khấu trong thư viện có sẵn.
34 | T ự h ọ c l ậ p t r ì n h S c r a t c h
- Nháy chọn hình nền muốn đưa vào chương trình và nháy nút OK.
Hình nền sâu khấu sẽ đưa vào chương trình tương tự hình sau.
Khung điều khiển nhân vật và
sân khấu sau khi đã bổ sung
thêm nhiều nhân vật và nền sân khấu
Chú ý: khi nháy lên nút sân khấu phía dưới, cửa sổ Backdrops như hình sau xuất hiện cho
phép chỉnh sửa trực tiếp hình ảnh đồ họa sân khấu. Có thể đặt tên các nền sân khấu trong cửa sổ này.
35 | T ự h ọ c l ậ p t r ì n h S c r a t c h Dãy các hình nền sân khấu hiện ở
7. Cho nhân vt chào hi đâ
Nhóm các lệnh Chuyển động chỉ điều khiển nhân vật di chuyển trên sân khấu, nhưng còn
thể hiện bên ngoài của các nhân vật như ăn mặc, nói, hát thì phải dùng các lệnh của nhóm khác.
Chúng ta cùng làm quen với một vài lệnh đơn giản của nhóm lệnh Thể hiện (Look) của
Scratch. Bắt đầu từ 1 chương trình như sau:
Chú mèo trước khi xuất phát sẽ chào khán giả: "Chào các bạn, tôi là Mèo con" trong 2 giây.
Sau đó Mèo chạy vòng quanh sân khấu 1 vòng và quay trở lại vị trí cũ. Khi về đich, Mèo sẽ
chào: "Chúc các bạn ngủ ngon".
Các lệnh được kéo thả vào chương trình như sau:
2 lệnh mới trong đoạn chương trình trên là:
36 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Lệnh này thể hiện nội dung câu nói trên màn hình và dừng toàn bộ chương trình trong 1 thời
gian nhất định (ví dụ 2 giây trong ví dụ trên). Hình ảnh thể hiện có ý nghĩa nhân vật đang nói.
Lệnh này thể hiện nội dung câu nói trên màn hình (không dừng toàn bộ chương trình). Hình
ảnh thể hiện có ý nghĩa nhân vật đang nói.
Câu hi và bài tp
1. Viết chương trình điều khiển nhân vật thực hiện các công việc sau:
- Đi vòng quanh sân khấu 8 vòng theo chiều ngược kim đồng hồ.
- Đi vòng quanh sân khấu 5 vòng theo chiều kim đồng hồ.
- Trước khi đi nói "Chào các bạn, tôi chuẩn bị đi". Sau đó nhân vật sẽ đi vòng quanh sân
khấu 4 lần, mỗi lần đi về sẽ dừng lại và nói câu: "Tôi vừa hoàn thành công việc" trong
khoảng thời gian 2 giây trước khi đi tiếp.
2. Em hãy thiết lập các chương trình để điều khiển nhân vật chuyển động theo các sơ đồ sau,
chú ý đến mỗi ngã rẽ nên dừng lại vài giây để nghỉ ngơi. A B C
3. Em hãy viết 1 chương trình nhỏ tạo ra 4 nhân vật, khi chạy các nhân vật này chào hỏi như sau.
37 | T ự h ọ c l ậ p t r ì n h S c r a t c h
M rng
Viết chương trình thực hiện các công việc sau:
- Thiết lập 4 nhân vật như hình dưới đây.
- Lần lượt cho mỗi nhân vật chuyển động quanh sân khấu theo chiều ngược kim đồng hồ 4
lần. Con này chạy sau con kia.
38 | T ự h ọ c l ậ p t r ì n h S c r a t c h Bài 4. Vẽ hình 1 Mục đích
Học xong bài này bạn sẽ biết:
- Sử dụng khái niệm bút vẽ để điều khiển nhân vật vẽ các đường, hình đơn giản trên màn hình.
- Thay đổi màu sắc, độ rộng, kiểu của nét vẽ.
- Làm quen với khái niệm cảm biến và các lệnh cảm biến đơn giản. - Biết các â
c u lệnh điều khiển rẽ nhánh (selection). Bắt đầu
1. Giả sử có 1 họa sĩ với 1 số bút vẽ, bảng màu và 1 tờ giấy trắng. Họa sẽ bắt đầu vẽ. Trong
các từ sau, từ nào liên quan đến công việc vẽ của họa sĩ này:
- Trải giấy ra mặt bàn. - Nhấc bút. - Uống nước. - Hạ bút. - Hát. - Nghỉ giải lao.
- Di chuyển bút trên giấy. - Lia bút, rê bút. - Chọn màu khác. - Chọn bút khác.
2. Em đã từng làm quen với các phần mềm ậ
t p vẽ trên máy tính chưa? Hãy kể 1 vài chương trình như vậy.
3. Trong bài học này chúng ta sẽ được làm quen và học cách Scratch có thể vẽ được trên
màn hình dưới sự điều khiển của chương trình. Chương trình sẽ điều khiển những công cụ sau đây: - bút vẽ - bảng màu - nhấc bút, hạ bút
và nhiều tính năng nổi bật khác.
Hoạt động bài hc
1. Chế độ v theo chuyển động nhân vt
Trong Scratch, chế độ vẽ được thiết lập rất đơn giản theo nguyên tắc sau:
39 | T ự h ọ c l ậ p t r ì n h S c r a t c h
- Đặt chế độ hạ bút (pen down).
- Khi đó khi nhân vật chuyển động sẽ tạo ra vết trên đường đi của mình, đó chính là nét vẽ
được tạo ra theo màu sắc, kiểu bút có sẵn của hệ thống.
- Trong quá trình vẽ có thể thay đổi màu vẽ, nét bút vẽ.
- Để kết thúc chế độ vẽ cần nhấc bút (pen up).
Các lệnh của nhóm vẽ (pen) đều có màu xanh lá cây.
Chúng ta chú ý các lệnh sau:
- Lệnh thiết lập chế độ vẽ:
, Sau lệnh này mọi chuyển động của nhân vật sẽ đều
để lại nét vẽ trên đường đi của mình.
- Lệnh hủy chế độ vẽ:
. Chú ý sau lệnh này các hình vẽ không bị xóa trên màn hình.
- Lệnh thiết lập màu vẽ:
. Cách xác định màu vẽ bởi lệnh này như sau:
nháy chuột lên ô vuông của lệnh, sau đó nháy chuột lên 1 vị trí bất kỳ trên màn hình có màu sắc muốn xác định.
- Lệnh thiết lập động rộng nét vẽ: . Giá trị
- Lệnh xóa tất cả các hình vẽ trên màn hình: .
Em hãy thiết lập 1 chương trình vẽ đơn giản như mô tả dưới đây và quan sát kết quả.
Xóa các hình được vẽ trước đó.
Thiết lập chế độ vẽ: hạ bút.
Đặt màu vẽ là màu: xanh.
Thiết lập độ rộng nét bút = 5.
Cho nhân vật chuyển động lên
vị trí góc phải trên của sân khấu.
2. V 1 s hình hình học đơn giản
Các em sẽ cùng thực hành vẽ các hình hình học sau bằng Scratch: hình vuông, chữ nhật,
hình thoi, hình bình hành, hình thang.
40 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Để thực hiện các chương trình vẽ được các hình trên chúng ta cần xác định tọa độ các đỉnh của các hình này.
Ví dụ với hình vuông, chúng ta xác định tọa độ các đỉnh là: (0,150) (150, 150)
Em viết chương trình điều
khiển nhân vật bắt đầu chuyển
động từ vị trí (0,0), sau đó lần
lượt di chuyển đến các vị trí (150,0), (150,150), (0,150),
cuối cùng quay trở lại vị trí ban đầu (0,0). (0, 0) (150,0)
Chương trình có thể được thiết ậ
l p như hình dưới đây. Chú ý rằng lệnh "go to x:0 y:0" được đặt tr ớ
ư c lệnh "pen down" chỉ ra rằng chỉ sau khi nhân vật ị
d ch chuyển đến vị trí (0,0) mới
bắt đầu quá trình vẽ.
Kết quả của chương trình được thể hiện ở hình phải.
Tương tự chúng ta thiết lập tọa độ của các hình còn lại và tạo chương trình vẽ tương ứng.
41 | T ự h ọ c l ậ p t r ì n h S c r a t c h (0,150 (200,150) (50,150) (150,150) (0, (200,0) (0, (200,0) (100, 80) (-50,150) (150,150) (0, 0) (200, 0) (100, -80) (0, 0) (200, 0)
Ẩn nhân vật trong các bài toán vẽ hình
Trong 1 số bài toán vẽ hình nếu không có nhu cầu hiển thị nhân vật thì Scratch cho phép ẩn,
không hiển thị (tạm thời) nhân vật bằng lệnh
từ nhóm Hiển thị (Look). Ngược lại lệnh
có tác dụng hiển thị trở lại hình ảnh nhân vật trên màn hình.
Sử dụng hình ảnh con rùa làm nhân vật của bài toán vẽ hình
Logo là phần mềm đầu tiên cho phép lập trình tạo bút vẽ trên màn hình. Trong phần mềm
Logo sử dụng hình ảnh con rùa để vẽ. Chúng ta cũng có thể tạo ra các nhân vật hình ảnh
Rùa trong các bài tập vẽ hình để tạo ra khung cảnh giống trong phần mềm Logo .
3. Thay đổi màu và nét bút
Quan sát các tính chất sau liên quan đến các tính chất của công việc vẽ.
42 | T ự h ọ c l ậ p t r ì n h S c r a t c h Tính cht 1 Tính cht 2 Tính cht 3
Em hãy chỉ ra tên của các thuộc tính trong các cột của bảng trên.
Có 3 thông số sau liên quan đến bút vẽ trong Scratch: màu vẽ (color), độ rộng nét bút (size)
và độ mờ nét bút (shade).
Màu bút v (pen color)
Màu sắc của bút vẽ được thiết lập bởi lệnh
. Giá trị màu sắc của bút
vẽ trong Scratch được đánh số từ 0 đến 200 theo dải màu cầu vồng. Dải màu theo sắc cầu vồng được thiết lập trong Scratch, lấy giá trị số từ 0
Di các giá tr
màu ca bút v
t 0 đến 200. 0 30 70 100 130 170 200
Ta có bảng giá trị màu ngắn sau: Giá tr Màu Giá tr Màu Giá tr Màu 0 Đỏ 70 Xanh lá cây 130 Xanh thẫm 30 Vàng 100 Xa da trời 170 Hồng
Độ rng nét bú t (pen size)
Độ rộng của nét bút được tính bằng pixel (điểm). Lệnh sẽ thiết lập
kích thước của nét bút vẽ hiện thời.
Độ m nét bút (pen shade)
43 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Độ mờ (hay độ đậm nhạt) của bút vẽ được đo bởi tham số shade có gía trị từ 0 đến 100. Giá
trị 0 là đậm nhất (độ mờ = 0), giá trị = 100 là mờ hoàn toàn. Lệnh
thiết lập độ mờ của nét bút.
Ngoài 3 lệnh thiết lập thông số chính thức cho màu bút, kích thước và độ mờ nét bút, trong
Scratch còn có các lệnh làm thay đổi các giá trị này.
Thay đổi màu của bút theo giá trị được nhập trong lệnh. Thay đổi k
ích thước nét bút theo giá trị được nhập trong lệnh.
Thay đổi độ mờ bút theo giá trị được nhập trong lệnh.
Em hãy thiết lập các chương trình thực hiện kết quả thay đổi màu sắc, kích thước và độ mờ
sử dụng các mẫu lệnh trên.
Em hãy viết lại các đoạn chương trình thể hiện trên màn hình các hình vẽ sau:
4. Thiết lp bút v riêng
Mục đích của chúng ta trong bài luyện này là thiết
lập một bút vẽ (như 1 nhân vật trên sân khấu) và có
khả năng vẽ các nét bút đúng tại vị trí đầu bút như hình bên.
Chú ý nét vẽ của bút xuất phát từ chính đầu ngòi bút trong hình.
Em hãy thực hiện các bước sau đây:
- Bổ sung thêm 1 nhân vật vào chương trình. Lần
này hãy chọn nhân vật bút chì (pencil) trong danh
sách để đưa vào sân khấu.
44 | T ự h ọ c l ậ p t r ì n h S c r a t c h Chọn bút vẽ theo hình ảnh này (pencil).
- Sau đó em có thể xóa nhân vật mèo bằng cách nháy chuột phải lên mèo tại cửa sổ điều
khiển nhân vật và chọn lệnh delete.
Bây giờ Bút chì đã hiện như nhân vật duy nhất trên màn
hình. Tuy vậy nếu thực hiện lệnh vẽ chúng ta sẽ thấy nét vẽ
xuất phát từ điểm giữa của bút chì (xem hình ảnh bên).
Trong Scratch, nét vẽ sẽ xuất phát từ tâm của nhân vật. Do
vậy muốn nét vẽ đi qua đầu bút chì chúng ta cần chuyển
tâm của hình về vị trí đầu bút chì. Cách thực hiện như sau:
- Nháy chọn bút chì trong khung điều khiển nhân vật.
- Nháy lên TAB Costume. Sẽ xuất hiện màn hình chỉnh sửa hình ảnh trang phục của nhân
vật hiện thời, cụ thể ở đây là bút chì.
Bên phải là cửa sổ chỉnh sửa đồ họa của nhân vật đang chọn (ở đây là bút chì). Nhiệm vụ
của chúng ta là chuyển tâm của nhân vật về đầu bút. Em thực hiện theo các bước sau. 1. Nháy chuột lên nút có hình dấu cộng (+) này. Đây là chức năng chọn tâm của hình nhân vật.
45 | T ự h ọ c l ậ p t r ì n h S c r a t c h 2. Xuất hiện 2 đường vạch ngang, dọc như hình bên. Em hãy nhấn giữ và rê chuột đến điểm đầu bút và nhả chuột.
3. Công việc điều chỉnh vị trí tâm nhân vật bút chì đã hoàn thành. Em có thể kiểm tra để xem bút sẽ vẽ như thế nào.
Hãy sử dụng bút này để vẽ 1 hình vuông trên màn hình.
5. V theo điều kin và s kin cm biến
Những chương trình mà chúng ta đã biết đều là 1 dãy các lệnh bắt đầu bằng lệnh sự kiện
. Lệnh này điều khiển đoạn chương trình gắn phía dưới chạy khi nháy chuột lên lá cờ.
Trong nhóm các lệnh sự kiện còn có 1 lệnh điều khiển theo sự kiện nháy lên 1 phím bất kỳ. Đó là lệnh
. Lệnh này có ý nghĩa tương tự lệnh trên, chỉ khác là
nhóm các lệnh gắn bên dưới sẽ thực hiện khi phím tương ứng được nháy.
Chúng ta hãy cùng thiết lập chương trình sau:
Nếu có sự kiện nháy lên lá cờ: khởi tạo chế độ vẽ đồ họa
với các tham số ban đầu.
46 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Nếu sự kiệnmột trong các phím ← → ↓ được bấm, nhân vật sẽ
xoay các góc 90 độ trái, 90 độ phải và 180 độ.
Nếu phím ↑ được bấm, nhân vật sẽ tiến lên phía trước 10 bước. Chúng ta sử dụng lệnh
, trong đó phím tương ứng được chọn bằng
cách nháy chuột lên nút hình tam giác và chọn tên phím tương ứng của sự kiện. Trên cửa sổ
lệnh của nhân vật này sẽ đặt 5 chương trình như sau.
Nháy chuột lên vị trí này
sẽ hiện ra tất cả các phím
trên bàn phím. Lựa chọn
1 để thiết lập lệnh cho sự kiện nháy phím này.
Thiết lập chương trình như dưới đây và quan sát hoạt động của chương trình. Các đoạn chương trình này được đặt trong cùng 1 cửa sổ lệnh của nhân vật, và được thực hiện đồng thời.
Chú ý: Trong các bài tiếp theo các em sẽ còn được học thêm cách điều khiển bàn phím bằng
các công cụ cảm biến khác của Scratch.
6. Lnh Stamp v hình ca nhân vt lên màn hình
47 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Lệnh Stamp có chức năng in hình nhân vật lên màn hình tại vị trí và thời điểm thực hiện
lệnh (với điều kiện đang ở chế độ hạ bút).
Em hãy thiết lập chương trình để có thể vẽ được hình dưới đây.
Em cần tạo một nhân vật mới có hình tròn màu xanh đặc, sau đó cần đặt tâm của nhân vật
đúng vị trí tâm hình tròn.
Câu hi và bài tp
1. Hãy viết chương trình để thực hiện vẽ các hình sau.
2. Hãy viết chương trình vẽ các hình sau, kết hợp các công cụ màu sắc và stamp.
3. Trong ví dụ của mục 5, em hãy thay đổi và bổ sung thêm yêu cầu sau:
- Khi nhân vật đi sang trái thì màu vẽ sẽ vàng, khi sang phải màu vẽ là xanh lá cây, đi lên
với màu đỏ và đi xuống với màu xanh thẫm.
48 | T ự h ọ c l ậ p t r ì n h S c r a t c h
4. Sử dụng lệnh Stamp để viết chương trình vẽ hình sau:
M rng
1. Xây dựng chương trình có các chức năng sau.
- Có 2 nhân vật là bút chì và quả bóng hình tròn.
- Khi chạy chương trình, cả 2 bút chì và quả bóng đều vẽ lên 1 hình vuông ở 2 bên màn hình.
- Bút chì kẻ hình vuông màu vàng, quả bóng tạo hình vuông màu xanh.
49 | T ự h ọ c l ậ p t r ì n h S c r a t c h Bài 5. Âm thanh 1 Mục đích
Học xong bài này, bạn sẽ biết:
- Kết nối âm thanh với nhân vật. Nhân vật nói và thể hiện lời nói bằng chữ và âm thanh.
- Các lệnh tạo âm thanh, đánh trống và chơi nhạc trên nền sân khấu.
- Điều khiển nhân vật nhảy múa.
Bt đầu 1. Chúng ta đã biết ệ
l nh say có ý nghĩa như thế nào. Lệnh
sẽ làm cho mèo con kêu meo meo như sau
Tuy vậy chúng ta chỉ nhìn thấy mèo kêu mà không nghe thấy giọng nói của mèo. Vậy có
cách nào để nghe được giọng của mèo, hay của bất kỳ một nhân vật nào khác hay không?
2. Trong bài học này, em sẽ được làm quen và học được các lệnh liên quan đến âm thanh.
Có rất nhiều điều thú vị đang ở phía trước.
- Âm thanh, giọng nói có thể phát ra từ nhân vật hay không? Nhân vật sẽ "nói" như thế nào?
- Nhạc nền của sân khấu có thể bật lên được hay không?
- Nhân vật của chúng ta có thể hát được không?
- Nhân vật có thể chơi các nhạc cụ, đánh trống, thổi kèn được hay không?
Nhưng câu hỏi như vậy em sẽ được lần lượt làm quen trong bài học này.
Ni dung bài hc
1. Nhân vt có th nói, hát Chúng ta hãy bắt ầ
đ u từ nhóm lệnh Sound (âm thanh) và thực hiện lệnh trong nhóm lệnh này.
Chương trình ngắn sau đây sẽ cho chúng ta cảm giác nhân vật có thể nói, hội thoại và giao
tiếp bằng âm thanh trong Scratch.
50 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Em sẽ nghe và nhìn thấy gì?
Em sẽ nghe thấy tiếng kêu meo meo của Mèo và nhìn thấy dòng chữ Meo meo trên màn hình.
Như vậy các nhân vật trong Scratch không những có thể "nói" bằng chữ trên màn hình, mà
còn có thể hát, nói bằng âm thanh thật của mình thông qua loa của máy tính.
Mỗi nhân vật trong Scratch đều có thể có một hay nhiều âm thanh, giọng nói đi kèm. Số
lượng âm thanh của mỗi nhân vật là không hạn chế.
Lệnh play sound cho phép nhân vật thể hiện âm thanh của mình trực tiếp trên máy tính.
Trong lệnh play sound cho phép hiển thị và lựa
chọn âm thanh tương ứng của nhân vật. Chọn âm
thanh cần thể hiện cho nhân vật này.
2. Nhóm lnh âm thanh
Nhóm lệnh âm thanh (sound) có màu tím sẫm. Các lệnh làm việc với âm thanh rất đa dạng, chúng ta sẽ bắt ầ
đ u bằng nhóm lệnh đơn giản đầu tiên: các lệnh bật, tắt âm thanh của nhân vật.
Các lệnh bật âm thanh (sound) của nhân vật (hoặc sân khấu)
Các lệnh đánh trống và liên quan đến nhịp trống
Các lệnh chơi nhạc và liên quan đến nhạc cụ
Các lệnh làm việc với cường độ âm thanh
Các lệnh làm việc với nhịp trống
51 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Em hãy thử và phân biệt sự khác biệt khi thực hiện của các nhóm lệnh sau: Lệnh đầu tiên phát âm
Lệnh đầu tiên phát âm thanh
Lệnh say được thực hiện
thanh "meo meo", ngay sau "meo meo" và đợi cho đến khi trước, sau đó đến lệnh play
đó thực hiện lệnh say
âm thanh kết thúc mời thực sound. không cần đợi âm thanh hiện lệnh say. kết thúc.
Em hãy thực hiện cả 3 nhóm lệnh trên và trả lời các mệnh đề sau đúng hay sai.
1. Cả 3 đoạn lệnh trên có tác dụng hoàn toàn giống nhau.
2. Các đoạn lệnh số 1 và 3 có tác dụng giống nhau. 3. Lệnh play soun
d sẽ thực hiện bật âm thanh có trong lệnh này đồng thời với các lệnh tiếp theo của lệnh này.
4. Lệnh play sound sẽ thực hiện bật âm thanh có trong lệnh, chờ nghe xong âm thanh sẽ
thực hiện các lệnh tiếp theo.
5. Lệnh play sound .. until done sẽ thực hiện bật âm thanh có trong lệnh, chờ nghe xong
âm thanh sẽ thực hiện các lệnh tiếp theo. Chú ý: Lệnh
sẽ dừng tất cả các âm thanh đang bật trong chương trình.
3. Âm thanh, nhc nn sân khu
Âm thanh không chỉ có ở nhân vật, mà sân khấu cũng có thể có âm thanh, nhạc nền của
riêng mình. Chúng ta hãy thực hiện một hoạt động đơn giản sau để hiểu ý nghĩa của âm thanh sân khấu.
(a) Em hãy bổ sung nền sân khấu mới từ kho các hình ảnh đã có của phần mềm, ví dụ, lấy hình ảnh sau (bedroom).
(b) Làm ẩn đi nhân vật chính là chú mèo.
(c) Nháy chọn biểu tượng sân khấu trong khung điều khiển phía dưới và kéo thả đoạn
chương trình như trong hình ảnh sau.
52 | T ự h ọ c l ậ p t r ì n h S c r a t c h Kéo thả 2 lệnh này từ cửa sổ lệnh của sân khấu.
Làm ẩn đi nhân vật Mèo con Bổ sung thêm hình ảnh sân khấu này.
Nháy tại đây để vào cửa sổ lệnh của sân khấu.
Chúng ta chú ý đến đoạn chương trình ngắn của sân khấu này.
Lệnh này nằm trong nhóm sự kiện (event) của sân khấu.
Các lệnh bên dưới sẽ thực hiện mỗi khi nháy chuột lên sân ấ
Bật âm thanh của sân khấu được ghi trong lệnh
Khi chạy chương trình này, em sẽ thấy mỗi khi nháy chuột lên sân khấu sẽ nghe được 1 âm thanh nhỏ phát ra.
Trên thực tế mỗi nhân vật và sân khấu nền của 1 chương trình đều có thể gán với một hay
nhiều âm thanh khác nhau. Các âm thanh này rất đa ạ
d ng, có thể là lời nói, tiếng động, nhạc
nền, bài hát. Các tệp âm thanh có thể dùng bao gồm các dạng wav, mp3, ….. Nhân vật có âm thanh, Sân khấu có các âm nhạc, giọng nói riêng. Số lượng âm thanh cho
thanh, nhạc nền riêng của mỗi nhân vật là không hạn chế. mình.
4. Thu âm trc tiếp âm thanh cho nhân vt
Trong hoạt động này, em sẽ thực hiện việc thu âm trực tiếp từ máy tính qua micro để tạo ra
một âm thanh của nhân vật. Các bước thực hiện như sau.
(1) Lựa chọn record trong lệnh play sound của nhân vật.
53 | T ự h ọ c l ậ p t r ì n h S c r a t c h
hoặc vào TAB Sounds của khung điều khiển và nháy lên biểu tượng micro .
Cửa sổ sau sẽ xuất hiện để chuẩn bị thu âm trực tiếp.
Nháy nút này để bắt ầđu thu âm.
Trong quá trình đang thu âm, cửa sổ này có dạng như sau:
Nháy nút này để kết thúc thu âm. Trong thời gian thu âm,
nút này chuyển màu đỏ.
Khi kết thúc thu âm, âm thanh vừa được thu sẽ hiển thị trên cửa sổ như sau:
54 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Bây giờ có thể thực hiện việc đặt tên cho âm thanh vừa thu âm.
5. B sung âm thanh cho nhân vt và sân khu
Trong hoạt động này, em sẽ thực hiện thao tác bổ sung âm thanh cho nhân vật (hoặc sân
khẩu) lấy từ 1 kho âm thanh có sẵn của phần mềm.
Ca s làm vic vi â
m thanh ca nhân vt hoc sân khu
Như chúng ta đã biết, trong Scratch, các nhân vật có thể nói, hát, phát ra tiếng nói của mình.
Sân khẫu cũng có thể có âm thanh nền. Trong màn hình Scratch nếu nháy lên nút Sound
chúng ta sẽ vào chức năng cho phép bổ sung thêm âm thanh cho nhân vật. Cũng trên màn
hình này sẽ hiện toàn bộ danh sách các âm thanh hiện đang có của nhân vật. Với các âm
thanh có sẵn chúng ta có thể thực hiện các thao tác sau: Khu vực làm việc với âm thanh của nhân vật hoặc sân khấu. - Chỉnh sửa âm thanh. - Xóa âm thanh. - Thay đổi tên âm thanh. Âm thanh hiện thời Xóa âm thanh
Vị trí đổi tên âm thanh Khu vực chỉnh sửa âm thanh Danh sách âm thanh
55 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Mỗi nhân vật có thể đi kèm 1 hoặc nhiều âm thanh, em có thể bổ sung âm thanh từ các kho
có sẵn, có thể thu âm trực tiếp hoặc lấy từ các tệp âm thanh trên máy tính.
Em hãy thực hiện thao tác bổ sung âm thanh cho nhân vật bằng cách lấy từ 1 kho có sẵn.
B sung âm thanh t kho có sn - Nháy vào nút hình loa
ở phía trên khung làm việc với âm thanh của nhân vật .
- Xuất hiện cửa sổ có danh sách các âm thanh.
- Em nháy chọn 1 âm thanh và nháy nút OK.
Em sẽ thấy âm thanh này đã được đưa vào khu vực âm thanh của nhân vật.
Danh sách các âm thanh của
nhân vật hiển thị tại đây.
B sung âm thanh t tp ngoà i - Nháy nút .
- Xuất hiện hộp hội thoại mở tệp có dạng tương tự hình sau. Tìm kiếm tệp âm thanh ngoài.
56 | T ự h ọ c l ậ p t r ì n h S c r a t c h
- Chọn tệp âm thanh muốn bổ sung và nháy nút Ope .
n Tệp âm thanh này sẽ được đưa vào
danh sách âm thanh của nhân vật (hoặc sân khấu).
Câu hi và bài tp
1. Thiết lập nhân vật là thầy giáo, thu âm lời nói "Chào em" và viết đoạn chương trình thầy
giáo nói và thể hiện dòng chữ "Chào em" trên màn hình.
2. Thiết lập nhân vật là học sinh, thu âm lời nói "Em chào thầy ạ" và viết đoạn chương trình
em học sinh chào thầy giáo, nói và thể hiện dòng chữ "Em chào thầy" trên màn hình.
57 | T ự h ọ c l ậ p t r ì n h S c r a t c h
3. Thiết lập 2 nhân vật là thầy giáo và học sinh. Thu âm giọng nói của thầy "Chào em",
giọng nói học sinh "Em chào thầy ạ" và thực hiện thiết kế chương trình như sau:
- Thầy nói "Chào em" và thể hiện lời chào trên màn hình.
- Sau 1 giây, học sinh sẽ chào lại "Em chào thầy ạ" và hiện dòng chữ trên màn hình.
4. Thiết lâp chương trình như sau:
- Nền sân khấu là hình ảnh một ngôi trường.
- Nhân vật chính là hai bạn học sinh nhỏ đang đi học.
- Em bổ sung bài hát "Em yêu trường em" cho nhân vật hai bạn nhỏ này.
- Cho chương trình chạy thì hát bài hát trên. Khi hát xong thì hai bạn nhỏ sẽ chào mọi người.
M rng
1. Em hãy viết 1 chương trình đơn giản có âm thanh với các yêu cầu sau.
- Nhân vật chính là 1 em bé.
- Em bé sẽ chạy vòng quanh sân khấu, mỗi bước chạy sẽ vọng lên tiếng thịch thịch của bàn chân.
2. Viết chương trình sau:
58 | T ự h ọ c l ậ p t r ì n h S c r a t c h
- Màn hình nền trắng, có 1 cái bút chì là nhân vật chính.
- Khi chạy chương trình, bút bắt đầu vẽ các hình đa giác đều trên màn hình, bắt đầu là tam
giác, tứ giác và ngũ giác đều.
- Khi nháy chuột lên màn hình thì lời 1 bài hát quen thuộc vang lên. Em có thể tìm chọn một bài hát bất kỳ.
59 | T ự h ọ c l ậ p t r ì n h S c r a t c h Bài 6. Chuyển động 2 Mục đích
Học xong bài này, bạn sẽ biết:
- Các lệnh chuyển động phức tạp hơn trên màn hình.
- Giao tiếp đơn giản giữa nhân vật và máy tính.
- Sử dụng lệnh lặp đơn giản và lặp vô hạn.
- Bước đầu làm quen với lệnh điều khiển if … then …
- Làm việc với 2 hoặc nhiều nhân vật. Chương trình song song. Bắt đầu
1. Quan sát chương trình sau, bạn có nhận xét gì về chuyển động của nhân vật.
2. Quan sát tiếp chương trình sau.
- Bạn có nhận xét gì về chuyển động của nhân vật? Có điểm gì giống và khác nhau so với chương trình trên.
Ni dung bài hc
1. Điều khin nhân vt khi chm biên màn hình
Có bao giờ em nghĩ rằng nếu chúng ta cho các nhân vật chuyển động ra khỏi phạm vi màn
hình thì sẽ như thế nào không? Hoạt động này sẽ giúp em điều khiển nhân vật tránh được
hiện tượng trên. Trong Scratch có 1 lệnh riêng như vậy, đó là lệnh ,
60 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Lệnh này có tác dụng như sau: khi nhân vật
chuyển động chạm cạnh sân khấu, nhân vật sẽ tự
động dừng và quay lại theo hướng đối xứng gương
với hướng ban đầu. Hướng ban đầu và hướng quay
được chỉ ra trong hình bên.
Chú ý: lệnh này chỉ có trong Scratch và thường
được đặt sau các chuyển động của nhân vật ể đ
điều khiển chuyển động này .
Em hãy thử đoạn chương trình sau để kiểm tra tác
Khi nhân vật chuyển động gặp dụng của lệnh trên.
cạnh sân khấu, nhân vật sẽ dừng
lại và quay hướng theo góc đối
xứng với hướng lúc đi đến.
Lệnh wait (1) secs có tác dụng cho nhân vật dừng lại trong 1 thời gian để quan sát được dễ hơn.
2. Lnh lp vô hn
Chúng ta đã được làm quen với lệnh trong nhóm điều khiển dùng để làm cho 1 đoạn chương
trình thực hiện lặp lại 1 số lần (lệnh repeat). Nếu chúng ta muốn 1 đoạn chương trình được
lặp lại vô hạn lần thì cần sử dụng lệnh dưới đây.
Nhóm các lệnh nằm trong khung này sẽ được lặp lại vô hạn lần
cho đến khi người sử dụng nháy nút đỏ trên màn hình hoặc có
lệnh cho phép dừng vòng lặp hoặc chương trình.
Bây giờ thì em hãy thử lại và hiểu hai chương trình đã được nêu trong phần mở đầu, em có
thể trả lời đươc câu hỏi đặt ra.
Nhân vật chuyển động liên tục, vô hạn dọc
Nhân vật chuyển động liên tục, vô hạn, mỗi
theo các cạnh của 1 hình vuông.
khi gặp cạnh sân khấu thì quay lại và đi tiếp.
3. Hi thoi gia 2 nhân vt, chương trình song song
Trong hoạt động này chúng ta cùng thiết kế 1 chương trình đơn giản sau.
61 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Nhân vật: Mèo và Cánh cụt .
Nội dung chương trình cần thực hiện.
Mèo (trông thấy Chim) chào "Xin chào bạn Cánh cụt". Chờ trong 3 giây.
Cánh cụt (thấy Mèo chào) chào "Chào Mèo con".
Em hãy phân tích yêu cầu của đầu bài và viết ra các công việc cần thực hiện của Mèo và Cánh cụt .
Công vic ca Mèo
Công vic ca Cánh ct
Em cần thực hiện các bước sau:
- Bổ sung thêm nhân vật chim cánh cụt như hình trên và đổi tên 2 nhân vật thành "Mèo" và "Cánh cụt".
- Trong cửa sổ lệnh của Mèo và Cánh cụt, em viết 2 chương trình riêng biệt cho Mèo và
Cánh cụt như hình dưới đây. Chú ý: hai chương trình sẽ thực hiện đồng thời, song song, nên
cần để câu chào của Mèo trong 5 giây, còn Cánh cụt thì cần cần chờ đợi 3 giây đúng theo
yêu cầu, sau đó mời chào Mèo.
- Kết quả thực hiện chương trình.
Em hãy bổ sung thêm các lệnh để mở rộng yêu cầu của bài toán trên.
Mèo (trông thấy Chim) chào "Xin chào bạn Cánh cụt".
Đồng thời Mèo tiến 10 bước về phía Cánh cụt. Chờ trong 3 giây.
Cánh cụt quay lại phía Mèo.
Cánh cụt chào "Chào Mèo con".
62 | T ự h ọ c l ậ p t r ì n h S c r a t c h
4. Chuyển động bằng thay đổi trang phc
Để mô tả chuyển động của nhân vật, ngoài các lệnh cho phép nhân vật ị d ch chuyển vị trí
trên màn hình, chúng ta còn có thể sử dụng hiệu ứng thay đổi hình ảnh nhân vật.
Mỗi nhân vật sẽ có thể có nhiều hình ảnh minh họa, được gọi là trang phục. Nút Costume
cho phép em bổ sung và chỉnh sửa các hình ảnh trang phục này. Ví dụ nhân vật Hip-hop sau
có đến 12 bộ trang phục. Như vậy kết hợp thay đổi trang phục và dịch chuyển trên màn hình
sẽ tạo ra các hình ảnh chuyển động thực của nhân vật. Phim hoạt hình cũng được thiết kế
dựa trên nguyên tắc này. Cửa sổ vẽ, Các trang chỉnh sửa phục của trang phục nhân vật. của nhân vật. Scratch cho phép tạo ra nhiều hình ảnh - trang phục khác nhau của 1 nhân vật .
Trong nhóm lệnh Th hin (Look) có 2 lệnh điều khiển trang phục sau. Lệnh
có tác dụng cho nhân vật chuyển sang trang phục tiếp theo trong danh sách. Lệnh
có tác dụng cho nhân vật chuyển sang trang phục được chọn trong danh sách.
Bây giờ em hãy thiết kế đoạn chương trình cho nhân vật Hip-hop của chúng ta vừa dịch
chuyển trên màn hình (dùng lệnh move), vừa thay đổi trang phục (dùng lệnh next costume). Chương trình 1. - Vòng lặp: 10 lần.
- Nhân vật thay đổi trang phục sau mỗi 10 bước.
- Sau khi thay trang phục thì dừng chương trình 1 iâ
Quan sát chương trình trên, em có nhận xét gì về chuyển động của chú bé Hip-hop?
63 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Bây giờ chúng ta sẽ làm tốt lên chương trình trên bằng cách tăng số vòng lặp lên 100, nhân
vật sẽ thay đổi trang phục chỉ sau 5 bước và thời gian chờ chỉ là 0.5 giây. Hiệu ứng chuyển động sẽ tốt lên. Chương trình 2. - Vòng lặp: 100 lần.
- Nhân vật thay đổi trang phục sau mỗi 5 bước.
- Sau khi thay trang phục thì nghỉ nhanh 0.5 giây.
5. Lệnh điều khiển có điều kin
Trong hoạt động này em sẽ làm quen với 1 lệnh quan trọng của Scratch, lệnh điều khiển có
điều kiện if … then (nếu …. thì). Đây là 1 lệnh, 1 tư duy quan trọng của việc điều khiển máy tính làm việc.
Trên thực tế chúng ta thường rất hay gặp tình huống mà hành động được quyết định tùy theo các điều kiện cụ t ể h . Ví dụ:
- Nếu trời nắng thì tôi sẽ đi chơi.
- Nếu bạn gặp không làm được bài thì tôi sẽ giúp bạn.
Mệnh đề trên được thể hiện tổng quát thành câu lệnh sau:
Nếu <điều kiện> thì
Ở đây <điều kiện> là 1 biểu thức, hoặc mệnh đề luôn có giá trị Đúng hoặc Sai. Các mệnh
đề, biểu thức chỉ mang ý nghĩa đúng, sai được gọi là biểu thức logic.
Ví dụ các biểu thức logic. 1 = 2 Nhận giá trị sai . 15 > 3.4 Nhận giá trị đúng.
Lệnh thực hiện lệnh theo điều kiện (logic) là lệnh If …. then, lệnh này nằm trong nhóm lệnh
Điều khiển (Control) có màu nâu.
Điều kiện thực hiện lệnh mô tả bằng 1 biểu
thức hay giá trị dạng Đúng / Sai (logic). Biểu
thức logic thể hiện hình trám nhọn ở 2 đầu.
Nhóm lệnh trong vị trí này sẽ được thực
hiện khi biểu thức logic trên là Đúng
Trong Scratch có 1 số lệnh là các mệnh đề logic, chỉ có giá trị đúng và sai. Chúng ta cùng
tìm hiểu 2 lệnh này trong nhóm lệnh Cảm biến (Sensing).
Lệnh này đóng vai trò 1 điều kiện logic. Lệnh chỉ trả lại giá trị
Đúng nếu nhân vật hiện thời va chạm với 1 đối tượng khác chỉ ra
trong lệnh (nhân vật khác hoặc cạnh sân khấu).
Lệnh này chỉ trả lại giá trị Đúng nếu nhân vật hiện thời tiếp xúc với
màu sắc được chỉ ra ngay trong lệnh.
64 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Ví dụ đoạn chương trình sau kiểm tra xem nhân vật có chạm vào cạnh sân khấu hay không,
nếu đúng thì sẽ thông báo "Tôi va phải cạnh sân khấu rồi".
Bây giờ em hãy thực hiện chương trình với nhiệm vụ sau.
Vẫn là bài toán cho chú Mèo chuyển động tự do, vô hạn
trên màn hình, nếu gặp cạnh sân khấu thì quay lại (xem
ví dụ mục 1). Tuy nhiên bổ sung thêm yêu cầu sau:
Trên sân khấu vẽ thêm 1 vạch đứng màu đỏ.
Mèo chỉ được phép chuyển động tự do ở vùng bên trái
vạch đỏ. Nếu chạm vạch đỏ sẽ lập tức quay sáng trái với góc nghiêng 45 độ.
Em hãy cùng thực hiện chương trình này theo các bước sau.
1) Chỉnh sửa sân khấu, bổ sung thêm 1 đường thẳng đứng màu đỏ.
Em hãy nháy chọn biểu tượng sân khấu, nháy tiếp nút Backdrops, khi đó màn hình chỉnh
sửa hình ảnh sân khấu như hình dưới đây. Em hãy thực hiện tiếp theo sơ đồ dưới đây. 2. Lựa chọn công cụ kẻ đoạn thẳng 5. Kẻ 1 đoạn thẳng đứng tại đây. 1. Lựa chọn kiểu hình ảnh Vector Mode 3. Lựa chọn 4. Lựa chọn độ màu đỏ cho dày của đường công cụ vẽ kẻ
65 | T ự h ọ c l ậ p t r ì n h S c r a t c h
2) Bây giờ em thiết kế lại chương trình đã có trong mục 1.
3) Trong vòng lặp này, em cần đưa vào thêm 1 số lệnh để điều khiển nhân vật nếu va chạm
với đoạn thẳng đứng màu đỏ thì phải quay lại. Đoạn chương trình này có dạng sau: Nếu thì
Quay lại theo hướng 45 độ
Em kéo thả ra màn hình lệnh của nhân vật các lệnh sau, sau đó điền thông số và kéo thả chúng vào đúng vị trí.
Để thiết lập màu đúng của lệnh - biểu thức logic này em làm như sau:
- Nháy chuột lên vị trí ô vuông chọn màu của lệnh.
- Di chuyển chuột ra sân khấu và nháy lên đoạn thẳng
đứng. Màu của đoạn thẳng này sẽ tự động điền vào biểu thức của lệnh này.
4) Kết quả em thu được đoạn chương trình sau:
5) Chạy chương trình và kiểm tra kết quả.
Câu hi và bài tp
1. Em hãy mô tả kết quả của đoạn chương trình sau:
66 | T ự h ọ c l ậ p t r ì n h S c r a t c h
2. Mở rộng đoạn chương trình trong mục 4, cho cậu bé Hip-hop chuyển động vô hạn từ trái
qua phải, gặp cạnh sân khấu thì quay lại và cứ như vậy tiếp tục.
3. Các biểu thức logic sau là đúng hay sai? A. 4 < 5. B. 5 + 7 - 2 > 10. C. 23 = 32 D. √2 > 1.4
4. Em hãy chạy đoạn chương trình sau và giải thích kết quả chương trình.
M rng
1. Thiết kế 1 trò chơi đơn giản
Em hãy thiết kế 1 trò chơi đơn giản "Thả bóng" theo các yêu cầu sau:
Nhân vật: quả bóng và thanh ngang.
Quả bóng sẽ rơi tự do từ trên trần xuống. Nếu gặp cạnh
sân khấu sẽ tự động bật lại và chuyển động liên tục.
Nếu quả bóng chạm thanh ngang, nó sẽ bật lên 1 góc 15 độ
và chuyển động ngược lên trên.
Người dùng điều khiển dùng các phím phải, trái để điều
khiển quả bóng sao cho bóng không bị rơi xuống phía dưới. Gợi ý cách thực hiện.
Bước 1. Thiết lập 2 nhân vật BóngThanh ngang trên sân khấu. Các nhân vật này có thể
chọn từ kho các hình ảnh có sẵn của phần mềm.
67 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Bước 2. Thiết lập chương trình điều khiển thanh ngang bằng các lệnh sự kiện khi bấm phím phải, trái.
Bước 3. Thiết lập chương trình cho Bóng. Có thể hình dung công việc của Bóng như sau:
Quay hướng xuống dưới. Lặp vô hạn lần
dịch chuyển 10 bước (về phía trước)
Nếu tiếp xúc với màu đỏ thì
quay hướng lên trên 15 độ
Nếu gặp cạnh sân khấu, quay lại.
Đoạn chương trình có dạng sau.
68 | T ự h ọ c l ậ p t r ì n h S c r a t c h
2. Lm tốt lên trò chơi y
Em hãy làm tốt trò chơi này bằng cách bổ sung yêu cầu sau:
Nếu để Bóng rơi xuống phía dưới thì dừng trò chơi.
Chú ý sử dụng các gợi ý sau:
- Có thể vẽ thêm 1 đường ngang phía dưới để kiểm soát khi Bóng rơi xuống.
- Sử dụng lệnh Stop All từ nhóm lệnh Điều khiển để dừng chương trình.
69 | T ự h ọ c l ậ p t r ì n h S c r a t c h Bài 7. Vẽ hình 2 Mục đích
Học xong bài này, bạn có thể:
- Thực hiện vẽ hình phức tạp hơn: hình tròn, đa giác đều, xoắn ốc, hình nghệ thuật.
- Kết hợp màu sắc để vẽ hình nghệ thuật .
- Lệnh lặp cố định, lặp có điều khiển. Bắt đầu
1. Quan sát các hình đa giác đều sau.
- Em có nhận xét gì về số đo các góc trong và ngoài của các đa giác này, nếu liên hệ với số cạnh của đa giác?
2. Em có thể tổng quát cách tính góc α với trường hợp đa giác đều n cạnh như hình dưới đây?
3. Em hãy trình bày theo cách riêng của em cách vẽ hình đa giác đều bằng Scratch.
70 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Ni dung bài hc
1. Thc hành v 1 s hình đa giác đều
Dựa trên quan sát trong phần mở đầu, em hãy viết các chương trình đơn giản sau để vẽ các
hình tam giác, tứ giác, ngũ giác và lục giác đều.
2. Tìm qui lut ca cách v đa giác đều
Nếu quan sát kỹ hơn các chương trình trên chúng ta sẽ tìm ra được quy luật (hay còn gọi là
thuật toán) của các chương trình này. Số cạnh đa giác Chiều dài cạnh đa giác
Giá trị này = 360 / số cạnh đa giác
Chú ý: nếu số cạnh lớn thì có thể điều chỉnh độ dài cạnh để hình vẽ không vượt quá giới hạn sân khấu.
Em hãy áp dụng qui luật trên ể
đ vẽ các đa giác đều 9 và 11 cạnh, sử dụng nhân vật là bút chì.
Để thực hiện phép chia 360 / em hãy dùng lện (toán tử) phép chia từ
nhóm lệnh Tính toán (Operators) màu xanh lá cây. Ví dụ nếu vẽ đa giác đều 9 cạnh chúng
ta nhập các giá trị 360 và 9 vào toán tử này như sau: .
Với hình 9 cạnh, độ dài cạnh 100, em phải điều chỉnh vị trí ban đầu của bút chì sao cho hình nằm trong khung màn hình.
71 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Với hình 11 cạnh, bắt buộc phải làm ngắn lại độ dài cạnh đa giác.
Dựa trên qui luật này, em hãy viết chương trình vẽ các hình đa giác đều có 7, 8, 10 cạnh. 3. V hình tròn
Để vẽ được hình tròn chúng ta hình dung như 1 đa giác đều n cạnh nhưng với n khá lớn. Em
hãy thực hiện chương trình vẽ hình tròn theo cách vẽ 1 đa giác đều với số cạnh lớn.
Trong chương trình này, em
dùng thuật toán đối với vẽ
đa giác đều với số cạnh = 360, độ dài cạnh = 2. Chú ý:
1. Em có thể không cần thiết lập số cạnh lớn như vậy. Có thể chỉ cần vẽ với số cạnh nhỏ
hơn, ví dụ 180, hoặc thậm chí 90, vẫn thu được hình tròn.
2. Muốn vẽ vòng tròn nhỏ em có thể chọn độ dành cạnh là các số bé hơn 1, ví dụ 0.5.
Luyn tp 1: hãy v hình sau
72 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Gợi ý: Trước khi thực hiện đoạn chương trình vẽ vòng tròn, cần vẽ 1 đoạn thẳng từ vị trí
hiện thời của nhân vật đến vị trí bẳt dầu đường tròn. Thực hiện công việc này bằng lệnh
thông thường. Ví dụ có thể sử dụng đoạn chương trình sau. Lệnh này sẽ vẽ đoạn thẳng nối với đ ờ ư ng tròn
được vẽ trong lệnh lặp
Luyn tp 2: v hình sau.
Gợi ý: tương tự trên, trước khi bắt đầu vẽ hình tròn, cho nhân vật quay 90 độ theo chiều kim
đồng hồ. Ví dụ chương trình sau.
Lệnh này sẽ làm cho bút vẽ quay
xuống dưới để vẽ được vòng tròn như trong hình vẽ yêu cầu.
Luyn tp 3: v các hình sau.
Cách thực hiện tương tự trên . Hình thứ nhất Hình thứ 2
4. V hình phc tp vi vòng lp lng nhau
Chúng ta đã được làm quen và hiểu ý nghĩa của các lệnh lặp (lệnh repeat, forever). Các
lệnh này cho phép thể hiện ngắn gọn, dễ hiểu hơn khi chương trình có các lệnh hoặc đoạn
73 | T ự h ọ c l ậ p t r ì n h S c r a t c h
lệnh lặp lại. Trong Scratch có 2 lệnh lặp: lặp với số lần cố định repeat và lặp vô hạn lần forever.
Trong chương trình các vòng lặp có thể được lồng vào nhau, tức là vòng lặp này nằm trong
1 vòng lặp khác. Có rất nhiều ví dụ thực tế mô tả các vòng lặp lồng nhau như vậy.
Ví dụ: khi xét các công việc hàng ngày em phải làm trong 1 tuần lễ (tứ thứ 2 đến thứ 7), có
công việc đi học. Khi đó mô tả các công việc này trong 1 tuần, chúng ta có 1 vòng lặp đầu tiên:
Lặp lại 6 ngày trong tuần Sáng dậy sớm, ăn sáng Đi học
Bây giờ nếu xét trong cả 1 học kỳ bao gồm 17 tuần, mỗi tuần đều lặp lại lịch học trên,
chúng ta sẽ có mô hình vòng lặp lồng nhau:
Lặp lại 17 tuần của học kỳ
Lặp lại 6 ngày trong tuần Sáng dậy sớm, ăn sáng Đi học
Các vòng lặp có thể lồng nhau theo nhiều mức và kiểu khác nhau. Ví dụ trường hợp vòng
lặp 1 mức ta có các trường hợp sau: 2 vòng lặp repeat lồng Vòng lặp repeat nằm Vòng lặp vô hạn forever nhau trong vòng lặp forever
nằm trong vòng lặp repeat
Bay giờ em hãy thiết lập chương trình thể hiện hình vẽ dưới đây.
Phân tích bài toán này chúng ta thấy:
Vòng lặp ngoài cùng: thực hiện 4 lần việc vẽ 1 đoạn thẳng xuất phát từ tâm điểm của hình.
Vòng lặp bên trong: vẽ hình tròn.
74 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Ở vòng lặp bên ngoài chúng ta Ở vòng lặp trong là đoạn lệnh vẽ có đoạn lệnh:
đường tròn mà chúng ta đã biết:
Ghép 2 vòng lặp này lồng vào nhau chúng ta thu được.
Vòng lặp ngoài, thực hiện 4 lần việc vẽ 1
đoạn thẳng từ vị trí tâm (0,0) độ dài 100.
Vòng lặp trong vẽ đường tròn với 90 lần lặp.
Sau khi vẽ vòng tròn, quay hướng bút vẽ 90
độ sang trái để thực hiện vòng lặp ngoài tiếp theo.
Chú ý trước khi thực hiện vòng lặp đầu tiên em cần đưa bút vẽ về vị trí ban ầ đ u là tâm của hình:
Kết quả chương trình như sau:
75 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Câu hi và bài tp
1. Em hãy viết chương trình vẽ các hình sau:
2. Viết chương trình vẽ các hình sau:
3. Viết lại các chương trình trên nhưng thể hiện mỗi nhánh 1 màu khác nhau.
M rng
Thiết kế chương trình Bút v t do như sau:
Trên màn hình khi di chuyển chuột, bút vẽ luôn đi theo con trỏ chuột.
- Bấm phím Space: bắt đầu chế độ vẽ.
- Nháy chuột: kết thúc chế độ vẽ.
- Bấm phím x: chuyển màu vẽ là Xanh.
- Bấm phím d: chuyển màu vẽ là Đỏ.
76 | T ự h ọ c l ậ p t r ì n h S c r a t c h Bài 8. Âm thanh 2
Mc đích
Học xong bài này, bạn sẽ biết:
- Kết nối âm thanh với nhân vật. Lập trình cho nhân vật nói và thể hiện lời nói bằng chữ và âm thanh.
- Điều khiển các lệnh tạo âm thanh, đánh trống và chơi nhạc trên nền sân khấu.
- Điều khiển nhân vật nhảy múa theo nhạc nền. Bắt đầu
Em hãy quan sát bản nhạc sau. Em có hiểu cách ghi các nốt nhạc, cao độ, trường độ, nhịp,
phách của bản nhạc này không?
Trong bài học này chúng ta sẽ cùng nhau tìm hiểu các lệnh để có thể đánh được đúng các
nốt của bản nhạc này.
Ni dung bài hc
1. Kết ni âm thanh vi nhân vt, nn sân khu. ng dng k chuyn
Như chúng ta đã biết, mỗi nhân vật trong Scratch có thể có nhiều trang phục và âm thanh đi
kèm, số lượng các âm thanh hay trang phục này là không hạn chế.
Tương tự, sân khấu cũng có thể có nhiều hình ảnh nền sân khấu (backdrop) và âm thanh
kèm theo với số lượng không hạn chế.
Các lệnh làm việc với trang phục, âm thanh, nền sân khấu trong Scratch bao gồm: Ý nghĩa lệnh Nhân vt Sân khu Chuyển trang phục / nền sân khấu tương ứng.
77 | T ự h ọ c l ậ p t r ì n h S c r a t c h Ý nghĩa lệnh Nhân vt Sân khu Chuyển sang trang phục / nền sân khấu tiếp theo trong danh sách. Bật âm thanh tương ứng và thực hiện ngay các lệnh tiếp theo Bật âm thanh tương ứng và chờ xong mới thực hiện các lệnh tiếp theo
Chú ý quan trọng: Dãy các trang phục, nền sân khấu hay âm thanh còn có thể xác định bằng
số thứ tự hoặc tên của chúng. Ví dụ nếu chúng ta sử dụng các biến nhớ để lưu số thứ tự hoặc
để lưu tên của các trang phục, nền sân khấu hay âm thanh này thì các lệnh
trên có thể sử dụng các biến nhớ trên để khai thác.
Chuyển nền sân khấu sang nền có số thứ tự trong danh sách là stt.
Chuyển nền sân khấu sang nền có tên trong danh sách là name.
Chuyển trang phục của nhân vật sang trang phục có số thứ
tự trong danh sách là stt.
Chuyển trang phục của nhân vật sang nền có tên trong danh sách là name.
Bật âm thanh có số thứ tự trong danh sách là stt.
Bật âm thanh có tên trong danh sách là name.
Thi
ết lp ng dng k chuyn
Chúng ta sẽ thiết lập một ứng dụng đơn giản có kết nối âm thanh với hình ảnh. Giả sử muốn
thực hiện một bài kể chuyện bằng giọng nói theo tranh, ví dụ, bài thơ "hỏi mẹ". Em hãy
thiết kế mô hình chương trình bao gồm 4 hình ảnh nền sân khấu và 4 tệp âm thanh kể
chuyện tương ứng. Chú ý mỗi tệp âm thanh sẽ là giọng kể mô ả t hình ảnh tương ứng.
78 | T ự h ọ c l ậ p t r ì n h S c r a t c h Dãy âm thanh tương ứng với dãy hình ảnh nền sâu khấu. Dãy hình nền sân khấu chính của câu chuyện muốn đưa vào ứng dụng này.
Đoạn chương trình chính được xây dựng trên của sổ lệnh của sân khấu. Cần tạo thêm biến
nhớ stt để lưu số thứ tự của các tệp âm thanh. Chương trình bao gồm 1 vòng lặp (số vòng
lặp = số lượng hình ảnh nền). Tại mỗi bước, cần thực hiện lệnh
dùng để bật nghe âm thanh cho đến khi xong thì tự động tăng stt lên 1 và chuyển sang nền sâu khấu tiếp theo.
Thiết lập giá trị ban đầu cho stt = 1 Vòng lặp chính của
chương trình. Số lần lặp =
số lượng hình nền = số
lượng âm thanh tương ứng.
2. Trng và nhp trng
Chắc các em đã được làm quen với các bộ t ố
r ng trong dàn nhạc và vai trò của trống giữ
nhịp trong các biểu diễn âm nhạc. Trong hoạt động này chúng ta sẽ làm quen với các lệnh trống của Scratch.
79 | T ự h ọ c l ậ p t r ì n h S c r a t c h Bộ các công cụ trống hiện đại.
Lệnh gõ trống play drum for beat.
Lệnh này có tác dụng đánh 1 công cụ gõ (công cụ ghi trong tham số đầu tiên) và kéo dài
trong khoảng thời gian tính theo nhịp (beat) trống, thời gian này ghi trong tham số thứ 2 của lệnh. Chọn bộ gõ trống tại đây. Chọn nhịp trống tại đây. Ví dụ: lệnh
sẽ đánh 1 lần trống nền (trống nền ) và đợi
1/2 nhịp trống tiếp theo. Ở đây nhịp trống được đo bởi giá trị tempo = số nhịp trống trong 1
phút. Ví dụ nếu temp = 60 thì nhịp trống sẽ là theo từng giây, mỗi giây 1 lần đánh trống.
Lệnh thiết lập nhịp trống là set tempo to. Số lượng nhịp trống trong 1 giây (beat per i )
Chú ý: Nhịp trống (beat) còn có ý nghĩa trong việc thể hiện trường độ nốt nhạc sẽ được học trong phần sau.
Em hãy soạn và chạy thử đoạn chương trình trống sau đây.
Chương trình bao gồm 10 vòng lặp,
mỗi vòng lặp sẽ bao gồm 2 nhịp trống.
Nhịp 1: sẽ lần lượt đánh trống chính
và thanh ngang 1/4 nhịp, xen giữa nghỉ 1/4 nhịp.
Nhịp 2: sẽ lần lượt đánh mặt mũ trên
và trống gỗ 1/4 nhịp, xen giữa nghỉ
80 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Bảng sau cho chúng ta nhận dạng thêm 1 số hình ảnh công cụ trong giàn trống. Snare Tambourine Bongo Drum Bass Drum Hand Clap Conga Side Stick Claves Cabasa Crash Wood Block Guiro Cymbal Open Hi- Cowbell Vibraslap Hat Closed Hi- Triangle Open Cuica Hat
3. Em bé nhy và múa theo nhp trng.
Em hãy thiết lập 1 chương trình đơn giản như thể hiện trong hình sau.
81 | T ự h ọ c l ậ p t r ì n h S c r a t c h Chương trình sử dụng các hình ảnh trang phục khác nhau
của nhân vật để mô tả hoạt động nhày múa của nhân vật
4. Đánh nốt nhc
Trong hoạt động này em sẽ được học cách Scratch điều khiển các công cụ chơi nhạc. Các
em chú ý đến các yếu tố sau: 1. Công cụ chơi nhạc. 2. Độ cao nốt nhạc.
3. Trường độ nốt nhạc. Độ cao của nốt nhạc
Lệnh phát nốt nhạc chính trong Scratch là play note for beats. Lệnh này có tác dụng phát 1
nốt nhạc đúng cao độ và trường độ được ghi ngay trong tham số của lệnh. Trường độ được
tính theo nhịp trống (beat). Cao độ nốt nhạc Trường độ nốt nhạc
Khi lựa chọn cao độ nốt nhạc, em sẽ thấy hiện hình ảnh mô tả phím đàn Piano như hình
dưới đây. Mỗi nốt nhạc có 1 ký tự chữ cái thể hiện và giá trị cao độ của nót nhạc.
Khi nhấn chuột vào vị trí muốn nhập cao độ nột
nhạc sẽ xuất hiện hình ảnh bên thể hiện phím
đàn cho người dùng dễ quan sát và nhập. Bên
cạnh giá trị số còn có ký hiệu các nốt nhạc.
82 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Bàng ký hiệu các nốt nhạc: Đô Rê Mi Pha Son La Si Đô C D E F G A B C
Ví dụ các giá trị nốt chính của bản nhạc được mô tả trong hình sau: Note 48 50 52 53 55 57 59 Note 60 62 64 65 67 69 71
Trường độ của nốt nhạc
Trường độ chỉ ra độ dài theo thời gian của nốt nhạc. Trong Scratch, đơn vị đo trường độ là
beat (nhịp trống) mà chúng ta đã biết. Giá trị trường độ được thể hiện trong bảng sau:
Ký hiu nt nhc Trường độ 4 2 1 0.5 0.25 0.125 0.0625 (beat)
Với lệnh nghỉ (khoảng lặng của bản nhạc) chúng ta sử dụng lệnh sau: Trường ộ đ nghỉ
Bảng các ký hiêuj khoảng lặng trong khuôn nhạc như sau:
Ký hiu ngh trên nt nhc beat 4 2 1 0.5 0.25
83 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Bây giờ nhìn vào 1 bản nhạc đơn giản, chúng ta có thể viết đoạn chương trình mô phỏng bản nhạc đó.
Em quan sát bản nhạc và thực hiện các lệnh Scratch tương ứng trong các ô trống của bảng sau:
Bây giờ chúng ta sẽ cùng thiết lập các đoạn nhạc dài hơn, dựa trên các bài hát quen thuộc mà em đã biết.
Ví d 1: một đoạn nhạc bài hát Đi học (nhạc Bùi Đình Thảo, thơ Minh Chính). Đoạn nhạc này có 6 khuông nhịp. \
Em hãy điền tiếp các lệnh Scratch cho các khuông nhịp 3, 4, 5. Nhp 1 Nhp 2 Nhp 2
84 | T ự h ọ c l ậ p t r ì n h S c r a t c h Nhp 4 Nhp 5 Nhp 6
Ví d
2: một đoạn nhạc bài Người Hà Ni (nhạc: Nguyễn Đình Thi).
Đoạn đầu của bài hát được thiết ậ
l p như hình trên. Em hãy viết t ế
i p đoạn sau của bản nhạc này.
Lựa chọn công cụ chơi nhạc.
Lệnh thiết lập công cụ chơi nhạc trong Scratch là set instrument to. Nhạc cụ lựa chọn tại đây.
Bảng sau mô tả bằng hình các công cụ chơi nhạc hỗ trợ trong Scratch. Piamo Bass Saxophone Electric Pizzicato Flute piano Organ Cello Wooden Flute Guitar Trombone Bassoon Electric Clarinet Choir guitar
85 | T ự h ọ c l ậ p t r ì n h S c r a t c h
5. Mt s bài hát, bn nhc hoàn chnh
Em hãy cùng thực hiện tạo chương trình chơi các bản nhạc hoàn chỉnh sau.
Bài 1. Chúc sinh nhật. Happy birthday.
Bài 2. Cả nhà thương nhau. Nhạc và lời: Phan Văn Minh.
86 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Câu hi và bài tp
1. Em hãy tạo khuôn nhạc cho một bài hát hoàn chỉnh:
2. Em hãy tạo khuôn nhạc cho một bài hát hoàn chỉnh: Đếm ngón tay.
87 | T ự h ọ c l ậ p t r ì n h S c r a t c h
M rng
Thiết lập chương trình đơn giản sau. Trên màn hình là 15 nút
tròn dùng để mô tả các
nốt nhạc. Trên mỗi nút có
chữ cái ký hiệu tên nốt và
giá trị tương ứng của lệnh
thể hiện nốt nhạc này. Nháy chuột lên các nút
tròn này sẽ phát âm thanh
chính là nốt nhạc tương ứng.
Gợi ý: thiết lập 15 nhân vật có hình các nút tròn trên. Với mỗi nhân vật - nút tròn sử dụng
lệnh bắt sự kiện nháy chuột sau. Đoạn chương trình sau dành cho nút đỏ đầu tiên (C, 48).
88 | T ự h ọ c l ậ p t r ì n h S c r a t c h
CHƯƠNG 3: TÌM HIỂU SÂU HƠN SCRATCH
89 | T ự h ọ c l ậ p t r ì n h S c r a t c h Bài 9. H i tho ộ i ạ Mục đích
- Thực hiện giao tiếp hội thoại người - máy đơn giản.
- Khái niệm biến nhớ, sử dụng biến nhớ trong cách giải quyết vấn đề. Bắt đầu
1. Em hiểu thế nào là hội thoại người - máy, cho 1 vài ví dụ.
2. Em thực hiện đoạn chương trình trình diễn hội thoại đơn giản sau giữa 2 bạn Hoa và Lan. Hoa: Chào Lan.
Lan: Chào bạn Hoa, lâu lắm mới gặp.
Hoa: Bạn bây giờ học trường nào?
Lan: Tôi học trường THCS Bế Văn Đàn. Bạn khỏe không?
Hoa: Cám ơn bạn, tôi vẫn khỏe.
Ví dụ có thể viết chương trình sau mô tả đoạn hội thoại trên. Hoa Lan
Theo em, chương trình trên có phải là hội thoại người - máy hay không? Vì sao?
3. Đoạn văn sau mô tả 1 hội thoại người - máy tính.
Máy tính: Bạn hãy nhập 1 số tự nhiên.
Người: thực hiện động tác nhập 1 số từ bàn phím, ví dụ nhập số 12.
Máy tính: Bạn hãy nhập tiếp 1 số tự nhiên khác.
Người: thực hiện động tác nhập 1 số từ bàn phím, ví dụ nhập số 18.
Máy tính (sau 1 giây suy nghĩ): Bạn đã nhập 2 số tự nhiên 12,
18. Ước số chung lớn nhất 2 số này là 6.
Em có nhận xét gì về cuộc hội thoại trên.
90 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Ni dung bài hc
1. Bắt đầu 1 chương trình hội thoại đơn giản
Em hãy thiết lập chương trình để thực hiện hoạt động hội thoại sau.
Nhân vật chính là 1 thầy giáo, học sinh là người sử dụng máy tính.
Thầy giáo: Chào học sinh, em tên là gì?
Học sinh nhập từ bàn phím: Hòa Anh.
Thầy giáo: Chào Hòa Anh, rất vui được làm quen với em. Sau 2 giây.
Thầy giáo: Bây giờ em hãy nhập từ bàn phím 1 số tự nhiên.
Học sinh nhập từ bàn phím: 15
Thầy giáo: Tốt lắm, em đã nhập số 15.
Trong ví dụ trên, chúng ta được làm quen với 1 dạng hội thoại thực sự giữa máy tính và
người sử dụng. Máy tính đưa ra yêu cầu; học sinh trả lời thông qua bàn phím; máy tính nhận
kết quả và đưa ra thông điệp tiếp theo tùy thuộc vào kết quả đã nhận được.
Để mô tả quá trình hội thoại trên chúng ta sử dụng lệnh sau từ nhóm lệnh Cảm biến (Sensing). Lệnh
(ask and wait) sẽ cho phép nhân vật hiện câu hỏi trên
màn hình và chờ người dùng nhập câu trả lời từ bàn phím vào 1 dòng nhập liệu. Câu trả lời
này sẽ được lưu trong "biểu thức" hay "lệnh" . Giá trị này sau đó có thể
được sử dụng lại vào các công việc khác. Chúng ta cùng xét ví dụ cụ thể của lệnh này.
Kết quả của lệnh thể hiện ở màn hình bên phải
Vị trí nhập trả lời của lệnh từ bàn
phím, kết quả lưu vào "biến nhớ"
Giá trị answer được sử dụng để giáo viên
tiếp tục hội thoại với học sinh dưới dạng đầy
đủ như hình trên hoặc dạng rút gọn như hình
Trong lệnh trên chúng ta đã sử dụng lệnh
trong nhóm lệnh Tính toán
dùng để kết nối 2 giá trị hoặc 2 cụm từ.
Chương trình đầy đủ của hoạt ộ
đ ng hội thoại này như sau:
91 | T ự h ọ c l ậ p t r ì n h S c r a t c h
2. Biến nh là gì?
Trong hoạt động 1, chúng ta đã làm quen với lệnh hay "biến nhớ" answer, đây là 1 kỹ thuật
được sử dụng thường xuyên trong Tin học, trong các môi trường lập trình. Cụm từ answer
luôn được hiểu với ý nghĩa là 1 vùng trong bộ nhớ máy tính để lưu trữ giá trị mà người sử
dụng nhập từ bàn phím thông qua lệnh ask and wait. Hiểu đơn giản biến nhớ được tạo ra để
lưu trữ dữ liệu. Khi được tạo ra rồi thì chúng ta có thể thực hiện các phép tính với biến nhớ
tương tự như với dữ liệu lưu trong biến nhớ này.
Em hãy thực hiện các chương trình đơn giản sau, qua đó hiểu được ý nghĩa của biến nhớ trong Scratch. Chương trình 1.
Thầy giáo yêu cầu học sinh nhập từ bàn phím 2 số tự nhiên m, n, sau đó thông báo 2 số này và tổng của chúng.
Bước 1. Tạo 1 chương trình mới, bổ sung thêm nhân vật Thầy giáo, khởi tạo 2 biến nhớ mới đặt tên là m, n. Nháy nút Make a
Variable này để khởi tạo 1 biến nhớ mới
Để tạo 1 biến nhớ mới, em vào nhóm lệnh Dữ liệu (Data) và nháy nút Make a Variable. Cửa
sổ tạo biến nhớ có dạng sau, em nhập m tại ô Variable name, chọn For all sprites và nháy OK.
92 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Đặt tên biến nhớ ở đây
Chọn kiểu biến nhớ chung hay
chỉ riêng cho nhân vật hiện thời.
Tương tự em tạo thêm biến nhớ có tên n. Hình ảnh sau trên khung mẫu lệnh của nhóm Dữ
liệu (Data) sẽ xuất hiện các lệnh làm việc với biến nhớ.
Danh sách các biến nhớ đã khởi tạo hiện ở đây.
Các lệnh của nhóm lệnh làm việc với biến nhớ.
Có hai lệnh làm việc quan trọng với biến nhớ là :
Lệnh thiết lập, gán 1 giá trị cụ thể cho biến nhớ.
Lệnh thay đổi giá trị của biến nhớ (tăng lên hoặc giảm đi) theo 1 giá trị cụ thể.
Chú ý: Nháy chuột phải lên 1 biến nhớ sẽ xuất hiện 1 bảng chọn nhỏ để thực hiện thêm các
lệnh bổ sung cho biến nhớ này.
Các lệnh bổ sung với biến nhớ hiện thời:
rename variable : đổi tên biến nhớ.
delete variable: xóa biến nhớ.
Bước 2. Thực hiện hội thoại giữa thầy giáo và học sinh (người dùng máy tính).
93 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Gán giá trị của answer vào biến nhớ m.
Gán giá trị của answer vào biến nhớ n.
Bước 3. Thông báo tổng 2 số m, n.
Để thể hiện thông báo này chúng ta cần hiển thị 1 thông tin chữ và giá trị tổng m + n. Dùng lệnh / biểu thức
(từ nhóm lệnh Tính toán) để thực hiện yêu cầu này. Lệnh hay toán tử
dùng để tính giá trị m + n.
Kết quả của thông báo này như sau: Chương trình 2.
Thay đổi chương trình trên, yêu cầu học sinh nhập 1 số tự nhiên với yêu cầu số này phải >
100. Giáo viên sẽ liên tục thông báo cho học sinh cần nhập đúng và yêu cầu nhập lại nếu
học sinh nhập không đúng số theo yêu cầu.
Để thực hiện chương trình này chúng ta sẽ sử dụng một lệnh lặp mới, lệnh lặp có điều kiện
repeat until để kiểm tra học sinh có nhập đúng yêu cầu hay không. Lệnh lặp này không chỉ
ra trước số lần lặp, lệnh sẽ thực hiện việc lặp cho đến khi 1 điều kiện logic được thực hiện.
Biểu thức logic là điều kiện của lệnh lặp:
nhóm lệnh này sẽ được lặp lại liên tục cho
đến khi biểu thức này có giá trị đúng.
Với yêu cầu cụ thể của chương trình 2, điều kiện cần kiểm tra là giá trị số mà học sinh nhập
cần > 100. Nếu điều kiện này đúng thì việc lặp sẽ dừng lại. Chúng ta sẽ sử dụng lệnh, biểu thức logic so sánh
từ nhóm lệnh tính toán, cụ thể biểu thức cần đưa vào vị trí kiểm tra của lệnh lặp là .
Kết quả chương trình 2 được xây dựng như sau:
94 | T ự h ọ c l ậ p t r ì n h S c r a t c h
3. Lnh, biu thc, hàm có giá tr dùng như biến nh
Trong Scratch có rất nhiều lệnh có ý nghĩa của 1 biểu thứcm hàm số và được dùng tương tự
như biến nhớ answer mà em đã biết.
Em cần chú ý đến hình dạng các lệnh của Scratch để phân biệt. Lệnh có 2 đầu thẳng
Đây là các lệnh bình thường, không góc
có giá trị trả lại như 1 biểu thức. Lệnh có 2 đầu nhọn
Đây là các lệnh trả lại giá trị logic,
tức là Đúng hoặc Sai (True or False). Lệnh có 2 đầu tròn
Đây là các lệnh trả lại giá trị số hoặc chữ.
Trong các loại lệnh trên, 2 loại sau có thể sử dụng như 1 biến nhớ, có thể đưa vào trong các
điều kiện, biểu thức tính toán của các lệnh khác.
Các biểu thức, lệnh hay biến nhớ có giá trị này có thể chèn vào các vị trí trống trong các
lệnh khác nhau của Scratch. Hình sau mô tả qui định của các giá trị có thể chèn.
Tại các vị trí tròn chỉ cho phép nhập
hoặc chèn giá trị số, nguyên hoặc thập hâ
Tại các vị trí vuông cho phép nhập hoặc
chèn giá trị số, chữ hoặc logic.
Sau đây là 1 vài lệnh có ý nghĩa biểu thức và có thể sử dụng như các biến nhớ trong Scratch. Nhóm Chuyn
Trả lại giá trị là tọa độ X của động (Motion)
nhân vật tại thời điểm hiện thời . Nhóm Chuyn
Trả lại giá trị là tọa độ Y của động (Motion)
nhân vật tại thời điểm hiện thời .
Nhóm Cm biến Trả lại trạng thái logic Đúng / Sai, (Sensing)
đúng nếu nhân vật va chạm với 1
nhân vật khác hoặc cạnh sân khấu.
Nhóm Cm biến Trả lại trạng thái logic Đúng / Sai, (Sensing)
đúng nếu nhân vật tiếp xúc với
màu sắc được chọn trong lệnh.
Nhóm Cm biến Trả lại trạng thái logic Đúng / Sai, (Sensing)
đúng nếu người dùng nhấn phím tương ứng.
Nhóm Tính toán Trả lại giá trị số ngẫu nhiên nằm (Operators)
giữa 2 giá trị số được ghi trên thanh lệnh.
95 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Nhóm Cm biến Trả lại giá trị thời gian hiện thời (Sensing)
(giây, phút, giờ, năm, ….). Các
thông số có thể lựa chọn. - year: năm (2016) - month: tháng (1 12)
- date: ngày của tháng (1 31)
- day of week: ngày của tuần (1 7)
- hour: giờ hiện thời (0 23)
- minute: phút hiện thời (0 59)
- second: giây hiện thời (0 59)
Nhóm Tính toán Trả lại giá trị dãy ký tự là ghép (Operators)
nối của 2 biểu thức trong ô vuông của lệnh.
4. Mt s ví d s dng biến nh và hàm s
4.1. Để điều khiển nhân vật chính x ấ
u t hiện ngẫu nhiên trên màn hình, em có thể sử dụng đoạn lệnh sau:
4.2. Chúng ta muốn thể hiện thời gian chạy online trên màn hình, ví dụ trong hình sau .
thì cần thực hiện lệnh sau:
4.3. Điều kiện kiểm tra xem nhân vật đã chạm đáy màn hình chưa.
4.4. Điều kiện kiểm tra xem nhân vật đã chạm ỉ
đ nh trên màn hình hay chưa.
5. To nút cho phép nhập điều chnh biến nh trên màn hình
96 |
T ự h ọ c l ậ p t r ì n h S c r a t c h
Hoạt động này cho phép thiết lập giao diện cho phép người sử dụng nhập hoặc điều chỉnh
dữ liệu ngay trên màn hình trong quá trình chạy chương trình mà không cần nhập bằng lệnh ask and wait.
Chúng ta cùng thực hiện bài toán sau.
Chương trình cho phép người dùng nhập điều chỉnh 2 giá trị số
m, n ngay trên màn hình và sau khi người dùng nháy chuột lên
nhân vật chính thì chương trình thông báo tổng của hai số này.
Để cho biến nhớ luôn hiển thị giá trị trên màn hình em cần nháy chọn vào ô hiển t ị h bên
cạnh biểu tượng biến nhớ
. Làm tương tự như vậy với biến nhớ n. Các biến nhớ hiện
trên màn hình sẽ có dạng như sau:
Bây giờ chúng ta hãy thực hiện thao tác cho phép người dùng có thể thay đổi trực tiếp giá trị
của các biến nhớ này trên màn hình. Với mỗi biến nhớ thực hiện 2 thao tác sau:
- Nháy chuột phải lên vị trí biến nhớ trên sân khấu và nháy chọn lệnh slide . r
- Nháy chuột phải lên vị trí biến nhớ 1 lần nữa và chọn lệnh set slider min and max để thiết
lập vùng dữ liệu muốn điều chỉnh trực tiếp giá trị của biến nhớ. Xuất hiện hộp hội thoại nhỏ
sau, cần nhập 2 giá trị MinMax.
Bây giờ em có thể thiết lập các lệnh để thực hiện theo yêu cầu của chương trình.
97 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Câu hi và bài tp
1. Các lệnh sau đây thực hiện những công việc gì? A. B. C.
2. Em hãy viết các lệnh hoặc đoạn chương trình mô tả các yêu cầu sau.
A. Mô tả thời gian hiện thời bằng tiếng Việt, ví dụ:
Bây giờ là 15 giờ 20 phút 14 giây.
B. Cho nhân vật chuyển động ngẫu nhiên trên sân khấu, nếu gặp cạnh sân khấu thì quay lại.
C. Đếm ngược thời gian: biến nhớ Time được gán ban đầu giá trị 10 và sẽ hiển thị đếm
ngược trên màn hình về 0.
M rng
1. Hãy thiết kế 1 trò chơi đơn giản Mèo và Bóng sau:
Trên màn hình có con Mèo và quả Bóng.
98 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Thời gian cho mỗi cuộc chơi là 15 giây. Trên
màn hình biến nhớ Time sẽ đếm ngược từ 15 về 0.
Khi bắt đầu chương trình, quả bóng sẽ dịch
chuyển nhanh trên sân khấu một cách ngẫu nhiên.
Nhiệm vụ của người chơi là nháy chuột nhanh
lên quả bóng, càng nhiều lần càng tốt.
Khi thời gian lùi về 0, trò chơi dừng lại. Mèo con
thông báo "Game Over" và sau đó thông báo số
lần bạn nháy chuột chính xác lên quả bóng.
Thiết lập 2 nhân vật Mèo và Bóng. Tạo 2 biến nhớ la Time - thời gian của mỗi lần chơi và
ClickCount dùng để đếm số lần người chơi nháy đúng lên quả bóng. Chương trình cho Mèo. Chương trình cho Bóng.
2. Bổ sung thêm âm thanh vào trò chơi trên cho chương trình thêm sinh động khi chơi.
99 | T ự h ọ c l ậ p t r ì n h S c r a t c h Bài 10. H i tho ộ i và truy ạ n thông ề Mục đích
- Thực hiện bài toán hội thoại có điều khiển thông qua thông điệp.
- Giải quyết vấn đề thông qua thông điệp truyền thông giữa các nhân vật . Bắt đầu
1. Em đã bao giờ tham dự 1 cuộc họp ở lớp mà các bạn đều đồng thanh nói, không ai chịu
nghe ai cả chưa? Hãy kể 1 vài ví dụ thực tế như vậy.
2. Em hãy mô tả theo hiểu biết của em về hoạt động của mô hình thư điện tử (email) trên thực tế.
3. Trên lớp học, cô giáo ra 1 bài tập yêu cầu cả lớp làm. Sau 5 phút, cô nói: bạn nào xung
phong lên bảng làm. Một số cánh tay giơ lên. Cô gọi 1 bạn lên bảng làm cho cả lớp xem.
Em có nhận xét gì về mô hình hội thoại trong ví dụ trên.
Ni dung bài hc
1. Bài toán hi thoại có điều khin gia 3 nhân vt
Chúng ta cùng nhau xây dựng chương trình với bài toán sau:
Có 3 bạn: Lan, Bình, Việt trên sân khấu, Đầu tiên Lan chào: "Xin Bình
chào bạn Bình, bạn đi đâu đấy"?.
Bình nghe hiểu và trả lời: "Tôi đi chơi với mẹ".
Sau đó Lan nói: "Việt đấy à, chào bạn".
Việt nghe thấy và trả lời: Lan
"Chào Lan, bạn đi đâu đấy? Vit
100 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Qui trình thực hiện bài toán hội thoại -
truyền thông này như sau.
- Lan thiết lập 2 thông điệp "Hỏi Bình" và "Chào Việt".
- Lan nói "Xin chào bạn Bình, bạn đi đâu đấy?" và gửi đi thông điệp "Hỏi Bình".
- Bình nhận được thông điệp "Hỏi Bình" thì thực hiện 3 việc sau:
+ Thiết lập thông điệp "Bình xong rồi".
+ Nói: "Tôi đi chơi với mẹ".
+ Gửi đi thông điệp "Bình xong rồi".
- Lan nhận được thông điệp "Bình xong rồi" thì thực hiện tiếp 2 việc sau:
+ Lan nói: "Việt đấy à, chào bạn".
+ Gửi đi thông điệp "Chào Việt".
- Việt khi nhận được thông điệp "Chào Việt" thì nói: "Chào Lan, bạn đi đâu đấy".
Chương trình được xây dựng và thiết kế như sau. Chương trình của Lan. Chương trình của Bình. Chương trình của Việt.
2. Gi và nhận thông điệp
Đọc và ghi nhớ các lệnh truyền thông trong Scratch.
Để xử lý các bài toán hội thoại - truyền thông, trong Scratch có 2 lệnh quan trọng sau trong
nhóm S kin.
101 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Lệnh phát / truyền thông điệp, đồng thời có thể tạo ra 1
thông điệp mới. Mỗi nhân vật có thể tạo ra và phát
không hạn chế các thông điệp. Mỗi thông điệp có 1 tên
riêng và tồn tại trong suốt thời gian thực hiện chương trình.
Sự kiện nhận thông điệp. Lệnh sự kiện này cho phép
người nhận thông điệp xứ lý chính xác
Cửa sổ tạo 1 thông điệp mới.
- Vào lệnh broadcast, chọn New Messag . e
- Nhập tên của thông điệp tại vị trí Message Name. - Nháy O . K
Như vậy mô hình gửi và nhận thông điệp, xử lý khi nhận thông điệp là các công cụ chính xử
lý bài toán truyền thông, quan hệ giữa các nhân vật trong mô hình Scratch. Mỗi nhân vật được phép tạo và gửi thôn g điệp của mình ra cộng đồng cho tất cả. Người nhận đúng thông
điệp sẽ xử lý thông điệp
này và tạo ra thông điệp
trả lời, gửi lại thông điệp này cho cộng ồ
Mô hình gi và nhn thông
điệp gia các nhân vt.
Xét 1 vài ví dụ sau, em hãy viết suy nghĩ của mình cần đưa ra quan hệ, thông điệp gì giữa
các nhân vật để giải quyết các bài toán sau.
Bài toán, vấn đề
Quan h truyn thông gia nhân vt
Có 1 thầy giáo và nhiều học sinh trên sân khấu.
Tại 1 thời điểm thầy chỉ nói được với 1 học sinh.
Làm thế nào để học sinh nào biết được thầy
đang nói và đang hỏi ai?
Trên sân khấu có 3 nhân vật: 1 bút chì, 2 nút có
màu xanh và đỏ. Khi người dùng nháy lên nút
đỏ thì bút chì vẽ màu đỏ, khi người dùng nháy
102 | T ự h ọ c l ậ p t r ì n h S c r a t c h
lên nút xanh, bút sẽ vẽ màu xanh. Mô tả mô
hình truyền thông của sân khấu này.
Trên sân khấu có 2 vận động viên, 1 quả bóng
và 1 trọng tài. Khi trọng tài thổi còi, 2 vận động
viên bắt đầu đá quả bóng sang nhau. Hãy mô tả
mô hình truyền thông của sân khấu này.
3. S dng "nút lnh" trong các bài toán giao tiếp
Chúng ta cùng nhau thực hiện một chương trình đơn giản có sử dụng các "nút lệnh" để hiểu
thêm vai trò của thông điệp trong các bài toán có giao tiếp.
Thiết lập 1 chương trình bao gồm có 3 nút lệnh: Desert, City và Castle. Khi nháy lên các nút
này thì nền sân khấu sẽ thay đổi hình ảnh tương ứng.
Để xây dựng chương trình này, em cần thực hiện các việc sau:
- Thiết lập 1 dự án Scratch mới, bổ sung 3 nền sân khấu và đặt tên Desert, City và Sastle.
- Tạo mới 3 nhân vật có hình nút lệnh có tên Desert, City và Sastle. Thiết lập 3 hình nền sân khấu với các tên gọi desert (sa mạc), city (thành phố), castle Thiết lập 3 nhân vật dạng nút lệnh với tên gọi desert (sa mạc), city (thành phố), castle
- Làm ẩn nhân vật chính (Mèo con) trên sân khấu.
- Với 3 nhân vật (nút lệnh) vừa khởi tạo, mỗi nhân vật thiết lập 1 thông điệp có tên trùng với tên của nhân vật.
- Xây dựng 3 đoạn chương trình tương ứng với 3 nút lệnh này như sau: Desert City Castle
Bây giở có thể thiết lập đoạn chương trình của nhân vật chính như sau:
103 | T ự h ọ c l ậ p t r ì n h S c r a t c h
4. Vai trò truyn thông của thông điệp
Trong hoạt động trên em đã thấy rõ vai trò của thông điệp quan trọng như thế nào trong việc
điều khiển kết nối giữa các nhân vật trên sân khấu và giải quyết các bài toán nói chung trong môi trường Scratch.
Thông điệp có tính năng truyền thông tin tuyệt đối chính xác.
Thông điệp được truyền qua các Message có tên chính xác, khi nhân vật n ậ h n thông điệp
này sẽ xử lý thông qua lệnh when I receive , do vậy sẽ tuyệt đối chính xác.
Truyền thông điệp rất nhanh chóng, gần như tức thời.
Thông điệp được gửi bằng lệnh broadcast gần như tức thời, không có hiệu ứng chậm chễ về thời gian.
Việc lập trình sử dụng thông điệp truyền thông rất sáng sủa, rõ ràng và đơn giản .
Em hãy thử kiểm tra bằng cách thực hiện chương trình trong mục 3 bằng 2 cách. Cách 1 sử
dụng thông điệp, cách 2 sử dụng biến nhớ để điều khiển.
Câu hi và bài tp
1. Một nhân vật có thể tạo đồng thời nhiều nhiều thông điệp và gửi đồng thời tất cả các
thông điệp đó được hay không?
2. Một nhân vật có thể nhận và xử lý đồng thời 2 thông điệp từ 2 địa chỉ khác nhau được hay không? Cho ví dụ.
3. Viết chương trình cho bài yêu cầu sau.
Trên màn hình có 3 nhân vật: Mèo con, Lan và Hùng đang đứng ở vị trí như trong hình. Cả
Lan và Hùng đều muốn Mèo chạy về phía mình.
Khi nháy chuột lên Lan, Mèo sẽ quay về hướng Lan và chạy về phía Lan.
Khi nháy chuột lên Hùng, Mèo sẽ quay về hướng Hùng và chạy về phía Hùng.
104 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Vị trí ban đầu của Mèo con, Lan và Hùng.
M rng
1. Mở rộng bài tập lớn của bài Vẽ hình 2, em hãy thiết lập chương trình Vẽ tự do sau. Yêu cầu:
- Giao diện bao gồm 1 cây bút chì và 2 nút
Xanh, Đỏ góc dưới màn hình.
- Khi di chuyển chuột trên màn hình, bút vẽ
luôn đi theo vị trí con trỏ.
- Nhấn phím Space sẽ bật / tắt chế độ vẽ.
- Nháy chuột lên nút màu xanh hoặc đỏ sẽ
có tác dụng đổi màu vẽ thành xanh hoặc đỏ.
2. Thiết lập chương trình đơn giản sau. Yêu cầu:
- Giao diện phần mềm bao gồm: 1 Thầy giáo, 2
nút lệnh "Tính tổng" và "Tính hiệu". 2 giá trị số
m, n có thể nhập, điều chính ngay trên màn hình.
- Khi người dùng nháy lên các nút lệnh "Tính
tổng" và "Tính hiệu", thầy giáo sẽ thông báo kết
quả của phép tính tương ứng ngay trên màn hình.
Ví dụ kết quả của phép Tính hiu sẽ như sau:
105 | T ự h ọ c l ậ p t r ì n h S c r a t c h
106 | T ự h ọ c l ậ p t r ì n h S c r a t c h Bài 11. Cảm bi n ế Mục đích
- Khái niệm và mô hình cảm biến trong Scratch.
- Hiểu được các lệnh cảm biến đơn giản: tọa độ, khoảng cách, màu sắc.
- Cảm biến va chạm giữa các nhân vật.
- Mô hình biến nhớ chung và riêng. Bắt đầu
1. Em có nghe, đọc sách báo nói về 6 giác quan, em hãy nhớ lại đó là các giác quan nào?
2. Giả sử em muốn viết 1 chương trình cho 1 con vật (nhân vật) của em chạy tự do trong 1
vòng tròn màu đỏ, không cho nhân vật chạy ra ngoài. Em sẽ phải làm gì?
3. Trong các câu sau, câu nào có liên quan đến sự kiện, câu nào liên quan đến cảm biến?
- Sáng chủ nhật em đến trường tập hát.
- Đi trên đường em bị lóa mắt vì mặt trời chiếu thẳng vào mắt .
- Bạn An rất thích màu đỏ.
- Sáng em thức giấc đúng 6h khi nghe chuông báo thức.
- Sáng nào bố mẹ em cũng dậy sớm vào lúc 6h để tập thể dục.
- Khi nhận được thư mẹ, bố em lập tức viết thư trả lời .
- Khi nhấn phím Enter, dữ liệu được nhập sẽ đưa lên mạng Internet.
- Em bé rất sợ tiếng ồn, mỗi khi nghe tiếng động lớn thì khóc.
Qua các ví dụ trên em hãy chỉ ra sự giống nhau và khác nhau giữa 2 khái niệm S kin
Cm biến. Hãy điền suy nghĩ của em vào bảng sau:
107 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Vấn đề / câu hi
S kin
Cm biến
Hành động xuất phát từ bên
ngoài hay từ bản thân nhân vật
Sự việc có phụ thuộc vào bản thân nhân vật hay không?
Sự việc có được lên kế hoạch trước hay không?
Sự việc có được thực hiện
theo thời gian định trước hay không?
Sự việc có các tham số liên
quan đến các giác quan con người hay không?
Ni dung bài hc
1. Các câu lnh cm biến trong Scratch.
Các lệnh cảm biến nằm trong nhóm lệnh Sensing (Cảm biến). Các lệnh này thường điều
khiển, xử lý thông qua các thông số mang tính cảm nhận, định tính và không phụ thuộc vào
các tác động bên ngoài (sự kiện). Chính vì vậy chúng ta gọi chúng là các lệnh cảm biến. Để
so sánh cảm biến và sự kiện chúng ta thường nghĩ đến cảm nhận của các giác quan của con
người và các sự kiện độc lập từ bên ngoài.
Trong Scratch, các lệnh cảm biến thường là các biểu thức, hàm số. Các hàm số này sẽ trả lại
giá trị của các thông số mang tính "cảm biến", chỉ phụ thuộc vào nội tại nhân vật. Bảng sau
cho ta một tổng quan về các hàm hay dùng nhất trong nhóm lệnh Cảm biến. Cảm biến màu sắc.
Cảm biến khoảng cách, va chạm .
Cảm biến chuột và bàn phím. Cảm biến thời gian.
Thông tin thuộc tính của nhân vật và sân khấu.
108 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Lệnh hỗ trợ hội thoại nhập dữ liệu trực tiếp từ bàn phím.
2. Cm biến màu sc
Cảm biến màu sắc là những càm nhận, nhận biết liên quan đến màu sắc. Em hãy cùng thực
hiện các hoạt động sau để hiểu các lệnh cảm biến liên quan đến màu sắc trong Scratch.
Nhân vật chính của chúng ta là 1 con chó nhỏ hiện đang nằm giữa sân khẩu.
Yêu cầu thực hiện chương trình.
Cho con chó nhỏ chạy theo các hướng ngẫu nhiên, mỗi lần chạy
10 bước và nghỉ 0.3 giây. Nếu chó chạm vạch đỏ thì lập tức bị
đặt vào vị trí tâm của vòng tròn, và chương trình lại tiếp tục.
Em hãy sử dụng lệnh cảm biến
để điều khiển nhận biết khi chó chạm
vạch đỏ. Để chọn màu cảm biến chính xác em thực hiện: sau khi kéo thả lệnh trên ra cửa sổ
lệnh, em nháy chuột lên ô màu bên phải lệnh, sau đó nháy chuột lên vạch đỏ trên sân khấu
để chọn màu cảm biến.
Chương trình được mô tả trong hình dưới đây.
3. Cm biến khong cách, va chm
Trong môi trường Scratch có 2 lệnh liên quan đến cảm biến khoảng cách, va chạm.
Lệnh này sẽ trả lại giá trị đúng nếu nhân vật hiện thời va chạm với
1 nhân vật khác / hoặc va chạm với con trỏ chuột / hoặc va chạm
với cạnh sân khấu. Ngược lại nó trả về giá trị sai.
Lệnh này sẽ tính và trả về giá trị khoảng cách từ nhân vật hiện thời
đến 1 nhân vật khác / hoặc đến vị trí con trỏ chuột.
Chúng ta cùng tìm hiểu cảm biến khoảng cách, va chạm thông qua ví dụ sau. Trò chơi Chó đuổi Mèo.
109 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Trên sân khấu có 2 nhân vật chính là Chó và Mèo.
Mèo được điều khiển chuyển động bằng bàn phím.
Người dùng sử dụng các phím up, down, left, right
để dịch chuyển mèo theo các hướng lên, xuống,
trái, phải tương ứng. Cần điều khiển để Mèo tránh gặp Chó.
Chó chuyển động ngẫu nhiên trên màn hình. Nếu Chó va chạm với M
èo, Chó sẽ kêu "Ha ha ha" và tự to lên 10%.
Chương trình riêng cho Mèo và Chó được thể hiện trong hình sau. Có thể tạo thêm âm thanh
tiếng kêu mừng rỡ của Chó khi bắt được Mèo.
4. Cm biến chut và bàn phím
Em hãy thiết kế trò chơi đơn giản Mèo đuổi Bóng.
Yêu cầu của trò chơi như sau:
Mèo sẽ luôn hướng đến Bóng và chạy về phía
Bóng. Nếu bắt được bóng thì Mèo sẽ kêu lên
tiếng "Bắt được bóng rồi" (có thể thêm âm
thanh để trò chơi thêm hấp dẫn) và kết thúc.
Người chơi sẽ dùng chuột để điều khiển quả
bóng. Nháy chuột lên màn hình sẽ lập tức làm
cho Bóng dịch chuyển nhanh đến vị trí chuột.
Người dùng cũng có thể click và rê chuột trên
màn hình để kéo thả Bóng chạy trốn khỏi Mèo.
110 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Em cần sử dụng lệnh cảm biến và lệnh chuyển động để
điều khiển Mèo luôn hướng về Bóng và chạy về phía Bóng.
Với Bóng, em cần sử dụng các lệnh cảm biến chuột là để xác định thời
điểm người dùng nháy chuột, dùng các hàm , để tính ọ t a độ chính xác
của chuột tại thời điểm nháy chuột.
Chương trình dành cho Bóng (trái) và Mèo (phải) như hình dưới đây.
5. Cm biến thi gian
Các hàm cảm biến thời gian trong Scratch bao gồm biến
tự động đếm thời gian theo giây, và hàm
trả lại các giá trị của thời gian hệ thống. Lệnh
có tác dụng đặt lại từ đẩu cho biến đếm .
Áp dụng: thiết kế chương trình mô tả đồng hồ kim chạy trên màn hình.
Thiết lập dự án chương trình như sau:
- Sân khấu nền là mặt đồng hồ kim (analog clock)
- Có 3 nhân vật là: kim giây, kim phút, kim giờ.
Chú ý thiết lập tâm của các kim này tại vị trí tâm hình tròn.
- Đưa tất cả các kim về vị trí xuất phát: tâm của các kim mày trùng với tâm của sân khấu.
111 | T ự h ọ c l ậ p t r ì n h S c r a t c h Vẽ hình nền sân khấu là mặt tròn của đồng hồ kim. Thiết lập 3 nhân vật là kim giây, kim phút, kim giờ.
Để viết chương trình điều khiển, em sẽ viết cho từng kim đồng hồ. Vấn đề là tính góc quay
của từng kim đồng hồ chính xác theo thời gian. Sử dụng hàm để tính giá
trị của giây, phút, giờ theo thời gian hệ thống.
Chương trình cho kim giây.
Thời gian theo giây có giá trị từ 0
đến 59, tương ứng với giá trị góc
quay là 0 đến 360. Do đó mỗi
giây, góc cần quay kim giây là * (360/60) =
Chương trình cho kim phút.
Thời gian theo phút có giá trị từ 0
đến 59, tương ứng với giá trị góc
quay là 0 đến 360. Do đó mỗi
phút, góc cần quay kim phút là * (360/60) =
Chương trình cho kim giờ.
Thời gian theo giờ có giá trị từ 0
đến 23, tương ứng với giá trị góc
quay là 0 đến 360x2 = 720. Do đó
mỗi giờ, góc cần quay kim giờ là * (720/24) =
Câu hỏi: em có thấy chương trình chạy chính xác không?
112 | T ự h ọ c l ậ p t r ì n h S c r a t c h
6. Kiu biến nh: dùng chung và riêng
Khi khởi tạo 1 biến nhớ trong Scratch, chúng ta cần lựa chọn 1 trong 2 kiểu, biến nhớ dùng
chung và biến nhớ dùng riêng.
Biến nh dùng chung: tất cả mọi nhân vật ề
đ u có quyền nhập, thay đổi giá trị của
biến nhớ này. Biến nhớ chung còn có tên gọi Global Variable.
Biến nh dùng riêng: chỉ nhân vật là chủ
của biến này có quyền nhập, thay đổi giá trị,
các nhân vật khác chỉ có quyền xem, khai
thác giá trị. Biến nhớ riêng còn có tên gọi Local Variable.
Chú ý: Nếu chúng ta khởi tạo 1 biến nhớ riêng cho 1 nhân vật thì biến nhớ này chỉ xuất
hiện trong bảng lệnh của nhân vật này mà không hiện trong bảng lệnh của các nhân vật
khác. Tuy nhiên biến nhớ này sẽ xuất hiện như 1 thuộc tính của nhân vật này. Các nhân vật
khác muốn truy cập giá trị này cần thực hiện thông qua lệnh, hàm cảm biến truy xuất thuộc tính của nhân vật.
Trong ví dụ trên, biến Count là riêng được khởi tạo cho nhân vật Lan thì các nhân vật khác
sẽ truy cập biến nhớ này thông qua lệnh .
Câu hi và bài tp
1. Mở rộng trò chơi Chó đuổi Mèo, bổ sung thêm biến đếm cho phép Chó va chạm vào Mèo
3 lần thì kết thúc chương trình.
2. Mở rộng trò chơi Mèo bắt Bóng, bổ sung thêm biến đếm thời gian từ khi bắt đầu cho đến
khi Mèo bắt được bóng, thể hiện thời gian này trên màn hình.
M rng
1. Trò chơi Ăn táo. Viết chương trình điều khiển con Cánh cam bằng bàn phím, chuyển
động đến vị trí Quả táo ở góc phải dưới sân khấu, dọc đường đi không được va chạm với bất
cứ vết màu nào trên màn hình. Nếu chạm vào các vết màu này thì bị thua.
113 | T ự h ọ c l ậ p t r ì n h S c r a t c h
2. Mở rộng chương trình thể hiện đồng hồ kim chạy chính xác trên màn hình. Gi ý:
Cần điều khiển kim phút chạy theo từng giây và kim giờ theo từng phút.
Muốn vậy đối với kim phút và kim giờ cần thiết ậ l p thêm biến nhớ
(riêng) angle cho mỗi nhân vật này và tính toán chính xác góc cần quay theo thời gian.
Bảng sau mô tả chi tiết các điều khiển các kim giờ, phút, giây chính xác. Điều khiển
Kim giây không cần thay đổi điều kim giây
khiển, cập nhật theo từng giây. theo từng
Thời gian theo giây có giá trị từ 0 giây.
đến 59, tương ứng với giá trị góc
quay là 0 đến 360. Do đó mỗi giây,
góc cần quay kim giây là giây> * (360/60) = *6. Điều khiển
Nâng cấp điều khiển kim phút theo kim phút từng giây. theo từng
Thời gian theo phút có giá trị từ 0 giây.
đến 59, tương ứng với giá trị góc
quay là 0 đến 360. Do đó mỗi phút,
góc cần quay kim phút là phút> * (360/60) = *6. Điều khiển
Nâng cấp điều khiển kim giờ theo kim giờ theo từng phút. từng phút.
Thời gian theo giờ có giá trị từ 0 đến
23, tương ứng với giá trị góc quay là
0 đến 360x2 = 720. Do đó mỗi giờ, góc cần quay kim giờ là * (720/24) = *30.
114 | T ự h ọ c l ậ p t r ì n h S c r a t c h CHƯƠNG 4: SCRATCH NÂNG CAO
115 | T ự h ọ c l ậ p t r ì n h S c r a t c h Bài 12. Xử lý s 1 ố Mục đích
- Biến nhớ và vai trò của biến nhớ.
- Phân biệt biến nhớ và biểu thức.
- Các phép tính, tính toán đơn giản với giá trị số và logic.
- Thực hiện một vài bài bài toán xử lý số đơn giản. Bắt đầu
1. Chúng ta nhớ lại 2 đoạn chương trình vẽ hình vuông và ngũ giác đều đã học trong bài Vẽ hình 2.
V hình vuông
V hình ngũ giác đều
Em có suy nghĩ gì về việc có thể tổng quát hóa đoạn chương trình này để vẽ 1 hình đa giác đều n cạnh bất kỳ?
2. Các biểu thức số học, ví dụ: 7 9 + 8 10 5 23 7+ − 6 50 √2 + 1 45− cos15 2
sẽ được tính toán như thế nào trong Scratch?
Ni dung bài hc
1. Biến nh và hàm s
Chúng ta đã làm quen với biến nhớ và các lệnh trả lại giá trị (hay còn gọi là hàm số) trong
Scratch. Hoạt động này là một củng cố kiến thức đã biết .
Định nghĩa biến nh:
Bi
ến nh là 1 vùng trong b nhớ, được đặt tên bng mt dãy ch và số, dùng để lưu
tr các giá tr (s, ch hoc logic). Biến nh có th do h thng to sn hoặc do người
dùng t tạo ra để giúp gii quyết các bài toán lp trình.
116 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Các biến nhớ do người lập trình
tạo ra sẽ thể hiện trong khung lệnh
D liu (Data).
Qui định đặt tên biến nh: Scratch không đặt các điều kiện chặt cho cách đặt tên biến nhớ.
Tên biến nhớ phân biệt chữ hoa, chữ thường và có thể chứa dấu cách. Tuy nhiên với các
ngôn ngữ lập trình bậc cao thì tên biến nhớ thường được qui định khá chặt chẽ. Các em cần
nhớ 1 số qui tắc chung này để áp dụng cho các ngôn ngữ lập trình bậc cao trong tương lai.
Tên biến nh phi là dãy ch hoc s, không có du cách, không nên cha các ký t
đặc biệt như : ; , \ / + - [ ] { } ( ). Nên đặt tên biến nh là 1 cm t có ý nghĩa để d nh.
Không nên đặt tên biến nh vi quá nhiu ch hoa
Ví dụ tên biến nhớ như sau là hợp lệ: x1, abc, solution, time_out, click_count, con_meo, chim_bay, thoi_gian, ….
Các tên biến nhớ như sau thì không nên và không hợp lệ: 12+23, sinx, ANHSang, C://thu_muc, ….
Chú ý: các biến nhớ dùng chung cần có tên khác nhau từng đôi một trong chương trình.
Biến nhớ riêng nhân vật có thể đặt tên trùng nhau. Định nghĩa hàm số:
Hàm s
do người dùng hoc h thng tạo ra, được đặt tên bng mt dãy ch và s,
dùng để tính toán mt giá tr nào đó, được lưu trữ trong b nh và được s dng
tương tự như các biến nh trong các câu lnh.
Các hàm số được tạo sẵn trong hệ
thống, mang ý nghĩa khác nhau và đều
trả lại các giá trị có ý nghĩa trong quá
trình giải quyết vấn đề.
Hàm số có thể có hoặc không có các tham số đầu vào. Ví dụ. - Hàm
trả lại tọa độ X của vị trí con chuột hiện thời. Hàm này không có tham số.
117 | T ự h ọ c l ậ p t r ì n h S c r a t c h - Hàm
có 1 tham số là tên phím tương ứng trên bàn phím. Hàm
sẽ trả lại giá trị Đúng nếu phím này được nhấn, và trả lại Sai nếu phím này không được nhấn. - Hàm tính tổng
có 2 tham số đầu vào là 2 số. Hàm sẽ trả lại giá trị là tổng của hai
số này. Tham số đầu vào có thể lấy giá trị cụ thể hoặc lấy từ các biến nhớ hoặc hàm số khác.
Ví dụ các cách truyền tham số cho hàm tính tổng này: , , .
Biến nhớ có rất nhiều ý nghĩa trên thực tế. Chúng ta hãy cùng xét 1 ví dụ sau, lấy cảm hứng
từ ví dụ vẽ các hình tứ giác, ngũ giác đều trong phần mở đầu của bài học này.
Sử dụng các biến nhớ so_canh để lưu số cạnh của đa giác muốn vẽ, biến nhớ do_dai_canh
để lưu độ dài cạnh đa giá, khi đó đoạn chương trình vẽ 1 đa giác đều tổng quát như sau:
2. Các thao tác làm vic vi biến nh Đối ớ
v i biến nhớ, 2 lệnh quan trọng nhất là lênh gán giá trị và lệnh thay đổi giá trị của biến
nhớ. Các lệnh này được thực hiện trong Scratch như sau, so sánh với cách viết trong 1 số
ngôn ngữ lập trình bậc cao khác. Lnh Scratch Pascal C, Java
Gán giá trị cho biến nhớ m:=10; m = 10;
Thay đổi giá trị của biến nhớ + m:=m+1; m++; 1
Thay đổi giá trị của biến nhớ - m:=m-1; m--; 1
Mt s lnh, thao tác khác vi biến nh.
Hiện giá trị biến nhớ trên sân khấu, xóa biến nhớ, đổi tên biến nhớ.
Nút chọn để làm hiện / ẩn giá trị
biến nhớ trên sân khấu.
Lệnh đổi tên biến nhớ. Xóa biến nhớ.
Nháy chuột phải lên biến nhớ tại
khung điều khiển Data để hiện bảng chọn này.
118 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Khi biến nhớ đã được hiển thị trên sân khấu thì có thể thực hiện các thao tác sau bằng cách
nháy chuột phải lên vị trí biến nhớ.
Thanh trượt điều chỉnh giá trị
biến nhớ ngay trên màn hình.
Chế độ hiển thị bình thường
có tên và giá trị biến nhớ.
Chế độ hiển thị lớn chỉ có giá trị biến nhớ.
Bật / tắt thanh trượt điều chỉnh dữ liện biến nhớ
Thiết lập khoảng dữ liệu min/max cho Ẩn biến nhớ trên thanh trượt. sân khấu
Đoạn chương trình sau mô tả bài toán vẽ liên tục các hình đa giác đều với số cạnh tăng dần
từ 4 đến 18. Kết quả thể hiện trong hình phải.
3. Kiu d liu trong Scratch
Khi 1 biến nhớ được khởi tạo trong Scratch, chúng ta không cần khai báo biểu dữ liệu cho
biến nhới này. Trong quá trình làm việc, tùy thuộc vào dữ liệu nhập, biến nhới tự động nhận
biết 1 trong 3 kiểu dữ liệu sau:
S (Number). Bao gồm số nguyên và thập phân.
Logic (Boolean). Kiểu dữ liệu chỉ có 2 giá trị Đúng (true) và Sai (false).
Xâu (String). Kiểu dữ liệu là dãy các chữ, kí tự. Ví dụ nếu biến nhớ
được khởi tạo thì có thể gán cho n các giá trị sau:
119 | T ự h ọ c l ậ p t r ì n h S c r a t c h Gán giá trị số cho n Gán xâu ký tự cho n Gán giá trị logic cho n
Em hãy thực hiện các lệnh sau và điền kết quả vào cột phải trong bảng dưới đây, từ đó có
nhận xét gì về các kiểu dữ liệu và cách thể hiện chúng trong Scratch.
Biếu thc, ln h Kết qu
4. Các phép tính đơn giản vi s trong Scratch
Nhóm lệnh Operators (màu xanh lá cây) bao gồm các lệnh, phép tính làm việc với dữ liệu
số, logic và xâu ký tự. Trong bài học này chúng ta làm quen với các phép tính đơn giản với số.
Phép tính cộng, trừ nhân, chia số thập phân (hàm) phép cộng 2 số (hàm) phép trừ 2 số (hàm) phép nhân 2 số
(hàm) phép chia 2 số, kết quả thập phân. Làm tròn số
(hàm) làm tròn số của 1 số, lấy số nguyên gần nhất số này.
(hàm) làm tròn (lên) của 1 số, lấy số nguyên gần nhất trên số này.
(hàm) làm tròn (dưới) của 1 số, lấy số nguyên gần nhất dưới số này. Phép chia số nguyên
(hàm) lấy số dư của 2 số nguyên
(hàm) lấy thương nguyên của 2 số nguyên Phép tính lũy thừa
(hàm) lấy lũy thừa của 2 số thập phân na
120 | T ự h ọ c l ậ p t r ì n h S c r a t c h
(hàm) lấy lũy thừa của 2 số nguyên na
Phép lấy căn thức, trị tuyệt đối
(hàm) lấy giá trị tuyệt đối của 1 số.
(hàm) lấy căn bậc 2 của 1 số dương a (a1/2)
(hàm) lấy căn bậc n của 1 số a (a1/n) Ví dụ: 1/2 + 3/4 m2 + n2 - mn | x | + | x + 2| - | x - 1| x2 - x + 1 (a + b)2
5. Kiu d liu logic
Em đã được làm quen với lệnh điều khiển có điều kiện if .. then. Biểu thức sau if là 1 điều
kiện logic. Khi thực hiện, lệnh sẽ kiểm tra điều kiện này, nếu đúng (true) thì sẽ thực hiện
đoạn lệnh sau từ khóa then, nếu sai (false) thì bỏ qua lệnh này.
<điều kin> = biểu thức logic
đoạn chương trình sẽ thực hiện nếu <điều
kin> này đúng (true).
Tương tự chúng ta có 1 lệnh tổng quát hơn: lệnh điều khiển đầy đủ có điều kiện if .. then …
else. Biểu thức sau if là 1 điều kiện logic. Khi thực hiện, lệnh sẽ kiểm tra điều kiện này, nếu
đúng (true) sẽ thực hiện đoạn lệnh sau từ khóa then, nếu sa i(false) sẽ thực hiện đoạn lệnh sau từ khóa else.
<điều kin> = biểu thức logic
đoạn chương trình sẽ thực hiện nếu <điều
kin> này đúng (true).
đoạn chương trình sẽ thực hiện nếu <điều
kin> này sai (false).
121 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Các toán tử, phép tính với biểu thức và biến nhớ logic trong Scratch bao gồm. Phép toán logic Kết qu
(hàm) toán tử logic and (và).
Trả lại true (đúng) khi và chỉ khi cả 2 biểu thức thành phần đều true (đúng).
(hàm) toán tử logic or (hoc). Trả lại tru
e (đúng) nếu 1 trong 2 biểu thức thành phần là true
(đúng), các trường hợp khác sẽ trả lại false (sai).
(hàm) toán tử not (ph địn h / không).
Trả lại true (đúng) nếu biểu thức là false (sai) và ngược lại, trả
lại false nếu biểu thức là true (đúng).
Bảng cụ thể các phép tính logic and, or, not như sau.
Toán t and (và)
Toán t or (hoc) A B A and B A B A or B true true true true true true true false false true false true false true false false true true false false false false false false
Toán t not (không) A not A true false true true
6. Biu din biu thc logic
Em hãy biểu diễn các điều kiện logic sau trong môi trường Scratch. a > 10 và a < 100 m >= 100 0 < m < 20
ngay = 10 và thang = 3 và nam = 2016
m là số lẻ và 0 < m < 100
m là số chẵn và m > 20
Chú ý đến các ô nhập trực tiếp dữ liệu trên các dòng lênh. Có 2 loại ô chữ nhật và ô tròn.
122 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Ô vuông, ch nht
Ô dữ liệu vuông, chữ nhật có thể
nhập số, chữ hoặc biểu thức logic. Ô tròn
Ô dữ liệu tròn chỉ thể nhập số hoặc
biểu thức logic, không nhập được chữ.
Câu hi và bài tp
1. Viết hàm kiểm tra xem năm year có phải là năm nhuận không?
Tính chất toán học của năm nhuận: là năm chia hết cho 4 và không chia hết cho 100, hoặc chia hết cho 400.
2. Viết chương trình nhập hai giá trị month (tháng) và year (năm) từ bàn phím và kiểm tra
xem giá trị nhập vào có hợp lệ hay không?
3. Biểu diễn các biểu thức sau dùng lệnh Scratch\ (7/8) + (9/10) ax2 + bx + c m*n - 2(m+n) |x| - |2x - 1| 102 + (3+ 7/8)
4. Biểu diễn các điều kiện logic sau bằng lệnh Scratch (m > 100) và (n < 100) mn < 0 (m + n) > (m2 + n2)
(x >= 2) hoặc (y <= 10) m không chia hết cho 4 m không bằng 0
M rng
1. Viết chương trình hiển thị trên màn hình thời gian đầy đủ hệ thống, vi dụ: Ngày 16 tháng 5 năm 2016 12 giờ 45 phút 24 giây
2. Thiết kế trò chơi đơn giản sau:
123 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Trên sân khấu có 3 quả bóng với các số hiệu 1, 5, 10
chuyển động ngẫu nhiên, lúc ẩn lúc hiện trên màn hình.
Nhiệm vụ của em là nháy chuột chính xác lên các quả
bóng, em sẽ được tích lũy điểm theo số được ghi trên quả bóng.
Thời gian cho mỗi lần chơi là 10 giây. Bạn nào đạt
được điểm cao thì càng giỏi. Khi kết thúc 1 lần chơi,
giáo viên sẽ thông báo điểm của em trên màn hình.
124 | T ự h ọ c l ậ p t r ì n h S c r a t c h Bài 13. Xử lý s 2 ố Mục đích
- Một vài thuật toán đơn giản với số nguyên, phân số.
- Bài toán tìm ước số, tìm số nguyên tố, tìm ước số chung của hai số.
- Bài toán rút gọn phân số, tính ước số chung lớn nhất, bội số chung nhỏ nhất .
- Thiết lập 1 vài trò chơi số đơn giản. Bắt đầu
1. Em đã bao giờ đặt bút tính 100! chưa? Thử lấy bút và tính xem có khó không?
2. Em hãy nhớ lại một số khái niệm về số học để chuẩn bị cho bài học mới này.
- Thế nào là số nguyên tố, hợp số?
- Khai triển 1 số tự nhiên thành tích các thừa số nguyên tố.
- Khái niệm và cách tính ƯSCLN và BSCNN của 2 số tự nhiên.
- Thế nào là 1 phân số tối giản?
Ni dung bài hc
1. Mt s thut toán s đơn giản
Kiểm tra n có chia hết cho m hay không?
Sử dụng hàm lấy số dư phép chia (mod):
. Nếu giá trị này = 0 thì n chia hết
cho m, ngược lại n không chia hết cho m.
Kiểm tra a có phải là ước số thực sự của m hay không? (Ước thực sự là ước số khác 1 và chính số đó). Hàm kiểm tra như sau:
Kiểm tra năm year có phải là năm nhuận hay không? (năm nhuận là năm chia hết cho 4 và
không chia hết cho 100, hoặc chia hết cho 400).
Hàm kiểm tra năm nhuận như sau:
Em hãy viết tiếp các hàm kiểm tra sau:
1. Hàm kiểm tra hai phân số m/n và p/q có bằng nhau hay không?
2. Hàm kiểm tra số p có là bội số của cả hai số n, m hay không?
125 | T ự h ọ c l ậ p t r ì n h S c r a t c h
3. Hàm kiểm tra số p có là ước số đồng thời của cả hai số n, m hay không?
4. Hàm kiểm tra số p có phải là nghiệm của phương trình bậc nhất px + q = 0 hay không?
2. Bài toán tìm các ước s thc s ca 1 s t nhiên cho trước
Bài toán: yêu cầu nhập 1 số tự nhiên n từ bàn phím, chương trình sẽ thông báo tất cả các
ước số thực sự của n trên màn hình.
Ví dụ nhập số 100 thì chương trình thông báo các giá trị 1, 2, 5, 10, 20, 25, 50 trên màn hình.
Ý tưởng cách giải (thuật toán) của bài toán này như sau:
Thiết lập 1 biến chạy num, cho num chạy từ 1 đến n-1 (chú ý không tính khi num = n), với
mỗi bước lặp, kiểm tra xem num có phải là ước số của n hay không. Nếu đúng thì đưa num
vào DS các số sẽ được in ra kết quả.
Mô tả thuật toán này một cách tường minh: Gán num = 1 Lặp cho đến khi num = n Nếu n mod num = 0 thì thông báo num tăng n lên 1 đơn vị
Để viết chương trình trên Scratch, chúng ta thiết lập 2 biến nhớ numsaying. Biến num
để chạy và kiếm tra ước số của n. Biến saying để lưu lại các ước cụ thể và hiển thị thông báo ra màn hình.
Câu hỏi: trong bài toán trên nếu thay đổi yêu cầu "ước số thực sự" bằng "ước số" thì chương
trình sẽ phải thay đổi như thế nào?
3. Bài toán tìm ƯSCNN của hai s t nhiên
Bài toán: yêu cầu nhập 2 số tự nhiên n, m từ bàn phím, chương trình sẽ thông báo kết quả là
ước số chung lớn nhất của hai số n, m trên màn hình.
Chúng ta sử dụng biến nhớ gcd (greatest common divisor) để lưu trữ kết quả phép tính.
Thuật toán đơn giản nhất là dùng 1 biến nhớ tạm, ví dụ num, cho num chạy từ 1 đến n và
kiểm tra xem num có là ước số của đồng thời n, m hay không, nếu đúng thì gán giá trị này vào gcd.
126 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Cách thứ 2 hay hơn xuất phát từ nhận xét: nếu n=m thì rõ ràng gcd = n. Giả sử n>m, khi đó
gcd, là ước của n, m nên cũng sẽ là ước của n-m, bằng cách thay thế n bằng n-m chúng ta sẽ
tìm tiếp với cặp n-m, m, cách này đi nhanh hơn đến kết quả cuối cùng. Thuật toán sau dựa
trên ý tưởng trên và được coi là thuật toán chuẩn để tính ƯSCLN của 2 số tự nhiên n, m. Lặp cho đến khi m = n Nếu m > n thì m = m - n còn không thì n = n - m Gán gcd = m.
Đoạn chương trình thể hiện thuật toán trên như sau:
Vòng lặp chính lặp cho đến khi
Lệnh kiểm tra chính của vòng lặp:
giảm số lớn hơn trong 2 số đi 1 giá
trị bằng hiệu của 2 số này. Kết quả gán cho biến d
Em hãy hoàn thiện chương trình này trên Scratch.
4. Bài toán kim tra s nguyên t
Bài toán: yêu cầu nhập 1 số tự nhiên n từ bàn phím. Chương trình sẽ thông báo số này là nguyên tố hay hợp số.
Ý tưởng của lời giải này là đếm số các ước số thực sự của n. Nếu số ước số thực sự < 2 thì n sẽ là nguyên tố.
Thuật toán sau sau đếm số các ước số thực sự của n. Sử dụng biến count để đếm số các ước
số thực sự của n. Biến nhớ num được tạo ra dùng để chạy theo 1 vòng lặp từ 1 đến n-1 và
kiểm tra xem num có phải là ước của n hay không. Nếu num là ước của n thì tăng count
lên 1. Biến count được gán giá trị ban đầu = 0. Gán num = 1, count = 0 Lặp cho đến khi num = n
Nếu num là ước của n thì
Tăng count lên 1 đơn vị. Tăng num lên 1 đơn vị.
127 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Đoạn chương trình trong Scratch mô tả th ậ u t toán trên như sau:
Chương trình hoàn chỉnh cho phép nhập từ bàn phím 1 số và thông báo kết quả trên màn hình.
5. Bài toán tính nhanh 100!
Chúng ta đã biết cách tính n giai tha n! = 1.2.3…. n (tích của n số tự nhiên đầu tiên, tính
từ 1). Với n lớn thì việc tính n! rất khó. Máy tính sẽ giúp em tính rất nhanh bài toán này.
Đoạn chương trình sau mô tả việc tính n!
Biến nhớ count sẽ tăng dần từ 1 đến n để góp phần tính tăng cho kết quả k . q Vòng lặp
ngoài có n vòng. Các biến countk
q được gán giá trị ban đầu = 1.
Các thiết lập ban đầu. Vòng lặp chính (n vòng)
Nhóm lệnh chính trong vòng lặp:
tăng kq theo phép nhân với count và và tăng count lên 1. Hiển thị kết quả
128 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Viết lại chương trình tính n! hoàn chỉnh, giá trị n được nhập từ bàn phím.
Câu hi và bài tp
1. Viết chương trình nhập số m từ bàn phím và đếm số các ước số của m, tính cả 1 và n. Ví
dụ nếu m = 10 thì thông báo đáp số là 4.
2. Viết đoạn chương trình với dữ liệu đầu vào là n, m và kiểm tra xem n, m có nguyên tố
cùng nhau hay không? Hai số được gọi là nguyên tố cùng nhau nếu ƯSCLN của chúng = 1.
3. Viết đoạn chương trình nhập 3 số dương a, b, c và kiểm tra xem có thể vẽ được tam giác
ABC với các cạnh có số đo a, b, c hay không.
M rng
1. Viết chương trình cho phép nhập số tự nhiên n từ bàn phím và in ra khai triển số n thành
tích của các thừa số nguyên tố.
Ví dụ đầu vào là 12 thì thông báo ra là: 12 = 2.2.3
2. Thiết kế trò chơi Rút gn phân số sau.
Mỗi lần nháy lên nút New Game sẽ bắt ầ đ u trò chơi.
Thầy giáo sẽ đưa ra ngẫu nhiên 1 phân số
trên màn hình và yêu cầu người chơi rút gọn
phân số này và nhập 2 số p/q là phân số tối
giản của phân số trên màn hình.
Sau khi nhập thầy giáo sẽ thông báo ngay là
đúng hay sai, nếu sai thì cần nhập lại, nếu đúng thì kết thúc.
129 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Bài 14. Xử lí xâu ký tự 1 Mục đích
- Giá trị không là số hoặc logic.
- Các phép tính, tính toán đơn giản với giá trị là chữ hoặc văn bản.
- Thực hiện 1 vài bài toán đơn giản xử lý chữ, ký tự, văn bản. Bắt đầu
1. Trong các biểu thức giá trị sau, hãy đánh dấu các giá trị là số hoặc logic: a. Heal The World b. Min < Max c. 321 + 231 + 123
d. Sông Mê Kông dài hơn sông Hồng
e. Nếu hôm nay trời mưa em sẽ học ở nhà f. (x < 10) and (x > 1)
2. Em hiểu thế nào là 1 xâu ký tự? Các nội dung sau có phải là 1 dãy ký tự không? Hanoi1 + Hanoi2 123456789
Hà Nội là thủ đô của nước Việt Nam x2 + y2 + z2 = 192
Giải phương trình ax2 + bx + c = 0
Ni dung bài hc
1. Cách xâu ký t được lưu trữ trong máy tính
Xâu ký tự được hiểu là 1 dãy các ký tự, ví dụ "Hà Nội", "English", "letters", "hòa bình".
Dãy các ký tự tạo nên 1 xâu sẽ được đánh số từ 1. Ví dụ từ alphabet. alphabet 1 2 3 4 5 6 7 8 Chú ý:
- Dãy ký tự của xâu có thể chứa các ký tự đặc biệt như : ; / \ { } [ ] ( ) …..
- Dấu cách (Space) cũng được coi là 1 ký tự, ta dùng ký hiệu └┘để chỉ dấu cách.
Tổng số các ký tự của 1 xâu được gọi là độ dài của xâu ký tự này.
2. Các hàm x lý xâu ký t trong Scratch
130 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Trong môi trường Scratch có 3 hàm xử lý xâu ký tự sau:
(hàm) toán tử nối 2 xâu ký tự.
(hàm) trả lại ký tự thứ <1> của xâu ký tự
(hàm) trả lại độ dài của xâu ký tự Toán từ
có tác dụng nối 2 xâu ký tự và trả lại kết quả là xâu được kết nối. Ví dụ lệnh
sẽ trả lại xâu ký tự "Hòa bình" là nối của 2 từ "Hòa " và
"bình". Lệnh join có thể lồng nhau nhiều mức. Hàm
sẽ trả lại 1 ký tự cụ thể trong 1 xâu, từ. Ví dụ lệnh
sẽ trả lại giá trị là chữ "t". Hàm
trả lại độ dài của 1 xâu, từ cho trước. Ví dụ trả lại số 7.
Sau đây là 1 số thao tác, lệnh đơn giản khác liên quan đến xâu ký tự.
Gán xâu ký tự Str là rỗng
Gán giá trị của xâu String1 cho xâu Str.
Lấy ra 1 ký tự ngẫu nhiên của xâu Str.
Bổ sung xâu String1 vào cuối của xâu Str.
Bổ sung xâu String1 vào đầu của xâu Str.
3. Spelling English Word. Bài toán hc phát âm tiếng Anh
Em bắt đầu bài học bằng 1 ví dụ đơn giản sau: Bài học phát âm tiếng Anh (spelling word).
Thầy giáo yêu cầu học sinh nhập 1 từ tiếng Anh, sau đó thầy sẽ diễn giải cách phát âm từng
chữ của từ tiếng Anh này.
Ví dụ: nếu học sinh nhập từ peace thì giáo viên sẽ đưa ra cách phát âm "p e a c e".
Em tạo biến nhớ word để lưu trữ từ do người dùng nhập, sau đó phần mềm sẽ tách từng chữ
của từ này và đưa lên màn hình. Sử dụng biến chạy index để đưa từng chữ của từ này ra
màn hình. Biến nhớ saying để lưu kết quả cần đưa ra màn hình.
Đoạn chương trình chính như sau.
131 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Gán giá trị ban đầu cho biến Vòng lặp chính.
Với mỗi lần lặp, lấy ra ch = 1
ký tự tương ứng của xâu word,
rồi đưa vào cuối của biến
saying, và bổ xung thêm 1 ố
Chương trình hoàn chỉnh của bài học này, kết quả hiện trong hình bên phải.
4. Kim tra tính cht ca t, xâu ký t
4.1. Kiểm tra 1 xâu ký tự có phải là nhị phân hay không.
Xâu nhị phân là xâu chỉ bao gồm các ký tự 0 hoặc 1. Để kiểm tra 1 xâu ký tự Str có phải là
nhị phân hay không, em hãy thực hiện theo cách sau. Biến nhớ kq dùng để lưu kết quả kiểm
tra, xâu là nhị phân nếu kq = 1, ngược lại nếu kq = 0 thì xâu không là nhị phân. Để kiểm tra
ký tự ch là 0 hoặc 1 hay không chúng ta dùng biểu thức . Bắt đầu
chương trình, em gán kq = 0, trong quá trình kiểm tra trong vòng lặp nếu gặp 1 ký tự không
là 0 hoặc 1 thì gán ngay kq = 1.
132 | T ự h ọ c l ậ p t r ì n h S c r a t c h Ban đầu gán kq = 1
Vòng lặp với độ dài của xâu Str
Gán ch cho 1 ký tự theo vòng
Kiểm tra nếu ch không là nhị phân thì gán kq = 0
Em hãy viết hoàn thiện chương trình này.
4.2. Kiểm tra 1 xâu ký tự có phải là đối xứng (palindrome) hay không.
Một xâu được gọi là đối xứng (palindrome) nếu các ký tự, chữ tạo thành xâu này đối xứng
qua trục thẳng đứng. Hay nói cách khác các từ nếu đọc xuôi hay ngược đều như nhau được
gọi là palindrome. Ví dụ:
redivider, noon, civic, radar, level, rotor, kayak, reviver, racecar, madam, refer. kayak racecar 1 2 3 4 5 1 2 3 4 5 6 7
Phân tích: Nếu độ dài của xâu là len thì xâu đã cho sẽ là đối xứng nếu các cặp chữ với chỉ
số (1, len), (2, len-1), … phải có giá trị bằng nhau. Do vậy chỉ cần kiểm tra theo 1 vòng lặp
chỉ số từ 1 đến len/
2 là đủ. Xâu gốc ký hiệu là Str. Chương trình
Em hãy viết hoàn thiện chương trình này.
5. Hàm ly xâu con ca 1 xâu hoc t
133 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Bài toán: cho trước 1 xâu ký tự Str với độ dài le .
n Cần viết 1 chương trình để lấy ra 1 phần
của xâu này (xâu con), tính từ vị tri istart đến vị trí ien d của xâu này.
Ví dụ với xâu "happy new year", istart = 3, iend = 5, độ dài xâu con = iend - istart + 1 = 3.
Xâu con được trả lại được lưu trong biến string là "ppy" happy new year ppy 3 5
Thuật toán của bài toán này khá đơn giản. Thiết lập 1 vòng lặp với số bước lặp iend - istart
+ 1, biến index bắt đầu từ vị trí istart, mỗi bước lấy 1 chữ từ xâu gốc và đưa vào cuối của
xâu kết quả string.
Đoạn chương trình tính xâu con như sau.
Thiết lập xâu string = trống
Thiết lập giá trị ban đầu của biến
Vòng lặp chính số vòng = iend - istart + 1
Bổ sung 1 ký tự vào cuối của i
Em hãy hoàn thiện chương trình này bổ sung phần yêu cầu nhập xâu ký tự gốc Str, nhập 2
chỉ số bắt đầu và kết thúc xâu con istartiend.
6. Hàm xóa 1 ký t (1 phn) ca xâu
Bài toán: cho trước 1 xâu ký tự Str với độ dài le .
n Cần viết chương trình xóa đi xâu con của
xâu này, tính từ vị tri istart đến vị trí iend.
Ví dụ với xâu "happyness new year", istart = 6, ien
d = 9, xâu mẹ sau khi đã xóa xâu con có
giá trị là "happy new year" happyness new year happy new year 6 9
Thuật toán của bài toán này như sau. Tạo biến nhớ phụ string dùng để lưu tạm kết quả.
Vòng lặp chính chạy suốt chiều dài của xâu gốc Str. Với mỗi ký tự của Str, chương trình
kiểm tra nếu vị trí này < istart hoặc > iend thì đưa ký tự nào vào cuối của xâu string
(ngược lại không làm gì cả).
Đoạn chương trình xóa xâu con như sau.
134 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Thiết lập xâu string = trống
Thiết lập giá trị ban đầu của biến Vòng lặp chính
Kiểm tra nếu vị trí ký tự hiện
thời có chỉ số < istart hoặc >
iend thì đưa vào cuối của xâu
Gán string lại cho Str.
Em hãy hoàn thiện chương trình này bổ sung phần yêu cầu nhập xâu ký tự gốc Str, nhập 2
chỉ số bắt đầu và kết thúc xâu con cần xóa istartiend.
7. Hàm chèn xâu (ký t) vào xâu khác ti v trí cho trước
Bài toán: cho 2 xâu ký tự: xâu gốc Str và xâu thứ 2 Str1. Cần chèn xâu Str1 vào xâu gốc
Str tại vị trí istart, kết quả ghi lại trong chính xâu gốc Str.
Để chuẩn bị chương trình chúng ta cùng tìm hiểu qua 1 ví dụ cụ thể. Xâu gốc Str = "free
games", xâu cần chèn Str1 = "online", vị trí chèn istart = 6. online free onlinegames free games 6 = istart 1 2 3 4 5 6 = istart
Đầu tiên chúng ta cho biến nhớ index chạy và gán từng chữ của xâu Str vào 1 biến trung
gian string. Khi đến vị trí istart, quá trình này tạm dừng để chuyển sang việc bổ sung xâu
Str1 vào string. Công việc này dược thực hiện bằng 1 biến nhớ khác là index1. Khi đã bổ
sung xong Str1 thì quá trình bổ sung Str lại tiếp tục bằng index. Chương trình này sẽ có 2 vòng lặp lồng nhau.
Thuật toán trên có thể viết lại như sau:
Gán các giá trị ban đầu index =1, index1 = 1
Thực hiện lặp cho đến khi index > độ dài Str Nếu index = istart thì
Thực hiện vòng lặp có số bước bằng độ dài xâu Str1
Bổ sung Str1 vào cuối string
Gán ký tự thứ index của xâu Str vào string Gán Str = string
135 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Đoạn chương trình sau mô tả phần thuật toán chính của bài toán.
Vòng lặp ngoài, điều kiện dừng khi duyệt xong xâu Str
Kiểm tra điều kiện để thực hiện vòng lặp trong
Vòng lặp trong, bổ sung xâu Str1 vào cuối của
string. Vòng lặp này chỉ thực hiện đúng 1 lần.
Các lệnh vòng lặp ngoài: bổ sung từng
chữ của xâu Str vào cuối của string.
Gán trả lại string vào Str là xâu gốc ban ầ
Chương trình hoàn chỉnh sẽ yêu cầu học sinh nhập lần lượt các thông số: - Xâu gốc Str - Xâu cần chèn Str1 - Vị trí cần chèn
Chương trình thực hiện công việc chèn và thông báo kết quả ra màn hình.
136 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Câu hi và bài tp
1. Các biểu thức nào dưới đây viết đúng? (m2 + n2) và (m2 - n2) (a + b)2 = a2 + 2ab + b2 abc < bce
2. Sau 2 lệnh sau thì biến nhớ Str sẽ lưu trữ xâu ký tự gì?
M rng
Thiết kế 1 trò chơi Ghép ch to t chính xác sau.
Phần mềm sẽ đưa ra trên màn hình 2 từ, người chơi cần ghép 2 từ này lại với nhau để tạo thành 1 từ đúng.
Ví dụ nếu 2 từ cho ban đầu là pedwikiia thì từ cần ghép đúng phải là wikipedia. Ngưởi
chơi được yêu cầu nhập từ cần ghép từ bàn phím cho đến khi tạo được từ đúng thì dừng lại.
Nếu sau 10 lần vẫn nhập sai thì thua và phần mềm sẽ đưa ra đáp án đúng.
137 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Bài 15. Xử lí xâu ký tự 2 Mục đích
Học xong bài này bạn sẽ hiểu:
- Một số thuật toán đơn giản xử lý chữ và xâu ký tự.
- Thiết lập 1 vài trò chơi đơn giản với chữ và xâu ký tự.
Bt đầu
Em hãy đọc để hiểu 1 số trò chơi liên quan đến chữ, xâu ký tự dưới đây. Em đã biết và đã
từng chơi các trò chơi này chưa? Em hãy phát biểu suy nghĩ của mình xem có thể lập trình
để mô phỏng chúng được hay không?
1. Trò chơi sắp xếp từ
Trên màn hình xuất hiện 1 dãy các từ. Nhiệm vụ của
người chơi là cần sắp xếp lại các từ này theo 1 thứ tự
nhất định có ý nghĩa nào đó, ví dụ, sắp xếp lại để trở
thành 1 câu có nghĩa. Người chơi thao tác bằng cách
kéo thả các chữ hoặc đánh số các từ trên màn hình.
2. Trò chơi đoán từ hangman
Trên màn hình hiện yêu cầu đoán 1 từ khi cho biết ý
nghĩa của từ này. Người chơi đoán từ bằng cách nhập
từng chữ cái cấu tạo nên từ này (bằng bàn phím hoặc
chuột). Nếu nhập đúng thì chữ cái đó sẽ hiện trên màn
hình tại đúng vị trí trong từ. Người chơi chỉ được
phép nhập sai 1 số lần nhất định.
Ni dung bài hc
1. S nh phâ n
Em có hiểu số nhị phân là gì không?
Trong các số sau, số nào là nhị phân? 345671 1011101 1001002 1010101 11011a1b 3220011 1111111 0000111
Những số mà chúng ta làm việc hàng ngày đều là các số thập phân, hay còn gọi là số được
viết trong hệ thập phân. Các số thập phân sử dụng 10 chữ số 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 để thể
hiện. Nhưng trong máy tính chỉ có thể hiểu 2 chữ số là 0 và 1. Do vậy các số lưu trữ trong
máy tính chỉ bao gồm các chữ số 0, 1. Các số này được gọi là số nh phâ . n Hệ đếm chỉ
dùng chữ số 0 và 1 gọi là h nh phâ .
n Hệ thập phân tiếng Anh gọi là decimal, hệ nhị phân gọi là binary.
Bảng sau cho ta biết tương ứng giữa 1 số số nhị phân và thập phân.
138 | T ự h ọ c l ậ p t r ì n h S c r a t c h decimal binary decimal binary decimal binary decimal binary 1 1 5 101 9 1001 13 1101 2 10 6 110 10 1010 14 1110 3 11 7 111 11 1011 15 1111 4 100 8 1000 12 1100 16 10000
2. Chuyn s nh phân sang thp phân
Bài toán: cho 1 số nhị phân anan-1….a1a0 (binary), cần chuyển đổi số này sang hệ thập phân.
Chúng ta quan sát qui luật biểu diễn số dưới dạng nhị phân và tìm ra qui luật tổng quát cho
việc chuyển đổi số viết theo hệ nhị phân sang hệ t ậ h p phân.
100 100 = 1.22 + 0.2 + 0 = 4 (hệ thập phân)
111 111 = 1.22 + 1.2 + 1 = 7 (hệ thập phân)
Tổng quát chúng ta thấy:
anan-1….a1a0 (binary) = an.2n-1 + an-1.2n-2 + …. + a1.2 + a0 (decimal)
Nhìn vào công thức trên chúng ta chưa hình dung được thuật toán cần thực hiện trên máy
tính. Chúng ta sẽ viết lại quá trình tính toán theo từng bước nhỏ để tính được số thập phân. an 2.an + an-1 2.( 2.an + an-1) + an-2
2.( 2.( 2.an + an-1) + an-2) + an-3 ……
2.(an.2n-3 + an-1.2n-4 + …. + a0) + a1
2.(an.2n-2 + an-1.2n-3 + …. + a1) + a0.
Như vậy sau đúng n+1 bước thì quá trình tính trên kết thúc và kết quả thu được số thập phân cần tìm.
Số nhị phân ban đầu được đưa vào biến nhớ Binary. Số thập phân là kết quả đuọc lưu trong
biến nhớ Decimal. Các biến nhớ trung gian bao gồm index, lench.
Gán ban đầu: Decimal = 0, index = 1 len = độ dài xâu Binary
Thực hiện vòng lặp với độ dài len
ch = chữ số tương ứng chỉ số index của Binary Decimal = 2.Decimal + ch Tăng index lên 1
Đoạn chương trình mô tả thuật toán biến đổi hệ nhị phân sang thập phân Binary Decimal như sau.
139 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Bắt đầu vòng lặp độ dài
Lấy ra ký tự tương ứng của xâu
Thay đổi Decimal = 2*Decimal + ch Tăng index lên 1
Chương trình hoàn chỉnh của bài toán này như sau:
3. Chuyn s thp phân sang nh phân
Bài toán: cho trước số thập phân, hãy biểu diễn số này sang hệ nhị phân.
Bài toán này giải quyết vấn đề ngược lại so với bài toán trên.
Để tìm được cách làm bài này, chúng ta lại quan sát công thức:
anan-1….a1a0 (binary) = an.2n-1 + an-1.2n-2 + …. + a1.2 + a0 (decimal)
Gọi số thập phân ban đầu là D, chúng ta sẽ phân tích quá trình tính toán để tính được lần
lượt các số a0, a1, …., an-1, an như sau.
Số thập phân ban đầu: D
a0 = D mod 2 (tính số dư); an.2n-2 + an-1.2n-3 + …. + a1 = D/2 (làm tròn số); (gán D = D/2). a1 = D mod 2; D = D/2. ……. an-1 = D mod 2, D = D/2.
an = D mod 2, D/2 = 0, kết thúc.
Như vậy qui trình trên sẽ dừng lại khi D = 0.
140 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Số thập phân đầu vào lưu trong biến nhớ Decimal. Xâu nhị phân đầu ra lưu trong biến nhớ
Binary. Biến ch dùng để tính các giá trị trung gian ai. Thuật toán chuyển đổi ở trên được
viết tường minh như sau: Gán Binary = rỗng
Thực hiện lặp cho đến khi Decimal = 0 Đặt ch = Decimal mod 2;
Decimal = Decimal / 2 (làm tròn xuống)
Bổ sung ch vào bên trái của Binary
Đoạn chương trình mô tả thuật toán chuyển đổi số Nhị phân sang Thập phân trên được viết trong Scratch như sau: Gán Binary = rỗng.
Vòng lặp chính với điều kiện dừng Decimal = 0
Tính ch = số dư Decimal chia 2 Giảm Decimal khi chia cho 2
Bổ sung ch vào bên trái của
Chương trình hoàn chỉnh của bài toán này như dưới đây.
4. Kim tra 1 ký t / t có nm trong 1 t khác hay không
Bài toán: Cho trước 2 xâu Str1Str. Cần kiểm tra xem xâu Str1 có nằm trong xâu Str
không, nếu có thì cần chỉ ra vị trí ký tự đầu tiên của Str1 trong Str. Nếu không nằm trong
thì trả lại giá trị 0.
Ví dụ : 2 xâu là babababab. bab ababab 2
141 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Xâu bab mặc dù được tìm thấy trong xâu ababab 2 lần nhưng hàm sẽ trả lại vị trí đầu tiên, tức là giá trị 2.
Giả sử 2 xâu Str1Str có độ dài là len1len. Kết quả của thuật toán được trả lại trong biến po .
s Nếu không tìm thấy (Str1 không nằm trong Str) thì pos = 0, ngược lại pos > 0 là vị
trí đầu tiên Str1 nằm trong Str.
Ý tưởng của thuật toán như sau: Bắt đầu từ vị trí đầu tiên của xâu Str, tiến hành kiểm tra lần
lượt các vị trí bắt đầu từ 1 bằng biến index. Với mỗi vị trí như vậy cần tiến hành kiểm tra
len1 phần từ tiếp theo xem có trùng với Str1 không. Nếu trùng thì lập tức dừng vòng lặp, gán giá trị po
s = index. Nếu không trùng thì tiếp tục tăng index và kiểm tra tiếp. Trong
vòng lặp kiểm tra bên trong sử dụng thêm các biến nhớ: indexin, index1, ch1, kq. Biến k q
có ý nghĩa kq = 1 nếu đã tìm thấy Str1 trong Str. Trong vòng lặp trong, sử dụng biến nhớ
indexin để chạy trên xâu Str đồng thời với biến index1 chạy trên Str1. Index = 1 Indexin Ở vòng lặp ầ đ u tiên, Index = 1 ababab
Str1 không trùng vi xâu con trong Str. bab kq = 0, pos = 0 Index1 Index = 2 Indexin
vòng lp th 2, Index = 2 ababab
Str1 trùng vi xâu con trong Str. bab Index1 kq = 1, pos = 2
Mô tả thuật toán trên bằng lời tường minh như sau:
Gán các giá trị ban đầu: pos = 0, index = 1
Thực hiện lặp cho đến khi pos > 0 hoặc index > len-len1+1
Gán index1 = 1, kq = 1, indexin = index
Lặp cho đến khi index1 > len1 hoặc kq = 0
Đặt ch = ký tự thứ index của Str
Đặt ch1 = ký tự thứ index1 của Str1
Nếu ch khác ch1 thì gán kq = 0 Tăng index1 lên 1 Tăng indexin lên 1 Nếu kq = 1 thì Gán pos = index nếu không thì Tăng index lên 1
Đoạn chương trình Scratch mô tả thuật toán trên như sau:
142 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Thiết lập các giá trị ban đầu: pos = 0, index = 1 Vòng lặp ngoài, chính
Thiết lập các giá trị ban đầu cho
vòng lặp trong, kiểm tra sự
trùng nhau giữa Str1 và 1 phần của Str Vòng lặp trong Kiểm tra 2 ký tự tương ứng của Str1 và Tăng các biến chạy trong vòng lặp trong
Kiểm tra kết quả của vòng
lặp trong, chuẩn bị tăng biến index cho vòng lặp
Em hãy hoàn thiện chương trình đầy đủ của bài toán này.
Chương trình sẽ yêu cầu học sinh nhập 2 dữ liệu: - Xâu dữ liệu gốc Str.
- Xâu dữ liệu cần kiểm tra Str1
Chương trình sẽ thông báo kết quả có tìm thấy hay không. Nếu tìm thấy thì chỉ ra vị trí mà
Str1 nằm trong Str.
Câu hi và bài tp
1. Viết chương trình nhập từ bàn phím 1 xâu ký tự bất kỳ Str. Sau đó tiến hành đổi chỗ 2
phần tử bất kỳ trong xâu trên và hiển thị kết quả trên màn hình.
2. Viết chương trình thực hiện công việc sau:
Nhập từ bàn phím 1 xâu ký tự bất kỳ Str, sau đó tiến hành hoán vị ngẫu nhiên các ký tự của
Str, kết quả đưa vào xâu Str1. Kết quả thể hiện ra màn hình ca 2 xâu Str và Str1.
3. Viết chương trình thực hiện công việc sau:
- Nhập 1 xâu ký tự bất kỳ Str từ bàn phím.
- Thực hiện việc thiết lập xâu Str1 bằng cách thay đổi ngược lại thứ tự các ký tự của xâu
Str. Ví dụ nếu ban đầu Str = "abcdef" thì kết quả xâu Str1 = "fedcba".
143 | T ự h ọ c l ậ p t r ì n h S c r a t c h
- Thể hiện kết quả xâu Str1 trên màn hình.
M rng
Thiết kế trò chơi tìm từ (Hangman) dạng đơn giản sau.
Từ cần tìm được lưu trong biến nhớ Word
(được gán cứng trong chương trình). Giao
diện chương trình là trò chơi dự đoán từ
này. Từ Word có độ dài <= 8.
Trên màn hình sẽ thể hiện các ô tương ứng
với độ dài của từ cần tìm. Các chữ chưa
được đoán sẽ hiện dấu ?, các chữ đã đoán
rồi sẽ hiện chính xác trên màn hình.
Chương trình sẽ liên tục đưa ra câu hỏi:
"Nhập chữ cái để đoán từ". Nhiệm vụ của
người chơi là nhập 1 chữ cái. Nếu chữ cái
này có trong từ thì nó sẽ hiện ra trên màn
hình (có thể 1 hoặc nhiều). Nếu không có thì chương trình thông báo "không có chữ cái
này" và yêu cầu nhập tiếp tục, cho đến khi nào lật được hết các chữ cái của từ đã cho.
144 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Bài 16. Làm việc với List 1 Mục đích
Học xong bài này bạn sẽ:
- Hiểu ý nghĩa của List (mảng, dãy giá trị), biết cách thiết lập dãy trong Scratch.
- Ứng dụng List giải 1 số bài tập đơn giản.
- Thuật toán sắp xếp, đổi chỗ, tìm min, max trong dãy. Bắt đầu
Em đã từng xem, từng biết các thông tin được liệt kê như một danh sách, ví dụ như danh
sách học sinh lớp học, danh sách các món ăn, danh sách các tỉnh, thành phố, ….
Em hãy liệt kê thêm các danh sách thông tin mà em đã từng biết đến ở nhà, ở trường và ngoài xã hội .
Chúng ta đã được làm quen với khái niệm biến nhớ, là công cụ để lưu trữ các thông tin giúp
người lập trình có thể tạo ra được các chương trình hiệu quả hơn. Tuy nhiên mỗi biến nhớ
chỉ lưu trữ được 1 giá trị tại 1 thời điểm. Nếu như, ví dụ, chúng ta cần lưu trữ đồng thời tên
của tất cả học sinh trong lớp học, thì phải làm như thế nào. Rõ ràng từng biến nhớ cụ thể
không thể giải quyết được yêu cầu trên.
Bài học này sẽ giúp em hiểu được một công cụ mới để thực hiện yêu cầu trên đây.
Ni dung bài hc
1. Biến nh kiu danh sách (List)
Biến nhớ kiểu danh sách dùng để lưu trữ một dãy giá trị, có thể là số hoặc chữ. Ví dụ dãy
tên học sinh sau được đánh số từ 1 đến 6, có thể được lưu trong 1 biến nhớ kiểu danh sách (list). Hà Bình Nguyệt Vũ Hùng Vân Bình 1 2 3 4 5 6
145 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Để mô tả 1 dãy (số, chữ) tổng quát, người ta hay dùng ký hiệu: a1, a2, …., an. Số hạng tổng quát sẽ ký hiệu là ai.
Trong Scratch, biến nhớ kiểu danh sách không cần khai báo trước kiểu dữ liệu và số lượng
phần tử. Thao tác tạo ra các biến nhớ kiểu danh sách rất đơn giản, trong nhóm lệnh Dữ liệu (Data).
Việc khởi tạo biến nhớ danh sách rất đơn giản, bởi nút lệnh Make a List từ nhóm lệnh Data.
Giao diện tạo biến nhớ sạng
List. Có 2 loại: biến nhớ
Nút Make a List dùng để
chung và biến nhớ riêng cho
khởi tạo 1 biến nhớ dạng mỗi nhân vật.
Xuất hiện các lệnh làm
việc với biến nhớ List .
Cũng giống như biến nhớ bình thường, biến nhớ dạng danh sách có thể là biến nhớ chung
hoặc riêng. Nếu là biến nhớ chung thì tất cả các nhân vật đều có thể sử dụng, cập nhật và
thay đổi dữ liệu. Nếu là biến nhớ riêng thì chỉ có nhân vật là chủ mới có các quyền truy cập,
sử dụng và thay đổi thông tin.
Việc nhập dữ liệu vào biến nhớ List có thể thực hiện bằng lệnh hoặc có
thể nhập trực tiếp trên sân khấu của Scratch. Lệnh
có tính năng bổ sung thêm 1 thông tin vào cuối danh sách của biến nhớ dạng List. Ví dụ lệnh
sẻ bổ sung thêm 1 tên học sinh là "Việt Anh" vào cuối
của biến nhớ HS (biến nhớ dạng List).
Chú ý: khác với biến nhớ thông thường, biến dạng List nếu khai báo là dùng riêng cho nhân
vật sẽ không hiện trong các thuộc tính của nhân vật, do đó các nhân vật khác sẽ không thể
truy cập hay sử dụng các biến nhớ riêng này.
Em hãy giải thích ý nghĩa của các lệnh sau và ghi sang cột bên phải .
146 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Chúng ta sẽ cùng nhau tìm hiểu sâu sắc hơn các ứng dụng của biến nhớ List trong các hoạt động tiếp theo.
2. Nhp danh sách hc sinh lp hc
Em hãy thực hiện chương trình đơn giản sau.
Chương trình yêu cầu người dùng nhập họ tên
học sinh trong lớp học vào một danh sách, trong
thông báo ghi rõ là đang nhập học sinh thứ mấy.
Để kết thúc chỉ cần nhập 1 dữ liệu rỗng, tức là bấm Enter ngay.
Biến nhớ danh sách lưu trữ tên học sinh sẽ được đặt tên là HS. Chúng ta sử dụng thêm 1
biến nhớ nữa Stt dùng để lưu số thứ tự của học sinh hiện thời đang nhập. Dùng ngay biến
Stt để kiểm tra khi nào thì kết thúc quá trình nhập liệu từ bàn phím.
Chương trình hoàn chỉnh của bài toán này như sau: Điều kiện kiểm tra vòng lặp là Stt = 0 Kiểm tra nếu dữ liệu nhập vào khác rỗng thì bổ sung vào danh sách HS, nếu người dùng không nhập, chỉ nhấn Enter thì đặt Stt = 0 để kết thúc quá
3. Các thao tác trc tiếp trên danh sách
Có nhiều cách để thao tác với dữ liệu của biến nhớ danh sách: thông qua các lệnh, nhập trực
tiếp trên màn hình Scratch hoặc nhập thông qua tệp (Text File)..
Các thao tác trực tiếp với dữ liệu trên biến nhớ danh sách: bổ sung, chèn, xóa, ....
147 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Bổ dung dữ liệu vào cuối của biến
nhớ. Lệnh này sẽ làm cho dãy dữ liệu của
biến nhớ tăng thêm 1 phần tử nằm cuối danh sách.
Lệnh này sẽ xóa, hủy khỏi danh sách 1 phân
tử được xác định trước. Nếu chỉ số của phần
tử ghi trên lệnh nằm ngoài phạm vi của dãy
(ví dụ = 0 hoặc > độ dài dãy) thì lệnh không
có tác dụng. Một lựa chọn khác của lệnh nếu
thiết lập tham số all thì lệnh có dạng sau sẽ xóa toàn bộ dữ
liệu của biến nhớ này (hay đưa biến nhớ về
trạng thái như lúc mới khởi tạo).
Lệnh này sẽ chèn thêm 1 phần tử có giá trị
vào trước phần tử thứ <1> của dãy.
Nếu thay thế chỉ số cụ thể bằng thì lệnh
sẽ chèn vào 1 vị trí bất kỳ của dãy. Sau lệnh
này dãy sẽ tăng lên 1 phần tử.
Lệnh này sẽ thay thế phần tử thứ <1> cjủa
dãy bằng giá trị . Nếu thay thế chỉ số cụ thể bằng thì
lệnh sẽ thay thế vào vào 1 vị trí bất kỳ của
dãy. Chú ý: lệnh này không làm tăng số phần tử của dãy.
Các lệnh sau sẽ có chức năng truy cập, khai thác dữ liệu danh sách:
(hàm) trả lại giá trị cụ thể của một phần tử
của dãy. Nếu tham số thay bằng , lệnh sẽ trả lại
1 phần tử bất kỳ trong dãy.
(hàm) trả lại độ dài của dãy.
(hàm logic) kiểm tra xem dãy có chứa phần
tử được ghi tại vị trí hay không.
Lệnh này có tính năng hiển thị tất cả các phần tử của dãy.
Nhp d liu trc tiếp trên màn hình Scratch
Có thể nhập nhanh và trực tiếp dữ liệu kiểu danh sách trên màn hình của Scratch. Muốn vậy
chúng ta đặt chế độ hiển thị biến nhớ này trên màn hình.
148 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Hỉnh ảnh của biến nhớ danh sách sẽ hiện ra như hình dưới đây. Bây giờ chúng ta có thể thao
tác trực tiếp trên biến nhớ này để nhập dữ liệu. Nháy nút
Bước tiếp theo chúng ta nhập trực tiếp dữ liệu theo từng này để bắt
phần từ của danh sách. Có thể dùng các phím lên, xuống đầu tiến
để chuyển lên, xuống trong danh sách. Tiến hành nhập hành nhập
cho đến khi xong. Muốn xóa 1 phần tử nháy dấu x bên liệu. h ô à
Chuy
n nhp d liu t Plain Text File
Một cách nhập dữ liệu nhanh và hiệu quả nữa là nhập trước dữ liệu vào 1 tệp văn bảng dạng
plane text (tệp *.txt), mỗi đơn vị dữ liệu ghi trên 1 dòng, sau đó chuyển nhập nhanh vào
danh sách của Scratch. Qui trình nhập này được mô tả trong hình sau. Nháy chuột
Sau khi chọn tệp dữ liệu phải trên
ngoài (dạng *.txt), Scratch vùng biến
sẽ lập tức chuyển tất cả dữ nhớ và
liệu từ tệp này vào biến nhớ. chọn
149 | T ự h ọ c l ậ p t r ì n h S c r a t c h
4. Bài toán tìm Min, Max
Bài toán: cho trước 1 dãy số chứa trong 1 biến nhớ danh sách. Yêu cầu cần tìm và hiển thị
phần tử nhó nhất (Min) và lớn nhất (Max) của dãy này.
Thuật toán, hay cách giải quyết bài toán này như sau: min index Giá trị ban đầu của
biến nhớ min, gán cho
p hần tử đầu tiên của
Khi kết thúc, min
giá trị = phần tử nhỏ nhất của dãy
Tạo ra 2 biến nhớ: biến index để chạy dọc theo dãy số, biến min để lưu kết quả so sánh
trung gian. khi di chuyển dọc theo dãy số, so sánh min và giá trị phần tử của dãy, nếu giá trị
này < min thì lập tức thay thế min bằng giá trị này. Trong ví dụ mô phỏng trên, biến nhớ
min được thay đổi 3 lần. Thuật toán mô tả bằng lệnh Scratch như sau:
Vòng lặp với số lần lặp = độ dài dãy số. So sánh phần tử tương ứng của dãy với min, nếu < min thì thay thế min bằng giá trị
Chương trình hoàn chỉnh như sau:
150 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Em hãy viết chương trình tương tự tìm giá trị phần tử lớn nhất (Max) của 1 dãy số cho trước.
5. Bài toán tìm kiếm giá tr trong dã y
Tìm kiếm thông tin là 1 bài toán lớn có rất nhiều ứng dụng rộng rãi trên thực tế. Trong hoạt
động này chúng ta cùng tìm hiểu một vài trường hợp đơn giản nhất của công việc này.
Bài toán tìm 1 phn t
Cho trước 1 danh sách dữ liệu, cần tìm ra 1 phần tử thỏa mãn 1 điều kiện nào đó. Ví dụ thực
tế của bài toán này rất nhiều. Ví dụ:
- Tìm trong lớp 1 bạn nam có chiều cao lớn hơn 1,7m.
- Tìm trong dãy 1 số là số nguyên tố.
Chúng ta cùng tìm hiểu và giải quyết bài toán này.
Bài toán cụ thể có thể đơn giản hóa như sau: Giả sử dãy dữ liệu là dãy số, cần tìm 1 phần tử
trong dãy trên có giá trị = a. Dãy số trên được lưu trong biến nhớ danh sách có tên dayso.
Đầu vào (Input): Danh sách dayso, giá trị a.
Đầu ra (Output): Thông báo "không tìm thấy" hoặc "có" và chỉ ra số thứ tự của phần tử
được tìm thấy có giá trị a.
Chúng ta sử dụng biến nhớ pos để lưu lại chỉ số của phần tử tìm thấy trong dãy. Nếu pos = 0
tức là không tìm thấy. Thuật toán đơn giản này mô tả như sau:
Gán các giá trị ban đầu: pos = 0, inde x = 1.
Vòng lặp chính có điều
kiện dừng nếu pos > 0.
151 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Chương trình hoàn chỉnh như sau:
Bài toán tìm tt c các phn t
Cho trước 1 danh sách dữ liệu, cần tìm ra tất cả các phần tử của dãy thỏa mãn 1 điều kiện
nào đó, đếm số lượng các phần tử đã tìm được. Ví dụ:
- Tìm trong lớp tất cả các bạn có tên "Hùng".
- Tìm tất cả các số chia hết cho 3 trong dãy số cho trước.
Cách làm bài này tương tự như bài toán tìm 1 phần tử, chỉ khác là chúng ta sẽ duyệt dãy từ
đầu đến cuối và có thêm 1 biến nhớ nữa count dùng để đếm số lượng các phần tử tìm được.
Nếu count = 0 tức là không tìm thấy.
thiết lập các giá trị ban đầu.
Vòng lặp với số bước bằng độ dài của
Kiểm tra: nếu giá trị phần
tử của dãy = a thì tăng biến count lên 1
Chương trình chính yêu cầu như sau:
- Dãy số cho trước đã được nhập từ trước và
- Chương trình yêu cầu nhập giá trị số cần tìm, sau đó đưa ra kết quả: hoặc thông báo không
tìm thấy, hoặc thông báo đã tìm thấy và số lượng phần tử tìm được.
152 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Chương trình hoàn chỉnh như sau.
6. Bài toán sp xếp dãy
Sắp xếp 1 dãy dữ liệu cho trước là 1 bài toán rất hay gặp trên thực tế. Ví dụ:
- Sắp xếp lớp đứng xếp hàng theo thứ tự từ thấp đến cao.
- Sắp xếp tên học sinh trong lớp theo thứ tự ABC (thứ tự từ điển).
- Sắp xếp các tỉnh thành phố theo diện tích, dân số.
Chúng ta sẽ cùng nhau tìm hiểu bài toán sắp xếp dãy số trong hoạt động này. Hãy bắt ầ đ u từ
1 ví dụ đơn giản: sắp xếp dãy 4 số sau theo thứ tự tăng dần. Dãy số gốc: 10 7 9 4
1. Tìm phần tử nhỏ nhất là 4, đổi chỗ với 7, thu được dãy: 4 1 0 9 7
2. Tìm phần tử nhỏ nhất trong 3 số cuối, đó là 7, đổi chỗ cho 10, thu được: 4 7 9 1 0
Thuật toán sử dụng trên được gọi là Sp xếp chn.
Đổi chỗ 2 phần tử của dãy
Trong cách làm trên chúng ta thấy thao tác lõi là "đổi chỗ" hai phần tử trong dãy, hay tổng
quát hơn là đổi chỗ 2 biến nhớ bất kỳ trong bộ nhớ máy tính.
Cho 2 biến nhớ m, n với các giá trị đã gán. Tìm cách đổi giá trị giữa 2 biến nhớ này. Cách
thực hiện phổ biến nhất là sử thêm 1 biến nhớ trung gian, ký hiệu là tg. Các bước như sau:
153 | T ự h ọ c l ậ p t r ì n h S c r a t c h Gán m cho tg, tg = m Gán n cho m, m = n Gán tg cho n, n = tg
Đoạn chương trình đổi chỗ 2 phần tử t ứ
h i, j của dãy số dayso như sau.
Bài toán sắp xếp dãy: Thuật toán chọn
Giả sử dãy cần sắp xếp theo thứ tự tăng dần là: a1, a2, …., an
Thuật toán chọn thực hiện như sau:
Bước 1. Tìm trong các số a2, a3, …., an
phần tử nhỏ nhất, giả sử là aj. Đổi chỗ a 1, aj nếu a1 > aj
Bước 2. Tìm trong các số a 3, a4, …., an
phần tử nhỏ nhất, giả sử là aj. Đổi
chỗ a2, aj nếu a2 > aj ………
Bước n-2. Tìm trong các số an-1, an
phần tử nhỏ nhất, giả sử là aj. Đổi
chỗ an-2, aj nếu an-2 > aj
Bước n-1. Đổi chỗ an-1, an nếu an-1 > an.
Có thể mô tả thuật toán này theo cách viết sau:
Vòng lặp n-1 lần, cho i chạy từ 1 đến n-1
Chọn ra phần tử nhỏ nhất trong các số ai+1, ai+2, …, an
Giả sử chỉ số này là j
Nếu ai > aj thì đổi chỗ ai, aj
Để thiết kế chương trình chúng ta tạo ra các biến nhớ sau:
i, j - các biến nhớ chạy ở vòng ngoài và vòng lặp trong.
jmin - chỉ số phần tử nhỏ nhất đ ợ
ư c tìm thấy ở vòng lặp bên trong.
min - giá trị phần tử nhỏ nhất, dùng trong vòng lặp trong tìm min.
tg - biến nhớ trung gian dùng cho việc đổi chỗ 2 phần tử.
154 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Sơ đồ thuật toán được mô tả như sau:
Thiết lập thông số ban đầu cho biến chạy i = 1.
Vòng lặp ngoài theo i, chạy từ 1 đến n-1
Chuẩn bị cho vòng lặp trong. Thiết lập
các tham số ban đầu cho j, jminmin.
Vòng lặp trong với j chạy từ i+1 đến n
Ra khỏi vòng lặp trong, kiểm tra phần tử thứ i với min. Tăng i lên 1, vòng lặp ài
Toàn bộ đoạn chương trình chính như sau:
Em hãy hoàn thiện chương trình này.
Câu hi và bài tp
1. Tạo 1 biến danh sách và nhập trực tiếp thành 1 dãy số.
155 | T ự h ọ c l ậ p t r ì n h S c r a t c h
2. Tạo 1 biến danh sách và nhập trực tiếp 1 danh sách tên học sinh trong lớp.
3. Thực hiện bài toán chèn 1 phần tử vào dãy đã sắp xếp đúng: cho trước 1 dãy số đã được
sắp xếp theo thứ tự tăng dần, cho trước 1 số P. Hãy viết đoạn chương trình chèn số P này
vào dãy trên sao cho dãy vẫn được sắp xếp đúng.
4. Cho trước 1 dãy số, hãy viết chương trình để sắp xếp lại dãy số này theo các yêu cầu sau: (a) Dãy giảm dần.
(b) Các số âm lên trước, các số dương ở phía sau.
(c) Các số chẵn lên trước, số lẻ ở phía sau.
5. Cho trước 1 danh sách tên học sinh trong lớp. Hãy viết chương trình để sắp xếp lại danh
sách học sinh này theo thứ tự từ điển.
6. Cho trước 1 dãy số. Hãy viết chương trình sinh 1 dãy số là 1 hoán vị ngẫu nhiên của dãy số ban đầu.
M rng
Thiết kế 1 chương trình ứng dụng thao tác với dữ liệu là danh sách học sinh như sau:
Khi khởi động chương trình, Mèo sẽ thông
báo tên các học sinh hiện có trong danh sách.
Trên màn hình có 3 nút lệnh.
Khi nháy lên nút Input Data, quá trình nhập
trực tiếp dữ liệu từ bàn phím bắt ầ đ u. Nhập
liên tục cho đến khi nhấn Enter không nhập gì cả.
Khi nháy lên nút Delete Data, chương trình
sẽ yêu cầu người dùng nhập tên học sinh
muốn xóa, sau đó kiểm tra và xóa tên này trong danh sách.
Khi nháy lên nút View Data, chương trình hiển thị toàn bộ danh sách học sinh hiện có.
156 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Bài 17. Làm việc với List 2 Mục đích
Trong bài này bạn sẽ học và biết:
- Một số ứng dụng đơn giản của dữ liệu List
- Một số thuật toán nâng cao đối với dũ liệu List
- Ứng dụng thực tế của danh sách. Bắt đầu
Em hãy đọc yêu cầu của 1 trò chơi Tìm hiểu động vt sau đây và suy nghĩ xem có thể thiết
kế hệ thống dữ liệu như thế nào để có 1 chương trình, bài học hay.
Phần mềm sẽ ra liên tục các câu hỏi, em cần trả lời
trực tiếp bằng cách gõ bàn phím. Nếu gõ đúng tên
con vật thì hình ảnh của động vật này sẽ hiện trên
màn hình. Nếu gõ không đúng, gõ sai thì thông báo
"sai" hoặc hình ảnh sẽ không hiện.
Cứ như vậy cho đến khi em nhấn Enter ngay thì trò chơi kết thúc.
Các gợi ý bằng câu hỏi:
- Giả sử em có 10 hình ảnh con vật dùng làm dữ liệu cho trò chơi này, em sẽ thiết kế bộ dữ liệu như thế nào.
- Có 1 cách đơn giản nhất là tạo ra 10 biến nhớ và 10 nhân vật trên sân khấu dùng để lưu trữ
tên của các con vật và thể hiện hình ảnh con vật.
- Nếu giả sử em muốn tăng số lượng con vật lên thì em sẽ phải làm gì? Có cách nào khi tăng
con vật mà không phải tăng thêm biến nhớ hoặc nhân vật không?
Chúng ta hãy tìm hiểu bài toán này và nhiều bài toán tương tự khác trong bài học này.
Ni dung bài hc
1. Tìm hiểu động vt
Trong hoạt động đầu tiên này, chúng ta sẽ quay trở lại bài toán, trò chơi Tìm hiểu động vật
và cùng xem nếu sử dụng các biến nhớ danh sách thì chương trình sẽ trở nên rất mạch lạc, sáng sủa.
157 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Chương trình sẽ liên tục đưa ra câu
hỏi "Em thích con vật gì?". Người
chơi trả lời bằng cách nhập tên con vật từ bàn phím.
Nếu nhập đúng hình ảnh con vật sẽ
hiện trên màn hình và giáo sư sẽ
thông báo thông tin kỹ hơn về động vật này.
Trò chơi kết thúc khi ng ời ư chơi ấ
Chúng ta sẽ sử dụng 2 biến danh sách chính là AnimalAnimal_list. Biến Animal là
danh sách tên các con vật cần tìm hiểu. Biến Animal_list sẽ lưu thông tin tra cứu chi tiết
tương ứng của các con vật đã có trong danh sách Animal. Ví dụ 1 bảng thông tin như sau.
Chú ý bảng này có thể có số dòng lớn tùy ý. Animal Animal_list mèo
Mèo - loài vật nuôi trong nhà rất phổ biến trong mọi gia đình. khủng
Khủng long - loài vật khổng lồ nhất trên trái đất, đã tuyệt chủng từ cách long đây hàng triệu năm chó
Chó - loài vật nuôi có tác dụng giữ nhà rất phổ biến. voi
Voi - con vật 4 chân lớn nhất hiện nay. Voi sống nhiều ở châu Phi và châu Á. ngựa
Ngựa - loài vật thường dùng để kéo xe, chở đồ, rất phổ biến trên thế giới . sư tử
Sư tử - là động vật ăn thịt lớn nhất trên ạ
c n, được mệnh danh là chúa rừng xanh.
Tiếp theo chúng ta sẽ thiết kế cách lưu trữ hình ảnh các con vật. Chỉ cần tạo 1 nhân vật cho
công việc này. Hình ảnh các con vật khác nhau sẽ tương ứng với trang phục của nhân vật này.
Thiết lập hệ thống trang phục (costume) với tên
trùng khớp với bảng Animal.
158 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Bây giờ chúng ta sẽ thiết kế sơ đồ hoạt động của chương trình này. Sơ đồ này có thể tóm tắt
trong hình sau, bắt đầu từ sân khu.
Yêu cầu học sinh nhập tên 1 con vật từ
bàn phím. Thông tin nhập sẽ được lưu
trong biến nhớ name.
Nếu name khác rỗng xử lý tiếp.
Nếu name = rỗng dừng chương trình. G G ử ử i i t h thô
Chuyển điều khiển sang nhân vật ông ng thy giáo. đ i đ ệ iệ
Tìm kiểm thông tin trong bảng p: p :
Animal_list về con vật ghi trong E n
biến nhớ name. Nếu tìm thấy thì d
hiển thị thông tin con vật này trên
Chuyển điều khiển sang nhân vật con mèo.
Chuyển trang phục sang tên lưu
trong biến nhớ name và thể hiện. Chuyển điều khiển sang nhân vật con mèo.
Ẩn, không thể hiện trên màn hình.
Chúng ta sẽ bắt đầu từ sân khấu. Sân khấu trong Scratch cũng có cửa sổ lệnh của riêng
mình. Trong bài toán này, sân khấu sẽ bắt đầu chương trình với sự kiện .
Thực hiện lệnh yêu cầu nhập tên
con vật trong 1 vòng lặp vô hạn.
Kiểm tra xem dữ liệu nhập có rỗng hay không.
Nếu dữ liệu nhập không rỗng thì lưu kết quả
nhập vào biến name và truyền thông điệp Go
cho 2 nhân vật của chương trình.
Nếu dữ liệu nhập làg rỗng thì truyền thông điệp En . d
159 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Đây là cửa sổ lệnh của nhân vật con mèo (con mèo có 5 trang phục khác).
Khi bắt đầu chương trình, nhân
vật không hiển thị trên màn hình.
Khi nhận thông điệp Go, chuyển
trang phục sang giá trị ghi trong
biến nhớ name và hiển thị trên
Khi nhận thông điệp End, ẩn
không hiển thị và dừng toàn bộ chương trình.
Khi nhận thông điệp Go, nhân vật thầy giáo cần thực hiện xử lý biến nhớ name, kiểm tra
xem name có tên trong bảng Animal không. Nếu có thể tìm ra chỉ số chính xác dòng chưa
tên tương ứng với biến name này, sau đó sẽ thể hiện trên màn hình dữ liệu có trong bảng
Animal_list. Chỉ số chính xác dòng chứa tên con vật tương ứng với name được lưu trong biến nhớ pos.
Kiểm tra điều kiện tên con
vật trong biến name có nằm
trong danh sách Animal hay
không, nếu có mới xử lý
Vòng lặp này có tính năng tìm ra giá trị po s là vị trí của
biến name trong danh sách
Thông báo thông tin chi tiết
về con vật, lấy thông tin từ bảng Animal_list.
2. Bài toán sinh hoán v, tp con ngu nhiên
Trên thực tế có rất nhiều bài toán đòi hỏi việc sinh ngẫu nhiên các tập hợp con, sinh ngẫu
nhiên các hoán vị, … Trong hoạt động này chúng ta sẽ cùng giải quyết một vài bài toán đó trong môi trường Scratch.
Bài toán 1. Cho trước 1 xâu ký tự Str, cần sinh ra 1 xâu Strout là hoán vị ngẫu nghiên của xâu Str ban đầu.
160 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Bài toán 2. Cho trước dãy số (hoặc chữ) a1, a2, …., an. Cần sinh ra 1 hoán vị ngẫu
nhiên của dãy này, đưa ra dãy sau: b1, b2, …., bn là hoán vị của dãy ban đầu.
Bài toán 3. Cho trước dãy số (hoặc chữ) a1, a2, …., an. Cần sinh ra một dãy ngẫu
nhiên m phần tử của dãy trên: b1, b2, …, bm với m cho trước.
Bài toán 1. Cho trước 1 xâu ký tự Str, cần sinh ra 1 xâu Strout là hoán vị ngẫu nghiên của xâu Str ban đầu.
Ý tưởng ban đầu của thuật toán này khá đơn giản: lấy ngẫu nhiên các ký tự từ xâu Str và bổ
sung vào xâu Strout. Yêu cầu của bài toán là sau khi thực hiện giá trị xâu Str cần giữ
nguyên, không thay đổi. Sử dụng các lệnh cụ thề của Scratch có thể viết lại cách làm trên
dưới dạng cây lệnh như sau:
Đặt Strout = rỗng, len = độ dài xâu Str Đặt Str_temp = Str
Thiếp lập lặp với số vòng lặp = len
Lấy ra 1 ký tự bất kỳ của xâu Str_temp
Đưa ký tự này vào cuối của Strout
Xóa ký tự này từ Str_temp
Trong Scratch không có lệnh xóa 1 ký tự của xâu, do đó dòng cuối cùng của thuật toán trên
cần thực hiện như 1 chương trình. Thuật toán xóa 1 ký tự có chỉ số index khỏi 1 xâu Str_temp như sau:
Đặt Str_temp = rỗng, index1 = 1, len = độ dà xâu Str
Thiếp lập lặp với số vòng lặp = len
Kiểm tra: nếu index1 <> index thì
Lấy ra ký tự thứ index1 của Str
Đưa ký tự này vào cuối của Str_temp Tăng index lên 1 Thiết lập Str = Str_temp
Kết hợp 2 thuật toán trên, chúng ta có chương trình trong Scratch.
161 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Gán Str cho Str_temp
Lấy 1 ký tự ngẫu nhiên
từ Str_temp và đưa vào cuối Strout. Xóa ký tự này khỏi
Str_temp kết quả đưa vào Str_temp1. Gán lại Str_temp1 cho Str_temp
Bài toán 2. Cho trước dãy số (hoặc chữ) a1, a2, …., an. Cần sinh ra 1 hoán vị ngẫu
nhiên của dãy này, đưa ra dãy sau: b1, b2, …., bn là hoán vị của dãy ban đầu.
Input: Dãy List, Output: Dãy List_out
Bài toán 2 cách thực hiện tương tự bài toán 1, chỉ có điểm khác là thực hiện trên biến danh
sách, chứ không phải trên biến xâu ký tự.
Cách đơn giản: lấy từ phần tử ngẫu nhiên của List và đưa vào cuối của Listout, sau đó xóa
phần tử này khỏi danh sách gốc List.
Cách trên sẽ xóa dữ liệu từ danh sách gốc.
Chương trình dưới đây được viết ạ
l i hoàn chỉnh, danh sách gốc List không bị xóa dữ liệu.
Do vậy cần tạo thêm 1 biến danh sách trung gian List_temp.
162 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Bài toán 3. Cho trước dãy số (hoặc chữ) a1, a2, …., an. Cần sinh ra một dãy ngẫu
nhiên m phần tử của dãy trên: b1, b2, …, bm với m cho trước.
Input: Dãy List, số m; Output: Dãy List_out
Ý tưởng và cách thực hiện bài toán này tương tự bài toán 2 và khá đơn giản như sau, chú ý
rằng dãy gốc List yêu cầu không bị xóa.
Thuật toán lấy ra ngẫu nhiên m phần tử từ 1 dãy gốc ban đầu Lis
t được viết như sau:
Đặt dãy List_temp và Listout = rỗng.
Gán từng phần tử của dãy List vào List_temp.
Thiết lập vòng lặp độ dài m
Lấy ra 1 phần tử ngẫu nhiên của List_temp.
Đưa phần tử này vào cuối của danh sách Listout.
Xóa phần tử này từ List_temp.
Chương trình hoàn chỉnh trên Scratch như sau.
163 | T ự h ọ c l ậ p t r ì n h S c r a t c h
3. T điển sinh bài kim tra trc nghim
Chúng ta sẽ cùng tìm hiểu một ứng dụng nữa của dữ liệu danh sách, khi chúng được dùng
như dữ liệu từ điển để sinh ngẫu nhiên các bài kiểm tra trắc nghiệm.
Mô mình bài toán cụ thể như sau.
Giả sử có 2 bảng dữ liệu, bao gồm 2 danh sách quốc gia và thủ đô tương ứng của quốc gia
đó. Ví dụ 1 bảng như vậy. Quc gia
Th đô Argentina Buenos Aires Armenia Yerevan Australia Canberra Austria Viên Azerbaijan Baku Croatia Zagreb Cuba La Habana Síp Nicosia Cộng hòa Czech Praha Venezuela Caracas Việt Nam Hà Nội Liên bang Nga Moscow
164 | T ự h ọ c l ậ p t r ì n h S c r a t c h Vương quốc Anh Luân Đôn Hoa kỳ Washington Uruguay Montevideo Uzbekistan Tashkent
Chương trình cần đưa ra các loại câu hỏi trắc nghiệm sau, dữ liệu được lấy ngẫu nhiên từ
các bảng dữ liệu trên.
(a) là thủ đô của nước nào? (b) có thủ đô là ?
Phần mềm sẽ tự động sinh bài kiểm tra trắc
nghiệm theo 1 trong 2 loại câu hỏi như trên.
Trên màn hình có 4 nút A, B, C, D. Bên cạnh là
bộ 4 dữ liệu được lấy ra và hiển thị ngẫu nhiên trên màn hình.
Người thực hiện bài kiếm tra bằng cách nháy
chuột lên 1 trong các đáp án.
Chương trình sẽ thông báo ngay đúng hay sai,
hiển thị dấu đúng, sai và chuyển sang câu hỏi tiếp theo.
Giao diện khi làm bài như sau:
Giao diện khi nháy chọn phương
Giao diện khi nháy chọn phương
án đúng, chú ý dấu tích bên cạnh
án sai, chú ý dấu tích chéo bên
cạnh phương án đã click. phương án đã click.
165 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Nhân vật thầy giáo sẽ ra câu hỏi
trắc nghiệm trên màn hình.
Vị trí các nút A, B, C, D và 4 biến nhớ
dùng để thể hiện bộ dữ liệu được sinh
ngẫu nhiên cho câu hỏi trắc nghiệm.
Nhân vật và sân khấu chính: thầy giáo, 4
nút A, B, C, D và nút dấu Đúng - Sai.
Sân khấu sẽ tham gia giải quyết bài toán à
Sơ đồ hoạt động của chương trình như sau: Reset Bắt ầ đ u Done Done
Sau đây là giải thích cho sơ đồ trên.
- Bắt đầu chương trình, thông điệp Reset (làm lại) được đưa ra và chuyển tới sân khấu nền
để tính toán, xử lý các thông tin ban đầu.
- Nhận được thông điệp Reset, sân khấu sẽ thực hiện việc sinh ngẫu nhiên dạng câu hỏi trắc
nghiệm, sinh ngẫu nhiên bộ 4 phương án, trong đó có 1 phương án đúng. Dữ liệu được lấy
từ 2 bảng dsQGdsThudo. Sau khi sinh xong bộ dữ liệu sẽ phát đi thông điệp Bắt đầu
(Start). Chú ý là sau khi bộ dữ liệu được sinh, các thông tin này sẽ tự động hiển thị trên màn hình.
- Thầy giáo khi nhận được thông điệp Bắt đầu thì thực hiện công việc sau: thể hiện thông
tin câu hỏi trên màn hình và chờ người chơi trả lời.
166 | T ự h ọ c l ậ p t r ì n h S c r a t c h
- Người sử dụng trả lời câu hỏi do thầy giáo đưa ra bằng cách nháy chuột lên 1 trong các nút A, B, C, D.
- Nút ABCD (1 trong A, B, C, D) khi nhận được cảm biến chuột thì lập tức gán biến nhớ
choice cho phương án mà người dùng trả lời, sau đó phát thông điệp Done (đã xong). Thông
điệp này sẽ phát đồng thời cho thầy giáo và nút dấu Đúng-Sai.
- Thầy giáo khi nhận thông điệp Done sẽ lập tức kiểm tra xem đáp án người dùng đã chọn là
đúng hay sai và thông báo đúng / sai ngay trên màn hình.
- Nút dấu Đúng - Sai khi nhận thông điệp Done sẽ lập tức kiểm tra xem đáp án người dùng
đã chọn là đúng hay sai và tính toán, thay đổi trang phục và dùng lệnh stamp (sau khi đã
show) để in dấu Check (đúng) hoặc Chéo (sai) tại vị trí tương ứng mà người dùng đã nháy chuột.
- Nút Đúng - Sai chờ 3 giây sau thì phát thông điệp Reset. Khi nhận thông điệp Reset thì nút
dấu Đúng - Sai sẽ ẩn bằng cách thực hiện lệnh hide.
Bài tập: em hãy viết chương trình hoàn chỉnh cho bài toán trên.
4. Bài luyn trc nghim có hình nh
Bài toán trong hoạt động này có ý nghĩa gần tương tự như trong hoạt động 3 về dữ liệu sinh
bài kiểm tra trắc nghiệm. Dữ liệu và hình ảnh của hoạt động này lấy từ bài toán Tìm hiểu
động vật của hoạt động 1.
167 | T ự h ọ c l ậ p t r ì n h S c r a t c h Hệ thống trang phục của nhân vật này tương thích với 2 bảng dữ liệu chính: Animal
Hệ thống sân khấu và nhân
vật tham gia hoạt động trong
bài toán này: nhân vật chính,
thầy giáo, 4 nút phương án và sân khấu
Sơ đồ làm việc của chương trình thể hiện trong mô hình sau.
Chọn ngẫu nhiên 4 phương án, gán vào
các biến nhớ Aname, Bname, Cname,
Dname; sinh ngẫu nhiên 1 phương án Next
đúng, hiển thị trang phục theo phương án Hiển thị câu hỏi:
Khi người dùng clíck chuột, nạp Đây là con Kiểm tra
lựa chọn vào biến nhớ choice choice và
và gửi thông điệp Done. đáp án Done đúng, hiện thông báo Đúng rồi, hoặc Sai Click chut rồi. Chờ 2 giây và gửi Next thô điệ
Bài tập: em hãy viết chương trình hoàn chỉnh cho bài toán trên.
4. S dng nhiu danh sách có liên kết
Trong ví dụ trên chúng ta sử dụng 2 biến nhớ dạng danh sách ds_QG và ds_Thudo có liên
quan đến nhau theo nghĩa 1-1, nghĩa là mỗi dòng của bảng này tương ứng với chính dòng đó
168 | T ự h ọ c l ậ p t r ì n h S c r a t c h
của bảng kia. Đây là cách tạo quan hệ đơn giản giữa hai bảng. Thực tế các quan hệ giữa các
bảng có thể phức tạp hơn. Chúng ta hãy quan sát 1 ví dụ của quan hệ như vậy.
Giả sử chúng ta có 3 biến nhớ dạng danh sách như sau: Tnh
Ch s Vùng Thái Nguyên 1 1. Trung du Bắc Bộ Hà Nội 2 2. Đồng bằng Bắc Bộ Thanh Hóa 3 3. Trung Bộ Thái Bình 2 4. Tây Nguyên Quảng Ngãi 3 5. Nam Bộ Lâm Đồng 4 Cần Thơ 5 Kiên Giang 5 Gia Lai 4 ằ Cao B ng 1
Bài toán 1. Viết chương trình nhập các bảng dữ liệu có liên kết trên.
Giả sử đã có danh sách các vùng miền, cần lập chương trình nhập danh sách các tỉnh, thành
phố với chỉ số liên kết vùng miền chính xác.
Đầu tiên chương trình thông báo vị trí
của nút lệnh nhập dữ liệu. Khi nháy
lên nút Input Data, em bắt ầ đ u nhập
dữ liệu. Việc nhập dữ liệu được tiến hành theo 2 bước:
Bước 1: nhập tên tỉnh, thành phố
(không được trùng với tên đã có).
Bước 2: nhập chỉ số vùng, miền.
Em hãy thiết kế và hoàn thiện chương trình này.
Bài toán 2. Bài toán tra cứu dữ liệu
Giả sử đã có danh sách các vùng miền, cần lập chương trình yêu cầu nhập chỉ số vùng miền,
chương trình sau đó sẽ đưa ra danh sách tất cả các tỉnh thành phố thuộc vùng miền này.
Đầu tiên chương trình yêu cầu em nhập 1
số là chỉ số vùng, miền muốn tra cứu dữ liệu.
Sau đó chương trình sẽ tính toán và hiện
kết quả tra cứu là số lượng và danh sách
cụ thể các tình, thành phố thuộc vùng, miền đã nhập.
Nếu nhập không đúng chỉ số vùng, miền,
169 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Em hãy thiết kế và hoàn thiện chương trình này.
Câu hi và bài tp
1. Cho trước 1 dãy số tự nhiên bất kỳ, hãy viết chương trình thực hiện các công việc sau:
- Đếm và liệt kê các số chẵn của dãy trên.
- Đếm và liệt kê các số là nguyên tố trong dãy trên.
2. Giả sử chúng ta đã có 1 dãy số hoặc chữ: a1, a2, …., an. Viết chương trình nhập số
tự nhiên m và sinh ra ngẫu nhiên các số b1, b2, …, bm lấy theo thứ tự từ trái sang phải của dãy ban đầu.
3. Dãy số Fibonaci là dãy số 1, 1, 2, 3, 5, 8, 13, …. tức là dãy a1, a2, …., an …. thỏa mãn điều kiện: a1 = a2 = 1
an = an-1 + an-2 với n > 2
Hãy viết chương trình nhập số m từ bàn phím và thể hiện trên màn hình m số hạng đầu tiên của dãt Fibonaci này.
M rng
Hãy thiết kế và viết chương trình mô phỏng bài học phát âm tiếng Anh có âm thanh sau.
Phần mềm yêu cầu nhập 1 từ tiếng Anh bất kỳ, sau đó thông báo và thể hiện cách phát âm
của từ này với âm thanh thật.
Yêu cầu bổ sung của chương trình:
Khi thực hiện việc phát âm, chương trình sẽ đưa ra màn hình lần lượt các chữ cái của từ đã
cho ngay trên màn hình, đưa chữ và âm thanh đồng thời.
170 | T ự h ọ c l ậ p t r ì n h S c r a t c h Bài 18. Th t ủ ục 1 Mục đích Học xong bài này em sẽ:
- Biết và hiểu được vai trò của thủ tục như 1 nhóm con chương trình nhằm giúp giải quyết công việc dễ hơn. Bắt đầu
1. Tư duy chia 1 bài toán lớn thành các bài toán nhỏ hơn.
Trên thực tế khi gặp một công việc lớn, con người luôn tìm cách chia nhỏ công việc đó ra để làm từng bước.
- Khi được giao quét 1 ngôi nhà lớn, em sẽ chia thành những phòng nhỏ và quét dọn từng phòng một.
- Nếu phải bê 1 chồng sách lớn em sẽ khuân và bê chuyển từng cuốn sách hoặc từng vài ba cuốn sách cho nhẹ.
- Khi được giao nhiều bài tập về nhà, em thường chia ra mỗi ngày làm 1 ít bài tập để cuối
tuần khỏi dồn lại thành nhiều.
Em có thể chỉ ra rất nhiều ví dụ thực tế nữa.
Trong bài toán tin học, việc chia 1 công việc lớn thành nhiều việc nhỏ hơn để làm từng việc
được gọi chung là "chia để trị". Đây là một kỹ thuật hay dùng nhất trong các bài toán tin
học, nhất là lập trình máy tính.
Ni dung bài hc
1. Có th rút gọn chương trình bằng cách nào? Chúng ta hãy bắt ầ
đ u hoạt động này bằng chương trình vẽ 1 đa giác đều đã biết . Đoạn chương trình chuẩn bị cho việc vẽ.
chương trình vẽ hình đa giác đều 5 cạnh.
Đoạn chương trình, như em thấy, có thể chia làm 2 phần với c ứ
h c năng tách biệt rõ rệt.
- Phần 1 bao gồm các lệnh thiết lập ban đầu cho việc vẽ.
- Phần 2 là các lệnh vẽ hình đa giác đều.
171 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Chương trình trên bây giờ có thể tách làm 2 phần, phần 1 có tên "Chun b v", phần 2 có
tên "V đa giác đều 5 cnh". Thiết lập nhóm
lệnh có tên Chun Thiết lập nhóm
lệnh có tên V đa
giác đều 5 cnh
Khi đó chương trình gốc của chúng ta bây giờ rút gọn lại chỉ còn 2 "lệnh".
Em có nhận xét gì về hoạt động trên? Các gợi ý:
- Nhóm các lệnh vào thành 1 lệnh mới?
- Việc phân nhóm thế này có lợi ích gì?
2. Thiết lp và s dng khái nim th tc trong Scratch
Trong hoạt động này, em sẽ thực hiện thao tác thiết lập các thủ tục cụ thể cho một chương
trình cụ thể. Chúng ta hãy bắt đầu từ chương trình vẽ hình đa giác đều 5 cạnh trên.
Lệnh thiết lập thủ tục có trong nhóm lệnh More Blocks như hình sau. Nhóm lệnh More Blocks (thêm các lệnh khác), trong đó có lệnh làm việc với
Lệnh khởi tạo thủ tục.
172 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Để khởi tạo 1 thủ tục mới, nháy nút Make a Block trong nhóm lệnh More Blocks.
Cửa sổ New Block xuất hiện.
Nhập tên thủ tục tại vị trí này. Nhập xong nhấn nút OK.
Ví dụ em tạo ra thủ tục với tên "Chuẩn bị vẽ" như hình sau . Nháy nút OK em sẽ thấy xuất hiện lệnh
define trong cửa sổ
Bây giờ em hãy kéo thả nhóm lệnh có chức năng là các lệnh chuẩn bị cho việc vẽ vào khung
của lệnh define là lệnh định nghĩa thủ tục như sau. Khung bên dưới của lệnh define dùng để
định nghĩa nội dung của thủ tục.
Kéo thả nhóm các lệnh này vào dưới và gắn
với lệnh định nghĩa thủ tục (define).
Tương tự em hãy tạo thêm 1 thủ tục nữa có tên V đa giác đều 5 cnh và định nghĩa thủ tục này như sau:
Bây giờ, khi nhìn vào khu vực mẫu lệnh của nhóm More Blocks chúng ta sẽ thấy xuất hiện
2 lệnh tương ứng với 2 thủ tục vừa tạo ra.
173 | T ự h ọ c l ậ p t r ì n h S c r a t c h
2 lệnh tương ứng với 2 thủ tục vừa
khởi tạo xuất hiện trong khung lệnh.
Các lệnh mới này sẽ được sử dụng hoàn toàn giống như các lệnh khác mà em đã biết, và có
thể sử dụng nhiều lần.
Bây giờ trong khung chương trình chính, em chỉ cần sử dụng 2 lệnh trên để tạo thành đoạn
chương trình chính thức của bài toàn. Cửa sổ lệnh của nhân vật có khuôn dạng như sau: Đoạn chương trình chính chỉ còn 2
2 thủ tục được định nghĩa cùng trên 1 màn hình lệnh.
Theo em sử dụng thủ tục mang lại những lợi ích nào? Chọn các phương án em thấy đúng, giải thích vì sao.
A. Nhìn chương trình thấy dễ hiểu hơn, đơn giản hơn.
B. Chương trình chính được viết ngắn gọn hơn.
C. Sử dụng thủ tục sẽ làm cho số lệnh được viết ra ít hơn, ngắn gọn hơn.
D. Mỗi thủ tục có thể hiểu là 1 bài toán con.
E. Làm cho chương trình trở nên dễ hiểu, có cấu trúc hơn.
3. Các thao tác khác vi th tc 1. Xóa thủ tục
Muốn xóa 1 thủ tục chúng ta kéo thả dòng lệnh define thủ tục nào vào khung điều khiển
lệnh ở giữa màn hình. Chú ý trước khi xóa thủ tục cần hủy hết các dòng lệnh của thủ tục này trong cửa sổ lệnh.
174 | T ự h ọ c l ậ p t r ì n h S c r a t c h Kéo thKéo thChú ý:
- Nếu chỉ kéo thả 1 dòng lệnh define thủ tục thì sẽ xóa thủ tục này.
- Nếu kéo thả thủ tục và các lệnh gắn kèm theo thì sẽ xóa cả thủ tục và các lệnh này. 2. Đổi tên thủ tục
Muốn đổi tên 1 thủ tục cần thực hiện lệnh: nháy chuột phải lên dòng chứa thủ tục đó tại
khung điều khiển lệnh, sau đó chọn chức năng edit.
Chức năng đổi tên thủ
tục đã xác định trước đó
4. Mt s ví d đơn giản v th tc
Trong hoạt động này chúng ta sẽ cùng thực hiện các bài toán thiết kế các thủ tục cụ thể.
1. Thủ tục vẽ đa giác đều n cạnh với độ dài cạnh d, các số n, d cho trước
Thủ tục này đã được mô tả trong hoạt động trên. Chúng ta sử dụng lệnh Make a Block để
tạo ra 1 thủ tục có tên V đa giác đều, sau đó kéo thả các lệnh tương ứng vào khung của thủ tục này như sau.
175 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Nội dung của thủ tục V đa giác
đều. Các biến nhớ nd được khởi tạo từ trước.
Sau đây là minh họa cho việc chạy thủ tục này. Trước khi chạy các biến
nhớ nd cần gán trước các giá trị.
2. Thủ tục vẽ vòng tròn biết tâm và bán kín h
Thủ tục này yêu cầu có 3 tham số là (Tx, Ty) - tọa độ tâm của vòng tròn và R - bán kính vòng tròn cần vẽ.
Để phân tích thủ tục này chúng ta xuất phát từ
thủ tục vẽ đa giác đều trong hoạt động trước Cạnh AB được tính theo công thức: AB = 2Rsin(𝛼) 2
Để tạo được hình tròn, chúng ta chỉ cần tăng số n trong thủ tục trên lên 1 số khá lớn, ví dụ
90, 180, 360. Tuy nhiên độ dài cạnh d cần tính lại chính xác. ạ
C nh d có thể tính qua bán
kính R theo công thức đã ghi ở trên: d = 2Rsin(𝛼). Ví dụ với n = 90, khi đó α = 360/90 = 2
4. Do đó theo công thức trên ta sẽ có d = 2Rsin(2).
176 | T ự h ọ c l ậ p t r ì n h S c r a t c h Tính độ dài cạnh d = 2Rsin(𝛼) với α = 4 2
Tọa độ điểm bắt đầu vẽ = (Tx, Ty-
Đoạn chương trình vẽ đường tròn.
3. Thủ tục vẽ đường thẳng đi qua 2 điểm A và B cho trước
Giả sử điểm A có tọa độ (P1X, P1Y), điểm B có tọa độ (P2X, P2Y), khi đó thủ tục vẽ đoạn
thẳng nối 2 điểm này như sau:
3. Thủ tục gán dữ liệu từ 1 biến nhớ danh sách này sang biến nhớ danh sách khác
Giả sử cho trước 1 biến nhớ kiểu danh sách List, cần xây dựng thủ tục chuyển dữ liệu từ
List sang Listout.
Thuật toán của thủ tục này đơn giản như sau:
- Xóa nội dung của dãy Listout.
- Chuyển đổi lần lượt các phần tử của
dãy Lis tsang Listout.
4. Thủ tục sinh ngẫu nhiên 1 hoán vị các số 1, 2, 3, …, n
Cho trước số tự nhiên n, thủ tục cần xây dựng sẽ sinh ngẫu nhiên 1 hoán vị của dãy số 1, 2,
3, …, n và kết quả đưa vào biến nhớ List.
Để thực hiện thủ tục này, chúng ta cần tạo ra thêm 1 dãy phụ nữa, ví dụ List_temp. Đoạn
chương trình của thủ tục như sau.
177 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Dãy các số từ 1 đến n đã được
đưa vào dãy List_temp từ trước đó.
Thuật toán của thủ tục: chọn
ngẫu nhiên 1 số từ List_temp,
đưa số này vào List, sau đó xóa
số này từ List_temp và lặp lại
quá trình trên cho đến khi dãy
Dưới đây là đoạn chương trình hoàn chỉnh để sử dụng thủ tục trên. Các lệnh chuẩn bị ban đầu được đưa vào 1 thủ tục Init, khởi tạo 2 dãy List, List_temp và đưa dãy 1..n à Đoạn chương trình hí h
5. Th tc gi th tc khác và gi chính nó
Như chúng ta đã thấy, thủ tục sau khi được khởi tạo sẽ hiện ra trong khung các mẫu lệnh và
được sử dụng như một lệnh bình thường. Do vậy hoàn toàn có thể xảy ra là trong nội dung
của 1 thủ tục này có lời gọi đến thủ tục khác, hoặc một thủ tục sẽ có lời gọi đến chính nó.
Trong hoạt động này chúng ta sẽ làm quen với các hiện tượng này.
a. Thủ tục có thể gọi chính nó
Khi trong thủ tục có lời gọi đến chính nó, điểm cần đặc biệt chú ý nhất là phải có điều kiện
đảm bảo không để thủ tục chạy vô hạn. Trong ví dụ sau, thủ tục Countdown có nhiệm vụ
hiển thị giá trị biến nhớ n và đếm ngược cho đến 0. Quá trình này cần phải kết thúc với điều kiện n > 0.
178 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Điều kiện để dừng thủ Lời gọi chính
b. Thủ tục gọi thủ tục
Chúng ta quay lại 1 ví dụ đã biết trong các bài trước, vẽ bông hoa 5 cánh như hình sau.
Chúng ta nhớ lại 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 trên chương trình gốc này, chúng ta sẽ tạo 2 thủ tục: V hoa ở vòng lặp ngoài và V
vòng tròn nhỏ ở vòng lặp trong. Thủ tục V hoa sẽ gọi V vòng tròn nhỏ bên trong các
lệnh của mình. Nội dung cụ thể 2 thủ tục này trong hình dưới đây.
5. Chương trình v ngôi sao 5 cánh
Trong hoạt động này chúng ta sẽ thiết lập chương trình vẽ ngôi sao 5 cánh như hình dưới
đây với bán kính R cho trước. Để thuận tiện cho việc phân tích bài toán, chúng ta cần vẽ
thêm hình 1 ngôi sao 5 cánh ở bên với các tham số mô tả kỹ hơn cấu trúc của ngôi sao này.
179 | T ự h ọ c l ậ p t r ì n h S c r a t c h Phân tích bài toán.
Quan sát hình trên bên phái cho cho chúng ta gợi ý cách thực hiện yêu cầu bài toán. Thiết
lập 2 bảng, biến nhớ dạng List để lưu trữ tọa độ các điểm A1, A2, A3, A4, A5. Các biến mảng
này sẽ ký hiệu là PointXPointY. Bảng PointX sẽ lưu trữ các tọa độ X, mảng PointY sẽ
lưu trữ các tọa độ y.
Như vậy các bước để giải quyết bài toán này như sau:
1. Thiết lập tọa độ các điểm A1, A2, A3, A4, A5 và đưa vào 2 mảng PointX, PointY.
2. Vẽ hình ngôi sao bằng cách nối vẽ các điểm A1-A3, A2-A4, A3-A5, A4-A1, A5-A2.
Đoạn chương trình sau mô tả cách thiết ậ
l p tọa độ dãy điểm A1, A2, A3, A4, A5. Các tọa độ
này lần lượt được bổ sung vào 2 danh sách PointX, PointY.
Vòng lặp 5 lần, mỗi lần thực hiện:
- Bắt đầu từ vị trí (0, 0), dịch
chuyển 1 đoạn bằng R, nạp thông
tin tọa độ X, Y vào 2 bảng PointX, PointY. X 72 độ
Đoạn chương trình sau thực hiện công việc vẽ các nét nối các cặp điểm A1-A3, A2-A4, A3-
A5, A4-A1, A5-A2. Việc này cũng được thực hiện trong 1 vòng lặp 5 lần.
180 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Xác định các chỉ số
indexindex1
Vẽ đoạn thẳng nối điểm từ
điểm có chỉ số index đến
điểm có chỉ số index1
Toàn bộ các thủ tục của chương trình như sau:
Câu hi và bài tp
1. Cho trước dãy số List, hãy viết 1 thủ tục sinh ngẫu nhiên 1 hoán vị của dãy này, kết quả
sẽ đưa vào mảng Listout.
2. Cho trước 1 xâu ký tự Str. Viết 1 thủ tục sinh ngẫu nhiên 1 hoán vị của xâu này, kết quả
đưa vào xâu Strout.
3. Hoàn thiện chương trình Vẽ hoa.
181 | T ự h ọ c l ậ p t r ì n h S c r a t c h
4. Hãy thực hiện bài toán vẽ hình ngôi sao theo cách khác, ví dụ: tính độ dài cạnh ngôi sao
(khoảng cách d = A1A3, thuật toán vẽ chính sẽ như sau: xuất phát từ vị trí A1, thực hiện lặp
5 lần thao tác sau: xoay trái 36 độ, di chuyển theo độ dài d.
M rng
Viết chương trình thực hiện bài luyện theo yêu cầu sau.
Chương trình sẽ yêu cầu người
dùng nhập 1 số tự nhiên từ bàn
phím, sau đó thể hiện số này trên
màn hình bằng các chữ số lớn, rõ
Ý nghĩa của chương trình này rất lớn và có nhiều ứng dụng trong các chương trình khác
nhau, vì các giá trị số của biến nhớ được thể hiện trên màn hình rất khó, khó quan sát.
Để thực hiện bài toán này chúng ta tạo ra 1 nhân vật có tên Number có đầy đủ toàn bộ 10
trang phục chính là các chữ số 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Các chữ số này và độ rộng của
chúng trên màn hình được lưu trong 2 dãy NumbersWidth như hình dưới đây. Các hình ảnh, trang phục của nhân vật Number.
Biến nhớ n dùng để lưu số do người dùng nhập. Thủ tục sau có nhiệm vụ thể hiện số n trên
màn hình bằng nhân vật Number.
182 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Yêu cầu nhập số n được tiến hành bới sân khấu. Sau khi nhập xong dữ liệu, thông điệp
Show Number được gửi đi và khi nhận thông điệp này, thủ tục Show Number sẽ được kích hoạt ể
đ thể hiện số đã nhập trên màn hình.
183 | T ự h ọ c l ậ p t r ì n h S c r a t c h Bài 19. Th t ủ ục 2 Mục đích
Học xong bài này, bạn sẽ biết:
- Thiết lập thủ tục có tham số.
- Phân biệt biến nhớ riêng của thủ tục và biến nhớ của nhân vật.
- Ứng dụng tiếp theo của thủ tục. Bắt đầu
Trong bài học trước, em đã được làm quen với khái niệm thủ tục. Thủ tục sau khi được định
nghĩa sẽ hiện ra trong khung điều khiển lệnh như 1 lệnh mẫu và em có thể sử dụng lệnh này
như mọi lệnh khác. Ví dụ t ủ
h tục V đa giác đều sau.
Chúng ta cùng nhau xem lại nội dung của thủ tục này, em có nhận xét gì khi quan sát nội dung này?
Em hãy quan sát các biến nhớ nd.
Các biến nhớ nd có màu cam
sẫm là biến nhớ của nhân vật đang
thực hiện thủ tục này.
Như vậy các biến nhớ n, d được tạo ra bởi nhân vật đang thực hiện thủ tục này và không
phụ thuộc vảo thủ tục. Do vậy khi gọi thủ tục này, các biến nhớ n, d cần được gán dữ liệu trước. Ví dụ:
Trong Scratch, em đã biết có ấ
r t nhiều lệnh có tham số, tức là chúng ta cho thể nhập trực
tiếp dữ liệu trên dòng định nghĩa của lệnh này.
Ví dụ nếu như chúng ta có thủ tục vẽ 1 đa giác đều, trong đó tham số số cạnh và độ dài cạnh
có thể nhập trực tiếp như lệnh sau thì việc áp dụng thủ tục này trên thực tế sẽ thuận tiện và
đơn giản hơn rất nhiều.
Trong bài học này chúng ta sẽ làm quen với loại thủ tục có tham số này.
184 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Ni dung bài hc
1. Thiết lp tham s cho th tc
Trong hoạt động này chúng ta sẽ cùng nhau thiết lập các thủ tục có tham số trong Scratch,
bắt đầu từ bài toán vẽ đa giác đều trên. (a) Để thiết ậ
l p thủ tục chúng ta chọn nhóm lệnh More Blocks và sau đó nháy lên nút Make a Block. Nháy nút này để bắt đầu khởi tạo 1 thủ tục mới.
(b) 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áy lên nút Options để
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ó
(c) Hộp hội thoại tạo thủ tục mở rộng như sau.
185 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Nhập tên thủ tục và các tham
số của thủ tục tại đây.
Các nút này dùng để đưa
tham số vào thủ tục. Cho
phép 3 loại tham số: số, xâu
Chèn giữa các tham biến là
chữ được chèn bằng nút này.
Chú ý ý nghĩa các nút chèn tham số và chữ vào tên của thủ tục.
(d) Đầu tiên cần nhập tên của thủ tục trước. Ví dụ nhập tên "V đa giác đều ". Nhập tên của thủ tục tại đây.
(e) Sau khi nhập tên chính của thủ tục thì bắt ầ
đ u có thể nhập tham số.
Trong ví dụ dưới đây, sau khi nhập tên thủ tục là Vẽ đa giác đều, em sẽ nháy nút
để tạo 1 tham số dạng số (number) đầu tiên.
Xuất hiện khung tham số với tên "number1". Em hãy thay đổi thành "n".
186 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Nháy nút này để tạo ra
tham số đầu tiên dạng số của thủ tục. Tên của
tham số sẽ mặc định là
"number1", em hãy đổi thành "n".
(f) Tiếp theo, em hãy chèn 1 đoạn chữ vào thủ tục ("cnh với độ dài cnh"), sau cùng bổ
sung thêm 1 tham biến dạng số nữa, đặt tên là "d" như hình sau.
Nháy nút này để tạo ra
thêm dòng chữ "cnh vi
độ dài cnh" trong tên Nháy OK để kết thúc
khởi tạo tên của thủ tục.
(g) Sau khi tạo xong tên của thủ tục, em sẽ thấy xuất hiện lệnh define, biểu tượng sau trên
cửa sổ lệnh của nhân vật. Em hãy chú ý quan sát các tham biến đã được định nghĩa trong thủ tục. Các tham biến trong dòng định nghĩa thủ tục có màu xanh.
Các tham biến được định nghĩa trong thủ tục sẽ 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.
187 | T ự h ọ c l ậ p t r ì n h S c r a t c h
(h) Bây giờ chúng ta điền nội dung của thủ tục bằng các lệnh đã biết. Chú ý sử dụng các
tham biến của thủ tục như các biến nhớ thông thường.
Trong nội dung của thủ tục
cần sử dụng các tham biến như các biến nhớ bình h ờ
(i) Sau khi thủ tục được định nghĩa xong, tên của thủ tục sẽ xuất hiện tại khung mẫu lệnh
như 1 lệnh có tham số bình thường của Scratch.
(j) Bây giờ chương trình chính của bài này sẽ được viết đơn giản bằng 2 lệnh như sau.
Toàn bộ cửa sổ lệnh và kết quả thực hiện chương trình như sau.
2. Th tục đếm ngược Count Down
Thủ tục đếm ngược Count Down từ bài trước bây giờ có thể viết dưới dạng có tham số như sau.
Chú ý lời gọi chính nó sẽ có tham số thay đổi .
188 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Lời gọi chính thủ tục gốc
Count down với giá trị tham số n - 1.
3. Biến nh ca th tc
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.
Chúng ta có thể tạo ra nhiều biến nhớ như vậy trong quá trình định nghĩa thủ tục mới. Trong
hoạt động này chúng ta cùng phân tích sâu hơn về các tham biến hay biến nhớ riêng này của thủ tục trong Scratch. Vị trí các tham số,
biến nhớ riêng của thủ tục. Biến nhớ dạng số Biến nhớ dạng xâu ký tự Biến nhớ dạng logic (đúng / sai)
Các tham biến được định nghĩa trong thủ tục có thể hiểu như các biến nhớ riêng của thủ tục
này. Vậy các biến nhớ này có đặc điểm gì khác biệt với khái niệm biến nhớ thông thường mà ta đã biết.
(1) 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 cam. Do vậy 2 hệ thống biến nhớ này là độc lập hoàn toàn với nhau.
Biến nhớ tham số của thủ tục có màu xanh. Biến nhớ của nhân vật trong Scratch có màu da cam.
189 | T ự h ọ c l ậ p t r ì n h S c r a t c h
(2) 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à b ế i n nhớ.
Trong ví dụ sau cả 3 tham số của thủ tục đều được truyền giá trị thông qua các biến nhớ.
Trong ví dụ trên, giá trị của biến nhớ nhân vật Str được truyền vào thủ tục (tại thời điểm gọi
thủ tục này) thông qua tham biến Str. Chú ý biến Str màu da cam khác biệt ho n à toàn với
tham biến Str màu xanh.
Ví dụ: lệnh sau đây nếu được thực hiện trong thủ tục trên sẽ gán giá trị của tham biến Str
của thủ tục cho biến nhớ Str.
Còn trong ví dụ sau, sau khi gán trực tiếp biến nhớ Str thành "Hà Nội" thì giá trị tham biến
Str của thủ tục vẫn không thay đổi.
(3) Các tham biến, biến nhớ riêng của thủ tục chỉ có ý nghĩa bên trong thủ tục này.
Các biến nhớ màu xanh chỉ có tác dụng nếu việc sử dụng chúng được đặt trong các lệnh bên trong thủ tục này.
Ví dụ: 2 lệnh sau nếu đặt ngay trong chương trình chính sẽ không có ý nghĩa vì biến nhớ
màu xanh Str không có tác dụng.
(4) Không thể thay đổi giá trị của các tham biến hay biến nhớ của thủ tục.
Các tham biến hay biến nhớ bên trong thủ tục không thể thực hiện được các lệnh thay đổi
giá trị như xóa, gán hoặc thay đổi thông tin. 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.
4. Mt s th tc vi xâu ký t
4.1. Thủ tục lấy ra 1 xâu con từ xâu gốc
Thủ tục này có các tham biến đầu vào:
Str: xâu gốc ban đầu.
start, end: vị trí các ký tự bắt ầ
đ u và kết thúc cần lấy ra xâu con từ xâu gốc Str.
Kết quả xâu con được gán cho biến nhớ string.
190 | T ự h ọ c l ậ p t r ì n h S c r a t c h
4.2. Thủ tục chèn 1 xâu vào một xâu khác
Các tham số của thủ tục:
Str1: xâu, nội dung cần chèn.
Str: xâu ký tự gốc ban đầu.
start: vị trí cần chèn trong xâu gốc Str.
Kết quả xâu gốc Str sau khi đã chèn Str1 vào vị trí start sẽ được gán cho biến nhớ string.
4.3. Thủ tục xóa 1 xâu con trong 1 xâu ký tự
Các tham biến của thủ tục này:
191 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Str: xâu ký tự gốc.
start, end: vị trí đầu và cuối trong xâu Str cần xóa.
Kết quả của việc xóa các ký tự trong xâu Str sẽ gán vào xâu string.
4.4. Thủ tục chuyển số thập phân sang nhị phân
Thủ tục này có 1 tham biến là Decimal. Kết quả việc chuyển đổi sang xâu nhị phân được
lưu trong biến nhớ Binary.
4.5. Thủ tục chuyển số nhị phân sang thập phân
Thủ tục này có 1 tham biến là Binary. Kết quả chuyển đổi xâu nhị phân này sang số thập
phân được lưu trong biến nhớ Decimal.
192 | T ự h ọ c l ậ p t r ì n h S c r a t c h
5. Mt s th tc vi s
5.1. Thủ tục kiểm tra 1 số có phải là nguyên tố hay không.
Thủ tục này có 1 tham số duy nhất là số tự nhiên n. Kết quả kiểm tra ghi trong biến nhớ
nguyento. Nếu nguyento = 1 thì n là số nguyên tố, ngược lại nếu nguyento = 0 thì n là hợp số.
5.2. Thủ tục khai triển 1 số tự nhiên thành tích các thừa số nguyên tố
Thủ tục này chỉ có 1 tham số duy nhất là n. Kết quả khai triển n thành tích các thừa số
nguyên tố được lưu trong dãy Number_list.
193 | T ự h ọ c l ậ p t r ì n h S c r a t c h
5.3. Thủ tục tính USCLN và BSCNN của 2 số tự nhiên
Cả 2 thủ tục này đều có các tham biến là các số mn.
Kết quả ước số chung lớn nhất của 2 số trên sẽ được lưu trong biến nhớ gcd.
Kết quả của thủ tục tính bội số chung nhỏ nhất của 2 số mn được lưu trong biến nhớ lcm.
194 | T ự h ọ c l ậ p t r ì n h S c r a t c h
6. Mt s bài toán x lý liên quan đến dãy s
Trong hoạt động này chúng ta sẽ cùng nhau giải quyết một số bài toán cổ điển liên quan đến
dãy số. Dãy số cho trước sẽ được ký hiệu là lưu trữ trong biến nhớ dạng danh sách nList.
6.1. Bài toán tìm phần tử nhỏ nhất và lớn nhất của 1 dãy số cho trước
Giá trị nhỏ nhất của dãy số nList được lưu trong biến nhớ Min.
Giá trị lớn nhất của dãy số nList được lưu trong biến nhớ Max.
6.2. Bài toán tính số các khoảng đơn điệu của 1 dãy số cho trước
Khoảng đơn điệu của 1 dãy số là 1 dãy con liên tục đơn điệu (tăng hoặc giảm thực sự). Để
hiểu rõ hơn định nghĩa này, chúng ta quan sát 1 số ví dụ sau:
195 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Dãy s gc Phân tích
S các khong đơn điệu 1 1 1 1 1 1 1
dãy này chỉ bao gồm các số hạng bằng nhau 0
nên không có bất kỳ khoảng đơn điệu nào. 1 2 3 3 3 -2 - 3
khoảng đơn điệu tăng đầu tiên (1 2 3), tiếp 2
theo là 1 khoảng đi ngang, sự đi ngang
không được tính là khoảng đơn điệu. Do vậy
dãy này chỉ có 2 khoảng đơn điệu.
1 1 2 3 4 4 3 2 1 1 1 1 2 khoảng đi ngang đầu tiên (1 1) không được 3
tính là khoảng đơn điệu. Dãy này chỉ có 3 khoảng đơn điệu.
Chúng ta sử dụng các biến nhớ sau:
nList: dãy số đã cho ban đầu.
count: biến đếm các khoảng đơn điệu tăng thực sự của dãy số. Đây chính là đáp án cần tìm.
status: biến nhớ ghi lại trạng thái của phần tử hiện thời của dãy khi chúng ta đang phân tích.
Ý nghĩa của biến này như sau:
status = 0, phần tử này chưa xét hoặc không cần xét.
status = 1, phần tử hiện thời đang nằm trong 1 khoảng đơn điệu tăng thực sự.
status = -1, phần tử hiện thời không nằm trong 1 khoảng đơn điệu tăng thực sự.
Thủ tục Init sẽ đặt các giá trị ban đầu cho biến count và status. count = 0. status = 0. Kiểm
tra dãy nList nếu có > 1 phần tử thì mới tiếp tục làm việc.
Thủ tục chính của bài toán.
196 | T ự h ọ c l ậ p t r ì n h S c r a t c h
6.3. Bài toán tìm 1 dãy con liên tục đơn điệu tăng có độ dài lớn nhất của một dãy số cho trước Phân tích bài toán.
Gọi dãy đã cho là a1, a2, ...., aN. Vì dãy cần tìm là dãy liên tục nên chúng ta có thể
dánh dấu và tìm được tất cả các dãy con liên tục đơn điệu tăng chỉ cần 1 lần duyệt từ đầu
dãy. Nhận xét trên cho ta ý tưởng làm bài toán này chỉ cần 1 vòng duyệt tuyến tính từ 1 đến N.
Trong quá trình duyệt chúng ta sẽ sử dụng các biến nhớ sau:
Thông tin về dãy cần tìm được lưu trong các biến sau:
bmax – chỉ số phần tử đầu tiên của dãy con đơn điệu tăng cực đại .
lengthmax – độ dài của dãy con đơn điệu tăng cực đại.
Như vậy dãy này sẽ có các chỉ số là bmax, bmax+1, ...., bmax+lengthmax-1
Chúng ta cần lưu thông tin của dãy con liên tục đơn điệu tăng hiện thời, tức là dãy mà chúng ta đang khảo sát:
bcurr – chỉ số phần tử đầu tiên của dãy
lengthcurr – độ dài hiện thời của dãy.
Phần khai báo ban đầu như sau: bmax = 1; lengthmax = 1; bcurr = 1; lengthcurr = 1;
197 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Phần chương trình duyệt chính như sau: cho k chạy từ 2 đến N if ak-1 < ak then lengthcurr:=lengthcurr + 1;
if lengthmax < lengthcurr then bmax : = bcurr; lengthmax : = lengthcurr; else
bcurr : = k; lengthcurr : = 1; Thủ tục chính Processing Thủ tục Init khai báo các giá trị ban đầu của các biến nhớ.
198 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Toàn bộ chương trình hoàn chỉnh như sau.
Câu hi và bài tp
1. Có người nói "tạo một thủ tục tức là tạo thêm một lệnh mới", đúng hay sai?
2. Viết thủ tục với tham số n tính số hạng dãy Fibonaci thứ n.
3. Cho trước 1 dãy số. Viết chương trình tìm ra 1 dãy con liên tục có các số bằng 0 có độ dài
cực đại trong dãy trên.
4. Cho trước 2 dãy số List1, List2. Viết chương trình gộp 2 dãy này vào thành 1 dãy và sắp
xếp theo thứ tự tăng dần. Kết quả đưa vào dãy Listout.
M rng
Thiết kế chương trình mô phỏng bài học tính cộng, trừ đơn giản sau.
Chương trình sẽ tự động sinh
các phép toán cộng, trừ số đơn
giản. Người dùng nhập trực tiếp
từ bàn phím đáp án. Nút Check
sẽ kiểm tra đáp án đó là đúng
hay ai và thông báo trên màn
hình. Nếu làm sai, chương trình
sẽ ghi đáp án đúng bên cạnh đáp án sai.
Sau khi làm xong, nháy nút
Next để tự động sinh và chuyển
199 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Cụ thể hơn, yêu cầu các bước thực hiện của chương trình như sau:
Phần mềm tự động sinh phép toán và dữ liệu bài toán, yêu cầu người chơi nhập đáp án từ bàn phím.
Khi người dùng nhập xong, đáp án do người dùng nhập sẽ hiện trên phép tính ở màn hình.
Khi nó nút Check xuất hiện. Nháy nút này để kiểm tra đúng hay sai.
200 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Nếu sai, chươnh trình sẽ hiện thông báo sai rồi và hiện đáp án đúng bên dưới. Đồng thời
xuất hiện nút Next. Nháy lên nút này để bắt đầu 1 phép tính mới.
Nếu đúng, chương trình sẽ xuất hiện thông báo Đúng rồi. Đồng thời xuất hiện nút Next.
Nháy lên nút này để bắt đầu 1 phép tính mới.
Em hãy thiết kế và hoàn thiện chương trình này.
201 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Bài 20. Clone. Phân thân c a nhân v ủ t ậ Mục đích
Học xong bài học này, bạn sẽ hiểu được:
- Khái niệm phân thân (clone) của nhân vật và ý nghĩa của Clone.
- Tính chất và thuộc tính của Clone.
- Một vài ứng dụng Clone trong các bài toán thực tế. Bắt đầu
Em hãy nhìn vào hình ảnh 1 ứng dụng của Scratch sau và có nhận xét gì?
Trên màn hình em sẽ thấy nhiều
con mèo và chuột cùng chuyển
động. Rõ ràng đây không phải là
hình ảnh của lệnh stamp, mà phải là các nhân vật.
Để thiết kế chương trình trên em phải làm gì?
- Sử dụng lệnh stamp liên tục?
- Tạo ra nhiều nhân vật có hình dạng giống nhau và cho chúng chuyển động?
- Em có cách nào khác hay không?
Trong bài học này, chúng ta sẽ làm quen với 1 khái niệm hoàn toàn mới trong Scratch có thể
giải quyết dễ dàng bài toán trên.
Ni dung bài hc
1. Khái nim phân thân - clone trong Scratch
Tất cả các nhân vật trong Scratch đều có thể "phân thân", tức là tạo ra các nhân vật khác là
song sinh với chính bản thân mình. Các nhân vật được phân thân đó gọi là Clone.
Chúng ta cùng xem 1 chương trình ngắn để bước đầu làm quen và phân biệt được 2 khái
niệm: nhân vật chính (gốc) và phân thân (Clone) của nhân vật này.
202 | T ự h ọ c l ậ p t r ì n h S c r a t c h Nhân vật chính, gốc
Nhân vật được phân thân, là
song sinh của nhân vật gốc.
Nhân vật này được gọi là clone của nhân vật chính.
Chúng ta cùng xem đoạn chương trình của nhân vật chính con mèo.
Đoạn chương trình điều khiển clone.
Đoạn chương trình khởi tạo clone.
Nhân vt gc và Clone Mèo con Clone
Clone được khởi tạo từ 1 nhân vật
gốc. Clone là 1 phân thân của nhân
vật gốc và có mọi thuộc tính của nhân vật gốc. Khi bắt ầ
đ u khởi tạo, clone kế thừa
toàn bộ tính chất, thuộc tính của
Nhân vật gốc là khái niệm Nhân vật
nhân vật gốc. Tuy nhiên sau khi ra
(Sprite) mà chúng ta vẫn biết từ trước đến
đời, có thể điều khiển clone bằng tất
nay trong môi trường Scratch.
cả các lệnh của Scratch như 1 nhân
vật bình thường. Điểm khác biệt chỉ
Mỗi nhân vật khi được tạo ra sẽ có các
tính chất, thuộc tính riêng như hình ảnh, ở chỗ:
tọa độ x, y, hướng quay, trang phục, âm
- Các chương trình điều khiển Clone
thanh, kích thước, các biến nhớ riêng. Mỗi
bắt buộc nằm trong lệnh sự kiện
nhân vật có 1 cửa sổ lệnh riêng của mình.
when I start as a clone.
Mỗi nhân vật có thể tạo ra các phân thân
- Bản thân clone có thể xóa chính (clone) của riêng mình. mình.
Bảng sau liệt kê các thông tin nhanh liên quan đến nhân vật gốc và clone.
Nhân vt gc Clone Mô t nhanh
Là nhân vật hoạt động chính Là nhân vật phân thân từ 1 nhân vật
trên sân khấu cho người sử
gốc, được khởi tạo bởi lệnh create
dụng khởi tạo, hoạt động
clone of. Clone sau khi được tạo ra vĩnh viễn.
sẽ có đầy đủ tính chất như 1 nhân
vật bình thường và kế thừa mọi
203 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Nhân vt gc Clone
thuộc tính từ nhân vật gốc của
mình. Clone không hoạt động vĩnh viễn.
Khi to Clone Nhân vật chính dùng lệnh để
tạo Clone. Có thể tạo Clone
của mình hoặc của các nhân vật khác.
Chú ý: Sân khấu cũng có quyền tạo Clone cho mọi nhân vật . Điều khin
Clone sau khi được tạo ra sẽ chịu Clone
sự điều khiển của câu lệnh sự kiện . Cho phép
nhiều chương trình cùng điều khiển 1 Clone. Xóa Clone
Clone tự xóa bản thân mình bằng lệnh .
Thi gian sng Vĩnh viễn
Chỉ hoạt động trong thời gian chạy chương trình.
Chúng ta cùng xét 1 ví dụ sau. Ví dụ này minh họa cho quan hệ giữa nhân vật chính và các
phân thân - clone của chính mình.
Tạo 1 biến nhớ riêng có tên CloneID
của nhân vật chính. Chương trình sẽ lần lượt ạ
t o ra 3 clone, và trước mỗi
lần tạo sẽ gán giá trị CloneID lần
lượt là 1, 2, 3. Các clone này sẽ kế
thừa biến nhớ CloneID cho riêng
mình với các giá trị lần lượt là 1, 2,
3. Khi tạo ra, các clone sẽ di chuyển
ngẫu nhiên, tự do trên màn hình và
luôn hiện giá trị CloneID của riêng
mình để phân biệt với các clone khác.
Chương trình cụ thể trên Scratch như sau:
204 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Clone có ý nghĩa gì trong các ứng dụng thực tế của Scratch, chúng ta cùng tìm hiểu các hoạt động tiếp theo. 2. Rng hoa
Chương trình đơn giản sau cho em hiểu thêm hoạt động của clone.
Chương trình đơn giản này chỉ có đúng 1 nhân vật là
bông hoa, nhưng với nhiều hình ảnh đẹp mắt khác nhau.
Mục đích của chương trình là tạo ra 1 rừng hoa với
nhiều màu sắc sặc sỡ.
Để làm như vậy, em cần sưu tầm nhiều hình ảnh hoa
với màu sắc đa dạng khác nhau và đưa vào thành các
trang phục của nhân vật này.
Chương trình được xây dựng đơn giản như sau:
- Nhân vật chính bông hoa cần tạo ra nhiều hình ảnh khác nhau nhưng có kích thước gần
giống nhau làm trang phục. Ví dụ:
Thiết lập các hình bông hoa có
kích thước gần giống nhau và
màu sắc đa dạng khác nhau.
Dãy các trang phục (costume) được đánh số từ 1
- Trong mạch chương trình chính, em cho bông hoa lần lượt tạo ra 50 clone của chính mình.
Lệnh này sẽ tạo ra 50 bản clone của nhân vật chính. Các
phân thân clone này khi tạo ra có trang phục và khuôn
dạng giống với nhân vật chính và ở tại đúng vị trí của
nhân vật chính (nhưng nằm phía dưới).
205 | T ự h ọ c l ậ p t r ì n h S c r a t c h
- Mỗi phân thân, clone sẽ di chuyển nhanh tới 1 vị trí ngẫu nhiên trên màn hình với thể hiện trang phục ngẫu nhiên.
3. Trò chơi mèo đuổi chut
Trong hoạt động này, em hãy thiết kế trò chơi Mèo đuổi Chuột.
Nhân vật chính của chúng ta là Mèo và Chuột. Trò chơi được mô tả đơn giản như sau:
- Lũ chuột sẽ được phân thân và chạy lung tung (ngẫu nhiên) trên màn hình. Thấy mèo từ xa
chuột đã quay đầu bỏ chạy.
- Mèo được điều khiển bởi con người (dùng các phím điều khiển). Nhiệm vụ của người chơi
là điều khiển mèo đuổi và bắt chuột càng nhiều càng tốt.
- Thời gian mỗi lần chơi chỉ là 1 phút. Trên màn hình luôn hiển thị số lượng chuột đã bị bẳt.
Khi kết thúc trò chơi, bạn nào bắt được số chuột nhiều hơn sẽ chiến thắng. Khi kết thúc,
thông báo Game Over sẽ hiện trên màn hình.
Để thiết kế chương trình chúng ta bắt đầu từ các nhân vật. Hệ thống nhân vật bao gồm: mèo,
chuột, các chữ số (đủ từ 0 đến 9) và nút thông báo Game Over.
Sử dụng 2 biến nhớ tổng thể:
Time - thời gian chơi và
Count - số lượng chuột bị
206 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Sơ đồ hoạt động của trò chơi như sau: Bắt đầu Mèo chuyển động Lần lượt sau mỗi 2 Không hiển thị Ẩn thông báo. Đặt theo sự điều khiển giây tự sinh ra 1 gì trên màn giá trị Time = 60 bằng bàn phím clone của chính hình. và bắt đầu đếm của người chơi. mình. Chuyển động ngược theo từng ngẫu nhiên, nếu giây. Mỗi giây Ăn xong chuột, thấy mèo thì tránh giảm Time đi 1 kêu meo meo, xa. Nhận được thông đơn vị. tăng biến Count
báo hin th số thì lên 1 đơn vị và Nếu Time = 0 thì tiến hành hiển thị
thông báo hin Nếu bị va chạm với giá trị Count tại dừng toàn bộ
th s trên màn mèo, kêu "Ối trời", góc trái dưới màn chương trình, hiển thông báo cho mèo hình. thị Game Over. biết và tự xóa bản hình. thân (clone). 4. Trò chơi bóng bay
Trò chơi được mô tả như sau:
Từ phía dưới các quả bóng bay sẽ xuất hiện ngẫu nhiên và bay lên trên. Nhiệm vụ của người
chơi là nháy chuột lên các quả bóng bay này. Mỗi khi nháy lên quả bóng bay sẽ nổ và biến
mất. Thời gian chơi là 1 phút. Góc trái trên màn hình sẽ thể hiện số bóng bay đã được nháy
trúng. Người thắng cuộc là người đã làm nổ nhiều số bóng bay nhất. Khi hết thời gian, màn
hình xuất hiển dòng chữ và âm thanh "Game Over".
Gợi ý thiết kế chương trình.
207 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Em hãy thiết lập 3 nhân vật sau: Bóng bay, Ch số và biển thông báo Game Over. Ngoài
ra cần có thêm 2 biến nhớ chung là Time - thời gian dùng để đếm ngược khi chơi và Count
- biến nhớ ghi lại số lượng bóng bay đã được đánh trúng.
Nhiệm vụ mỗi nhân vật trên như sau: 1. Bóng bay
Bóng bay sẽ được tự động tạo các clone của mình và bay lên từ 1 vị trí ngẫu nhiên ở phía dưới. Bóng bay đ ợ ư c thiết ế
k có 1 số hình ảnh với màu sắc khác nhau. Người chơi sẽ nháy
chuột lên các quả bóng này. Nhiệm vụ của người chơi là nháy càng nhiều càng tốt lên các
quả bóng bay. Bóng bay sẽ biến mất nếu vượt ra ngoài màn hình hoặc bị người chơi nháy đúng.
2. Ch s
Góc trái trên màn hình sẽ luôn thể hiện số quả bóng bay đã bấm đúng. Nhân vật này sử dụng
biến nhớ Count để đếm số bóng bay bị nháy chuột đúng và thể hiện con số này tại góc trái trên màn hình.
3. Bin thông báo Game Over
Trò chơi kết thúc sau 60 giây. Nhân vật Biển thông báo này có nhiệm vụ đọc thời gi n a và
thông báo kết thúc trò chơi sau đúng 60 giây. Biến Time dùng làm nhiệm vụ đếm ngược thời gian.
Câu hi và bài tp
1. Viết chương trình cho con Mèo gốc phân thân thành 3 clone, 1 con chạy sang trái, 1 con
chạy sang phải và 1 con chạy lên trên.
2. Em hãy làm cho trò chơi Rng hoa đẹp lên như sau:
Sau khi xuất hiện các bông hoa sẽ tự động đổi màu và xoay tròn trên màn hình. Em sẽ thấy
một bức tranh sắc màu sặc sỡ, lung linh đẹp mắt.
3. Các phân thân của nhân vật gốc có thể đặt tên được hay không? Vì sao?
4. Có thể lập trình điều khiển riêng cho từng Clone được hay không? Lấy ví dụ cụ thể.
M rng
Thiết kế trò chơi vui sau: Tên la bn rn . g
208 | T ự h ọ c l ậ p t r ì n h S c r a t c h
Phía trên các con rồng sẽ xuất hiện ngẫu
nhiên và bay ngang qua màn hình theo
chiều ngang. Phía dưới có hình 1 tên lửa.
Nhiệm vụ của người chơi là điều khiển
tên lửa này đến bắn rồng. Người chơi
thắng cuộc nếu bắn được > 100 con rồng.
Số con rồng bắn được luôn hiện tại góc
trái dưới. Người chơi sẽ thua nếu số lượng
rồng xuất hiện quá đông > 10. Người chơi
dùng phím Space để bắn, dùng phím trái, hải ể đ điề khiể h ớ ủ ê lử
Các nhân vật chính của trò chơi này.
Sơ đồ hoạt động của chương trình như sau. Sau mỗi giây lại
Chịu sự điều khiển của Kiểm soát 2 sinh ra 1 clone, người chơi, hướng theo giá trị: count tăng biến gragon- cách người dùng phím và dragon- count lên 1 và điều khiển. Nếu nhận thông chuyển động ngang Nếu count > điệp Show Người dùng bấm phím 100, dừng Number thì hiển Space - sinh ra 1 clone chương trình và Nếu gặp tên lửa thì thị số count trên và bắn tên lửa theo hiển thị Victory.
tăng biến count, tự màn hình. hướng lên trên. biến mất và giảm biến dragon-count Nếu dragon-
Nếu bắn trúng rồng, tự đi 1 đơn vị. Thông count > 10 thì
biến mất. Nếu gặp cạnh dừng chương báo Show Number. trên màn hình cũng biến trình và hiển thị mất. Game Over.
209 | T ự h ọ c l ậ p t r ì n h S c r a t c h