Mundarija:

Dizayner uchun qiziqarli dasturiy ko'rsatma-Dastur jarayonini boshqarish- Loop bayonoti: 8 qadam
Dizayner uchun qiziqarli dasturiy ko'rsatma-Dastur jarayonini boshqarish- Loop bayonoti: 8 qadam

Video: Dizayner uchun qiziqarli dasturiy ko'rsatma-Dastur jarayonini boshqarish- Loop bayonoti: 8 qadam

Video: Dizayner uchun qiziqarli dasturiy ko'rsatma-Dastur jarayonini boshqarish- Loop bayonoti: 8 qadam
Video: 39+ ЛУЧШИХ инструментов искусственного интеллекта, которые сделают вашу жизнь более гладкой и лучшей 2024, Iyul
Anonim
Dizayner uchun qiziqarli dasturiy ko'rsatma-Dastur jarayonlarini boshqarish- Loop bayonoti
Dizayner uchun qiziqarli dasturiy ko'rsatma-Dastur jarayonlarini boshqarish- Loop bayonoti

Dastur jarayonlarini boshqarish- Loop bayonoti

Ushbu bobdan siz muhim va kuchli bilim nuqtasi-Loop bayonoti bilan bog'lanasiz.

Ushbu bo'limni o'qishdan oldin, agar siz dasturda 10 000 ta doirani chizmoqchi bo'lsangiz, faqat dahshatli usul bilan qilishingiz mumkin. Ya'ni ellips kodining 10 000 satrini yozish. Samaradorlikni har tomonlama yaxshilashni xohlaydigan dangasa kod dizaynerlari, albatta, bunga yo'l qo'ymaydi. Shunday qilib, loop iborasi yaratiladi. Ushbu bayonot yordamida siz kompyuterni avtomatlashtirishning kuchini intuitiv ravishda sezishingiz mumkin.

1 -qadam: Loop uchun

Ko'p tsiklli iboralar mavjud, ular orasida eng ko'p ishlatiladigan For Loop. Biz hammamiz bilamizki, funktsiya chizig'i doimiy ravishda aylanishda ishlaydi. Birinchi gapni boshidan boshlang, u yuqoridan pastgacha oxirgi jumlaga qadar amal qiladi. Operatsiyani tugatgandan so'ng, u birinchi jumladan yana boshlanadi. Chizma uchun funktsiya chizish biroz o'xshash. Hisobot uchun kod bir necha bor bajarilishi mumkin.

Mana uning grammatik tuzilishi:

Uchun (ifoda 1; ifoda 2; ifoda 3) {

Loop tanasi

}

Shubhasiz, loop tanasi ichidagi jumlalar biz bir necha bor bajarilishini kutgan narsadir. 1 -ifoda loop o'zgaruvchisini ishga tushirish va birinchi qiymatini belgilash uchun ishlatiladi. Ifoda 2 loop holati uchun. Expression 3 loop o'zgaruvchan qiymatini yangilaydi.

Loop o'zgaruvchisi nima? Bu aslida mahalliy o'zgaruvchiga teng. Keling, to'liq yozishni ko'rib chiqaylik.

uchun (int i = 0; i <10; i ++) {

Loop tanasi

}

Loop funktsiyasini amalga oshirish uchun, bayonot asosan loop o'zgarganda ishlatiladi, bu esa loop tugashida ishlatiladi. Yuqoridagi misoldagi mahalliy o'zgaruvchi i. 1 -ifoda mahalliy o'zgaruvchining ishga tushirilishini yakunladi. Keyinchalik, har safar pastadir bir marta ishlaganda, bu o'zgaruvchi yangilanishi kerak. Yuqoridagi misollar orasida 3 -ifodadagi i ++ yangilanish funktsiyasini amalga oshirish uchun ishlatiladi. U orqali o'zgaruvchi har yangilanganida 1 taga ko'payadi. Oxir -oqibat, loop tanasi ichidagi kod abadiy aylana olmaydi, boshqa hollarda oxirgi so'zlar bajarilmaydi. Shunday qilib, bizga oxirgi shart kerak. Express 2 aynan shu maqsadda. Bu erda, dastur men 10 dan kam emasligimni aniqlaydi. Agar shunday bo'lsa, operatsiyani davom ettiring. Agar bunday bo'lmasa, pastadirdan sakrab chiqing.

Shuning uchun, for bayonining ishlash ketma -ketligi xuddi shunday.

Ifoda 1 (Mahalliy o'zgaruvchining boshlanishi)

2 -ifoda (qoniqdim, keyin ishlashni davom ettiring)

Loop tanasi (birinchi aylanish)

3 -ifoda (yangilash)

2 -ifoda (qoniqdim, keyin ishlashni davom ettiring)

Loop tanasi (Ikkinchi sirka)

3 -ifoda (yangilash)

2 -ifoda (qoniqdim, keyin ishlashni davom ettiring)

Ichak tanasi (Uchinchi qon aylanishi)…

3 -ifoda (yangilash)

2 -ifoda (ma'qul emas, keyin pastadirdan sakrab chiqing)

Siz bu ketma -ketlikni boshingizda bir necha marta simulyatsiya qilishingiz mumkin. Ammo kodni qo'lingiz bilan bir marta yozmasdan tushunishning iloji yo'q. G'alati tushunchani bilmoqchi bo'lsak, biz konsoldagi qiymatni println operatori orqali chop etishimiz mumkin.

Kod misoli (5-1): void setup () {

uchun (int i = 0; i <10; i ++) {

println ("ishga tushirish");

}

}

Siz konsolda ishlaydigan chiqish sonini hisoblashingiz mumkin. Mana, aynan 10. Bu sizga loop tanasidagi kod necha marta bajarilganligini ko'rsatadi. Biroq, biz halqada qanday o'zgarishlar ro'y berganini hali aniqlay olmaymiz. Shunday qilib, biz "i" o'zgaruvchiga aylanadigan belgini o'zgartirishga harakat qilib, nima bo'lishini ko'rishimiz mumkin.

Kod misoli (5-2): void setup () {

uchun (int i = 0; i <10; i ++) {

println (i);

}

}

Endi, biz loop tanasidagi i qiymati doimiy ravishda oshib borayotganini ko'rishimiz mumkin. Keyinchalik, biz ushbu qiymatdan pastadirning joriy jarayonini tushunish uchun foydalanishimiz mumkin.

Kod misolida (5-2), i qiymati 0 dan 9 gacha o'zgaradi. Haqiqiy tsikl vaqtlari bilan taqqoslaganda, har doim 1dan kam bo'ladi. Agar siz bunga ko'nikmagan bo'lsangiz, forsning qavs ichidagi ifodasi quyidagicha yozilishi mumkin:

uchun (int i = 1; i <= 10; i ++)

Shunday qilib, i haqli ravishda tsikl vaqtlariga mos keladi. "<=" ma'nosi kichik va tengdir. Shunday qilib, agar men 10 ga teng bo'lsam, u hali ham shartga javob beradi. Shuning uchun u i <10 ga yozilgandan ko'ra yana bir bor ishlaydi, garchi u 1dan boshlangan bo'lsa -da, tsiklning davomiyligi hali ham 10. Albatta, agar maxsus hech narsa kerak bo'lmasa, sizga yozish usulini boshida misol. Keyinchalik biz sizga vektor yoki massivni taqdim etamiz, ularning ikkalasi ham o'z elementini pastki indeksi orqali oladi. Va standart indekslar hammasi 0 dan boshlanadi. Boshlang'ich qiymatni 0 deb belgilash - bu nisbatan keng tarqalgan amaliyot.

Yuqoridagi misolda, agar i 0dan yuqori deb yozsak, pogramma buziladi. O'zgaruvchi doimiy ravishda o'sib borayotganligi sababli, bu shart hech qachon qondirilmaydi. Bu hech qachon to'xtatib bo'lmaydiganga o'xshaydi, shunda dastur cheksiz tsiklga aylanadi.

For ifodasidagi mahalliy o'zgaruvchilar nafaqat plastmassa turlarini e'lon qilishi, balki o'zgaruvchan nuqtali turlardagi o'zgaruvchilarni ham e'lon qilishi mumkin. Masalan, uni quyidagicha yozish mumkin (float i = 0; i <10; i + = 0,02).

2 -qadam: Matematik muammolarni hal qilish uchun Loop -dan foydalaning

Matematik Gaussning bolaligidagi hikoyasi hali ham esingizdami? O'sha paytda Guass 10 yoshda edi. O'qituvchisi sinfga vazifa topshirmoqchi edi va savol shunday edi

1+2+3+4……+97+98+99+100=?

Agar siz o'z qo'llaringiz bilan hisoblasangiz, sizga ko'p vaqt kerak bo'ladi. Ammo Guass arifmetik ketma -ketlikni yig'ish usulini allaqachon aniqlaganga o'xshaydi. Savol berilgandan so'ng, u o'qituvchini juda hayron qoldirgan javobni osonlik bilan aytdi.

Endi biz arifmetik ketma -ketlikning yig'indisi nima ekanligini hali ham eslay olmaymiz, lekin biz javobni ibtidoiy va zo'ravonlik bilan olishimiz mumkin. Va bu loop uchun. Kompyuterlar hisoblashi mumkin bo'lgan kichik bir bo'lak bo'lgani uchun, biz bu savolni kompyuter taniy oladigan tilda tasvirlab berishimiz kerak, shunda biz o'z javobimizni osongina olishimiz mumkin.

Kod misoli (5-3):

bo'sh o'rnatish () {

int javob = 0;

uchun (int i = 1; i <= 100; i ++) {

javob += i;

}

println (javob);

}

Men ishonamanki, siz olgan natija Guass bergan javob bilan bir xil: bu 5050!

Maslahatlar: for loopidagi mahalliy o'zgaruvchilarning nomini o'z xohishiga ko'ra o'zgartirish mumkin, agar u o'zgaruvchining nomlanishi qoidalariga rioya qilsa. Siz uni shunday yozishingiz mumkin (int k = 1; k <= 100; k ++). Agar spetsifik shartlar bo'lmasa, u o'zgaruvchining nomi sifatida i.

3 -qadam: Loop chizish uchun

Zerikarli ko'rpa -to'shaklardan so'ng, nihoyat, biz yanada qiziqarli bo'limga kirishimiz mumkin. Bu rasm chizish uchun loopdan foydalanish. Biz bu zerikarli matematik hisobni hozir chetga surib qo'yishimiz mumkin. Biz dizaynerlar grafikaga ko'proq sezgirmiz.

Doira qatorini chizish uchun Loop uchun foydalaning

Agar biz takrorlanadigan elementlar guruhini ifodalash uchun loopdan foydalanmoqchi bo'lsak, biz bu elementlarning raqamli nisbiyligiga oldindan ishonch hosil qilishimiz kerak, keyin biz katta takroriy ishlarni bajarish o'rniga, uni qulay amalga oshirish uchun loopdan foydalanishimiz mumkin. Faraz qilaylik, agar biz gorizontal yo'nalishda teng taqsimlangan aylana chizig'ini chizmoqchi bo'lsak. Uning virtual koordinatasi o'zgarmaydi, gorizontal koordinatasi esa o'zgaradi. Va chapdan o'ngga gorizontal koordinata doimiy ravishda oshib boradi va ortib borayotgan masofa bir xil bo'ladi. Bu vaqtda biz har bir aylananing gorizontal koordinatasini olish uchun i in for loopdan foydalanishimiz mumkin.

Kod misoli (5-4): void setup () {

hajmi (700, 700);

fon (83, 51, 194);

noStroke ();

}

bekor chizish () {

uchun (int i = 0; i <7; i ++) {

ellips (50.0 + i * 100.0, balandlik/2.0, 80.0, 80.0);

}

}

50 - chapdagi birinchi aylananing boshlang'ich pozitsiyasini bildiradi. I * 100 da 100 - ortib borayotgan masofani ifodalaydi.

4 -qadam: tasodifiy yumaloq nuqta chizish uchun Loop -dan foydalaning

Yuqoridagi grafik pozitsiyani oldindan aytish mumkin. Bu qiziqishni kamaytiradi. Biz oldingi bobda tasvirlangan tasodifiy funktsiyadan foydalanishimiz va uni chizish funktsiyasida yozishga harakat qilishimiz mumkin.

Kod misoli (5-5):

bo'sh o'rnatish () {

hajmi (700, 700);

fon (0);

noStroke ();

}

bekor chizish () {

fon (0);

uchun (int i = 0; i <10; i ++) {

float randomWidth = tasodifiy (60.0);

ellips (tasodifiy (kenglik), tasodifiy (balandlik), randomWidth, randomWidth);

}

}

Bu erda aylananing pozitsiyasi doimo miltillab turadigan sabab, tasodifiy funktsiya har safar bir marta bajarilganda, natija tasodifiy bo'ladi. Chunki funktsiya chizig'i standart sifatida sekundiga 60 kadrni tashkil qiladi, shuning uchun soniyada chizilgan har 10 ta aylana o'z o'rnini 60 marta o'zgartiradi. Bu tezkor chiroqlar tasvirni atigi 10 ta doiradan iborat qilib qo'yadi. Dasturda oddiy qiymatni o'zgartirish sizga butunlay boshqacha effekt beradi. Biz terminal holatini qayta ko'rib chiqish orqali aylanish vaqtini o'zgartirishimiz mumkin. Quyidagi rasmdagi terminal sharti i <100

  1. Terminal sharti i <1000 bo'lganda ta'siri quyidagicha bo'ladi:
  2. RandomSeed
  3. Agar men aylananing joylashuvi tasodifiy shakllanishini va uning chirog'ini xohlamasam, nima qilishim mumkin? Bitta usul - har bir doira uchun mustaqil o'zgaruvchilarni yaratish va saqlash va sozlashda bu o'zgaruvchilarni ishga tushirish. Bu o'zgaruvchilarga tasodifiy qiymat bering. Shunday qilib, chizish chizish funktsiyasidan foydalanganda biz o'zgaruvchilarda saqlanadigan qiymatni chaqirdik. U hech qachon o'zgarmaydi. 10 ta aylana chizish uchun biz faqat shu usuldan foydalanishimiz mumkin. Ammo agar biz 1000 ta doirani yoki 10 000 ta doirani chizmoqchi bo'lsak nima bo'ladi? Agar biz ushbu o'zgaruvchini yaratish va uni nomlash uchun an'anaviy usuldan foydalansak, bu juda qiyin bo'ladi. Bizga yangi o'zgaruvchan tuzilish usulini o'rganish shart emas. Mana bu maqsadga erishishga yordam beradigan moslashuvchan usul. Bu randomSeed -dan foydalanish. Keling, ishlatilganidan keyin uning ta'sirini ko'rib chiqaylik. Kod misoli (5-6): [cceN_cpp theme = "shafaq"] void setup () {size (700, 700); fon (0); noStroke ();}
  4. bekor chizish () {

    fon (0);

    randomSeed (1);

    uchun (int i = 0; i <10; i ++) {

    float randomWidth = tasodifiy (20.0, 60.0);

    ellips (tasodifiy (kenglik), tasodifiy (balandlik), randomWidth, randomWidth);

    }

    } [/cceN_cpp]

    Oldingi kod bilan taqqoslaganda, u faqat ofSeedRandom jumlasi bilan aylananing radius diapazonini 10 dan 30 gacha o'zgartirishdan boshqa hech qanday o'zgarishlarga ega emas. Bu jumla qo'shilgandan so'ng, grafik statik bo'lib qoladi.

    Chaqiruv formati:

    randomSeed (a);

    Bu format orasida a ni sozlash urug 'hisoblanadi. Siz unga butun sonni to'ldirishingiz kerak (P5 -da o'zgaruvchan nuqta qiymatini yozing, u xato qilmaydi, lekin uni butun son sifatida qabul qiladi). RandomSeed funktsiyasi - urug'ni tasodifiy qiymatga o'rnatish. Keyin u har xil urug'larga ko'ra har xil tasodifiy qatorni yaratadi. Shundan so'ng, biz tasodifiy funktsiyani chaqiramiz, shunda qaytarish natijasi aniq bo'ladi. Bu erda aniq natija uchun emas, balki aniqlangan qiymat uchun. Ya'ni, qaytish natijasi chaqiruv vaqtiga nisbatan aniq.

    Kod misoli (5-7): [cceN_cpp theme = "tong"] void setup () {

    randomSeed (0);

    uchun (int i = 0; i <5; i ++) {

    println (tasodifiy (10));

    }

    } [/cceN_cpp]

    Endi biz tajriba qilish uchun println -dan foydalanishni davom ettiramiz. RandomSeed -dan foydalangandan so'ng, har safar dasturni yopganingizda va dasturni qayta ishga tushirganingizda, u xuddi shu natija qatoriga qaytadi. Qiymat ketma -ketlikka mos keladi. Agar siz uni o'chirsangiz, u har safar boshqa qiymatga qaytadi. Nima uchun bu sozlama bor? Buning sababi shundaki, dasturda tasodifiy qiymat tasodifiy tasodifiydir. Natija tasodifiy ko'rinadi, lekin aslida u sobit va takrorlanadigan hisoblash usuli bilan yaratiladi. Bu randomSeed uchun ibtidoiy qiymatni belgilashga tengdir, keyin bu urug 'bo'yicha quyidagi natija hisoblanadi. Ammo, agar biz urug'ni belgilamasak, dastur urug 'ishlab chiqarish uchun tizimning hozirgi vaqtidan foydalanmaydi. Shuning uchun har bir operatsiyaning natijasi boshqacha. Quyidagi misol randomSeed -ni yaxshiroq tushunishga yordam beradi.

    Misol kodi (5-8): [cceN_cpp theme = "shafaq"] void setup () {

    hajmi (700, 700);

    fon (0);

    noStroke ();

    }

    bekor chizish () {

    randomSeed (1);

    uchun (int i = 0; i <10; i ++) {

    float randomWidth01 = tasodifiy (10, 60);

    ellips (tasodifiy (kenglik), tasodifiy (balandlik), randomWidth01, randomWidth01);

    println (randomWidth01);

    }

    randomSeed (1);

    uchun (int i = 0; i <10; i ++) {

    float randomWidth02 = tasodifiy (10, 60);

    ellips (tasodifiy (kenglik), tasodifiy (balandlik), randomWidth02, randomWidth02);

    println (randomWidth02);

    }

    } [/cceN_cpp]

    Ikkinchi randomSeed (1) ni randomSeed (0) ga o'zgartirishga harakat qiling va yakuniy natijalarni solishtiring.

    Maslahatlar: P5 -da biz faqat noLoop funktsiyasini o'yin oxirida chaqirishimiz kerak, shunda biz ham xuddi shunday ta'sirga ega bo'lamiz. Uning vazifasi dasturni tugatishdir. Bu tabiatning yuqoridagi ishlash tamoyillaridan tubdan farq qiladi.

5 -qadam: Chiziq chizish uchun Loop -dan foydalaning

RandomSeed -dan foydalanishni o'zlashtirganimizdan so'ng, biz chizish funktsiyasini o'zgartirishga harakat qilishimiz mumkin. Masalan, aylana chizishni chiziq chizig'iga o'zgartiring. Faqat biz qatorning oxirigacha ba'zi o'zgaruvchan qoidalarni ishlab chiqsak, biz o'ziga xos naqsh yaratish uchun bir -biriga bog'langan ko'plab chiziqlardan foydalanishimiz mumkin.

Kod misoli (5-9):

[cceN_cpp theme = "tong"] sozlamalarni bekor qilish () {

hajmi (700, 700);

fon (0);

}

bekor chizish () {

randomSeed (0);

uchun (int i = 0; i <2000; i ++) {

float x1 = kenglik/2.0;

float x2 = tasodifiy (50.0, 650.0);

qon tomir (255, 20);

chiziq (x1, 50, x2, 650);

}

} [/cceN_cpp]

Oddiy cho'tka yaratish

Loop uchun yana qaytish. Yuqoridagi misollar interaktiv emas. Agar biz natijani yanada qiziqarli qilishni xohlasak, mouseX va mouseY kodlarini birlashtirishni unutmaymiz.

Kod misoli (5-10):

[cceN_cpp theme = "tong"] sozlamalarni bekor qilish () {

hajmi (700, 700);

fon (255);

noStroke ();

}

bekor chizish () {

uchun (int i = 0; i <1000; i ++) {

to'ldirish (0, 30);

float x = mouseX + tasodifiy (-50, 50);

float y = mouseY + tasodifiy (-50, 50);

ellips (x, y, 2, 2);

}

} [/cceN_cpp]

"Tarqalish nuqtalari" cho'tkasi yaratiladi. Har bir kichik dumaloq nuqta sichqonchaning holatiga asoslanganligi sababli, u cheklangan yo'nalishlarni chap, o'ng, yuqoriga va pastga to'rt yo'nalishdan harakatlantirishi mumkin. Shunday qilib, cho'tkaning oxirgi shakli tarqalishi kvadratga o'xshaydi.

Kod misoli (5-11):

[cceN_cpp theme = "tong"] sozlamalarni bekor qilish () {

hajmi (700, 700);

fon (255);

noStroke ();

}

bekor chizish () {

uchun (int i = 0; i <1000; i ++) {

float nisbati = mouseX/(float) kengligi;

float x = mouseX + tasodifiy (-50, 50);

float y = mouseY + tasodifiy (-50, 50);

to'ldirish (0, nisbat * 255, 255 * (1 - nisbat), 30);

ellips (x, y, 2, 2);

}

}

[/cceN_cpp]

Agar biz to'ldirish rangiga ta'sir qilish uchun mouseX qiymatidan foydalansak, biz ranglarning sehrli gradyanini olamiz.

6 -qadam: Loop Nested uchun

Loop uchun ichki joylashtirish mumkin. For loopiga for for loopini qayta yozishingiz mumkin. Agar siz ikki o'lchovli nuqta matritsasini chizishingiz kerak bo'lsa, siz ushbu usulni tanlashingiz mumkin.

Kod misoli (5-12):

[cceN_cpp theme = "tong"] sozlamalarni bekor qilish () {

hajmi (700, 700, P2D);

fon (202, 240, 107);

}

bekor chizish () {

to'ldirish (0);

uchun (int i = 0; i <5; i ++) {

uchun (int j = 0; j <5; j ++) {

float x = 150 + i * 100;

float y = 150 + j * 100;

ellips (x, y, 60, 60);

println (i + ":" + j);

}

}

}

[/cceN_cpp]

Ichki tsiklni birinchi marta ishlatish uchun uning mantiqiy aloqalarini aniqlash kerak. Dasturda kodni amalga oshirish har doim yuqoridan pastgacha. Shuning uchun, birinchi amalga oshirilgan, albatta, eng pastadir. Har safar tashqi tsikl bir marta ishlasa, ichki halqa shartni boshqa qondira olmaguncha uzluksiz ishlaydi. Shundan so'ng, u ikkinchi tashqi pastadir operatsiyasini boshlaydi. Ikkinchi operatsiya boshlanganidan so'ng, ichki tsikl shartni bajara olmaguncha amalga oshiriladi. Bunday takrorlash barcha shartlar bajarilmaguncha amalga oshiriladi va u pastadirdan chiqib ketadi.

Yuqoridagi kodda tashqi tsikldagi pastadir tanasi jami 5 marta, ichki tsikldagi pastadir tanasi 25 marta ishlagan. 25 marta, i, j qiymatining farqiga ko'ra, biz aylananing gorizontal va vertikal koordinatalarini alohida ta'minlay olamiz. Men bosma qismni joylashtirdim, siz ma'lumotlarning chiqishini kuzatishingiz va uning o'zgarishi haqida o'ylashingiz mumkin. Faqat ikkita ichki halqa bilan biz i, j ma'lumotlarining barcha kombinatsiyalarini ko'rishimiz mumkin.

Maslahatlar

Ikkinchi qavatdagi pastadir uchun, odatda, boshida Tab bilan kondensatsiyalanadi. Bu kod tuzilishini yanada aniqroq qilishi mumkin. Har xil nomdagi for loopning ikki qatlamida mahalliy o'zgaruvchilarni nomlashingiz kerak. Ularning orasida "i", "j", "k" eng ko'p ishlatiladi.

Moslashuvchan foydalanish "i", "j"

"I", "j" ikkita o'zgaruvchi nomi for loopning ikki qatlamining mahalliy o'zgaruvchilarini ifodalaydi. Quyidagi misol "i" "j" tushunchasini chuqurlashtiradi. "I", "j" har xil qiymatiga ko'ra, biz elementlarni guruhlash uchun parametrlarni kiritishimiz mumkin.

Kod misoli (5-13): [cceN_cpp theme = "tong"] void setup () {

hajmi (700, 700);

fon (0);

noStroke ();

}

bekor chizish () {

fon (0);

to'ldirish (250, 233, 77);

uchun (int i = 0; i <7; i ++) {

uchun (int j = 0; j <7; j ++) {

pushMatrix ();

tarjima qilish (50 + i * 100, 50 + j * 100);

// 1 -sozlash

// suzish burchagi = sin (millis ()/1000.0) * PI/2;

// 2 -sozlash

// float nisbati = i/7.0;

// suzish burchagi = sin (millis ()/1000.0 + nisbati * (PI/2)) * PI/2;

// 3 -sozlash

float nisbati = (i * 7 + j) /49,0;

suzish burchagi = sin (millis ()/1000.0 + nisbati * (PI/2)) * PI/2;

aylantirish (burchak);

rectMode (MARKAZI);

// 1 -rasmni chizish

to'g'ri (0, 0, 80, 80);

// 2 -rasmni chizish

// to'g'ri (0, 0, 100, 20);

// 3 -rasmni chizish

// to'g'ri (0, 0, nisbat * 50);

popMatrix ();

}

}

} [/cceN_cpp]

Kodni tushuntirish

rectMode (CENTER) kvadrat chizish usulini o'zgartirishi mumkin. Rektning oldingi ikkita oldingi parametrlari kvadratning chap yuqori burchagining koordinatasini aniqlash uchun ishlatiladi. Bu buyruqni ishga tushirgandan so'ng, bu ikki parametr kvadrat markaz nuqtasi uchun koordinatani o'rnatish uchun ishlatiladi. Chunki bu erda biz aylanishni aylantirish orqali bajaramiz, shuning uchun biz markaziy nuqtani koordinataning asl nuqtasiga chizish uchun shu usuldan foydalanishimiz kerak.

millis () dastur boshlanishidan to hozirgi vaqtgacha vaqtni oladi, bu birlik - bu qiymat sin chiqish qiymatining o'zgaruvchan tezligiga ta'sir qiladi. Agar biz millisni to'g'ridan -to'g'ri yozsak, o'zgaruvchan o'lchov juda katta. Shunday qilib, biz uni 1000.0 ga bo'lishimiz kerak.

Kodning ushbu qismida biz bir nechta sozlamalarni yashirish uchun "//" izoh belgisidan foydalanamiz. Siz effektlarni boshlash yoki yopish orqali o'zgartirishingiz mumkin. Masalan, agar biz "3 -sozlamaning" orqasida jumlalarni boshlasak, "1 -sozlash" va "2 -sozlama" kod bloklarini yopish uchun izoh belgisini ishlatishimiz kerak. Turli xil mahalliy o'zgaruvchilarga ega bo'lgan shunga o'xshash dastur tuzilishiga misollarga kelsak, biz bu formatda yozishimiz mumkin. Shunday qilib, biz bir nechta muhandislik hujjatlarini alohida saqlashimiz shart emas. Biz bu ko'nikmalarni amaliyotda va yaratishda tez -tez ishlata olamiz va ba'zi qoniqarli parametrlarni saqlay olamiz.

I, j qiymatining dasturga ta'siri asosan "1 -sozlash (2 -sozlash) (3 -sozlash)" bilan almashish bilan ifodalanadi. Chiqish natijalarini quyida solishtirishingiz mumkin.

1 -rasmni chizish: 1 -sozlash

1 -rasmni chizish: 2 -sozlash

1 -rasmni chizish: 3 -sozlash

2 -rasmni chizish: 1 -sozlash

2 -rasmni chizish: 2 -sozlash

2 -rasmni chizish: 3 -sozlash

1 -sozlamada biz har bir elementning burilish burchagiga ta'sir qilish uchun i va j ishlatmaganmiz. Shunday qilib, biz har bir elementning harakati bir xil ekanligini ko'rishimiz mumkin. 2 -sozlamada biz i qiymatini ishlatdik va 3 -sozlamada i va j ni ishlatdik. Nihoyat ular sin funktsiyasining nisbati orqali kirishiga ta'sir ko'rsatdi. Bu burchakning davriy o'zgarishini o'zgartirdi. Animatsion grafikada 2 va 3 -sozlamalarning haqiqiy ta'siri unchalik aniq bo'lmaganligi sababli, biz uni quyidagi skrinshotdan kuzatishimiz mumkin.

2 -rasmni chizish (Chap: 2 -sozlash; O'ng: 3 -sozlash)

3 -rasmni chizish (Chap: 2 -sozlash; O'ng: 3 -sozlash)

Birinchi rasmda kvadrat aylanish burchagiga ta'sir qilish uchun nisbat ishlatiladi. Ikkinchi rasmda aylananing radiusi to'g'ridan -to'g'ri boshqariladi. Biz i qiymat jumlasini ishlatganini ko'rishimiz mumkin:

float nisbati = i/7.0;

Uning vertikal elementining o'zgarishi mos keladi. Chunki rasmni nazorat qilish uchun gorizontal koordinata faqat i qiymatiga bog'liq, shuning uchun bir xil gorizontal koordinatali pattermlar bir xil bo'ladi. Va nisbati, burilish burchagi va aylananing radiusi ham bir xil.

Shu bilan birga, biz i, j jumlasini ishlatamiz:

float nisbati = (i * 7 + j) /49,0;

U "gradient" ni belgilashi mumkin. Bu erda faktorni ko'paytirish usuli bilan u satr va ustunlar ta'sirini birlashtirdi. Shunday qilib, har bir element boshqacha.

7 -qadam: Loop paytida

For loop uchun birodar bor. Bu loop. Loop nima qila oladi, loop esa buni ham qila oladi. Ammo CreatCoding -da while tsiklidan foydalanish chastotasi pastadir.

Kod misoli (5-14): [cceN_cpp theme = "shafaq"] void setup () {

int a = 0;

vaqt (a <10) {

println (a);

a ++;

}

} [/cceN_cpp]

While grammatik tuzilishini tushunish osonroq. While ifodasidan oldin biz o'zgaruvchilarni yaratishimiz mumkin. Keyin kvadrat qavs ichida ifodani to'ldiring. Qachonki, qoniqtirilsa, gaplarni pastadir tanasi ichida ishlating. Nihoyat, biz o'zgaruvchilarni yangilash uchun pastadir tanasiga ifoda qo'yamiz, so'ngra tsikl tugagach. Ishonchli aylanish vaqtlariga kelsak, biz ko'pincha loop uchun foydalanamiz. Noma'lum o'zgaruvchan qiymatga kelsak, while loopidan foydalanishni tavsiya etamiz.

O'ylab ko'ring:

Har xil cho'tkalar yaratish uchun pastadir chizish elementlarini almashtirish uchun har xil asosiy elementlardan foydalanishga harakat qiling.

Oxirgi bobda ko'rsatilgan trigonometrik funktsiyani birlashtirib, "tarqoq nuqtalar" cho'tkasini yumaloq shaklli cho'tkaga o'zgartirishga harakat qiling.

Faqat for uchun ikki o'lchovli nuqta matritsasini yaratishga harakat qiling.

Keyingi bobni oldindan ko'rishBu kursda bo'lgani kabi, siz har bir yangi bilimni topasiz, o'ynash imkoniyati tez orada oshadi. Dastur - pandora qutisi. Siz tasavvur qila oladigan hamma narsa siz uchun qila oladi. Kompyuterlar bilan aloqa qila oladigan bu tilni o'rganmasligimiz uchun hech qanday sabab yo'q. Keyingi bobimizda biz sizga jarayonni nazorat qilishning yana bir bayonotini taqdim etamiz. U jarayon oqimini boshqarishi va yanada murakkab va o'zgaruvchan natijalar berishi mumkin. If ifodasi yordamida siz o'zingizning matnli sarguzashtli o'yinlaringizni osongina yaratishingiz mumkin! Ushbu maqola dizayner Wenzy-dan olingan. Nisbiy o'qishlar: Dizayner uchun qiziqarli dasturiy ko'rsatma-Dastlabki sensorli ishlov berish Dizayner uchun qiziqarli dasturiy ko'rsatma-Birinchi ishlov berish dasturini yarating Dizayner uchun qiziqarli dasturiy ko'rsatma. - Tasviringizni ishga tushiring (Birinchi qism) Dizayner uchun qiziqarli dasturiy ko'rsatma - Rasmingizni ishga tushiring (Ikkinchi qism)

8 -qadam: Manba

Maqola:

Agar sizda biron bir savol bo'lsa, quyidagi manzilga murojaat qilishingiz mumkin: [email protected].

Tavsiya: