diziler c#

35
Diziler 1 BATUHAN ŞENGÜL 1383 10-B-BİLİŞİM

Upload: batu54

Post on 23-Jan-2018

328 views

Category:

Software


3 download

TRANSCRIPT

Diziler1

BATUHANŞENGÜL138310-B-BİLİŞİM

Diziler

Aynı tipten bir grup verinin aynı değişken isminde bulunmasıdır.

Örneğin;int[] gun = new int[ 7 ];

gun isminde yedi elemanlı bir boyutlu dizi tanımlar.

C# dilinde dilinde bütün diziler System.Array tipindedir. Yani System.Array sınıfının bütün fonksiyonlarını kullanabilirler.

2

Dizinin Kullanımı

Dizi tanımlanınca, dizideki elemanlara dizinin ismi ve köşeli parantez içinde eleman numarasıyla erişilir. Örn. dizi_adi[index]

C# dilinde, dizideki ilk eleman 0'ıncı (sıfırıncı) sıradaki elemandır. Örneğin, gun dizisinin en az 0 ve en fazla 6'ıncı elemanlarına erişilebilir.

Köşeli parantez içindeki sayılara indeks numarası adı verilir.

3

İndeks Numarası

gun[0] gun[1] gun[2] gun[3] gun[4] gun[5] gun[6]

2 6 6 4 12 54 -10

İnt[] gun = new int[7];İnt[] gun = new int[7];

gun[5] = 1;gun[5] = 1;if( gun[5] == 4 ) break;if( gun[5] == 4 ) break;gun[5] = gun[6] - 1;gun[5] = gun[6] - 1;

gun[5] = 1;gun[5] = 1;if( gun[5] == 4 ) break;if( gun[5] == 4 ) break;gun[5] = gun[6] - 1;gun[5] = gun[6] - 1;

Örnekler:Örnekler:

4

ÖrnekFor Döngüsü;5

Dizilere İlk Değer Atama

Değişkenler tanımlanırken, ilk değerlerinin verildiğinden bahsetmiştik. Benzer şekilde, dizilere de tanımlandıkları anda değer atanabilir.

static void Main(string[] args)static void Main(string[] args){{

int[] gun = int[] gun = { 0,2,4,6,8,10,11 }{ 0,2,4,6,8,10,11 };;....................

}}

static void Main(string[] args)static void Main(string[] args){{

int[] gun = int[] gun = { 0,2,4,6,8,10,11 }{ 0,2,4,6,8,10,11 };;....................

}}

6

Dizilere İlk Değer Atama

static void Main(string[] args)static void Main(string[] args){{

int[] gun = int[] gun = { 0,2,4,6,8,10,11 }{ 0,2,4,6,8,10,11 };;

}}

Derleyici, buradaki sayıları sayar ve [][] içindekideğerin 7 olması gerektiğini bulur ve programı

int[] gun = new int[7]int[] gun = new int[7]olarak derler.

Derleyici, buradaki sayıları sayar ve [][] içindekideğerin 7 olması gerektiğini bulur ve programı

int[] gun = new int[7]int[] gun = new int[7]olarak derler.

7

Dizilere İlk Değer Atama

Eğer, tanımladığımız dizinin elemanlarına başlangıç değeri yüklemiyorsak, o zaman dizinin elemanları tiplerine göre başlangıç değerleri alırlar.

Örneğin sayısal ifadeler sıfır değerini alırken, string ve diğer sınıf tipleri “null” eğeri alırlar.

8

Örnek

10 tane double tipinde değer alabilen bir dizi tanımlayın ve içine 1.0 ile 10.0 arasında değerler koyun. Ve 9. ve 0. elemanların değerlerini birbiriyle değiştirin.static void Main(string[] args)static void Main(string[] args){{

double[] dizi = {1.0, 2.0, 3.0, 4.0,double[] dizi = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0,5.0, 6.0, 7.0, 8.0, 9.0, 10.0};9.0, 10.0};

double gecici;double gecici;gecici = dizi[9];gecici = dizi[9];dizi[9] = dizi[0];dizi[9] = dizi[0];dizi[0] = gecici;dizi[0] = gecici;

}}

9

Alıştırma

1-)Sistem tarafından üretilen rastgele 15 adet sayı bir dizi içerisine aktarılacak daha sonra bu dizideki elemanların en büyük ve en küçüğü bulunacak daha sonra dizi elemanları büyükten küçüğe ve küçükten büyüğe doğru sıralanacak

2-) 20 elemanlı içine rasgele sayılar atılan dizi içindeki en büyük sayıyı ve en küçük sayıyı bulup ekranda yazdıran programa ait console uygulaması örneği:

10

Alıştırma 1 - Çözüm

Sistem tarafından üretilen rastgele 15 adet sayı bir dizi içerisine aktarılacak daha sonra bu dizideki elemanların en büyük ve en küçüğü bulunacak daha sonra dizi elemanları büyükten küçüğe ve küçükten büyüğe doğru sıralanacak

11

12 Alıştırma 2- Çözüm

Array.Length()

Dizinin uzunluğunu bulmak için kullanılır.

Doğrudan dizini adından sonra nokta “.” işaretinden sonra çağrılır.

int[] myArray = new int[5];int len = myArray.Length();Console.WriteLine(len);

Output : 5

13

foreach

Dizi içerisindeki her bir eleman için tek tek ilerleyen döngüdür.

for döngüsüne benzemektedir.

14

FOREACH; Tanımlanan sayılar dizisi içerisindeki sayıları toplayan c# konsol uygulaması

15

16 DİNAMİK DİZİLERBoyutu sabit olmayan, değişebilen dizi. Dinamik diziye elemanlar eklenebilir, diziden elemanlar silinebilir; dizinin boyutu azaltılabilir ve arttırılabilir. Bazı programlama dillerinde vektör adıyla anılan bu yapıyı birçok modern programlama dili kendi kütüphaneleriyle sunmaktadır.

Şimdi gelelim Dinamik Dizi tanımına, aşağıdaki kodlara bir göz atacak olursanız, kullanıcının girdiği bir değere göre dizi boyutunun belirlendiğini göreceksiniz.

int boyut; Console.Write("Dizi boyutunu giriniz:"); boyut = int.Parse(Console.ReadLine()); double[] notlar= new double[boyut];

17 Şimdi bir örnek yapalım, bir sınıftaki tüm öğrencilerin notlarını alıp, ortalamasını bulmak isteyelim.

Çok Boyutlu Diziler

Birden fazla boyutu olan dizilere çok boyutlu diziler denir.

Örneğin iki boyutlu bir dizi satranç tahtasını modellemekte kullanılabilir.

İki tip çok boyutlu dizi vardır. Standart diziler Çentikli diziler

18

Standart Çok Boyutlu Diziler

Çok boyutlu dizilerin oluşturulması tek boyutlu dizilere benzer ve onlar kadar kolaydır. Fark köşeli parantezler arasında virgül bulunmasıdır.

int [,] sayılar; string [,,] satırlar;

Örneğin ikiye üç boyutunda ve string tipinde bir dizi oluşturmak için string[,] dizi = new string[2,3];

yazmak yeterlidir.

19

Standart Çok Boyutlu Diziler

1 2 3

9 20 5

2 4 0

6 7 0

4 2 11

dizi

Standart dizilerde her bir boyut için satır ve sütun sayıları eşit olur. Bu sebeple standart diziler matrislere benzetilebilir.

20

Standart Çok Boyutlu Diziler

İki boyutlu bir dizi oluşturup bir döngü içersinde dizinin elemanlarına değerler atayalım.

21

Dizi İşlemleriDizide arama, sıralama

22

Dizi İşlemleri

Dizi işlemleri, programlarda çok sık kullanılan programlama öğelerindendir.

IndexOf()

LastIndexOf()

Sort()

Reverse()

Array sınıfı yardımıyla kullanılırlar.

23

IndexOf() - LastIndexOf()

IndexOf() : Aramayı baştan başlatarak aranan elemanın kaçıncı sırada olduğunu döndürür.

LastIndexOf() : Aramayı sondan başlatarak aranan elemanın kaçıncı sırada olduğunu döndürür.

Eğer aranan eleman bulunamazsa -1 döndürür.

24

Array.IndexOf(), Array.LastIndexOf()

Sonuç : 1

Sonuç : 4

25

Array.Sort()26

Dizinin elemanlarını küçükten büyüğe sıralar.

Sonuç : AliMehmetPınarZeynep

Array.Reverse()

Dizinin eleman sırasını terse çevirir.

Sonuç : 4532 9 5 3 2 1

Not : Array.Sort ve Array.Reverse birlikte kullanılmak zorunda değildir.

27

Sorun

İhtiyacımız olan dizinin boyutunu daha önceden bilmiyorsak ne yapacağız?

Ya dizi dinamik olarak genişliyorsa?

28

Derlemler (Collections)

Dizinin boyutu daha önceden bilinmiyorsa kullanılır.

Veya dizi dinamik olarak büyüyüp küçülüyorsa kullanılır.

Tek boyutludur.

29

ArrayList

Temel derlem tiplerinden birisidir.

System.Collections alan adı altında bulunur.

Başlangıç boyutu 16 dır ve her büyümede 2 katına çıkar.

Verileri object tipinde tutar.

30

ArrayList

Yeni bir ArrayList oluşturmak:

ArrayList list = new ArrayList();

Örnek

31

ArrayList

Add

Capacity

Clear

Count

IndexOf

Insert

RemoveAt Reverse Sort TrimToSize

Önemli fonksiyonlar ve özellikler

32

Kod33

Ali,Zekiye,Cemil,Kemal isimlerini ekleyiniz.

0 ile 50 arasındaki sayılardan 5′e tam

olarak bölünenleri diziye aktaran program.int [] bes = new int[10];

int i,j=0;

for (i = 5; i <= 50; i += 5)

{

bes[j] = i;

j++;

}

34

35