dizi - gaziantep Üniversitesiozcan/ders/nesne1/dn_nes1_6_dizi3.pdf · bölüm 6 dizi (array) dizi...

21
Dizi 6.ÜNİTE: 2016 Hazırlayan: Mehmet Emin ÖZCAN Nesne Tabanlı Programlama 1. GMYO Tel Hazırlayan: Gaziantep Üniversitesi TMYO Bilgisayar Bölümü www.gantep.edu.tr/~ozcan [email protected] İçindekiler Dizi (Array) ___________________________________________________________________ 1 Array Sınıf Dizi Fonksiyonları ____________________________________________________ 5 Çok Boyutlu Dizi ______________________________________________________________ 13 Linq Dizi Metotları ____________________________________________________________ 15 Özellik ve Metodlar: ___________________________________ Hata! Yer işareti tanımlanmamış. Linq Kullanımı: ________________________________________________________________ 15 Şartlı Kullanımı: ______________________________________ Hata! Yer işareti tanımlanmamış.

Upload: others

Post on 29-May-2020

24 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Dizi - Gaziantep Üniversitesiozcan/ders/nesne1/dn_nes1_6_dizi3.pdf · Bölüm 6 Dizi (Array) Dizi (Array) 6.1) Sıralı değiükenleri kontrol eden değiükene dizi denir. Basit

Dizi 6.ÜNİTE: 2016

Hazırlayan: Mehmet Emin ÖZCAN

Nesne Tabanlı Programlama 1.

GMYO Tel Hazırlayan:

Gaziantep Üniversitesi TMYO Bilgisayar Bölümü

www.gantep.edu.tr/~ozcan

[email protected]

İçindekiler

Dizi (Array) ___________________________________________________________________ 1

Array Sınıf Dizi Fonksiyonları ____________________________________________________ 5

Çok Boyutlu Dizi ______________________________________________________________ 13

Linq Dizi Metotları ____________________________________________________________ 15

Özellik ve Metodlar: ___________________________________ Hata! Yer işareti tanımlanmamış.

Linq Kullanımı: ________________________________________________________________ 15

Şartlı Kullanımı: ______________________________________ Hata! Yer işareti tanımlanmamış.

Page 2: Dizi - Gaziantep Üniversitesiozcan/ders/nesne1/dn_nes1_6_dizi3.pdf · Bölüm 6 Dizi (Array) Dizi (Array) 6.1) Sıralı değiükenleri kontrol eden değiükene dizi denir. Basit

Bölüm 6 Dizi (Array)

Dizi (Array)

6.1) Sıralı değişkenleri kontrol eden değişkene dizi denir. Basit diziler Array

sınıfındandır. ~oz

int a0=0, a1=0, a2=0, …, a499=0;

Yukarıda; bir ismi olan ilk, değerleri sıfır (0), 500 adet sırasız değişken

oluşturulmuştur. new int[500];

Yukarıda; bir ismi olmayan, ilk değerleri sıfır (0), 500 adet sıralı değişken

oluşturulmuştur. Bu değişkenlerin bir ismi olmadığı için müdahale

edemeyiz.

int[] x;

Yukarıda; ismi x olan, henüz bir değer atanmamış, int türünde bir dizi

oluşturulmuştur.

int[] x;

x=new int[500];

Yukarıda; x isimli diziye 500 adet sıralı değişken atanır. Bu değişkenleri

isimleri yok dolaysıyla biz kontrol edemeyiz ama x dizisi bu değişkenleri

kontrol edebilir.

6.2) Dizi oluşturmak için: diziTürü[] diziAdı; kullanılır. Diziler stack hafızasını

kullanırlar.Her veri türü dizi (array) yapılabilir.

int[] dizi;

TextBox[] metin; sınıf[] x,y,z;

6.3) Tür(int, textBox,…)/Adı ile ilgili kurallar için dizi ile değişken aynıdır diyebiliriz.

6.4) Her veri türü dizi (array) yapılabilir.

6.5) Sıralı değişken oluşturmak için: new diziTürü[elemanSayısı]; kullanılır. Sıralı

değişkenler heap hafızasını kullanır. Stack hafızası küçük, hızlı, düzenli ve temel

veri türünü (int, double,…) kabul eder. Heap hafızası büyük, yavaş ve düzensizdir.

Çöplük gibidir, her şeyi kabul eder. Heap’de temizliği Çöp Toplayıcısı (Garbage

Collection) yapar.

int x; // Bu kodların hafıza şeması resim 6.1 gösterilmektedir.

int y=8;

new int[1];

new int[5];

6.6) Heap isimli hafızada oluşturulan sıralı değişkenlerin adresini, diziye atamak için:

dizi=new diziTürü[elemanSayısı]; kullanılır.

int[] dizi;

dizi = new int[9]; // 9 elemanlı dizi oluştur.(= 9 int oluştur, diziye ata)

Resim 6.1

Page 3: Dizi - Gaziantep Üniversitesiozcan/ders/nesne1/dn_nes1_6_dizi3.pdf · Bölüm 6 Dizi (Array) Dizi (Array) 6.1) Sıralı değiükenleri kontrol eden değiükene dizi denir. Basit

Bölüm 6 Dizi (Array)

6.7) Diziye birden fazla sıralı değişken atanabilir. En son atananı dışındakiler silinir.

Değişkende olduğu gibi en son atananı hafızasında tutar.

int[] dizi;

dizi = new int[2];

dizi = new int[5];

dizi = new int[3]; // dizi’nin eleman sayısı 3 oldu öncekilerle ilişki kesildi

6.8) Veri taşıyan değişkene veri türü; adresi taşıyan değişkene referans türü değişken

denir (o adrese referans olduğu için). Diziler referans türü değişkenlerdir.

int x;

int y=3;

int[] a;

int[] b=new int[4];

int[] c=new int[3]; c[0]=3; c[1]=7; c[2]=1; Hafıza şeması yanda olan kodlardan int y=3; deki y değişkeni 3 verisini taşıdığı için

veri türü değişkendir.

int[] c=new int[3]; deki c dizisi de bir değişkendir ama veri taşımaz. Veri yerine

3,7,1 sıralı dizisindeki ilk elemanın adresini taşır (o adrese referans olur). 7 ve 1 in

bulunduğu adres de, 3 ün bulunduğu adresle aynı sırada bulunduğundan c dizisi bir

adresten diğerine geçmek suretiyle onlar üzerinde de kontrol sağlar.

6.9) Diziye atanan sıralı verilere dizinin elemanı denir. İlk dizi elemanı sıra numarası

(index i) sıfır (0) dır. Dizi elemanına ulaşmak için: dizi[indexNo] kullanılır.

int[] x=new int[3]; // int türünde, x isimli, üç elemanlı dizi oluştur.

x[0]=3; // x in sıra nosu 0 olan elemanına 3 değerini ata.

x[1]=5; // x in index nosu 1 olan elemanına 5 değerini ata.

x[2]=7; // x[2] ye 5 değerini ata.

int y=x[2]; // y değişkenine x[2] yi ata.

6.10) Dizinin eleman sayısını öğrenmek için: dizi.Length; kullanılır. int[] dizi[]=new int[5]; Console.Write(dizi.Length); // 5 int x=dizi.Length; // dizi.Length=x; HATA .Length readOnly (sadece okunur) dır.

6.11) Diziye ilk değer atamak için: tür[] dizi=new tür[elemanSayısı]{veri1,veri2,…};

veya tür[] dizi=new tür[]{veri1,veri2,…}; veya tür[] dizi={veri1,veri2,…};

kullanılır. Değişken elemanlarına değer atamazsak kurucu bizim yerimize

elemanlara varsayılan değerini atayacaktır (kurucu nesne ile aynı isme sahip

metottur. Aşağıdaki örnekte int[3] bir kurucudur).

