BİLİŞİM - BİLGİSAYAR - EĞİTİM
  Operatörler Nedir
 

Operatörler Nedir?

   Önce matematikte operatörün ne olduğunu bir inceleyelim.. Operatörler üzerinde işlem yaptıkları bir veya birden fazla operandı belli kurallara göre işlerler. Operand işleme maruz kalandır.

   Örneğin; a + b 'de a ve b operand + ise operatördür. Matamatikte işlemler operatörler ve operandlar ile anlatılır.

 

   Bilgisayardada yapılacak işlemleri belli operatörler tarafından gerçekleştirmekteyiz.

Türleri:

   Operatörleri kullanım alanlarına ve kullanımdaki yerlerine (syntaxlarına) göre iki ayrı şekilde açıklamak mümkün iken, anlatımımızda kullanım türlerine göre sınıflandıracağız ve syntaxların göre aldıkları isimleride her operatör altında inceleyeceğiz.

   Kullanım Alanlarına göre operatörler::

Aritmatiksel operatörler + , - , * , / , % , ++ , --

Karşılaştırma operatörleri < , > , <=, >= , ==, !=

Bit bazında işlem yapan operatörler : & , | , ^ , ~ , << , >>

Eşitleme operatörleri : = , += , -=, *= , /= , %= , <<=, >>=, &=, |= , ^=

Mantıksal Operatörler : ! , || , &&

Diğer Operatörler :

 

Aritmatik Operatörler Nelerdir?

   Aritmatik operatörler matamatiksel işlemlerde kullanılan operatörlerdir. Toplama, çıkarma, çarpma , bölme, modül alma, ...

   Şimdi bu operatörlere sıra ile göz atalım.

 

 

Aritmatik operatörlerin kullanımında dikkat edilecek hususlardan bir tanesi operatörün kullandığı operandlar ve değerin atandığı operand aynı türden olursa hassasiyetin korunacağı aksi taktirde sonucun doğru çıkmayabileceğidir. Bunu bize çocukken öğrettikleri şekilde anlatacak olursak elmalarla armutlar toplanmaz.

 

Toplama Operatörü +

   Bu operatör ile verilen iki veya daha fazla operand toplanabilir.Genel yazılışı aşağıdaki gibidir

değişken1] + [değişken2]

   Eğer bu iki değişkenin toplamı sonucunda oluşan değeri sonuç isimli bir değişkene atamak istersek eşitleme operatörünüde kullanarak bu işlemi aşağıdaki gibi yazabiliriz.

[sonuç] = [değişken1] + [değişken2]

   Sonuç'u tutacak olan değişken değişken1 ve değişken2 değişkenlerinin değerlerini tutabilecek büyüklükte olmalıdır. Bu konu ile ilgili örneğimizi aşağıda görebilirsiniz. Bu örneğin 32 bitlik bir platform için yazıldığına dikkat ediniz. Veri tiplerinin maksimum ve minumum değerlerini görmek için buraya basınız.

 

Örnek 1:

01 #include "iostream.h"

 

02

 

03 void main()

 

04 {

 

05    int sayi1 = 2000000000;

 

06    int sayi2 = 1500000000;

 

07    int sonuc = sayi1 + sayi2;

 

08    double sonuc2 = double(sayi1) + double(sayi2);

 

09

 

10    cout << sonuc2 << endl;

 

11    cout << sayi1 + sayi2 << endl;

 

12 }

 

Örnek 1 Ekran Çıktısı :

3.5e+009

-794967296

 

Örnek 1 İçin Açıklama :

   32 bitlik bir platformda int türünden en büyük sayı 2,147,483,647 olabileceğinden sayi1 ve sayi2 nin toplamları bu değeri geçtiğnden dolayı sonucu tutacağımız değişkenin fazladan 1 bite ihtiyacı vardır. Ancak int ile hafızada tutulan bu alana sonuc büyük geldiğinden sadece sonucun yeterli bitleri int'e aktarılabilmiştir. Bu da -794967296'ya denk gelmektedir. Böyle durumlarda yapmamız gereken değişkenleri daha geniş alanlı bir yapıya aktarıp sonucuda bu değeri tutabilecek bir değişkene aktarmaktır. sayi1, sayi2 ve sonuç16 bitlik verilerdir. Ancak 3500000000 17 bitle gösterilebilir. Sonuç ise 16 bitlik olduğundan bu değeri tutamaz. İşte bunun için sonuç2 32 bitlik double olarak tanımlanmış ve 08. satırda sayi1 ve sayi2 de 32 bitlik olarak toplanıp sonuç2'ye aktarilmiştir. Böylecene sonuç doğru olarak çıkabilmektedir

 

Çıkarma Operatörü -:    Bu operatör ile verilen iki operand birbirinden çıkarılabilir. Genel yazılışı aşağıdaki gibidir.

[değişken1] - [değişken2]

   Eğer bu iki değişkenin çıkarılması sonucunda oluşan değeri sonuç isimli bir değişkene atamak istersek eşitleme operatörünüde kullanarak bu işlemi aşağıdaki gibi yazabiliriz.

