Мазмуну:

Дизайнер үчүн кызыктуу программалоо көрсөтмөсү-Программанын процессин көзөмөлдөө- Циклдин билдирүүсү: 8 кадам
Дизайнер үчүн кызыктуу программалоо көрсөтмөсү-Программанын процессин көзөмөлдөө- Циклдин билдирүүсү: 8 кадам

Video: Дизайнер үчүн кызыктуу программалоо көрсөтмөсү-Программанын процессин көзөмөлдөө- Циклдин билдирүүсү: 8 кадам

Video: Дизайнер үчүн кызыктуу программалоо көрсөтмөсү-Программанын процессин көзөмөлдөө- Циклдин билдирүүсү: 8 кадам
Video: Жаны үйрөнчүк айтишник кайсы программаларды үйрөнүп башташы керек? 2024, Июль
Anonim
Дизайнер үчүн кызыктуу программалоо көрсөтмөсү-Программанын процессин көзөмөлдөө-Цикл жөнүндө билдирүү
Дизайнер үчүн кызыктуу программалоо көрсөтмөсү-Программанын процессин көзөмөлдөө-Цикл жөнүндө билдирүү

Программанын Процессин Башкаруу- Цикл Билдирүүсү

Бул бөлүмдөн сиз маанилүү жана күчтүү билим пункту-Loop Statement менен байланышасыз.

Бул бөлүмдү окуудан мурун, эгерде сиз программада 10 000 чейрек тарткыңыз келсе, анда сиз коркунучтуу ыкма менен гана жасай аласыз. Башкача айтканда, 10 000 сап эллипс кодун жазуу. Бардык эффективдүүлүктү жогорулатууну каалаган жалкоо код дизайнерлери, албетте, буга жол бербейт. Ошентип, цикл билдирүүсү түзүлөт. Бул билдирүү менен, сиз интуитивдик түрдө компьютерди автоматташтыруунун күчүн сезе аласыз.

1 -кадам: Loop үчүн

Көп циклдик билдирүүлөр бар, алардын арасында эң кеңири колдонулган For Loop. Баарыбыз билебиз, функция тартуусу жүгүртүүдө тынымсыз иштейт. Башында биринчи сүйлөмдөн баштаңыз, ал жогорудан төмөн карай акыркы сүйлөмгө чейин аткарылат. Ал операция бүткөндөн кийин, биринчи сүйлөмдөн кайра башталат. Анткени билдирүү функция тартууга бир аз окшош. Билдирүүнүн ичиндеги код кайра -кайра аткарылышы мүмкүн.

Бул жерде анын грамматикалык структурасы:

Үчүн (сөз 1; сөз 2; сөз 3) {

Цикл денеси

}

Албетте, цикл денесиндеги сүйлөмдөр биз кайра -кайра ишке ашат деп күткөн нерсе. Экспресс 1 цикл өзгөрмөсүнө инициализациялоо жана биринчи маанини берүү үчүн колдонулат. Экспресс 2 цикл шарты үчүн. Экспресс 3 циклдин өзгөрмө маанисин жаңыртат.

Цикл өзгөрмөсү деген эмне? Бул чындыгында жергиликтүү өзгөрмөгө барабар. Келгиле, толук жазууну карап көрөлү.

үчүн (int i = 0; i <10; i ++) {

Цикл денеси

}

Укурук функциясын ишке ашыруу үчүн, билдирүү негизинен циклди токтотууда колдонула турган жергиликтүү өзгөрмөгө таянат. Жогорудагы мисалдагы жергиликтүү өзгөрмө i. Expression 1 жергиликтүү өзгөрмөнүн инициализациясын аяктады. Кийинчерээк, цикл бир жолу иштеген сайын, бул өзгөрмөнү жаңыртуу керек. Жогорудагы мисалдын ичинде, 3 -сөздөгү i ++ жаңыртуу функциясын ишке ашыруу үчүн колдонулат. Ал аркылуу өзгөрмөлүү сайын жаңыртылган сайын 1 көбөйөт. Акыр -аягы, цикл денесиндеги код чексиз цикл боло албайт, башкача айтканда, акыркы билдирүүлөрдү аткаруу мүмкүн эмес. Ошентип, бизге терминалдык шарт керек. Экспресс 2 дал ушул үчүн. Бул жерде, программа мен 10дон азыраакпы же жокпу, ошого жараша чечим чыгарат. Эгер андай болбосо, анда укуруктан секирип кетиңиз.

