Mündəricat:

Dizayner üçün Maraqlı Proqramlaşdırma Təlimatı-Proqram Prosesinə Nəzarət-Döngə Bəyanatı: 8 Addım
Dizayner üçün Maraqlı Proqramlaşdırma Təlimatı-Proqram Prosesinə Nəzarət-Döngə Bəyanatı: 8 Addım

Video: Dizayner üçün Maraqlı Proqramlaşdırma Təlimatı-Proqram Prosesinə Nəzarət-Döngə Bəyanatı: 8 Addım

Video: Dizayner üçün Maraqlı Proqramlaşdırma Təlimatı-Proqram Prosesinə Nəzarət-Döngə Bəyanatı: 8 Addım
Video: Qrafik Dizayner Olmaq / Qrafik Dizayn Dərsinin Əsasları 2024, Iyul
Anonim
Dizayner üçün Maraqlı Proqramlaşdırma Təlimatı-Proqram Prosesinə Nəzarət-Döngə Bəyanatı
Dizayner üçün Maraqlı Proqramlaşdırma Təlimatı-Proqram Prosesinə Nəzarət-Döngə Bəyanatı

Proqram Prosesinə Nəzarət- Döngə Bəyanatı

Bu fəsildən, əhəmiyyətli və güclü bir məlumat nöqtəsi-Döngə Bəyanatı ilə əlaqə quracaqsınız.

Bu bölməni oxumadan əvvəl, proqramda 10 000 dairə çəkmək istəyirsinizsə, yalnız qorxunc bir üsulla edə bilərsiniz. Yəni 10.000 sətir ellips kodu yazmaq. Effektivliyi hər vasitə ilə artırmaq istəyən tənbəl kod dizaynerləri, şübhəsiz ki, buna imkan verməzlər. Beləliklə, loop ifadəsi yaradılır. Bu ifadə ilə kompüter avtomatlaşdırmasının gücünü intuitiv olaraq hiss edə bilərsiniz.

Addım 1: Loop üçün

Çox sayda döngə ifadəsi var, bunların arasında ən çox istifadə ediləni For Loop. Hamımız bilirik ki, funksiya çəkilişi davamlı olaraq dövriyyədədir. Başlanğıcda ilk cümlədən başlayın, yuxarıdan aşağıya qədər son cümləyə qədər tətbiq olunacaq. Əməliyyatı bitirdikdən sonra yenidən ilk cümlədən başlayacaq. Çıxış üçün funksiya çəkilişinə bir az bənzəyir. Çıxarış üçün kod dəfələrlə icra oluna bilər.

İşdə onun qrammatik quruluşu:

Üçün (ifadə 1; ifadə 2; ifadə 3) {

Döngə bədəni

}

Aydındır ki, döngə gövdəsindəki cümlələr dəfələrlə tətbiq olunmasını gözlədiyimiz şeydir. İfadə 1, döngənin dəyişəninə ilk dəyəri təyin etmək və təyin etmək üçün istifadə olunur. İfadə 2 loop vəziyyəti üçündür. Expression 3 loop dəyişən dəyərini yeniləyəcək.

Döngə dəyişən nədir? Əslində yerli dəyişənə bərabərdir. Tam bir yazıya nəzər salaq.

üçün (int i = 0; i <10; i ++) {

Döngə bədəni

}

Döngə funksiyasını həyata keçirmək üçün bəyanat əsasən loopun sonlandırılmasında istifadə ediləcək yerli dəyişənə əsaslanır. Yuxarıdakı nümunədəki yerli dəyişən i. İfadə 1 yerli dəyişənin başlanğıcını tamamladı. Daha sonra, hər dəfə loop bir dəfə işlədikdə, bu dəyişən yenilənməlidir. Yuxarıdakı nümunə arasında, ifadə 3 -də i ++ yeniləmə funksiyasını həyata keçirmək üçün istifadə olunur. Bunun sayəsində dəyişən hər dəfə yenilənəndə 1 artacaq. Sonda, loop gövdəsindəki kod sonsuza qədər dönə bilməz, digər halda sonuncu ifadələr icra edilə bilməz. Beləliklə, son şərtə ehtiyacımız var. Express 2 məhz bunun üçündür. Burada, proqram 10 -dan az olub olmadığımı mühakimə edəcək. Əgər belədirsə, əməliyyata davam edin. Əgər deyilsə, döngədən tullanın.

