İçindekiler:
- Adım 1: Döngü İçin
- Adım 2: Matematiksel Problemleri Çözmek İçin Döngü Kullanın
- Adım 3: Döngü Çizimi İçin
- Adım 4: Rastgele Yuvarlak Nokta Çizmek için Döngü için kullanın
- Adım 5: Çizgi Çizmek için Döngü için kullanın
- Adım 6: İç İçe Döngü İçin
- Adım 7: Döngü Sürerken
- Adım 8: Kaynak
Video: Tasarımcı için İlginç Programlama Rehberi--Program Proses Kontrolü- Döngü Beyanı: 8 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:21
Program Proses Kontrolü- Döngü Bildirimi
Bu bölümden, önemli ve güçlü bir bilgi noktası-Döngü Bildirimi ile temasa geçeceksiniz.
Bu bölümü okumadan önce programda 10.000 adet daire çizmek isterseniz ancak korkunç bir yöntemle yapabilirsiniz. Yani 10.000 satırlık elips kodu yazmaktır. Verimliliği her şekilde artırmak isteyen tembel kod tasarımcıları kesinlikle bunun olmasına izin vermezdi. Böylece döngü ifadesi oluşturulur. Bu ifadeyle, bilgisayar otomasyonunun gücünü sezgisel olarak hissedebilirsiniz.
Adım 1: Döngü İçin
Çok sayıda döngü ifadesi vardır, bunların arasında en yaygın olarak kullanılanı For Loop'tur. Hepimiz biliyoruz ki fonksiyon çekimi sürekli dolaşımda çalışır. Baştaki ilk cümleden başlayın, son cümleye kadar yukarıdan aşağıya doğru uygulanacaktır. Bir işlemi bitirdikten sonra tekrar ilk cümleden başlayacaktır. For ifadesi, fonksiyon çizimine biraz benzer. for deyimi içindeki kod tekrar tekrar çalıştırılabilir.
İşte gramer yapısı:
For(ifade 1; ifade 2; ifade 3){
Döngü gövdesi
}
Açıkçası, döngü gövdesi içindeki cümleler, tekrar tekrar uygulanmasını beklediğimiz şeydir. İfade 1, ilk değeri başlatmak ve döngü değişkenine atamak için kullanılır. İfade 2, döngü koşulu içindir. İfade 3, döngü değişken değerini güncelleyecektir.
Döngü değişkeni nedir? Aslında yerel bir değişkene eşdeğerdir. Tam bir yazıya bir göz atalım.
for(int i = 0;i < 10;i++){
Döngü gövdesi
}
Döngü işlevini gerçekleştirmek için, for ifadesi esas olarak döngü sonlandırmasında kullanılacak yerel bir değişkene dayanır. Yukarıdaki örnekteki yerel değişken i'dir. İfade 1, yerel değişkenin başlatılmasını tamamladı. Daha sonra döngü her çalıştığında bu değişkenin güncellenmesi gerekir. Yukarıdaki örnek arasında, ifade 3'teki i++, güncelleme işlevini gerçekleştirmek için kullanılır. Bu sayede değişken her güncellendiğinde 1 artacaktır. Sonunda, döngü gövdesi içindeki kod süresiz olarak döngüye giremez, aksi takdirde sonraki ifadeler yürütülemez. Bu nedenle, bir terminal koşuluna ihtiyacımız var. Ekspres 2 tam da bunun için. Burada program, i'nin 10'dan küçük olup olmadığına karar verecektir. Eğer öyleyse, devam edin. Değilse, döngüden atlayın.
Bu nedenle for deyiminin işlem sırası şu şekildedir.
İfade 1 (Yerel değişken başlatma)
İfade 2 (Memnun, sonra çalışmaya devam et)
Döngü gövdesi (İlk dolaşım)
İfade 3 (Güncelleme)
İfade 2 (Memnun, sonra çalışmaya devam et)
Döngü gövdesi (İkinci devir)
İfade 3 (Güncelleme)
İfade 2 (Memnun, sonra çalışmaya devam et)
Döngü gövdesi (Üçüncü dolaşım)…
İfade 3 (Güncelleme)
İfade 2 (Memnun değil, sonra döngüden atla)
Bu yürütme dizisini kafanızda birkaç kez simüle edebilirsiniz. Ancak kodu bir kez elinizle yazmadan gerçekten anlamanız mümkün değil. Garip bir kavram öğrenmek istediğimizde println deyimi ile konsoldaki değeri yazdırabiliriz.
Kod Örneği (5-1): void setup(){
for(int i = 0; ben < 10; i++){
println ("çalıştır");
}
}
Konsolda çalıştırma çıktısının sayısını sayabilirsiniz. Burada tam olarak 10'dur. Bu size döngü gövdesindeki kodun kaç kez çalıştırıldığını söyler. Ancak, döngüde gerçekte ne gibi değişiklikler olduğunu hala tespit edemiyoruz. Böylece "i" değişkenine dönüşen karakteri değiştirmeyi deneyebilir ve ne olacağını görebiliriz.
Kod Örneği (5-2): void setup(){
for(int i = 0; ben < 10; i++){
println(i);
}
}
Şimdi, döngü gövdesindeki i değerinin sürekli arttığını görebiliriz. Daha sonra bu değeri döngünün mevcut sürecini anlamak için kullanabiliriz.
Kod örneğinde (5-2) i'nin değeri 0'dan 9'a değiştirilir. Gerçek döngü süreleriyle karşılaştırıldığında, her zaman 1 eksik gibi görünüyor. Eğer alışmadıysanız for deyiminin parantez içindeki ifadesi aşağıdaki gibi yazılabilir:
for(int i = 1; i <= 10; i++)
Böylece, i doğru olarak döngü zamanlarına karşılık gelir. "<="nin anlamı küçüktür ve eşittir. Yani i 10'a eşit olduğunda, yine de koşulu karşılayacaktır. Bu nedenle i < 10'a yazıldığından bir kez daha çalışacaktır. 1'den başlasa da döngü süreleri hala 10'dur. Tabii özel bir şey gerekmiyorsa, yazma yöntemini benimsemenizi öneririm. örnek başlarda. Daha sonra size, her ikisi de elemanını alt indisi ile alan vektör veya diziyi tanıtacağız. Ve varsayılan indislerin tümü 0'dan başlar. İlk değeri 0 olarak tanımlamak nispeten yaygın bir uygulamadır.
Yukarıdaki örnekte, i'nin 0'ın üzerinde olduğunu yazarsak, pogram çökecektir. Değişken sürekli artan olduğundan, bu koşulu hiçbir zaman sağlamayacaktır. Bu, programın sonsuz döngüye girmesi için asla durdurulamayacağı gibi.
for deyimindeki yerel değişkenler yalnızca plastik türleri değil, aynı zamanda kayan noktalı türlerdeki değişkenleri de bildirebilir. Örneğin (float i = 0; i <10; i + = 0.02) şeklinde yazılabilir.
Adım 2: Matematiksel Problemleri Çözmek İçin Döngü Kullanın
Matematikçi Gauss'un çocukluğundaki bir hikâyeyi hâlâ hatırlıyor musunuz? O zaman, Guass 10 yaşındaydı. Öğretmeni sınıfta bir görev vermek istedi ve soru şuydu:
1+2+3+4……+97+98+99+100=?
Ellerinizle hesaplarsanız, çok zamanınızı alacaktır. Ama Guass aritmetik dizinin toplama yöntemini çoktan çözmüş görünüyor. Bu yüzden soru verildikten hemen sonra, öğretmenini çok şaşırtan cevabı kolaylıkla söyledi.
Şimdi, aritmetik dizinin toplamının ne olduğunu hala hatırlayamayabiliriz ama cevabı ilkel ve şiddetli bir şekilde alabiliriz. Ve bu döngü için. Bilgisayarların sayması çok basit olduğu için soruyu bilgisayarın tanıyabileceği bir dilde açıklamamız gerekiyor, o zaman kolayca cevabımızı alabiliriz.
Kod Örneği (5-3):
geçersiz kurulum(){
int cevap = 0;
for(int i = 1; i <= 100; i++){
cevap += ben;
}
println(cevap);
}
Aldığınız sonucun Guass'ın bildirdiği yanıtla aynı olduğuna inanıyorum: 5050!
İpuçları: For döngüsündeki yerel değişkenlerin adı, değişken adlandırma düzenlemelerine uymak koşuluyla istendiğinde değiştirilebilir. (int k = 1;k <= 100;k++) olarak yazabilirsiniz. Herhangi bir özel koşul yoksa, değişkenin adı olarak varsayılan olarak i olur.
Adım 3: Döngü Çizimi İçin
Sıkıcı görünen bir dizi yataktan sonra nihayet daha ilginç bir bölüme geçebiliriz. Bu, resim çizmek için for döngüsünü kullanmaktır. Artık bu sıkıcı matematiksel hesaplamaları bir kenara bırakabiliriz. Biz tasarımcılar grafiklere daha duyarlıyız.
Bir Daire Dizisi Çizmek İçin Döngü İçin Kullan
Bir grup tekrarlanan öğeyi temsil etmek için for döngüsünü kullanmak istediğimizde, bu öğelerin sayısal ilişkisinden önceden emin olmalıyız, sonra bunu gerçekleştirmek için büyük tekrar işleri yapmak yerine for döngüsünü kullanabiliriz. Yatay yönde eşit olarak yayılmış bir daire dizisi çizmek istediğimizi varsayalım. Yatay koordinatı değiştirilirken sanal koordinatı değişmez. Ve soldan sağa doğru yatay koordinat sürekli artıyor ve artan mesafe aynı. Şu anda, her dairenin yatay koordinatını almak için i in for döngüsü kullanabiliriz.
Kod Örneği(5-4): void setup(){
boyut(700, 700);
arka plan(83, 51, 194);
noStroke();
}
geçersiz beraberlik(){
for(int i = 0; ben < 7; i++){
elips(50.0 + i * 100.0, yükseklik/2.0, 80.0, 80.0);
}
}
50, soldaki ilk dairenin başlangıç konumunu temsil eder. 100'de i * 100 artan mesafeyi temsil eder.
Adım 4: Rastgele Yuvarlak Nokta Çizmek için Döngü için kullanın
Yukarıdaki grafik konumu tahmin edilebilir. Bu, çok fazla ilgiyi en aza indirecektir. Bir önceki bölümde bahsettiğimiz rastgele fonksiyonu kullanabilir ve çizim fonksiyonunda yazmaya çalışabiliriz.
Kod Örneği (5-5):
geçersiz kurulum(){
boyut(700, 700);
arkaplan(0);
noStroke();
}
geçersiz beraberlik(){
arkaplan(0);
for(int i = 0;i < 10;i++){
float randomWidth = rastgele(60.0);
elips(rastgele(genişlik), rastgele(yükseklik), rastgeleGenişlik, rastgeleGenişlik);
}
}
Burada dairenin konumunun sürekli yanıp sönmesinin nedeni, rastgele fonksiyonun her seferinde bir kez çalışması nedeniyle sonucun rastgele olmasıdır. Çizme işlevi varsayılan olarak saniyede 60 kare çalıştıracak şekilde ayarlandığından, saniyede çizilen her 10 daire konumunu 60 kez değiştirecektir. Bu hızlı flaş, resmin yalnızca 10'dan fazla daireye sahip gibi görünmesini sağlar. Programda basit bir değeri değiştirmek size tamamen farklı bir etki getirecektir. Terminal koşulunu revize ederek döngü sürelerini değiştirebiliriz. Aşağıdaki resimdeki terminal koşulu i < 100'dür
- Terminal koşulu i < 1000 olduğunda ortaya çıkan etki:
- Rastgele Tohum
- Dairenin konumunun ve flaşının rastgele oluşturulmasını istemiyorsam ne yapabilirim? Bir yöntem, her daire için bağımsız değişkenler oluşturmak ve depolamak ve bu değişkenleri kurulumda başlatmaktır. Bu değişkenlere rastgele bir değer atayın. Bu nedenle, draw içinde çizim işlevini kullanırken, çağırdığımız şey, değişkenlerde depolanan değerdir. Hiçbir zaman değişmeyecektir. 10 daire çizmek için sadece bu yöntemi kullanabiliriz. Peki ya 1000 daire ya da 10.000 daire çizmek istersek? Bu değişkenleri oluşturmak ve adlandırmak için bu geleneksel yöntemi kullanırsak oldukça zahmetli olacaktır. Yeni bir değişken oluşturma yöntemi öğrenmek zorunda değiliz. İşte bu hedefe ulaşmamıza yardımcı olabilecek esnek bir yöntem. Yani randomSeed kullanmaktır. Şimdi de kullanıldıktan sonraki etkisine bir göz atalım. Kod Örneği (5-6):[cceN_cpp theme="şafak"] void setup(){ size(700, 700); arkaplan (0);noStroke();}
-
geçersiz beraberlik(){
arkaplan(0);
rastgeleSeed(1);
for(int i = 0;i < 10;i++){
float randomWidth = rastgele(20.0, 60.0);
elips(rastgele(genişlik), rastgele(yükseklik), rastgeleGenişlik, rastgeleGenişlik);
}
} [/cceN_cpp]
Bir önceki kodla karşılaştırıldığında, sadece ofSeedRandom cümlesi ile daire yarıçap aralığını 10'dan 30'un ötesine değiştirmek dışında herhangi bir değişikliği yoktur. Bu cümleyi ekledikten sonra grafik durağan hale geliyor.
Çağrı Formatı:
rastgeleSeed(a);
Bu biçim arasında, a'nın ayarı tohumdur. İçine bir tamsayı doldurmanız gerekir (P5'te yüzer nokta değeri yazın, yanlış gitmez ama tamsayı olarak kabul edin). RandomSeed'in işlevi, tohumu rastgele değere ayarlamaktır. Daha sonra farklı tohumlara göre farklı rastgele diziler üretecektir. Ondan sonra, dönüşün sonucunun kesin olması için rastgele işlevi çağırırız. Burada kesin sonuç için değil, oluşturulan dizi için kesin bir değerdir. Yani iadenin sonucu, çağırma zamanlarına göre kesindir.
Kod Örneği (5-7):[cceN_cpp theme="şafak"] void setup(){
rastgeleSeed(0);
for(int i = 0;i < 5;i++){
println(rastgele(10));
}
} [/cceN_cpp]
Şimdi bir deney yapmak için println kullanmaya devam ediyoruz. RandomSeed'i kullandıktan sonra, programı her kapattığınızda ve programı yeniden başlattığınızda, aynı sonucun bir dizisine dönecektir. Değer, diziye tek tek karşılık gelecektir. Silerseniz, her seferinde farklı bir değere döner. Neden bu ayar var? Bunun nedeni, programdaki rastgele değerin kendisinin sözde rastgele olmasıdır. Sonuç rastgele görünüyor, ancak aslında sabit ve tekrarlanabilir bir hesaplama yöntemiyle üretiliyor. RandomSeed için ilkel bir değer belirtmek eşdeğerdir, daha sonra bu tohuma göre aşağıdaki sonuç hesaplanacaktır. Ancak, eğer tohumu atamazsak, program varsayılan olarak tohum üretmek için sistemin şimdiki zamanını kullanacak. Bu nedenle her işlemin sonucu farklıdır. Aşağıdaki örnek, randomSeed'i daha iyi anlamanıza yardımcı olabilir.
Örnek Kod (5-8):[cceN_cpp theme="şafak"] void setup(){
boyut(700, 700);
arkaplan(0);
noStroke();
}
geçersiz beraberlik(){
rastgeleSeed(1);
for(int i = 0;i < 10;i++){
float randomWidth01 = random(10, 60);
elips(rastgele(genişlik), rastgele(yükseklik), randomWidth01, randomWidth01);
println(randomWidth01);
}
rastgeleSeed(1);
for(int i = 0;i < 10;i++){
float randomWidth02 = random(10, 60);
elips(rastgele(genişlik), rastgele(yükseklik), randomWidth02, randomWidth02);
println(randomWidth02);
}
} [/cceN_cpp]
İkinci randomSeed(1)'i randomSeed(0) olarak revize etmeye çalışın ve nihai sonuçları karşılaştırın.
İpuçları: P5'te, aynı etkiyi elde edebilmemiz için sadece çekilişin sonunda noLoop işlevini çağırmamız gerekir. İşlevi programı sonlandırmaktır. Doğada yukarıdaki çalışma prensiplerinden oldukça farklıdır.
Adım 5: Çizgi Çizmek için Döngü için kullanın
randomSeed kullanımına hakim olduktan sonra, çizim fonksiyonunu değiştirmeyi deneyebiliriz. Örneğin, daire çizimini çizgi çizimine dönüştürün. Ancak çizginin sonuna kadar değişen bazı düzenlemeler tasarlarsak, benzersiz bir desen oluşturmak için birçok çizgiyi birbirine dolanmış halde kullanabiliriz.
Kod Örneği(5-9):
[cceN_cpp theme="şafak"] geçersiz kurulum(){
boyut(700, 700);
arkaplan(0);
}
geçersiz beraberlik(){
rastgeleSeed(0);
for(int i = 0; i < 2000; i++){
kayan nokta x1 = genişlik/2.0;
kayan nokta x2 = rastgele (50.0, 650.0);
vuruş(255, 20);
satır(x1, 50, x2, 650);
}
} [/cceN_cpp]
Basit Fırça Oluştur
Tekrar for döngüsüne dönün. Yukarıdaki örnekler etkileşimli değildir. Sonucu daha ilginç hale getirmek istiyorsak, kodumuza mouseX ve mouseY'yi birleştirmeyi unutamayız.
Kod Örneği (5-10):
[cceN_cpp theme="şafak"] geçersiz kurulum(){
boyut(700, 700);
arka plan(255);
noStroke();
}
geçersiz beraberlik(){
for(int i = 0;i < 1000;i++){
doldur(0, 30);
kayan nokta x = fareX + rastgele(-50, 50);
float y = mouseY + rastgele(-50, 50);
elips(x, y, 2, 2);
}
} [/cceN_cpp]
Bir "dağılma noktaları" fırçası oluşturulur. Her yoğun mini yuvarlak nokta farenin konumuna bağlı olduğundan, sol, sağ, yukarı ve aşağı olmak üzere dört yönden sınırlı yönlerde hareket edebilir. Böylece fırçanın son şekli bir kareye benzer.
Kod Örneği (5-11):
[cceN_cpp theme="şafak"] geçersiz kurulum(){
boyut(700, 700);
arka plan(255);
noStroke();
}
geçersiz beraberlik(){
for(int i = 0;i < 1000;i++){
kayan nokta oranı = mouseX/(kayan)genişlik;
kayan nokta x = fareX + rastgele(-50, 50);
float y = mouseY + rastgele(-50, 50);
fill(0, oran * 255, 255 * (1 - oran), 30);
elips(x, y, 2, 2);
}
}
[/cceN_cpp]
Dolgu rengini etkilemek için mouseX değerini kullanırsak, çok daha sihirli bir renk gradyanı elde ederiz.
Adım 6: İç İçe Döngü İçin
For döngüsü iç içe olabilir. For döngüsüne tekrar bir for döngüsü yazabilirsiniz. İki boyutlu bir nokta matris çizmeniz gerektiğinde bu yöntemi tercih edebilirsiniz.
Kod Örneği(5-12):
[cceN_cpp theme="şafak"] geçersiz kurulum(){
boyut(700, 700, P2D);
arka plan(202, 240, 107);
}
geçersiz beraberlik(){
doldur(0);
for(int i = 0;i < 5;i++){
for(int j = 0;j < 5;j++){
kayan nokta x = 150 + ben * 100;
kayan nokta y = 150 + j * 100;
elips(x, y, 60, 60);
println(i + ":" + j);
}
}
}
[/cceN_cpp]
Yuvalanmış döngüyü ilk kez kullanmak için mantık ilişkilerini çözmeniz gerekir. Programdaki kod uygulaması her zaman yukarıdan aşağıya doğrudur. Bu nedenle, ilk uygulanan kesinlikle en dıştaki döngüdür. Dış döngü bir kez çalıştığında, iç döngü, koşulu daha fazla karşılayamayana kadar sürekli olarak çalışacaktır. Bundan sonra ikinci dış döngü işlemine başlayacaktır. İkinci işlem başladıktan sonra, dahili döngü, koşulu karşılayamayana kadar uygulamaya devam edecektir. Böyle bir tekrarı tüm şartlar sağlanamayana kadar yapar ve döngüden atlar.
Yukarıdaki kodda dış döngüdeki döngü gövdesi toplamda 5 kez, iç döngüdeki döngü gövdesi ise 25 kez çalışmıştır. 25 kez içinde, i, j değerlerinin farkına göre dairenin yatay ve dikey koordinatlarını ayrı ayrı temin edebiliriz. print 'nin bir bölümünü gömdüm, veri çıktısını gözlemleyebilir ve değişimini düşünebilirsiniz. Yalnızca iki iç içe döngü ile i, j verilerinin tüm kombinasyonlarını deneyimleyebiliriz.
İpuçları
İkinci katmandaki döngü için genellikle başlangıçta Tab ile yoğunlaşır. Bu, kod yapısını daha net hale getirebilir. Yerel değişkenleri for döngüsünün iki katmanında farklı adlarla adlandırmanız gerekir. Bunlar arasında "i", "j", "k" en sık kullanılanlardır.
Esnek Kullanım "i", "j"
İki değişken adı olan "i", "j", for döngüsünün iki katmanının yerel değişkenlerini temsil eder. Aşağıdaki örnek, "i""j" için anlayışınızı derinleştirecektir. "i", "j" nin farklı değerlerine göre, elemanları gruplamak için parametreler girebiliriz.
Kod Örneği (5-13):[cceN_cpp theme="şafak"] void setup() {
boyut(700, 700);
arkaplan(0);
noStroke();
}
geçersiz beraberlik() {
arkaplan(0);
doldur(250, 233, 77);
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 7; j++) {
pushMatrix();
çevir(50 + i * 100, 50 + j * 100);
// Ayar 1
//kayan açı = sin(milis() / 1000.0) * PI/2;
// Ayar 2
//float oranı = i/7.0;
//kayan açı = sin(milis() / 1000.0 + oran * (PI/2)) * PI/2;
// Ayar 3
kayan nokta oranı = (i * 7 + j)/49.0;
kayan açı = sin(milis() / 1000.0 + oran * (PI/2)) * PI/2;
döndür(açı);
rectMode(CENTER);
// 1. resmi çiz
rect(0, 0, 80, 80);
// 2. resmi çiz
// rect(0, 0, 100, 20);
// 3. resmi çiz
//doğru(0, 0, oran * 50);
popMatrix();
}
}
} [/cceN_cpp]
Kod Açıklama
rectMode(CENTER) karenin çizim yöntemini değiştirebilir. Karenin sol üst köşesinin koordinatını tanımlamak için doğrunun orijinal eski iki parametresi kullanılır. Bu komutu başlattıktan sonra, kare merkez noktasının koordinatını ayarlamak için bu iki parametre kullanılacaktır. Çünkü burada patern rotasyonunu döndürme yoluyla çalıştırıyoruz, bu nedenle merkez noktasını koordinatın orijinal noktasına çizmek için bu yöntemi kullanmamız gerekiyor.
millis(), programın başlangıcından bugüne kadar olan zamanı alır. Birim ms'dir. Bu değer, sin çıkış değerinin değişen hızını etkiler. Doğrudan millis yazarsak değişen ölçek çok büyük olur. Bu yüzden 1000.0'a bölmemiz gerekiyor.
Kodun bu bölümünde, birkaç ayarı gizlemek için "//" yorum sembolünü kullanıyoruz. Efektleri başlatarak veya kapatarak değiştirebilirsiniz. Örneğin, "Ayar 3"ün arkasından cümlelere başlarsak, "Ayar 1" ve "Ayar 2"nin arkasındaki kod bloklarını kapatmak için yorum sembolünü kullanmamız gerekir. Farklı yerel değişkenlerle bu benzer program yapısının örneklerine gelince, bu formatta yazabiliriz. Böylece birkaç mühendislik belgesini ayrı ayrı saklamamız gerekmiyor. Bu beceriyi uygulama ve oluşturma sırasında sıklıkla kullanabilir ve bazı tatmin edici parametre ayarlarını koruyabiliriz.
Bunların arasında, i, j değerinin programa etkisi esas olarak "Ayar 1 (Ayar 2)(Ayar 3)" kaydırılarak temsil edilir. Aşağıdaki çıktı sonuçlarını karşılaştırabilirsiniz.
Resim 1: Ayar 1'i çizin
Resim 1: Ayar 2'yi çizin
Resim 1: Ayar 3'ü çizin
Resim 2 çizin: Ayar 1
Resim 2 çizin: Ayar 2
Resim 2 çizin: Ayar 3
1. ayarda, her bir elemanın dönüş açısını etkilemek için i ve j'yi kullanmadık. Böylece her elementin hareketinin aynı olduğunu görebiliriz. Ayar 2'deyken, i değerini ve ayar 3'te hem i hem de j'yi kullandık. Son olarak, oran aracılığıyla sin fonksiyonunun parametre girişini etkilediler. Bu, açının periyodik değişimini değiştirmiştir. Ayar 2 ve ayar 3'ün gerçek etkisi animasyonlu grafiklerde çok belirgin olmadığından, aşağıdaki ekran görüntüsünden bunu gözlemleyebiliriz.
Resim 2 Çiz (Sol: Ayar 2; Sağ: Ayar 3)
Resim 3 Çiz (Sol: Ayar 2; Sağ: Ayar 3)
İlk resimde, kare dönüş açısını etkilemek için oran kullanılmıştır. İkinci resim ise dairenin yarıçapını doğrudan kontrol etmek içindir. i value cümlesini kullandığını görebiliriz:
kayan nokta oranı = i/7.0;
Dikey eleman değişimi tutarlıdır. Resmi kontrol etmek için yatay koordinat sadece i değerine bağlı olduğundan, aynı yatay koordinata sahip desenler aynı olacaktır. Ve oranın değeri, dönüş açısı ve dairenin yarıçapı da aynıdır.
Aynı zamanda, i, j cümlesini kullanıyoruz:
kayan nokta oranı = (i * 7 + j)/49.0;
"Degrade"yi tanımlayabilir. Burada bir çarpanı çarpma yöntemi ile satır ve sütunların etkisini birleştirmiştir. Yani her element farklıdır.
Adım 7: Döngü Sürerken
for döngüsü için bir kardeş var. Yani while döngüsü. for döngüsü ne yapabilir, while döngüsü de yapabilir. Ancak creativeCoding'de while döngüsünün kullanım sıklığı, for döngüsü kadar yüksek değildir.
Kod Örneği (5-14):[cceN_cpp theme="şafak"] void setup(){
int a = 0;
while(a < 10){
println(a);
a++;
}
} [/cceN_cpp]
while'ın dilbilgisi yapısı, anlaşılmasından daha kolaydır. while deyiminden önce değişkenler oluşturabiliriz. Ardından köşeli parantez içinde bir ifade girin. Doyduğunda, cümleleri döngü gövdesi içinde çalıştırın. Son olarak, değişkenleri güncellemek için döngü gövdesine bir ifade koyarız, ardından döngü biter. Garantili döngü sürelerine gelince, genellikle for döngüsü kullanırız. Sonsuz değişken değerine gelince, while döngüsünü kullanmanızı öneririz.
Düşünmek:
Çeşitli farklı fırçalar oluşturmak için for döngüsündeki çizim öğelerini değiştirmek için her türlü temel öğeyi kullanmayı deneyin.
Son bölümde bahsedilen trigonometrik fonksiyonla birleştirin, "saçılma noktaları" fırçasını yuvarlak şekilli fırçaya çevirmeye çalışın.
Yalnızca for döngüsüyle iki boyutlu bir nokta matrisi oluşturmaya çalışın.
Sonraki Bölüm ÖnizlemeBu kursla birlikte öğrendiğiniz her yeni bilgiyi bulacaksınız, oynama olasılığı hemen çok artacaktır. Program bir pandora kutusudur. Hayal edebileceğiniz her şey, sizin için yapabilir. Dolayısıyla bilgisayarlarla haberleşebilen bu dili öğrenmememiz için hiçbir sebep yok. Bir sonraki bölümümüzde, size başka bir süreç kontrol ifadesini tanıtacağız. Proses akışını kontrol edebilir ve daha karmaşık ve değişken sonuçlar üretebilir. If deyimi ile kolaylıkla kendi metin macera oyunlarınızı oluşturabilirsiniz!Bu makale tasarımcı Wenzy'den geliyor. İlgili Okumalar:Tasarımcı için İlginç Programlama Rehberi--Tasarımcı için İşleme İlk Dokunuş İlginç Programlama Rehberi--İlk İşleme Programınızı OluşturunTasarımcı için İlginç Programlama Rehberi –Resimlerinizi Çalıştırın(Birinci Kısım)Tasarımcılar için İlginç Programlama Rehberi–Resimlerinizi Çalıştırın(İkinci Kısım)
Adım 8: Kaynak
Bu makale şu adresten alınmıştır:
Herhangi bir sorunuz varsa, [email protected] ile iletişime geçebilirsiniz.