|
Önemli Not: Lütfen bu bölümü, yani dosya açma, dosyaya bilgi kaydetme ve bir sonraki sayfada belirtilen konuları çok dikkatli okuyun. Anlayamadığınız bölümleri tekrar okuyun ve uygulayın. Yine de anlayamadığınız bölüm olursa açıklayıcı bilgi için sayfanın altında bulunan mesaj gönder bölümünden mail atın. Çünkü bu bölüm Gwbasic programlama dilinin en önemli bölümlerinden biridir. BİLGİLERİN DOSYAYA KAYDEDİLMESİ Buraya kadar iyi, güzel de, yaptığımız programları kullanarak girdiğimiz bilgilerin kalıcı olmasını nasıl sağlayacağız? Yani, programı save komutu kullanarak kaydedebiliyor, daha sonra istediğimiz zaman load komutu kullanarak bulabiliyoruz, ama değişkenlere girdiğimiz bilgiler; yerlerine yenisini gi rdiğimiz ya da programdan çıktığımızda kayboluyor, bunları nasıl saklayacağız?İşte, girdiğimiz bilgilerin kalıcı olmasını sağlamak amacıyla Gwbasic programlama dilinde dosyalama sistemini kullanacağız. GWBASIC (BASIC) PROGRAMLAMA DİLİNDE DOSYALAMA SİSTEMİ Gwbasic programlama dilinde değişkenlere girdiğimiz bilgileri saklamak ve istenildiğinde bulabilmek amacıyla dosyalama sisteminden yararlanırız. Bunun için de disket veya sabit diskde (A , B , C veya D gözünde) herhangi bir dosya(kütük) açarız ve değişken lerdeki bilgileri bu dosyaya aktarırız. Her girilen bilgiyi ayrı bir satıra kaydederiz. Şimdi bunu nasıl yaptığımızı inceleyelim:KURAL: Gwbasic dilinde açılan bilgi dosyalarının isimleri ne olursa olsun uzantı isimleri .bil olarak verilir. (Bakın; bilgi dosyası diyorum. Save komutuyla kaydettiğimiz program dosyalarıyla karıştırmayın) Uzantı isminin .bil olarak verilmesindeki amaç, bu dosyanın bilgi dosyası olduğunu anlayabilmemizdir.Gwbasic 'de iki çeşit dosyalama sistemi vardır:
Sıralı dosyalar kayıtların disk veya disket ortamına girdiklerinde saklandıkları dosyalardır. Bu dosyalarda bulunan bilgilere ulaşım da sıralı olur. Örneğin 4. satırdaki bilgiye ulaşmak için, 1, 2 ve 3.satırdaki bilgilerin de okunması gerekir. Random dosyalar ise bir tamsayı anahtara göre disk veya disketlere kaydedilen dosyalardır. Bu sayede kayda (istenilen bilgiye) ulaşım hızlı olur. Ancak girilen bilgiler artan sıralı girilmediği takdirde diskde daha fazla yer kaplar. Fakat günümüzde sabit disklerin büyüklüğü ile mukayese edilirse ne kadar fazla yer kaplasalar da önemli bir yer kaplamazlar. Sadece ulaşım hızı biraz azalabilir. Biz kullanım ve erişim kolaylığı nedeniyle bu tür dosyalama sistemini inceleyeceğiz.
OPEN Dosya açmak için kullanacağımız komut budur. OPEN komutu ile normal şartlar altında bir program içerisinde aynı anda en fazla 3 bilgi dosyası açılabilir. Biz eğer 4 veya 5 dosyayı aynı anda açmak istiyorsak. Gwbasic derleyicisini çalıştırırken, ya dos ortamında veya toplu işlem dosyası içerisinden (sayfa sonunda açıklaması var) çalıştırarak ; GWBASIC/F:<DOSYA SAYISI> Şeklinde yazmalıyız. Diyelim ki aynı anda 5 dosya açılabilsin. O takdirde; GWBASIC/F:5 Yazıp enter'a basacağız. Komutun kullanılışı: OPEN "Dosya İsmi .Uzantı İsmi" AS Dosya NumarasıBunu açıklarsak, OPEN: Dosya aç Dosya ismi ve Uzantı İsmi: İlk defa açıyorsak bizim vereceğimiz herhangi bir dosya ve uzantı ismi (tabiki uzantı ismi bil olmalı) AS: gibi, olarak anlamında Dosya numarası da 1, 2, 3 gibi bir numara. Bir örnek yapacak olursak:OPEN "orhan.bil" AS 1Komutunda Gwbasic derleyicisi aracılığıyla bilgisayara şunu diyoruz: Dosya aç İsmi orhan uzantı ismi bil olsun bunu 1 numaralı dosya olarak aç.
OPEN"C:\BELGELER\ORHAN.BIL" as 1 C gözünde belgeler di zininde bulunan orhan.bil dosyasını 1 numaralı dosya olarak açar.OPEN"C:\DENEME\AHMET.BIL" as 2 C gözünde deneme dizininde bulunan ahmet.bil dosyasını 2 numaralı dosya olarak açar. Bunun yanında bir ikinci dosya açarsak burada ikinci dosyanın sonuna AS 2 yazıyoruz. OPEN komutu hem dosya ilk kez açıldığında hem de olan bir dosyayı açmak için kullanılabilir. Yalnız OPEN komutu ile dosyayı açmak yetmiyor. Ayrıca dosyanın tanımlanması gerekiyor. Yani dosya içine yerleşecek bilgilerin yerleşeceği alanların isi m ve özelliklerinin tanıtılması gerekiyor. Bu nedenle OPEN komutundan hemen sonra FIELD komutu ile gerekli tanımlamaları yapmamız gerekiyor.FIELD Dosyanın kayıt alanlarını, isimlerini ve byte olarak uzunluklarını tanımlar. Diyelim ki yukarıdaki orhan.bil dosyasını açtık ve yaptığımız programdaki a$ değişkeni içindeki sıra no bilgisi, b$ değişkeni içindeki Adı bilgisini ve c$ değişkeni içindeki Soyadı bilgisini bu dosyaya kaydedeceğiz. İşte bu bilgilerin hard diske veya diskete yerleşmesi amacıyla bilgileri n önce bilgisayar ile hard disk veya disket arasındaki bufer (ara bellek) değişkenlerine yerleşmesi gerekir. Yani a$, b$ ve c$ değişkenlerindeki bilgileri önce yine isimlerini bizim belirleyeceğimiz bufer değişkenlerine aktarmamız gerekir. Bunun içinde bu bufer değişkenlerini FIELD komutu içerisinde tanımlamamız gerekir. Diyelimki;a$ değişkenindeki sıra no bilgisini sıra$ ismi vereceğimiz bufer değişkenine aktaralım. Uzunluğu 3 karakter olsun b$ değişkenindeki Adı bilgisini adı$ ismi vereceğimiz bufer değişkenine aktaralım. Uzunluğu 15 karakter olsun. c$ değişkenindeki Soyadı bilgisini soyad$ ismi vereceğimiz bufer değişkenine aktaralım. Uzunluğu 15 karakter olsun. Bu takdirde yazacağımız saha tanımlama komutu şu şekilde olur: FIELD 1 ,3 AS SIRA$,15 AS ADI$,15 AS SOYAD$Yani bu komutu açıklarsak; 1 numaralı Dosyanın değişken isimleri ve uzunlukları, 3 karakter olarak sıra$,15 karakter olarak adı$,15 karakter olarak soyad$ anlamına gelir.
Özet olarak, programın başında bilgilerin yerleşeceği dosyayı açmak için OPEN komutu ile dosyanın ismini ve kaç numaralı dosya olarak açılacağını belirtiyoruz. FIELD komutu ile de bu dosyanın içinde bulunan bilgilerin ara bellekte yerleşeceği değişkenlerin isimlerini ve içindeki bilgilerin ne kadar byte (karakter) uzunlukları nda olduklarını açıklıyoruz.Buna göre örnek bir program yapalım ve dosyanın açılması ve sahaların tanıtılmasını uygulamalı görelim daha sonra da bu dosyalara bilgilerin kaydedilmesini görelim. Program: Girilecek bilgiler: Sıra no, Adı Soyadı, Sınıfı, Öğrenci Numarası, Notu Değişkenler:a$,b$,c$,d$,e$ Bufer (ara bellek) değişkenleri: sn$,adı$,snf$,numara$,notu$
Buna göre şöyle bir program yapabiliriz: 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 40 LOCATE 5,5:LINE INPUT "SIRA NO :",A$ 50 LOCATE 7,5:LINE INPUT"ADI SOYADI:",B$ 60 LOCATE 9,5:LINE INPUT"SINIFI :",C$ 70 LOCATE 11,5:LINE INPUT"NUMARASI:",D$ 80 LOCATE 13,5:LINE INPUT"NOTU :",E$ 90 RSET SN$=A$:LSET ADI$=B$:LSET SNF$=C$:LSET NUMARA$=D$:RSET NOTU$=E$ 100 PUT 1,VAL(A$) 110 LOCATE 16,5:LINE INPUT"Devam için 1, Çıkış için 2'yi seçiniz ...",x$ 120 IF X$="1" THEN 30 130 IF X$="2" THEN END 140 GOTO 110 Şimdi bu mini programın açıklamasını görelim. 10 Çalıştığımız dizinde ders.bil isimli bir dosyayı 1 numaralı dosya olarak aç .20 Bu 1 numaralı dosyanın ara bellek değişkenleri 3 karakter uzunluğunda sn$,20 karakter uzunluğunda adı$,4 karakter uzunluğunda snf$,5 karakter uzunluğunda numara$,3 karakter uzunluğunda notu$ 'dır. 30 Ekranı sil. 40 5. satır, 5. sütuna git, ekrana Sıra No yaz ve program çalıştığında bu mesajın önüne girilen bilgiyi a$ değişkenine yaz.50 7. satır, 5. sütuna git, ekrana Adı Soyadı yaz ve program çalıştığında bu mesajın önüne girilen bilgiyi b$ değişkenine yaz. 60 9. satır, 5. sütuna git, ekrana Sınıfı yaz ve program çalıştığında bu mesajın önüne girilen bilgiyi c$ değişkenine yaz.70 11. satır, 5. sütuna git, ekrana Numarası yaz ve program çalıştığında bu mesajın önüne girilen bilgiyi d$ değişkenine yaz. 80 13. satır, 5. sütuna git, ekrana Notu yaz ve program çalıştığında bu mesajın önüne girilen bilgiyi e$ değişkenine yaz.90 Kırmızı Renkle yazılan bu yeni öğreneceğimiz komut satırını aşağıda açıklıyacağız. 100 Kırmızı Renkle yazılan bu yeni öğreneceğimiz komut satırını aşağıda açıklıyacağız. 110 16. satı r, 5. sütuna git, ekrana Devam için1, Çıkış için 2'yi seçiniz yaz ve program çalıştığında bu mesajın önüne girilen 1 veya 2 değerini x$ değişkenine yaz.120 Eğer x$ değişkenine girilen bilgi 1 ise bir başka bilgi girmek için 30 numaralı satıra dönerek yeniden bilgi girişi yapmak üzere programın çalışmasına devam et. 130 Eğer x$ değişkenine girilen bilgi 2 ise programı sona erdir. 140 (Eğer x$ değişkenine girilen bilgi 1 veya 2 'den farklı ise,120 veya 130 numaralı satırlarda belirtilen işlemler yapılmayacak ve çalışma ister istemez bu satırları işlem yapmadan geçecek. Bu nedenle, kullanıcının illa da 1 veya 2'yi seçmesi için bu satır çalışmayı tekrar 110 nolu satıra yönlendiriyor.) 110 no'lu satıra git. Yukarıda kırmızı renklerle belirtilen satırlara gelince: Burada yeni öğreneceğimiz komutlar; RSET, LSET, PUT ve VAL komutlarıdır. Tek tek açıklayalım. RSET: Bilgilerin ara bellek değişkenlerine sağa yanaşık yerleşmesini sağlar. Diyelim ki 15 karakter uzunluğundaki ADI$ sahasına (değişkenine) b$ değişkeninde bulunan Ahmet Aygün bilgisini aktaracağız. Bunu RSET komutu kullanarak RSET adi$=b$ şeklinde aktardığımız zaman bilgiler bu sahaya sağa yanaşık olarak;....Ahmet Aygün şeklinde yazılır. LSET: Bilgilerin ara bellek değişkenlerine sola yanaşık yerleşmesini sağlar. Yukarıdaki örneği bu defa LSET adi$=b$ şeklinde yazarsak; Ahmet Aygün.... Şeklinde yazılır. Burada RSET İngilizce de Right Set in kısaltılmışı LSET Left Set in kısaltılmışıdır. Biliyorsunuz İngilizce de Right Sağ, Left ise Sol anlamında kullanılır. Set ise yerleştirme anlamındadır. Demek ki program içerisinde önce OPEN ile dosyayı açıyor, sonra field komutu ile dosya değişkenlerini tanıtıyor, daha sonra da programı yapıyor ve programın sonunda LSET veya RSET kullanarak program içindeki değişkenlerdeki bilgileri dosyaya kaydedilmek üzere ara bellek değişkenlerine yerleştiriyoruz. İşte bu ara bellek değişkenlerine yerleştirilen bilgilerin dosyay yazılması da put komutu ile oluyor. PUT İngilizce koymak anlamına gelen bu komut sayesinde bilgilerin dosyaya koyulması (yazılması) sağlanıyor. Kullanılışı: PUT Dosya no,Satır No Buna göre yukarıdaki programda bulunan PUT 1,val(a$) komut satırının anlamı; ara bellek değişkenlerinde bulunan ve FIELD komutu ile uzunlukları belirlenen, RSET ve LSET ile sağa veya sola mı yanaşık yerleşeceği belirlenen bilgileri 1 numaralı dosyaya a$ değişkeninde bulunan sayılı satıra kaydet. Burada şuna dikkat edelim. Program içerisinde sıra numarası diye girdiğimiz (1,2,3,4 ... gibi) bilgi a$ değişkenine yerleşiyordu. İşte biz burada sıra numarasını 1 girmişsek dosyanın 1. satırına, 2 girmişsek 2. satırına vb. kaydeder. Fakat burada a$ değişkeninden önce val diye bir komut kullanmışız ve a$ değişkenini parantez içine almışız. Bu nedir?VAL Karakter değişkenlerde bulunan karakter bilgiyi sayısal bilgi haline çevirir. Kullanılışı: VAL(değişken adı) Daha önceki derslerimizden hatırlayacağınız gibi LINE INPUT komutu ile karakter bilgi değişkenleri olan, sonu $ işareti ile biten sahalara bilgi girişi yapıyorduk. İşte yukarıdaki programda sıra numarasını girdiğimiz bilgi a$ isimli bir karakter sahaya kaydedilmiş. Bu nedenle onu sayısal olarak tanımlamak için val(a$) deyimini kullandık. Eğer bu bilgiyi line input komutu ile değilde; INPUT "Sıra No :",a Şeklinde girseydik, bilgiyi a$ değişkenine değil de a değişkenine sayısal olarak kaydedecektik ve biz de val komutunu kullanmaya ihtiyaç hissetmeyecek bu komut satırını; PUT 1,A Şeklinde yazacaktık. Burada bu komutun yerine PUT 1,1 yazarsak, yani a değişkeninin yerine 1 rakamını koyarsak, girilen bilgiler her seferinde dosyanın 1. satırına kaydolur, dolayısıyla bir önceki girilen bilgiler silinir. Veya PUT 1,3 yazarsak bu defa girilen bilgiler 1 numaralı dosyanın 3. satırına kaydolur. Her girilen bilgi sürekli 3. satıra yerleşeceğinden bir önce gir ilen bilgi her defasında kaybolur. Bu nedenle bilgilerin sırayla 1. satırdan başlayarak, 2, 3, 4 ve artan sırada sırayla satırlara kaydolması ve önce girilen bilgilerin kaybolmaması için kullanıcıya bilginin dosyanın hangi satırına kaydedileceğini belirleme imkanı veriyoruz. Burada tavsiye şu: kullanıcı bilgileri 1. satırdan başlayarak sırayla ve bir artarak kaydetmeli. Bir önceki satırda sıra numarası 6 verilmişse bu defa 7 verilmelidir. Çünkü yine 6 sıra numarası verilirse bir önce girdiği bilgi kaybolur. Bilgiler dosyada tamsayıyla belirtilen satırlara kaydolur. Yani 1,5 ya da 1,2 veya 5,6 gibi satırlar olamaz.Yukarıdaki örnek programda sıra no olarak ekrana yazdırdığımız mesajı, kayıt sıra numarası veya kullanıcının anlayabileceği bir başka şekilde mesaj olarak yazdırabiliriz. Bu programcının zevkine bağlı bir durumdur. Bu kaydettiğimiz bilgilerin dosyadan nasıl çağrılıp okunduğunu bir sonraki sayfada göreceğiz. Ayrıca Dosyadaki kayıtları silme, düzeltme gibi diğer konuları da ilerleyen derslerde göreceği z.TOPLU İŞLEM DOSYALARI MS-DOS Kullanıcıları gerek DOS ortamında, gerekse WINDOWS altında herhangi bir işlem veya işlemleri yapmak amacıyla, çoğunlukla aynı ve uzun komutlar zincirini tekrarlarlar. Toplu İşlem dosyalarını kullanarak, tek bir isim adı altında birden fazla işlemi bir seferde yapabilirsiniz. Bu Dosyaların kullanılmasına ve çalıştırılmasına ait bazı bilgiler: Bir toplu işlem dosyasını herhangi bir editör vasıtasıyla yazabileceğiniz gibi, DOS ortamında da hazırlayabilirsiniz. Windows da çalışıyorsanız Başlat-Programlar dan MS-DOS Komut İstemini seçin ve açılan pencerede; (Diyelim ki Hardiskimizin C gözünde BASIC dizini altında bulunan GWBASIC ile yazılmış fatura.bas isimli programı toplu işlem dosyası vasıtasıyla tek bir isim yazarak veya seçerek çalıştırmak istiyoruz.) copy con fatura.bat cd basic gwbasic fatura yazıp, F6 tuşuna basıp enter 'a basın. Dosya fatura.bat ismiyle kaydolur. Artık ekrana sadece fatura yazdığınızda Bilgisayar önce C gözünde BASIC dizinine geçer, sonra gwbasic'i ve fatura.bas dosyasını çalıştırır. Bu dosyayı aynı zamanda Windows'da çalışırken Başlat-Çalıştır 'dan veya Bilgisayarımı açıp dosya hangi dizinde kayıtlı ise o dizine geçip açılan pencerede fatura.bat dosyasını gösteren simgeye ya da fatura.bat yazısına çift tıklayarak da çalıştırabilirsiniz. Yukarıdaki örnekte fatura.bat ismi rasgele verilmiş bir isimdir. İsmi dilediğiniz gibi verebilirsiniz. Mesela abc.bat, basla.bat, deneme.bat gibi. Ancak uzantı ismi mutlaka bat olmalıdır.
|