JAVA BİLGİSAYAR DİLİYLE PROGRAMLAMA

565
JAVA BİLGİSAYAR DİLİYLE PROGRAMLAMA M. Turhan ÇOBAN EGE Universitesi, Mühendislik Fakultesi, Makine Mühendisliği bölümü [email protected]

Transcript of JAVA BİLGİSAYAR DİLİYLE PROGRAMLAMA

JAVA BLGSAYAR DLYLE PROGRAMLAMA M. Turhan OBAN EGE Universitesi, Mhendislik Fakultesi, Makine Mhendislii blm [email protected] JAVA BLGSAYAR DLYLE PROGRAMLAMA NDEKLER 1.0 PROGRAMLAMA DLNE GR 1.1 NN JAVA PROGRAMLAMA DL 1.2 BLGSAYARDA JAVA PROGRAMLARINI KURMA 1.3 JAVA PROGRAMINI YAZMA VE ALITIRMA 1.4 TAMSAYI VE GEREK SAYI DEKENLER VE MATEMATK LEMLER 1.5 STRING, CHAR VE BOOLEAN TP DEKENLER VE LEMLER 1.6 JAVA NESNES OLARAK TANIMLANMI TEMEL DEKENLER 1.7 FNAL TERM VE SABTLER 1.8 JAVA DLNDE BT KOMUTLARI VE LEMLER 1.9 JAVA DLNN TEMEL KOMUTLARI : IF KOMUT YAPISI 1.10 JAVA DLNN TEMEL KOMUTLARI : WHILE, DO-WHILE, FOR,SWITCH-CASE TEKRARLAMA KOMUT YAPILARI 1.11 ARTMETK LEMLERDE DEKEN TR DETRME (CASTNG) OPERASYONU 1.12 SAYI DEL VE SONSUZ SONULARI 1.13 EKSERSZLER 1.14 PROBLEMLER 2.0 SINIF KAVRAMINA GR VE METODLAR 2.1 JAVA API KTPHANES 2.2 METODLAR (FONKSYONLAR-SUBROUTNLER) 2.3 NESNE (OBJECT) TANIMI VE METOTLARDA KULLANIMI 2.4 METOTLARIN KEND KENDN AIRMASI (RECURSION) 2.5 AYNI ADLI METOTLARIN BR ARADA KULLANILMASI (OVERLOADNG) 2.6 METOT (METHOD) VE SINIF(CLASS) DEKENLER 2.7 ALISTIRMALAR 2.8 PROBLEMLER 3.0 SINIF (CLASS) YAPILARINA GR 3.0 STANDART KAVRAMLARIN TRKE KARILIKLARI 3.1 SINIF YAPISININ GENEL TANIMI 3.2 KURUCU ( CONSTRUCTOR ) METOT 3.3 DER METOTLAR 3.4 THIS DEYMNN KULLANIMI 3.5 SINIF DEKENLERNN DI DNYADAN GZLENMES 3.6 ALITIRMALAR 3.7 PROBLEMLER 3.8 HAFTA 6 DEVLER 4.0 SINIFLARI BR ARADA KULLANMA, SINIF NESNELERNN DER SINIFLARDA SINIF DEKEN OLARAK KULLANILMASI (COMPOSITION), KALITIM(INHERITANCE) 4.1 SINIF NESNELERNN DER BR SINIFTA KULLANILMASI (COMPOSITION) 4.2 SINIF NESNELERNN BRBRNDEN KALITIM YOLUYLA TRETLMES (INHERITANCE) 4.3 ALITIRMALAR 4.4 PROBLEMLER 5.0 BOYUTLU DEKENLER 5.0 BOYUTLU DEKENLERN GENEL TANIMI 5.1 BR BOYUTLU DEKENLER VE NESNELER 5.2 GELTRLM FOR DNG YAPISI 5.3 NESNELERN BOYUTLU YAPILARI 5.4 NESNE VE DEKENLERN OK BOYUTLU KULLANIMI 5.5 BOYUTLU DEKENLERDE BOYUT DETRME 5.6 ALITIRMALAR 5.7 PROBLEMLER 6.0 ABSTRACT SINIFLAR, INTERFACE, NDREK REFERANS KULLANIMI 3.1 ABSTRACT SINIFLAR 3.2 INTERFACE 3.3 ALITIRMALAR 3.4 PROBLEMLER 7.0 GRAFK ZM 7.1 JAVA SWING GRAFK ORTAMI JFRAME VE JAPPLET SINIFLARI 7.2 JAPPLET KULLANARAK GRAFK PENCERES OLUTURMA VE KULLANMA 7.3 ALITIRMALAR 7.4 PROBLEMLER 8.0 GRAFK KONTROL VE PROGRAMLAMA-GRAFK KULLANICI ARAYZ (GRAPHIC USER INTERPHASE-GUI) 8.1 JBUTTON 8.2 JLABEL, JTEXTFIELD VE JTEXTAREA GRAFK KONTROL SINIFLARI 8.3 MOUSE KONTROLU 8.4 KONTROL KUTUSU (JCHECKBOX) 8.5 RADIO KONTROL DMES 8.6 LIST KONTROLU JSCROLLPANE FORMAT DEYM 8.7 MENU KONTROLU 8.8 JSLIDER GRAPHIC KONTROLU 8.9 JTABLE TABLO OLUTURMA 8.10 GRAFK SAYFASINI FORMATLAMA 8.11 ALITIRMALAR 8.12 PROBLEMLER 9.0 HATA KONTROLU 9.1 GENEL TANIMLAR 9.2 ALITIRMALAR 9.3 PROBLEMLER 10.0 LER VER YAPILARI 10.1 GENERIC(GENEL OLARAK TANIMLANMI) METHODLAR 10.2 GENERIC(GENEL OLARAK TANIMLANMI) SINIFLAR 10.3 STRINGTOKENIZER SINIFI 10.4 STRINGBUFFER SINIFI 10.5 DNAMK BOYUTLU DEKEN KULLANIMI : LIST, ARRAYLIST, VECTOR, LINKEDLIST,QUE SINIFLARI 10.6 DNAMK HAFIZAYLA TANIMLANAN BOYUTLU SINIFLAR : TREE (AA YAPILARI) 10.7 DNAMK HAFIZAYLA TANIMLANAN BOYUTLU SINIFLAR :: HASHTABLE YAPISI 10.8 DNAMK HAFIZAYLA TANIMLANAN BOYUTLU SINIFLAR: NAVIGABLE SET 10.9 DNAMK HAFIZAYLA TANIMLANAN BOYUTLU SINIFLAR: VER DEPOLAMA N ARRAYLIST YAPISINI KULLANAN BR PROGRAM 10.10 ALITIRMALAR 10.11 PROBLEMLER 11.0 DOSYALAR, DOSYALARDAN VER OKUMA VE YAZMA 11.1 FILE SINIFI 11.2 READING SEQUENTIAL FILES THROUGH CHANNELS 11.2.1 BUFFERED READER SINIFI 11.2.2 SCANNER SINIFI 11.3 WRITING INTO SEQUENTIAL FILES THROUGH CHANNELS 11.4 ZIP,UNZIP SINIFLARI 11.5 ALITIRMALAR 11.6 PROBLEMLER 12.0 VERTABANI PROGRAMLAMA 12.1 SQLITE VERTABANI 12.2 SQLITE VERTABANI LE SQL KOMUTLARININ KULLANIMI 12.3 SQL VE SQLITE VER TABANININ JAVA ORTAMINDA KULLANILMASI 12.4 HAFTA 16 EKSERSZLER 12.5 HAFTA 16 DEVLER 13. 0 HESAP ZELGES PROGRAMLARINDAN VER OKUMA VE YAZMA 17.1 GENEL TANIM 17.2 HESAP ZELGES PROGRAMLARINDAN VER OKUMA 17.3 HESAP ZELGES PROGRAMLARINI FORMATLAMA 17.4 HESAP ZELGES PROGRAMLARINA VER YAZMA 17.4 ALITIRMALAR 17.5 PROBLEMLER 14.0 GEREK ZAMAN PROGRAMLAMA 18.1 PROGRAMLAMADA THREAD KULLANIMI 18.2 SNKRONZASYON 18.4 ALITIRMALAR 18.5PROBLEMLER 15.0 JAVA PROGRAMLARININ NDE BAKA JAVA PROGRAMLARINI YAZDIRMA, DERLEME VE ALITIRMA (GEREK ZAMAN PROGRAMLAMA) 19.1 JAVA PROGRAMLARINI GEREK ZAMANDA DERLEME 19.2 PROGRAM NDE PROGRAM YAZMA VE DERLEME 19.3 ALITIRMALAR 19.4 PROBLEMLER 16.0 NETWORK PROGRAMLAMAYA GR 16.1 UNIFORM RESOURCE LOCATERS (URL) YAPISI 16.2 SOCKET PROGRAMLAMA (TCP/IP) 16.3 DATAGRAM 16.4 ALITIRMALAR 16.5 PROBLEMLER 17.0 JAVA ANADL PROGRAMLAMASINA GR 17.1 TEMEL KAVRAMLAR, C VE C++ PROGRAMLAMA DL 17.2 DEKENLERN VE JAVA NESNELERNN AKTARILMASI 17.3 ALITIRMALAR 17.4 PROBLEMLER 18.0 GVENLK 18.1 APPLETLERDE GVENLK 18.2 KONSOL PROGRAMLARINDA GVENLK 18.3 GVENLK SERTFKALARI 18.4 JAR DOSYALARININ GVENLK KODUYLA MZALANMASI 18.5 BROWSERLARDA GVENLK 19. REFERANS LSTES 20.0 EKLER Java deyimleri zeti Konsol (dos) girdi Scanner input = new Scanner(System.in); int intValue = input.nextInt(); long longValue = input.nextLong(); double doubleValue = input.nextDouble(); float floatValue = input.nextFloat(); String string = input.next(); Konsol (dos) kt System.out.println(herhangibirdeer); Kullanc arayz(GUI) grafik girdi String string = JOptionPane.showInputDialog( "Enter input"); int intValue = Integer.parseInt(string); double doubleValue = Double.parseDouble(string); Kullanc arayz(GUI) grafik kt JOptionPane.showMessageDialog(null, "girdiyi yaz"); Temel veri trleri byte 8 bits (-128 den 127 e) short 16 bits ( -32768 den 32767 e) int 32 bits ( -2157483648 den 2147483647 e) long 64 bits (-9223372036854775808 den 9223372036854775808 e) float 32 bits (-3.40292347e+38 den 3.40292347e+38 e) double 64 bits (1.7976931348623157e+308 den 1.7976931348623157e+308 e) char 16 bits (Unicode) boolean 1 bit (true/false) Aritmetik ilemler + toplama - karma * arpma / blme % kalan ++var bir artma (nceden) --var bir azalma(nceden) var++ bir artma(sonradan) varbir azalma(sonradan) ilemler = eitleme, atama += toplama -= karma *=arpma /= blme %= kalan ilemleri Karlatrma ilevcileri < kktr byktr >= byktr veya eittir == eittir != eit deildir Mantk ilevcileri && VE || VEYA ! DEL ^ exclusive VEYA if (Eer) deyimi if (art1-boolean) {deyimler;} else if (art2-boolean) {deyimler;} else if (art3-boolean) {deyimler;} else {deyimler;} switch deyimi switch (integer seici) { case deer1: deyimler; break; ... case deern: deyimler; break; default: deyimler; } While ve do-while dng deyimleri while (art-boolean) { deyimler; } do { deyimler; } while (art-boolean); For dng deyimi for (balang deerleri, deyimleri; art-boolean;arttrma deyimi) { deyimler; } Ska kullanlan statik metodlar ve sabitler Math.PI Math.exp() Math.random() Math.pow(a, b) System.currentTimeMillis() System.out.println(anyValue) JOptionPane.showMessageDialog(null, message) JOptionPane.showInputDialog( prompt-message) Integer.parseInt(string) Double.parseDouble(string) Arrays.sort(type[] list) Arrays.binarySearch(type[] list, type key) Statik tek boyutlu deikenler int[] list = new int[10]; list.length; int[] list = {1, 2, 3, 4}; statik ok boyutlu deikenler int[][] list = new int[10][10]; list.length; list[0].length; int[][] list = {{1, 2}, {3, 4}}; 1.0 PROGRAMLAMA DLNE GR 1.1 NN JAVA PROGRAMLAMA DL Java Programlama dili u anda dnyadaki en popler programlama dillerinden biri haline gelmitir. Java SUN bilgisayar irketince orijinal olarak elektrikli ev aralarnn (mikrodalga frnlar, buzdolaplar , televizyonlar, uzaktan kumanda cihazlar vs.) birbiriyle haberlemesini salamay amalayan bir proje ierisinde 1991 ylnda gelitirilmeye baland. Orijinal ad bu dilin yaratclar James Gosling, Patrick Naughton, Chis Wartdh, Ed Frank ve Mike Sheridan tarafndan Oak olarak konulan programlama dili daha sonra bu isimde baka bir programlama dili olduu kefedilince o anda bir kahvehanede kahve ien programlama gurubu tarafndan kahve markasndan esinlenerek Java olarak deitirildi. Akll elektronik ev aralar pazar SUN gurubunun tahminlerinden ok daha yava bir gelime gsteriyordu. Bu yzden Java dili projesi ticari bir gelitirme projesi olarak byk olaslkla iptal edilecekti. 1993 Ylnda "World Wide Web" byk bir atlm gstererek btn dnyaya yaylmaya balad. Javann Dinamik Web sayfalar hazrlamadaki byk potansiyelini gren SUN irketi projeyi bu tarafa ynlendirdi ve bu javaya yeni bir canllk ve yaama umudu salad. Mays 1995 de SUN javay byk bir konferansta tantt. Program i dnyas tarafndan derhal byk bir ilgiyle karland. Java Modern bilgisayar dnyasnn ses, grafik ilem, haberleme gibi ihtiyalarna cevap verebilen ve Ticari gayeler iin hazrlanan bir Program dili olarak daha nceki bilgisayar dillerinin hi birinin kapsayamad zellikleri iermekteydi. Bunun yan sra dil komut yaps olarak C++ diline ok yakn olmas da renilmesini kolaylatryordu. SUN Javay "World Wide Web" de kullanmak isteyen herkese cretsiz olarak sundu. Java internette yaynlanmasnn ardndan ok byk bir patlama yaad. 1997 ye gelindiinde dnyadaki btn bilgisayar okullarnda temel bilgisayar dili olarak gsterilmeye baland. Dnyada u anda hala en ok kullanlan bilgisayar dili olan C++ dilinin yaplan hatalar tam olarak denetlememesi programn alma hzn arttrma ynnden iyi bir zellik olsa da profesyonel programclar dnda kullanlmasn snrlandrc bir etki yapyordu. Java ise btn hatalar bildiren yaps ve modern bilgisayarn btn fonksiyonlarna ulaabilen ktphaneleriyle programclarn ok daha kolaylkla renebilecei bir dildir. Burada hemen unu da belirtelim. C dili hzl alma amac birinci planda tutularak yaratlm bir dildir. Javada ise emniyet ilk planda yer almtr. Hz asndan dnldnde java C (ve C++) diliyle rekabet edemez. zaten program derleyicisi de C++ dilinde yazlmtr. Javann dier nemli bir temel zellii Nesne kkenli (object oriented) bir dil olmasdr. Nesne kkenli diller, nesneleri gerek dnyadakine daha benzer bir yapda tanmlayarak anlalmalarn kolaylatrrlar. Nesneleri gerek dnyadaki gibi masa, sandalye, bilgisayar, gerek gaz, s eanjr gibi tanmlayarak programlamak insan beyninin anlamas asndan ok daha kolaydr. Bundan nceki tam nesnel kkenli programlama dillerinden hibiri ok yaygnlk kazanmamt. Bu tr dillere Smalltalk,u rnek verebiliriz. C++ nesnel kkenli programlama yapabilen bir dildir. Fakat yapsal (structural) birprogramlama dili olan C dilinin bir uzants olarak gelitirildiinden tam anlamyla nesnel kkenli bir dil olduu sylenemez. Java dilini gelecein dili yapan dier bir zellii de ok kullanml (multi-tasking) ve paralel kullanml(multi-treading) bir dil olmasdr. ok kullanmllk birden fazla ilemin ayn anda yaplabilmesinin tanmdr. Paralel kullanmllk ise birden fazla programn ayn anda hafzay beraber kullanarak kullanlabilmesidir. rnek olarak World ve Excel programlarnn Windows NT ortamnda ayn anda kullanlmasdr. ADA gibi baz eski Program dillerinde ok kullanmllk programlanabiliyordu. Paralel kullanm olanaklarn sunan ilk bilgisayar dili ise javadr. Paralel kullanm paralel programlama kavramndan ayrdr ve kartrlmamaldr. Paralel programlanmada birden fazla Bilgi ilem nitesine (CPU ) ayr programlar veya bir programn ayr paralar gnderilir. Paralel kullanmda ise bir CPU nun kullanm zaman kk paralara ayrlarak deiik Program veya Program paracklar bu zaman paketiklerini paylaarak kullanrlar. Javay nemli bir Program dili haline getiren en nemli zellii ise kullanlan bilgisayardan bamsz olmasdr. Javada yazlan bir Program Unix, Machintosh, Windows 95 veya Windows NT veya herhangi bir 32 bit makinada hi deitirilmeden kullanlabilir. Java programlarnn grafikleri "Wold Wide Web" sayfalarnn programlama dili olan html (hypertext markup language) ile aktarlr. Bu yzden html ve java programlarn birlikte kullanmak ve java programlarn gerek zamanda www sayfalarnda gstermek mmkndr. Kendi web sayfanz veya webde yazlm kitabnz btn dnyaya aktarrken yaptnz analizleri de bu kitabn dinamik bir paras olarak sunabilirsiniz. Bu Trkiye gibi lkelerin dnyaya kaplarn daha kolay amalar asndan olduka nemli bir zelliktir. Javann HTML diliyle kullanlabilmesi, baz kiilerde htmlin bir paras olduu gibi bir kavram gelimesine yol amitir. Programlamaya yeni balayanlar sk sk html ile javay birbirine kartrrlar. veya javann HTML'nin bir uzants olduunu dnrler. Bu temelde olduka yanl bir varsaymdr. HTML internet belgelerini birbirine balamak amacyla gelitirilmi bir belge ilem sistemidir ve bir programlama dili deildir. HTML ile javann tek gerek ilgisi HTML deki applet komutudur. bu komut yardmyla java dilinde yazlm programlarn sonular HTML ortamna dinamik olarak aktarlabilir. Android giderek yaylan bir iletim sistemi olarak nce telefon gibi sistemlerin temel iletim sistemi olarak ortaya kt ve giderek bilgisayar alanlarnda yaylmakta.Linux tabanl bu iletim sisteminde java programlama dili nemli bir yer tutmaktadr. Android uygulamalar java programlama dili kullandndan bu dilin gelimesinde nemli bir rol oynamaya aday grnmektedir. 1.2 BLGSAYARDA JAVA PROGRAMLARINI KURMA Java programlama diliyle bilgisayar program yazmaya balayabilmek iin elinizde Java kurma seti (Java Development Kit- JDK ) bulunmaldr. Bu paket Orackle bilgisayar sitesinin adresinden cretsiz olarak indirilebilmektedir. http://www.oracle.com/technetwork/java/index.html Siteye girdiinizde nce JAVA SE program paketini seiniz. Bundan sonra JDJ7.4 srmn veya bulunan en yeni srm seebilirsiniz. Download(ykle) dmesine basarak program yklemeye balyabilirsiniz Licence Aggrement (Licans kabul) kutusunu iatretleyiniz ve kullandnz iletim sistemine gre ykleyeceiniz program versiyonunu seiniz. 64 bit bilgisayar sistemi kullanyorsanz 64 bit versiyonunu seebilirsiniz. Benim kiisel olarak gerek zaman prohramlamalarnda d alglayclardan veri okurken problemlerim olduundan 32 bir versiyonunu tercih ediyorum. Program internetten ykledikten sonra altrarak bilgisayarmza ykleyebiliriz. Ykleme esnasnda program size yklenecek dosya sistemini soracaktr. c:\java veya d:\java gibi basit bir dosya sistemi kullanrsanz, daha sonra eriim gerektiinde eriim daha kolay olabilir. Daha sonra sistem java altrma paketi (Java runtime environment JRE) ykleme dosya sistemi soracaktr. Bunun iin JDK paketini yklediiniz yerin altndaki jre dosya sistemini seebilirsiniz (rnein d:\java\jre) Bylece java programlama paketini bilgisayarnza yklemi oldunuz. Java programlama paketini doru ykleyip yklemediinizi kontrol etmek isterseniz http://java.com/tr/download/help/testvm.xml adresine girerek kontrol edebilirsiniz. Bir sonraki adm yklediiniz java paketinin yerini iletim sistemine tantmaktr. Bunun iin eer Windows sistemi kullanyorsanz sistem komutlarna JAVA_HOME deyimine javay yklediiniz dosya sistemine tanttktan sonra java dosyasn ve bin ve lib alt dosyalarn path deyimini ekleyebilirsiniz. Windows sisteminde bu deyimleri eklemek iin Denetim masasndan sistem (system) dosyasn semeli , sistem zellikleri, gelimi ve sonra ortam deikenleri dmelerine basarak alan pencereden path deyimine yeni dosya sisteminlerini ekleyebilirsiniz ve yeni JAVA_HOME deikeni atayabilirsiniz Listeden parh deyimini bulunuz ve listenin sonuna rnein .;d:\java;d:\java\lib;d:\java\bin; Deyimini ekleyiniz. Bundan sonra bir editr program kurmanz tavsiye edilir. Java programlama dilini etkin olarak kullanabilen eitli cretsiz editrler mevcuttur. Bunlarn birkan burada tanmlayalm. Everyone java Editor(http://sourceforge.net/projects/eje/) Basit bir java editr Java-editor (http://javaeditor.org/index.php/Download) Direk olarak java dilinde programlama yapmak iin oluturulmu basit ve kullanl bir editr Netbeans : Olduka gelimi bir java gelitirme sistemidir (http://netbeans.org/downloads/index.html) Dier gzel bir Java editr de JCreator editrdr. Bu editr java dilinde program yazmak iin dizayn edilmi, greceli olarak kullanm basit bir editrdr. Kopyesi http://jcreator.en.softonic.com/ adresinden alnabilir. Son gnlerde kendinden ok sz ettiren greceli kullanm basit, fakat kompleks ilemleri rahatlkla yapma olasl veren dier bir editrde BlueJ editrdr. Bu editre http://www.bluej.org/ adresinden ulalabilir. Benim burada rneklemede kullanacam editr basit bir dilden bamsz (her dili altrabilen) editr olan Crimson Editr olacaktr. Bu editrn bir kopyesini http://www.crimsoneditor.com/ adresinden salayabilirsiniz. nternette u anda benim bulduum en son versiyonu 3.72. yklenecek dosyann ad : cedt-241-setup.exe. Bu dosyaya bastmzda bilgisayarnza yklenecektir. Ykleme yaptktan sonra zellikle java dosyalarn altrmak iin baz kk ayarlamalar gerekmektedir. Programdan Tools penceresini anz. Buradan preferences ve user tools dmelerini seerek konsol ortamnda java dosyalarn altrma yolu olan javac ve java komutlarn aadaki pencerelerde gsterildii gibi girebiliriz. (burada java d:\java dosya sistemine yklenmitir.) Bunlara ek olarak internet ortamnda kullanma ak olarak bulunan eitli java paketleri sistemimize eklenebilir. Bunlara birka rnek verelim. Boyutlu grafik uygulamalar iin programlarmda visAD isimli bir paket kullanyorum. Bu paketin internet adresi : http://www.java2s.com/Code/Java/Advanced-Graphics/GraphLibraryVisad.htm, kullanrken ayn zamanda java 3D paketine de ihtiya gsteriyor. Java 3D paketini http://java3d.java.net/binary-builds.html, adresinden edinebilirsiniz. Java3D paketini altrn sonra yklediiniz visAD paketindeki visad.jar ../jre/lib/ext adresine kopyalayn. Paket almaya hazr hale gelmi olacaktr. Excel programlama ortamna yazma ve okuma isterseniz http://jexcelapi.sourceforge.net/ adresinden jxl.jar dosyasn alarak ../jre/lib/ext dosya sistemine koptelemeniz, bu program bizim kodlarmz, veya kendi yazdnz kodlarla altrmak iin kafi gelecektir. Eer SQLite veri taban kullanmak isterseniz http://www.zentus.com/sqlitejdbc/ adresindeki , sqlitejdbc-v056.jar from dosyasn yine ../jre/lib/ext dosya sistemine kopyelememiz gerekir. 1.3 JAVA PROGRAMINI YAZMA VE ALITIRMA Java program isim.java seklinde editrle yazlr. Java programnz yazldktan sonra ilk step java derleyici (compiler) programyla isim.class ara bilgisayar kodunu oluturmaktr. Java programn yazarken dikkat etmeniz gereken dier bir zellik de javann nesne snfnn ismiyle dosyadaki isminin ayn olmasdr. Bilgisayar konsol ekrannda (DOS veya UNIX Console) javac isim.java Komutunu bilgisayara gnderdiinizde programnzda hata yoksa ve bilgisayarnz java komutunun yerini biliyorsa (path deyimi ) java derleyicisi isim.class dosyasn yaratr. Eer programnzda hata varsa hatalarn listesini verir. Programlamann dili ingilizce olduundan bu hata aklamalar da ingilizcedir. Editr programna geri dnp hatalar dzeltmeniz, program tekrar kaydetmeniz ve sonra bu komutu tekrar denemeniz gerekecektir. Eer derlerken snf isimleri ve deiken isimlerini Trke olarak kullanabilmek istiyorsak stteki deyimi javac -encoding UTF-8 isim.java eklinde deitirebiliriz. Bu durumda Trke program ve deiken isimlerini rahata kullanabiliriz. Java programlar iki ortam iin yaratlabilir. Birincisi Konsol ortamdr (DOS, Unix console gibi). Konsol ortamn kullanrken java dilinin konsol komutu java kullanlarak isim.class dosyas yerel bilgisayarn makine diline program alrken dntrlr. Bu temelde bir tercme (interpretation) ilemidir. Sonu olarak java dilinde iki kademeli bir proses kullanlr, birinci ilemde java dosyas class dosyasna evirilir (derlenir), ikinci ilemde ise class dosyas yerel bilgisayarn makine diline dntrlr. konsol ortamnda altrlan program sonular yine konsol ortamnda alnaca gibi pop-up pencere grafik ortamnda da alnabilir. Veya yine grafik ortam olarak kts internet browser ortamnda direk olarak gsterilebilecek ekilde de yazlabilir. Bu tr grafik java programlarna applet adn veriyoruz. Eer Program konsol ortamnda yazlmsa java isim komutu kullanlarak sonular ekranda veya alan bir grafik penceresinde grlebilir. Eer Program applet ortamnda yazlmsa java programna ilave olarak html dilinde isim.html dosyas alr. En basit ekilde html dosyas u ekilde tanmlanabilir : Buradaki width pencerenin enini pixel olarak, heightda yksekliini yine pixel(grnt noktas) olarak vermektedir. daha sonra bu dosya konsoldan appletviewer isim.html komutuyla alstrlabilir. Buradaki appletviewer komutu java program paketindeki basitletirilmi bir browser programdr. Bu komut yerine isim.html dosyas herhangi bir browser programna yklenerek grlebilir. Programclkta adeta adet haline gelen ilk uygulama daima o dilde ekrana Hosgeldiniz iktisi almaktr. Bizde bu kuraln dna kmayalm. Aadaki listede ilk konsol programmz Hosgeldiniz.java grlmektedir. Program 1.1 Hogeldiniz.java konsol program class Hosgeldiniz { public static void main(String args[]) { System.out.println("Java Sinifina Hos Geldiniz!"); } } bu program altrmak iin javac Hosgeldiniz.java java Hosgeldiniz komutlarn konsolda vermemiz yeterlidir konsol kts olarak: Java Sinifina Hos Geldiniz! Yazsn alrz. Veya programmz crimson editrde yazm isek ve F1 ksa tuunu javac komutunu yklemek iin F2 ksa tuunu da java komutunu yklemek iin kullanm isek ve capture output tuunu iaretlemisek: F1 ve F2 tularna basarak program ktmz ekildeki gibi elde ederiz. imdi bu program yapsna biraz gz gz atalm. // iaretiyle balayan yazlar bilgisayar tarafndan kullanlamaz sadece program okuyan bilgilendirmek amac tar /* ..... */ iaretleriyle de verilebilir. rnein : /* Bu ksmda yazlanlarla bilgisayar ilgilenmez Sadece insanlarn program anlamas iindir */ class Hosgeldiniz Class (snf) nesne kkenli programlama yapsnn temel tadr. Her Class'n kendine zg bir ismi olmas gerekir. Daha nce yazlm Class'lar import deyimiyle programa arlabilirler. Yeniden yazlmalar gerekmez. Class yaps ve tanmlamalar zerinde daha sonraki blmlerde ok daha detayl bilgi verilecektir. { } balatma ve bitirme : Snf tanmlamas da dahil olmak zere Tm Program paracklar { iaretiyle balar ve } iaretiyle son bulur. {} iaretleri arasnda yazlan program paracklarn normal metin yazlmasndaki paragraf kavramna benzetebiliriz. Ayrca program koduna baktmzda "; " iaretine sk sk rastlyoruz. Bu iaret java komutunun bittiini belirtir. Cmle yasnda kullanlan nokta "." iareti gibi ilev grr. Java programlarn istersek ";" ve "{}" ayralarn kullanarak tek bir satr olarak yazabiliriz. Fakat bu programn bizim tarafmzdan okunurluunu zorlatrr. Program kodunu yazarken boluk ve satr aralklar brakarak insanlar tarafndan programn okumasn kolaylatrabiliriz. Modern programclktaki en byk sorunlardan biri bigisayar kodlarnn bakm ve onarm sorunudur. Ticari olarak yazlan her programn belli bir mr olduunu ve daha sonra baka bir programc tarafndan zerinde tekrar allacan srekli olarak hatrlamak zorundayz. ekil 1.1 Hosgeldiniz.java programnn ve consol ktsnn Crimson editr ortamnda grnm public static void main(String args[]) dier dillerde fonksiyon (function), subroutine, procedure gibi adlarla anlan Program alt paracnn bal. Bu Program paracklar javada Metot (Method) adyla anlr. Metotlarn girdileri ve ktlar olabilir. Bu metotun ad main (ana Program) dr. String deiken tr args[] deikeni girdi olarak girebilir. Bu metotta void kt tr kullanlmtr. Void kelimesi bu metotdan hibir kt alnmayacan belirtir. public metota dardan ulalabilme izni verir. System.out.println("Java Sinifina Hos Geldiniz!"); Bu satr System.out snfndan println metotunu altrr. Bu metot method giriinde gnderilen String tipi deikeni konsol ktsna aktarr. Fortran dilindeki write(*,*) veya print*, c dilindeki printf, c++ dilindeki cout Terminated with exit code 1. Bir metodun iinde snf deikeniyle ayn adda bir deiken kullanlyorsa metod deikeni deer alr, snf deikeni deimez. import javax.swing.*; public class metotvesinifdegiskeni2 { //Buradaki deikenler tm snfa aittir double x; int y; public void metot1() {double x=5.5; double y=6; } public void metot2() {JOptionPane.showMessageDialog(null,"x="+x+"y="+y);} } import javax.swing.*; public class metotvesinifdegiskeni2A { public static void main(String s[]) {metotvesinifdegiskeni2 z=new metotvesinifdegiskeni2(); z.metot1(); z.metot2(); } } 2.7 ALISTIRMALAR 1. Programda verilen metodlarn sonularn Math ktphanesindeki edeerleriyle karlatrarak hata analizi yapnz. (bunun iin gerekli kt programn yaznz) Program 2.7.1 metod.java eitli matematiksel dizi rnekleri import javax.swing.*; public class metod { public static double exp(double x) { double factorial=1; double power=1; double exp=0; for(int k=1;k