VERİ YAPILARI ve DİZİLER

Bilgisayar donanımında ana bellek, sıra sıra dizilmiş hücreler şeklinde düzenlenmiştir. Her hücre belli hacimdeki bilgiyi saklamak ve gerektikçe oradaki bilgiye erişmek için kullanılır. Ama karmaşık problemlerin çözümü için gerekli verileri bellek hücrelerin yüklerken donanımdaki sıraya bağımlı kalmak tasarım aşamasında işleri zorlaştırır. Zira, böyle bir yöntemde programcı verileri belleğe yüklenmeye çalışırken donanımla ilgili bir çok detay arasında boğulur ve sonuca yakınsamak çok karışık bir hal alır. Pratik bir yaklaşım, problemin yapısına uygun soyut veri yapılarını düzenlemek ve daha sonra da bu yoyut  yapıları bilgisayar donanımında somut olarak gerçeklemenin yollarını araştırmaktır.

Örneğin gri tonlardan oluşan bir görüntüyü bilgisayar ortamında işlemek saklamak için her bir gri tonu tam sayılarla gösterdikten sonra, iki boyutlu bir matris oluştururuz. Bu matristeki her bir eleman bir noktaya ait rengin sayısal değerini gösterir. İki boyutlu veriri bilgisayarın belleğine kaydetmek ve işlemek için bazı veri yapılarını oluşturmak gerekir. Bu veri yapıları bir taraftan programlamayı verili ve kolay gale getirirken diğer taraftan da bilgisayar belleğinde sıra sıra dizilmiş olan hücreleri amaca uygun olarak kullanmamıza olanak sağlar. Aslında program geliştirilirken bilgisayarın iç işleyişinden ziyade problemin nasıl çözüleceği önemlidir. Bu bölümde veri yapılarının neler olduğunu ve bu yapıları bilgisayarda nasıl gerçekleyebileceğimizi göreceğiz.

DİZİLER

Diziler üst düzey dillerde kullanılan en yaygın veri yapılarıdır. Diziler tek boyutlu veya çok boyutlu olabilirler. Tek boyutlu diziler ard arda eklenmiş elemanlardan oluşur. Örneğin; bir hastanın saat başı kaydedilen ateşi tek boyutlu bir dizidir. İki boyutlu diziler ise satır ve sütunlardan oluşan tablolar ile ifade edilir. Bu tür veri yapıları kullanan bir algoritmada, işlenecek veriler matris halinde; yani, satır ve sütunlarla ifade edilirler.

Çok boyutlu diziler, çok boyutlu uzayda gösterilen fonksiyonlar olarak düşünülebilirler. Örneğin, üç boyutlu uzayda, bir cismin hareketini incelemek için x, y, ve z koordinatlarındaki hızlarını içeren tablolar oluşturmak gerekir.

Tek Boyutlu Diziler

Elimizdeki algoritmanın zaman bağlı bir fonksiyona ait sayısal verileri işleyeceğini düşünelim. Programcı, böyle bir sinyali tek boyutlu bir dizi olarak düşünecektir. Bu dizideki sayılar sıra sıra bilgisayar belleğine kaydedilip, gerektiği zaman da buradan okunarak işlenirler. Bellek hücrelerinde program mantığı çerçevesinde okunan bu elemanlara “readings” adı verilir. Bir listedeki elemanın yeri sinyalin başlangıç zamanını verir. Elemanın listede bulunduğu yere  indeks denir. Tek boyutlu dizilerin belleğe eşlenmesi oldukça kolaydır. Veriler ardı ardına adreslenen bellek hücrelerinde saklanabilir. İlk hücrenin adresini bildikten sonra makine çevirircisi dizideki tüm elemanlarının yerlerini basit bir hesap ile bulabilir. Listedeki herhangi bir elemanın gerçek adresini bulabilmek için, bellekte bu dizi için kullanılan ilk hücrenin fiziksel adresine, elimizdeki listedeki kavramsal adresin bir eksiğini ekleriz.

Çok Boyutlu Diziler

İki boyutlu diziler her satırda eşit sayıda sütunlardan oluşan tabloları içerir. Bir dizinin boyutu ikiden fazla da olabilir. Örneğin renkli bir görüntüyü bilgisayar ortamında saklamak, ya da işlemek için her biri kırmızı, yeşil ve mavi tonlara karşı gelen tam sayılardan oluşan üç adet matris gerekir. Zira herhangi bir renk bu üç temel rengin karşımı ile elde edilir.  Çok boyutlu diziler için kullanılan kavramsal gösteririmi bilgisayardaki adreslere çevirmek, tek boyutlu dizilere göre daha karmaşıktır.

Dizileri bellekte sakladıktan sonra yapılması gereken ikinci iş istenen veriye ulaşabilmek için yöntem geliştirmektir. Diziler fiziksel belleğe eşlenirken çevirme işlemi makine çeviricileri tarafından yapılır. Programcı ise ne olup bittiğini bilmek sorunda kalmadan istedikleri karmaşıklıkta kavramlar bir ver yapısı yanılmayıp kullanabilirler.

LİSTELER

Dizilerin önemli bir özelliği boyutlarının zaman içinde sabit kalmasıdır. İki veya daha çok boyutlu dizilerde ise tabloların satır ve sütunla sayısı değişmez. Yani tablolar dikdörtgen şeklindedir. Böyle olunca bir dizinin fiziksel belleğe eşlenmesi basit bir çevirme işlemi ile yapılabilir. Bunun tersine dinamik ver yapılarının boyutu da şekli de süreç içinde değişir. Pratik uygulamalarda uğraştığımız verilerin boyutu değişken olabilir. Verinin bellekte saklanması için uygun bir veri yapısına ihtiyaç olmasının yanında, bu veriye daha sonra nasıl erişileceği konusunda da yöntemler geliştirmek gerekir. Önce dinamik veri yapısı oluşturmak üzere geliştirilen imleç kavramını, daha sonra da yaygın olarak kullanılan dinamik ver yapılarından olan bitişik ve bağlı  listeleri göreceğiz.

İmleçler

Dinamik ver yapısını oluşturmanın en temel kavramlarından birisi imleçtir. Bilgisayarlarda birçok fiziksel yer, nümerik adreslerle belirlenir. Eğer bir veri grubunun adresi biliniyorsa, veri gayet kolay bulunabilir. O halde, verinin kendisini bellekteki bir hücrede sakladıktan sonra, o hücrenin adresi sayısal bir değer ile başka bir hücrede saklanabilir. Bu veriye erişmek için öce verinin adresini saklayan hücreye daha sonda da bu adresin yönlendirmesi ile verinin saklandığı hücreye erişilir. Bir bakıma, verinin adresini saklayan hücre verinin kendisinin saklandığı hücreyi işaret etmektedir. Bu sebepten dolayı nümerik adres saklayan hücreye imleç (pointer) denir.


Yukarıdaki PPT dosyasını bilgisayarınıza Download etmek için tıklayınız (Bilinmeyen - veri_yapilari_slayt_.ppt)

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Close
Join me: