QuickBasic Kursu etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
QuickBasic Kursu etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

17 Mayıs 2024 Cuma

QuickBasic - 30: Hata ayıklama-3

3. Mantıksal Hatalar

Mantıksal hatalar (Logic Errors) program kodlarının söz dizimi açısından doğru olmasına rağmen beklenen sonuçları vermemesine neden olan hatalardır. Bu tür hatalar, programın mantığında veya algoritmasında yapılan yanlışlıklar nedeniyle ortaya çıkar. Mantıksal hatalar, genellikle programın çalışması sırasında belirli girdilerle test edilerek ortaya çıkarılır ve düzeltilir, çünkü derleme aşamasında tespit edilemezler. Bu yüzden en tehlikeli hatalardandır.

Mantıksal hataların yaygın örnekleri arasında mantıksal karşılaştırma ifadeleri, döngülerin hatalı kullanımı ve değişkenlerin yanlış değerlerle işlenmesi bulunur.

Örneğin, bir döngünün yanlış bir koşulla çalıştırılması, döngünün beklenenden daha fazla veya daha az çalışmasına neden olabilir. Bu tür hatalar, programın belirli durumlarda yanlış sonuçlar üretmesine, hiç çalışmamasına, kilitlenmesine veya sonsuz döngü üretmesine neden olabilir. Ayrıca, değişkenlerin yanlış şekilde güncellenmesi veya kullanılması, hesaplamaların yanlış sonuçlar vermesine yol açar.

20 Haziran 2023 Salı

QuickBasic - 2: Veri Tipleri

Yayınlama: 2000
Güncelleme: 20 Haziran 2023
QuickBasic'te çeşitli veri tipleri vardır.
Belleğe aktarılacak veriler için bellekte gereken boyutta yer açı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. 8 bit (binary digit= ikilik sayı) 1 baytı oluşturur.
1 baytın alacağı değer sayısal olarak 0-255, karakter olarak ise 1 karakter(harf, rakam, simge)dir.

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 (taşma hatası)
PRINT A%
A% değişkeni 2 baytlık(16 bit) INTEGER değişken olduğu için alabileceği değer aralığı -32768 ile +32767 olduğu için örnekte verilen 32768 değeri sınırı aşmaktadır.
Yani bellekte açılan alana bu sayı aktarılamaz. O yüzden hata verir. Değişken türü ya da değeri değiştirilmelidir.

Normalde 2 bayt(16 bit) 256*256 = 0-65536 (2 üzeri 16 = 65536) arası değer alabilir. Ancak INTEGER değişkende negatif sayıları da kullanabilmek için 16 bitin 1 biti sayının + ya da - işareti için kullanılmaktadır.
Böylece sayı için 15 bit, işaret için 1 bit kullanılır.
15 bit (2 üzeri 15) = 32768

25 Mart 2023 Cumartesi

QuickBasic - 29: Hata ayıklama-2

Yayınlama: 25 Mart 2023 

2. Çalışma Zamanı Hataları (Run-time Error)

Program kodlarının doğru göründüğü ancak çalıştırılması sırasında karşılaşılan hatalardır. Programcının ele almadığı bir takım aykırı durumlar ortaya çıktığında programın işletim sistemi tarafından kesilmesi ile ortaya çıkar. Bu tip hatalarda hata mesajı çoğunlukla çalışan işletim sisteminin dili ile verilir. Eğer bu tip hataları kullanıcı ele almışsa, program programcının vereceği mesajlarla ve uygun şekilde sonlandırılabilir. Bu tip hataların nerelerde ve hangi şartlarda ortaya çıkabileceğini bazen kestirmek zor olabilir.

Bazı yaygın çalışma zamanı hataları şunlardır:

a) Bellek Hataları:

