{"id":373,"date":"2013-04-25T01:58:00","date_gmt":"1970-01-01T00:00:00","guid":{"rendered":"http:\/\/www.yazilimmutfagi.com\/?p=373"},"modified":"2013-04-25T01:58:00","modified_gmt":"1970-01-01T00:00:00","slug":"javada-dongu-kullanimi-for-while-ve-do-while-donguleri","status":"publish","type":"post","link":"https:\/\/www.yazilimmutfagi.com\/index.php\/2013\/04\/25\/javada-dongu-kullanimi-for-while-ve-do-while-donguleri\/","title":{"rendered":"Java&#8217;da D\u00f6ng\u00fc Kullanimi &#8211; For , while ve do-while d\u00f6ng\u00fcleri"},"content":{"rendered":"<h2>\n\tD&ouml;ng&uuml;ler<\/h2>\n<p>\n\tYazilan programlarda bazen belli komut par&ccedil;alarinin bir&ccedil;ok kez &ccedil;alismasi gerekebilir. Yani bazi komut par&ccedil;alarinin, belli sartlar altinda tekrar tekrar islenmesi gerekebilir. D&ouml;ng&uuml; deyimleri, bahsedilen komut par&ccedil;alarinin belirtilen sartlar ger&ccedil;eklestik&ccedil;e tekrar tekrar islenmesini saglar.&nbsp;<\/p>\n<p>\n\tJava&rsquo;da &uuml;&ccedil; t&uuml;r d&ouml;ng&uuml; vardir. Bunlar &ccedil;ogu programlama dilinde olan; &ldquo;for&rdquo;, &ldquo;do-while&rdquo; ve &ldquo;while&rdquo; d&ouml;ng&uuml;leridir. Bu d&ouml;ng&uuml;lerden for ve while d&ouml;ng&uuml;s&uuml;nde, kosul sinamasi d&ouml;ng&uuml;ye girmeden &ouml;nce yapilirken, do-while d&ouml;ng&uuml;s&uuml;nde kosul sinamasi bir kod par&ccedil;asi &ccedil;alistiktan sonra yapilir.<\/p>\n<p>\n\t<h31.&nbsp; for=\"\" h3=\"\"><\/h31.&nbsp;><\/p>\n<p>\n\t&Ouml;ncelikle for d&ouml;ng&uuml;s&uuml;n&uuml;n yapisi su sekildedir:<\/p>\n<pre class=\"brush:java\">\nfor ( 1. deger (baslangi&ccedil; degeri-initialization) ; 2.deger (kosul kontrol&uuml;) ; 3.deger (islemler) )\n{\n. . . . . . . .   \/\/ sarta bagli tekrarlanmasini istedigimiz kodlar\n. . . . . . . .\n}\n\n<\/pre>\n<p>\n\t&ldquo;for&rdquo; d&ouml;ng&uuml;s&uuml; g&ouml;r&uuml;ld&uuml;g&uuml; gibi &uuml;&ccedil; par&ccedil;adan olusur. Her par&ccedil;a birbirinden ile ayrilir. Ilk par&ccedil;a, baslangi&ccedil; degeri (initialization) dir. Burada bulunan islemler, d&ouml;ng&uuml; baslamadan &ouml;nce ve bir kere islenir. Bu 1. degere birden fazla islem yazilabilir, bunlari da birbirinden &#39;,&#39; virg&uuml;l ile ayirmak gerekir. Ancak bu islemleri az tutmanizi tavsiye ederim.<\/p>\n<p>\n\tIkinci par&ccedil;ada, kosul kontrol&uuml; yapilir. for d&ouml;ng&uuml;s&uuml;n&uuml;n her tekrarinda kontrol edilmesi gereken kodu bu kisima yazmak gerekir. Bu kod dogru oldugu surece, d&ouml;ng&uuml; devam eder, eger kosul saglanmiyorsa d&ouml;ng&uuml;den &ccedil;ikilir.<\/p>\n<p>\n\t&Uuml;&ccedil;&uuml;nc&uuml; par&ccedil;ada yer alan kodlar ise; yine d&ouml;ng&uuml;n&uuml;n her turunda, s&uuml;sl&uuml; parantezin i&ccedil;indeki kodlar gibi &ccedil;alisir. Tek fark, &uuml;&ccedil;&uuml;nc&uuml; par&ccedil;adaki kodlarin baslangici, d&ouml;ng&uuml;n&uuml;n i&ccedil;inde yer alan kod par&ccedil;alarinin &ccedil;alismasindan sonra olur.<\/p>\n<p>\n\tBasit bir &ouml;rnek vermek gerekirse;<\/p>\n<pre class=\"brush:java\">\nfor(int deger=5;deger&lt;10;deger++){\n     System.out.println(deger);\n}\n\n<\/pre>\n<p>\n\tYukaridaki for d&ouml;ng&uuml;s&uuml;nde ilk par&ccedil;ada deger=5 diyerek, degerimizin ilk degerini atamis olduk. Ikinci par&ccedil;a olan deger&lt;10, kosul kismimiz. D&ouml;ng&uuml; her d&ouml;nd&uuml;g&uuml;nde &ldquo;deger&rdquo; in 10 dan k&uuml;&ccedil;&uuml;k olup olmadigina bakacak. &ldquo;deger&rdquo; 10&rsquo;a esit ya da 10&rsquo;dan b&uuml;y&uuml;k oldugu anda d&ouml;ng&uuml; sonlanir. &Uuml;&ccedil;&uuml;nc&uuml; par&ccedil;a olan deger++ kismi ise, System.<em>out<\/em>.println(deger); &ccedil;alistiktan sonra d&ouml;ng&uuml; d&ouml;nd&uuml;k&ccedil;e &ldquo;deger&rdquo;in bir artacagini g&ouml;steriyor. Sonu&ccedil; olarak bu kod par&ccedil;asi ekrana alt alta 5 ten 10 a kadar t&uuml;m sayilari yazar. 10 hari&ccedil;tir. &Ccedil;&uuml;nk&uuml; deger 9 olarak basildiktan sonra deger++ &ccedil;alisir. &ldquo;deger&rdquo; in degeri 1 artip 10 olur ve d&ouml;ng&uuml; kontrol&uuml;ne girdiginde deger&lt;10 sartini saglamadigi i&ccedil;in d&ouml;ng&uuml; sonlanir.<\/p>\n<p>\n\tKonuyu biraz daha oturtabilmek i&ccedil;in bir &ouml;rnek daha vermek istiyorum.<\/p>\n<pre class=\"brush:java\">\npublic class Main {\n\tpublic static void main(String[] args) {\n\t\tfor (int i = 0; i &lt; 10; i++) {\n\t\t\tfor (int j = 0; j &lt; 10; j++) {\n\t\t\t\tSystem.out.println(i + &quot;*&quot; + j + &quot; = &quot; + i * j);\n\t\t\t}\n\t\t\tSystem.out.println();\n\t\t}\n\t}\n}\n<\/pre>\n<p>\n\tBu &ouml;rnekte g&ouml;r&uuml;ld&uuml;g&uuml; gibi i&ccedil; i&ccedil;e for d&ouml;ng&uuml;s&uuml; mevcut. Bu kisa kod par&ccedil;asi ilkokulda &ouml;grendigimiz &ccedil;arpim tablosunu olusturuyor. &Ccedil;iktisi su sekilde:<\/p>\n<pre>\n0*0 = 0\n0*1 = 0\n0*2 = 0\n0*3 = 0\n0*4 = 0\n0*5 = 0\n0*6 = 0\n0*7 = 0\n0*8 = 0\n0*9 = 0\n\n. . .\n. . .\n\n9*0 = 0\n9*1 = 9\n9*2 = 18\n9*3 = 27\n9*4 = 36\n9*5 = 45\n9*6 = 54\n9*7 = 63\n9*8 = 72\n9*9 = 81\n<\/pre>\n<p>\n\t0 dan 9 a kadar sayilarin 0 dan 9 a kadar olan sayilarla &ccedil;arpimini verir. Kodu a&ccedil;iklayacak olursak; her i degeri i&ccedil;in j nin sahip oldugu degerle &ccedil;arpar. Yani ilk &ouml;nce i=0 i&ccedil;in, i degerini 0 dan 9 a kadar olan sayilarla &ccedil;arpar ve ekrana alt alta yazar. i=0 ile isimiz bittiginde bir bosluk birakir. (Bunu ilk for d&ouml;ng&uuml;s&uuml;n&uuml;n disindaki &ldquo;System.<em>out<\/em>.println();&rdquo; ile yapar.) Daha sonra i=1 i&ccedil;in ayni islemi yapar. Bu islemler i=9 a kadar devam eder. En son i=10 i&ccedil;in d&ouml;ng&uuml;deki sartimiz ( i&lt;10 ) saglanmadigi i&ccedil;in programimiz sonlanir.<\/p>\n<p>\n\tSon olarak for d&ouml;ng&uuml;s&uuml;yle ilgili bilinmesi gereken bir takim sey s&ouml;yleyip, while ve do while d&ouml;ng&uuml;s&uuml;n&uuml; anlatacagim.<\/p>\n<ul>\n\t<li>\n\t\tfor d&ouml;ng&uuml;s&uuml;n&uuml; kullanirken eger d&ouml;ng&uuml; i&ccedil;inde bir sati kod &ccedil;alistirmayi d&uuml;s&uuml;n&uuml;yorsaniz s&uuml;sl&uuml; parantez {} kullanmaniza gerek yok. Ancak birden fazla sattir d&ouml;ng&uuml; i&ccedil;inde &ccedil;alistirilacaksa kesinlikle s&uuml;sl&uuml; parantez{} kullanmaniz gerekir. Benden size tavsiye kodunuzun muntazam g&ouml;r&uuml;nmesi ve daha okunakli olmasi i&ccedil;in s&uuml;sl&uuml; parantezi her durum i&ccedil;in kullanin. Daha sonra d&ouml;n&uuml;p baktiginizda kodunuzu anlamaniz kolay olur.<\/li>\n\t<li>\n\t\t3 kisimdan olusan for d&ouml;ng&uuml;s&uuml;n&uuml;n her b&ouml;l&uuml;m&uuml;ne bir sey yazmak zorunda degiliz. &Ouml;rnegin hepsini bosta birakabiliriz (bu &ccedil;ok saglikli olmaz ama kodunuz dogru &ccedil;alisir.) ya da baslangi&ccedil; degeri kismini bos birakip d&ouml;ng&uuml;n&uuml;n disinda baslangi&ccedil; degeri atayip, ikinci ve &uuml;&ccedil;&uuml;nc&uuml; kisimlari doldurup d&ouml;ng&uuml;m&uuml;z&uuml; olusturabiliriz. for d&ouml;ng&uuml;s&uuml;n&uuml; kosullara ve nasil bir program yazacagimiza bagli olarak su sekillerde kullanabiliriz:<\/li>\n<\/ul>\n<pre class=\"brush:java\">\nfor( ; ; ){      \n\t  . . . .\n} \nfor( ; deger&lt;20; deger--) {\n  . . . .\n}\nfor( ; deger&lt;20;) {\n  . . . .\n}\nfor(int deger=10 ; deger&lt;20;) {\n  . . . .\n}\n\n<\/pre>\n<ul>\n\t<li>\n\t\tfor d&ouml;ng&uuml;s&uuml; d&ouml;ng&uuml;y&uuml; olusturan degiskenleri tek bir satirda toplar. Dolayisiyla d&ouml;ng&uuml; yapisini daha rahat okumak ve degiskenlere deger atanmasi ve g&uuml;ncellenmesi gibi komutlarin unutulmasinda ortaya &ccedil;ikabilecek hatalarin &ouml;n&uuml;ne ge&ccedil;ebilmek a&ccedil;isindan programciya kolaylik saglar.<\/li>\n<\/ul>\n<h3>\n\t2. While Ve Do-While D&ouml;ng&uuml;s&uuml;<\/h3>\n<p>\n\t&Ouml;ncelikle while d&ouml;ng&uuml;s&uuml;nden bahsetmek istiyorum. Zaten iki d&ouml;ng&uuml;de birbirine &ccedil;ok benzer &ccedil;ok az farklari var. while d&ouml;ng&uuml;s&uuml;nde, while komutu i&ccedil;erisindeki ifade &ldquo;true&rdquo; degerini aldigi m&uuml;ddet&ccedil;e while d&ouml;ng&uuml;s&uuml;n&uuml;n blogu i&ccedil;erisindeki kod par&ccedil;alari islenir. Eger while komutu i&ccedil;erisindeki deger &ldquo;false&rdquo; degerini alirsa, d&ouml;ng&uuml; blogunun &ccedil;alismasi sonlanir.<\/p>\n<p>\n\twhile d&ouml;ng&uuml;s&uuml;n&uuml;n yapisi su sekildedir.<\/p>\n<pre class=\"brush:java\">\nwhile(expression-ifade){\n. . . \n}\n\n<\/pre>\n<p>\n\tT&uuml;m d&ouml;ng&uuml;lerin mantigi aynidir. Herhangi bir d&ouml;ng&uuml;y&uuml; anlamaniz, diger d&ouml;ng&uuml;leri de rahatlikla anlayabileceginiz anlamina gelir. Sik sik kod yazarak, alistirma yaparak bu konuyu pekistirebilirsiniz. Simdi bu d&ouml;ng&uuml;y&uuml; daha iyi anlamaniz i&ccedil;in bir &ouml;rnek verelim.<\/p>\n<pre class=\"brush:java\">\nimport java.util.Scanner;\npublic class Main {\n\tpublic static void main(String[] args) {\n\t\tint toplam=0;\n\t\tSystem.out.println(&quot;L&uuml;tfen 5 sayi giriniz: &quot;);\n\t\tScanner s=new Scanner(System.in);\n\t\tint i=1;\n\t\twhile (i&lt;6) {\n\t\t\tSystem.out.println(i+&quot;. sayiyi giriniz: &quot;);\n\t\t\tint sayi=s.nextInt();\n\t\t\ttoplam+=sayi;\n\t\t\ti++;\n\t\t}\n\t\tSystem.out.println(&quot;Girdiginiz sayilarin toplami = &quot;+toplam);\n\t}\n}\n\n<\/pre>\n<p>\n\t&Ccedil;ikti:<\/p>\n<pre>\n\tL&uuml;tfen 5 sayi giriniz: \n1. sayiyi giriniz: \n5\n2. sayiyi giriniz: \n4\n3. sayiyi giriniz: \n7\n4. sayiyi giriniz: \n6\n5. sayiyi giriniz: \n2\nGirdiginiz sayilarin toplami = 24\n<\/pre>\n<p>\n\tBu &ouml;rnekte kullanicidan 5 sayi isteniyor. Kullanicidan deger almayi daha g&ouml;rmedik ancak simdilik Scanner sinifi yardimi ile kullanicidan deger aldigimizi bilmeniz yeterli. &ldquo;i&rdquo; degiskenini d&ouml;ng&uuml;n&uuml;n 5 kere d&ouml;nmesi i&ccedil;in tanimladik. &ldquo;i&rdquo; degiskenini 1 den baslatmamizin sebebi ekrana 1. Degeri giriniz yazmasini saglamak i&ccedil;indir.&nbsp; while d&ouml;ng&uuml;s&uuml; i&ccedil;indeki sart saglandigi m&uuml;ddet&ccedil;e d&ouml;ng&uuml;n&uuml;n d&ouml;nd&uuml;g&uuml;n&uuml; g&ouml;r&uuml;yorsunuz. D&ouml;ng&uuml; her d&ouml;nd&uuml;g&uuml;nde &ldquo;toplam&rdquo; degiskeninde o ana kadar girilen sayilarin toplami bulunur. En son 5. sayi da girildikten sonra, i=6 oldugundan while i&ccedil;indeki komut saglanmaz ve d&ouml;ng&uuml; sonlanir. Son olarak &ldquo;System.<em>out<\/em>.println(&quot;Girdiginiz sayilarin toplami = &quot;+toplam);&rdquo; &ccedil;alisir ve program sonlanir. Bu programi for d&ouml;ng&uuml;s&uuml;yle de s&ouml;yle yazabilirdik. Asagidaki kodun da yaptigi islem aynidir for d&ouml;ng&uuml;s&uuml;yle while d&ouml;ng&uuml;s&uuml;n&uuml; karsilastirmaniza yardimci olacagini d&uuml;s&uuml;n&uuml;yorum.<\/p>\n<pre class=\"brush:java\">\nimport java.util.Scanner;\npublic class Main {\n\tpublic static void main(String[] args) {\n\t\tint toplam=0;\n\t\tSystem.out.println(&quot;L&uuml;tfen 5 sayi giriniz: &quot;);\n\t\tScanner s=new Scanner(System.in);\n\t\tfor (int i = 1; i &lt; 6; i++) {\n\t\t\tSystem.out.println(i+&quot;. sayiyi giriniz: &quot;);\n\t\t\tint sayi=s.nextInt();\n\t\t\ttoplam+=sayi;\n\t\t}\n\t\tSystem.out.println(&quot;Girdiginiz sayilarin toplami = &quot;+toplam);\n\t}\n}\n\n<\/pre>\n<p>\n\tdo-while d&ouml;ng&uuml;s&uuml; ise while d&ouml;ng&uuml;s&uuml;ne &ccedil;ok benzer. while d&ouml;ng&uuml;s&uuml;nden farki; do-while d&ouml;ng&uuml;s&uuml; kosul &ccedil;alistirilmadan &ouml;nce kod blogu bir defa &ccedil;alisir ve sonra kosula girer. Yani kosul dogru olsa da olmasa da kod blogu bir defa &ccedil;alismis olur. Bu fark aslinda &ouml;nemli bir farktir.<\/p>\n<pre class=\"brush:java\">\ndo{\n. . . . \/\/kod blogu\n. . . .\n}while(expression-ifade);\n\n<\/pre>\n<p>\n\tBir &ouml;rnekle d&ouml;ng&uuml;ler konusunu bitiriyorum.<\/p>\n<pre class=\"brush:java\">\npublic class Main {\n\tpublic static void main(String[] args) {\n\t\tint toplam=0;\n\t\tint i=0;\n\t\tdo{\n\t\t\tif(i%2==0){\n\t\t\t\ttoplam+=i;\n\t\t\t}\n\t\t\ti++;\n\t\t}while(i&lt;=10);\n\t\tSystem.out.println(&quot;(10 dahil)10&#39;a kadar olan &ccedil;ift sayilar toplami: &quot;+toplam);\n\t}\n}\n\n\n<\/pre>\n<p>\n\t&Ccedil;ikti:<\/p>\n<pre>\n\t(10 dahil)10&#39;a kadar olan &ccedil;ift sayilar toplami: 30<\/pre>\n<p>\n\t&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>D&#246;ng&#252;ler konusu ile java derslerine devam ediyoruz. Bu dersimizde, programlamanin olmazsa olmazi olan d&#246;ng&#252;ler konusuna deginip, for, while ve do-while d&#246;ng&#252;lerinin nasil kullanildigini anlatacagim<\/p>\n","protected":false},"author":559,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[419],"tags":[5431,4717,3934,4061,5467,4803],"_links":{"self":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts\/373"}],"collection":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/users\/559"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/comments?post=373"}],"version-history":[{"count":0,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts\/373\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/media?parent=373"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/categories?post=373"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/tags?post=373"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}