Temel C Programlama -38- Karakterler ve Karakter Dizilerine Giriş

Bilgisayarların en büyük görevlerinden biri de bizim günlük hayatta kullandığımız yazıları okuyup, işleyip, kaydedebilmesidir. Eğer bilgisayarlar metin üzerinde işlem yapmasaydı hesap makinesinden çok da farklı olmazdı. Bu site sayfasında okuduğunuz yazılar, klavyeden sohbet uygulamasında yazdığınız mesajlar, telefondan attığınız SMS mesajı gibi bütün yazılar bilgisayarlarda karakter yani harf harf olarak ele alınır ve bu harflerin sırasına ise karakter dizisi (string) adı verilir.

Bilgisayar bilimlerinden ve binary kodlamadan bahsettiğimiz yazılarda bilgisayarların sadece ikilik sistemde bir (1) veya sıfır (0) değerleriyle işlem yaptığından bahsetmiştik. Bu ikilik tabandaki değerler sayı değeri olduğu için bunları onluk veya on altılık tabana çevirebiliriz. Fakat bizim yazıda kullandığımız harfler, semboller ve rakamlar bilgisayar sistemlerinde bir anlam ifade etmemektedir. O yüzden kodlama adını verdiğimiz ve sadece bizim anladığımız özel bir kodlama sistemi mevcuttur. Bu kodlama ile belli bir sayısal değere karşılık belli bir harf değeri temsil edilir. Örneğin bilgisayar sisteminde ‘A’ karakterinin karşılığı 65 değeridir. Program yazdırma formatına göre bu 65 değerini sayı olarak da ekrana yazdırabilir metin olarak da. Ekranda görülen A değeri bizim için bir anlam ifade etse de bilgisayar için anlam ifade eden 65 değeridir. Daha ayrıntılı bilgi için ASCII tablosuna bakmanızı rica ederim.

C dilinde karakter verisinin 8-bitlik bir değer bulundurduğunu söylemiştik. Aslında char adı koyulan veri tipi bir baytlık tamsayı değişkeninden çok farklı bir şey değildir. İstersek char değişkenine sayı değeri koyar ve sayı değerleri üzerinden işlem yaparız. Ama adından da anlaşılacağı üzere char değişken tipinin asıl amacı 0-127 arası ana ASCII karakterleri ya da unsigned char ile 0-255 arası genişletilmiş ASCII karakterleri içinde bulundurmaktır. Her char değişkeni sadece bir karakteri içinde bulundurabilir. Örneğin “STM32” yazdırmak için 5 ayrı char değişkenine ihtiyacımız vardır. Bunu istersek ayrı ayrı değişkenlerle yazdırabiliriz ki ancak bizim için bir anlam ifade edebilir. İstersek de char dizi[6] diyerek bir char tipinde dizi tanımlarız ve sıra ile yazdırırız. Dizi olarak yazdırmak hem daha pratik hem de bilgisayar için daha anlamlı olacaktır. Birbirinden bağımsız değişkenler ancak bizim için bir anlam ifade edebilir. Bilgisayar bunların arasındaki bağlantıyı kavrayamaz.

Diğer yüksek seviye programlama dillerinde karakter dizileri için String adında sınıf yapıları bulunabilir ve daha yüksek seviye işlemler yapılabilir. Ama C dilinde String adında bir yapı yoktur!. Evet, C dilinde siz karakter dizilerini sıfırdan yapmak zorundasınız. Fakat dilde gömülü olarak karakter dizileri için özel ayrıcalıklar vardır. Mesela karakter dizilerine değer atarken iki tırnak arasına değer girmek veya karakter dizilerinin otomatik olarak \0 bitirme karakteri ile bitmesi gibi bazı ayrıcalıklar dışında C dilinin standart kütüphanelerinde karakter dizileri ve karakterler için özel fonksiyonlar bulunmaktadır. Bu fonksiyonları kullanmak metin işlemenin olmazsa olmazıdır.

İsterseniz C dilindeki standart kütüphane fonksiyonlarına benzer fonksiyonları siz de yazabilirsiniz. Ama bu standart kütüphane fonksiyonları özenle hazırlandığı için performans ve kararlılık bakımından üst seviyededir. Çok zorunda kalmadıkça hazır fonksiyonları kullanmalısınız.

C dilinde karakter dizileri için üst seviye özellikler olmadığından çok uğraştırıcı ve teferruatlı gibi görünebilir. Fakat burada üstü kapalı hiçbir yer yoktur. Perde arkasında yürüyen hiçbir işlem olmadığı için mantığını kavramanız oldukça kolay olacaktır. Bir sonraki yazımızda örneklerle konumuza devam edeceğiz. Tekrar belirtelim, bu konu zor değil fakat teferruatlı. O yüzden zor gelmese de sıkıcı gelebilir.

Bizi Facebook grubumuzda takip etmeyi unutmayın. Bilgili ve öğrenmeye hevesli bir topluluk oluşturmak istiyoruz.

https://www.facebook.com/groups/1233336523490761/

UYARI!!

Gökhan Dökmetaş

"Arduino Eğitim Kitabı" ve "Arduino ve Raspberry PI ile Nesnelerin İnterneti" kitaplarının yazarı. Başkent Teknoloji ve Dedektör Merkezi'nde Ar-ge Sorumlusu. Araştırmacı-Yazar.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.