Bellek hataları, programın belleğe yanlış bir şekilde erişmesi veya belleği yanlış kullanması sonucu oluşur. Bu hatalar, bellek sınırlarının aşılması, bellek sızıntıları veya bellek yönetimi hataları gibi nedenlerden kaynaklanabilir.
Örnek:
DEFINT A-Z
DIM personel(40200)
Bu kodlar çalıştırıldığında Overflow (taşma) hatası oluşturacaktır.
Çünkü QuickBasic dilinde bir dizi değişkenin eleman sayısı, dizi değişken boyutuna bağlı olarak belirlenen sınırların üzerinde olamaz. Bir dizi değişken elaman sayısı da dikkate alınarak bellekte en fazla 64K (65535 bayt) yer kaplayabilir.
INTEGER değişkenin her bir elemanı bellekte 2 bayt yer kapladığı için azami eleman sayısı 65535/2 = 32767
LONG ve SINGLE değişkenin her bir elemanı bellekte 4 bayt yer kapladığı için azami eleman sayısı 65535/4 = 16383
DOUBLE değişkenin her bir elemanı bellekte 8 bayt yer kapladığı için azami eleman sayısı 65535/4 = 8191
Not: Sayıların 1 eksik olmasının sebebi 0 ile başlamasından dolayıdır.
Önceki örnekte INTEGER değişkene 32767'den daha büyük bir değer girildiği için hata oluştu.
Detay için QuickBasic programında Yardım / Contents / Data types ve Yardım / Contents / Limits to QuickBasic / Arrays sayfalarına bakınız.

24 Mart 2023 Cuma

QuickBasic - 28: Hata ayıklama-1

Yayınlama: 18 Ağustos 2022
Güncelleme: 24 Mart 2023

Hata ayıklama (Dubugging)

Programlamada hata nedir?

Programlama sürecinde, yazılan kodların beklenen şekilde çalışmamasına hata denir. Bu hatalar, programın istenmeyen şekilde sonlanması, duraklaması, sonsuz döngüye girmesi, yanlış bir işlem yapması veya yanlış sonuçlar üretmesi gibi istenmeyen durumlarla kendini gösterebilir. Bu hatalar genellikle programlama dilinin doğru bir şekilde kullanılmamasından kaynaklanır ve programcıların kodlarını test etmeleri ve hataları düzeltmeleri gereklidir.

Yazılım geliştirme sürecinde, programcılar tarafından yapılan hatalara genellikle bug(böcek) denir ve bu hatalar, programın beklenen şekilde çalışmamasına neden olabilir. Bu nedenle, programcıların hataları tespit edip düzeltmeleri önemlidir. Bu sürece genellikle hata ayıklama(debugging) adı verilir. Hata ayıklama, programcıların kodlarını inceleyerek hataları tespit etmelerini ve düzeltmelerini sağlar. Bu süreç, yazılımın daha sağlam ve güvenilir hale gelmesine yardımcı olur.

Eniac.jpg

Yazılım hatalarına bug(böcek) denmesinin ilginç bir hikayesi var. İlk bilgisayarlar çok büyük ve karmaşıktı. İçlerinde insanların dahi gezinebileceği kadar genişti ve devre elemanları birbirine kablolarla bağlıydı.

Bu nedenle, bir hata oluştuğunda, mühendisler tüm kablo bağlantılarını kontrol etmek için bilgisayarın içine girerek hatayı tespit etmeye çalışıyorlardı. Bir seferinde, bir hata nedeniyle bilgisayar çalışmadığında, mühendisler bağlantıları kontrol ederken bir böcek fark ettiler.

Böceğin, bilgisayarın içinde oluşturduğu bir kısa devre, hatalı çalışmaya neden oluyordu. Mühendisler böceği temizledi ve hatayı giderdi. O günden beri, yazılım hatalarına bug denmesi yaygınlaştı.

6 Şubat 2022 Pazar

QuickBasic - 6: Diziler

Yayınlama: 2000
Güncelleme: 06 Şubat 2022

Diziler

Dizi(array) bir veri yapısıdır ve bellekte aynı tipte veri saklamayı sağlar.
Bir değişken tanımlandığında, tanımlanan değişken bellekte tek bir değer tutabilir.
Diziler(arrays) ise bir değişken adıyla bellekte birden fazla değer saklayabilir.
Tanımlanan dizi elemanlarına ulaşmak istersek dizi indeksi ile ulaşabiliriz.

