15 Şubat 2021 Pazartesi

QuickBasic - 3: Değişkenlere veri aktarma

Yayınlama: 2000
Güncelleme: 15 Şubat 2021

CLS

Bu komut çalıştırıldığında daha önceden ekrana yazılmış olan yazılar silinir.
Genelde programlar, ilk olarak ekranı temizleyerek, sonraki yazılacaklara temiz bir ekran hazırlar.

Burada dikkat edilecek şey CLS den bir önceki zemin rengi ne ise ekran o renk ile doldurulur.
CLS den önce bir renk ayarı yapılmamışsa ekran siyah renk ile doldurularak temizlenir.

COLOR , 4 'Zemin rengi kırmızı
CLS
PRINT "Merhaba"
COLOR 14 'Yazı rengi sarı
PRINT "Dünya !"

Değişkenlere Veri Aktarmak

Veri tiplerini açıklarken değişkenlerden bahsetmiştik. Değişkenler, bilgisayarın belleğinde veri tutmak için kullanılır.
Değişkenler bir harf ile başlayıp 40 karaktere kadar bir isim alabilir.
Değişken adlarında İngilizce harfler ve rakamlar kullanılır. Bunların dışındaki karakterler kabul edilmez.

Değişken adı bir harf ile başlamalıdır.
Büyük-küçük harf ayırt edilmez. SOYADI, soyadi , Soyadi , SoyAdi , soyAdi , SoyADI  aynı değişken adıdır. soyadı İngilizcede ı harfi olmadığından kabul edilmez.

Hata oluşturan değişken adlarına örnekler:

DIM 4KAT 'Rakam ile başlamış. Bir harf ile başlamalı
DIM MÜŞTERİ 'Türkçe harfler (Ü,Ş,İ) kullanılmış. İngilizce harfler kullanılmalı
DIM PERSONEL NO 'boşluk karakteri kullanılmış. Boşluk karakteri kabul edilmez
DIM Adi.Soyadi ' Adi adlı bir veri tipi tanımlaması yoksa hata verir.
DIM MEDENI_DURUMU '_ karekteri kullanılmış. Kabul edilmez.

LET

Değişkenlere değer aktarmak için kullanılan fonksiyondur. Eski BASIC program kodlarıyla uyum içindir.


Kullanımı terkedilmiştir. Kullanılmasının bir etkisi yoktur.

LET BOYU = 1.67
PRINT BOYU
BOYU = 1.72
PRINT BOYU

1. satırda BOYU değişkenine 1.67 değeri aktarıldı.

Sonraki aşamalarda BOYU değişkenine bir değer aktarmazsak program sonlanana kadar 1.67 değerini bellekte tutar.
Ve bu değişkeni gerekli olduğu yerde kullanırız. Örneğin 2. satırda olduğu gibi.

3. satırda olduğu gibi sonradan değişken içeriğine değer atayarak değişken değerini değiştirebiliriz. En son atanan değer bellekte tutulur. Önceki değer değişmiştir.
Yukarıda olduğu gibi değişkenlere veriyi doğrudan aktardığımız gibi bir fonksiyonun ya da işlemin sonucunu da aktarabiliriz.

SAYI = 125
KARE = SAYI * SAYI
PRINT KARE

1. satır artık yabancı gelmiyor size.
SAYI değişkenine bellekte 125 rakamını tut dedik.
KARE değişkenine de SAYI değişkenin tuttuğu değeri yine SAYI değişkenin tuttuğu değer ile çarp sonucunu bellekte tut dedik.

Bu arada SAYI değişkeninin değerinde hiçbir değişiklik olmaz.
Değişiklik olabilmesi için aktarma işlemi olması gerekir.

Buradaki = sembolünün anlamı matematikteki = gibi değildir.
QuickBasic'te ve birçok programlama dilinde = işaretinin işlevi, eşittir'in sağındaki değer veya işlemin sonucunu solundaki değişkene aktarmaktır.

Yukarıda olduğu gibi ='in sağ tarafında SAYI'nın kendisiyle çarpımından SAYI değişkeni etkilenmemektedir.

a = 5 'a değişkenine 5 değeri aktarıldı
a = a + a
' a değişkeninin değeri olan 5 ile 5 toplandı.
' toplamın sonucu olan 10 değeri a değişkenine aktarıldı
PRINT a 'a değişkeninin yeni değeri: 10

Değişkenlere değerler aktarılırken tanımlanan tipine uygun değerler aktarılmalıdır.
Sınırını aşan veya uygun olmayan veri aktarımları kabul edilmeyip hata oluşturacaktır.

Aşağıdaki satırlar hata oluşturacaktır.

A% = 33652 'Sınırı aşmıştır
A& = 2154.62 'LONG değişkenler küsurlu sayıları bellekte tutamaz
' o yüzden sayıyı yuvarlayarak 2155 yapar.
' Bu satırda bilgisayar bir hata uyarısı vermez.
A$ = 65000 ' String değişkenlere değerler çift tırnaklar ile aktarılır
A# = "Merhaba" ' Bu tür değişkene string veri aktarılamaz

CONST

Değişkene aktarılan değeri herhangi bir satırda değer aktarması yaparak değiştirebiliyoruz. Ancak bazı değerler vardır ki(Örneğin Pi sayısının değeri) farkına varmadan değiştirilmesi büyük sorunlar çıkarabilir ve sorunun kaynağını bulmak da zor olabilir.

Değiştirilmemesi gereken değerleri değişkene CONST ile aktarırsak değişken değeri sabit kalacaktır. Farkına varmadan değiştirmeye çalıştığımızda ise bir hata ile karşılaşırız.

Örnek:

CONST Pi = 3.141593
DaireCapi = 12
DaireCevresi = 12 * Pi
PRINT DaireCevresi
Pi=12.18 'HATA!
DaireCapi = 36
DaireCevresi = DaireCapi * Pi
PRINT DaireCevresi

INPUT

Kullanımı:

INPUT[;]["mesaj metni"{;|,}]değişken adları

Değişkenlere A = 45 gibi bir satır yazarak bir değer aktarabiliyoruz.
Bazen program çalışırken değişkenlere programı kullanan kişinin veri aktarması istenebilir.
INPUT komutu ile istediğimiz değişkenlere program çalışırken değer aktarılabilir.

INPUT kullanılırken; INPUT un ardından verilecek mesaj metni tırnaklar arasında yazılır sonra (,) veya (;) konulur ve klavyeden yazdıklarımızı aktaracağımız değişken adları yazılır.

Değişken adları bir veya birden fazla olabilir. Birden fazla ise aralarına virgül konulur.

Örnek 1:

CLS
INPUT "ADINIZ " ; AD$
INPUT "YAŞINIZ " , YAS%
PRINT "Sayın " ; AD$ ; YAS% ; " yaşındasınız."

Yaşımızı sorduğunda rakam dışında bir şey yazarsak, bir uyarı ile aynı soru tekrar sorulur.
Değer girmeden Enter'e basarsak 0 değeri girilmiş kabul edilir.

DÜŞÜN: Burada virgül ile noktalı virgülün farkı ne?

Örnek 2:

DEFINT Y
INPUT "Yazılı notları"; y1, y2, y3
PRINT "Ortalama:"; (y1 + y2 + y3) / 3

LINE INPUT

Kullanımı:

LINE INPUT[;] ["mesaj metni";] stringdeğişken
INPUT gibidir ancak mesaj metni içinde soru işareti(?) yoksa çıkmaz.
Klavyeden ENTER tuşuna basana kadar girilen karakterleri stringdeğişken'e aktarır.

Yalnızca STRING değişken kullanılabilir. Sayısal bir değer gerekli ise VAL ile string olarak girilen sayı, sayısal değere dönüştürülür.

Örnek:

LINE INPUT "Ad:"; ad$
LINE INPUT "Soyad:"; sad$
LINE INPUT "Boyu:"; boy$
b = VAL(boy$)
PRINT ad$, sad$, b

READ, DATA, RESTORE

Değişkenlere değer aktarmanın farklı bir yolu daha var.

DATA ile girilen verileri READ ile değişkene aktarma. Çok sayıdaki verinin değişkenlere aktarılması için kullanışlıdır.

DATA komutu ile veriler belleğe yığılır. DATA satırları program kod kümesinin başında, ortasında veya sonunda olabilir. Genelde DATA satırları son satırlara girilir.

READ komutu ile yığındaki değerler sırasıyla değişkenlere aktarılır. Sonraki READ komutu yığında kalınan noktadan devam ederek aktarma yapar.

