İki değeri eşitlik, büyüklük küçüklük bakımından karşılaştıran operatörlerdir ve aynen C’deki gibidir:
Operatör | Kullanımı | Anlamı |
---|---|---|
< | a<b | a b'den küçüktür. |
> | a>b | a b'den büyüktür. |
== | a==b | a b'ye eşittir. |
<== | a<=b | a b’den büyük veya b’ye eşittir. |
>= | a>=b | a b’den büyük veya b’ye eşittir. |
!= | a!=b | a b’ye eşit değildir. |
ÖRNEK:
var a:Int=5
var b:Int=5
var c:Int=2
var d:Int=9
print("a=b....\(a==b)");
print("a>=d....\(a>=d)");
print("a<=d....\(a<=d)");
print("c>b....\(c>b)");
print("c<d....\(c<d)");
Programın çıktısı ise aşağıdadır:
a=b....true
a>=d....false
a<=d....true
c>b....false
c<d....true
Görüldüğü gibi karşılaştırma sonucu doğru ise Bool tipinde true ve karşılaştırma sonucu yanlış ise Bool tipinde false sonucu elde edilecektir.
ARALIK OPERATÖRLERİ (RANGE OPERATORS)
Swiftte bir çok dilden farklı olarak iki adet aralık operatörü mevcuttur:
I. Kapalı Aralık Operatörü:
a…b şeklinde yazılır. a ve b de dahil olmak üzere a-b aralığındaki sayıları içerir.
II. Yarı Kapalı Aralık Operatörü:
a..b şeklinde yazılır. a’yı içine alıp b’yi dışarıda bırakan operatördür.
ÖRNEK:
KAPALI ARALIK OPERATÖRÜ
var s=0
for i in 1...10
{ s = s + i
}
print("TOPLAM=\(s)");
Bu örnekte i ,1,2,3,4,5,6,7,8,9,10 değerlerini alacak ve s bunların toplamına eşit olacaktır.
Programın çıktısı aşağıdadır:
TOPLAM=55
MANTIKSAL OPERATÖRLER (LOGICAL OPERATORS)
Mantıksal operatörler, aynen C dilinde olduğu gibidir. Bu operatörler 3 tanedir: NOT, AND, OR
Aşağıdaki tabloda bu operatörlerin Swift’teki sembolleri verilmiştir:
MANTIKSAL OPERATÖR | SWIFTTEKİ SEMBOLÜ | KULLANILIŞ BİÇİMİ |
---|---|---|
NOT |
! |
!a |
AND |
&& |
a && b |
OR |
|| |
a || b |
Şimdi bu operatörlerin işlevlerini kısaca hatırlatmak istiyoruz.
NOT OPERATÖRÜ
Bir ifadenin doğruluk değerini değiştirir; ifade true ise not bu ifadeyi false yapar, ifade false ise not ifade true olacaktır:
İfade | ! ifade |
true | false |
false | true |
ÖRNEK:
let a:Bool=true
let b:Bool=false
print("a=\(a)......!a=\(!a)");
print("b=\(b)......!b=\(!b)");
Programın çıktısı ise aşağıdadır:
a=true......!a=false
b=false......!b=true
VE(AND) OPERATÖRÜ
Ve (and) operatörünün işlevi aşağıdaki tabloda verilmiştir:
a | b | a&&b |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
ÖRNEK:
let a:Bool=true
let b:Bool=false
print("\(a)...AND...\(b)=\(a && b)");
print("\(a)...AND...\(!b)=\(a && !b)");
Programın Çıktısı:
true...AND...false=false
true...AND...true=true
VEYA(OR) OPERATÖRÜ
Veya (aor) operatörünün işlevi aşağıdaki tabloda verilmiştir:
a | b | a || b |
---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
ÖRNEK PROGRAM:
let a:Bool=true
let b:Bool=false
print("\(a)...OR...\(b)=\(a || b)");
print("\(a)...OR...\(!b)=\(a || !b)");
Programın Çıktısı:
true...OR...false=true
true...OR...true=true
STRINGLER VE KARAKTERLER (STRINGS AND CHARACTERS)
Stringler, hemen hemen bütün bilgisayar dillerinde mevcut olan ve karakter dizilerinden oluşan veri yapılarıdır.
Aşağıda bir string sabiti ve string türünde bir değişken tanımlanmaktadır:
let ad="christine jaquet"
var ad1="alara soylu"
var d:String
d = ad + " ve " + ad1
print(ad)
print(ad1)
print(d)
Programın çıktısı ise aşağıdadır:
christine jaquet
alara soylu
christine jaquet ve alara soylu
Yukarıdaki örnekte, + sembolünün string türü bilgiler için ekleme işlemini gerçekleştirdiğine bir kez daha dikkatinizi çekelim.
Swift’in String tipi, Foundation çerçeve paketinin NSString sınıfı ile ilişkilidir. Eğer Cocoa ya da Cocoa Touch ile Foundation paketi ile çalışılıyorsa bu bölümde anlatılan string özellikleri ile birlikte NSString API özellikleri de kullanılabilir.
KAÇIŞ KARAKTERLERİ (ESCAPE CHARACTERS)
Görüntülenebilen sembollere sahip olmayan bazı karakterlerin program içinde temsil edilebilmesi için bir kaçış dizisi (escape sequence) kullanılır. Bu dizi, bir ters bölme (\) sembolü ile başlar. Örneğin, \n, yeni bir satırın başına geçmek için kullanılır.
Aşağıdaki tabloda Swift’te stringlerde kullanılabilecek kaçış karakterlerinin bir listesi verilmiştir:
Kaçış Dizisi | Anlamı |
---|---|
\0 | Sıfır(null) karakteri |
\\ | \ karakteri |
\t | Kürsörü yatay eksende belirli karakter aralıkları ile hareket ettirir. |
\n | Kürsörü yeni bir satırın başına geçirir(n-new line-yeni satır) |
\r | Kürsörü bulunduğu satırın başına getirir |
\” | “ sembolü |
\’ | ‘ sembolü |
ÖRNEK:
let y = "\"Bir ben vardır bende benden içerü\" - Yunus Emre"
print(y)
Kodun çıktısı ise aşağıdaki gibi olacaktır:
"Bir ben vardır bende benden içerü" - Yunus Emre
Program ended with exit code: 0
BOŞ STRING ATAMA
Başlangıç olarak içinde hiçbir karakter olmayan boş bir string oluşturmak da mümkündür. Aşağıdaki örnek kod bu konuda fikir veriyor:
var u=""
var v=String()
var sph:String
sph = v + "FENERBAHÇE"
sph += " GALATASARAY"
print(u)
print(v)
print(sph)
Burada u ve v önce boş string olarak tanımlanıyor. O nedenle ilk iki print komutu hiçbir şey yazmayacaktır. Programın çıktısı aşağıdadır:
FENERBAHÇE GALATASARAY
STRINGIN BOŞ OLUP OLMADIĞININ KONTROLÜ
isEmpty metodu ile stringin boş olup olmadığını kontrol edebilirsiniz. xString boş ise bu metot true aksi takdirde ise false değerini verecektir.
ÖRNEK:
var u=""
var v=String()
var sph:String
sph = v + "FENERBAHÇE"
sph += " GALATASARAY"
print(u)
print(v)
print(sph)
if u.isEmpty { print("u stringi boştur");}
if v.isEmpty { v += "DOLU" ;print("v stringinin içeriği....\(v)") }
Programın çıktısı ise aşağıdadır:
FENERBAHÇE GALATASARAY
u stringi boştur
v stringinin içeriği....DOLU
STRINGLERDE DEĞİŞİKLİK YAPMA
Değişken ve sabit farkından yola çıkarak stringlerin değişebilir (mutable) ya da değişemez (unmutable) özellikte olması sağlanabilir. Sabit olarak atanan stringler (let komutu ile)değiştirilemez özellikte olurken, değişken olarak atanan stringler ise (var komutu ile atanan) değiştirilebilir özellikte olacaktır.
DEĞER TİPİ (VALUE TYPE)
String’ler, Swift dilinde değer tipinde olan verilerdendir. Bunun anlamı şudur: bir string başka bir string’e atanırsa ya da bir fonksiyona parametre olarak geçirilirse stringin yeni bir kopyası oluşturulur.
Cocoa’daki NSString sınıfından üretilen stringlerin davranışı ise farklıdır. Bu tür bir string bir başka değişkene atanır ya da fonksiyona geçirilirse bir kopyası yerine sadece bir referans (gösterge, pointer) gönderilir dolayısı ile yeni bir kopya oluşturulmaz.
Yapılar ve sayma değişkenleri de (structures and enumerations) değer tipindedirler.
KARAKTER (CHARACTER) TÜRÜ VERİLERLE İŞLEMLER
Stringi bir karakter dizisi ya da bir karakter koleksiyonu olarak tanımlamıştır. Bir string içindeki tek tek karakterlere for-in çevcrim yapısı ile erişilebilir. Her karakter değeri tek bir Unicode karakteri ile temsil edilir.
Karakter türü tek bir karakterlik sabit ya da değişkenler ise character sözcüğü ile ve
“ ” sembolleri yardımı ile oluşturulabilir. Aşağıdaki Swift kodu bu konuda oldukça faydalı olacaktır:
var s:String="fransa"
var c:Character="a"
var say:Int=0
print(s)
for i in s.characters{
print(i)
if i==c { say += 1 }
}
print("\(s)...İÇİNDE \(say) ..TANE \(c)..HARFİ VARDIR")
Programın çıktısı ise aşağıdadır:
fransa
f
r
a
n
s
a
fransa...İÇİNDE 2 ..TANE a..HARFİ VARDIR
Program ended with exit code: 0
STRING VE KARAKTERLERİN BİR BİRİNE EKLENMESİ
+ ve += sembollerini kullanarak string ve karakterleri birbirine ekleyebilirsiniz. Aşağıdaki örnek bu konuda bir fikir veriyor:
var s:String="Fransa"
var c:String=" Cumhuriyeti"
var (b,i,r)=("b","i","r")
var d:String=" örnek "
var e:String=" medeniyet ülkesidir"
var a:String
a = s + c + d + b + i + r + e
print(a)
Programın çıktısı ise aşağıdadır:
Fransa Cumhuriyeti örnek bir medeniyet ülkesidir
STRING İNTERPOLASYONU (STRING INTERPOLATION)
Bir string içine şu ana kadar çeşitli programlarda da kullandığımız gibi, \() sembolleri yardımı ile herhangi bir türdeki veriyi kullanarak çok faydalı içerikler oluşturabilecek stringler üretebiliriz. Aşağıda bu konu ile ilişkili bir kod ve çıktısı verilmiştir:
var dolar:Double=2.11
for i in 2...7
{print("\(i)...DOLAR = \(dolar * Double(i))..TÜRK LİRASI");
}
Programın çıktısı ise aşağıdadır:
2...DOLAR = 4.22..TÜRK LİRASI
3...DOLAR = 6.33..TÜRK LİRASI
4...DOLAR = 8.44..TÜRK LİRASI
5...DOLAR = 10.55..TÜRK LİRASI
6...DOLAR = 12.66..TÜRK LİRASI
7...DOLAR = 14.77..TÜRK LİRASI
İKİ STRINGİN EŞİTLİĞİ
Swift’te iki string sadece bütün karakterleri tıpatıp aynı ise eşit kabul edilir.
ÖRNEK:
var a:String="TÜRKİYE"
var b:String="türkiye"
var c:String=" TÜRKİYE"
var d:String="TÜRKİYe"
var e:String="TÜRKİYE"
if a==b {print("\(a) \(b)...YE EŞİTTİR");}
else {print("\(a) \(b)...YE EŞİT DEĞİLDİR");}
if a==c {print("\(a) \(c)...YE EŞİTTİR");}
else {print("\(a) \(c)...YE EŞİT DEĞİLDİR(c de boşluk var");}
if a==e {print("\(a) \(e)...YE EŞİTTİR");}
else {print("\(a) \(e)...YE EŞİT DEĞİLDİR");}
Programın çıktısı ise aşağıdadır:
TÜRKİYE türkiye...YE EŞİT DEĞİLDİR
TÜRKİYE TÜRKİYE...YE EŞİT DEĞİLDİR(c de boşluk var
TÜRKİYE TÜRKİYE...YE EŞİTTİR
hasPrefix VE hasSuffix METOTLARI
hasPrefix metodu ile stringin başlangıcından itibaren, hasSuffix metodu ile de stringin sonundan itibaren string parçaları ile uyuşum araştırılır:
ÖRNEK:
var u=["e Ali Can ","e Okan Sar","k İsmet Ağırlı","k Meriç Can","e Nurcan Son"]
var saybay=0
var saybayan=0
for i in u{
if i.hasPrefix("e") {saybay += 1;}
if i.hasPrefix("k") {saybayan += 1;}
}
print("BAYAN SAYISI....\(saybayan)")
print("BAY SAYISI....\(saybay)")
Programın çıktısı ise aşağıdadır:
BAYAN SAYISI....2
BAY SAYISI....3
Kolayca anlaşıldığı gibi, u dizisindeki isimler e-erkek k-kadın olarak kodlanmış ve u dizisinde e ile başlayan bir isim bulunursa bay sayısı, k ile başlayan bir isim bulunursa da bayan sayısı 1 arttırılmaktadır.
Aşağıdaki program ise hasSuffix metodu ile ilişkilidir:
let uu=["Ali Canoğlu","Okan Saroğlu","İsmet Ağırlı","Meriç Canoğlu"," Nurcan Son"]
var sayoglu:Int = 0
for kk in uu
{
if kk.hasSuffix("oğlu"){ sayoglu += 1 ;}
print(sayoglu);
}
print("OĞLU İLE BİTEN İSİM SAYISI...\(sayoglu)");
Sonuçta “OĞLU İLE BİTEN İSİM SAYISI…3”
çıktısı elde edilecektir.
BÜYÜK HARF (UPPERCASE) VE KÜÇÜK HARF (LOWERCASE) STRINGLER
uppercaseString ve lowercaseString özellikleri yardımı ile stringin her iki biçimi ile de çalışabilirsiniz.
uppercaseString özelliği verilen bir stringi büyük harfe çevirecektir. lowercaseString özelliği ise verilen bir stringi küçük harfe dönüştürecektir.
ÖRNEK:
var x="istanbul"
var y="ANKARA"
var z="IZmir"
var u="KAStamOnU"
print("\(x)......\(x.uppercased())");
print("\(y)......\(y.lowercased())");
print("\(z)......\(z.uppercased())");
print("\(u)......\(u.lowercased())");
Programın çıktısı ise aşağıdaki gibi olacaktır:
istanbul......ISTANBUL
ANKARA......ankara
IZmir......IZMIR
KAStamOnU......kastamonu
UNICODE
Unicode, metin (text) türü ya da karakter türü veriyi bilgisayarda temsil etmek ve saklamak için kullanılan modern bir kodlama sistemidir.
Swift’teki String ve Character türleri tamamen Unicode desteklidir. Aşağıda Unicode sistemi konusunda daha ayrıntılı bilgi verilecektir.
UNICODE KODLAMA SİSTEMİ
Unicode kodlama sisteminde her karakter, tek veya daha fazla Unicode skaleri (scalar) tarafından temsil edilir.
Bir Unicode skaleri,21 bit uzunluğunda bir sayı ya da isimdir; örneğin, U+0061, küçük a harfidir. U+0062 ise küçük b harfidir.
Aşağıdaki program Unicode’ların bir kısmını listelemektedir:
ÖRNEK:
var s:String="£${æab>≈ç"
for i in s.unicodeScalars
{print(" \(i)")
}
for i in s.characters
{print(i)
}
for kod in s.utf16
{
print(kod)
}
Programın çıktısı ise aşağıdadır:
£
$
{
æ
a
b
>
≈
ç
£
$
{
æ
a
b
>
≈
ç
163
36
123
230
97
98
62
8776
231
Program ended with exit code: 0
STRINGLERİN UNICODE İLE TEMSİLİ
Swift’te,stringlerin Unicode türünde temsil edilebilmesi için çeşitli yollar mevcuttur. Yukardaki örnek kodda da gördüğünüz gibi, for-in döngü yapısı ile bir stringin tek tek karakterlerine ve bunların unicode’larına erişebilirsiniz. Yukardaki örnekte,
var s:String="£${æab>≈ç"
şeklinde verilen s stringinin tek tek karakterlerine ve bunların 16 bitlik unicode’larına erişilmiştir.
Utf8 özelliği ile stringi temsil eden UTF-8 kod birimlerine erişebileceğiniz gibi, utf16 özelliği ile de UTF-16 kod birimlerine erişebilirsiniz.