Dizilere neden ihtiyaç duyulur?

Çünkü çok sayıda değişkeni tanımlamak uzun sürer ve kullanışlı olmaz.

Örneğin:
12 ay için ayrı ayrı değişken tanımlama
DIM AY1 AS STRING
DIM AY2 AS STRING
DIM AY3 AS STRING
..
..
Gördüğünüz gibi bu uzayıp gidecek.
Bunun yerine bir boyutlu 13 elemanlı bir adet dizi değişken tanımlamak yeterlidir.
DIM AY(12) AS STRING
gibi.
AY(12) dizi değişkeni 13 elemanlıdır çünkü ilk eleman numarası(indeks) 0'dır.

Kullanımı:
DIM DeğişkenAdı(elemansayısı) [AS ...]
Örnek 1:
DIM AYLAR(12) AS STRING
'Tanımlanan dizi değişkeninin kullanımı:
AYLAR(1) = "OCAK" : AYLAR(2) = "ŞUBAT"
AYLAR(3) = "MART" : AYLAR(4) = "NİSAN"
AYLAR(5) = "MAYIS" : AYLAR(6) = "HAZİRAN"
AYLAR(7) = "TEMMUZ" : AYLAR(8) = "AĞUSTOS"
AYLAR(9) = "EYLÜL" : AYLAR(10) = "EKİM"
AYLAR(11) = "KASIM" : AYLAR(12) = "ARALIK"
buay% = VAL(DATE$)
PRINT AYLAR(buay%)
Örnek 2:

29 Aralık 2021 Çarşamba

QuickBasic - 9: Sayılarla ilgili işlemler

Yayınlama: 2000
Güncelleme: 29 Aralık 2021

Matemetiksel İşlem Sembolleri

+ : Toplama. a = 10 + 2
- : Çıkarma. b = a - 5
* : Çarpma. b = a * 10
/ : Bölme. b = a / 3
\ : Kalansız bölme. a = 100 \ 3 : PRINT a ' 33
^ : Üs alma. a = 10 ^ 2 : PRINT a ' 100
- : Negatife dönüştürme. a = 5 : b = - a : PRINT b ' -5

Matematiksel işlemlerde öncelik sırası

Normal bir hesaplama yapıldığında, QuickBasic soldan sağa doğru çalışır, ancak belirli hesaplamaları aşağıdaki sırayla yapar. Kırmızı olan kısım önce işlenir.
  1. Parantez içi. a = (5 + 10) * 3 ' 45
  2. Üs alma işlemi (^). a = 10 + 2 ^ 3 ' 18
  3. Negatife dönüştürme (-) a = 10 - -30 - -5 ' 45
  4. Çarpma ve Bölme(* , /). a = 20 + 30 / 2 ' 35
  5. Kalansız bölme (\) a= 30 - 16 \ 3 ' 25
  6. MOD işlemi. a = 10 + 11 MOD 3 ' 12
  7. Toplama, Çıkarma (+ , -) a = 10 + 5 * 2 - 20 / (2 + 3) ^ 2 ' ' 19.2
Örnekler:
PRINT 5 ^ 2 ' 25 (Karesi)
PRINT 5 ^ -2 '.04
PRINT 1 / 5 ^ 2 '.04
PRINT 25 ^ 1 / 2 '12.5
PRINT (25 ^ 1) / 2 '12.5
PRINT 25 ^ (1 / 2) '5 (Karekök)
PRINT 25 ^ .5  '5 (Karekök)
PRINT 27 ^ (1 / 3) ' 3 (Küpkök)
PRINT 3 + 6 / 12 * 3 - 2' 2.5
PRINT 6 / 12 + 2 ^ 4 ' 0.5
PRINT 5 + .5 * 3' 1.5
PRINT 3 + 9 / 3' 4.5
PRINT 4.5 - 9 / 5 ' 2.5

