Forum: Duyurular RSS
Yeni ders: Başka Dizi Olanakları
Sayfa:  önceki  1  2 
Avatar
mert #16
Üye Ara 2010 tarihinden beri · 194 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 3259
Mert "Dil Derneği" deyince DDD kuruluyor sandım: D Dili Derneği. :-p
Asıl benim halim içler acısı.  Tarayıcı pencerelerimde D ile başlayan o kadar çok alan adı ve tanımı var ki. C derneği var güzel ülkemizde. D derneği neden olmasın hem :-)
mert
Avatar
mert #17
Üye Ara 2010 tarihinden beri · 194 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: bütün elemanlar üzerindeki işlemler
Şöyle bir kod yazdım:
import std.stdio;
 
void main()
{
    writeln("Önce bir dinamikDizi adı altında bir dizi yaratalım ");
    int[] dinamikDizi = [10, 20, 30, 40, 50, 60];
    int[] birinciY = dinamikDizi[0 .. 3];
    int[] ikinciY  = dinamikDizi[3 .. 6];
    writeln("Şimdi iki yarım dilim yaptım bunların her biri dinamik dizi");
    writeln("dinamikDizi adlı dizim : ", dinamikDizi);
    writeln("birinciY adlı dizim : ", birinciY);
    writeln("ikinciY adlı dizim  : ", ikinciY);
    writeln("Şimdi sonuç adlı bir dizi yaratıp bir toplama işlemi gerçekleştirelim");
    int[] sonuç = birinciY[] + ikinciY[] ; 
    writeln("sonuç adlı dizimiz şu şekilde oldu : ", sonuç);
}

Derlemeden önce Ali beyin kitapta da belirttiği uyarıyı göz ardı etmedim:
" Not: Bu dersi yazdığım sırada kullandığım dmd 2.051 bu işlemleri henüz dilimler için desteklemiyor. O yüzden bu başlık altındaki bazı örneklerde sabit uzunluklu diziler kullanmak zorunda kaldım.

Derleyicim 2.052 ve evet bu biçimde yazdığımda hata uyarısı ile karşılaştım.
dinamikTumE.d(14): Error: Array operation birinciY[] + ikinciY[] not implemented
Ancak programımdaki ondördüncü satırı şu biçimde değştirip sonuç dizisini sabit uzunluklu dizi haline getirdiğimde
int[3] sonuç = birinciY[] + ikinciY[] ; // sonuç dizisini sabit dizi olarak yeniden yapılandırsam? 
sonuç adlı dizimizde toplama işleminin yapılmış olduğunu gördüm.


Paylaşayım istedim.
mert
erdem (Moderatör) #18
Üye Tem 2009 tarihinden beri · 978 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Evet güzel olmuş bence :)

Söylediklerinize ek olarak aslında bir dilim oluşturduğumuzda o dizinin elemanlarını kopyalamıyoruz. Sadece bu diziye erişim sağlayan bir yapı oluşturuyoruz. Yani dilimin kendi elemanları yok ama başka bir dizinin elemanlarının bir aralığını kullanabiliyor. Ayrıca aşağıda açıklama olarak yazdığım ifadeler de birbirinin aynısı:

import std.stdio;
 
void main () {
 
    int [5] dizi = [40, 30, 20, 10, 0]; // dizinin türü int [5]
 
    auto dilim = dizi [2 .. $];         // dilimin türü int []
    assert (dilim == [20, 10, 0]);
 
    auto dilim2 = dizi [];              // bunun aynısı dizi [0 .. $]
}
Avatar
mert #19
Üye Ara 2010 tarihinden beri · 194 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
dilimin kendi elemanları yok ama başka bir dizinin elemanlarının bir aralığını kullanabiliyor.
Teşekkür ederim Erdem. Ayrıntılar önemli evet.
mert
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 
Forum: Duyurular RSS
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-18, 22:34:52 (UTC -08:00)