Commodore sayı 4, sayfa 15
Sayfanın metni

Sayfa 15

Dizin Dosyası

Yaratmak

Sorunun çözümü dizin (index) dosyasındadır (şekil 2). Genelde disketteki kayıtların sırası ile aynı olacak şekilde yazar adlarını içeren ayrı bir dosya tutulur. Bu dosya RAM'de yani ana bellekte olduğu için arama çok daha hızlı bir şekilde yapılır. Dahası ekrana veya yazıcıya son bulunan kayıt bilgileri aktarılırken, arama sürebilir. Bu yöntemde tek gecikme ilk istenilen kayda erişilirken geçen süredir. İlk kayıt bulunduktan sonra arama anında olur gibi görünür. Sayıca çok fazla kaydınız var ise ve bu kayıtlara baştan sona kadar erişim yapmadan ulaşmak istiyorsanız, dizin dosyaları sisteminiz için zorunlu bir gereksinimdir. Bu çözüm bir başka sorunu beraberinde getirir. Dizin dosyasının (ya da dosyalarının) da diskette saklanması gerekmektedir. Dosya ne kadar uzun ise, her bilgi girişinde dizini yüklemek de o kadar uzun sürecektir ve ana bellekte de o kadar yer harcanacaktır. Bu nedenle dizin dosyaları mümkün olduğu kadar kısa tutulmalı ve saklanması mümkün olduğu kadar kolay olmalıdır. Bu da dizin sözcüklerinin (dizin dosyasına girişler) kısa fakat bilgi yönünden yüklü olmalarını gerektirir. Soyadlarının genelde ilk sekiz harfe göre dizine alınması düşünülebilir. Bu istenilen kayıt yerine başka bir kayda erişime neden olabilir. Örneğin YORGANCI'yı ararken YORGANCIOĞLU'na erişilebilir. Program içinde gerekli denetim yapıldığı sürece bu önemli değildir. Çünkü dizin içindeki soyadı anahtarlarını sekiz harften dokuz harfe çıkarmak yanlış kayda erişimi önler gibi gözükse de bin kayıtlık bir dizine bin byte (1K) daha ekleyeceği için iyi bir seçenek değildir. Sorunların çözümünde muhakkak bazı şeylerden fedakârlık etmeniz gerekecektir.

İki Tür Arama

Diskete alınması gereken bir başka husus temel olarak iki ayrı tür arama yönteminin bulunduğudur. Birinci yöntem eşlemeli aramadır, yazar adı örneğinde gördüğümüz gibi, bu bir özdeşlik eşlemesidir. İkinci yöntem ise konu eşlemesidir. Belirli bir konudaki kitapların aranmasını buna örnek olarak verebiliriz. Bu aramada, konular kaydın “içeriğinde” vardır. Fakat kitap sizin aramadığınız ve sizin için önemli olmayan konuları da içerebilir. Burada yapılan eşleme özdeşlik eşlemesi değil, içeriksel işlemedir. Bunu gerçekleştirmeniz, konu bilgilerini nasıl kodladığınıza bağlıdır. Genel ŞEKİL 3'de gösterilen bitmap türü bir kod kullanılır. PROGRAM, BASIC ve MAKİNE KODUNDA “Özdeş arama”nın nasıl yapıldığını gösteren bir örnektir. PROGRAM 2 aynı işlemi “içerik arama” yöntemi için yapar. Kullanmanız gereken birkaç teknik vardır. İlk olarak anahtarların ve dizin sözcüklerinin girişi için tampon bellek alanları (buffer) kullanılabilir. Dizin sözcüğünün oluşturulması (örneğin yazar soyadından) için kullanılan yordam, karşılaştırılacak dizin sözcüğünü bu tampon alana yerleştirmekte de kullanılabilir. Bilgi erişim sorunlarınızın ışığı altında bilgiyi nasıl kodlayacağınızı dikkatli bir şekilde belirleyin. Bu aşamada harcanan birkaç saatlik fazla çalışma sonuçta çok büyük farklar yaratabilir. Özdeş aramada anahtarınız karşılaştırıldığı dizin sözcüğü kadar uzun değil ise, geri kalan yerleri “null” karakterleri ile doldurun. Arama yordamında (örnek programda gösterildiği şekilde) karakteri ile karşılaşıldığı anda geri dönülecektir. Bu şekilde 'YILMAZ' girip tüm YILMAZ'ları veya sadece 'Y' girip soyadı Y ile başlayan tüm yazarları bulabilirsiniz. Eğer kayıtlara bu iki arama yönteminin ikisini de kullanarak erişmek istiyorsanız, yöntemleri sıra ile uygulayarak bunu yapabilirsiniz. Örneğin, önce özdeş arama yapın. İstenilen bir kayda eriştiğinizde ikinci arama türü olan içerik aramayı uygulayın. Eğer kayıt iki testi de başarı ile geçerse bu, tam istediğiniz bilgi olur. Bu ikili kullanım sizin zamanla ve önemsiz bilgiler için anahtar belirlemenizi sağlar.

Kayıt Biçimini Belirleme

Şimdi sıra, kayıtlarınızın nasıl düzenleneceğini saptamaya geldi. Bu konu ayrıntılı olarak “Veri Düzenleri” yazımızda incelendiğinden, burada yalnızca önemli bir iki ayrıntıya değineceğiz. Eğer rölatif kayıtlar kullanıyor iseniz, kullanılacak kayıt türünü belirlemede karşılaşılan aynı düzenleme sorunu ile karşı karşıya gelirsiniz. Kayıt belirli “alan”lara bölünür. Her kayıttaki alanların boyları aynıdır. Bir alan yazar adı, bir diğeri yayın yılı (dört byte ile dört basamaklı bir yılı kodlayabilirsiniz veya yıldan 1792 çıkartarak tek bir byte ile 1792'den 2047'ye kadar olan tüm yılları kodlayabilirsiniz). Her alan, ilgili veri ögesi için saklamayı düşündüğünüz en büyük veri dizgisini içine alacak kadar büyük olmalıdır. Kayıt biçimini belirlemek için istediğiniz kadar zaman harcayın. Disketten bir kaydı sadece görüntülemek için okuyacağınızdan, bilgiyi küçük alanlara bölmek yerine birkaç uzun karakter zinciri (string) halinde saklamak iyi bir karar olabilir. Yazar adı ve yıl bir zinciri halinde saklanabilir. Daha sonra disketten okuma ve bilgiyi görüntülemeyi programlamak kolaydır. Sayısal bilgiler ondalık kesirli ya da tam sayı olabilir.

KAYIT “X” KÖKSAL,A BİLGİSAYARLAR 41978 (yazar) (başlık) (yıl) DİZİN DOSYALARI Yazarlar: Konular - (X-1)| KARAKAŞ (x-1)| 041011400 (x)| KÖKSAL 1000000 (x41)| TÖRECİ.E (Xx41)| 01101110 ŞEKİL 2: Dizin dosyaları hızlı arama için kayıtların bir bölümünü içerirler.

Klavyeyle gezinmek için ← ve → tuşları.