bilgisayarda program yazmaya hazırlık yapmak
bilgisayarda program yazmaya hazırlık yapmak Ne90'dan bulabilirsiniz
Program Yazmaya Giri��
Programlamaya yeni ba�layanlar i�in, ��renmenin en iyi yolu kitaplarda yaz�lan k���k programlar� usanmadan yazmak, derlemek ve �al��t�rmakt�r. Bu k���c�k programlar, bilgisayar�n yapabilece�i b�t�n i�leri size ��retecektir. Unutmay�n�z ki, b�y�k programlar bu k���c�k programlar�n birle�mesiyle olu�ur. O nedenle, bu derste yaz�lacak k���k programlar�n, programlamay� ��renmenin biricik yolu oldu�unu akl�n�zdan ��karmay�n�z. Burada izlenecek a�amalar�n herhangi birisinde yap�lacak yanl��lar, ��renciyi b�kt�rmamal�d�r. Aksine, programlamay� �o�unlukla yapt���m�z yanl��lardan ��reniriz. O nedenle, yanl�� yapmaktan korkmay�n�z. �stelik yeni bir �ey ��renirken bilerek yanl��lar yap�p onun do�urdu�u sonu�lar� g�rmek e�lenceli ve ��retici olabilir.�
Bilgisayar�n�zda� JSDK� n�n �kurulu oldu�unu varsay�yoruz. Bunu kurmak istemeyenler Java derleyicisi ile de yetinebilirler. Biz bu derste Java JSDK�n�n kuruldu�unu ve gerekli konfig�rasyonlar�n yap�ld���n� varsay�yoruz. E�er bu i�ler yap�lmam��sa, �nce kurulum i�lemlerini yapmal�s�n�z. Kurulumun nas�l yap�laca�� ilgili web sayfalar�ndan g�r�lebilir. Windows ��letim Sisteminde JSDK kurulumu i�in Birinci B�l�me bak�n�z.
�lerleyen haftalarda Eclipse, Netbeans, vb. bir b�t�nle�ik uygulama geli�tirme arac� (IDE- Integrated Development Environment) kullanmaya ba�layaca��z. Bu t�r ara�lar�n uygulama geli�tirmede ne kadar yararl� ve kolay kullan�l�r oldu�unu g�receksiniz. Ama bu t�r bir arac� hemen kullanmaya ba�lamak, binan�n tepesine asans�rle ��kmak gibidir. A�a�� katlarda ne olup bitti�ini anlamak i�in, en a�a��dan ba�lay�p medivenleri ad�m ad�m ��kmal�y�z. Ba�lang��ta ataca��m�z bu zahmetli ad�mlar, kaynak program�n y�r�t�lebilir bir programa nas�l d�n��t���n� anlamam�z� sa�layacakt�r.
O nedenle, ilk derslerde hi�bir g�rsel aray�z kullanmadan, i�lerimizi do�rudan do�ruya i�letim sisteminin komutlar�yla g�rece�iz. B�yle yapabilmek i�in, Windows�un Komut �stemi kipini a�acak ve DOS (Disk Operating System) komutlar� yazaca��z. Windows 7 ��letim sisteminde Komut �stemi�ni a�a��daki iki yoldan birisiyle a�abilirsiniz:
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.
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:�
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.
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�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).
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.
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.
// 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.
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.
Yazı kaynağı : www.baskent.edu.tr
Yorumların yanıtı sitenin aşağı kısmında
Ali : bilmiyorum, keşke arkadaşlar yorumlarda yanıt versinler.