Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi
İÇİNDEKİLER Değişken Nedir? Değişken kullanımı faydaları. Değişken türleri Değişken görünürlüğü (scope) Değişken türleri arası dönüşümler Örnek uygulama
Değişkenler Java güçlü tiplere sahip bir program Her değişkenin bir türü var Değişken türleri arasında dönüşüm programcı tarafından yapılmalı. Aksi halde yazım hatası (syntax error) veya çalışma zamanı hatası (runtime error) oluşabilir. Değişken türleri Primitive (Basit) Referense (İşaretçi) Composite (Bileşik, Nesne türleri) Tür dönüşümleri
Basit Değişkenler Basit değişkenler: Sayı, karakter gibi temel veri türlerinde tek bir veri saklayabilen değişkenlerdir. Hafızaya doğrudan yazılır ve okunurlar. Programlama dillerinde hazır olarak sunulurlar.
Değişkenler Değişkenler (variable) program içerisinde veri saklama ve taşıma amacıyla kullanılan yapılardır. Değişken yaşam döngüsü Tanımlama (declare) Hafızada oluşturma (initialize)* Değer atama (assign) Kullanma (reference) * Nesneye yönelik programlama kısmına ayrıntılı incelenecektir.
Basit Değişkenler ve Hafıza Adres Değer i=5 0000 5 0001 FFFF
Değişken tanımlama (Java) Değişkenler belirli türde veri saklayabilir. Bu yüzden tanımlanırken veri türleri belirtilir. Degişken_türü değişken adı; int i; Double maas;
Değişken İsimlendirme Değişken isimleri karakter, _ ve $ ile başlayabilir. Karakter tercih ediniz. Değişken isimleri nümerik karakterlerle başlayamaz. Anahtar kelimeler değişken ismi olamaz.
Değişken tanımlama 1. Degişken_türü değişken adı(=değer); int i; 2. Tanımlama aşamasında değer atama int i=100; 3. Aynı satırda birden fazla değişken tanımlama int i=150,j=500,k; Tek satırda bir işlem yapılması tercih edilmelidir. Bu yüzden 2 ve 3 yöntemi önerilememektedir.
Değişkene Değer Atama Değişken_adi=değer; Örnek i =5 ; = atama operatörüdür ve ifadenin sağındaki değeri solundaki değere atar.
Değişken Kullanma İfade: değişken ve operatörlerden meydana gelen bir yazılım yapısıdır. i*2 " Ahmet" + " AK" ; Cümle: Bütünleşik olarak çalışan bir kod satısı i=(3*j);
Değişken türleri Basit(primitive) türler Integers Floating point number Charakters Boolean
Integer Türler Tamsayı değerlerini tutmak için kullanılır. Byte 8 bit ±2 7 Short 16 bit ±2 15 Int 32 bit ±2 31 Long 64 bit ±2 63
Integer Javada sayısal değerler işaretli (signed) olarak tanımlanır. İlk bit işaret biti olarak isimlendirilir ve sayının eksi veya artı olma durumunu simgeler. Saklanacak max ve minimum değerler saklama için ayrılan bit sayısından bir azdır. O değeri pozitif sayılara dahil kabul edilir. Örneğin byte türündeki değişkenler 8 bittir. Değer aralığı - - -2 8-1 ile 2 8-1 -1 (-128 ile 127) arasında değişir.
int Türünde Değişken tanımlama int i; İlk anda değer atama int i = 1000000; Tüm işlemlerde türler int e çevrilir. Long türündeki sabitler için sonuna L harfi eklenir.
Literal Değerler: Kodun içindeki Sabitler Onlu sayılarda ek kullanılmaz int decval = 26; hexadecimal (16 lık) sistemde 0x ile başlar int hexval = 0x1a; İkili sistem 0b ile başlar int binval = 0b11010;
Kayan noktalı (floating point) değişkenler Küsüratlı sayılar için kullanılır Float: 32 Bit Double: 64 Bit Float sayılar sonuna f harfi alarak tanımlanır. Örnek Dairenin alanını hesaplayan program yapınız.
Karakter değişkenleri Karakterler unicode tiplerdir. C veya c++ da 8 bit Java da 16 bit char anahtarı ile tanımlanırlar. char basharf; Sabit karakter değerlerde tek tırnak kullanılır. basharf= c ; Karakterler kodları atanabilir. basharf=10; Örnek: X ten sonra gelen ilk 5 karakteri yazdırınız.
Boolean değişkenler Mantıksal değerleri (true, false) tutmak için kullanılır. boolean öneki ile tanımlanır. boolean kucukmu; Mantıksal ifadelerin neticesi boolean değişkenlere atanabilir. kucukmu=(10>9); Örnek: İki sayıdan hangisinin küçük olduğunu bulan program yazınız.
Değişen yaşam süresi ve Kapsam (scope) Java da bloklar { ile başlar ve } ile tamamlanır. {blok} Her blok için yeni bir scope oluşur. Nesneye yönelik programlama için Sınıf scope (sınıf özelliklerinde incelenecek) Metod scope Bir scope içinde tanımlanan değişkenler dışında görülemez, erişilemez.
Scope Örnek Aşağıdaki program hata verir mi? Nerede? public class scopecalisma { public static void main(string[] args) { int x; x=5; if (x==5) { int y=20; System.out.println(x + "" + y); } System.out.println(x + "" + y); } }
Tanımlama özellikleri Değişken tanımlanmadan kullanılamaz. Değişkenlerin tanımlandığı anda bir değeri yoktur. Tekrar tanımlanırsa değeri kaybolur. (Java da buna izin verilmez.) Üst blokta tanımlı bir değişken alt blokta tekrar aynı isimle tanımlanamaz. (c ve c++ da yapılabiliyor.) Alt blokta aynı isimli değişken tanımlanan dillerde görünürlük (visibility ) kavramı ortaya çıkar. Bu tür durumlarda alt blok içinde üst bloktaki değişkenin değeri görünür değildir. Ancak tanımı geçerli olduğundan alt blok kapsama dahildir.
Sabitler (constant) Bir değişkenin değerinin program boyunca değişmemesi isteniyorsa final anahtar kelimesi kullanılarak sabit biçiminde tanımlanır. final double PI; Sabitler genellikle büyük harflerle isimlendirilir.
Tür dönüşümleri Dahili (Otomatik, İnternal): Programlama dili tarafından otomatik yapılan dönüşümlerdir. Harici (External): Programcının yazacağı komutlarla gerçekleştirdiği dönüşümlerdir.
Tür dönüşümleri (conversation, cast) Java otomatik tip dönüşümü yapabilir. İki tip birbirine dönüşebilir. Hedef tip daha geniş değer tutabiliyorsa Örnek int long dönüşebilir long int dönüşemez.
Harici Tür Dönüşümü (cast) (hedef_tip)değer Örnek int a; byte b; b=(byte)a;
Hesaplamalarda tür dönüşümü Hesaplama ifadeleri içerisinde otomatik tip dönüşümü yapılabilir. Örnek Byte a,b,c; a=b*c; Bu durum problemlere de sebep olabilir. Örnek Byte b; b=b*2; Genel Kural: Nümerik hesaplamalar int tipine veya içinde kullanılan en geniş tipe çevrilir. (long, float, double)
Değişken tanımları ile alakalı önemli noktalar. Değişkenin doğru tipte tanımlanması Hangi tipin nerede kullanılacağını iyi bilmek abstract data type literal array local variable bitmap lookup table boolean variable member data B-tree pointer character variable private container class retroactive synapse double precision referential integrity elongated stream stack enumerated type string floating point structured variable heap tree index typedef integer union linked list value chain
Değişken tanımları ile alakalı önemli noktalar. Tüm değişkenleri tanımlanması İmplicit tanımlamanın kapatılması (visual basic) Değişkenlerin isimlendirilmesi için bir standart oluşturulması İşe dönük isimlendirme Genel isimlerden kaçınılması
Değişken değer atama Hiçbir yerde değer atanmayan değişkenlerin silinmesi Kullanıldığı yere yakın tanımlama yapılması (Birbiri ile ilişkili kodların birarada olması) Döngü değişkenlerinin tanım yerleri ve nerelerde sıfırlandıklarına dikkat edilmesi
Değişken scope Scope ın mümkün olduğunca küçük olması Değişken kullanımdan hemen önce değer atama Bağlantılı değişkenlerin kod içinde birbirine yakın satırlarda yazılması İlk anda en küçük scope dan başlanması. Gerekirse genişletilmesi
Değişkenler genel Değişkenin sadece ve sadece bir amaç için kullanılması Çok genel isimlerden kaçınılması
Örnek Toplama, çıkartma, çarpma ve bölme işlemlerini gerçekleştiren basit bir hesap nesnesi tasarlayınız. Hesap makinesini kullanarak aşağıdaki işlemleri gerçekleştiriniz. 5+2 5/2 5-2
Kaynaklar McConnell Steve, Code Complete, Second Edition,2002 MS press Naughton P.,The Complete Reference Java Second Edition
Sorular
Değişkenler Java güçlü tiplere sahip bir program Her değişkenin bir tipi var Değişken tipleri arasında dönüşüm programcı tarafından yapılmalı. Aksi halde syntax error oluşuyor. Değişken tipleri Primitive Reference Tip dönüşümleri