Ders 9. Diziler
Şimdiye kadar birçok değişken tanımladık ve programlarımızın içinde kullandık. Bir program içinde tanımladığımız değişken sayısı şimdiye kadar bir elin parmaklarını geçmedi. Ancak her zaman bu böyle olmayabilir. Bazı programlarda değişkene ihtiyaç duyabiliriz. Bunların hepsinin teker teker tanımlanması oldukça zahmetlidir. İşte bu yüzden programlama dillerinde dizi diye bir kavram vardır. Aslında bir dizi, birbiriyle ilişkili değişkenlerin oluşturduğu bir gruptan başka bir şey değildir. Diyelim ki ve adlı iki değişken tanımladık. Bunların adları birbirine benzemesine rağmen birbiriyle hiçbir ilişkisi yoktur. Yani bir döngü içinde yazarak bu değişkenlere erişemeyiz. Halbuki dizilerde bu mümkündür.
veya
Yukarıdaki iki kodda da int türünden 25 elemanlı adında bir dizi tanımlandı ve dizinin her bir elemanına int türünün varsayılan değeri atandı. Varsayılan değerler, sayısal türler için 0, object türü için NULL (yokluk), string türü için "", char için ' ' (boşluk) ve bool için false değerleridir.
Bu program ekrana 30 yazacaktır.
Ancak bu şekilde dizi belirtimini sadece dizi tanımlamalarında kullanabiliriz. Örneğin bir sonraki derste göreceğimiz metotlara parametre olarak bir int dizisi vermemiz gerekiyorsa parametre olarak sadece ifadesini veremeyiz. ifadesini bir değişkene atayıp bu değişkeni metoda parametre olarak vermeliyiz. Ayrıca aşağıdaki kullanım da hatalıdır:
Çünkü daha önce de bahsettiğimiz gibi direkt dizi belirtimi sadece dizi tanımlamalarında geçerlidir.
Başka bir dizi tanımlama yöntemi de şöyledir:
Üstelik bu şekilde dizi belirtimini dizi kullanmamız gereken her yerde yapabiliriz. Örneğin bir metoda parametre olarak bir int dizisi vermemiz gerekiyorsa metot çağrısında parametre yerine direkt yazabiliriz.
Diziler yukarıdaki şekilde tanımlandığında söz konusu dizilerin eleman sayısı yazılan eleman sayısı olur. Örneğin yukarıdaki örneklerde bütün dizilerin eleman sayısı üçtür ve dördüncü elemana ulaşmak istersek programımız çalışma zamanında hata verir. Bu şekilde dizi elemanlarına değişken ve ifadeler de atanabilir.
veya
İkincisinde tanımlanan dizinin elemanlarına henüz erişilemez.
foreach yalnızca dizilere uygulanabilen bir döngü yapısıdır. Kullanımı şu şekildedir:
Burada dizisinin bütün elemanları teker teker ekrana yazdırılıyor.
Çok boyutlu diziler kısaca her bir elemanı bir dizi şeklinde olan dizilerdir, matris dizileri (düzenli diziler) ve düzensiz diziler olmak üzere ikiye ayrılır.
Her bir dizi elemanının eşit sayıda dizi içerdiği dizilerdir.
3X2 boyutunda iki boyutlu bir matris dizi aşağıdaki gibi tanımlanabilir:
veya
İkinci dizinin elemanları indekslerine göre aşağıdaki gibidir.
dizi[0,0] → 1
dizi[0,1] → 2
dizi[1,0] → 3
dizi[1,1] → 4
dizi[2,0] → 5
dizi[2,1] → 6
Bu diziyi matris olarak aşağıdaki gibi gösterebiliriz:
| → |
|
Üç boyutlu bir dizi:
veya
Bu dizinin indekslerine göre elemanlarıysa;
dizi[0,0,0] → 1
dizi[0,0,1] → 2
dizi[0,1,0] → 3
dizi[0,1,1] → 4
dizi[1,0,0] → 5
dizi[1,0,1] → 6
dizi[1,1,0] → 7
dizi[1,1,1] → 8
dizi[2,0,0] → 9
dizi[2,0,1] → 10
dizi[2,1,0] → 11
dizi[2,1,1] → 12
Bu programda dizinin bütün elemanlarının değerini 20 ile değiştirdik.
Her bir dizi elemanının farklı sayıda eleman içerebileceği çok boyutlu dizilerdir.
Birinci satırda 3 satırı olan ancak sütun sayısı belli olmayan iki boyutlu bir dizi tanımlanıyor. İkinci, üçüncü ve dördüncü satırda da bu iki boyutlu dizinin her bir satırının kaç sütun içerdiği ayrı ayrı belirtiliyor.
dizi[0][0] | dizi[0][1] | dizi[0][2] | |
dizi[1][0] | dizi[1][1] | dizi[1][2] | dizi[1][3] |
dizi[2][0] | dizi[2][1] |
şeklinde kullanılır. Herhangi bir dizinin eleman sayısını int olarak tutar. x diziyi, y o dizinin hangi boyutunun eleman sayısının hesaplanacağını belirtir. Örnekler:
Bu program ekrana 4 yazar.
Bu program ekrana 3 yazar.
Bu program dizinin bütün elemanlarını teker teker ekrana yazar.
Şimdiye kadar öğrendiğimiz dizi tanımlama yöntemlerinin yanında başka dizi tanımlama yöntemleri de vardır.
Burada int türünden 5 elemanlı adında bir dizi tanımlandı ve dizinin her bir elemanına int türünün varsayılan değeri atandı.
Burada 3X2X5 boyutunda int türünden 3 boyutlu bir dizi oluşturduk.
Burada 2X3X6X8X7 boyutunda beş boyutlu bir dizi oluşturduk.
Daha önce CreateInstance yöntemiyle oluşturulan dizilere gibi bir yöntemle erişilemeyeceğini söylemiştik. İşte bunun için çeşitli metotlar vardır.
GetUpperBound: Bir dizinin son indeks numarasını verir.
SetValue: Bir dizinin belirli bir indeksini belirli bir değerle değiştirir.
GetValue: Bir dizinin belirli bir indeksini tutar.
Burada dizi1'in tüm elemanları dizi2'ye 3. indeksten itibaren kopyalanıyor.
Burada 3 tane eleman dizi1'den dizi2'ye kopyalanır. Kopyalama işlemi 0. indeksten başlar.
Burada dizi1'in 2. indeksinden itibaren 3 eleman, dizi2'ye 7. indeksten itibaren kopyalanıyor.
Örnek:
Başka bir örnek:
Örnek:
BinarySearch metodu, bir nesneyi bir dizi içinde arar, eğer bulursa bulduğu nesnenin indeksini tutar, bulamazsa negatif bir sayı tutar. BinarySearch'ü kullanabilmek için diziyi daha önce Sort ile sıralamalıyız. Başka bir örnek:
BinarySearch burada 3. indeksten itibaren 4 eleman içinde "yakup"u arar. Bulursa indeksini tutar. Bulamazsa negatif bir sayı tutar.
UYARI: Yalnızca tek boyutlu diziler Sort ile sıralanabilir, dolayısıyla da çok boyutlu dizilerde hem Sort ile sıralama hem de BinarySearch ile arama yapmak imkansızdır.
Bu kod dizisinin 1. indeksinden itibaren 3 indeksini sıfırlar (varsayılan değere döndürür).
Bu kod dizisinin tamamını ters çevirir.
Bu kod dizisinin 1. indeksten itibaren 3 elemanını ters çevirir.
Bu kitabın diğer sayfaları
C Programlama dili ile dizideki sayıları küçükten büyüğe sıralama işlemini en basit şekilde nasıl yapılacağını anlattık. Bu kod ile kullanıcının girdiği sayıları küçükten büyüğe göre tekrardan diziye kaydedip ekrana yazdırabilirsiniz.
Kod:
#include <stdio.h> #include <stdlib.h> int main(){ int dizi[50], gecici, adet; printf("Kac adet sayi girilecek: "); scanf("%d", &adet); for(int i=0; i<adet; i++){ printf("%d)Sayi giriniz: ", i+1); scanf("%d", &dizi[i]); } for(int i=0; i<adet-1;i++){ for(int j=i+1; j<adet; j++){ if(dizi[i] > dizi[j]){ gecici = dizi[i]; dizi[i] = dizi[j]; dizi[j] = gecici; } } } for(int i=0; i<adet; i++) printf("%d ", dizi[i]); printf("n"); system("pause"); return 0; }Aşağıdaki örnek de dizi tanımlama dizi içine eleman ekleme, dizi içindeki elemanların toplamını, en büyük, eb küçüğünü, ilk ve son elemanı bulup diziyi sıralama işlemini yapacağız.
int[] sayilar = new int[10]; for (int i = 0; i < funduszeue.info; i++) { sayilar[i] = i + 1; } sayilar[3] = 20; sayilar[5] = sayilar[2] + sayilar[7]; for (int i = 0; i < funduszeue.info; i++) { funduszeue.infoine("sayilar[{0}] = {1}", i, sayilar[i]); } funduszeue.infoine(); funduszeue.infoine("Toplam = " + funduszeue.info()); funduszeue.infoine("En Küçük = " + funduszeue.info()); funduszeue.infoine("En Büyük = " + funduszeue.info()); funduszeue.infoine("İlk Eleman = " + funduszeue.info()); funduszeue.infoine("Son Eleman = " + funduszeue.info()); funduszeue.infoine(); funduszeue.info(sayilar); for (int i = 0; i < funduszeue.info; i++) { funduszeue.infoine("sayilar[{0}] = {1}", i, sayilar[i]); } funduszeue.infoy();Bu İçeriğe Tepkin Ne Oldu?
c# dersleric# dizi sıralamac# örnekleridizi toplamıen büyüken küçükİlkSon elemantoplam
çamaşır makinesi ses çıkarması topuz modelleri kapalı huawei hoparlör cızırtı hususi otomobil fiat doblo kurbağalıdere parkı ecele sitem melih gokcek jelibon 9 sınıf 2 dönem 2 yazılı almanca 150 rakı fiyatı 2020 parkour 2d en iyi uçlu kalem markası hangisi doğduğun gün ayın görüntüsü hey ram vasundhara das istanbul anadolu 20 icra dairesi iletişim silifke anamur otobüs grinin 50 tonu türkçe altyazılı bir peri masalı 6. bölüm izle sarayönü imsakiye hamile birinin ruyada bebek emzirdigini gormek eşkiya dünyaya hükümdar olmaz 29 bölüm atv emirgan sahili bordo bereli vs sat akbulut inşaat pendik satılık daire atlas park avm mağazalar bursa erenler hava durumu galleria avm kuaför bandırma edirne arası kaç km prof dr ali akyüz kimdir venom zehirli öfke türkçe dublaj izle 2018 indir a101 cafex kahve beyazlatıcı rize 3 asliye hukuk mahkemesi münazara hakkında bilgi 120 milyon doz diyanet mahrem açıklaması honda cr v modifiye aksesuarları ören örtur evleri iyi akşamlar elle abiye ayakkabı ekmek paparası nasıl yapılır tekirdağ çerkezköy 3 zırhlı tugay dört elle sarılmak anlamı sarayhan çiftehan otel bolu ocakbaşı iletişim kumaş ne ile yapışır başak kar maydonoz destesiyem mp3 indir eklips 3 in 1 fırça seti prof cüneyt özek istanbul kütahya yol güzergahı aski memnu soundtrack selçuk psikoloji taban puanları senfonilerle ilahiler adana mut otobüs gülben ergen hürrem rüyada sakız görmek diyanet pupui petek dinçöz mat ruj tenvin harfleri istanbul kocaeli haritası kolay starbucks kurabiyesi 10 sınıf polinom test pdf arçelik tezgah üstü su arıtma cihazı fiyatları şafi mezhebi cuma namazı nasıl kılınır ruhsal bozukluk için dua pvc iç kapı fiyatları işcep kartsız para çekme vga scart çevirici duyarsızlık sözleri samsung whatsapp konuşarak yazma palio şanzıman arızası