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 b Üs alma a 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ı 1 2 3 4
İşlem
Bilgisayar
Parantezler ((………)) Üs alma a^b Çarpma ve bölme a * b ve a / b 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 + b2 – c3
a + b – c + 2 * a * b * c -7 a+b^2–c^3
b 2 + 2ac − c a +b 2ab a+b − 2 b − 4ac 2(ab + ac + bc) a +b-c − 9 a 2 + b3 a−
3
a 2 + b2 + a+
abc b c−
a – b / c + 2 * a * c – 2 / (a + b) (a + b) ^ (1 / 2) – 2 * a * b / (b ^ 2 – 4 * a * c) (a + b - c) / (a ^ 2 + b ^ 3) ^ (1 / 2) – 2 * (a * b + a * c + b * c) / 9 (a ^ 2 + b ^ 2) ^ (1 / 3) + a * b * c / (a + b / (c – b / a
b a3
^ 3)^(1 / 2))
4
5 3
4
a−b
a+b−
c ab
1
+
((a - b) ^ (1 / 5)/(a + b – c / (a * b)) ^ (1 / 4)) ^ 1 / 3)
1
1+
1+
+1 / (1 + 1/ (1 + 1 / (a * b * c)) ^ (1 / 2)) ^ (1 / 2)
1 abc
Örnek: a=9 ve b=6 için İfade
Matematik eşdeğeri Sonuç
a+b^1/2
a+
b1 2
12
a + b ^ (1 / 2)
a+ b
11.449
(a + b) ^ 1 / 2
(a + b) 2
7.5
(a + b) ^ (1 / 2)
1
3.873
a +b
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
c) Mantıksal
Anlamı
sembolü = 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 İş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
Komut
VE
AND
VEYA
OR
DEĞİL
NOT
5
“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 1
İşlem Parantez içindeki
Komut (…..)
2 3 4
işlemler DEĞİL VE VEYA
NOT AND OR
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.
6
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. Ö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
7
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.
Örnek:
Aşağıdaki
algoritmada
1
ve
5
arasındaki
sayılar
ekrana
yazdırılmaktadır. 7- Dur 1- Başla 2- S = 0 3- Eğer S = 5 ise git 7
Eski S
Yeni
Ekran
0 1 2
S 0+1=1 1+1=2 2+1=3
1 2 3
4- S = S + 1 5- Yaz S 6- Git 3
8
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
11. DUR
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
Eski
Yeni
S 0 1 2 3 4
S 0+1=1 1+1=2 2+1=3 3+1=4 4+1=5
Sayı
Eski
Yeni
7 3 45 32 8
Toplam 0 7 10 55 87
Toplam 0+7=7 7+3=10 10+45=55 55+32=87 87+8=95
Ortalama = 95 / 5 = 19
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
5. S = S + 1
2. Faktor = 1
6. Faktor = Faktor * S
3. S = 0
7. GİT 4
4. EĞER S = 5 ise GİT 8
8. YAZ Faktor
9
9.
DUR
Eski
Yeni
S 0 1 2 3 4
Eski
Yeni
S Faktor Faktor 0+1=1 1 1*1=1 1+1=2 1 1*2=2 2+1=3 2 2*3=6 3+1=4 6 6*4=24 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
11
Çıktı, Yazdırma
Bağlantı
İşlem akış yönü
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 12
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.
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.
13
Ö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. 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. 14
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. 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ı
15
# : 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. ^^^^ : 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 16
Koşul sağlandığı sürece döngü devam eder.
BASIC’teki Karar Komutları 1. IF-THEN 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 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: 17
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
Bazı Matematik Fonksiyonların BASIC Karşılıkları Matematiksel Fonksiyon |x| x
sgn(x) x > 0 ise sgn(x) = 1 x = 0 ise sgn(x) = 0 x < 0 ise sgn(x) = -1 ex Ln(x) Log(x) Sin(x) Cos(x) Tan(x) Cotan(x) Arctan(x) Arcsin(x) Arccos(x) Arccotg(x) Sinh (x) Cosh(x) Tanh(x) Coth(x)
BASIC Karşılığı ABS(x) SQR(x) SGN(x)
EXP(x) LOG(x) LOG(x)/LOG(10) SIN(x) COS(x) TAN(x) 1 / TAN(x) ATN(x) ATN(x / SQR(1 – x * x)) 1.570796 - ATN(x / SQR(1 – x * x)) 1.570796 – ATN(x) (EXP(x) – EXP(-x)) / 2 (EXP(x) + EXP(-x)) / 2 (EXP(x) – EXP(-x)) / (EXP(x) + EXP(-x)) (EXP(x) + EXP(-x)) / (EXP(x) - EXP(-x)) 18
Arcsinh(x) Arccosh(x) Arctanh(x) Arccotanh(x) x sayısını en yakın küçük tam sayıya yuvarlar
LOG(x + SQR(x * x + 1)) LOG(x + SQR(x * x - 1)) LOG((1 + x) / (1 – x)) / 2 LOG((1 + x) / (x – 1)) / 2 INT(x) INT(2.51) = 2 INT(-3.4) = -4 x sayısını en yakın tam sayıya CINT(x) yuvarlar CINT(2.51) = 3 CINT(-3.4) = -3 X sayısının ondalık kısmını atar FIX(x) FIX(2.51) = 2 FIX(-3.4) = -3 0 ile 1 arasında rasgele bir sayı RND(x) üretir
BASIC’teki Bazı Karakter Fonksiyonlar Fonksiyon RIGHT$(A$,n)
İşlevi A$ değişkeninde sağdan başlayarak n karakter alır. LEFT$(A$,n) A$ değişkeninde soldan başlayarak n karakter alır. MID$(A$,m,n) A$ değişkeninde m. karakterden başlayarak m. dahil n karakter alır. LEN(A$) A$ karakter sayısını bulur. SPACE$(n) n adet boşluk koyar STRING$(n,m) 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) PRINT deyimi ile birlikte kullanılır. Kendinden sonra gelen bilginin ilk
Örnekler RIGHT$(“pamukkale”,4) =”kale” LEFT$(“pamukkale”,5) =”pamuk” MID$(“pamukkale”,5,2) = ”kk” LEN(“pamukkale”) = 9 STRING$(5,80) = ”PPPPP” STRING$(5,”inşaat”) = ”iiiii”
UCASE$(“Pamukkale”) =”PAMUKKALE” PRINT TAB(5);”İnşaat” = İnşaat
19
SPC(x)
DATE$ TIME$ ASC(A$) CHR$(x)
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. Sistem tarihini verir Sistem saatini verir A$ karakterinin ASCII kodunu verir ASCII kodu x olan karakteri verir
PRINT “A”; SPC(5);”B” =A B PRINT DATE$= 03-21-2003 PRINT TIME$= 16:14:18 ASC(“P”) = 80 CHR$(80) = “P”
ASCII: American Standard Code for Information Interchange (Bilgi Değişimi için Standart Amerikan Kodu) 0'dan 255'e kadar toplam 256 (28) karakter.
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. 21
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. 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 ai,j yk xi-k+1 yk=xk-1+3xk+xk+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.
22
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 ………………. 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.
23
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, ….. 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
24
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 OUTPUT APPEND ………….. …………. CLOSE # dosya no
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: 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.
25
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
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.)
BASIC' DE ÇİZİM KOMUTLARI SCREEN Komutu: 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
26
Mod 0 1 2 7 8 9 10 11 12 13
Tanım Yazı modu, grafik çizilemez 320 x 200 piksel, 4 renk, 25 satır 40 kolon 640 x 200 piksel, 2 renk (siyah, beyaz), 25 satır 80 kolon 320 x 200 piksel, 16 renk, 25 satır 40 kolon 640 x 200 piksel, 16 renk, 25 satır 80 kolon 640 x 350 piksel, 16 renk 640 x 350 piksel, 9 gri ton 640 x 480 piksel, 2 renk 640 x 480 piksel, 16 renk 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. (x)
(0,0)
(y)
(320,0)
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 0 1 2 3 4 5 6 7
Renk Siyah Lacivert Yeşil Açık mavi Kırmızı Pembe Kahverengi Açık gri
Renk No 8 9 10 11 12 13 14 15
Renk Koyu gri Mavi Parlak yeşil Parlak mavi Parlak kırmızı Parlak pembe Sarı Beyaz
27
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)
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) 28
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. 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