C Programlama Dili - Diziler

Katılım
22 Ağustos 2013
Mesajlar
15.003
Makaleler
35
Çözümler
72
Bazı durumlarda basit değişkenler bir takım sorunların çözülmesi için yeterli olmazlar. Örneğin iki matrisin toplamını bulabilecek bir program basit değişkenler ile yazılamaz. Ya da bir dizi eğer üzerinde sıralama yapabilecek program, bir dizi sayı içerisinde istenilen değeri bulabilecek program yine basit değişkenler ile yazılamaz. Bu tip programlar için hatta bir çok benzeri program için dizi veya matris tanımları yapabilmek gerekmektedir.

Bir ad ve bir damga (index) ile aynı türden çok sayıda değişkeni tanımlamak için kullanılan bir yapı türüdür. Genel olarak bir dizinin bildiriminde sözdizimi şöyledir:

tür ad[n] = {değerler};

Diziler
• Tek Boyutlu Diziler
• Çok Boyutlu Diziler (Ör: Matrisler)
• Katar Dizileri

Dizilerin kullanılmasını gerektiren iki önemli özellikleri vardır :

• Bellekte ardışık olarak bulunmaları
• Elemanların aynı türden nesne olmaları

Program içerisinde aynı anda aynı tür bilgiden çok sayıda mevcut olması ve bu bilgiler üzerinde toplu işlem yapılması durumunda dizilerden yararlanılmaktadır.

• Diziler bileşik nesnelerdir. Yani bir dizinin tanımlanması ile birden fazla sayıda nesne birlikte tanımlanabilir.

• Örneğin 10 elemanlık bir dizi tanımlamak yerine, şüphesiz farklı isimde 10 ayrı nesne de tanımlanabilir. Ama 10 ayrı nesne tanımlandığında bu nesnelerin bellekte ardışık olarak yerleşmeleri garanti altına alınmış bir özellik değildir.

• Dizi tanımlamasıyla, dizinin elemanı olan bütün nesnelerin bellekte ardışık olarak yer almaları garanti altına alınmış demektir.

Bir grup sayısal değer ya da karakter veriyi içeren diziler tek boyutlu diziler olarak tanımlanır.

Tek boyutlu diziler, tür dizi_adı [boyut], biçiminde tanımlanır.

tür Dizinin içerdiği değerlerin veri türü. Aynen değişken türlerinin tanımlandığı biçimde kullanılır.

dizi_adı Dizinin mutlaka bir adı olmalıdır. Program içinde dizinin tüm elemanları bu ortak isim ile temsil edilir.

boyut Dizinin elemanları için bellekte ayrılacak yeri belirler. Ayrılan yerin tümüyle dolması gerekmez. Örneğin 10 elemanlık bir boyuta sahip dizinin 3 elemanı olabilir.

• Dizi içerisindeki her bir elemana, dizi isminden sonra, yazılan pozisyon numarası; yani indis değeri ile ulaşılır.

• İndis, bir dizinin her bir elemanına sırayla verilen bir numaradır.

• İndis değerleri mutlaka tamsayı olmalıdırlar.

• İndisler, sıfırdan başlayarak oluşturulurlar.

• Buna göre dizinin birinci elemanının indisi 0’dır. İkinci elemanının indisi ise 1’dir.

upload_2015-12-22_19-52-36.png


upload_2015-12-22_19-53-5.png

Burada tür derleyicide hazır olan temel veri türlerinden birisi olabileceği gibi, programcının yarattığı bir yapı türü de olabilir. Ad yerine istenen herhangi bir ad verilebilir; C derleyicisinin ad için koyduğu kısıtlamalar dışında bir kısıtlama yoktur. Dizi bildiriminde [ ] içindeki n bir tamsayıdır ve dizi dizininde kaç öğe var olacağını belirtir. 0 dan başlayarak n-1 sayısına dek giden bu sayılara dizinin indisleri denilmektedir.

Örnek olarak int a[5]; ifadesi 5 adet tamsayı değer içeren a ismindeki tamsayı dizisini tanımlama ifadesidir. Dizilerin içerdiği değerlere – elemanlara – yine köşeli parantezlerle erişiriz. Köşeli parantezler içerisinde verdiğimiz sayı indistir. İlk eleman saymaya sıfırdan başladığımız için a[0], ikinci eleman a[1] ve son eleman boyuttan bir eksik indis değerine sahip a[4]'tür. Eğer dizinin öğelerine değerler atanacaksa, bu değerler indis sırasına göre { } içine yazılır.

Kaynaklar : Metu, Firat, Bilkent ders notları







 
iki boyutlu bir dizi(matris) ile tablo yapmak istesem , bu tabloda hem karakter hem rakam olacak şekilde yapabilir miyim?
tablo üzerinde işlemler yapılacak
 
iki boyutlu bir dizi(matris) ile tablo yapmak istesem , bu tabloda hem karakter hem rakam olacak şekilde yapabilir miyim?
tablo üzerinde işlemler yapılacak

Teknik olarak evet. Fakat C programla dili ile haşır neşir olmuş hiç kimse sana bunu önermeyecektir. Hem hataya çok fazla müsade eder, hem de farklı veri tiplerinden dizi içerisindeki elemanları listelerken, normalden daha uzun süreceği için performans kaybına neden olur. Ayrıca geliştirirken biraz daha fazla uğraştırır ve sonradan geliştirme yapıldığı vakit baş ağrılarına sebep olabilir.
 
Ben C dilinde alıştırma yapıyorum ama mesela bir 10'a 10'luk bir dizi de satırları toplayıp ekrana yazdıracagım ama kodumda 1. satırı topluyor sonra 2. satırı 1 ile birlikte toplayıp 2'ye yazıyor sonra 3. satır 1 2 ve 3 saatırları toplayıp 3'e yazıyor boyle 5. Satıra kadar devam ediyor sizce ne yapmam lazım :(
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Yeni konular

Geri
Yukarı