Karakter fonksiyonları bir karakterin harf, alfasayısal, büyükharf, küçükharf, ASCII vb. özelliklerini algılamak için kullanılmaktadır. Bu dersimizde anlatacağımız tüm fonksiyonların ortak özellikleri, yalnızca char (karakter) türü parametre alması ve geriye bool (true ya da false) tipi değer döndürmesidir.
Arduino dilinde 13 adet karakter fonksiyonu bulunmaktadır.
Bunlar;
isAlpha fonksiyonu bir karakterin harf olup olmadığını kontrol etmeye yarayan fonksiyondur. Eğer fonksiyona gönderilen veri bir karakter ise, fonksiyon true değer döndürür.
Sözdizimi; isAlpha(char);
Örnek;
1 2 3 4 5 |
if(isAlpha(k)){ Serial.print("Bu bir harftir"); } else { Serial.print("Bu bir harf değildir"); } |
yukarıdaki örnekte “k” karakteri bir harf olduğu için fonksiyon bize true sonuç döndürür ve if küme parantezi içerisindeki kod çalışıp, seri porta “Bu bir harftir” yazar.
Bu fonksiyon, fonksiyona gönderilen parametrenin bir harf ya da rakam mı olduğunu kontrol eder. Eğer parametre harf ya da rakam ise true sonucu döndürür.
Sözdizimi; isAlphaNumeric(karakter);
Örnek;
1 2 3 4 5 |
if(isAlpha(5)){ Serial.print("Bu bir harf ya da rakamdır"); } else { Serial.print("Bu bir harf ya da rakam değildir"); } |
Bu fonksiyonumuz, fonksiyona gönderdiğimiz verinin ASCII standartlarında bir veri olup olmadığını kontrol eder. Eğer veri ASCII standartlarında ise, fonksiyon bize true sonuç döndürür. ASCII karakterlerin hangileri olduğunu görmek isterseniz, Karakter Kodları sayfasındaki tablomuza göz atabilirsiniz. Aynı sayfada klavyeden girilen karakterin karakter numaralarını Decimal, Hexadecimal ve Binary olarak görebilirsiniz.
Sözdizimi; isAscii(karakter);
Örnek;
1 2 3 4 5 6 |
char karakter = '$'; if(isAscii(karakter)){ Serial.print("Bu bir ASCII standartlarında karakterdir"); } else { Serial.print("Bu ASCII standartlarında karakter değildir"); } |
isControl fonksiyonu, fonksiyona gönderilen karakterin kontrol karakteri olup olmadığını kontrol eder. Eğer kontrol karakteri ise true, eğer kontrol karakteri değilse false sonuç döndürür. Kontrol karakterleri ASCII tablosunun ilk 32 (decimal 0 ila 31 arası) karakterleridir.
Sözdizimi: isControl(char);
Örnek;
1 2 3 4 5 6 7 8 |
char karakter = 6; // ASCII tablosunda Decimal 6 numaralı karakter ACK komutudur if(isControl(karakter)){ Serial.print("Bu bir kontrol karakteridir.") } else { Serial.print("Bu bir kontrol karakteri değildir"); } |
Yukarıdaki örnekte ASCII tablosunda Decimal 6 numaralı karakter kontrol karakteri olduğu için, programımız seri porta “Bu bir kontrol karakteridir” yazacaktır.
Bu fonksiyonumuz karakterin rakam olup olmadığını kontrol eder. Eğer girilen karakter rakam ise true sonucunu döndürür.
Sözdizimi; isDigit(karakter);
Örnek;
1 2 3 4 5 6 7 |
char karakter = "5"; if(isDigit(karakter)){ Serial.print("Bu bir rakamdır"); } else { Serial.print("Bu bir rakamdır"); } |
Bu fonksiyonumuz karakterin ekrana yazılabilirliğini kontrol eder. Eğer yazılabiliyor ise true sonuç döndürür.
Sözdizimi; isGraph(karakter);
Örnek;
1 2 3 4 5 6 7 8 |
char karakter = 6; // 6 numaralı karakter ACK komutudur ve sembolü yoktur if(isGraph(karakter)){ Serial.print("Bu karakter ekrana yazdırılabilir"); } else { Serial.print("Bu karakter ekrana yazdırılamaz"); } |
Yukarıdaki kod örneğinde else parantezi içerisindeki kodlar çalışır. Çünkü ACK karakterinin sembolü olmadığı için isGraph fonksiyonu bize false döndürmüştür.
Bu fonksiyonumuz girilen karakterin hexadecimal rakam olup olmadığını kontrol eder. Eğer hexadecimal rakam ise, fonksiyon bize true sonuç döndürür.
Sözdizimi; isHexadecimalDitits(karakter);
Örnek;
1 2 3 4 5 6 7 8 9 |
char karakter = 'F'; if(isHexadecimalDigits(karakter)){ Serial.print("Evet bu karakter hexadecimal bir rakamı temsil eder"); } else { Serial.print("Hayır bu karakter hexadecimal bir rakamdeğildir"); } // Programımız seri porta "Evet bu karakter hexadecimal bir rakamı temsil eder" yazacaktır. |
Yukarıdaki örnekte if parantezi içerisindeki kodlar çalışır ve seri porta “Evet bu karakter hexadecimal bir rakamı temsil eder” yazar. Çünkü “F” karakteri hexadecimal bir rakamdır ve decimal karşılığı 16’dır.
Bir karakterin küçük harf olup olmadığını kontrol eden fonksiyondur. Eğer fonksiyona göndeerilen parametre küçük harf ise true sonuç döndürür.
Sözdizimi; isLowerCase(karakter);
Örnek;
1 2 3 4 5 6 7 8 9 |
char karakter = 'k'; if(isLowerCase(karakter)){ Serial.print("Bu harf küçük harftir"); } else { Serial.print("Bu harf büyük harftir"); } //Programımız seri porta "Bu harf küçük harftir" yazacaktır. |
Yukarıdaki “karakter” değişkenine atadığımız “k” karakteri küçük olduğundan dolayı, if sorgusundaki “ifLowerCase” fonksiyonumuz bize true değer döndürecektir. Bu sebeple “if” küme parantezi içerisindeki kodlar çalışacak ve ekrana “Bu harf küçük harftir” yazacaktır.
Bu fonksiyonumuz ise isLowerCase fonksiyonunun tam tersi olarak işlem yapar. Yani isUpperCase fonksiyonu, fonksiyona gönderdiğimiz parametreyi kontrol ederek karakterin büyük harf olması durumunda true sonuç döndürür. Eğer küçük harf ise false sonuç döndürür.
Sözdizimi; isUpperCase(karakter);
1 2 3 4 5 6 7 8 9 |
char karakter = 'A'; if(isUpperCase(karakter)){ Serial.print("Bu harf büyük harftir"); } else { Serial.print("Bu harf küçük harftir"); } //Programımız seri porta "Bu harf büyük harftir" yazacaktır. |
Yukarıdaki programımız seri porta “Bu harf büyük harftir” yazacaktır.
isPrintable fonksiyonumuz, fonksiyona gönderdiğimiz karakterin yazıcıda basılabilirliğini kontrol eder. Eğer basılabilir karakter ise true, eğer basılabilir karakter değilse false sonuç döndürür.
Sözdizimi; isPrintable(karakter);
Fonksiyona gönderdiğimiz karakterin noktalama işareti (nokta, virgül, soru işareti, ünlem işareti vs.) olup olmadığını kontrol eder ve eğer noktalama işareti ise true sonuç döndürür.
Sözdizimi; isPuntch(karakter);
Örnek;
1 2 3 4 5 6 7 8 9 |
char karakter = "?"; if(isPuntch(karakter)){ Serial.print("Bu bir noktalama işaretidir"); } else { Serial.print("Bu bir noktalama işareti değildir"); } // program seri porta "Bu bir noktalama işaretidir" yazar |
Bu fonksiyonumuz, fonksiyona gönderilen karakterin boşluk karakteri olup olmadığını kontrol eder. Eğer boşluk karakteri ise true, değilse false sonuç döndürür.
Sözdizimi; isSpace(karakter);
1 2 3 4 5 6 7 8 9 |
char karakter = " "; if(isPuntch(karakter)){ Serial.print("Bu boşluk karakteridir"); } else { Serial.print("Bu boşluk karakteri değildir"); } // program seri porta "Bu boşluk karakteridir" yazar |
Bir karakterin boşluk, formfeed (\f), yeni satır (\n), satır başı (\r), tab (\t) ve dikey sekme (\v) olup olmadığını kontrol eder. Eğer karakter bunlardan biri ise true, değilse false sonuç döndürür.
1 2 3 4 5 6 7 8 9 10 |
char karakter = 13; // Decimal 13 sayısı ASCII tablosunda yeni satırı temsil eder if(isPuntch(karakter)){ Serial.print("Bu yeni satır karakteridir"); } else { Serial.print("Bu yeni satır karakteri değildir"); } // program seri porta "Bu yeni satır karakteridir" yazar |