Buna görə for ifadəsinin əməliyyat ardıcıllığı eynidir.

İfadə 1 (Yerli dəyişənlərin işə salınması)

İfadə 2 (Məmnunam, sonra işə davam edin)

Döngə gövdəsi (İlk dövriyyə)

İfadə 3 (Yeniləmə)

İfadə 2 (Məmnunam, sonra fəaliyyətə davam edin)

Döngə gövdəsi (İkinci dairə)

İfadə 3 (Yeniləmə)

İfadə 2 (Məmnunam, sonra fəaliyyətə davam edin)

Döngə gövdəsi (Üçüncü dövriyyə)…

İfadə 3 (Yeniləmə)

İfadə 2 (Məmnun deyil, sonra döngədən tullan)

Bu icra ardıcıllığını başınızda bir neçə dəfə simulyasiya edə bilərsiniz. Ancaq kodu bir dəfə əlinizlə yazmadan anlamaq mümkün deyil. Qəribə bir anlayış öyrənmək istədiyimiz zaman println ifadəsi ilə konsoldakı dəyəri çap edə bilərik.

Kod Nümunəsi (5-1): void setup () {

üçün (int i = 0; i <10; i ++) {

println ("qaç");

}

}

Konsoldakı işləmə sayını saya bilərsiniz. Burada tam olaraq 10 -dur. Bu, döngə gövdəsindəki kodun neçə dəfə icra edildiyini bildirir. Bununla birlikdə, döngədə əslində hansı dəyişikliklərin baş verdiyini hələ də müəyyən edə bilmirik. Beləliklə, "i" dəyişəninə çevrilən xarakteri dəyişdirməyə və nə olacağını görməyə çalışa bilərik.

Kod Nümunəsi (5-2): void setup () {

üçün (int i = 0; i <10; i ++) {

println (i);

}

}

İndi döngə gövdəsindəki i dəyərinin davamlı olaraq artdığını görə bilərik. Daha sonra, döngənin cari prosesini başa düşmək üçün bu dəyəri istifadə edə bilərik.

Kod nümunəsində (5-2), i-nin dəyəri 0-dan 9-a dəyişdirilir. Həqiqi döngü dövrləri ilə müqayisədə həmişə 1 az olduğu görünür. Vərdiş etməsəniz, fores mötərizəsindəki ifadə aşağıdakılara yazıla bilər:

üçün (int i = 1; i <= 10; i ++)

Beləliklə, i haqlı olaraq döngə vaxtlarına uyğundur. "<=" mənası kiçik və bərabərdir. Buna görə 10 -a bərabər olsam, yenə də şərti yerinə yetirəcək. Buna görə də, i <10 -a yazılmaqla bir dəfə daha işləyəcək. 1 -dən başlansa da, döngə vaxtları hələ də 10 -dur. Əlbəttə ki, xüsusi bir şeyə ehtiyac yoxdursa, yazma metodunu əvvəlində nümunə. Daha sonra sizə hər ikisi də öz elementini alt yazısı ilə əldə edən vektor və ya serial təqdim edəcəyik. Və defolt edilmiş alt kodlar hamısı 0 -dan başlayır. İlkin dəyəri 0 olaraq təyin etmək nisbətən ümumi tətbiqdir.

Yuxarıdakı nümunədə, i -nin 0 -dan yuxarı olduğunu yazsaq, pogram çökəcək. Dəyişən sabit olaraq artdığından bu şərti heç vaxt təmin etməyəcək. Bu, proqramın sonsuz bir döngəyə daxil olması üçün heç vaxt dayandırıla bilməyəcəyi kimidir.

For ifadəsindəki yerli dəyişənlər yalnız plastik növlərini deyil, dəyişkən nöqtəli növlərdə də dəyişənləri elan edə bilir. Məsələn, (float i = 0; i <10; i + = 0.02) kimi yazıla bilər.

Addım 2: Riyazi problemləri həll etmək üçün Loop üçün istifadə edin