int[] x=new int[3]{1,2,3};

int[] y=new int[]{4,5,6};

int[] z={7,8,9};

int[] t=new int[3];

Resim 6.2

Resim 6.3

Resim 6.4

Resim 6.5

Page 4: Dizi - Gaziantep Üniversitesiozcan/ders/nesne1/dn_nes1_6_dizi3.pdf · Bölüm 6 Dizi (Array) Dizi (Array) 6.1) Sıralı değiükenleri kontrol eden değiükene dizi denir. Basit

Bölüm 6 Dizi (Array)

6.12) Diziye toplu değer atamak için: dizi=new tür[elemanSayısı]{veri1,veri2,…};

veya tür[] dizi=new tür[]{veri1,veri2,…}; kullanılır.

int[] x,y,z; x=new int[3]{1,2,3};

y=new int[]{4,5,6};

// z={7,8,9}; HATA, bu tür atama sadece ilk veride olur.

// x={7,8,9}; HATA, bu tür atama sadece ilk veride olur.

6.13) Dizi olmaksızın da dizi elemanları kullanılabilir. Eleman new ile oluşturulduğu an

kullanılır. Daha sonra adresi bilinmediği için bu dizi elemanlarına erişilemez. Console.Write( new int[3]{4,7,8}[1] ); // 7 Console.Write( new int[]{4,7,8}.Length); // 3 Console.Write( new int[3]{4,7,8}.Min() ); // 4 Console.Write( new int[3].Max() ); // 0 foreach(int i in new int[]{4,7,8}) Console.Write(i); // 478 int t = new int[]{4,7,8}.Sum();Console.Write(t); // 19

Yukarıdakileri, dizi kullanarak yapacak olsak, aşağıdaki gibi olurdu. int d[]=new int[3]{4,7,8};Console.Write( d[1] ); // 7

int d[]=new int[]{4,7,8}; Console.Write( d.Length); // 3 int d[]=new int[3]{4,7,8};Console.Write( d.Min() ); // 4 int d[]=new int[3]; Console.Write( d.Max() ); // 0 int d[]={4,7,8}; foreach(int i in d)Console.Write(i); // 478 int d[]={4,7,8}; int t=d.Sum(); Console.Write(t); // 19

6.14) Dizi elemanlarını yazmak için aşağıdakilerden biri kullanılabilir. int[] dizi={4,5,8,1,6,8}; Console.Write(""+dizi[0]+dizi[1]+dizi[2]+dizi[3]+dizi[4]+dizi[5]); for (int i=0; i<dizi.Length; i++) Console.Write(dizi[i]); // 458168 foreach (var item in dizi) Console.Write(item); // 458168 int i=0; while(i<dizi.Length) Console.Write(dizi[i++]); // 458168 int i=0; do Console.Write(dizi[i++]); while(i<dizi.Length); // 458168 int i=0;A1: Console.Write(dizi[i++]);if(i<dizi.Length) goto A1; Console.Write(string.Join("", dizi)); // 458168

6.15) Bir referans birden fazla diziye atanabilir. int[] a={1,2,3}; int[] b=a; int[] c=a; int[] d=a;

Console.Write(""+a[0]+ b[1]+ c[2]); // 123

6.16) Dizi referansı değiştirilebilir. int[] a={1,2,3}; int[] b={4,5,6}; int[] c; c=a; a=b; b=c; Console.Write(""+a[0]+ a[1]+ a[2]); // 345

Yukarıdaki programda c=a yazılı satırda, a nın içinde a[0] ın adresi yazılı.

c=a ile a[0] ın adresi c ye atanır. a=b ile de b[0] ın değeri a ya atanır. b=c

ile de c[0] ın yani daha önce a[0] olan adres b ye atanır. Böylece; öncede

a nın elemanları 1,2,3; b nin elemanları 3,4,5 iken şimdi yerleri değişmiş.

a nın elemanları 3,4,5; b nin elemanları 1,2,3 olmuş.

Resim 6.6

c=a;

a=b;

b=c;

Resim 6.7

Page 5: Dizi - Gaziantep Üniversitesiozcan/ders/nesne1/dn_nes1_6_dizi3.pdf · Bölüm 6 Dizi (Array) Dizi (Array) 6.1) Sıralı değiükenleri kontrol eden değiükene dizi denir. Basit

Bölüm 6 Dizi (Array)

6.17) Metot un parametresi dizi olabilir. Norma parametre değeri, çağırandan

fonksiyona gider. void metod(int[] parametre){ } şeklinde kullanılır. static void diziYaz(int[] x) { Console.Write(string.Join("", x)); } static void Main() { int[] dizi={4,5,8,1,6,8}; diziYaz(dizi); }

6.18) OUT ön eki ile parametre değeri, çağırandan fonksiyona gitmez, fakat gelir. static void yaz(int[] x) { Console.Write(string.Join("", x)); } static void oku(out int[] x) { x = new int[] { 3, 5, 7 }; } static void Main() { int[] dizi; oku(out dizi); yaz(dizi); } // 357

6.19) REF ön eki ile parametre değeri, çağırandan fonksiyona gider-gelir. static void yaz(int[] x) { Console.Write(string.Join("", x)); } static void degiş(ref int[] x) { x[0] = 9; x[1] = 2; } static void Main() { int[] dizi={3,5,7}; degiş(ref dizi); yaz(dizi);}//927

6.20) PARAMS ön eki ile parametre çağıranda değişken, Metotta dizi olur. static void yaz(params int[] x) { Console.Write(string.Join(" ", x)); } static void Main() { yaz(3, 5, 7); } // 3 5 7

6.21) Metot un kendisi dizi olabilir. Return ile dizi geri dönderir. static int[] Metod() { int[] dizi={3,5,7}; retur dizi; }

6.22) Nesnenin kendisi dizi olabilir. Örn: Button[] dizi=new Button[5]; using System; class Kedi{ public int Yaşı {get; set; } public string Adı { get; set; }} class Program{ static void Main(){ Kedi[] vankedisi = { new Kedi { Yaşı=2, Adı="Minnoş" }, new Kedi { Adı="Mırnav", Yaşı=2} }; foreach (var item in vankedisi)

Console.Write(" "+item.Adı+"["+item.Yaşı+"]"); } }

6.23) var değişken türü ile üstü kapalı (implicit) dizi oluşturulabilir. var sayıDizisi= new[] { 3,5,8 }; //türü: int[]

var yazıDizisi= new[] {"ali", null,"veli"}; //türü: string[]

var çentikliDizi = new[]{ new[]{2,4}, new[]{5,7}};

var sabitDizi = new[]

{

new { adı = "Ali", ders = new[]{"Din", "Resim" }},

new { adı = "Ayşe",ders = new[]{"Matematik" }}

};

6.24) var değişken türü ile nesne türü dizi oluşturulabilir. var f = new { x="ali" , y = 5 };

Console.Write(f.x ); // ali

Console.Write(f.y ); // 5

Page 6: Dizi - Gaziantep Üniversitesiozcan/ders/nesne1/dn_nes1_6_dizi3.pdf · Bölüm 6 Dizi (Array) Dizi (Array) 6.1) Sıralı değiükenleri kontrol eden değiükene dizi denir. Basit

Bölüm 6 String Sınıfı Özellik ve Metotlar:

String Sınıfı Özellik ve Metotlar: 6.25) String’ler de birer dizidir. Resim 6.8 de görüleceği kod yazılımı farklıda olsa

hafıza üzerinde String ler birer dizidir. string metin={"358"}; int[] sayi={3,5,8}; char[] harf = {'3','5','8'};

6.26) String, yazıları hafızada tutan türdür. String değişken; şeklinde kullanılır.

string metin; // Not: string metin=new string(); HATA verir.