ABS

Verilen sayının mutlak(ABSolute) değerini verir.

14 Eylül 2021 Salı

QuickBasic - 1: Giriş

Yayınlama: 2000
Güncelleme: 14 Eylül 2021
Bu yazıdaki açıklamalar ve kodlar QuickBasic 4.5 sürümüne göredir. Ekran görüntüleri Microsoft QuickBasic 4.5 programından alınmıştır.
Verilen örnek kodlar tarafımdan QuickBasic 4.5 üzerinde yazılıp, çalıştırılıp, denenmiştir. Kodlar büyük oranda QB64'te de çalışmaktadır.

QuickBasic Kursu içeriğini 2000 yılında hazırlayıp kişisel web sayfamda yayımladım.
2003 yılında PDF formatına dönüştürdüm. Sonraki tarihlerde sayfalarda güncelleme ve eklemeler yaptım ve yapmaya devam ediyorum. Umarım programlama öğrenmek isteyenlere faydalı olur.

Bilgisayar programlama

Belirli bir bilgi işlem görevini gerçekleştirmek için bir bilgisayarı tasarlama, oluşturma ve komuta etme sürecidir. Bilgisayarımıza belirli bir görevi yaptırmak için bir programlama dilinde komutlar yazmamız gerekir. Günümüzde kullanabileceğimiz çok sayıda programlama dili vardır ancak burada yeni başlayanlar için öğrenmesi kolay dillerden biri olan QuickBasic dilini kullanacağız.

BASIC nedir?

BASIC, İngilizce Beginners All-Purpose Symbolic Instruction Code kelimelerinin baş harflerinden oluşur. Genel amaçlı, yeni başlayanların öğrenmesi kolay, yüksek seviyeli bir dildir.

Yüksek seviyeli diller: Konuşma diline yakın dillerdir. PYTHON, PASCAL, BASIC, FORTRAN vb. diller.
Düşük seviyeli diller: Makine diline yakın dillerdir. Makine Dili, ASSEMBLY dili.

Tarihçe


İlk BASIC programlama dili 1964 yılında Thomas E. Kurtz ve John G. Kemeny adlı iki matematikçi ve bilgisayar bilimci tarafından tasarlandı.

11 Haziran 2021 Cuma

QuickBasic - 5: Döngüler

Yayınlama: 2000
Güncelleme: 11 Haziran 2021
Bir kod bloğunun belirli sayıda veya şarta bağlı sayıda tekrar edilmesine döngü deniliyor. Döngü sayesinde kod tekrarından kaçınmış oluruz. Döngü sayısı belli değil ve döngüden çıkmak için uygun şart yoksa sonsuz döngü denilen bir durum oluşur.

Program sonsuz döngüye uğradığında ya da döngünün herhangi aşamasında programı duraklatmak için klavyeden CTRL+PAUSE tuşlarına basılır. (DOSBOX kullananlar: CTRL+SCROLL LOCK)
Döngüyü kırdığımızda kod editörü ekranı gelir ve programın kırıldığı satırın yazısı beyaz renkli olarak gösterilir.


F5 ile ya da menüden Run/Continue ile program, çalışmaya kaldığı yerden devam eder.
Çalışmayı baştan başlatmak için menüden Run/Restart. Adım adım ilerletmek için F8

GOTO

Kullanımı:
GOTO {etiket | satır_no}
Program akışını istenilen satıra ya da etikete yönlendirmek için kullanılır. Bir döngü komutu değildir ancak döngü oluşturabilir.

25 Şubat 2021 Perşembe

QuickBasic - 27: Program Çalışma Süresini Hesaplama

Yayınlama: 25 Şubat 2021
Program çalışma süresi; programın başlaması ile bitişi arasında geçen süredir.

Program kodlarının hantal kullanımı, değişkenlerin gereksiz veya yanlış kullanımı aynı işi yapan uzun algoritma seçilmesi program çalışma süresinin artmasına neden olur.