Riyaziyyatçı Gaussun uşaqlıq illərindəki bir hekayəsini hələ də xatırlayırsınızmı? O vaxt Guassın 10 yaşı vardı. Müəllimi sinifdə bir tapşırıq vermək istədi və sual belə oldu

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

Əlinizlə hesablayırsınızsa, çox vaxt aparacaq. Guass, arifmetik ardıcıllığın cəmlənməsi üsulunu artıq başa düşmüş kimi görünür. Sual verildikdən dərhal sonra müəllimini çox təəccübləndirən cavabı asanlıqla danışdı.

İndi arifmetik ardıcıllığın cəminin nə olduğunu hələ də xatırlaya bilmərik, amma cavabı primitiv və zorakı şəkildə ala bilərik. Və bu döngə üçündür. Kompüterlərin saya biləcəyi kiçik bir parça olduğundan, bu sualı kompüter tərəfindən tanına biləcək bir dildə təsvir etməliyik, sonra cavabımızı asanlıqla ala bilərik.

Kod Nümunəsi (5-3):

boş quraşdırma () {

int cavabı = 0;

üçün (int i = 1; i <= 100; i ++) {

cavab += i;

}

println (cavab);

}

İnanıram ki, əldə etdiyiniz nəticə Guassın verdiyi cavabla eynidir: 5050 -dir!

Göstərişlər: for loopdakı yerli dəyişənlərin adı, dəyişən adlandırma qaydalarına riayət etmək şərti ilə istədiyi kimi dəyişdirilə bilər. Bunu yaza bilərsiniz (int k = 1; k <= 100; k ++). Heç bir spesifik şərt olmadıqda, dəyişənin adı olaraq i -ni təyin edir.

Addım 3: Döngə çəkmək üçün

Darıxdırıcı görünən bir sıra yataq dəstlərindən sonra nəhayət daha maraqlı bir hissəyə girə bilərik. Şəkillər çəkmək üçün loop istifadə etməkdir. Bu yorucu riyazi hesablamanı bir kənara qoya bilərik. Biz dizaynerlər qrafikaya daha həssasıq.

Bir Dairə Arrayını çəkmək üçün Loop üçün istifadə edin

Bir təkrarlanan elementlər qrupunu təmsil etmək üçün loopdan istifadə etmək istədikdə, əvvəlcədən bu elementlərin sayının nisbi nisbətliliyinə əmin olmalıyıq, sonra kütləvi təkrar işləri yerinə yetirmək üçün rahatlıqla həyata keçirmək üçün loop üçün istifadə edə bilərik. Üfüqi istiqamətdə bərabər şəkildə yayılmış bir dairə çəkmək istədiyimizi düşünək. Yatay koordinatı dəyişdirilərkən, onun virtual koordinatı dəyişməzdir. Və soldan sağa, üfüqi koordinat daim artır və artan məsafə eynidir. Bu zaman, hər dairənin üfüqi koordinatını əldə etmək üçün döngə üçün i in istifadə edə bilərik.

Kod Nümunəsi (5-4): void setup () {

ölçü (700, 700);

fon (83, 51, 194);

noStroke ();

}

boş çəkmə () {

üçün (int i = 0; i <7; i ++) {

ellips (50.0 + i * 100.0, hündürlük/2.0, 80.0, 80.0);

}

}

50, soldakı ilk dairənin başlanğıc mövqeyini ifadə edir. İ * 100 -də 100 artan məsafəni təmsil edir.

Addım 4: Təsadüfi Dəyirmi Noktanı çəkmək üçün Döngə üçün istifadə edin

Yuxarıdakı qrafik mövqeyi proqnozlaşdırıla bilər. Bu, çoxlu marağı minimuma endirəcək. Əvvəlki fəsildə istinad etdiyimiz təsadüfi funksiyanı istifadə edə bilərik və rəsm funksiyasında yazmağa çalışa bilərik.

Kod Nümunəsi (5-5):

boş quraşdırma () {

ölçüsü (700, 700);

fon (0);

noStroke ();

}

