Diziler, birden fazla bilgiyi ayrı ayrı hafızasında tutan değişken yapılarıdır. Örnek olarak 5 elemanlı bir dizi 5 adet farklı değişkeni hafızasında tutabilmektedir.
Bunu en basit şekilde anlatmak gerekirse, normal bir değişken bir kutu gibidir ve içine bir tür malzeme koyulabilir. Diziler ise çok çekmeceli / raflı bir dolap gibidir. Her çekmecesine ayrı malzemeler yerleştirilebilir ve bu bilgiler birbirine karışmazlar.
Aynı örnekten devam edersek meyveler adındaki dolabın birinci çekmecesine elma, ikinci çekmecesine armut, üçüncü çekmecesine üzüm ve dördüncü çekmecesine çilek koyduğumuzu hayal edelim. Bu dolap bizim dizimizdir, çekmeceleri. ise dizimizin elemanlarıdır.
Şimdi arduino dilinde dizi tanımlama ve değer atama işlemlerini inceleyelim.
Örneğin yukarıda anlattığımız dolap örneğinden yola çıkarak 4 elemanlı int türünde bir dizi oluşturalım.
Sözdizimi; int diziAdı[indis sayısı];
Örnek;
1 |
int dizi[4]; // 4 elemanlı bir dizi oluşturduk |
Yukarıdaki örnek kodda dizi adında 4 elemanlı bir dizi oluşturduk. “int” komutu ile dizi içerisinde tutacağımız veri türünü belirledik, ardından dizi ismi girdik ve köşeli parantezler. Yani bu dizi içerisine 4 adet değer atayabiliriz.
Eğer diziyi oluştururken değer atayacaksak, dizi eleman sayısını girmemize gerek yoktur.
1 |
int dizi[] = {1,3,5,7,9} // 5 elemanlı dizi oluşturduk |
Yukarıda oluşturduğumuz dizinin elemanlarına erişmek için ise dizi adını yazıp köşeli parantez içerisinde erişmek istediğimiz elemanın indis numarasını gireriz. İndis numaralarının sıfırdan başladığını unutmayalım.
1 2 3 4 5 6 7 |
int dizi[] = {1,3,5,7,9} // 5 elemanlı dizi oluşturduk // seri porta dizinin sıfırıncı elemanı olan 1 sayısını yazmak için Serial.println(dizi[0]); // seri porta 1 sayısını gönderir // seri porta dizinin üçüncü elemanı olan 7 sayısını yazar Serial.println(dizi[3]); // seri porta 7 sayısını gönderir |
Eğer istersek dizi elemanlarını değişkene de atayabiliriz;
1 2 3 |
int dizi[] = {1,3,5,7,9}; int sayi = dizi[2]; // sayi değişkeni değeri 5 olur |
Dizinin herhangi bir indisindeki elemanı değiştirmek istersek, yeni atayacağımız değer o indis numarasına atanır;
1 2 3 4 |
int dizi[] = {1,3,5,7,9}; // "dizi" adında 5 elemanlı bir dizi oluşturduk // şimdi yukarıdaki dizimizin üçüncü indisindeki 7 değerini 6 yapalım dizi[3] = 6; yukarıdaki dizimizdeki 7 değeri 6 oldu |
Eğer bir dizinin tüm elemanlarını listelemek istersek bunu döngü ile yapabiliriz;
1 2 3 4 5 |
int dizi[] = {1,3,5,7,9}; for(int i = 0; i<5; i++){ Serial.println(dizi[i]); } |
Yukarıdaki kodlarda ne yaptık
Birinci satırda 5 elemanlı dizi oluşturduk ve dizinin indislerine 1, 3, 5, 7, 9 sayılarını ekledik.
Üçüncü satırda bir for döngüsü oluşturduk. “i” adında döngü değişkeni oluşturup “0” değerini atadık (int i = 0). Ardından “i” değişkeninin dizinin eleman sayısı olan 5’ten küçük olduğu sürece döngünün devem etmesini bildirdik (i < 5). Sonra her döngüde i değişkenini bir artırdık (i++).
Dördüncü satırda ise döngü parantezi içerisinde “Serial.println(dizi[i])” komutu ile her döngüde i değişkeni değerine karşılık gelen dizi elemanını seri porta yazdırdık.
Çok boyutlu diziler, dizi içerisinde dizi tanımlamaya benzer. Bu tür dizilere matris de denilebilir. Bu tür dizilerde iki adet köşeli parantez kullanılır. Bu tür dizileri bir tablo olarak hayal ederseki birinciköşeli parantez sütun sayısını, ikincisi ise satır sayısını temsil eder.
Sözdizimi; dizi[][] = {{},{}}
Örnek olarak 2×5 boyutunda dizi oluşturup birinci birinci sütuna tek ikinci sütuna ise çift sayıları yerleştirelim.
Dizimizin şekli görseldeki gibi olacak;
Karıştırmamanız için açıklama yapalım. Yukarıda görseldeki siyah hücreler içerisindeki rakamlar dizinin indis numaralarıdır. Açık renk içerisindeki rakamlar ise dizinin içerisine atanan değerlerdir. Şimdi dilerseniz yukarıdaki dizimizi kodlarla oluşturalım.
1 |
int dizi[2][5]; = {{0,2,4,6,8}, {1,3,5,7,9}}; // dizimiz 2x5 boyutundadır |
Böyle bir dizinin elemanlarını “dizi[satırNo][sütunNo] ” şeklinde çağırırız.
1 2 3 4 5 |
int dizi[2][5] = {{0,2,4,6,8}, {1,3,5,7,9}}; // dizimiz 2x5 boyutundadır Serial.println(dizi[0][0]); // Seri porta "0" bilgisini gönderir Serial.println(dizi[2][1]); // Seri porta "5" bilgisini gönderir Serial.println(dizi[4][0]); // Seri porta "8" bilgisini gönderir |
Çok boyutlu dizilerin elemanlarını listelemek için döngü içerisinde döngü oluştururuz.
Örneğin yukarıdaki dizimizin elemanlarını listeleyelim;
1 2 3 4 5 6 7 |
int dizi[2][5] = {{0,2,4,6,8}, {1,3,5,7,9}}; // dizimiz 2x5 boyutundadır for(int i = 0; i < 2; i++){ // dizimiz 2 sütundan oluşuyor for(j = 0; j < 5; j++){ // her sütun 5 satırdan oluşuyor Serial.println[i][j]; // Çıktımız 0246813579 olacaktır } } |
hatalı düzeltiniz
Merhaba, bir değeri dizi içerisinde nasıl arıtabiliriz. Örneğin a dizisi; 5, 6, 7,8 den oluşuyor. Şu şekilde arıtabilir miyiz;
Eğer 6 a dizisi içerisinde varsa …. Yani dizi içerisinde olduğu zaman 1, olmadığında 0 vb. Sonuç alabilir miyiz?