Amiga Dünyası sayı 23, sayfa 85

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 85

Birden fazla kaydı silmek için ise, bu işlemi teker teker uygularız. Bu yöntemin sakıncası, bir dosyayı silmek için üzerine kayıt yapmak zorunda oluşumuz, zaman kaybedişimizdir. Yine de, bence en mantıklısı bu yolu kullanmaktır. Bir ikinci yol ise tüm kayıtlar için paralel bir kayıt tutmaktır. Herhangi bir dosyanın geçerli olup olmadığını bu kayıt üzerinde bulabiliriz. Mesela silinmesi gereken kayıtlara 0, geçerli kayıtlara 0 harici bir sayı veririz. Yeni bir kayıt girerken ilk olarak bu diziyi inceler ve geçersiz kılınan dosyaların üzerine kayıt yaparız. Yok eğer geçersiz kayıt yok ise o zaman klasik sona ekleme yöntemine devam ederiz.

A-B-C-D-E-F-G-H-I-J-K-L 1-1-1-1-0-1-0-1-0-1-1-1

Örnekte E, G, I kayıt dosyaları geçersiz olarak işaretlenmiştir. Yeni bir kayıt yapılınca sıra ile bu boşluklar doldurulacaktır. Sözgelimi M, N, O ve P kayıtları eklenince:

A-B-C-D-M-F-N-H-O-J-K-L-P 1-1-1-1-1-1-1-1-1-1-1-1-1 halini alacaktır. Bu yol diskette bir başka dosya oluşturur. Hafızada fazladan yer işgal eder, üstüne üstlük basitçe hallettiğimiz kayıt durumunu inceleyen program kısmına ek karışıklıklar getirir. Sözü uzatmaya gerek yok. Meraklı olanlar biraz başağrısı ile programlarına bu yolu ekleyebilirler. Önce ilk silme işlemine ilişkin program kısmını yazalım (bu kısmı arama kısmına ilave edebilirsiniz. Bir isim aradığınızda, bulunan isim IF ile sorulmuş ve GOSUB isim_yaz denmişti. Bu bloğa devam ederek ve ENDIF ile bitirmek suretiyle):

isim_sil:

REM silinmesi istenen numara = sil isim REM Son numara = numara

if sil isim = numara then goto sonda get #1,numara put #1,sil_isim sonda: numara = numara -1 OPEN Son_isim FOR INPUT AS 2 PRINT #2,numara CLOSE #2

return

Belirttiğim gibi, silinmesi istenen numarayı bulabilmek için arama kısmından yararlanabilir, yani arama kısmına seçenek olarak ekleyebilir veya ayrı bir arama kısmı yazabilirsiniz. Artık programımız tamam. Yani her işi yapan bir programımız var. Sıra bunu bir düzene koymakta. İlk olarak sabitlerimizi yerleştirmeliyiz. Şu Son_isim ve D_isim adı verilen değişkenleri tanımlamalıyız. Bu isimlerin mantıklı bir dosya adresi olması gerekiyor. Yoksa File not Found şeklinde hatalar alırsınız. Tanımlamalardan sonra ise sıra bir menüye geliyor. Bunun için ekran temizlenir, programın ismi ve seçenekleri yazılır. Daha sonra ise seçeneklerden birinin seçilmesi beklenir. Bunun ardından gerekli bölümlere dallanılır ve geri gelinir. En son olarak bir programı bitirme seçeneği bırakılır, burada ise devamlı açık tuttuğumuz 1 numaralı dosya CLOSE #1 ile kapatılır.

Tanımlar: Son isim="Df1:Amiga/dosya.son"

menu: CLS Print "Seçenekler" Print" 1. Yeni_kayıt...."

print" 6. Son"

INPUT, INKEY$, ON MENU v.s. GOSUB lar

Goto menu Son:

Close #1 End

Altprogramlar isim_yaz: yeni_isim:

Programımız hazır. Şimdi hataları bulmaya başlayalım. Noktalama hataları, estetik hataları, mantık hataları (olur, olur). Böylece beraber bir program yazmış olduk. Anlatmak istediğim, bir yerde yazılı bir programı çalıştırmakla kalmadık, program parçalarını alıp birleştirdik ve harbiden program yazdık. Sizi tebrik ederim (umarım çalışıyordur). Hala bir kaydı silmek için tüm dosyayı taramak zorunda kalıyoruz. Ufak uygulamalarımız olduğu düşünülürse, bu bizi o kadar rahatsız etmemeli. Bu sorunların önüne geçebilmek için, gerekli yöntemler köşemizin amacı dışında kalıyor. Elimizdeki programın verimini arttırmak için, bir iki öneride bulunmak istiyorum: Çalışmadan önce ilgili iki dosyayı RAM:'a veya varsa RAD:'a kopyalayın. Dosyaların erişim zamanı aşırı artacaktır. Ne var ki, çakılmalara ve elektrik kesilmelerine karşı savunmanız düşecektir. Sorunu dosyayı sık sık (yeniden yazmak istemediğiniz kadar yazdıkça) diskete kaydederek çözebilirsiniz. Bu iş için program içinde ek bir dosya açarak veya CLI'nın Copy emirlerini kullanarak yapabilirsiniz. İşiniz bitince dosyanın kapandığından emin olun. Aksi takdirde 0 boyutlu cici bici bir dosyanız olacaktır. Ne yazık ki, elektrik kesilmeden önce size haber vermeyecek ve dosyanız açık kalacaktır. Bunun önüne geçebilmek için, dosyayı tüm program süresince değil de, sadece ihtiyacınız oldukça OPEN ile açın. Ardından hemen CLOSE ile kapatın. En tehlikelisi ise diskete yazı yazılırken elektrik kesilmesidir (elektrik kesilmesine Resetler ve sistemin kötü şakaları da dahil). Bu durumda diskete zarar gelme olasılığı yüksektir ve Disk Structure Corrupt mesajları bile alabiliriz. Tüm bu tehlikelere rağmen yılmayın devam edin (sözü geçen sorunlar 40 yılda bir oluyor).

Programınızın hızı az mı geliyor, daha hızlı bir Basic ile mesela Hisoft ile çalışın, başka dil kullanın (Pascal, C) veya gidin Superbase veya Miamiga File ile oynayın.

Basic ile ilgili sorunlarınıza eğilmeye devam edeceğiz. Sorularınız varsa mektup yazın. Eğer benim yazılarımla ilgili sorunlar veya programlarda hatalar varsa, lütfen adımı kullanın (bulmak daha kolay oluyor!) Gelecek sayıda bazı süsleme tekniklerine değinmek istiyorum (araya başka bir şey girmezse), hepinize sevgiler, başarılar.

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