-
iOS(Swift) Eğitimlerine Başlarken
-
iOS(Swift) Eğitimlerine Başlarken Giriş
-
Bir Swift Programının Oluşturulması ve Çalıştırılması
-
Swift Diline Hızlı Bir Giriş
-
Diziler (Arrays) ve Sözlükler (Dictionaries)
-
Kontrol Komutları (Control Statements)
-
Swift'te Fonksiyonlar ve Kontrol Transfer Komutları (Control Transfer Statements)
-
Sınıflar(Classes) ve Nesneler(Objects) ve Yapılar(Structures)
-
Sayma Tipi (Enumeration), Protokoller (Protokols) ve Delege Etme (Delegation)
-
iOS(Swift) Eğitimlerine Başlarken Giriş
-
Swift Dilinin Temel Özellikleri
-
Bit Düzeyinde İşlem Gören Operatörler
-
Kontrol Komutları (Control Statements)
-
Swift'te Fonksiyonlar
-
Swift'te Fonksiyonlar Giriş
-
İç İçe (Nested) Fonksiyonlar
-
Birden Çok Formel Parametre alan Fonksiyonlar
-
Tek Çift Sayı Ayrımı Yapan Bir Fonksiyon
-
Parametresiz Fonsiyonlar
-
Değer Göndermeyen Fonksiyonlar
-
Birden Çok Değer Gönderen Fonksiyonlar
-
Dış Parametre İsimleri (External Parameter Names)
-
Değişkin (Variadic) Parametreler
-
Değişken (Variable) Parametreler
-
In-Out Türü Parametreler
-
Fonksiyon Tipinde Sabit ya da Değişken Tanımlamak
-
Bir Fonksiyonun Parametre Listesinde Başka Bir Fonksiyonun Kullanılması
-
Jenerikler (Generics)
-
Kapatma (Closure)
-
Swift'te Fonksiyonlar Giriş
-
Nesneye Yönelik Programlama (Object Oriented Programming)
-
Sınıf (Class) Oluşturma
-
Sınıf (Class) Oluşturma Giriş
-
Delege Etme (Delegaation)
-
Yapılar (Structures)
-
Sayma Tipi (Enumeration)
-
Dinamik(Dynamic) ve Statik(Static) Bağlama (Binding)
-
Çok Biçimlilik (Polymorphism)
-
Uzatmalar (Extensions)
-
Hesaplanmış Özellikler (Computed Properties)
-
Extension Yardımı ile Bir Yapıya (Structure) Özellik (Property) Ekleme
-
Protokoller (Protocols)
-
Self İfadesi
-
İlk Değer Atama (Inıtializer)
-
Nesnelere Ayrılan bellek alanını İade etme (Deinitializer)
-
Sınıf (Class) Oluşturma Giriş
-
Swift'te Tipler (Types)
-
Koleksiyon Tipleri (Collection Types)
-
Koleksiyon Tipleri (Collection Types) Giriş
-
Dizi İçine Aralık (Range) İfadesi ile Atama Yapma
-
Dizinin Elemanlarını Tarama
-
Dizilere İlk Değer Atamak için Alternatif bir Yol:count ve repeatedValue Metotları
-
Bir Tablonun Satır ve Sütun Toplamları ve Genel Toplamı
-
Kare Matris Swift Programı
-
Dizilerin Kopyasının Oluşturulması
-
Karakter Dizileri ile ilgili Swift Programı
-
Sözlüklerin Kopyasının Oluşturulması
-
Koleksiyon Tipleri (Collection Types) Giriş
-
Bildirimler (Declarations)
Swift’in önemli bir özelliği de aşma (overflow) oluşmasına müsaade etmemesidir. Bunun daha net ifadesi şudur: bir değişken ya da sabite, taşıyabileceği en büyük değerden daha büyük bir değer atanırsa ya da taşıyabileceği en küçük değerden daha küçük bir değer atanırsa (underflow), derleyici hata mesajı verecektir.
ÖRNEK:
Aşağıdaki programda UInt8 tipinin alabileceği en büyük ve en küçük değerler yazdırılmaktadır:
let a:UInt8=UInt8.max
let b:UInt8=UInt8.min
print("a=\(a)")
print("b=\(b)")
a=255
b=0
AŞMA (OVERFLOW) OPERATÖRLERİ
Tamsayı tipteki işlemlerde overflow oluştuğunda, hata mesajı elde etmek yerine bu tip bir atamayı bir şekilde gerçekleştirerek devam etmek istenirse overflow operatörleri kullanılabilir. Bunlar Int türü değişkenler için 5 tanedir:
I.&+ II. &- III. &* IV. &/ V.&%
ÖRNEK: &+ VE &-
&+ operatörü ile overflow durumu oluştuğunda değişkene 0 değeri atanır.
&- operatörü ile underflow durumu oluşunca da değişkene o türe ait en büyük sayı atanır.
ÖRNEK PROGRAM:
let a:UInt8=UInt8.max
let b:UInt8=UInt8.min
print("a=\(a)")
print("b=\(b)")
var c:UInt8
var d:UInt8
print("OVERFLOW")
c=a&+1
print("c=\(c)")
print("UNDERFLOW")
d=b&-1
print("d=\(d)")
PROGRAMIN ÇIKTISI
a=255
b=0
OVERFLOW
c=0
UNDERFLOW
d=255
a | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
---|---|---|---|---|---|---|---|---|
&+ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Yukardaki tabloda UInt8 tipi için en büyük sayı ilk satırdadır ve 11111111=255 sayısıdır. Buna &+ ile 1 eklenirse ikili sistemde 100000000 sayısı elde edilecektir (Tabloda 3. satır). UInt8 tipi 8 bitlik olduğu için sonuç 00000000=0 olacaktır. Böylece c’nin neden 0 olduğu şimdi daha rahat anlaşılabilir.
Aşağıdaki tabloda ise &- operatörünün işlevi görülmektedir:
b | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
---|---|---|---|---|---|---|---|---|
&- | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
d | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Böylece d sayısı 11111111=255 olarak elde edilecektir.
İŞARETLİ TAMSAYILARDA (SIGNED INTEGERS) OVERFLOW VE UNDERFLOW
İşaretli tam sayılar için de overflow ve underflow benzer şekildedir. Aşağıdaki programı çalıştırınız:
let a:Int8=Int8.max
let b:Int8=Int8.min
print("a=\(a)")
print("b=\(b)")
var c:Int8
var d:Int8
print("OVERFLOW")
c=a&+1
print("c=\(c)")
print("UNDERFLOW")
d=b&-1
print("d=\(d)")
Programın çıktısı aşağıdaki gibi olacaktır:
a=127
b=-128
OVERFLOW
c=-128
UNDERFLOW
d=127
a=01111111=127’dir. 0 işaret bitidir (+). Buna 1 eklenince 10000000 sayısı elde edilir ki bu da -128’dir. Böylece c=-128 olacaktır. &- işlemleri içinde aşağıdaki tablo açıklayıcı olacaktır:
b | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -128 |
---|---|---|---|---|---|---|---|---|---|
&- | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
d | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 127 |
SIFIRLA BÖLME (DIVISION BY ZERO)
Herhangi bir tam sayının 0 ile bölünmesi hata mesajı verecektir:
var x:Int=40
print("x/0=\(x/0)")//Division by zero
Yukarıdaki program print satırında “division by zero” hata mesajını yazacak ve duracaktır.
Şimdi &/ operatörünü kullanalım:
var x:Int=40
print("x&/0=\(x&/0)")
Bu durumda x/0 ifadesinin sonucu 0 olacaktır:
x&/0=0
Program ended with exit code: 0
Aynı şey &% operatörü için de söz konusudur. x&%0 işleminin sonucu 0’dır:
var x:Int=40
print("x&%0=\(x&%0)")
x&%0=0
Program ended with exit code: 0
Oysa x%0 ifadesinin sonucunda ise hata mesajı alınacaktır:
var x:Int=40
print("x%0=\(x%0)")//Division by zero