QBasic Dersleri 13 (Püf Noktaları)

Püf Noktaları

"Bilgi paylaştıkça çoğalır"

Grafik ekrana direkt ulaşım

Aşağıdaki kodlar PSET komutu kullanmadan ekrana çizgi çizer. Direkt ulaşım olduğu için daha hızlı
SCREEN 13: DEFINT A-Z


DEF SEG = &HA000


FOR x = 1 TO 150


 y = x + 30


 renk = x


 POKE x * 320& + y, renk


NEXT


DEF SEG

Text ekran renklerini değiştirme

SCREEN 0: COLOR 0, 7: CLS


PRINT "......Normal renkler......"


SHELL "pause"


PALETTE 7, 10


PRINT "......Zemin rengi değişti......"


SHELL "pause"


PALETTE 0, 50


PRINT "......Yazı rengi değişti......"

DBase III ve IV dosyalarını okuma

printdbf.zip (2.7 Kb) dosyasını inceleyin.

Text ekrana direkt yazdırma ve okuma

Yazdırma:
DEF SEG = &HB800 'renkli text ekran başlangıç adresi


POKE 0, 65 ' ilk adrese A harfini yaz


POKE 1, 1 ' ilk adresin renk kodu:1= Mavi 


POKE 2, 90 ' ikinci harf Z yi yaz


POKE 3, 14 ' Rengi Sarı(14) olsun


' Yukardaki işlemi basic kodlarıyla halledelim


CLS : COLOR 1: PRINT "A";


COLOR 14: PRINT "Z"
Okuma:
CLS : COLOR 14, 4


DEFINT A-Z


DEFSTR H


FOR n = 1 TO 80


 x = INT((90 - 65 + 1) * RND + 65)


PRINT CHR$(x);


NEXT


DEF SEG = &HB800


h1 = CHR$(PEEK(0)) '1. harf


h2 = CHR$(PEEK(2)) '2. harf


h3 = CHR$(PEEK(4)) '3. harf


h4 = CHR$(PEEK(6)) '4. harf


r = PEEK(7) '4. harfin renk kodu


LOCATE 5


PRINT "1. satırın ilk 4 harfi: " + h1 + h2 + h3 + h4


PRINT "Renk kodu:"; r


PRINT "16lı kodu: "; HEX$(r)


zr = r \ 16 'sayının üst 16 bit değeri


yr = r MOD 16 'sayının alt 16 bit değeri


PRINT "Zemin rengi: "; zr, HEX$(zr)


PRINT "Yazı rengi : "; yr, HEX$(yr)

Text ekranda standart olan 15 rengin dışında renkleri kullanma

OUT &H3C8,değiştireceğin renk kodu


OUT &H3C9,rengin kırmızı tonu


OUT &H3C9,rengin yeşilı tonu


OUT &H3C9,rengin mavi tonu
Örnek:


CLS


COLOR 2 'yeşil renk


PRINT "Orjinal renk"


SLEEP 3 'farkı görmek için bekle


OUT &H3C8, 2 'değiştireceğin renk


OUT &H3C9, 0 'Kırmızı ton (0-255) 255=açık , 0=koyu


OUT &H3C9, 0 'Yeşil ton


OUT &H3C9, 255 'mavi ton


COLOR 2 'şimdi açık mavi


PRINT "Değişmiş renk"


PRINT "Deneme"

Sıralı dosyalarda düzeltme veya bulma

Ben Gwbasic ve sıralı erişimli dosya sistemini pek kullanmadım ama sizin için gwbasic de istediğinizi yapan bir program yaptım. sirali.zip 'i inceleyiniz. (753 bayt)

Sıralı erişimli dosyalarda dikkat edeceğiniz şeyler :
1- Dosya ne için açılmışsa yalnız o iş yapılır. Okuma için açıldıysa kapatmadan yazma yapılamaz.
2- Ulaşmak istediğiniz bir kayıt için dosyayı açıp baştan itibaren ulaşmak istediğiniz kayıtlara kadar tüm kayıtları okutturmalısınız.
Kayıtlarınızın belli bir yapısı varsa RANDOM (rastgele erişimli) açınız. Hem kayıtlara hızlı ulaşırsınız hemde dosyayı kapatmadan yazma ve okuma yapabilirsiniz

Programınızı hızlandırın

1) Qbasicde tanımlanmamış değişkenler SINGLE olarak tanımlanır. Mümkün olduğunca tüm değişkenlerinizi program başlangıcında uygun olan bir tanımlama yapın. Örneğin kişinin yaşı için belekde daha çok yer kaplayan SINGLE değişken yerine yarısı olan INTEGER değişken kullanmak daha doğru olur. Eğer belirtilmeyen değişkenlerinizi otomatik tanımlamak isterseniz DEF i kullanın
DEFINT A-Z ' tanımsız tüm değişkenler INTEGER


DEFLNG D-K 'ilk harfi D den K ya kadar olan ve tanımlanmamış değişkenler LONG


DEFSTR B-T 'STRING


DEFSNG T-W 'SINGLE


DEFDBL A-G, P-U ' A ve G arası ve P ve U arası DOUBLE
Aşağıdaki kodu deneyip farkı görün. Program2 daha hızlı çalışacaktır. Bende 1. program 38 sn sürerken 2. program 1.6 sn sürdü.
Program1
t1 = TIMER


FOR n = 1 TO 25000


 FOR m = 1 TO 300


 x = m * 100


NEXT m, n


t2 = TIMER


fark = t2 - t1


PRINT fark
Program2
DEFINT A-Z


DEFSNG F, T





t1 = TIMER


FOR n = 1 TO 25000


 FOR m = 1 TO 300


 x = m * 100


NEXT m, n


t2 = TIMER


fark = t2 - t1


PRINT fark
2) PRINT STR$(A%) satırı; PRINT A% dan daha hızlı çalışır. Aşağıdaki kodları deneyin.
a% = 31256


dongu = 40000


t1 = TIMER


FOR n = 1 TO dongu


 PRINT a%;


NEXT


t2 = TIMER


fark1 = t2 - t1


t1 = TIMER


FOR n = 1 TO dongu


 PRINT STR$(a%);


NEXT


t2 = TIMER


fark2 = t2 - t1


PRINT : PRINT "Süre1 = "; fark1


PRINT "Süre2 = "; fark2

Bilgisayarı resetlemek

Aşağıdaki kodlar bilgisayarı resetler
OUT &H64, &HFE
Bunu denemek için dos modunu kullanın. Eğer windows çalışırken denerseniz reset olmaz program kapanır.

Gif ve Jpg dosyaları gösteren htm dosyası yapmak

Programın derlenmiş hali Freeware sayfasında gif2htm.zip dir.
gd$ = "c:\gecici.dat"


COLOR 15: PRINT : PRINT "Gif2Htm"


COLOR 7


10


INPUT "İncelenecek Sürücü ve Klasör:"; kl$


IF kl$ = "" THEN 10


INPUT "Oluşacak htm dosyanın kaydedileceği yer(ENTER=aynı klasör):"; ky$


IF ky$ = "" THEN ky$ = kl$


SHELL "dir " + kl$ + "\*.gif/b >" + gd$


SHELL "dir " + kl$ + "\*.jpg/b >>" + gd$


OPEN gd$ FOR INPUT AS #1


OPEN ky$ + "\izle.htm" FOR OUTPUT AS #2


PRINT #2, "<HTML><BODY>"


tr$ = CHR$(34)


DO WHILE NOT EOF(1)


LINE INPUT #1, a$


PRINT #2, "<img src=" + tr$ + a$ + tr$ + " alt=" + tr$ + a$ + tr$ + ">" 


LOOP


PRINT #2, "</BODY></HTML>"


CLOSE


KILL gd$


PRINT "işlem tamam"


a$ = "---------------------"


PRINT a$


PRINT "Program : Mesut Akcan"


PRINT "makcan@softhome.net"


PRINT "http://makcan.cjb.net"


PRINT a$

KUTU KARAKTERLERİ

Çift çizgiden oluşan kutu karakterlerinin kodlarını bilmiyorsanız veya yazması zor geliyorsa. Help-index (Alt-H-Enter) kısmında kutuyu işaretleyip(shift-ok tuşu) kopyalayın(ctrl-ins), Esc tuşuyla yardımı kapatıp boş bir yere yapıştırın(shift-ins). Oradan gerekli karaterleri tek tek kopyalayıp gerekli yerlere yapıştırın

F7 TUŞU

Programın çalışıp kursörün blunduğu satıra gelince durmasını istiyorsanız F7 tuşuna basın. Bu işlemle program o satıra gelince durur.

PRESS ANY KEY

Program çalışırken kullanıcının bir tuşa basması için bekletmek isterseniz. Aşağıdaki üç değişik yöntemden birini uygulayın.
a) Shell "pause" satırını durmasını istediğiniz yere ekleyin. (Mesaj çıkar)
b) SLEEP 60 komutuyla 1 dk bekler.
c) DO : A$=INKEY$ : LOOP WHILE A$=""
d) A$=INPUT$(1)

0 yorum:

Related Posts Plugin for WordPress, Blogger...