14
ĠĢte JAVA Vedat CoĢkun BãĢra Ézdenizci Kerem Ok

ĠĢte JAVA - Papatya Yayıncılık Eğitim AŞ · olmuĢ, ama hiÑbir dil tãm ortamlarda kullanlamamÕĢtÕr; Java hariÑ. Java, yukarda saydğmÕz ve daha birÑok bilgisayar tãrãnãn

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ĠĢte JAVA - Papatya Yayıncılık Eğitim AŞ · olmuĢ, ama hiÑbir dil tãm ortamlarda kullanlamamÕĢtÕr; Java hariÑ. Java, yukarda saydğmÕz ve daha birÑok bilgisayar tãrãnãn

ĠĢte JAVA

Vedat CoĢkun

BãĢra Ézdenizci

Kerem Ok

Page 2: ĠĢte JAVA - Papatya Yayıncılık Eğitim AŞ · olmuĢ, ama hiÑbir dil tãm ortamlarda kullanlamamÕĢtÕr; Java hariÑ. Java, yukarda saydğmÕz ve daha birÑok bilgisayar tãrãnãn

~ II ~

PAPATYA YAYINCILIK EĞĠTĠM Bilgisayar Sis. San. ve Tic. A.ġ.

Ankara Caddesi, Prof. Fahreddin Kerim GÞkay Vakf× ĠĢhan× GiriĢi

No: 11/3, Cağaloğlu (Fatih) / Ġstanbul

Tel : (+90 212) 527 52 96 - (+90 532) 311 31 10

Faks : (+90 212) 527 52 97

e-Posta : [email protected]

Web : www.papatya.gen.tr www.papatyabilim.com.tr

ĠĢte Java - Vedat CoĢkun, BãĢra Ézdenizci, Kerem Ok

1. Bas×m Eylãl 2016

Yay×n Dan×Ģman× : Dr. Rifat ÆÉLKESEN

Yay×na Haz×rlayan : Dr. Cengiz UĞURKAYA (Post-Edu Institute)

Êretim : Necdet AVCI

Pazarlama : Mustafa DEMĠR

Sat×Ģ : Tãrkiyeřnin Ġnternet KitapÑ×s× www.tdk.com.tr

Sayfa Dãzenleme : Mãge URCAN

Kapak Tasar×m : Papatya ve Kelebek Tasar×m

Bas×m ve Ciltleme : Ézkaracan Matbaac×l×k (Sertifika No: 12228)

Evren Mah. Gãlbahar Cad. No:62 GãneĢli/Ġstanbul

í Bu kitab×n her tãrlã yay×n hakk× Papatya Yayıncılık Eğitim A.ġ.řye aittir.

Yay×nevinden yaz×l× izin al×nmaks×z×n al×nt× yap×lamaz, k×smen veya tamamen

hiÑbir Ģekil ve teknikle ÆOĞALTILAMAZ, BASILAMAZ,

YAYIMLANAMAZ. Kitab×n, tamam× veya bir k×sm×n×n fotokopi makinesi,

ofset gibi teknikle Ñoğalt×lmas×, hem Ñoğaltan hem de bulunduranlar iÑin

yasad×Ģ× bir davran×Ģt×r.

CoĢkun, Vedat; Ézdenizci, BãĢra; Ok, Kerem.

ĠĢte Java! / Vedat CoĢkun, BãĢra Ézdenizci, Kerem Ok - Ġstanbul: Papatya Yay×nc×l×k Eğitim, 2016.

xiv, 368 s.; 24 cm.

KaynakÑa ve dizin var.

ISBN 978-975-9594-02-8

Sertifika No: 11218

1. Nesneye YÞnelik Programlama 2. Programlama Dilleri 3. Algoritmalar 4. Java Programlama Dili

I. Title

Page 3: ĠĢte JAVA - Papatya Yayıncılık Eğitim AŞ · olmuĢ, ama hiÑbir dil tãm ortamlarda kullanlamamÕĢtÕr; Java hariÑ. Java, yukarda saydğmÕz ve daha birÑok bilgisayar tãrãnãn

~ III ~

Sevgili Ailem;

Mehmet, Fatma, Özgür, Arda, Müjdat, Selma, Müge, Kılınç, Özge, Rüya;

