Мазмұны:

Дизайнерге арналған қызықты бағдарламалау нұсқаулығы-Бағдарламалық процесті басқару-Цикл туралы мәлімдеме: 8 қадам
Дизайнерге арналған қызықты бағдарламалау нұсқаулығы-Бағдарламалық процесті басқару-Цикл туралы мәлімдеме: 8 қадам

Бейне: Дизайнерге арналған қызықты бағдарламалау нұсқаулығы-Бағдарламалық процесті басқару-Цикл туралы мәлімдеме: 8 қадам

Бейне: Дизайнерге арналған қызықты бағдарламалау нұсқаулығы-Бағдарламалық процесті басқару-Цикл туралы мәлімдеме: 8 қадам
Бейне: ФОТОБОКС. Кез келген тақырыпқа арнап жасауға болатын керемет көрнекілік 2024, Шілде
Anonim
Дизайнер үшін қызықты бағдарламалау нұсқаулығы-Бағдарламалық процесті басқару-Цикл туралы мәлімдеме
Дизайнер үшін қызықты бағдарламалау нұсқаулығы-Бағдарламалық процесті басқару-Цикл туралы мәлімдеме

Бағдарламалық процесті басқару- цикл туралы мәлімдеме

Бұл тараудан сіз маңызды және қуатты білім нүктесімен байланысасыз-Цикл туралы мәлімдеме.

Бұл тарауды оқымас бұрын, егер сіз бағдарламада 10 000 шеңбер құрғыңыз келсе, сіз тек қорқынышты әдіспен жасай аласыз. Яғни эллипс кодының 10 000 жолын жазу. Тиімділікті жақсартқысы келетін жалқау код дизайнерлері бұған жол бермейді. Сонымен, цикл операторы құрылады. Бұл мәлімдемемен сіз компьютерлік автоматтандырудың күшін интуитивті сезінесіз.

1 -қадам: Цикл үшін

Көптеген циклдік операторлар бар, олардың ішінде For Loop кеңінен қолданылады. Біз барлығымыз білеміз, функцияның ұтысы айналымда үздіксіз жұмыс істейді. Бірінші сөйлемнің басында бастаңыз, ол жоғарыдан төменге дейін соңғы сөйлемге дейін орындалады. Операция аяқталғаннан кейін ол бірінші сөйлемнен қайтадан басталады. Мәлімдеме функцияның суретіне сәл ұқсас. Мәлімдеме ішіндегі код бірнеше рет орындалуы мүмкін.

Міне, оның грамматикалық құрылымы:

Үшін (1 -өрнек; 2 -өрнек; 3 -өрнек) {

Ілмек денесі

}

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

Цикл айнымалысы дегеніміз не? Бұл іс жүзінде жергілікті айнымалыға тең. Толық жазбаны қарастырайық.

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

Ілмек денесі

}

Цикл функциясын іске асыру үшін, мәлімдеме негізінен циклды тоқтату кезінде қолданылатын жергілікті айнымалыға сүйенеді. Жоғарыдағы мысалдағы жергілікті айнымалы - i. 1 -өрнек жергілікті айнымалы инициализациясын аяқтады. Кейінірек, цикл бір рет жұмыс істеген сайын, бұл айнымалы жаңартылуы керек. Жоғарыда келтірілген мысалдың ішінде 3 -өрнектегі i ++ жаңарту функциясын іске асыру үшін қолданылады. Ол арқылы айнымалы жаңартылған сайын 1 -ге артады. Ақыр соңында, цикл денесіндегі код шексіз цикл жасай алмайды, басқа жағдайда соңғы мәлімдемелерді орындау мүмкін емес. Осылайша, бізге соңғы шарт қажет. Экспресс 2 дәл осы үшін. Бұл жерде бағдарлама менің 10 -дан кем екендігімді анықтайды. Егер солай болса, онда операцияны жалғастырыңыз. Егер олай болмаса, онда ілмектен секіріңіз.

Демек, for операторының жұмыс реті дәл осылай болады.

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 -қадам: Математикалық есептерді шешу үшін цикл үшін қолданыңыз

Математик Гаусстың бала кезіндегі бір әңгімесі әлі есіңізде ме? Ол кезде Гуас 10 жаста еді. Оның мұғалімі сыныпта тапсырма бергісі келді және сұрақ болды

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

Егер сіз өз қолыңызбен есептесеңіз, сізге көп уақыт кетеді. Бірақ Гуас арифметикалық тізбекті жинақтау әдісін тапқан сияқты. Сұрақ қойылғаннан кейін, ол мұғалімді қатты таңғалдырған жауапты оңай айтты.

Енді біз арифметикалық тізбектің қосындысы дегенді әлі есімізде сақтай алмаймыз, бірақ біз жауапты қарабайыр және зорлық -зомбылықпен алуға болады. Және бұл цикл үшін. Бұл компьютерлерді санауға болатын кішкене торт болғандықтан, біз бұл сұрақты компьютерде танылатын тілде сипаттауымыз керек, сонда біз өз жауабымызды оңай ала аламыз.

Код үлгісі (5-3):

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

int жауап = 0;

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

жауап += i;

}

println (жауап);

}

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

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

3 -қадам: Циклды сызу үшін

Бірнеше жалықтыратын төсек -орыннан кейін, ақырында біз қызықты бөлімге кіре аламыз. Бұл суреттер салу үшін цикл үшін қолданылады. Біз қазір бұл математикалық есептеулерді алып тастай аламыз. Біз дизайнерлер графикаға сезімтал.

Шеңбер массивін салу үшін цикл үшін пайдаланыңыз

Біз қайталанатын элементтер тобын ұсыну үшін циклды қолданғымыз келсе, біз бұл элементтердің цифрлық релятивтілігіне алдын ала көз жеткізуіміз керек, содан кейін біз жаппай қайталау жұмысының орнына оны ыңғайлы жүзеге асыру үшін циклды пайдалана аламыз. Егер көлденең бағытта бірдей таралған шеңбердің сызығын салғымыз келсе. Оның виртуалды координаты өзгермейді, ал көлденең координаты өзгереді. Ал солдан оңға қарай көлденең координата үнемі өсіп отырады және өсетін қашықтық бірдей. Бұл кезде біз әрбір шеңбердің көлденең координатын алу үшін i in for циклін қолдана аламыз.

Код мысалы (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 -қадам: Кездейсоқ дөңгелек нүктені салу үшін Loop үшін пайдаланыңыз

Жоғарыдағы графикалық позицияны болжауға болады. Бұл көптеген қызығушылықтарды азайтады. Біз алдыңғы тарауда кездейсоқ функцияны қолдана аламыз және оны сурет функциясында жазуға тырысамыз.

Код үлгісі (5-5):

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

мөлшері (700, 700);

фон (0);

noStroke ();

}

жарамсыз ұтыс () {

фон (0);

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

float randomWidth = random (60.0);

эллипс (кездейсоқ (ені), кездейсоқ (биіктігі), randomWidth, randomWidth);

}

}