Bu durum küçük programlar için önemsenmeyebilir ancak büyük veri işleyen büyük programlar için programın iş yapma süresi önemli konudur. O yüzden programlamaya başladığınızda hızlı çalışan kodlama tekniklerini öğrenmek ve kullanmak ilerisi için iyi bir alışkanlık olacaktır.

QuickBasic program kodlarının çalışma süresini hesaplamak isterseniz aşağıdaki örnekten faydalanabilirsiniz.

Kodlar derlenip exe dosyaya dönüştürüldüğünde daha hızlı çalışacaktır.

15 Şubat 2021 Pazartesi

QuickBasic - 4: Kontrol blokları

Yayınlama: 2000
Güncelleme: 15 Şubat 2021
Programlama dillerinde döngüler ve akış kontrol komutları çok sık kullanılır.
Programları program yapan esas kısımlar bu komutlarla sağlanır.
QuickBasic'te diğer programlama dillerindekine benzer yapıda döngüler ve mantıksal karşılaştırmalar yapılabilir.

IF ... THEN ... ELSE

Mantıksal karşılaştırma için kullanılır.
Karşılaştırma işlemin sonucunda bir değer döner bu değer ya mantıksal DOĞRU dur ya da mantıksal YANLIŞ.
Lise 1 deyken matematik dersinde Mantık konusunda 1 ve 0'lar ile, doğru ve yanlışlar ile işlemler yapardık. Birçok kişide ne işe yarıyor bunlar diye söylenip dururlardı.
Demek ki bir gerekliliği varmış.
İşte onlar burada gerekecek, isterseniz matematikteki MANTIK ile ilgili kısımları bir daha gözden geçirin. :)

Örnek 1:
IF A = 40 THEN B = 40
A değişkenin değeri 40 ise B değişkeninin değeri de 40 olacaktır.
Eğer A'nın değeri 40 dan farklı ise bu satırın hiçbir etkisi olmayacaktır. B=40 işletilmeyecektir.

Örnek 2:
A = 25
IF A > 40 THEN M$ ="Sayı 40 dan büyük" ELSE M$= "Sayı 40 dan küçük"
PRINT M$
Üstte A değişkeninin değerinin 40'dan büyük olup olmadığı kontrol ediliyor.
Mantıksal karşılaştırmanın sonucunda ancak iki değer dönebilir. DOĞRU veya YANLIŞ.

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.

12 Ekim 2020 Pazartesi

QuickBasic - 26: Olay ile Dallanma

Yayınlama: 12 Ekim 2020
Normalde program kodları ilk satırdan başlayarak son satıra kadar adım adım ilerleyerek komutları yürütür ve son satırdan sonra program sonlanır. Ancak bu şekildeki bir yürütme ile işe yarar büyük programlar yapmak çok zordur ve çok sayıda kod yazmak gerekebilir. Ayrıca tekrar eden işlemler için tekrar kod yazmak da programlama mantığına uygun değildir.

Program kodlarında eğer tekrara düşüyorsanız bilin ki bilgisayarın yapması gereken işin bir kısmını siz yapmış oluyorsunuz demektir. Ayrıca kod tekrarı, program kodlarının büyümesine gereksiz bellek kullanımına, program kodlarının yavaş çalışmasına ve program kodlarının okunurluğunun zorlaşmasına neden olur. Kodların okunmasının zorlaşması kodlarda düzenleme ve geliştirmeyi zorlaştırır.

Dallanma diye adlandıracağımız durum program kodlarının yürütülürken gerekli durum ve şartlarda alt programa atlayarak alt programı çalıştırması ve alt programın yürütülmesi tamamlandığında kaldığı kod satırına geri dönmesidir. Dallanma sayesinde kod tekrarını önlemiş oluruz ayrıca kodların modüler bir yapı oluşması sağlanır.

Kodlarda dallanma oluşturmak için birkaç yöntem var. Bunlardan bazılarını 4: Kontrol blokları ve 7: Alt program sayfasında açıklanmıştı. Bu bölümde bunlar tekrar edilmeyecek. Bunların dışında kalan ve ON ile başlayan dallanmalar açıklanacak.

ON ... GOTO

Belirtilen ifadenin değerine göre belirtilen satırlardan birine dallanmayı sağlar.

Kullanımı:
ON n GOTO satır numaraları listesi | satır etiketi listesi
n integer sayısının aldığı değere göre satır numarası listesindeki satıra dallanma(atlama) yapar. Liste elemanları arasında virgül kullanılır. Satır numarası ve satır etiketi karışık liste oluşturabilir. n değeri 1 veya 1 den büyük olmalıdır.

3 Ekim 2020 Cumartesi

QuickBasic - 13: Grafik işlemleri-1

Yayınlama: Ekim 2019
Güncelleme: 14 Ağustos 2021

COLOR

Grafik işlemleri yaparken yazı ve zemin rengi belirlemek için kullanılan COLOR komutu, ekran moduna göre farklı şekillerde kullanılır.
SCREEN 0 : COLOR [renk][,[zeminrengi][,çerçeve]] 
SCREEN 1 : COLOR [zeminrengi][,palet] 
SCREEN 7-10 : COLOR [renk][,zeminrengi] 
SCREEN 10-13 : COLOR [renk] 
renk: Yazı rengi

zeminrengi: Arkaplan rengi

çerçeve: Monitörün kullanılan alanının dışında kalan alanın rengi. LCD ve LED monitörlerde görülmez. Tüplü manitörler içindir.

Her ekran modunun renk sayısı farklıdır.

Örnekler:


SCREEN 12: 256K renkten aynı anda en fazla 16 renk kullanılabilir.
SCREEN 13: 256K renkten aynı anda en fazla 256 renk kullanılabilir.
SCREEN 0: 0-31 renk. 16-31 arası yanıp sönen renkler.
PALETTE komutu ile renkler değiştirilebilir.

RENK KODLARI:



Renk kodları aşağıdaki tabloda olduğu gibidir.
Sayının;
0. biti mavi,
1. biti yeşil,
2. biti kırmızı renk içindir.
3. bit aktifse aynı renk parlak(açık renk) olacaktır.

2 Ekim 2020 Cuma

QuickBasic - 12: Dosya işlemleri-3

Yayınlama: 2000
Güncelleme: 2 Ekim 2020

Binary(ikili) Dosya Oluşturma ve Yazma

Yalnız metin içermeyen dosyalar vardır. Örneğin; resim(BMP, JPG, GIF ...) ses(WAV, MP3 ...), video(AVI, MOV, MPG ...) gibi dosyalar.

Bu tür dosyalar içinde metin aranmaz ve metinle ilgili işlemler de yapılmaz.

Ama örneğin bir GIF dosya yapısını öğrendiniz ve dosya içindeki resmi ekrana basmak istiyorsunuz.

Bunun için dosyayı binary olarak açıp içindeki kodları resim kodlarına dönüştürmelisiniz.

Binary dosya çalışma sistemi RANDOM dosya gibidir ancak önceden bir kayıt yapısı belirleme gerekliliği yoktur.

GET# ve PUT# komutları ile dosyanın istenilen kısmını okuyabilir, değişiklik yapabilirsiniz.

Binary Dosya Açma

OPEN "c:\ornek\ikili.bin" FOR BINARY AS #1
Random dosyada olduğu gibi dosya yoksa oluşturulur. Varsa sorun çıkmaz. Var olan dosya kullanılır.

27 Eylül 2020 Pazar

QuickBasic - 10: Dosya İşlemleri-1

Yayınlama: 2000
Güncelleme: 27 Eylül 2020
Bilgileri değişkenlere aktararak bellekte tutabiliyoruz ve onlarla ilgili işlemler yapabiliyoruz.

Belleğe aktarılacak ve işlenilecek bilgiler çok sayıda ve belli bir düzende ve değişme ihtimali olan bilgileri program kodları içine yazmak mantıklı olmayacaktır.

QuickBasic'in kullanabileceği RAM bellek sınırlıdır.
Örneğin 1500 öğrencisi bulunan bir okulda öğrencilerin kayıtlarının tutulacağını düşünün.
Bu bilgiler klavyeden veri girişi ile RAM belleğe aktarılabilse bile bilgisayarı kapattığımızda bilgiler kaybolacaktır.

Bu yüzden kalıcı bellekte kalmasını istediğimiz bilgiler için dosyalar kullanılır.

Üç tür dosya açma ve yönetme yöntemi vardır.
  1. Sıralı erişimli (Sequential)
  2. Rasgele erişimli (Random)
  3. İkili (Binary)

OPEN

Belirtilen aygıt(cihaz)da G/Ç(Giriş/Çıkış = I/O: Input/Output) işlemleri yapmak için kullanılır.

14 Eylül 2020 Pazartesi

QuickBasic - 8: Karakter ve metinler ile ilgili işlemler

Yayınlama: 2000
Güncelleme: 14 Eylül 2020

PRINT

Verileri ekrana yazdırmak için kullanılır.

Kullanımı:
PRINT [ifade veya değişken][{,|;}]
ifade
olarak bir fonksiyon ya da matematiksel işlem ya da çift tırnak(") içinde metin olabilir.
Satır sonunda eklenmeyen 2. tırnak işareti satır terkedildiğinde otomatik eklenir.

Virgül(,): Verileri belli atlama noktalarına dizerek yazar.
Noktalı virgül(;): 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ı:

QuickBasic - 11: Dosya İşlemleri-2

Yayınlama: 2000
Güncelleme: 14 Eylül 2020

Rastgele Erişimli(RANDOM) Dosya

Belli bir kayıt yapısı olan dosya türleri için uygundur.
Dosyadaki tüm kaydın tamamını okuma yada yazma gibi bir sorunu olmadığından dolayı bellek için de uygundur.
Çok sayıda kayıt işlemi yapılabilir.
Kayıt sınırı, bilgisayarınızın sabit diskte oluşturulabilecek maksimum dosya boyutu kadardır.
İstenilen kayıt numarası verilerek sadece o kayıt okunabilir veya yazılabilir. Rastgele denmesinin sebebi budur. Baştan sona sıralı bir şekilde tüm kayıtları okumasına gerek yoktur.
Böylece hızlı bir şekilde verilere ulaşılabilir.

Random dosyaya kayıt yapmak veya kayıt okumak için bir kayıt yapısı oluşturulmalıdır.

TYPE ... END TYPE
ile kayıt yapısı belirlenir.
TYPE kayit
	no AS INTEGER
	adi AS STRING * 10
	soyadi AS STRING * 10
END TYPE
Her bir kayıtta kullanılacak değişkenler belirtildi.
Gördüğünüz gibi STRING * 10 diye yazarak string değişkenin bellekte kaç karakter kaplayacağını da belirtiyoruz.
String harici değişken türlerinin standart genişlikleri(bellekte kapladığı bayt) olduğu için genişliğine gerek yoktur.
Byte cinsinden genişlikler
STRING * n n
INTEGER 2
LONG 4
SINGLE 4
DOUBLE 8
Tanımladığımız kayıt tipini örnek alan bir değişken tanımlayalım.
DIM ogr AS kayit
Sonraki satır random dosya açmak için
OPEN "c:\ornek\ogrenci.txt" FOR RANDOM AS #1 LEN = LEN(ogr)
Rastgele erişimli dosya oluşturmak için RANDOM eki kullanılır.
Dosya yoksa yeniden oluşturulur.

11 Eylül 2020 Cuma

QuickBasic - 7: Alt program ve Fonksiyon

Yayınlama: 2000
Güncelleme: 11 Eylül 2020
Programlarımızdaki kodlar arttıkça veya programın işlevleri arttıkça bazı tekrar eden kod grupları olabilir.

Ya da içinde birkaç değer değiştirerek aynı işlemleri yapmak gerekir. Bunun için alt programlar(alt rutin, subroutine) kullanılır.

Ayrıca fonksiyonlar ve alt programlar kullanmak, program kodlarınızın düzenlenebilirliğini ve okunurluğunu kolaylaştıracaktır.

GOTO

GOTO komutunu daha önce döngü oluştururken de görmüştük. GOTO ile alt program oluşturmak hiç kullanışlı değildir.

Aslında GOTO ve GOSUB komutlarına çok az ihtiyaç duyacaksınız.
Sadece önceki basic dillerine uyumlu olsun diye konulmuş.
GOTO ile program akışı belirtilen satıra atlar ve çalışmaya oradan devam eder.

Örnek:
PRINT "MERHABA DÜNYA"
GOTO 10
PRINT "BU SATIRI GÖREBİLECEK MİSİNİZ?"
10 PRINT "PROGRAM SONA ERDİ"
END

GOSUB ... RETURN

Kullanımı:
GOSUB satır_no | satır_etiketi
GOSUB ve ardından bir satır etiketi ya da satır numarası yazılmalı.

26 Ağustos 2020 Çarşamba

QuickBasic - 24: Ses, Müzik

Yayınlama: 26 Ağustos 2020

BEEP

Sistem hoparlöründen bip sesi çalar. En basit ses çalma komutudur. Parametresi yoktur.

SOUND

Kullanımı:
SOUND frekans, süre
Belirtilen frekanstaki sesi süre kadar çalar.
frekans: Sıklık, saniyedeki salınım sayısı. 37-32767 arası bir değer alabilir. Birimi Hertz(Hz)dir.
süre: Sesin süresini belirler. 0-65535 arası bir değer alabilir. Birimi saat tikidir. 1 sn = 18.2 tik

Örnek 1:
' SOUND Örnek
' ©2020 Mesut Akcan
' mesutakcan.blogspot.com
CLS
FOR n = 1 TO 5
    SOUND 1000, 3 '1 KHz, 3/18 sn
    PRINT CHR$(254);
    SLEEP 1
NEXT
PRINT CHR$(219)
SOUND 1000, 10 '1 KHz, 10/18 sn

17 Ağustos 2020 Pazartesi

QuickBasic - 23: Fare (mouse) kullanımı-4

Yayınlama: 17 Ağustos 2020

2) Metin ekranda fare imleç görüntüsünü değiştirme