Ошондуктан, билдирүүнүн операция тизмеги дал ушундай.

Экспресс 1 (Жергиликтүү өзгөрмөнүн инициализациясы)

Экспресс 2 (канааттандым, анан иштей бер)

Цикл денеси (Биринчи айлануу)

3 -сөз (жаңыртуу)

Экспресс 2 (канааттандым, анан иштей бер)

Цикл денеси (Экинчи циркульян)

3 -сөз (жаңыртуу)

Экспресс 2 (канааттандым, анан иштей бер)

Цикл денеси (Үчүнчү кан айлануу)…

3 -сөз (жаңыртуу)

2 -сөз (канааттандырылган жок, анан циклден секирип кетиңиз)

Сиз аткаруунун ушул ырааттуулугун башыңызга бир нече жолу окшоштура аласыз. Бирок кодду колуңуз менен бир жолу термейинче, чындап түшүнүү мүмкүн эмес. Биз кызыктай түшүнүктү билгибиз келгенде, биз println оператору аркылуу консолдогу маанини басып чыгара алабыз.

Коддун мисалы (5-1): void setup () {

үчүн (int i = 0; i <10; i ++) {

println ("иштетүү");

}

}

Сиз консолдо иштетилген өндүрүштүн санын эсептей аласыз. Бул жерде так 10 болуп саналат. Бул цикл денесиндеги код канча жолу аткарылганын айтат. Бирок, биз дагы эле циклде кандай өзгөрүүлөр болгонун аныктай албай жатабыз. Ошентип, биз "i" өзгөрмөсүнө "мүнөзүн өзгөртүүгө аракет кылып, эмне болорун көрө алабыз.

Коддун мисалы (5-2): void setup () {

үчүн (int i = 0; i <10; i ++) {

println (i);

}

}

Эми, биз цикл денесиндеги i мааниси тынымсыз өсүп жатканын көрө алабыз. Кийинчерээк, бул циклди учурдагы процессти түшүнүү үчүн колдонсок болот.

Коддун мисалында (5-2), i мааниси 0дон 9га чейин өзгөрөт. Чыныгы цикл убактысына салыштырмалуу, дайыма 1ге аз окшойт. Эгерде сиз ага көнө албасаңыз, анда кашаанын ичиндеги билдирүүнү төмөнкүдөй жазууга болот:

үчүн (int i = 1; i <= 10; i ++)

Ошентип, i туура жолу менен цикл убактысына туура келет. "<=" мааниси кичине жана барабар. Ошентип, мен 10го барабар болгондо, ал дагы эле шартка жооп берет. Ошондуктан, ал i <10го жазылууга салыштырмалуу дагы бир жолу иштей баштайт. Ал 1ден башталса да, циклдин убактысы дагы эле 10. Албетте, өзгөчө эч нерсе керек болбосо, мен сизге башында мисал. Кийинчерээк биз сизге векторду же массивди тааныштырабыз, экөө тең анын элементин индекси аркылуу алышат. Жана демейки индекстердин баары 0дөн башталат. Баштапкы маанини 0 деп аныктоо салыштырмалуу кеңири таралган практика.

Жогорудагы мисалда, эгерде i 0дон жогору деп жазсак, пограмма бузулат. Өзгөрмө туруктуу өсүп жаткандыктан, бул шартты эч качан канааттандырбайт. Бул эч качан токтотулбагандай, программа чексиз циклга айланып кетет.

For билдирүүсүндөгү жергиликтүү өзгөрмөлөр пластикалык түрлөрүн гана жарыялай албайт, ошондой эле өзгөрүлмөлүү чекит түрлөрүндө жарыялай алат. Мисалы, ал (float i = 0; i <10; i + = 0,02) деп жазылышы мүмкүн.

2 -кадам: Математикалык маселелерди чечүү үчүн Loop үчүн колдонуңуз