Мұнда шеңбердің позициясы үнемі жыпылықтап тұруының себебі кездейсоқ функцияның бір рет жұмыс істеуі, нәтиже кездейсоқ. Функцияның тартылуы әдепкі бойынша секундына 60 кадрды іске қосады, сондықтан секундына салынған әрбір 10 шеңбер өз орнын 60 рет өзгертеді. Бұл жылдам жарқыл суретті тек 10 шеңберден артық етіп көрсетеді. Бағдарламадағы қарапайым мәнді өзгерту сізге мүлдем басқа әсер береді. Біз терминал жағдайын қайта қарау арқылы цикл уақыттарын өзгерте аламыз. Төмендегі суреттегі терминалдық жағдай i <100

  1. Терминал шарты i <1000 болғанда әсері мынада:
  2. RandomSeed
  3. Егер мен шеңбердің позициясы кездейсоқ пайда болғанын қаламасам, мен не істей аламын? Бір әдіс - әрбір шеңбер үшін тәуелсіз айнымалыларды құру және сақтау және бұл айнымалыларды баптауда инициализациялау. Бұл айнымалыларға кездейсоқ мән беріңіз. Осылайша, Draw функциясында сурет салу функциясын қолданған кезде біз айнымалыларда сақталатын мәнге жүгінеміз. Ол еш уақытта өзгермейді. 10 шеңбер салу үшін біз бұл әдісті қолдана аламыз. Бірақ егер біз 1000 шеңбер немесе 10 000 шеңбер салғымыз келсе ше? Егер біз осы айнымалыларды құру және оны атау үшін осы дәстүрлі әдісті қолдансақ, өте қиын болады. Бізге айнымалы құрудың жаңа әдісін үйренудің қажеті жоқ. Міне, осы мақсатқа жетуге көмектесетін икемді әдіс. Бұл randomSeed пайдалану. Енді қолданғаннан кейін оның әсерін қарастырайық. Код мысалы (5-6): [cceN_cpp theme = «dawn»] void setup () {size (700, 700); фон (0); жоқStroke ();}
  4. жарамсыз жеребе () {

    фон (0);

    randomSeed (1);

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

    float randomWidth = кездейсоқ (20.0, 60.0);

    эллипс (кездейсоқ (ені), кездейсоқ (биіктігі), randomWidth, randomWidth);

    }

    } [/cceN_cpp]

    Бұрынғы кодпен салыстырғанда, шеңбердің радиус диапазоны 10 -дан 30 -ға дейін тек ofSeedRandom сөйлемімен өзгергеннен басқа ешқандай өзгеріс жоқ. Бұл сөйлемді қосқаннан кейін графика тұрақты болып көрінеді.

    Шақыру пішімі:

    randomSeed (a);

    Бұл форматтың ішінде a параметрі - тұқым. Сіз оған бүтін санды толтыруыңыз керек (P5 -те өзгеретін нүкте мәнін жазыңыз, ол қателеспейді, бірақ оны бүтін сан ретінде қарастырады). RandomSeed функциясы - тұқымның кездейсоқ мәнге орнатылуы. Содан кейін ол әр түрлі тұқымға сәйкес әр түрлі кездейсоқ массив жасайды. Осыдан кейін біз қайтару нәтижесі анық болатындай кездейсоқ функцияны шақырамыз. Мұнда анықтама нәтиже үшін емес, анықталған мән болып табылады, бірақ құрылған массив үшін. Яғни қайтару нәтижесі шақыру уақытына қатысты белгілі.

    Код мысалы (5-7): [cceN_cpp theme = «таң»] жарамсыз орнату () {

    randomSeed (0);

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

    println (кездейсоқ (10));

    }

    } [/cceN_cpp]

    Енді эксперимент жасау үшін println қолданамыз. RandomSeed қолданғаннан кейін, сіз бағдарламаны жауып, бағдарламаны қайта қосқан сайын, ол сол нәтиже жолына оралады. Мән бірізділікке сәйкес болады. Егер сіз оны жойсаңыз, ол әр уақытта басқа мәнге оралады. Неліктен бұл параметр бар? Себебі кездейсоқ мәннің өзі бағдарламада жалған кездейсоқтық болып табылады. Нәтиже кездейсоқ болып көрінеді, бірақ ол тіркелген және қайталанатын есептеу әдісімен жасалады. Бұл randomSeed үшін қарапайым мәнді анықтауға тең, содан кейін осы нәтижеге сәйкес келесі нәтиже есептеледі. Алайда, егер біз тұқымдарды анықтамасақ, онда бағдарлама әдепкі бойынша тұқым шығару үшін жүйенің қазіргі уақытын қолданады. Сондықтан әр операцияның нәтижесі әр түрлі болады. Төмендегі мысал randomSeed -ті жақсы түсінуге көмектеседі.

    Мысал коды (5-8): [cceN_cpp theme = «таң»] жарамсыз орнату () {

    мөлшері (700, 700);

    фон (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 -қадам: Сызық салу үшін цикл үшін пайдаланыңыз

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

Код үлгісі (5-9):

[cceN_cpp theme = «таң»] жарамсыз орнату () {

мөлшері (700, 700);

фон (0);

}

жарамсыз ұтыс () {

randomSeed (0);

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

float x1 = ені/2.0;

float x2 = кездейсоқ (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 + кездейсоқ (-50, 50);

float 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 ++) {

float қатынасы = mouseX/(float) ені;

float x = mouseX + кездейсоқ (-50, 50);

float y = mouseY + кездейсоқ (-50, 50);

толтыру (0, қатынасы * 255, 255 * (1 - қатынас), 30);

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

}

}

[/cceN_cpp]

Егер біз толтыру түсіне әсер ету үшін mouseX мәнін қолданатын болсақ, онда түс сиқырлы градиентіне ие боламыз.

6 -қадам: Loop Nested үшін

For цикл кірістірілуі мүмкін. 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;

float y = 150 + j * 100;

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

println (i + «:» + j);

}

}

}

