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
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...