DZ NEDR Deikenler programlarmzn ierisinde kullandmz verilerimizi programmzn

  • Slides: 10
Download presentation
DİZİ NEDİR? Değişkenler, programlarımızın içerisinde kullandığımız verilerimizi, programımızın çalışma süresince saklamamızı ve daha sonra

DİZİ NEDİR? Değişkenler, programlarımızın içerisinde kullandığımız verilerimizi, programımızın çalışma süresince saklamamızı ve daha sonra bu verileri gerektiğinde kullanmamızı sağlayan depolardır. Diziler ise bu deponun birden fazla veri taşıyabilen halidir. Kısaca dizi içeriğinde aynı tipten olan birden çok veri barındırabilen değişken çeşididir. Değişkenler ile dizilerin arasındaki farkı daha iyi pekiştirmemiz gerekirse; değişkenleri bir kutu olarak tanımlarken dizileri rafları olan bir dolap olarak tanımlayabiliriz. Peki, değişken varken dizi kullanmamıza ne gerek var? Yapacağımız şey veri depolamaksa aynı işi yapan aşina olduğumuz değişken kullansak ne değişir? bir örnek ile cevap verelim: Programımız içerisinde bir binada oturanların tanımını yaptığımız her dairenin sahibinin ismini programımız içerisinde değişken içeriğinde tutalım. String Daire 1="Ahmet"; String Daire 2="Mehmet"; String Daire 3="Hasan"; String Daire 4=Hüseyin; Şeklinde binadaki daire sayısı kadar değişken tanımlamamız sonucunda bu işimizi değişkenlerle halletmiş oluruz. Ancak tanımladığımız her değişkenin bellekte artı yer kaplayacağını ve gereksiz yere programımızın çalışmasını yavaşlatacağı için bu işi değişkenlerle halletmemizin doğru olmayacaktır. Peki, diziler bize nasıl bir çözüm sunuyor bu gibi işlemlerde? Dizilerin içeriğinde birden çok veri barındırabildiğini belirtmiştik. Bu durumda yukarıdaki örneğimizi dizi ile tanımlama yaparsak; String[ ] Bina ={“Ahmet”, ”Mehmet”, ”Hasan”, ”Hüseyin”};

DİZİ TANIMLAMA KURALLARI: • Tanımlanan dizi değişkenin adı boşluk içermez; Binada Oturanlar yanlış Binada_Oturanlar

DİZİ TANIMLAMA KURALLARI: • Tanımlanan dizi değişkenin adı boşluk içermez; Binada Oturanlar yanlış Binada_Oturanlar doğru Binada. Oturanlar doğru . Dizi adları programlama dili komutlarından oluşamaz; String yanlış Public yanlış Function yanlış . Dizi adları sadece harf ile başlar; 1_Durum yanlış Durum_1 doğru _Durum 1 doğru DİZİ TÜRÜNÜ BİLDİRMEK (Tip Atamak): Dizi içerisinde ne tür verilerin tutulacağı belirlenmelidir, değişkenlerde kullandığımız veri tipleri diziler için de kullanılır. DİZİ TANIMLAMA: Dizi içerisinde ne tür verilerin tutulacağı belirlenirken, değişkenlerden farklı olarak dizilerde kullanılacak veri sayısı da belirtilir. Örnek: C# Dilinde Dizi. Tipi[ ] Dizi. Adı=new Dizi. Tipi[Dizinin eleman sayısı];

-----------------------------------------------String[ ] Bina=new String[6] int Daire. No; Bina[0]="Ali"; Bina[1]="Veli"; Bina[2]="Ahmet"; Bina[3]="Mehmet"; Bina[4]="Hasan"; Bina[5]="Hüseyin“; Daire.

-----------------------------------------------String[ ] Bina=new String[6] int Daire. No; Bina[0]="Ali"; Bina[1]="Veli"; Bina[2]="Ahmet"; Bina[3]="Mehmet"; Bina[4]="Hasan"; Bina[5]="Hüseyin“; Daire. No=3; Console. Write. Line(Bina[Daire. No-1]); ( ekranda Ahmet yazacaktır ) ------------------------------------------------Not: dizi içerisindeki ilk elemanın numarası 0 ‘dan başlar. Yani: Dizi[0]=“veri 1”; Dizi[1]=“veri 2”; Dizi[2]=“veri 3”; Çok Boyutlu Dizi Tanimlama: Çok boyutlu dizi tanımı normal dizi tanımına benzer bir şekilde yapılarak, dizinin kaç boyutlu olmasını istersek o kadar virgül koymamız ya da parantez açmamız ile oluşturulur. Çok boyutlu dizileri; çok boyutlu dizi içinde depolanacak dizilerin eleman sayısının uyumuna göre, eleman sayıları aynı ise düzenli, farklı ise düzensiz olmak üzere iki türde inceleyebiliriz. Çok boyutlu dizilerin tanımlanma işlemi; C# Dilinde Çok Boyutlu Dizi (Düzenli) Dizi. Tipi[ , ] Dizi. Adı=new Dizi. Tipi[Dizi sayısı, Dizilerin eleman sayısı]; Çok Boyutlu Dizi (Düzensiz) Dizi. Tipi[ ] Dizi. Adı=new Dizi. Tipi[Dizi Sayısı][ ]; Dizi. Adi[Dizi Numarası]=new Dizi. Tipi[Dizilerin Eleman Sayısı]

