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

Diziler C#

Jan 23, 2018

Download

Software

Batu54
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Diziler C#

Diziler1

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

Page 2: Diziler C#

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

Page 3: Diziler C#

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

Page 4: Diziler C#

İ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

Page 5: Diziler C#

ÖrnekFor Döngüsü;5

Page 6: Diziler C#

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

Page 7: Diziler C#

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

Page 8: Diziler C#

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

Page 9: Diziler C#

Ö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

Page 10: Diziler C#

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

Page 11: Diziler C#

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

Page 12: Diziler C#

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

Page 13: Diziler C#

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

Page 14: Diziler C#

foreach

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

for döngüsüne benzemektedir.

14

Page 15: Diziler C#

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

15

Page 16: Diziler C#

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];

Page 17: Diziler C#

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

Page 18: Diziler C#

Ç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

Page 19: Diziler C#

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

Page 20: Diziler C#

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

Page 21: Diziler C#

Standart Çok Boyutlu Diziler

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

21

Page 22: Diziler C#

Dizi İşlemleriDizide arama, sıralama

22

Page 23: Diziler C#

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

Page 24: Diziler C#

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

Page 25: Diziler C#

Array.IndexOf(), Array.LastIndexOf()

Sonuç : 1

Sonuç : 4

25

Page 26: Diziler C#

Array.Sort()26

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

Sonuç : AliMehmetPınarZeynep

Page 27: Diziler C#

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

Page 28: Diziler C#

Sorun

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

Ya dizi dinamik olarak genişliyorsa?

28

Page 29: Diziler C#

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

Page 30: Diziler C#

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

Page 31: Diziler C#

ArrayList

Yeni bir ArrayList oluşturmak:

ArrayList list = new ArrayList();

Örnek

31

Page 32: Diziler C#

ArrayList

Add

Capacity

Clear

Count

IndexOf

Insert

RemoveAt Reverse Sort TrimToSize

Önemli fonksiyonlar ve özellikler

32

Page 33: Diziler C#

Kod33

Ali,Zekiye,Cemil,Kemal isimlerini ekleyiniz.

Page 34: Diziler C#

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

Page 35: Diziler C#

35