Ben sizlere zaten kendimi adamışım; bir de üstüne bu kitabı adamışım, çok mu . . .

Vedat COŞKUN

Page 4: ĠĢte JAVA - Papatya Yayıncılık Eğitim AŞ · olmuĢ, ama hiÑbir dil tãm ortamlarda kullanlamamÕĢtÕr; Java hariÑ. Java, yukarda saydğmÕz ve daha birÑok bilgisayar tãrãnãn

~ IV ~

Prof. Dr. Sıddık Binboğa YARMAN ile Prof. Dr. Şirin TEKİNAY’a sevgilerimle...

Prof. Dr. Vedat COŞKUN

Page 5: ĠĢte JAVA - Papatya Yayıncılık Eğitim AŞ · olmuĢ, ama hiÑbir dil tãm ortamlarda kullanlamamÕĢtÕr; Java hariÑ. Java, yukarda saydğmÕz ve daha birÑok bilgisayar tãrãnãn

~ V ~

ĠÑindekiler

Önsöz xi

1. Bölüm 1. Bir Çırpıda Java 15

1.1. Java Program× GeliĢtirmek 16

1.1.1. GeliĢtirme Ortam×n×n Haz×rlanmas× 16

1.1.2. Æal×Ģt×rma Ortam×n×n Haz×rlanmas× 17

1.1.3. Program×n Yaz×lmas× 21

1.1.4. Program×n Derlenmesi 23

1.1.5. Program×n Æal×Ģt×r×lmas× 25

1.2. Java Program Yap×s× 26

1.3. Veri ĠĢleme 27

1.3.1. Tamsay×lar 29

1.3.2. Okuma ve Yazma 29

1.3.3. GerÑel Say×lar 32

1.3.4. Mant×ksal Veriler 34

1.3.5. Karakterler 34

1.4. Kontrol Yap×lar× 36

1.4.1. IF Kontrol Yap×s× 37

1.4.2. IF-ELSE Kontrol Yap×s× 37

1.4.3. SWITCH Kontrol Yap×s× 37

1.4.4. KoĢullu OperatÞr Kontrol Yap×s× 37

1.5. DÞngã Yap×lar× 39

1.5.1. FOR DÞngã Yap×s× 40

1.5.2. WHILE DÞngã Yap×s× 40

1.5.3. DO-WHILE DÞngã Yap×s× 40

1.6. Diziler 42

1.7. Metotlar (Yordamlar) 44

1.8. Dosya ĠĢlemleri 47

1.8.1. Dosyaya Yazma 47

1.8.2. Dosyadan Okuma 48

1.9. Stringler 49

1.10. Ak×Ģ Diyagramlar× 53

1.11. Kaliteli program Yaz×m Kurallar× 55

1.12. Ézet 56

Bölüm 2. Bilgisayar ve Sayı Sistemleri 59

2.1. Bilgisayarlar 60

2.2. Bilgisayar ÆeĢitleri 61

Page 6: ĠĢte JAVA - Papatya Yayıncılık Eğitim AŞ · olmuĢ, ama hiÑbir dil tãm ortamlarda kullanlamamÕĢtÕr; Java hariÑ. Java, yukarda saydğmÕz ve daha birÑok bilgisayar tãrãnãn

~ VI ~

2.3. Bilgisayar BileĢenleri 62

2.3.1. Donan×m BileĢenleri 62

2.3.2. Yaz×l×m BileĢenleri 62

2.4. Programlama Dilleri 64

2.4.1. Makine Dilleri 64

2.4.2. Æevirici Dilleri 65

2.4.3. Êst Seviye Diller 66

2.4.3.1. Derleyiciler, Yorumlay×c×lar ve Bağlay×c×lar 66

2.4.3.2. Java Sanal Makinesi (JVM) 67

2.5. Say× Sistemleri 68

2.5.1. Veri ÆeĢitleri 69

2.5.2. Kesikli Say× Sistemleri 69

2.5.3. Onlu Say× Sistemi 70

2.5.4. Ġkili Say× Sistemi 71

2.5.5. Onalt×l× Say× Sistemi 73

2.5.6. 1ře Tãmleme 75

2.5.7. 2řye Tãmleme 75

2.6. Ézet 77

Bölüm 3. Java’ ya GiriĢ 79

3.1. Javařn×n Ézellikleri 79