Yığında sona gelindiğinde READ ile okuma yapılacak olursa okunacak veri kalmadığı için hata oluşur. Yığının başından tekrar okuma yapmak için READ komutundan önce RESTORE komutu kullanılmalıdır.

Belli bir etiket veya satırdan sonra okumaya başlaması için;

RESTORE etiket 'satır etiketi

veya

RESTORE 120 'satır no

kullanılır.

Örnek 1:

READ ad$, soyad$, memleket$, dyil, boy, meslek$
PRINT ad$, soyad$, meslek$
READ ad$, soyad$, memleket$, dyil, boy, meslek$
PRINT ad$, soyad$, meslek$
DATA "Mesut","Akcan","Adana",1972,1.72,"Öğretmen"
DATA "Ahmet","Kara","Mersin",1980,1.68,"Memur"

Örnek 2:

C$ = DATE$ 'Bugünün tarihi: 05-17-2020
BuAy% = VAL(C$) 'Tarihteki ay değeri
FOR I% = 1 TO BuAy% 'Tarihteki ay sayısı kadar döngü
 READ Ay$
NEXT
DATA Ocak, Şubat, Mart, Nisan, Mayıs, Haziran, Temmuz
DATA Auğustos, Eylül, Ekim, Kasım, Aralık
Gun$ = MID$(C$, 4, 2) 'tarihteki gün
IF LEFT$(Gun$, 1) = "0" THEN Gun$ = RIGHT$(Gun$, 1)
Yil$ = RIGHT$(C$, 4) 'tarihteki yıl
PRINT "Bugün: "; Gun$; " "; Ay$; " "; Yil$

PRINT

Ekrana bir mesaj veya bir değişkenin değerini yada bir fonksiyon yada işlemin sonucunu yazdırmak için kullanılır.

PRINT yazmak yerine yalnızca ? yazın. Soru işareti PRINT'e dönüşecektir.

Örnek 1:

CLS
PRINT 3 * 8 + 12 ' Sonuç 36 olarak ekranda görünecek
PRINT 100 \ 3 ' 33 (Kalansız bölme. Sonucun tam sayı kısmı)
YASI = 32
PRINT "Yaşı = " ; YASI ; " dir"
A% = 15
B! = 3.14
ADI$ = "Mesut"
PRINT A% , B! , ADI$
SA$ = "Akcan"
PRINT ADI$ ; SA$

DÜŞÜN: PRINT de kullanılan virgül ve noktalı virgülün farkı ne?
PRINT komutunda bir işlemin sonucunu da yazdıracağımızı söylemiştim.

Örnek 2:

PRINT 12+33 ' Ekrana işlemin sonucunu (45) verir
PRINT 125+48*10 ' 605 yazar. Öncelik sırası: Parantez içi, * / + - dir
PRINT 12-(80/4-23)+54/9 ' sonuç: 21 ??
PRINT 1 + 1 ' Toplam olan 2 çıkar
PRINT "1" + "1"
' 11 çıkar. Çift tırnak içindeki sayılar sayı olarak görülmez.
' Burada sayı olmadığı için toplama işlemi değil
' tırnaklar içindekileri birleştirme işlemi uygulanır
PRINT "QUICK" + "basic" ' QUICKbasic
PRINT 8 + "elma" ' !!! Hata !!!
PRINT "8" + "elma" ' 8elma
PRINT 8 ; "elma" ' 8 elma
PRINT 8/2 ; "elma" ' 4 elma

Örnek 3:
CLS
PRINT "Çıkmak için 0 yaz"
basla:
INPUT "Bir sayı yaz "; SAYI
IF SAYI = 0 THEN END
CLS
PRINT "Verdiğiniz sayı "; SAYI
PRINT SAYI; " 'nın karesı "; SAYI ^ 2; " dır."
PRINT SAYI; " 'nın küpü "; SAYI ^ 3; " dır."
GOTO basla

PROBLEM: Dairenin alanını hesaplayıp ekrana yazan bir program yazın.
Dairenin alanı = Pi sayısı * Yarıçap * Yarıçap



Önceki Bölüm: 2: Veri Tipleri Sonraki Bölüm: 4: Kontrol blokları

Hiç yorum yok:

Yorum Gönder