boş çəkmə () {

fon (0);

üçün (int i = 0; i <10; i ++) {

float randomWidth = təsadüfi (60.0);

ellips (təsadüfi (eni), təsadüfi (hündürlüyü), təsadüfi genişliyi, təsadüfi genişliyi);

}

}

Burada dairənin mövqeyinin davamlı olaraq yanıb -sönməsinin səbəbi təsadüfi funksiyanın hər dəfə bir dəfə işləməsi, nəticənin təsadüfi olmasıdır. Funksiya çəkilişi saniyədə 60 kadr çəkmək üçün təyin olunduğundan, saniyədə çəkilən hər 10 dairə öz mövqeyini 60 dəfə dəyişəcək. Bu sürətli flaş, görüntünün yalnız 10 dairədən çox olduğunu göstərir. Proqramdakı sadə bir dəyəri dəyişdirmək sizə tamamilə fərqli bir təsir gətirəcəkdir. Terminal şərtini yenidən nəzərdən keçirərək dövrlərin vaxtını dəyişə bilərik. Aşağıdakı şəkildəki terminal vəziyyəti i <100

  1. Terminal şərti i <1000 olduqda təsiri budur:
  2. RandomSeed
  3. Dairənin mövqeyinin təsadüfi olaraq yanıb -sönməsini istəmirəmsə, nə edə bilərəm? Bir üsul, hər bir dairə üçün müstəqil dəyişənlər qurmaq və saxlamaq və bu dəyişənləri quraşdırmada işə salmaqdır. Bu dəyişənlərə təsadüfi bir dəyər təyin edin. Beləliklə, Draw funksiyasında Draw funksiyasından istifadə edərkən, çağırdığımız şey dəyişənlərdə saxlanılan dəyərdir. Heç vaxt dəyişməyəcək. 10 dairə çəkmək üçün bu üsuldan istifadə edə bilərik. Bəs 1000 dairə və ya 10 000 dairə çəkmək istəsək nə olar? Bu dəyişənləri qurmaq və adlandırmaq üçün bu ənənəvi üsuldan istifadə etsək olduqca çətin olacaq. Yeni bir dəyişən qurma metodu öyrənmək məcburiyyətində deyilik. Bu məqsədə çatmağımıza kömək edə biləcək çevik bir üsuldur. Yəni randomSeed istifadə etməkdir. İndi istifadə edildikdən sonra təsirinə bir nəzər salaq. Kod Nümunəsi (5-6): [cceN_cpp theme = "şəfəq"] void setup () {size (700, 700); fon (0); vuruş yox ();}
  4. boş çəkmə () {

    fon (0);

    randomSeed (1);

    üçün (int i = 0; i <10; i ++) {

    float randomWidth = təsadüfi (20.0, 60.0);

    ellips (təsadüfi (eni), təsadüfi (hündürlüyü), təsadüfi genişliyi, təsadüfi genişliyi);

    }

    } [/cceN_cpp]

    Əvvəlki kodla müqayisədə, dairənin radius aralığını yalnız ofSeedRandom cümləsi ilə 10 -dan 30 -a çevirməkdən başqa heç bir dəyişiklik yoxdur. Bu cümlə əlavə edildikdən sonra qrafik statik görünür.

    Çağırış Formatı:

    randomSeed (a);

    Bu format arasında a ayarı toxumdur. Bir tamsayı doldurmalısınız (P5 -də üzən nöqtə dəyərini yazın, səhv etməyəcək, ancaq tamsayı kimi qəbul edin). RandomSeed funksiyası təsadüfi dəyər üçün toxum təyin etməkdir. Sonra fərqli toxumlara görə fərqli təsadüfi bir sıra yaradacağam. Bundan sonra təsadüfi funksiyanı çağırırıq ki, nəticənin nəticəsi qəti olsun. Burada müəyyən nəticə müəyyən bir dəyər deyil, yaradılan bir sıra üçündür. Yəni geri dönüşün nəticəsi çağırış vaxtlarına nisbətən qəti olur.

    Kod Nümunəsi (5-7): [cceN_cpp theme = "şəfəq"] boş quraşdırma () {

    randomSeed (0);

    üçün (int i = 0; i <5; i ++) {

    println (təsadüfi (10));

    }

    } [/cceN_cpp]

    İndi bir təcrübə etmək üçün println istifadə etməyə davam edirik. RandomSeed istifadə etdikdən sonra, proqramı hər dəfə bağladığınızda və proqramı yenidən başlatdığınızda, eyni nəticəyə dönəcəkdir. Dəyər bir -bir ardıcıllığa uyğun olacaq. Silsəniz, hər dəfə fərqli dəyərə qayıdacaq. Niyə bu ayarı var? Proqramdakı təsadüfi dəyərin özü yalançı təsadüfi olmasıdır. Nəticə təsadüfi görünür, amma əslində sabit və təkrarlanan bir hesablama üsulu ilə yaradılır. RandomSeed üçün ibtidai bir dəyər təyin etməyə bərabərdir, sonra bu toxuma görə aşağıdakı nəticə hesablanacaq. Toxumu təyin etməsək, proqram toxum istehsal etmək üçün sistemin indiki vaxtından istifadə etməyəcək. Buna görə hər bir əməliyyatın nəticəsi fərqlidir. Aşağıdakı nümunə, randomSeed'i daha yaxşı başa düşməyinizə kömək edə bilər.

    Nümunə Kodu (5-8): [cceN_cpp theme = "şəfəq"] void setup () {

    ölçü (700, 700);

    fon (0);

    noStroke ();

    }

    boş çəkmə () {

    randomSeed (1);

    üçün (int i = 0; i <10; i ++) {

    float randomWidth01 = təsadüfi (10, 60);

    ellips (təsadüfi (eni), təsadüfi (hündürlüyü), təsadüfi Genişliyi01, təsadüfi Genişliyi01);

    println (randomWidth01);

    }

    randomSeed (1);

    üçün (int i = 0; i <10; i ++) {

    float randomWidth02 = təsadüfi (10, 60);

    ellips (təsadüfi (eni), təsadüfi (hündürlüyü), təsadüfi Genişliyi02, təsadüfi Genişliyi02);

    println (randomWidth02);

    }

    } [/cceN_cpp]

    İkinci randomSeed (1) 'i randomSeed (0) ilə yenidən nəzərdən keçirməyə və son nəticələri müqayisə etməyə çalışın.

    Göstərişlər: P5 -də eyni effekti əldə etmək üçün heç -heçənin sonunda noLoop funksiyasını işə salmalıyıq. Onun funksiyası proqramı ləğv etməkdir. Yuxarıda göstərilən iş prinsiplərindən çox fərqlidir.

