dizi(array())

Tanımı

Dizi(array), bir dizin numarasıyla erişilen değişkenler topluluğudur. Arduino eskizlerinin yazıldığı C++ programlama dilindeki diziler karmaşık olabilir, ancak basit dizileri kullanmak nispeten basittir.

Dizi (array) Oluşturma/Bildirme

Aşağıdaki yöntemlerin tümü, bir dizi oluşturmanın (bildirmenin) geçerli yollarıdır.

                    
int myInts[6];
int myPins[] = {2, 4, 8, 3, 6};
int mySensVals[6] = {2, 4, -8, 3, 2};
char message[6] = "merhaba!";
                    
                

Bir diziyi (myInts)de olduğu gibi başlatmadan bildirebilirsiniz. (myPins)de, açıkça bir boyut seçmeden bir dizi bildiririz. Derleyici öğeleri sayar ve uygun boyutta bir dizi oluşturur. Son olarak, (mySensVals)ta olduğu gibi dizinizi hem başlatabilir hem de boyutlandırabilirsiniz. (char) türünde bir dizi bildirirken, gerekli boş karakteri tutmak için başlatmanızdan bir öğenin daha gerekli olduğunu unutmayın.

Dizilere(array) Erişim

Diziler sıfır indekslidir,yani yukarıdaki dizi başlatmaya atıfta bulunarak dizinin ilk öğesi 0(sıfır) dizinindedir,dolayısıyla

mySensVals[0] == 2, mySensVals[1] == 4, vb.

Ayrıca, on elemanlı bir dizide dokuz sayısının indeksin son eleman olduğu anlamına gelir. Bu nedenle:

                        
int myArray[10]={9, 3, 2, 4, 3, 2, 7, 8, 9, 11};
// myArray[9]    11 sayı içerir
// myArray[10] geçersiz ve rastgele bilgiler içeriyor (diğer bellek adresi)
                        
                    

Bu nedenle dizilere erişimde dikkatli olmalısınız. Bir dizinin sonunu geçmek (bildirilen dizi boyutundan - 1'den daha büyük bir dizin numarası kullanarak) başka amaçlar için kullanılan bellekten okumaktır. Bu konumlardan okumak, geçersiz veriler vermek dışında muhtemelen pek bir şey yapmayacaktır. Rastgele bellek konumlarına yazmak kesinlikle kötü bir fikirdir ve genellikle çökmeler veya program arızası gibi mutsuz sonuçlara yol açabilir. Bu aynı zamanda izlenmesi zor bir hata olabilir.BASIC veya JAVA'dan farklı olarak, C++ programlama dili dizi erişiminin bildirdiğiniz dizi boyutunun yasal sınırları içinde olup olmadığını kontrol etmez.


Bir diziye değer atamak için

                     
 mySensVals[0] = 10;
                    
                

Bir diziden değer almak için

                      
x = mySensVals[4];
                    
                

Diziler ve "FOR" Döngüleri

Diziler genellikle döngüler için içeride manipüle edilir, burada döngü sayacı (for each) her dizi öğesi için dizin olarak kullanılır. Örneğin, bir dizinin öğelerini seri bağlantı noktası üzerinden yazdırmak için şöyle bir şey yapabilirsiniz:

                    
for (byte i = 0; i < 5; i = i + 1) {
Serial.println(myPins[i]);
}