Forum: Diğer Konular RSS
Kod Yazma Teknikleri
Girintiler ve Küme Parantezleri
Sayfa:  önceki  1  2 
Avatar
Salih Dinçer #16
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 5240
Ali Çehreli:
Salih Dinçer:
import core.stdc.stdio: puts, fgets, stdin, putchar;
import core.stdc.string: strlen;
Kaynak: http://codepad.org/RejDPkGh/fork <-- bu kodun ne işe yaradığını bilmiyorum, hiç sormayın...:)
Programın büyüklüğüne etkisi olduğunu sanmıyorum. Phobos modülleriyle deneyebilirsiniz. Bu olanağın amacı, global isim alanının kirletmemek ve olası isim çakışmalarının olasılığını azaltmaktır...
İsim kirliliğinden dolayı olduğunu bilmiyordum ama hoş durduğu kesin. Sanki yazılımın bir özeti gibi duruyor ve kullandığınız işlevler daha başlangıçta okuyucu (yani diğer bir programcı) tarafından anlaşılıyor. Bunu kod yazma geleneğime eklemeye başladım. Zor ve gereksiz gibi görünse de sevdim.

acehreli:
Not: Senin söylediğin daha çok "brain fried"a benziyor. :) "Brain storming" hani toplantılarda sıkılmadan saçma gibi gelse de fikirler ortaya atarak birlikte çözüm bulma olayı.
Brain fried diye de mi bir tabir varmış? Genelde ben, sesli düşünürken beynim sıcaklamaya başlar (deli gibi çalışmaya başlar) o yüzden böyle bir espri yaptım. Yani artık sessiz düşünmek yetmiyor dışarı taşıyor ve gel beni soğut diyor...:)

Sevgiler, saygılar...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Avatar
Salih Dinçer #17
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Üniversitede okuyorken...

İşe bakın baş harfi D olan Delphi ile cebelleştiğim tarihler de gelecekteki karmaşayı sezinlenmiş olacaklar ki /+ ... +/ özelliğini bu dil ile insanlığa kazandırmışlar:
What's New for D 0.19

Feb 8, 2002
Bugs Fixed
  • win98 crash
  • /+ +/ commenting
  • function pointer types
  • etc
Kaynak: http://www.digitalmars.com/d/1.0/changelog1.html#new019

Zaten Ali Hocam, bunu bize öğretmişti: Yaklaşık 10 yıl sonra, 2012...
acehreli on 2012-03-09, 13:45:
Salih Dinçer:
yıldız yerine artı kullanılarak yapılan şeyin bir esprisi var mı?

Onlar /* ... */ açıklamalarını da kapsayabiliyorlar.

    /+
    /*
        // tek satır açıklama
        int i;
 
        çok satır açıklama
    */
 
    int j;
 
        hepsini kapsayan açıklama
    +/

/+ ... +/ yerine /* ... */ kullanılmaya çalışılsaydı, kodun tam ortasında bulunan */ belirtecine kadar etkili olurdu. (Deneyiniz. ;))

Ali
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Avatar
Salih Dinçer #18
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Küçük bir şey daha unutmuşum, az önce kullanınca farkettim. Diyelim ki iki kümeyi tek taksimi (slash: /) kullanarak aç/kapa (swap) yapmak istiyorsunuz. Bunun için //*/ yanında kullanmanız gereken kümeler arasında /*/ grubu.
/* <--- aşağıdaki işlevi açmak için, başa / ekleyin...
bool bitTest(uint k) {
    ubyte a = veriler[k >> 3];
    for (uint i = 0; i < (k % 8); i++) a >>= 1;
    if (a % 2 == 1) return true;
    return false;
}/*/
 
bool bitTest(uint k) {
    ubyte bits = veriler[k >> 3];
    if ((bits & (1 << k % 8)) != 0) return true;
    return false;
}//*/ 
Deneyin...:)
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
acehreli (Moderatör) #19
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Evet, güzelmiş. :)

Ali
Avatar
Salih Dinçer #20
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yeni bir teknik öğrendim!

Örneğin elinizde, yazılımın ayarlarını anlamlandırdığınız şöyle bir yapı var:
// Times
enum Times {
    Imsak,
    Fajr,
    Sunrise,
    Dhuhr,
    Asr,
    Sunset,
    Maghrib,
    Isha,
    Midnight,
 
    TimesCount
}
Mesela ayarları tuttuğunuz dizide (örn. times[]), bu anlamları kullanırken, en sondaki eleman doğal olarak dizinin boyutunu veriyor. Siz herhangi bir length işlemi yapmadan sadece sondaki elemanı kullanabiliyorsunuz. Örneğin şöyle kurup kullanmaya başlayabiliriz:
    static int[Times.TimesCount] ayarlar;
    foreach(i; 0 .. Times.TimesCount)
        ayarlar[i] = Times.TimesCount ^ i;
    ayarlar[Times.Asr].writeln(":(", Times.Asr, ")");
    ayarlar.writeln();
Çıktısı:
13:(Asr)
[9, 8, 11, 10, 13, 12, 15, 14, 1]]
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Bu mesaj Salih Dinçer tarafından değiştirildi; zaman: 2012-08-31, 06:11.
acehreli (Moderatör) #21
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Aynı durumda D'da bir seçenek de (Times.max + 1) değerini kullanmaktır.

Bir de enum'ların bütün değerleri üzerinde gezinmeye yarayan std.traits.EnumMembers var:

import std.traits;
foreach(zaman; EnumMembers!Times) {
    writeln(zaman);
}

Ancak, bir derleme zamanı olanağı olduğu için yukarıdaki foreach de her değer için koda açıkça yazılır. Yani döngü yerine tekrarlı satırlar olur. Şunun eşdeğeri:

{ writeln(Times.Imsak); }
{ writeln(Times.Fajr); }
{ writeln(Times.Sunrise); }
// vs. 

Ali
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Sayfa:  önceki  1  2 
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-23, 23:26:46 (UTC -08:00)