{"id":65,"date":"2013-10-15T13:20:01","date_gmt":"2013-10-15T10:20:01","guid":{"rendered":"http:\/\/www.scozturk.com\/?p=65"},"modified":"2025-08-27T10:17:54","modified_gmt":"2025-08-27T10:17:54","slug":"3-d-ile-klavyeden-veri-alma-ve-komut-satiri-argumanlari","status":"publish","type":"post","link":"http:\/\/18.193.70.38\/?p=65&lang=tr","title":{"rendered":"3 &#8211; D ile klavyeden veri alma ve komut sat\u0131r\u0131 arg\u00fcmanlar\u0131"},"content":{"rendered":"<p><strong>1- Giri\u015f:<\/strong><\/p>\n<p>Bu yaz\u0131da D programlama dili ile klavyeden veri alma ve komut sat\u0131r\u0131ndan parametre alma konular\u0131n\u0131 ele alaca\u011f\u0131z. Ayr\u0131ca if-else ve foreach d\u00f6ng\u00fcs\u00fcn\u00fc de \u00f6rnekleyece\u011fiz.<\/p>\n<p>Asl\u0131nda bu konular yeni ba\u015flayanlar i\u00e7in ayr\u0131 ayr\u0131 ve detayl\u0131ca incelenmesi gereken konular ama D dilinin di\u011fer dillere olan benzerli\u011fi g\u00f6ze al\u0131narak burada \u00e7ok fazla detaya girmeyece\u011fiz.<\/p>\n<p>Mesela bir \u00f6nceki yaz\u0131da writef fonksiyonunun i\u00e7ine yaz\u0131lacak olan yaz\u0131n\u0131n \u201d \u201d aras\u0131na konmas\u0131 gerekti\u011fini s\u00f6ylemedik \u00e7\u00fcnk\u00fc bu di\u011fer (C, C++, Java, C#) programlama dillerini kullanm\u0131\u015f olanlar i\u00e7in gayet bariz bir detay. E\u011fer size bunlar anlams\u0131z geliyorsa l\u00fctfen C# veya Java gibi bir dil ile programlamaya ba\u015flay\u0131n\u0131z (en az\u0131ndan D programlama \u00fczerine detayl\u0131 bir dok\u00fcman \u00e7\u0131kana kadar &#8211; evet yazmay\u0131 d\u00fc\u015f\u00fcn\u00fcyorum -).<\/p>\n<p>&nbsp;<\/p>\n<p><strong>2- Konsoldan parametre alal\u0131m<\/strong><\/p>\n<p>Herhangi bir \u015fey s\u00f6ylemeden \u00f6nce a\u015fa\u011f\u0131daki kodu kod d\u00fczenleyicimize yazal\u0131m.<\/p>\n<div>\n<ol start=\"1\">\n<li>\/\/\u00a0K\u00fct\u00fcphane\u00a0dosyalar\u0131<\/li>\n<li>import\u00a0std.stdio;<\/li>\n<li><\/li>\n<li>\/\/\u00a0Ana\u00a0fonksiyon<\/li>\n<li>void\u00a0main(char[][]\u00a0argumanlar)<\/li>\n<li>{<\/li>\n<li>writefln(&#8220;Merhaba\u00a0Dunya!&#8221;);<\/li>\n<li>writefln(&#8220;Konsolda\u00a0arguman\u00a0girilmis\u00a0mi\u00a0acaba?&#8221;);<\/li>\n<li>if(argumanlar.length\u00a0!=\u00a01)<\/li>\n<li>{<\/li>\n<li>writefln(&#8220;Evet!\u00a0%d\u00a0tane\u00a0arguman\u00a0girilmis.&#8221;,argumanlar.length-1);<\/li>\n<li>writefln(&#8220;Girilmis\u00a0olan\u00a0argumanlar:&#8221;);<\/li>\n<li>foreach(arg;\u00a0argumanlar[1\u00a0..\u00a0argumanlar.length])<\/li>\n<li>{<\/li>\n<li>writefln(arg);<\/li>\n<li>}<\/li>\n<li>}<\/li>\n<li>else<\/li>\n<li>{<\/li>\n<li>writefln(&#8220;Hayir!&#8221;);<\/li>\n<li>}<\/li>\n<li>}<\/li>\n<\/ol>\n<\/div>\n<p>\u015eimdi kodu biraz inceleyelim.<\/p>\n<p><em>if(argumanlar.length != 1) <\/em>kodu ile komut sat\u0131r\u0131ndan girilen arg\u00fcmanlar\u0131n say\u0131s\u0131n\u0131n 1\u2032e e\u015fit olup olmad\u0131\u011f\u0131n\u0131 kontrol ediyoruz. Arg\u00fcman say\u0131s\u0131n\u0131n 1\u2032e esit olmas\u0131 herhangi bir arg\u00fcman girilmedi\u011fini belirtir. G\u00f6r\u00fcld\u00fc\u011f\u00fc gibi if-else d\u00f6ng\u00fcs\u00fc di\u011fer dillerde kullan\u0131ld\u0131\u011f\u0131 gibi kullan\u0131ld\u0131.<\/p>\n<p><em>writefln(\u201dEvet! %d tane arguman girilmis.\u201d,argumanlar.length-1); <\/em>kodunda g\u00f6rd\u00fc\u011f\u00fcm\u00fcz %d bir tam say\u0131n\u0131n yaz\u0131ya d\u0131\u015far\u0131dan eklenebilmesini sa\u011flamaktad\u0131r. Eklenen tam say\u0131 argumanlar.length de\u011ferinin 1 eksi\u011fidir.<\/p>\n<p>Biraz a\u015fa\u011f\u0131da \u015fu kod ile kar\u015f\u0131la\u015f\u0131yoruz:<\/p>\n<div>\n<ol start=\"1\">\n<li>foreach(arg;\u00a0argumanlar[1\u00a0..\u00a0argumanlar.length])<\/li>\n<li>{<\/li>\n<li>writefln(arg);<\/li>\n<li>}<\/li>\n<\/ol>\n<\/div>\n<p>Bu kodda \u00f6ncelikle bir d\u00f6ng\u00fc var. D\u00f6ng\u00fc <em>foreach<\/em> d\u00f6ng\u00fcs\u00fc. Javac\u0131lara gayet tan\u0131d\u0131k gelmekle beraber C ve C++ kullananlar b\u00fcy\u00fck ihtimalle ilk defa kar\u015f\u0131la\u015facakt\u0131r. Bu d\u00f6ng\u00fcn\u00fcn g\u00f6revi argumanlar dizisinin her eleman\u0131 i\u00e7in bir kez d\u00f6nmek ve ayn\u0131 zamanda her d\u00f6n\u00fc\u015fte bu eleman\u0131 <em>arg<\/em> de\u011fi\u015fkeninde saklamak. Burada foreach d\u00f6ng\u00fcs\u00fcnden ba\u015fka de\u011fi\u015fik gelebilecek \u015fu ifade var:<\/p>\n<p><em>argumanlar[1 .. argumanlar.length]<\/em><\/p>\n<p>Bu ifadenin g\u00f6revi argumanlar dizisinin elemanlar\u0131n\u0131 1 den ba\u015flay\u0131p argumanlar.length de\u011ferine kadar tek tek ele al\u0131nmas\u0131n\u0131 sa\u011flamakt\u0131r.<\/p>\n<p>Kodu derleyelim ve birka\u00e7 arg\u00fcman vererek \u00e7al\u0131\u015ft\u0131ral\u0131m. A\u015fa\u011f\u0131dakine benzer bir sonu\u00e7 elde edece\u011fiz.<\/p>\n<p><a title=\"deneme_2_konsol1.JPG\" href=\"http:\/\/web.archive.org\/web\/20081120093430\/http:\/\/www.scozturk.com\/wp-content\/uploads\/2007\/06\/deneme_2_konsol1.JPG\"><img decoding=\"async\" alt=\"deneme_2_konsol1.JPG\" src=\"http:\/\/web.archive.org\/web\/20081120093430im_\/http:\/\/www.scozturk.com\/wp-content\/uploads\/2007\/06\/deneme_2_konsol1.kucukresim.JPG\" \/><\/a><\/p>\n<p><strong>3- Klavye okuma:<\/strong><\/p>\n<p>Klavyeden veri okumak i\u00e7in a\u015fa\u011f\u0131dakine benzer bir kodu kullanabiliriz:<\/p>\n<div>\n<ol start=\"1\">\n<li>\/\/\u00a0K\u00fct\u00fcphane\u00a0dosyalar\u0131<\/li>\n<li>import\u00a0std.stdio;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0Basit\u00a0Girdi-\u00c7\u0131kt\u0131<\/li>\n<li>import\u00a0std.string;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0String\u00a0i\u015flemleri<\/li>\n<li><\/li>\n<li>\/\/\u00a0Ana\u00a0fonksiyon<\/li>\n<li>void\u00a0main(char[][]\u00a0argumanlar)<\/li>\n<li>{<\/li>\n<li>char[]\u00a0adim;<\/li>\n<li><\/li>\n<li>writef(&#8220;Merhaba\u00a0Dunya!&#8221;);<\/li>\n<li>writef(&#8220;\\nAdiniz\u00a0nedir?&#8221;);<\/li>\n<li>adim\u00a0=\u00a0chop(readln());<\/li>\n<li>writefln(&#8220;Merhaba\u00a0%s!&#8221;,adim);<\/li>\n<li>return\u00a00;<\/li>\n<li>}<\/li>\n<\/ol>\n<\/div>\n<p>Dikkat ederseniz yeni bir k\u00fct\u00fcphane dosyas\u0131 ekledi\u011fimi g\u00f6receksiniz. std.string k\u00fct\u00fcphanesi yaz\u0131lar \u00fczerinde i\u015flemler yapabilmemizi sa\u011flar. A\u015fa\u011f\u0131daki kodu inceleyelim:<\/p>\n<p><em>adim = chop(readln());<\/em><\/p>\n<p><em>readln()<\/em> burada klavyeden verilen girdiyi \u201c<em>enter<\/em>\u201d tu\u015funa bas\u0131lana kadar al\u0131r. <em>chop()<\/em> fonksiyonu ise okunan yaz\u0131n\u0131n sonundaki yeni sat\u0131r karakterini siler. Sonu\u00e7 ad\u0131m de\u011fi\u015fkenine kaydedilir.<\/p>\n<p>writefln(\u201dMerhaba %s!\u201d,adim); kodundaki %s ise bir yaz\u0131n\u0131n yaz\u0131ya d\u0131\u015far\u0131dan eklenebilmesini, yani adim de\u011fi\u015fkeninin de\u011ferinin d\u0131\u015far\u0131dan eklenebilmesini sa\u011flamaktad\u0131r.<\/p>\n<p>Kodu derleyip \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131zda a\u015fa\u011f\u0131dakine benzer bir sonu\u00e7 ile kar\u015f\u0131la\u015f\u0131yoruz.<\/p>\n<p><a title=\"deneme_2_konsol2.JPG\" href=\"http:\/\/web.archive.org\/web\/20081120093430\/http:\/\/www.scozturk.com\/wp-content\/uploads\/2007\/06\/deneme_2_konsol2.JPG\"><img decoding=\"async\" alt=\"deneme_2_konsol2.JPG\" src=\"http:\/\/web.archive.org\/web\/20081120093430im_\/http:\/\/www.scozturk.com\/wp-content\/uploads\/2007\/06\/deneme_2_konsol2.kucukresim.JPG\" \/><\/a><\/p>\n<p><strong>4- Son:<\/strong><\/p>\n<p>Bu yaz\u0131da komut sat\u0131r\u0131ndan girilen arg\u00fcmanlar\u0131n D dilinde nas\u0131l kullan\u0131labilece\u011fini ve klavyeden nas\u0131l girdi al\u0131nabilece\u011fini g\u00f6rd\u00fck. Bir sonraki yaz\u0131da matematiksel i\u015flemlerin D dilinde nas\u0131l yap\u0131ld\u0131\u011f\u0131n\u0131 ve for,while gibi d\u00f6ng\u00fcleri g\u00f6rece\u011fiz.<\/p>\n<p>Herkese iyi kodlamalar.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>1- Giri\u015f: Bu yaz\u0131da D programlama dili ile klavyeden veri alma ve komut sat\u0131r\u0131ndan parametre alma konular\u0131n\u0131 ele alaca\u011f\u0131z. Ayr\u0131ca if-else ve foreach d\u00f6ng\u00fcs\u00fcn\u00fc de \u00f6rnekleyece\u011fiz. Asl\u0131nda bu&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[229,225],"tags":[],"class_list":["post-65","post","type-post","status-publish","format-standard","hentry","category-d-tr","category-programlama-tr"],"_links":{"self":[{"href":"http:\/\/18.193.70.38\/index.php?rest_route=\/wp\/v2\/posts\/65","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/18.193.70.38\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/18.193.70.38\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/18.193.70.38\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/18.193.70.38\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=65"}],"version-history":[{"count":1,"href":"http:\/\/18.193.70.38\/index.php?rest_route=\/wp\/v2\/posts\/65\/revisions"}],"predecessor-version":[{"id":1153,"href":"http:\/\/18.193.70.38\/index.php?rest_route=\/wp\/v2\/posts\/65\/revisions\/1153"}],"wp:attachment":[{"href":"http:\/\/18.193.70.38\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=65"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/18.193.70.38\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=65"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/18.193.70.38\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=65"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}