Addım 5: Xətt çəkmək üçün döngə üçün istifadə edin

RandomSeed istifadəsini mənimsədikdən sonra rəsm funksiyasını dəyişməyə cəhd edə bilərik. Məsələn, dairə şəklini xətt çəkməyə dəyişdirin. Yalnız xəttin sonuna qədər bəzi dəyişən qaydalar tərtib etsək, bənzərsiz bir nümunə yaratmaq üçün bir çox xətdən istifadə edə bilərik.

Kod Nümunəsi (5-9):

[cceN_cpp theme = "şəfəq"] boş quraşdırma () {

ölçüsü (700, 700);

fon (0);

}

boş çəkmə () {

randomSeed (0);

üçün (int i = 0; i <2000; i ++) {

float x1 = eni/2.0;

float x2 = təsadüfi (50.0, 650.0);

vuruş (255, 20);

xətt (x1, 50, x2, 650);

}

} [/cceN_cpp]

Sadə Fırça yaradın

Yenidən döngəyə qayıdın. Yuxarıdakı nümunələr interaktiv deyil. Nəticəni daha maraqlı etmək istəyiriksə, mouseX və mouseY -ni kodumuza birləşdirməyi unuda bilmərik.

Kod nümunəsi (5-10):

[cceN_cpp theme = "şəfəq"] boş quraşdırma () {

ölçü (700, 700);

fon (255);

noStroke ();

}

boş çəkmə () {

üçün (int i = 0; i <1000; i ++) {

doldurun (0, 30);

float x = mouseX + təsadüfi (-50, 50);

float y = mouseY + təsadüfi (-50, 50);

ellips (x, y, 2, 2);

}

} [/cceN_cpp]