3.2. Java Program ÆeĢitleri 80

3.3. Java GeliĢtirme Ortam× 81

3.4. Java Program× GeliĢtirme Sãreci 84

3.5. Program Érnekleri 85

3.5.1. Ekrana Yazma 85

3.5.2. Okuma 91

3.5.3. Toplama 91

3.6. Ġsim Verme 92

3.7. Ézel Anlaml× Kelimeler 93

3.8. Ézet 94

Bölüm 4. Sayılar, Bellek, Okuma ve Yazma 95

4.1. Veri Tãrleri 95

4.2. Tamsay×lar 98

4.3. Programlar×n Æal×Ģma Sãreci 101

4.4. Programlar×n Bellek Kullan×m× 102

4.5. DeğiĢken Tan×mlama 105

4.6. Değer Atama 108

Page 7: ĠĢte JAVA - Papatya Yayıncılık Eğitim AŞ · olmuĢ, ama hiÑbir dil tãm ortamlarda kullanlamamÕĢtÕr; Java hariÑ. Java, yukarda saydğmÕz ve daha birÑok bilgisayar tãrãnãn

~ VII ~

4.7. OperatÞrler ve Ġfadeler 109

4.8. Sabit Değer 113

4.9. Bilgi ĠĢlem DÞngãsãnde Okuma ve Yazma 114

4.10. Yazma 115

4.11. Tamsay× Okuma 116

4.12. Dãzenli Yazma 116

4.13. GerÑel Say×lar 119

4.13.1. GerÑel Say×lar×n Tan×m× 119

4.13.2. Javařda GerÑel Say×lar 120

4.14. Ézet 122

4.15. Érnekler 122

4.16. Sorular 124

Bölüm 5. Mantıksal Veriler ve Kontrol Yapıları 127

5.1. Mant×ksal Verilerin Tan×m× 128

5.2. Javařda Mant×ksal Veri 129

5.2.1. Z×t Anlam OperatÞrã 129

5.2.2. KarĢ×laĢt×rma OperatÞrleri 129

5.2.3. BirleĢtirme OperatÞrleri 131

5.3. Kontrol Yap×lar× 134

5.4. IF Kontrol Yap×s× 135

5.5. IF-ELSE Kontrol Yap×s× 140

5.6. SWITCH Kontrol Yap×s× 148

5.7. KoĢullu OperatÞr 152

5.8. Ézet 153

5.9. Érnekler 153

5.10. Sorular 157

Bölüm 6. Karakterler 159

6.1. Javařda Karakterler 159

6.2. Javařda Karakter ĠĢleme 164

6.3. KaÑ×Ģ Karakterleri 168

6.4. Ézet 170

6.5. Érnekler 171

6.6. Sorular 172

Page 8: ĠĢte JAVA - Papatya Yayıncılık Eğitim AŞ · olmuĢ, ama hiÑbir dil tãm ortamlarda kullanlamamÕĢtÕr; Java hariÑ. Java, yukarda saydğmÕz ve daha birÑok bilgisayar tãrãnãn

~ VIII ~

Bölüm 7. Döngü Yapıları 175

7.1. FOR DÞngã Yap×s× 175

7.2. WHILE DÞngã Yap×s× 182

7.3. DO-WHILE DÞngã Yap×s× 186

7.4. BREAK ile CONTINUE Ġfadeleri 189

7.5. Ézet 189

7.6. Érnekler 189

7.1. Sorular 195

Bölüm 8. Diziler 201

8.1. Diziler 201

8.2. Dizi ĠĢlemleri 207

8.2.1. Dizi Elemanlar×na EriĢmek 207

8.2.2. Dizi - Dizi Referans× 209

8.2.3. Dizi Uzunluğunu Bulmak 213

8.2.4. Dizi Kopyalamak 216

8.3. Æok Boyutlu Dizler 220

8.4. Ézet 223

8.5. Érnekler 223

8.6. Sorular 229

Bölüm 9. Metotlar 233

9.1. Metotlar×n Kullan×m Amac× 234

9.2. Metot Yap×s× 236

9.3. Metot Ġsmini Yãkleme (Overloading) 242

9.4. DeğiĢken EriĢim Menzili 245

9.5. Ak×Ģ Kesme / Bekleme (Interrupt) 247

9.6. Metotlarda Dizi Kullan×m× 249