Математик Гаусстун бала кезиндеги окуясы дагы эле эсиңиздеби? Ал кезде Гуасс 10 жашта болчу. Анын мугалими класста тапшырма бергиси келген жана суроо болгон

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

Эгерде сиз колуңуз менен эсептесеңиз, сизге көп убакыт кетет. Бирок Guass буга чейин арифметикалык ырааттуулукту кошуу ыкмасын түшүнгөн окшойт. Суроо берилгенден кийин, ал мугалимин таң калтырган жообун оңой эле айтты.

Эми биз арифметикалык ырааттуулуктун жыйындысы эмне экенин дагы эле эстей албайбыз, бирок биз жоопту примитивдүү жана күч колдонуп ала алабыз. Жана бул цикл үчүн. Компьютерлерди эсептөө үчүн бул кичинекей торт болгондуктан, биз суроону компьютер тааный турган тилде сүрөттөп беришибиз керек, ошондо биз оңой эле жооп ала алабыз.

Коддун мисалы (5-3):

жараксыз орнотуу () {

int answer = 0;

үчүн (int i = 1; i <= 100; i ++) {

жооп += i;

}

println (жооп);

}

Мен ишенем, сиз алган жыйынтык Guass берген жоопко окшош: бул 5050!

Кеңештер: for циклиндеги жергиликтүү өзгөрмөлөрдүн аталышы, эгерде ал өзгөрмөлөрдү атоо эрежелерине ылайык келсе, каалоосу боюнча өзгөртүлүшү мүмкүн. Сиз муну жазсаңыз болот (int k = 1; k <= 100; k ++). Эгерде эч кандай спецификалык шарттар болбогондо, ал айнымалынын аталышы катары i.

3 -кадам: Loop Drawing үчүн

Бир катар кызыксыз төшөктөрдөн кийин, акыры биз дагы кызыктуу бөлүмгө кире алабыз. Бул сүрөттөрдү тартуу үчүн цикл үчүн колдонулат. Биз азыр ошол зериктирүүчү математикалык эсептөөнү четке кага алабыз. Биз дизайнерлер графикага көбүрөөк сезимталбыз.

Тегерек массивди тартуу үчүн Loop үчүн колдонуңуз

Кайталанган элементтердин тобун көрсөтүү үчүн циклди колдонууну кааласак, бул элементтердин сандык релятивдүүлүгүн алдын ала текшерип алышыбыз керек, андан кийин массалык кайталануучу иштерди аткаруунун ордуна аны ыңгайлуу ишке ашыруу үчүн циклди колдонсок болот. Эгерде биз горизонталдык багытта бирдей таралган тегерекченин сызыгын түзгүбүз келсе дейли. Анын виртуалдык координаты өзгөрбөйт, ал эми горизонталдык координаты өзгөрөт. Ал эми солдон оңго карай горизонталдык координата тынымсыз өсүүдө жана өсүп жаткан аралык бирдей. Бул учурда, биз i in for loop колдонуп, ар бир тегеректин горизонталдык координатын алабыз.

Коддун мисалы (5-4): void setup () {

өлчөмү (700, 700);

фон (83, 51, 194);

noStroke ();

}

жараксыз тартуу () {

үчүн (int i = 0; i <7; i ++) {

эллипс (50.0 + i * 100.0, бийиктиги/2.0, 80.0, 80.0);

}

}

50 солдогу биринчи тегеректин баштапкы абалын билдирет. I * 100дө 100 көбөйүп жаткан аралыкты билдирет.

4 -кадам: Random Round Point тартуу үчүн Loop үчүн колдонуңуз

Жогорудагы графикалык абалды алдын ала айтууга болот. Бул көп кызыкчылыктарды азайтат. Биз мурунку бөлүмдө айтылган кокустук функциясын колдонуп, аны чийме функциясында жазууга аракет кылышыбыз мүмкүн.

Коддун мисалы (5-5):

жараксыз орнотуу () {

өлчөмү (700, 700);

background (0);

noStroke ();

}

жараксыз тартуу () {

background (0);

үчүн (int i = 0; i <10; i ++) {

float randomWidth = random (60.0);

эллипс (туш келди (туурасы), туш келди (бийиктиги), randomWidth, randomWidth);

}

}

