Standard Operators in Swift
Swift’te 4 adet aritmetiksel operator mevcuttur.
Toplama: (+)
Çıkarma (-)
Çarpma (*)
Bölme (/)
var totalMinute = hour * 60 + minute + second / 60
Yukardaki hesaplamada toplam dakikayı bulabilmek için saat 60a çarpılıp, saniye 60a bölünüp dakikayla toplatıldı. Değişkenler arasında aritmetik operatörler bulunur. (arithmetic operators). Bunlar muhakkak daha önce matematik derslerinde görülmüştür (toplama(+), çıkarma(-), çarpma (*) gibi) ve beklenildiği gibi davlanırlar. Örneğin iki değişkenin arasına + koyarsak beklenildiği gibi toplama işlemini gerçekleştirir. Bunların yanında, işlemlerin sonucunu değişkene atayan atama operetörü (assignment operator)(=) bulunmaktadır. Örneğin, yukarıdaki işlemin sonucu = işaretiyle totalMinute değişkenine atandı.
Yukarıdaki örneğe dönersek, saatin 5, dakikanın 70 saniyeninse 566 olduğunu varsayalım ve hesaplayalım.
totalMinute = 5 * 60 + 70 + 566 / 60
totalMinute = 300 + 70 + 9.4
totalMinute = 379.4
Burada görüldüğü gibi hesaplama yapılırken literal değerlere ihtiyaç duyulur. Mesela saatin literali olan 5 işleme sokularak, sonuç 379.4 bulundu. Bu hour * 60 + minute + second / 60’nun değeridir. (expressions)
Operatörlerin Öncelik Sırası
Swiftteki tüm operatörler standart matematiksel operatör olduğundan, standart matematiksel işlem sırası kullanılarak uygulanırlar. Ancak standart matematik sınıfınızdan olmayan operatörleri kullanmaya başladığımızda, operasyonların sırası beklediğinizden farklı olabilir. İşlem sırası;
1-Parantez içi ifadeler
2-üstel ifadeler
3-çarpma/bölme
4-toplama/çıkarma
Operand: Bir operatör tarafından etkilenen bir hedef veya değer.
8 - 5 işlemindeki 8 ve 5
Precedence: İşlem önceliği için oluşturulan kurallar bütünü
12 * 4 / 3 işleminde ilk 12 * 4’ün hesaplanması
Precedence Group: Aynı önceliği paylaşan operatörler
Associativity: Aynı öncelikli operatörlerin uygulandığı yönü belirleyen bir özellik; genellikle bireysel operatörler, solda hesaplama(left-associative) veya sağdan(right-associative) hesaplama olarak belirtilir.
Örneğin;
->left-associative
5 + 4 + 2
((5 + 4) + 2)
(9 + 2)
11
->right-associative (^örnek için kullanılmıştır,build olmaz)
5 ^ 2 ^ 2
(5 ^ (2 ^ 2))
(5 ^ 4)
625
Aritmetiksel operatörlerle ilgili bazı özellikler;
Bir sayı 0’a bölündüğünde build olmaz.
Var five = 5
Var zero = 0
Var result = five / zero
//Division by zero
Aşağıdaki ifadeler birbirlerinin aynısıdır.
totalPoint = totalPoint + currentPoint
totalPoint += currentPoint
Swift’te, aritmetik işlemler sonucunda default olarak aşma (overflow) değerlerine müsaade edilmez. Overflow durumuna izin verilmesi isteniyorsa &+,&* vb overflow sembolleri kullanılmalıdır. + sembolü matematiksel toplama dışında iki stringin birbirine eklenmesi işlemini de gerçekleştirir
var u:String = "güzel"
var v:String = "Istanbul"
var z:String
z = u + v
Kalan (REMAINDER) Operatörü
C ve Java’da olduğu gibi Swift’te de % sembolü iki tamsayının bölümünden kalan değeri hesaplar:
7 % 4 = 3 olacaktır.
var a:Int = 7
var b:Int = 3
var c:Int = 2
var d:Int = 7
var e:Int = 8
print("\(a)%\(b)=\(a%b)");
print("\(a)%\(c)=\(a%c)");
print("\(a)%\(d)=\(a%d)");
print("\(a)%\(e)=\(a%e)");
Double tipler için kalan sayı bulma Fonksiyonu
Double değerşer için formTruncatingRemainder fonksiyonu kullanılır.
mutating func formTruncatingRemainder(dividingBy other: Self)
import Foundation
var x = 8.625
print(x / 0.75)
// Prints "11.5"
let q = (x / 0.75).rounded(.towardZero)
// q == 11.0
x.formTruncatingRemainder(dividingBy: 0.75)
// x == 0.375
let x1 = 0.75 * q + x
// x1 == 8.625
Arttırma ve Azaltma Operatörü
Swift 3den sonra alışılmışın aksine deger++ kullanımı yerine değer += 1 kullanılır.
var counter = 0
counter += 1 // sayıyı 1 ekler
counter -= 1 // sayıdan 1 çıkarır
Karakök Hesaplama
import Foundation
var square = 9.4
var floored = floor(square)
var root = sqrt(floored)
print("Starting with \(square), we rounded down to \(floored), then took the square root to end up with \(root)")
Üs Alma
Bir sayının üssünü hesaplamak için Swiftte ayrı bir sembol yoktur (C’de de böyledir). Üs hesaplamak için Foundation sınıfı içinde tanımlanmış pow fonksiyonu kullanılır. Yazılış biçimi, pow(a,b) şeklindedir. Burada a baz, b ise üstür.
import Foundation
var x = 4
print("SAYI...\(x).....2 ÜZERİ.\(x)= \(pow(2,x))")
İrrasyonel Sayıların Hesaplanması
irrasyonel ifadeler için gene Swift’te özel fonksiyonlar yoktur. Bu tip fonksiyonlar da pow fonksiyonu yardımı ile hesaplanır.
x (1/3) şeklinde ifade edilerek pow(x,1.0/3.0) gibi hesaplanır.
import Foundation
var x = 4.0
print("SAYI...\(x).....KÜPKÖKÜ \(pow(x,1.0/3.0))")
Bileşik Atama Komutları (Compound Assignment Commands)
C’dekine tamamen benzer şekilde, Swift’te de bileşik atama operatörleri mevcuttur. Örneğin, toplama için += sembolü kullanılır.
a += b ifadesiyle a = a + b ifadesi birbirinin aynısıdır.
var a:Double=7.5
var b:Double=3.0
a += b
b += a
print("a= \(a)")
print("b= \(b)")
Tekli Eksi (Unary Minus) Sembolü
Önüne geldiği değerin negatifini oluşturur. – ‘den sonar boşluk olmamalıdır
var a:Double = 2
var b:Double = 3
var c:Double
var d:Double
c = -b
d = -(-a)
print("a= \(a)")
print("b=\(b)")
print("c=\(c)")
print("d=\(d)")
Tekli Artı (Unary Plus) Sembolü
Tamamen tekli – sembolü gibi kullanılır. Önüne geldiği değerin işaretini değiştirmez.
Standard Operators in Swift
Aşağıdaki tabloda standart operatörleri görebilirsiniz. Aşağıda listelenen öncelik gruplarının en yüksekten en düşüğe doğru sırasıyla; Multiplication, Addition, Assignment