9.7. Ézet 256

9.8. Érnekler 256

9.9. Sorular 263

Bölüm 10. Dosya ĠĢlemleri 265

10.1. Dosyaya Yazma 266

10.2. Dosyadan Okuma 268

10.3. Dosya ile Klavyeden Okuma Fark× 272

10.4. Dosya Ézelliklerini GÞrãntãleme 272

10.5. Ézet 274

Page 9: ĠĢte JAVA - Papatya Yayıncılık Eğitim AŞ · olmuĢ, ama hiÑbir dil tãm ortamlarda kullanlamamÕĢtÕr; Java hariÑ. Java, yukarda saydğmÕz ve daha birÑok bilgisayar tãrãnãn

~ IX ~

10.6. Érnekler 274

10.7. Sorular 278

Bölüm 11. Stringler 281

11.1. Javařda Stringler 281

11.2. String ĠĢlemleri 282

11.3.1. String Uzunluğu 284

11.3.2. String ĠÑinden Karakter Okumak 284

11.3.3. String ĠÑinden String OluĢturmak 285

11.3.4. String BiÑimlendirmek 286

11.3.5. Stringřleri Birbirine Eklemek 287

11.3.6. String ile Karakteri KarĢ×laĢt×rmak 289

11.3.7. Ġki Stringři KarĢ×laĢt×rmak 289

11.3.8. Basit Veri ile Stringřleri Birbirine DÞnãĢtãrmek 292

11.3. Komut Sat×r×ndan Programa Değer GÞnderme 293

11.4. Ézet 295

11.5. Érnekler 295

11.6. Sorular 299

Bölüm 12. Sınıflar ve Nesneler 307

12.1. Basit Veri - Zengin Veri 308

12.2. S×n×f Uygulamas×: Banka 309

12.2.1. Hesap ĠĢlemleri 309

12.2.2. Hesap Program× 311

12.2.3. Hesap S×n×f×n× Yaratma 312

12.2.4. Hesap Nesnelerini Yaratma ve Kullanma 314

12.2.5. Hesap Hareket ĠĢlemleri 318

12.3. S×n×f Uygulamas×: AraÑ 322

12.4. Miras (Kal×t×m) 330

12.5. S×n×f Uygulamas×: Kesirli Say× 331

12.6. Ézet 337

12.7. Érnekler 337

12.8. Sorular 348

Kaynakça 355

Dizin

359

Page 10: ĠĢte JAVA - Papatya Yayıncılık Eğitim AŞ · olmuĢ, ama hiÑbir dil tãm ortamlarda kullanlamamÕĢtÕr; Java hariÑ. Java, yukarda saydğmÕz ve daha birÑok bilgisayar tãrãnãn

~ X ~

Page 11: ĠĢte JAVA - Papatya Yayıncılık Eğitim AŞ · olmuĢ, ama hiÑbir dil tãm ortamlarda kullanlamamÕĢtÕr; Java hariÑ. Java, yukarda saydğmÕz ve daha birÑok bilgisayar tãrãnãn

~ XI ~

ÉnsÞz

Lise hayat×m×z×n sonlar×na yaklaĢt×kÑa, hangi mesleği seÑeceğimiz konusunun, en

Þnemli gãndem maddelerimizden olduğunu hat×rl×yoruz, değil mi? Bu konuda

dãĢãnmeye baĢlad×ğ×m×zda karĢ×m×za s×kl×kla Ñ×kan geleceğin mesleği (!) haberleri

elbette dikkatimizi ÑekmiĢtir. Her y×l farkl× meslekleri Þne Ñ×karan bu tãr haberlere

gÞsterilen rağbet ãniversitelerimizde bu programlar×n daha s×kl×kla aÑ×lmas×na,

Þğrencilerin bu programlara yoğun ilgi gÞstermesine, netice olarak da bu alanlarda

okumuĢ pek Ñok mezunun iĢ kuyruklar× oluĢturmas×na neden olmuĢtur. Ne yaz×k ki

bu Ģekilde Þne Ñ×kar×lan mesleklerden Ñok az×n×n gerÑekten de geleceğin mesleği

olduğu bir gerÑektir.

Yirminci yãzy×l×n baĢlar×nda bilim adamlar×n×n yapt×klar× yoğun Ñal×Ģmalar, ayn×

