Güz 2007 BMU111 – 2. Lab Föyü Java ile Programlamaya Giriş Bu labda Java ile programlamaya giriş yapacağız. Laboratuvarda yazacağınız programları C kök dizininde oluşturacağınız BMU111 adındaki bir klasöre kaydediniz. Java Programlarının yazılması, derlenmesi ve çalıştırılması Java programları uzantısı java olan dosyalara kaydedilirler. Bu dosyaların sistemin anlayıp işletebileceği byte code haline gelebilmesi için Java derleyicisi kullanılarak derlenmesi gerekmektedir. Java derleyicisi JDK (Java Development Toolkit) kurulumu altındaki bin klasöründe bulunur. Örneğin laboratuvarımızda kurmuş olduğumuz JDK 6.2 programı C:\Program Files\Java\jdk1.6.0_02 klasöründedir. Java derleyicisi javac.exe programı da bu klasörün içindeki C:\Program Files\Java\jdk1.6.0_02\bin klasöründedir. Eğer komut satırını açıp javac yazdığınızda bu komut tanınmıyor şeklinde bir mesaj alıyorsanız sistemin PATH değişkenine JDK\bin klasörünü eklemeniz gerekmektedir. Bunun için komut satırından PATH= C:\Program Files\Java\jdk1.6.0_02\bin yazmanız gerekmektedir. Bir Java programını çalıştırmak için önce javac komutuyla derlemeli daha sonra java komutu kullanarak çalıştırmalısınız. Bu hafta bu derleme işini komut satırını kullanarak yapacağız. Bu işlem için aşağıda anlatılanları adım adım yapmanız gerekmektedir. 1- Aşağıdaki örnekleri bir Text editörüne yapıştırıp dosyaya class isimleri ile aynı ismi vererek kaydedin. Örneğin TextPad’i açın birinci örneği aşağıdan kopyalayarak yapıştırın, File – Save menüsünü açın, birinci örnekteki class ismi Lab2_1 olduğu için bu ismi vererek kaydedin. Dosyalarınızı C:\BMU111 klasörüne kaydedin. 2- Windows Start menüsünden Çalıştır sekmesine tıklayıp açılan pencerede cmd yazın ve enter’a basın. Komut satırı açıldıktan sonra (cd C:\BMU111) komutunu işletin. 3- Son olarak az önce kaydetmiş olduğunuz java dosyasını aşağıdaki gibi derleyin: javac Lab2_1.java 4- Derleme işlemi bittikten sonra aynı klasörde Lab2_1.class adında yeni bir dosya oluşturulacaktır. Şimdi bu dosyayı java komutu ile çalıştırın: java Lab2_1 Komutun sonucunda programın çıktısını göreceksiniz. Benzer şekilde diğer örnekleri de derleyip çalıştırın. Örnek 1 Bu örnek çalıştırıldığı zaman komut satırına "Hos Geldiniz" yazdıran basit bir Java programıdır. Program Javada class tanımlamasının nasıl yapıldığını ve main metodunun nasıl kullanıldığını göstermektedir. Galip Aydın 01-10-2007 Page 1 Güz 2007 BMU111 – 2. Lab Föyü public class Lab2_1 { public static void main(String[] args) { System.out.println("Hos Geldiniz"); } } Java programları class olarak adlandırılan bloklar içerisinde yazılır. Bu bloklar içerisinde o programın yapması gerekenlerin yazıldığı metodlar yazılır. Bir Java programının çalıştırılması için main adı verilen bir fonksiyon yazılır. Main metodu public static void main(String[] args) şeklinde tanımlanır. Burda kullanılan tanımlamaların anlamı daha sonraki derslerde anlatılacaktır. Basit olarak Public terimi bu metoda başka metodlar veya java sınıfları tarafından ulaşılabileceğini ifade eder. Static terimi bu metodun sadece bu sınıfa ait olduğunu ve hafızada sadece bir kopyasının tutulacağını gösterir. İçinde main metodu olan bir Java dosyası çalıştırıldığı zaman ilk olarak bu metod uyarılır ve içerisindeki komutlar işletilir. Yukarıdaki örnekte main metodunun içindeki tek komut ekrana yazı yazan System.out.println komutudur. Bu komut javanın hazır fonksiyonlarından birini kullanarak verilen yazıyı ekrana yazar ve yeni satıra geçer. Örnek 2 2. Örnekte klavyeden giriş işleminin nasıl yapılacağı gösterilmektedir. Javada klavyeden girilen karakterlerin okunması için birkaç değişik yöntem vardır. Örnekte gösterilen yöntem Javanın 5.0 versiyonu ile kullanılmaya başlanmıştır. java.util paketinde yer alan Scanner programı kullanılarak kullanıcının girdiği sayılar, karakterler veya kelimeler okunabilir. Scanner giris = new Scanner(System.in); Yukarıda görüldüğü gibi konsoldan girilen karakterleri okumak için standart girişe (System.in) bağlanan bir Scanner objesi oluşturulur. Bu objeye örnek 2’de giris adı verilmiştir. Daha sonra Scanner sınıfının bize sağladığı metotlardan uygun olanını kullanıp klavye girişini okuyabiliriz. isim = giris.nextLine(); bu örnekte kullanılan nextLine() metodu klavyeden girilen bir satırı okur ve isim değişkenine atar. Sonraki satırda kullanıcıdan alınan isim tekrar cıkışa gönderilmiştir: System.out.println("Merhaba " + isim); Burada dikkat çeken nokta System.out metodunda + işaretinin kullanımıdır. Burada toplama işareti iki kelimeyi birleştirmek amacıyla kullanılmıştır. Bu işlem matematiksel toplamadan farklı olarak verilen Stringleri arka arkaya ekler. Galip Aydın 01-10-2007 Page 2 Güz 2007 BMU111 – 2. Lab Föyü import java.util.Scanner; /* * Basit giris/cikis islemleri * Klavyeden girilen ismi okur ve bir degiskene atar * */ public class Lab2_2 { public static void main(String[] args) { //Gireceginiz ismi tutacak bir degisken yaratin String isim; //Klavyeden girilen ismi okuyacak fonksiyon Scanner giris = new Scanner(System.in); //Kullaniciya mesaj yazarak ismini girmesini isteyin System.out.println("Adin ne?"); //Simdi kullanicinin adini isim degiskenine atayalım isim = giris.nextLine(); //Kullaniciya selam verelim System.out.println("Merhaba " + isim); } } Örnek 3 Java System.out metodu ile çıkış yazdırılırken kullanilabilecek bazı escape karakterleri şunlardır: \" çift tırnak \' tek tırnak \\ ters slash \n yeni satır \r bulunduğu satırın başına gider \t Tab Örnek 3’te yeni satır ve tab karakterleri kullanarak ekrana biçimlenmiş çıktı yazdırmayı göreceğiz. Programda ilk olarak herbir satır için birer adet olmak üzere beş adet System.out metodu kullanılmıştır. İkinci metod ise tek bir System.out metodu ve özel karakterler yardımıyla aynı çıktının elde edilebileceğini göstermektedir. Galip Aydın 01-10-2007 Page 3 Güz 2007 BMU111 – 2. Lab Föyü /** * Asagida gorulen ciktiyi veren program * * ADI SOYADI NO NOTU * ---------------------------* Ali Demir 01 AB * Veli Gocer 02 BB * Husnu Aslan 03 CC * */ public class Lab2_3 { public static void main(String[] args) { System.out.println("Birinci Metod"); System.out.println(""); System.out.println("ADI SOYADI NO NOTU"); System.out.println("----------------------------"); System.out.println("Ali Demir 01 AB"); System.out.println("Veli Gocer 02 BB"); System.out.println("Husnu Aslan 03 CC"); System.out.println("\nIkinci Metod\n"); System.out.println("ADI\tSOYADI\tNO\tNOTU\n" + "----------------------------\n" + "Ali\tDemir\t01\tAB\n" + "Veli\tGocer\t02\tBB\n" + "Husnu\tAslan\t03\tCC"); } } Galip Aydın 01-10-2007 Page 4 Güz 2007 BMU111 – 2. Lab Föyü Örnek 4 /** Sadece bir adet System.out.println kullanarak asagidaki sekli yazdiriniz * * * * * * * * * * * * */ public class Lab2_4 { public static void main(String[] args) { System.out.println( " *\n" + " * *\n" + " * *\n" + " * *\n" + " * *\n" + " * *\n" + " *\n"); } } Lab Çalışması 1 Kullanıcıdan sırayla adı, soyadı, doğum yeri, doğum tarihini alan daha sonra da aşağıdaki çıktıyı veren bir program yazınız: 01-01-1987 tarihinde "Elazıg’da" doğan "Ali Demir" 20 yaşındadır. Doğum tarihi sırayla gün, ay, yıl şeklinde alınacaktır. Bu rakamları değişkenlere atamak için Scanner classının nextInt() metodunu kullanabilirsiniz. Yazdığınız programı Lab2_5.java ismiyle kaydediniz. Kullanıcıyla iletişim aşağıdaki şekilde olacaktır: Adiniz: Ali Soyadiniz: Demir Dogum Yeriniz: Elazıg Dogum tarihiniz, Galip Aydın 01-10-2007 Page 5 Güz 2007 BMU111 – 2. Lab Föyü Gun: 12 Ay: 10 Yıl: 1987 12-10-1987 tarihinde "Elazıg’da" dogan "Ali Demir" 20 yasindadir. Programı yazarken escape karakterlerine ve kullanıcının yaşını bulmak için çıkarma işlemi yapmanız gerektiğine dikkat ediniz. Lab Çalışması 2 Kullanıcıdan aldıgı bilgilere göre aşağıdaki şekilde bir sipariş listesi yazdıran bir program yazınız: Adiniz: Ali Soyadiniz: Demir Kac kg Domates: 3.5 Kac kg Biber: 2.5 Kac kg Patlican: 4.7 Musteri Adi: Ali Demir Siparis Tarihi: 01-10-2007 Siparis Detaylari ------------------------------Domates Biber Patlican 3.5 kg 2.5 kg 4.7 kg Afiyet Olsun. Ondalık sayıları saklamak için float sayı türünü, klavyeden ondalık sayıları okumak için ise Scanner classının nextFloat() metodunu kullanınız. Galip Aydın 01-10-2007 Page 6