Forum: D Programlama Dili RSS
Karakter giriş çıkışı
Sayfa:  önceki  1  2 
acehreli (Moderatör) #16
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ı
Yanıtlanan mesaj ID 2843
canalpay:
Tabii. Çünkü aynı şey: kopyası da string...

Ben dup ile mutable olarak kopyalandığını idup immutable ile kopyalandığını düşünüyordum.

Sen haklısın. Ben de az haklıyım ama: ben string'i "karakter dizisi" diye kullanmışım anlaşılan. Erişim hakları farklı ama sonuçta dizi olduğu için aynı sorunla karşı karşıya.

Ben sanırım bazı konuları karıştırmışım. Dün dizileri okuyordum. Orada ne zaman dilim oluyor ne zaman dilimlikten çıkıyor, ayrıca bir dizi adını yazarken ne zaman [] karakteri kullanılıyor derken karıştırmışım.

Yalnız değilsin! :) Özellikle C dillerinden gelenler bu konularda karışıklık yaşayacaklardır.

Önce burada ilgili olduğunu düşündüğüm bir bilgiyi hatırlayayım. (Daha çok kendime söylüyorum. ;)) Dizi ismi, bir eleman topluluğunun referansıdır.

- eşitliğin solunda bir dizi ismi kullanıldığında, o dizi artık yeni elemanlara erişim sağlamaya başlar:

    sayı = [ 10, 20 ];

sayı, artık eski elemanları bırakır, bunlara erişim sağlar

- dizi isminden sonra [] kullanıldığında "o dizinin eriştirdiği bütün elemanlar" anlamına geliyor

    sayı[] = 7;

O, bütün elemanları 7'ye eşitliyor. Benim anladığım böyle. :D

    double[] sayı = [1,5,9,5,5,2,3];
    sayı[]= (sayı[]+3)/2;// Burada [] kullanmak şart. Peki neden şart ? 

Bence o bir dmd sorunu. Anlaşılan, sağ taraftaki hesabı yapabilmek için solda bir dizi eleman olmasını bekliyorlar. Oysa, sağ tarafta bir işlem yapabilirlerdi, o işlemin sonucu bir "dizi eleman" olurdu, ve sayı= deyince de sayı artık o yeni elemanlara erişim sağlamaya başlayabilirdi.

Neden böyle olduğunu bilmiyorum. Yani belki geçerli bir nedeni vardır.

D'de dizilerin çok fazla ayrıntısı var.

Bence de... :)

Ali
canalpay (Moderatör) #17
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
- dizi isminden sonra [] kullanıldığında "o dizinin eriştirdiği bütün elemanlar" anlamına geliyor

Bende öyle düşünüyorum.

        double[] sayı = [1,5,9,5,5,2,3];
        sayı[]= (sayı[]+3)/2;// Burada [] kullanmak şart. Peki neden şart?


Bence o bir dmd sorunu. Anlaşılan, sağ taraftaki hesabı yapabilmek için solda bir dizi eleman olmasını bekliyorlar. Oysa, sağ tarafta bir işlem yapabilirlerdi, o işlemin sonucu bir "dizi eleman" olurdu, ve sayı= deyince de sayı artık o yeni elemanlara erişim sağlamaya başlayabilirdi.


Bence dmd'nin sorunu değil. Kitapta array-wise (akıllı diziler?) bölümünde de bu şekilde kullanılmış.

Sanırım sadece array-wise için [] kullanmalıyız. Açıklama array wise için içindeki her elemana tek tek erişiyor.

Ancak bir diziyi döndürdüğümüzde içindeki elemana tek tek erişmiyor. Sadece bellek adresi ile uzunluğu döndürülüyor. Bu yüzden [] kullanmamıza gerek yok.

Bu açıklamayı kendime yaptım ve evet mantıklı geldi.

O zaman writeln(dizi[]) şeklindeki kullanım hatalı kullanım olmalı?
acehreli (Moderatör) #18
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ı
canalpay:
Kitapta array-wise (akıllı diziler?) bölümünde

-wise, son ek olarak kullanıldığında, eklendiği şey "kapsamında" gibi bir anlama da geliyor. Örneğin clockwise, saatin ilerlediği yönde demek...

Andrei'nin hangi anlamda kullandığından emin olamam. :)

O zaman writeln(dizi[]) şeklindeki kullanım hatalı kullanım olmalı?

Bence değil, çünkü o durumda dizinin bir dilimini almış oluyoruz. Dilimler de dinamik dizilerle aynı şey oldukları için bence orada bir sorun yok.

Ali
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ı
Yanıtlanan mesaj ID 2839
canalpay on 2010-09-09, 12:43:
Bana ilk başlarda tek tırnak karakter olarak algılanması ve çift tırnağın karakter dizisi olarak algılanması garip gelmişti.

Herhalde Python yüzünden değil mi? Ben de bugün Python'da karakter diye bir tür olmadığını öğrendim (veya yeniden öğrendim :)). Karakter, uzunluğu 1 olan dizgiymiş.

Ali
canalpay (Moderatör) #20
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Herhalde Python yüzünden değil mi? Ben de bugün Python'da karakter diye bir tür olmadığını öğrendim (veya yeniden öğrendim :)). Karakter, uzunluğu 1 olan dizgiymiş.

Büyük ihtimalle hiç bir dinamik programlama dilinde yoktur bu ayrım. Benim baktığım tüm dillerde 'merhaba dünya' ile "merhaba dünya" arasında fark yoktu.
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-22, 05:05:59 (UTC -08:00)