yãzy×l×n baĢlar×ndaki Dãnya savaĢlar×nda savunma (!) amaÑl× olarak ãstãnlãk elde

etme gayretindeki hãkãmetler taraf×ndan desteklendiğinde, gãnãmãz bilgisayarlar×-

n×n ilk Þrnekleri ortaya Ñ×kmaya baĢlad×. Ayřa inilmesi; Marsřa ve Jãpiterře robot

gÞnderilmesi; kablosuz iletiĢim, genetik, nano teknoloji, mikrobiyoloji gibi teknolo-

jilerde ilerleme sağlanmas×; Dãnya ãzerinde herhangi iki yer aras×nda sÞzlã ve hatta

gÞrsel olarak anl×k gÞrãĢme yap×lmas×; kağ×t para yerine say×sal paran×n kullan×lma-

s×; ancak ve ancak bilgisayar teknolojisindeki geliĢmeler sayesinde mãmkãn ola-

bilmiĢtir. Ġnsanoğlunun bugãnkã teknolojik geliĢmeleri gerÑekleĢtirmesinde bilgisa-

yar×n rolã, her konuda bilgisayar×n kullan×lmas×na ve netice olarak da bilgisayar

konusunda bãyãk iĢ potansiyeline neden olmuĢtur.

Netice olarak rahatl×kla sÞyleyebiliriz ki biliĢim, gãnãmãzãn ve geleceğin en gÞzde

mesleğidir. BiliĢim alan×nda teknik ya da yÞneticilik iÑerikli eğitim alan kiĢilerin iĢ

potansiyeli, hem ulusal hem de uluslararas× alanda Ñok yãksektir. Bilgisayar sistem

uzman×, ağ yÞneticisi, gãvenlik uzman×, veritaban× tasar×mc×s×, veritaban× yÞneticisi,

sistem analisti, programc×, yaz×l×m mãhendisi, web tasar×mc×s× ve geliĢtiricisi, yaz×-

l×m s×nama uzman×, bãyãk veri uzman×, bulut uzman×, biliĢim sistemleri yÞneticisi

ve yÞnetim biliĢim sistemleri uzman× gibi pek Ñok meslek, evrensel olarak iĢ potan-

siyeli yãksek olan mesleklerdir. Yak×n, orta ve uzun vadede biliĢim iÑerikli meslek-

ler hep gÞzde olarak kalacakt×r.

Bu mesleklerin hepsinin ortak yÞnã, bilgisayar ãzerinde Ñal×Ģmalar×d×r. Peki bilgi-

sayar dediğimizde akl×m×za ne gelir? Dizãstã bilgisayar, masaãstã bilgisayar, belki

sunucu bilgisayar. Oysa gãnãmãzde hemen her elektronik cihaz ayn× zamanda bir

bilgisayard×r; en az×ndan bilgisayar bu cihaz×n Þnemli bir parÑas×d×r. Érneğin -cep

telefonu da dediğimiz- ak×ll× telefon asl×nda tam anlam× ile bir bilgisayard×r. Kredi

kart×n×n ve ak×ll× telefonun iÑindeki ak×ll× kart da bir bilgisayard×r. Televizyon da bir

Page 12: ĠĢte JAVA - Papatya Yayıncılık Eğitim AŞ · olmuĢ, ama hiÑbir dil tãm ortamlarda kullanlamamÕĢtÕr; Java hariÑ. Java, yukarda saydğmÕz ve daha birÑok bilgisayar tãrãnãn

~ XII ~

bilgisayard×r, ekran× biraz bãyãktãr, o kadar. BulaĢ×k makinesi, ÑamaĢ×r makinesi,

buzdolab×, otomobil, uÑak, helikopter, tablet, robot ya da elektronik kaykay, iÑlerin-

deki bilgisayar parÑalar×n×n iĢlevleri sayesinde bu kadar kullan×Ģl× hale gelmiĢ elekt-

ronik cihazlard×r.

Bilgisayarlar×n fabrikada ãretimi yap×lan fiziksel parÑalar×na donan×m; bu parÑalar×n

iĢlevsel hale gelmesi iÑin ãzerinde Ñal×Ģt×r×lan programlara da yaz×l×m diyoruz. Bil-

gisayarlar×n geliĢtirilmeye baĢlanmas×ndan itibaren bu harika cihazlar×n iĢlevlerini