"Səpələnmə nöqtələri" fırçası yaradılır. Hər bir sıx dairəvi nöqtə siçanın mövqeyinə əsaslandığından məhdud istiqamətləri sol, sağ, yuxarı və aşağı dörd istiqamətdən hərəkət etdirə bilir. Beləliklə, fırçanın son forması bir kvadrata bənzəyir.

Kod Nümunəsi (5-11):

[cceN_cpp theme = "şəfəq"] boş quraşdırma () {

ölçü (700, 700);

fon (255);

noStroke ();

}

boş çəkmə () {

üçün (int i = 0; i <1000; i ++) {

float nisbəti = mouseX/(float) eni;

float x = mouseX + təsadüfi (-50, 50);

float y = mouseY + təsadüfi (-50, 50);

doldurun (0, nisbət * 255, 255 * (1 - nisbət), 30);

ellips (x, y, 2, 2);

}

}

[/cceN_cpp]

Doldurma rəngini təsir etmək üçün mouseX dəyərindən istifadə etsək, daha sehrli bir rəng gradienti əldə edəcəyik.

Addım 6: Loop Nested üçün

Döngə içəri yerləşdirilə bilər. For döngüsünə for for -a yenidən yaza bilərsiniz. İki ölçülü nöqtəli matris çəkmək lazım olduqda bu üsulu seçə bilərsiniz.

Kod Nümunəsi (5-12):

[cceN_cpp theme = "şəfəq"] boş quraşdırma () {

ölçü (700, 700, P2D);

fon (202, 240, 107);

}

