Atomlar ve Türleri
Bir programlama dilinde yazılmış anlamlı en küçük parçalarına “atom” denir.
C ve C++ dillerinde atomlar aşağıdaki gruplardan birine aittiri.
1.Anahtar Sözcükler
Programlama dili taraafında önceden belirlenmiş anlamlara sahip atomlardır.Bunlar kaynak dosya içerisinde başka bir anlama gelecek biçimde kullanılamaz.
Bunları değişken ismi olarak kullanmak geçerli değildir.C dilinde C 99 standartlarından sonra toplam 37 anahtar sözcük mevcuttur.
Bunlar:
auto,break,case,char,const,continue,default,do,double,else,enum,extern,float,for,
goto,if,int,long,register,return,short,signed,sizeof,static,struct,
switch typedef,union,unsigned,void,volatile,while,inline,restrict,_Bool,_Complex,_Imaginary
C programlama dili büyük harf-küçük harfe duyarlı bir dildir.C de bir değişkene default ismi verilemez.Çünkü yukarıdada belirtiğimiz gibi “default” bir anahtar
sözcüktür.Ama DEFAULT yazmamız geçerli sayılır.Çunku büyük harfler ile yazılmış (DEFAULT) anahtar sözcük sayılmaz.
2.İsimler
Değişkenler,işlevler,makrolar,değişmezler gibi yazılımsal varlıklara programlama dili tarafından belirlenmiş kurallar dahilinde isimler verilebilir.
3. Operatörler(Operators)
Operatörler önceden tanımlanmış birtakım işlemleri yapan atomlardır.
Örneğin +, -, *, / , >=, Programlama dillerinde kullanılan operatör sembolleri birbirinden farklı olabileceği gibi, operatör tanımlamaları da birbirinden farklı olabilir. Örneğin birçok programlama dilinde üs alma operatörü tanımlanmışken C dilinde böyle bir operatör yoktur. Üs alma işlemi operatör ile değil bir fonksiyon yardımıyla yapılabilir.
C dilinde bazı operatörler iki karakterden oluşmaktadır bu iki karakter bitişik yazılmalıdır aralarına space karakteri koyarsak operatör anlamını yitirir
4. Sabitler(Constants)
Doğrudan işleme sokulan değişken bilgi içermeyen atomlardır.
Örneğin SAYAC = SON + 10 gibi bir ifadede 10 sabiti doğrudan SON değişkeni ile toplanmaktadır
5. Stringler(String literals)
İki tırnak içindeki ifadelere string denir. Stringler programlama dillerinin çoğunda tek bir atom olarak alınırlar, daha fazla parçaya bölünemezler.
“STRİNGLER DE BİRER ATOMDUR” ifadesi bir stringdir.
6. Ayıraçlar ya da noktalama işaretleri(Separators, Punctuators, Delimiters)
Yukarıda sayılan atom sınıflarının dışında kalan tüm atomları bu gruba sokabiliriz. Genellikle diğer atomları birbirinden ayırma amacıyla kullanıldıkları için ayıraç olarak isimlendirilirler.
NESNE (OBJECT)
Bellekte yer kaplayan ve içeriklerine erişilebilen alanlara nesne denir. Bir ifadenin nesne olabilmesi için bellekte bir yer belirtmesi gerekir. Programlama dillerinde nesnelere isimlerini kullanarak erişebiliriz.
a = b + k; örneğinde a, b ve k birer nesnedir. Bu ifadede a nesnesine b ve k nesneleriine ait değerlerin toplamı atanmaktadır.
sonuc = 100; sonuc isimli nesneye 100 sabit değeri atanmaktadır.
nesnelerin bazı özelliklerinden söz edilebilir :
İsimleri (name) :
Nesneyi temsil eden karakterlerdir. Nesnelere isimleri programcı tarafından verilir. Her dil için nesne isimlendirmede bazı kurallar söz konusudur.
VERGI = 20000; (Burada VERGI bir nesne ismidir.)
Nesne ile Değişken kavramları birbirine tam olarak eşdeğer değildir. Her değişken bir nesnedir ama her nesne bir değişken değildir. Değişkenler, programcının isimlendirdiği nesnelerdir. Peki programcının isimlendirmediği de nesneler var mıdır? Evet, göstericiler konusunda da göreceğimiz gibi, değişken olmayan nesneler de vardır, nesne kavramı değişken kavramını kapsamaktadır.
Değerleri (value) :
Nesnelerin içlerinde tuttuklerı bilgilerdir. Başka bir deyişle nesneler için bellekte ayrılan yerklerdeki 1 ve 0 ların yorumlanış biçimi ilgili nesnenin değeridir. Bu değerler programlama dillerinin kurallarına göre , istenildikleri zaman programcı tarafından değiştirilebilirler. C dilinde bazı nesneler ise bir kez değer verildikten sonra bir daha değiştirilemezler.
Türleri (Type) :
Nesnenin türü derleyiciye o nesnenin nasıl yorumlanacağı hakkında bilgi verir. Yine bir nesnenin türü onun bellekteki uzunluğu hakkında da bilgi verir. Her türün bellekte ne kadar uzunlukta bir yer kapladığı programlama dillerinde önceden belirtilmiştir. Bir nesnenin türü, ayrıca o nesne üzerinde hangi işlemlerin yapılabileciği bilgisini de verir.
Tür nesnenin ayrılmaz bir özelliğidir, türsüz bir nesne kavramı söz konusu değildir.
Türleri ikiye ayırabiliriz :
1. Önceden tanımlanmış veri türleri (default types)
Bu türler programlama dilinin tasarımında var olan veri türleridir. Örneğin C dilinde önceden tanımlanmış 11 ayrı veri türü vardır.
2. Programcı tarafından tanımlanan veri türleri (user defined types)
Programlama dillerinin çoğunda programcının tür tanımlamasına izin vermektedir. Örneğin C dilinde yapılar, birlikler, bit alanları, C++ dilinde de sınıflar programcı tarafından tanımlanan veri türleridir.
Programlama dillerindeki tür tanımlamaları birbirlerinden farklı olabilir. Örneğin bazı programlama dillerinde Boolean isimli (Mantıksal Doğru ya da Yanlış değerlerini alan) bir türdür tanımlanmıştır. Ama C dilinde böyle bir tür doğrudan tanımlanmamıştır.
Faaliyet alanları (scope / visibility) :
Nesnenin, dilin derleyicisi ya da yorumlayıcısı tarafından tanınabildiği program alanıdır
Ömürleri (storage duration / lifespan) :
Programın çalıştırılması sırasında nesnenin varlığını sürdürdüğü zaman parçasıdır.
Bağlantıları (linkage)
Nesnelerin programı oluşturan diğer modüllerde tanınabilme özelliğidir
İFADE (Expression)
Değişken, operatör ve sabitlerin kombinasyonlarına ifade denir.
a + b / 2
c * 2, d = h + 34
var1
geçerli ifadelerdir.
DEYİM (statement)
Derleyicinin, bilgisayara bir iş yaptıracak şekilde kod üretmesine (yani icra edilebilecek bir kod üretmesine) yol açan ifadelere deyim denir.
Örneğin C dilinde
; ile sonlandırılmış ifadelere deyim diyoruz.
result = number1 * number2
bir ifadedir. Ancak
result = number1 * number2;
bir deyimdir. Bu deyim derleyicinin, number1 ve number2 değişkenlerin değerlerinin çarpılarak, elde edilen değerin result değişkenine atanmasını sağlayacak şekilde kod üretmesine neden olacaktır.