BİLGİSAYARLARIN YAPISI Bir bilgisayar sistemi donanım ve yazılım olmak üzere iki bölümden oluşur. Donanım (Hardware): Bilgisayarın fiziksel ve elektronik yapısını oluşturan ana ve çevre birimlerinin tümüne donanım denir. Donanım birimleri görev alanlarına göre 3 gruba ayrılır. Giriş birimleri (klavye, fare vb.), çıkış birimleri (ekran, yazıcı, çizici, hoparlör vb.) ve merkezi işlem ve bellek ünitesi (anakart, merkezi işlemci, harddisk, RAM vb.) Donanım Bellek Birimleri Giriş Birimleri Çıkış Birimleri İletişim (Uzak, yerel) Merkezi İşlem Ünitesi İletişim (Uzak, Yerel) Yazılım (Software): Donanım birimlerini istenen işlere yöneltip bir çalışma düzeni içerisinde kullanabilmek için gerekli tüm programlardan ve veri yapılarından oluşur. Yazılım İşletim Sistemi (MS-DOS, Windows, Unix, Linux vs.) Programlama Dilleri (BASIC, Fortran, C, Pascal, Java vs.) Uygulama Programları (Word, Excel, Autocad vs.) 1
Veri ve Bilgi Kavramları Veri, bir konuda gözlemler veya faaliyetler sonucu ortaya çıkan gerçeklerdir. Örneğin, hava sıcaklığının gözlenmesi sonucu elde edilen değerler, sıcaklık verileridir veya bir sınıftaki öğrencilerin herhangi bir dersten aldıkları notlar, not verileridir. Bilgi, verilerin işlenmesi sonucu ortaya çıkan toplam değere veya faydaya denir. Örneğin, sıcaklık verilerinin ortalaması alınarak o bölgenin ortalama sıcaklığı hesaplanır veya sıcaklık verileri daha başka işlemlere tabi tutularak o bölgenin iklimi hakkında bilgi sahibi olunur. Benzer şekilde not verilerinin işlenmesi sonucu sınıfın başarısı hakkında bilgi sahibi olunur. Veriler İşlem süreci (Bilgi İşlem) Bilgi Bir Problemin Bilgisayarla Çözülebilmesi İçin: Problem iyi tanımlanabilmeli ve bütün ayrıntıları ile önceden bilinmeli Problemi çözebilmek için bir sayısal hesap yöntemi bilinmeli Problem, çözümde kullanılacak programın ve bilgisayarın özelliklerine uymalı Bilgisayarla çözüm diğer çözümlerden daha güvenilir ve ekonomik olmalıdır. Yukarıdaki koşulları sağlayan her problem bilgisayarla çözülebilir. Programlamanın aşamaları şunlardır: Algoritma (hesap düzeni) Akış diyagramı Kodlama Programın kontrolü (sınama) Çıktılar ve yorumlanması Programın yeni koşullara göre geliştirilmesi (güncelleme) 2
ALGORİTMA GELİŞTİRME VE BASIC PROGRAMLAMA DİLİ A Programlamaya Giriş 1- Program Program, belirli bir işlemi gerçekleştirmek için bilgisayara iletilen komutlar dizisidir. 2- Programlama dilleri Programlama dili, programcı ile bilgisayar arasındaki iletişimi sağlamaya yarayan araçtır. Programlama dillerinin komutları İngilizce kelimelerdir. Örneğin; ekrana yazı yazdırmak için BASIC te Print, Pascal da Writeln, C de Printf komutları kullanılır. Programlama dilleri üç gruba ayrılır: Düşük düzeyli diller: Makine dilleridir (ASSEMBLY) Orta düzeyli diller: Makine dillerine yakın dillerdir (C) Yüksek düzeyli diller: Konuşma diline yakın dillerdir. (BASIC, FORTRAN vb.) Yüksek düzeyli dillerde yazılan bir program derleyici (compiler) adı verilen bir program ile makine diline çevrilir. Bu işleme derleme (compile) adı verilir. 3
3- İşlemler a) Matematik İşlemler: Bilgisayarda en çok kullanılan işlemlerdir. Matematik işlemlerin bilgisayar programlarındaki karşılıkları İşlem Matematik Bilgisayar Toplama a + b a + b Çıkarma a - b a - b Çarpma a. b a * b Bölme a b a / b Üs alma a b a ^ b İşlem öncelik sıraları önemlidir ve matematiksel işlemler programa aktarılırken öncelik sıralarına dikkat edilmelidir. İşlem sıralamasında yapılan hata derleyici tarafından fark edilemeyeceği için sonucun yanlış çıkmasına neden olur. Aşağıdaki tabloda işlem öncelik sıraları görülmektedir. Öncelik Sırası İşlem Bilgisayar 1 Parantezler (( )) 2 Üs alma a ^ b 3 Çarpma ve bölme a * b ve a / b 4 Toplama ve çıkarma a + b ve a b Aynı önceliğe sahip işlemler soldan sağa doğru yapılır. Matematik gösterim Programda gösterim (kodlama) a + b c + 2abc - 7 a + b c + 2 * a * b * c -7 a + b 2 c 3 a + b ^ 2 c ^ 3 b 2 a 2ac c a b a b / c + 2 * a * c 2 / (a + b) a b 2ab b 4ac (a + b) ^ (1 / 2) 2 * a * b / (b ^ 2 4 * a * c) 4
a b - c 2(ab ac bc) (a + b - c) / (a ^ 2 + b ^ 3) ^ (1 / 2) 2 3 a b 9 2 * (a * b + a * c + b * c) / 9 a b 3 2 2 abc b a c (a ^ 2 + b ^ 2) ^ (1 / 3) + a * b * c / (a + b / (c b / b a ^ 3)^(1 / 2)) 3 a 3 4 5 a b a b c ab 1 1 1 1 1 abc ((a - b) ^ (1 / 5)/(a + b c / (a * b)) ^ (1 / 4)) ^ 1 / 3) +1 / (1 + 1/ (1 + 1 / (a * b * c)) ^ (1 / 2)) ^ (1 / 2) Örnek: a=9 ve b=6 için İfade a + b ^ 1 / 2 a + b ^ (1 / 2) Matematik eşdeğeri Sonuç 1 b a 12 2 a b 11.449 (a + b) ^ 1 / 2 (a b) 2 1 7.5 (a + b) ^ (1 / 2) a b 3.873 b) Karşılaştırma İşlemleri: İki değerin birbirine göre büyüklük, küçüklük veya eşitlik durumlarını işlemlerdir. İşlem sembolü Anlamı = Eşittir < > veya > < Eşit değildir > Büyüktür < Küçüktür > = veya = > Büyük eşittir < = veya = < Küçük eşittir 5
c) Mantıksal İşlemler: Mantıksal işlem operatörleri, hem karşılaştırma hem de matematik işlemlerde kullanılır. Karşılaştırma ifadelerinde birden fazla koşulun sağlanması istenebilir. Mantıksal İşlem VE VEYA DEĞİL Komut AND OR NOT VE işleminde bütün koşullar doğru ise sonuç doğrudur. VEYA işleminde koşullardan biri doğru ise sonuç doğrudur. Bütün şartların sağlanması isteniyorsa VE, şartların herhangi birinin sağlanması isteniyorsa VEYA ve koşulu sağlamayanlar isteniyorsa DEĞİL operatörü kullanılır. Mantıksal işlemlerde de matematiksel işlemlerde olduğu gibi işlem öncelik sıraları vardır. Sıra İşlem Komut 1 Parantez içindeki işlemler (..) 2 DEĞİL NOT 3 VE AND 4 VEYA OR 6
ALGORİTMA GELİŞTİRME Bir problemin çözümünde izlenecek olan adımlar algoritma olarak adlandırılır. Algoritmanın özel şekillerle gösterilmesine akış diyagramı denir. Problemin algoritması hazırlanabiliyorsa bu problem bütün programlama dillerinde yazılabilir. Program yazarken izlenecek yol: a. Programın algoritması hazırlanır, istenirse akış diyagramı çizilir. b. Algoritma, herhangi bir programlama diliyle yazılır. (Kodlama) c. Program çalıştırılır. (Run) d. Derleyicinin belirttiği hatalar düzeltilir. (Syntax Error) e. Program deneme verileriyle çalıştırılır. Böylece derleyicinin bulamadığı hatalar yakalanmaya çalışılır. (Debug) Algoritmalarda Kullanılan Özel Terimler Değişken: Programın değişik aşamalarında farklı değerler alabilen bilgi alanlarıdır. Değişken isimlendirmesinde temsil ettiği ifadeyi çağrıştıracak şekilde olması programın anlaşılırlığını arttırır. Örneğin öğrencilerin ismi için ad, adsoyad, isim ; öğrencilerin aldığı notlar için vize, final gibi değişken isimleri uygun olabilir. Değişken İsimlerinde: a. İngiliz alfabesinin harfleri kullanılır. b. 0 9 arası rakamlar kullanılabilir. c. Alt çizgi ( _ ) karakteri dışında özel işaretler kullanılmaz. d. Değişken isimleri mutlaka harf ile başlamalıdır. 7
Örneğin öğrencilerin 1. vize notu için 1.VİZE hatalı bir değişken ismidir, doğrusu VIZE_1 olabilir. Aktarma: Bir değişkene değer aktarılması işlemidir. Değişken İsmi = Değer Eşitliğin sağ tarafındaki değer matematiksel, mantıksal veya karakter bir ifade olabilir. Aktarma operatörü = ile ifadenin değeri değişkene aktarılır. Eğer değişkene yeni bir değer aktarılırsa eski değer silinir. Sayaç: Değişkene başka bir değer aktarıldığında eski değerin silinmesi prensibine göre değişkenin değerinin düzenli olarak artması veya azalması işlemine sayaç denir. Yeni Sayaç Değeri = Eski Sayaç Değeri ± Artım Örnek: X = X + 3 (üçer üçer artan bir sayaç) S = S 5 (beşer beşer azalan bir sayaç) Sayaç oluşturulurken, sayaç değişkenine bir başlangıç değeri verilir. BASIC dilinde başlangıç değeri verilmemesi durumunda 0 olur. 8
Örnek: Aşağıdaki algoritmada 1 ve 5 arasındaki sayılar ekrana yazdırılmaktadır. 1- Başla 2- S = 0 3- Eğer S = 5 ise git 7 4- S = S + 1 5- Yaz S 6- Git 3 7- Dur Eski S Yeni S Ekran 0 0+1=1 1 1 1+1=2 2 2 2+1=3 3 3 3+1=4 4 4 4+1=5 5 Ardışık Toplama: Başlangıç değeri 0 ve artım değeri düzensiz olan bir sayaçtır. Yeni Toplam Değeri = Eski Toplam Değeri + Sayı Örnek: 5 sayıdan oluşan bir dizinin ortalaması probleminin algoritması gösterilmektedir. 1. Başla 2. Toplam = 0 3. S = 0 4. EĞER S = 5 ise GİT 9 5. S = S + 1 6. Sayı GİR 7. Toplam = Toplam + Sayı 8. GİT 4 9. Ortalama = Toplam / S 10. YAZ Ortalama 11. DUR Eski S Yeni S Sayı Eski Toplam Yeni Toplam 0 0+1=1 7 0 0+7=7 1 1+1=2 3 7 7+3=10 2 2+1=3 45 10 10+45=55 3 3+1=4 32 55 55+32=87 4 4+1=5 8 87 87+8=95 Ortalama = 95 / 5 = 19 9
Ardışık Çarpma: Başlangıç değeri 1 olan çarpım sayacıdır. Yeni Çarpım Değeri = Eski Çarpım Değeri * Sayı Örnek: 5 faktöryeli ( 5! ) hesaplayan algoritmayı yazınız. 1. Başla 2. Faktor = 1 3. S = 0 4. EĞER S = 5 ise GİT 8 5. S = S + 1 6. Faktor = Faktor * S 7. GİT 4 8. YAZ Faktor 9. DUR Eski S Yeni S Eski Faktor Yeni Faktor 0 0+1=1 1 1*1=1 1 1+1=2 1 1*2=2 2 2+1=3 2 2*3=6 3 3+1=4 6 6*4=24 4 4+1=5 24 24*5=120 10
AKIŞ DİYAGRAMLARI Algoritmanın özel şekillerle çizilmesi akış diyagramı olarak adlandırılır. İşlem Şekil Başla / Dur Veri girişi Atama Döngü Karar Çıktı, Yazdırma Bağlantı İşlem akış yönü 11
BASIC PROGRAMLAMA DİLİ BASIC kelimesi, Beginner s All-Purpose Symbolic Instruction Code (Yeni Başlayanlar İçin Tüm Amaçlara Yönelik Sembolik Öğretim Kodu) kelimelerinin baş harflerinden üretilmiştir. 1964 yılında geliştirilmiştir. Bilgisayarda işlenen veriler iki çeşittir. Sayısal (nümerik) ve karakter (alfanümerik). Sayısal veriler, sayısal bir değeri olan tamsayılar, ondalıklı sayılar vb. gibi verilerdir. Karakter veriler ise sayısal değeri olmayan harfler, kelimeler ve diğer karakterlerdir. BASIC Dilinde Kullanılan Değişken Türleri: BASIC te işlenen bilgileri temsil eden değişkenlerin yanına yazılan sembollerle bilgi tipi belirtilir. Değişken Türü Belirtme Sembolü Tamsayı % Tek duyarlıklı ondalık sayı! Çift duyarlıklı ondalık sayı # Karakter $ BASIC dilinde tamsayılar -32768 ile 32767 arasında bir değer alır. Tek ve çift duyarlıklı ondalık sayılar -1.7E38 ve 1.7E38 aralığında olabilirler. Tek duyarlıklı sayı da anlamlı basamak sayısı 7 veya daha az; çift duyarlıklı sayıda ise anlamlı basamak sayısı 8 ile 18 arasındadır. Aşağıda tek ve çift duyarlıklı sayılara örnekler verilmiştir. Tek duyarlıklı: 23.29456, -1.234567, -2.34567E-3, 1756.345! Çift duyarlıklı: 1.2345678901234567, -1.432D-12, 3.141592654#, 56# Tek duyarlıklı sayılar için (! ) belirteci kullanılmayabilir. Programın başında, programda kullanılacak değişkenlerin türü belirtilirse her seferinde tür belirteci kullanılmayabilir. DEFSTR DEFINT DEFSNG DEFDBL Karakter tür belirteci Tamsayı tür belirteci Tek duyarlıklı ondalık sayı tür belirteci Çift duyarlıklı ondalık sayı tür belirteci Karakter değişkenler için değişken isminden sonra ( $ ) belirteci konur ve karakter tırnak ( ) içinde yazılır. Örneğin; isim$ = Ali gibi. 12
BASIC teki Veri Giriş Komutları 1. INPUT Programın çalışması sırasında klavyeden programa veri girilmesini sağlar. INPUT değişken1, değişken2,.. INPUT mesaj, değişken1,. Örnek:.. INPUT a INPUT b ve c sayılarını giriniz, b, c d=a+b+c. INPUT komutundan sonra girilen değişken değeri ile istenen değişken türü aynı olmalıdır. Örnek: INPUT bir sayı giriniz, a PRINT girilen sayının karesi= ; a^2.. Bu örnekte eğer a için bir karakter girilirse hata mesajı alınır. Örnek:.. INPUT iki sayı giriniz, a$,b$ PRINT girilen sayıların toplamı= ;a$+b$ Burada 5 ve 6 değerleri a$ ve b$ için girilirse program a ve b birer karakter değişken olduğu için onları sayı olarak değil sadece karakter olarak algılar ve 11 yerine 56 sonucunu verir. Buradaki + operatörü toplama işlemi yerine karakterleri birleştirme işlemini yapar. 13
2. READ-DATA VE RESTORE Değişkenlere program içinden bilgi girilmesini sağlar. READ deyiminden sonra girilen değişkenlerin değerleri DATA deyiminden sonra sırayla girilir. READ değişken 1, değişken 2,.. DATA değişken 1, değişken 2,.. READ deyimleri ile istenen veri sayısı ile DATA deyimleri ile girilen veri sayısı eşit olmalıdır. Eğer READ deyiminden sonra verilen yeni değişkenlere de DATA daki eski değerler verilmek isteniyorsa RESTORE komutu kullanılır. READ A, B RESTORE 50 READ C, D PRINT A, B, C, D 50 DATA 3, 11 Programı sonucunda elde edilen çıktı: 3 11 3 11 şeklinde olur. Böylece READ deyimleriyle istenen veri sayısı DATA deyimiyle girilenlerden daha fazla olduğu halde hata mesajıyla karşılaşılmaz. BASIC teki Çıkış/Yazdırma Komutları 1. PRINT Değişken değerlerinin ekrana yazılmasını sağlar. PRINT değişken PRINT mesaj değişken Birden fazla değişken (, ) veya ( ; ) kullanılarak ayrılır. BASIC derleyicileri 40 veya 80 karakter genişliğindeki ekranı 14, 15 karakterlik sütunlara böler. Ayraç olarak (, ) kullanılırsa değerler sütun başlarından başlayarak yazılır. Ayraç olarak ( ; ) kullanılırsa değerler bitişik olarak yazılır. 14
2. PRINT USING Ekranda veya yazıcıda düzenli (formatlı) gösterim sağlar. PRINT USING Alan tanımlayıcı ; Değişken Listesi Alan tanımlayıcıları çıktının hangi düzende olacağını belirtir. Karakter ve sayısal değerler için farklı alan tanımlayıcıları vardır. a) Karakter Alan Tanımlayıcıları! : Değişken listesinde yer alan ifadelerin sadece ilk karakterlerinin yazılmasını sağlar. READ A$, B$, C$ PRINT USING! ;A$, B$, C$ DATA İstanbul, Teknik, Üniversitesi Ekranda İTÜ görünür. \ n tane boşluk \ : Değişken listesindeki karakterlerin (n+2) kısmını yazar. b) Sayısal Alan Tanımlayıcıları # : Sayının basamaklarının yerini tanımlar. Eğer tanımlanan alan değerden büyükse değer sağa dayalı olarak yazılır. Tanımlanan alan değerden küçükse değerin önüne % işareti belirir.. : Yazdırılacak sayının ondalık kısmını ayırmak için kullanılır. ** : Tanımlanan alan değişken değerinden büyük ise bu boşlukların yıldızlarla doldurulmasını sağlar. Ayrıca iki karakterlik ek alan oluşturur. PRINT USING "**##.###";a,b $$ : Yazdırılacak değerlerin başına ( $ ) işaretinin yazılmasını sağlar. Ayrıca iki karakterlik ek alan oluşturur. **$ : Sayıların başına ( $ ) işaretinin yazılmasını ve boşlukların ( * ) dolmasını sağlar. Üç karakterlik ek alan oluşturur., : Tam kısım ile ondalıklı kısmı ayıran noktanın hemen önünde yer alan (, ) işareti yazdırılacak rakamların üçer hane virgülle ayrılmasını sağlar. 15
^^^^ : Yazdırılacak sayının üstel formda yazılmasını sağlar. Alan tanımlayıcısından sonra yazılır. BASIC teki Döngü Komutları 1. FOR-NEXT FOR Kontrol değişkeni = Başlangıç TO Bitiş STEP Artım NEXT Kontrol değişkeni Eğer artım 1 er 1 er olacaksa STEP komutuna gerek yoktur. NEXT deyiminden sonra kontrol değişkeni yazılmayabilir. İç içe açılan döngüler birbirini kesmemelidir. 2. WHILE-WEND WHILE koşul. WEND Koşul sağlandığı sürece döngü devam eder. 1. IF-THEN BASIC teki Karar Komutları IF den sonra yazılan koşul doğru ise THEN den sonraki işlem yapılır. IF koşul THEN.işlem Örnek: INPUT İki sayı giriniz, a, b IF a > b THEN PRINT a > b IF a = b THEN PRINT a = b IF a < b THEN PRINT a < b END 16
2. IF THEN ELSE IF THEN komutunda koşul sağlanmadığı zaman program bir alt satırdan devam ediyordu. Ancak ELSE komutu ile koşul sağlanmadığı zaman yapılacak işlem belirtilebilir. IF koşul THEN koşul sağlanırsa yapılacak işlem ELSE koşul sağlanmayınca yapılacak işlem Örnek: INPUT iki sayı giriniz, a, b IF a < b THEN PRINT a < b ELSE PRINT a = b veya a > b 3. IF THEN - ELSE IF THEN ELSE Eğer ikiden fazla koşul varsa bu yapı kullanılabilir. IF koşul 1 THEN koşul 1 sağlanırsa yapılacak işlem ELSE IF koşul 2 THEN koşul 2 sağlanırsa yapılacak işlem ELSE tüm koşullar yanlış ise yapılacak işlem Örnek: INPUT iki sayı giriniz, a, b IF a > b THEN PRINT a > b ELSE IF a = b THEN PRINT a = b ELSE PRINT a < b END 17
Bazı Matematik Fonksiyonların BASIC Karşılıkları Matematiksel Fonksiyon BASIC Karşılığı x ABS(x) x SQR(x) sgn(x) SGN(x) x > 0 ise sgn(x) = 1 x = 0 ise sgn(x) = 0 x < 0 ise sgn(x) = -1 e x EXP(x) Ln(x) LOG(x) Log(x) LOG(x)/LOG(10) Sin(x) SIN(x) Cos(x) COS(x) Tan(x) TAN(x) Cotan(x) 1 / TAN(x) Arctan(x) ATN(x) Arcsin(x) ATN(x / SQR(1 x * x)) Arccos(x) 1.570796 - ATN(x / SQR(1 x * x)) Arccotg(x) 1.570796 ATN(x) Sinh (x) (EXP(x) EXP(-x)) / 2 Cosh(x) (EXP(x) + EXP(-x)) / 2 Tanh(x) (EXP(x) EXP(-x)) / (EXP(x) + EXP(-x)) Coth(x) (EXP(x) + EXP(-x)) / (EXP(x) - EXP(-x)) Arcsinh(x) LOG(x + SQR(x * x + 1)) Arccosh(x) LOG(x + SQR(x * x - 1)) Arctanh(x) LOG((1 + x) / (1 x)) / 2 Arccotanh(x) LOG((1 + x) / (x 1)) / 2 x sayısını en yakın küçük tam INT(x) sayıya yuvarlar x sayısını en yakın tam sayıya yuvarlar X sayısının ondalık kısmını atar 0 ile 1 arasında rasgele bir sayı üretir CINT(x) FIX(x) RND(x) INT(2.51) = 2 INT(-3.4) = -4 CINT(2.51) = 3 CINT(-3.4) = -3 FIX(2.51) = 2 FIX(-3.4) = -3 18
BASIC teki Bazı Karakter Fonksiyonlar Fonksiyon İşlevi Örnekler RIGHT$(A$,n) A$ değişkeninde sağdan başlayarak n karakter alır. RIGHT$( pamukkale,4) = kale LEFT$(A$,n) A$ değişkeninde soldan başlayarak n karakter alır. LEFT$( pamukkale,5) = pamuk MID$(A$,m,n) A$ değişkeninde m. MID$( pamukkale,5,2) karakterden başlayarak m. = kk dahil n karakter alır. LEN(A$) A$ karakter sayısını bulur. LEN( pamukkale ) = 9 SPACE$(n) STRING$(n,m) n adet boşluk koyar ASCII kodu m olan n uzunluğunda bir karakter dizi oluşturur. STRING$(n,A$) A$ değişkeninin ilk karakteri ile n uzunluğunda bir dizgi oluşturur. UCASE$(A$) A$ değişkeninin tüm harflerini büyük harf yapar TAB(x) SPC(x) PRINT deyimi ile birlikte kullanılır. Kendinden sonra gelen bilginin ilk karakteri x inci kolona gelecek şekilde basılmasını veya kayıt yapılmasını sağlar. PRINT deyimi ile birlikte kullanılır, yazımı istenen iki değişken arasında x boşluk bırakır. STRING$(5,80) = PPPPP STRING$(5, inşaat ) = iiiii UCASE$( Pamukkale ) = PAMUKKALE PRINT TAB(5); İnşaat = İnşaat PRINT A ; SPC(5); B =A B DATE$ Sistem tarihini verir PRINT DATE$= 03-21-2003 TIME$ Sistem saatini verir PRINT TIME$= 16:14:18 ASC(A$) A$ karakterinin ASCII ASC( P ) kodunu verir = 80 CHR$(x) ASCII kodu x olan CHR$(80) karakteri verir = P ASCII: American Standard Code for Information Interchange (Bilgi Değişimi için Standart Amerikan Kodu) 0'dan 255'e kadar toplam 256 (2 8 ) karakter. 19
20
ALT SIRALI (İNDİSLİ) DEĞİŞKENLER Bir değişkene değer atandığında, bu değer ilgili değişken ismi altında bellekte saklanmakta ve program içinde işlem görmektedir. Aynı değişkene başka bir değer atandığında eski değer silinmektedir. Aynı değişkenin önceki değerlerini saklamanın yolu değişkeni alt sıralı tanımlamaktır. DIM DEYİMİ Alt sıralı değişkene bilgisayar belleğinde yer ayırmak için kullanılır. DIM Değişken(indis1, indis2,. indisn) DIM vize(20) Burada vize değişkenine 0'dan başlayarak 21 tane yer ayrılır. Ancak indisler genellikle 1 den başladığı için OPTION BASE 1 komutu ile 1'den başlar ve 20 yer ayrılır. Option Base komutu unutulursa bellekte indisli değişkenler için 1 yer fazladan ayrılmış olur. Basic te DIM ifadesi tanımlanmadan altsıralı değişken kullanılırsa indisin alabileceği maksimum değer 10'dur. Bir değişkene DIM deyimiyle atanandan daha büyük indis kullanılırsa indis sınır dışı" (subscript out of range) hata mesajıyla karşılaşılır. DIM deyimiyle değişken için ayrılan yer eleman sayısından fazla ise hata olmaz ancak bellekte gereksiz yer işgal edilmiş olur. OPTION BASE 1 DIM x(8) x(1)=5 x(2)=8 x(3)=12 x(4)=20 PRINT x(2) END X(1) X(2) X(3) X(4) X(5) X(6) X(7) X(8) 5 8 12 20 Ekranda 8 görülür. 21
KURALLAR: 1- Bir değişken en çok 255 indisli olabilir. 2- Bir indis en çok 32767 değerini alabilir. 3- İndis değerleri ondalık veya tamsayı olabilir. Ondalık sayılar ifadeler tamsayıya yuvarlanarak indis değeri belirlenir. Alt sıralı/indisli Matematik İfade a i,j y k x i-k+1 y k =x k-1 +3x k +x k+1 BASIC Karşılığı A(I;J) Y(K) X(I-K+1) Y(K)=X(K-1)+3*X(K)+X(K+1) BASIC te Alt Programlar Bir programın sık tekrarlanan bölümleri programı sadeleştirmek için ana programdan ayrılarak alt program adı altında program parçaları oluşturulur. Alt programlarla çalışılması ana programın daha kısa oluşmasına neden olmaktadır. Ayrıca, genel amaçlı hazırlanmış alt programların, başka kullanıcılar tarafından kullanılması da mümkündür. BASIC programlama dilinde, kullanıcı tarafından DEF FN deyimiyle tanımlanmış fonksiyonlar ve GOSUB deyimiyle çağrılan alt programlar bu amaçla kullanılır. DEF FN fonksiyon ismi (değişken listesi) = fonksiyon Fonksiyon programın başında tanımlanır ve gerektiği zaman programın herhangi bir yerinde sadece ismi ve gerekli değişkenleri verilerek kullanılır. Örnek: REM silindir hacmi pi=3.14159 DEF FNhacim(D, H) = pi * D ^ 2 * H / 4. D1=. V1=FNhacim(D1,2) D2= V2=FNhacim(D2,2) PRINT V1, V2. 22
Eğer tekrarlanan işlemler bir fonksiyondan daha büyük ise alt programlar kullanılır. Alt programa GOSUB n deyimi ile gidilir. Burada n alt programın ilk satırının numarasıdır. Alt programın sonundaki RETURN komutu ile GOSUB komutunun altından program işleyişi devam eder.. GOSUB n.. END n. RETURN Ana program için geçerli olan tüm kurallar alt program için de geçerlidir. Değişkenler ortak olarak kullanılmaktadır. Yani bir değişkenin değeri hem ana hem de alt programda aynıdır. Bir ana programda birden fazla alt program olabileceği gibi bir alt programın içinde de başka bir alt program olabilir. QBASIC'te program listesi dışında da alt program yazılabilmektedir. Edit menüsünden New Sub komutu seçilerek yeni bir alt program oluşturulabilir. DECLARE SUB Komutu: Program listesi dışında yazılmış alt program olduğunu ve bunlarla ilgili değişkenleri belirtir. Programcı tarafından yazılmazsa derleyici tarafından program listesine eklenir. DECLARE SUB Alt program ismi (değişken 1, değişken 2, ) CALL Komutu: Ayrı yazılan alt programları program içinde çağırmak için kullanılır. DECLARE komutunda belirtilen değişkenlerin tamamı CALL komutunda bulunmalıdır. CALL Alt program ismi (Değişken 1, Değişken 2, ) CALL deyimi ve parantezler kullanılmayabilir. Alt program ismi Değişken 1, Değişken 2,.. 23
COMMON SHARED Komutu: Ayrı yazılan alt programlarda kullanılan parametrelerin değerlerinin ortak kullanıldığını belirtir. Genellikle ana programın ilk satırlarına yazılır. COMMON SHARED Değişken 1, Değişken2,. EXIT SUB Komutu: Ayrı yazılan bir alt program END SUB komutuyla sona eriyordu ve ana program CALL komutunun altından devam ediyordu. EXIT SUB komutuyla alt program tamamlanmadan ana programa dönülebilir. BASIC te Dosya (Kütük) İşlemleri Veri giriş ve çıkışları için kullandığımız INPUT ve PRINT komutları klavyeden girilen veriyi okuyup, sonuçları ekrana yazıyordu; ancak büyük hacimli veriler söz konusu olduğunda, programın her çalışmasında bunların klavyede yazılıp sonra da sonuçların ekrandan alınması zor olmaktadır. Böyle durumlarda verilerin daha önceden açılmış dosyalardan okutulup, elde edilen sonuçların da yine başka dosyalara yazdırılması daha uygun olmaktadır. OPEN kütük ismi FOR INPUT... CLOSE # dosya no OUTPUT APPEND AS # dosya no Dosyadan veriler okunurken INPUT # dosya no, değişken1, değişken 2 Sonuçlar dosyaya yazdırılırken PRINT #dosya no, değişken1, değişken2 Formatlı yazdırmada PRINT # dosya no, USING Alan tanımlayıcı ; Değişken Listesi Örnek: 24
OPEN veri.dat FOR INPUT AS #1 OPEN sonuc.cık FOR OUTPUT AS #2 INPUT #1, a,b c=a+b PRINT #2, c OPEN "I", #1, "veri.dat" OPEN "O", #2, "sonuc.cık" OPEN " O ", # kütük no, "kütük ismi" " I " " A " Program her çalıştırıldığında çıktı kütüğü yeniden yazılır ve eski bilgiler kaybolur bunu önlemek için OUTPUT kütüğü yerine APPEND kütüğü açılmalıdır. Kütüklerin Kapatılması OPEN komutu ile açılan kütüklere ilişkin işlemler tamamlandıktan sonra bunların program içinde kapatılmaları gerekmektedir. CLOSE #kütük no, #kütük no, CLOSE komutundan sonra kütük ismi ve kütük numarası arasındaki ilişki ortadan kalkar. Bir kütük kapandıktan sonra onunla ilgili işlem yapılamaz. Kütük daha sonra aynı veya farklı kütük numarasıyla ve farklı kütük tipiyle açılabilir. CLOSE ifadesinde kütük numarası belirtilmezse açılan bütün kütükler kapatılır. Kütüklerin Durumlarının Elde Edilmesi Bir kütüğün durumu hakkında, yani bir okuma işlemi sırasında kütüğün sonuna gelinip gelinmediğinin veya program içerisinde açılan kütüklerden kaç kayıt okunduğunun veya kaç kayıt yazıldığının veya kütüğün kaç kayıttan oluştuğunun bilinmesi isteniyorsa LOF fonksiyonu, çalışılan kütüğün uzunluğunu byte cinsinden verir. LOC fonksiyonu, kütüğün açılmasından itibaren kütükten okunan veya yazılan kayıt sayısını verir IF LOC(1) > 30 THEN STOP program durdurulmaktadır.) (1 numaralı kütükte 30 ncu kayıt geçildiğinde 25
EOF fonksiyonu, bir kütüğün sonuna erişilip erişilmediğinin kontrol edilmesinde kullanılır. IF EOF(1) THEN CLOSE #1 (1 numaralı kütüğün sonuna erişildiğinde kütük kapatılmaktadır.) SCREEN Komutu: BASIC' DE ÇİZİM KOMUTLARI SCREEN komutu ekran çözünürlüğünü değiştirerek çizim için uygun ortamı sağlar. Çünkü yazı yazmak için daha az çözünürlük yeterli olmaktadır ve QBASIC varsayılan ortam olarak metin (text) ortamını kabul eder. Ekrandaki görüntü noktaların birleşiminden oluşur. Bu noktalara piksel denir. Çözünürlüğün artması demek ekrandaki piksel sayısının artması demektir. SCREEN Mod Mod Tanım 0 Yazı modu, grafik çizilemez 1 320 x 200 piksel, 4 renk, 25 satır 40 kolon 2 640 x 200 piksel, 2 renk (siyah, beyaz), 25 satır 80 kolon 7 320 x 200 piksel, 16 renk, 25 satır 40 kolon 8 640 x 200 piksel, 16 renk, 25 satır 80 kolon 9 640 x 350 piksel, 16 renk 10 640 x 350 piksel, 9 gri ton 11 640 x 480 piksel, 2 renk 12 640 x 480 piksel, 16 renk 13 320 x 200 piksel, 256 renk, 25 satır 40 kolon Grafik kartımıza uymayan SCREEN Mod'ları "Illegal Function Call" hata mesajı verir. Bu durumda başka bir mod denenir. 26
( x ) (0,0) (320,0) ( y ) Screen 13 (0,200) (320,200) PSET (Pixel Set) Komutu: Bu komut ile ekrandaki herhangi bir yere nokta koyabiliriz. PSET (x,y), Renk No Renk No Renk Renk No Renk 0 Siyah 8 Koyu gri 1 Lacivert 9 Mavi 2 Yeşil 10 Parlak yeşil 3 Açık mavi 11 Parlak mavi 4 Kırmızı 12 Parlak kırmızı 5 Pembe 13 Parlak pembe 6 Kahverengi 14 Sarı 7 Açık gri 15 Beyaz LINE Komutu: Çizgi çizmek için kullanılır. (x1,y1) ve (x2,y2) noktaları arasında bir çizgi çizmek için LINE (x1,y1)-(x2,y2), Renk no Köşegeni (x1,y1) ve (x2,y2) noktaları olan bir dikdörtgen çizdirmek için LINE (x1,y1)-(x2,y2), Renk no, B (Box) Bu kutuyu doldurmak için LINE (x1,y1)-(x2,y2), Renk no, BF (Box Fill) 27
CIRCLE Komutu: Çember çizmek için kullanılır. Merkezi (x,y) yarıçapı R olan bir çemberi çizdirmek için CIRCLE (x,y), R, Renk No Bir çemberin tamamını değil de bir kısmını çizdirmek için renk parametresinden sonra -2 ve 2 arasında değişen başlangıç ve bitiş parametreleri kullanılır. CIRCLE (x,y), R, Renk No, Başlangıç, Bitiş Çemberin yatay ve dikey koordinatlarının birbirine oranını belirleyerek çemberi elips şekline dönüştürmek te mümkündür. CIRCLE (x,y), R, Renk No, Başlangıç, Bitiş, Yatay/Düşey Arada girilmek istenmeyen değerler boş bırakılır. Virgüller konur. PAINT Komutu: Ekran üzerinde belirtilen bir noktadan başlayarak ekranı belirtilen renge boyar. Kapalı bir alanla karşılaşıncaya kadar bu işlem sürer. PAINT (x,y), Renk No CIRCLE (100,100),75,4 PAINT (100,100),4 (Çemberin içini boyar) PAINT(200,200),4 (Çemberin dışını boyar) BASIC'te SES KOMUTLARI BEEP Komutu: Programların gerekli yerlerinde bazen sesle uyarı vermek gerekebilir. BEEP komutu belirli bir tonda ve standart uzunlukta zil sesi çıkarır. Komutun kullanım parametresi yoktur. SOUND Komutu: BEEP komutu hep aynı sesi çıkardığı için farklı uyarı mesajları için yeterli olmayabilir. SOUND komutu iki parametreyle kullanılır. Birincisi frekansı, ikincisi ise uzunluğu verir. 28
SOUND frekans, uzunluk Frekans parametresi 37 ile 32767 arasında değişebilse de 14000 den yüksek frekanslı sesler insan kulağı tarafından duyulamaz. SLEEP Komutu: Programın belirtilen sürede veya bir tuşa basılıncaya kadar durmasını sağlar. SLEEP Zaman Burada zaman saniye cinsinden bir tamsayıdır. Zaman belirtilmezse bir tuşa basılıncaya kadar bekler. 29