string x=”ali ders çalış”; string y; y=”Ayşe top oyna”;

6.27) String değişken new kullanılmaz. // string metin=new string(); HATA verir.

6.28) Strin veri çift tırnak ( " " ), char veri tektırnak ( ‘ ’ ) içine yazılır. C# da

String metin=”A”; Console.Write(metin); // A

Char harf=’A’; Console.Write(harf); // A

6.29) String dizi olabilir. Örnek: String[] metin=new String[3]; String[] dizi={"selam"+"ali"}; Console.Write(""+dizi[0][0]+ dizi[1][0]+dizi[1][1]); // sal

6.30) escape <ESC> kaçış karakterleri metin içine kullanılabilir. (bak. Tablo 6.1)

Örnek: Her satıra bir kelime gelecek şekilde

“C# çok kolay” yazan kod.

Console.WriteLine(“C#\nçok\nkolay”);

6.31) 8sağlar. Yani <ESC> karakterlerini etkiletmez. Şeklini olduğu gibi muhafaza

eder.

Console.Write(@”ali \t veli \t selami”); // ali\tveli\tselami

Console.Write(“ayşe \t fatma \t zehra”); // ayşe Fatma zehra Console.Write( @"Kazanan sayılar 1 3 5 7 2 4 6 8 dir");

6.32) Artı (+) metinleri birleştirir. İlk veri string ise diğerleri de strign’e çevrilir. string metin = "selam"+"ali"; Console.Write(metin ); // selamali string yazı = "sayı"+(2+3)+"dır"; Console.Write(yazı ); // sayı5dir string x = "selam", y = "kelam"; string toplam = x + y; Console.Write(toplam); //selamkelam

6.33) Lenth, Dizinin eleman sayısını veya yazının karakter sayısını verir.

string[] Ad={“Ali”,“Veli”,“Selami”};

Console.Write(Ad.Length]+” ”); // Ekran 3 4 6

6.34) [ ] operatörü, dizi elemanının yüklendiği değere ulaşmak için kullanılır.

Örnek: Ali,Veli,Selami veri’li Ad dizisini farklı şekillerde oluşturun string[] Ad = new string[4]; ad[0]= “Ali”; ad[1]= “Veli”; ad[2]= “Selami”;

string[] ad = { “Ali”,“Veli”,“Selami”}; //ad dizisinde Ali Veli Selami bulunur.

Resim 6.8

Resim 6.9

Tablo 6.1

ESC Karakterlerii

\’ Tek tırnak

\u desimal

\v dikey Tab

\0 Boş, Null

\a Uyarı sesi

\b Backspace

\n Yeni satır

\x hexadesimal

\” Çift tırnak

\r Geri tuşu

\t yatay Tab

\\ Ters bölü

\f İleri tuşu

C#

Çok

Kolay

Kazanan sayılar 1 3 5 7 2 4 6 8 dir

Page 7: Dizi - Gaziantep Üniversitesiozcan/ders/nesne1/dn_nes1_6_dizi3.pdf · Bölüm 6 Dizi (Array) Dizi (Array) 6.1) Sıralı değiükenleri kontrol eden değiükene dizi denir. Basit

Bölüm 6 String Sınıfı Özellik ve Metotlar:

Örnek: değerleri İng, Trk, Mat olan dizinin üçüncü elemanın Blg olarak değiştirir string[] D = { “İng”,”Trk”,”Mat”}; D[2]=”Blg”;

foreach(string s in D) Console.Write(s); // İng Trk Blg

for(int i = 0; i < D.Length; i++) Console.Write(D[i]); // İng Trk Blg

6.35) [ ] operatörü metin içindeki karakteri okumaya yarar. ReadOnly sadece okunur dur.

string yazı = “Merhaba”; char k= yazı[0]; Console.Write(k);

string yazı = “Merhaba”; Console.Write(yazı[0]);

Console.Write(“Merhaba”[0]); // M

for(int i=0; i<7;i++) Console.Write(yazı[i]+”-”); // M-e-r-h-a-b-a-

for(int i=0;i<3;i++)Console.Write(yazı[i]); // Mer

Örnek: metnin oku, harfleri aralarına boşluk koy, ekrana yaz.

string m = Console.ReadLine(); // emin

foreach(char c in m){Console.Write(c);Console.Write(“ ”);} // e m i n

Örnek: “Veli” nin harflerini ve kaçıncı sırada olduğunu yazın.

string metin = “Selam”

for (int i = 0; i < metin.Length; i++)

Console.WriteLine("metin[" + count + "] = " + metin[i]);

Örnek:Klavyeden okuna metni tersinden yazan kodu yazın string Oku =Console.ReadLine(); for(int i=Oku.Length-1; i >= 0; i--) Console.Write(Oku[i]);

Örnek: “Veli” nin 3. harflerini “a” olarak değiştirin string y=“Veli”; // y[2]=”a”; HATA, read only dir, değiştirilemez.

y= y[0]+y[1]+”a”+y[3]; Console.Write(y); // Veai

6.36) (char) öneki, rakamın ASCII karşılığını verir. (int) in tersini yapar.

Örnek: “A” harfinin tamsayı karşılığını ekrana yazan kodları yazın.

int i=(int) “A”; Console.Write(i); // 65

char c=”A”; int i=(int) c; Console.Write(i); // 65

Console.Write(( (int) ”A” )); // 65

Örnek: 65 rakamının char tipindeki karşılığını ekrana yazan kodları yazın.

char c=(char) 65; Console.Write(c); // A

int i=65; char c=(char) i; Console.Write(c); // A

Console.Write(( (char) 65 )); // A

Örnek: Klavyeden oku, okunan değerin her harfini ekrana satır satır yaz. String Oku= Console.ReadLine(); foreach(char c in Oku); Console.WriteLine(c);

Örnek: A dan Z ye kadar olan harfleri, aralarında bir boşluk bırakarak yaz.

for(int i = (int)’A’; i<=(int)’Z’ ; i++) Console.Write((char)i);

Örnek: z dan a ye kadar olan harfleri, birer satır atlayarak ekrana yaz.

for(int i = (int)’z’; i>=(int)’a’ ; i--) Console.WriteLine((char)i);

Örnek: 4 basamaklı bir şifrenin alabileceği tüm alfebetik ihtimalleri yaz.

for(int i = (int)’a’; i<=(int)’z’ ; i++)

for(int j = (int)’a’; j<=(int)’z’ ; j++)

for(int k = (int)’a’; k<=(int)’z’ ; k++)

for(int m = (int)’a’; m<=(int)’z’ ; m++) Console.WriteLine((char)i)

Örnek: klavyeden girilen bir sayıyı yazı olarak ekrana yazan kodu yazın.

string[] s={"sıfır","bir","iki","üç","dört","beş","altı","yedi","sekiz","dokuz"};

string rakam=Console.ReadLine();

foreach(char c in rakam)

Console.Write(s[Convert.ToInt32(c)]+” ");

metin[0]=S

metin[0]=e

metin[0]=l

metin[0]=a

metin[0]=m

1974

Page 8: Dizi - Gaziantep Üniversitesiozcan/ders/nesne1/dn_nes1_6_dizi3.pdf · Bölüm 6 Dizi (Array) Dizi (Array) 6.1) Sıralı değiükenleri kontrol eden değiükene dizi denir. Basit

Bölüm 6 String Sınıfı Özellik ve Metotlar:

6.37) String.Compare() karşılaştırma yapar. büyükse 1, küçükse -1, eşitse 0 verir.