Бул жерде, тегерек позициясы үзгүлтүксүз жаркылдап турганынын себеби, кокустук функциясы бир жолу иштегенде, натыйжа туш келди. Функциянын тартылышы демейде 60 кадрды секундасына иштетет, андыктан секундада тартылган ар бир 10 чөйрө 60 жолу позициясын өзгөртөт. Бул тез жаркылдатуу сүрөттү 10дон ашык тегерекке окшоштурат. Программада жөнөкөй маанини өзгөртүү сизге таптакыр башка эффект алып келет. Терминалдын шарттарын кайра карап чыгуу жолу менен циклди өзгөртө алабыз. Төмөндөгү сүрөттөгү терминалдык абал i <100

  1. Бул жерде терминалдык абал i <1000 болгондо эффект болот:
  2. Кокус үрөн
  3. Эгерде мен тегеректин позициясы туш келди эле жаркырап жаралышын каалабасам, эмне кылсам болот? Бир ыкма - ар бир чөйрө үчүн көз карандысыз өзгөрмөлөрдү куруу жана сактоо жана бул өзгөрмөлөрдү орнотууда инициализациялоо. Бул өзгөрмөлөргө туш келди маани бериңиз. Ошентип, Draw функциясында Draw функциясын колдонууда, биз өзгөрмөлөрдө сакталган мааниге кайрылдык. Ал эч убакта өзгөрбөйт. 10 тегеректи тартуу үчүн бул ыкманы колдонсок болот. Бирок, эгерде биз 1000 тегерек, же 10 000 тегеректи чийүүнү кааласак? Эгерде биз бул өзгөрмөлөрдү куруу үчүн бул салттуу ыкманы колдонсок жана аны атасак, анда бир топ түйшүк болот. Биз жаңы өзгөрмө куруу ыкмасын үйрөнүүнүн кажети жок. Бул жерде бул максатка жетүүгө жардам бере турган ийкемдүү ыкма. Бул randomSeed колдонуу. Эми, колдонулгандан кийин анын таасирин карап көрөлү. Коддун мисалы (5-6): [cceN_cpp theme = "dawn"] void setup () {size (700, 700); background (0); noStroke ();}
  4. жараксыз тартуу () {

    background (0);

    randomSeed (1);

    үчүн (int i = 0; i <10; i ++) {

    float randomWidth = random (20.0, 60.0);

    эллипс (туш келди (туурасы), туш келди (бийиктиги), randomWidth, randomWidth);

    }

    } [/cceN_cpp]

    Мурунку кодго салыштырмалуу, чөйрөнүн радиустук диапазону 10дон 30га өтүп, ofSeedRandom сүйлөмү менен гана өзгөрүүдөн башка эч кандай өзгөрүүлөр жок. Бул сүйлөм кошулгандан кийин, графика статикалык болуп калды окшойт.

    Чакыруу форматы:

    randomSeed (a);

    Бул форматтын арасында а орнотуу урук болуп саналат. Сиз ага бүтүндөй санды толтурушуңуз керек (P5ке чекиттүү маанини жазыңыз, ал жаңылбайт, бирок бүтүн сан катары каралат). RandomSeed функциясы - урукту туш келди мааниде коюу. Андан кийин ал ар кандай үрөнгө жараша ар кандай туш келди массивди жаратат. Андан кийин, биз функцияны кокустан чакырабыз, ошондо кайтаруунун натыйжасы анык болот. Бул жерде аныктама натыйжа үчүн эмес, белгилүү бир мааниге ээ, бирок түзүлгөн массив үчүн. Башкача айтканда, кайтаруунун натыйжасы чакыруу убактысына салыштырмалуу анык.

    Коддун мисалы (5-7): [cceN_cpp theme = "Dawn"] Void setup () {

    randomSeed (0);

    үчүн (int i = 0; i <5; i ++) {

    println (random (10));

    }

    } [/cceN_cpp]

    Эми биз эксперимент үчүн println колдонууну уланта беребиз. RandomSeed колдонгондон кийин, программаны жаап, программаны кайра баштоону каалаган сайын, ал ошол эле жыйынтыктын сабына кайтып келет. Мааниси ырааттуулукка бир -бирден туура келет. Эгер сиз аны жок кылсаңыз, анда ал ар дайым башка баага кайтып келет. Эмне үчүн бул жөндөө бар? Бул кокустук программанын өзү псевдо кокустук болгондуктан. Жыйынтык туш келди көрүнөт, бирок иш жүзүндө ал туруктуу жана кайталануучу эсептөө ыкмасы менен жаратылган. Бул randomSeed үчүн примитивдүү маанини белгилөөгө барабар, анда бул үрөнгө ылайык төмөнкү жыйынтык эсептелет. Бирок, эгерде биз урукту белгилебесек, программа дем алуу үчүн системанын учурдагы убактысын колдонуп, үрөн өндүрөт. Ошондуктан ар бир операциянын жыйынтыгы ар башка. Төмөндөгү мисал randomSeedди жакшыраак түшүнүүгө жардам берет.

    Мисал коду (5-8): [cceN_cpp theme = "dawn"] void setup () {

    өлчөмү (700, 700);

    background (0);

    noStroke ();

    }

    жараксыз тартуу () {

    randomSeed (1);

    үчүн (int i = 0; i <10; i ++) {

    float randomWidth01 = кокустук (10, 60);

    эллипс (туш келди (туурасы), туш келди (бийиктиги), randomWidth01, randomWidth01);

    println (randomWidth01);

    }

    randomSeed (1);

    үчүн (int i = 0; i <10; i ++) {

    float randomWidth02 = кокустук (10, 60);

    эллипс (туш келди (туурасы), туш келди (бийиктиги), randomWidth02, randomWidth02);

    println (randomWidth02);

    }

    } [/cceN_cpp]

    Экинчи randomSeed (1) менен randomSeed (0) дегенди кайра карап чыгып, акыркы жыйынтыктарды салыштырып көрүңүз.

    Кеңештер: P5те, биз ошол эле эффектти алуу үчүн, чүчүкулактын аягында noLoop функциясын чакырышыбыз керек. Анын милдети - программаны токтотуу. Бул табияттагы иштөө принциптеринен такыр башкача.

