Özet
1986 yılında Commodore gazetesinin 15. sayısında, dizin dosyaları hakkında bilgi veren bir makale bulunmaktadır. Makale, dizin dosyalarının nasıl çalıştığını ve nasıl kullanıldığını açıklamaktadır.
Diğer Dergiler
Tam metin içeriği
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 arama çok daha hız-
lı 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şilirken 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 iç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 (4K) 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.
Iki 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. PROGRAMA, BA-
SIC ve MAKINE 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 yordam,
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-
rakterleri 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ü
#
KAYIT *X”
KÖKSAL,A
(yazar)
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, burada yal-
nızca önemli bir iki ayrıntıya değine-
ceğiz. Eğer rölatif kayıtlar kullanı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 4792'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.
BİLGİSAYARLAR
(başlık)
DİZİN DOSYALARI
Yazarlar.
KARAKAŞ
KÖKSAL
TÖRECİ,E
Konular
0104414100
(X)İ 4000000
014014140
0641)
(X*41)
ŞEKİL 2: Dizin dosyaları hızlı arama için kayıtların bir bölümünü içerirler.
commodore
15