Örnek: Console.Write( String.Compare(“Mehmet”,” Ahmet”); // 1

Örnek: Console.Write( String.Compare(“Ahmet”,”Mehmet”); // -1

Örnek: Console.Write( String.Compare(“Ahmet”,” Ahmet”); // 0

Örnek: okunan veri iptal, çık, son veya kapat ise döngüyü sonlandıran program.

string[] k={“iptal”,“son”,“çık”,“kapat”};

for(;;){

string Oku=Console.ReadLine();

foreach(string s in k) if (String.Compare(Oku, s) == 0) goto son;

}

:son ;

6.38) CompareTo(); …ile karşılaştırır, büyükse 1, küçükse -1, eşitse 0 verir.

Örnek: string Şifre=”ali”; string girilen=”veli”;

Console.Write( Şifre.CompareTo(girilenŞifre)); // 1

6.39) Trim() metodu metnin başındaki(=TrimStart) ve sonundaki(=TrimEnd) tab,

yenisatır boşluk gibi veya istenen karakterleri temizler.

Örnek: “ ali “ kelimesindeki boşlukları temizleyin ve ekrana yazın.

String kelime=” ali! ”;

Console.Write(”-”+kelime+”-”); // - ali! -

Console.Write(”-”+kelime.TrimStart() +”-”); // -ali! -

Console.Write(”-”+kelime.TrimEnd() +”-”); // - ali!-

Console.Write(”-”+kelime.Trim() +”-”); // -ali!-

Console.Write("-"+kelime.Trim().Trim('!') +"-"); // -ali-

6.40) PedLeft() metnin soluna ve PedRight metodu metnin sağına boşluk ekler

Örnek: Ali yazılı ad değişkeninin uzunluğunu 10 karaktere çıkarın.

String ad=”Ali”; ad.PadLeft(10);Console.Write(ad); // Ekran Ali

Örnek: Ali,7; Veli,9; Selami,8; notlarını ekrana yazan program. String[] ad={"Ali","Veli","Selami"}; int[] n={7,9,3}; int i, m=0; foreach(string s in ad) if(s.Length> m) m= s.Length; for(i=0;i<3;i++) ad[i] = ad[i].PadRight(m); for(i=0;i<3;i++) Console.WriteLine( ad[i]+n[i]);

6.41) Convert.ToInt32 ve Int32.Parse metodu metni tamsayıya çevirir. ToDouble(),

ToFloat(), küsüratlı; ToBoolean() mantıksal çeviriler için kullanılır.

Örnek: klavyeden okuna metni tamsayıya çeviren kodu yazın.

string s = Console.ReadLine(); int n = Convert.ToInt32(s);

n = Int32.Parse(s);

6.42) Split() metni diziye çevirir.

Örnek: “Ali Veli Selami” metnini dizi dönüştürün ve diziyi ekrana yazın. string metin = "Ali Veli Selami"; // Ali string[] dizi= metin.Split(' '); // Veli foreach(string e in dizi) Console.WriteLine(e); // Selami

Örnek: “Ali,Veli,Selami” metnini nota ve virgül e göre dizi dönüştüren program. string metin = "Ali,Veli.Selami"; string[] dizi= metin.Split(',','.');

foreach(string e in dizi) Console.Write(e) // AliVeliSelami

Ali 7

Veli 9

Selami 3

Page 9: Dizi - Gaziantep Üniversitesiozcan/ders/nesne1/dn_nes1_6_dizi3.pdf · Bölüm 6 Dizi (Array) Dizi (Array) 6.1) Sıralı değiükenleri kontrol eden değiükene dizi denir. Basit

Bölüm 6 String Sınıfı Özellik ve Metotlar:

Örnek:”01.12.1970” tarihinin gün ve ay isimlerini yazı olarak ekrana yazan prg. string[] gün ={"Pzt","Sal","Çrş","Per","Cum","Cmt","Paz"}; string[] ay={"Ock","Şbt","Mrt","Nsn","Mys","Hzr","Tmz","Ağs", "Eyl","Ekm","Ksm","Arl"}; string tarih="02.12.1970"; string[] dizi=tarih.Split('.'); int intgün=Int32.Parse(dizi[0]); int intAy= Int32.Parse(dizi[1]); Console.Write(""+gün[intgün-1]+" "+ay[intAy-1]+" "+dizi[2] ); string metin = "bir üç beş yedi dokuz"; foreach (string s in metin.Split(' ')) switch (s) { // Ekran 13579 case "sıfır": Console.Write(0); break; case "bir": Console.Write(1); break; case "iki": Console.Write(2); break; case "üç": Console.Write(3); break; case "dört": Console.Write(4); break; case "beş": Console.Write(5); break; case "altı": Console.Write(6); break; case "yedi": Console.Write(7); break; case "sekiz": Console.Write(8); break; case "dokuz": Console.Write(9); break; }

6.43) ToLower metni küçük harfe çevirir. ToUpper metni büyük harfe çevirir. Örnek: “Çok Uğraş Sevgiyi, Sevgi Başarıyı Getirir.”i küçük harf e çevirerek yaz.

Console.Write( "Çok Uğraş Sevgiyi, Sevgi Başarıyı Getirir".ToLower());

// çok uğraş sevgiyi, sevgi başarıyı getirir

Örnek: “Hiç bilenle bilmeyen bir olurmu” yu büyük harfe çeviren prg. String s=“Hiç bilenle bilmeyen bir olurmu”;

Console.Write(s.ToUpper(s)); // Ekran HİÇ BİLENLE BİLMEYEN BİR OLURMU

6.44) Replace metnin içindeki yazıyı başka yazı ile değiştir.

Örnek: “Ayşe ip atla.” cümlesindeki boşlukları # işaretiyle değiştirir ve yazar. string cümle ="Ayşe ip atla."; Console.Write(cümle.Replace( ' ', '#')); // Ayşe#ip#atla.

Örnek: “Ali gel, Ali git, Ali otur“ daki Ali kelimelerini Veli olarak değiştirin. string c="Ali gel, Ali git, Ali otur"; c=c.Replace("Ali","Veli");

Console.WriteLine(c); // Veli gel, Veli git, Veli otur 6.45) Insert, metnin belirtilen hanesine başka bir metine ekler.

Örnek: "Merhaba nasılsın" daki 8 inci hanesinin bulunduğu yere “Ali” ekleyin.

string s="Merhaba nasılsın"; s=s.Insert(8, "Ali "); Console.Write (s);

// Ekran Merhaba Ali nasılsın

6.46) Format, verileri istenen format’da metne çevirir.

Örnek: ilk değerleri 3,5,7 olan a,b,c nin arasına eksi (-) koyarak ekrana yazın.

int a=3, b=5, c=7;

string metin=String.Format( "{0} - {1} - {2}", a, b, c);

Console.WriteLine(metin); // Ekran 3 – 5 – 7

Sal Arl 1970

Page 10: Dizi - Gaziantep Üniversitesiozcan/ders/nesne1/dn_nes1_6_dizi3.pdf · Bölüm 6 Dizi (Array) Dizi (Array) 6.1) Sıralı değiükenleri kontrol eden değiükene dizi denir. Basit

Bölüm 6 String Sınıfı Özellik ve Metotlar:

6.47) Copy, verininbir kopyasını verir.

Örnek: s1 deki "Merhaba nasılsın" cümlesini s2 değişkenine kopyala ve yaz.

string s1="Merhaba nasılsın"; string s2 = string.Copy(s1);

Console.WriteLine(s2); // Ekran Merhaba nasılsın

6.48) StartsWith, kelimenin metin sonunda olup olmadığını kontrol eder.

Örnek: "Ayşe ders çalış” cümlesi Ayşe ile başlayıp başlamadığını kontrol edin.

string cümle="Ayşe ders çalış";

Console.WriteLine(cümle.StartsWith(“Ayşe”)); // Ekran True

Örnek: "Ayşe ders çalış” cümlesi Ali ile başlayıp başlamadığını kontrol edin. string cümle="Ayşe ders çalış";

