|
BİLGİLERİN DOSYAYA'DAN OKUNMASI Daha önce herhangi bir bilgi dosyasına kaydettiğimiz bilgileri veya bu bilgilerden istediklerimizi görebilmek için yapmamız gereken şunlardır:
Şimdi bir önceki derste hazırladığımız program ile girdiğimiz bilgileri ekranda görmek istediğimizi varsayalım. Girilen Bilgiler neydi; Sıra No, Adı, Sınıfı, Numarası, Notu Şimdi bu program ile Ahmet, Ali ve Veli 'nin bilgilerini girmiş olalım. Tabi bunları girerken sırayla girmiş olmamız lazım. Yani programı çalıştırdığımız zaman ekrana çıkan sıra no kısmına bir diyip, o sayfaya Ahmet'in adını soyadını sınıfını, numarasını ve notunu girdikten sonra ekranda yazan "Devam için 1, Çıkış için 2'yi seçin" mesajının karşısına 1 yazıp entera bastıktan sonra ekran yenilenip karşımıza sıra numarası soran mesaj çıktığında bu defa sıra numarasına 2 yazıp Ali'nin bilgilerini, 3. sefer Veli'nin bilgilerini girip çıktığımızı kabul edelim. Tabi bu şekilde daha bir çok kayıt girebiliriz. Bu bilgileri ekranda görmek için şöyle bir program hazırlayabiliriz: (Unutmayın bir önceki dersteki bilgi giriş programıyla bilgilerin girilmiş olması gerekir. Boş bir dosyadan bilgi alamazsınız.)10 OPEN "DERS.BIL" AS 1 20 FIELD 1,3 AS SN$,20 AS ADI$,4 AS SNF$,5 AS NUMARA$,3 AS NOTU$ 30 CLS 35 PRINT "SR.NO ADI SOYADI SINIFI NO'SU NOTU" 40 FOR I=1 TO LOF(1) 50 GET 1,I 60 IF EOF(1) THEN 100 70 A$=SN$:B$=ADI$:C$=SNF:D$=NUMARA:E$=NOTU 80 PRINT A$" "B$" "C$" "D$" "E$ 90 NEXT 100 LINE INPUT "ÇIKIŞ İÇİN ENTER";JJ$ 110 CLOSE 120 END
Şimdi bu programın satır satır açıklamasını yapalım: 10 OPEN komutuyla daha önce öğrendiğimiz gibi bilgi dosyasını açıyoruz. Örnekte açmış olduğumuz dosya daha önce oluşturduğumuz DERS.BIL dosyası. 20 Açtığımız dosyanın değişkenlerini tanımlıyoruz. Dikkat: Bir dosya ilk kez açılırken FIELD komutu ile değişkenleri nasıl tanımlamışsak aynı dosyayı daha sonra açtığımızda da tamamen aynı tanımlamaları kullanmalıyız. Aksi takdirde hatalara neden olabilir. 30 Ekranı sildiriyoruz. 35 Ekranın üst tarafında alt satırlarda görünen bilgilerin ne anlama geldiğini açıklayan bilgiler. 40 Burada daha önce öğrendiğimiz FOR çevrim (döngü) komutunu biraz daha farklı kullanmışız. FOR I= 1 TO LOF(1) satırının anlamı:FOR : Çevrime girI= Çevrim Değişkeni1: 1. SatırTO: e, a - ye, yaLOF: Line Of File (Dosyanın Satırları)(1): 1 no'lu Dosya)Yani, demek ki bu satır ile şunu demek istiyoruz: I çevrim değişkeninin alacağı değere göre çevrime gir. I değişkeni ise değerini = işaretinden sonra yazılan şekilde alacak, yani satır sonunda parantez işlemi içerisinde belirtilen 1 numaralı dosyada , 1 numaralı satırdan başlayarak dosya satırları boyunca çevrime girecek.50 Burada yeni bir komut daha öğreniyoruz: GET : Bu komut dosyadan belirtilen satırdan bilgi okumaya yarar. Burada GET 1,I şeklindeki ifade; 1 Numaralı Dosyada , I değişkeninin aldığı değere eşit olan satırdan al anlamını taşıyor.60 IF EOF(1) THEN 100 satırı ise Eğer çevrim tamamlanmış ve 1 no'lu dosyanın son satırına gelinmiş ise çalışmayı 100 no'lu satırdan devam ettir anlamına geliyor. Burada EOF deyiminin anlamı; End Of File şeklindeki İngilizce cümlenin karşılığı olan (Dosyanın sonu) dur.70 FIELD komutu içerisinde tanımlanan ara bellek değişkenlerinde bulunan bilgileri başka değişkenlere aktarıyoruz. 80 Bu değişkenlerdeki bilgileri ekrana yazdırıyoruz. Esasen 70 nolu satırda yaptığımız işlemi yapmadan direk arabellek değişkenlerinden de ekrana yazdırabiliriz. 90 Programı dosyanın bir sonraki satırından bilgi okumaya devam ettirmek ve bir sonraki satıra geçeceğimiz için I çevrim değişkeninin değerini bir artırmak üzere NEXT komutuyla, FOR I= 1 TO LOF(1) komutunun bulunduğu satıra gönderiyoruz. 100 Dosyanın bütün satırlarının okunması tamamlandıktan sonra program 60 numaralı satır gereği bu satırdan itibaren çalışmaya başlar. Her ne kadar dosyadan bilgi okuma işlemimiz tamamlanmış ise de, kullanıcıya ekranda bilgilerin ne kadar kalması gerektiğini kendisinin belirleme imkanını tanımak amacıyla herhangi bir değişkene bilgi girişi yaptırarak (Burada JJ$ isimli değişkeni kullanmışız) Bu bilgi girişi yapılıncaya kadar ekranda bilgilerin sabit kalmasını sağlarız. Ne za man ki kullanıcı "Çıkış İçin Enter" mesajı bulunan JJ$ sahasına bilgi girişini Enter'a basarsak yaparsa o zaman programdan çıkılmış olur. Ya da program devam ediyorsa program kaldığı yerden devam eder. Eğer böyle bir kontrol mekanizmasının olmadığını ve programın başka bölümler halinde devam ettiğini düşünürsek, program ekrana listelenmeyi bitirir bitirmez bu bölümü kapatacağından ve yeni işlemlere geçeceğinden kullanıcı ekrandaki bilgileri göremeyecekti. Eğer 100 no'lu satıra CLS komutu yazıp programı çalıştırırsanız konuyu daha iyi anlarsınız.110 Bu komut, yani CLOSE komutu dosya kapatma komutudur. OPEN komutu ile açılan dosyayı kapatır. Aynı dosyadan bilgi almak için tekrar OPEN komutu ile açmak gerekir. 120 END (çıkış) komutu. Yukarıda PRINT A$" "B$" "C$" "D$" "e$ şeklinde ekrana yazdırdığımız bilgiler yan yana ve aralarında satırda belirtilen " işaretleri arasındaki kadar boşluk bırakılarak ekrana yazılırlar. Eğer 35 no'lu satırda belirtilen başlık bilgilerinin altlarına tam olarak hizalanmaz larsa bu tırnak işaretleri arasındaki boşlukları artırarak veya eksilterek ya da 35 no'lu satırdaki başlık bilgilerinin birbirine uzaklıklarını ayarlayarak bu sorunu halledebilirsiniz.
|