mak yaklaşık 20 dakika alacaktır. Bu süre küçümsenmeyecek kadar bü- yüktür. Bunun altından nasıl kalkılabi- lir? Dizin Dosyası Yaratmak Sorunun çözümü dizin (index) dos- yasındadır (şekil 2). Genelde disketteki kayıtların sırası ile aynı olacak şekilde yazar adlarını içeren ayrı bir dosya tu- tulur. Bu dosya RAM'de yani ana bel- lekte olduğu için aramcı çok daha hız- li bir şekilde yapılır. Dahası ekrana ve- ya yazıcıya son bulunan kayıt bilgile- ri aktarılırken, arama sürebilir. Bu yön- temde tek gecikme ilk istenilen kay- da erişiliken geçen süredir. İlk kayıt bulunduktan sonra arama anında olur gibi görünür. Sayıca çok fazla ka- yıtınız var ise ve bu kayıtlara baştan sona kadar erişim yapmadan ulaş- mak istiyorsanız, dizin dosyaları siste- miniz İçin zorunlu bir gereksinimdir. Bu çözüm bir başka sorunu berabe- rinde 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 harcanacak- tır. Bu nedenle dizin dosyaları müm- kün olduğu kadar kısa tutulmalı ve saklanması mümkün olduğu kadar kolay olmalıdır. Bu da dizin sözcükle- rinin (dizin dosyasına girişler) kısa fa- kat bilgi yönünden yüklü olmalarını gerektirir. Soyadlarının genelde ilk sekiz har- fe göre dizine alınması düşünülebilir Bu istenilen kayıt yerine başka bir ka- yıta erişime neden olabilir. Örneğin YORGANCI'yı ararken YORGANCIOĞ- LU'na erişilebilir. Program içinde ge- rekli denetim yapıldığı sürece bu önemli değildir. Çünkü dizin içindeki soyadı anahtarlarını sekiz harften do- kuz harfe çıkarmak yanlış kayıta erişi- mi önler gibi gözükse de bin kayıtlık bir dizine bin byte (1K) daha ekleye- ceği için iyi bir seçenek değildir. So- runların çözümünde muhakkak bazı şeylerden fedakârlık etmeniz gereke- cektir İ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ön- tem eşlemeli aramadır, yazar adı ör- neğinde gördüğümüz gibi, bu bir öz- deşlik eşlemesidir. İkinci yöntem ise konu eşlemesidir. Belirli bir konudaki kitapların aranmasını buna örnek ola- rak verebiliriz. Bu aramada, konular kayıtın “içeriğinde” vardır. Fakat kitap sizin aramadığınız ve sizin için önem- li olmayan konuları da içerebilir. Bu- rada yapılan eşleme özdeşlik eşleme- si 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 1, BA- SIC ve MAKİNE KODUNDA “Özdeş ara- ma”nın nasıl yapıldığını gösteren bir örnektir. PROGRAM 2 aynı işlemi “içe- rik 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öz- cüğünün oluşturulması (örneğin yazar soyadından) için kullanılan yordom, karşılaştırılacak dizin sözcüğünü bu tampon alana yerleştirmekte dekul- lanılabilir. Bilgi erişim sorunlarınızın ışığı altında bilgiyi nasıl kodlayacağınızı dikkatli bir şekilde belirleyin. Bu aşa- mada harcanan birkaç saatlik fazla çalışma sonuçta çok büyük farklar ya- ratabilir. Özdeş aramada anahtarınız karşı- laştırıldığı dizin sözcüğü kadar uzun değil ise, geri kalan yerleri “null” ka- rakferleri ile doldurun. Arama yorda- mında (örnek programda gösterildi- ği şekilde) karakteri ile karşılaşıldığı anda geri dönülecektir. Bu şekilde YIL MAZ' girip tüm YILMAZ'ları veya sade- ce 'Y' girip soyadı Y ile başlayan tüm yazarları bulabilirsiniz. Eğer kayıtlara bu iki arama yönte- minin ikisini de kullanarak erişmek is- tiyorsanız, yöntemleri sıra ile uygula- yarak bunu yapabilirsiniz. Örneğin, önce özdeş arama yapın. İstenilen bir kayıta 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 kulla- nı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üzen- leneceğini saptamaya geldi. Bu ko- nu ayrıntılı olarak “Veri Düzenleri” ya- zımızda incelendiğinden, burcıdcı yol- nızca önemlli bir iki ayrıntıya de! ceğiz. Eğer rölatif kayıtlar kullonıyor iseniz, kullanılacak kayıt türünü belir- lemede 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ı kodla- yabilirsiniz). 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. Disket- ten bir kayıdı sadece görüntülemek için okuyacağınızdan, bilgiyi küçük alanlara bölmek yerine birkaç uzun karakter zinciri (string) halinde sakla- mak iyi bir karar olabilir. Yazar adı ve yıl bir ASCII zinciri halinde saklanabi- lir. Daha sonra disketten okuma ve bil- giyi görüntülemeyi programlamak ko- laydır. Sayısal bilgiler ondalık kesirli ya da tam sayı olabilir. * KAYIT “X” KÖKSAL,A BİLGİSAYARLAR - 4978 (yazar) (başlık) * ; (yıl) DİZİN DOSYALARI Yazarlar : Konular - (X-1)| -KARAKAŞ (x-1)| 040411100 (Xx)| KÖKSAL (X) | 1000000 (x-41)| TÖRECİ,E (Xx41)1 04401110 ŞEKİL 2: Dizin dosyaları hızlı arama için kayıtların bir bölümünü içerirler. commodore