5 -кадам: Чийүү үчүн Loop үчүн колдонуңуз

RandomSeed колдонууну өздөштүргөндөн кийин, чийүү функциясын өзгөртүүгө аракет кылсак болот. Мисалы, тегерек чиймени сызыктуу чиймеге алмаштырыңыз. Биз саптын аягына чейин кээ бир өзгөрүп турган эрежелерди иштеп чыксак гана, биз уникалдуу үлгү жасоо үчүн чырмалышкан көптөгөн линияларды колдоно алабыз.

Коддун мисалы (5-9):

[cceN_cpp theme = "таң"] жараксыз орнотуу () {

өлчөмү (700, 700);

background (0);

}

жараксыз тартуу () {

randomSeed (0);

үчүн (int i = 0; i <2000; i ++) {

float x1 = туурасы/2.0;

float x2 = random (50.0, 650.0);

инсульт (255, 20);

сап (x1, 50, x2, 650);

}

} [/cceN_cpp]

Жөнөкөй щетка түзүү

Кайра цикл үчүн. Жогорудагы мисалдар интерактивдүү эмес. Эгерде биз жыйынтыкты кызыктуу кылгыбыз келсе, анда биздин кодго mouseX менен mouseY айкалыштырууну унутпашыбыз керек.

Коддун мисалы (5-10):

[cceN_cpp theme = "таң"] жараксыз орнотуу () {

өлчөмү (700, 700);

Фон (255);

noStroke ();

}

жараксыз тартуу () {

үчүн (int i = 0; i <1000; i ++) {

толтуруу (0, 30);

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

сүзүү y = mouseY + туш келди (-50, 50);

эллипс (x, y, 2, 2);

}

} [/cceN_cpp]

"Чакыруу чекиттери" щеткасы түзүлөт. Ар бир интенсивдүү мини тегерек чекит чычкандын абалына негизделгендиктен, чектелген багыттарды сол, оң, өйдө жана ылдый төрт жактан жылдыра алат. Ошентип, щетканын акыркы формасы төрт бурчтукка окшош.

Коддун мисалы (5-11):