Örnek: Bina 1 Bina 2 Daire No Daire Sahibinin Adı 1 Ahmet 2 Daire

Örnek: Bina 1 Bina 2 Daire No Daire Sahibinin Adı 1 Ahmet 2 Daire No Bina 3 Daire Sahibinin Adı Daire No Daire Sahibinin Adı 1 Ali 1 Abdullah Mehmet 2 Veli 2 Çiğdem 3 Haşan 3 Ayşe 3 Zekeriya 4 Hüseyin 4 Fatma 4 Erkan String[ , ] Site = new String[3, 4]; Site[0, 0] = "Ahmet"; Site[0, 1] = "Mehmet"; Site[0, 2] = "Hasan"; Site[0, 3] = "Hüseyin"; Site[1, 0] = “Ali"; Site[1, 1] = "Veli"; Site[1, 2] = "Ayşe"; Site[1, 3] = "Fatma"; Site[2, 0] = "Abdullah"; Site[2, 1] = "Çiğdem"; Site[2, 2] = "Zekeriya"; Site[2, 3] = “Erkan"; Not: düzenli çok boyutlu dizi ( her bir dizideki eleman sayısı eşit )

Daire No Dairede Yaşayan Kişiler 1 Ahmet - Ayşe - Zekeriya 2 Mehmet 3

Daire No Dairede Yaşayan Kişiler 1 Ahmet - Ayşe - Zekeriya 2 Mehmet 3 Erkan - Çiğdem 4 Hüseyin - Fatma - Ali - Veli String[ ][ ] Bina=new String[4][ ]; Bina[0] = new String[3]; Bina[1] = new String[1]; Bina[2] = new String[2]; Bina[3] = new String[4]; Bina[0][0] ="Ahmet"; Bina[0][1] =“Ayşe”; Bina[0][2] ="Zekeriya"; Bina[1][0] ="Mehmet"; Bina [2][0] = "Erkan"; Bina [2][1] = "Çiğdem"; Bina[3][0] = "Hüseyin"; Bina[3][1] = "Fatma"; Bina[3][2] = "Ali"; Bina[3][3] = "Veli"; Not: düzenli çok boyutlu dizi ( her bir dizideki eleman sayısı eşit değil )

KONTROL İFADELERİ: 1 - if KONTROLÜ If kontrolünün iki adet yazılım kuralı vardır. ilkinde

