{"id":67,"date":"2013-10-15T13:20:31","date_gmt":"2013-10-15T10:20:31","guid":{"rendered":"http:\/\/www.scozturk.com\/?p=67"},"modified":"2025-08-27T10:17:34","modified_gmt":"2025-08-27T10:17:34","slug":"2-d-ile-ilk-programimizi-yazalim","status":"publish","type":"post","link":"http:\/\/18.193.70.38\/?p=67&lang=tr","title":{"rendered":"2 &#8211; D ile ilk program\u0131m\u0131z\u0131 yazal\u0131m"},"content":{"rendered":"<p><strong>1- Giri\u015f: <\/strong><\/p>\n<p>Bu yaz\u0131da D programlama dilini kullanarak ilk program\u0131m\u0131z\u0131 yazaca\u011f\u0131z. Programlamaya yeni ba\u015flad\u0131ysan\u0131z D ile ba\u015flamay\u0131n. C# veya Java gibi bir dili tercih edin. E\u011fer programlamaya yeni ba\u015flamad\u0131ysan\u0131z herhalde bu programda ekrana ne yazd\u0131raca\u011f\u0131m\u0131z\u0131 tahmin etmi\u015fsinizdir. Evet! \u201cMerhaba D\u00fcnya!\u201d yazd\u0131raca\u011f\u0131z.<\/p>\n<p><strong>2- Alet \u00e7antam\u0131z:<\/strong><\/p>\n<p>Linux i\u00e7in D derleyicisi: <a href=\"http:\/\/web.archive.org\/web\/20100109085724\/http:\/\/ftp.digitalmars.com\/dmd.zip\" target=\"_blank\">http:\/\/ftp.digitalmars.com\/dmd.zip<\/a><\/p>\n<p>Windows i\u00e7in D derleyicisi ve ba\u011flay\u0131c\u0131s\u0131: <a href=\"http:\/\/web.archive.org\/web\/20100109085724\/http:\/\/ftp.digitalmars.com\/dmd.zip\" target=\"_blank\">http:\/\/ftp.digitalmars.com\/dmd.zip<\/a> <a href=\"http:\/\/web.archive.org\/web\/20100109085724\/http:\/\/ftp.digitalmars.com\/dmc.zip\" target=\"_blank\">http:\/\/ftp.digitalmars.com\/dmc.zip<\/a><\/p>\n<p>Piyasada \u015fu an bedava olarak da\u011f\u0131t\u0131lan ve d\u00fczg\u00fcn olarak \u00e7al\u0131\u015fan bir D IDEsi ne yaz\u0131k ki yok. Bu y\u00fczden sadece bir yaz\u0131 d\u00fczenleyicisi kullanaca\u011f\u0131z. Tabii ki tercihen yaz\u0131 d\u00fczenleyicimizin D i\u00e7in \u00f6zel kod renklendirme \u00f6zelli\u011finin olmas\u0131 gerekiyor. Linux alt\u0131nda \u00e7al\u0131\u015f\u0131yorsan\u0131z (ki ben Linux dedi\u011fimde Pardus\u2019u kastediyorum \u00e7\u00fcnk\u00fc bende o y\u00fckl\u00fc) KWrite veya KEdit kullanman\u0131z yeterli. D, C kodlamas\u0131na benzer oldu\u011fundan sorunsuz bir \u015fekilde kod renklendirmesi ger\u00e7ekle\u015ftirilebiliyor. Windows alt\u0131nda \u00e7al\u0131\u015f\u0131yorsan\u0131z o zaman Notepad++\u2019y\u0131 kullanman\u0131z\u0131 tavsiye ederim.<\/p>\n<p><strong>3- Alet \u00e7antam\u0131z\u0131 a\u00e7al\u0131m:<\/strong><\/p>\n<p><em>Linux Kurulumu: <\/em>Linux da\u011f\u0131t\u0131m\u0131n\u0131 bilgisayar\u0131m\u0131za indirdikten sonra s\u0131ray\u0131sla a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 takip edelim:<\/p>\n<ol>\n<li>Ev klas\u00f6r\u00fcne<em> .zip<\/em> dosyas\u0131n\u0131 a\u00e7al\u0131m. Bu i\u015flem <em>Ev<\/em> klas\u00f6r\u00fcn\u00fcn i\u00e7inde <em>dmd<\/em> adl\u0131 bir klas\u00f6r olu\u015fturacakt\u0131r.<\/li>\n<li><em>dmd\/bin<\/em> klas\u00f6r\u00fcn\u00fcn i\u00e7indeki <em>dmd.conf<\/em> dosyas\u0131n\u0131 (ayar dosyas\u0131) <em>\/etc<\/em> klas\u00f6r\u00fcne koplayal\u0131m. Bunu yapmak i\u00e7in u\u00e7 birime <em>cp dmd\/bin\/dmd.conf \/etc<\/em> yazmak yeterli (<em>dmd.conf<\/em> ile <em>\/etc <\/em>aras\u0131nda bo\u015fluk var)<\/li>\n<li>Gerekli dosyalara gerekli izinleri vermek i\u00e7in yine u\u00e7 birime <em>chmod u+x dmd\/bin\/{dmd,dumpobj,obj2asm,rdmd}<\/em> yazal\u0131m.<\/li>\n<li><em>dmd\/bin<\/em> klas\u00f6r\u00fcn\u00fc PATH\u2019e ekleyelim. Bunu yapmak i\u00e7in a\u015fa\u011f\u0131daki sat\u0131rlar\u0131 teker teker konsoldan girelim:<em><br \/>\nPATH=$PATH:\/dmd\/bin<br \/>\nexport PATH<\/em><\/li>\n<li>libphobos.a k\u00fct\u00fcphanesini <em>\/usr\/lib<\/em> klas\u00f6r\u00fcne ta\u015f\u0131yal\u0131m. Bunu yapmak i\u00e7in u\u00e7 birime <em>cp dmd\/lib\/libphobos.a \/usr\/lib<\/em> yazal\u0131m.<\/li>\n<li>Evet art\u0131k haz\u0131r\u0131z. E\u011fer yukar\u0131daki ad\u0131mlarda herhangi bir hata yap\u0131lmad\u0131ysa d\u00fczg\u00fcn bir \u015fekilde derleyicimiz \u00e7al\u0131\u015facakt\u0131r. E\u011fer bir sorun ile kar\u015f\u0131la\u015f\u0131rsan\u0131z l\u00fctfen bunu benimle bu yaz\u0131n\u0131n yorumlar k\u0131sm\u0131ndan payla\u015f\u0131n. Ayn\u0131 sorunu ba\u015fkalar\u0131 da ya\u015fayabilir, herkes faydalans\u0131n.<\/li>\n<\/ol>\n<p><em>Windows Kurulumu: <\/em>Windows da\u011f\u0131t\u0131m\u0131n\u0131 (2 zip dosyas\u0131) bilgisayara indirdikten sonra a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 takip edelim:<\/p>\n<ol>\n<li><em>dmd.zip<\/em> dosyas\u0131n\u0131 <em>C:<\/em> veya <em>D:<\/em> gibi ana bir birime a\u00e7al\u0131m.<\/li>\n<li><em>dmc.zip<\/em> dosyas\u0131n\u0131 <em>C:<\/em> veya <em>D:<\/em> gibi ana bir birime a\u00e7al\u0131m.<\/li>\n<li>\/bin klas\u00f6r\u00fcn\u00fcn adresini ortam de\u011fi\u015fkenlerine Ba\u015flat-&gt;Ayarlar-&gt;Denetim Masas\u0131-&gt;Sistem-&gt;Geli\u015fmi\u015f-&gt;Ortam De\u011fi\u015fkenleri-&gt;PATH\u2019e ekleyelim.<\/li>\n<li>Evet haz\u0131r\u0131z.<\/li>\n<\/ol>\n<p><strong> 4- Merhaba Dunya!<\/strong><\/p>\n<p>Yeni bir dosya olu\u015ftural\u0131m. Ad\u0131 deneme_1.d olsun. \u0130\u00e7ine a\u015fa\u011f\u0131dakileri yazal\u0131m:<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\n \/\/ K\u00fct\u00fcphane dosyalar\u0131\n import std.stdio;\n \/\/ Ana fonksiyon\n void main(char&#x5B;]&#x5B;] argumanlar)\n {\n     writef(&quot;Merhaba Dunya!&quot;);\n }\n <\/pre>\n<p>Komut sat\u0131r\u0131n\u0131 a\u00e7al\u0131m ve<\/p>\n<p><em>dmd deneme_1.d<\/em><\/p>\n<p>yazarak <em>deneme_1.d<\/em> dosyas\u0131n\u0131 derletelim. E\u011fer herhangi bir hata ile kar\u015f\u0131la\u015fmazsak<\/p>\n<p><em>deneme_1<\/em><\/p>\n<p>yazarak derlemi\u015f oldu\u011fumuz program\u0131m\u0131z\u0131 \u00e7al\u0131\u015ft\u0131ral\u0131m ve \u201cMerhaba Dunya!\u201d iletimizi g\u00f6relim.<\/p>\n<p>Kodu sat\u0131r sat\u0131r inceleyecek olursak:<\/p>\n<p><em>import std.stdio;<\/em> kodunun bulundu\u011fu sat\u0131r stdio k\u00fct\u00fcphanesini eklemeye yarar. D programlama dilinde bir k\u00fct\u00fcphane eklemek istiyorsak C veya C++\u2019\u0131n <em>#include<\/em> komutu veya C#\u2019\u0131n <em>using<\/em> komutu yerine Java\u2019da da bulunan <em>import<\/em> komutunu yaz\u0131yorurz ve ard\u0131ndan da kullanmak istedi\u011fimiz k\u00fct\u00fcphaneyi belirtiyoruz.<\/p>\n<p><em>void main(char[][] argumanlar) <\/em>kodunun bulundu\u011fu sat\u0131r program\u0131m\u0131z\u0131n giri\u015f fonksiyonunu yani <em>main<\/em> fonksiyonunu belirtir. Ard\u0131ndan gelen { } parantezlerinin i\u00e7ine <em>main<\/em> fonksiyonumuzun i\u00e7eri\u011fini yazabiliriz. C, C++ ve Java ile program yazm\u0131\u015f olanlar i\u00e7in gayet tan\u0131d\u0131k gelecektir. C# kullanan programc\u0131lar ise biraz yabanc\u0131l\u0131k \u00e7ekebilir. Fonksiyonun tan\u0131m\u0131n\u0131n i\u00e7indeki <em>char[][] argumanlar<\/em> parametresi program komut sat\u0131r\u0131ndan \u00e7al\u0131\u015ft\u0131r\u0131l\u0131rken uygulanan parametleri almak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p><em>writef(\u201dMerhaba Dunya!\u201d); <\/em> kodu ile ise ekrana Merhaba Dunya! iletisini yaz\u0131yoruz. Klasik \\n \\r \\b komutlar\u0131 burada da ge\u00e7erli. Denemek i\u00e7in a\u015fa\u011f\u0131daki kodu deneyelim:<\/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>writef(&#8220;Merhaba\u00a0Dunya!\\nHmmm&#8230;&#8221;);<\/li>\n<li>}<\/li>\n<\/ol>\n<\/div>\n<p>Kodu derleyip \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda a\u015fa\u011f\u0131dakine benzer bir sonu\u00e7 ile kar\u015f\u0131la\u015facaks\u0131n\u0131z:<\/p>\n<p><a title=\"deneme_1_konsol2.JPG\" href=\"http:\/\/web.archive.org\/web\/20100109085724\/http:\/\/www.scozturk.com\/wp-content\/uploads\/2007\/06\/deneme_1_konsol2.JPG\"><img decoding=\"async\" alt=\"deneme_1_konsol2.JPG\" src=\"http:\/\/web.archive.org\/web\/20100109085724im_\/http:\/\/www.scozturk.com\/wp-content\/uploads\/2007\/06\/deneme_1_konsol2.kucukresim.JPG\" \/><\/a><\/p>\n<p><em>writef<\/em> fonksiyonu C deki <em>printf<\/em>\u2018e kar\u015f\u0131l\u0131k geliyor gibi d\u00fc\u015f\u00fcn\u00fclebilir. Veya Java\u2019daki <em>System.out.print<\/em> . Veya C++ daki <em>cout<\/em>\u2018a. Tabii ki bir sat\u0131rl\u0131k bir yaz\u0131 yazmak i\u00e7in yaz\u0131n\u0131n sonuna \\n koymak zorunda de\u011filiz. writefln fonksiyonunu kullanabiliriz.<\/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;Hmmm&#8230;&#8221;);<\/li>\n<li>writefln(&#8220;Ne\u00a0guzel\u00a0bir\u00a0gun\\b\\b\\bdil!&#8221;);<\/li>\n<li>}<\/li>\n<\/ol>\n<\/div>\n<p>A\u015fa\u011f\u0131dakine benzer bir sonu\u00e7 elde etmemiz gerekiyor.<\/p>\n<p><a title=\"deneme_1_konsol3.JPG\" href=\"http:\/\/web.archive.org\/web\/20100109085724\/http:\/\/www.scozturk.com\/wp-content\/uploads\/2007\/06\/deneme_1_konsol3.JPG\"><img decoding=\"async\" alt=\"deneme_1_konsol3.JPG\" src=\"http:\/\/web.archive.org\/web\/20100109085724im_\/http:\/\/www.scozturk.com\/wp-content\/uploads\/2007\/06\/deneme_1_konsol3.kucukresim.JPG\" \/><\/a><\/p>\n<p>writefln fonksiyonu verilen yaz\u0131y\u0131 bir sat\u0131ra yazar ve alt sat\u0131ra ge\u00e7er.<\/p>\n<p><strong>5- Son<\/strong><\/p>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi D programlama dili di\u011fer dillere \u00e7ok benziyor ve gayet basit. Program\u0131 yazarken herhangi bir \u015fekilde takla atmad\u0131k. Ekrana yaz\u0131 yazd\u0131rmak i\u00e7in 500MB l\u0131k bir dosyay\u0131 bilgisayar\u0131m\u0131za y\u00fckleyip 30 dakika kurulum ile u\u011fra\u015fmad\u0131k.<\/p>\n<p>Bir sonraki yaz\u0131da komut sat\u0131r\u0131ndan parametre alma ve kullan\u0131c\u0131dan girdi alma konular\u0131na de\u011finece\u011fiz. if-else ve d\u00f6ng\u00fclere de do\u011fal olarak bir sonraki yaz\u0131da de\u011finece\u011fim.<\/p>\n<p>Detayl\u0131 olarak anlatmam\u0131 istedi\u011finiz bir yer varsa l\u00fctfen bunu yorumlar k\u0131sm\u0131ndan benimle payla\u015f\u0131n. Elimden geleni yapmaya \u00e7al\u0131\u015f\u0131r\u0131m.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>1- Giri\u015f: Bu yaz\u0131da D programlama dilini kullanarak ilk program\u0131m\u0131z\u0131 yazaca\u011f\u0131z. Programlamaya yeni ba\u015flad\u0131ysan\u0131z D ile ba\u015flamay\u0131n. C# veya Java gibi bir dili tercih edin. E\u011fer programlamaya yeni&#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-67","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\/67","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=67"}],"version-history":[{"count":1,"href":"http:\/\/18.193.70.38\/index.php?rest_route=\/wp\/v2\/posts\/67\/revisions"}],"predecessor-version":[{"id":1149,"href":"http:\/\/18.193.70.38\/index.php?rest_route=\/wp\/v2\/posts\/67\/revisions\/1149"}],"wp:attachment":[{"href":"http:\/\/18.193.70.38\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=67"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/18.193.70.38\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=67"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/18.193.70.38\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=67"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}