Örnek Kodlar
Buradaki küçük D programları, dilin özellikleri ve söz dizimi hakkında hızlıca bir fikir verme amacı taşıyorlar.
Merhaba dünya
Klasik "merhaba dünya" programı.
import std.stdio; void main() { writeln("Merhaba dünya!"); }
- D'de başlık dosyası yerine modül kavramı var.
importanahtar sözcüğü ilestd.stdiomodülünün kullanıldığı belirtiliyor. writelnstandart çıkışa bir satır yazdırmak için kullanılıyor.- D'de hem
void main, hem deint mainyasal. C ve C++'daki bu konudaki tarihsel karışıklık D'de yok...
Türkçe harfler
D'nin en güzel taraflarından birisi, kaynak kodlarda Unicode karakterlerin de kullanılabilmesi.
import std.stdio; void main() { Türkçe_harf_dene(); } void Türkçe_harf_dene() { writeln("ğüşiöçıĞÜŞİÖÇI"); }
- Dosyayı UTF-8 olarak kaydetmek yeterli.
- C'nin ve C++'nın tersine, isimlerin önceden bildirilmesi gerekmiyor. Programda
Türkçe_harf_denefonksiyonunu çağırabilmek için onu önceden bildirmek gerekmedi.
Kapsam fonksiyonları ve fonksiyon sabitleri [function literals]
Fonksiyonlar başka fonksiyonlar içerisinde tanımlanabilirler. Hatta isimsiz olarak ifadeler içerisinde bile tanımlanabilirler.
import std.stdio; void main() { /* * Örnek olsun diye burada kapsam fonksiyonu * kullanılıyor; serbest fonksiyon da olurdu. * * Bu fonksiyonun üç parametresi var: * * ilk: hesaplanacak ilk değer * son: hesaplanacak son değer * hesap: parametre olarak tek bir int alan ve int * döndüren bir fonksiyon */ void kapsam_fonksiyonu(int ilk, int son, int delegate(int) hesap) { for (int i = ilk; i <= son; ++i) { /* Parametre olarak verilen fonksiyonu kullanarak * bir hesap yapıyoruz*/ int sonuç = hesap(i); writefln("%d %d", i, sonuç); } } writeln("kareler:"); /* * Yukarıdaki kapsam fonksiyonunun burada isimsiz bir * fonksiyon sabitiyle çağrıldığını görüyoruz. * * Burada üçüncü parametre bir 'fonksiyon * sabiti'. 'sayı'nın fonksiyon parametresinden geldiğini * belirttikten sonra, fonksiyonu hemen ifadenin içinde * tanımlıyoruz. * * Parametre almayan bir fonksiyon sabiti olsa daha da * kısa olarak yazabilirdik: * * kapsam_fonksiyonu(3, 10, { return 5; } ); */ kapsam_fonksiyonu(3, 10, (int sayı){ return sayı * sayı; } ); writeln("iki katlar:"); kapsam_fonksiyonu(1, 7, (int sayı){ return sayı * 2; } ); }

D.ershane
Wiki
Projeler
Tanıtım
İletişim
Hakları