ÜNİTE
11
DİZİLER
İÇ İNDEK İLER
• Dizi Nedir?
• Dizi Tanımlama
• Dizi Kopyalama
• Diziye Eleman Ekleme ve Silme
• Çok Boyutlu Diziler
HEDEFLER
• Bu üniteyi çalıştıktan sonra;
• Dizi yapısını anlayabilecek,
• Dizi tanımlayabilecek,
• Dizi değişkenler üzerinde ekleme ve silme yapabilecek,
• Tek boyutlu ve çok boyutlu diziler arasındaki farkları ortaya koyabilecek,
• Programlamada dizilerin ne için kullanıldığını kavrayabilecek,
• Dizi değişkenlerini kopyalayıp kullanabileceksiniz.
NESNE TABANLI PROGRAMLAMA ‐ I Arş. Gör. Mehmet Cem
BÖLEN
GİRİŞ
Programlamada en sık ihtiyaç duyulan veri yapılarından biri de dizilerdir.
Özellikle aynı türden çok sayıda verinin tek bir isim altında tutulup, bu dizi içerisindeki tüm elemanlara aynı isimle ulaşmak istendiğinde dizilerin kullanımı tercih edilmektedir. Örneğin sevdiğiniz kitaplardan ya da gittiğiniz şehirlerden oluşan koleksiyonunuzu tutmak için dizileri kullanabilirsiniz.
Dizilerin sağlamış olduğu en önemli avantajlar arasında verileri kolaylıkla manipüle edilecek şekilde organize etmesi ve kolaylıkla sıralanabilecek şekilde düzenlemesi gösterilmektedir. Bunun yanında dizi kullanımının kodun okunabilirliğini artırması ve bazı kompleks problemlerin çözümünü kolaylaştırması da sağlamış olduğu diğer avantajlardır.
Bu bölümde C# programlama dilinde diziler ile ilgili temel işlemlerden dizi tanımlama dizileri birleştirme, dizilere değişken ekleme ve eleman silme, diziden kesit alma, dizileri sıralama, çok boyutlu diziler ve dizi nesneleri incelenecektir.
DİZİ TANIMLAMA
Bir dizi belirli sayıda ve aynı türden verilerden oluşan, tek bir isim ile ulaşılabilen ögeler serisidir. Birçok programlama dilinde mevcut olan dizi veri yapısı, C# dilinde System.Array isim uzayında (namespace) yer almaktadır. Başlıca kullanım amacı, bir değişken içerisinde aynı türden birden fazla değişkeni gruplamak ve saklamaktır.
Dizi tanımlanırken öncelikle dizinin eleman sayısı ve dizi değişkeninin veri tipi belirtilmelidir. Bildirim ve tanımlamanın aynı satırda yapıldığı dizi deklarasyonu için şu yapı kullanılabilir:
Yukarıdaki yapıda yer alan tip, dizinin temel tipini göstermektedir. Temel tip, diziyi oluşturan her bir elemanın tipini belirlemektedir. Tipi belirledikten sonra new anahtar sözcüğü kullanılarak dizi değişkenine bellekte yer ayrılır ve tipin yanında bulunan köşeli parantezlerin içerisine büyüklük parametresi yazılır. Böylece dizinin tutacağı eleman sayısı belirlenir ve dizi değişkenine dinamik olarak bellek alanı ayrılır.
Aşağıdaki kod örneğinde 5 elemanlı int tipinde ve ornekdizi adında bir dizi değişken tanımlanmıştır.
Bir dizinin tüm elemanları aynı tiptetir.
tip[] dizi adı = new tip[büyüklük]
Bu örnekte ornekdizi isimli int tipinde bir dizi bildirimi yapılmış ve hafızada int tipinde 5 elemanı tutabilecek bir alan tanımlanmıştır.
Dizi deklarasyonu, bildirim ve tanımlama işlemleri ayrı ayrı belirtilerek de yapılabilir. Bildirim ve tanımlama ayrı satırda yapılmak istenirse şu yol tercih edilmelidir:
Yukarıdaki örnekte ilk satırda ornekdizi isimli bir değişken bildirimi yapılmış ancak bu değişken herhangi bir fiziksel nesneyle ilişkilendirilmemiştir. İkinci satırda new anahtar sözcüğü kullanılıp bellek alanı tahsis edildikten sonra bir diziye bağlanmıştır. Bildirimin ve tanımlamanın aynı satırda yapılıp yapılmaması sadece bir yazım tarzı tercihi olup, gerçekleştirilecek iş açısından bir farklılık yaratmamaktadır.
Her iki örnekte de görüldüğü üzere bir dizinin kaç elemana sahip olacağı bilgisi [ ] operatörü kullanılarak belirtilir. Köşeli parantez içerisine yazılan sayısal değer, dizinin kaç elemana sahip olacağını belirtmektedir. Buna göre verilen örnekte ornekdizi isimli 5 elemanlı integer türünde bir dizi tanımlanmıştır.
Dizi tanımlama ile ilgili olarak veri tipi, dizi adı ve eleman sayısı bileşenleri belirtilmelidir. Şekil 1’de örnek bir dizi tanımında hangi bileşenin nerede yer alacağı gösterilmektedir.
Şekil 11.1. Dizi Tanımlama Bileşenleri
Verilen örneklerde new anahtar sözcüğünün kullanılması bir zorunluluk değildir. Burada new anahtar sözcüğünün kullanılması, temel veri türleri için varsayılan bir ilk değer atanmasını sağlamaktadır (int için 0 veya bool türü için false gibi).Bu yüzden diziler new anahtar sözcüğü kullanmadan aşağıdaki gibi de tanımlanabilir.
Dizinin kaç eleman içereceği dizi tanımlanırken ya da daha sonra belirtilebilir.
İndeks numarası 0’dan
başlar.
Veri Tipi
Dizi Adı
Eleman Sayısı
Bu örnekte dizi elemanları soldan sağa doğru indeks sırasına göre atanmıştır.
Bu tanımlama ile C#, diziye otomatik olarak bellek alanı ayırmış ve new operatörünün kullanılmasına gerek kalmamıştır. Dolayısıyla eğer bir dizi tanımlandığı anda elemanları atanacaksa bu yöntemi tercih etmek daha mantıklıdır.
Çünkü tek satırda ve daha az kodla diziye değer atamak mümkündür.
Özetle diziler programlamada sıkça karşılaşılabilen, çok sayıda değişkeni kolaylıkla yönetmeye imkân veren yapılardır.
DİZİYE DEĞER ATAMA
Bir dizi değişkeni oluşturulduktan sonra yapılacak iş bu dizi değişkenine değer atamaktır. Bir dizi değişkenine değer atamak için yapılacak temel işlem, dizi elemanının indeks değerinin köşeli bir parantez içerisinde yazılması ve istenen değerin atanmasıdır.
Yukarıdaki örnekte string anahtar kelimesi kullanılarak 3 elemanlı bir dizi değişkeni tanımlanmıştır. Sonrasında [] operatörü kullanılarak dizi elemanlarına ulaşılmış ve elemanlarına değer atanmıştır. Burada önemli olan nokta dizi elemanlarına ulaşılırken 0 indeks numarasından başlanarak değer atamasının yapılmasıdır. Bu örnekte dizinin 1. elemanına 0 indeks numarasıyla ulaşılıp Cem değeri atanmıştır. Ardından sırasıyla 1 ve 2 indeks numaraları kullanılarak dizinin 2.
elemanına Yılmaz ve 3. elemanına da Öğrenci değerinin atandığı görülmektedir.
Dizilere değer atama tanımlama sırasında da yapılabilir. Aşağıdaki örnekte görüldüğü üzere aday isimli dizi değişkeni tanımlanmış ve değerler küme parantezi içerisinde verilerek diziye atanmıştır.
Dizilere değer atanırken dikkat edilmesi gereken en önemli nokta, dizilerin sadece kendi tipinden elemanları kabul etmesidir. Örneğin tipi int olarak tanımlanmış bir diziye string tipinde bir değer atanamaz ya da bool tipindeki bir diziye decimal değer verilemez. Dikkat edilmesi gereken bir diğer nokta da dizi elemanlarına ulaşmak için kullanılan indeks değerinin mutlaka bir tam sayı olması gerektiğidir. Aksi takdirde yazılan kod hata verir.
Dizi elemanlarına ulaşmak için kullanılan indeks değeri mutlaka bir tam sayı olmalıdır.
DİZİ KOPYALAMAK
Bazı durumlarda iki dizinin birleştirilmesi gerekebilir. Böyle bir durumda çeşitli döngülerden oluşan algoritmalar kullanılarak programcı tarafından bu işlem yapılabilir. Ancak günümüzde yazılım geliştirme ortamlarının sunmuş olduğu kolaylıklar neticesinde geliştiricilerin dizi birleştirme, sıralama veya kesit alma gibi karışık gözüken işlemleri programlama dilinin yapısında mevcut olan hazır metot ve fonksiyonları kullanarak gerçekleştirmeleri mümkün hâle gelmiştir.
C# programlama dilinin sunmuş olduğu Copy(), CopyTo() ve Clone() metodları sayesinde iki dizi birleştirilebilir veya içerikleri birbirine kopyalanabilmektedir.
CopyTo() metodu ile verilen bir başlangıç dizininden başlayarak bir dizinin içeriği diğer bir diziye kopyalanabilir. Aşağıdaki kod örneğinde CopyTo() metodu kullanılarak kaynakdizi isimli dizinin tüm elemanları hedefdizi isimli başka bir diziye 1. indeksten itibaren kopyalanmaktadır.
Yukarıdaki örnekte görüldüğü üzere CopyTo() metodu ilk parametre olarak kopyalama yapılacak hedef diziyi, ikinci parametre olarak da kopyalama işleminin hedef dizide kaçıncı indeksten başlayacağının bilgisini almaktadır. Buna göre kaynakdizi isimli dizi değişkeni hedefdizi isimli 3 elemanlı int tipindeki dizi değişkenine 0. indeksten başlayarak kopyalanmıştır.
Bir diziyi başka bir diziye kopyalama amacı ile kullanılan diğer bir yöntem de Copy() metodur. Array sınıfı altında yer alan bu metot kaynak dizi adı, hedef dizi adı ve kopyalanacak eleman sayısı parametrelerini kabul eder ve istenen elemanların bir diziden diğerine kopyalanmasını sağlar. Copy() metodunun örnek kullanımı şu şekildedir:
Örnekte görüldüğü üzere kaynakdizi isimli dizi değişkenin 5 elemanı bulunmaktadır. Bu 5 eleman hedefdizi isimli değişkene kopyalanmak istemektedir.
Bunun için Array sınıfı altında yer alan Copy() metodu kullanılmış ve parantez içerisinde nereden (kaynakdizi), nereye (hedefdizi) ve kaç elemanın kopyalanacağı bilgisini içeren parametreler verilmiştir. Yukarıdaki kod çalıştırıldığında hedefdizi isimli dizi değişkeni 5, 7, 9, 11 ve 13 elemanlarına sahip olacaktır. Bir başka ifadeyle kaynakdizi değişkeninin içeriği hedefdiziye aktarılacaktır.
C#’ta dizi kopyalamak
için Copy, CopyTo ve Clone metodları
kullanılabilir.
Dizi elemanlarını kopyalamanın diğer bir yolu da Clone() metodunu kullanmaktadır. System.Array sınıfı altında yer alan Clone() metodu tümüyle bir dizi yaratmak ve bir hareketle kopyalamak için kullanılabilir. Clone metodu object tipinde bir çıktı döndürdüğü için, tip dönüşümü yapmak gerekmektedir. Aşağıda Clone() metodunun kullanıldığı bir örnek görülmektedir.
Özetle bazı durumlarda bir diziyi kopyalamak ya da başka bir diziyle birleştirmek gerekebilir. Bunun için kendi kodumuzu yazmak yerine, C# tarafından sağlanan yöntemler kullanılarak dizi değerlerini kopyalayabiliriz.
DİZİYE ELEMAN EKLEME
Diziler tanımlanırken değer atanabileceğini “dizi tanımlama” konusunda görmüştük. Fakat bazı durumlarda dizi tanımlandıktan sonra bir döngü içerisinde ya da belirli bir şart sağlandıktan sonra diziye eleman eklemeye ihtiyaç duyulabilir.
Bunun için C#’ta Array sınıfının sunmuş olduğu SetValue metodu kullanabilir. Bunun için yapılması gereken tek şey dizi değişkeninin adını yazdıktan sonra SetValue metodunu çağırmak ve eklenecek elemanın değerini ve indeks değerini yazmaktır.
Aşağıdaki örnekte bu metodun kullanımı gösterilmektedir.
SetValue() metodu ilk parametre olarak eklenecek elemanın değerini, ikinci parametre olarak da dizi içerisinde ekleneceği sıra (indeks) numarasını almaktadır.
Dizilere eleman eklemenin bir başka yolu da dizi elemanının indeks numarasını belirterek = operatörü ile değer atamasının yapılmasıdır. Aşağıdaki örnekte SetValue metodu kullanılmadan bir diziye nasıl eleman ekleneceği görülmektedir:
SetValue() metodu Array sınıfı altındadır ve
dizi elemanına değer atamaya yarar.
Özetle dizi değişkenlere eleman ekleme için farklı yöntemler bulunsa da, bu yöntemler arasında ciddi performans ve kullanım mantığı farklılıkları bulunmamakta ve bu iki yöntem de programcılar tarafından tercih edilmektedir.
DİZİDEN ELEMAN SİLMEK
Diziye eleman eklemek gibi diziden eleman silmek de programlama da sıkça karşılaşılabilen bir durumdur. Diziden eleman silmek için C# Array sınıfının sunmuş olduğu Clear() metodu kullanılabilir. 3 parametre kabul eden Clear metodu kullanmak için ilk parametresine elemanları sıfırlanacak dizi değişkenini, ikinci parametresine içerik silme işleminin başlayacağı elemanı ve 3. Parametresinde de içeriği silinecek eleman sayısı verilmelidir. Clear() metodu kullanılırken şu genel yapı kullanılır:
Bu genel yapı kullanılarak aşağıdaki örnekte Clear() metodu kullanılmıştır:
Clear metodunda ilk parametre olarak dersler dizisinin kullanıldığı görülmektedir. Bunun sebebi dersler isimli dizide işlem yapılacak olmasıdır. Clear() metodundaki ikinci parametre olan 0, silme işleminin dersler isimli dizide ilk elemandan başlayacağını, üçüncü parametre olan 1 ise 1 elemanın silineceğini belirtmektedir. Buna göre yukarıdaki kod çalıştırıldığında dersler dizisinin ilk elemanının değeri olan Nesne Yönelimli Programlama silinecektir. Eğer üçüncü parametreyi 1 yerine 3 yapsaydık, dizinin tüm elemanlarının değerleri silinecekti.
Clear() metodu ile dizi
elemanına null değil varsayılan değeri atanır.
Varsayılan değer numerik değerler için 0,
string değerler için “”, bool değerler için false
olarak belirlenmiştir.
Array.Clear(Dizi Adı, Başlangıç Index, Toplam Silinecek Eleman)
Konunun pekişmesi açısından bir örnek daha yapalım. Aşağıda verilen örnekte rakamlar isimli dizinin 1. elemanından başlayarak 3 elemanının silinmesi istenmiştir.
Örnekteki kodlar çalıştırıldığında rakamlar isimli bir dizi oluşacak ve bu dizinin elemanlarına sırasıyla 10, 20, 30, 40 ve 50 değerleri atanacaktır. Ancak Clear metodu çalıştıktan sonra ilk üç eleman olan 10, 20 ve 30 değerlerine sahip elemanlar silinip, değerleri varsayılan değer olan 0 olacaktır. Dizinin 4 ve 5. elemanlarının değerleri değişmeyip 40 ve 50 olarak kalacaktır.
Özetle Clear() metodu, kendisine parametre olarak verilen dizinin, belirtilen indeks aralığındaki tüm değerlerini temizler. Temizleme işleminde atanan değer, dizi elemanlarının tiplerine göre değişir. Örneğin int tipinde tanımlı bir dizinin elemanları temizlenirse 0, string tipindeki bir dizinin elemanları temizlenirse “”(boşluk) değerini alır.
DİZİLERİ SIRALAMA
Bazı durumlarda dizi içeriğini sıralı olarak kullanmak çok önemli olabilir. Dizi içeriğini sıralamak için programcı kendi yazmış olduğu fonksiyonlar veya genişletme (extension) metotları kullanabileceği gibi Array sınıfının sunmuş olduğu Sort() metodundan da yararlanabilir. Sort metodu tanımlanırken aşağıdaki genel yapı kullanılır.
Sort() metodu sıralama yapılacak diziyi parametre olarak alır ve dizi elemanlarını alfabetik veya küçükten büyüğe sıralar. Aşağıdaki örnekte Sort() metodunun kullanımı görülmektedir:
Reverse() metodu dizinin tamamını ters
çevirir.
Array.Sort(Dizi Adı)
Örnekte tanımlanan string tipindeki 5 elemanlı dizi, Sort() metodu kullanılarak sıralanmıştır. Sonrasında sıralanan dizinin elemanları bir döngüye sokularak elemanlar yanyana bir değişkene atılmış ve MessageBox ile kullanıcıya gösterilmiştir. Yukarıdaki kod çalıştırıldığında dizi elemanlarının görünümü Resim 1’ deki gibi olacaktır.
Resim 11.1. MessageBox Görünümü
Eğer örnekteki dizi string yerine int tipinde olsaydı yani sayılardan oluşsaydı bu sefer sıralama küçükten büyüğe doğru olacaktı. Çünkü Sort metodu kendisine verilen dizi değişkeninin elemanlarını küçükten büyüğe doğru sıralamaktadır. Eğer dizindeki sıralama tersine çevirmek istenirse yine Array sınıfının sunmuş olduğu Reverse() metodu kullanılabilir. Reverse() metodu da kullanım olarak Sort() metodu ile aynı mantıkta çalışmakta ve parametre olarak işlem yapılacak dizi adını almaktır.
Ancak Reverse metodu alfabetik ya da büyüklük değerine göre sıralama yapmaz.
Yapılan iş sadece dizini terse çevirmektir. Bir diğer ifadeyle Reverse metoduyla dizinin tüm elemanlarının veya belirli indeks aralığından elemanlarının sırası terse çevrilir.
ÇOK BOYUTLU DİZİLER
Şu ana kadar verilen örnekler tek boyutlu dizilerden oluşmaktaydı. Bu bölümde programlamada sıkça karşılaşılan yapılardan biri olan çok boyutlu diziler konusuna değinilecektir.
İki veya daha fazla boyutu olan bir dizi, “çok boyutlu” olarak adlandırılmaktadır. Çok boyutlu diziler arasında kullanımı en çok tercih edilen 2 boyutlu olanlardır ve tek boyutlu dizilere benzer bir şekilde tanımlanırlar ancak her bir elemanı bir dizi şeklindedir. Çok boyutlu bir dizinin her elemanına iki veya daha fazla indeks kullanılarak erişilir. Çok boyutlu diziler matris ve düzensiz diziler olmak üzere iki gruba ayrılır.
MATRİS DİZİLER
Matris dizilerde veriler matris formatında saklanır ve her satırında eşit sayıda eleman bulunur. Bellekte tek boyutlu dizilerde olduğu gibi ardışıl olarak sıralanırlar.
Örnek 2 boyutlu bir Matris dizisi Şekil 11.2’te gösterilen şablona göre tanımlanır.
Şekil 11.2. Matris Dizi Tanımlanması
Yukarıda verilen şablona göre 3x2 boyutlu string tipinde bir matris dizisi aşağıdaki gibi tanımlanır.
Örnekte 2 boyutlu 3 elemanlı bir dizi tanımlanmıştır. Bu şekilde tanımlanan bir dizi değişkeni 3 satır, 3 sütuna sahip bir tablo gibi düşünebilir. Tablo 1.1’de örnekte verilen dizinin yapısı ve elemanları görsel olarak canlandırılmaktır.
Tablo 11.1. Matris Dizi Görünümü dizi [0] [0] dizi [0] [1]
dizi [1] [0] dizi [1] [1]
dizi [2] [0] dizi [2] [1]
Tablo incelendiğinde [ ][ ] parantezlerinin ilkinin içindeki indeks numarası, hangi satıra erişileceğini belirtir. İkinci parantezin içerisindeki indeks numarası ise, hangi sutuna erişileceğini belirtir. Buna göre örnekteki dizinin elemanlarının indeks numaralarına göre dağılımı tablo 11.2’de gösterilmiştir:
Değişken Tipi [,] dizi adı= {{a,b}, {c,d}}
Tablo 11.2. Matris Dizi Elemanları İlgili Eleman Dizi Numarası
Erzurum dizi[0,0]
İstanbul dizi[0,1]
Ankara dizi[1,0]
İzmir dizi[1,1]
Adana dizi[2,0]
Bursa dizi[2,0]
Tablo 11.2. incelendiğinde tek boyutlu dizilerde olduğu gibi çok boyutlu dizilerde de ilgili boyutun birinci elemanına 0 indeks numarasıyla erişildiği görülmektedir. Örneğin dizi[0][0] komutu ile dizinin birinci satır ve birinci sütununda yer alan Erzurum isimli elemana, dizi[1][1] komutu ile İzmir isimli elemana erişilir.
Kısaca matris dizileri bir tablo olarak düşünürsek, indekslerden biri satırı, diğeri ise sütunu gösterir.
DÜZENSİZ DİZİLER
Bir dizinin her bir elemanı ayrı bir dizi ise veya her bir satırı farklı uzunlukta ise bu dizilere “düzensiz diziler” denmektedir. İç içe diziler şeklinde de tanımlanan düzensiz dizilerin her bir satırı farklı boyutta olabileceği için matris dizi formu gibi sabit sayılı sutundan oluşan bir yapıya sahip değildir.
Düzensiz diziler, boyutların her biri bir çift köşeli parantez kullanılarak tanımlanır. Örnek iki boyutlu düzensiz bir dizi tanımlamak için aşağıdaki genel yapı kullanılır.
Düzensiz bir dizi tanımlanırken belirtilen büyüklük parametresi, dizinin içereceği toplam satır sayısını gösterir. Bellekte satırlar için tek tek yer ayrılır ve böylece dizinin her bir satırının farklı uzunlukta olması sağlanır. Aşağıda verilen örnekte düzensiz bir dizinin nasıl tanımlandığı ve her bir satırına nasıl büyüklük atandığı görülmektedir.
Örneğin ilk satırında ornekdizi isimli, tek boyutlu 3 satırdan oluşan bir dizi tanımlanmıştır. Bu tanımlanan dizinin her elemanı ise sonraki 3 satırda ayrı birer dizi
değişken Tipi [ ][ ] dizi adı= new değişken tipi[büyüklük][ ];
olarak tanımlanmıştır. Şekil 11.3’da örnekte tanımlanan dizi görsel olarak ifade edilmiştir.
Şekil 11.3. Düzensiz Dizi Elemanları
Düzensiz dizi tanımlandıktan sonra her bir satırında kaç eleman olacağı her satırında yeni bir dizi tanımlanarak belirlenir. Dizi elemanlarına ise köşeli parantez içerisine indeks numarası yazılarak erişilir. Örneğin ornekdizi isimli dizinin 1,0 konumundaki elemanına 25 değeri atanmak isteniyorsa aşağıdaki kod cümlesi yazılmalıdır.
Özetle düzensiz bir dizi elemanına erişmek veya değer atamak için ilk köşeli paranteze, elemanın bulunduğu satır sayısının indeks numarası, ikinci köşeli paranteze ise erişilmek istenen elemanın indeks numarası yazılmaktadır. Bu noktada indeks numarasının 0’dan başladığı unutulmamalıdır.
ornekdizi[0][0] ornekdizi[0][1] ornekdizi[0][2] ornekdizi[0][3]
ornekdizi[1][0] ornekdizi[1][1] ornekdizi[1][2]
ornekdizi[2][0] ornekdizi[2][1] ornekdizi[2][2] ornekdizi[2][3] ornekdizi[2][4]
Öz et
•Bir dizi belirli sayıda ve aynı türden verilerden oluşan, tek bir isim ile ulaşılabilen ögeler serisidir. Birçok programlama dilinde mevcut olan dizi veri yapısı, C# dilinde System.Array isim uzayında (namespace) yer almaktadır. Başlıca kullanım amacı, bir değişken içerisinde aynı türden birden fazla değişkeni gruplamak ve saklamaktır.
•Dizilere değer atanırken dikkat edilmesi gereken en önemli nokta, dizilerin sadece kendi türünden elemanları kabul etmesidir. Örneğin tipi int olarak tanımlanmış bir diziye string tipinde bir değer atanamaz ya da bool tipindeki bir diziye decimal değer verilemez.
•C#'ın sunmuş olduğu Copy, CopyTo ve Clone metodları sayesinde iki dizi birleştirilebilir veya içerikleri birbirine kopyalanabilmektedir. CopyTo metodu ile verilen bir başlangıç dizininden başlayarak bir dizinin içeriği diğer bir diziye kopyalanabilir.
•Diziye eleman eklemek için SetValue metodu kullanılabilir.
•Diziden eleman silmek için C# Array sınıfının sunmuş olduğu Clear metodu kullanılabilir.
•Dizi içeriğini sıralamak için programcı kendi yazmış olduğu fonksiyonlar veya genişletme (extension) metotları kullanabileceği gibi Array sınıfının sunmuş olduğu Sort metodundan da yararlanılabilir.
•İki veya daha fazla boyutu olan bir dizi, “çok boyutlu” olarak adlandırılmaktadır.
•Çok boyutlu diziler matris ve düzensiz diziler olmak üzere iki gruba ayrılırlar.
•Matris dizilerde veriler matris formatında saklanır ve her satırında eşit sayıda eleman bulunur
•Bir dizinin her bir elemanı ayrı bir dizi ise veya her bir satırı farklı uzunlukta ise bu dizilere “düzensiz diziler” denmektedir
DEĞERLENDİRME SORULARI
1. C# dilinde diziler hangi sınıftan türetilir?
a) System.Array b) System.Data c) System.IO d) System.Text e) System.Drawing
2. Aşağıdakilerden hangisi dizi tanımlanırken kullanılabilen bir deyimdir?
a) break b) new c) create d) type e) throw
3. Dizilerle ilgili aşağıdakilerden hangisi yanlıştır?
a) Matris dizi çok boyutlu bir dizidir.
b) C#’ta Copy, CopyTo ve Clone metodları ile dizi kopyalama yapılabilir.
c) String tipinde bir dizi elemanı silinirse varsayılan değeri “”(boşluk) olur.
d) Dizi ve içerdiği elemanlar farklı türlerde olabilir.
e) Dizilerin elemanlarına tek bir isim ve indeks numarası ile ulaşılabilir.
4. C#’ta dizi elemanını erişmek için kullanılan indeks numarası aşağıdaki operatörlerden hangisinin içine yazılır?
a) / b) = c) {}
d) []
e) ()
5. Aşağıdaki metodlardan hangisi C#’ta dizi sıralamak için kullanılır?
a) Insert() b) Sort()
Değerlendirme sorularını sistemde ilgili ünite başlığı altında yer alan
“bölüm sonu testi”
bölümünde etkileşimli olarak cevaplayabilirsiniz.
6. ………. veriler matris formatında saklanır ve her satırında eşit sayıda eleman bulunur.
Cümledeki boş bırakılan yere aşağıdakilerden hangisi getirilmelidir?
a) Matris dizilerde b) Düzensiz dizilerde c) Tek boyutlu dizilerde d) Üç boyutlu dizilerde e) İki boyutlu dizilerde
7. Bir dizinin her bir elemanı ayrı bir dizi ise veya her bir satırı farklı uzunlukta ise bu dizilere ……… denir.
Cümledeki boş bırakılan yere aşağıdakilerden hangisi getirilmelidir?
a) matris diziler b) tek boyutlu diziler c) çok boyutlu diziler d) sıralı diziler e) düzensiz diziler
8. C#’ta tek boyutlu 4 elemanlı ornekdizi isimli dizinin ilk elemanına 1 değerini atamak için aşağıdaki kodlardan hangisi kullanılabilir?
a) ornekdizi(4)(0)=1;
b) ornekdizi(1) =1;
c) ornekdizi[0] =1;
d) ornekdizi[1] =1;
e) ornekdizi[1][0] =1;
9. C#ta bir dizinin elemanına değer atamak için aşağıdaki metotlardan hangisi kullanılır?
a) GetValue() b) Copy() c) CopyTo() d) Clear() e) SetValue()
10. C#’ta bir dizinin sıralamasını tersine çevirmek için aşağıdaki metodlardan hangisi kullanılır?
a) Sort() b) Reverse() c) Clear() d) SetValue() e) Clone()
YARARLANILAN KAYNAKLAR VE BAŞVURULABİLECEK DİĞER KAYNAKLAR
ALBAHARI, Joseph & ALBAHARI, Ben, (2012), C# 5.0 in a Nutshell Fifth Edition, O’Reilly Media, California.
ALGAN, Sefer, (2009), Her Yönüyle C#, Pusula Yayıncılık, İstanbul.
AKTAŞ, Volkan, (2013), Her Yönüyle C# 5.0, KODLAB, İstanbul.
CLARK, Dan, (2013), Beginning C# Object‐Oriented Programming 2nd Edition, Apress, New York.
GRIFFITHS, Ian, (2013), Programming C# 5.0, O’Reilly Media, California.
KIZILÖREN, Tevfik, (2013), Her Yönüyle C, KODLAB, İstanbul.
SCHILDT, Herbert, (2005), The Complete Reference C#, çev. Duygu Arbatlı Yağcı, Alfa Basım Yayım Dağıtım, İstanbul.
SHARP, John, (2009), Microsoft Visual Studio 2008 Step By Step, çev. Ümit Tezcan, Arkadaş Yayınevi, Ankara.
SKEET, Jon, (2014), C# in Depth 3rd Edition, Manning Publication Co, New York.
YANIK, Memik, (2009), Visual C# 3.0 For .Net Framework 3.5 2.Baskı, Seçkin Yayıncılık, İstanbul.