Ruby Günlüğü – Gün 5

Kaldığımız yerden devam edelim.

Ruby ve Değişkenler (Variables)

En son Ruby’de nesne mantığını iyice kavramıştım ve öğrendiklerimi buraya not etmiştim. Bugün biraz değişkenler hakkında not tutacağım.

Değişkenler; stringler, integerlar ve bilumum her türlü veriyi atayabileceğimiz yer tutuculardır. Yapılan atama işleminden sonra bellek içerisinde kendilerine yer edinirler ve çağırıldıkları taktirde kolayca kullanılabilirler.

Örneğin burada serhat isimli bir değişken yarattık ve ona 2011 değerini atadık. Daha sonra onu yazdırdığımızda 2011 sonucunu alacağız.

Her dilde olduğu gibi Ruby içinde bazı değişken tanımlama kuralları var.

  • Değişkenler tek parçalı olmalıdır yani diyebiliriz ki değişken isimleri tanımlarken sözcük parçaları veya heceler arasında boşluk olmamalıdır.
  1. serhatdundar
  2. serhat2011dundar
  3. serhat11dundar33
  4. serhat dundar
  • Değişkenler yalnızca alfabe karakterleri ile veya alt çizgi ile başlayabilirler. Örnekler ;
  1. SerhatDundar
  2. serhatdundar
  3. _serhat
  4. 1serhat
  5. 7fx3dsmax
  • Değişken isimleri yalnızca; rakamlar – alfabe karakterleri ve simgelerden ise alt çizgiyi içerebilirler.
  1. !serhatçokyaşa
  2. _büyükadamsınvesselam
  3. ruby_guzel_bir_dil_sene_2011_
  4. ah_ruby_vah_ruby_sen_neymissin_be_abi?
  • Değişkenler case-sensitive’dir. Yani büyük-küçük harf değişken tanımlarken önemlidir.
  • Değişken isimlerinde Türkçe karakter kullanabilirsiniz, ancak kullanmanızı tavsiye etmem. Neden mi? Konuyu dağıtmayalım, buna sonra değiniriz.

Basit bir değişkenler örneği yapalım;

“sene” değişkenimiz 2011 değerini tutuyor, “olumyili” değişkeni ise 1938 değerini tutuyor. “fark” değişkeni ise “sene” değişkeninden “olumyili” değişkenini çıkartıyor. Daha sonra ekrana bastırıyoruz.

Kötü Programcılık

Bir örnek daha;

Bu kod parçası sorunsuz çalışacaktır, ancak kötü programcılığa güzel bir örnektir.

Hata 1 : Gereksiz olduğu halde değişken tanımlamak ! Programın hantallaşması için gayet geçerli bir sebep.

Hata nerede? “z” değişkeni bu program içerisinde gereksiz bir şekilde tanımlandı. Oysa ki kodumuz şu şekilde olmalıydı ;

Hata 2 : Kodumuzu gereksiz bir şekilde uzattık, kısatmalardan yararlanmadık. Oysa ki kodumuz şu şekilde olabilirdi ;

Birçok dilde bu şekilde aritmetik kısatlama ifadeleri bulunur. Python’da buna bir örnektir. += ifadesini diğer aritmetik ifadeler içinde değiştirebilirsiniz -=, *=, /= gibi.

“x += y” nin anlamı, y’yi alıp x’e eklemektir.

Karşılaştırma İfadeleri ve Operatörleri

Mantık sahibi olmayan bir program, hesap makinasından farksızdır. Programlarımıza mantıklı düşünme imkanı sunmak için karşılaştırma operatörleri kullanırız.

Örnek 1 :

Şimdi burada durup bir inceleme yapalım. Eğer klasik yazım stillerine alışkın iseniz bu örnek size biraz garip gelmiş olmalı ? Öncelikle puts yani ekrana yazdırma komutu çağırıyoruz, daha sonrasında şart ifadesini kuruyoruz? Ancak denediğimizde örnek çalışıyor. Nasıl yani?

Şöyle yazsak daha doğru olmaz mı?

Bu noktada bir IDE kullanmanın önemini bir kez daha görüyoruz. Netbeans IDE hemen bana önerisini yaptı !

Yapılacak olan değişikliği de görebiliriz :

Fazla inat etmeden, IDE’nin lafını dinliyoruz.

Birde çift şartlı ifade örneği yapalım :

Burada ki “&&” ifadesinin anlamı aslında bildiğimiz “and”le özdeştir. Bu ifadeyi kaldırıp yerine “and” yazmanız durumunda değişen birşey olmayacaktır, ancak kısaltmalar iyidir demiştik.

Kodun Türkçe meali ise “Eğer x, 20’den küçük ve sıfırdan büyük ise ekrana “çok ufak bir rakam” yazdır.” olacak.

Bir başka deyişle, “Eğer x 0 ile 20 arasında bir değer ise ekrana “çok ufak bir rakam” yazdır.” olacak.

Sorulması gereken güzel soru : Peki işleri tersten yapmak istersek? “Değil” ifadesi nedir?

Aslında oldukça basit “unless” ifadesi ile bunu sağlayabiliriz.

“unless” ifadesini “if not” olarak düşünebiliriz.

Bu yöntem biraz tehlikeli.. Neden mi, buna şimdi değinmeyelim, ama tehlikeli olduğunu bilin.

Ruby’de “arada olma” durumu için güzel bir fonksiyon bulunmakta.

Bu metodun adı “between?”. Evet sonda ki soru işaretini yanlışlıkla yazmadım, ismi “between?”

Eşitlik (equality) durumu ise aynı Python’da olduğu gibi “==” ile kontrol edilir.

Atama (assignment) için ise sadece bir tane eşittir işareti kullanırız. “=”.

Eşit olmama durumu ise yine Python’da olduğu gibi != ile kontrol edilir.

Bir de <=> ifadesi var, buna da kısaca göz atalım. x<=> y için ;

x ve y eşit ise 0 değerini döndürür, x daha büyük ise 1 değerini, y daha büyük ise -1 değerini döndürür.

|| ifadesi ile iki ayrık durumu denetletebiliriz, yani bu sefer arada olma gibi bir zorunluluk yok, örnekte daha anlaşılır olacak.

Çoklu kontrol işlemlerini parantezler ile sınıflandırabiliriz;

Bu günlük bu kadar.

Leave a Reply