2-hafta · Foundation

Scratch bilan vizual dasturlash

O'tgan hafta kompyuter 0 va 1 bilan ishlashini ko'rdik. Endi birinchi dasturimizni yozamiz, lekin klaviaturada emas, balki rangli bloklarni bir-biriga ulab. Scratch sintaksis xatolaridan xoli, shuning uchun dasturlashning eng muhim g'oyalariga, ya'ni ketma-ketlik, sikl, shart va o'zgaruvchiga to'liq e'tibor qaratamiz.

Bu darsda nimani o'rganasiz

Bloklarni ulab birinchi skriptingizni yig'asiz
Hodisalar (yashil bayroq, strelkalar) bilan dasturni ishga tushirasiz
Sikllar bilan takrorlanuvchi ishni qisqartirasiz
Shartlar bilan dasturga qaror qabul qildirasiz
O'zgaruvchilar bilan ochko va holatni saqlaysiz
Real o'yin loyihasini noldan tuzasiz

2.1 Scratch nima?

Scratch, Massachusets Texnologiya Instituti (MIT) yaratgan bepul muhit bo'lib, unda kod yozish o'rniga rangli bloklarni bir-biriga ulab dastur quriladi. Bu usul vizual dasturlash deyiladi.

Vizual dasturlash deganda kod matnini terish o'rniga, tayyor bloklarni sichqoncha bilan ulab dastur tuzish tushuniladi. Har bir blok bitta ko'rsatma, masalan «10 qadam yur» yoki «Salom de».

Nega aynan shu yerdan boshlaymiz? Sabablari sodda:

  • Sintaksis xatosi bo'lmaydi, ya'ni qavs yoki nuqta-vergulni unutib qo'yib xato olmaysiz
  • Bloklar faqat mantiqan mos joyga ulanadi, shuning uchun struktura o'z-o'zidan to'g'ri chiqadi
  • Natijani darhol sahnada ko'rasiz, bu o'rganishni qiziqarli qiladi

Eng asosiysi: Scratchda o'rgangan g'oyalaringiz, ya'ni sikl, shart va o'zgaruvchi, keyinchalik C, Python yoki JavaScriptda ham aynan shunday ishlaydi. Demak bu o'yinchoq emas, balki haqiqiy poydevor.

Scratch brauzerda, scratch.mit.edu manzilida ishlaydi va hech narsa o'rnatish shart emas. Bu darsda asosiy g'oyalarni interaktiv tarzda o'rganamiz, so'ng o'sha yerda o'zingiz mashq qilasiz.

2.2 Sahna, sprite va bloklar

Scratch ekrani uchta asosiy qismdan iborat. O'ng tomonda sahna, ya'ni dastur natijasi ko'rinadigan maydon. Uning ostida sprite ro'yxati. Chap tomonda esa bloklar palitrasi va ularni yig'adigan bo'sh joy.

Sprite deganda sahnada harakatlanadigan personaj yoki obyekt tushuniladi, masalan mushuk, to'p yoki raketa. Sahna (stage) esa sprite'lar harakatlanadigan fon, ya'ni o'yin maydoni.

Bloklar rangi bo'yicha guruhlarga ajratilgan. Rangni ko'rib, blok nima qilishini taxmin qilish mumkin. Quyidagi palitrada har bir kategoriyani bosib ko'ring:

Bloklar palitrasi kategoriyani bosing

Diqqat qiling: har bir rang bitta vazifa guruhini bildiradi. Ko'k harakat, binafsha ko'rinish, sariq hodisa va hokazo. Bu rangli mantiq Scratchni o'qishni juda osonlashtiradi.

2.3 Birinchi skript: hodisalar

Har bir dastur biror narsadan boshlanishi kerak. Scratchda dasturni ishga tushiruvchi signal hodisa (event) deb ataladi. Eng keng tarqalgani: «yashil bayroq bosilganda».

Bloklar to'plami skript deyiladi. Skript doim tepada «shapka» shaklidagi hodisa bloki bilan boshlanadi, ostiga esa ketma-ket ko'rsatmalar ulanadi. Mana eng oddiy skript:

yashil bayroq bosilganda
«Salom!» de

Bu skript shunday ishlaydi: foydalanuvchi yashil bayroqni bosadi, hodisa ishga tushadi, sprite «Salom!» deydi. Quyida o'zingiz sinab ko'ring:

Hodisani ishga tushiring bayroqni bosing
Sahna
Salom!

2.4 Harakat va ko'rinish

