tag:blogger.com,1999:blog-43065907002869186562024-02-21T04:10:09.433+03:00Java ÖğreniyoruzJava öğrendikçe burada paylaşıyorum.mesuthttp://www.blogger.com/profile/08748069859831517147noreply@blogger.comBlogger9125tag:blogger.com,1999:blog-4306590700286918656.post-75568909438170878132013-03-07T19:59:00.001+03:002013-03-07T19:59:24.918+03:00Multithreading - Ufak bir notŞimdi şöyle bir şey var; İnternette multithreading ile ilgili birçok örnek ve gerek detaylı gerek kısa birçok da ders var.<br />
Bunların bize bir şeyler öğrettiği kesin. Thread nasıl başlatılır, yararları nedir, ne zaman kullanılır vs.<br />
Ama geçenlerde multithreading olayını anlamak için yapmak istediğim bir deneme projesinde takılı kaldım.<br />
<br />
Deneme projem iki sınıftan oluşuyordu. Her birinin içinde de birden fazla metot bulunuyordu. Bildiğiniz gibi, bir thread, ilk başta run() metodunu arar.<br />
<blockquote class="tr_bq">
public class ThreadDeneme implements Runnable{</blockquote>
<blockquote class="tr_bq">
public void run(){</blockquote>
<blockquote class="tr_bq">
//çalışacak kod </blockquote>
<blockquote class="tr_bq">
}</blockquote>
<blockquote class="tr_bq">
}</blockquote>
Ama benim istediğim bundan biraz farklıydı. Sadece run içindeki kodu çalıştırmak istemiyordum. Ama thread de sadece bunu çalıştıracaktı.<br />
İstersem, bu run() metodunun içinden farklı metotları çağırabiliyorum tabi ki. Burada bir sorun yok. Şu şekilde mesela;<br />
<br />
<blockquote class="tr_bq">
public class ThreadDeneme implements Runnable{</blockquote>
<blockquote class="tr_bq">
public void run(){</blockquote>
<blockquote class="tr_bq">
//bu sınıftaki başka bir metot</blockquote>
<blockquote class="tr_bq">
yeniMetot(); </blockquote>
<blockquote class="tr_bq">
}</blockquote>
<blockquote class="tr_bq">
}</blockquote>
Bu, run metodunun içinden yeniMetot'u çağıracak ve böylece yeni metot, farklı bir thread içinden çalışıyor olacak. Ama eğer ben tüm metotların farklı threadler içerisinde çalışmasını istersem bunu bu şekilde yapamıyorum. Tabi ki run() metodu içerisinde istediğim kadar metot çağırabilirim. Hatta başka bir sınıf nesnesi oluşturup o sınıftaki bir yöntemi de çağırabiliyorum. Ama ya birden fazla yöntemi multithreading olarak çağırmak istersem ve bu metotların birbirinden farklı bir şekilde çalışmasını istersem?<br />
Yani, metotBir ve metotIki'yi farklı zamanlarda da çağırmak istersem ne olacak? Bu durumda run() metodunun içini program çalışırken değiştiremediğim için, istediğim gibi bir şey mümkün değil. İkisini birden çalıştırmaya razı olacaktım mesela. Ki, bu ideal değil.<br />
Bir thread'i nasıl başlatıyoruz? Bildiğim kadarıyla şöyle başlatabiliyorduk:<br />
<blockquote class="tr_bq">
Thread t1 = new Thread(SınıfAdı);</blockquote>
İşte burada sadece tun() metodu içindeki yeri çalıştıracak. Ben de bu durumda ya metotBir ya da metotIki'yi seçecektim. Ama biraz araştırdıktan sonra bir thread oluşturmanın tek yolunun bu olmadığını fark ettim. Yukarıdaki satırda Thread'in istediği aslında şu;<br />
<blockquote class="tr_bq">
Thread t1 = new Thread(Bir Runnable sınıf);</blockquote>
O halde, anonim bir Runnable sınıfı yaratabilir ve içine de istediğim bir metodu koyabilirim:<br />
<blockquote class="tr_bq">
Thread t1 = new Thread(new Runnable(){ </blockquote>
<blockquote class="tr_bq">
public void run(){</blockquote>
<blockquote class="tr_bq">
sinifNesnem.metotBir(parametrelerim); </blockquote>
<blockquote class="tr_bq">
}</blockquote>
<blockquote class="tr_bq">
});</blockquote>
<blockquote class="tr_bq">
t1.start();</blockquote>
Böylece istediğim sınıfın istediğim metodunu, istediğim anda başka bir thread içinden çağırabiliyor olacağım. Projemi şöyle yaptım:<br />
<blockquote class="tr_bq">
<span class="Apple-tab-span" style="white-space: pre;"> </span>SınıfBir sBir = new SınıfBir();</blockquote>
<blockquote class="tr_bq">
<span class="Apple-tab-span" style="white-space: pre;"> </span>Sınıfİki sİki = new SınıfIki();</blockquote>
<blockquote class="tr_bq">
<span class="Apple-tab-span" style="white-space: pre;"> </span>Thread t1 = new Thread(sBir);</blockquote>
<blockquote class="tr_bq">
<span class="Apple-tab-span" style="white-space: pre;"> </span> Thread t2 = new Thread(new Runnable(){</blockquote>
<blockquote class="tr_bq">
<span class="Apple-tab-span" style="white-space: pre;"> </span>public void run() {</blockquote>
<blockquote class="tr_bq">
<span class="Apple-tab-span" style="white-space: pre;"> </span>System.out.println("t2 başlıyor... "+ System.currentTimeMillis());</blockquote>
<blockquote class="tr_bq">
<span class="Apple-tab-span" style="white-space: pre;"> </span>sİki.metotBir();</blockquote>
<blockquote class="tr_bq">
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<span class="Apple-tab-span" style="white-space: pre;"> </span></blockquote>
<blockquote class="tr_bq">
<span class="Apple-tab-span" style="white-space: pre;"> </span>});</blockquote>
<blockquote class="tr_bq">
<span class="Apple-tab-span" style="white-space: pre;"> </span></blockquote>
<blockquote class="tr_bq">
<span class="Apple-tab-span" style="white-space: pre;"> </span>static Thread t3 = new Thread (new Runnable(){</blockquote>
<blockquote class="tr_bq">
<span class="Apple-tab-span" style="white-space: pre;"> </span>public void run(){</blockquote>
<blockquote class="tr_bq">
System.out.println("t2 başlıyor... "+ System.currentTimeMillis()); </blockquote>
<blockquote class="tr_bq">
<span class="Apple-tab-span" style="white-space: pre;"> </span>sİki.metotİki();</blockquote>
<blockquote class="tr_bq">
<span class="Apple-tab-span" style="white-space: pre;"> </span>}</blockquote>
<blockquote class="tr_bq">
<span class="Apple-tab-span" style="white-space: pre;"> </span>});</blockquote>
<br />
Sonra da geriye bunları başlatmak kalıyor. Onu da t1.start(); diyerek başlatabiliyorum.<br />
<blockquote class="tr_bq">
</blockquote>
<blockquote class="tr_bq">
</blockquote>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
mesuthttp://www.blogger.com/profile/08748069859831517147noreply@blogger.com0tag:blogger.com,1999:blog-4306590700286918656.post-8053372690626327912012-08-30T10:00:00.000+03:002012-08-30T10:00:05.500+03:00DöngülerDöngüler iki türlüdür: while ve for döngüleri. Bunların da farklı şekillerde kullanımı vardır. While'ı inceleyerek başlayalım.<br />
<br />
<h3>
While</h3>
<div>
Bir ifade doğru olduğu sürece döngü çalışmaya devam eder. Kod bloğunun sonuna kadar gider ve ardından tekrar kontrol eder. Eğer doğru ise devam eder, değil ise döngü dışına çıkar. Şu şekilde kullanılır;</div>
<div>
<br /></div>
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;">
<table><tbody>
<tr><td><pre style="line-height: 125%; margin: 0;">1
2
3</pre>
</td><td><pre style="line-height: 125%; margin: 0;"><span style="color: blue;">while</span>(kosul){
yapilacaklar
}
</pre>
</td></tr>
</tbody></table>
</div>
<div>
<br /></div>
<div>
Aynen if deyiminde olduğu gibi, burada da koşul true veya false değeri döndüren bir ifade olmalıdır. Yukarıdaki yapıda, önce koşul kontrol edilir, ardından eğer koşul doğru ise yapılacaklar kısmı çalıştırılır. Yani, bu döngüdeki kodlarımızın hiç çalışmama ihtimali vardır.<br />
<br />
Eğer kodlarımızın en az bir defa çalışmasını istiyorsak, bir <b>do-while</b> döngüsü yaratmamız gerekir. Bu şekilde, koşulun durumu ne olursa olsun, kod en az bir defa çalışır.<br />
<br /></div>
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;">
<table><tbody>
<tr><td><pre style="line-height: 125%; margin: 0;">1
2
3
4
5</pre>
</td><td><pre style="line-height: 125%; margin: 0;"><span style="color: navy; font-weight: bold;">do</span>
{
yap<span style="background-color: #e3d2d2; color: #a61717;">ı</span>lacaklar
}
<span style="color: navy; font-weight: bold;">while</span>(kosul);
</pre>
</td></tr>
</tbody></table>
</div>
<div>
<br />
Gördüğünüz gibi, do'dan sonra noktalı virgül filan yok. While'dan sonra normalde yok iken, bu durumda var. Zaten yukarıdaki yapıyı şu şekilde de yazabilirdik, çünkü Java'da boşlukların önemi yok:<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;">
<table><tbody>
<tr><td><pre style="line-height: 125%; margin: 0;">1
2
3</pre>
</td><td><pre style="line-height: 125%; margin: 0;"><span style="color: navy; font-weight: bold;">do</span>{
yap<span style="background-color: #e3d2d2; color: #a61717;">ı</span>lacaklar
}<span style="color: navy; font-weight: bold;">while</span>(kosul);
</pre>
</td></tr>
</tbody></table>
</div>
<br />
Bu döngüden de istediğimiz zaman çıkabilmek için break ifadesini kullanabiliriz. Kullanımı yaratıcılığımıza bağlı ama şu şekilde yapabiliriz:<br />
<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;">
<table><tbody>
<tr><td><pre style="line-height: 125%; margin: 0;"> 1
2
3
4
5
6
7
8
9
10</pre>
</td><td><pre style="line-height: 125%; margin: 0;"><span style="color: navy; font-weight: bold;">int</span> a = <span style="color: blue;">0</span>;
<span style="color: navy; font-weight: bold;">while</span>(<span style="color: navy; font-weight: bold;">true</span>){
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"Döngüdeyiz: "</span>+a);
a++;
<span style="color: navy; font-weight: bold;">if</span>(a><span style="color: blue;">5</span>){
<span style="color: navy; font-weight: bold;">break</span>;
}
}
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"Döngüde değiliz."</span>);
</pre>
</td></tr>
</tbody></table>
</div>
<br />
Tabi ki buradaki örneği break kullanmak için yaptık. Aslında aynı şeyi yapan daha kısa bir kod yazabilirdik.<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;">
<table><tbody>
<tr><td><pre style="line-height: 125%; margin: 0;">1
2
3
4
5
6</pre>
</td><td><pre style="line-height: 125%; margin: 0;"><span style="color: navy; font-weight: bold;">int</span> a = <span style="color: blue;">0</span>;
<span style="color: navy; font-weight: bold;">while</span>(a<=<span style="color: blue;">5</span>){
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"Döngüdeyiz: "</span>+a);
a++;
}
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"Döngüde değiliz."</span>);
</pre>
</td></tr>
</tbody></table>
</div>
<br />
a<=5 dedik çünkü yukarıdaki kod, a 5 olana kadar çalışıyor. Aynı şeyi bu şekilde de elde edebiliyoruz.<br />
<br />
<h3>
For</h3>
<div>
For döngüsü genelde bir dizinin elemanlarını sıralarken vs. kullanılır. Ama bu tek kullanım alanı değildir tabi ki. Kısaca kullanımı şu şekildedir;</div>
<div>
<br /></div>
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;">
<table><tbody>
<tr><td><pre style="line-height: 125%; margin: 0;">1
2
3</pre>
</td><td><pre style="line-height: 125%; margin: 0;"><span style="color: navy; font-weight: bold;">for</span>(int i = <span style="color: blue;">0</span>;i<<span style="color: blue;">10</span>;i++){
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(i);
}
</pre>
</td></tr>
</tbody></table>
</div>
<br />
for ve yanındaki parantezi açıklayacak olursak;<br />
int i = 0 dediğimiz yerde, döngüyü sürdürmek için gerekli değişkeni tanımlıyoruz. Burada tanımladığımız değişkenin etki alanı sadece döngü içidir. Yani, döngünün dışında bir i değişkenimiz yok.<br />
i<10 verdiğimiz yerde de, döngünün bitmesi için bir koşul belirtiyoruz. Döngüyü kontrol için i değişkeni tanımladığımız için, i ile ilgili bir şey olması gerekiyor.<br />
i++ ise i değişkenini her döngü sonunda bir sayı arttırmayı sağlar. Eğer bu şekilde bir şey yazmazsak, döngüden çıkamayız (Tabi ki döngünün içindeki yerde i'yi arttırmadığımızı varsayıyoruz).<br />
<br />
Tabi ki yukarıdaki sadece bir örnektir. Mesela i'yi 100 olarak tanımlayıp i>0 deyip, i-- da diyebilirdik. Aynı şekilde, şunu da yapabilirdik;<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;">
<table><tbody>
<tr><td><pre style="line-height: 125%; margin: 0;">1
2
3</pre>
</td><td><pre style="line-height: 125%; margin: 0;"><span style="color: navy; font-weight: bold;">for</span>(<span style="color: navy; font-weight: bold;">int</span> i = <span style="color: blue;">0</span>; i<<span style="color: blue;">10</span>;i+=<span style="color: blue;">2</span>){
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(i);
}
</pre>
</td></tr>
</tbody></table>
</div>
<br />
Burada da i'yi ikişer arttırıyoruz.<br />
<br />
For döngüsünün özel bir tipi vardır. Kimi yerlerde buna for-each döngüsü de denir. Bu döngünün tek amacı, dizilerin değerlerini sıralamaktır. Öyle ya da böyle, ne kadar ertelersek erteleyelim, dizilerle ilgilenmemiz gerekeceği için, işimizi kolaylaştıracak şu yapıyı bilmekte yarar var;<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;">
<table><tbody>
<tr><td><pre style="line-height: 125%; margin: 0;">1
2
3
4</pre>
</td><td><pre style="line-height: 125%; margin: 0;"><span style="color: navy; font-weight: bold;">int</span>[] dizi = {<span style="color: blue;">1</span>,<span style="color: blue;">6</span>,<span style="color: blue;">7</span>,<span style="color: blue;">9</span>,<span style="color: blue;">5</span>,<span style="color: blue;">3</span>,<span style="color: blue;">8</span>,<span style="color: blue;">0</span>,<span style="color: blue;">3465</span>,<span style="color: blue;">2</span>};
<span style="color: navy; font-weight: bold;">for</span>(<span style="color: navy; font-weight: bold;">int</span> i:dizi){
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(i);
}
</pre>
</td></tr>
</tbody></table>
</div>
<br />
İlk satırda bir dizi tanımladık. Dizi tanımlarken [ ve ] kullanılır. Farklı şekillerde dizi tanımlanabilir. Şu anda konumuz değil :)<br />
İkinci satırda, gördüğünüz üzere daha kısa şeyler yazarak bir üst örnekle de kurabileceğimiz döngüyü kurduk.<br />
Burada sürekli i kullanmam o harfin zorunlu olduğu manasına gelmesin tabi ki. Yani aslında ikinci satır şudur;<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;">
<table><tbody>
<tr><td><pre style="line-height: 125%; margin: 0;">1
2</pre>
</td><td><pre style="line-height: 125%; margin: 0;"><span style="color: navy; font-weight: bold;">for</span>(degiskenTip degeri:diziAdi){
}
</pre>
</td></tr>
</tbody></table>
</div>
<br />
For ve while ile şöyle bir güzellik yapabiliyoruz kendimize; Konsol programlarımızın sürekli çalışmasını sağlayabiliyoruz. Yazdığımız (veya yazmaya çalıştığımız) tüm programlar, sadece bir defa istediğimiz işlemi yapıp kapanıyordu. Ama istediğimiz şey bunun biraz daha ötesiydi, biz kapatana kadar çalışsın.<br />
<br />
Bunun için sonsuz bir döngü yaratmak gerekir. Bu da gayet kolaydır. Programınızı yazın ve hatasız çalıştığından emin olun. Daha sonra da kodlarınızı sonsuz bir döngünün (yani aşağıdaki örneklerden birinin) içine yazın.<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: navy; font-weight: bold;">for</span>(;;){
kodlarınız
}
veya
while(<span style="color: navy; font-weight: bold;">true</span>){
kodlarınız
}
</pre>
</div>
<br />
Şu anda sürekli devam eden bir programımız var. Peki, eğer köşedeki çarpıya basmadan programın biz istediğimizde kapanmasını istersek ne olacak?<br />
<br />
Böyle bir durumda, sınırsız döngünün içinde bir yerde (bu kodlarınızın arasında da olabilir) kullanıcıdan bir girdi alırsınız ve girdiye göre çıkış işlemini başlatırsınız.<br />
<br />
Mesela kullanıcı K yazıp ENTER tuşuna basınca program döngüyü terk etsin ve çıkış işlemini yapsın:<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;">
<pre style="line-height: 125%; margin: 0;">String kullaniciGirdisi=<span style="color: blue;">""</span>;
<span style="color: navy; font-weight: bold;">if</span>(kullaniciGirdisi.<span style="color: red;">equals</span>(<span style="color: blue;">"K"</span>)){
System.<span style="color: red;">exit</span>(<span style="color: blue;">0</span>);
}
</pre>
</div>
<br />
Burada kullanıcıdan nasıl girdi edeceğimiz yazmıyor. Sadece kullaniciGirdisi değişkenine, kullanıcı girdisinin atandığını varsayıyoruz.<br />
if içindeki kodlar, değişkenimizi K harfi ile karşılaştırıyor. Karşılaştırmak için normalde == kullanırdık ama Stringler için stringDegisken.equals("string" veya stringNesne) kullanırız.<br />
<br />
System.exit(0) ifadesi, sondaki 0 dışında kendini açıklıyor zaten. Sıfır ise, çıkış kodudur. İstediğimiz değeri oraya koyabiliriz ve sıfır dışındaki her biri, bir hatadan dolayı çıkışı simgeler. Ama şu anda, kullanıcı istediği için (hata olmadan) bir çıkış gerçekleştirmeye çalıştığımız için, 0 kullanıyoruz.<br />
<br />
Her zamanki gibi, sorular veya yorumlar için açığım :)</div>
mesuthttp://www.blogger.com/profile/08748069859831517147noreply@blogger.com0tag:blogger.com,1999:blog-4306590700286918656.post-87531652493201081972012-08-28T10:00:00.000+03:002012-08-28T10:00:02.445+03:00Koşul İfadeleriMerhaba.<br />
<br />
Bu yazıda, programcılığın en temel konularından birini inceleyeceğiz. İşe yarar programlar yaratabilmemiz için gerekli en temel şey, programın akışını kontrol edebilmektir. Çünkü bir kullanıcının programımızla ne yapacağını bilemeyiz asla. Örneğin, basit bir hesap makinesinde bile, bölme işleminde mesela, kullanıcının sıfır girmeyeceğini bilemeyeceğimiz için, önlem almak zorundayız. Önlem almanın bir yolu, koşul ifadesi kullanmaktır. Yani, şöyle deriz: "Eğer bölen sayı sıfır değilse, devam et ve bölme işlemini yap. Aksi halde kullanıcıyı uyar ve tekrar değer girmesini iste." Yada kullanıcıya seçim yapma hakkı da verebiliriz. Yazdığı kelimeye göre işlem yapan bir programı da seçim ifadelerini kullanarak yapabiliriz.<br />
<br />
Koşul ifadeleri, if ve switch'tir. Her ikisinin de farklı durumlarda birbirinden üstün olduğu yerler vardır, ama birbirlerinin yerine de kullanılabilirler.<br />
<br />
<h4>
If ve If-Else</h4>
<div>
If ifadesi İngilizce'de "eğer" manasına gelir. "Eğer sayı 3'ten büyükse sayıyı 5'e böl" ifadesinin 'Javaca'sı ise şudur;</div>
<div>
<br /></div>
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: navy; font-weight: bold;">if</span>(sayi><span style="color: blue;">3</span>)
sayi/<span style="color: blue;">5</span>;
</pre>
</div>
<div>
<br />
Dikkatinizi çekmiş olmalı, if ifadesinin bitiminde diğer ifadelerde yaptığımız gibi noktalı virgül koymuyoruz.<br />
Her ne kadar yukarıdaki kullanım yanlış değilse de, karmaşayı engellemek için if'ten sonraki kısmı süslü parantezlere almak daha uygun ve sorunsuz bir yöntem olacaktır.<br />
<br /></div>
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: navy; font-weight: bold;">if</span>(sayi><span style="color: blue;">3</span>){
sayi/<span style="color: blue;">5</span>;
}
</pre>
</div>
<br />
Yukarıdaki kodda, program koşul doğru ise süslü parantezler içindeki ifadeyi çalıştıracak, değilse çalıştırmadan devam edecektir. Bu haliyle biraz eksiktir, çünkü koşul yanlışsa bunu kullanıcıya bildirmek isteyebilir veya tamamen farklı bir kod çalıştırmak isteyebiliriz. Bunun için de, else ifadesini kullanmamız gerekir:<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: navy; font-weight: bold;">int</span> sayi = <span style="color: blue;">1</span>;
<span style="color: navy; font-weight: bold;">if</span>(sayi><span style="color: blue;">3</span>){
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"Sayı büyük."</span>);
}<span style="color: navy; font-weight: bold;">else</span>{
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"Sayı küçük"</span>);
}
</pre>
</div>
<br />
if kod bloklarını iç içe kullanarak daha karmaşık koşulları devreye sokabiliriz. Burada dikkat edilmesi gereken çok önemli bir durum vardır. Hangi if'in hangi else'e ait olduğunu bilmek. Süslü parantezleri kullanmanın avantajını burada da görürüz. Özellikle de if'lerden bir veya birden fazlası bir else ifadesi içermiyorsa.<br />
if-else-if-else şeklinde devam eden kodlar da yazmak mümkündür. Bu durumda program doğru koşulu bulduğu yere kadar ilerler ve sadece doğru olan kodu çalıştırır (Beklendiği gibi). Her ne kadar böyle bir merdiven oluşturmak yanlış değilse de, switch ifadesi varken bunu yapmak işleri karmaşıklaştırmaktan başka bir şey değildir.<br />
<br />
<h4>
Switch</h4>
<div>
Çok yollu dallanma ifadesidir. Bir ifadenin değerine göre programı dallandırır. Bunu if-else-if merdivenine alternatif olarak düşünebiliriz. Hatta bana kalırsa daha mantıklı bir yol. Basit bir örnek verelim:<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;">
<table><tbody>
<tr><td><pre style="line-height: 125%; margin: 0;"> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17</pre>
</td><td><pre style="line-height: 125%; margin: 0;"><span style="color: navy; font-weight: bold;">int</span> i = <span style="color: blue;">3</span>;
<span style="color: navy; font-weight: bold;">switch</span>(i){
<span style="color: navy; font-weight: bold;">case</span> <span style="color: blue;">0</span>:
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"Sayı 0"</span>);
<span style="color: navy; font-weight: bold;">break</span>;
<span style="color: navy; font-weight: bold;">case</span> <span style="color: blue;">1</span>:
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"Sayı 1"</span>);
<span style="color: navy; font-weight: bold;">break</span>;
<span style="color: navy; font-weight: bold;">case</span> <span style="color: blue;">2</span>:
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"Sayı 2"</span>);
<span style="color: navy; font-weight: bold;">break</span>;
<span style="color: navy; font-weight: bold;">case</span> <span style="color: blue;">3</span>:
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"Sayı 3"</span>);
<span style="color: navy; font-weight: bold;">break</span>;
<span style="color: navy; font-weight: bold;">default</span>:
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="background-color: #e3d2d2; color: #a61717;">"</span>Say<span style="background-color: #e3d2d2; color: #a61717;">ı</span> <span style="color: blue;">3</span>'ten büyük.);
}
</pre>
</td></tr>
</tbody></table>
</div>
<br />
i değişkeninin değerini değiştirerek sonuçları görebilirsiniz.<br />
Bana göre burada dikkat çekebilecek noktalar;<br />
<br />
<ol>
<li>case 0 ifadelerinden sonra noktalı virgül değil, iki nokta (:) kullanılmış.</li>
<li>switch ifadesinden sonra parantez içinde değerlendirmek istediğimiz değişken (veya duruma göre ifade) yazılmış.</li>
<li>Her case ifadesi break; ile bitiyor.</li>
<li>default: isimli bir satırımız var.</li>
<li>default ifadesinde break; yok.</li>
</ol>
<div>
Kodu çalıştırın. Burada uzun uzun anlatacağım birçok şeyi aslında kodda değişiklikler yaparak görebiliriz. Mesela, break; ifadesini yazmak zorunlu mu? Kodu case ifadesinin alt satırına değil de karşısına yazmak bir şey değiştirir mi? default ifadesinin bitişinde break; yazmak ne değiştirir? </div>
<div>
<br /></div>
<div>
Bunlardan birkaçını yanıtlayayım. </div>
<div>
Öncelikle, break; ifadesi zorunlu değildir. Ama break ifadesini eklemezsek diğer case'ler de değerlendirilecektir. Yukarıdaki örnekte i'i 1 yapıp case 1'deki break ifadesini kaldırırsak, diğerleri doğru olmadığı için, case 1'i ve default'u çalıştıracaktır.</div>
<div>
<br /></div>
<div>
default ifadesinin ne işe yaradığını i değişkenini 4 yaparak görebiliriz. Bu ifade, aslında her koşulda çalışacak bir ifadedir. Bunu, break ifadesini kaldırdığımızda gördük zaten. Yani break; ifadesini kullanmazsak, default da çalıştırılacaktır. Böyle bir durum gerektirecek program yazdığınızda, default ifadesini boş bırakabilirsiniz veya hiç yazmayabilirsiniz de.</div>
<div>
<br /></div>
<div>
Switch ifadelerinde dikkat edilecek diğer bir konu, case'lerin aynı değeri alamayacak olmasıdır. Yani iki tane case 0 olamaz. </div>
<div>
<br /></div>
<div>
Switch ifadelerinde switch'in yanındaki parantezlere verdiğimiz değişken, <b>byte, short, int veya char</b> tipinde olmalıdır. Ama eğer <b>JDK 7 ve sonraki sürümleri kullanıyorsanız</b>, String tipini de kullanabilirsiniz.</div>
<div>
String tipini kullanırken dikkat edilecek şey ise, case'den sonraki ifadeleri çift tırnak içinde yazmak gerektiğidir. Yukarıdaki örneği String tipi ile yapalım:</div>
<div>
<br /></div>
<div>
<br /></div>
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;">
<table><tbody>
<tr><td><pre style="line-height: 125%; margin: 0;"> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17</pre>
</td><td><pre style="line-height: 125%; margin: 0;">String i = <span style="color: #a31515;">"üç"</span>;
<span style="color: blue;">switch</span>(i){
<span style="color: blue;">case</span> <span style="color: #a31515;">"sıfır"</span>:
System.out.println(<span style="color: #a31515;">"Sayı 0"</span>);
<span style="color: blue;">break</span>;
<span style="color: blue;">case</span> <span style="color: #a31515;">"bir"</span>:
System.out.println(<span style="color: #a31515;">"Sayı 1"</span>);
<span style="color: blue;">break</span>;
<span style="color: blue;">case</span> <span style="color: #a31515;">"iki"</span>:
System.out.println(<span style="color: #a31515;">"Sayı 2"</span>);
<span style="color: blue;">break</span>;
<span style="color: blue;">case</span> <span style="color: #a31515;">"üç"</span>:
System.out.println(<span style="color: #a31515;">"Sayı 3"</span>);
<span style="color: blue;">break</span>;
<span style="color: blue;">default</span>:
System.out.println("Sayı üçten büyük.");
}
</pre>
</td></tr>
</tbody></table>
</div>
<div>
<br />
Şimdi operatörleri ve koşul ifadelerini öğrendiğimize göre kendimize bir problem bulup onu çözecek bir program yazabiliriz.<br />
<br />
Problem - 1:<br />
Bir n sayımız olsun (int tipinde). Bunun 34 ile olan mutlak farkını bulalım. Eğer n, 34'ten büyük ise, mutlak değeri iki ile çarpalım.<br />
<br />
Problem - 2:<br />
Gün içerisinde uyuyoruz, çalışıyoruz ve dinleniyoruz. Saat 0-8 arası uyuyalım, 8-19 arası çalışalım ve geri kalan vakitlerde de dinlenelim. Bir de çocuğumuz olsun. Eğer o ağlıyorsa, uyumamız veya dinlenmemiz mümkün olmasıın. Tabi ki burada saat integer (int) tipinde bir değişken ve 0-23 arası değer alıyor. Çocuk ise, boolean tipinde bir değişken oluyor. Çalışma, uyuma ve dinlenmeyi veya bunlardan birini yapamamayı (Uyuyamıyoruz) da ekrana yazdırıyoruz :)<br />
<br />
Problemlerin çözümü, while ve for döngülerinin anlatılacağı yazıdan sonra :)</div>
</div>
mesuthttp://www.blogger.com/profile/08748069859831517147noreply@blogger.com0tag:blogger.com,1999:blog-4306590700286918656.post-62736629262282887622012-08-27T10:00:00.000+03:002012-08-27T10:00:15.457+03:00Operatörler - 2Merhaba, bu yazıda operatörlere devam edelim ve sonrakinde eğlenceli işlere bir giriş yapalım artık.<br />
<br />
<h3>
Mantıksal Operatörler</h3>
<div>
Burada anlatacağım operatörler, ilişkisel operatörler gibi, karşılaştırma işini yapacak ve ardından bize bir boolean değeri verecek (true veya false). Biz de, programımızın akışını buna göre değiştirmeye veya devam ettirmeye karar vereceğiz. Bize boolean değeri döndürecek olmalarının anlamı nedir? Bu sorunun cevabı için mantıksal operatörlerin bir listesini verip ardından boolean değeri döndürmelerinin bize ne kattığını görmek için bir kaç satır kod yazalım.<br />
<br />
& Mantıksal AND (VE) - İki koşul doğru ise true, biri bile yanlış ise false döndürür.<br />
| Mantıksal OR (VEYA) - İki koşul yanlış ise false, diğer türlü true döndürür.<br />
^ Mantıksal XOR - İki ifade doğru veya ikisi de yanlış ise false, en az biri yanlış ise true döndürür.<br />
! Mantıksal NOT (DEĞİL) - boolean değerinin tersini verir.<br />
<br />
Bunları bu şekilde ezberlemeye vs. gerek yok tabi ki. 2-3 satırlık kodla hepsini deneyebiliriz:<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"> <span style="color: navy; font-weight: bold;">boolean</span> deger;
deger = <span style="color: navy; font-weight: bold;">false</span>|<span style="color: navy; font-weight: bold;">false</span>;
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(deger);
</pre>
</div>
<br />
<br />
Yukarıdaki kodda deger = false|false; ifadesini istediğiniz şekilde değiştirip çıkan sonucu görebilirsiniz.<br />
<br />
Bir de koşullu VE(&&) ve koşullu VEYA(||) vardır. Bunları kullanırsak, Java sonucu soldaki değerden belirleyebilirse, sağdakini incelemez. Bu ne demek oluyor?<br />
<br />
& ve | operatörlerini düşünelim: A&B ve A|B ifadelerimiz olduğunu varsayalım. & operatörü eğer A false ise, sonucun false olacağını bilir. Ama buna rağmen diğerini de hesaplar. Aynı şekilde, | operatörü, eğer A true ise, false'u hesaplamasına gerek olmadan değeri true döndürebilir (çünkü en az birinin true olması sonucun true olması için yeterlidir). Buna rağmen ikinci ifadeyi de inceler. Bu durum, && veya || operatörlerinde yoktur.<br />
<br />
Belki de şu anda bunun ne gibi yararlar veya hatalar getirebileceğini bilmiyoruz, ama şunu bir kenara not edelim: Programımız kodlar düzgün olduğu halde istediğimiz şekilde çalışmıyorsa, daha derin çözümler aramadan ve çıkmaza gelip programdan bıkmadan önce, mantıksal ve ve mantıksal veya ifadelerimizi koşullu ve ve koşullu veya ile değiştirmeyi (aynı şekilde tam tersi durum da geçerli) düşünebiliriz.<br />
<br />
&=, ^=, |= ifadeleri de atama yapıyor. Bunları denemek için ise, şu kodları yazıp sonucuna bakalım:<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: navy; font-weight: bold;">boolean</span> d = <span style="color: navy; font-weight: bold;">false</span>;
<span style="color: navy; font-weight: bold;">boolean</span> m = <span style="color: navy; font-weight: bold;">true</span>;
d &= m;
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(d);
</pre>
</div>
<br />
<br />
Yukarıda m ve d değerlerini ve alttaki işlemi değiştirerek değişik durumlar için sonuçları görebiliriz.<br />
<br />
<h4>
? Operatörü</h4>
<div>
Bütün operatörler iki operand alırken bu 3 tane alır. Daha sonra bahsedeceğim if döngüsünün kısa ve basit halidir. Kullanımı şu şekildedir;</div>
<div>
Koşul?ifade1:ifade2;</div>
<div>
Eğer koşul doğru ise ifade1, değil ise ifade2 çalıştırılır. Burada çok önemli bir ayrıntı vardır, ifade1 ve ifade2 void dışında bir tipe sahip bir değer döndürmelidir ve ikisi de aynı tip döndürmelidir. Örneğe bakalım;</div>
<div>
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"> <span style="color: navy; font-weight: bold;">int</span> a = <span style="color: blue;">10</span>, b = <span style="color: blue;">12</span>, c;
c = a > b ? a+b:a-b;
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(c);
</pre>
</div>
<br />
<br /></div>
<div>
a, b'den küçük olduğu için ikinci ifade çalışır. a'nın değerini 20 yapıp tekrar denediğimizde ikinci ifade çağrılır.</div>
<div>
<br /></div>
<br />
Bit operatörleri hakkında şimdilik bir şey paylaşmamaya karar verdim. Çünkü uzun bir süre (yapacağımız programlara göre belki de hiç) kullanmamıza gerek yok. Zamanımızı daha temel ve önemli şeyler üzerinde değerlendirirsek, kullanmamız gerektiği zaman öğrenmemiz belki de yarım saatimizi bile almayacaktır.<br />
Bit operatörleri, adlarından da anlaşıldığı gibi, bitler üzerinden işlem yapıyor. Yani, String değişkenimize uygulamaya çalışsak bile, String değil onun bitlerine göre işlem yapacak.<br />
<br /></div>
mesuthttp://www.blogger.com/profile/08748069859831517147noreply@blogger.com0tag:blogger.com,1999:blog-4306590700286918656.post-67473598316166330812012-08-26T10:00:00.000+03:002012-08-26T10:00:00.929+03:00Operatörler - 1Merhaba.<br />
Bu yazıda biraz operatörlerden bahsedelim. Bunlar aritmetik, bit tabanlı, mantıksal ve ilişkisel operatörler olarak dörde ayrılır.<br />
Aslında oldukça basit bir konudur ve vakit geçtikçe o kadar aşina olacağız ki, belki siz bu yazıyı okuduğunuz ben de yazdığım süreye acıyacağız.<br />
İşin aslına bakarsak, bunları bir liste halinde verip, üzerinde konuşulmaya değer olanları konuşmak yeterli olacak gibi duruyor. O zaman aritmatik operatörlerden başlayalım;<br />
<br />
<h3>
Aritmetik Operatörler</h3>
<div>
+, -, / ve * operatörlerinin anlamları gayet açık. Bu sebeple bunlardan özellikle bahsetmeye gerek yok diye düşünüyorum.</div>
<div>
% işareti, mod için kullanılır. Mod, bir sayının diğerine bölümünden elde edilen <b>kalandır.</b> Yani, 10%3 işleminin sonucunu bir değişkene atarsak, değişkenin değeri 1 olacaktır.</div>
<div>
++ ve -- işaretleri ise, değişkenin değerine 1 ekleyen veya çıkartan operatörlerdir. Bunları, değişkenin önünde veya sonunda kullanmak arasında büyük bir fark vardır. Bu farkı anlamak için kısa bir kod yazıp çalıştıralım.<br />
<br /></div>
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: navy; font-weight: bold;">int</span> sayi = <span style="color: blue;">10</span>;
<span style="color: navy; font-weight: bold;">int</span> sayi2 = <span style="color: blue;">5</span>;
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"İlk sayı: "</span>+ sayi +<span style="color: blue;">"Operatör değişkenin sonuna eklenince: "</span>+ sayi++); System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"Şimdi sadece kendisini yazalım: "</span>+sayi);
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"İlk sayı: "</span>+ sayi2 +<span style="color: blue;">"Operatör değişkenin sonuna eklenince: "</span>+ ++sayi2);
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"Şimdi sadece kendisini yazalım: "</span>+sayi2);
</pre>
</div>
<div>
<br />
Gördüğünüz gibi, ++ operatörünü değişkenden sonra koyarsak, önce değişkeni kullanıyor, sonra değerini arttırıyor. Böylece bir sonraki kullanımda değerine 1 eklenmiş halde oluyor. Eğer önce koyarsak, bu sefer önce değerini arttırıp sonra kullanıyor. Böylece ++sayi yazdıktan sonra orijinal değeri hiç kullanmamış oluyoruz.</div>
<div>
Başka bir grup aritmetik operatörler ise, basit dört işlemin işareti ile eşittir işaretini bir arada kullanan operatörlerdir (+=, -=, /=, *= ve %=). Bunlar ise, sol taraftaki değer ile sağ taraftaki değeri işler, ardından sonucu sol taraftaki değere atar. Dediğimi anlamak için yukarıdaki koda şunları ekleyelim;<br />
<br /></div>
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"> System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"+= operatörünü kullanarak sayi ile sayi2'yi toplayıp değeri sayi'ya atamaya çalışalım:"</span>);
sayi += sayi2;
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(sayi);
</pre>
</div>
<div>
<br />
Burada bu kodların çıktılarını vermeme gerek yok, çünkü zaten siz de deniyorsunuz şu anda :) Yalnız sizden bir ricam var, %= operatörünü kendiniz deneyin. Benim açıklamamı düşününce oradan çıkan sonucun sizi şaşırtma ihtimali var çünkü.<br />
<br /></div>
<h3>
İlişkisel Operatörler</h3>
<div>
Bunlar bizim karşılaştırma yapacağımız operatörler. Döngülerde vs. en çok bunları kullanacağız. Liste şeklinde yazalım;</div>
<div>
== Eşittir</div>
<div>
!= Eşit değil</div>
<div>
< Küçük</div>
<div>
> Büyük</div>
<div>
<= Küçük eşit</div>
<div>
>= Büyük eşit</div>
<div>
<br /></div>
<div>
== operatörüne dikkat çekmek istiyorum çünkü döngülerde bir kısmımız bunun yerine = operatörünü kullanacak ve neden hata verdiğini merak edeceğiz :)</div>
<div>
== operatörü, iki değeri birbiriyle karşılaştırırken, = operatörü atama yapar. Yukarıdaki kodumuza şunu ekleyerek durumu görelim isterseniz;</div>
<div>
<br /></div>
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"> System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"= kullanarak sayi = sayi2 yazalım ve iki sayının değerlerini görelim."</span>);
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"Şu anda sayi: "</span> + sayi + <span style="color: blue;">" ve sayi2: "</span> + sayi2);
sayi = sayi2;
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"İşlemden sonra ise durum şu;"</span>);
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"sayi: "</span> + sayi + <span style="color: blue;">" sayi2: "</span> + sayi2);
</pre>
</div>
<div>
<br />
Mantıksal operatörleri biraz uzun olduğu için yeni bir yazıda ele alalım.</div>
<div>
<br /></div>
<div>
Şu anda bu operatörlerle yapacak pek bir şeyimiz yok. Hatta, şimdiye kadar öğrendiklerimizle ilgili yapacak bir şey yok. Ama hepsi döngüleri ve koşul ifadelerini öğrendiğimiz zaman işimize yaramaya başlayacak. İşe yarar daha kaliteli programlar için ise, sınıflar, kalıtım ve polimorfizm konularını öğrenmemiz gerekecek.</div>
mesuthttp://www.blogger.com/profile/08748069859831517147noreply@blogger.com0tag:blogger.com,1999:blog-4306590700286918656.post-62841778646848221612012-08-25T02:00:00.000+03:002012-08-26T02:19:15.666+03:00İlkel Veri Tipleri<br />
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">Merhaba.<o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">Önceki yazıda println, print ve printf kullanımlarını
açıklayacağımı söylemiştim. Bir paragrafta açıklamaya çalışayım.<o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">println() ve print() arasında tek fark var; println satır
atlıyor, print ise imlecin aynı satırda kalmasını sağlıyor. printf() ise özel
bir yöntem. Formatlı bir şekilde çıktı yazabiliyorsunuz. Bir örnek vereyim;
diyelim ki kullanıcıdan ismini ve yaşını alıp ona bir selam vermek
istiyorsunuz. Yaş için integer tipinde bir yas değişkeni ve isim için de String
tipinde bir ad değişkeni oluşturdunuz ve isim ve yaşı kullanıcıdan aldınız.
Bunu yazdırmak için aşağıdaki kodu yazabilirsiniz. Burada, %s bir string, %d ise
bir integer arıyor.<o:p></o:p></span></div>
<blockquote class="tr_bq">
<span style="font-family: Arial, Helvetica, sans-serif;">System.out.printf("Selam %s, yaşın %d.",ad,yas);</span></blockquote>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">İsterseniz bununla ilgili ayrıntıları konuda ilerledikçe
verelim ve asıl konumuza dönelim.<o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">Java'da birazdan bahsedeceğimiz ilkel veri tipleri dışında
neredeyse her şey sınıf ve nesnelerden oluşuyor. Bu bahsedeceğimiz tiplerin bu
şekilde bırakılmalarının sebebi ise performansmış. Bu arada, ilkel veri
tiplerinden primitif tipler olarak bahsedildiğini de göreceksiniz. (Primitive =
İlkel)<o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">Normalde bir tablo halinde bunların maksimum ve minimum
değerlerini vermem gerekirdi ama daha pratik bir yol buldum. Bu şekilde,
kendimize bu tipler için bir referans programı yazabileceğiz. Birer cümle ile
hepsine göz atıp ardından referans programımızın kodlarını yazalım.<o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;"><b>int</b><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">İlkel veri tipleri arasında belki de en çok kullanacağımız
tiptir. 32 bitlik bir tiptir. İşaretlidir, yani artı ve eksi değerleri vardır.<o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;"><b>short</b><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">16 bitlik, işaretli bir tiptir. Hafızayı korumak adına
kullanılabilir aslında ama günümüz bilgisayarları için bu pek de gerekli değil
diye düşünüyorum.<o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;"><b>byte</b><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">8 bitlik, işaretli bir tiptir.<o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;"><b>long</b><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">64 bitlik işaretli bir tiptir.<o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;"><b>float</b><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">32 bit, işaretli bir tiptir. Virgüllü sayılar için
kullanabiliriz. Ama bu onun kesinlik gerektiren verileri tanımlamak için
kullanılması gerektiği anlamına gelmiyor. Onun için daha sonra göreceğimiz math
sınıfının BigDecimal öğesini kullanmamız gerekecek.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;"><o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;"><b>double</b><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">Bu da 64 bit, işaretli bir tiptir ve virgüllü sayılar için
kullanılır.<o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">Burada tanımlara kısa bir ara verip bir noktaya değinmek
istiyorum. float ve double tipinde değişken tanımlarken, double için değerin
sonuna d, float için de f koymamız gerekir. Yani, <o:p></o:p></span></div>
<blockquote class="tr_bq">
<span style="font-family: Arial, Helvetica, sans-serif;">float sayi = 21.4f;</span></blockquote>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">şeklinde tanımlamalıyız.<o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;"><b>boolean</b><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">Programcılıkla az buçuk ilgilendiyseniz, bunun sadece true
ve false değeri döndüren ve çok yararlı bir tip olduğunu bilirsiniz.<o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;"><b>char</b><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">Karakter için bir ilkel tip. 16 bit Unicode bir tiptir.
Karakter değişkeni tanımlarken de, tırnak işareti kullanmalıyız. Yani,<o:p></o:p></span></div>
<blockquote class="tr_bq">
<span style="font-family: Arial, Helvetica, sans-serif;">char karakter = 'a';</span></blockquote>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">şeklinde bir tanımlama yapmalıyız.<o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">Yukarıdakilerin dışında bir de String vardır. Bu, Java'daki
özel durumlardan bir tanesidir. İlkel veri tipi gibi kullanılabilen ama aslında
bir sınıf (ve dolayısıyla nesne) olan değişkendir. char dizilerini String'e
çevirebiliriz.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">String biraz geniş bir konudur. Şimdilik, Stringleri bir
defa tanımladığımızda bir daha değişmediklerini bilmemiz yeterlidir. Bu,
tanımladığımız String'i değiştiremeyeceğimiz anlamına gelmiyor. Sadece JVM'nin
String değiştirmek için fazla hafıza kullandığı anlamına geliyor.<o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">String ve char arasındaki farklar belli, ama yine de
belirtmekte fayda var;<o:p></o:p></span></div>
<div class="MsoNormal">
</div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;"><br class="Apple-interchange-newline" /></span></div>
<ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;">String ile istediğimiz uzunlukta karakteri atayabiliyoruz. Ama char ile sadece bir karakter atanıyor. char karakter = 'ui'; yazıp kendiniz görün.</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">String tanımlarken değerinin etrafını çift tırnak ile, char'da ise tek tırnak ile tanımlarız.</span></li>
</ul>
<br />
<br />
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">Şimdiye kadar şunu da fark etmiş olmamız gerekiyor: Bir
değişken tanımlarken söz dizimimiz şu şekilde;<o:p></o:p></span></div>
<blockquote class="tr_bq">
<span style="font-family: Arial, Helvetica, sans-serif;">degiskenTipi degiskenAdi = deger;</span></blockquote>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">Yani, int tipinde bir değişken tanımlamak için<i><span style="color: red;"> int sayi =
45;</span></i> deriz.<o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">Gelelim bunların maksimum ve minimum değerlerini bize daha sonra zahmetsizce verecek olan programımızın kodlarına.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">Tabi ki basit bir program olacak. Yeni bir proje açın ve main metot içeren bir sınıf yaratın:</span></div>
<br />
<div>
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"> <span style="color: navy; font-weight: bold;">public</span> <span style="color: navy; font-weight: bold;">static</span> <span style="color: navy; font-weight: bold;">void</span> main(String[] args) {
<span style="color: navy; font-weight: bold;">char</span> c = <span style="background-color: #e3d2d2; color: #a61717;">'\</span>u00ED<span style="background-color: #e3d2d2; color: #a61717;">'</span>;
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"Tip: "</span> + Integer.<span style="color: red;">TYPE</span>+ <span style="color: blue;">" Boyut: "</span> + Integer.<span style="color: red;">SIZE</span> + <span style="color: blue;">" bit "</span> + <span style="color: blue;">" Maksimum değer: "</span> + Integer.<span style="color: red;">MAX_VALUE</span> +<span style="color: blue;">" Minimum değer: "</span>+ Integer.<span style="color: red;">MIN_VALUE</span>);
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"Tip: "</span> + Byte.<span style="color: red;">TYPE</span>+ <span style="color: blue;">" Boyut: "</span>+ Byte.<span style="color: red;">SIZE</span> + <span style="color: blue;">" bit "</span> + <span style="color: blue;">" Maksimum değer: "</span> + Byte.<span style="color: red;">MAX_VALUE</span> +<span style="color: blue;">" Minimum değer: "</span>+ Byte.<span style="color: red;">MIN_VALUE</span>);
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"Tip: "</span> + Short.<span style="color: red;">TYPE</span>+ <span style="color: blue;">" Boyut: "</span>+ Short.<span style="color: red;">SIZE</span> + <span style="color: blue;">" bit "</span> + <span style="color: blue;">" Maksimum değer: "</span> + Short.<span style="color: red;">MAX_VALUE</span> +<span style="color: blue;">" Minimum değer: "</span>+ Short.<span style="color: red;">MIN_VALUE</span>);
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"Tip: "</span> + Long.<span style="color: red;">TYPE</span>+ <span style="color: blue;">" Boyut: "</span>+ Long.<span style="color: red;">SIZE</span> + <span style="color: blue;">" bit "</span> + <span style="color: blue;">" Maksimum değer: "</span> + Long.<span style="color: red;">MAX_VALUE</span> +<span style="color: blue;">" Minimum değer: "</span>+ Long.<span style="color: red;">MIN_VALUE</span>);
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"Tip: "</span> + Float.<span style="color: red;">TYPE</span>+ <span style="color: blue;">" Boyut: "</span>+ Float.<span style="color: red;">SIZE</span> + <span style="color: blue;">" bit "</span> + <span style="color: blue;">" Maksimum değer: "</span> + Float.<span style="color: red;">MAX_VALUE</span> +<span style="color: blue;">" Minimum değer: "</span>+ Float.<span style="color: red;">MIN_VALUE</span>);
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"Tip: "</span> + Double.<span style="color: red;">TYPE</span>+ <span style="color: blue;">" Boyut: "</span>+ Double.<span style="color: red;">SIZE</span> + <span style="color: blue;">" bit "</span> + <span style="color: blue;">" Maksimum değer: "</span> + Double.<span style="color: red;">MAX_VALUE</span> +<span style="color: blue;">" Minimum değer: "</span>+ Double.<span style="color: red;">MIN_VALUE</span>);
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"Tip: "</span> + Character.<span style="color: red;">TYPE</span>+ <span style="color: blue;">" Boyut: "</span>+ Character.<span style="color: red;">SIZE</span> + <span style="color: blue;">" bit "</span> + <span style="color: blue;">" Maksimum değer: "</span> + Character.<span style="color: red;">MAX_VALUE</span> +<span style="color: blue;">" Minimum değer: "</span>+ Character.<span style="color: red;">MIN_VALUE</span>);
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"Char tipinin maksimum ve minimumu önemli değil tabi ki. Yalnız, Unicode ile değer verebileceğimizi unutmayalım. Yani; \n char c = '\\u00ED'; ile verdiğimiz değer aslında şudur: "</span>+ c);
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"Tip: "</span> + Boolean.<span style="color: red;">TYPE</span>+ <span style="color: blue;">" "</span> +<span style="color: blue;">" Yanlış: "</span> + Boolean.<span style="color: red;">FALSE</span> +<span style="color: blue;">" Doğru: "</span>+ Boolean.<span style="color: red;">TRUE</span>);
}
</pre>
</div>
<span style="font-family: Arial, Helvetica, sans-serif;">Bu programda dikkat çekecek birkaç şeyi de yeri gelmişken anlamaya çalışalım. İşte örnekler yapmanın güzel tarafı da bu, bazen bildiklerimizle bir şeyler yapmaya çalışırken yeni şeyler de öğrenebiliyoruz. Şimdi benim aklıma gelen yerleri buraya yazayım:</span><br />
<br />
<ol>
<li><span style="font-family: Arial, Helvetica, sans-serif;">int ve diğer primitif tiplerin değerlerini vs. döndürürken int veya short değil de, Integer ve Short gibi, büyük harfle başlayan ifadeler kullandık. Bunlar, Java'daki ilkel tiplerin nesne gibi kullanılmak istendiği anda dönüştürüleceği nesneleri yaratan sınıflardır. Wrapping Classes yani sarmalayıcı sınıflardır.</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Sarmalayıcı sınıfların yanında büyük harflerle yazılan ifadeler kullandık. Bunlar, o sınıfların içindeki sabitlerdir. Java'daki isimlendirme geleneğine göre sabitler büyük harflerle yazılırlar. Tanıdık başka bir sabit için, Math.PI değerini yazdırmayı deneyin.</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">char tipinde bir değişken tanımlarken değer olark </span>
<span style="font-family: Arial, Helvetica, sans-serif;">'\u00ED' verdik. Bu değer karşılığında çıkan karakterin Unicode değeridir. \u, Unicode girildiğini derleyiciye bildirir.</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">'\u00ED' girmemize rağmen System.out.prinln() içinde '\</span><span style="font-family: Arial, Helvetica, sans-serif;">\u00ED' yani iki tane \ işareti kullandık. Çünkü \u bir anlam ifade eder ve ekrana normal bir şekilde yazdıramazsınız. Bunun için kaçış karakteri olan \ karakterini başına eklersiniz. Derleyici için anlam ifade eden karakterlerin başına \ eklemezsek sorun çıkar. Mesela dosya yolu belirtirken de C:\Program Files değil, C:\\Program Files veya C:/Program Files şeklinde belirtmemiz gerekir.</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Kodda char ile ilgili açıklama olan yerde \n ifadesini kullandık ama programı çalıştırınca bunu göremedik. Çünkü \n ifadesi bir alt satıra geçmek için kullanılır. </span></li>
</ol>
<div>
<span style="font-family: Arial, Helvetica, sans-serif;">Son maddeyi okurken aklınıza print() ve println() gelmiş olabilir. Hatırlarsanız, print() çıktıyı verdikten sonra aynı satırda kalırken, println() bir alt satıra atlıyordu. Demek ki, print() ifadesinde, içindeki yazının sonuna \n eklersek, elimizde bir nevi println() olmuş olacak.</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif;">Şimdilik bu kadar. Sormak istediğiniz soru olursa yorumlarınızı bekliyorum. Sonraki yazıda Java'daki operatörleri anlamaya çalışacağız. Böylece biraz da olsa eğlenceli şeyler yazabilecek hale geleceğiz.</span></div>
</div>
mesuthttp://www.blogger.com/profile/08748069859831517147noreply@blogger.com2tag:blogger.com,1999:blog-4306590700286918656.post-63886617779293593362012-08-24T19:47:00.000+03:002012-08-26T02:20:40.442+03:00Eclipse ile Çalışmak<br />
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Bu yazıda yine bir klasik olarak "Merhaba dünya" uygulaması yazacağız.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
İşin aslı, eğer Eclipse ile çalışıyorsanız, bir Merhaba Dünya uygulamasını yazmazsınız, Eclipse sizin için yazar.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Normalde, birazdan 1 dakika içinde yapacağımız programcığı notepad ile yaparlar. Böylece Java ile programlama yaparken aslında herhangi bir IDE'ye veya başka bir programa ihtiyacımız olmadığını anlatırlar. Ama az önce hepimizin bu gerçeği öğrenmesini sağlayan cümleyi yazdığıma göre, biz biraz da Eclipse'i tanıma amacı olarak kullanalım bu yazıyı.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Az önce Eclipse'te yapmış olduğum tüm ayarları sildim ve programı son sürümüne güncelledim. Programı da E:\Develop\Eclipse klasörünün içine taşıdım. Programı ilk olarak açtığımızda karşımıza Workspace'i nereye kurmak istediğimizi soran bir dialog çıkıyor. Buna hem kolaylık olsun, hem de format filan atarken yedek almayı unutmayayım diye, E:\Develop\workspace yazdım. Kutucuğu da işaretleyerek bir daha bu soruyu sormamasını istedim. Zaten eğer istersek, daha sonra <strong>Window>Preferences</strong> yoluyla açacağımız ayarlarda <strong>General>Startup and Shutdown</strong> altında <strong>Workspaces</strong>'a tıkladığımızda, yanda açılan yerde "<strong>Prompt for workspace on startup</strong>" seçeneğini işaretleyerek bunun sonraki açılışta tekrar açılmasını sağlayabiliriz.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Açılışta çıkan yeri geçmek için, aşağıdaki ekran alıntısında göreceğimiz gibi, sağ üstteki Workbench'e tıklamamız yeterlidir.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<a data-mce-href="http://javaogreniyoruz.files.wordpress.com/2012/08/eclipseacilis.png" href="http://javaogreniyoruz.files.wordpress.com/2012/08/eclipseacilis.png"><img alt="Eclipse İlk Açılışı" class="alignnone wp-image-19" data-mce-src="http://javaogreniyoruz.files.wordpress.com/2012/08/eclipseacilis.png?w=300" height="336" src="http://javaogreniyoruz.files.wordpress.com/2012/08/eclipseacilis.png?w=300" style="border: 0px; cursor: default;" title="Eclipse Açılış" width="450" /></a></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Burayı geçtikten sonra çalışacağımız alan çıkacak. File menüsü altında New'in üzerine gelip Project'i seçtiğimiz zaman bir dialog çıkacak karşımıza. Burada en üstte hemen Java Project'i göreceğiz zaten. Onu seçip Next'e bastığımızda çıkan yerde projemizi isimlendirdikten sonra, projemiz hazır olacak. <strong>Buradaki proje ismi bizim programımızın adı olmayacak</strong>. O yüzden istediğimiz her şeyi yazabiliriz. Buraya projedeki amacı açıklayan bir ifade yazalım. Mesela İlk Program yazabiliriz.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Ben, hem gelişimimizi görmek, hem de bir düzen oturtmak adına projeleri numaralandırma taraftarıyım. O yüzden bunu <strong>01 - İlk Proje</strong> olarak adlandırıyorum. Tabi ki dediğim gibi bu size kalmış bir şey. Burada bir şeyler anlatırken her seferinde yeni bir proje açıp onu adlandırmayacağımıza göre, kafamıza göre takılabiliriz.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
İsimlendirdikten sonra eğer Finish'e basarsanız, sınıfları vs. eklemek size kalacak. Eğer Next'e tıklarsanız da bunları eklemeniz için sihirbaz size yardımcı olacak. İşin açıkçası sihirbazın öyle sihirli güçleri yok. O yüzden Finish'e basıp projeyi oluşturalım. Bu daha kolay bir şekilde işleri halletmemizi sağlayacak.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<strong>Java ile ilgili öğreneceğimiz ilk şey,</strong> <em>Applet'ler dışında </em>tüm programların main metoduna sahip bir sınıfı olması gerektiğidir.Projenizin ismine sağ tıklayıp New>Class'ı seçerek yeni bir sınıf oluşturacak dialogu açabiliriz. Burada sınıfımıza bir isim veriyoruz ve istersek bir paketin içine dahil ediyoruz. Paketin içine dahil etmek zorunlu bir olay değil ama büyük ihtimalle, programımızı dağıtacağımız zaman bize yardımcı olacaktır. İsimlendirme geleneğine göre "sahip olduğumuz web sitesinin tersten yazılmış halini" paket olarak yazabiliriz. Yani, benim şu anda "com.wordpress.javaogreniyoruz" isimli bir paket yapmam tavsiye ediliyor. Ama zorunlu değil. Dediğim gibi, paket belirlemek bile zorunlu değil, çünkü Eclipse otomatik olarak onu varsayılan paket içine ekleyecektir.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Eclipse ile ilgili de bir şey öğreneceğiz burada. Yukarıda dediğimiz gibi, main metodu (yöntemi) olan bir sınıf oluşturmalıyız. Eclipse'de bunu yapmak kolaydır. Yeni sınıf oluştururken açılan pencerede "Which method stubs would you like to create?" altında "public static void main(String[] args)" seçeneğini işaretleyebiliriz. <strong>Alternatif olarak</strong>, bunu işaretlemeden sınıfı oluşturup, sonra iki süslü parantez arasına "main" yazıp CTRL+Space'e basarak bize seçenekler sunmasını sağlayabiliriz. Bu durumda tek bir seçenek vardır, o da main method yaratmaktır. Bu şekilde yarattığımızda Eclipse yorum satırı filan eklemiyor, o yüzden biraz daha temiz bir yöntem gibi duruyor.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Şimdi konsol ekranına çıktı verecek olan kodu yazalım:</div>
<blockquote style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<blockquote class="tr_bq">
System.out.println("Buraya istediğimizi yazabiliriz.");</blockquote>
</blockquote>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Bu kodu, main metodunun içine yazmamız gerekiyor. Yani, main metodunun sonundaki süslü parantez ({) işareti ile ondan sonraki süslü parantez (}) arasına. Şu anda tam olarak şu satırlara sahibiz sanıyorum:<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: navy; font-weight: bold;">package</span> deneme;
<span style="color: navy; font-weight: bold;">public</span> <span style="color: navy; font-weight: bold;">class</span> AnaSinif {
<span style="color: navy; font-weight: bold;">public</span> <span style="color: navy; font-weight: bold;">static</span> <span style="color: navy; font-weight: bold;">void</span> main(String[] args) {
System.<span style="color: red;">out</span>.<span style="color: red;">println</span>(<span style="color: blue;">"İstediğimizi yazdığımız yer"</span>);
}
}
</pre>
</div>
<code><br /></code></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Burada package'ın işlevini söylemiştim. Eğer programı dağıtmayı düşünmüyorsak bizim için önemli değil.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Sınıf tanımlanan yer <em>public class AnaSinif</em> satırıdır. Gördüğünüz gibi, sınıftan sonra parantez yok. <span data-mce-style="color: #ff0000;" style="color: red;">public</span> ifadesi, onun erişim belirleyicisidir. <span data-mce-style="color: #ff0000;" style="color: red;">class</span> ise bir sınıf olduğunu gösteriyor. Bu iki anahtar kelimenin (keyword) de farklı şekilleri var. Dedikleri gibi Java sınıflardan ve nesnelerden oluşur ama bundan daha fazlası da vardır.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<em>public static void main(String[] args) </em>ifadesi ise yöntem belirlemiştir. Burada <span data-mce-style="color: #ff0000;" style="color: red;">static</span> ifadesi onun bir nesne olmadan da erişilebileceğini gösteriyor. Statik olmayan yöntemler ve içlerindeki değişken ve sabitlere, o sınıftan türemiş bir nesne yoluyla ulaşabiliriz. Programımızın başlaması için neden bir main metoda ihtiyaç duyduğumuz anlaşılıyor burada. Nesne üretmek için program başlamalı ama programı başlatacak sınıfa nesne olmadan erişemiyoruz. Bu mümkün değil tabi ki.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<span data-mce-style="color: #ff0000;" style="color: red;">void</span> ifadesi ise, o yöntemin döndüreceği değişkenin tipini tanımlar. void, metodun (yöntemin) bir değişken döndürmediğini anlatmak için kullanılır. void ifadesi yerine, ilkel veri tipleri (int, double vs.) ve sınıflardan türeyecek nesneleri yazabiliriz. Eğer void dışında bir şey yazarsak, yöntemimizde <span data-mce-style="color: #0000ff;" style="color: blue;"><em>return birseyler</em> <span data-mce-style="color: #000000;" style="color: black;">şeklinde bir komutumuz olmalıdır.</span></span></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<span data-mce-style="color: #0000ff;" style="color: blue;"><span data-mce-style="color: #000000;" style="color: black;"><br /></span></span></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<span data-mce-style="color: #0000ff;" style="color: blue;"><span data-mce-style="color: #000000;" style="color: black;">main, adından da anlaşılacağı gibi, yöntemimizin, ana yöntemimizin adıdır. Java'da isimlendirme geleneğine göre yöntemleri isimlendirirken küçük harfle başlarız, kolaylık açısından da yeni kelimelere büyük harfle başlarız. Yani, ikinci yöntem adında bir yöntemin adının "ikinciYontem" olarak konulması bir gelenektir.</span></span></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<span data-mce-style="color: #0000ff;" style="color: blue;"><span data-mce-style="color: #000000;" style="color: black;"><br /></span></span></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Parantezler içindeki ifadeler ise, argümanlardır. Bu konuya daha sonra gelelim isterseniz :)</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Bir yöntem tanımlanırken, public ve static ifadelerinin alternatiflerini veya kendilerini kullanmak zorunda değiliz. Ama void ifadesini veya yöntemin döndüreceği değeri JVM'nin bilmesi için, yazmak zorundayız. Yazmazsak zaten derlenmez.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
System.out.println("İstediğimizi yazdığımız yer"); ifadesine gelecek olursak... Burada <span data-mce-style="color: #ff0000;" style="color: red;">System </span>paket ismini (hmm, paketlerin kullanılma sebeplerini yavaş yavaş kavrayacağız sanırım), <span data-mce-style="color: #ff0000;" style="color: red;">out </span>sınıf ismini ifade ediyor. <span data-mce-style="color: #ff0000;" style="color: red;">println()</span> ise, yöntemi temsil ediyor.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<a data-mce-href="http://javaogreniyoruz.files.wordpress.com/2012/08/eclipseilk.png" href="http://javaogreniyoruz.files.wordpress.com/2012/08/eclipseilk.png"><img alt="Eclipse ile tanıştık." class="alignnone size-full wp-image-30" data-mce-src="http://javaogreniyoruz.files.wordpress.com/2012/08/eclipseilk.png" height="389" src="http://javaogreniyoruz.files.wordpress.com/2012/08/eclipseilk.png" style="border: 0px; cursor: default;" title="Merhaba Dünya" width="519" /></a></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Eclipse ile ilgili ufak bir ipucu; System.out.println(); yazmak için sysout yazıp CTRL+Space'e basın.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Burada anlatılanlar, teorik kısmı dışında (yani sadece kod kısmı) size kolay gelmiş olmalı. Eğer böyle düşünüyorsanız, basit ama daha sonra birçok konuda biraz daha farklı yerlere dikkat etmenizi sağlayacak bir şeye göz gezdirebilirsiniz; System.out içinde, ekrana yazı yazdıran tek metot println() değil. print() ve printf() de var. Bunlar arasındaki farklara ve nasıl kullanıldıklarına göz gezdirebilirsiniz. Eğer kullanımını veya aradaki farkı çözemezseniz dert etmeyin, sonraki yazının başında bu konudan kısaca bahsederim :)</div>
mesuthttp://www.blogger.com/profile/08748069859831517147noreply@blogger.com0tag:blogger.com,1999:blog-4306590700286918656.post-60435710513656102252012-08-24T13:09:00.000+03:002012-08-24T13:09:35.376+03:00Java - Kullanacaklarımız<br />
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Selam.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
İnternette binlerce yerde göreceğiniz standart bir yazı olacak bu. Biraz da kısa olacak. Çünkü işin aslı, yapacaklarımız gayet basit bir iki indirme işlemi ve birkaç tıklamadan ibaret.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Öncelikle, Java'yı derlemek için gerekli olan <strong>JDK'yı indirip kurmamız gerekiyor</strong>. JDK'nın açılımı, Java Development Kit'tir ve Java'yı derlememizi sağlayan dosyaların yanında, Java uygulamalarını çalıştırmamızı sağlayan JRE (Java Runtime Environment) adlı ortamı da içerir (Bkz. <a data-mce-href="http://docs.oracle.com/javase/6/docs/technotes/guides/index.html" href="http://docs.oracle.com/javase/6/docs/technotes/guides/index.html" target="_blank" title="Java Ortamları">JDK ve JRE</a>). Bu sebeple sadece JDK'yı indirmek yeterlidir. Şu adresten işletim sisteminize uygun olan (32bit veya 64bit; Linux, Mac veya Windows) JDK'yı <a data-mce-href="http://www.oracle.com/technetwork/java/javase/downloads/index.html" href="http://www.oracle.com/technetwork/java/javase/downloads/index.html" target="_blank">indirin</a>.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
İndirip kurulumu yaptıktan sonra genellikle ekstra bir şeyler yapmanıza gerek yoktur. Gerek olup olmadığını anlamak için, tercihinize göre bir IDE indirip programın açılıp açılmadığını, açılıyorsa kodunuzu derleyip derlemediğini deneyebilirsiniz.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
IDE, Integrated Development Environment, yani entegre geliştirme ortamı anlamına gelir ve bir uygulama geliştirmek için en büyük yardımcınızdır. <strong>IDE'lerin özellikleri birbiri arasında değişse de</strong>, insanların en çok sevdikleri özellikleri arasında şunlar var;</div>
<ul style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<li>Kodları renklendirirler. Böylece okuması ve yazması daha kolay olur.</li>
<li>Kodları gerekli yerlerde otomatik olarak içe girdirebilirler. Böylece iç içe yazdığınız döngü vs. gibi olayları kontrol edebilmeniz kolaylaşır.</li>
<li>Otomatik olarak kod tamamlarlar. Böylece bazen daha fazla kod yazma zahmetinden kurtulursunuz, bazen de kodu hatırlamakta zorlandığınız anda devreye girer ve sizi rahatlatırlar.</li>
</ul>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Ben Eclipse kullanıyorum. Netbeans ise diğer popüler alternatif. Bir IDE seçimi konusu tamamen kişisel bir şey olduğundan dolayı, IDE'leri denemenizi ve hoşunuza gideni indirmenizi tavsiye ederim. Eclipse'i <a data-mce-href="http://www.eclipse.org/downloads/" href="http://www.eclipse.org/downloads/" target="_blank">bu linkten</a> edinebilirsiniz. Sayfada birçok farklı Eclipse sürümü göreceksiniz. Ben en üsttekini indirmiştim ama ilk üç sıradakinden birini seçerseniz yeterli olacaktır.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<strong>İndirmeden önce dikkat etmeniz gereken şey</strong>, JDK ile Eclipse aynı bitte olmalıdır, demek istediğim biri 32 bit ise diğeri de 32 bit olmalıdır. Mesela eğer 64 bit bir işletim sistemine bir sebepten dolayı 32 bit JDK kurduysanız, Eclipse de 32 bit olmalıdır.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Eclipse'in güzel bir tarafı da eklentileri. Yani, en yalın halini indirip doğru eklentilerle istediğiniz hale getirebiliyorsunuz. Tabi, doğru eklentileri bulmak yerine, en başından doğru sürümü indirmek de akıllıca bir hareket olacaktır.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Eclipse'i istediğiniz bir yere açabilirsiniz. Mesela ben, D:\eclipse adlı bir klasöre açtım ve masaüstümde bir kısayol oluşturdum.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Bu arada, eğer Java'yı komut satırından kullanmak istiyorsanız her seferinde java ve javac uygulamalarının olduğu yerlere gitmenize gerek yok. İşletim sisteminiz için PATH ayarlarını yaparsanız, <strong>komut satırında nerede olursanız olun bu ikisini çağırabilirsiniz</strong>. Bunu yapmak için, Windows 7'de şu yolu izleyebilirsiniz;</div>
<ol style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<li>Bilgisayarım'a sağ tıkayıp Özellikler'e gelin.</li>
<li>Gelişmiş Sistem Ayarları'na, ardından da Ortam Değişkenleri'ne gelin.</li>
<li>Burada alttaki kutucukta Path girdisini bulun, tıklayın ve Düzenle'ye tıklayın.</li>
<li>En son girdiden sonra noktalı virgül koyun (;) ve Java'nın bin klasörünün yolunu buraya yazın.</li>
<li>JDK yolu yüklediğiniz sürüme göre değişecektir. Ama eğer hiçbir değişiklik yapmadan yüklediyseniz, C:\Program Files\Java içinde görebilirsiniz. Burada, benim durumumda jdk1.7.0_03 klasörünün içinde bulunuyor bin klasörü. O halde, benim eklemem gereken yol tam olarak şu; <strong>C:\Program Files\Java\jdk1.7.0_03\bin</strong></li>
<li>Hazır orada iken, JRE için de yolu aynı şekilde ekleyebilirsiniz. Ama java dosyası orada da bulunduğundan gerekli değil. Çünkü, o Path değişkenlerinde, Windows ilk gördüğünü okur ve ona göre işlem yapar. Yani, ardarda iki tane JDK Path'i tanımlarsanız, ikincisinin herhangi bir fonksiyonu olmayacaktır.</li>
</ol>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Evet, tüm olay bundan ibaret. Biraz kısa ve sadece indirme linklerinden oluşan bir yazı oldu :) Sonraki yazılar biraz daha detaylı olacaktır.</div>
mesuthttp://www.blogger.com/profile/08748069859831517147noreply@blogger.com0tag:blogger.com,1999:blog-4306590700286918656.post-68246542586252883432012-08-23T01:47:00.000+03:002012-08-26T02:09:00.497+03:00Selam<br />
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Selam.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Buraya öğrendikçe Java ile ilgili yazılar yazacağım.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Yazıların sıklığı veya uzunluğu maalesef standart olmayacak, çünkü ne zaman vaktim olursa ve yalnızca öğrendikçe buraya yazmayı düşünüyorum. Bu blogun tek amacı diğer insanlarla bilgimi paylaşmak değil, aynı zamanda kendime bir belge oluşturmaktır.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Söz uçar yazı kalır diye boşuna dememişler, kimi zaman projelerle uğraşırken daha önceden üstesinden gelemediğiniz bir problemin aslında ne kadar kolay bir çözümünün olduğunu görebiliyorsunuz. Dahası, bazen probleminiz için bir google araması yapıyorsunuz ve istediğiniz sonuca ancak saatler sonra ulaşabiliyorsunuz. Bu, doğal olarak onlarca internet sitesini taramış olduğunuz anlamına geliyor. Eğer çözümü bulup uyguladıktan sonra onu unutmayacağınızı düşünüyorsanız, yanılıyorsunuz.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
İşte bu sebepten dolayı, öğrendiklerimi bir yerlerde toplamayı hep istemişimdir.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
<br /></div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
Yeni bir şeyler öğrenirken, sadece kitaplardan veya başka bir kaynaktan bir şeyler öğrenip sonra onu uygulamaya geçirmenin bazen bizi kısıtladığını ve yeteri kadar şey öğrenmemizi engellediğini düşünürüm. Bazen aklınıza takılan bir soruyu yanınızda duran birine sormak ve onun bu konudaki düşüncelerini öğrenmek çok yararlı olabilir. Mesela, probleminiz düşündüğünüz kadar kolay veya zor mu, çözüme ne kadar yakınsınız, nerelere bakmanız gerekir gibi soruları bir kitaptan daha çok, bir insandan öğrenirsiniz.</div>
<div style="color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">
İşte bu yüzden de, her şeyi bilen biri olmadığım halde, yine de yazıların birilerine faydalı olacağı görüşündeyim.</div>
mesuthttp://www.blogger.com/profile/08748069859831517147noreply@blogger.com0