if(cümle.StartsWith(“Ali”)) Console.Write (“Doğru cümle Ali ile başlıyor”);

else Console.WriteLine(“Yanlış cümle Ali ile başlamıyor”);

// Ekran Yanlış cümle Ali ile başlamıyor

6.49) EndsWith, kelimenin metin başında olup olmadığını kontrol eder.

Örnek: "Koş Kaya Koş” cümlesinin, Koş ile başlayıp, Koş bittiğini kontrol et.

string cümle="Koş Kaya Koş ";

if(cümle.StartsWith(“Koş”) && cümle.StartsWith(“Koş”))

Console.WriteLine(“Doğrudur”); else Console.WriteLine(“Yanlıştır”);

// Doğrudur

6.50) Remove, belirtilen noktadan itibaren belirtilen sayıda karakteri siler.

Örnek: "Çanakkale düşmanca geçilmez” cümlesinin 11 inci haneden itibaren 8

karakteri silip kalanı ekrana yazan kodu yazın.

string =" Çanakkale düşmanca geçilmez.";

Console.WriteLine(cümle.Remove(11, 8)); // Ekran Çanakkale geçilmez.

Örnek: "Kınalı Hasana, Selam.” cümlesindeki Hasan kelimesini Remove

metoduyla silip kalanı ekrana yazan kodu yazın. Console.WriteLine(“Kınalı Hasana, Selam.".Remove(8, 6)); // Kınalı, Selam

6.51) Join, diziyi metne dönüştürür.

Örnek: Ali, Veli verisi olan Ad dizisini, aralarına boşluk koyarak metne dönüştür

string[] Ad={"Ali", "Veli"}; string metin string.Join(" ", Ad);

Console.WriteLine(cümle.Remove(11, 8)); // Ali,Veli

6.52) Convert.ToString, nesneleri metne dönüştürür.

Örnek: 3 sayısı ile 5 sayısını yan yana ekleyen ve ekrana yazan kodu yazın. int a=3, int b=5; string ek=Convert.ToStrin(a)+ Convert.ToStrin(b);

Console.WriteLine(ek) // Ekran 35

6.53) String, string nesnesi oluştururken ilk veri ataması yapar.

Örnek: ”Ali çalış” verisine sahip char dizisini string metne atayan prg.

char[] x = {'A', 'l ', 'i', ' ', 'ç', 'a', 'l', 'ı', 'ş'};

string s = new string(x); Console.WriteLine(s); // Ali çalış

Page 11: Dizi - Gaziantep Üniversitesiozcan/ders/nesne1/dn_nes1_6_dizi3.pdf · Bölüm 6 Dizi (Array) Dizi (Array) 6.1) Sıralı değiükenleri kontrol eden değiükene dizi denir. Basit

Bölüm 6 String Sınıfı Özellik ve Metotlar:

6.54) ToString, nesneleri metne dönüştürür.

Örnek: T isimli sınıfından oluşturulan nesneleri ekrana yazdırdığımızda

kaçıncı sırada oluşturulduklarını yazan programı yazın. using System; class deneme{ static void Main(){ T A = new T(); T B = new T(); T C = new T(); Console.Write("" + A + " " + B + " " + C); }} class T{ static int artış = 0; int sıra; public T() { sıra = artış ; artış++; } public override string ToString() { return sıra+".sıra"; }

}

6.55) Append, metnin sonuna kelime ekle.

Örnek: ”Merhaba Ali” metninin sonuna nasılsın kelimesi ekleyen kodu yazın.

String s= new String("Merhaba Ali"); s.Append("Nasılsın");

Console.Write (s); // Ekran Merhaba Ali Nasılsın

6.56) IndexOf, kelimenin ilk bulunduğu hanenin numarasını verir.

Örnek: metnindeki Ali kelimesinin ilk bulunduğu yeri ekrana yazan kodu yazın. string m="gel ali gel, gel de bak halimize";

Console.WriteLine( m.IndexOf("ali") ); // 4

Örnek: ”bir üç beş yedi dokuz” metnini rakam olarak yazan kodu yazın. string metin = "bir üç beş yedi dokuz"; string[] rakam = {"sıfır","bir","iki","üç","dört",

"beş","altı","yedi","sekiz","dokuz"}; foreach (var i in metin.Split(' ')) Console.Write(Array.IndexOf(rakam, i)); // 13579

6.57) LastIndexOf, kelimenin en son bulunduğu hanenin numarasını verir.

Örnek:”gel Ali gel, gel de bak” metnindeki Ali nin bulunduğu son yeri yaz. string m = "gel ali gel, gel de bak halimize"; Console.WriteLine(m.LastIndexOf("ali")); // 25

6.58) Substring, metin (başlangıç ve uzunluğu belli olmalı) bir bölümünü verir.

Örnek:”gel Ali gel, gel de bak” metnin 5inci hanesinden itibaren 7 harfi yazın.

String metin=”gel Ali gel, gel de bak”;

Console.Write(metin. Substring(4, 7)); // Ekran Ali gel

Örnek:”gel Ali gel, gel de bak” metnin 18 inci basamağın dan sonraki bölümünü

ekrana yazan kodu yazın.

String metin=”gel Ali gel, gel de bak halimize”.Substring(18) ;

Console.Write(metin); // Ekran bak halimize

6.59) Concat, birden fazla metni birbirine ekler.

Örnek: “Ali” “veli” “Selami” verilerini birleştirip metne dönüştüren kodu yaz.

string metin= String.Concat("Ali", "Veli","Selami"); Console.Write(metin);

// Ekran AliveliSelami

6.60) Equals, eşitmi olduğunu kontrol eder.

Örnek: “Ali” nin “Ali” ye eşit olup olmadığını ekrana yazan kodu yazın.

Console.Write(String.Equals("Ali", "Ali"));

Console.Write("Ali".Equals("Ali")); // True

0.sıra 1.sıra 2.sıra

Page 12: Dizi - Gaziantep Üniversitesiozcan/ders/nesne1/dn_nes1_6_dizi3.pdf · Bölüm 6 Dizi (Array) Dizi (Array) 6.1) Sıralı değiükenleri kontrol eden değiükene dizi denir. Basit

Bölüm 6 Array Sınıfı Fonksiyonları

Array Sınıfı Fonksiyonları 6.61) Array sınıfı ile dizi oluşturup kullanabilirsiniz. Konumuzun dışında olduğu için

üzerinde yorum yapmayacağız. Array dizi = Array.CreateInstance(typeof(System.Int32), 4); dizi.SetValue(5, 0); dizi.SetValue(6, 1); dizi.SetValue(7, 2); dizi.SetValue(8, 3); for(int i=dizi.GetLowerBound(0); i<=dizi.GetUpperBound(0); i++) Console.Write(dizi.GetValue(i)); // 5678

6.62) Array.Clear(dizi,başlangıç,ader); dizi elemanının bir kısmının değerini sıfırlar; int[] dizi={4,5,8,1,6,8}; Array.Clear(dizi,2,3); foreach (var i in dizi) Console.Write(i); //450008

6.63) Array.Copy(kaynak, hedef, adet); Array.Copy(kaynak, ilkYer, hedef, ilkYer,

adet); dizi elemanını değerini hedef elemanına kopyalar. int[] dizi = { 1, 2, 3, 4 }, kopya = { 5, 6, 7, 8 }; Array.Copy(dizi,kopya,2); Console.Write(string.Join("",kopya)); //1278 int[] dizi = { 1, 2, 3, 4 }, kopya = { 5, 6, 7, 8 }; Array.Copy(dizi,0, kopya,1,2); // dizi[0] den, kopya[1] e 2 adet kopyala Console.Write(string.Join("",kopya)); //1278

6.64) kaynak.CopyTo(hedef, sıraNo); kaynağı, hedefe sıraNo dan itibaren kopyalar.

int[] kaynak = { 1, 2, 3, 4 }, hedef = { 5, 6, 7, 8 , 9, 0}; kaynak.CopyTo(hedef, 1);Console.Write(string.Join("",hedef)); //512340

6.65) dizi.GetLength; Rank (çok boyutlu dizinin boyutu) daki eleman sayısını verir. int[] x={1,2,3,4}; Console.Write(string.Join("", x.GetLength(0))); //4

Not: dizi eleman sayısı int dan fazlaysa GetLongLength (64bit) kullanılır.

6.66) dizi.GetLowerBound(); dizi.GetUpperBound(); en küçük/büyüyk index no yu verir. int[] d={1,2,3,4}; Console.Write(“”+d.GetLowerBound()+d.GetUpperBound());//03

6.67) dizi.GetType(); dizinin tür ve boyutunu verir. int[,] x ={{1,2},{3,4}};Console.Write( x.GetType()); // System.Int32[,]

6.68) dizi.GetValue(sıraNo); dizi elemanının değerini verir. dizi[indexNo] ile aynıdır. int[] x ={3,5,7,1}; Console.Write( x.GetValue(2) ); // 7

6.69) =Array.IndexOf(dizi,değer); değeri dizide arar, ilkinin indexNo sunu (yoksa -1) verir. int[] dizi={4,5,8,1,7}; Console.Write( Array.IndexOf(dizi,8) ); //3

örnek: içinde 3 e eşit elemanın indexNo sunu veren program. int[] yeniDizi,dizi = { 2, 4, 3, 6, 3, 9, 3, 3 }; int yer = 0, önceki=0; string sıra=""; while ((yer=Array.IndexOf(dizi, 3)+1)>0) { yeniDizi = new int[dizi.Length - yer]; Array.Copy(dizi, yer, yeniDizi, 0, dizi.Length - yer); Console.WriteLine(string.Join("", dizi)+"\t"+yer); dizi = yeniDizi.Clone() as int[]; önceki+=yer; sıra +=" "+ önceki; } Console.WriteLine("3 ün sırası:" + sıra);

24363933 3

63933 2

933 2

3 1

3 ün sırası: 3 5 7 8

Page 13: Dizi - Gaziantep Üniversitesiozcan/ders/nesne1/dn_nes1_6_dizi3.pdf · Bölüm 6 Dizi (Array) Dizi (Array) 6.1) Sıralı değiükenleri kontrol eden değiükene dizi denir. Basit

Bölüm 6 Array Sınıfı Fonksiyonları

6.70) =Array.BinarySearch(dizi,değer); değeri dizide arar, ilk indexNo yu (yoksa -değer)

verir. Diğerlerine nazaran; veri azsa BinarySearch yavaş, veri çoksa hızlıdır. int[] dizi={4,5,8,1,7};Console.Write(Array.BinarySearch(dizi, 8)); // 2

6.71) Array.Reverse(dizi); diziyi tersine (sondan başa) çevirir. int[] dizi={4,5,8,1,7}; foreach(var i in dizi)Console.Write(i); //71854

6.72) dizi.SetValue(değer,indexNo); dizi değer atar. Dizi[indexNo]=değer ile aynıdır. int[] dizi={4,5,8,1,7}; dizi.SetValue(6,1); Console.Write(dizi[1]);// 6

6.73) Array.Sort(dizi); diziyi küçükten büyüğe sıralar. int[] dizi={4,5,8,1,7}; Array.Sort(dizi);

foreach(var i in dizi)Console.Write(i); //71854

6.74) =dizi.ToString(); dizinin türünü verir. int[] dizi={4,5,8};Console.Write(dizi.ToString()); // System.Int32[]

6.75) =(tür[]) clonDizi.Clone(dizi); benzerini(clon) oluşturduğu dizinin adresini verir. int[] dizi = { 4, 5, 8};

int[] clonDizi = (int[]) dizi.Clone(); int[] paralelDizi =(int[]) dizi; // dizi işe paralel dizi aynı şey clonDizi[0]=1; paralelDizi[1]=2; foreach(var i in dizi)Console.Write(i); //428 foreach(var i in clonDizi)Console.Write(i); //158 foreach(var i in paralelDizi)Console.Write(i); //428

6.76) =dizi.Rank(); düzenli çok boyutlu dizinin kaç boyutlu olduğunu verir. int[] x = new int[7]; int[,,] y = new int[9,6,5]; int[][] z = new int[5][]; Console.Write("" + x.Rank + " " + y.Rank + " " + z.Rank); // 1 3 1 6.77) Array.ConstrainedCopy(dizi,yer,hedefDizi,yer,adet); belli sayıda dizi elemanını

hedef dizideki yere kopyalar. Copyto ile aynıdır. int[] dizi = { 3, 5, 8 }; int[] hedefDizi = new int[5]; Array.ConstrainedCopy(dizi,1,hedefDizi,2,2); foreach (var i in hedefDizi) Console.Write(" "+i); //0 0 5 8

Page 14: Dizi - Gaziantep Üniversitesiozcan/ders/nesne1/dn_nes1_6_dizi3.pdf · Bölüm 6 Dizi (Array) Dizi (Array) 6.1) Sıralı değiükenleri kontrol eden değiükene dizi denir. Basit

Bölüm 6 Çok Boyutlu Dizi

Çok Boyutlu Dizi 6.78) Çok boyutlu dizi oluşturmak için:

tür[,,…] dizi=new tür [0BoyutElemanSayısı, 1BoyutElemanSayısı,…]; kullanılır. int[,] dizi2B = new int[4, 2]; for (int i = 0; i < 4; i++) { for (int j = 0; j < 2; j++) // 0 0 { // 0 0 Console.Write(" " + dizi2B[i, j]); // 0 0 } Console.WriteLine(); // 0 0 } int[, , ,] x = new int[2, 1, 3, 3]; foreach (var item in x)Console.Write(item); //000000000000000000

6.79) Çok boyutlu dizi elemanını dizi[0BoyutSayısı, 1BoyutSayısı,…] şeklinde kullanılır, int[,] x = new int[4, 2]; x[0, 0] = 1; x[0, 1] = 2; x[1, 0] = 3; x[1, 1] = 4; x[2, 0] = 5; x[2, 1] = 6; x[3, 0] = 7; x[3, 1] = 8; for (int i = 0; i < 4; i++) { for (int j = 0; j < 2; j++) // 1 2 Console.Write(" " + x[i, j]); // 3 4 Console.WriteLine(); // 5 6 } // 7 8

6.80) Çok boyutlu diziye ilk değer atamak için aşağıdakilerden biri kullanılır. // int[,] x = new int[4, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } }; // int[,] x = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } }; int[,] x = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } }; for (int i = 0; i < 4; i++) { for (int j = 0; j < 2; j++) // 1 2 Console.Write(" " + x[i, j]); // 3 4 Console.WriteLine(); // 5 6

} // 7 8

6.81) Dizi elemanına değer yerine dizi de atanabilir. Elemanı dizi olan diziye çentikli

dizi (jugged array) denir. tür[][]…dizi=new tür [sayı0][]…; ilk boyut, sonrada

tür[1][]…dizi=new tür [sayı0][]…; oluşturulur. Dizi elemana ulaşmak için

dizi[0][0][0]=sayı; şesayı=dizi[0][0][0]; şeklindedir. İlk veride ataması da düzgün

çok boyutlu diziye benzer,

int[][][][] x; x = new int[2][][][]; x[0] = new int[2][][]; x[1] = new int[2][][]; x[0][0] = new int[2][]; x[0][1] = new int[2][]; x[0][0][0] = new int[2]; x[0][0][0][0] = 5;

