Ders 5 : Objective C içinde C


Objective C nin C üzerine kurulu bir dil olduğunu öğrendik. Bu dersimizde Objective C içinde kullanabileceğimiz C ye ait bazı kalıplaşmış özellikleri öğrenelim. Bu dersete

  1. if - else zinciri
  2. switch case
  3. for - while döngüleri
  4. C fonksiyonları

If - Else Zinciri

Herhangi bir koşul sağlandığı zaman herhangi bir işlemi yapmak için if komutunu kullanırız.

if (<#koşul#>) {
        <#işem#>
}

if komutunun kullanımı yukarıdaki gibidir. Parantezler içerisine koşul girilir ardından süslü parantezler arasında kalan kısma gerçekleşmesini istediğimiz işlemleri yazarız. Örneğin 1 ile 10 arasında rastgele bir sayısının 5 ten büyükse büyük olduğunu consola yazdıralım. Bunun için aşağıdaki gibi bir kod bloğunu yazarız.

    if (arc4random_uniform(10)+1< 5) {
        printf("büyük");
    }

arc4random_uniform() fonksiyonu aldığı bir x sayısı için 0 ile x-1 arasında rastgele bir tamsayı dödürür.

Sıradaki hedefimiz ise 5 ten büyükse büyük değilse küçük yazdırmak olsun. Bunun için else komutunu kullanırız. Else komutu içindeki işlemler if içerisindeki koşulun sağlanmaması durumunda gerçekleşir. 

   if (arc4random_uniform(10)+1<5) {
        printf("büyük");
    } else {
        printf("küçük");
    }

Ve son olarak öğrenmemiz gereken else if komutu. Else if komutu bir çok koşul söz konusu olduğunda uzun if-else zincirleri oluşturmamızı sağlar. Bu zincirleri istediğimiz kadar uzatabiliriz. Örnek üzerinden nasıl çalıştığını anlatalım.

    int x = arc4random_uniform(5)+1;
    if (x == 1) {
        printf("merhaba");
    } else if (x == 2){
        printf("dünya");
    } else if (x == 3){
        printf("yaşasın");
    } else if (x == 4){
        printf("if elsi öğrendim");
    }
    else printf("görüşürüz");

  
Bu kod parçası öncelikle "x" e 1-5 arasında bir tamsayı atıyor. Sonra eğer x 1 ise merhaba  yazıyor. 1 değil 2 ise  dünya yazıyor. Ne 1 ne 2 değil 3 ise yaşasın yazıyor. 1, 2 ve ya 3 ten hiçbiri değil 4 ise  if elsi öğrendim yazıyor. Hiç biri değilse görüşürüz yazıyor.

Switch Case

Uzun if else zincirleri yazmak yerine Switch Case i kullanabiliriz. Yalnız Switch Case çok kullanışlı bir komut değildir. Bir Switch Case aşağıdaki gibidir.

    switch (<#ifade#>) {
        case <#sabit#>:
            <#işlem#>
            break;
            
        default:
            <#işlem#>
            break;
    }

Herhangi bir değişkeni ifade yazan yere yazarız. Sonra her bir durum için yeni bir case açıp içine sabit bir değer girilir. Eğer ifade sabite eşit olursa işlem kısmına gelir ve işlemleri yapar. Ardından break satırına gelir ve Switch Case sonlanır. Eğer ifade hiçbir case e eşit değilse default kısmının işlemini yapar. Hadi bir örnek yapalım.

    int x = arc4random_uniform(5)+1;
    switch (x) {
        case 1:
            printf("x = 1");
            break;
        case 2:
            printf("x = 2");
            break;
        case 3:
            printf("x = 3");
            break;
        case 4:
            printf("x = 4");
            break;
        default:
            printf("x = 5");
            break;

    }

Bu Switch Case ile aşağıdaki if-else zinciri eşdeğerdir.

    int x = arc4random_uniform(5)+1;
    if (x == 1) {
        printf("x = 1");
    }else if (x == 2){
        printf("x = 2");
    }else if (x == 3){
        printf("x = 3");
    }else if (x == 4){
        printf("x == 4");
    }else printf("x == 5");