[cceN_cpp theme = "таң"] жараксыз орнотуу () {

өлчөмү (700, 700);

Фон (255);

noStroke ();

}

жараксыз тартуу () {

үчүн (int i = 0; i <1000; i ++) {

сүзүү катышы = mouseX/(калкып чыгуу) туурасы;

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

сүзүү y = mouseY + туш келди (-50, 50);

толтуруу (0, катыш * 255, 255 * (1 - катыш), 30);

эллипс (x, y, 2, 2);

}

}

[/cceN_cpp]

Эгерде биз mouseXтин маанисин толтуруу түсүнө таасир этүү үчүн колдонсок, анда биз алда канча сыйкырдуу түстүү градиентке ээ болобуз.

6 -кадам: Loop Nested үчүн

Анткени циклди уялоого болот. Сиз for циклине кайра for циклине жаза аласыз. Эки өлчөмдүү чекит матрицасын тартуу керек болгондо, сиз бул ыкманы тандай аласыз.

Коддун мисалы (5-12):

[cceN_cpp theme = "таң"] жараксыз орнотуу () {

өлчөмү (700, 700, P2D);

фон (202, 240, 107);

}

жараксыз тартуу () {

толтуруу (0);

үчүн (int i = 0; i <5; i ++) {

үчүн (int j = 0; j <5; j ++) {

float x = 150 + i * 100;

сүзүү y = 150 + j * 100;

эллипс (x, y, 60, 60);

println (i + ":" + j);

}

}

}

[/cceN_cpp]

Киргизилген циклди биринчи жолу колдонуу үчүн, анын логикалык байланыштарын аныктоо керек. Программада кодду ишке ашыруу дайыма жогору жактан ылдыйга чейин болот. Ошондуктан, биринчи ишке ашырылган, албетте, эң четки цикл. Сырткы цикл бир жолу иштеген сайын, ички цикл мындан ары шартты канааттандырмайынча үзгүлтүксүз иштей берет. Андан кийин, ал экинчи тышкы цикл ишин баштайт. Экинчи операция башталгандан кийин, ички цикл шартты канааттандырмайынча ишке ашырыла берет. Мындай кайталоо бардык шарттар аткарылмайынча жасалат жана ал циклден чыгып кетет.

Жогорудагы коддо, сырткы циклдеги цикл денеси жалпысынан 5 жолу, ал эми ички циклдеги цикл денеси 25 жолу иштеген. 25 жолу ичинде, i, j маанисинин айырмасына ылайык, биз тегеректин горизонталдуу жана вертикалдуу координаттарын өзүнчө камсыздай алабыз. Мен басма бөлүмүн киргиздим, сиз маалыматтын чыгышын байкап, анын өзгөрүшү жөнүндө ойлоно аласыз. Киргизилген эки цикл менен гана биз i, j маалыматтарынын бардык айкалыштарын сезе алабыз.

Кеңештер

Экинчи катмардагы цикл үчүн, адатта, башында Таб менен конденсацияланат. Бул коддун структурасын айкыныраак кыла алат. Жергиликтүү өзгөрмөлөрдү forfтун эки катмарында ар кандай аталыштар менен атоо керек. Анын ичинен "i", "j", "k" көбүнчө колдонулат.

Ийкемдүү колдонуу "i", "j"

"I", "j" деген эки өзгөрмөлүү ат for for циклинин эки катмарынын жергиликтүү өзгөрмөлөрүн билдирет. Төмөндөгү мисал "i" "j" үчүн түшүнүгүңүздү тереңдетет. "I", "j" ар кандай маанисине ылайык, биз элементтерди топтоо үчүн параметрлерди киргизе алабыз.

Коддун мисалы (5-13): [cceN_cpp theme = "Dawn"] Void setup () {

өлчөмү (700, 700);

background (0);

noStroke ();

}