KONTROL İFADELERİ: 1 - if KONTROLÜ If kontrolünün iki adet yazılım kuralı vardır. ilkinde tek bir şart belirtilir ve şarta uyum sağladığında belirli kodlar, uyum sağlamadığında ise farklı kodlar çalıştırılır. ikincisinde ise birden çok satırda farklı şartlar belirtilerek şartlardan hangisine uyum sağlanırsa o şarta ait kodlar çalıştırılır. eğer hiçbir şarta uyum sağlanmazsa, bu seferde uyum sağlamadığında çalıştırılması gereken kodlar çalıştırılır. if (gerçekleşecek şart) { if (gerçekleşecek şart 1) { Şart gerçekleştiğinde çalıştınlacak kodlar } else { Şart 1 gerçekleştiğinde çalıştırılacak kodlar } else if (gerçekleşecek şart 2) { Şart gerçekleşmediğinde çalıştırılacak kodlar 2. Şart gerçekleştiğinde çalıştırılacak kodlar } else { Şart gerçekleşmediğinde çalıştırılacak kodlar Soru: iki sayının birbirlerine göre büyüklüklerini veya eşitliğini kontrol eden ifadeyi yazın.

2 - Switch-Case KONTROLÜ Bazı durumlarda kontrolü sağlanacak verinin birden çok şarta uyum sağlayıp

2 - Switch-Case KONTROLÜ Bazı durumlarda kontrolü sağlanacak verinin birden çok şarta uyum sağlayıp sağlamadığının kontrolün yapılması gerekebilir. Bu işlemi if kontrolü ile else if kontrolü sayesinde çözebiliriz. Ancak bu hem gereksiz yere kodumuzun uzayarak anlaşılması zor bir hale gelmesine neden olur, hem de her şartın kontrolü için verinin şarta uyup uymadığının kontrol edilmesinden dolayı bellek kullanımını arttırır. Switch(değer) { Case şart 1: Şart gerçekleştiğinde çalıştırılacak kodlar break; Case şart 2: Şart gerçekleştiğinde çalıştırılacak kodlar break; default: hiçbir şarta uyulmadığında çalıştırılacak kodlar break; } şeklinde yapılarak değer verisinin değeri alınması sonucunda switch kontrolüne ait parantezlerde bulunan değerlerden hangisine uyarsa o değere ait şart gerçekleştiğinde uyarılacak kodlar çalıştırılacaktır. Bu sayede hem kodlar tek parantez içinde olduğundan daha düzenli bir görünüm elde edilecek hem de tek sorgu işlemi yapıldığından dolayı bellek kullanımını azaltacaktır. switch kontrolüne ait tek yazılım kuralı vardır. Soru: Değişkenin 2 ila 5 arasında olması durumunda sayıyı ekrana yazdıran aksi halde sayı “aralık dışındadır” mesajı veren kontrolü ifadeyi yazın.

DÖNGÜLER: 1 - for DÖNGÜSÜ kod blokları arasına yazılmış olan kodların çalışması gereken tekrar

DÖNGÜLER: 1 - for DÖNGÜSÜ kod blokları arasına yazılmış olan kodların çalışması gereken tekrar sayısının bilindiği durumlarda kullanılan döngü çeşididir. for (başlangıç değeri; gerekli şart; yardımcı parametre) { Gerekli şart oluştuğu sürece yinelenecek kodlar } Örnek: for (int i = 0; i < 5; i++) { Console. Write(i. To. String()); } 2 - foreach DÖNGÜSÜ çalışma mantığı olarak for döngüsüyle benzerlik gösterir. Ancak tekrar sayısını for döngüsünde biz belirlerken foreach döngüsünde dizi içi eleman sayısı belirler. foreach (değişken tipi değerin tutulacağı değişken in dizi_adı) { Dizi içeriğindeki eleman sayısı kadar çalıştırılacak kodlar } Örnek: { } foreach (string i in Bina) Console. Write. Line(i. To. String());

3 - While DÖNGÜSÜ while döngüsü; for döngüsü ile aynı işlemi yaparak kod blokları

3 - While DÖNGÜSÜ while döngüsü; for döngüsü ile aynı işlemi yaparak kod blokları arasına yazılmış olan kodların çalışması gereken tekrar sayısının bilindiği durumlarda kullanılan döngü çeşididir. Eğer while döngüsünü for döngüsünde olduğu gibi tekrar sayısını bildirerek kullanırsak işlemimizi for döngüsü ya da while döngüsüyle yapmamızın bir farkı yoktur. Ancak while döngüsünün esas kullanım amacı: bool veri tiplerine göre işlem olumlu (true) olduğu sürece, kod bloğu arasındaki kodların çalışmasını şart koşarsak o zaman for döngüsüyle yapamayacağımız bu işlem için while döngüsünü kullanmamız gerekmektedir. Örnek: bool durum=true; int deger=1; while (durum) { if (değer <10) { Console. Write(deger. To. String()); değer = değer + 2; } else { durum = false; Console. Write. Line(İşlem Sonu"); } }

4 - Do While DÖNGÜSÜ while döngüsü ile aynı işlemi yapan döngü çeşididir. Ancak

4 - Do While DÖNGÜSÜ while döngüsü ile aynı işlemi yapan döngü çeşididir. Ancak while döngüsünde önce şart kontrol edilip ardından kod bloğundaki kodlar çalıştırılırken; do while döngüsünde ilk olarak kod bloğundaki kodlar çalıştırılarak ardından şart kontrolü yapılır. Örnek: bool durum=false; int deger=1; do { if (değer <10) { Console. Write(deger. To. String()); değer = değer + 2; } else { durum = false; Console. Write. Line(İşlem Sonu"); } } while (durum) Not: değişkeninin değeri false olmasına rağmen kod bloğumuzdaki kodlar bir seferliğine çalışmakta ve ekrana deger değişkenine ait 1 değeri yazdırılmaktadır.