[sonuç] = [değişken1] - [değişken2]

 

Çarpma Operatörü *:    Bu operatör ile verilen operandlar birbiriyle çarpılabilir. Genel yazılışı aşağıdaki gibidir.

değişken1] * [değişken2]

   Eğer bu iki değişkenin çarpılması sonucunda oluşan değeri sonuç isimli bir değişkene atamak istersek eşitleme operatörünüde kullanarak bu işlemi aşağıdaki gibi yazabiliriz.

[sonuç] = [değişken1] * [değişken2]

 

Bölme Operatörü / :   Bu operatör ile verilen operandlar birbirine bölünebilir. Genel yazılışı aşağıdaki gibidir.

[değişken1] / [değişken2]

   Eğer bu iki değişkenin çarpılması sonucunda oluşan değeri sonuç isimli bir değişkene atamak istersek eşitleme operatörünüde kullanarak bu işlemi aşağıdaki gibi yazabiliriz

[sonuç] = [değişken1] / [değişken2]

   Bölme işleminin sonucundaki hassasiyet değişkenlerden en hassası ile orantılıdır. Yani 2 int değişkeninin sonucu int'tir. int / double 'ın sonucu double'dır vs...

 

Modül Alma Operatörü %

   Bu operatör ile birinci operandın modül ikinic operandı alınır. Genel yazılışı aşağıdaki gibidir.

[değişken1] % [değişken2]

   Sonuçun ta oluşan değeri sonuç isimli bir değişkene atamak istersek eşitleme operatörünüde kullanarak bu işlemi aşağıdaki gibi yazabiliriz

[sonuç] = [değişken1] % [değişken2]

 

0' a göre modül alma yada 0'a bölme programın çalışması sırasında hataya yol açar.

 

++ Operatörü

   operandın değerini bir arttırmak amacıyla kullanılır. İki şekilde kullanılabilir.

   Birincisinde operandın önüne yazılır.

++[değişken1]

   Bu durumda değişkenin değeri önce arttırılır. Daha sonra işlenir.

 

   İkinci türde ise operanddan sonra yazılır

değişken1]++

   Bu durumda değişken önce işlenir. Sonra değeri arttırılır.

 

-- Operatörü

   operandın değerini bir azaltmak amacıyla kullanılır. İki şekilde kullanılabilir.

   Birincisinde operandın önüne yazılır.

-[değişken1]

   Bu durumda değişkenin değeri önce azaltılır. Daha sonra işlenir.

 

   İkinci türde ise operanddan sonra yazılır

değişken1]--

   Bu durumda değişken önce işlenir. Sonra değeri azaltılır.

 

Örnek 2 :

01 #include "iostream.h"

 

02

 

03 void main()

 

04 {

 

05    int s1 = 20;

 

06    int s2 = 15;

 

07    cout << "s1 = " << s1 << endl;

 

08    cout << "s2 = " << s2 << endl;

 

09

 

10    cout << "++s1 * s2-- = " << ++s1 * s2-- << endl;

 

11

 

12    cout << "s1 = " << s1 << endl;

 

13    cout << "s2 = " << s2 << endl << endl;

 

14

 

15    cout << "s1-- " << s1-- << endl;

 

16    cout << "s1 = " << s1 << endl;   

 

17    cout << "++s1 " << ++s1 << endl;  

 

18    cout << "s1 = " << s1 << endl << endl;   

 

19   

 

20    cout << "5%3 = " << 5 % 3 << endl << endl;

 

21

 

22    cout << "8 - 3 * 4 + 5 / 7 = " << 8 - 3 * 4 + 5 / 7 << endl;

 

23    cout << "8.0 - 3.0 * 4.0 + 5 / 7.0 = " << 8.0 - 3.0 * 4.0 + 5 / 7.0 << endl;

 

24 }

 

Örnek 2 Ekran Çıktısı :

s1 = 20

s2 = 15

++s1 * s2-- = 315

s1 = 21

s2 = 14

 

s1-- 21

s1 = 20

++s1 21

s1 = 21

 

5%3 = 2

 

8 - 3 * 4 + 5 / 7 = -4

8.0 - 3.0 * 4.0 + 5 / 7.0 = -3.28571

 

Örnek 2 Açıklama:

   Dikkat edilecek olunursa 10. satırda 21 ile 15 çarpılmştır. Yani ++ s1'in önünde olduğundan dolayı s1 çarpma işleminden önce arttırılmıştır. -- s23'den sonra olduğundan dolayı s2 çarpma işleminden sonra azaltılmıştır.Bir başka deyişle s2 önce işlenmiş sonra azaltılmıştır.

   Bir diğer dikkat edilecek nokta ise 22 ve 23. satırlardadır. 22 satırdaki işlemde hassasiyet int seviyesinde olduğundan 5 / 7 0 olarak işlenmiştir. 23. satırda ise seviye noktalı sayılar seviyesinde olduğundan 0'dan farklı bir değer almıştır

 
 
  Bugün 137 ziyaretçi (212 klik) www.bilisim-egitim.tr.gg  
 
Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol