C++ Operatörler (Operators)
Konular Operatörler o Aritmetiksel (Matematiksel) Operatörler o Karşılaştırma Operatörleri o Mantıksal Operatörler o Atama Operatörleri o Bit Düzeyinde Operatörler o Özel Amaçlı Operatörler Eğitim TV - egitimtv.biz - facebook.com/egitimtv 2
Operatörler Eğitim TV - egitimtv.biz - facebook.com/egitimtv 3
Operatörler Operatörler, belirli aritmetiksel, mantıksal, karşılaştırma gibi işlemleri derleyiciye nasıl yapması gerektiğini söyleyen sembollerdir. C++ zengin bir operatör desteğine sahiptir. Bunlar; 1. Aritmetiksel (Matematiksel) Operatörler 2. Karşılaştırma Operatörleri 3. Mantıksal Operatörler 4. Bit Düzeyinde Operatörler 5. Atama Operatörleri 6. Özel Amaçlı Operatörler Eğitim TV - egitimtv.biz - facebook.com/egitimtv 4
Aritmetiksel Operatörler Toplama, çıkarma, çarpma ve bölme gibi işlemleri yapmaya yönelik işleçlere Aritmetik (Matematiksel) Operatörler denir. İşlevi Operatör Toplama (Add) + Çıkarma (Subtract) Çarpma (Multiply) * Bölme (Divide) / Bölmeden Kalan, Mod (Modulus) % Artırma (Increment) ++ Azaltma (Decrement) Eğitim TV - egitimtv.biz - facebook.com/egitimtv 5
Aritmetiksel Operatörler NOT1: Bölme işlemlerinde paydanın (bölenin), sıfır (0) değerine sahip olmamasına dikkat etmek gerekir. Çünkü Sayı / 0 değeri tanımsızdır. Bu durum derleyici tarafından hata olarak algılanır ve programın çalışması sona erer. Ayrıca aynı durum bölmeden kalan (modülüs) operatörü içinde söz konusudur. NOT2: Bölme (/) operatöründe integer (tamsayı) veri tipine sahip iki sayı bölündüğünde sonucun kesirli kısmı üretilmez. Ancak float veya double veri tipine sahip iki sayı bölünürse sonuç tam olarak üretilir (virgüllü kısımda üretilir). NOT3: Bölmeden kalan (modülüs) operatöründe, float ve double kayan noktalı veri tipleri kullanılamaz. Çünkü ondalıklı sayıların bölümünden kalan olmaz. Eğitim TV - egitimtv.biz - facebook.com/egitimtv 6
Örnek #1 Klavyeden girilen iki sayıyla dört işlemi yaptıran ve ayrıca mod alma işlemi yaptıran programı yazınız. #include <iostream> #include <cstdlib> using namespace std; int main(){ int x, y; cout << "1. sayiyi giriniz: "; cin >> x; cout << "2. sayiyi giriniz: "; cin >> y; Eğitim TV - egitimtv.biz - facebook.com/egitimtv 7
Örnek #1 } system("cls"); cout << "Toplam:" << x + y << endl; cout << "Fark:" << x - y << endl; cout << "Carpim:" << x * y << endl; cout << "Bolum:" << x / y << endl; cout << "Kalan:" << x % y << endl; system("pause"); return 0; Buradaki işlemlerin hepsinin sonucu integer (tamsayı) sonuç döndürür. Bunun nedeni tanımlanmış olan değişkenlerin tümünün integer yani tamsayı olarak belirlenmiş olmasıdır. Bölme işleminde dahi sonuç integer değer döndürür. Eğitim TV - egitimtv.biz - facebook.com/egitimtv 8
Örnek #2 Klavyeden girilen üç sayının aritmetik ortalamasını ekrana yazdıran programı yazınız. #include <iostream> using namespace std; int main(){ float a, b, c, ort; cout << "3 sayi giriniz: " ; cin >> a >> b >> c; ort = (a + b + c) / 3; cout << "Ortalama: " << ort << endl; return 0; } Eğitim TV - egitimtv.biz - facebook.com/egitimtv 9
Örnek #3 Başlangıç değerleri verilmiş olan x, y ve z değişkenlerinin birbirlerine bölümünden kalanları mod1, mod2 ve mod3 değişkenlerine aktarıp, sonuçlarını ekrana yazdıran programı yazınız. o Başlangıç değerleri: x = 8, y = 4, z = 3 o mod1 = x % y o mod2 = x % z o mod3 = y % z // x in y ye bölümünden kalan // x in z ye bölümünden kalan // y nin z ye bölümünden kalan Hatırlatma: mod alma işleminde float veya double tipi kayan noktalı sayı değişkenler kullanılamaz. Eğitim TV - egitimtv.biz - facebook.com/egitimtv 10
Örnek #3 #include <iostream> #include <cstdlib> using namespace std; int main(){ int x = 8, y = 4, z = 3; int mod1 = x % y; int mod2 = x % z; int mod3 = y % z; cin >> x; cout << mod1 << endl << mod2 << endl << mod3 << endl; system("pause"); return 0; } Eğitim TV - egitimtv.biz - facebook.com/egitimtv 11
Örnek #4 Bölme işleminin sağlamasını yapan programı yazınız. #include <iostream> #include <cstdlib> using namespace std; int main(){ int bolunen, bolen, bolum, kalan; cout << "Bolunen sayiyi giriniz: "; cin >> bolunen; cout << "Bolen sayiyi giriniz: "; cin >> bolen; system("cls"); Eğitim TV - egitimtv.biz - facebook.com/egitimtv 12
Örnek #4 } bolum = bolunen / bolen; kalan = bolunen % bolen; cout << "Bolunen: " << bolunen << endl; cout << "Bolen: " << bolen << endl; cout << "Bolum: " << bolum << endl; cout << "Kalan: " << kalan << endl; cout << endl << "Bolunen (Saglama) = (Bolen x Bolum) + Kalan = " << bolen * bolum + kalan << endl; return 0; Eğitim TV - egitimtv.biz - facebook.com/egitimtv 13
Aritmetiksel Operatörler Uinary (Artırma ve Azaltma) Operatörleri: C++ dilinde diğer dillerde bulunmayan UINARY operatörler tanımlanmıştır. İki tane UINARY operatör mevcuttur. Bunlar ++, -- dir. ++ operatörü değişkenin tuttuğu sayıya bir sayı ekler. --operatörü değişkenin tuttuğu sayıdan bir sayı çıkarır. NOT: Aşağıdaki ifadelerin karşısındaki değerler denktir. o X++ X = X + 1; o X-- X = X - 1; o ++X X = X + 1; o --X X = X - 1; Eğitim TV - egitimtv.biz - facebook.com/egitimtv 14
Örnek #5 x++, ++x, y--, --y operatörlerinin adım adım kullanımını gösteriniz. #include <iostream> using namespace std; int main(){ int x = 8, y = 15; cout << x değeri: << x << endl; // 8 cout << y değeri: << y << endl; // 15 cout << x++ değeri: << x++ << endl; // 8 cout << y-- değeri: << y-- << endl; // 15 cout << x değeri: << x << endl; // 9 cout << y değeri: << y << endl; // 14 cout << ++x değeri: << ++x << endl; // 10 cout << y değeri: << --y endl; // 13 cout << x değeri: << x << endl; // 10 cout << y değeri: << y << endl; // 13 return0; } Eğitim TV - egitimtv.biz - facebook.com/egitimtv 15
Örnek #6 Klavyeden girilen iki sayının birer eksiğini çarpan programı yazınız. #include <iostream> using namespace std; int main(){ int x, y; cout << "1. sayiyi giriniz: "; cin >> x; cout << "2. sayiyi giriniz: "; cin >> y; --x; --y; cout << endl << "2 sayinin carpimi: " << x * y << endl; return 0; } Eğitim TV - egitimtv.biz - facebook.com/egitimtv 16
Örnek #7 Başlangıç değerleri verilen iki sayıdan, x i bir arttırıp y yi bir azaltarak çarpan programı yazınız. #include <iostream> using namespace std; main() { int x = 4, y = 8; cout << "x = " << x << endl; cout << "y = " << y << endl; cout <<"++x * --y = " << ++x * --y ; cout <<"x++ * y-- = " << x++ * y-- ; return 0; } Eğitim TV - egitimtv.biz - facebook.com/egitimtv 17
Örnek #8 Operatörlerin değişkenlere atanması örneği. #include <iostream> using namespace std; int main(){ int a, b, c, d = 10; a = ++d; b = d++; c = d; cout << "a degeri: " << a << endl; cout << "b degeri: " << b << endl; cout << "c degeri: " << c << endl; cout << "d degeri: " << d << endl; return 0; } Eğitim TV - egitimtv.biz - facebook.com/egitimtv 18
Aritmetiksel Operatörler Aritmetik işlemlerde öncelik sırası vardır. Bu sıralama şöyledir: (), ++, --, *, /, %, +, -, <, >, >=, >=, ==,!=, &&,, = NOT: Aynı öncelik sırasına sahip operatörlerde işlem soldan sağa doğru yapılır. ++ ve --, *, / ve %, + ve aynı öncelik sırasına sahiptir. Örneğin; 5 + 2 * 8 / 2 % 3 - (6 * 9-8) işleminin sonucu kaçtır? o İlk olarak parantez içi yapılır; "5 + 2 * 8 / 2 % 3 - (6 * 9-8)" o Daha sonra çarpma işlemi yapılır; "5 + 2 * 8 / 2 % 3-46" o Ardından bölme işlemi yapılır; "5 + 16 / 2 % 3-46" o Şimdi de mod alma işlemi yapılır; "5 + 8 % 3-46" o Son olarak önce toplama işlemi yapılır; "5 + 2-46" o En son olarak çıkarma işlemi yapılır; "7-46" // Sonuç: -39 Eğitim TV - egitimtv.biz - facebook.com/egitimtv 19
Örnek #9 Klavyeden girilen vize notunun %40 ını ve final notunun %60 ını alarak, çıkan sonucu ort isimli değişkene aktarıp ekranda yazdıran programı yazınız. #include <iostream> using namespace std; int main(){ int v, f; float ort; cout << "Vize Notunu Giriniz: "; cin >> v; cout << "Final Notunu Giriniz: "; cin >> f; ort = (v * 40) / 100 + (f * 60) / 100; cout << endl << "Ortalama: " << ort << endl; return 0; } Eğitim TV - egitimtv.biz - facebook.com/egitimtv 20
Örnek #10 Klavyeden girilen inch değerini, cm ye çeviren programı yazınız. #include <iostream> using namespace std; int main(){ float cm, inch; cout << "inch degerini giriniz: "; cin >> inch; cm = inch * 2.54; cout << inch << " inch = " << cm << " cm" << endl; return 0; } Eğitim TV - egitimtv.biz - facebook.com/egitimtv 21
Örnek #11 Klavyeden girilen vize notuna göre finalden en az kaç almanız gerektiğini söyleyen programı yazınız. #include <iostream> #include <cstdlib> using namespace std; int main(){ float v, f; cout << "Vize Notunuzu Giriniz: " ; cin >> v; system("cls"); f = ((60 - (v * 0.4)) / 0.6); cout << "Vize Notunuz: " << v << endl; cout << "Finalden En Az Almaniz Gereken Not: " << f << endl; system("pause"); return 0; } Eğitim TV - egitimtv.biz - facebook.com/egitimtv 22
Örnek #12 Klavyeden girilen KDV siz tutara göre KDV li tutarı hesaplayan programı yazınız. #include <iostream> #include <cstdlib> using namespace std; int main(){ float kdvli, kdvsiz, kdv_oran; cout << "KDV'siz fiyati giriniz: "; cin >> kdvsiz; cout << "KDV oranini giriniz (1, 8 veya 18): "; cin >> kdv_oran; system("cls"); kdvli = kdvsiz + (kdvsiz * kdv_oran / 100); cout << "KDV'siz Tutar: " << kdvsiz << " TL" << endl; cout << "KDV'li Tutar: " << kdvli << " TL" << endl; system("pause"); return 0; } Eğitim TV - egitimtv.biz - facebook.com/egitimtv 23
Karşılaştırma Operatörleri İki değer arasında karşılaştırma yapmak için kullanılır. Genellikle karar yapıları ile birlikte kullanılır. Bir sonraki derste tüm detaylarıyla anlatılacaktır. İşlevi Operatör Küçüktür < Büyüktür > Küçük Eşittir <= Büyük Eşittir >= Eşittir == Eşit Değildir!= Eğitim TV - egitimtv.biz - facebook.com/egitimtv 24
Örnek #13 Aşağıdaki mantıksal ifadelerin doğruluğunu kontrol edelim. #include <iostream> using namespace std; int main(){ bool a = (6<3), b = (5>8), c = (5<=5), d = (8>=11), e = (1==1), f = (0!=0); cout << "a degeri: " << a << endl; cout << "b degeri: " << b << endl; cout << "c degeri: " << c << endl; cout << "d degeri: " << d << endl; cout << "e degeri: " << e << endl; cout << "f degeri: " << f << endl; return 0; } Eğitim TV - egitimtv.biz - facebook.com/egitimtv 25
Mantıksal Operatörler Genellikle karar yapıları ile birlikte kullanılırlar. Bir sonraki derste tüm detaylarıyla anlatılacaktır. İşlevi Operatör Ve (Tüm koşullar doğruysa) && Veya (Koşullardan biri doğruysa) Değil (Koşul doğru değilse)! Eğitim TV - egitimtv.biz - facebook.com/egitimtv 26
Örnek #14 Klavyeden girilen iki sayıdan ilkinin 20 den büyük ve ikincisinin de 100 den büyük olmasını kontrol eden programı yazınız. #include <iostream> using namespace std; int main(){ int x, y; cout << "1. sayiyi giriniz: "; cin >> x; cout << "2. sayiyi giriniz: "; cin >> y; bool z = (x > 20) && (y > 100); cout << "z degeri: " << z << endl; return 0; } Eğitim TV - egitimtv.biz - facebook.com/egitimtv 27
Örnek #14 Eğitim TV - egitimtv.biz - facebook.com/egitimtv 28
Bileşik Atama Operatörleri Atama operatörleri aşağıdaki gibidir: o = // Atama Operatörü o + = // Topla Ata o = // Çıkar Ata o *= // Çarp Ata o /= // Böl Ata o %= // Mod Al Ata o <<= o >>= o &= o!= o ^= Eğitim TV - egitimtv.biz - facebook.com/egitimtv 29
Atama Operatörleri Başlangıç değerleri verilen a ve b değişkenlerinin ilişkisi b nin değerine a eklenerek elde edilecektir. Programı yazınız. #include <iostream> using namespace std; int main(){ int a = 10, b = 15; b += a; // b = b + a; ile aynı işi yapar. cout << "Sonuc: " << b << endl; return 0; } Eğitim TV - egitimtv.biz - facebook.com/egitimtv 30
Atama Operatörleri Eğitim TV - egitimtv.biz - facebook.com/egitimtv 31
Atama Operatörleri Eğitim TV - egitimtv.biz - facebook.com/egitimtv 32
Özel Amaçlı Operatörler << Çıkış // cout ile kullanılır. >> Giriş // cin ile kullanılır.? : Ternary // Bir sonraki dersteki if yapılarında kullanılır. Eğitim TV - egitimtv.biz - facebook.com/egitimtv 33
Eğitim TV Web www.egitimtv.biz Facebook www.facebook.com/egitimtv Twitter www.twitter.com/egitim_tv Eğitim TV - egitimtv.biz - facebook.com/egitimtv 34