Dosyadaki Bilgilerin Ekrana Yazdırılması

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:

1. Önce içinden bilgileri alıp görmek istediğimiz dosyayı OPEN komutu ve FIELD komutu kullanarak açarız.

2. Dosyadaki bütün bilgileri görmek için FOR çevrim komutunu kullanarak dosyanın birinci satırından son satırına kadar bir çevrime gireriz.

3. Her satırdaki bilgileri sırayla birer değişkene kaydeder ve ekrana yazdırırız.

4.Eğer işlem dosyanın son satırına gelmiş ise işlemi bitirir ve dosyayı kapatırız.

Ş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 mesajına "1" yazıp, 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 No" 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 listlenecek bilgilerin ne anlama geldiğini açıklayan başlıklar.

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 gir

I=Çevrim Değişkeni

1:1. Satır

TO:e, a - ye, ya

LOF:Lines 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. Bu cümledeki kelimelerin başharflerinden oluşur.

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 zaman 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 hizalanmazlarsa 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.

17. Sayfa           19. Sayfa

INDEX