[/cceN_cpp]

Кірістірілген циклды бірінші рет пайдалану үшін оның логикалық қатынастарын анықтау керек. Бағдарламада кодты енгізу әрқашан жоғарыдан төменге дейін болады. Сондықтан бірінші енгізілген - бұл ең шеткі цикл. Сыртқы цикл бір рет жұмыс істеген сайын, ішкі цикл шартты қанағаттандырмайтынға дейін үздіксіз жұмыс істейді. Осыдан кейін ол екінші сыртқы цикл операциясын бастайды. Екінші операция басталғаннан кейін, ішкі цикл шартты қанағаттандырмайтынға дейін орындалады. Мұндай қайталау барлық шарттар орындалмайынша және циклден шығып кеткенше жасалады.

Жоғарыда келтірілген кодта сыртқы циклдегі цикл денесі барлығы 5 рет, ал ішкі циклдегі цикл денесі 25 рет жұмыс істеді. 25, i, j мәндерінің айырмашылығына сәйкес, біз шеңбердің көлденең және тік координатасына жеке кепілдік бере аламыз. Мен баспа бөлімін енгіздім, сіз деректердің шығуын бақылап, оның өзгеруі туралы ойлана аласыз. Тек екі кірістірілген цикл арқылы біз i, j деректерінің барлық комбинациясын көре аламыз.

Кеңестер

Екінші қабаттағы цикл үшін әдетте басында Tab қойылады. Бұл код құрылымын неғұрлым анық көрсете алады. Жергілікті айнымалыларды әртүрлі атаулармен циклдің екі қабатында атау керек. Оның ішінде «i», «j», «k» жиі қолданылады.

Икемді қолдану «i», «j»

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

Код мысалы (5-13): [cceN_cpp theme = «таң»] жарамсыз орнату () {

мөлшері (700, 700);

фон (0);

noStroke ();

}

жарамсыз ұтыс () {

фон (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 (CENTER) квадратты салу әдісін өзгерте алады. Ректордың бастапқы екі параметрі шардың жоғарғы сол жақ бұрышының координатын анықтау үшін қолданылады. Біз бұл пәрменді бастағаннан кейін, бұл екі параметр квадрат нүктесінің координатын орнату үшін пайдаланылады. Өйткені мұнда біз айналдыру арқылы патронның айналуын орындаймыз, сондықтан орталық әдісті координатаның бастапқы нүктесіне салу үшін осы әдісті қолдану керек.

millis () бағдарламаның басынан қазіргі уақытқа дейінгі уақытты алады. Бұл бірлік ханым. Бұл мән sin шығыс мәнінің өзгеретін жылдамдығына әсер етеді. Егер біз миллисді тікелей жазатын болсақ, өзгеретін масштаб тым үлкен. Осылайша, біз оны 1000.0 -ге бөлуіміз керек.

Кодтың осы бөлімінде біз бірнеше параметрлерді жасыру үшін «//» түсініктеме белгісін қолданамыз. Сіз эффектілерді бастау немесе жабу арқылы өзгерте аласыз. Мысалы, егер біз «3 параметрінің» артында сөйлемдерді бастасақ, «1 параметрі» мен «2 параметрі» кодының блоктарын жабу үшін түсініктеме белгісін қолдануымыз керек. Әр түрлі жергілікті айнымалылары бар осы ұқсас бағдарлама құрылымының мысалдарына келетін болсақ, біз бұл форматта жаза аламыз. Сондықтан бізге бірнеше инженерлік құжаттарды бөлек сақтаудың қажеті жоқ. Біз бұл дағдыны тәжірибеде және жасау кезінде жиі қолдана аламыз және кейбір қанағаттандыратын параметрлерді сақтай аламыз.

Оның ішінде i, j мәнінің бағдарламаға әсері негізінен «1 -баптау (2 -баптау) (3 -баптау)» ауысу арқылы көрсетіледі. Сіз төмендегі нәтижелерді салыстыра аласыз.

1 -суретті салыңыз: 1 -параметр

1 -суретті салыңыз: 2 -параметр

1 -суретті салыңыз: 3 -параметр

2 -суретті салыңыз: 1 -параметр

2 -суретті салыңыз: 2 -параметр

2 -суретті салыңыз: 3 -параметр

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

2 -сурет салыңыз (сол жақта: 2 -параметр; оң жақта: 3 -параметр)

3 -сурет салу (сол жақта: 2 -параметр; оң жақта: 3 -параметр)

Бірінші суретте квадрат айналу бұрышына әсер ету үшін қатынас қолданылады. Екінші сурет шеңбердің радиусын тікелей басқаруға арналған. Біз i мәнді сөйлемді қолданғанын көре аламыз:

өзгермелі коэффициент = i/7.0;

Оның төбелік элементінің өзгеруі сәйкес келеді. Суретті басқаратын көлденең координат тек i мәніне тәуелді болғандықтан, көлденең координаты бірдей паттермдер бірдей болады. Пропорцияның мәні, айналу бұрышы мен шеңбердің радиусы да бірдей.

Сонымен бірге біз i, j сөйлемін қолданамыз:

өзгермелі коэффициент = (i * 7 + j) /49,0;

Ол «градиентті» сипаттай алады. Мұнда факторды көбейту әдісімен ол жолдар мен бағандардың әсерін біріктірді. Сондықтан әр элемент әр түрлі.

7 -қадам: Цикл кезінде

For циклі үшін ағасы бар. Бұл цикл. Цикл үшін не істеуге болады, ал цикл оны да жасай алады. Бірақ CreatCoding -тегі while циклінің пайдалану жиілігі цикл үшін жоғары емес.

Код мысалы (5-14): [cceN_cpp theme = «таң»] жарамсыз орнату () {

int a = 0;

кезінде (a <10) {

println (a);

а ++;

}

} [/cceN_cpp]

While грамматикалық құрылымын түсінуге оңай. While операторының алдында айнымалылар құруға болады. Содан кейін шаршы жақшаның ішіндегі өрнекті толтырыңыз. Ол қанағаттандырылған кезде, цикл денесіндегі сөйлемдерді қолданыңыз. Соңында біз айнымалыларды жаңарту үшін цикл денесіне өрнек енгіземіз, содан кейін цикл аяқталады. Сенімді цикл уақытына келетін болсақ, біз жиі цикл үшін қолданамыз. Белгісіз айнымалы мәнге келетін болсақ, while циклін қолдануды ұсынамыз.

Ойлау:

Әр түрлі щеткалар жасау үшін циклдегі сызба элементтерін ауыстыру үшін негізгі элементтердің барлық түрлерін қолдануға тырысыңыз.

Соңғы тарауда айтылған тригонометриялық функциямен біріктіріп, «шашыраңқы нүктелер» щеткасын дөңгелек пішінді щеткаға айналдыруға тырысыңыз.

For циклі бар екі өлшемді нүктелік матрицаны жасауға тырысыңыз.

Келесі тарауды алдын ала қарауБұл курста болғандай, сіз әрбір жаңа білімді таба аласыз, ойнау мүмкіндігі бірден артады. Бағдарлама - бұл пандора қорабы. Сіз елестете алатынның бәрі сіз үшін жасай алады. Сондықтан компьютермен сөйлесе алатын тілді білмеуімізге ешқандай себеп жоқ. Келесі тарауда біз сізге процесті бақылау туралы тағы бір мәлімдеме енгіземіз. Ол процесс ағымын басқара алады және күрделі және өзгермелі нәтижелер береді. If операторының көмегімен сіз өзіңіздің мәтіндік шытырман ойындарыңызды оңай құра аласыз! - Суретіңізді алыңыз (Бірінші бөлім) Дизайнер үшін қызықты бағдарламалау нұсқаулығын алыңыз - Суретті іске қосыңыз (Екінші бөлім)

8 -қадам: Дереккөз

Бұл мақала:

Егер сізде сұрақтар туындаса, мына мекенжайға хабарласа аласыз: [email protected].

Ұсынылған: