Professional Documents
Culture Documents
Ksa Ders zeti Bu dersin I. Blmnde Programlama ile ilgili kavramlar problem zme yntemleri Algoritma, ak diyagramlar anlatlp dier blmlerde ise problemlerin zmlerinin bir dil (Pascal) kullanlarak zlmesi iin gereken komutlar anlatlmtr.
Dersin Hedefleri Bu ders sonunda renciler, programlama mant, problemlere zm yaklam, bir dil kullanarak program yazma gibi becerileri kazanacaktr. Ayrca Pascal programlama dilinin komutlarn ve bu dilde programlar gelitirmeyi reneceklerdir.
Dersin lenmesi Bu ders haftada 4 saat olup 3 saat teorik 1 saat uygulamadan olumaktadr. Teorik derslerde konular snfta anlatlp uygulama saatinde ise bilgisayar laboratuarlarnda uygulama yaplacaktr.
Snav ve derse devam Bu ders iin bir vize ve bir final olmak zere toplam iki teorik snav yaplmaktadr. Ortalama hesaplanrken Vizenin %40 finalin %60 alnmaktadr. Derse her renci %70 orannda devam etmek zorundadr. Yani 14 haftalk eitim dneminde her renci en az 10 hafta derslere katlmak zorundadr.
1. BLGSAYAR PROGRAMLAMAYA GR
nsanlar her zaman dnr ve problem zerler. Birok problem, az ya da hi dnlmeden zlebilir. Her gn evden karken ne giyilmelidir? Bunun iin muhtemelen pencereden darya baklr. Hava yamurlu ise mevsim gereklerine gre giyinmenin yani sra darya karken bir de semsiye alnmas gerekir. Hava gneli ve scak ise o takdirde daha ince giyinilerek darya klr. Bylece problemin zm kendiliinden oluturulan bir kararla salanr. Yukardaki basit rnekte yaplan is, nce problemin belirlenmesi ve sonra problemin tanmndan yola karak zm iin deiik alternatiflerin deerlendirilmesidir. Bilgisayar programlamas srasnda izlenebilecek birok yol ve yntem vardr. Bilgisayar programcsnn probleme ilikin zm ortaya karabilmesi iin problem zm ile ilgili bilgileri bilmesi gerekir. Bilgisayar programlamasnda genel olarak belirli kalp ve kurallara uyulur. Bir bilgisayar yazlmnn oluturulmas srasnda aada sralanan ana admlara uyulur. * * * * * Problemin tanm zm ynteminin belirlenmesi Programn kodlanmas Programn alr duruma getirilmesi Belgeleme ve gncelletirme
Problemin tanm: Problemin normal yaz diliyle tanmlanmas ilemlerini kapsamaktadr. Problem zmne ilikin iyi bir program yapabilmek iin, problemin iyi bir ekilde tanmlanmas gerekir. zm Ynteminin Belirlenmesi: Bu admda zmn genel yaklam, temel giri/klar belirlenir ve problem zm adim adm program akis diyagramlaryla gsterilir. Programn kodlanmas: Program ayrntl olarak tanmlanp zm yollar aka belirtildikten sonra program kodlama almalarna balanabilir. Programn bastan sona yapsal bir dzende hazrlanmas ve uygun bir programlama dili seilmesi seim ileminin ilk aamasn oluturur. Programn alr Hale Getirilmesi: Programn kodlanmas srasnda yaplan imla hatalar, kodlama ve mantk hatalarnn giderilmesi ilemlerini kapsar. yi bir bilgisayar programnn doruluundan emin olmak iin defalarca test edilmi olmas gerekmektedir. Belgeleme ve gncelletirme: Oluturulan bir yazlm, sadece o yazlm gelitiren kiilerin kullanabilmesi gibi bir kstlamann nne gemek iin ayrntl referanslar hazrlanmal ve programla ilgili bilgiler verilmelidir. Bir yazlmda, o yazlm kullanan kii veya kurulularn yeni gereksinimleri ve deien koullar nedeniyle deiiklikler yaplmas gerekli olabilir. Bu deiikliklere gncelleme adi verilir. yi bir programda bulunmas gereken zellikler arasnda gncelleebilme n sralarda yer almaktadr.
iletilmek, altrlmak zere tasarmlanm dosyalar yazlm kapsamna girer. Yazlm programlama dilleri ile tasarlanr ve yazlr. Programlama dilleri, bilgisayarnzn donanmn (ekran kart,ses kart,modem...) sizin en rahat biimde kullanabileceiniz dzeye getirmeye alr. Yani bilgisayarn o souk 1010110 gibi rakamlarn sizin zevkle kullandnz programlara, iletim sistemlerine, oyunlara evirir. rnein kullanlmakta olan Windows iletim sistemi onbinlerce sayfadan, milyonlarca bilgisayar kodunun bir araya gelmesinden oluur. te iin tm zorluu, o kodlarn arasnda dolaan, hata mesajlarn gnlerce o kodlar gzden geirerek arayan, sandalye tepesinde saatlerce ayn ekrana bakarak ilgin grntler sergileyen programclarn zerindedir... Bilgisayar programclar iini zevkle yapan ve iini bir hobi edinmi insanlardan oluur. Aksi halde youn konsantrasyon ve sabr isteyen bu ii yapmak ar zorlar. Programlama dilleri kendi aralarnda snflara ayrlmlardr. nsann en zor renebilecei, anlayabilecei yani 1100101 gibi makina kodlarna yakn diller en alt seviyeli programlama dilleri, insann en kolay anlayp kullanabilecei ve insan diline yakn zellikler gsteren diller ise en yksek seviyeli programlama dilleridir. imdi bu snflandrmaya rnekler verelim; 1 ) ok yksek seviyeli diller: VisualBasic, Acces, Foxpro... 2 ) Yksek seviyeli diller: Pascal,Basic,Fortran... 3 ) Orta seviyeli diller: C,C++,ADA... 4 ) Dk seviyeli diller: Assembly... 5 ) Makina dilleri: Bilgisayarn alma dilleri 1 ve 0'lardan oluur... Bu dillerin kullanld alanlara rnek verirsek; 1 2 3 4 ) ) ) ) Bilim ve Mhendislikte: Pascal,C,C++,Fortran... Veritaban Programclnda: Dbase,Acces,Foxpro,Sql... Yapay Zeka Kullanmnda: Prolog,Lisp... Sistem Programclnda: C,C++ ve sembolik makina dilleri...
Bir bilgisayar program nasl yazlr? Bir yazlm deiik dillerle oluturulabilir fakat izlenen yntemler genelde birbirine benzer. rnein Algoritma... Algoritma, elimizdeki sorunun zmne gidebilmek iin tasarlanan yollar, yntemlerdir. rnein bir arkadanza daha nce gitmedii bir yerdeki bir postaneyi tarif edeceksiniz. Bunun iin anlatmda genelden zele giden bir yol izlersiniz. nce gidecei semti sonra caddeyi sonra postanenin olduu yn tarif eder son olarak da kolay bulmas iin postanenin evresindeki gze batan zelliklerden bahsedersiniz. te bu yaptklarnz bir algoritmadr. Ve amacnz arkadanza postaneyi bu algoritma yardmyla tarif etmektir... Bilgisayar programlama dilleri de programclkta bunun gibi yntemler kullanarak zme gider. Algoritmann uzunluu kullanlan programlama dilinin seviyesi ve problemin karmakl ile doru orantldr. Yaplan algoritma ve tasarmdan sonra yazlm aamasna gelinir ve bu aamada yaplacak programn kullanm mr, programn kullanm dzeyi ve hangi amala kullanlaca gibi sorularn cevaplarna baklarak programlama dili seilir. Dil seimi baz kriterlere gre yaplmaktadr, rnein ksa srmesi ve grsel tasarm iermesi, veritaban iletiimi youn kullanlmas gereken bir program yapmamz gerekiyor olsun. Bu durumda Assembly dili ile yola ktmzda bahsedilen proje birka kiilik deneyimli bir programc grubu ile birka yl alr. C ile iki programc ayn ii drt ayda VisualBasic veya Delphi ile bir programc bahsedilen ii bir iki aya yakn bir srede yapabilir. Baka bir adan rnek verirsek rnein bir ekran kart programlamamz gerekiyor ve bu kartn driver'n ( srcsn ) biz yazacaz. Bu durumda bu ii VB veya Delphi ile yapmamz imkanszdr, kullanmamz gereken diller ncelikle Assembly ve C/C++ olmaldr. Evet, programlama dillerinin kendi alanlar vardr ve her dil kendi alannda kullanld srece baarl ve etkili kullanlm olur. Buraya kadar anlatlan zetlersek: Bir bilgisayar program yazmak iin belli aamalar vardr ve bu aamalar geildiinde kodlamaya balanabilir.
Analiz ile gerekletirilmek istenen proje tasarmlanr ve parametreleri aratrlr. Algoritma ile admlar tayin edilir. Dil seimi ile en uygun programlama dili seilir. Ve kodlamaya balanr.
1.2 Algoritmalar Ksaca algoritma belirli bir grevi yerine getiren sonlu saydaki ilemler dizisidir. Geni anlamda ise algoritma, verilen herhangi bir sorunun zmne ulamak iin uygulanmas gerekli admlarn hi bir yoruma yer vermeksizin ak, dzenli ve sral bir ekilde sz ve yaz ile ifadesidir. Algoritmay oluturan admlar zellikle basit ve ak olarak sralandrlmaldr. M.S. 9.yy da ranl Musaolu Horzumlu Mehmet (Alharezmi adn araplar takmtr) problemlerin zm iin genel kurallar oluturdu. Algoritma Alharezmi'nin Latince okunuu. Her algoritma aadaki kriterleri salamaldr. 1. Girdi: Sfr veya daha fazla deer dardan verilmeli. 2. kt: En azndan bir deer retilmeli. 3. Aklk: Her ilem (komut) ak olmal ve farkl anlamlar iermemeli. 4. Sonluluk: Her trl olaslk iin algoritma sonlu admda bitmeli. 5. Etkinlik: Her komut kiinin kalem ve kat ile yrtebilecei kadar basit olmaldr. Not: Bir program iin 4. zellik geerli deil. iletim sistemleri gibi program sonsuza dek alrlar .
Program datmak.
Program : Belirli bir problemi zmek iin bir bilgisayar dili kullanlarak yazlm deyimler dizisi. Bir problemi bilgisayar ile zmek iin gelitireceimiz programn yazmnda izleyeceimiz admlar: i) Problemin ne olduunu kavra. zm iin gereksinimleri belirle. ii) Problemin girdilerini, ktlarn ve dier kstlama ve gereksinimleri belirle ( bilgilerin giri ve k biimlerinin nasl olacana kadar). iii) Problemin zmn veren algoritmay yaz. iv) Algoritmay bir programla dili ile yaz. v) Programn doru alp almadn test et. Bu testi deiik veriler (girdiler) iin tekrarla. Algoritmik zm yntemlerine ilk rnei gnlk yaantmzdan verelim. rnek 1: rneimiz bir insanin evden kp ise giderken izleyecei yolu ve iyerine giriinde ilk yapacaklarn adm adm tanmlamaktadr. zm 1: Evden darya k Otobs durana yr Durakta gidecein yndeki otobs bekle Otobsn geldiinde otobse bin Biletini bilet kumbarasna at necein yere yaknlatnda arkaya yr neceini belirten ikaz lambasna bas Otobs durunca in yerine doru yr Is yeri giri kapsndan ieriye gir Mesai arkadalarnla selamla Is giysini giy sini yapmaya basla. Yukardaki rnekte grld gibi, evden ise gidite yaplabilecek ilemler adm adm srasyla, ksa ve ak olarak tanmlanmaya allmtr. Yukardaki algoritma kiinin otobs karma olasl dnlmeden oluturulmutur. Kii duraa geldiinde binecei otobs karm ise algoritmamz aadaki ekilde deitirilebilir. zm 2: Evden darya k Otobs durana yr Otobsn saati gemi? Durakta gidecein yndeki bir sonraki otobs bekle Bir sonraki otobs gelene kadar 4. adimi uygula Otobsn geldiinde otobse bin Biletini bilet kumbarasna at necein yere yaknlatnda arkaya yr neceini belirten ikaz lambasna bas Otobs durunca in yerine doru yr Is yeri giri kapsndan ieriye gir Mesai arkadalarnla selamla Is giysini giy sini yapmaya basla. Her iki rnekte grld gibi sorunu zme gtrebilmek iin gerekli olan admlar sral ve ak bir biimde belirlenmitir. Algoritmann herhangi bir admndaki kk bir yanllk doru zme ulamay engelleyebilir. Bu nedenle algoritma hazrlandktan sonra dikkatle incelenmeli ve varsa admlardaki yanllklar dzeltilmelidir. Algoritma ve Programlamaya Giri 6 r. Gr. Mustafa AKSU
Programlamann temeli olan algoritma hazrlanmasnda dikkat ekici bir nokta, ayni sorunu zmek iin hazrlanabilecek olas algoritma ayisinin birden ok olmasdr. Baka deyile, bir sorunun zm iin birbirinden farkl birden fazla sayda algoritma hazrlanabilir. Bu da gsteriyor ki herhangi bir problemin zm iin birbirinden farkl yzlerce bilgisayar program yazlabilir. Bir bilgisayar program iin hazrlanacak olan algoritma da ayni ekilde zm yolunu bilmeyen bir kiiye, zme ulamak iin neler yapmas gerektii anlatlyormu gibi hazrlanmal ve eksik bir nokta brakmakszn gerekli tm admlar ak ve dzenli olarak iermelidir. zm iin kullanlacak bilgilerin nereden alnaca, nerede saklanaca ve zmn program kullancsna nasl ulatrlaca algoritma admlar arasnda belirtilmelidir.
Aada deiik ilemlere ilikin algoritma rnekleri verilmitir. rnek 2: ki sayy toplamak iin gerekli programa ait algoritmann oluturulmas. Algoritma: 1. 2. 3. 4. 5. Birinci sayy gir kinci sayy gir ki saynn toplamn yap Toplamn deerini yaz Bitir.
Bu tam bir algoritmadr. Szcklerin ortaya karaca yanl anlamalarn ortadan kaldrmak amacyla semboller ve matematik dilini gerektiren baz ksaltmalar kullanmak daha uygun olacaktr. Bir algoritma yazlrken su metot izlenmelidir: Programda kullanlacak elemanlar temsil etmek zere uygun isimler Veya deikenler se. Baz isimlere balang deeri olarak zmn gerektirdii uygun deerler ver. Gerekirse programa girilecek verileri dzenle. Cebirsel notasyon ve kararlar kullanarak aritmetik ilemleri gerekletir. ks dzenle. Bitir. Yukarda iki saynn toplanmas iin oluturduumuz algoritmay bu yeni gereksinimlere uyarak yeniden yazalm. Toplam adi iin Z, Birinci say iin X, kinci say iin Y deerleri kullanlrsa;
Grld zere bu ekilde bir algoritma ile zm yolunu izlemek daha kolaydr. Bundan sonra verilen rneklerde bu tip algoritma kullanlacaktr.
rnek 3: ki saynn ortalamasn bulan programa ait algoritmann oluturulmas Algoritma: 1. 2. 3. 4. 5. 6. X deerini gir Y deerini gir Z ? X+Y Ort? Z/2 Ort deerini yaz Bitir.
rnek 4: Be saynn toplamn ve ortalamasn veren programa ait algoritmann oluturulmas Toplam adi iin Ortalama adi iin Girilen saylar iin Arttrma iin Top Ort X Saya kullanlrsa
Algoritma: 1. Top ? 0, Saya ? 0 2. X'i gir 3. Top? Top+X 4. Saya ? Saya +1 5. Eer Saya <5 ise A2'ye git 6. Ort? Top/5 7. Top ve Ort deerlerini yaz 8. Bitir.
rnek 5: Kenar uzunluklar verilen dikdrtgenin alan hesabn yapan programa ait algoritmann hazrlanmas. Kenar uzunluklar negatif olarak girildii durumda veri girii tekrarlanacaktr. Dikdrtgenin ksa kenar : a Dikdrtgenin uzun kenar : b Dikdrtgenin alan: Alan
Algoritma: 1. a deerini gir 2. a<0 ise 1. adimi tekrarla 3. b deerini gir 4. b<0 ise 3. adimi tekrarla 5. Alan ? a*b 6. Alan deerini yaz 7. Bitir.
rnek 6: apraz dviz kuru hesabi yapan programn algoritmasnn oluturulmas. Bu algoritmann oluumunda veriler; 1 Amerikan dolarnn TL karl, hesaplanacak $ miktar, k ise verilen $'in TL karl olacaktr. Dolarn deeri :Doldeg Girilen Dolar miktar :Dolar TL karl :Tlkar
Algoritma: 1. 2. 3. 4. 5. 6. 7. Doldeg'i gir Doldeg<0 ise 1. adimi tekrarla Dolar'i gir Dolar<0 ise 3.adimi tekrarla Tlkar? Doldeg*Dolar Tlkar deerini yaz Bitir
rnek 7: Verilen bir saynn faktriyelini hesaplayan programn algoritmasnn oluturulmas saynn faktriyeli :Fak Faktriyel deikeni :X Faktriyeli hesaplanacak sayi :Y Algoritma: 1. Fak? 1, X? 0 2. Y'i gir 3. Y<0 ise 2. adimi tekrarla 4. X? X+1 5. Fak? Fak*X 6. X<Y ise 4. adma geri dn 7. Fak deerini yaz 8. Bitir. Bu algoritmada 1. admda X 'e 0 ve Fak deikenine 1 deeri atanyor. 2. admda Y deeri giriliyor ve 3. admda Y deerinin 0 dan kk bir deer olup olmad denetlenerek, sonuca gre gerekli komut veriliyor. 4. admda X'in deeri 1 arttrlyor ve 5. admda X iin Fak deeri hesaplanyor. 6. admda X in deerinin faktriyeli hesaplanacak saydan kk olmas durumunda 4. admdan itibaren ilemlerin tekrarlanmas komutu veriliyor, X' in deerinin Yiye eit olmas durumunda ilemler tamamlanarak hesaplanan deerin yazdrlmas ileminden sonra programn almas sona ermektedir.
1.1.2 Ak Diyagramlar
Gelitirilecek olan yazlmn genel yapsnn ematik gsterimine akis diyagram adi verilir. Akis diyagramlar, yazlm oluturacak program paralarn ve bu paralarn birbirleri ile olan ilikilerini belirler. Bir bilgisayar programnn oluturulmasnda akis diyagramlarnn hazrlanmas, algoritma oluturma aamasndan sonra gelmektedir. Bilgisayar programnn oluturulmas srasnda algoritma aamas atlanarak, dorudan akis diyagramlarnn hazrlanmasna balanabilir. Programlama tekniinde nemli lde yol alm kiiler bu aamay da atlayarak direkt olarak programn yazmna geebilirler. Akis diyagramlarnn algoritmadan fark, admlarn simgeler seklinde kutular iinde yazlm olmas ve admlar arasndaki ilikilerin (i ak) oklar ile gsterilmesidir. Algoritma ve Programlamaya Giri 9 r. Gr. Mustafa AKSU
Akis diyagramlarnda kullanlan semboller, anlamlar ve kullan amalar aadaki tabloda verilmitir. Tablo 1. Ak diyagramlarnda kullanlan temel semboller ve anlamlar
Akis diyagramnn balang ve biti yerlerini gsterir. Balang simgesinden k oku vardr. Biti simgesinde giri oku vardr.
Aritmetik kullanlr.
ilemler
ve
deiik
Bu sembolleri daha da oaltmak mmkn fakat temel olarak ak diyagramlarnda bu ekiller kullanlacaktr. Ayrntl bir akis diyagram, yazlm oluturan ilemleri ve ilikilerini en kk detayna kadar belirler. Bir bilgisayar programnn gelitirilmesinde kullanlan programlama dili ne olursa olsun bu programlarn akis diyagramlarnda genel olarak yalnz basit mantksal yap kullanlr. Bu mantksal yaplardan en basiti sral yapdr(ekil 1.2). Sral yap, hazrlanacak programdaki her ilemin mantk srasna gre nerede yer almas gerektiini vurgular. Bu yap sona erinceye kadar ikinci bir ilem balayamaz.
10
Mantksal yaplardan ikincisi Karar Verme yapsdr (ekil 1.3). Programlama srasnda If...Then... Else yaps ile tanyacamz bu mantksal yaplar, birden fazla sral yap seeneini kapsayan modllerde, hangi artlarda hangi sral yapnn seileceini belirler.
nc mantksal yap eidini tekrarl yaplar (ekil 1.4) oluturmaktadr. Bu yaplara Pascal programlama dilinde For (ekil 1.4), While ve Repeat..Until yaps adi da verilir. artlara gre deiik ilem gruplarnn yaplmasn salar. Bu yap yukarda sz edilen iki yapnn eitli kombinezonlarn tekrarlanmasndan olumutur. Sz konusu deiik yap, deiik kombinezonlarda kullanlarak istenilen ilevleri yerine getirecek programlar hazrlanabilir. Programlarn bu basit yap ile snrlandrlmas program modllerinin daha kolay tasarlanmasn salar.
11
Sayy oku
Sayy Yazdr
Bitir rnek 2: Dardan girilen iki sayy toplayp sonucu ekrana yazdran programn ak emasn iziniz.
Bala
X,Y oku
Toplam=X+Y
Toplam Yazdr
Bitir
12
rnek 3: Dardan girilen iki sayy toplayp bunlarn ortalamasn bulup toplam ve ortalama sonucunu ekrana yazdran programn ak emasn iziniz.
Bala
X,Y oku
Toplam=X+Y Ort=toplam/2
Bitir
13
rnek 4: 1'den 100'e kadar olan saylarn toplamlarn ve ortalamalarn veren programn ak diyagramn iziniz.
Bala
Bitir
14
15
Soru : Bir sayy dardan okuyup tekrar ekrana yazdran problemi yntemle de (Ak diyagram, Algoritma, Pascal) znz.
Algoritma
Ak Diyagram
Pascal Kodu
Var 1. Bala 2. A saysn oku 3. Sayy yazdr readln (A); 4. Bitir. writeln(Girdiginiz say = , A); readln; end. A:integer; Begin write (Bir say girin);
16
Soru: Dardan iki say okuyup bunlar toplayarak sonucu ekrana yazdran problemi znz.
Algoritma
Ak Diyagram
Pascal Kodu
Var 1. Bala X,Y,Toplam:integer; 2. X,Y saysn oku 3. Toplam= X+Y al 4. Toplam yazdr 5. Bitir. writeln(Saylarn Toplam = , toplam); readln; end. Begin write (ki say girin); readln (X,Y); toplam:=X+Y;
17
Soru: Dardan iki say okuyup bunlarn aritmetik ortalamasn bulun problemin zm.
Algoritma
Ak Diyagram
Pascal Kodu
Var 1. Bala 2. X,Y saysn oku 3. Toplam= X+Y al 4. ort=toplam / 2 al 5. Toplam ve ortu yazdr ort:=toplam / 2; 6. Bitir. writeln(Saylarn Toplam = , toplam); writeln(Saylarn Ortalamas = , ort); readln; end. X,Y,Toplam:integer; Ort:real; Begin write (ki say girin); readln (X,Y); toplam:=X+Y;
18
Soru: Dardan bir say okuyup bu saynn faktriyelini hesaplayan problemin zm.
Algoritma
Ak Diyagram
Pascal Kodu
4. sayac=sayac+1 al 5. faktor=faktor*sayac 6. Eer sayac < N ise 4. adma git 7. Faktoru yazdr 8. Bitir.
19
Algoritma
Ak Diyagram
Pascal Kodu
1. Bala 2. i=0, top=0 al 3. top:=top+i al 4. i:=i+2 al ; 5. Eer i>=100 ise 6. adma deilse 3. adma git 6. top deerini yaz 7. Bitir.
var i,top:integer; begin top:=0; for i:=1 to 100 do begin if (i mod 2=0) then top:=top+i; end; writeln(sayilarin toplami = ',top); readln; end.
20
Readln
End.
21
Program Bal: Bir Pascal programnn ilk ksm, kullanlmas programcnn seimine bal olan "program bal'dr. Program bal, programa bir isim vermek iin kullanlr ve program isimlerinde ngiliz alfabesinde bulunmayan Trke karakterler kullanlmamaldr. Programa uzun isimler verilebilir ancak szckler arasnda boluk bulunmamaldr. Tanmlama Blou: Pascal programnn bu blmnde program icra blounda kullanlan sabitler ve deikenlerin isimleri ve bunlarn ne tr sabit/deiken olduu bildirilir. Bu blok Pascal program ierisinde mutlaka belirtilmelidir. rnek olarak, aada deiik veri tiplerindeki deikenlerin bir tanmlama blounda nasl tanmlanabilecei gsterilmitir.
Tanm ABS A B C F H J KL
Veri Tipi
:REAL; :STRING; :INTEGER; :LONGINT; :SHORTINT ; :BOOLEAN; :BYTE; :WORD;
Herhangi deiken ve sabitlerin karlatrlmasnda kullanlr. Bu iaret iine diziye ait indis numaras yazlr. Veri okunmas, yazlmas, yazlacak/okunacak bilgilerin balang ve bitilerinde kullanlr. ndisli deiken eleman tanm ayrc. ; Pascal komut ve deyimlerini birbirinden ayrmak iin kullanlrlar. ' (Tek Trnak) Alfasaysal bilgilerin tanmlanmasnda kullanlr. Bilgilerin balang ve bitilerinde kullanlmaktadr. , Deiken tanmlarnda, okunacak yada yazdrlacak bilgiler arasnda ayra olarak kullanlr. : Bilgi karakter yap tipi tanmlamalarnda ve saysal bilgilerin k formatlarnda kullanlr. . Bir gruba bal bir alt grup veya bir kayt saha ismi tanmlarnda elemanlandrma iareti olarak, sabit bilgilerdeki rakamlarn ondalk iareti olarak ve Pascal programlarnn sonunu belirlemek amacyla kullanlr. := aretin solundaki deere sandaki bilgiyi atama ilemini yapar. { } Aklama ifadelerinin balang ve bitimlerinde kullanlr. (* *) Aklama ifadelerinin balang ve bitimlerinde kullanlr. >, <, = [ ] ( )
22
And
Case
Asm
Const
Div End
Goto Inline
Do
File
For
Implementation Label
If
Interface
on Mod
Object Program
Nil Or
Record
Not
Packed Repeat String Unit While
Of
Procedure
Set
Then Until With
Shr
Type
Shl To
Uses
Var
Xor
23
Sabit Tanmlamalarna rnekler : Const Pi = 3.14; Pi_Sayisi = 3.1415; Bu_yil = 1999; Tarih = '29/10/11999'; isLEMciler = '+ - * /'; iSim = 'Kenan'; SOYAD = 'DEMR'; YAS =20; Mesaj = 'Devam etmek iin bir tua basnz... '; Avagadro_Sayisi = 6.02E23; Cosinus_45_derece = 0.7071067; TelefonNumarasi = '3434343'; Katsayi = 100; buyuk_mu = false; dogru = true; arti = ' + '; yanlis = 'false'; Bu blokta yaplabilecek dier bir tanm ise deikenlere tipi ile birlikte ilk deer verilmesidir. Bunun iin nce deikeninizin adn yazyorsunuz sonra : koyup tipini belirliyorsunuz ve ilk deer vermek iin = yazp ilk deerini veriyorsunuz. rnek: Const Sayac : byte = 0;
Pascal programlama dilinde icra blou iinde kullanlan deikenler VAR tanm blou iinde, sabitler ise CONST blou iinde tanmlanr. rnein A,B deerleri deiken ve C deeri sabit ise bu deerlerin programn tanm bloklarnda ifade edilmesi aadaki ekilde olacaktr.
VAR A,B:REAL; CONST C=12:INTEGER; Burada, VAR'dan sonra gelen REAL ifadesi A ve B deikenlerinin gerel say veri tipinde olduunu belirtirken CONST'dan sonra gelen INTEGER ifadesi C saysnn integer veri tipi olduunu belirtmektedir.
Deikenlere Deer Atama Pascalda dier programlama dillerinden farkl olarak deer atamas yaplrken ":=" (iki nokta st ste ve eittir iaret ikilisi kullanlr). Yani sayi diye bir integer tipindeki deikene 20 deerini atamak istediimizde yapmamz gerekenler yle olacaktr. rnek: Var sayi : integer; { sayi adnda integer tipinde bir deiken tanmladk } ...
24
sayi := 20; (* sayi deikenine 20 deerini atadk *) sayi := sayi + 1; (* sayi deikeninin deerini 1 arttrdk *) ... Pascalda deikenlere deer atarken iki nokta stst ve eittir birlikte kullanlr. Eittir tek bana kullanldnda karlatrma operatr olarak grev yapar.
Deiken veya sabit tanmlarken unlara dikkat etmek gerekmektedir: 1. Bir deiken veya sabit A..Z veya a..z arasndaki harflerle yada _ (alt izgi) ile balar. ADRES, isim, _faktor gibi. 2. Deiken veya sabitlerde ilk karakter rakam olamaz. Var 1a, 23B : integer gibi. {Bu tanmlama yanl} a1, B23 : integer gibi. {Bu tanmlama doru} 3. Deiken birden fazla kelimeden oluuyorsa kelimeler arasna alt izgi ( _ ) karekteri konulmaldr. Var dairenin_alani : real; 4. Deiken ierisinde sadece Trk alfabesinde (,,,,,,,,,,,) karakterler kullanlamaz. Var maa, snf: integer ; {Tanmlamas yanl} 5. Deiken ierisinde noktalama iaretleri (, . ; ? / { [ ( ) , karlatrma operatrleri ( <,> =), boluk kullanlamaz. Var snfn.mevcudu: integer; {Tanmlamas yanl} 6. Tanmlanan deiken veya sabit programlama dilinin komutlar olamaz. rnek: Var Read, file : integer ; {Kullanmlar yanl} Not: integer ; {Kullanm yanl} 7. Tanmlanan deiken kullanlacak tipe ve kullanm amacna uygun tanmlanmaldr. olup ngiliz alfabesinde olmayan
Programlara Aklama Eklenmesi Program yazm srasnda kodlarmza ok sk ekleme ve karmalar yaparz bunlar bazen programlar iinden klmaz hale getirebilir, bunu engellemek iin Pascalda programlara aklama satrlar ekleyebilirsiniz. Aklama satrlar eklemeniz ileride programda yaptnz deiiklikleri ve program akn kolayca hatrlamanz ve programnz inceleyen dier
25
kiilerin program kolayca anlamalarn salayacaktr. Pascalda aklama satr yazm iin {,} sembolleri veya (*,*) ikilileri kullanlr bunlar aklamann nerede balayp nerede bittiklerini belirtir. Programn derlenmesi esnasnda bu satrlar derleyici tarafndan gzard edilir, yani derlenmi kodda aklama satrlar yer almaz. Aklamalar birinci tipte { ile balar } ile biter. kinci tipte ise (* ile balar ve *) ile biter. Programlarnzda aklama satrlarna ska yer vermeniz hem sizin hem de program inceleyen dier kiilerin program rahat anlamalarn salayacaktr. rnek: Var sayi:integer; {sayi deikeni ka kiinin adn gireceimizi saymak iin kullanld. Bu bir aklama satrdr ve derleyici tarafndan gzard edilir} adi:string[20]; (* Bu da bir aklama satrdr ve bu satr da derleyici tarafndan gzard edilir*) Pascalda deiken tanmlamalarnn ve kod satrlarnn sonuna noktal virgl geldii halde aklama satrlarnn sonuna noktal virgl gelmediine zellikle dikkat edin.
26
kapsamlsdr.
-2.3454 123.11223344
-2.45E+12 2.45E+12
1.123123E-12
Olaan koullarda bir programlama hatas sz konusu deilse veya ok byk saylar ile allmyor ise REAL tip saylarla almada bir sorun ile karlamayz. Kiisel bilgisayarlarn mikro ilemcileri 80x86 olarak isimlendirilir. Bu ilemci ailesinin ykn hafifletmek iin 80x87 olarak bilinen matematik ilemcisi kullanlr. Pascalda bu ilemci ile kullanlmak zere drt tip tanmlanmtr. Bunlar; Single, Double, Extended ve Comp 'tur.
80x87 snfndaki veri tiplerinin kullanlabilmesi iin programn en bana {$N+} derleyici komutu verilmelidir. Bilgisayarda matematik ilemci yok ise {$E+} matematik ilemci emlasyonu da bu satra eklenir. Gnmzn Pentium tabanl bilgisayarlarnda matematik ilemci bulunduundan, matematik ilemcili bilgisayarlarda emlasyon direktifini kullanmaya gerek yoktur.
2.4.3. String (Metin veya karakter) veri Tipleri 2.4.3.1. Char Tipi Veriler
Char tipi veriler, ASCII karakter kmesinin 256 adet elemanndan oluurlar. Char tipi veriler bir sabit olarak ele alndndan ' ' ierisinde yazlr.
27
rnek : Klavyeden vize ve final notu girildiinde o rencinin not ortalamasn bulan program yaznz?
var vize,final:shortint; begin write('vizeyi giriniz'); readln(vize); write('finali giriniz'); readln(final); write('ortalama',vize*0.4+final*0.6); readln; end.
28
3. OPERATRLER
3.1. Aritmetik Operatrler
Aritmetik operatrler drt ilem iin kullandmz (toplama, kartma, arpma ve blme) +, -, / ve * 'dan olumaktadrlar. Tam ve reel saylarn aritmetik ilemleri iin kullanlan operatrlere ilikin liste aadaki tabloda verilmitir.
"+","-" ve "*" ilemlerinde ilem yaplan say cinsi reel ise sonu ta reel'dir. lem yaplan saylar tamsay ise sonuta tamsaydr. "/" ileminde ise sonu her zaman reel saydr. Operatr Ad + * / Div mod toplama karma arpma blme(Reel) blme(Tamsay) kalan Anlam Sol ve sadaki deerleri birbirine ekler. Soldaki deerden sadaki deerleri karr. Sol ve sadaki deerleri birbiri ile arpar. Soldaki deeri sadaki deere bler. Soldaki deeri sadaki deere bler. Soldaki deerin soldaki deere blnmesinden kalan
Sk sk kullandmz bu operatrlerin yannda iki saynn blmnden kalan veren MOD, iki tamsaynn blmnn sonucunda tamsay reten DIV programlarmzda sk kullandmz aritmetik operatrlerdir.
'/' operatr operand olarak kullanlan deerlerin tipi ya da blmn sonu deeri ne olursa olsun real tipte sonu retir. Bu nedenle bir blmn sonucunun bir tamsay deikene direkt olarak aktarlmas sz konusu deildir.
Mod ve Div ilemlerinin sonular her zaman tamsaydr. 4 div 12 = 0, 12 div 4 = 3, 13 div 4 = 3 16 div 4 = 4 3 mod 2 = 3, 5 mod 2 = 1, 4 mod 2 = 0 4 mod 0 = (tanmsz)
Operatr
Ad
Anlam
29
Sol ve sadaki deerler birbirlerine eitse Sol ve sadaki deerler birbirlerine eit deilse Soldaki deer sadaki deerden kkse Soldaki deer sadaki deerden bykse Soldaki deer sadaki deere eit yada kkse Soldaki deer sadaki deere eit yada bykse
lem nceliinde Baz Kurallar: Ayn ncelik srasna sahip ilemlerde hangisi nce tanmlanm ise nce onun ilemi gerekletirilir. lem ncelik sras kk olan bir aritmetik ilemin nce yaplmas isteniyorsa parantez iine alnmaldr. ie birden fazla parantez kullanlmas durumunda, ilem ncelik sras daima en iteki paranteze ait ileminindir.
30
Yukardaki rnekte ilem sras; 1. Z'nin karekk alnr 2. 1 no.lu ilem 2 sabiti ile arplr 3. (2-x) deeri hesaplanr 4. 2 no.lu iten elde edilen sonu 3 no.lu ilemin sonucuna blnr.
Soru 2. Bir rencinin 1. Yazl, 2.yazl ve szl notlarnn ortalamasn hesaplayan program yaznz. Soru 3. Bir dik gende Hipotens hesaplayan program yaznz.
31
4. GR/IKI DEYMLER
4.1. Giri
Giri/k deyimleri bilgisayarn ana bellei ile evre aygtlar arasnda bilgi transferi yaparlar. Herhangi bir evre aygtndan (klavye gibi) bir verinin bellee okutulmas veya ana bellek zerindeki bir verinin evre aygtlara (Ekrana) gnderilmesi giri/k deyimleri ile gerekletirilir. Genellikle giri k deyimi olarak aada tanmlanan deyimler kullanlmaktadr.
4.2 Read-Readln
Pascal 'da okuma ilemi iin kullanlan komutlar READ ve READLN olup genel kullanm yaps u ekildedir; Read(A1,A2,A3,...,An); Readln(A1,A2,A3,...,An); Read ile Readln arasndaki fark: Read, okuma ilemi tamamlandktan sonra ayn satrda kalnmasn, Readln ise yeni bir satra gelinmesini salar. Bir Pascal program ierisinde bu iki komutun kullanm aadaki program parasnda verilmitir. Var s,a,n:real; begin Read(s,a,n); end. Okunacak deerlerin dzeni;
12.45
43.543
62.12
Ayn deerleri Readln ile okutturmak istersek; Var s,a,n:real; begin Readln(s,a,n) ; end.
Okunacak deerlerin dzeni yukardaki okuma dzeni ile ayn olabilecei gibi her deer ayr bir satrda verilebilir, her hangi satrlarda verilebilir, rnek olarak s, a ve n deerleri aadaki okuma dzeninde okutturulmutur.
32
4.3. Write-Writeln
Pascal programlama dilinde yazma ilemi iin WRITE ve kullanlmaktadr. Bu komutlarn genel kullanm yaps u ekildedir; Write(A1,A2,A3,...,An) Writeln(A1,A2,A3,...,An) ki kullanm ekli arasndaki fark, Read ile Readln arasndaki fark gibidir. fadeler Write ile yazdrldktan sonra kursr ayn satrda bekleyecektir, Writeln ile yazdrlmas durumunda ise kursr bir sonraki satra geecektir. Var s,a,n:integer; begin s:=3; a:=9; n:=5; Write(s); Write(a); Write(n); end. Programn altrlmasyla elde edilen sonu; 395 olacaktr. WRITELN komutlar
33
34
Yazm srasnda kesirli alann yazlmas istenmiyorsa k saysnn "0" yazlmas gerekir. k saysnn sfr olmas desimal noktann yok olmasn salar.
Tip integer
Aklama Integer tipindeki bir deikenin adnn arkasna n gibi saysal bir deer yazlrsa bu n karakterlik bir saha iinde bu saynn saa doru dayal bir ekilde yazlmasn salar. Real tipinde bir deikenin adnn arkasna n ve k gibi saysal deerler yazlrsa bunlar n karakterlik alan iinde ondalk ksm noktadan sonra m tane karakter iermek zere saa dayal olarak yazdrlr. String tipindeki bir deikenin adnn arkasna n gibi saysal bir deer yazlrsa bu n karakterlik bir saha iinde bu karakter dizisinin saa doru dayal bir ekilde yazlmasn salar.
Deiken:n:k
Deiken:n
eklinde olur. rnek: Const a:real=123.127927; begin Writeln('123456789); Writeln('*********');; Writeln(a:9:4); Writeln(a:9:3); Writeln(a:9:2); Writeln(a:9:0); Writeln(a:7:2); Writeln(a:6:2); Writeln(a:5:2); Writeln(a:0:0); end. Programn almasyla elde edilen sonu aada verilmitir. Program sonucuna gre sondan 2. ve 3. satrlarn ayn olduuna dikkat ediniz.
123456789 ********* 123.1279 123.128 123.13 123 123.13 123.13 123.13 123
35
5. Karlatrma Komutlar
Pascalda genel olarak kullanlan karlatrma deyimleri unlardr: IF..THEN..ELSE CASE..OF
5.1. If...Then...Else
Eerisedeilse (If..then..else) Karar yaps : Program yazarken en ok yaplan ilerin banda elinizdeki verilere bakarak bir karar vermek ve programn akn bu karara gre ynlendirmek gelir. yi programda gerekli yerlerde doru ve etkili karar yaplar oluturmak ok nemlidir. nk bir programda en yava ileyen komutlardan birisi karlatrma komutlardr. Pascalda en ok kullanlan karlatrma ve kontrol komutu If..then..else dir. If deyiminden sonra yaplacak karlatrmann sonucu doru (True) ise then deyiminden sonraki blok iler. Eer karlatrmann sonucu yanl (False) ise bu sefer de else deyiminden sonraki blok iler. Else deyimi seimlik bir deyimdir. Yani isterseniz, ya da gerekmezse bu ksm kullanmayabilirsiniz. Bu durumda eer karlatrma sonucu yanl ise program bir sonraki komutla akna devam eder. Genel kullanm kalb u ekildedir: if (art) then Yaplmas istenen ilem veya ilemler Else Yaplmas istenen ilem veya ilemler Eer else kullanacaksanz else den nceki satrda noktal virgl kullanmamalsnz. ... If then begin komutlar end; [ else begin komutlar end;] if veya Elseden sonra 1den fazla komut veya ilem varsa begin end blou kullanlmaldr.
36
Eer koul doru ise lem 1'i ve lem 2'yi yap deilse ilem3' ve ilem4 yap. Pascal'da yazm: if Koul Then Begin lem1; lem2; End Else begin lem3; lem4; End;
Eer isterseniz i ie if kullanmaya devam edebilirsiniz. Bu olduka karmak bir yap oluturabilir ancak baz durumlarda bylesi uygulamalar zaruri olur.
rnek: Girilen bir saynn tek veya ift olduunu bulan program.
Var a : Integer; Begin Write('Bir say giriniz: '); Readln(a); If (a mod 2 = 1) Then Writeln ('Girdiiniz Say Tekdir') Else Writeln ('Girdiiniz Say ifttir'); Readln; End.
37
Readln; End.
rnek : Girilen bir saynn pozitif veya negatif olduunu syleyen program.
Var Sayi : integer; begin write(Bir say girin : ); readln(Sayi); if Sayi < 0 then writeln(Sayi negatiftir) else writeln(Sayi Pozitiftir); end.
rnek: Bir rencinin vize ve final notunu okuyup ortalamasn vizenin % 40 ve finalin
%60 n alarak hesaplayp ortalama 60dan byk veya eitse geti deilse kald yazan progarm yaznz. var vize,final:integer; ort:real; begin write('Vize notunu girin'); readln(vize); write('Final notunu girin'); readln(final); ort:=(vize*0.4+final*0.6); if (ort >= 60) then Writeln('Ortalama =',ort:6:2,' Gecti') else Writeln('Ortalama =',ort:6:2,' Kaldi'); readln; end.
38
rnek: Dardan girilen rastgele 10 tane saydan ka tane tek ve ift var ayrca tekleri ayr iftleri ayr toplayan program yaznz.
var i,tek,cif,tektop,ciftop,sayi:integer; begin tek:=0;cif:=0;tektop:=0;ciftop:=0; for i:=1 to 10 do begin write(i,'. sayiyi giriniz : ');readln(sayi); if sayi mod 2=0 then begin cif:=cif+1; ciftop:=ciftop+sayi; end else begin tek:=tek+1; tektop:=tektop+sayi; end; end; writeln(tek,' Adet tek say girdiniz bunlarn toplam = ',tektop); writeln(cif,' Adet cift say girdiniz bunlarn toplam = ',ciftop); readln; end.
39
rnek : rencinin Vize ve final notundan ortalamasn hesaplayp geti veya kald yazan program. Var Not1, Not2 : Integer; Ortalama: Real; Begin Write('Not 1i giriniz : '); Readln(Not1); Write('Not 2i giriniz : '); Readln(Not2); If (Not1 >=0) and (Not1<=100) and (Not2 >=0) and (Not2<=100) Then Begin Ortalama := (Not1+Not2)/2; If Ortalama >= 50 Then Writeln('Getiniz Ortalamanz = ', Ortalama:4:2) Else Writeln('Kaldnz Ortalamanz = ', Ortalama:4:2); End Else Writeln('Yanl giri yaptnz...'); Readln End.
40
5.2. case...of
Bir nceki konuda bahsedilen kontrol deyimi if..then..else genellikle az sayda olan karlatrmalarda kullanlr. Ama eer yaplan karlatrma ok karmaksa o zaman bu deyimi kullanmak olduka zor olur ve ok fazla miktarda mantk hatalar bulunur. Bunu engellemek iin blok if deyimi diyebileceimiz Case yapsn kullanrz. Case yapsnda karlatrmann yaplaca deikenin alabilecei deerler gre eitli ilemleri toplu olarak yapabiliriz. Casein genel kullanm yledir: case degiken of durum-1 : ilem(ler); ... durum-n : ilem(ler); end;
Veya
case deiken of durum-1 : ilem(ler); ... durum-n : ilem(ler); else ilem(ler) end; Durum dediimiz yerlerde bir yada daha fazla, virglle ayrlm, sabitler veya aralklar olabilir. Mesela : case Ch of 'A'..'Z', 'a'..'z' : WriteLn('Harf'); '0'..'9' : WriteLn('Rakam'); '+', '-', '*', '/' : WriteLn('Operator'); else WriteLn('zel karakter'); End;
41
Else ksm ise tamamen seimliktir. stemezseniz kullanmayabilirsiniz. imdi bir soruyu hem if-then else deyimi ile hem de case-of deyimi ile zp farklar zorluklar grelim. Soru: Balang deeri I=500 olan I says; dardan girilen say 0dan byk ve 128den kkse I deikenine 1 eklesin, 128..256 arasnda ise Iya 10 eklesin, 256dan bykse Iya 100 eklesin. Ayn zamanda eer bu say 0dan kk ve 127den bykse Idan 1 eksiltsin, -127..-255 arasndaysa 10 eksiltsin ve 255den de kkse Idan 100 eksiltsin.
ifli zm
Var I : integer = 500; Sayi : integer; Begin Write(Bir say girin : ); Readln(Sayi); If (sayi > 0) and (sayi < 128) then I := I+1; If (sayi >= 128) and (sayi <= 256) then I := I+10; If (sayi > 256) then I := I+100; If (sayi < 0) and (sayi > -127) then I := I-1; If (sayi <= -127) and (sayi >= -255) then I := I-10; If (sayi < -255) then I := I-100; Writeln(lem sonucu I da kalan= , I); End. Bir if deyimi iin olduka karmak olan bu rnei bir de case-of ile zelim.
Case-oflu zm
Var I : integer = 500; Sayi : integer; Begin
42
Write('Bir sayi girin : '); readln(Sayi); case Sayi of 1..127: 128..255: I:= I + 1; I := I + 10 ;
-32768..-256 : I := I - 100; end; writeln('Islem sonunda I deeri =',I); end. rnek: Aada kiinin ya girildiinde, yana uygun mesajlar veren bir Pascal program verilmitir. Var yas:integer; Begin Write(Yanz Giriniz :); ReadLn(YAS); CASE yas OF 0..5:Writeln(Yanz 0-5 arasnda); 6..15:Writeln(Yanz 5-15 arasnda); 16..35:Writeln(Yanz 15-35 arasnda); 36..50:Writeln(Yanz 35-50 arasnda); 51..85:Writeln(Yanz 50-85 arasnda); else Writeln(ok Yaayn); end; Readln; End. rnek: Girilen rakam notunu harf notuna dntren program yaznz. Var rnot:integer; Begin write('Rakam notunu Giriniz'); readln(rnot); case rnot of 0..29:write('Notunuz FF');
43
30..39:write('Notunuz FD'); 40..46:write('Notunuz DD'); 47..53:write('Notunuz DC'); 54..63:write('Notunuz CC'); 64..73:write('Notunuz CB'); 74..81:write('Notunuz BB'); 82..88:write('Notunuz BA'); 89..100:write('Notunuz AA'); else write('Yanl Not'); end; readln; end. rnek : Dardan iki say ve ilem okuyup ileme gre sonucu hesaplayp yazdran program yaznz. var x,y:integer; a:char; sonuc: real; begin writeln('1.sayy giriniz..');readln(x); writeln('2.sayy giriniz...');readln(y); writeln('ilem seciniz....');readln(a); case a of '+':sonuc:=x+y; '-':sonuc:=x-y; '/':sonuc:=x/y; '*':sonuc:=x*y; else write('yanl ilem yaptnz'); end; write('ilemim sonucu:',sonuc:4:2); readln; end.
ekrana yazan program yaznz. Soru 2 : Bir - Milyar arasndaki girilen bir saynn ka basamakl olduunu ekrana yazdran pascal programn yaznz.
44
6.2 For-Do
For deyimi, bir program parasnn herhangi bir boolean artna bal olmakszn belirlenen sayda st ste altrlmas iin kullanlr. For deyiminin genel kullanm ekilleri aada verilmitir.
1.
FOR Dng Deikeni:=Dng Balangc to dng sonu do Begin Yaplacak ilemler End;
Bu kullanm eklinde balang deeri biti deerinden kk olmak zorundadr. TO ifadesiyle balangtan bitie kadar artarak tekrar yaplacan, DO ifadesi de tanmlanan ilemlerin tekrarlanacan bildirir.
2.
FOR Dng Deikeni := Dng_Balangc DOWNTO Dng_sonu DO Begin Yaplacak ilemler End;
For deyiminin bu kullanm eklinde balang deeri biti deerinden daima byk olup DOWNTO ifadesi de dng deikeninin tekrarlama ileminde azalacan belirtir. DO ifadesi ise belirtilen ilemlerin dng saysnca tekrarlanacan bildirir. Pascal dilinde dier programlama dillerinden farkl olarak balang deerinden son deere artlar/azalmalar birer birer olmaktadr. Aadaki rnek programlar inceleyiniz. rnek : Dardan girilen bir saynn karesini kpn %18ini ve faktriyelini hesaplayan program yaznz. var i,say,kare,kup,fak:integer; yuzde:real; begin write('Sayi giriniz'); readln(say); kare:=say*say; kup:=say*kare;
45
yuzde:=say*0.18; fak:=1; for i:=1 to say do fak:=fak*i; writeln('Sayi Karesi Kubu Yuzdesi Faktoriyeli'); write(' ',say,' ',kare,' readln; end. rnek : Bir den girilen N saysna kadarki tam saylar toplayan pascal programn yaznz Var i, N, Toplam : Integer; Begin Write('Son sayy gir: '); Readln (N); Toplam := 0; For i := 1 To N Do Toplam := Toplam + i; Writeln('1den Ne kadar saylarn toplam = ', Toplam); Readln; End. rnek: Dardan girilen bir ismi yine dardan girilen bir say kadar yazan program yaznz. var i,x:integer; isim:string[20]; begin write('isim girin : '); readln(isim); write('isminiz kac defa yazlsn : '); readln(x); for i:=1 to x do writeln(isim); readln; end. ',kup,' ',yuzde:4:2,' ',fak);
46
rnek : Dardan iki say okuyup 1. sayy taban 2. sayy s kabul ederek s alma ilemini
yapan program yaznz. var us,taban,sonuc:integer; i:integer; begin write('taban ve ussu girin..:'); readln(taban,us); sonuc:=1; for i:= 1 to us do sonuc:=sonuc*taban; write('sonuc......:',sonuc); readln; end.
rnek: Dardan okunan 10 tane rast gele saydan kann negatif kann pozitif
olduunu ve pozitifleri kendi arasnda negatifleri kendi arasnda toplayp sonular ekrana yazan program yaznz. var i,poz,neg,poztop,negtop,sayi:integer; begin poz:=0;neg:=0; poztop:=0;negtop:=0;
47
for i:=1 to 10 do begin write(i,'. sayiyi giriniz : '); readln(sayi); if sayi<0 then begin neg:=neg+1; negtop:=negtop+sayi; end else begin poz:=poz+1; poztop:=poztop+sayi; end; end; writeln(neg,' Adet negatif sayi girdiniz bunlarin toplami = ',negtop); writeln(poz,' Adet pozitif sayi girdiniz bunlarin toplami = ',poztop); readln; end.
6.3 Repeat-Until
Bir program blounun belli bir art salanncaya kadar st ste altrlmasn salayan REPEAT deyiminin genel formu aadaki ekildedir. Repeat Program Satrlar Until (Boolean art) Burada repeat, tekrar etme anlamnda olup, tekrar etmesine UNTIL deyimindeki art (boolean ifadesi) salanncaya kadar devam eder. Bu deyim program satrlar blmne herhangi bir ey yazlmakszn kullanlabilir. Bu dngnn en byk avantaj belirli bir say ile snrlandrlmam olmasdr. Boolean ifadesindeki art salanncaya kadar ilemlere devam edilmektedir. Dikkat edilirse art cmlesinin ald deer ne olursa olsun program blou bir kez almaktadr.
rnek : sminizi dardan okunan bir say kadar yazdran program yaznz.
Var x,i:integer; begin write('Sayi girin'); readln(x);
48
rnek : Dardan girilen bir ismi yine dardan girilen bir say kadar yazan program yaznz.
Var x,i:integer; s:string; begin write('isim Girin'); readln(s); write('Sayi girin'); readln(x); i:=0; repeat i:=i+1; writeln(s); until i=x; readln; end.
49
Var x,i:integer; top:longint; ort:real; begin top:=0; i:=0; repeat i:=i+1; write(i,'. Sayiyi girin'); readln(x); top:=top+x until i=10; ort:=top/i; writeln(i,' adet sayinin toplami',top); writeln(i,' adet sayinin ortalamasi',ort:5:2); readln; end.
6.4 While-Do
Bir program blounun belli bir art saland srece st ste icrasn salayan WHILE deyiminin genel yazl ekli aadadr. While <art cmlesi> Do BLOK {Yaplacak ilemler} Do kelimesini takip eden blok WHILE deyimi tarafndan dngye sokulacak komut cmlelerini kapsar. Komut cmlesi says birden fazla ise, bu bloun BEGIN...END deyimleri arasna alnmas zorunludur. WHILE ile REPEAT arasndaki fark; Repeat dngs art cmlesi yanl olduu srece, While dngs ise art cmlesi doru olduu srece devam etmesidir. REPEAT dngsnde art sonda kontrol edildii iin doruda olsa yanlta olsa en az bir defa ilem yaplr. WHILE da ise art dngye girmeden kontrol edildii iin yanlsa hi ilem yaplmaz.
rnek : sminizi dardan okunan bir say kadar yazdran program yaznz.
Var x,i:integer; begin write('Sayi girin'); readln(x);
50
rnek : Dardan girilen bir ismi yine dardan girilen bir say kadar yazan program yaznz.
Var x,i:integer; s:string; begin write('isim Girin'); readln(s); write('Sayi girin'); readln(x); i:=0; while i<x do begin i:=i+1; writeln(s); end; readln; end.
51
Break
Turbo Pascal 7.0 programlama dilinde bir dngy krarak sona erdirmek amacyla kullanlr. Program iinde BREAK deyimiyle karlaldnda iinde bulunduu dngden sonraki program satrnn iler hale getirir. BREAK komutu FOR-DO, REPEAT-UNTIL ve WHILE-DO dnglerinin iinde kullanlabilir. Konunun daha iyi anlalabilmesi iin aadaki rnei inceleyiniz. rnek Programda i ve j gibi iki saynn arpm yaplmaktadr. i=j olduu durumda iteki dng BREAK deyimi ile krlmakta ve i 'nin deeri bir st deere arttrlarak programn almasna devam edilmektedir.
Continue
Fortran programlama dilinde olduu gibi tekrarlama evrimini yeniden balatr. Programc, bilgi girilerinde kullancnn saysal olmayan bir giri yapacan varsayarak nlem almak amacyla tekrarlama ilemlerini yeniden balatmak iin CONTINUE komutu kullanlr. Bu deyim PASCAL 7.0 ' da geerlidir.
52
Exit
Program ilem bloklarnda tanmlanan herhangi bir koulun gereklemesi halinde program blounun akn durdurur.
Halt
Programn kararlatrlan bir yerinde durdurulmasn salar. ENTER tuuna basldktan sonra varsa HALT komutundan sonra tanmlanan program satrlar altrlr.
53
Length
Length fonksiyonu bir karakter dizisinin uzunluunu hesaplamak amacyla kullanlr. Hesaplama srasnda karakter dizisi arasnda boluklar var ise bunlar da bir karakter olarak kabul edecektir. rnek: var s:string[40]; begin s:='Bilgisayar Teknolojisi ve Programlama'; WriteLn('Uzunluk = ', Length(s)); end. Programn kts: Uzunluk = 37 eklinde olacaktr.
Concat
Bilgilerin birbirlerine eklenmelerini salayan, alfa saysal fonksiyondur. Ekleme ilemleri CONCAT fonksiyonu ile veya alfa saysal bilgiler arasna + iareti konarak salanr. Concat fonksiyonu ile istenilen sayda string birbiri ardna eklenebilir. CONCAT fonksiyonunun kullanm aadaki rnek programda verilmitir. rnek: var x1,x2,x3,x4:String[20]; x5,x6:String[50]; begin x1:='Bahkesir'; x2:='Mhendislii'; x3:='Universitesi ';x4:='Endstri'; x5:=Concat(x1,x3,x4,x2); Writeln('4 szcn CONCAT ile birletirilmesi'); Writeln(x5); x5:=x1+x3+x4+x2; Writeln('4 szcn Writeln(X5); end. + ile birletirilmesi');
54
rnek* : 10luk tabandaki bir sayy dier tabanlara dntren program. var x,i,taban:integer; gecici,digertaban:string; begin write('Onluk tabanda Say Griniz'); readln(x); write('Taban Giriniz'); readln(taban); digertaban:=''; while x>taban do begin Str(x mod taban,gecici); digertaban:=digertaban+gecici; x:=x div taban; end; STR(x,gecici); digertaban:=digertaban+gecici; for i:=length(digertaban) downto 1 do write(digertaban[i]); readln(x); end.
55
Abs
Herhangi bir saysal sabit veya deikenin mutlak (iaretsiz) deerini verir. rnek: var r: Real; i: Integer; begin r := Abs(-4.3); i := Abs(-157); Writeln(r:4:l,i:8); end.
Sqr
Verilen bir parametrenin karesini verir. Genel kullanm ekli; Kare:=sqr(sayi);
Sqrt
Verilen bir parametrenin karekkn verir. Genel kullanm ekli; Karekok:=sqrt(sayi); rnek: var say: real; begin Write('Karesi alnacak sayy giriniz ='); Readln(say); Writeln(say:10:2,' in Karesi ', Sqr(say):10:2); Writeln(say:10:2,' nn karekk',Sqrt(say):10:2); end.
Round
Gerel saylarn kurala uygun bir ekilde yuvarlatr ve yuvarlatlm tamsay olarak verir. Elde edilen yuvarlatlm say yine real tipte saklanr. rnek: begin Writeln(1.499, , Round(1.499),' a yuvarlatld'); Writeln(1.5', ,Round(1.5),' a yuvarlatld'); Writeln(1.499, ,Round(-1.499),' a yuvarlatld'); Writeln(-1.5,' ',Round(-1.5),' a yuvarlatld'); end.
56
Random
Rastgele bir say retir. retilen rastgele say 0 ile random ile belirtilen say aralnda olmaktadr. rnek: Var x:integer; begin Randomize; x:= Random(99); Writeln (Rastgele retilen sayi =,x); end.
57
8. DZLER
Bir dizi, ayn tipteki elemanlarn yan yana sralan ile elde edilen bir bilgi kmesidir. Matematikte kullanlan doal saylar (1,2,3,..), reel saylar aslnda birer dizidir. Ayrca yln aylar (Ocak, ubat, Mart, ) haftann gnleri de birer dizidir.
58
Dizi kullanmayan retmen Var OgrenciNotu1 := integer; OgrenciNotu2 := integer; OgrenciNotu3 := integer; ... ... OgrenciNotu30 := integer; Begin Write(1.Ogrencinin notu = ); Readln(OgrenciNotu1); Write(2.Ogrencinin notu = ); Readln(OgrenciNotu2); ... ... write(30.Ogrencinin notu = ); readln(OgrenciNotu30); end. Artk dizi kullanmann avantajlarn biliyoruz. Bize ayn bilgilere kolay erimemizi salyor. sterseniz artk bir dizi bakabiliriz. Dizileri VAR blounda tanmlayabileceimiz tanmlayabiliriz. Eer TYPE blounu kullanrsak tanmlam deiken tipi olarak kullanabiliriz. deiken_ismi : array [boyut_bykl] of dizi_tipi Boyut bykl herhangi bir standart veri tipinde olabilir. Eer ok boyutlu bir dizi ise bunlar birbirinden virgllerle ayrlr. Dizi tipinde ise istediimiz herhangi bir tipi kullanabiliriz. Yani hem standart tipleri hem TYPE blounda tanmladmz kendi tiplerimizi kullanabiliriz. Dizinin elemanlarna keli parantez ierisinde verilen indis numaras ile eriiriz. rnek tanmlamalar : Var IntList : array[1..100] of integer; {nteger tipinde bir boyutlu dizi} CharData : array['A'..'Z'] of Byte; {Char tipinde bir boyutlu dizi} Eer dizilerimiz ok boyutlu olacaksa Matris : array[0..9, 0..9] of real; {real tipinde 2 boyutlu dizi} MyStrArr : array[1..10] of Str20; {Yukarda tanmladm Str20 tipinde 10 elemanl dizi} KupData : array[1..20,1..20,1..20] of Word {Word tipinde 3 boyutlu dizi} Bir ok bilim dalnda eitli niceliklerin matematiksel gsterimi iin yaygn olarak kullanlan vektr ve matrislerle ilgili bir program yapacamz dnelim. Her Xi (i=1,2,...n) ve Aij(i=1,2,..n, j=1,2,..n) eleman iin basit tipte bir deiken kullanacak olursak
karlaacamz gl grrz. rnein 10 bileenli bir vektr iin 10 basit tip deiken kullanlmas gerekirken, 10x10 boyutlarndaki matris iin 100 basit tip deiken kullanlmas gerekmektedir. Bizim iin gerekli olan, ayn tipte elemanlardan oluan bir veri kmesini tek bir deiken ismi kullanarak, kme iindeki yeri ile eriilmesini salayacak veri yapsdr. Diziler, kullanm amacna gre tek veya ok boyutlu olabilir. Elemanlandrlm dizi
Dizi kullanan retmen Var OgrenciNotu : array[1..30] of integer; i: integer; Begin for i := 1 to 30 do begin write(i,'.Ogrencinin notu = '); readln(OgrenciNotu[i]); end; End.
trden ve birbiri ile ilikili tanmnn nasl yapldna gibi, Type blounda da olduumuz yeni tipi direkt
59
deikenlerinin boyut durumu ARRAY ifadesiyle keli parantez iinde yaplan tanmlamalarla belirtilir. Dizi karakter tipi "OF tip tanm" ifadesi ile mutlaka verilmelidir. PASCAL programlama dilinde diziler, TYPE, VAR veya CONST tanm bloklarndan birinde tantlr. leme alnmalar ilemlerin alma durumlarna gre bir dng ile gerekletirilir. Tm elemanlar ilk elemandan balayarak ileme alnacaksa FOR dngs, herhangi bir arta bal olarak tekrar edilecekse WHILE veya REPEAT dngleri ile kullanlr.
60
Bir dizi dier sabitlerde olduu gibi CONST tanm blounda da tantlabilir. Aadaki rnek program inceleyiniz. rnek: Program yeni_rnek; Const Aylar:Array[1..12] of string[7]= ('Ocak',ubat,Mart',Nisan, Mays','Haziran', 'Temmuz', 'Austos','Eyll,'Ekim',Kasm', 'Aralk'); var k: integer ; begin Write ('kanc ay:'); Readln(k); Writeln('Aranan Ay ad :',Aylar[k]); end.
61
writeln('Saylarn Ortalamasi :', ort:4:2); readln; end. rnek: Aada verilen program tek boyutlu bir dizinin elamanlarn sondan baa doru tersine evirmektedir. program ters_cevirme; var dizi,tersdizi:array[1..10] of integer; i: integer ; begin for i:=1 to 10 do begin write('Dizinin ',i,'. elemann giriniz = '); readln(dizi[i]); end; for i:=10 downto 1 do tersdizi[10-i+1]:=dizi[i]; for i:=l to 10 do writeln(tersdizi[i]); end. rnek: 10 tane renciye ait ad,soyad,numara, vize ve final notlarn dardan okuyup bu rencilerin ortalamalarn ort:=vize*0.4+final*0.6 forml ile hesaplayp eer rencilerin ortalamas 60 dan byk veya eitse geti deilse kald yazan program yaznz. var Isim,no,soyad:Array[1..10] Of string [25]; vize,final:array[1..10] of byte; i:integer; ort:real; sonuc:string [10]; begin for i:=1 to 10 do begin writeln('isim giriniz');readln(Isim[i]); writeln('soyad giriniz');readln(soyad[i]); writeln('noyu giriniz'); readln(no[i]); writeln('finali giriniz');readln(final[i]); writeln('1.vizeyi giriniz');readln(vize[i]);
62
end; writeln(' isim Soyad No Vize Final Ortalam Durum'); writeln('===================================='); for I:= 1 TO 10 DO begin write(isim[i],' ',soyad[i],' ',no[i],' ', vize[i],' ',final[i]); ort:=(vize[i]*0.4)+(final[i]*0.6); If ort>=60 then sonuc:='geti' else sonuc:='kald'; writeln(' ',ort:4:2, ' ',sonuc); end; readln; end.
63
rnek: arpm tablosu programn yaznz. Var i,j: integer; dizi: array[1..10,1..10] of integer; begin for i:=1to10 do begin for j:=1 to 10 do begin dizi[i,j]:=i*j; Write(Dizi[i,j]:4); End; Writeln; End; end. rnek: 3*3lk bir matrisi tanmlayp deerlerini dardan okutup bu matrisi ekrana matris grnmnde yaznz. var matris:array[1..3,1..3] of integer; i,j:integer; begin for i:=1 to 3 do for j:=1 to 3 do begin write(i,' .satir ',j,' .sutun elemani :'); readln(matris[i,j]); end; for i:=1 to 3 do begin for j:=1 to 3 do begin write(mat[i,j],' ' ); end; writeln; end; readln; end.
64
rnek: 3*3lk iki matrisi deerlerini dardan okuyup bu matrisleri toplayarak ekrana matris grnmnde yazan program yaznz. var mata,matb,matc:array[1..3,1..3] of integer; i,j:integer; begin for i:=1 to 3 do for j:=1 to 3 do begin begin write(i,' .satir ',j,' .sutun elemani :'); readln(mata[i,j]); end; begin write(i,' .satir ',j,' .sutun elemani :'); readln(matb[i,j]); end; end; for i:=1 to 3 do for j:=1 to 3 do matc[i,j]:=mata[i,j]+ matb[i,j]; for i:=1 to 3 do begin for j:=1 to 3 do begin write(matc[i,j],' ' ); end; writeln; end; readln; end. Soru: 4*4lk bir matrisin asl kegeni zerindeki elemanlarn sfr ( 0 ) yapan program yaznz. Cevap: var mat:array[1..4,1..4] of integer; i,j:integer;
65
begin for i:=1 to 4 do for j:=1 to 4 do begin write(i,' .satir ',j,' .sutun elemani :'); readln(mat[i,j]); if ( i=j ) then mat[i,j]:=0; end; for i:=1 to 4 do begin for j:=1 to 4 do begin write(mat[i,j],' '); end; writeln; end; readln; end.
66