programlamaya giriş

Transkript

programlamaya giriş
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
BÖLÜM 3
Yağlıoğlu
PROGRAMLAMAYA GİRİŞ
Bu bölümde öğrencinin kolay anlaması açısından şöyle bir metot kullanılacaktır.
Önce bir basic deyiminin açıklaması ve makinede kullanılış şekli verilecek, ardından
ise o terimi içeren örnek ya da örnekler verilecektir. Daha sonra her yeni verilen
deyim için eski deyimleri de içine alan yeni örnekler verilecektir. Anlaşılmada kolaylık
olması için verilen programın ekran çıktısı da verilecektir.
Verilen örnekleri denemeniz için öncelikle Qbasic editörünü kullanmanız
gerekecektir. Bu editör kullanımı çok basit bir text editördür. Bunun için işletim
sisteminizdeki Qbasic.exe programınızı çalıştırmanız yeterlidir. (Ders notunda
örnekler anlatılırken QB45 programı kullanılacaktır.)
AÇIKLAMA: Programlama mantığının kolay anlaşılması açısından örnekler BASIC
dilinin ilk versiyonlarından olan GWBASIC mantığına göre anlatılacaktır. Ancak ders
notunda yer alan örnekleri QBASIC’de çalıştırırken aynen yazıldığında zaten
çalışacaktır. Ancak program içerisinde GOTO vb deyimlerin önünde adres olarak
satır numarası kullanılmamışsa , o programı satır numarası kullanmadan
yazdığınızda yine çalışacaktır. Ek örneklerde satır numarası kullanılmamıştır.
BASIC DEYİMLERİ
PRINT:
Kullanılış formu:
PRINT [<Değişken>][(;/,)<Değişken>],...
Ekran üzerinde yazı veya rakam vb. yazdırmak için kullanılır. Kullanılış formundaki
parantez çeşitlerinin anlamları şöyledir: [ ] parantez mutlaka yazılması gerekmeyen
ifadeler içindir. ( ) parantez ise kendileri kullanılması gereken parantezlerdir. < > ise
genelde bir parantez içerisindeki birkaç ifadeyi birbirinden ayırmak için kullanılır.
Şimdi print yönergesinin bu değişik durumlarını örneklerle inceleyelim:
a) Print deyimi önündeki " " isareti içindeki ifadeyi aynen yazar.
ÖRNEK:
PRINT "Bilgisayar dersi çok kolay"
Bu ifade program editörüne yazılıp RUN/START işlemi yapıldığında ekrandaki
görüntü şöyledir:
20
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
Yağlıoğlu
Bilgisayar dersi çok kolay
Press any key to continue
Bu kullanış şekli için diğer örnek ise; önünde verilen aritmetiksel işlemleri yapar.
ÖRNEK:
PRINT 2*1500/(2+SQR(16))
Bu ifade program editörüne yazılıp RUN/START işlemi yapıldığında ekrandaki
görüntü şöyledir:
500
Press any key to continue
b) PRINT yalnız başına yazıldığında ekranda bir satır boşluk bırakır veya eğer
cursor herhangi bir satırın ortasında ise o satırı geçip alt satırda satırbaşı
yaparak bekler.
c) Birden fazla değişken arka arkaya yazdırılırken değişken araları (,) veya (;) ile
bölünebilir. Eger (;) konularak bölünürse:
i ) Yazısal dizi değişkenleri aralarında boşluk olmaksızın birbiri ardına yazılır.
ii ) Sayısal değişkenlerin arkasına bir boşluk eklenerek yazılır.
iii) Pozitif sayıların önüne bir boşluk eklenir.
21
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
Yağlıoğlu
ÖRNEK:
A=25
B=60
C=A-B
AD$="ELEKTRİK"
BD$="ELEKTRONİK" :C$=AD$+BD$
PRINT A;C;B
PRINT AD$;BD$
PRINT AD$,BD$
PRINT C$
25 -35 60
ELEKTRİKELEKTRONİK
ELEKTRİK ELEKTRONİK
ELEKTRİKELEKTRONİK
ELEKTRİKELEKTRONİK
Pres any key to continue
Eğer arayı bölmek için (,) kullanılırsa; (,)'den sonra gelen değişken bir sonraki
print bölgesinin başından itibaren yazılmaya başlanır.Print bölgesi nedir denilir ise;
bilgisayar ekranı (her bilgisayara göre değişmekle birlikte genelde 8 yada 10
karakterlik) sütunlar seklinde yazma bölgelerine ayrılmıştır. İşte bu bölgelere Print
Bölgesi (veya Tab Bölgesi) denir. Bu bölgeler ekrana bakıldığında görülmez.
ÖRNEK:
Bu örnekte anlaşılır olması için ekranın üzerinde tab bölgeleri işaretlenmiştir.
22
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
Yağlıoğlu
10 A$="DOKUZ EYLÜL"
20 B$="ÜNİVERSİTESİ"
30 PRINT A$,B$
┌───────────────────────────────────────────────────
1.bölge 2.bölge 3.bölge 4.bölge 5.bölge 6.bölge 7.bölge 8.
----------------------------------------------------------DOKUZ EYLÜL ÜNİVERSİTESİ
Pres any key to continue
e) Verileri bulunduğumuz satırın belli bir kolonundan itibaren yazdırmak istersek
bu durumda print yönergesi TAB yönergesi ile birlikte kullanılır.
f) Yazısal dizilerin arasındaki (+) toplama işlemi iki yazısal diziyi arka arkaya
ekler.
TAB:
Kullanılış Formu:
TAB(sayı yada sayısal değişken):
Bu yönerge print ile birlikte kullanılır ve değişken değerinin cursorun o andaki
bulunduğu satırın kaçıncı sütunundan itibaren yazılacağını belirler.Bu sayının x
olduğunu farz edelim; (x-1) adet sütun geçtikten sonra x'inci sütundan itibaren
yazmaya başlar. Burada dikkat edilmesi gereken husus bu rakam 255'den büyük
olamaz. Aslında bilgisayar 255,e kadar size hata vermez; ancak normalde ekran
boyunun 40 veya 80 karakterlik olduğunu düşünürsek zaten bu rakamlardan büyük
bir sayı verdiğimizde ekrandaki görünüş bizim istediğimiz satırda değil daha alt
satırda olacaktır.
Aşağıdaki örnekte tab bölgelerinin 10'ar karakter olduğu farz edilmiş ve anlaşılır
olması için bu bölgeler rakam ile ayrılmıştır.
23
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
Yağlıoğlu
ÖRNEK:
10 A$="Mersin" : B$="Kültür" : C$="ve Sanat"
20 D$="Şenliğine Hoşgeldiniz."
30 PRINT A$,B$;TAB(40)C$;D$
12345678901234567890123456789012345678901234567890123456789
-----------------------------------------------------------Mersin
Kültür ve Sanat
Şenliğine Hoşgeldiniz.
Ok
SONUÇLARI YAZICIYA YAZDIRMAK
Bilgisayarda programlar icra edilirken her defasında ekranla çalışmak yeterli
değildir. Çoğu zaman sonuçların kağıda yazılması istenir. Bu işlem aynen print
komutu gibi çalışır.
LPRINT:
Kullanılış formu ve önündeki ifadelerin durumu PRINT ile aynıdır. Tek farkı ise
PRINT ekrana yazmayı sağlarken LPRINT yazıcıya yazdırmayı sağlar. LPRINT
önünde yazısal ve sayısal değişkenler, grafik karakterler, ASCII formunda verilen
işaretler olabilir. Bu komutu kullanırken dikkat edilecek tek husus yazıcının her satıra
kaç karakter yazdığıdır.
INPUT :
Kullanılış Formu:
INPUT ["uyari"]<degisken1>[<,><degisken2><,><degisken3>...]
Bu yönerge bilgisayara programla çalışan kişinin (kullanıcının) bilgisayara
klavyeden (veya bir dosyadan) bilgi girmesini sağlar. Eğer uyarı yazılmış ise önce o
uyarı mesajını ekrana basar ve yanına (?) basar. Bundan sonra kullanıcının istenilen
veriyi girmesini bekler. Eğer birden fazla veri girilmesi gerekiyorsa aralarını (,) ile
bölmek gerekir. Eğer Input yönergesinin beklediğinden farklı sayıda değişken girilirse
doğrusunu girmeniz için hata mesajı yazar ve doğrusunun girilmesini bekler. Eğer
uyarı mesajı yazılmamışsa doğrudan soru işareti (?) basar ve değişkenin girilmesini
bekler. Bir diğer dikkat edilmesi gereken husus; eğer bilgisayar sayısal bir değişken
bekliyor ise sayısal;değilse yazısal bir değişken girilmelidir. Aksi taktirde tip
uyuşmazlığı hatası (type mistmach error) verir ve doğru değişkenin girilmesini bekler.
24
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
Yağlıoğlu
ÖRNEK:
10 INPUT "ADINIZ";AD$
20 INPUT TEL
30 PRINT "ismi=";AD$
40 PRINT "telefon numarası=";TEL
--------------RUN
--------------ADINIZ?MUHTEREM MUHTEMEL
?101011
ismi=MUHTEREM MUHTEMEL
telefon numarası=101011
Ok
ÖRNEK:
Daha önceden akış diyagramı verilen 1 numaralı satış fişi örneğinin programını
yapınız. Ek bilgiler: Bilgisayar orlon satan bir iş yerinin satış fişini yazsın.
10 INPUT"Kaç liralık alışveriş yaptınız";fiyat
20 kdv=fiyat*100/10
30 tplam=fiyat+kdv
40 PRINT"Dostlar Manifatura"
50 PRINT"Pozcu Vd. 1108 Mersin":PRINT
60 PRINT"ORLON=";TAB(15)fiyat
70 PRINT"KDV=";TAB(16)kdv
80 PRINT"TOPLAM=";TAB(15)tplam
90 PRINT:PRINT"TEŞEKKÜR EDERİZ"
RUN
Kaç liralık alışveriş yaptınız?1000
Dostlar Manifatura
Pozcu Vd. 1108 Mersin
Orlon
1000
KDV=
100
TOPLAM=
1100
TEŞEKKÜR EDERİZ
Ok.
25
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
Yağlıoğlu
ÖRNEK:
Klavyeden girilen 10 sayının ortalamasını bulan ve yazan bir programın akış
diyagramını çiziniz, programını yapınız?
BAŞLA
Gir
S1,S2,...,S10
TPLAM=S1+S2+...+S10
ORT=TPLAM/10
10 INPUT"5 SAYI";s1,s2,s3,s4,s5
20 INPUT"5 SAYI";s6,s7,s8,s9,s10
30 T=s1+s2+s3+s4+s5+s6+s7+s8+s9+s10
40 Ort=T/10
50 PRINT"TOPLAM=",T
60 PRINT"ORTALAMA=",Ort
RUN
5 SAYI?10,20,30,40,50
5 SAYI?60,70,80,90,100
TOPLAM= 550
ORTALAMA= 55
Ok
TPLAM
ORT
DUR
ÖRNEK:
Akış diyagramı 4 nolu örnekte verilen elektrik devresini çözen ve istenilenleri
ekranda birimleri ile birlikte yazan bir program yapınız?
ÇÖZÜM:
10 INPUT r1,r2,r3,r4,r5,E
20 Reş1=r3*r5/(r3+r5)
30 Reş2=Reş1+r2+r4
40 Reş=Reş2*r1/(Reş2+r1)
50 I=E/Reş
60 P=I*E
70 PRINT "Gerilim=";TAB(15)E;"Volt"
80 PRINT "Akım=";TAB(15)I;"Amper"
90 PRINT "Güç=";TAB(15)P;"Watt"
100 PRINT "Toplam Direnç=";TAB(15)Reş;"OHM"
26
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
Yağlıoğlu
Eğer burada direnç değerleri biliniyor ise 10 numaralı satırdaki input terimi yerine
r1=10000:r2=1500 ... gibi doğrudan direnç değerleri verilebilir.
GO TO :
Kullanılış Formu:
GO TO <Satır numarası>
Bu yönergenin işlevi programın işleyişi esnasında goto satırına geldiği anda
bulunduğu yerden GO TO yönergesinin önünde yazılı numaralı satıra giderek
programın çalışmaya oradan devam etmesini sağlamaktır.
Programın içerisinde kullanılabileceği gibi bilgisayara direkt olarak yazılarak
kullanılabilir. Böylece daha önce yazılmış bir programı çalışmaya en başından değil
de istediğimiz bir yerinden başlatmaya yarar.
Program içinde kullanıldığında döngü yapmada büyük numaralı bir satırdan küçük
numaralı satıra tekrar tekrar gönderilerek kullanılabilir.
Günümüz modern programcılığında bu deyim neredeyse kalkmıştır. Bu
deyimin yerini fonksiyon yazılımları ve döngü komutları almıştır. Ancak bilgisayar
programcılığı haricindeki bölümlerde, programlama sanatının ilk öğretilmesi
aşamasında yinede goto deyimini kullanarak mantığı daha basit hale getirip
öğrenciye vermek yararlı olabilir. Bu sebepledir ki ders notu yazılırken qbasic editörü
kullanılmasına rağmen satır numarası kullanılarak yazıma devam edilmiştir. Bu ders
notundaki programların tamamında komutlarda parametre olarak kullanılmayan satır
numaraları yazılmadığında da programlar çalışır.
ÖRNEK:
GOTO 100
veya
20 GOTO 500
gibi
ÖRNEK:
Daha önce yazmış olduğumuz satış fişi programında eğer programın en sonuna;
100 GO TO 10
şeklinde bir satır eklersek program durmayacak ve her fişin yazılışından sonra tekrar
başa dönerek yeni fişi yazmak için bekleyecektir.
IF - THEN - ELSE:
Kullanılış Formu:
IF <Mantıksal ifade> THEN <Satır no veya yönerge>[ELSE <Satır
numarası veya yönerge>]
27
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
Yağlıoğlu
Kelime anlamı olarak yaptığı işi şöyle açıklamak mümkündür:
EĞER <..> ifadesi doğru ise O ZAMAN <..> işlemini yap [DEĞİLSE <..> işlemini yap.]
Yaptığı işlemi tam anlayabilmek için öncelikle IF-THEN kısmını inceleyelim.Bu
deyim bilgisayarın zekasını yani karşılaştırma yeteneğini sağlar.IF deyiminin
ardından gelen deyim; değişkenleri, yazısal dizileri, sayıları ve mantıksal operatörleri
içerebilir. Eğer burada verilen ifade doğru ise THEN deyiminden sonra gelen ifade
yerine getirilir.
Eğer IF deyiminden sonra gelen ifade doğru değilse ve ELSE terimi kullanılmamışsa
bu yönergenin olduğu satır işleme girmeden atlanır ve bir sonraki satırdaki işlem icra
edilir. THEN deyiminin ardından herhangi bir basic terimi gelebileceği gibi bir satır
numarası da gelebilir. Satır numarası geldiğinde bunun anlamı; eğer IF deyiminden
sonra gelen ifade doğru ise THEN deyiminden sonra verilen satır numarasına git ve
işleme oradan devam et demektir.
Eğer THEN deyiminden sonra birkaç tane işlem yapılacaksa THEN deyiminin
ardından alt satıra geçilerek istenilen işlemler yapılır ve bu durunda işlemlerin
bitiminden sonra ENDIF deyimi kullanılır.
Bu deyimlerden sadece IF-THEN kısmı kullanılabileceği gibi bunların
ardından ELSE kısmı da eklenebilir. ELSE ifadesini, yine THEN ifadesinde olduğu
gibi bir satır numarası yada bir veya birkaç basic ifadesi takip edebilir. Hepsi beraber
kullanıldığında ise bilgisayara verdikleri emir
şu şekilde olacaktır: Eğer IF deyiminden sonra gelen ifade doğru ise THEN
deyiminden sonra gelen ifadeyi, yada emri yerine getir; eğer IF deyiminden sonra
gelen ifade doğru değil ise ELSE deyiminden sonra gelen ifadeyi yerine getir.
ÖRNEK:
10 IF a=5 THEN PRINT "doğru" ELSE 50
Bu örneğin anlamı Eğer a=5 ise ekrana doğru yaz, eğer a=5 değilse o zaman 50
numaralı satıra git ve oradaki işlemi yerine getir.
ÖRNEK:
IF F>50 THEN
A=(B+C9)*40/100
B=F*60/100
C=A+B
ENDIF
Bu örnekte de F sayısı 50 den büyük ise A, B, C hesaplamaları yapılır ve işlem
ENDIF deyiminin ardından devam eder. Eğer F sayısı 50 den büyük değil ise A, B, C
hesaplamaları yapılmadan işlem ENDIF deyiminin ardından devam eder
28
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
Yağlıoğlu
ÖRNEK:
Akış diyagramını verdiğimiz iki numaralı satış fişi örneğinin programını yazalım.
10 INPUT Cinsi$,fiyat
20 IF Cinsi$="Hırdavat" THEN KDV=fiyat*13/113 : GOTO 50
30 IF Cinsi$="Gıda" THEN KDV=fiyat*3/103 : GO TO 50
40 KDV=fiyat*10/110
50 PRINT "İLKBAHAR MARKET"
60 PRINT "POZCU Vd.1212. Mersin"
70 PRINT
80 PRINT Cinsi$; TAB(16) fiyat
90 PRINT "KDV=";TAB(17) KDV
100 PRINT "TOPLAM=" TAB(16) fiyat
110 PRINT
120 PRINT "TEŞEKKÜR EDERİZ"
130 GOTO 10
Program çalıştırıldığında:
?Kitap,1100
İLKBAHAR MARKET
POZCU Vd.1212. Mersin
Kitap
KDV=
TOPLAM=
1100
110
1100
TEŞEKKÜR EDERİZ
?
29
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
Yağlıoğlu
ÖRNEK:
Akış diyagramı konusunda verilen 3 numaralı örneğin programını yapalım.
10 INPUT "Alınan malın cinsi,fiyatı";Cinsi$,fiyat
20 IF Cinsi$="Hırdavat" THEN KDV=fiyat*13/113 :GOTO 50
30 IF Cinsi$="Gıda" THEN KDV=fiyat*3/103 : GOTO 50
40 KDV=fiyat*10/110
50 tplam=tplam+fiyat
60 vergi=vergi+KDV
70 INPUT "Baska mal aldınız mı(E/H)";Seç$
80 IF Seç$="H" THEN 100
90 IF Seç$="E" THEN 10 ELSE 70
100 PRINT"TÜCCAR TİCARET"
110 PRINT"MALTEPE Vd.1243 ANKARA"
120 PRINT"TEŞEKKÜR EDERİZ"
130 PRINT
140 PRINT"Fiyatı="; TAB(15) tplam
150 PRINT"KDV=" ;TAB(16) vergi
160 PRINT"TOPLAM=";TAB(15) tplam
170 tplam=0:vergi=0:GO TO 10
Aynı örneğin 100. satıra kadarki kısmı şöyle de yazılabilir.
10 INPUT"Alinan malın cinsi,fiyatı";Cinsi$,fiyat
20 IF Cinsi$<> "Hırdavat" THEN 40 ELSE KDV=fiyat*13/113
30 GOTO 60
40 IF Cinsi$<>"Gıda" THEN 50 ELSE KDV=fiyat*3/103:GOTO 60
50 KDV=fiyat*10/110
60 tplam=tplam+fiyat: vergi=vergi+KDV
70 INPUT "Baska mal aldınız mı (E/H)";Seç$
80 IF Seç$="E" THEN 10
90 IF Seç$<>"H" THEN 70
30
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
Yağlıoğlu
ÖRNEK:
Bir öğrencinin geçme kalma notunu hesaplayan bir program yapınız. Not
hesaplama sistemi şöyledir:Finale girmek için vize ortalaması 40'dan büyük
olmalı.Vize ortalamasının %40'ı ile final notunun %60'ının toplamı 60 dan büyük
olursa ve final notu 50'den büyük olursa ders başarılmış olmaktadır. Değilse aynı
sistem bütünleme sınavı için uygulanacaktır.
10 INPUT "vize 1,vize2";v1,v2
20 vo=(v1+v2)/2
30 IF vo<40 THEN PRINT"VİZESİZ" :GOTO 10
40 INPUT "final notu";f
50 IF f<50 THEN PRINT"BÜTÜNLEME":GOTO 80
60 v40=vo*.4 : f60=f*.60 :gn=v40+f60
70 IF gn>60 THEN 110
80 INPUT "Bütünleme notu";b
90 IF b<50 THEN 120
100 b60=b*.60 :gn=v40+b60
110 IF gn>60 THEN PRINT"BAŞARILI":PRINT "NOTU=";gn:GOTO10
120 PRINT"BAŞARISIZ" :GO TO 10
ÖRNEK A)
1'den 500'e kadar olan sayıların toplamını ve ortalamasını bulan bir program
yazınız?
10
20
30
40
50
60
70
80
n=0
n=n+1
tplam=tplam+n
IF n< 500 THEN 20
rt=tplam/500
PRINT "1'den 500'e kadar olan sayıların"
PRINT "TOPLAMI=";TAB(15)tplam
PRINT "ORTALAMASI=";TAB(15)rt
ÖRNEK B)
Yukarıdaki örnekten faydalanarak alt ve üst sınırı kullanıcı tarafından belirlenen ve
birer birer artan sayıların toplamını ve ortalamasını bulan bir program yazınız?
31
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
10
20
30
40
50
60
70
80
Yağlıoğlu
INPUT "Alt ve üst sınırı giriniz";a,ü
n=a-1
n=n+1 : s=s+1 : t=t+n
IF n<ü THEN 30
rt=t/n
PRINT a;"'dan ";ü;"'ye kadar olan sayıların;"
PRINT "Toplamı=
";t
PRINT "Ortalaması=";rt
ÖRNEK C) Kaç tane olduğu bilinmeyen pozitif sayıların toplamı
ve ortalamasını bulan programı yazınız?
Not=En son sayıdan sonra negatif bir sayı giriniz.
10 s=0
20 s=s+1
30 INPUT sayı
40 IF sayi<0 THEN 60
50 tplam=tplam+sayı :GOTO 20
60 s=s-1
70 rt=tplam/s
80 PRINT"Verilen sayılar";s;"adettir ve ortalamaları";rt";
90 PRINT"dir."
ÖRNEK D)
Yukardaki örneklerden faydalanarak
ortalamasını bulan bir program yazınız?
10
20
30
40
50
60
70
bir
öğrencinin
derslerinin
s=1
INPUT "notunuz";puan:tplam=tplam+puan
INPUT "Başka dersiniz var mı(E/H)";BD$
IF BD$="E" THEN s=s+1: GOTO 20
IF BD$ <> "H" THEN 30
rt=tplam/s
PRINT s;"adet dersinizin ortalaması=";rt;"dır."
32
aritmetik
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
Yağlıoğlu
FOR - NEXT DÖNGÜSÜ :
Kullanılış Formu:
FOR<değişken>=<başlangıç> TO <bitiş> [STEP <artma sayısı>]
NEXT <değişken>
Bu yönerge değişkenleri sayaç olarak kullanmamızı sağlayan bir basic
yönergesidir. Bu yönerge verilen başlangıç değerinden bitiş değerine kadar belirtilen
adım aralıkları ile sayar. Burada değişkenin bir sonraki adıma artmasını (veya
eksilmesini) belirten ifade NEXT ifadesidir. Bunun nerede kullanılabileceğini
anlayabilmek için örnek A ve B'ye bakmak yeterli olacaktır. Bu örneklerdeki n
artışlarını FOR-NEXT döngüsü ile yapmak daha kolay olacaktır.
STEP<artma sayısı> ifadesi kullanılmadığı zaman artma sayısı +1 olarak işlem
görecektir. Burada başlangıç ve bitiş değerleri ve artma sayıları olarak ondalıklı sayı
veya tamsayı kullanılabilir.
Bu ifadeyi kullanırken bazı hususlara dikkat etmek gerekir. Bunlardan birincisi
eğer başlangıç değeri bitiş değerinden küçük ise artma sayısı pozitif, bunun tersi
durumda ise artma sayısı negatif olmalıdır. Aksi taktirde sonsuz döngü oluşacaktır.
Bir diğer konu; eğer iç içe birden fazla döngü açıldı ise döngülerin kapanış
ifadeleri olan next'ler de en içerdekinden dıştakilere doğru döngüler kapatılmalıdır. Bir
döngünün kapatılması için o döngü başlatılırken kullanılan FOR deyiminin önündeki
değişken ile NEXT deyiminin önündeki değişken aynı olmalıdır.
Bir diğer husus döngünün başlangıç ve bitiş sayıları aynı olsa bile her döngü en
az bir defa işleme girer. Yani FOR i=1 TO 1 döngüsü 1 kez işleme girecektir.
Bir programda bir adet FOR-NEXT döngüsü var ise NEXT'in önüne değişken
yazmaya gerek yoktur. Ancak birden fazla ve iç içe açılmış döngülerde NEXT'in
önüne mutlaka hangi döngüye ait olduğunu bildiren değişken yazılmalıdır.
ÖRNEK:
A örneğinde verilen; 1'den 500'e kadar olan sayıların toplam ve ortalamasını bulan
programı FOR-NEXT döngüsü ile yapalım:
33
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
10
20
30
40
50
60
70
Yağlıoğlu
FOR i=1 TO 500
tplam=tplam+i
NEXT i
rt=tplam/500
PRINT "1'den 500'e kadar olan sayıların"
PRINT "Ortalaması =";rt
PRINT "Toplamı
=";tplam
RUN
1'den 500'e kadar olan sayıların
Ortalaması =250.5
Toplamı =125250
ÖRNEK:
50'den 1'e kadar olan sayıların toplamını bulunuz? Bu örneği iki şekilde yapmak
mümkündür. Biz bu iki yolu da göstererek öğrencinin döngü kavramını anlamasına
yardımcı olmaya çalışacağız.
10 REM DÖNGÜ
İKİNCİMETODU
METOD
20 FOR
n=50n=50 TO 1 STEP -1
30 t=t+n
40 NEXT
n=n-1n
50 PRINT"50'den
1'e
kadar
IF n=0 THEN 50
ELSE
30 olan sayıların toplamı=";t
60 END
60
PRINT "50'den 1'e kadar sayıların toplamı=";t
70 END
REM :
Kullanılış Formu :
REM <Açıklama ifadesi>
Program açısından hiçbir önemi yoktur. Bu yönerge kullanıcıdan ziyade
programcıyı ilgilendirmektedir. REM deyimi önüne programcı hatırlamak istediği
açıklama notlarını yazar. Program çalıştığında bu notlar ekranda yazılmaz. Sadece
eğer programda bir hata çıkarsa programcı yazdığı hatırlatma notlarına bakarak
hatayı daha kolay bulacaktır.
ÖRNEK:
0'dan 1000'e kadar olan çift sayıların toplamını bulan bir program yazınız?
34
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
Yağlıoğlu
10 FOR i= 0 TO 1000 STEP 2
20 tplam=tplam+i
30 x=x+1
40 next i
50 rt=tplam/x
60 PRINT "0'dan 1000'e kadar olan çift sayıların"
70 PRINT "Toplamı
=";tplam
80 PRINT "Ortalaması
=";rt
90 END
END:
Kullanılış Formu:
END
Bu deyim genellikle programların sonunda yer alır ve işlevi programın çalışmasını
durdurmaktır. Her seferinde sonda yer alır diye bir şart yoktur. Bazı programlarda
programın her hangi bir yerinde durdurulması istenilebilir. İşte bu durumlarda END
deyimi kullanılır. Eğer programın en sonunda bu deyim kullanılmazsa program yine
duracaktır ancak bu defasında ekrana en son hangi satırı işlediğini gösteren bir not
yazarak duracaktır. END ile arada bir yerde durdurulmuş bir program CONT komutu
ile çalışmaya kaldığı yerden devam ettirilebilir.
STOP:
Kullanılış Formu:
STOP
Yaptığı işlem bakımından END komutu ile aynıdır.
Programın geçici olarak durdurulmasında kullanılır. END ile arasındaki fark ise
STOP komutu ile program durdurulduğunda en son işlem gören satır numarası
ekrana yazılır. CONT komutu ile program kaldığı yerden çalışmaya devam ettirilebilir
veya GO TO <satır numarası> komutu ile program bizim istediğimiz yerden
çalışmaya devam ettirilebilir.
35
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
Yağlıoğlu
ÖRNEK:
Alt sınırı ve üst sınırı dışarıdan verilen tamsayılar dizisinin çift sayılarını toplayan
ve ortalamasını bulan bir program yazınız?
10
20
30
40
50
60
70
80
90
INPUT "ALT SINIRI ve ÜST SINIRI GİRİNİZ";a,ü
FOR i=a TO ü
c=INT (i/2) : b=i/2
IF b=c THEN t=t+i :x=x+1
NEXT i
rt = t/x
PRINT a;"'den";ü;"'ye kadar olan çift sayıların"
PRINT "Toplamı
=";t
PRINT "Ortalaması =";rt
ÖRNEK:
Verilen iki sayıdan büyüğünü ve küçüğünü ayırt eden ve yazan bir program
yazınız?
10
20
30
40
50
60
INPUT "iki sayı giriniz";s1,s2
IF s1>s2 THEN b=s1: k=s2
IF s1<s2 THEN k=s1: b=s2
PRINT "Verilen sayıların büyüğü
PRINT "Verilen sayıların küçügü
STOP
=";b
=";k
ÖRNEK:
Taban yarıçapı ve yüksekliği verilen koninin hacmini bulan programı yazınız?
V=pi * r^2 * h / 3
10
20
30
40
50
60
70
INPUT "Koninin taban yarıçapı ";r
INPUT "Koninin yüksekliği ";h
pi=22/7
hacim=pi*r^2*h/3
PRINT "Taban yarıçapı";r;"cm
PRINT "ve yüksekliği";h;"cm. olan koninin"
PRINT "hacmi";hacim;"cm3'tür."
36
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
Yağlıoğlu
ÖRNEK:
Kenar ölçüleri verilen üçgenin çevresini ve alanını hesaplayan bir program
yazınız?
10
20
30
40
INPUT "Üçgenin kenar ölçüleri=";a,b,c
Çevre=a+b+c : u=(a+b+c)/2
Alan= SQR(u*(u-a)*(u-b)*(u-c))
PRINT "ALAN=";Alan,"ÇEVRE=";Çevre
LOCATE:
Kullanılış Formu:
LOCATE (y,x)
Bu deyim yazılacak olan yazının ekran üzerinde nereye yazılacağını belirtir.
Burada y sayısı 25'den büyük olamaz ve verinin hangi satıra yazılacağını belirtir. x
sayısı ise verinin yazılacağı sütunu belirler. Bu rakam ekranın yazma kabiliyetine
göre 40 yada 80'den büyük olamaz.
SPC:
Kullanılış Formu:
SPC(x)
Bu deyim PRINT ile yazı yazılırken yazılan veriler arasında boşluk bırakmaya
yarar.
ÖRNEK:
┌───────────────────────────────────────────────────────────┐
│12345678901234567890123456789012345678901234567890123456789│
│-----------------------------------------------------------│
│10 a$="TÜRKİYE" : b$="CUMHURİYETİ"
│
│20 LOCATE (8,30):PRINT a$;SPC(5);b$
│
│RUN
│
│
│
│
│
│
TÜRKİYE
CUMHURİYETİ
│
│
│
└───────────────────────────────────────────────────────────┘
37
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
Yağlıoğlu
CHR$:
Kullanılış Formu:
CHR$(sayısal değişken)
Print ile birlikte kullanılır. Yazdırmalarda bazen öyle sorunlar çıkar ki bunları
yazmakta zorlanırız. Mesela " " işareti yazdırmak istediğimizde PRINT deyiminin
önünde şimdiye kadar öğrendiğimiz metotlarla mümkün değildir. İşte bu gibi
durumlarda CHR$ deyimi kullanılarak istediğimiz (eğer bilgisayarımızda o işaret
mevcut ise) işaret veya şekli yazdırmamız mümkün olacaktır.
Kullanılış formundaki sayısal ifade yerinde 255'den küçük bir sayı kullanılmalıdır.
Kullanılan sayı yazmak istediğimiz işaretin makine içerisindeki kodu olmalıdır. Hangi
rakamın sizin bilgisayarınızda hangi işareti simgelediğini bilgisayarların kullanma
kılavuzunda bulmak
mümkündür.
ASC:
Kullanılış Formu:
ASC(ifade)
Bilgisayarlar ekrana yazabildikleri her işaret, harf ya da rakama karşılık içlerinde
bir sayı ile onu simgelerler. İşte bu karşılık sistemine ASC II kod sistemi denir.
CHR$ ile yazdırmak istediğiniz bir işaretin karşılığı olan sayıyı bu deyimle
öğrenmeniz mümkündür. Eğer ifade yerinde tek bir harf yada rakam değil de bir dizi
verilirse ASC deyimi verilen dizinin ilk karakterinin kod karşılığını verecektir.
ÖRNEK:
32 ile 255 arasındaki ASC II kod tablosunu yazan bir program yazınız?
10 FOR i=32 TO 255
20 PRINT i;CHR$(i),
30 NEXT i
NOT: 0,dan 255'e kadar olan ASC II kod tablosu ders notlarına eklenmiştir.
ÖRNEK:
A harfinin ASC II kodunu veren bir satırlık bir basic ifadesi yazınız?
PRINT ASC(A)
38
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
Yağlıoğlu
ÖRNEK:
Bir iş yerinde elemanların vergi iadeleri bilgisayarla kontrol ettirilmektedir. Bu
işlemi önce fatura toplamının kontrolü ve sonra vergi iadesi hesabının kontrolü
şeklinde yapmaktadır.Bu işlemi yapabilecek bir program hazırlayınız. Vergi iade
oranları:0-30000 için %20, 30001-60000 için %15 , 60001-100000 için %10, 100000maaş miktarı için %5 'dir.
10 INPUT"Maaş miktarı=";maaş
20 PRINT"Faturaların üzerinde yazan TOPLAM değerini girin"
30 PRINT "En son faturadan sonra bir 0 rakamı giriniz"
40 FOR i=1 TO 10000
50 INPUT "Fatura toplam değeri=";fm
60 fatt=fatt+fm
70 IF fm=0 THEN i=i-1:GOTO 90
80 NEXT i
90 PRINT "Fatura adedi =";i
100 PRINT "Fatura toplamı =";fatt
110 IF fatt>maaş THEN fatt=maaş
120 IF fatt<30000 THEN vi=fatt*.20:GOTO 160
130 IF fatt<60000 THEN vi=4500+(fatt-30000)*.15:GOTO 160
140 IF fatt<100000 THEN vi=10500+(fatt-60000)*.1: GOTO 160
150 vi=14500+(fatt-100000)*0.05
160 PRINT"Maaş miktarı =";maaş
170 PRINT "Vergi iadesi tutarı =";vi
GET (INKEY$) :
Kullanılış Formu:
GET (Yazısal dizi değişkeni)
<Yazısal dizi değişkeni>=INKEY$
Bu yönerge bazı bilgisayarlarda GET bazı bilgisayarlarda ise INKEY$ olarak
kullanılmaktadır. Yaptığı iş INPUT gibidir; ancak bu komutla klavyeden yalnızca bir
tek harf ya da değişken okunur ve bu deyimle bilgi girildiğinde RETURN tuşuna
basmaya gerek yoktur. Özellikle evet yada hayır şeklinde cevaplanması istenen
yerlerde kullanılır. Aşağıda evet (E) yada hayır (H) cevabını kabul eden programlar
verilmiştir. Bu programlar E yada H harfleri haricinde cevap kabul etmemektedir.
Böylece kullanıcının yanlışlıkla başka bir tuşa basması önlenmiş olur. Bu
programlarda 10 numaralı satır bilgisayarın bir tuşa basılıncaya kadar beklemesini
sağlar. "" işaretleri arasında hiçbir işaret olmamalıdır.
39
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
Yağlıoğlu
ÖRNEK:
Bilgisayara 1 ile 6 arasında iki sayı tutturulmakta ve bir zar gibi çalışması
istenmektedir. Her zar atışından önce eğer zar atılacaksa E, atılmayacaksa H tuşuna
basılması istenmektedir.Bu işi yapan programı GET ve INKEY$ için ayrı ayrı yapınız?
5 REM ÖRNEGİN GET İLE ÇÖZÜMÜ
10 PRINT "Zar atacakmısınız (E/H)"
20 GET a$ : IF a$="" THEN 20
30 IF a$="E" THEN 60
40 IF a$="H" THEN END
50 PRINT"E veya H tuşlarından birini seçiniz":GO TO 20
60 a=INT(RND(0)*6+1) : b=INT(6*RND(0)+1)
70 PRINT a,b
80 GOTO 10
5 REM ÖRNEGIN INKEY$ İLE ÇÖZÜMÜ
10 PRINT "Zar atacaksanız E, atmayacaksanız H tuşuna basın”
20 a$=INKEY$ :IF a$="" THEN 20
30 IF a$="E" THEN 60
40 IF a$="H" THEN STOP
50 PRINT "E ya da H tuşuna basınız" :GO TO 20
60 FOR i=1 TO 2
70 a(i)=INT(RND(0)*6+1)
80 PRINT a(i),
90 NEXT i
100 PRINT : GO TO 10
40

Benzer belgeler

Quick BASIC Kursu

Quick BASIC Kursu ise o terimi içeren örnek ya da örnekler verilecektir. Daha sonra her yeni verilen deyim için eski deyimleri de içine alan yeni örnekler verilecektir. Anlaşılmada kolaylık olması için verilen progr...

Detaylı