жараксыз тартуу () {

background (0);

толтуруу (250, 233, 77);

үчүн (int i = 0; i <7; i ++) {

үчүн (int j = 0; j <7; j ++) {

pushMatrix ();

которуу (50 + i * 100, 50 + j * 100);

// Орнотуу 1

// сүзүү бурчу = sin (millis ()/1000.0) * PI/2;

// Орнотуу 2

// калкыма катышы = i/7.0;

// сүзүү бурчу = sin (millis ()/1000.0 + катышы * (PI/2)) * PI/2;

// Жөндөө 3

калкыма катышы = (i * 7 + j) /49.0;

сүзүү бурчу = sin (millis ()/1000.0 + катышы * (PI/2)) * PI/2;

айлануу (бурч);

rectMode (ЦЕНТР);

// Сүрөт тартуу 1

түз (0, 0, 80, 80);

// Сүрөт тартуу 2

// түз (0, 0, 100, 20);

// Сүрөт тартуу 3

// түз (0, 0, катыш * 50);

popMatrix ();

}

}

} [/cceN_cpp]

Коддун түшүндүрмөсү

rectMode (ЦЕНТР) квадратты тартуу ыкмасын өзгөртө алат. Оригиналдын мурунку эки параметри квадраттын жогорку сол бурчунун координатын аныктоо үчүн колдонулат. Бул буйрукту баштагандан кийин, бул эки параметр квадрат борбордук чекиттин координатын коюу үчүн колдонулат. Анткени бул жерде биз айлануу аркылуу патерн айлануусун иштетебиз, андыктан борбордук чекитти координатанын баштапкы чекитине тартуу үчүн бул ыкманы колдонушубуз керек.

millis () программанын башталышынан ушул убакка чейин убакытты алат. Ал бирдик ms. This мааниси күнөөлүү чыгуунун ылдамдыгынын өзгөрүшүнө таасир этет. Эгерде биз миллисти түз жазсак, өзгөрүп жаткан масштаб өтө чоң. Ошентип, биз аны 1000.0ге бөлүшүбүз керек.

Коддун бул бөлүмүндө биз бир нече орнотууларды жашыруу үчүн "//" комментарий белгисин колдонобуз. Сиз эффекттерди баштоо же жабуу аркылуу өзгөртө аласыз. Мисалы, эгер биз "3 -Орнотуунун" артында сүйлөмдөрдү баштасак, анда "Setting 1" жана "Setting 2" коддорунун блокторун жабуу үчүн комментарий символун колдонушубуз керек. Ар кандай жергиликтүү өзгөрмөлөрү бар ушул сыяктуу программалардын түзүлүшүнүн мисалдарына келсек, биз бул форматта жаза алабыз. Ошентип, биз бир нече инженердик документтерди өзүнчө сактоонун кажети жок. Биз бул көндүмдү практикада жана жаратууда көп колдонобуз жана кээ бир канааттандырарлык параметрлерди сактай алабыз.

Анын ичинде, i, j маанисинин программага таасири негизинен "Орнотуу 1 (Орнотуу 2) (Орнотуу 3)" менен алмаштыруу аркылуу көрсөтүлөт. Сиз төмөндөгү жыйынтыктарды салыштыра аласыз.

Сүрөт тартуу 1: Орнотуу 1

Сүрөт тартуу 1: Орнотуу 2

Сүрөт тартуу 1: Орнотуу 3

Сүрөт 2 тартуу: Орнотуу 1

Сүрөт 2 тартуу: Орнотуу 2

2 -сүрөт тартуу: 3 -жөндөө

1 орнотууда, i жана j ар бир элементтин бурулуш бурчуна таасир этүү үчүн колдонулган жок. Ошентип, биз ар бир элементтин кыймылы бирдей экенин көрө алабыз. 2 орнотууда биз i маанисин колдондук жана i жана j экөөнү 3 -орнотууда колдодук. Акырында, алар катыштын функциясы sin функциясын киргизүүгө таасир этти. Бул бурчтун мезгилдүү өзгөрүшүн өзгөрттү. 2 жана 3 орнотуунун чыныгы таасири анимацияланган графикада анча ачык эмес болгондуктан, биз аны төмөнкү скриншоттон байкай алабыз.

Сүрөт 2 тартуу (Сол: Орнотуу 2; Оң: Орнотуу 3)

Сүрөт 3 тартуу (Сол: Орнотуу 2; Оң: Орнотуу 3)

Биринчи сүрөттө, катыш квадраттын бурулуш бурчуна таасир берүү үчүн колдонулат. Экинчи сүрөт болсо, тегеректин радиусун түз башкаруу үчүн колдонулат. Биз i баалуулук сүйлөмүн колдонгонун көрө алабыз:

калкыма катышы = i/7.0;

Анын verticle элементинин өзгөрүшү ырааттуу. Сүрөттү көзөмөлдөө үчүн горизонталдык координат бир гана i маанисине көз каранды болгондуктан, ошол эле горизонталдык координаты бар паттермдер бирдей болот. Жана катыштын мааниси, айлануу бурчу жана айлананын радиусу да бирдей.

Ошол эле учурда, биз i, j сүйлөмүн колдонобуз:

калкыма катышы = (i * 7 + j) /49.0;

Бул "градиентти" чечмелей алат. Бул жерде, факторду көбөйтүү ыкмасы менен, ал саптардын жана мамычалардын таасирин бириктирди. Ошентип, ар бир элемент башкача.

7 -кадам: Loop учурунда

For loop үчүн бир тууган бар. Бул цикл. Цикл үчүн эмне кыла алат, ал эми цикл муну да кыла алат. Бирок creativeCodingде while циклинин колдонуу жыштыгы цикл үчүн жогору эмес.

Коддун мисалы (5-14): [cceN_cpp theme = "Dawn"] Void setup () {

int a = 0;

учурда (а <10) {

println (a);

a ++;

}

} [/cceN_cpp]

While грамматикалык түзүлүшүн түшүнүүгө оңой. While операторуна чейин өзгөрмөлөрдү түзө алабыз. Андан кийин квадрат кашаанын ичиндеги сөздү толтуруңуз. Качан канааттандырылганда, сүйлөмдөрдү цикл денесинде иштетиңиз. Акыры, биз өзгөрмөлөрдү жаңыртуу үчүн циклдин корпусуна сөз айкашын коёбуз, андан кийин цикл бүткөнчө. Ишенимдүү цикл убактысына келсек, биз көп учурда цикл үчүн колдонобуз. Белгисиз өзгөрмө мааниге келсек, while циклин колдонууну сунуштайбыз.

Ойлон:

Чийүү элементтерин алмаштыруу үчүн ар кандай негизги щеткаларды колдонууга аракет кылыңыз, ар түрдүү щеткаларды түзүңүз.

Акыркы бөлүмдө айтылган тригонометриялык функция менен биригип, "чачыранды чекиттерди" щетканы тегерек формадагы щеткага кайра карап көрүңүз.

For цикли менен гана эки өлчөмдүү чекит матрицасын түзүүгө аракет кылыңыз.

Кийинки бөлүмдү алдын ала көрүүБул курста болгондой эле, сиз үйрөнгөн ар бир жаңы билимди таба аласыз, ойноо мүмкүнчүлүгү бир заматта көбөйөт. Программа - бул пандора кутусу. Сиз элестете алган нерсенин баары сиз үчүн жасай алат. Ошентип, компьютер менен баарлаша ала турган бул тилди үйрөнбөөбүзгө эч кандай негиз жок. Кийинки бөлүмдө, биз сизге процессти көзөмөлдөөчү дагы бир билдирүүнү киргизебиз. Ал процесстин агымын көзөмөлдөй алат жана татаалыраак жана өзгөрүлмө натыйжаларды бере алат. If if менен, сиз өзүңүздүн тексттик укмуштуу оюндарыңызды оңой эле түзө аласыз! Бул макала дизайнер Wenzyден келет. Релятивдүү окуулар: Дизайнер үчүн кызыктуу программалоо көрсөтмөсү-Дизайнер үчүн кызыктуу программалоо көрсөтмөсү-Биринчи иштетүү программаңызды түзүңүзДизайнер үчүн кызыктуу программалоо көрсөтмөсү - Сүрөтүңүздүн иштешин алыңыз (Биринчи бөлүк) Дизайнер үчүн кызыктуу программалоо көрсөтмөсү - Сүрөтүңүздүн иштөөсүн алыңыз (Экинчи бөлүк)

8 -кадам: Булак

Бул макала:

Эгерде сизде кандайдыр бир суроолор болсо, төмөнкү дарекке кайрылсаңыз болот: [email protected].

Сунушталууда: