Arduino - Diziler

Bir dizi, aynı türden olan ardışık bir bellek konumu grubudur. Dizideki belirli bir konuma veya öğeye başvurmak için, dizinin adını ve dizideki belirli öğenin konum numarasını belirtiriz.

Aşağıda verilen çizim, 11 öğe içeren C adlı bir tamsayı dizisini gösterir. Dizi adını ve ardından köşeli parantez ([]) içinde belirli öğenin konum numarasını vererek bu öğelerden herhangi birine başvurursunuz. Konum numarası daha resmi olarak bir alt simge veya dizin olarak adlandırılır (bu sayı, dizinin başından itibaren öğelerin sayısını belirtir). İlk elemanın alt simgesi 0 (sıfır) vardır ve bazen sıfır elemanı olarak adlandırılır.

Böylece, C dizisinin elemanları C [0] ("C alt sıfır" olarak okunur), C [1], C [2] ve benzeridir. C dizisindeki en yüksek alt simge 10'dur ve bu, dizideki (11) öğelerin sayısından 1 küçüktür. Dizi adları, diğer değişken adlarıyla aynı kuralları izler.

Bir alt simge, bir tamsayı veya tamsayı ifadesi olmalıdır (herhangi bir integral türü kullanılarak). Bir program alt simge olarak bir ifade kullanıyorsa, o zaman program alt simgeyi belirlemek için ifadeyi değerlendirir. Örneğin, a değişkeninin 5'e ve b değişkeninin 6'ya eşit olduğunu varsayarsak, ifade C [11] dizi elemanına 2 ekler.

Bir indisli dizi adı bir ldeğerdir, tıpkı dizi olmayan değişken adlarının yapabildiği gibi bir atamanın sol tarafında kullanılabilir.

Verilen şekilde C dizisini daha yakından inceleyelim. Dizinin tamamının adı C'dir. 11 öğesi C [0] ila C [10] olarak adlandırılır. C [0] 'ın değeri -45, C [1]' in değeri 6, C [2] 'nin değeri 0, C [7]' nin değeri 62 ve C [10] 'un değeri 78.

C dizisinin ilk üç öğesinde bulunan değerlerin toplamını yazdırmak için şunu yazardık -

Serial.print (C[ 0 ] + C[ 1 ] + C[ 2 ] );

C [6] 'nın değerini 2'ye bölmek ve sonucu x değişkenine atamak için şunu yazacağız -

x = C[ 6 ] / 2;

Dizileri Bildirme

Diziler bellekte yer kaplar. Elemanların türünü ve bir dizinin gerektirdiği eleman sayısını belirtmek için, formun bir bildirimini kullanın -

type arrayName [ arraySize ] ;

Derleyici uygun miktarda bellek ayırır. (Belleği ayıran bir bildirimin daha doğru bir şekilde tanım olarak bilindiğini hatırlayın). ArraySize, sıfırdan büyük bir tamsayı sabiti olmalıdır. Örneğin, derleyiciye C tamsayı dizisi için 11 öğe ayırmasını söylemek için, bildirimi kullanın -

int C[ 12 ]; // C is an array of 12 integers

Diziler, herhangi bir referans olmayan veri türünün değerlerini içerecek şekilde bildirilebilir. Örneğin, karakter dizelerini saklamak için dizge türünde bir dizi kullanılabilir.

Dizileri Kullanan Örnekler

Bu bölüm, dizilerin nasıl bildirileceğini, başlatılacağını ve işleneceğini gösteren birçok örnek verir.

Örnek 1: Bir Dizi Bildirme ve Dizinin Öğelerini Başlatmak için Döngü Kullanma

Program 10 elemanlı bir tamsayı dizisi bildiriyor n. A – b satırları a kullanırFordizi elemanlarını sıfır olarak başlatmak için ifade. Diğer otomatik değişkenler gibi, otomatik diziler de dolaylı olarak sıfıra başlatılmaz. İlk çıktı deyimi (c satırı), diziyi tablo biçiminde yazdıran, sonraki for deyiminde (d – e satırları) yazdırılan sütun başlıklarını görüntüler.

Example

int n[ 10 ] ; // n is an array of 10 integers

void setup () {

}

void loop () {
   for ( int i = 0; i < 10; ++i ) // initialize elements of array n to 0 {
      n[ i ] = 0; // set element at location i to 0
      Serial.print (i) ;
      Serial.print (‘\r’) ;
   }
   for ( int j = 0; j < 10; ++j ) // output each array element's value {
      Serial.print (n[j]) ;
      Serial.print (‘\r’) ;
   } 
}

Result - Aşağıdaki sonucu üretecektir -

Element Value

0

1

2

3

4

5

6

7

8

9

0

0

0

0

0

0

0

0

0

0

Örnek 2: Başlatıcı Listesiyle Bir Bildirgedeki Diziyi Başlatma

Bir dizinin öğeleri, dizi adının ardından eşittir işareti ve virgülle ayrılmış başlatıcılar listesiyle birlikte başlatılabilir. Program, 10 değerli bir tamsayı dizisini başlatmak için bir başlatıcı listesi kullanır (satır a) ve diziyi tablo biçiminde (satır b – c) yazdırır.

Example

// n is an array of 10 integers
int n[ 10 ] = { 32, 27, 64, 18, 95, 14, 90, 70, 60, 37 } ;

void setup () {

}

void loop () {
   for ( int i = 0; i < 10; ++i ) {
      Serial.print (i) ;
      Serial.print (‘\r’) ;
   }
   for ( int j = 0; j < 10; ++j ) // output each array element's value {
      Serial.print (n[j]) ;
      Serial.print (‘\r’) ;
   } 
}

Result - Aşağıdaki sonucu üretecektir -

Element Value

0

1

2

3

4

5

6

7

8

9

32

27

64

18

95

14

90

70

60

37

Örnek 3: Bir Dizinin Öğelerini Toplama

Genellikle, bir dizinin elemanları bir hesaplamada kullanılacak bir dizi değeri temsil eder. Örneğin, bir dizinin öğeleri sınav notlarını temsil ediyorsa, bir profesör dizinin öğelerini toplamayı ve bu toplamı sınavın sınıf ortalamasını hesaplamak için kullanmak isteyebilir. Program, 10 elemanlı tamsayı dizisinde bulunan değerleri toplara.

Example

const int arraySize = 10; // constant variable indicating size of array
int a[ arraySize ] = { 87, 68, 94, 100, 83, 78, 85, 91, 76, 87 };
int total = 0;

void setup () {

}
void loop () {
   // sum contents of array a
   for ( int i = 0; i < arraySize; ++i )
      total += a[ i ];
   Serial.print (“Total of array elements : ”) ;
   Serial.print(total) ;
}

Result - Aşağıdaki sonucu üretecektir -

Total of array elements: 849

Diziler Arduino için önemlidir ve çok daha fazla dikkat gerektirmelidir. Dizi ile ilgili aşağıdaki önemli kavramlar bir Arduino için açık olmalıdır -

S.NO. Konsept ve Açıklama
1 Dizileri İşlevlere Aktarma

Bir dizi bağımsız değişkenini bir işleve geçirmek için, dizinin adını köşeli parantez olmadan belirtin.

2 Çok Boyutlu Diziler

İki boyutlu diziler (yani alt simgeler) genellikle satırlar ve sütunlar halinde düzenlenmiş bilgilerden oluşan değer tablolarını temsil eder.