Evet bu iki kod içinden seçim size kalmış. Ama benim tavsiyem if-else kullanmanızdır. Bu arada Switch Case kullanacaklar için söyleyeyim sakın "break;"  koymayı unutayın.

For-While Döngüleri

While Döngüsü

While döngüsü, belirlenen komut bloğunu koşul sağlandığı sürece çalıştıran temel döngü yapılarından bir tanesidir. Bu döngü, basit bir kullanıma sahip olması sebebiyle tercih edilir. While döngüsünün genel formu aşağıdaki gibidir.

 while (<#koşul#>) {
        <#işlem#>

    }

Döngü gövdesi koşul deyimi true olduğu sürece çalıştırılır, koşul false olduğunda ise döngüden çıkılır. While döngüsünde döngü değişkeni bulunmaz, bunun yerine while bloğuna girmeden başlangıçta değeri bilinen bir değişken kullanılır. Koşul ifadesiyle ilişkili olan bu değişkenin değeri döngü bloğu içerisinde değiştirilir. Bir örnek verelim.

   int x = 10;
    while (x > 0) {
        printf("%d",x);
        x--;

    }

Bu kod parçası x 0 dan büyük olduğu sürece x in değerini consola yazıyor ve ardından x in değerini 1 azaltıyor.

For Döngüsü

for deyimi ve for deyimi kullanılarak oluşturulacak döngü yapısı, işlemlerin tekrar sayısının önceden belli olduğu durumlarda kullanılır. for deyiminin yazılışı:

  for (<#işlem1#>; <#işlem2#>; <#işlem3#>) {
        <#deyim#>

    }

şeklindedir.

İlk olarak ifade1 hesaplanır; bu genellikle bir ya da daha fazla değişkene ilk değeri veren bir atamadeyimidir. Sonra ifade2 hesaplanır. Bu, deyimin koşulsal kısmıdır. ifade2 yanlışsa, programın kontrolü for deyiminden çıkar ve program akışı programdaki bir sonraki deyime geçer (deyim_x). Eğer ifade2 doğru ise, deyim veya deyimler grubu uygulanır. Deyim ya da blok yapılı şekilde deyimler grubu çalıştırıldıktan sonra, ifade3 çalıştırılarak hesaplanır. O zaman çevrim yine geriye, ifade2'ye döner. İfade1 sadece bir kez çalıştırılır; ifade2 ve ifade3 ise, çevrimin her tekrarında (iteration) çalışıtırılır.

    for (int i = 0; i<10; i++) {
        printf("%d",i);

    }

C Fonksiyonları

Objective C içerisinde Classlar için yazılan fonksiyonların dışında C fonksiyonlarınıda kullanabiliriz.  Örneğin matematiksel işlemleri yapmak için C fonksiyonunu kullanabiliriz.

C de fonksiyon dizimi



<#döndürülecek nesnenin türü#> <#fonksiyon adı#> ( <#arguman1#> , <#arguman2#> ... ){

<#işlem#>

return <#sonuç#>

}

 En basitçe iki sayının toplamını hesaplayan bir C fonksiyonu yazalım.

int topla (int x , int y){
    
    int cevap = x+y;
    return cevap;
}

Eğer fonksiyon bir sonuç döndürmüyor sadece işlem yapıyorsa fonksiyonun başına void yazılır.Void fonksiyonlar birşey return etmek zorunda değildir. Void dışındaki fonksiyonlar return etmek zorundadır. Son olarakta bir void fonksiyonu örneği yapalım.

void selam(){
    
    printf("Hello World!\n");

}

Daha Çok C

Objective C yazmak istiyorsanız C dilini bilmeniz gerekir.  C dili ile ilgili bir site olmadığımız için daha fazla C ye yer vermek istemiyorum. Daha fazla C öğrenmek için şu blogu takip edebilirsiniz
http://cpp-programlama.blogspot.com.tr

Hiç yorum yok :

Yorum Gönder