boş çəkmə () {

doldurun (0);

üçün (int i = 0; i <5; i ++) {

üçün (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]

Daxili döngəni ilk dəfə istifadə etmək üçün məntiqi əlaqələrini anlamalısınız. Proqramda kod tətbiqi həmişə yuxarıdan aşağıya doğru aparılır. Buna görə, ilk tətbiq olunan, şübhəsiz ki, ən kənar loopdur. Xarici döngə hər dəfə bir dəfə işlədikdə, daxili döngə, şərti bir daha təmin edə bilməyincə davamlı olaraq işləyəcək. Bundan sonra ikinci xarici döngə əməliyyatına başlayacaq. İkinci əməliyyat başladıqdan sonra, daxili döngə şərti təmin edə bilməyincə tətbiqə davam edəcək. Belə bir təkrarlama, bütün şərtlər yerinə yetirilməyənə qədər edilir və döngədən çıxır.

Yuxarıdakı kodda, xarici döngədəki döngə gövdəsi cəmi 5 dəfə, daxili döngədəki döngə gövdəsi isə 25 dəfə işləmişdir. 25 dəfə, i, j dəyərinin fərqinə görə, dairənin üfüqi və şaquli koordinatlarını ayrıca təmin edə bilərik. Çapın bir hissəsini daxil etdim, məlumatların çıxışını müşahidə edə və dəyişikliyi haqqında düşünə bilərsiniz. Yalnız iki yuvalı döngə ilə i, j məlumatlarının bütün birləşmələrini yaşaya bilərik.

İpuçları

İkinci təbəqədəki döngə üçün əvvəlində Tab ilə sıxılır. Bu kod quruluşunu daha aydın edə bilər. Fərqli adlarla loop üçün iki qatdakı yerli dəyişənləri adlandırmalısınız. Bunların arasında ən çox istifadə olunan "i", "j", "k" dir.

Çevik istifadə "i", "j"

"İ", "j" iki dəyişən adı for döngəsinin iki qatının yerli dəyişənlərini təmsil edir. Aşağıdakı nümunə "i" "j" anlayışınızı daha da dərinləşdirəcək. "İ", "j" fərqli dəyərlərinə görə elementləri qruplaşdırmaq üçün parametrlər daxil edə bilərik.

Kod Nümunəsi (5-13): [cceN_cpp theme = "şəfəq"] void setup () {

ölçüsü (700, 700);

fon (0);

noStroke ();

}

boş çəkmə () {

fon (0);

doldurun (250, 233, 77);

üçün (int i = 0; i <7; i ++) {

üçün (int j = 0; j <7; j ++) {

pushMatrix ();

tərcümə (50 + i * 100, 50 + j * 100);

// Ayar 1

// üzmə açısı = sin (milis ()/1000.0) * PI/2;

// Ayar 2

// üzmə nisbəti = i/7.0;

// üzmə açısı = sin (milis ()/1000.0 + nisbət * (PI/2)) * PI/2;

// Ayar 3

float nisbəti = (i * 7 + j) /49.0;

üzmə açısı = sin (milis ()/1000.0 + nisbət * (PI/2)) * PI/2;

döndürmək (bucaq);

rectMode (MƏRKƏZ);

// Şəkil çək 1

düz (0, 0, 80, 80);

// Şəkil çək 2

// düz (0, 0, 100, 20);

// Şəkil çək 3

// düz (0, 0, nisbət * 50);

popMatrix ();

}

}

} [/cceN_cpp]

Kodun izahı

rectMode (MƏRKƏZİ) kvadratın rəsm üsulunu dəyişə bilər. Düzbucağın köhnə əvvəlki iki parametri, binanın sol üst küncünün koordinatını təyin etmək üçün istifadə olunur. Bu əmri başladıqdan sonra bu iki parametr kvadrat mərkəz nöqtəsinin koordinatını təyin etmək üçün istifadə ediləcək. Çünki burada fırlanma yolu ilə paterrn fırlanmasını həyata keçiririk, buna görə də mərkəzi nöqtəni koordinatın orijinal nöqtəsinə çəkmək üçün bu üsuldan istifadə etməliyik.

millis () proqramın başlanğıcından bu günə qədər olan vaxtı əldə edir. Bu vahid ms. This dəyər sin çıxış dəyərinin dəyişən sürətinə təsir edəcək. Birbaşa millis yazsaq, dəyişən miqyas çox böyükdür. Beləliklə, onu 1000.0 -a bölməliyik.

Kodun bu hissəsində bir neçə parametrləri gizlətmək üçün "//" şərh simvolundan istifadə edirik. Başlayaraq və ya bağlayaraq effektləri dəyişə bilərsiniz. Məsələn, "Ayar 3" ün arxasında cümlələrə başlasaq, "Setting 1" və "Setting 2" kod kodlarını bağlamaq üçün şərh simvolundan istifadə etməliyik. Fərqli yerli dəyişənləri olan bu bənzər proqram quruluşuna dair nümunələrə gəldikdə, bu formatda yaza bilərik. Buna görə bir neçə mühəndislik sənədini ayrıca saxlamaq məcburiyyətində deyilik. Təcrübə və yaradılış zamanı bu bacarıqdan tez -tez istifadə edə bilərik və bəzi qənaətbəxş parametr parametrlərini qoruya bilərik.

I, j dəyərinin proqrama təsiri əsasən "Ayar 1 (Ayar 2) (Ayar 3)" dəyişdirməklə təmsil olunur. Çıxış nəticələrini aşağıda müqayisə edə bilərsiniz.

Şəkil 1 çəkin: Ayar 1

Şəkil 1 çəkin: Ayar 2

Şəkil 1 çəkin: Ayar 3

Şəkil 2 çəkin: Ayar 1

Şəkil 2 çəkin: Ayar 2

Şəkil 2 çəkin: Ayar 3

1 -də, hər bir elementin dönmə bucağına təsir etmək üçün i və j istifadə etməmişik. Beləliklə, hər bir elementin hərəkətinin eyni olduğunu görə bilərik. 2 -ni təyin edərkən, 3 -cü parametrdə i dəyərindən, həm i -dən həm də j -dən istifadə etdik. Nəhayət, onlar sin funksiyasının nisbət vasitəsilə parametr girişinə təsir etdilər. Bu, bucağın dövri dəyişməsini dəyişdirdi. 2 -ci və 3 -cü parametrlərin həqiqi təsiri cizgi qrafikasında o qədər də aydın görünmədiyi üçün aşağıdakı ekran görüntüsündən müşahidə edə bilərik.

Şəkil 2 çəkin (Sol: Ayar 2; Sağ: Ayar 3)

Şəkil 3 çəkin (Sol: Ayar 2; Sağ: Ayar 3)

Birinci şəkildəki nisbət kvadrat dönmə bucağını təsir etmək üçün istifadə olunur. İkinci şəkil isə dairənin radiusunu birbaşa idarə etməkdir. İ dəyər cümləsini istifadə etdiyini görə bilərik:

float nisbəti = i/7.0;

Onun verticle elementinin dəyişməsi uyğun gəlir. Şəkili idarə etmək üçün üfüqi koordinat yalnız i dəyərindən asılı olduğu üçün eyni üfüqi koordinata malik olan pattermlər eyni olacaq. Və nisbət, dönmə bucağı və dairənin radiusu da eynidir.

Eyni zamanda, i, j cümləsini istifadə edirik:

float nisbəti = (i * 7 + j) /49.0;

"Qradiyenti" ayırd edə bilər. Burada bir faktoru vurma üsulu ilə satır və sütunların təsirini birləşdirdi. Beləliklə, hər bir element fərqlidir.

Addım 7: Döngə edərkən

For loop üçün bir qardaş var. Bu döngədir. Loop üçün nə edə bilər, loop da bunu edə bilər. Amma creativeCoding -də while loopunun istifadə tezliyi loop üçün olduğu kimi yüksək deyil.

Kod Nümunəsi (5-14): [cceN_cpp theme = "şəfəq"] boş quraşdırma () {

int a = 0;

isə (a <10) {

println (a);

a ++;

}

} [/cceN_cpp]

While dilinin qrammatik quruluşunu başa düşmək daha asandır. While ifadəsindən əvvəl dəyişənlər yarada bilərik. Sonra kvadrat mötərizədə bir ifadə doldurun. Məmnun olduqdan sonra cümlələri bədənin daxilində işlədin. Nəhayət, dəyişənləri yeniləmək üçün döngənin gövdəsinə bir ifadə qoyduq, sonra döngə bitdikdə. Zəmanətli döngə vaxtlarına gəldikdə, tez -tez loop üçün istifadə edirik. Qeyri -müəyyən dəyişən dəyərə gəldikdə, while döngəsindən istifadə etməyi məsləhət görürük.

Düşün:

Fərqli fırçalar yaratmaq üçün döngə üçün rəsm elementlərini əvəz etmək üçün hər cür əsas elementdən istifadə etməyə çalışın.

Son fəsildə istinad edilən trigonometrik funksiya ilə birləşdirin, "səpələnmə nöqtələri" fırçasını yuvarlaq bir fırça halına gətirməyə çalışın.

Yalnız for for ilə iki ölçülü nöqtə matrisi etməyə çalışın.

Növbəti Fəsil ÖnizləməBu kursda olduğu kimi, öyrəndiyiniz hər yeni bilikləri tapacaqsınız, oynamaq imkanı tez bir zamanda artacaq. Proqram bir pandora qutusudur. Xəyal edə biləcəyiniz hər şeyi sizin üçün edə bilər. Beləliklə, kompüterlə ünsiyyət qura biləcək bu dili öyrənməməyimiz üçün heç bir səbəb yoxdur. Növbəti fəsildə sizə başqa bir proses nəzarət bəyanatı təqdim edəcəyik. Proses axını idarə edə və daha mürəkkəb və dəyişkən nəticələr yarada bilər. If ifadəsi ilə asanlıqla öz mətn macəra oyunlarınızı yarada bilərsiniz! Bu məqalə dizayner Wenzy-dən gəlir. Əlaqəli Oxumalar: Dizayner üçün Maraqlı Proqramlaşdırma Təlimatı-Dizayner üçün İlkin Toxunma İşlətmə Maraqlı Proqramlaşdırma Təlimatı-İlk İşləmə Proqramınızı Yaradın Dizayner üçün Maraqlı Proqramlaşdırma Təlimatı - Şəkilinizi Çalışdırın (Birinci hissə) Dizayner üçün Maraqlı Proqramlaşdırma Təlimatı - Şəkilinizi Çalışdırın (İkinci hissə)

Addım 8: Mənbə

Bu məqalə:

Hər hansı bir sualınız varsa, əlaqə saxlaya bilərsiniz: [email protected].

Tövsiyə: