Mobil Programlama

iOS

DERS PROGRAMI
iOS 101 Ders Programı

Karşılaştırma Operatörleri (Comparison Operators)

Lisans: Creative Commons 11.12.2020 tarihinde güncellendi
Bakabileceğiniz Etiketler: Eğitmen: Geleceği Yazanlar Ekibi

İ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.