Endi sprite'ni harakatga keltiramiz. Buning uchun ikki kategoriya kerak bo'ladi: Harakat (ko'k bloklar) sprite'ni siljitadi va buradi, Ko'rinish (binafsha bloklar) esa uni gapirtiradi yoki tashqi qiyofasini o'zgartiradi.

Sahna koordinatalari

Sahnaning markazi x = 0, y = 0 nuqtasi. O'ngga siljisa x ortadi, yuqoriga siljisa y ortadi. «x: 100 y: 0 ga bor» bloki sprite'ni aniq joyga qo'yadi, «10 qadam yur» esa uni qaragan tomoniga suradi.

Eng ko'p ishlatiladigan bloklar

Mana namunaviy skript: bayroq bosilganda sprite oz oldinga yuradi, so'ng salom beradi.

yashil bayroq bosilganda
50 qadam yur
15 daraja buril
Salom! de
  • «qadam yur» sprite'ni qaragan yo'nalishida suradi
  • «daraja buril» uni belgilangan burchakka aylantiradi
  • «de» blokida yozgan matningiz sprite tepasida pufakcha bo'lib chiqadi
  • «kostyumni o'zgartir» sprite qiyofasini almashtiradi, bu animatsiya yaratadi
Bloklarning tartibi juda muhim. Kompyuter ularni yuqoridan pastga, qat'iy ketma-ket bajaradi. Bu tartib dasturlashning birinchi qoidasi, ya'ni ketma-ketlikdir.

Tugma bilan boshqarish: hodisaning kuchi

Haqiqiy o'yinlar foydalanuvchi tugmalariga javob beradi. «strelka bosilganda» bloki klaviatura hodisasini ushlaydi va sprite'ni shu yo'nalishda suradi. Pastdagi strelkalarni bosing (yoki sahnani bosib, klaviatura strelkalaridan foydalaning):

Tugma bilan boshqaruv strelkalarni bosing
Sahna

2.5 Sikllar: bir narsani takrorlash

Tasavvur qiling, sprite bilan kvadrat chizmoqchisiz. Kvadratning 4 ta teng tomoni va 4 ta burchagi bor. Demak «oldinga yur» va «90 daraja buril» juftligini 4 marta yozish kerak. Buni qo'lda 4 marta nusxalash zerikarli va xatoga moyil.

Yechim oddiy. Sikl (loop) deganda bir guruh ko'rsatmani belgilangan necha marta avtomatik takrorlovchi blok tushuniladi. «4 marta takrorla» bloki ichiga ikkita blokni solamiz, xolos:

Sikl kvadrat chizadi qadamlab kuzating
4 marta takrorla
60 qadam yur
90 daraja buril
Takror: 0 / 4

Ko'rdingizmi? Atigi 3 ta blok (1 sikl + 2 ko'rsatma) butun kvadratni chizdi. Sikllar dasturni qisqa, toza va xatosiz qiladi.

Yana bir maxsus sikl bor: abadiy (forever). U ichidagi bloklarni to'xtovsiz, dastur tugaguncha takrorlaydi. Masalan o'yinda «abadiy: sichqonchaga qarab yur» bloki dushmanni doimo o'yinchi ortidan ergashtiradi.

2.6 Shartlar va sezish

Hozircha dasturimiz bir xil ketma-ketlikda ishladi. Lekin haqiqiy dasturlar vaziyatga qarab qaror qabul qiladi. Buning uchun shart kerak.

Shart (condition) deganda javobi faqat «ha» yoki «yo'q» bo'ladigan savol tushuniladi, masalan «sprite chetga tegdimi?». Bunday savollarni Sezish (moviy) kategoriyasi beradi. «agar ... bo'lsa» bloki esa shart bajarilgandagina ichidagi kodni ishlatadi.

Eng foydali ko'rinishi «agar ... bo'lsa, aks holda» bloki. U ikki yo'ldan birini tanlaydi: shart rost bo'lsa birinchi qism, yolg'on bo'lsa ikkinchi qism ishlaydi. Quyida tugmani bosib, qaysi tarmoq yonishini kuzating:

Shart bo'yicha tarmoqlanish javobni almashtiring
Sprite chetga tegdimi?
agar chetga tegdi? bo'lsa
180 daraja buril
aks holda
10 qadam yur
agar Chetga tegdi, demak qaytib buriladi (devordan sakraydi)
aks holda Chetga tegmadi, demak oldinga yurishda davom etadi

Shartlar dasturga «aql» beradi: u endi vaziyatni sezadi va shunga qarab turlicha harakat qiladi.

2.7 O'zgaruvchilar

O'yinda ochkoni qanday sanaymiz? Sprite necha jonli qolganini qayerda saqlaymiz? Buning uchun o'zgaruvchi ishlatiladi.

O'zgaruvchi (variable) deganda qiymat saqlaydigan nomli «quti» tushuniladi, masalan «ochko», «jon» yoki «tezlik». Quti ichidagi qiymatni istalgan vaqtda o'qish yoki o'zgartirish mumkin.

Ikki asosiy amalni adashtirmaslik muhim. «0 ga o'rnat» qutidagi eski qiymatni o'chirib, butunlay yangisini yozadi. «1 ga o'zgartir» esa qutidagi songa qo'shadi. Quyida ikkalasini sinab ko'ring:

«ochko» o'zgaruvchisi tugmalarni bosing
ochko
0

«o'zgartir» boriga qo'shadi, «o'rnat» esa to'liq yangi qiymat beradi. Farqni tugmalarni navbat bilan bosib ko'ring.

2.8 Amaliy mashq: skriptni o'zingiz yig'ing

Endi hamma narsani birlashtiramiz. Pastdagi palitradan bloklarni bosib skript yig'ing, so'ng yashil bayroqni bosing va sprite sahnada sizning ko'rsatmalaringizni bajarsin. Takror sonini o'zgartirib, butun skriptni sikl ichiga olishingiz ham mumkin.

Skript quruvchi blokni qo'shish uchun bosing

Palitra

Skriptingiz

Takror: 1 marta
Sahna

E'tibor bering: sprite bloklarni yuqoridan pastga, aynan siz qo'ygan tartibda bajaradi. Bu o'sha ketma-ketlik qoidasi. Takror sonini oshirsangiz, sikl butun raqsni qayta-qayta ishlatadi.

2.9 Real loyihalar

Endi o'rgangan to'rt g'oyani (ketma-ketlik, sikl, shart, o'zgaruvchi) birlashtirib, haqiqiy o'yinlardagi kabi to'liq dasturlarni ko'ramiz. Har biri siz Scratchda darhol qura oladigan real loyiha.

Loyiha 1: Devordan sakraydigan to'p

Bu eng mashhur birinchi o'yin. To'p to'xtovsiz yuradi va devorga (chetga) urilganda qaytib sakraydi. Mana butun dastur, atigi bir necha blok. Yonidagi sahnada uni ishga tushiring:

yashil bayroq bosilganda
abadiy
10 qadam yur
agar chetga tegdi? bo'lsa
chekkadan qaytib sakra
Sahna

«abadiy» sikli o'yinning yuragi: u to'xtamasdan ishlaydi. Ichida ikki ish bor, ya'ni harakat va shartni tekshirish. Bu naqsh deyarli har bir o'yinda uchraydi.

Loyiha 2: Olma yig'uvchi mushuk

Endi o'zgaruvchi va sezishni birlashtiramiz. Mushuk olmaga tegsa, «ochko» bittaga ortadi. Bu har qanday «yig'ish» o'yinining asosi:

yashil bayroq bosilganda
«ochko»ni 0 ga o'rnat
abadiy
agar «olma»ga tegdi? bo'lsa
«ochko»ni 1 ga o'zgartir
Yo'q! 0.2 soniya de

Olmani esa klon qilib osmondan tushiramiz (buni keyingi bo'limda ko'ramiz). Mana shu uch g'oya: sikl, shart va o'zgaruvchi to'liq bir o'yinni hosil qiladi.

Loyiha 3: Strelka bilan boshqarish

Yuqorida tugma bilan sprite'ni surdik. Real o'yinda buning kodi juda qisqa: har bir strelka uchun alohida kichik skript. Mushuk o'ngga yursin desangiz:

«o'ng strelka» bosilganda
x ni 10 ga o'zgartir
«chap strelka» bosilganda
x ni -10 ga o'zgartir

Diqqat qiling: bu ikki skript bir vaqtda, mustaqil ishlaydi. Scratchda ko'p skript bir paytda yashashi mumkin, har biri o'z hodisasini kutadi.

Bashorat qiling: bu skript nima qiladi?

Kodni o'qish, uni yozishdek muhim. Skriptni ko'rib, natijani toping. Javobni bossangiz, to'g'risi belgilanadi:

1. Bu skript sprite bilan nima qiladi?

yashil bayroq bosilganda
4 marta takrorla
100 qadam yur
90 daraja buril
Kvadrat shaklida yuradi
Aylana chizadi
Joyida turaveradi

2. Skript tugagach «ochko» o'zgaruvchisi nechaga teng bo'ladi?

yashil bayroq bosilganda
«ochko»ni 0 ga o'rnat
«ochko»ni 1 ga o'zgartir
«ochko»ni 1 ga o'zgartir
0
1
2

3. «abadiy» sikli ichidagi blok qanday ishlaydi?

yashil bayroq bosilganda
abadiy
10 qadam yur
Bir marta 10 qadam yuradi va to'xtaydi
To'xtovsiz oldinga yuraveradi
Umuman yurmaydi

2.10 Chuqurroq advanced

Asoslarni egalladingiz. Endi Scratchning kuchli imkoniyatlari bilan tanishamiz. Bu tushunchalar haqiqiy dasturlash tillarida ham aynan mavjud, faqat boshqacha nomlanadi.

Xabarlar (broadcast)

Xabar (broadcast) deganda bir sprite boshqasiga yuboradigan signal tushuniladi. Bir sprite «xabar yubor» blokini ishlatadi, ikkinchisi esa «xabarni qabul qilganda» bloki orqali javob beradi. Shu yo'l bilan sprite'lar bir-biri bilan «gaplashadi» va sahnalar almashinadi. Bu haqiqiy dasturlashdagi hodisalar tizimining (event) aynan o'zi.

bo'shliq bosilganda
«boshla» xabarini yubor
«boshla» xabarini olganda
ko'rin

Klonlar (clone)

Klon (clone) deganda sprite'ning dastur ishlash vaqtida yaratilgan nusxasi tushuniladi. Bitta sprite'dan o'nlab o'q, yulduz yoki dushman yaratish uchun ishlatiladi: bittasini chizib, kerakli paytda klonlaysiz. Bu katta dasturlardagi «obyekt nusxasi» g'oyasiga juda yaqin.

bo'shliq bosilganda
o'zimni klonla
klon paydo bo'lganda
agar chetga tegdi? bo'lsa
bu klonni o'chir

Ro'yxatlar (list)

Ro'yxat (list) deganda ko'plab qiymatni bitta nom ostida tartib bilan saqlaydigan tuzilma tushuniladi. Masalan eng yuqori natijalar jadvali yoki savollar to'plami. Oddiy o'zgaruvchi bitta qiymat saqlasa, ro'yxat butun bir ro'yxatni saqlaydi. Bu haqiqiy tillardagi massiv tushunchasining o'zi.

«ballar» ro'yxatiga 100 qo'sh
1 100
2 85
3 70

O'z bloklaringiz (custom blocks)

Agar bir guruh blok ko'p marta takrorlansa, ularni bitta yangi blokka jamlash mumkin. O'z bloki (custom block) deganda foydalanuvchi yaratgan, bir nom bilan chaqiriladigan blok tushuniladi. Masalan «yulduz chiz» degan o'z blokingizni yasab, uni istalgan joyda bir marta bosib ishlatasiz. Bu dasturlashdagi funksiya tushunchasining boshlanishi, ya'ni kodni qayta ishlatish va murakkablikni kamaytirish vositasi.

«yulduz chiz» ni aniqla
5 marta takrorla
100 qadam yur
144 daraja buril
Diqqat qiling: xabar = hodisa, klon = obyekt nusxasi, ro'yxat = massiv, o'z bloki = funksiya. Scratchda bu g'oyalarni bir marta tushunsangiz, keyingi tillarda ularni faqat boshqa nom bilan qayta ko'rasiz.

2.11 Bilim testi

Testdan oldin: asosiy atamalar

Bu hafta o'rgangan tushunchalar. Test oldidan ko'z yugurtirib chiqing:

Spritesahnada harakatlanadigan personaj yoki obyekt.
Sahnasprite'lar harakatlanadigan fon, ya'ni maydon.
Blokbitta ko'rsatma; bloklar ulanib skript bo'ladi.
Hodisadasturni ishga tushiruvchi signal (bayroq bosilishi).
Siklbir guruh ko'rsatmani takrorlovchi blok.
Shartjavobi ha yoki yo'q bo'lgan savol; qaror uchun.
O'zgaruvchiqiymat saqlovchi nomli quti (ochko, jon).
Xabarsprite'lar o'rtasidagi signal (broadcast).

Endi sinab ko'ramiz

16 ta savol. Haftani yakunlash uchun kamida 11 tasiga to'g'ri javob bering.

Tabriklaymiz! 2-hafta yakunlandi

Endi siz birinchi dasturingizni yozdingiz va dasturlashning to'rt ustunini bilasiz: ketma-ketlik, sikl, shart va o'zgaruvchi. Xabar, klon va o'z bloklari bilan ham tanishdingiz. Bu g'oyalar har qanday tilda bir xil ishlaydi.

Keyingi hafta tayyor: C tili asoslari.

Keyingi modulga o'tish