27 Haziran 2025 Cuma




String, Türkçe’de metin diye adlandırılan veri tipidir. String'lere metinsel ifadeler de denilebilir. Arduino programlamada "String" ifadesi, metinsel verileri saklamak ve işlemek için kullanılan bir nesnedir. 

Metin dizeleri iki şekilde temsil edilebilir: String veri türü ve sonlandırma/null karakteri ile biten char türündeki bir dizi. C tabanlı dillerde genellikle karakter dizileri (char array) kullanılırken, Arduino'da string sınıfı, metin manipülasyonunu daha kolay ve esnek hale getiren çeşitli fonksiyonlar sunar:

Çıktıyı biçimlemek. 

İki metni birleştirmek. 

Bir metnin bir alt metnini seçmek. 

Metindeki harfleri büyük harfe ya da küçük harfe dönüştürmek. 

İki metni mukayese etmek. 

Bir metinde bir alt metni ya da bir karakteri aramak. 


String Veri Tipinin Kullanımı:




string metin1, metin2, ………………………..;
int deger1, deger2, …………………………..;
char karakter; 
int string_sayi_tam;
float string_sayi_ondalikli;

1. metin1 = "Merhaba Dunya"; : Tırnak içindeki bir metin doğrudan string değişkene atandı.

2. metin2 = String('A'); : “A” harfi string olarak tanımlanıp metin2 değişkenine atandı.

3. metin3 = String(123); : “123” string ifadeye dönüştürüp metin3 değişkenine atandı.

4. metin4 = String(12, HEX); : 12 sayısının hexedecimal(16 lı) karşılığı string ifadeye dönüştürüldü.

5. metin5 = String(12, BIN); : 12 sayısının binary(2 li) karşılığı string ifadeye dönüştürüldü.

6. metin6 = metin7 + metin8; : metin7 ve metin8 string’i birleştirilip metin6 string’ine atandı.

7. metin9.concat(" diye konuştu."); : metin9 string’inin sonuna metin eklendi.

8. deger1 = metin10.indexOf('a'); : metin10 içerisinde soldan sağa doğru ilk a harfinin kaçıncı indiste olduğunu bulur.

9. deger2 = metin11.lastindexOf('a'); : metin11 içerisinde sağdan sola doğru ilk a harfinin kaçıncı indiste olduğunu bulur.

10. deger3 = metin12.length(); : metin12 içerisindeki karakter sayısını verir. Boşluklar dâhil.

11. metin13.trim(); : metin13 içerisindeki baştaki ve sondaki boşlukları kaldırır.

12. metin14.toUpperCase(); : metin14 içerisindeki tüm karakterleri büyük yapar.

13. metin15.toLowerCase(); : metin15 içerisindeki tüm karakterleri küçük yapar.

14. metin16.replace("e", "u"); : metin16 içerisindeki tüm e’leri u yapar.

15. metin17.replace("Yavaş", "Hızlı"); : metin17 içerisindeki “Yavaş” kelimesini “Hızlı” kelimesi ile değiştirir.

16. karakter = metin18.charAt(4); : metin18 string’inin 4. indisindeki karakteri bulur.

17. metin19.setCharAt(6, 'y'); : metin19’un 6. indisteki harfi “y” harfi ile değiştirir.

18. metin20.substring(5); : metin20 string’inin 5. indisten sonraki kısmını al.

19. metin20.substring(8,15); : metin20 string’inin 8. indisi ile 15. indisi arasını al. 15. indis hariç.

20. toInt() / toFloat(): String'i bir tam sayıya veya ondalıklı sayıya dönüştürür.

String sayiStr1 = "123.45";
String sayiStr2 = "123";
float sayi_ondalikli = sayiStr1.toFloat(); : sayiStr1 string’ini ondalıklı sayıya çevirir.
int sayi_tam = sayiStr2.toInt(); : sayiStr2 string’ini tam sayıya çevirir.

21. startsWith(on_ek) / endsWith(son_ek): String'in belirli bir ön ek veya son ek ile başlayıp başlamadığını kontrol eder.

String dosyaAdi = "rapor.txt";
bool sonuc = dosyaAdi.endsWith(".txt"); :  dosyaAdi string’inin .txt ile bitip bitmediği kontrol edildi. Sonuç; sonuc = true olur.

22. compareTo() Komutu: 
Bu komut, iki string nesnesini alfabetik olarak, yani lexicographically (sözlük sırasına göre) karşılaştırır. Temel olarak, sözlükteki kelimelerin sıralanma şekline benzer bir karşılaştırma yapar. Karşılaştırma alfabetik sıraya göre yapılır. Alfabetik sırası büyük olanın değeri büyüktür. Karşılaştırma harfler ve string ifadeler için yapılabilir. 





Örneğin;
deger = string_ifade_1.compareTo(string_ifade_2);   olsun;
(string_ifade_1) - (string_ifade_2) = 0 ise; değer = 0.
(string_ifade_1) - (string_ifade_2) > 0 ise; değer = pozitif.
(string_ifade_1) - (string_ifade_2) < 0 ise; değer = negatif.




String Nesnesini Boşaltma:

Bir string nesnesini aşağıdaki 2 şekilde boşaltabiliriz:
String mesaj = "Merhaba Dünya";
mesaj = "";         // String’i boş bir string’e atayarak içeriğini temizle.
veya
mesaj.remove(0); // İlk karakterden itibaren hepsini sil (boşalt).


String Kullanımında Dikkat Edilmesi Gerekenler:

1. Bellek Kullanımı: String nesneleri dinamik bellek kullandığı için, özellikle bellek kısıtlı Arduino kartlarında (Uno gibi) yoğun String işlemleri bellek fragmentation (parçalanma) sorunlarına yol açabilir. Bu durum, programınızın çökmesine veya beklenmedik davranışlar sergilemesine neden olabilir. Büyük ve sürekli değişen String'lerle çalışırken dikkatli olunmalıdır.
2. Performans: Dinamik bellek yönetimi, statik karakter dizilerine göre biraz daha yavaş olabilir. Yüksek performans gerektiren uygulamalarda bu göz önünde bulundurulmalıdır.
3. String’e Alternatif Olarak Karakter Dizileri (char array) Kullanmak: Eğer bellek ve performans kritikse, C tarzı karakter dizileri (char[]) kullanmak daha uygun olabilir. Ancak bu durumda metin işleme fonksiyonlarını kendiniz yazmanız veya daha düşük seviyeli kütüphaneler kullanmanız gerekir.


1. Örnek Program Kodları

String yazi = "abcde abcde fghi abcd";
String yazi2 = "   merhaba   ";
String yazi3 = "SELAM";
String yazi4 = "Kedinin asaleti fareyi görünceye kadardır";
String yazi5 = "Yavaş tükürüğün sakala zararı vardır";
String yazi6 = "nasılsın";
String yazi7 = "kurtlar vadisi";
String yazi8 = "Su kucugun su buyugun";
String yazi9 = "abcdefghjkmnoprs";
int yer, yer2;
String metin;
String metin1 = "ağaca";
String metin2 = "yaslanma";
String metin3;
char karakter;
String donustur, donustur2, donustur3;
String hayvan1, hayvan2, hayvan3, hayvan4;
String harf1, harf2, harf3, harf4;
int deger;

void setup()
{
      Serial.begin(9600);
      metin = "merhaba";
      Serial.println(metin);


      //__________string ifadelerin birleştirilmesi__________
      metin3 = metin1 + metin2;   //iki string ifade birleştirilip 3. string ifadeye atandı.
      Serial.println(metin3);

      metin3 = metin1 + " " + metin2 + " çürür";  //string ifadelere kelime ve boşluk eklendi.
      Serial.println(metin3);

      metin3.concat(" insana yaslanma ölür.");  //string ifadenin sonuna yazı eklendi.
      Serial.println(metin3);

      //______string ifade içerisinde soldan sağa harfin kaçıncı indiste olduğunu bulma_______
      //NOT: Türkçe karakterler 2 karakter olarak sayılır. Boşluklar sayılır. Saymaya sıfırıncı indisten başlanır.

      yer = yazi.indexOf('a');                //metin içerisinde soldan sağa doğru ilk a harfinin kaçıncı indiste olduğunu bulur.
      Serial.print("Soldan sağa 1. a harfinin indis numarası= ");             Serial.println(yer);

      yer2 = yazi.indexOf('a', yer + 1);      //2. a harfini aramaya ilk a harfini bulduğu indisten sonraki indisten başlayarak arar.
      Serial.print("Soldan sağa 2. a harfinin indis numarası= ");     Serial.println(yer2);

      //_________string ifade içerisinde sağdan sola harfin kaçıncı indiste olduğunu bulma_______
      //NOT: Türkçe karakterler 2 karakter olarak sayılır. Boşluklar sayılır. Saymaya en sağdaki yani en büyük indisten başlanır.

      yer = yazi.lastIndexOf('a');            //metin içerisinde sağdan sola doğru ilk a harfinin kaçıncı indiste olduğunu bulur.
      Serial.print("Sağdan sola 1. a harfinin indis numarası= "); Serial.println(yer);

      yer = yazi.lastIndexOf('a', yer - 1);   //2. a harfini aramaya ilk a harfini bulduğu indisten bir önceki indisten başlayarak arar. Çünkü arama sağdan sola doğru yapılıyor.
      Serial.print("Sağdan sola 2. a harfinin indis numarası= "); Serial.println(yer);

      //_________string ifade içerisindeki karakter sayısını bulma_______
      Serial.print("karakter sayısı ="); Serial.println(yazi.length());  //yazi değişkeni içerisindeki karakter sayısını verir. Boşluklar dahil.

      //_________string ifade içerisindeki baştaki ve sondaki boşlukları kaldırma_______
      Serial.print("boşluklu hali= ");
      Serial.println(yazi2);
      yazi2.trim();
      Serial.print("boşluklar kaldırılmış hali= ");
      Serial.println(yazi2);

      //_________string ifade içerisindeki tüm karakterler büyük yapıldı_______
      yazi.toUpperCase();
      Serial.print("büyük yazı= "); Serial.println(yazi);

      //_________string ifade içerisindeki tüm karakterler küçük yapıldı_______
      yazi3.toLowerCase();
      Serial.print("küçük yazı= "); Serial.println(yazi3);

      //_________string ifade içerisindeki kelimeleri yada harfleri değiştirme_______
      yazi4.replace("e", "u");  //yazi4 string i içerisindeki tüm e leri u yapar.
      Serial.print("e harfleri u yapıldı= "); Serial.println(yazi4);

      yazi5.replace("Yavaş", "Hızlı");      //yazi5 stringi içerisindeki yavaş kelimesini hızlı kelimesi ile değiştirir.
      Serial.print("Kelime değiştirildi= "); Serial.println(yazi5);

      //_________string ifade içerisindeki herhangi bir indisteki karakteri bulma_______
      karakter = yazi6.charAt(4);      //4. indisteki karakteri bulur.
      Serial.print("4. indisteki karakter= "); Serial.println(karakter);

      //_________string ifade içerisindeki herhangi bir indisteki karakteri değiştirme_______
      yazi7.setCharAt(6, 'y');     //6. indisteki harfi y harfi ile değiştirir.
      Serial.print("harf değiştirildi= "); Serial.println(yazi7);

      yazi8.setCharAt(yazi8.indexOf('u'), 'a');     //yazi8 değişkeni içerisindeki soldan sağa ilk u harfinin kaçıncı indiste olduğu bulundu ve bu indis numarası kullanılarak u harfi a harfi ile değiştirildi.
      Serial.print("ü harfi bulundu a hari ile değiştirildi= "); Serial.println(yazi8);

      //_________string ifadenin belirli bir indisten sonraki kısmını yazdırma_______
      Serial.print("belli indisten sonra yazdırma= ");
  Serial.println(yazi9.substring(5));

      //_________string ifadenin belirli bir aralığını yazdırma_______
      Serial.print("belli bir aralık yazdırma= ");
          Serial.println(yazi9.substring(5, 10));     //yazi9 stringinin 5. indisi ile 10. indisi(10. indis hariç) arası yazdırıldı.

      //_________herhangi bir sayıyı string ifadeye dönüştürme_______
      donustur = String(12);     //12 sayısı 1 ve 2 olarak iki karaktere dönüştürüldü.
      Serial.print("12 sayısının string ifadesi= "); Serial.println(donustur);

      donustur2 = String(12, HEX);     //12 sayısının hexedecimal(16 lı) karşılığı string ifadeye dönüştürüldü.
      Serial.print("12 sayısının hex karşılığının string ifadesi= "); Serial.println(donustur2);

      donustur3 = String(12, BIN);     //12 sayısının binary(2 li) karşılığı string ifadeye dönüştürüldü.
      Serial.print("12 sayısının bin karşılığının string ifadesi= "); Serial.println(donustur3);


}

void loop() 
{

}


2. Örnek Program Kodları

Bu uygulamada karşılaştırma operatörleri ile string karşılaştırma uygulaması yapacağız.

String hayvan1, hayvan2, hayvan3, hayvan4;
String harf1, harf2, harf3, harf4;
int deger;

void setup()
{
      Serial.begin(9600);

      //_________string ifadelerin karşılaştırma operatörleri ile karşılaştırılması_______
      hayvan1 = "kedi";
      hayvan2 = "kopek";
      hayvan3 = "kopek";
      hayvan4 = "maymun";

      harf1 = 'a';
      harf2 = 'b';
      harf3 = 'c';
      harf4 = 'd';

      if (harf2 > harf1)
      {
            Serial.println("harf2 daha büyük");
      }

      if (hayvan2 == hayvan3)
      {
            Serial.println("hayvan2 ile hayvan3 birbirine eşit");
      }

      if (harf3 > harf4)
      {
            Serial.println("harf3 harf4'den büyüktür");
      }
      else
      {
            Serial.println("harf3 harf4'den büyük değil");
      }
}
void loop() 
{

}


3. Örnek Program Kodları

Bu uygulamada string ifadelerin compareTo() komutu ile karşılaştırılmasını yapacağız.

String hayvan1, hayvan2, hayvan3, hayvan4;
String harf1, harf2, harf3, harf4;
int deger;

void setup()
{
      Serial.begin(9600);

      //_________string ifadelerin compareTo() komutu ile karşılaştırılması_______
      //NOT: deger = string_ifade_1.compareTo(string_ifade_2). Karşılaştırma alfabetik sıraya göre yapılır. Alfabetik sırası büyük olanın değeri büyüktür.
      //(string_ifade_1) - (string_ifade_2) şeklinde işlem yapar. Durum negatif yada pozitif yada sıfır çıkabilir.
      hayvan1 = "kedi";
      hayvan2 = "kopek";
      hayvan3 = "kopek";
      hayvan4 = "maymun";

      harf1 = 'a';
      harf2 = 'b';
      harf3 = 'c';
      harf4 = 'd';

      //_________harflerin karşılaştırılması_______
      deger = harf1.compareTo(harf2);     //harf1'in alfabetik sırasından harf2'nin alfabetik sırası çıkarılıp değer değişkenine atanır. a=1, b=2 olduğu için deger = 1 - 2 = -1 olur.
      Serial.print("harf1 ile harf2'nin karşılaştırılması= "); Serial.println(deger);
      deger = harf1.compareTo(harf3);
      Serial.print("harf1 ile harf3'ün karşılaştırılması= "); Serial.println(deger);

      deger = harf2.compareTo(harf1);
      Serial.print("harf2 ile harf1'in karşılaştırılması= "); Serial.println(deger);
      deger = harf3.compareTo(harf1);
      Serial.print("harf3 ile harf1'in karşılaştırılması= "); Serial.println(deger);

      deger = harf1.compareTo(harf1);
      Serial.print("harf1 ile harf1'in karşılaştırılması= "); Serial.println(deger);

      //_________kelimelerin karşılaştırılması_______
      deger = hayvan1.compareTo(hayvan4);
      Serial.print("hayvan1 ile hayvan4'ün karşılaştırılması= "); Serial.println(deger);
      deger = hayvan2.compareTo(hayvan1);
      Serial.print("hayvan2 ile hayvan1'in karşılaştırılması= "); Serial.println(deger);
      deger = hayvan2.compareTo(hayvan2);
      Serial.print("hayvan2 ile hayvan3'ün karşılaştırılması= "); Serial.println(deger);
}

void loop() 
{

}


________________________________________________________________________________________________________________________________________________________

0 comments:

Yorum Gönder

Arduino Eğitimi Konu - 7

Toplam Sayfa Görüntüleme Sayısı

Seri İletişim Protokolleri

Sensörlerin Arduino İle Kullanımı

Popular Posts

Yararlanılan Kaynaklar

İletişim

gokdag17@gmail.com