Search

Java Program Kodlama

16 Ocak 2015 Cuma

SMALL JAVA PROGRAMS
Başlat -> Çalıştır  sekmelerine basınca açılan pencerede Search Programs and Files: -----   kutucuğuna  cmd  yazıp  entere basınız.
Başlat -> Tüm Programlar -> Donatılar sekmelerinden sonra açılan alt pencereden Komut İstemi (Command Prompt) sekmesine tıklayınız.
Windows’un farklı sürümleri için de benzer işler yapılabilir. Yukarıdakilerden birisini yaptığınız zaman, ekranda siyah zemin üzerine beyaz yazılar yazılan Komut İstemi (Command Prompt) penceresinin açıldığını göreceksiniz. Bu pencereye istediğiniz dos komutunu yazabilir ya da yürütülebilir (executable) herhangi bir programı çalıştırabilirsiniz.
Şimdi yazdığımız programları içine kaydedeceğimiz bir dizin yaratalım. İstediğiniz sürücüde istediğiniz adla bir dizin ya da alt dizin yaratıp Java programlarınızı oraya kaydedebilirsiniz. Programlarımızı C: sürücüsünde yaratacağımız jprg dizini içine kaydetmek isteyelim. Bunun için şu komutları yazacağız:
md C:\jprg
cd C:\jprg
Bunlardan birincisi olan md (make directory) komutu istediğimiz dizini yaratır. İkincisi olan cd (change directory) komutu ise o dizini etkin kılar. Basit bir deyişle, sistemin yazma/okuma kafası o dizin içine girer ve orada yazabilir ve okuyabilir. Dizine girdiğimizi, Komut İstemi ekranında beliren
C:\jprg>
görüngesinden anlarız.  Bu simgeler daima Komut İstemi penceresinde görünecektir; etkin olan dizini gösterir. Dos komutlarını  c:\jprg>  etkin (prompt) simgesinden hemen sonra yazacağız. Şimdi program yazmamıza yardım edecek basit bir editör açalım. Komut İstemi penceresinde edit yazıp Enter tuşuna basınız:
edit
Eğer editör penceresi açılmazsa, sisteminiz edit.com  dosyasını görecek biçimde ayarlı değildir. Bunu PATH çevre değişkeni ile ayarlayabilirsiniz. Ama, şimdi zaman kaybetmemek için, edit.com  dosyasının bulunduğu adresi tam yazarak, editörü açabiliriz:
C:\WINDOWS\system32\edit 
Açılan editörde aşağıdaki programı yazıp Dosya sekmesinden Farklı Kaydet seçeneğine basınız. Açılan alt pencerede Dosya Adı yerine Program001.java yazıp Enter tuşuna basınız. İsterseniz yazma ve kaydetme işini Notepad ile de yapabilirsiniz.
Program001.java
class Program001
{
}

İpucu
Java kaynak programlarının dosya adlarının uzantısı .java olmalıdır.
Programa verilen dosya adı ile programda tanımlanan class adı aynı olmalıdır.
Tabii, bir programda birden çok class olabilir. Burada söylenen şey, programdaki iç sınıfların hepsini içeren en dıştaki class’ın adı ile dosya adının aynı olması gereğidir. Bunun nasıl yapıldığını ilerideki örneklerimizde daima göreceğiz.
Java  nesne yönelimli bir dil olduğu için, hemen her şey sınıflar (class) içine yazılır. Programda kullanacağımız değişkenler ve metotlar mutlaka bir ya da birden çok sınıf  içinde tanımlanmalıdır. Bunların nasıl olacağı, bu dersin asıl konusudur ve onları adım adım öğreneceğiz.
Yukarıda yazdığımız Program001.java dosyası için tanımlanan Program001 sınıfının içi boştur. Dolayısıyla, bu sınıfın hiçbir iş yapmayacağı açıktır. Böyle olduğunu birazdan göreceğiz. javac.exe  derleyicisi ile programı derlemek için
javac Program001.java
yazıp Enter tuşuna basınız. Eğer sisteminiz  javac.exe  derleyicisini görmüyorsa, derleyicinin bulunduğu adresi yazabilirsiniz.
C:\jdk\bin\javac  Program001.java
Derleyici Program001.class adlı bytecode dosyasını yaratacaktır. (Bunu görmek için DOS kipinde dir komutunu çalıştırınız.)
Şimdi Program001.class dosyasını yorumlamak (yürütmek, icra) için java.exe yorumlayıcısını kullanacağız:
              java Program001
Yorumlayıcı bize aşağıdaki iletileri gönderecektir.
C:\jprg\src>javac Program001.java

C:\jprg\src>java Program001
Exception in thread "main" java.lang.NoClassDefFoundError: Program001
Caused by: java.lang.ClassNotFoundException: Program001
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: Program001.  Program will exit.

C:\jprg\src>
Bu iletinin ilk satırı javac.exe derleyicisinin Program001.java dosyasının derlemesi için verdiğimiz komuttur. Derleyici bu komuta karşılık bir hata olduğu iletisi göndermemiştir. O halde Program001.class adlı bytecode dosyasının yaratıldığını anlayacağız.
İkinci satır java.exe yorumlayıcısının Program001.class bytecode’unun yorumlaması (yürütülmesi) için verilen komuttur. Bu komuttan sonra gelen iletiler, komutun yürütülemediğini ve yürütülemeyiş nedenlerini açıklayan satırlardır.  
Üçüncü satır, java.exe yorumlayıcısının programı yürütmek için gerekli olan main() metodunu bulamadığını söylüyor.
Programın yürütülemeyiş nedeni, üçüncü satırdaki ileti ile bildirilmektedir. Ondan sonraki satırları şimdilik düşünmeyiniz. Onlar, yorumlayıcının kendi iç işlevlerini ilgilendiren şeylerdir.
İpucu
Derleyici kaynak programda sözdizimi (syntax) hatası olduğunda programı derleyemez. Derleyici, derleyemediği her programda, sözdizimi yanlışlarını satır numarası yanında olası hatanın ne olduğunu yazarak bize iletir.  Bu iletiler, programın düzeltilmesinde (debug)  çok işe yararlar.
Ama, şimdilik bunları hiç düşünmeden, derleyicinin bizden istediği giriş noktasını oluşturmaya çalışalım.
Java uygulamaları bir main() metodu (fonksiyon) tarafından eyleme geçirilir. Programın yapacağı bütün işler bu main() metodu tarafından belirlenir. Buna programın giriş noktası diyoruz. Şimdi yukarıdaki programımıza  main()metodunu ekleyelim ve Program002.java adıyla kaydedelim.
Program002.java
class Program002
{
    public static void main(String[] args)
    {
    }
}
Sonra programı derleyelim:
javac Program002.java
Derleyicimiz gene hiç hata (error) iletisi göndermedi. Demek ki programı derledi ve yürütülebilir bytecode’a çevirdi. Gerçekten Dos kipinde
dir
komutu verirseniz, c:\jprg dizini içinde Program002.class adlı bytecode dosyasını göreceksiniz.  Bu dosyayı yorumlamak için
java Program002
komutunu yazmanız yetecektir. Bunu yazdığınızda, program çalışır, ama siz ekranda bir şey göremezsiniz. Çünkü, programın içine ekrana çıkacak bir şey yazmadık. Şimdi bunu yapalım.
İpucu
Bir dili öğrenirken işin pedagojisi ile sistematiği asla paralel gitmez. Bu nedenle, bazen pedagojiden bazen sistematikten ödün vermek gerekir. Böyle durumlarda, görünmez uzaylı dostumuz Uzay bize ipucu verecektir. Şimdilik Uzay’ın bize verdiği ipuçlarını kullanalım. Zamanla, onları daha iyi kavrayacağız.
İpucu
Ekrana bir şey yazdırmak için System.out.print() ya da System.out.println() metotları kullanılır. İkisi de aynı işi yapar, ancak birincisi isteneni yazdıktan sonra, yazdığı satırın sonunda bekler, ikincisi isteneni yazdıktan sonra satırbaşı yapar; yani alttaki satırın başına geçer.
Şimdi bu ipucuna göre programımızı düzeltelim.
Program003.java
    class Program003
    {
        public static void main(String[] args)
        {
            System.out.println("Merhaba Java! ")
        }
    }
Bu programı kaydettikten sonra derleyelim:
javac Program003.java
Bu kez, Komut istemi penceresinde şunu göreceğiz: 

C:\jprg\src>javac Program003.java
Program003.java:5: ';' expected
            System.out.println("Merhaba Java! ")
                                               ^
1 error

Bu iletinin ikinci satırı kaynak programın 5-inci satırında hata olduğunu, hatanın ‘;’ simgesinin yokluğu olduğunu söyler. Üçüncü satırda ise hatanın yeri  (^) simgesi ile işaret edilmektedir.
İpucu
Java dilinde her deyimin sonuna  (;) konulur.
Derleyicinin hata iletisi kesinlikle kaynak programda bir hata olduğunun belirtir. Tabii her programcının yaptığı hatayı tam belirleyemeyebilir. Ama kaynak programdaki hatayı kategorik olarak bildirir ve yerini doğru işaret eder. O nedenle, hatayı işaret edilen yerde aramalıyız.
Şimdi eksik olan (;)  yazarak programımızı düzeltelim (bu işleme ‘debug’  denir).
Program004.java
    class Program004
    {
        public static void main(String[] args)
        {
            System.out.println("Merhaba Java! ");
        }
    }
Bu programı Program004.java  adıyla kaydedelim ve derleyelim:
javac Program004.java
Derleyicimiz başka bir hata iletisi göndermez. Öyleyse yorumlanabilir bytecode dosyasını yaratmıştır.
Gerçekten
dir
komutunu yazarsak, C:\jprg dizininde Program004.class  bytecode dosyasının yaratıldığını görebiliriz. Şimdi bu dosyayı koşturmak için,
Program004
yazıp Enter tuşuna basarsak, ekranda
Merhaba  Java!
yazısını göreceğiz.
Buraya kadar dört adımda ekrana ‘Merhaba Java!’  tümcesini yazdıran bir program yazdık. Bu bir tümce yerine bir roman ya da karmaşık matematiksel işlemlerden oluşan deyimler de olabilirdi. Uzun ya da kısa metinler veya basit ya da zor işlemler için yapacağımız iş hep budur. Bu biçimde yazacağımız küçük programlarla Java dilinin bütün hünerlerini öğreneceğiz. Büyük programların bu küçük programların uyumlu birleşmesinden oluştuğunu hiç aklımızdan çıkarmayalım.  O nedenle, bütünleşik bir uygulama geliştirme aracını (IDE) kullanmaya başlamadan, Java dilinin temellerini öğrenmeye devam edeceğiz.

Kaynak Programın Biçemi
Programlama dillerinde, belirli bir işi yapmak üzere yazılan sözdizimi (kod) parçasına deyim denir. Örneğin,
          System.out.println("Merhaba Java "); 