art×rmak ãzere ãzerlerinde sãrekli olarak daha geliĢmiĢ programlar yaz×lmas×na

Ñal×Ģ×lm×Ģt×r.

Zaman iÑinde etkin program yaz×lmas×na olanak sağlamak ãzere farkl× programlama

dilleri de ortaya Ñ×kar×lm×Ģt×r. Baz× programa dilleri kiĢisel bilgisayarlarda, baz×lar×

cihazlara entegre edilmiĢ bilgisayarlarda, baz×lar× ak×ll× telefonlarda tercih edilen dil

olmuĢ, ama hiÑbir dil tãm ortamlarda kullan×lamam×Ģt×r; Java hariÑ. Java, yukarda

sayd×ğ×m×z ve daha birÑok bilgisayar tãrãnãn tamam×nda kullan×labilen bir prog-

ramlama dilidir. Java dilinin bugãne kadar gelmiĢ geÑmiĢ tãm programlama dilleri-

ne olan Þnemli ãstãnlãğã tam da budur: Java, her tãrlã bilgisayarda geÑerli bir

programlama dilidir. Java dilini Þğrenen bir kiĢi, yeni bir dil Þğrenmeye gerek kal-

madan hemen her tãrlã cihaz iÑin program yazarak enerjisini verimli bir Ģekilde

kullan×p harcayabilir.

Bu kitap ile, Java dilinde baĢlang×Ñ seviyesinde program yazmay× Þğrenmenizi he-

defledik. Buna karĢ×n kitab×m×z× yazarken, farkl× profildeki kullan×c×lar×n varl×ğ×n×

da dikkate ald×k. Kitab×m×z× daha Þnce bilgisayarlar×n nas×l Ñal×Ģt×ğ× konusunda bilgi

sahibi olan ya da olmayan; baĢka programlama dil(ler)inde baĢlang×Ñ, orta ve hatta

ileri dãzeyde program yazma yeteneğine ve hatta tecrãbesine sahip olan ya da ol-

mayan; h×zl× ya da hazmederek ilerlemek isteyen herkesin kullanabileceği bir Ģekil-

de haz×rlad×k.

Kitab×m×z× farkl× profildeki kullan×c×lar×n kullanmalar×n× sağlayan unsurlar× Ģu Ģe-

kildedir:

Birinci bÞlãm, h×zl×ca Java program× yazmay× hedefleyen kiĢilere Þzel olarak

haz×rlanm×Ģ h×zl× fakat kapsaml× bir Þzeti iÑermektedir.

Kitab×m×z×n pek Ñok yerine koyduğumuz ipuÑlar×, o anda anlat×lan konu ile il-

gili faydal× olabilecek ek bilgiler iÑermektedir. Bu bilgileri anlamakta zorlanan

ya da bu konuda zaman kaybetmek istemeyen kullan×c×, bu ipuÑlar×n× gÞz ard×

edebilir.

Fazladan program Þrnekleri, ilgili konuyu henãz iÑselleĢtirmemiĢ olan, daha

fazla pekiĢtirmek isteyen ya da bir konuyu derinliğine ve tam olarak Þğrenme-

den sonraki konulara geÑmek istemeyen kullan×c×lar×n taleplerini karĢ×lamak

ãzere yaz×lm×Ģt×r.

Page 13: ĠĢte JAVA - Papatya Yayıncılık Eğitim AŞ · olmuĢ, ama hiÑbir dil tãm ortamlarda kullanlamamÕĢtÕr; Java hariÑ. Java, yukarda saydğmÕz ve daha birÑok bilgisayar tãrãnãn

~ XIII ~

Javařy× ezberleyerek değil, anlayarak Þğrenmenizi sağlayan bir kitap yazmak, temel

motivasyonumuz oldu. Bellek yÞnetiminin detayl× anlat×m×, ÑokÑa Þrnekler, ipuÑlar×

ve genel olarak anlat×m yÞntemimiz hep bu amaca dÞnãk olarak oluĢturuldu.

Kitab×m×z× bir ders kitab× olacak Ģekilde haz×rlad×k. Ders sãrecine katk×da bulunmak

ãzere pek Ñok Þrnek program ve soru yaz×ld×. BÞlãm say×s×n×, Êniversitelerdeki

