INKEY$ Fonksiyonu Ve Tarih Saat Fonksiyonları (DATE$ ve TIME$)

INKEY$

Bu fonksiyon, programın çalışması esnasında klavyeden bir karakter bilgi girişi yapılmasını sağlar. Mesela ekrana devamlı Orhan Aygün yazdıran bir program yaptığımızı varsayalım. Tabi bunun sürekliliğini sağlamak için FOR çevrim komutunu kullanacağız. Diyelim ki bu program ekrana 30.000 kez Orhan Aygün yazdırsın. Fakat biz bu çevrim sırasında, yani ekrana Orhan Aygün yazdırılırken daha 30.000 kez yazdırmadan istediğimiz bir zamanda çevrimden çıkabilelim. İşte bu çevrimden çıkabilmek için yapacağımız müdahaleyi INKEY$ komutu sayesinde yapabiliriz.

Örnek 1:

10 CLS

20 FOR I=1 TO 30000

30 PRINT "Orhan Aygün"

40 IF INKEY$="K" THEN 100

50 NEXT I

60 PRINT "Program ekrana 30.000 kez Orhan Aygün yazdırarak çevrimini tamamlamıştır."

70 END

100 PRINT "Program ekrana " I ". kez Orhan Aygün yazdırdığında kullanıcı müdahalesiyle sona erdirilmiştir."

110 END

Program çalıştırıldığında, ekranda her birisi alt satırdan devam etmek üzere 30.000 kez yazılmak üzere Orhan Aygün yazılmaya başlanır. Bu yazdırma işlemi sırasında eğer klavyeden büyük harf K tuşuna basılacak olursa çalışma 40 no'lu satır gereği 100 no'lu satıra gönderilir ve sona erer. Şimdi bu programdaki satırların anlamlarını açıklayalım:

10 Ekranı Sil

20 I değişkenin alacağı değere göre 1 den başla ve 30.000 olduğunda NEXT I komut satırının olduğu 50 no'lu satırın bir altındaki satırdan çalışmaya devam etmek üzere 30.000 'e kadar çevrime gir.

30 Ekrana her defasında Orhan Aygün yaz. (Çevrim 30.000 kez gerçekleşeceğine göre, müdahale olmazsa ekrana 30.000 kez Orhan Aygün yazılacak)

40 Eğer çevrim sırasında klavyeden (büyük harf) K tuşuna basılırsa çevrimden çık ve çalışmayı 100 no'lu satıdan devam ettir. (Burada K tuşu bizim belirlediğimiz bir tuştur. Buraya K yerine istediğimiz herhangi bir başka tuşu koyabiliriz. Aşağıda daha geniş açıklaması var.)

50 20 No'lu satırdaki FOR çevrim komutunda I çevrim değişkeninin değerini 30.000 'e tamamlanıncaya kadar her seferinde I 'nın değerini I=I+1 yaparak çalışmayı 20 no'lu satıra geri gönderir. Ne zamanki I değişkeninin 20 no'lu Satırın sonunda belirtilen 30.000 değerine ulaştığını görürse çevrimi bitirir ve çalışma bir alt satırdan devam eder.

60 Ekrana çalışmanın başarılı bir şekilde tamamlandığı mesajı yazdırılır.

70 Çalışma sona erer.

100 40 no'lu satırda belirtildiği gibi klavyeden K tuşuna basıldığı zaman çalışma yarıda kesilir ve 100 no'lu satıra gelir. Çalışmanın kesildiği ana kadar Ekrana kaç kez Orhan Aygün yazıldığı I değişkeninin değerinden bellidir. Bu nedenle çalışmanın kaçıncı kez Orhan Aygün yazdırılırken kullanıcı tarafından sona erdirildiği I değişkenindeki değere bakarak yazdırılabilir.

110 Çalışma sona erer.

Şimdi de INKEY$ komutu ile girdiğimiz karakterlerin ne olabileceği konusunda bir açıklama yapalım. Bu komutla klavyemizde bulunan bütün karakterleri kontrol amaçlı kullanabildiğimiz gibi. Klavyeden ekrana yazdıramadığımız karakterleri de daha değişik bir yolla kullanabiliriz. Nasıl mı?

Örneğin programı yarıda kesmek için ESC tuşunu kullanmak istiyoruz. Hani Şu klavyenin sol üst köşesinde olan tuş var ya, onu. Peki bu tuşu program satırlarına nasıl yazacağız? Çünkü bu tuşa bastığımızda ekrana bir şey yazılmasını bırakın, bütün satır olduğu gibi siliniyor. İşte burada imdadımıza ASCII kodları yetişiyor. ESC tuşunun ASCII kod karşılığı 27'dir. Bu tuşu da bilgisayara tanıtmamız için, (20. derste öğrendik, hatırlayacaksınız ) CHR$ komutunu kullanıyoruz. Yani;

40 IF INKEY$="K" THEN 100

Komut satırı yerine

40 IF INKEY$=CHR$(27) THEN 100

Komut satırını kullanıyoruz.

Demek ki, Gwbasic programlama dilinde bazen tuşları kullanmak yerine ASCII karakter kodlarını kullanmak da gerekebiliyormuş.

Yukarıdaki K tuşu ya da ESC tuşu karşılığı olan CHR(27) ile yazdırılan karakterlerin yerine a, A, b, B, z, Z, *, - gibi veya benzer bütün karakterleri kullanabiliriz. Ancak burada sadece bir tek karakter girişi yapabiliriz. Ayrıca bu çevrimde ayrı ayrı iki INKEY$ komutu kullanırsanız program ilk gördüğü INKEY$ komut satırını geçerli kabul eder, ikincisini görmez.

DATE$

Bu komut kullanıldığı andaki, Bilgisayarın tarih bilgisini içerir. Şöyle diyelim; Ben bu sayfayı, her Pazar günü güncelleştirdiğime göre, bir önceki günden hazırlıyorum. Ve Saat 00:00 olmadan Cumartesi akşamları web adresime yüklüyorum. İşte sayfayı hazırladığım şu anda DOS penceresini açıyorum. Gwbasic derleyicisini çalıştırıp ekrana aşağıdaki komut satırını yazıp ((Enter'a basıyorum) kısmını yazmayın) şu sonucu görüyorum:

PRINT DATE$ (Enter'a basıyorum)

07-01-2000

Burada gördüğünüz tarih formatında ilk iki karakter ay bilgisi, sonraki iki karakter gün bilgisi, sonraki dört karakter de yıl bilgisi. Demek ki bulunduğum tarih; 2000 yılının 7. ayının 1. günü.

TIME$

Bu komut kullanıldığı andaki, Bilgisayarın saat bilgisini içerir. Aynı yukarıda DATE$ komutunda olduğu gibi ekrana aşağıdaki komut satırını yazıp şu sonucu görüyorum:

PRINT TIME$

Enter'a basıldığında sonuç şu olacaktır:

22:26:50

İlk iki rakam;saat bilgisi, sonraki iki rakam; dakika bilgisi ve son iki rakam da; saniye bilgisi.

Şimdi bu bilgileri öğrendikten sonra yine 20. derste öğrendiğimiz LEFT$, RIGHT$ ve MID$ fonksiyonlarını kullanarak;

Bugün **** yılının *. ayının *. günündeyiz. Saat; **'yi tam ** dakika ** saniye geçiyor.

Şeklinde ekrana yazı yazan bir program yapalım. Bu program her çalıştığında o ana ait bilgileri verecektir.

10 COLOR 3,1

20 CLS

30 AY$=LEFT$(DATE$,2)

40 YIL$=RIGHT$(DATE$,4)

50 GUN$=MID$(DATE$,4,2)

60 SAAT$=LEFT$(TIME$,2)

70 DAKIKA$=MID$(TIME$,4,2)

80 SANIYE$=RIGHT$(TIME$,2)

90 LOCATE 11,15:PRINT "Bugün " YIL$ "Yılının " AY$ ". ayının " GUN$ ". günündeyiz."

100 LOCATE 12,15:PRINT "Saat; "SAAT$ "'yi tam " DAKIKA$ " dakika, "SANIYE$ " saniye geçiyor."

110 END

Şimdi bu programı satır satır inceleyecek olursak;

10 Bu komut renk tespit komutudur. İleride ayrıntılı öğreneceğiz. Ekranın zeminin koyu mavi yazı rengini açık mavi olarak ayarlar.

20 Ekranı Siliyoruz.

30 Program çalıştığı andaki tarih bilgisinin soldan iki karakteri olan aya ait bilgiyi date$ komutunun içerisinden alıp AY$ değişkenine aktarıyoruz.

40 Yıl bilgisinin de sağdan 4 karakter olduğunu bildiğimize göre RIGHT$ komutu ile sağdaki 4 karakteri YIL$ değişkenine aktarıyoruz.

50 PRINT date$ yazıp enter'a bastığımızda ekrana yazılan tarih bilgisinin karakterlerini soldan başlayarak saydığımızda gün bilgisinin 4. karakter den başlayıp 2 karakter uzunluğunda olduğunu göreceksiniz. İşte burada da Bilgisayara DATE$ fonksiyonu içerisindeki tarih bilgisinin 4. karakterinden başlayarak iki karakterini al ve GUN$ değişkenine yaz diyoruz. Böylece gün bilgisini de elde ediyoruz.

60 Yukarıda izah edildiği gibi saat bilgisini SAAT$ değişkenine kaydediyoruz.

70 Yukarıda izah edildiği gibi dakika bilgisini DAKIKA$ değişkenine kaydediyoruz.

80 Yukarıda izah edildiği gibi saniye bilgisini SANIYE$ değişkenine kaydediyoruz.

90 Değişkenlerdeki bilgileri ekranda 11. satır ve 15. sütundan başlamak üzere açıklamaları ile birlikte yazdırıyoruz.

100 Değişkenlerdeki bilgileri ekranda 12. satır ve 15. sütundan başlamak üzere açıklamaları ile birlikte yazdırıyoruz.

110 Programı bitiriyoruz.

Burada dikkat edilmesi gereken, ekranda olduğu gibi görünmesini istediğimiz mesajları tırnak içinde yazdırıyoruz. Ancak değişkenlerdeki bilgileri yazdırmak istiyorsak tırnak içine almıyoruz. Çünkü daha önce öğrendiğimiz gibi Gwbasic derleyicisi tırnak işaretleri içerisinde gördüğü her şeyi PRINT komutuyla olduğu gibi görüntüler, onu ekrana yazdırılacak mesaj olarak algılar.

ÖNEMLİ NOT:

DATE$ VE TIME$ KOMUTLARI PRINT KOMUTU İLE KULLANILMAYARAK ÖNÜNE TIRNAK İÇERİSİNDE GEÇERLİ BİLGİLER YAZILDIĞINDA TARİH VE SAATİ DEĞİŞTİRMEK İÇİN KULLANILABİLİR.

Örnek:

TIME$="22:12:00"

O anda bilgisayarınızın saati ne olursa olsun Saat 22:12:00 olarak değiştirilir.

21. Sayfa           23. Sayfa

INDEX