Etiketler

18 Mayıs 2020 Pazartesi

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

Önceki Bölüm: QuickBasic Kursu Bölüm 2: Qbasicde Veri Tipleri
Güncelleme: 18 Mayıs 2020
Bu bölümde ekran silme, değişkenlere veri aktarma ve bu verileri yazdırmayı öğreneceğiz.

CLS komutu

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.
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ış.

LET Komutu

Değişkenlere değer aktarmak için kullanılır. Eski BASIC program kodlarıyla uyum içindir. Kullanılması gereksizdir.
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.
Yukarda olduğu gibi değişkenlere veriyi direkt 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.
Qbasicde ve birçok programlama dilinde = işaretinin işlevi, sağındaki değer veya işlemin sonucunu solundaki değişkene aktarmaktır.
Yukarda olduğu gibi = in sağ tarafında SAYI nın kendisiyle çarpımından SAYI değişkeni etkilenmemektedir.

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 komutu

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 Komutu

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 tırnaklar arasında yazılır sonra (,) veya (;) konulur ve klavyeden yazdıklarımızı aktaracağımız değişken ismi yazılır.
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 entere basarsak 0 değeri girilmiş kabul edilir.

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

READ, DATA, RESTORE komutu

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 en son satırlar olarak DATA satırları girilir.

READ komutu ile bu yığından 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 hata oluşur.

Yığının başından tekrar okuma yapmak için READ komutundan önce RESTORE komutu kullanılmalıdı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 Komutu

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.
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.
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

Uygulama

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

Sonraki Bölüm:
QuickBasic Kursu: Bölüm 4: Kontrol blokları

İlk Bölüm

Hiç yorum yok:

Yorum Gönderme