dÞnem say×s×nda uygun olacak Ģekilde oluĢturduk. Konular×, her hafta bir bÞlãmãn

iĢleneceği Ģekilde yazd×k. BÞylece pedagojik aÑ×dan hem Þğretim ãyelerine, hem de

Þğrencilere kolayl×k sağlamay× hedefledik.

BÞlãm 1řde, kitab×m×zda anlatacağ×m×z tãm konular×n bir Þzetini veriyoruz asl×nda.

Detaylara girmeden Þnce Javařn×n unsurlar×n× h×zl×ca gÞrmek isteyen okuyucular,

bu bÞlãmã kullanabilirler. BaĢka dilde program yazma tecrãbesi olan kiĢiler iÑin de

bu bÞlãm faydal× olabilir. Buna karĢ×n bu bÞlãmde verilen her konu, ilgili bÞlãmde

Ñok daha detayl× olarak yeniden anlat×lacakt×r. O nedenle dileyen okuyucular bu

bÞlãmã okumadan sonraki bÞlãmlere geÑebilirler.

BÞlãm 2řde, bilgisayar hakk×nda genel bilgiler veriyoruz. Bilgisayar×n fiziksel k×-

s×mlar×n×n ifadesi olan bilgisayar donan×m× ile, donan×m ãzerine yãklenen program-

lar×n ifadesi olan yaz×l×m konusunda temel bilgiler konseptini anlamam×za yard×mc×

olacak. Bilgisayar×n nas×l Ñal×Ģt×ğ×n×, sadece bu kitab×n okuyucular×n×n ihtiyac×n×

karĢ×layacak Ģekilde genel ifadeler ile anlatacağ×z. Bilgisayar iÑin ikili say× sistemi

Ñok Þnemlidir; bunun nedenini ve ikili say× sistemini yine odak noktam×z× kaybet-

meden Þrneklerle aÑ×klayacağ×z. Bu konularda daha Þnceden bilgi sahibi olan oku-

yucular×n da bu bÞlãme en az×ndan h×zl×ca gÞz atmalar× faydal× olur dãĢãncesinde-

yiz.

BÞlãm 3řte, Java ile tan×Ģacağ×z. Javařn×n nas×l ortaya Ñ×kt×ğ×n× Ñok k×sa anlatt×ktan

sonra Javařn×n neden Þnemli bir dil olduğunu ve diğer diller aras×nda gÞzde bir dil

olmas×n×n nedenlerini yeterli detayda anlatacağ×z. Java program× yazmak iÑin alter-

natif olarak ne tãr yaz×l×m araÑlar× ve ortamlar× kurabileceğimizi anlatarak, size en

uygun olan×n× nas×l seÑeceğinize iliĢkin olarak yol gÞsterecek parametreleri ortaya

koyacağ×z. Bu kitab× okuman×z×n temel amac× olan Java dilinde program yazmaya

da yine bu bÞlãmde basit birkaÑ Þrnek ãzerinden baĢlayacağ×z.

BÞlãm 4řte, birkaÑ konuyu iÑ iÑe anlatacağ×z. Java programlar×nda bilgilerin iĢlen-

mesi iÑin oluĢturulan yap×lar×n genel tan×m× bu bÞlãmãn baĢlang×c×n× oluĢturuyor.

ĠĢlenecek bilgiler iÑinde hem tamsay×lar×n, hem de gerÑel say×lar×n nas×l iĢlendiği

konusunu bu bÞlãmde detayl× olarak anlatacağ×z. Bilgileri saklamaya ve iĢlemeye

yarayan ana bellek (k×saca: bellek) ile yard×mc× bellek (k×saca: sabit disk), bilgisa-

yarlar×n temel parÑalar×ndand×r. Programlar×n belleği ne Ģekilde kulland×ğ×n× Þğ-

renmek, bilgisayar program× yazma sãrecinde Ñok Þnemli katk× sunabilecek bir

konudur. Konular×n bellek iliĢkisi ile birlikte anlat×lmas×, kitab×m×z×n baĢ×ndan so-

nuna kulland×ğ×m×z bir yÞntemdir. ĠĢte bu bÞlãmde, programlar×n verileri bellekte

ne Ģekilde iĢlediği detayl× olarak anlat×lmaktad×r.

