1 2 Java Uygulamalarına Giriş 2005 Pearson Education, Inc. All rights reserved. 2 2.1 Giriş 2.2 Java’da ilk programımız: Bir satır metin yazdırmak 2.3 İlk Java programımızı değiştirelim 2.4 printf komutuyla metin görüntülemek 2.5 Başka bir Java uygulaması: Dogal sayıları toplamak 2.6 Hazıfa Kavramı 2.7 Aritmetik hesaplamalar 2.8 Karar vermek: Eşitlik and Karşılaştırma Operatörleri 2005 Pearson Education, Inc. All rights reserved. 3 2.1 Giriş • Java uygulamalarını programlamak – Mesajları görüntüle – Kullanıcıdan bilgi al – Aritmetik hesaplamalar – Karar vermenin temelleri 2005 Pearson Education, Inc. All rights reserved. 2.2 Java’da ilk programımız: Bir satır metin yazdırmak 4 Uygulama • Örnek program – Bir satırlık bir yazıyı görüntülüyor – Java dilinin önemli birkaç özelliğini gösteriyor 2005 Pearson Education, Inc. All rights reserved. 1 // Fig. 2.1: Hosgeldin.java 2 // Metin yazdırma programı 5 Outline 3 4 public class Hosgeldin 5 { 6 7 public static void main( String args[] ) { System.out.println( "Java Programlamaya Hosgeldiniz !" ); 8 9 Hosgeldin.java } 10 } Java Programlamaya hosgeldiniz! 2005 Pearson Education, Inc. All rights reserved. 2.2 Java’da ilk programımız: Bir satır metin yazdırmak (devam) 1 6 // Fig. 2.1: Hosgeldin.java – Bilgilendirmeler şu işaret ile başlar: // • Program çalışırken bilgilendirmeler dikkate alınmaz • Sadece dökümantasyon ve tarif olarak kullanılırlar • Programın daha kolay okunmasını sağlar – Geleneksel bilgilendirme işareti: /* ... */ /* Geleneksel açıklama işareti Birden fazla satıra yazılabilir */ 2 // Metin yazdırma programı. – Bir bilgilendirme satırı daha 2005 Pearson Education, Inc. All rights reserved. 7 Çok görülen programlama hataları 2.1 Bilgilendirme satırındaki işaretlerden birini unutmak bir syntax error oluşturur. Syntax bir programlama dilinin kurallarını ifade eder. syntax error hatası derleyicinin Java programlama dilinin kurallara uymayan yazılım parçaları bulması nedeni ile olur. Bu durumda derleyici bir .class dosyası oluşturmaz.Onun yerine programcıya yardımı olacak bir hata mesajı oluşturulur . Syntax errors hatalarına compiler errors, compile-time errors veya compilation errors de denir, bunun nedeni hatanın derleme anında oluşmasıdır. Tüm syntax errors hataları giderilmeden program çalıştırılamaz. 2005 Pearson Education, Inc. All rights reserved. 8 İyi programlama uygulaması 2.1 Her programın kendisinin ne yaptığını belirten bir açıklama kısmı olmalıdır, buna programı yazan kişinin adı ve zaman gibi bilgiler de eklenebilir. 2005 Pearson Education, Inc. All rights reserved. 2.2 Java’da ilk programımız: Bir satır metin yazdırmak (devam) 9 3 – Boş satır • Programları daha okunabilir yapar • Boş satırlar, space ve tabs tuşu ile oluşturulan alanlar – Derleyici tarafından ihmal edilirler 4 public class Hosgeldin – Sınıf tanımlaması Hosgeldin ile başlar • Her Java programında kullanıcının tanımladığı bir sınıf (class) vardır • Anahtar kelimeler: Java için ayrılmış kelimeler – class anahtar kelimesinden sonra sınıf ismi gelir • Sınıflara isim verme kuralı: her kelimeye büyük harf ile başlanır – NotDefteri 2005 Pearson Education, Inc. All rights reserved. 2.2 Java’da ilk programımız: Bir satır Text yazdırmak (devam) 4 10 public class Hosgeldin – Java belirteci • Harf , rakam , alt cizgi ( _ ) , dolar işareti ($ ) inden oluşan karakter serisi • Rakamla başlanmaz ve boşluk kullanılmaz • Examples: Hosgeldin, $deger, _deger, deger7 – 7deger geçerli değil • Java büyük küçük harf ayrımı yapar – a1 ve A1 farklıdır 2005 Pearson Education, Inc. All rights reserved. 11 İyi programlama örneği 2.3 Java sınıf isimlerini büyük harf ile başlayınız ve içinde gecen başka kelimelerin de ilk harfini büyük yazınız. Java programcıları bu kelimelerin sınıf ismi olduğunu bu notasyondan anlarlar.Böylece programın okunabilirliği artar. Ör: NotDefteri 2005 Pearson Education, Inc. All rights reserved. 2.2 Java’da ilk programımız: Bir satır Text yazdırmak (devam) 4 12 public class Hosgeldin – Dosyaları saklamak • Dosya ismi sınıf ismine .java eklenerek elde edilmelidir • Hosgeldin.java 5 { – Sol parantez { • Her sınıfın gövdesi bu işaretle başlar • Sağ parantez tanımlamayı bitirir } 2005 Pearson Education, Inc. All rights reserved. 14 İyi programlama örneği 2.4 Ne zaman programınızda bir sol parantez açsanız, {, bunun karşılığı olan sağ parantezi, }, de kapatıp bunların arasına yazınız. Bu uygulama sık görülen parantez hatalarını önler. 2005 Pearson Education, Inc. All rights reserved. 15 İyi programlama örneği 2.6 Kendinize bir satır başlangıcı boşluğu uzunluğu tanımlayın ve standart olarak bunu kullanın. Tab tuşu boşluk bırakmak için kullanılabilir, fakat değişik editörler için bu boşluğun uzunluğu değişik olabilir. Bu boşluğun üç harf uzunluğunda olması tavsiye edilir. 2005 Pearson Education, Inc. All rights reserved. 2.2 Java’da ilk programımız: Bir satır metin yazdırmak (devam) 6 16 public static void main( String args[] ) – Her Java uygulamasının bir parçasıdır • Uygulamalar main kısmından çalışmaya başlar – Parantezler main in bir metod olduğunu gösterir – Java uygulamaları birden fazla metodlar içerebilir • Bunlardan sadece bir tanesinin adı main olmalıdır – Metodlar iş yapıp sonuç geri döndürebilir • void un anlamı main in bir sonuç geri döndürmeyeceğidir • Şimdilik, main‘in içinde olduğu satırı bu şekilde kullanalım 7 { – Sol parentez metodun gövde kısmını başlatır • Sağ parantez tarafından bitirilir } 2005 Pearson Education, Inc. All rights reserved. 2.2 Java’da ilk programımız: Bir satır Text yazdırmak (devam) 8 17 System.out.println( "Java programlamaya hosgeldiniz!" ); – Bilgisayara bir işlem yaptırır • Bir karakter satırını (string) ekrana yazdırır – String – tırnaklar arasındaki karakter dizisi • Satır içindeki boşluklar ihmal edilmez – System.out • Standart çıktı nesnesi • Konsola yazdırır – Metod System.out.println • Bir satırı yazar – Bu satır bir işlem yapar • Noktalı virgül ile bitirilmeli ; 2005 Pearson Education, Inc. All rights reserved. 2.2 Java’da ilk programımız: Bir satır Text yazdırmak (devam) 9 } // 18 main in sonu – metod tanımlamasını bitirir 10 } // Hosgeldin sınıfının sonu – Sınıf tanımlamasını bitirir – Sonlandırma satırlarına açıklama yazılabilir 2005 Pearson Education, Inc. All rights reserved. 19 İyi programlama örneği 2.8 Bir metodun gövdesine ait olan veya sınıf deklarayonuna ait olan Sağ parantezden (}) sonra bu parantezin kime ait olduğunu yazan bir açıklama kısmı eklemek program okunabilirliliğini artırır. 2005 Pearson Education, Inc. All rights reserved. 21 2.3 İlk Java programımızı değiştirmek • Önceki örnekteki programı aynı sonucu verecek şekilde değiştiriyoruz – Hosgeldin2.java (Fig. 2.3) Hosgeldin.java (Fig. 2.1) ile aynı sonucu veriyor – Programlar aynı değil 9 10 System.out.print( "Welcome to " ); System.out.println( "Java Programming!" ); 2005 Pearson Education, Inc. All rights reserved. 1 // Fig. 2.3: Hosgeldin2.java 2 // Birden fazla satıra metin yazdırma. 22 Outline 3 4 public class Hosgeldin2 5 { 7 public static void main( String args[] ) 8 { 9 System.out.print( "Java programlamaya " ); 10 System.out.println( "hosgeldiniz!" ); 12 } // main sonu System.out.print kursorun aynı satırda kalmasını sağlar, System.out.println kursorun kaldığı satırdan devam eder. 13 14 } // sınıf sonu Java Programlamaya hosgeldiniz! 2005 Pearson Education, Inc. All rights reserved. 23 2.3 İlk Java programımızı değiştirmek • Escape karakterleri – Backslash ( \ ) – Özel karakterlerin görüntüleneceğini belirtir • Yeni Satır karakteri (\n) – System.out.print ve System.out.println metodları tarafından özel karakter olarak algılanır – İmleçi yeni satırın başına koyar – Hosgeldin3.java (Fig. 2.4) 9 System.out.println( “Java\nprogramlamaya\nhosgeldiniz!" ); – Satırlar \n işareti ile bölünür – \t boşluk bırakır.\r satır atlatır.\” tırnak yazar 2005 Pearson Education, Inc. All rights reserved. 1 24 // Fig. 2.4: Hosgeldin3.java Outline 2 3 4 public class Hosgeldin3 5 { 7 public static void main( String args[] ) 8 { 9 System.out.println( "Java\nprogramlamaya\nhosgeldiniz!" ); 10 11 } // main sonu 12 13 } // sınıf sonu Java programlamaya hosgeldiniz! 2005 Pearson Education, Inc. All rights reserved. 26 2.4 printf ile metin görüntüleme •System.out.printf – J2SE 5.0’ın yeni özelliği – Formatlanmış veri gösterir 9 10 System.out.printf( "%s\n%s\n", “Java programlamaya", “hosgeldiniz!" ); – Format karakterleri • Sabit metin • Format belirleyiciler – gerçek değerin yerini tutar – Format belirleyici %s – string için yer tutar 2005 Pearson Education, Inc. All rights reserved. 1 Outline 3 4 public class Hosgeldin4 5 { 7 public static void main( String args[] ) 8 { 9 10 27 // Fig. 2.6: Hosgeldin4.java System.out.printf( "%s\n%s\n", "Java Programlamaya", "hosgeldiniz!" ); 11 12 } // main metodunun sonu 13 14 } // Hosgeldin4 sınıfının sonu Java programlamaya hosgeldiniz! 2005 Pearson Education, Inc. All rights reserved. 2.5 Başka bir Java uygulaması iki sayının toplanması 28 • Gelecek program – Kullanıcıdan doğal sayı okumak için kütüphaneden Scanner sınıfı kullanılıyor – İki değerin toplamını göstermek için printf kullanılıyor 2005 Pearson Education, Inc. All rights reserved. 1 // Fig. 2.7: Toplama.java 2 // iki sayıyı toplayan program 3 import java.util.Scanner; // Scanner sınıfını kullanıyor 29 Outline 4 5 public class Toplama 6 { 8 public static void main( String args[] ) 9 { 11 import komutu Scanner sınıfını java.util paketinden getiriyor Scanner tipindeki a1 değişkenine ilk değer ataması . Scanner a1 = new Scanner( System.in ); 12 13 int num1; 14 int num2; 15 int toplam; 16 17 System.out.print( "Birinci sayiyi giriniz: " ); 18 num1 = a1.nextInt(); 19 Kullanıcıdan alınan değerin num1’e atanması. 2005 Pearson Education, Inc. All rights reserved. 20 System.out.print( "İkinci sayıyı giriniz: " ); 21 num2 = a1.nextInt(); 30 Outline 22 toplam = num1 + num2; 23 24 System.out.printf( "Toplama sonucu %d\n", toplam ); 25 Toplama.java 26 27 } 28 29 } Birinci sayiyi giriniz: 45 İkinci sayiyi giriniz: 72 Toplama sonucu 117 2005 Pearson Education, Inc. All rights reserved. 2.5 Başka bir Java uygulaması iki sayının toplanması (devam) 3 import java.util.Scanner; 31 // program Scanner sınıfını kullanıyor – import deklerasyonu • Java programlarında kullanılan sınıfların kütüphaneden getirilmesi için kullanılır • Derleyiciye Scanner sınıfının java.util paketinden yüklenmesi gerektiğini söyler 5 6 public class Toplama { – public sınıf Toplama’yı başlatır • Dosya isminin Toplama.java olması gerektiğini hatırlayınız 2005 Pearson Education, Inc. All rights reserved. 32 Çok görülen programlama hataları 2.8 Bütün import deklarasyonları aynı dosyadaki ilk sınıf deklarasyonundan önce yapılmalıdır. import deklarasyonunu sınıfın içinde yapmak syntax error hatası verir. 2005 Pearson Education, Inc. All rights reserved. 33 Hata önleme önerisi 2.7 Bir import deklarasyonunu unutmak “cannot resolve symbol.” hatasını verilmesini sağlar. Bu durum oluşursa import deklarasyonunun olup olmadığını ve import deklarasyonundaki isimlerin doğru olup olmadığını kontrol ediniz. 2005 Pearson Education, Inc. All rights reserved. 2.5 Başka bir Java uygulaması iki sayının toplanması (devam) 11 34 Scanner a1 = new Scanner( System.in ); – Değişken tanımlaması – Değişkenler • Bir değişken hafızanın belirli bir yerinde bir değeri saklar – Kullanılmadan önce tipi ve adı tanımlanmalıdır • a1 değişkeninin tipi Scanner – Programın dışarıdan veri okumasını sağlar • Değişken adı: herhangi bir Java belirteci gibi tanımlanır – tanımlamalar ; ile biter – Değişkene tanımlama sırasında bir ilk değer atamak için • Eşit işareti kullanılır • Kullanıcıdan bir okuma yapmak için kullanılan standard input sınıfı System.in dir 2005 Pearson Education, Inc. All rights reserved. 2.5 Başka bir Java uygulaması iki sayının toplanması (devam) 13 14 15 35 int num1; int num2; int toplam; – num1, num2 ve toplam değişkenlerini int tipinde tanımla • • • • int doğal sayıları tutar (küsüratsız sayılar): örnek, 0, -4, 97 float ve double tipleri ondalıklı sayıları tutabilir char tipi tek bir karakteri tutar : örnek, x, $, \n, 7 int, float, double ve char primitive tiplerdir – Değişkenlerin ne amaçla kullanılacağını açıklamak yararlıdır int num1, num2, toplam; – Aynı tip değişkenler aynı deklerasyonda tanımlanabilir – Virgül ile ayrılmış liste kullan 2005 Pearson Education, Inc. All rights reserved. 36 İyi programlama örneği 2.12 Değişken isimleri küçük harf ile başlamalı ve değişken içindeki kelimeler büyük harfle başlamalıdır. Örneğin firstNumber değişkeni küçük harf ile başlamış ve Number kelimesi büyük yazılmış. 2005 Pearson Education, Inc. All rights reserved. 2.5 Başka bir Java uygulaması iki sayının toplanması (devam) 17 37 System.out.print( “Birinci sayiyi giriniz: " ); – Mesaj kullanıcının bir aksiyon yapmasını belirtiyor – java.lang paketi 18 num1 = a1.nextInt(); – nextInt‘in sonucu olarak num1 değişkenine değer girilir. = operatörü kullanılır • Atama yapar • = ikili operatör – iki değer lazım – Sağdaki ifade hesap edilip soldaki değişkene atanır • num1= a1.nextInt( )’ın değerini alır 2005 Pearson Education, Inc. All rights reserved. 38 Yazılım Mühendisliği Gözlemi 2.1 java.lang paketi, her Java programında otomatik olarak import edilir; java.lang Java API’ı içinde tek import deklerasyonu gerektirmeyen pakettir. 2005 Pearson Education, Inc. All rights reserved. 2.5 Başka bir Java uygulaması iki sayının toplanması (devam) 20 39 System.out.print( “İkinci sayiyi giriniz: " ); – Önceki satır ile benzer • Kullanıcıya ikinci değeri girmesini söyler 21 num2 = a1.nextInt(); – Önceki satır ile benzer • num2 değişkenine değer girilir 23 toplam = num1 + num2; – Atama • num1 ve num2’nin toplamı hesaplanır (sağ kısım) • atama operatör = toplamı sum değişkenine atamak için kullanılır 2005 Pearson Education, Inc. All rights reserved. 2.5 Başka bir Java uygulaması iki sayının toplanması (devam) 25 40 System.out.printf( “Toplama sonucu %d\n: " , sum ); – System.out.printf sonucu görüntülemek için kullanılır – Format belirleyici %d • Bir int değeri için yer tutar System.out.printf( “Toplama sonucu %d\n: " , ( num1 + num2 ) ); – Hesaplamalar printf içinde yapılabilir – num1 + num2 dışına parantez koymak gerekmez 2005 Pearson Education, Inc. All rights reserved. 41 2.6 Hafıza konuları • Değişkenler – Her değişkenin bir ismi, tipi, boyutu ve değeri vardır • İsim hafızadaki bir yeri temsil eder – Değişkene atanan yeni değer eski değeri siler – Değişkenleri hafızadan okumak değeri değiştirmez 2005 Pearson Education, Inc. All rights reserved. 42 Fig. 2.8 2005 Pearson Education, Inc. All rights reserved. 43 Fig. 2.9 | 2005 Pearson Education, Inc. All rights reserved. 44 Fig. 2.10 | 2005 Pearson Education, Inc. All rights reserved. 45 2.7 Aritmetik • Aritmetik hesaplamalar birçok programda kullanılır – Kullanım • * çarpma için • / bölme için • % kalanı bulmak için • +, - – Tamsayı bölmede kalan atılır 7 / 5’in sonucu 1 dir – Kalan operatörü % kalanı verir 7 % 5 sonucu 2 dir 2005 Pearson Education, Inc. All rights reserved. 46 Java operation Arithmetic Algebraic operator expression Java expression Addition + f+7 f + 7 Subtraction – p–c p - c Bm b * m Multiplication * Division / x / y or or x ÷ y x / y Fig. 2.11 | Arithmetic operators. 2005 Pearson Education, Inc. All rights reserved. 47 2.7 Aritmetik (Devam) • Operatör öncelikleri – Bazı aritmetik operatörler diğerinden daha önce kullanılır (örnek, çarpma toplamadan önce) • Gerektiğinde parantez kullan – Örnek: Üç değişkenin ortalamasını bulmak • Yanlış : a + b + c / 3 • Doğrusu : ( a + b + c ) / 3 2005 Pearson Education, Inc. All rights reserved. 48 Operator(s) Operation(s) Order of evaluation (precedence) * Çarpma / Bölme % Mod alma + Toplama - Çıkarma Öncelikleri vardır. Yanyana sıralanırlarsa önce soldaki yapılır Yukarıdakilerden sonra yapılırlar. Topalama ve çıkarma yanyana ise önce soldaki yapılır. Fig. 2.12 | Precedence of arithmetic operators. 2005 Pearson Education, Inc. All rights reserved. 49 Fig. 2.13 | Order in which a second-degree polynomial is evaluated. 2005 Pearson Education, Inc. All rights reserved. 2.8 Karar verme: Eşitlik ve Karşılaştırma operatörleri 50 • Koşul – İfade doğru(true) veya yanlış(false) olabilir •if deyimi – Bir koşul doğru( true) ise, if deyiminin gövdesi çalıştırılır. – if deyiminden sonra, ilk gelen komutla devam edilir – if içindeki koşul eşitlik veya karşılaştırma operatörü yardımıyla yazılır. 2005 Pearson Education, Inc. All rights reserved. 51 Standart Java Eşitlik operatörleri Karşılaştırma operatörleri ≤ Javada Koşul Açıklama == != x == y x != y x , y ye eşit ise x , y ye eşit değil ise > < >= <= x x x x x,y x,y x,y x,y > y < y >= y <= y den büyük ise den küçük ise den büyük veya eşit ise den küçük veya eşit ise Fig. 2.14 | Eşitlik ve karşılaştırma operatörleri. 2005 Pearson Education, Inc. All rights reserved. 1 4 5 6 7 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 // Fig. 2.15: Karsilastirma.java import java.util.Scanner; public class Karsilastirma { public static void main( String args[] ) { Scanner a1 = new Scanner( System.in ); int num1; int num2; System.out.print( "Birinci sayiyi giriniz: " ); num1 = a1.nextInt(); 52 Outline Karsilastirma.j ava Class Karsilastirma System.out.print( "İkinci sayiyi giriniz: " ); num2 = a1.nextInt(); if ( num1 == num2 ) System.out.printf( "%d == %d\n", num1, num2 ); if ( num1 != num2 ) System.out.printf( "%d != %d\n", num1, num2 ); if ( num1 < num2 ) System.out.printf( "%d < %d\n", num1, num2 ); 2005 Pearson Education, Inc. All rights reserved. 31 32 33 if ( num1 > num2 ) System.out.printf( "%d > %d\n", num1, num2 ); 53 Outline 34 if ( num1 <= num2 ) 35 System.out.printf( "%d <= %d\n", num1, num2 ); 36 Karsilastirma.java 37 if ( num1 >= num2 ) 38 System.out.printf( "%d >= %d\n", num1, num2 ); 39 40 41 } 42 43 } Birinci sayiyi giriniz: 777 İkinci sayiyi giriniz: 777 777 == 777 777 <= 777 777 >= 777 Program çıktısı Birinci sayiyi giriniz: 1000 İkinci sayiyi giriniz: 2000 1000 != 2000 1000 < 2000 1000 <= 2000 Birinci sayiyi giriniz: 2000 İkinci sayiyi giriniz: 1000 2000 != 1000 2000 > 1000 2000 >= 1000 2005 Pearson Education, Inc. All rights reserved. 57 Sık yapılan hatalar 2.10 Eşitlik operatörünün atama operatörü ile karıştırılması, ==, karşılaştırma operatörüdür, =,atama operatörüdür. 2005 Pearson Education, Inc. All rights reserved. 58 Sık yapılan hatalar 2.11 ==, !=, >= ve <= aralarına boşluk konulması sentaks hatasına sebep olur,ÖR: = =, ! =, > = ve < = hatalı yazılışmaldır. 2005 Pearson Education, Inc. All rights reserved. 59 Sık yapılan hatalar 2.12 Karşılaştırma operatörlerinin yerlerinin değiştirilmesi != ve =! , >= ve <=, => ve =< 2005 Pearson Education, Inc. All rights reserved. 60 Operator * / + - < <= == != = Tipi % > >= Soldan sağa çarpım Soldan sağa toplam Soldan sağa karşılaştırma Soldan sağa eşitsizlik Sağdan sola atama Fig. 2.16 | 2005 Pearson Education, Inc. All rights reserved.