Metin ekranda (SCREEN 0) fare imlecini değiştirmek için yazmaçlara aktarılacak değerler:
AX = &HA
BX = imleç tipi:
0: Yazılım imleci,
1: Donanım imleci

a)Yazılım imleci

AX = &HA
BX = 0
CX = AND maskesi. Varsayılan değer = &HFFFF
DX = XOR maskesi. Varsayılan değer = &H7700
CX ve DX yazmaçlarına aktarılan INTEGER değerin(2 bayt);
alt baytı(low byte): Karakter kodu,
üst baytı(high byte): Zemin rengi ve karakter rengini ayarlar.

Üst baytdaki;
1. karakter: Zemin rengini,
2. karakter: karakter rengi içindir.

Zemin rengi için 7'den büyük sayılar imlecin yanıp sönmesini sağlar(blinking)
alt bayt: 16'lık sayıda sağdaki 2 karakter. örneğin &H2FA3 için alt byte A3 dür.
alt baytı elde etmek için formül: SAYI AND &HFF
üst baytı elde etmek için formül: SAYI AND &HFF00
üst bayt: 16'lık sayıda soldaki 2 karakter. örneğin &H2FA3 için üst byte 2F dir.

Örnek 1:
DX = &H2F58

Kodların açılımı:
2: Yeşil zemin. 2=Yeşil renk
F: Beyaz yazı rengi. &HF=15=Beyaz renk
58: &H58 = 88 = X karakteri

Örnek 2:
DX = &H9E18
9: Mavi zemin.1+8=9. 1=Mavi renk. 7'den büyük renk kodları yanıp sönen imleç içindir.
E: Sarı yazı rengi. &HE=14=Sarı renk
18: &H18 = 24 = Yukarı ok karakteri