Jump to page: 1 2
Thread overview
Dizilerin ~= operatörü ile genişlemesi
Apr 11, 2011
erdem
Apr 11, 2011
erdem
Apr 11, 2011
erdem
Apr 11, 2011
erdem
Apr 12, 2011
erdem
Apr 17, 2011
erdem
April 11, 2011

Aslında ben bu sorunun cevabını biliyorum. Ama dilin ilginç bir özelliği olduğu için sizinle paylaşmak istedim.

   auto a = [87, 40, 10, 2];
   auto b = a;                 // Şimdi a ve b aynı diziyi gösteriyorlar
   a ~= [5, 17];               // a ya bir şeyler ekledik
   a[0] = 15;                  // a[0] 'ı değiştiriyoruz
   assert(b[0] == 15);         // bu assert ifadesi geçerli olur mu?

Yani a[0]'da yapılan değişiklik b[0]'da geçerli olur mu? Kısacası a ve b hala aynı diziyi mi gösteriyorlar?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 11, 2011

Bu sorunun yanıtı

   assert(b[0] == 15);

ifadesi 'b[0] '15 olabilir ya da olmayabilir şeklinde değil mi? Yani dil 'b[0]''ın 15 olup olmaması konusunda D dili bir garanti vermiyor. Örneğin ilk durumda iki dizi aynı yeri gösteriyorlardı. Sonra

   a ~= [5, 17];

ile diziyi genişletmeye çalıştığımızda iki durum ortaya çıkabiliyor. Birincisi eğer boş bellek alanı varsa bu alanlar a'nın yanında oluşturuluyor. Eğer a'nın yanında boş bellek alanı yoksa ya da herhangi bir şekilde a'nın sağında bir dizi varsa sıfırdan bellek ayrılıyor. Ve a dizisi yeni ayrılan yere kopyalanıyor. Bu şekilde değil miydi :)

   auto b = a[0..$-1];

Belki tam olarak anlatmak istediğinizi anlamamış olabilirim. Ama bana sanki bu örnekte birincisinin aynısı gibi geliyor. Yani a'ya yeni değerler eklediğimizde gene en sondaki assert ifadesinin geçerli olup olmayacağı konusunda D dili bir garanti vermez. Değil mi :huh:

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 11, 2011

Böyle D gibi sürekli değişen yeni diller için kitap yazmak da zor olsa gerek :) Benim okuduğum kitabın basım tarihi Haziran 2010.

(Diğer arkadaşlara bu konuyu görsel olarak göstermek için Tuxpaint'de grafikler hazırlıyordum. Olan o grafiklere oldu! :-D )

Google gibi şirketlerde çalışan bazı mühendislerin neden beyaz yazı tahtalarını kullandığını daha iyi anlıyorum. Keşke yazdığımız grafik, karalamaları da bilgisayara aktarmanın kolay bir yolu olsaydı.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 11, 2011

Hmmm... Bence bir hata olmalı; veya ben D dizilerini tam anlamamışım. Eğer forumda sen sormazsan ben soracağım çünkü ikinci satırı şöyle değiştirince fark oluyor:

   auto b = a[0..$-1];

Hataya çok açık bir konu... :-/ Umarım derleyici hatasıdır da o satırdaki o kadarcık fark bu kadar büyük etki yapmaz.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 11, 2011

Alıntı (acehreli):

>

Kitap TDPL, değil mi? Hangi örneğe baktığını söyler misin.

Evet.

Bu örnek Diziler Arrays, Associative Arrays, and Strings konusunda Dizilerin Genişlemesi Expanding diye bir başlık. Bu palindrom örneğinden hemen sonra.. Tam olarak 4.1.9 numaralı konu 103, 104 ve 105. sayfalar. Hatta 105.sayfada a ve b'nin bellekte aldığı şekli gösteren bir şekil Figure 4.4 (benim tuxpaint'te çizmeye çalıştığım :rolleyes: ) var.

Alıntı (acehreli):

>

Beyaz tahtaya yazılanı kağıda geçiren tahtalar var. Ben Bahçeşehir Üniversitesi'nde görmüştüm. :) Ama el yazısını olduğu gibi geçiriyor.

Eğer tahtada yazılanları bilgisayara da aktarabiliyorsa tam benlikmiş.

Ama fiyatlarını görünce ufak bir beyaz tahta da benim işimi görür gibi gözüküyor :)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 11, 2011

Alıntı (erdem):

>

Bu sorunun yanıtı

>     assert(b[0] == 15);
> ```

>
> ifadesi 'b[0] '15 olabilir ya da olmayabilir şeklinde değil mi?

Benim bildiğim, eskiden öyleydi ama artık değişti. Bildiğim kural: Uzunluğu artan dilim paylaşımdan ayrılır. Yani a ile b'nin ilişiğinin kesilmiş olması gerekir.

Ama emin olamıyorum; Digital Mars'ta sormamız gerek.

Ali

-- 
[ Bu gönderi, <http://ddili.org/forum>'dan dönüştürülmüştür. ]
April 11, 2011

Kitap TDPL, değil mi? Hangi örneğe baktığını söyler misin.

Beyaz tahtaya yazılanı kağıda geçiren tahtalar var. Ben Bahçeşehir Üniversitesi'nde görmüştüm. :) Ama el yazısını olduğu gibi geçiriyor.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 12, 2011

Alıntı (acehreli):

>

O bir resim çizme programı değil mi? Kutuları tutup kaydırıp oklar filan çizebiliyor mu? Öyle bir programsa değiştirmesi kolay olur. Ama değiştirmene gerek de yok... :) (Baktım; bende "OpenOffice.org Drawing" var.)

Evet çocuklar için resim çizme programı! :-D Ama Inkscape gibi karmaşık bir programı ilk kez deneyince dedim en iyisi bu program basit görünüyor onunla çizeyim.

O zaman OO Drawing programına bir bakayım :-)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 12, 2011

Alıntı (erdem):

>

Alıntı (acehreli):

>

Kitap TDPL, değil mi? Hangi örneğe baktığını söyler misin.

Evet.

Bu örnek Diziler Arrays, Associative Arrays, and Strings konusunda Dizilerin Genişlemesi Expanding diye bir başlık. Bu palindrom örneğinden hemen sonra.. Tam olarak 4.1.9 numaralı konu 103, 104 ve 105. sayfalar. Hatta 105.sayfada a ve b'nin bellekte aldığı şekli gösteren bir şekil Figure 4.4 (benim tuxpaint'te çizmeye çalıştığım :rolleyes: ) var.

(Arama yaparken kitabın kaçak kopyalarına da rastladım.)

Ne kadar karmaşık bir konu!

Kendi katıldığım "D array expansion and non-deterministic re-allocation" diye bir konu bile olmuş:

http://lists.puremagic.com/pipermail/digitalmars-d/2009-November/thread.html#67344

O tartışmaları tabii ki hatırlıyorum ama sonuçta dizilerin bu konularda güvenli olduklarını hatırlıyordum. Yani "uzunluğu değişen dilim paylaşımdan ayrılır" sanıyordum. Değilmiş. Şurada bazı örnekler var (kurallar ~= için de geçerli):

http://digitalmars.com/d/2.0/arrays.html#resize

Aynen Erdem'in söylediği gibi. Tehlikeli... Yukarıdaki bağlantıda "paylaşımı ayırmak istiyorsanız kendiniz .dup'u çağırın" diyorlar. Peki. Dikkat ederiz. :)

Erdem, konuyu açtığın için teşekkürler. Ben bir kere daha öğrendim. Aynı konuyu bir kaç ay sonra yine açalım da yine öğrenelim! :D

Alıntı:

>

Tuxpaint'de grafikler hazırlıyordum

O bir resim çizme programı değil mi? Kutuları tutup kaydırıp oklar filan çizebiliyor mu? Öyle bir programsa değiştirmesi kolay olur. Ama değiştirmene gerek de yok... :) (Baktım; bende "OpenOffice.org Drawing" var.)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 12, 2011

Ben OO Drawing'i kullanmıyorum ama; sonra beğenmezsen beni suçlama. :) Baktım; menüde o var.

Bu programlara alışınca çok hızlı çalışılabiliyor. Bizde bir arkadaş var; bana bir tasarımı anlatırken bile bir yandan ekranda kutucukları hareket ettirip birbirlerine bağlıyor. (Ben gelemem öyle sıkıntıya. :D)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

« First   ‹ Prev
1 2