For döngüsü
for döngüsü
for
döngüsü, tırnaklı parenteze eklenmiş bir kod bloğunu tekrarlamak için kullanılır. Döngüyü artırmak ve sonlandırmak için genellikle bir artış sayacı kullanılır.for
döngüsü tekrar eden işlemler için yararlıdır ve genellikle veri / pin kombinaysonu üzerinde çalışmak için dizilerle birlikte kullanılır. Genellikle artış veya azalış sayacı olarak kullanılır.
Bir değerden başka bir değere kadar artıp yada azalarak son değerden sonra döngüyü bitiren operatördür.
for (başlangıç; bitiş; artış veya azalış) { //kod(lar); }
Başlangıç x
okunur ve atanan değer verilir. Döngüde her defasında bitiş değeri test edilir; Eğer doğruysa, artış devam eder. Bitiş yanlış olduğunda, döngü sona erer ve başa döner.
// Bir PWM pin kullanarak bir LED'i karartın int PWMpin = 10; // pin 10'da 470 ohm luk bir dirençle led bağlı void setup () { // kurulum gerektirmez } void loop () { for (int i = 0; i <= 255; i ++) { analogWrite(PWMpin, i); delay(10); } }
Yukarıdaki örnekte; PWMpin
değişkeni tanımlayıp 10. pine atama yaptık. Daha sonra for döngüsü içinde i
isimli bir değişken oluşrueup değerini 0 yaptık. Eğer i
255’den küçük veya eşit ise i
yi arttır.
10
mili saniyelik gecikme ile leddeki parlaklık artacak ve değer 255
olduğunda tekrar başa dönecek.C for döngüsü, BASIC dahil diğer bazı bilgisayar dillerinde bulunan döngülerden çok daha esnektir.
Noktalı virgül gerekli olsa da, üç üstbilgi elemanının herhangi biri veya tümü atlanabilir.
Ayrıca, başlatma, bitiş ve artış için kullanılan kodlar, ilgisiz değişkenlere sahip herhangi bir geçerli C ifadesi olabilir ve herhangi bir C veri türünü kullanabilir. Bu alışılmadık ifadeler, bazı nadir programlama sorunlarına çözümler sağlayabilir.
Örneğin, artım satırında bir çarpma kullanılması, bir logaritmik ilerleme oluşturur:
for(int x = 2; x < 100; x = x * 1.5){ println(x); }
x
değeri: 2,3,4,6,9,13,19,28,42,63,94 değerlerini döndürür. Başlangıç değerimiz 2(x) bitiş değerimiz ise 100. Burda farklı olan artış değerimiz her seferinde 1.5
çarpılarak artacak.
Burdaki veri tipimiz int
olduğundan noktalı değerler görülmez. Bunu ilerleyen konularda göreceksiniz.
Başka bir örnek, LED önce parlaklaşır sonra yavaşca parlaklığı düşer;
void loop() { int x = 1; for (int i = 0; i > -1; i = i + x){ analogWrite(PWMpin, i); if (i == 255) x = -1; // sınırdan yön değiştir. delay(10); } }
Bir x
değişkeni tanımlayıp değerini 1
verdik.
döngüsü içinde
fori
değişkeni tanımlayıp başlangıç değerini 0
yaptık.
Eğer i
-1
‘den büyük ise i
‘yi x
ile topla dedik.
Eğer(if) i
255
‘e eşit ise x
‘i –1
yap.
Bizim formülümüzde i + x
kullandık. i
255
‘e ulaştı ve x
‘e -1
atandı. Şimdi ne olacak ? Formül devam ediyor. i + x
yani 255 + (-1) = 254
Bu böyle ta ki i
değeri -1
den büyük olana kadar yani 0
olana kadar devam edecek. 0
olunca sınıra takılıp döngü tekrar başlıcak. Böylece ledimizin 10
mili saniye arayla parlaklığı artacak tam tepe noktasında tam tersi 10
mili saniye arayla parlaklığı düşecektir.
Örnek Uygulama:
NOT: Buradaki bilgiler arduino.cc sitesinden Türkçeye çevrilmiştir.
Türkçe çevirinin tüm hakları saklıdır.
Bu web sayfası sadece link olarak paylaşılabilir.
Sayfada herhangi bir hata, öneri ve yorumlarınız için iletişim kurmanızı bekleriz.
for döngüsünde çevirdiğimiz i değerini delay içerisinde bir sayıya atayabiilir miyiz? Örneğin şu şekilde bir kod:
for(int i=500; i<=300 ; i=i-100){
digitalWrite(10,HIGH);
delay(i);
digitalWrite(10,LOW);
delay(i);
}
deyal yerine millis kullanarak yapmak istediğinizi daha kolay yapabilirsiniz.