Page 15: Dizi - Gaziantep Üniversitesiozcan/ders/nesne1/dn_nes1_6_dizi3.pdf · Bölüm 6 Dizi (Array) Dizi (Array) 6.1) Sıralı değiükenleri kontrol eden değiükene dizi denir. Basit

Bölüm 6 Çok Boyutlu Dizi

// ------ Örnek1: çentikli dizi elamanına dizi atama int[] a =ne w int[2]{1,2}; int[] b =new int[2]{3,4}; int[] c =new int[2]{5,6}; int[] d =new int[2]{7,8};

int[][] x = new int[4][]; x[0] = new int[2]; x[0][0] = 1; x[0][1] = 2; x[1] = new int[2]; x[1][0] = 3; x[1][1] = 4; x[2] = new int[2]; x[2][0] = 5; x[2][1] = 6; x[3] = new int[2]; x[3][0] = 7; x[3][1] = 8; for (int i = 0; i < 4; i++) { for (int j = 0; j < 2; j++) // 1 2 Console.Write(" " + x[i][j]); // 3 4 Console.WriteLine(); // 5 6 } // 7 8

// ------ Örnek2: çentikli dizi elemanına veri atama

int[][] x; x = new int[4][];

x[0] = new int[2]; x[0][0] = 1; x[0][1] = 2; x[1] = new int[2]; x[1][0] = 3; x[1][1] = 4; x[2] = new int[2]; x[2][0] = 5; x[2][1] = 6; x[3] = new int[2]; x[3][0] = 7; x[3][1] = 8; for (int i = 0; i < 4; i++) { for (int j = 0; j < 2; j++) // 1 2 Console.Write(" " + x[i][j]); // 3 4 Console.WriteLine(); // 5 6 } // 7 8

// ------ Örnek3: çentikli dizi elemanlarına ilk veri atama int[][] x={new int[]{1,2},new int[]{3,4},new int[]{5,6},new int[] {7,8}}; for (int i = 0; i < 4; i++) { for (int j = 0; j < 2; j++) // 1 2 Console.Write(" " + x[i][j]); // 3 4 Console.WriteLine(); // 5 6 } // 7 8

// ------ Örnek3: düzensiz çentikli dizi int[][] x ={new int[]{1},new int[]{2,3,4,5},new int[]{6},new int[]{7,8}};

foreach (var item in x) { foreach (var i in item) // 1

Console.Write(" " + i); // 2 3 4 5 Console.WriteLine(); // 6 } // 7 8

6.82) // ------ Örnek3: düzenli dizi ile çentikli iç içe olabilir. int[][][][][][]x; int[][,,][,]y;

Page 16: Dizi - Gaziantep Üniversitesiozcan/ders/nesne1/dn_nes1_6_dizi3.pdf · Bölüm 6 Dizi (Array) Dizi (Array) 6.1) Sıralı değiükenleri kontrol eden değiükene dizi denir. Basit

Bölüm 6 Linq

Linq Linq (=Language Integrated Query) bütünleşik sorgu dili; .NET e SQL benzeri beceriler

kazandırır. System.Linq; namespace i içindedir. Dizi.Max(); dizi.Sum(); şeklinde kullanılır. Metod Parametresi şartlı ifadeler kabul edebilir. Dizi.Metod(isim=> şart ifade) veya Dizi.Metod((isim,anahtar) => şart ifade) şeklinde kullanılır. Buradaki => işaretine öyle ki diyebiliriz.

Örnek int[] dizi={3,8,8}; dizi.Where(x=> x==8).Sum(); komutundaki Where(x=> x==8) ifadesi; dizinin içinde öyle bir x olsun ki bunun değeri 8 olsun şartını ifade etmektedir. Sum() ise bu şartı sağlayanların Toplamı anlamına gelmektedir.

Linq Komutları All, Any, Average, Clone, Concat, Contains, Count, Distinct, Equel, Except,

First, GetLength, GroupBy, Intersect, Join, Last, Length, Min, Max, OrderBy,

Rank, Reverse, Select, Single, Skip, Sum,Take, ToString, Union, Where ,from-

select...

Linq Özelellik ve Metodları

6.83) =dizi.Sum(); dizi değerlerinin toplamını verir. int[] dizi={3,5,8}; int toplam=dizi.Sum();Console.Write(toplam); // 16

6.84) =dizi.Min(); en küçük dizi değerini verir. int[] dizi={3,5,8}; Console.Write( dizi.Min() ); // 3

6.85) =dizi.Max(); en büyük dizi değerini verir. int[] dizi={3,5,8}; Console.Write( dizi.Max() ); // 8

6.86) =dizi.Count(); dizi eleman sayısını verir int[] dizi={4,5,9}; Console.Write( dizi.Count() ); // 3

6.87) =….ToArray(); koleksiyonu diziye çevirir.

6.88) =dizi.Distinct(); dizideki mükerrer elemanları siler int[] dizi = { 4, 5, 4,4,9,5,4 };

int[] x=dizi.Distinct().ToArray(); foreach (var item in x) Console.Write(item); // 4 5 9

foreach (var item in dizi.Distinct()) Console.Write(item); // 4 5 9

6.89) =dizi.First(); ve =dizi.First(); dizinin ilk,son elemanın değerini verir. int[] x={3,5,6,-1}; Console.Write(""+x.First()+" "+x.Last()); // 3 -1

6.90) =dizi. Reverse (); dizi elemanının tersden verir. foreach (var i in new int[]{3,7,8}.Reverse()) Console.Write(" "+i); // 8 7 3

Page 17: Dizi - Gaziantep Üniversitesiozcan/ders/nesne1/dn_nes1_6_dizi3.pdf · Bölüm 6 Dizi (Array) Dizi (Array) 6.1) Sıralı değiükenleri kontrol eden değiükene dizi denir. Basit

Bölüm 6 Linq

6.91) kolleksiyon=dizi.Where(sartİfade); şarta uygun elemanları verir. int[] dizi ={3,2,-5,8,-1}; var negatifSayılar=dizi.Where( x=> x<0 );

foreach (var item in negatifSayılar)Console.Write(" "+item); // -5 -1

tür olarak var yerine IEnumerable<int> kullanılabilir.

int[] dizi ={3,2,-5,8,-1}; IEnumerable<int> pozitif=dizi.Where(x=>x>=0);

foreach (var item in pozitif)Console.Write(" "+item); // 3 2 8

6.92) Bir komutta, birden fazla Metodu (aralarına nokta konarak) kullanılabilir (buna metot zincirlemesi denir). Örnek: dizi.Sum().Min().Max();

int[] dizi = { 3, 8, 2, 6, -5, 8, -1 }; // in Pozitif toplamları kaçtır? double pozitifOrtalama = dizi.Where(x => x >= 0).Average(); Console.Write(pozitifOrtalama); // 5,4

int[] dizi = { 3, 8, 2, 6, -5, 8, -1 }; // değeri 8 olanların toplamı? int sekizlerinToplamı = dizi.Where(x => x == 8).Sum(); Console.Write(sekizlerinToplamı); // 16

6.93) =dizi.Average(); dizi değerlerinin ortalamasını verir int[] dizi={4,5,9}; Console.Write( dizi.Average() ); // 6

Console.Write( new int[]{3,7,8}.Average() ); // 6

// girilen 6 sayıdan; negatif adet, pozitif toplam ve 15..25 arası ortalamasını prg.

int[] s = new int[6];

for (int i = 0; i < s.Length; i++) s[i] = int.Parse(Console.ReadLine()); Console.WriteLine("negatif adet:"+s.Where(x => x < 0).Count()); Console.WriteLine("pozitif toplam:"+s.Where(e => e > 0).Sum()); Console.WriteLine("15-25 arası ortalama:"+s.Where(e => 15 < e && e < 25).Average()); // -4 17 40 25 20 80 //negatif adet:1 //pozitif toplam:182 // 15-25 arası ortalama:36,4

Örnek: ismilerin harf toplamı ve en kısa isimli kişiyi yazar string[] yazı = { "Ahmet", "Mehmet", "Mustafa" }; Console.Write ("Toplam Harf Sayısı ={0}", yazı.Sum(x => x.Length)); // 18 Console.Write ("En Az Haneli İsim ={0}", yazı.Min(x => x.Length)) ; // 5

Örnek: mutlak değeri en büyük olanı yazar. int[] dizi={1,-1,-2,0};Console.Write(dizi.Max(x => Math.Abs(x))); // 2

6.94) =dizi.Select(); dizi değerlerinin ortalamasını verir Örnek: dizideki elemanın değeri indexNo ya eşitse true yanlışşa false yazar. int[] dizi = { 1, 4, 2, 3}; var d2 = dizi.Select((değeri, sırası) => new { x=değeri, durum= (değeri==sırası) }); foreach (var n in d2) { Console.Write("{0}:{1} ", n.x, n.durum); }

//1:False 4:False 2:true 3:True

6.95) =dizi.Take(adet); dizini başından adet sayısınca kopyalar. Örnek: dizin ilk 3 adedini alır.

int[] dizi = { 1, 4, 2, 3, 9, 2, 6 }; var d3 = dizi.Take(3); //ilk üçünün kopyasını al diziden silme. foreach (var n in d3) { Console.Write(" "+n); } // 1 4 2

6.96) =dizi.Skip(adet); diziden ilk adet sayısı dışındakileri alır. Örnek: dizin ilk 3 adedini alır.

int[] dizi = { 1, 4, 2, 3, 9, 2, 6 }; var d4 = dizi.Skip(3); //ilk üçü dışındakiler foreach (var n in d4) { Console.Write(n + ","); } // 3, 9, 2, 6

Page 18: Dizi - Gaziantep Üniversitesiozcan/ders/nesne1/dn_nes1_6_dizi3.pdf · Bölüm 6 Dizi (Array) Dizi (Array) 6.1) Sıralı değiükenleri kontrol eden değiükene dizi denir. Basit

Bölüm 6 Linq

6.97) =dizi.TakeWhile(); şarta bağlı eleman kopyalar. Örnek: dizin ilk 3 adedini alır.

int[] dizi = { 1, 4, 2, 3, 9, 2, 6 }; var d5 = dizi.TakeWhile(n => n < 6); // 6 den küçük olanlar foreach (var n in d5) { Console.Write(n); } //1423

6.98) =dizi.SkipWhile(adet); dizini başından adet sayısınca kopyalar. Örnek: dizin de 3 e tam bölünemeyenlerini alır.

int[] dizi = { 1, 4, 2, 3, 9, 2, 6 }; var d6 = dizi.SkipWhile(n => n % 3 != 0); // üç e tam bölünemeyenler foreach (var n in d6) { Console.Write(n + " "); } // 3 9 2 6

6.99) =dizi.OrderByDescending(); diziyi sıralar. Örnek: Ahmet 80, Yahya 10, Fatma 40 notları nota göre sıralayan prg.

using System; using System.Linq; class Program{ public string ad; public int not; static void Main(){ Ogrenci[] notlar = { new Ogrenci { ad="Ahmet", not=80 }, new Ogrenci { ad="Yahya", not=10 }, new Ogrenci { ad="Yahya", not=10 }, new Ogrenci { ad="Fatma", not=40 } }; foreach (Ogrenci i in notlar.OrderByDescending(x => x.not)) Console.WriteLine("{0}\t{1}", i.ad, i.not); } }

public class Ogrenci {public string ad;public int not;}

6.100) from-select; dizi sql sorgusu gibi sorgular. örnek: dizi elemanlarını yazar

int[] dizi = { -3, 5, 7, 9, 3}; int[] dizi2 = { 1, 2}; string[] isim = { "ali", "tuncay", "meral", "ayşe"};

var sonuc= from sorgu in dizi select sorgu; foreach (var sayı in sonuc)Console.Write(sayı); // -35793

Not: anlaşılırlığı arttırmak için S nin değeri satır sonuna yazılacak. var s= from x in dizi select x; //s={-3,5,7,9,3} var s= from x in dizi select 1; //s={ 1,1,1,1,1}

var s= from x in dizi select "ali"; //s={"ali","ali","ali","ali","ali"} var s = from Y in isim select Y.Length; //s= 3, 6, 5, 4 var s = from Y in isim select Y.Length>3; //s= false true true true var s = from Y in isim where Y.Length < 5 select Y; // ali ayşe var s = from Y in isim orderby Y select Y; // ali ayşe meral tuncay var s = from Y in isim orderby Y orderby Y.Length select Y; var s = from x in dizi from y in dizi2 select x; //-3 -3 5 5 7 7 9 9 3 3 var s = from x in dizi from y in dizi2 select new { x, y }; foreach (var i in s) Console.Write(i.x + "," + i.y + " "); //-3,1 -3,2 5,1 5,2 7,1 7,2 9,1 9,2 3,1 3,2

Ahmet 80

Fatma 40

Yahya 10

Yahya 10

Page 19: Dizi - Gaziantep Üniversitesiozcan/ders/nesne1/dn_nes1_6_dizi3.pdf · Bölüm 6 Dizi (Array) Dizi (Array) 6.1) Sıralı değiükenleri kontrol eden değiükene dizi denir. Basit

Bölüm 6 Linq

int[] d1 = { 3, 5, 8}, d2 = { 4, 6, 5}; var s = from x1 in d1 from x2 in d2 where x1+1 == x2 select new { x1, x2 }; foreach (var i in s) Console.Write(i); // {x1=3,x2=4}{x1=5,x2=6}

foreach (var i in s) Console.Write(i.x1+","+i.x2+" "); // 3,5 4,6

int[] d1 = { 3, 5, 8}, d2 = { 4, 6, 5}; var s = from x1 in d1 from x2 in d2 let x3=x1*x2 where x1==x2 select new { x1, x2, x3}; foreach (var i in s) Console.Write(i); foreach (var i in s) Console.Write(" "+i.x1+"*"+i.x2+"="+x3);

Page 20: Dizi - Gaziantep Üniversitesiozcan/ders/nesne1/dn_nes1_6_dizi3.pdf · Bölüm 6 Dizi (Array) Dizi (Array) 6.1) Sıralı değiükenleri kontrol eden değiükene dizi denir. Basit

Bölüm 6 Uygulama

Uygulama

1) Klavye tuşu tıkladığında, hangi tuşun tıklandığını ekrana yazan Form uygulaması oluşturun.

private void Form1_KeyPress(object sender, KeyPressEventArgs e) { Text = e.KeyChar.ToString(); }

2) Klavye tuşu tıkladığında, tıklandığı anı zamanı ekrana yazan Form uygulaması oluşturun.

private void Form1_KeyPress(object sender, KeyPressEventArgs e) {

DateTime now = DateTime.Now; Text = now.ToString("mm:ss");

}

3) Klavye tuşu tıkladığında, tıklanan tuşu ve tıklandığı zamanı bir diziye yazan Form

uygulaması oluşturun.

4) Klavye tuşu tıkladığında, tıklanan tuşu ile birlikte daha önce tıklanan tuşla araasındaki

zamanı dir diziye yazan Form uygulaması oluşturun.

Page 21: Dizi - Gaziantep Üniversitesiozcan/ders/nesne1/dn_nes1_6_dizi3.pdf · Bölüm 6 Dizi (Array) Dizi (Array) 6.1) Sıralı değiükenleri kontrol eden değiükene dizi denir. Basit

Bölüm 6 Sorular

Sorular