bir deyimdir. Java dilinde bir deyimin bittiğini derleyiciye bildirmek için, o deyimin sonuna (;) konulur. Bir deyimdeki farklı sözcükler birbirlerinden en az bir boşluk karakteri ile ayrılır. Kaynak programda ardışık yazılan birden çok boşluk karakterleri tek boşluk olarak algılanır. Benzer olarak, tablar, satırbaşları ve boş satırlar birer boşluk karakteri olarak yorumlanır. Dolayısıyla, yukarıdaki programı
Program004a.java
class Program004a { public static void main(String[] args) {System.out.println("Merhaba Java! );}}
biçiminde ya da
Program004b.java
class
Program004b
{
Public static

void
main()

{
System.out.println("Merhaba Java! ");
}
}
biçiminde de yazabiliriz. Derleyici, kaynak programı derlerken birden çok tekrar eden boşluk karakterlerini, tab ve satırbaşlarını birer boşluk karakteri sayacaktır.
Buraya kadar Java diline ait bazı kavramları açıklamadan kullandık. Bu noktada basit açıklamalar yapmak yararlı olabilir.
Sınıf (class)
Sınıflar (class) Nesne Yönelimli Programlamanın (Object Oriented Programming) temel taşlarıdır. Programın kullanacağı her değişken, her deyim, her metot (fonksiyon) mutlaka bir sınıf içinde tanımlanmalıdır. Bir sınıf içinde tanımlanan metotlar (fonksiyonlar) ve değişkenler o sınıfın öğe'leridir (member). Karışmamaları için, bir sınıfta aynı adı taşıyan iki öğe olamaz (aşkın öğeler kavramını ileride göreceğiz).
Bloklar
Kaynak program bir ya da bir çok sınıftan oluşur. Sınıfların her biri bir bloktur. Bir sınıf içindeki her metot (fonksiyon) bir bloktur. Örneğin, yukarıdaki programın tamamından oluşan
class Program004
{
}

bir bloktur. Benzer olarak,

public static void main(String[] args)
{
}

metodu da bir bloktur. main(){ } bloku,  class Program004.java{ }  blokunun içindedir. Bu tür bloklara iç-içe bloklar diyoruz.  Bir blok içinde gerektiği kadar iç-içe bloklar oluşturabiliriz. Bir programda birden çok sınıf ve bir sınıf içinde birden çok blok olabilir. Bloklar, adına blok parantezleri diyeceğimiz { } simgeleri içine yazılır. Bazan main(){ } blokunda olduğu gibi blok parantezlerinin önüne blok adı gelebilir. Her sınıf (class) ve her alt sınıf bir bloktur. Bir sınıf içinde yer alan her metot (fonksiyon) bir bloktur. İleride göreceğimiz if, case ve döngü yapılarının her birisi bir bloktur. Bir sınıf içinde birbirlerinden bağımsız bloklar seçkisiz sırada alt-alta yazılabilir. Ancak iç-içe olan bloklar, istenen işlem sırasını izleyecek uygun sırayla iç-içe konur. İç-içe blok yazılırken, en içten dışa doğru blokun başladığı ve bittiği yerleri belirten blok parantezlerinin ({ }) birbirlerini karşılaması sağlanmalıdır. Bu yapılmazsa derleme hatası doğar. İç-içe bloklarda, işlem öncelikleri en içten en dışa doğru sıralanır.
Derleyici kaynak programın biçemine (format) değil, sözdizimine bakar. Ama kaynak programı hem kendimiz hem de başka programcılar için kolay okunur biçimde yazmak iyi bir alışkanlıktır. İç-içe giren blokları  birer tab içeriye almak, alt-alta yazılan bloklar arasına birer boş satır koymak, kaynak programın, programcı tarafından kolay okunup anlaşılmasını sağlar. Özellikle, uzun programlarda düzeltme (debug) ya da güncelleme (update) yaparken, kaynak programın yazılış biçemi işin kolay ya da zor yapılmasına neden olur.
Programa Açıklama Ekleme
Kaynak programımızın biçemi bilgisayar için değil, onu okuyan kişiler için önemlidir, demiştik. Büyük bir programın kaynağının kolay anlaşılır olmasını sağlamak programcının ahlâki sorumluluğundadır. Bunu sağlamak yalnızca programın biçemiyle olmaz. Büyük programlar için sınıfların, metotların, değişkenlerin işlevleri ayrıca açıklanmalıdır. Büyük yazılım firmaları programdaki her ayrıntıyı açıklayan döküman hazırlarlar. Böylece, yıllar sonra programcılar değişse bile, o dökümanlara bakılarak, kaynak program üzerinde değişiklikler, iyileştirmeler yapılabilir.
Java dilinde programa açıklama eklemek için iki yöntem kullanırız. Bu yöntemler C, C++ ve java gibi bir çok dilde de var olan yöntemlerdir.
Tek satır açıklaması
// simgesinden sonra satır sonuna kadar yazılanlar derleyici tarafından işlenmez. Bir satırın bütününü ya da bir satırın ortasından sonuna kadar olan kısmı açıklamaya koyabiliriz:
// Bu metot net ücretten gelir vergisini hesaplar
// System.out.println("Merhaba java!");
return netÜcret;   // metodun değeri netÜcret 'tir
Birincide satırın tamamı bir açıklamadır. Örneğin, gelir vergisi hesaplayan bir metodun başladığı satırdan önceki satıra konulabilir, böylece metodun ne iş yaptığı her okuyan tarafından anlaşılır.
İkincide, genellikle program yazarken bazı deyimlerin programa konulup konulmamasının etkisini görmek için, programcının sık sık başvurduğu bir yöntemdir. Bir deyimin başına  // simgelerini koyarak o deyimi derleyicinin görmesini engelleyebilirsiniz.
Üçüncüde, önce bir deyim yazılmış, deyimin bittiği yerde // simgesi konulmuştur. Derleyici deyimi görür ve işler, ama // simgesinden sonra satır sonuna kadar yazılanları görmez. Bu yöntemle, bir deyimin ne iş yaptığını kolayca açıklayabiliriz.
Çoklu satır açıklaması 
Bazan yapacağımız açıklama tek satıra sığmayabilir. O zaman ardışık açıklama satırlarını /*   */  simgeleri arasına alırız.
/*
Bu sınıf 20 Ağustos 2008 tarihinde
Java  ile Nesne Programlama
kitabının Onikinci Bölümü için yazılmıştır.
*/
Bu yöntem çok satırlı açıklamalar için kullanıldığı gibi, program yazarken ardışık satırlardan oluşan bir blokun, bir metodun, bir sınıfın programda olup olmamasının etkisini görmek için programcının geçici olarak başvurduğu önemli bir araçtır.



Hiç yorum yok:

Yorum Gönder