Etiketler

20 Mayıs 2020 Çarşamba

QuickBasic Kursu Bölüm 2: Qbasicde Veri Tipleri

Önceki Bölüm: QuickBasic Kursu: Bölüm 1: QuickBasic'e Giriş

Güncelleme: 20 Mayıs 2020
Qbasicde çeşitli veri tipleri vardır.
Verilerin bellekte ne kadar yer kaplayacağını belirtmek için kullanılır. Değişkenin içeriği ancak bu şekilde bellekte düzenli bir şekilde yerleşir.
Örnek:
A% = 126
A değişkenin yanındaki % işareti değişkenin bir INTEGER veri tipine sahip olduğunu gösterir.
A değişkeni için bellekte 2 byte'lık yer açılır. Çünkü INTEGER veri tipi 2 byte'dır

Açılan bellek alanının bir kapasitesi olduğu için değişkene kapasitesinden daha büyük veri aktarmak Owerflow (aşırı yükleme, taşma) hatasına neden olacaktır.
Örnek:
A% = 32768 'Owerflow hatası
PRINT A%
Değişkenlerin veri tipini tanımlamak şart değildir.
Tanımlanmamış değişkenler varsayılan değişken türü olan SINGLE olarak ayarlanır.

Değişkenin bellekte hangi adreste bulunduğunu öğrenmek için VARSEG ve VARPTR kullanılır.
Değişkenin bellekteki konumu yeni başlayanlar için önemsiz bir konudur. İleri seviye programlamada bunlara gerek duyulur.

Bellek adresleri SEGMENT adı verilen bölümlere ayrılmıştır. Her bölümde ise POINTER adı verilen segmentdeki adreslemeler vardır.
VARSEG(degiskenadi) ile değişkenin segment adresi, VARPTR(degiskenadi) ile değişkenin segment içindeki konumu alınır.

Örnek 1:
a = 214
PRINT VARSEG(a)'Segment
PRINT VARPTR(a)'Pointer
Örnek 2:
DEFINT A-Z
a = 120
b = 256
PRINT (VARSEG(a) * 65536) + VARPTR(a)'a değişkeni bellek adresi
PRINT (VARSEG(b) * 65536) + VARPTR(b)'b değişkeni bellek adresi
Örnek 3:
Bu örnekte A değişkeninin değeri A=222 satırıyla değil direkt bellek adresine yazılarak değiştirildiğine dikkat edin. POKE komutu bellek adresine 1 byte veri yazmak için kullanıldı.
DIM A AS INTEGER
CLS
A = 100
PRINT "A DEĞERİ  = "; A

PRINT "A SEGMENT = "; VARSEG(A)'A nın segment adresi
PRINT "A POINTER = "; VARPTR(A)'A nın pointer adresi

DEF SEG = VARSEG(A) 'Varsayılan Segment = A değişkeni segment adresi
POKE VARPTR(A), 222 'A nın pointer adresine 222 yaz

PRINT "A DEĞERİ  = "; A

Qbasicde Veri Tipleri

Qbasic diğer dillerdeki gibi tüm veri tiplerini kullanmanıza imkan vermez, fakat genellikle diğerlerine ihtiyaç duymayacaksınız.

Qbasic ile kullanabileceğiniz veri tipleri:

STRING : 32767 karaktere kadar. Kullanılan karakter kadar byte yer kaplar.
INTEGER : 2 byte. Tam sayı
LONG : 4 byte. Tam sayı
SINGLE : 4 byte. 7 basamaklı sayı. Tam sayı olması şart değil. 7 basamaktan fazla bir sayı olursa bilimsel gösterim kullanılır.
DOUBLE: 8 byte. 15 basamaklı sayı. Tam sayı olması şart değil. 15 basamaktan fazla bir sayı olursa bilimsel gösterim kullanılır.

Veri tipleri hakkında daha detaylı bilgi almak için menüden HELP/Contents 'i ve çıkan ekranda Data Types i tıklayın.

Veri tipi tanımlama yolları

Değişkenlerin veri tiplerini tanımlamak için üç yöntem vardır.

1)
DIM A AS INTEGER
DIM B AS STRING
DIM C AS INTEGER
DIM D AS LONG
DIM E AS SINGLE
DIM F AS DOUBLE
DIM G AS INTEGER, H AS INTEGER
DIM I, J, K AS STRING 'I ve J nin tipi belirtilmediği için SINGLE olur
I="Mesut" 'Hata: Type mismatch (Tür uyumsuzluğu)
Bu stil en güzel görüneni ve iyi programcıların kullandığı stildir.
Tanımları düzgün yaptıktan sonra programın ileriki aşamalarında yalnızca değişken adını kullanmanız yeterlidir.
2)
DEFINT A 'A ile başlayan değişken adları INTEGER. Örnekler: A, AY, ABC, AYLIK  
DEFSNG C,F,H 'C F ve H harfleri ile başlayan değişken adları SINGLE
DEFDBL D 'D ile başlayan değişken adları DOUBLE
DEFLNG L-R 'L ve R arasındaki harfler LONG. Örnek: L, LA, M, MZ, NB, O1, P24, R
DEFSTR S 'S ile başlayan değişken adları STRING
Bu da başka bir yöntem. Değişkenin baş harfine göre tanımlanmamış olan tüm değişkenler DEF in yanındaki değişken türünde olur. İyi bir yöntem sayılmaz.
3)
$ işareti STRING
% işareti INTEGER
& işareti LONG
! işareti SINGLE
# işareti DOUBLE
Değişkende herhangi bir işaret yoksa ve başka bir tanım belirtilmediyse değişken türü SINGLE'dır.
A% = 253
Y! = 3.141
Z& = 254144
M# = 2358542689.2668#
ADI$ = "MESUT AKCAN"
S = 65.5636
Bu şekilde tanımlama yaptığınızda değişkeni hep aynı şekilde yazmak zorundasınız.
Yani A% nin değerini değiştirmek için A = 100 kullanmak sakıncalıdır.
Bu yöntem bazen kodlamayı zorlaştırır. Hatalara neden olabilir.

DİKKAT:
A! = 22.125
A& = 46500
A% = 255
A$ = "Mesut"
PRINT A!
PRINT A&
PRINT A%
PRINT A$
PRINT A
A = A * 10
PRINT A
Üstteki kodları yazıp çalıştırın.
Sonuç:
 22.125
 46500
 255
Mesut
 22.125
 221.25
Sonucunu inceleyip düşünüp yorumlayın.

Kullanıcı tanımlı Veri Tipleri

Kendi veri tipinizi belirleyebilirsiniz Bu size bellekte kaplayacak olan verilerinizi kullanmanızı kolaylaştıracaktır. Örneğin kişilerin adres bilgileri üzerinde işlem yapmak istiyorsanız, kişi için kendinizin belirlediği bir veri yapısı oluşturabilirsiniz.
TYPE KisiselVeri
 AdiSoyadi AS STRING * 30
 Adresi AS STRING * 50
 Telefonu AS STRING * 18
 PostaKodu AS LONG
 DogumYili AS INTEGER
 Boyu AS SINGLE
 Agirligi AS SINGLE
 Geliri AS DOUBLE
END TYPE
Bu açıklamalar sanırım yetersiz olacaktır başlangıç için.
Daha detaylı bilgi almak için TYPE yazısı üzerinde iken F1 'e basarak yardım alabilirsiniz.
Tanımlamış olduğumuz KISISELVERI veri tipini kullanmak için bellekte yer açmalıyız. Bunun için

DIM Personel AS KisiselVeri
komutunu kullanırız.
Şimdi bu PERSONEL değişkenin elemanlarına değer aktaralım.
Personel.AdiSoyadi = "Mesut Akcan"
Personel.Adresi = "Antalya Caddesi No:68/4"
Personel.Telefonu = "0324-998 46 21"
Personel.PostaKodu = 33522
Personel.DogumYili = 1971
Personel.Boyu = 1.72
Personel.Agirligi = 78
Personel.Geliri = 3528.62
Bu tip değişken kullanımı QBasic de yeni iseniz ve ya diğer BASIC dillere alışkanlığınız varsa garip gelecektir. Ama bu tip değişkenler diğer dillerde de kullanılmaktadır.
Şu an için telaşlanmanıza gerek yoktur. Zamanla bu yapıya alışıp gerekli yerlerde rahatlıkla kullanacaksınız.

Veri Tipleri Özet Tablosu


PÜF NOKTASI:
DIM BORCU AS LONG
şeklinde değişken tanımlandıktan sonra programın ilerleyen satırlarında
BORCU = 1250000
şeklinde kullanabiliriz.
Ama karmaşık programlar yazdığınızda bu kullanım hangi değişkenin hangi veri tipinde olduğunu anlamanızda zorluk çıkarır.

Kolayı: İmleç değişken üzerinde iken F1 tuşuna basarak değişkenin hangi modülde hangi veri tipinde kullanıldığını gösteren ekranı görebilirsiniz.

Sonraki Bölüm:
QuickBasic Kursu Bölüm 3: Değişkenlere veri aktarma

Bölüm 1

Hiç yorum yok:

Yorum Gönderme