C# PROGRAMLAMA

advertisement
DİZİLER (ARRAYS)
 Değişkenler, içerisinde tek bir değer tutabilen yapılardır.
 Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir değişken
tanımlamak gereklidir.
string gun1, gun2 ,gun3, gun4, gun5, gun6, gun7 gibi.
 Örneğin ay isimleri, bir sınıftaki öğrenci listesi, vb.
 Bu ve buna benzer listeler oluşturmak gerektiğinde, bu işlemler için değişkenler yeterli
değildir.
 Bir grup bilgi tek bir başlık altında tutulmak istendiğinde dizi (array) yapısı kullanılmalıdır.
Bu gibi örneklerde diziler kullanılarak hem tanımlama ve verilere erişme işlemleri daha kolay
olacak, hem de daha düzenli program geliştirme imkanı sağlanacaktır.
 Özetle, bir dizi aynı veri tipinde ve belirtilen miktardaki elemanı içerisinde barındıran bir
veri yapısıdır.
 Her bir dizi elemanına erişmek için dizi içerisindeki indeks değerleri kullanılır.
 Indeks numarası 0 dan başlayarak ardışık sayılardan oluşur.
 Örneğin örnekteki gunler dizisi 7 elemanlı bir dizidir. Bu dizinin indeks numaraları 0 ile 6
arasındadır. İlk elemanın indeks numarası 0 (sıfır), son elemanın indeks numarası ise 6’dır.
 Yani n elemanlı bir dizinin indeks numaraları 0’dan (n-1)’e kadardır.
 Program içerisinde dizi içerisindeki bir elemana diziadi[index_numarasi] şeklinde erişilebilir.
 Bir dizi tanımlarken diziye değişkenlerdeki gibi bir isim verilerek, içerisinde tutacağı değere
uygun veri tipi belirlenir.
 Veri tipinin hemen yanında bulunan içi boş köşeli parantez ( [ ] ) işaretleri tek boyutlu bir dizi
olduğunu belirtir.
 Dizinin kaç değer tutacağı tanımlama sırasında elaman sayısı verilerek belirtilir.
Yani;
1. YOL : Dizi, tutacağı değerlere uygun veri tipi (int, string gibi veri tipleri) ile birlikte, kaç farklı değeri
tutacağını gösteren eleman sayısı belirtilerek tanımlanır.
Yazım Şekli :
veritipi[] diziadi=new veritipi[dizide tutulacak eleman sayisi];
Örnek Kod:
int[] sayilar = new int[10];
//10 elemanlı int tipinde değerler tutabilecek bir dizi
string[] mevsimler = new string[4];
//4 elemanlı mevsimleri tutabilecek string tipinde bir dizi
2. YOL : Birinci yoldaki tanımlama 2 satıra bölünerek aşağıdaki gibi bir tanımlama yapılabilir.
Yazım Şekli :
veritipi[] diziadi;
diziadi = new veritipi[dizide tutulacak eleman sayisi];
Örnek Kod:
int[] sayilar;
sayilar=new int[10];
string[] mevsimler;
mevsimler = new string[4];
3. YOL : Bir dizi tanımlarken dizide tutulacak değerler tanımlama sırasında girilebilir.
Yazım Şekli :
veritipi[] diziadi = new veritipi[dizide tutulacak eleman sayisi] {dizide tutulacak değerler};
veya yukarıdakinin daha kısa şekliyle aşağıdaki gibi tanımlama yapılabilir
veritipi[] diziadi = {dizide tutulacak değerler buraya herbiri virgül ile ayrılarak yazılır};
Örnek Kod:
int[] sayilar = new int[10]{11,2,5,30,4,8,10,88,90,6};
//10 elemanlı sayılar dizisi, dizinin tutacağı elemanlar tanımlama sırasında diziye
atandı
string[] mevsimler = new string[4]{"ilkbahar", "yaz", "sonbahar", "kış" };
//4 elamanlı tanımlama sırasında değerleri girilen string tipinde bir dizi
NOT 1! (3. yol için)
 Dizinin elemanları string tipinde ise her bir eleman çift tırnak (") işaretleri arasına
yazılmalıdır.
 Sayılardan oluşan elamanlar (int, double vb.) doğrudan yazılabilir.
 Tek bir karakterden (char tipinden) oluşan elamanlar ise her biri tek tırnak (') işaretleri
arasında yazılmalıdır.
 Dizide tutulacak her bir değer tanımlama sırasında diziye eklenirken, değerler arasında virgül
(,) işareti kullanılır.
NOT 2! (3. yol için)
int[] sayilar = new int[10]{11,2,5,30,4,8,10,88,90,6};
string[] mevsimler = new string[4]{"ilkbahar", "yaz", "sonbahar", "kış" };
Bu örnekteki gibi bir kullanımda eleman sayısı belirlenmiş ise başlangıçta değer atama yapılırken eleman sayısı kadar
değer girmek zorunludur.
-----------int[] sayilar ={11,2,5,30,4};
//5 değer girildiği için dizi 5 elemanlı olarak oluşur.
string[] mevsimler = {"ilkbahar", "yaz", "sonbahar", "kış" };
//4 değer girildiği için dizi 4 elemanlı olarak oluşur
Örnekteki gibi dizinin eleman sayısı tanımlama sırasında belirtilmemiş ise, dizinin eleman sayısı diziye girilen değer
kadardır.
Görüldüğü gibi bir birine benzer şekillerde birkaç farklı yol ile dizi tanımlamak mümkündür. Tanımlama şekli programcının
yazım şekline veya çözülmesi gereken probleme göre tespit edilerek uygun olan bir tanımlama kullanılabilir.
Örnek 1: Haftanın günlerini bir dizi içerisine atayarak ekranda gösterin.
1
2
3
4
5
6
7
string[] gunler = { "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi", "Pazar" };
for (int i = 0; i < gunler.Length; i++)
{
Console.WriteLine(gunler[i]);
}
Örnek 2: Bir dizi içerisindeki tüm sayıları toplayarak ortalamasını bulun.
1
2
3
4
5
6
7
8
9
int[] sayilar = { 23, 45, 18, 89, 65, 4 };
double toplam=0, ort=0;
for (int i = 0; i < sayilar.Length; i++)
{
toplam += sayilar[i];
}
ort = toplam / sayilar.Length;
Console.WriteLine("Ortalama:" + ort);
Örnek 3: Klavyeden girilen 10 adet sayının ortalamasını bulan programı Konsol uygulaması şeklinde
yapalım.
1
2
3
4
5
6
7
8
9
1
0
1
1
int[] sayilar = new int[10];
int toplam = 0;
for (int i = 0; i < sayilar.Length; i++)
{
Console.Write("Klavyeden {0}. sayıyı girin:", i+1);
sayilar[i] = Convert.ToInt32(Console.ReadLine());
toplam += sayilar[i];
}
double ort = toplam / 10d;
Console.WriteLine("Ortalama=" + ort);
Console.ReadKey();
Örnekte bir for döngüsü yardımıyla 10
adet sayı klavyeden girildi.
Her sayı girildiğinde girilen sayı toplam
değişkenine eklendi.
Sayı giriş işlemi bittiğinde ise ortalama
hesaplanıp ekranda gösterildi.
Gerekirse başka bir döngü yardımıyla
girilen her sayı sırayla ekranda
gösterilebilir.
Örnek 4: Alfabedeki tüm harfleri diziye atan ve sırayla yan yana yazdıran programı yapın.
1
2
3
4
5
6
7
8
9
char[] alfabe = new char[26];
int sira = 0;
for (char i = 'a'; i <='z' ; i++)
{
alfabe[sira] = i;
Console.Write(alfabe[sira]);
sira++;
}
Örnek 5: Klavyeden girilen 10 adet sayıdan 100’den büyük olanları bir diziye atan programı yapın.
1
2
3
4
5
6
7
8
9
int[] dizi = new int[10];
for (int i = 0; i < dizi.Length; i++)
{
Console.Write("Klavyeden {0}. sayıyı girin:", i + 1);
int sayi= Convert.ToInt32(Console.ReadLine());
if (sayi > 100)
dizi[i] = sayi;
}
Örnek 6: Tanımlanan sayılar dizisi içerisindeki çift sayıları ekrana yazdıran c# konsol uygulaması
1.int[]sayilar={4,5,-15,22,-34,3,0,7,43,100};
2.int toplam=0;
3.foreach(int sayi in sayilar)
4.{
5. if (sayi%2 ==0)
6.
Console.WriteLine(sayi);
7.}
8.
9.Console.ReadKey();
Örnek 7: Tanımlanan sayılar dizisi içerisindeki sayıların negafit, pozitif ve işaretsiz olma durumlarını
yanına yazdıran C# konsol uygulaması
int[] sayilar={4,5,-15,22,-34,3,0,7,43,100};
int toplam=0;
foreach(int sayi in sayilar)
{
if (sayi>0)
Console.WriteLine(sayi + " Pozitif");
else if (sayi<0)
Console.WriteLine(sayi + " Negatif");
else
Console.WriteLine(sayi + " İşaretsiz");
}
Console.ReadKey();
Download