Page 14: ĠĢte JAVA - Papatya Yayıncılık Eğitim AŞ · olmuĢ, ama hiÑbir dil tãm ortamlarda kullanlamamÕĢtÕr; Java hariÑ. Java, yukarda saydğmÕz ve daha birÑok bilgisayar tãrãnãn

~ XIV ~

BÞlãm 5řte, bir komutun, ancak belirli koĢullar sağland×ğ× taktirde Ñal×Ģt×r×lmas×n×

sağlayan kontrol yap×lar×n× anlatacağ×z. BÞylece, Java program×m×zdaki komutlar×n

sadece yukar×dan aĢağ×ya ve s×ra ile Ñal×Ģt×r×lmas× ile k×s×tl× kalmay×p, komutlar×n

belirli koĢullarda Ñal×Ģt×r×lmas×n× ya da gÞz ard× edilmesini nas×l yapabileceğimizi

Þğreneceğiz.

BÞlãm 6řda metnin temel taĢ× olan karakterlerin Javařda nas×l iĢlendiğini Þğrenece-

ğiz. Bu doğrultuda Javařda kullan×lan ASCII ve Unicode karakter listesi ãzerinden

program Þrnekleri ile konuyu pekiĢtireceğiz.

BÞlãm 7řte, bir komutun birden Ñok kez tekrar edilmesi iÑin kullan×labilecek olan

yap×lar× anlatacağ×z. BÞylece, ayn× iĢi pek Ñok kez yapmak iÑin ayn× komutu tekrar-

dan yazmak yerine uygun bir dÞngã yap×s×n× nas×l kullanabileceğimizi Þğreneceğiz.

Odak noktam×z× kaÑ×rmamak iÑin yine tamsay×lar ãzerinde Ñal×Ģacağ×z. Diğer veri

tãrlerine iliĢkin koĢullu Ñal×Ģma konusundaki bilgileri, o veri tãrãnã anlatt×ktan

hemen sonra ayn× bÞlãm iÑinde vereceğiz.

BÞlãm 8řde ayn× veri tãrãne sahip birden Ñok değeri kolayl×kla yÞnetebilmek iÑin

kullan×lan dizi yap×s×n× anlatacağ×z. Dizi, Javařda isimsiz bir nesne olarak yarat×l×r

ve dizi elemanlar×na eriĢim, dizi referans× kullan×larak yap×l×r. Dolay×s× ile dizi ko-

nusu, s×n×f ve nesne yap×s×ndan bağ×ms×z olarak anlat×lamaz. Oysa s×n×f ve nesne

yap×s× ayr×nt×l× olarak ancak on ikinci bÞlãmde anlat×lmaktad×r. Bu nedenle konu

anlat×m×, s×n×f ve nesne kavramlar×n× da belirli bir seviyede anlatarak gerÑekleĢecek-

tir. BÞylece bu bÞlãmã bitirdiğimizde sadece dizi konusunu değil, ayn× zamanda

s×n×f ve nesne yap×s×n× da k×smen anlam×Ģ olacaks×n×z.

BÞlãm 9řda, ayn× iĢlemleri gerÑekleĢtirmek iÑin bu iĢlem komutlar×n× bir metot

iÑine yaz×p, gerektiğinde bu metodu dilediğimizce Ñağ×rman×n yolunu Þğreneceğiz.

BÞlãm 10řda, program×m×z×n sonuÑlar×n×n ekrana değil de bir dosyaya ne Ģekilde

yaz×labileceğini, bir dosyaya yaz×lm×Ģ olan bilgilerin de nas×l okunacağ×n gÞreceğiz.

BÞlãm 11řde, karakterlerin daha kapsaml× hali olarak da değerlendirebileceğimiz

kelime, cãmle ya da yaz×lar×n bilgisayarda ne Ģekilde iĢlenebileceğini gÞreceğiz.

BÞlãm 12řde, Java dilinin geliĢmiĢ yap×s× olan s×n×f ve nesne kavramlar×n× Þğrene-

ceğiz. S×n×f konusunda kapsaml× bilgiler vermek bu kitab×n amaÑlar×ndan değildir,

yine de bu konuda en az×ndan bir altyap× ortaya koymadan bir Java kitab×n× sonlan-

d×rmak, herhalde bu bãyãk dile karĢ× bir haks×zl×k olurdu.