Etiketler

31 Mayıs 2020 Pazar

QuickBasic Kursu: Bölüm 8: Karakter ve metinler ile ilgili işlemler

Önceki Bölüm: QuickBasic Kursu: Bölüm 7: Goto, Gosub, Sub, Function
Yayınlama: Eylül 2007
Son güncelleme: 31 Mayıs 2020

PRINT

PRINT komutu verileri ekrana yazdırmak için kullanılır.
PRINT ifade veya değişken , ;
ifade olarak bir fonksiyon ya da matematiksel işlem ya da metin olabilir.
Virgül verileri belli atlama noktalarına dizerek yazar.
Noktalı virgül ise verileri boşluk bırakmadan yazdırır.
A$ = "Quick" : B$ = "Basic" : C$ = "v4.5"
PRINT A$ , B$ , C$
PRINT A$ ; B$ ; C$
PRINT A$ + B$ + C$ ' üstteki satırla aynı işi görür
PRINT A$ ; " " ; B$ ; " " ; C$
PRINT LEN(A$)
PRINT (4582 - 256) * 24# / 2 ^ 3 + 20

Matematiksel işlem uygulandığında işlem öncelik sırası:
  1. parantez içi
  2. ^ (üs alma)
  3. * (çarpma)
  4. / (bölme)
  5. + (toplama)
  6. - (çıkarma)
PRINT 10 - 3 * 2
işleminin sonucu 14 değil 4 dür.

Çünkü *(çarpma) öncelikli olduğundan 3 * 2 işlemi önce yapılır. 10 - 6 = 4
10 dan 3 ü çıkarıp 2 ile çarpmak isterseniz
PRINT (10 - 3) * 2
olarak yazmalısınız.

TAB

TAB komutu ile sonraki yazacağımız metnin başlangıç kolonunu belirtiriz.
PRINT "1 - " ; TAB(5) ; "Qb 4.5"; TAB(20); "DOS"
PRINT "2 - " ; TAB(5) ; "Visual basic " ;TAB(20); "WIN"
Çıktı:

SPC

SPC komutu ile de arada bırakılacak boşluk belirtilir. PRINT ve LPRINT komuyla kullanılır.
PRINT "1 - " ; SPC(3) ; "Qbasic"; SPC(4); "DOS"
PRINT "2 - " ; SPC(5) ; "Visual basic" ; SPC(4) ;"WIN"

SPACE$

İstenilen sayıda boşluk karakteri oluşturmak için kullanılır. PRINT komutuyla boşluk yazdırmak için kullanılabildiği gibi boşluk miktarı bir değişkene de aktarılabilir.

Örnek 1:
PRINT SPACE$(8); "Merhaba!"
Örnek 2:
FOR i = 0 TO 20
   X$ = SPACE$(i)
   PRINT X$; i; X$; i
NEXT
Örnek 3:
DEFINT A-Z
DIM s AS STRING
COLOR 15 ,1 : CLS
a = 1
DO
    s = SPACE$(n)
    PRINT s; "MESUT"
    n = n + a
    IF n = 9 THEN a = -a
LOOP UNTIL n = -1
Çıktı:

PRINT USING

Metin ya da rakamları belirtilen biçimde yazar. Biçimleme için özel karakterler kullanılır.
Sayısal değerler için
# : rakamın konumunu
. (nokta) : küsuratı
, (virgül) : binler ayıracı
+ (artı) : sayının negatif veya pozitif işaretinin konumu
- (eksi) : negatif sayılarda, sayıdan sonra - konur
$$ : Dolar işareti ekler.
PRINT USING "$$###.##" ; 458.62
Çıktı: $458.62
** : Sayının başına * ekleyerek her sayının aynı genişlikte olmasını sağlar
**$ : * ve $ bileşik
PRINT USING "**$###,###.##" ; 31458.82
Çıktı: ***$31,458.82
^^^^ : Sayıları üslü olarak gösterir.
PRINT USING "##.##^^^^"; 234.56
Çıktı: 2.35E+02
Sözel değerler için
& : Değişkenlerin yerleştirileceği yeri belirler.
PRINT USING "Gülen & ağlayan &"; "ayva"; "nar"
Çıktı: Gülen ayva ağlayan nar
! (ünlem) : Metnin ilk karakterini verir
PRINT USING "!!"; "Mesut"; "Akcan"
Çıktı: MA
_ (alt eksi) : Bu tablodaki özel karakterlerden birini(#.,+-$*+^&!) yazdırmak istersek önüne _ konur.
PRINT USING "! 1500_!"; "Qbasic"
Çıktı: Q 1500!
Herhangi bir karakter : (Bu tabloda verilen karakterlerin dışında karakter) Olduğu gibi aynı konumda yazılır
DIM AY AS DOUBLE
CLS
AY(0) = 454121.3654 : AY(1) = -6845.587 : AY(2) = 982.6
FOR N% = 0 TO 2
   PRINT USING "###,###.##+"; AY(N%)
NEXT
Çıktı:
454,121.38+
  6,845.59-
    982.60+
Örnek:
a = 12345.758#
b = 1000
PRINT USING "TL #,###,###.##"; a
PRINT USING " $ #,###,###.##"; b

STR$

Bellekte sayı olarak tutulan bir değeri metne(STRing) dönüştürür.
STR$(sayısal değer ya da değişken)
Örnek:
CLS
A% = 1986 : B% = 15
PRINT "Bu yıl ";
PRINT A% + B%;
PRINT " yılındayız"
PRINT "Bu yıl ";
PRINT STR$(A%) + STR$(B%);
PRINT " yılındayız"
Yukarıdaki kodları denediğinizde A% ile B% yi toplayabilirken bunu STRing e yani metne dönüştürdüğünde toplamak yerine birleştirdi.
Çünkü daha önce PRINT komutunda da görmüştük string verilerde sayısal işlem yapılamaz.
PRINT 1 + 1 ' sonuç: 2
PRINT "1" + "1" 'sonuç: 11 , ama sayısal 11 değil

VAL

Bellekte metin olarak tutulan sayıyı, sayısal işlemlerde de kullanılabilecek sayı değerine(VALue) dönüştürür.
VAL(sözel değer ya da değişken)
Örnek:
INPUT "Doğum yılınız"; T$
PRINT "Yaşınız "; VAL(RIGHT$(DATE$,4)) - VAL(T$)
Örnekte metin olarak girdiğimiz T$ sayısal işleme sokulamaz VAL ile dönüşüm sağlanarak sayısal işlem yapılmıştır.

STRING$

Aynı karakterden çok sayıda kullanmanız gerekiyorsa kullanılır.
STRING$(sayı,karakter)

Örnek:
PRINT STRING$(2000,"*") ' ekranı * ile doldurur
PRINT STRING$(80,"=") ' Bir satırı = ile doldurur

ASC

Bir karakterin ASCII kod karşılığını verir. ASCII (American Standard Code for Information Interchange = Bilgi Değişimi İçin Amerikan Standart Kodlama Sistemi)
ASC(karakter)
PRINT ASC("A") '65
PRINT ASC("MESUT") 'Bu satırda sadece ilk harf olan M harfi dikkate alınır. 77

CHR$

ASCII koduna denk gelen karakteri(CHaRacter) verir.
CHR$(ASCII kod)
PRINT CHR$(65) 'ekrana A çıkar
FOR N% = 32 TO 255 ' 32 den 255 e kadar olan
   PRINT CHR$(N%); " "; 'ascii karakterleri yaz
NEXT
Çıktı:
QBASIC ASCII Karakterler

INKEY$

Klavyeden girilen tuşun karakter kodunu alır.
Örneğin ESC tuşunun ASCII kodu 27 dir.

Örnek: Basit bir editör
DO
   A$ = INKEY$
   IF A$ = CHR$(27) THEN EXIT DO 'Çıkmak için ESC tuşuna basın
   PRINT A$;
LOOP

LCASE$ , UCASE$

LCASE$: Verilen metni küçük harflere(Lower CASE) dönüştürür.
UCASE$: Verilen metni büyük harflere(Upper CASE) dönüştürür.
Her iki komutta da yalnızca İngilizce harfler dikkate alınır.
PRINT LCASE$("MERHABA Dunya") 'merhaba dunya
PRINT UCASE$("Merhaba Dunya") 'MERHABA DUNYA
Problem 1:
Verilen bir metindeki kelimelerin baş harflerini büyük harfe dönüştüren programı yazın.

Problem 2:
Verilen bir metindeki cümlenin baş harflerini büyük harfe dönüştüren programı yazın.

LEFT$ , RIGHT$ , MID$

LEFT$: Metnin belli sayıda sol(LEFT)undaki karakterleri alır.
RIGHT$: Metnin belli sayıda sağ(RIGHT)ındaki karakterleri alır.
MID$: Metnin belli sayıda orta(MIDDLE)sındaki karakterleri alır.
PRINT LEFT$("QuickBasicV4.5",5) ' Quick
PRINT RIGHT$("QuickBasicV4.5",4) ' V4.5
PRINT MID$("QuickBasicV4.5",6,5) '6. karakterden itibaren 5 karakter. Basic
MID$ ın farklı kullanımı:
Burada verilen metin içinde değişiklik yapar
A$ = "O adam 25 yaşında"
MID$(A$,3)="kadın"
PRINT A$ 'O kadın 25 yaşında

LEN

Verilen metnin kaç karakterden oluştuğunu verir.
A$ = "MESUT AKCAN"
G% = LEN(A$)
PRINT G% '11 , çünkü boşluklar da sayılır
FOR N%=1 TO G%
   PRINT LEFT$(A$,N%)
NEXT
Çıktı:
11
M
ME
MES
MESU
MESUT
MESUT 
MESUT A
MESUT AK
MESUT AKC
MESUT AKCA
MESUT AKCAN

LTRIM$ , RTRIM$

LTRIM$: Metnin solundaki boşlukları siler
RTRIM$: Metnin sağındaki boşlukları siler
PRINT LTRIM$(RTRIM$(" MESUT AKCAN "))

STRING'İ SAYIYA DÖNÜŞTÜRME

CVI, CVS, CVL, CVD komutları kullanılır.
Ayrıntı için Dosya İşlemleri-3 bölümüne bakınız

Sonraki Bölüm:
QuickBasic Kursu: Bölüm 9: Sayılarla ilgili işlemler

QuickBasic Ana Sayfa

Hiç yorum yok:

Yorum Gönderme