47
Eğitim Fakültesi Öğrencileri için BASIC Programlama Dili DERS NOTLARI Erkan YANARATEŞ

BÖLÜM 1w3.gazi.edu.tr/~erkany/dersler/BASIC_Programlama_Dili_02... · Web viewK = A ^ 2 ‘ Burada A’nın karesi hesaplanmaktadır. Not: Programdaki herhangi bir satırı okutmamak

Embed Size (px)

Citation preview

Eğitim Fakültesi Öğrencileri için

BASIC Programlama Dili

D E R S N O T L A R I

Erkan YANARATEŞ

KASTAMONU 2005

İÇİNDEKİLER

BASIC Programlama Dili..........................................................................................................2PROGRAMLAMAYA GİRİŞ........................................................................................................................................2

Program Nedir?.........................................................................................................................................................2DEĞIŞKEN VE SABIT KAVRAMI..............................................................................................................................3

Sayısal Değişkenler...................................................................................................................................................3Alfasayısal Sayısal (Karakter: String) Değişkenler...................................................................................................3Değişkenlere Bilgi Atama (Yükleme).......................................................................................................................3

QBASIC OPERATÖRLERI (IFADELERI)...................................................................................................................4Matematiksel İşlem Operatörleri...............................................................................................................................4Sorgu (karşılaştırma) Operatörleri.............................................................................................................................4Mantık Operatörleri...................................................................................................................................................4

PROGRAM NASIL YAPILIR?......................................................................................................................................5ALGORITMA.................................................................................................................................................................5

Algoritma Kuralları...................................................................................................................................................5BASIC KOMUTLARI...................................................................................................................6PRINT KOMUTU...........................................................................................................................................................6INPUT KOMUTU..........................................................................................................................................................6CLS KOMUTU...............................................................................................................................................................7REM KOMUTU.............................................................................................................................................................7GOTO DEYIMI..............................................................................................................................................................7ETIKET...........................................................................................................................................................................7AND / OR FONKSIYONLARI......................................................................................................................................8SORGU İFADELERI (IF – THEN) / (IF – THEN – ELSE)..........................................................................................8DÖNGÜ İFADELERI (IF – THEN – GOTO)................................................................................................................9SAYAÇ...........................................................................................................................................................................9BLOK IF SORGU İFADESI..........................................................................................................................................9

*** ALIŞTIRMALAR ***............................................................................................................10FOR – NEXT DÖNGÜSÜ...........................................................................................................................................12SLEEP KOMUTU........................................................................................................................................................12

*** ALIŞTIRMALAR ***............................................................................................................13TAB (…) – SPC(…) – SPACE$(…) FONKSIYONLARI...........................................................................................14PRINT STRING$ KOMUTU.......................................................................................................................................14DIM DEYIMI...............................................................................................................................................................14

*** ALIŞTIRMALAR ***............................................................................................................15ASCII KODLARI.........................................................................................................................................................20CHR$ FONKSIYONU.................................................................................................................................................20INT VE CINT FONKSIYONLARI..............................................................................................................................21LOCATE KOMUTU....................................................................................................................................................21INPUT$(…) KOMUTU................................................................................................................................................21READ – DATA FONKSIYONU..................................................................................................................................22DATE$ – TIME$ FONKSIYONU...............................................................................................................................23SPC(…) FONKSIYONU – SPACE$(…) FONKSIYONU..........................................................................................23UCASE$ - LCASE$......................................................................................................................................................24RENK KODLARI.........................................................................................................................................................24

*** ALIŞTIRMALAR ***............................................................................................................25SELECT – CASE (ELSEIF).........................................................................................................................................27MELODİ KOMUTLARI..............................................................................................................................................28GOSUB – RETURN.....................................................................................................................................................29

*** ALIŞTIRMALAR ***............................................................................................................31

BASIC Programlama Dili 2

BASIC Programlama Dili

PROGRAMLAMAYA GİRİŞ

Program Nedir?Bilgisayarın amaca yönelik işleyişini sağlayan ve kodlardan oluşan gruba program denir. Bu kodlar bütününe

ise programlama denir. Amaca uygun olarak çeşitli programlama dilleri kullanılır. Bunlardan bazıları şunlardır.

BASIC Genel amaçlı

C (si) Genel amaçlı

Pascal Veri tabanı amaçlı

Cobol Ticarî amaçlı

Assembly Makine dili

BASIC Kullanımı ile İlgili Önemli NotlarWindows ortamında iken QuickBASIC programına dönmek için gerekli işlemler:

“BalatBilgisayarı KapatMS-DOS Kipinde Başlat” seçeneklerini kullanınız.

C:\WINDOWS> şeklinde çıkan MS-DOS satırına, CD.. yazıp “ENTER” tuşuna basınız.

C:\> şeklinde çıkan MS-DOS satırına, CD QB yazıp “ENTER” tuşuna basınız.

C:\QB> şeklinde çıkan MS-DOS satırına, QB yazıp “ENTER” tuşuna basınız.

QuickBASIC Programına Hoş Geldiniz.

Hazırladığınız BASIC programlarını çalıştırmak için Run menüsünden Start alt menüsünü veya klavyeden (shift + F5) tuşlarını kullanınız.

Çalışan bir programı durdurmak için (Ctrl + Break) tuşlarını kullanınız.

Hazırladığınız bir BASIC programını kaydetmek için ALT + F tuşuna basınız ve File menüsündeki “Save” komutunu kullanınız.

Kaydettiğiniz bir BASIC programını açmak için ALT + F tuşuna basınız ve File menüsündeki “Open Program” komutunu kullanınız.

Yeni bir BASIC program oluşturmak için ALT + F tuşuna basınız ve File menüsündeki “New Program” komutunu kullanınız.

Çalışmalarınız bittikten sonra, QuickBASIC programını kapatmak ve Windows’a geri dönmek için gerekli işlemler:

ALT + F tuşuna basınız ( Fi le menüsündeki “new, open, save,... exit” gibi öğeler görünecektir.).

Aşağı yönlü ok () ile “EXIT” seçeneğine gelip “ENTER” tuşuna basınız.

C:\QB> şeklinde çıkan MS-DOS satırına, EXIT yazıp “ENTER” tuşuna basınız.

“Windows yeniden başlıyor” mesajını görünce Windows’a geçmek için bekleyiniz.

BASIC Programlama Dili 3

Değişken ve Sabit KavramıQBasic Programlama Dilinde işlenecek bilgiler (sabitler) değişkenlere atanarak kullanılır. Sabit ve değişkenleri

kabaca iki grupta toplamak mümkündür.

a) Sayısal (nümerik) sabitler ve değişkenler b) Alfasayısal (alfanümerik) sabitler ve değişkenler

Sayısal DeğişkenlerSayısal değişkenlere atanan sabitlerin yine sayısal sabit olmaları gerekir. Yani harfli ifade sayısal değişkenlere

atanamaz.

%: Tamsayı (integer) değişkenler A% = 62.8 63

!: Tek yoğunluklu (incelikli) değişkenler A! = 3335.35

#:Çift incelikli (yoğunluklu) değişkenler A# = 3.141592654

Alfasayısal Sayısal (Karakter: String) DeğişkenlerAlfasayısal değişkenlere atanan sabitlerin sayısal veya harfli ifade olmaları fark etmez. Ancak sabitler çift tırnak

(“…”) içinde gösterilmelidir.

AD$, isim$, ADRES$ vs.

A$ = “GAZİ” veya isim$ = ”Erkan”

No$, TELEFON$, sinif$

B$ = “02-250” veya C$ = “1.70”

Değişkenler

1. Karakter (string) değişkenler

2. Sayısal değişkenler

a) Tamsayı (integer) değişkenler

b) Tek yoğunluklu (incelikli) değişkenler

c) Çift incelikli (yoğunluklu) değişkenler

3. İndisli değişkenler

Sabitler

1. Karakter (string) sabitler

2. Sayısal sabitler

a) Tamsayı (integer) sabitler

b) Tek yoğunluklu (incelikli) sabitler

c) Çift incelikli (yoğunluklu) sabitler

Örnekler:

SAYI = 1673.72

A% = -373

PI# = 3.141592654

ISIM$ = “QuickBASIC”

Değişkenlere Bilgi Atama (Yükleme)sayi1 = 0.072

sayi2 = sayi1 + 0.028

A% = -374 + 1

PI# = 22 / 7

İsim$ = “Quick” + “BASIC”

Not: Sayısal değişkenlere bilgi yüklenirken bütün matematiksel işlemler kullanılırken karakter değişkenlere bilgi yüklenirken sadece toplama işlemi kullanılabilir. Toplama işleminin karakter sabitlere etkisi de sadece yayana göstermek içindir.

BASIC Programlama Dili 4

QBasic Operatörleri (i fadeleri)QBasic’te kullanılan operatörler üç gruba ayrılır.1. Matematiksel işlem operatörleri2. Sorgu (karşılaştırma) operatörleri3. Mantıksal operatörler

Matematiksel İşlem OperatörleriBu operatörler QBasic’te matematiksel işlemler için kullanılan karakterlerdir.

Operatör İşlem Matematiksel ifade QBasic Karşılığı

( ) Parantez içindeki işlemler (a – b) / 2

^ Üs alma işlemi a / (b * c)

* Çarpma işlemi a * b / (c*d)

/ Bölme işlemi (a2) (b3) a ^ 2 * b ^ 3\ Tamsayı bölme işlemi a (-b) a * (-b)+ Toplama işlemi 2 + k (a)5 2 + k * a ^ 5– Çıkarma işlemi

Operatörlerin belli yazılış biçimleri vardır. Örneğin kâğıda iki değerin çarpımını yazarken herhangi bir işaret kullanmazken QBasic’te bu işlem için mutlaka çarpma anlamındaki (*) işaretini kullanmalıyız.

Matematiksel Öncelik Sırası:Ayrıca yukarıda görülen operatörlerin matematiksel işlem sırası vardır.

Matematiksel işlemlerde ilk önce parantez içindeki işlemler yapılır. Daha sonra üs (kuvvet) alma işlemi yapılır. Daha sonraki öncelik çarpma ve bölmeye aittir. En son işlem yapılan operatörler ise toplama ve çıkarmadır. Aynı önceliğe sahip matematiksel işlemle söz konusu olduğunda, önce soldaki işlem yapılır. Bu sıralama şematik olarak yandaki şekilde görülmektedir.

Örnekler:

3 + 12 – 5 ^ 2 * 2 = –35 (3 + (12 – 5) ^ 2) * 2 = 104 ((19 – 3) / (3 – 1) ^ 2) * 6 = 24(48 + 1) / (14 /2) * 3 = 21 64 – (4 + 4) ^ 2 – 1 = –1 6 * 4 / 2 * 4 = 48

Sorgu (karşılaştırma) OperatörleriBu operatörler eşitlik veya eşitsizlik işaretleriyle iki değerin karşılaştırılmasında kullanılırlar.

Operatör Durum QBasic Karşılığı

= Eşittir a = b

< Küçüktür a < b

> Büyüktür a > b

>< Eşit değildir (farklıdır) a >< b

<> Eşit değildir (farklıdır) a <> b

<= veya =< Küçük veya eşittir a <= b veya a =< b

>= veya => Büyük veya eşittir a >= b veya a => b

Mantık OperatörleriBu operatörler birden fazla karşılaştırılmayı bir arada yapmak için kullanılırlar. Başlıca mantık operatörleri

AND (ve), OR (veya), NOT (değil)

BASIC Programlama Dili 5

Program Nasıl Yapıl ır?– Programın yapısı bir ağaca benzer– Ağacın önce kalın dalları saptanır– Böylece programın genel hatları çizilmiş olur– Daha sonra her büyük dal alınıp, üzerine fonksiyon ve prosedürler yani daha küçük dallar yerleştirilir– Sonuç olarak bu büyük parçalar birbirine monte edilerek ağaç yani program oluşturulur.

Bu şekilde genel yapıları tasarlamaya program analizi, yapılacak işleri maddeleyerek, nerede ne yapılacağını belirleme de kabaca algoritma denir. Bir başka deyişle;

AlgoritmaBir problemin çözümünde izlenecek yolların basamaklar halinde sözle ifade edilmesidir.

Algoritma Kuralları Her satıra giderek büyüyen satır numarası verilebilir (zorunlu değil). Örnek: 10, 20, 30, … Sorgu ifadesi varsa EĞER şart sonucu yanlış ise program bir alt satırdan devam eder. Doğru ise aynı

satırdaki işlemler yapılır. Örnek: Eğer 1 < 2 ise ses çıkar. Algoritmanın bittiğini gösteren, en az bir tane “DUR“ komutu yazılmalıdır. Algoritmada atama işlemi varsa “=” işareti kullanılır. Bu eşitliğin solunda değişken, sağında ise sabit sayı

(değer), değişken veya herhangi bir matematiksel işlem olabilir. Eşitliğin solunda herhangi bir işlem yapılmaz. Örnek: A = 2, B = C, D = 2 * A + B

Algoritma Örnekleri

Kahve pişirmeye ve servis yapmaya ait algoritma Jetonlu telefon ile görüşme yapmaya ait algoritma

1. Cezveyi al2. Cezveye su koy3. Kahveyi ve şekeri al4. Cezveye kahve ve şekeri koy5. Cezveyi ocağa koy6. Kibrit veya çakmağı al7. Ocağı yak8. Kaynamasını bekle9. Ocağı kapat10. Fincanları al11. Kahveyi fincanlara koy12. Servis yap13. Dur

1. Jetonu al2. Telefon kabini bul3. Kabine gir4. Ahizeyi kaldır5. Jetonu koy6. Numarayı çevir7. Numaranın düşmesini bekle8. Eğer meşgulsea) Ahizeyi yerine koyb) Jetonu alc) 4. adıma git9. Konuşmayı yap10. Telefonu kapat11 Dur

Bir arabanın hareket ettirilmesi ve durdurulmasına ait algoritma

Yandaki algoritmaya birkaç kontrol adımı eklenecek olursa;

1. Başla2. Kontağı çevir3. Arabanın çalışmasını bekle4. Birinci vitese al5. Hareket et6. Durdur7. Kontağı kapat8. Bitir (DUR)

1. Başla2. Kontağı çevir3. Araba çalıştı mı? Hayır ise 11. adıma git.4. Birinci vitese al5. Hareket et6. Gideceğin yere vardın mı? Hayır ise 5. adıma git7. Durdur8. Kontağı kapat9. Arabadan in10. Bitir (DUR)11. Arızayı araştır12. Arızayı buldun mu? Evet ise 2. adıma git13. Tamirci çağır14. 2. adıma git

BASIC Programlama Dili 6

BASIC KOMUTLARI

PRINT KomutuBu komut belirtilen değişkenlere daha önceden atanmış değerlerin ekrana yazılmasını sağlar. Algoritmadaki YAZ komutu BASIC programında PRINT olarak kullanılır. Genel kullanımı şu şekildedir.PRINT ifadeBuradaki ifade yerine birden fazla değişken, mesaj veya matematiksel işlemler kullanılabilir. Bu durumda

kullanılan ifadeler arasında virgül (,) veya noktalı virgül (;) işareti kullanılmalıdır. Virgül, iki ifade arasında 16 boşluk bırakılmasını, noktalı virgül iki ifadenin yan yana yazılmasını sağlar.

Bir satırda sadece PRINT komutu varsa, program işletildiğinde ekranda boş bir satır oluşturulur.Noktalı virgülle bitirilen bir PRINT satırının anlamı, bir sonraki ekran çıktısının bir önceki ile yan yana yazılmasını

sağlamak içindir (PRINT ifade ; ).

PRINT Komutunun Kullanım ÇeşitleriPRINT PRINT degiskenPRINT “mesaj” ; degiskenPRINT degisken ; “mesaj” PRINT “mesaj” ; degisken ; “mesaj”; degisken ; …PRINT 5 * 2 veya PRINT 2 ^ 3 veya PRINT X ^ 2 + 2 * X + 2

Yukarıdaki örneklerde kullanılan noktalı virgüllerin yerine tercihe göre virgül de kullanılabilir.

Örnekler:A$ = “DERSİMİZ: ”B$ = “BASIC PROGRAMLAMA DİLİ”PRINT A$ ; B$

V = 60F = 75PRINT “Ortalama=” ; V * 0.4 + F * 0.6

INPUT KomutuKlavyeden bir değer okuyarak, bu değerin belirtilen değişkene atanmasını sağlar.Algoritmadaki OKU komutu BASIC programında INPUT olarak kullanılır. Üç değişik şekilde kullanılabilir;INPUT degisken – INPUT “mesaj” ; degisken – INPUT “mesaj” , degiskenBu durumda “mesaj” ve kullanılan değişken arasına virgül (,) veya noktalı virgül (;) işareti kullanılmalıdır. Virgül,

ekranda mesajdan sonra “yanıp sönen imleç” çıkmasını, noktalı virgül ise “soru işareti” çıkmasını sağlar.

Sayısal değişkene alfasayısal değer atanamaz (A = “Erkan” yanlış, A$ = “Erkan” doğru bir atamadır”).Sayısal bir değişkene değer atamak için klavyeden alfasayısal bir değer yazılırsa ekranda “yeniden deneyin”

anlamında “Redo from start” şeklinde bir mesaj çıkar.

INPUT komutu mutlaka bir değişkenle birlikte kullanılır, PRINT komutu gibi tek başına kullanılmaz. PRINT komutundaki gibi birden fazla “mesaj” kullanılmaz. Virgül ve noktalı virgül işaretleri INPUT ve PRINT komutlarında farklı amaçlarla kullanılmaktadır.

INPUT Komutunun Kullanım Çeşitleri

INPUT degiskenINPUT A, B, C, …INPUT “mesaj” ; AINPUT “bir sayı girin:” , AINPUT “mesaj” ; A, BINPUT “iki sayı girin:” , A, B

INPUT degisken$INPUT A$, B$, C$, …INPUT “mesaj” ; A$INPUT “Adınızı girin:” , A$INPUT “mesaj” ; A$, B$INPUT “Sınıfınızı ve numaranızı girin:” , A$, B$

Örnekler:INPUT “BİR SAYI GİRİN:”, AK = A ^ 2PRINT A ; “NİN KARESİ:” ; K ; “DİR.”END

INPUT “İKİ SAYI GİRİN:”, A, BKR = (A+ B) ^ 2PRINT “SONUÇ:” ; KR ; “DİR.”END

BASIC Programlama Dili 7

CLS KomutuCLS: Clear Screen (Ekranı Temizle)

CLS komutuna her rastlanılan satırda ekrandaki yazılar temizlenir. Bu komut programın herhangi bir satırında ve istenilen sayıda kullanılabilir.

Örnek:

CLSINPUT “BİR SAYI GİRİN:”, AK = A ^ 2PRINT A ; “NİN KARESİ:” ; K ; “DİR.”END

CLSINPUT “Adınızı yazıp ENTER tuşuna basın:”, AD$CLSPRINT “Merhaba!” ; AD$PRINT “Programa dönmek için herhangi bir tuşa basın”

REM KomutuREM: Remark (Açıklama)

Programın herhangi bir yerinde kullanılabilen REM komutu programda hiçbir değişiklik yapmaz.

Karışık ve uzun bir programda nerede ne yapıldığına dair bazı açıklamalara ihtiyaç duyulabilir. Bu durumda REM komutuyla başlanılan satıra kısa notlar eklenir. Diğer bir kullanılışı da programın herhangi bir satırının sonuna tek tırnak (kesme) işareti konularak kısa notla eklenir. Bu yazılış türleri aşağıda gösterilmiştir.

REM Bu program üçgenin alanını bulur.

K = A ^ 2 ‘ Burada A’nın karesi hesaplanmaktadır.

Not: Programdaki herhangi bir satırı okutmamak için onu silmek yerine, satırın başına REM veya kesme işareti yazmak yeterlidir.

Örnek:REM Bu program üçgenin alanını hesaplar.CLSINPUT “Üçgenin taban uzunluğunu giriniz:”, TINPUT “Üçgenin yüksekliğini giriniz:”, YA = T * Y / 2PRINT “Üçgeninin alanı:” ; A ; “dir.”END

GOTO DeyimiBir programın herhangi bir satırına gitmek için kullanılır. GOTO komutu bir etiket ile birlikte kullanılır. Algoritma

satırındaki GİT komutunun karşılığı BASIC programında GOTO’dur.

GOTO komutu tek başına kullanılabildiği gibi sorgu ifadeleri ile birlikte de kullanılabilir.

EtiketProgramın herhangi bir satırına (gitmek istenilen satır) hatırlatıcı bir kelime ile birlikte iki nokta üst üste “:” işareti

yazarak oluşturulur. Etiket oluşturulurken boşluk veya İngiliz alfabesi dışında bir harf kullanılmaz. Ayrıca BASIC komutlarından etiket oluşturulamaz.

BASLA: ‘ Bu satıra etiket satırı denir.…İşlemler…GOTO BASLA

Yandaki program taslağında olduğu gibi bir etiketle (BASLA:) başlayıp, hiçbir şart olmadan GOTO komutu ile biten (GOTO BASLA) programların yapısına sonsuz döngü denir. Yani program sürekli çalışmaktadır. Bu şekilde sonsuz döngüye giren bir programdan çıkmak için klavyeden Ctrl + Break tuşları kullanılabilir.

BASLA: ‘ Bu satıra etiket satırı denir.İşlemlerEĞER <şart> İSE GOTO BASLA

Yandaki program taslağında ise bir etiketle (BASLA:) başlayıp, şart satırında (şartın doğru olması halinde) program tekrar BASLA: satırına yönlendirilmektedir.

BASIC Programlama Dili 8

AND / OR Fonksiyonlarıİngilizcede VE / VEYA anlamına gelen bu fonksiyonlar BASIC programlama dilinde de aynı anlamda

kullanılmaktadırlar.

IF A > B AND A > C THEN PRINT “A EN BÜYÜKTÜR”

IF NOT < 0 OR NOT > 100 THEN PRINT “NOT GEÇERSİZDİR.”

Burada OR (VEYA), karşılaştırılan şartlardan en az birinin doğru olması halinde kullanılır. AND (VE) ise karşılaştırılan şartların hepsinin doğru olması halinde kullanılır.

Sorgu İfadeleri (IF – THEN) / ( IF – THEN – ELSE)Birinci kullanım

Algoritma : EĞER <şart> İSE <işlem>

BASIC Prog.: IF <şart> THEN <işlem>

Burada <şart> ifadesinin sonucu doğru ise <işlem> yapıldıktan sonra bir alt satıra inilir, yanlış ise <işlem> yapılmadan bir alt satıra inilir.

İkinci kullanım

Algoritma : IF <şart> THEN <işlem1> ELSE <işlem2>

BASIC Prog.: EĞER <şart> İSE <işlem1> DEĞİLSE <işlem2>

Burada ise <şart> ifadesinin sonucu doğru ise <işlem1>, yanlış ise <işlem2> uygulanır.

Bu kullanım genellikle, <şart> ifadesinin sonucu iki ihtimalli ise (%50-%50) uygulanır.

Ekranda okutulan bir sayının sıfırdan büyük veya sıfırdan küçük olduğunu bulup yazdıran BASIC programı yazınız.CLSINPUT AIF A < 0 THEN PRINT “SAYI SIFIRDAN KÜÇÜK”IF A > 0 THEN PRINT “SAYI SIFIRDAN BÜYÜK”END

Bu programdaki sorgu ifadeleri yerine aşağıdaki sorgu ifadesi kullanılamaz.

IF A < 0 THEN PRINT “SAYI SIFIRDAN KÜÇÜK” ELSE PRINT “SAYI SIFIRDAN BÜYÜK”

Çünkü bu sorgu ifadesi “sıfırdan küçük” veya “sıfırdan büyük” haricinde başka ihtimal kalmadığı durumlarda kullanılır. Oysa “sayı sıfırdır” (A = 0) ihtimali de vardır.

Ekranda okutulan üç farklı sayıdan en büyüğünü bulup yazdıran bir BASIC programı yazınız.Birinci yol:CLSINPUT “Üç tane sayı giriniz:”, A, B, C ‘ Program işletildiğinde sayıları girerken aralarına virgül koyunuz.IF A < B AND A > C THEN PRINT “EN BÜYÜK” SAYI” ; A ; “DİR”IF B < A AND B > C THEN PRINT “EN BÜYÜK” SAYI” ; B ; “DİR”IF C < A AND C > B THEN PRINT “EN BÜYÜK” SAYI” ; C ; “DİR”END

İkinci yol:CLSINPUT “Üç tane sayı giriniz:”, A, B, C ‘ Program işletildiğinde sayıları girerken aralarına virgül koyunuz.IF A < B AND A > C THEN PRINT “EN BÜYÜK” SAYI” ; A ; “DİR” : END (veya GOTO SON) IF B < A AND B > C THEN PRINT “EN BÜYÜK” SAYI” ; B ; “DİR” : END (veya GOTO SON)PRINT “EN BÜYÜK” SAYI” ; C ; “DİR”SON:END

BASIC Programlama Dili 9

Döngü İfadeleri ( IF – THEN – GOTO)Herhangi bir şart satırı ile etiket satırı arasında programın tekrar ettirilmesine DÖNGÜ denir. Bu sırada program

tekrar sayısı kadar işletilir. Bu tekrarların sayısı ŞART SATIRI tarafından belirlenir.Genel kullanılışı;

BASLA: ‘ Bu satıra etiket satırı denir.…İşlemler…IF <şart> THEN GOTO BASLA ‘ Bu satır şart satırıdır.

Örnek:SAYI = 6TEKRAR:INPUT “0-10 ARASI BİR SAYI TUTTUM BİLİN:”, CEVAPIF CEVAP = SAYI THEN PRINT “BİLDİNİZ”IF CEVAP <> SAYI THEN GOTO TEKRAR

SayaçBir değişkenin değerini arttırmak veya azaltmak için kullanılır. Eğer bu işlem tekrarlanacaksa sayaç bir döngü

içerisinde olmalıdır. Genel kullanım şekilleri;

A = A + 1 B = B – 2 C = C + A D = D – B

Örnek: 1’den 100’e kadar olan sayıları sırayla alt alta ekranda gösteren bir BASIC programını sayaç ve döngü kullanarak yazınız.

BASLA:I = I + 1PRINT IIF I = 24 OR I = 48 OR I = 72 THEN SLEEP 3IF I < 100 THEN GOTO BASLA

Blok IF Sorgu İfadesiProgramın herhangi bir yerinde “IF <şart> THEN” ile başlayan ve “END IF” ile biten kalıba “Blok IF” denir.Bu kalıbın ilk satırındaki <şart> sonucu doğru ise IF ile END IF arasındaki işlemler yapılır, yanlış ise program,

karşılaştığı ilk “END IF”den sonra işleyişine devam eder. Genel yazılımı;IF <şart> THEN

‘Şart sonucu doğruysa yapılacaklar....

ELSE‘Şart sonucu yanlışsa yapılacaklar....

END IF

Daha önce görülen sorgu ifadelerinin tersine Blok IF kalıbının ilk satırındaki THEN ifadesinden sonra herhangi bir komut yazılmaz. Komutlar yukarıda görüldüğü gibi IF ile END IF satırları arasına yazılır.

Bu sayede sorgulanan şartın doğru olması halinde istenilen sayıda komut, satırlar halinde işletilebilir.INPUT "bir sayi girin", AIF A > 40 THEN

IF A < 60 THENPRINT "SAYI 40 ile 60 arasinda"

ELSEPRINT "SAYI 60 yada 60 dan buyuk"

END IFELSE

IF A = 40 THENPRINT "SAYI 40a esit"

ELSEPRINT "SAYI 40dan kucuk"

END IFEND IF

BASIC Programlama Dili 10

*** ALIŞTIRMALAR ***

Sabit iki sayının a) toplamını b) ortalamasını bulup yazdıran algoritmayı ve BASIC programını yazınız.

a) Toplam b) Ortalama1. BAŞLA2. A = 53. B = 24. TOPLAM = A + B5. YAZ TOPLAM6. DUR

CLSA = 5B = 2TOPLAM = A + BPRINT TOPLAMEND

1. BAŞLA2. A = 53. B = 24. TOPLAM = A + B5. ORT = TOPLAM / 26. YAZ ORT 6. DUR

CLSA = 5B = 2TOPLAM = A + BORT = TOPLAM / 2PRINT ORTEND

Ekranda okutulan (klavyeden girilen) iki sayının a) toplamını b) ortalamasını bulup yazdıran algoritmayı ve BASIC programını yazınız.

a) Toplam b) Ortalama1. BAŞLA2. OKU A veya GİR A3. OKU B veya GİR B4. TOPLAM = A + B5. YAZ TOPLAM6. DUR

CLSINPUT AINPUT BTOPLAM = A + BPRINT TOPLAMEND

1. BAŞLA2. OKU A veya GİR A3. OKU B veya GİR B4. TOPLAM = A + B5. ORT = TOPLAM / 26. YAZ ORT 6. DUR

CLSINPUT AINPUT BTOPLAM = A + BORT = TOPLAM / 2PRINT ORTEND

Ekranda okutulan bir sayının karesini ve küpünü bulup yazdıran algoritmayı ve BASIC programını yazınız. 1. YOL 2. YOL

1. BAŞLA2. OKU A3. KARE = A ^ 24. KUP = A ^ 35. YAZ KARE, KUP6. DUR

CLSINPUT AKARE = A ^ 2KUP = A ^ 3PRINT KARE, KUPEND

1. BAŞLA2. OKU A3. YAZ A ^ 2, A ^ 34. DUR

CLSINPUT APRINT A ^ 2, A ^ 3END

Ekranda okutulan iki sayının toplamlarının karesini ve çarpımlarının küpünü bulup yazdıran BASIC programını yazınız.

1.YOL 2.YOL 3.YOLCLSINPUT AINPUT BT = A + BTKARE = T ^ 2C = A * BCKUP = C ^ 3PRINT TKARE, CKUPEND

CLSINPUT A, BTKARE = (A + B) ^ 2CKUP = (A * B) ^ 3PRINT TKARE, CKUPEND

CLSINPUT A, BPRINT (A + B) ^ 2, (A * B) ^ 3END

Klavyeden girilen bir sayının tek sayı mı yoksa çift sayı mı olduğunu bulup yazdıran BASIC programı yazınız.1.YOL 2.YOL

CLSINPUT “Bir sayı girin”, AK = A - (A \ 2) * 2IF K = 0 THEN PRINT "sayı çifttir"IF K = 1 THEN PRINT "sayı tektir"END

CLSINPUT “Bir sayı girin”, AK = A - (A \ 2) * 2IF K = 0 THEN PRINT "sayı çifttir" ELSE PRINT "sayı tektir"END

Program Analizi:

A K Ekran 4 0 sayı çifttir veya

A K Ekran5 1 sayı tektir

BASIC Programlama Dili 11

ALFASAYISAL değişkenlere matematiksel işlem uygulanabilir mi?Alfasayısal (alfanümerik) değişkenlerin de toplanabileceğini gösteren bir BASIC programı.1 CLS2 A$ = "ANKARA "3 APLAKA$ = "06 "4 K$ = "KASTAMONU "5 KPLAKA$ = "37 "6 TOP$ = A$ + APLAKA$ + K$ + KPLAKA$7 PRINT TOP$8 REM 6 ve 7 numaralı satırlar silinip, yerine PRINT A$; APLAKA$; K$; KPLAKA$ satırı kullanılabilir.9 END

Değerleri aynı fakat iki ayrı şekilde verilen sayısal değişkenlere örnek bir BASIC programı.Örnek 1. A = 1.555 : A% = 1.555 : B% = 1.455PRINT APRINT A%PRINT B%

EKRAN ÇIKTISI:

1.55521

Not: Değişkenin sonu % ile bitiyorsa; ondalık kısımdaki sayıların ilki 5’ten küçük ise (ör:1.455) ondalık kısım atılır, 5 veya 5’ten büyük ise (ör:1.555) sonuç bir üst tam sayıya yuvarlatılır.

Örnek 2.

CLSINPUT "VİZE=", VINPUT "FİNAL=", FORT = V * 0.4 + F * 0.6IF ORT <= 59.4 THEN SONUC$="KALDI" ELSE SONUC$="GEÇTİ"PRINT ORT, SONUC$

V=66, F=55V=65, F=56içinEKRAN ÇIKTISI

59.4 KALDI59.6 GEÇTİ

Örnek 3.

CLSINPUT "VİZE=", VINPUT "FİNAL=", FORT% = V * 0.4 + F * 0.6IF ORT% <= 59.4 THEN SONUC$="KALDI" ELSE SONUC$="GEÇTİ"PRINT ORT%, SONUC$

V=66, F=55V=65, F=56içinEKRAN ÇIKTISI

59 KALDI60 GEÇTİ

Not: Değişkenin sonu % ile bitiyorsa; ondalık kısımdaki sayıların ilki 5’ten küçük ise (ör:59.4) ondalık kısım atılır (ör:59), 5 veya 5’ten büyük ise (ör:59.6) sonuç bir üst tam sayı olur (ör:60).

Ondalıklı şekilde verilen bir sayının ondalık kısmının en sonundaki sıfırı gösteren BASIC programıA = 1.80 : A$ = "1.80"PRINT APRINT A$

EKRAN ÇIKTISI:1.81.80

Not: Bir değişken sayısal (nümerik) olarak verilmişse (A, B, C vb.), ondalık kısmın sonundaki sıfır rakamının bir anlamı yoktur. Eğer söz konusu sıfırın görüntülenmesi gerekli ise değişken alfanümerik olarak verilmelidir (A$, B$, C$ vb).

BASIC Programlama Dili 12

FOR – NEXT DÖNGÜSÜBir FOR … NEXT döngüsü genel hatlarıyla aşağıdaki gibi kullanılır.

FOR degisken = baslangic TO bitis STEP X

İşlemler

NEXT degisken

Örnek:FOR A = 1 TO 10 STEP 2

PRINT “Döngüde kullanılan değişkenin (A) şu andaki değeri”; A

NEXT A

Döngüde kullanılan kelimelerin anlamları:

FOR : Bir döngü açılacağını bildirir.degisken : Döngünün her tekrarında değişen bir değerdir.baslangic : Döngüdeki değişkenin başlangıçta alacağı değerdir.TO : Anahtar kelime (-e, -a, -ye, -ya kadar anlamında)bitis: Döngüdeki değişkenin alacağı son değeri belirler. Bu aynı zamanda döngüdeki tekrar sayısıdır.STEP X : Bu kelime döngüdeki değişkenin arttırılmasında veya azaltılmasında kullanılır. X değeri pozitif

olursa degisken X kadar arttırılır, X değeri negatif ise degisken X’in mutlak değeri kadar azaltılır. Eğer degisken 1’er 1’er arttırılacaksa STEP kullanmaya gerek yoktur.

NEXT : Bu satırda degisken STEP değerine uygun olarak arttırılır veya azaltılır. Döngü bitişinin aşılıp aşılmadığı test edilir. Eğer aşılmış ise program NEXT satırının altından işlemeye devam eder. Aşılmamış ise FOR kelimesinin altından başlayarak bir önceki işlemleri tekrarlar.

SLEEP KomutuÇalışmakta olan bir programı bekletmek için kullanılır. İki çeşit kullanımı vardır. Bunlardan birincisi, programın

herhangi bir satırında bulunan SLEEP komutuna gelindiğinde program, herhangi bir tuşa basıncaya kadar bekletilir. Diğer kullanımı ise şu şekildedir.

SLEEP saniye (Örnek: SLEEP 3)Bu kullanımda, program bu satıra geldiğinde belirtilen saniye kadar bekletilir.Not: Belirtilen saniye kadar beklemeden herhangi bir tuşa basıldığında SLEEP komutunun genel kullanımı

uygulanmış olur. Yani birinci kullanım daha baskındır.

2’den 100’e kadar 2’şer 2’şer ilerleyen sayıları ekranda gösteren bir programda, ekran 24 satırdan oluştuğu için ve “press any key to continue” mesajı da bir satır işgal ettiği için ekran çıktısının ancak son 23 değeri görülür.

Bu gibi 23 satırdan daha fazla ekran çıktısı olan bir programa SLEEP komutunu içeren bir satır eklenirse, program çalışırken SLEEP satırına geldiğinde bekler. Bu noktada programı ilerletmek için görülen her değerden sonra herhangi bir tuşa basmak gerekir.

CLSFOR SAYI = 2 TO 100 STEP 2PRINT SAYISLEEPNEXT SAYI

END

veya

CLSSAYI = 0Git:SAYI = SAYI + 2PRINT SAYISLEEPIF SAYI < 100 THEN GOTO Git:END

BASIC Programlama Dili 13

*** ALIŞTIRMALAR ***

Sıfırdan 5’e kadar olan sayıları ekranda alt alta ve yan yana gösteren BASIC programı yazınız.Alt alta gösteren Yan yana gösterenCLSFOR A = 0 TO 5

PRINT ANEXT A

CLSFOR A = 0 TO 5

PRINT A ;NEXT A

1’den 100’e kadar olan tek sayıları ekranda gösteren BASIC programı yazınız.

1’den 100’e kadar olan çift sayıları ekranda gösteren BASIC programı yazınız.

CLSFOR A = 1 TO 100 STEP 2

PRINT ANEXT A

CLSFOR A = 2 TO 100 STEP 2

PRINT ANEXT A

Birden ona kadar olan sayıların karelerini ve kareköklerini ekrana yazdıran bir BASIC programı yazınız.

Y=2X+2 denkleminde X’in 1,2,3,4 ve 5 değerleri için Y değerlerini hesaplayan bir BASIC programı yazınız.

CLSFOR I = 1 TO 10

KARE = I ^ 2KAREKOK= SQR(I)PRINT KARE, KAREKOK

NEXT I

CLSFOR X = 1 TO 5

Y = 2 * X + 1PRINT Y

NEXT XEND

–10’dan –1’e kadar olan sayıları ekranda gösteren BASIC programı yazınız.

–1’den –10’a kadar olan sayıları ekranda gösteren BASIC programı yazınız.

CLSFOR A = –10 TO –1

PRINT ANEXT A

CLSFOR A = –1 TO –10 STEP –1

PRINT ANEXT A

1’den 10’a kadar olan sayıların toplamını gösteren BASIC programını yazınız. (FOR-NEXT)

1’den 10’a kadar olan sayıların ortalamasını bulup yazdıran BASIC prog.yazınız. (FOR-NEXT)

CLSFOR X = 1 TO 5

TOPLAM = TOPLAM + XNEXT XPRINT “1+2+ …+10:” ; TOPLAMEND

CLSFOR X = 1 TO 10

T = T + XNEXT XORT = T / 10 veya ORT = T / (X-1)PRINT “Ortalama:” ; ORTENDDikkat! Döngü çıkışında değişkenin (X) değeri sınır değerden bir fazladır. Yani burada 11’dir.

FOR-NEXT döngüsünün son değeri ne olur?

FOR-NEXT döngüsü dışında yazılan bir PRINT satırındaki değişkenin FOR-NEXT sınırının dışında bir değer aldığını gösteren bir BASIC programı.

FOR I = 1 TO 5PRINT I

NEXT IPRINT I

veya

CLSFOR I = 1 TO 5NEXT IPRINT I

BASIC Programlama Dili 14

TAB (…) – SPC(…) – SPACE$(…) FonksiyonlarıTAB(x) bir satırın herhangi bir sütununa erişmek için ve PRINT ile birlikte kullanılır. Burada x değeri erişmek

istenilen sütunun numarasıdır. Bir ekran 25 satıra, 80 sütuna sahiptir. TAB (x)’in kullanımı şu şekildedir.

OKUL$ = “Gazi Üniversitesi”PRINT TAB (5);“Okulumun adı:”; TAB(20); OKUL$

Ekrana; beşinci sütundan başlayarak Okulumun adı:, yirminci sütundan başlayarak ise Gazi Üniversitesi yazılır.

KAREKÖK bulmak için hangi fonksiyonlar kullanılır?3’ten 36’ya kadar 3’er 3’er ilerleyen sayıların kareköklerini bulduran bir BASIC programı.

FOR-NEXT Döngüsü ile Etiket-Şart Döngüsü ileCLSFOR I = 3 TO 36 STEP 3KOK = I ^ (1/2)REM KOK = SQR(I) da kullanılabilir.PRINT I; TAB(5); "SAYISININ KAREKÖKÜ:"; KOKNEXT IEND

veya

CLSBASLA:I = I + 3KOK = I ^ (1/2)REM KOK = SQR(I) da kullanılabilir.PRINT I; TAB(5); "SAYISININ KAREKÖKÜ:"; KOKIF I < 36 GOTO BASLA

SPC fonksiyonu TAB gibi kullanılır. Aralarındaki fark; TAB(10) ekranın 10. sütununa erişmeyi sağlar, SPC(10) ise 10 tane boşluk verir. SPC ile SPACE$ fonksiyonları arasındaki fark ise SPACE$ fonksiyonu herhangi bir alfasayısal değişkene atanabilmektedir.

Örnekler:CLSPRINT “DENEME”; TAB(30) ; “XYZ”PRINT “DENEME”; SPC(30) ; “XYZ”veyaPRINT “DENEME”; SPACE$(30) ; “XYZ”

CLSBOS$ = SPACE$(20) ‘ BOS$ değişkenine 20 boşluk atanmıştır.PRINT “DENEME” ; BOS$ ; “XYZ”

PRINT STRING$ KomutuBir karakteri istenilen sayıda ekranda yazdırmak için kullanılır. Kullanım şekli aşağıdaki gibidir.PRINT STRING$ (X, Y)Burada X değeri kaç tane karakter yazılacağını, Y değeri ise hangi karakterin yazılacağını gösterir.Örneğin, PRINT STRING$ (20, “=”) veya PRINT STRING$ (20, 61)Bu satırların her ikisi de ekrana 20 kez = işareti yazılacağını gösterir. Birinci satırda ekrana yazdırılmak istenen karakterin kendisi kullanıldığı için tırnak içinde verilmiştir. İkinci satırda ise aynı karakterin ASCII kodu yazılmıştır. Yani = karakterinin ASCII kodu 61’dir.

DIM DeyimiDIM (Dimension) boyut anlamına gelmektedir. Bir değişkene birden fazla değer atamak için kullanılan DIM deyimi

değişkenlerin maksimum eleman sayısını belirtmek ve bu değişkenlere bellekte yer ayırmak için kullanılır. Bir değişkene birden fazla değer atanarak bu değerlerin ekranda birlikte görünmesi isteniyorsa DIM deyimine ihtiyaç vardır.

Örnekler: Bir öğrenicinin bir dersine ait ders, vize ve final bilgilerini alan, bu verilerle ortalama hesaplayan ve girilen

derslere ait bilgileri ekranda listeleyen BASIC programı yazınız.Yanlış DoğruCLSFOR I = 1 TO 3

INPUT “DERSİ GİRİN”, D$INPUT “VİZEYİ GİRİN”, VINPUT “FİNALİ GİRİN”, FORT% = V * .4 + F * .6

NEXT AFOR J = 1 TO 3

PRINT D$, V, F, ORT%NEXT J

DIM D$(3), V(3), F(3), ORT%(3)FOR I = 1 TO 3

INPUT “DERSİ GİRİN”, D$(I)INPUT “VİZEYİ GİRİN”, V(I)INPUT “FİNALİ GİRİN”, F(I)ORT%(I) = V(I) * .4 + F(I) * .6

NEXT AFOR J = 1 TO 3

PRINT D$(J), V(J), F(J), ORT%(J)NEXT J

BASIC Programlama Dili 15

*** ALIŞTIRMALAR ***

Birden beşe kadar olan sayıların karelerini ekrana yazdıran bir BASIC programı yazınız.

CLSFOR I = 1 TO 5KARE = I ^ 2PRINT KARENEXT IEND

VEYA

CLS BASLA:I = I + 1KARE = I ^ 2PRINT KAREIF I < 5 THEN GOTO BASLAEND

Klavyeden 5 tane sayı girildiği varsayılsın. Bu sayıların en büyüğünü gösteren BASIC programı yazınız CLSN = 5: EB = 0FOR I = 1 TO NINPUT "SAYI GIRINIZ: "; SAYIIF SAYI > EB THEN EB = SAYINEXT IPRINT "EN BÜYÜĞÜ:"; EB; "'dir."END

Sıfırdan 100’e kadar olan sayıları bir atlayarak (2, 4, 6, ...) ekrana yazdıran bir BASIC programı yazınız (IF döngüsü veya FOR-NEXT döngüsü kullanılabilir)

SAYI = 2Git:PRINT SAYISAYI = SAYI + 2IF SAYI <= 100 THEN GOTO Git:END

VEYA

CLSFOR SAYI = 2 TO 100 STEP 2PRINT SAYINEXT SAYIEND

Y=2X+2 denkleminde X’in 1,2,3,4 ve 5 değerleri için Y değerlerini hesaplayan bir BASIC programı yazınız CLSFOR X = 1 TO 5Y = 2 * X + 1PRINT YNEXT X

VEYA

CLSFOR X = 1 TO 5PRINT 2 * X + 1NEXT X

Adınızı, vize ve final notlarınızı soran, aldığı bilgilerle ortalama, harf notu ve sonuç hesaplayan, bulduğu sonuçları adınızla birlikte ekrana yazdıran bir BASIC programı hazırlayınız.CLSINPUT "ADINIZ:", AD$INPUT "Vize Notunu Gir:", VINPUT "Final Notunu Gir:", FORT% = V * .4 + F * .6IF ORT% < 49.5 THEN HARF$ = "E"IF ORT% > 49.5 AND ORT% < 59.5 THEN HARF$ = "D"IF ORT% > 59.5 AND ORT% <= 75 THEN HARF$ = "C"IF ORT% > 75 AND ORT% <= 90 THEN HARF$ = "B"IF ORT% > 90 THEN HARF$ = "A"IF ORT% < 59.5 THEN SONUC$ = "KALDI" ELSE SONUC$ = "GEÇTİ"CLSPRINT "MERHABA "; AD$PRINT "==================="PRINT "ORTALAMA:"; ORT%PRINT "HARF NOTU:"; HARF$PRINT "SONUÇ:"; SONUC$

BASIC Programlama Dili 16

Klavyeden girilen sayıların arasından en küçük ve en büyük sayıyı bulup ekrana yazdıracak bir BASIC programıCLSINPUT " Kaç adet sayı gireceksiniz:" ; NEK=0 : EB=0FOR I=1 TO N

INPUT " Sayı giriniz: " ; SAYIIF SAYI < EK THEN EK = SAYIIF SAYI > EB THEN EB = SAYI

NEXT ICLSPRINT "Girilen"; N ; " adet sayıdan en küçüğü=";EK; ", en büyüğü ise="; EB; "dir."END

Klavyeden girilen herhangi iki sayıyı dört işleme tabi tutacak BASIC programıCLSPRINT “TOPLAMA (1) – ÇIKARMA (2) – ÇARPMA (3) – BÖLME (4) – ÇIKIŞ (5)”SECIM:INPUT “SEÇİMİNİZİ GİRİNİZ...:”,SECIF SEC<1 OR SEC>5 THEN GOTO SECIMIF SEC=5 THEN ENDINPUT “BİRİNCİ VE İKİNCİ SAYIYI GİRİNİZ...:”, A, BIF SEC=1 THEN SONUC=A+BIF SEC=2 THEN SONUC=A-BIF SEC=3 THEN SONUC=A*BIF SEC=4 THEN SONUC=A/BPRINT “SONUÇ=”; SONUCEND

Klavyeden girilen herhangi iki sayıyı dört işleme tabi tutacak BASIC programıCLSBASLA:T = 0INPUT "1.SAYIYI GİRİN", AINPUT "İŞLEMİ GİRİN (+ - * /)", B$INPUT "2. SAYIYI GİRİN", CIF B$ = "+" THEN GOTO TOPLAMAIF B$ = "-" THEN GOTO CIKARMAIF B$ = "*" THEN GOTO CARPMAIF B$ = "/" THEN GOTO BOLMEPRINT "YANLIŞ OPERATÖR": GOTO BASLA

TOPLAMA:T = A + CLOCATE 10, 60: PRINT "SONUÇ"; TGOTO TEKRARCIKARMA:T = A - CLOCATE 10, 60: PRINT "SONUÇ:"; TGOTO TEKRARCARPMA:T = A * CLOCATE 10, 60: PRINT "SONUÇ:"; TGOTO TEKRARBOLME:IF C=0 THEN PRINT “BELİRSİZ”: GOTO BASLAT = A / CPRINT "SONUÇ:"; TTEKRAR:INPUT "BAŞKA İŞLEM YAPMAK İSTİYOR MUSUNUZ?", D$IF D$= "E" OR D$ = "e" THEN GOTO BASLAIF D$= "H" OR D$ = "h" THEN ENDGOTO TEKRAR

BASIC Programlama Dili 17

Klavyeden girilen herhangi iki sayıyı dört işleme tabi tutacak BASIC programıBASLA:CLSINPUT "BİRİNCİ SAYIYI GİRİNİZ" , AISLEM:INPUT "İŞLEMİ SEÇİNİZ (* / + -)" , ISLEM$IF ISLEM$ = "*" THEN

INPUT "2. SAYIYI GİRİNİZ:" , BGOTO CARPMA

END IFIF ISLEM$ = "/" THEN

INPUT "2. SAYIYI GİRİNİZ:" , BGOTO BOLME

END IFIF ISLEM$ = "+" THEN

INPUT "2. SAYIYI GİRİNİZ:" , BGOTO TOPLAMA

END IFIF ISLEM$ = "-" THEN

INPUT "2. SAYIYI GİRİNİZ:" , BGOTO CIKARMA

END IFPRINT "YANLIŞ SEÇİM" : GOTO ISLEMCARPMA:SONUC = A * BPRINT "SONUÇ = " ; SONUCGOTO TEKRARBOLME:IF B=0 THEN PRINT “BELİRSİZ”: GOTO BASLASONUC = A / BPRINT "SONUÇ = " ; SONUCGOTO TEKRARTOPLAMA:SONUC = A + BPRINT "SONUÇ = " ; SONUCGOTO TEKRARCIKARMA:SONUC = A - BPRINT "SONUÇ = " ; SONUCTEKRAR:INPUT "BAŞKA İŞLEM YAPACAK MISINIZ? (E/H) " , CEVAP$IF CEVAP$= "E" OR CEVAP$ = "e" THEN GOTO BASLAIF CEVAP$= "H" OR CEVAP$ = "h" THEN ENDGOTO TEKRAR

İki sayının toplamını bulup yazdıran algoritma ve BASIC programı yazınız.1. BAŞLA2. GİR A3. GİR B4. TOPLAM = A + B5. YAZ TOPLAM6. DUR

CLSINPUT AINPUT BTOPLAM = A + BPRINT TOPLAMEND

İki sayının ortalamasını bulup yazdıran algoritma ve BASIC programı yazınız.1. BAŞLA2. GİR A3. GİR B4. TOPLAM = A + B5. ORTALAMA = TOPLAM / 26. YAZ ORTALAMA 6. DUR

CLSINPUT AINPUT BTOPLAM = A + BORTALAMA = TOPLAM / 2PRINT ORTALAMAEND

BASIC Programlama Dili 18

Ekranda okutulan iki sayının karesini ve küpünü bulup yazdıran algoritma ve BASIC programı yazınız.1. BAŞLA2. Oku A3. KARE = A ^ 24. KUP = A ^ 35. YAZ KARE6. YAZ KUP7. DUR

veya

1. BAŞLA2. Oku A3 YAZ A ^ 2, A ^ 37. DUR

CLSINPUT AKARE = A ^ 2KUP = A ^ 3PRINT KAREPRINT KUPEND

veya

CLSINPUT APRINT A ^ 2, A ^ 3END

Girilen iki sayıyı karşılaştıran algoritma ve BASIC programı yazınız.1. BAŞLA2. GİR a3. GİR b4. EĞER a > b İSE YAZ “a b’den büyük” : DUR5. EĞER a < b İSE YAZ “a b’den küçük” : DUR6. YAZ “EŞİT”7. DUR

CLSINPUT AINPUT BIF a > b THEN PRINT “a b’den büyük” : END IF a < b THEN PRINT “a b’den küçük” : ENDPRINT “EŞİT”END

Girilen üç farklı pozitif sayının en büyüğünü bulup yazdıran algoritma ve BASIC programı yazınız.1. BAŞLA2. GİR a, b, c3. ENB = A4. EĞER B > ENB İSE ENB = B5. EĞER C > ENB İSE ENB = C6. YAZ ENB7. DUR

CLSINPUT A, B, CENB = AIF B > ENB THEN ENB = BIF C > ENB THEN ENB = CPRINT ENBEND

Girilen bir sınır değerine kadar olan sayıların toplamını bulan algoritma ve BASIC programı yazınız.1. BAŞLA2. T = 0 : S = 03. GİR SINIR4. S = S + 15. T = T + S6. EĞER S < SINIR İSE GİT 37. YAZ T8. DUR

CLST = 0 : S = 0BASLA:INPUT SINIRS = S + 1T = T + SIF S < SINIR THEN GOTO BASLAPRINT T : END

Bir mağazada 20 milyona kadar yapılan alışverişlerde %5, 20 milyon ile 50 milyon arasındaki alışverişlerde %10 ve 50 milyondan fazla alışverişlerde %15 indirim uygulanmaktadır. Müşterinin yaptığı alışveriş değerine göre ödeyeceği net rakamı bulan BASIC programı yazınız.CLSINPUT "TOPLAM FİYATI GİRİNİZ:", FIF F <= 20 THEN

A = F * .05F = F - APRINT “ÖDENECEK NET MİKTAR:"; F; "YTL"END

END IFIF F > 20 AND F < 50 THEN

A = F * .1F = F - APRINT “ÖDENECEK NET MİKTAR:"; F; "YTL"END

END IFIF F > 50 THEN

A = F * .15F = F - APRINT “ÖDENECEK NET MİKTAR:"; F; "YTL"END

END IF

BASIC Programlama Dili 19

Klavyeden girilen 1 sayının tek veya çift olduğunu bulan BASIC programı yazınız.CLSINPUT “Bir sayı girin”, AK = A - (A \ 2) * 2IF K = 0 THEN PRINT "sayı çifttir" ELSE PRINT "sayı tektir"END

Geçme notu 60 olan ve başarı notu, VİZE notunun %40’ı ile FİNAL notunun %60’ı alınarak hesaplanan N sayıdaki öğrencinin başarı notunu tam sayı olarak hesaplayan bir BASIC programıCLSINPUT “ADINIZI GİRİNİZ...:”, AD$INPUT "DERS SAYISI:", SDIM D$(S), V(S), F(S), ORT%(S), SONUC$(S)FOR I = 1 TO SPRINT I; ".";INPUT "DERSİ GİR:", D$(I)INPUT "VİZEYİ GİR:", V(I)INPUT "FİNALİ GİR:", F(I)ORT%(I) = V(I) * .4 + F(I) * .6IF ORT%(I) > 59.5 THEN SONUC$(I) = "GEÇTİ" ELSE SONUC$(I) = "KALDI"NEXT ICLSPRINT AD$; “ ADLI KİŞİYE AİT DERS BİLGİLERİ”PRINT "DERSİN ADI"; TAB(20); "VİZE"; TAB(30); "FİNAL"; TAB(40); "ORT."; TAB(50); "SONUÇ"REM PRINT "=======================================================" VEYAPRINT STRING$(55, "=")FOR I = 1 TO SPRINT D$(I); TAB(20); V(I); TAB(30); F(I); TAB(40); ORT%(I); TAB(50); SONUC$(I)NEXT I

Klavyeden girilen bir sayının faktöriyelini hesaplayacak bir BASIC programıCLSGit:CARP=1INPUT "FAKTÖRYELİ HESAPLANACAK SAYIYI GİRİNİZ:" ; SAYIFOR I=1 TO SAYI

CARP = CARP * INEXT IPRINT SAYI;"!" ; "=" ; CARP

INPUT "FAKTÖRYELİ HESAPLANACAK BAŞKA SAYI VAR MI? (E/H) " ; CEVAP$IF CEVAP$="E" OR CEVAP$="e" THEN GOTO GitEND

xy (x^y) şeklindeki bir üslü ifadeyi hesaplayacak bir BASIC programıCLSGit:CARP=1INPUT "x DEĞERİNİ GİRİNİZ:" ; xINPUT "y DEĞERİNİ GİRİNİZ:" ; yFOR I=1 TO y

CARP=CARP * xNEXT IPRINT x "^" ; y ; "=" ; CARPDIKKAT:INPUT "YENİ BİR İŞLEM YAPMAK İSTER MİSİNİZ? (E/H) " , CEVAP$IF CEVAP$= "E" OR CEVAP$ = "e" THEN GOTO GitIF CEVAP$= "H" OR CEVAP$ = "h" THEN GOTO ENDGOTO DIKKATEND

BASIC Programlama Dili 20

Klavyeden girilen N adet sayının kareleri ve küpleri toplamını gösteren bir BASIC programıCLSINPUT "KAÇ SAYININ KARE VE KÜPÜNÜ ALACAKSINIZ:", NFOR I = 1 TO NINPUT "SAYI:", SAYIKARE =KARE + SAYI ^ 2KUP = KUP + SAYI ^ 3NEXT ICLSPRINT "SAYI"; TAB(10); "KARE"; TAB(21); "KÜP"PRINT "===="; TAB(10); "===="; TAB(20); "====="PRINT SAYI; TAB(10); KARE; TAB(20); KUP

Klavyeden girilen N adet sayının karesini ve küpünü tablo halinde gösteren bir BASIC programıCLSINPUT "KAÇ SAYININ KARE VE KÜPÜNÜ ALACAKSINIZ:", NDIM SAYI(N), KARE(N), KUP(N)FOR I = 1 TO NINPUT "SAYI:", SAYI(I)KARE(I) = SAYI(I) ^ 2KUP(I) = SAYI(I) ^ 3NEXT ICLSPRINT "SAYI"; TAB(10); "KARE"; TAB(21); "KÜP"PRINT "===="; TAB(10); "===="; TAB(20); "====="FOR J = 1 TO NPRINT SAYI(J); TAB(10); KARE(J); TAB(20); KUP(J)NEXT J

İkiden dokuza kadar olan sayılar için dört sütun ve iki grup halinde çarpım tablosu çıkaran bir BASIC programı (İkiler ile beşler arası birinci grubu, altılar ile dokuzlar arası ise ikinci grubu oluşturmaktadır.)FOR I = 1 TO 10 A = 2 * I : B = 3 * I : C = 4 * I : D = 5 * I PRINT "2 X"; I; "="; A; TAB(15); "3 X"; I; "="; B; TAB(30); "4 X"; I; "="; C; TAB(45); "5 X"; I; "="; DNEXT I

PRINT ‘ BOŞ BİR SATIR ATMAK İÇİN

FOR J = 1 TO 10 E = 6 * J : F = 7 * J : G = 8 * J : H = 9 * J PRINT "6 X"; J; "="; E; TAB(15); "7 X"; J; "="; F; TAB(30); "8 X"; J; "="; G; TAB(45); "9 X"; J; "="; HNEXT J

ASCII KodlarıKlavyeden yazılabilen veya klavyede bulunmayan karakterlerin birer sayısal kod karşılığı vardır. Bunlara ASCII

kodu denmektedir. 1’den 255’e kadar mevcut olan ASCII kodlarının ilk 32’si görsel birer karakter değildir. 33’ten 255’e kadar olan kodlar birer karaktere karşılık gelir. Örneğin A harfinin ASCII kodu 65, = karakterinin ASCII kodu ise 61’dir. ASCII kodlarını bir BASIC programı yardımıyla listelemek gerekirse aşağıdaki program kullanılabilir.

CHR$ FonksiyonuASCII kodu verilen bir karakterin elde edilmesinde kullanılır. Kullanım şekilleri aşağıdaki gibidir.A$ = CHR$(X) veya PRINT CHR$(X)

Burada X değeri elde edilecek veya ekrana yazdırılacak karakterin ASCII kodudur. Birinci satırda elde edilmek istenen karakter A$ değişkenine yüklenmiştir.İkinci satırda ise X kodlu karakter ekrana yazdırmak istenmektedir.A$ = CHR$(61) yazmakla, ASCII kodu 61 olan = karakter A$ değişkenine yüklenmiş olur.PRINT CHR$(61) yazmakla, ASCII kodu 61 olan = karakteri ekrana yazılmış olur.

BASIC Programlama Dili 21

Aşağıdaki program 33’ten 255’e kadar olan ASCII kodlarını ekranda listeler.

CLSFOR I = 33 TO 255PRINT I; ":" ; CHR$(I);NEXT I

veya

CLSFOR I = 33 TO 255A$ = CHR$(I)PRINT I; ":"; A$;NEXT I

INT ve CINT Fonksiyonları

Matematiksel işlem sonuçları istenildiği gibi YUVARLATILABİLİR Mİ? Matematiksel işlem sonucunu yuvarlamadan veya INT ve CINT fonksiyonlarıyla yuvarlayarak gösteren bir BASIC programı.INT : Ondalık kısmı atarak sayıyı, kendinden küçük olan tamsayıya yuvarlar. CINT : Ondalık kısmı atarak sayıyı, kendine en yakın olan tamsayıya yuvarlar.FIX : Ondalık kısmı atarak geri kalan kısmı tamsayı olarak bırakır.

A = 3 : B = 2C = A / B : D = INT(A / B)E = CINT(A / B) : F = FIX (A / B)PRINT C, D, E, F

EKRAN ÇIKTISI:

1.5 1 2 1

LOCATE KomutuEkranın herhangi bir koordinatından yani satır ve sütun numarası belli bir noktasından başlayarak okuma ve

yazdırma işlemlerinin yapılmasını sağlar. Genel yazılımı;

LOCATE satır no, sütun no (LOCATE X, Y)Ekran, 25 satır ve 80 sütundan oluşmaktadır.

Örnek:

CLSLOCATE 5, 10INPUT “BİR SAYI GİRİN:” , ALOCATE 6,10PRINT “GİRDİĞİNİZ SAYI:” ; ALOCATE 24, 10PRINT “İYİ GÜNLER”

veya

CLSLOCATE 5, 10 : INPUT “BİR SAYI GİRİN:” , ALOCATE 6,10 : PRINT “GİRDİĞİNİZ SAYI:” ; ALOCATE 24, 10 : PRINT “İYİ GÜNLER”END

INPUT$(…) KomutuKlavyeden girilen karakterlerin ekranda görünmemesini sağlar. Genellikle çok basit şifre girişlerinde kullanılır.INPUT$(5)Bu örnekte program, klavyeden 5 karakter girilinceye kadar bekletilir.

Herhangi bir programa şifre koyan bir BASIC programı (INPUT$(...))PRINT “ŞİFREYİ GİRİNİZ”C$=INPUT$(5)IF C$<> “GÜKEF” AND C$<>“gükef” THEN PRINT “ŞİFRE YANLIŞ” : ENDPRINT “ŞİFRE DOĞRU İŞLEM YAPIYORUM”REM Herhangi bir programın başlangıcı

Yukarıdaki programı 3 defa şifre girme şansı vererek yeniden düzenleyiniz.FOR A = 1 TO 3 LOCATE 15,35 : PRINT “ŞİFREYİ GİRİNİZ” C$ = INPUT$(5) IF C$ = “GÜKEF” AND C$ = “gükef” THEN EXIT FOR PRINT “ŞİFRE YANLIŞ”NEXT AIF A > 3 THEN ENDPRINT “ŞİFRE DOĞRU İŞLEM YAPIYORUM”REM Herhangi bir programın başlangıcı

BASIC Programlama Dili 22

READ – DATA FonksiyonuBir programda sürekli klavyeden veri girmek istenmiyorsa DATA komutu kullanarak programa sürekli kalıcı

veriler (değerler) eklenebilir. READ komutu ise değişken tanımlamak ve DATA satırındaki değerleri sırasıyla bu değişkenlere atamak için kullanılır.

READ ve DATA komutları ayrı satırlarda kullanılır. DATA satırı programın herhangi bir yerinde kullanılabilir. Ancak genellikle en sonda kullanılır.

Çalışan bir programda READ satırına gelindiğinde, program DATA ile başlayan satırı arar.DATA satırındaki veri sayısından fazla olmamak şartıyla READ satırında istenilen sayıda değişken kullanılabilir. Bu kural çerçevesinde bir programda istenilen sayıda READ komutu ve DATA komutu kullanılabilir.

Örnekler:READ A, BREAD C, DPRINT A, B, C, DDATA 4, 8, 5, 10

READ APRINT ADATA 5

READ S$, PLK, TELPRINT S$, PLK, TELDATA KAST, 37, 366

READ F$, DERS$, SINIF$, NOPRINT F$, DERS$, SINIF$, NODATA GUKEF, BASIC, 3-A, 125

Dikkat: READ satırında kullanılan değişken sayısı DATA satırındaki veri sayısından fazla olmamalıdır. Bu durumda BASIC ortamında “Out of DATA” şeklinde bir hata mesajı ile karşılaşılır.

Örnekler:

Doğru kullanım Doğru kullanım Yanlış kullanımREAD A, B, C, DDATA 1, 2, 3, 4

READ X, YDATA 10, 20, 30

READ K, L, M, NDATA 5, 10

READ–DATA fonksiyonlarını EKSİK gösteren örnek bir BASIC programıREAD A, A$PRINT APRINT A$DATA 123, AHMETDATA 456, MEHMETDATA 789, AYŞE

EKRAN ÇIKTISI:

123AHMET

Not: Programda görüldüğü gibi üç tane DATA verilmesine rağmen yalnızca ilk DATA fonksiyonuna ait değerler görüntülenmektedir. Bütün DATA değerlerinin görüntülenebilmesi için aşağıdaki 4. ve 5. örneklerde olduğu gibi ya “sayaç ve IF döngüsü” kullanılmalı ya da FOR – NEXT döngüsü kullanılmalıdır.

READ–DATA fonksiyonlarını IF döngüsü ile TAM gösteren örnek bir BASIC programı (Numara ile isim alt alta)DATASAYISI = 3 ‘ veya (INPUT DATASAYISI)TEKRAR:READ A, A$I = I + 1PRINT APRINT A$IF I < DATASAYISI THEN GOTO TEKRARENDDATA 123, AHMETDATA 456, MEHMETDATA 789, AYŞE

EKRAN ÇIKTISI:(Numara ile isim alt alta)

123AHMET456MEHMET789AYŞE

READ–DATA fonksiyonlarını FOR–NEXT ile TAM gösteren örnek bir BASIC programı (Numara ve isim alt alta)DATASAYISI = 3 ‘ veya (INPUT DATASAYISI)FOR I = 1 TO DATASAYISIREAD A, A$PRINT APRINT A$NEXT IENDDATA 123, AHMETDATA 456, MEHMETDATA 789, AYŞE

EKRAN ÇIKTISI:(Numara ile isim alt alta)

123AHMET456MEHMET789AYŞE

BASIC Programlama Dili 23

READ–DATA fonksiyonlarını IF döngüsü ile TAM gösteren örnek bir BASIC programı (Numara ile isim yan yana)DATASAYISI = 3 ‘ veya (INPUT DATASAYISI)I = 0TEKRAR:READ A, A$I = I + 1PRINT A; ", " ; A$IF I < DATASAYISI THEN GOTO TEKRARENDDATA 123, AHMETDATA 456, MEHMETDATA 789, AYŞE

EKRAN ÇIKTISI:(Numara ile isim yan yana)

123, AHMET456, MEHMET789, AYŞE

READ–DATA fonksiyonlarını FOR–NEXT ile TAM gösteren örnek bir BASIC programı (Numara ve isim yan yana)DATASAYISI = 3 ‘ veya (INPUT DATASAYISI)FOR I = 1 TO DATASAYISIREAD A, A$PRINT A; ", " ; A$NEXT IENDDATA 123, AHMETDATA 456, MEHMETDATA 789, AYŞE

EKRAN ÇIKTISI:(Numara ile isim yan yana)

123, AHMET456, MEHMET789, AYŞE

DATE$ – TIME$ FonksiyonuDATE$ BASIC ortamında bilgisayarın sakladığı günün tarihini, TIME$ ise o anki saati verir. Her iki fonksiyon da

PRINT komutuyla birlikte kullanılabildiği gibi değişkenlere de atanabilir.

Örnekler:Ekran Ekran

CLSPRINT DATE$PRINT TIME$END

14-12-200420:30:00

CLSA$ = DATE$ : B$ = TIME$PRINT “Günün Tarihi:” ; A$PRINT “Saat:” ; B$

Günün Tarihi: 14-12-2004Saat: 20:30:00

SPC(…) Fonksiyonu – SPACE$(…) FonksiyonuSPC fonksiyonu TAB gibi kullanılır. Aralarındaki fark; TAB(10) ekranın 10. sütununa erişmeyi sağlar, SPC(10)

ise 10 tane boşluk verir. SPC ile SPACE$ fonksiyonları arasındaki fark ise SPACE$ fonksiyonu herhangi bir alfasayısal değişkene atanabilmektedir.

Örnekler:CLSPRINT “DENEME”; TAB(30) ; “XYZ”PRINT “DENEME”; SPC(30) ; “XYZ”veyaPRINT “DENEME”; SPACE$(30) ; “XYZ”END

CLSAD$ = SPACE$(20) ‘ AD$ değişkenine 20 boşluk atanmıştır.PRINT “DENEME” ; AD$ ; “XYZ”

BASIC Programlama Dili 24

UCASE$ - LCASE$UCASE$ : Herhangi bir değişkene atanan alfasayısal sabiti büyük harflere dönüştürür.

LCASE$ : Herhangi bir değişkene atanan alfasayısal sabiti küçük harflere dönüştürür.

Örnekler:CLSINPUT “ADINIZI GIRIN:”, AD$YENIAD$ = LCASE(AD$)PRINT “ESKI YAZILAN:” ; AD$PRINT “ÇEVİRİM SONUCU:” ; YENIAD$END

veya

CLSINPUT “ADINIZI GIRIN:”, AD$YENIAD$ = UCASE(AD$)PRINT “ESKI YAZILAN:” ; AD$PRINT “ÇEVİRİM SONUCU:” ; YENIAD$END

CLSFOR A = 1 TO 3

LOCATE 15,35 : PRINT “ŞİFREYİ GİRİNİZ”GECICI$ = INPUT$(5)C$ = UCASE$(GECICI$)IF C$ = “GUKEF” THEN EXIT FORPRINT “ŞİFRE YANLIŞ”

NEXT AIF A > 3 THEN ENDPRINT “ŞİFRE DOĞRU İŞLEM YAPIYORUM”REM Herhangi bir programın başlangıcı

RENK KODLARIKullanılışı : COLOR A veya COLOR A, B A: Metin rengi, B: Zemin rengi)

KOYU (MAT) RENKLER

AÇIK (PARLAK) RENKLER

YANIP SÖNEN KOYU RENKLER

YANIP SÖNEN AÇIK RENKLER

0 SİYAH 8 SİYAH-GRİ 16 SİYAH 24 SİYAH1 MAVİ 9 MAVİ 17 MAVİ 25 MAVİ2 YEŞİL 10 YEŞİL 18 YEŞİL 26 YEŞİL3 CAM GÖBEĞİ 11 CAM GÖBEĞİ 19 CAM GÖBEĞİ 27 CAM GÖBEĞİ4 KIRMIZI 12 KIRMIZI 20 KIRMIZI 28 KIRMIZI5 PEMBE 13 PEMBE 21 PEMBE 29 PEMBE6 SARI-KAHVE 14 SARI 22 SARI 30 SARI7 BEYAZ 15 BEYAZ 23 BEYAZ 31 BEYAZ

BASIC Programlama Dili 25

*** ALIŞTIRMALAR ***

ax2+bx+c=0 şeklindeki ikinci dereceden bir bilinmeyenli denklemin köklerini bulan bir BASIC programı (1)CLSBASLA:INPUT "AX2+BX+C=0 DENKLEMİNDE A, B, C'Yİ GİRİNİZ", A, B, CDELTA = B ^ 2 - 4 * A * CPRINTPRINT "DELTA:"; DELTAIF DELTA < 0 THEN LOCATE 14, 10: PRINT "KÖKLER SANALDIR": ENDX1 = (-B - SQR(DELTA)) / 2 * AX1 = (-B + SQR(DELTA)) / 2 * APRINT " K Ö K L E R"PRINT "=============="PRINT "X1="; X1; " X2="; X2TEKRAR:INPUT "YENİDEN İŞLEM YAPMAK İSTER MİSİNİZ? (E/H) " , CEVAP$IF CEVAP$= "E" OR CEVAP$ = "e" THEN GOTO BASLAIF CEVAP$= "H" OR CEVAP$ = "h" THEN ENDGOTO TEKRAR

ax2+bx+c=0 Şeklindeki İkinci Dereceden Bir Bilinmeyenli Denklemin Köklerini Bulan Bir BASIC Programı (2)BASLA:CLSLOCATE 8, 10: PRINT "AX2+BX+C=0 DENKLEMİNDE A, B, C'Yİ GİRİNİZ"LOCATE 9, 10: PRINT "========================================="LOCATE 10, 10: PRINT "A:_" : LOCATE 10, 15: PRINT "B:_" : LOCATE 10, 20: PRINT "C:_"LOCATE 12, 10: PRINT "DELTA:__"LOCATE 10, 12: INPUT "", A : LOCATE 10, 17: INPUT "", B : LOCATE 10, 22: INPUT "", CDELTA = B ^ 2 - 4 * A * CLOCATE 12, 10: PRINT "DELTA:"; DELTAIF DELTA < 0 THEN LOCATE 14, 10: PRINT "KÖKLER SANALDIR": GOTO TEKRARX1 = (-B - SQR(DELTA)) / 2 * AX1 = (-B + SQR(DELTA)) / 2 * ALOCATE 16, 10: PRINT " K Ö K L E R"LOCATE 17, 10: PRINT "=============="LOCATE 18, 10: PRINT "X1="; X1; " X2="; X2TEKRAR:INPUT "YENİDEN İŞLEM YAPMAK İSTER MİSİNİZ? (E/H) " , CEVAP$IF CEVAP$= "E" OR CEVAP$ = "e" THEN GOTO BASLAIF CEVAP$= "H" OR CEVAP$ = "h" THEN ENDGOTO TEKRAR

Sıfır (0) ile 100 arasında rasgele bir sayı tutan ve bu sayıyı buldurmaya çalışan BASIC programıRANDOMIZE TIMERBASLA:CLSRASGELE = INT(RND(1) * 100)PRINT "0 İLE 100 ARASINDA ";FOR I = 1 TO 8 INPUT "BİR SAYI GİRİNİZ:", SAYI IF SAYI = RASGELE THEN GOTO CIKIS IF SAYI < RASGELE AND I < 5 THEN PRINT "DAHA BÜYÜK "; IF SAYI > RASGELE AND I < 5 THEN PRINT "DAHA KÜÇÜK ";NEXT IPRINT "ÜZGÜNÜM BİLEMEDİNİZ TUTTUĞUM SAYI:"; RASGELE; "İDİ"GOTO DIKKATCIKIS:PRINT : PRINT "TEBRİKLER "; I; ". HAKKINIZDA BİLDİNİZ"DIKKAT:

BASIC Programlama Dili 26

INPUT "YENİDEN OYNAMAK İSTER MİSİNİZ? (E/H) ", CEVAP$IF CEVAP$ = "E" OR CEVAP$ = "e" THEN GOTO BASLAIF CEVAP$ = "H" OR CEVAP$ = "h" THEN ENDGOTO DIKKAT

Bir öğrenciye ait ders, final ve vize bilgilerini DATA komutundan alan ve bu bilgileri kullanarak ortalama ve sonuç hesaplayıp gösteren BASIC programı. (READ-DATA, COLOR)CLS : COLOR 4 : INPUT “ADINIZ:”, AD$ : COLOR 7CLS : COLOR 15 : PRINT AD$ ; “ADLI KİŞİYE AİT NOT DÖKÜMÜ" : COLOR 7, 0: PRINTPRINT "DERSİN ADI"; TAB(20); "VİZE"; TAB(30); "FİNAL"; TAB(40); "ORT."; TAB(50); "SONUÇ"REM PRINT "*******************************************************" VEYAPRINT STRING$(55, "*") FOR I = 1 TO 5 READ D$, V, F ORT% = V * .4 + F * .6 IF ORT% > 59.5 THEN SONUC$ = "GEÇTİ" ELSE SONUC$ = "KALDI" PRINT D$; TAB(20); V; TAB(30); F; TAB(40); ORT%; TAB(50); SONUC$ NEXT IDATA MATEMATİK,50,50, FEN BİLGİSİ,60,60, BASIC,40,80, TÜRKÇE,56,65, TARİH,45,73

Geçme notu 60 olan ve başarı notu, VİZE notunun %40’ı ile FİNAL notunun %60’ı alınarak hesaplanan N sayıdaki öğrencinin başarı notunu tam sayı olarak hesaplayan bir BASIC programıCLS : N = 5 ‘ Dikkat’! N sayısı READ’e karşılık gelen DATA sayısı kadar olmalıdır.PRINT "ENF209 (BASIC PROGRAMLAMA DİLİ) DERSİ NOT ÇİZELGESİ"COLOR 14,1PRINT "SIRA" ; TAB(10) ; "ADI SOYADI" ; TAB(40) ; "VİZE" ; TAB(50) ; "FİNAL" ; PRINT TAB(60) ; "ORTALAMA" ; TAB(70) ; "SONUC"FOR I = 1 TO NREAD AD$ , VIZE , FINALORT% = VIZE * 0.4 + FINAL * 0.6IF ORT% < 59.5 THEN SONUC$ = "KALDI" ELSE SONUC$ = "GEÇTİ"PRINT I ; ". ";TAB(10);AD$;TAB(40);VIZE;TAB(50);FINAL;TAB(60);ORT%;TAB(70);SONUC$NEXT ILOCATE 25, 25 : COLOR 20, 15: INPUT "ÇIKIŞ İÇİN (ENTER) TUŞUNA BASINIZ" , C$DATA FATMA ÖZTÜRK, 40, 70, ALİ KARAOSMANOĞLU, 50, 70DATA AHMET KERİMOĞLU, 60, 70, MEHMET ALİ SERİN, 70, 80DATA AYŞE KORKMAZ, 80, 90

İngilizce bir kelimenin Türkçe karşılığını bulduran BASIC programıCLS : N = 10 ‘ Dikkat! N sayısı READ’e karşılık gelen DATA sayısı kadar olmalıdır.DIM ING$(N), TUR$(N), C$(N)PRINT "GORDUGUNUZ KELiMELERiN TURKCESiNi YAZINIZ"FOR I = 1 TO N READ ING$(I), TUR$(I) COLOR I : PRINT ING$(I); INPUT ": ", C$(I) IF C$(I) <> TUR$(I) THEN PRINT "YANLIS" ELSE PRINT "DOGRU": S = S + 1 PRINT ING$(I); ": "; TUR$(I) : PRINTNEXT I COLOR 7 : PRINT N ; "SORUDAN"; S; "SORUYU BiLDiNiZ." PRINT " NOTUNUZ: %"; S * 10 : PRINTCOLOR 4: PRINT TAB(5); "C E V A P L A R": COLOR 7 : PRINTFOR I = 1 TO N PRINT TAB(5); ING$(I), ": "; TUR$(I)NEXT IDATA DOOR, KAPI, WINDOW, PENCERE, BOOK, KITAP, NOTEBOOK, DEFTER, CHAIR, SANDALYEDATA WATER, SU, TABLE, MASA, RUBBER, SILGI, CHALK, TEBESIR, SCHOOL, OKUL

BASIC Programlama Dili 27

İngilizce bir kelimenin Türkçe karşılığını bulduran BASIC programı (2). Yukarıdaki programla karşılaştırınız.CLS : N = 10 ‘ Dikkat! N sayısı READ’e karşılık gelen DATA sayısı kadar olmalıdır.DIM ING$(N), TUR$(N), C$(N)PRINT "GORDUGUNUZ KELiMELERiN TURKCESiNi YAZINIZ"FOR I = 1 TO N

READ ING$(I), TUR$(I)COLOR I : PRINT ING$(I);INPUT ": ", CEVAP$(I) C$(I) = UCASE$(CEVAP$(I))IF C$(I) <> TUR$(I) THEN PRINT "YANLIS"IF C$(I) = TUR$(I) THEN

PRINT "DOGRU"S = S + 1

END IFPRINT ING$(I); ": "; TUR$(I) : PRINT

NEXT I COLOR 7 : PRINT N; "SORUDAN"; S; "SORUYU BiLDiNiZ." PRINT " NOTUNUZ: %"; S * 10 : PRINT COLOR 4: PRINT TAB(5); "C E V A P L A R" : COLOR 7 : PRINT FOR I = 1 TO N PRINT TAB(5); ING$(I), ": "; TUR$(I) NEXT I PRINTDATA DOOR, KAPI, WINDOW, PENCERE, BOOK, KITAP, NOTEBOOK, DEFTER, CHAIR, SANDALYEDATA WATER, SU, TABLE, MASA, RUBBER, SILGI, CHALK, TEBESIR, SCHOOL, OKUL

İngilizce renklerin Türkçe karşılığını bulduran BASIC programıCLSN = 8REM Dikkat’! N=8 iken READ satırındaki iki değişken için DATA satırlarında en az 16 veri olmalıdır. PRINT "GORDUGUNUZ RENKLERIN ADINI YAZINIZ"FOR I = 1 TO N READ ING$, TUR$ COLOR I PRINT ING$; INPUT ":", C$ IF C$ <> TUR$ THEN PRINT "YANLIS" ELSE PRINT "DOGRU": S = S + 1 PRINT ING$; ": "; TUR$ PRINTNEXT ICOLOR 7PRINT N ; "SORUDAN"; S; "SORUYU BiLDiNiZ."PRINT " NOTUNUZ: %"; S * 12.5 PRINTDATA BLUE, MAVI, GREEN, YESIL, CYAN, CAM GOBEGI, RED, KIRMIZIDATA PINK, PEMBE, ORANGE, TURUNCU, WHITE, BEYAZ, GREY, GRI

BASIC Programlama Dili 28

SELECT – CASE (ELSEIF)Bu komut tıpkı standart döngü, şart döngüleri, blok if döngüsü gibi bir den fazla satırdan oluşur. SELECT CASE

ile başlar END SELECT ile biter.

SELECT CASE DEGISKEN

CASE sorgu-1

İşlemler…

CASE sorgu-2

İşlemler…

CASE sorgu-3

İşlemler…

CASE ELSE

İşlemler…

END SELECT

Örnek:CLSBASLA:INPUT "1-3 ARASI BİR SAYI GİRİN:", SAYISELECT CASE SAYI CASE 1 PRINT "1 GİRDİNİZ"CASE 2 PRINT "2 GİRDİNİZ"CASE 3 PRINT "3 GİRDİNİZ"CASE ELSE PRINT "YANLIŞ SAYI GİRDİNİZ, "; GOTO BASLAEND SELECT

Aşağıdaki örnekleri karşılaştırınız. Aynı amaçlı bu programlardan soldaki BLOK IF kullanarak sağdaki ise SELECT CASE kullanarak yapıldığına dikkat ediniz.

Örnekler:INPUT "1 ile 3 arasında sayı girin " ; A

IF A = 1 THENPRINT "SAYI = 1"

ELSEIF A = 2 THENPRINT "SAYI = 2"

ELSEIF A = 3 THENPRINT "SAYI = 3"

ELSEPRINT "HATALI SAYI"

END IF

INPUT "1 ile 3 arasında sayı girin " ; ASELECT CASE A

CASE 1PRINT "SAYI = 1"

CASE 2PRINT "SAYI = 2"

CASE 3PRINT "SAYI = 3"

CASE ELSEPRINT "HATALI SAYI"

END SELECT

Aynı CASE satırında birden fazla ihtimal sorgulanabilir. Aynı zamanda başka bir değişkenle sorgulama yapılıyorsa, IS anahtar kelimesi kullanılır.

Örnek:INPUT “Bir sayı giriniz:”, DEGERSELECT CASE DEGER

CASE 0 TO 10PRINT “0 ile 10 arasında bir sayı girdiniz”

CASE 11 TO 20PRINT “11 ile 20 arasında bir sayı girdiniz”

CASE 21 TO 50 , 75 TO 100PRINT “21 ile 50 arasında veya 75 ile 100 arasında bir sayı girdiniz”

CASE 101, IS>102PRINT “101 veya daha büyük bir sayı girdiniz”

CASE ELSEPRINT “Negatif veya 51 ile 74 arasında bir sayı girdiniz”

END SELECTEND

BASIC Programlama Dili 29

MELODİ KOMUTLARIBEEP: Programın istenilen satırına BEEP yazarak “bip” şeklinde ses duymak için kullanılır (Birden fazla BEEP

komutu kullanılabilir). Örnek: BEEP : INPUT “ADINIZ:” ;AD$ : BEEP : BEEP : PRINT “MERHABA “; AD$

SOUND: Bu komut iki parametre ile çalışır. Birincisi sesin frekansı, ikincisi ise uzunluğudur. Kullanımı şu şeklindedir.

SOUND frekans, uzunluk (Örnek: SOUND 1000, 15)Frekans Aralığı = 37– 32767’dir. Frekans büyüdükçe ses tizleşir, küçüldükçe bas olur.

Örnekler:CLSFOR A = 100 TO 1000 STEP 100PRINT “FREKANS:” ; ASOUND A , 10NEXT AEND

FOR A = 100 TO 1000 STEP 25SOUND A , 0.5NEXT A

veya

FOR A = 1000 TO 100 STEP -25SOUND A , 0.5NEXT A

Yandaki programları; Frekans değerlerini değiştirerek, Tek program halinde birleştirerekİki döngüyü bir döngü içine daha alarak tekrar çalıştırın.

PLAY: Bu komut arka plandaki sesin nota sayısını bildirir. Genel kullanımı şu şekildedir.

PLAY “Xn” veya PLAY “Xn Xn Xn Xn Xn” Burada X: nota, n: nota aralığıdır. Notalar bazı harflerle sembolize edilir. Nota aralığı ise 0 ile 84 arasındadır.

Notalar Bazı parametreler Örnekler:C: Do D: ReE: MiF: FaG: SolA: LaB: Si

P ES (Dur) PLAY “CDEFGAB”PLAY “C2 C2 D E2 E2 D CDEC”PLAY “A3 P2 C3”PLAY “A20 C30 A20”PLAY “C2 A3 C2 A3”

n 0 – 84

O Oktav# (Diez)+–

Yarım sesleri gösterir

ÖrnekCLSBASLA:INPUT "1-3 ARASI BİR SAYI GİRİN:", SAYISELECT CASE SAYI CASE 1 BEEP : PRINT "1 GİRDİNİZ"CASE 2 SOUND 1000, 3 : PRINT "2 GİRDİNİZ"CASE 3 PLAY "A20 C30 D40 C20" : PRINT "3 GİRDİNİZ"CASE ELSE PRINT "YANLIŞ SAYI GİRDİNİZ, "; GOTO BASLAEND SELECT

GOSUB – RETURN GOSUB ile alt programlar oluşturulabilir. GOSUB ve ardından bir etiket ya da satır numarası yazılır. Gidilen

yerden geri dönmek için RETURN komutu kullanılır. GOSUB da GOTO gibi programın işleyişini bırakıp başka bir noktadan başlamasını sağlar. Fakat farklı olarak RETURN komutunu görünce kaldığı yere geri dönerek çalışmasına devam eder. Alt programa, istenilen yerden istenilen kadar geçiş yapılabilir. GOSUB ile atladığımız yerde RETURN bulunmazsa geri dönüş olmaz.

Örnekler:CLSF = 1INPUT “KAÇIN FAKTÖRİYELİ?”, NFOR I = 1 TO NGOSUB FAKTORIYELPRINT I; TAB(5); "FAKTÖRİYEL:"; TAB(16); F

CLSGOSUB CIZGIPRINT "MERHABA DUNYA"GOSUB CIZGIPRINT "QUICK BASIC"GOSUB CIZGI

BASIC Programlama Dili 30

NEXT IENDFAKTORIYEL:F = F * IRETURN

PRINT "PROGRAMLAMA DİLİ"GOSUB CIZGIEND REM program burada sonlandırılmalıdır.REM Aksi halde alt program da çalışır ve hata oluşur.

CIZGI:PRINT "----------------"RETURN

GOTO fonksiyonu yerine GOSUB-RETURN fonksiyonlarını kullanarak, istenilen herhangi bir sayının faktöriyelini hesaplayan bir BASIC programı.

CLSF = 1INPUT “KAÇIN FAKTÖRİYELİ?”, NFOR I = 1 TO N F = F * I PRINT I; TAB(5); "FAKTÖRİYEL:"; TAB(16); FNEXT IEND

veya

CLSF = 1INPUT “KAÇIN FAKTÖRİYELİ?”, NFOR I = 1 TO NGOSUB FAKTORIYELPRINT I; TAB(5); "FAKTÖRİYEL:"; TAB(16); FNEXT IEND

FAKTORIYEL:F = F * IRETURN

BASIC Programlama Dili 31

*** ALIŞTIRMALAR ***

Klavyeden girilen herhangi iki sayıyı dört işleme tabi tutacak BASIC programı (SELECT-CASE)MENU:CLSLOCATE 2, 28: PRINT "**************"LOCATE 3, 28: PRINT "* M E N U *"LOCATE 4, 28: PRINT "**************"LOCATE 6, 28: PRINT "1. TOPLAMA"LOCATE 8, 28: PRINT "2. ÇIKARMA"LOCATE 10, 28: PRINT "3. ÇARPMA"LOCATE 12, 28: PRINT "4. BÖLME"LOCATE 14, 28: PRINT "5. ÇIKIŞ"LOCATE 16, 28: INPUT "SEÇİMİNİZİ GİRİNİZ:", SECIF SEC = 5 THEN ENDIF SEC < 1 OR SEC > 5 THEN GOTO MENUCLSLOCATE 10, 20: INPUT "İLK SAYI:", S1LOCATE 12, 20: INPUT "İKİNCİ SAYI:", S2SELECT CASE SEC CASE 1 SONUC = S1 + S2 CASE 2 SONUC = S1 - S2 CASE 3 SONUC = S1 * S2 CASE 4

IF S2 = 0 THEN PRINT “BELİRSİZ” : SLEEP 2 : GOTO MENUSONUC = S1 / S2END SELECTLOCATE 15, 20: PRINT "İŞLEM SONUCU:"; SONUCLOCATE 20, 25: INPUT "MENU İÇİN BİR TUŞA BASINIZ", TUSGOTO MENU

Klavyeden girilen herhangi iki sayıyı dört işleme tabi tutacak BASIC programı (GOSUB-RETURN)MENU:CLSLOCATE 2, 28: PRINT "**************"LOCATE 3, 28: PRINT "* M E N U *"LOCATE 4, 28: PRINT "**************"LOCATE 6, 28: PRINT "1. TOPLAMA" : LOCATE 8, 28: PRINT "2. ÇIKARMA"LOCATE 10, 28: PRINT "3. ÇARPMA" : LOCATE 12, 28: PRINT "4. BÖLME"LOCATE 14, 28: PRINT "5. ÇIKIŞ"LOCATE 16, 28: INPUT "SEÇİMİNİZİ GİRİNİZ:", SECIF SEC = 5 THEN ENDIF SEC < 1 OR SEC > 5 THEN GOTO MENUCLS : LOCATE 10, 20: INPUT "İLK SAYI:", S1 : LOCATE 12, 20: INPUT "İKİNCİ SAYI:", S2IF SEC = 1 THEN SONUC = S1 + S2: GOSUB ISLEMIF SEC = 2 THEN SONUC = S1 - S2: GOSUB ISLEMIF SEC = 3 THEN SONUC = S1 * S2: GOSUB ISLEMIF SEC = 4 THENIF S2 = 0 THEN PRINT "BELİRSİZ": SLEEP 2: GOTO MENU

SONUC = S1 / S2GOSUB ISLEM

END IFLOCATE 20, 25: INPUT "MENU İÇİN BİR TUŞA BASINIZ", TUSGOTO MENUENDISLEM:LOCATE 15, 20: PRINT "İŞLEM SONUCU:"; SONUCRETURN

BASIC Programlama Dili 32

GEOMETRİK ŞEKİLLERKAREINPUT "KARENİN KENAR UZUNLUĞUNU GİRİNİZ:", AALAN% = A ^ 2CEVRE% = 4 * ACLSPRINT "KENARI"; A; "BİRİM OLAN AŞAĞIDAKİ KARENİN;"PRINT "ALANI="; ALAN%; "BİRİM KARE,"PRINT "ÇEVRESİ="; CEVRE%; "BİRİMDİR."

DİKDÖRTGENINPUT "DİKDÖRTGENİN UZUN KENARINI GİRİNİZ:", UKINPUT "KISA KENARINI GİRİNİZ:", KKALAN% = UK * KKCEVRE% = 2 * (UK + KK)CLSPRINT "UZUN KENARI"; UK; "KISA KENARI"; KK; "BİRİM OLAN AŞAĞIDAKİ DİKDÖRTGENİN;"PRINT "ALANI="; ALAN%; "BİRİM KARE,"PRINT "ÇEVRESİ="; CEVRE%; "BİRİMDİR."

DİK ÜÇGENINPUT "DİK ÜÇGENİN TABAN UZUNLUĞUNU GİRİNİZ:", TINPUT "YÜKSEKLİĞİNİ GİRİNİZ:", YALAN% = T * Y / 2HIPOTENUS = SQR(T ^ 2 + Y ^ 2)CEVRE% = T + Y + HIPOTENUSCLSPRINT "TABAN UZUNLUĞU"; T; "YÜKSEKLİĞİ"; Y; "BİRİM OLAN AŞAĞIDAKİ ÜÇGENİN;"PRINT "ALANI="; ALAN%; "BİRİM KARE,"PRINT "ÇEVRESİ="; CEVRE%; "BİRİMDİR."

ÇEMBERINPUT "ÇEMBERİN YARIÇAPINI GİRİNİZ:", RPI = 22 / 7ALAN% = PI * R ^ 2CEVRE% = 2 * PI * RCLSPRINT "YARIÇAPI"; R; "BİRİM OLAN AŞAĞIDAKİ ÇEMBERİN;"PRINT "ALANI="; ALAN%; "BİRİM KARE,"PRINT "ÇEVRESİ="; CEVRE%; "BİRİMDİR."