Vous êtes sur la page 1sur 66

Algoritma ve Programlamaya Giri 1 gr. Gr.

Mustafa AKSU
DERS NOTLARI


Ders Adi : Algoritma ve Programlamaya Giri

Kisa Ders zeti
Bu dersin I. Blmnde Programlama ile ilgili kavramlar problem zme yntemleri
Algoritma, aki diyagramlari anlatilip diger blmlerde ise problemlerin zmlerinin bir dil
(Pascal) kullanilarak zlmesi iin gereken komutlar anlatilmitir.

Dersin Hedefleri
Bu ders sonunda grenciler, programlama mantigi, problemlere zm yaklaimi, bir dil
kullanarak program yazma gibi becerileri kazanacaktir. Ayrica Pascal programlama
dilinin komutlarini ve bu dilde programlar gelitirmeyi greneceklerdir.

Dersin lenmesi
Bu ders haftada 4 saat olup 3 saat teorik 1 saat uygulamadan olumaktadir. Teorik derslerde
konular sinifta anlatilip uygulama saatinde ise bilgisayar laboratuarlarinda uygulama
yapilacaktir.

Sinav ve derse devam
Bu ders iin bir vize ve bir final olmak zere toplam iki teorik sinav yapilmaktadir. Ortalama
hesaplanirken Vizenin %40 `i finalin %60i alinmaktadir.
Derse her grenci %70 oraninda devam etmek zorundadir. Yani 14 haftalik egitim dneminde
her grenci en az 10 hafta derslere katilmak zorundadir.















Algoritma ve Programlamaya Giri 2 gr. Gr. Mustafa AKSU
1. BLGSAYAR PROGRAMLAMAYA GR
Insanlar her zaman dnr ve problem zerler. Birok problem, az ya da hi
dnlmeden zlebilir.
Her gn evden ikarken ne giyilmelidir? Bunun iin muhtemelen pencereden diariya bakilir.
Hava yagmurlu ise mevsim gereklerine gre giyinmenin yani sira diariya ikarken bir de
semsiye alinmasi gerekir. Hava gneli ve sicak ise o takdirde daha ince giyinilerek diariya
ikilir. Bylece problemin zm kendiliginden oluturulan bir kararla saglanir.
Yukaridaki basit rnekte yapilan is, nce problemin belirlenmesi ve sonra problemin
tanimindan yola ikarak zm iin degiik alternatiflerin degerlendirilmesidir.
Bilgisayar programlamasi sirasinda izlenebilecek birok yol ve yntem vardir. Bilgisayar
programcisinin probleme ilikin zm ortaya ikarabilmesi iin problem zm ile ilgili
bilgileri bilmesi gerekir. Bilgisayar programlamasinda genel olarak belirli kalip ve kurallara
uyulur. Bir bilgisayar yaziliminin oluturulmasi sirasinda aagida siralanan ana adimlara
uyulur.
* Problemin tanimi
* zm ynteminin belirlenmesi
* Programin kodlanmasi
* Programin aliir duruma getirilmesi
* Belgeleme ve gncelletirme
Problemin tanimi: Problemin normal yazi diliyle tanimlanmasi ilemlerini
kapsamaktadir. Problem zmne ilikin iyi bir program yapabilmek iin, problemin iyi bir
ekilde tanimlanmasi gerekir.
zm Ynteminin Belirlenmesi: Bu adimda zmn genel yaklaimi, temel
giri/ikilar belirlenir ve problem zm adim adim program akis diyagramlariyla gsterilir.
Programin kodlanmasi: Program ayrintili olarak tanimlanip zm yollari aika
belirtildikten sonra program kodlama alimalarina balanabilir. Programin bastan sona
yapisal bir dzende hazirlanmasi ve uygun bir programlama dili seilmesi seim ileminin ilk
aamasini oluturur.
Programin aliir Hale Getirilmesi: Programin kodlanmasi sirasinda yapilan imla hatalari,
kodlama ve mantik hatalarinin giderilmesi ilemlerini kapsar. Iyi bir bilgisayar programinin
dogrulugundan emin olmak iin defalarca test edilmi olmasi gerekmektedir.
Belgeleme ve gncelletirme: Oluturulan bir yazilimi, sadece o yazilimi gelitiren
kiilerin kullanabilmesi gibi bir kisitlamanin nne gemek iin ayrintili referanslar
hazirlanmali ve programla ilgili bilgiler verilmelidir.
Bir yazilimda, o yazilimi kullanan kii veya kurulularin yeni gereksinimleri ve degien
koullar nedeniyle degiiklikler yapilmasi gerekli olabilir. Bu degiikliklere gncelleme adi
verilir. Iyi bir programda bulunmasi gereken zellikler arasinda gncelleebilme n siralarda
yer almaktadir.





Algoritma ve Programlamaya Giri 3 gr. Gr. Mustafa AKSU
ekil 1.1. Yazilim oluturma evrelerini ematik olarak zetlemektedir.

ekil 1.1 Yazilim oluturma evreleri
1.1. Bilgisayar Programciligi
Nedir bu bilgisayar programciligi? Evet birok kii bilgisayar programcilarinin ne ile
ugratigini bilir fakat nasil ugraip neler yaptigini pek bilmez... nce bilgisayar dnyasinda
sika kullanilan bir kelimeden bahsedelim "yazilim. Yazilim (software) kelimesi bilgisayar
programlama dilleriyle oluturulan dokmanlari, dosyalari ifade eder. Yani bilgisayarinizda
Algoritma ve Programlamaya Giri 4 gr. Gr. Mustafa AKSU
iletilmek, alitirilmak zere tasarimlanmi dosyalar yazilim kapsamina girer. Yazilim
programlama dilleri ile tasarlanir ve yazilir. Programlama dilleri, bilgisayarinizin donanimini
(ekran karti,ses karti,modem...) sizin en rahat biimde kullanabileceginiz dzeye getirmeye
aliir. Yani bilgisayarin o soguk 1010110 gibi rakamlarini sizin zevkle kullandiginiz
programlara, iletim sistemlerine, oyunlara evirir.
rnegin kullanilmakta olan Windows iletim sistemi onbinlerce sayfadan, milyonlarca
bilgisayar kodunun bir araya gelmesinden oluur. Ite iin tm zorlugu, o kodlarin arasinda
dolaan, hata mesajlarini gnlerce o kodlari gzden geirerek arayan, sandalye tepesinde
saatlerce ayni ekrana bakarak ilgin grntler sergileyen programcilarin zerindedir...
Bilgisayar programcilari iini zevkle yapan ve iini bir hobi edinmi insanlardan oluur. Aksi
halde yogun konsantrasyon ve sabir isteyen bu ii yapmak airi zorlair. Programlama dilleri
kendi aralarinda siniflara ayrilmilardir. Insanin en zor grenebilecegi, anlayabilecegi yani
1100101 gibi makina kodlarina yakin diller en alt seviyeli programlama dilleri, insanin en kolay
anlayip kullanabilecegi ve insan diline yakin zellikler gsteren diller ise en yksek seviyeli
programlama dilleridir. imdi bu siniflandirmaya 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: Bilgisayarin alima dilleri 1 ve 0'lardan oluur...

Bu dillerin kullanildigi alanlara rnek verirsek;
1 ) Bilim ve Mhendislikte: Pascal,C,C++,Fortran...
2 ) Veritabani Programciliginda: Dbase,Acces,Foxpro,Sql...
3 ) Yapay Zeka Kullaniminda: Prolog,Lisp...
4 ) Sistem Programciliginda: C,C++ ve sembolik makina dilleri...
Bir bilgisayar programi nasil yazilir? Bir yazilim degiik dillerle oluturulabilir fakat izlenen
yntemler genelde birbirine benzer. rnegin Algoritma... Algoritma, elimizdeki sorunun
zmne gidebilmek iin tasarlanan yollar, yntemlerdir. rnegin bir arkadainiza daha nce
gitmedigi bir yerdeki bir postaneyi tarif edeceksiniz. Bunun iin anlatimda genelden zele
giden bir yol izlersiniz. nce gidecegi semti sonra caddeyi sonra postanenin oldugu yn tarif
eder son olarak da kolay bulmasi iin postanenin evresindeki gze batan zelliklerden
bahsedersiniz. Ite bu yaptiklariniz bir algoritmadir. Ve amaciniz arkadainiza postaneyi bu
algoritma yardimiyla tarif etmektir... Bilgisayar programlama dilleri de programcilikta bunun
gibi yntemler kullanarak zme gider. Algoritmanin uzunlugu kullanilan programlama dilinin
seviyesi ve problemin karmaikligi ile dogru orantilidir. Yapilan algoritma ve tasarimdan sonra
yazilim aamasina gelinir ve bu aamada yapilacak programin kullanim mr, programin
kullanim dzeyi ve hangi amala kullanilacagi gibi sorularin cevaplarina bakilarak
programlama dili seilir. Dil seimi bazi kriterlere gre yapilmaktadir, rnegin kisa srmesi ve
grsel tasarim iermesi, veritabani iletiimi yogun kullanilmasi gereken bir program yapmamiz
gerekiyor olsun. Bu durumda Assembly dili ile yola iktigimizda bahsedilen proje birka kiilik
deneyimli bir programci grubu ile birka yil alir. C ile iki programci ayni ii drt ayda
VisualBasic veya Delphi ile bir programci bahsedilen ii bir iki aya yakin bir srede yapabilir.
Baka bir aidan rnek verirsek rnegin bir ekran karti programlamamiz gerekiyor ve bu
kartin driver'ini ( srcsn ) biz yazacagiz. Bu durumda bu ii VB veya Delphi ile yapmamiz
imkansizdir, kullanmamiz gereken diller ncelikle Assembly ve C/C++ olmalidir.
Evet, programlama dillerinin kendi alanlari vardir ve her dil kendi alaninda kullanildigi
srece baarili ve etkili kullanilmi olur. Buraya kadar anlatilani zetlersek:
Bir bilgisayar programi yazmak iin belli aamalar vardir ve bu aamalar geildiginde
kodlamaya balanabilir.
Algoritma ve Programlamaya Giri 5 gr. Gr. Mustafa AKSU
Bunlar:
1 ) Analiz
2 ) Algoritma
3 ) Dil Seimi
4 ) Kodlama
Analiz ile gerekletirilmek istenen proje tasarimlanir ve parametreleri aratirilir.
Algoritma ile adimlar tayin edilir. Dil seimi ile en uygun programlama dili seilir. Ve
kodlamaya balanir.

1.1.1 Problem zme ve Algoritmalar
1.1 Problem zme
Problem zmede, soruna hemen girimek yerine, dikkatli ve sistematik yaklam ilke olmaldr.
Problem iyice anlalmal ve mmkn olduu kadar kk paralara ayrlmaldr.
Descartesin "Discourse on Method" isimli kitabnda problem zme teknikleri u 4 madde ile zetlenir;
1. Doruluu kesin olarak kantlanmadka, hibir eyi doru olarak kabul etmeyin; tahmin ve
nyarglardan kann.
2. Karlatnz her gl mmkn olduu kadar ok paraya bln.
3. Dzenli bir biimde dnn; anlalmas en kolay olan eylerle balayp yava yava daha zor ve
karmak olanlara doru ilerleyiniz.
4. Olaya baknz ok genel, hazrladnz ayrntl liste ise hibir eyi darda brakmayacak kadar
kusursuz ve eksiksiz olsun.
1.2 Algoritmalar
Kisaca algoritma belirli bir grevi yerine getiren sonlu sayidaki ilemler dizisidir. Geni
anlamda ise algoritma, verilen herhangi bir sorunun zmne ulamak iin uygulanmasi
gerekli adimlarin hi bir yoruma yer vermeksizin aik, dzenli ve sirali bir ekilde sz ve yazi
ile ifadesidir. Algoritmayi oluturan adimlar zellikle basit ve aik olarak siralandirilmalidir.
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 .
1.1. PROGRAM YAZMA SREC
Problemin farkna varmak,
Problemi analiz etmek,
zm yollar dnmek,
yi zm yollar seip algoritma oluturmak,
Ak diyagram izmek,
Uygun bir dilde kodlamak,
Program test etmek,
Algoritma ve Programlamaya Giri 6 gr. Gr. Mustafa AKSU
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 rnegi gnlk yaantimizdan verelim.
rnek 1: rnegimiz bir insanin evden ikip ise giderken izleyecegi yolu ve iyerine giriinde
ilk yapacaklarini adim adim tanimlamaktadir.
zm 1:

Evden diariya ik
Otobs duragina yr
Durakta gidecegin yndeki otobs bekle
Otobsn geldiginde otobse bin
Biletini bilet kumbarasina at
Inecegin yere yakinlatiginda arkaya yr
Inecegini belirten ikaz lambasina bas
Otobs durunca in
Iyerine dogru yr
Is yeri giri kapisindan ieriye gir
Mesai arkadalarinla selamla
Is giysini giy
Isini yapmaya basla.
Yukaridaki rnekte grldg gibi, evden ise gidite yapilabilecek ilemler adim adim sirasiyla,
kisa ve aik olarak tanimlanmaya aliilmitir. Yukaridaki algoritma kiinin otobs kairma
olasiligi dnlmeden oluturulmutur. Kii duraga geldiginde binecegi otobs kairmi ise
algoritmamiz aagidaki ekilde degitirilebilir.
zm 2:

Evden diariya ik Otobs duragina yr
Otobsn saati gemi?
Durakta gidecegin yndeki bir sonraki otobs bekle
Bir sonraki otobs gelene kadar 4. adimi uygula
Otobsn geldiginde otobse bin
Biletini bilet kumbarasina at
Inecegin yere yakinlatiginda arkaya yr
Inecegini belirten ikaz lambasina bas
Otobs durunca in
Iyerine dogru yr
Is yeri giri kapisindan ieriye gir
Mesai arkadalarinla selamla
Is giysini giy
Isini yapmaya basla.
Her iki rnekte grldg gibi sorunu zme gtrebilmek iin gerekli olan adimlar sirali ve
aik bir biimde belirlenmitir. Algoritmanin herhangi bir adimindaki kk bir yanlilik dogru
zme ulamayi engelleyebilir. Bu nedenle algoritma hazirlandiktan sonra dikkatle incelenmeli
ve varsa adimlardaki yanliliklar dzeltilmelidir.
Algoritma ve Programlamaya Giri 7 gr. Gr. Mustafa AKSU
Programlamanin temeli olan algoritma hazirlanmasinda dikkat ekici bir nokta, ayni sorunu
zmek iin hazirlanabilecek olasi algoritma ayisinin birden ok olmasidir. Baka deyile, bir
sorunun zm iin birbirinden farkli birden fazla sayida algoritma hazirlanabilir. Bu da
gsteriyor ki herhangi bir problemin zm iin birbirinden farkli yzlerce bilgisayar programi
yazilabilir.
Bir bilgisayar programi iin hazirlanacak olan algoritma da ayni ekilde zm yolunu bilmeyen
bir kiiye, zme ulamak iin neler yapmasi gerektigi anlatiliyormu gibi hazirlanmali ve
eksik bir nokta birakmaksizin gerekli tm adimlari aik ve dzenli olarak iermelidir. zm
iin kullanilacak bilgilerin nereden alinacagi, nerede saklanacagi ve zmn program
kullanicisina nasil ulatirilacagi algoritma adimlari arasinda belirtilmelidir.
Aagida degiik ilemlere ilikin algoritma rnekleri verilmitir.
rnek 2: Iki sayiyi toplamak iin gerekli programa ait algoritmanin oluturulmasi.
Algoritma:

1. Birinci sayiyi gir
2. Ikinci sayiyi gir
3. Iki sayinin toplamini yap
4. Toplamin degerini yaz
5. Bitir.
Bu tam bir algoritmadir. Szcklerin ortaya ikaracagi yanli anlamalarin ortadan kaldirmak
amaciyla semboller ve matematik dilini gerektiren bazi kisaltmalar kullanmak daha uygun
olacaktir. Bir algoritma yazilirken su metot izlenmelidir:
Programda kullanilacak elemanlari temsil etmek zere uygun isimler Veya
degikenler se.
Bazi isimlere balangi degeri olarak zmn gerektirdigi uygun degerler ver.
Gerekirse programa girilecek verileri dzenle.
Cebirsel notasyon ve kararlar kullanarak aritmetik ilemleri gerekletir.
ikisi dzenle.
Bitir.
Yukarida iki sayinin toplanmasi iin oluturdugumuz algoritmayi bu yeni gereksinimlere
uyarak yeniden yazalim.
Toplam adi iin Z, Birinci sayi iin X, Ikinci sayi iin Y
degerleri kullanilirsa;
Algoritma:

1. X degerini gir
2. Y degerini gir
3. Z ? X+Y
4. Z' yi yaz
5. Bitir.
Grldg zere bu ekilde bir algoritma ile zm yolunu izlemek daha kolaydir. Bundan
sonra verilen rneklerde bu tip algoritma kullanilacaktir.

Algoritma ve Programlamaya Giri 8 gr. Gr. Mustafa AKSU
rnek 3: Iki sayinin ortalamasini bulan programa ait algoritmanin oluturulmasi
Algoritma:

1. X degerini gir
2. Y degerini gir
3. Z ? X+Y
4. Ort? Z/2
5. Ort degerini yaz
6. Bitir.
Bu rnekte Ort degeri ile iki sayinin ortalamasi temsil edilmitir.

rnek 4: Be sayinin toplamini ve ortalamasini veren programa ait algoritmanin
oluturulmasi
Toplam adi iin Top
Ortalama adi iin Ort
Girilen sayilar iin X
Arttirma iin Saya kullanilirsa
Algoritma:
1. Top ? 0, Saya ? 0
2. X'i gir
3. Top? Top+X
4. Saya ? Saya +1
5. Eger Saya <5 ise A2'ye git
6. Ort? Top/5
7. Top ve Ort degerlerini yaz
8. Bitir.

rnek 5: Kenar uzunluklari verilen dikdrtgenin alan hesabini yapan programa ait
algoritmanin hazirlanmasi. Kenar uzunluklari negatif olarak girildigi durumda veri girii
tekrarlanacaktir.
Dikdrtgenin kisa kenari : a
Dikdrtgenin uzun kenari : b
Dikdrtgenin alani: Alan
Algoritma:
1. a degerini gir
2. a<0 ise 1. adimi tekrarla
3. b degerini gir
4. b<0 ise 3. adimi tekrarla
5. Alan ? a*b
6. Alan degerini yaz
7. Bitir.








Algoritma ve Programlamaya Giri 9 gr. Gr. Mustafa AKSU

rnek 6: apraz dviz kuru hesabi yapan programin algoritmasinin oluturulmasi. Bu
algoritmanin oluumunda veriler; 1 Amerikan dolarinin TL kariligi, hesaplanacak $ miktari,
iki ise verilen $'in TL kariligi olacaktir.
Dolarin degeri :Doldeg
Girilen Dolar miktari :Dolar
TL kariligi :Tlkar

Algoritma:

1. Doldeg'i gir
2. Doldeg<0 ise 1. adimi tekrarla
3. Dolar'i gir
4. Dolar<0 ise 3.adimi tekrarla
5. Tlkar? Doldeg*Dolar
6. Tlkar degerini yaz
7. Bitir
rnek 7: Verilen bir sayinin faktriyelini hesaplayan programin algoritmasinin oluturulmasi
sayinin faktriyeli :Fak
Faktriyel degikeni :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. adima geri dn
7. Fak degerini yaz
8. Bitir.
Bu algoritmada 1. adimda X 'e 0 ve Fak degikenine 1 degeri ataniyor. 2. adimda Y degeri
giriliyor ve 3. adimda Y degerinin 0 dan kk bir deger olup olmadigi denetlenerek,
sonuca gre gerekli komut veriliyor. 4. adimda X'in degeri 1 arttiriliyor ve 5. adimda X iin
Fak degeri hesaplaniyor. 6. adimda X in degerinin faktriyeli hesaplanacak sayidan kk
olmasi durumunda 4. adimdan itibaren ilemlerin tekrarlanmasi komutu veriliyor, X' in
degerinin Yiye eit olmasi durumunda ilemler tamamlanarak hesaplanan degerin yazdirilmasi
ileminden sonra programin alimasi sona ermektedir.
1.1.2 Aki Diyagramlari
Gelitirilecek olan yazilimin genel yapisinin ematik gsterimine akis diyagrami adi verilir.
Akis diyagramlari, yazilimi oluturacak program paralarini ve bu paralarin birbirleri ile olan
ilikilerini belirler. Bir bilgisayar programinin oluturulmasinda akis diyagramlarinin
hazirlanmasi, algoritma oluturma aamasindan sonra gelmektedir. Bilgisayar programinin
oluturulmasi sirasinda algoritma aamasi atlanarak, dogrudan akis diyagramlarinin
hazirlanmasina balanabilir. Programlama tekniginde nemli lde yol almi kiiler bu
aamayi da atlayarak direkt olarak programin yazimina geebilirler.
Akis diyagramlarinin algoritmadan farki, adimlarin simgeler seklinde kutular iinde
yazilmi olmasi ve adimlar arasindaki ilikilerin (i akii) oklar ile gsterilmesidir.
Algoritma ve Programlamaya Giri 10 gr. Gr. Mustafa AKSU

Akis diyagramlarinda kullanilan semboller, anlamlari ve kullani amalari aagidaki tabloda
verilmitir.
Tablo 1. Aki diyagramlarinda kullanilan temel semboller ve anlamlari


Akis diyagraminin balangi ve biti yerlerini gsterir. Balangi
simgesinden iki oku vardir. Biti simgesinde giri oku vardir.



Diardan veri girii. Veri okutma ilemleri iin.




Aritmetik ilemler ve degiik atama ilemlerinin temsil edilmesi iin
kullanilir.

Kontrol ve karar verme ilemlerini temsil eder.


Oklar Diyagramin akis ynn gsterir.


Belgeye, yaziciya, ekrana ikti iin kullanilir.



Bu sembolleri daha da ogaltmak mmkn fakat temel olarak aki diyagramlarinda bu ekiller
kullanilacaktir.
Ayrintili bir akis diyagrami, yazilimi oluturan ilemleri ve ilikilerini en kk detayina kadar
belirler.
Bir bilgisayar programinin gelitirilmesinde kullanilan programlama dili ne olursa olsun bu
programlarin akis diyagramlarinda genel olarak yalniz basit mantiksal yapi kullanilir. Bu
mantiksal yapilardan en basiti sirali yapidir(ekil 1.2). Sirali yapi, hazirlanacak programdaki
her ilemin mantik sirasina gre nerede yer almasi gerektigini vurgular. Bu yapi sona erinceye
kadar ikinci bir ilem balayamaz.

Algoritma ve Programlamaya Giri 11 gr. Gr. Mustafa AKSU
Mantiksal yapilardan ikincisi Karar Verme yapisidir (ekil 1.3). Programlama sirasinda
If...Then... Else yapisi ile taniyacagimiz bu mantiksal yapilar, birden fazla sirali yapi
seenegini kapsayan modllerde, hangi artlarda hangi sirali yapinin seilecegini belirler.

nc mantiksal yapi eidini tekrarli yapilar (ekil 1.4) oluturmaktadir. Bu yapilara
Pascal programlama dilinde For (ekil 1.4), While ve Repeat..Until yapisi adi da verilir.
artlara gre degiik ilem gruplarinin yapilmasini saglar. Bu yapi yukarida sz edilen iki
yapinin eitli kombinezonlarin tekrarlanmasindan olumutur.
Sz konusu degiik yapi, degiik kombinezonlarda kullanilarak istenilen ilevleri
yerine getirecek programlar hazirlanabilir. Programlarin bu basit yapi ile sinirlandirilmasi
program modllerinin daha kolay tasarlanmasini saglar.

ekil 1.4. Tekrarli yapilar


Algoritma ve Programlamaya Giri 12 gr. Gr. Mustafa AKSU
1.1.3. Akis diyagrami rnekleri
Bu blmde, szl veya yazili olarak oluturdugumuz algoritmanin programa
dntrlmesi sirasinda programin alima sirasini da gsteren akis diyagramlariyla ilgili
rnekler aagida verilmitir.
rnek 1: Diardan girilen bir sayiyi okuyup bu sayiyi tekrar yazdiran programin aki emasini
iziniz.









rnek 2: Diardan girilen iki sayiyi toplayip sonucu ekrana yazdiran programin aki emasini
iziniz.


























Bala
Sayi'yi oku
Sayi'yi
Yazdir
Bitir
Bala
X,Y oku
Toplam'i
Yazdir
Bitir
Toplam=X+Y
Algoritma ve Programlamaya Giri 13 gr. Gr. Mustafa AKSU
rnek 3: Diardan girilen iki sayiyi toplayip bunlarin ortalamasini bulup toplam ve ortalama
sonucunu ekrana yazdiran programin aki emasini iziniz.

































Bala
X,Y oku
Toplam ve
ort'u
Yazdir
Bitir
Toplam=X+Y
Ort=toplam/2
Algoritma ve Programlamaya Giri 14 gr. Gr. Mustafa AKSU
rnek 4: 1'den 100'e kadar olan sayilarin toplamlarini ve ortalamalarini veren
programin aki diyagramini iziniz.









Bitir
Bala
Ortalama ,
Toplam'i yazdir
Algoritma ve Programlamaya Giri 15 gr. Gr. Mustafa AKSU
rnek 5: Diardan girilen N sayisinin faktriyelini hesaplayan programin aki diyagramini
iziniz.





Algoritma ve Programlamaya Giri 16 gr. Gr. Mustafa AKSU
Soru : Bir sayy dardan okuyup tekrar ekrana yazdran problemi yntemle de (Ak diyagram, Algoritma, Pascal) znz.
Algoritma

1. Bala
2. A saysn oku
3. Sayy yazdr
4. Bitir.
Ak Diyagram

Pascal Kodu
Var
A:integer;
Begin
write (Bir say girin);

readln (A);

writeln(Girdiginiz say = , A);

readln;
end.





Algoritma ve Programlamaya Giri 17 gr. Gr. Mustafa AKSU
Soru: Dardan iki say okuyup bunlar toplayarak sonucu ekrana yazdran problemi znz.
Algoritma
1. Bala
2. X,Y saysn oku
3. Toplam= X+Y al
4. Toplam yazdr
5. Bitir.
Ak Diyagram


Pascal Kodu
Var

X,Y,Toplam:integer;
Begin
write (ki say girin);

readln (X,Y);

toplam:=X+Y;
writeln(Saylarn Toplam = , toplam);

readln;
end.




Algoritma ve Programlamaya Giri 18 gr. Gr. Mustafa AKSU
Soru: Dardan iki say okuyup bunlarn aritmetik ortalamasn bulun problemin zm.

Algoritma

1. Bala
2. X,Y saysn oku
3. Toplam= X+Y al
4. ort=toplam / 2 al
5. Toplam ve ortu yazdr
6. Bitir.
Ak Diyagram Pascal Kodu
Var

X,Y,Toplam:integer;
Ort:real;

Begin
write (ki say girin);

readln (X,Y);

toplam:=X+Y;
ort:=toplam / 2;
writeln(Saylarn Toplam = , toplam);

writeln(Saylarn Ortalamas = , ort);
readln;
end.



Algoritma ve Programlamaya Giri 19 gr. Gr. Mustafa AKSU
Soru: Dardan bir say okuyup bu saynn faktriyelini hesaplayan problemin zm.

Algoritma
1. Bala
2. sayac=0, Faktor=1 al
3. Bir say oku (N)
4. sayac=sayac+1 al
5. faktor=faktor*sayac
6. Eer sayac < N ise 4. adma git
7. Faktoru yazdr
8. Bitir.
Ak Diyagram

Pascal Kodu
Var

N,sayac:integer;
Faktor:longint;
Begin
write (Bir say girin);

readln (N);

for sayac:=1 to N do
faktor:=faktor*sayac ;

writeln(Faktriyel = , faktor);

readln;
end.




Algoritma ve Programlamaya Giri 20 gr. Gr. Mustafa AKSU
Soru: 0-100 aralndaki ift saylar toplayp ekrana yazdran problemin zm

Algoritma
1. Bala
2. i=0, top=0 al
3. top:=top+i al
4. i:=i+2 al ;
5. Eger i>=100 ise 6. adima
degilse 3. adima git
6. top degerini yaz
7. Bitir.
Ak Diyagram


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




Algoritma ve Programlamaya Giri 21 gr. Gr. Mustafa AKSU
2. PASCAL PROGRAMLAMA DL YAPISI
2.1. Giri
Bir Pascal programi en genel anlamda ayri kisimdan olumutur. Bu kisimlar bulunmalari
gereken siraya gre aagida verilmitir.
Program Baligi; {Istege bagli}
Tanimlama Blogu; {Degiken sabit varsa}
Begin

Icra Blogu; {Yapilacak Ilemler}

End.
Programlarin asil icra blm son blmdr. Yukarida icra blogu olarak gsterilen bu blm,
Pascal komut cmlelerinden oluur. ICRA blogu, "BEGIN" ile balar "END." ile sona erer. Her
program blogu birden fazla "END" ierebilir. Ancak bu end deyimleri program iinde bulunan
degiik bloklarin sonunu gstermek iin kullanilir ve hi birinin sonunda "." iareti bulunmaz. "."
iareti sadece ana programin sonunu gstermek amaciyla kullanilabilir. Ana programin sonu
haricindeki diger "END" deyimlerinin sonunda ";" iareti kullanilir.
rnek Bir Program:
Program Ilk; Program Bal, sonuna ; konulur.
Const Sabit say tanmlama blm
b =10; b sabitinin deeri 10 dur.
Var Deiken tanmlama blm
a : integer; a says tam saydr.
c : real; c says ondalkl saydr.
Begin Ana program balad.
Write ('a saysn giriniz : '); Ekrana ' ... ' arasndakileri yaz.
Readln(a);
a deikenini (klavyeden) gir. Alt satra
ge. (ln)
c := a + b; a deikeni ile b sabitini topla, c'ye ata.
Writeln('a + b = ' , c);
'...' iindekileri yaz, sonucunu yaz (c'yi), alt
satra ge.
Readln
Klavyeden herhangi bir karakter oku
(Program altrldnda sonucu (c)
ekranda bekletmek iindir. (yazlmasa da
olur). Son satrdan bir onceki satra ;
yazlmasa da olur.
End.
Program sonu (Her Begin'in bir End'i
vardr.Programn sonundaki End'in sonuna
nokta isareti konulur.



Algoritma ve Programlamaya Giri 22 gr. Gr. Mustafa AKSU
Program Baligi: Bir Pascal programinin ilk kismi, kullanilmasi programcinin seimine bagli olan
"program baligi'dir. Program baligi, programa bir isim vermek iin kullanilir ve program
isimlerinde Ingiliz alfabesinde bulunmayan Trke karakterler kullanilmamalidir. Programa
uzun isimler verilebilir ancak szckler arasinda boluk bulunmamalidir.
Tanimlama Blogu: Pascal programinin bu blmnde program icra blogunda kullanilan
sabitler ve degikenlerin isimleri ve bunlarin ne tr sabit/degiken oldugu bildirilir. Bu blok
Pascal programi ierisinde mutlaka belirtilmelidir. rnek olarak, aagida degiik veri
tiplerindeki degikenlerin bir tanimlama blogunda nasil tanimlanabilecegi gsterilmitir.
Tanim Veri Tipi
ABS :REAL;
A :STRING;
B :INTEGER;
C :LONGINT;
F :SHORTINT
;
H :BOOLEAN;
J :BYTE;
KL :WORD;
2.2. zel Semboller ve Pascal Szckleri
2.2.1 zel Semboller
Bir Pascal programinda kullanilabilecek zel semboller A'dan Z'ye byk ve a'dan z'ye kk
Ingiliz alfabesi harfleri, 0-9 arasi rakamlardir. Pascal programlama dilinde kullanilan diger
bazi semboller ve anlamlari aagida tanimlanmitir.

>, <, = Herhangi degiken ve sabitlerin karilatirilmasinda kullanilir.
[ ] Bu iaret iine diziye ait indis numarasi yazilir.
( ) Veri okunmasi, yazilmasi, yazilacak/okunacak bilgilerin balangi ve
bitilerinde kullanilir.
Indisli degiken eleman tanim ayirici.
; Pascal komut ve deyimlerini birbirinden ayirmak iin kullanilirlar.
' (Tek Tirnak) Alfasayisal bilgilerin tanimlanmasinda kullanilir. Bilgilerin balangi
ve bitilerinde kullanilmaktadir.
, Degiken tanimlarinda, okunacak yada yazdirilacak bilgiler arasinda
ayra olarak kullanilir.
: Bilgi karakter yapi tipi tanimlamalarinda ve sayisal bilgilerin iki
formatlarinda kullanilir.
. Bir gruba bagli bir alt grup veya bir kayit saha ismi tanimlarinda
elemanlandirma iareti olarak, sabit bilgilerdeki rakamlarin ondalik
iareti olarak ve Pascal programlarinin sonunu belirlemek amaciyla
kullanilir.
:= Iaretin solundaki degere sagindaki bilgiyi atama ilemini yapar.
{ } Aiklama ifadelerinin balangi ve bitimlerinde kullanilir.
(* *) Aiklama ifadelerinin balangi ve bitimlerinde kullanilir.
2.2.2 Pascal Szckleri
Turbo Pascalda kendi ilevleri diinda kullanilamayacak olan szckler vardir. Bu szckler
ayrilmi szckler olarak tanimlanmakta olup programci tarafindan yeniden tanimlanamaz, bir
degiken ismi olarak kullanilamaz veya degitirilemezler. Bu szcklerin isimleri aagida
verilmitir:

Algoritma ve Programlamaya Giri 23 gr. Gr. Mustafa AKSU
And Asm Array Begin
Case Const Constructor Destruct
Div Do Downto Else
End File For Function
Goto If Implementation on
Inline Interface Label Mod
Nil Not Of Object
Or Packed Procedure Program
Record Repeat Set Shl
Shr String Then To
Type Unit Until Uses
Var While With Xor
2.3. Degiken veya Sabitlerin Tanimlanmasi

Var Blogu:
Pascalda degiken tanimlamak iin VAR blogu kullanilir. Bu blokta bir degiken
tanimlamak iin nce degikenin adi, sonra ": (iki nokta stste) ve son olarak da
degikenin tipi belirtilir. Ayni tipte olan degikenleri virglle ayirarak bir defada da
tanimlayabilirsiniz.
Degiken Tanimlamalarina rnekler:
Var
Yas : shortint;
BOY : byte;
SAYI : integer;
kisisayisi : integer;
BuyukSayi : longint;
Para : real;
Pi : real;
Sayac : word;
Nufus : single;
sayi2 : double;
araLIK : extended;
SaYI3 : comp;
Yeni : byte;
harf : char;
Sayi : integer;
isim, Soyisim : string;
Var blogu baka bir blogun balamasi ile biter. Programinizin daha okunakli olmasi iin
": leri alt alta getirmeye zen gsterebilirsiniz. Unutmayin ki iyi bir programci kodunun
okunurlugundan belli olur.

Const Blogu:
Pascalda sabit tanimlari CONST blogunda yapilir. Sabitlerin zelligi program ierisinde
degerlerinin degitirilememesidir. Bir sabitin tanimlanmasi iin nce sabitin adi, sonra "=
ve sabit degeri yazilir.



Algoritma ve Programlamaya Giri 24 gr. Gr. Mustafa AKSU
Sabit Tanimlamalarina rnekler :
Const

Pi = 3.14;
Pi_Sayisi = 3.1415;
Bu_yil = 1999;
Tarih = '29/10/11999';
isLEMciler = '+ - * /';
iSim = 'Kenan';
SOYAD = 'DEMIR';
YAS =20;
Mesaj = 'Devam etmek iin bir tua basiniz... ';
Avagadro_Sayisi = 6.02E23;
Cosinus_45_derece = 0.7071067;
TelefonNumarasi = '3434343';
Katsayi = 100;
buyuk_mu = false;
dogru = true;
arti = ' + ';
yanlis = 'false';

Bu blokta yapilabilecek diger bir tanim ise degikenlere tipi ile birlikte ilk deger
verilmesidir. Bunun iin nce degikeninizin adini yaziyorsunuz sonra ": koyup tipini
belirliyorsunuz ve ilk deger vermek iin "= yazip ilk degerini veriyorsunuz.

rnek:
Const
Sayac : byte = 0;

Pascal programlama dilinde icra blogu iinde kullanilan degikenler VAR tanim blogu iinde,
sabitler ise CONST blogu iinde tanimlanir. rnegin A,B degerleri degiken ve C degeri sabit
ise bu degerlerin programin tanim bloklarinda ifade edilmesi aagidaki ekilde olacaktir.
VAR
A,B:REAL;
CONST
C=12:INTEGER;
Burada, VAR'dan sonra gelen REAL ifadesi A ve B degikenlerinin gerel sayi veri tipinde oldugunu
belirtirken CONST'dan sonra gelen INTEGER ifadesi C sayisinin integer veri tipi oldugunu
belirtmektedir.

Degikenlere Deger Atama

Pascalda diger programlama dillerinden farkli olarak deger atamasi yapilirken ":=" (iki
nokta st ste ve eittir iaret ikilisi kullanilir). Yani sayi diye bir integer tipindeki
degikene 20 degerini atamak istedigimizde yapmamiz gerekenler yle olacaktir.

rnek:
Var
sayi : integer;
{ sayi adinda integer tipinde bir degiken tanimladik }
...
Algoritma ve Programlamaya Giri 25 gr. Gr. Mustafa AKSU
sayi := 20;
(* sayi degikenine 20 degerini atadik *)
sayi := sayi + 1;
(* sayi degikeninin degerini 1 arttirdik *)
...
Pascalda degikenlere deger atarken iki nokta stst ve eittir birlikte kullanilir. Eittir tek
baina kullanildiginda karilatirma operatr olarak grev yapar.
Degiken veya sabit tanimlarken unlara dikkat etmek gerekmektedir:
1. Bir degiken veya sabit A..Z veya a..z arasindaki harflerle yada _ (alt izgi) ile balar.
ADRES, isim, _faktor gibi.
2. Degiken veya sabitlerde ilk karakter rakam olamaz.
Var
1a, 23B : integer gibi. {Bu tanimlama yanli}
a1, B23 : integer gibi. {Bu tanimlama dogru}
3. Degiken birden fazla kelimeden oluuyorsa kelimeler arasina alt izgi ( _ ) karekteri
konulmalidir.
Var
dairenin_alani : real;
4. Degiken ierisinde sadece Trk alfabesinde olup Ingiliz alfabesinde olmayan
(,,g,G,i,I,,,,,,) karakterler kullanilamaz.
Var
maa, sinif: integer ; {Tanimlamasi yanli}
5. Degiken ierisinde noktalama iaretleri (, . ; ? / { [ ( ) , karilatirma operatrleri ( <,> =),
boluk kullanilamaz.
Var
sinifin.mevcudu: integer; {Tanimlamasi yanli}
6. Tanimlanan degiken veya sabit programlama dilinin komutlari olamaz.
rnek: Var
Read, file : integer ; {Kullanimlari yanli}
Not: integer ; {Kullanimi yanli}
7. Tanimlanan degiken kullanilacak tipe ve kullanim amacina uygun tanimlanmalidir.

Programlara Aiklama Eklenmesi

Program yazimi sirasinda kodlarimiza ok sik ekleme ve ikarmalar yapariz bunlar bazen
programlari iinden ikilmaz hale getirebilir, bunu engellemek iin Pascalda programlara
aiklama satirlari ekleyebilirsiniz. Aiklama satirlari eklemeniz ileride programda yaptiginiz
degiiklikleri ve program akiini kolayca hatirlamanizi ve programinizi inceleyen diger
Algoritma ve Programlamaya Giri 26 gr. Gr. Mustafa AKSU
kiilerin programi kolayca anlamalarini saglayacaktir.

Pascalda aiklama satiri yazimi iin {,} sembolleri veya (*,*) ikilileri kullanilir bunlar
aiklamanin nerede balayip nerede bittiklerini belirtir. Programin derlenmesi esnasinda bu
satirlar derleyici tarafindan gzardi edilir, yani derlenmi kodda aiklama satirlari yer
almaz. Aiklamalar birinci tipte { ile balar } ile biter. Ikinci tipte ise (* ile balar ve *) ile
biter.
Programlarinizda aiklama satirlarina sika yer vermeniz hem sizin hem de programi
inceleyen diger kiilerin programi rahat anlamalarini saglayacaktir.

rnek:
Var
sayi:integer;
{sayi degikeni ka kiinin adini girecegimizi saymak iin kullanildi. Bu bir aiklama
satiridir ve derleyici tarafindan gzardi edilir}
adi:string[20];
(* Bu da bir aiklama satiridir ve bu satir da derleyici tarafindan gzardi edilir*)
Pascalda degiken tanimlamalarinin ve kod satirlarinin sonuna noktali virgl geldigi halde
aiklama satirlarinin sonuna noktali virgl gelmedigine zellikle dikkat edin.
2.4. Pascalda Veri Tipleri
Pascal programlama dilinde kullanilan degiik veri tiplerinin tanimlari ve geerli oldugu alanlar
aagida tanimlanmitir.
2.4.1 Tamsayi veri tipleri
2.4.1.1. Integer Tipi Veriler
Integer tipindeki veriler tamsayilardan olumulardir ve kayar nokta iermezler. Turbo
Pascal'daki integer tipteki tamsayilar -32768 ile +32767 arasinda sinirlandirilmiladir.
2.4.1.2. Word Tipi Veriler
Word Tipi veriler, 0-65535 arasindaki tamsayilardan olumulardir.
2.4.1.3. Shortint Tipi Veriler
-128 ile +127 arasindaki tamsayilardan olumulardir.
2.4.1.4. Byte Tipi Veriler
Byte tipi veriler iaret ve desimal nokta iermeyen 0-255 arasindaki degerlerden oluan
tamsayilardir. Programda, 0-255 arasindaki tamsayilar iin degiken veya sabitlerin Byte tipi
olarak tanimlanmasi bellekten tasarruf saglar.
2.4.1.5. Comp Tip Veriler
Comp tip veriler ok uzun tamsayilarin tanimlanmasi iin kullanilir. Comp veri tipi ile 19-20
basamakli sayilar ifade edilir. Tanim araligi; -2
63
...2
63

2.4.1.5. Longint Tipi Veriler
-2147483648 ile +2147483647 arasinda grev yaparlar ve tamsayilarin menzil olarak en
Algoritma ve Programlamaya Giri 27 gr. Gr. Mustafa AKSU
kapsamlisidir.
2.4.2. Ondalikli Degiken Tipleri
2.4.2.1 Real Tip Veriler
Real tip veriler desimal nokta ieren ve sl formda ifade edilebilen gerel sayilardir. s ifadesi
olarak "E" harfi kullanilmaktadir. Kullanimlari ile ilgili rnekler aagida verilmitir. Tanim
araligi;2.9E-39..1.7E38 'dir. Bellekte 6 byte yer kaplar.
-2.3454
123.11223344
-2.45E+12
2.45E+12
1.123123E-12
Olagan koullarda bir programlama hatasi sz konusu degilse veya ok byk sayilar ile
aliilmiyor ise REAL tip sayilarla alimada bir sorun ile karilamayiz.
Kiisel bilgisayarlarin mikro ilemcileri 80x86 olarak isimlendirilir. Bu ilemci ailesinin ykn
hafifletmek iin 80x87 olarak bilinen matematik ilemcisi kullanilir. Pascalda bu ilemci ile
kullanilmak zere drt tip tanimlanmitir. Bunlar; Single, Double, Extended ve Comp 'tur.
2.4.2.2 Single Tip Veriler
Single tip veriler, 1.5E-45...3.4E38 sayi kmesi araliginda tanimlanabilir. Bellekte 4 byte yer
kaplar.
2.4.2.3. Double Tip Veriler
Double tip veriler, 5.0E-45...3.4E38 sayi kmesi araliginda tanimlanabilir. Bellekte 8 byte yer
kaplar.
2.4.2.4. Extended Tip Veriler
Extended tip veriler, 3.4E-4932...1.1E4932 sayi kmesi araliginda tanimlanabilir. Bellekte
10 byte yer kaplar.
80x87 sinifindaki veri tiplerinin kullanilabilmesi iin programin en baina {$N+} derleyici komutu
verilmelidir. Bilgisayarda matematik ilemci yok ise {$E+} matematik ilemci emlasyonu da bu
satira eklenir.
Gnmzn Pentium tabanli bilgisayarlarinda matematik ilemci bulundugundan, 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 elemanindan oluurlar. Char tipi veriler
bir sabit olarak ele alindigindan ' ' ierisinde yazilir.



Algoritma ve Programlamaya Giri 28 gr. Gr. Mustafa AKSU
2.4.3.2. String Tipi Veriler
Bu tip veriler, karakter kmesi eklinde olup ' ' ierisinde yazilirlar.
A:STRING[5];
B:STRING[16];
Burada A isimli karakter kmesi maksimum 5 karakterden, B isimli karakter dizisi ise
maksimum 16 karakterden olumaktadir.
Bu bilgiler ile ilk Pascal programimizi yazabiliriz.

Var
mesaj:string[7];
BEGIN
mesaj :='merhaba' ;
Write('Sayin bilgisayar kullanicisi ',mesaj);
END.
Programimizin alitirilmasiyla ekran grnts aagidaki gibi olacaktir.
Sayin bilgisayar kullanicisi merhaba
rnek :
Klavyeden vize ve final notu girildiginde o grencinin not ortalamasini bulan programi
yaziniz?

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.
2.4.4. Boolean (Dogru , Yanli) Tipi Veriler
Mantiksal ifadeler olarak da isimlendirilebilen Boolean tipi veriler sadece iki degerden
oluurlar. Bunlar "FALSE" ve "TRUE" dir.
Durum: Boolean;
Hata: Boolean;

Algoritma ve Programlamaya Giri 29 gr. Gr. Mustafa AKSU
3. OPERATRLER
3.1. Aritmetik Operatrler
Aritmetik operatrler drt ilem iin kullandigimiz (toplama, ikartma, arpma ve blme) +,
-, / ve * 'dan olumaktadirlar. Tam ve reel sayilarin aritmetik ilemleri iin kullanilan
operatrlere ilikin liste aagidaki tabloda verilmitir.

"+","-" ve "*" ilemlerinde ilem yapilan sayi cinsi reel ise sonu ta reel'dir. Ilem yapilan
sayilar tamsayi ise sonuta tamsayidir. "/" ileminde ise sonu her zaman reel sayidir.

Operatr Adi Anlami
+ toplama Sol ve sagdaki degerleri birbirine ekler.
- ikarma Soldaki degerden sagdaki degerleri ikarir.
* arpma Sol ve sagdaki degerleri birbiri ile arpar.
/ blme(Reel) Soldaki degeri sagdaki degere bler.
Div blme(Tamsayi) Soldaki degeri sagdaki degere bler.
mod kalan Soldaki degerin soldaki degere blnmesinden kalan
Sik sik kullandigimiz bu operatrlerin yaninda iki sayinin blmnden kalani veren MOD, iki
tamsayinin blmnn sonucunda tamsayi reten DIV programlarimizda sik kullandigimiz
aritmetik operatrlerdir.
3.1.1 Div Operatr
Iki tamsayinin blmnn tamsayi kismini verir.
123/4=30.75 123 div 4=30
3.1.2 Mod Operatr
Tamsayi tipindeki operandlarin blmn yapar ve sonucun kalan kismini bir tamsayi deger
olarak retir.
123/4=30.75 123 mod 4 =3
'/' operatr operand olarak kullanilan degerlerin tipi ya da blmn sonu degeri ne olursa
olsun real tipte sonu retir. Bu nedenle bir blmn sonucunun bir tamsayi degikene direkt
olarak aktarilmasi sz konusu degildir.


Mod ve Div ilemlerinin sonulari her zaman tamsayidir.

4 div 12 = 0, 13 div 4 = 3 3 mod 2 = 3, 4 mod 2 = 0
12 div 4 = 3, 16 div 4 = 4 5 mod 2 = 1, 4 mod 0 = (tanimsiz)

3.2. likisel Operatrler
Diger programlama dillerinde de oldugu zere, Pascal programlama dilinde iki veya daha fazla
operand arasindaki ilikilerin aratirilmasini yapan ilikisel operatrler, toplu olarak aagidaki
tabloda verilmitir.



Operatr Adi Anlami
Algoritma ve Programlamaya Giri 30 gr. Gr. Mustafa AKSU
= Eit Sol ve sagdaki degerler birbirlerine eitse
<> Eit degil Sol ve sagdaki degerler birbirlerine eit degilse
< Kk Soldaki deger sagdaki degerden kkse
> Byk Soldaki deger sagdaki degerden bykse
<= Kk yada eit Soldaki deger sagdaki degere eit yada kkse
>= Byk yada eit Soldaki deger sagdaki degere eit yada bykse
3.3. Aritmetik lemlerde lem ncelik Siralari
ncelik Sirasi Aritmetik lem ve bagintili tanimlar
1 iaretli sayisal bilgiler
2 Parantez iindeki ilemler
3 Aritmetik fonksiyonlar
4 s alma
5 arpma ve Blme
6 DIV tam sayiya blme deyimi
7 MOD (Blme ileminde kalan bulma ilemi)
8 Toplama ve ikarma
9 Mantiksal iliki ifadeleri (=, >,<,)
10 Baglanti ifadeleri (not,and,or,xor)
lem nceliginde Bazi Kurallar:
Ayni ncelik sirasina sahip ilemlerde hangisi nce tanimlanmi ise nce onun
ilemi gerekletirilir.
Ilem ncelik sirasi kk olan bir aritmetik ilemin nce yapilmasi isteniyorsa
parantez iine alinmalidir.
I ie birden fazla parantez kullanilmasi durumunda, ilem ncelik sirasi daima en
iteki paranteze ait ileminindir.
3.4. Matematiksel Formller
Normal olarak elle yazilan formllerin bir bilgisayar programina yazimi iin belirli bazi kurallar
vardir. Matematiksel ifadelerin bilgisayarin anlayacagi ekilde yazimi sirasinda dikkat edilecek
nemli bir nokta, matematik operatrleri arasindaki ilem nceligine dikkat edilmesidir.
Aagida verilen cebirsel ifadelerin Pascal programlama dilinde yazimlarini inceleyiniz.

Cebirsel fade Pascal'da Yazm Biimi
b
2
-4.a.c b*b-4*a*c
(b
2
-4.a.c)
1/2
sqrt(b*b-4*a*b)
x + y
------
x - y
(x + y) / (x - y)



Algoritma ve Programlamaya Giri 31 gr. Gr. Mustafa AKSU
Yukaridaki rnekte ilem sirasi;
1. Z'nin karekk alinir
2. 1 no.lu ilem 2 sabiti ile arpilir
3. (2-x) degeri hesaplanir
4. 2 no.lu iten elde edilen sonu 3 no.lu ilemin sonucuna blnr.

============================================

Konu Sonu alima Sorulari

Soru 1. Aagida verilen matematiksel eitlikleri Pascal programlama dili
kurallarina gre yaziniz.
Soru 2. Bir grencinin 1. Yazili, 2.yazili ve szl notlarinin ortalamasini
hesaplayan programi yaziniz.

Soru 3. Bir dik gende Hipotens hesaplayan programi yaziniz.


Algoritma ve Programlamaya Giri 32 gr. Gr. Mustafa AKSU
4. GR/IKI DEYMLER
4.1. Giri
Giri/iki deyimleri bilgisayarin ana bellegi ile evre aygitlar arasinda bilgi transferi yaparlar.
Herhangi bir evre aygitindan (klavye gibi) bir verinin bellege okutulmasi veya ana bellek
zerindeki bir verinin evre aygitlara (Ekrana) gnderilmesi giri/iki deyimleri ile
gerekletirilir. Genellikle giri iki deyimi olarak aagida tanimlanan deyimler kullanilmaktadir.
4.2 Read-Readln
Pascal 'da okuma ilemi iin kullanilan komutlar READ ve READLN olup genel kullanim yapisi u
ekildedir;
Read(A1,A2,A3,...,An);
Readln(A1,A2,A3,...,An);
Read ile Readln arasindaki fark: Read, okuma ilemi tamamlandiktan sonra ayni satirda
kalinmasini, Readln ise yeni bir satira gelinmesini saglar. Bir Pascal programi ierisinde bu iki
komutun kullanimi aagidaki program parasinda verilmitir.
Var
s,a,n:real;
begin
Read(s,a,n);
end.
Okunacak degerlerin dzeni;
12.45 43.543 62.12

Ayni degerleri Readln ile okutturmak istersek;
Var
s,a,n:real;
begin
Readln(s,a,n) ;
end.
Okunacak degerlerin dzeni yukaridaki okuma dzeni ile ayni olabilecegi gibi her deger ayri bir
satirda verilebilir, her hangi satirlarda verilebilir, rnek olarak s, a ve n degerleri aagidaki okuma
dzeninde okutturulmutur.
12.45
43.543
62.12


Algoritma ve Programlamaya Giri 33 gr. Gr. Mustafa AKSU
4.3. Write-Writeln
Pascal programlama dilinde yazma ilemi iin WRITE ve WRITELN komutlari
kullanilmaktadir. Bu komutlarin genel kullanim yapisi u ekildedir;
Write(A1,A2,A3,...,An)
Writeln(A1,A2,A3,...,An)
Iki kullanim ekli arasindaki fark, Read ile Readln arasindaki fark gibidir. Ifadeler Write ile
yazdirildiktan sonra kursr ayni satirda bekleyecektir, Writeln ile yazdirilmasi durumunda ise
kursr bir sonraki satira geecektir.

Var
s,a,n:integer;
begin
s:=3;
a:=9;
n:=5;
Write(s);
Write(a);
Write(n);
end.
Programin alitirilmasiyla elde edilen sonu;
395 olacaktir.
Ayni degikenleri Writeln ile yazdirdigimizda;
Var
s,a,n:integer;
begin
s:=3;
a:=9;
n:=5;
Writeln(s);
Writeln(a);
Writeln(n);
end.

3
9
5
iktisi elde edilecektir.






Algoritma ve Programlamaya Giri 34 gr. Gr. Mustafa AKSU
4.4. Yazim in Format Belirleme

Write ve Writeln deyimi ile yapilan bilgi ikilarini dzenlemek iin yazim formatlari
kullanilir. Write yada WriteLn komutlariyla ekrana "510.4542" gibi reel bir sayi yazdirilmak
istendiginde, ekranda 5.1045420000E+02 gibi karmaik bir deger grlr. Bu degeri
anlailir bir ekle dntrmek iin bir yazim formati belirtilmesi gerekir.

rnek:
var
a:real;

begin
a:=510.4542;
write(a:6:2);
end.

Bu rnekte ekrana "510.45" eklinde bir sayi yazar. Buradaki 6 nokta da dahil sayinin
karakter uzunlugunu, 2 ise virglden sonraki kismin uzunlugunu ifade eder
Yazdirilmak istenilen degerin tipine bagli olarak iki farkli yazim formati kullanilir.
1. Yazim Formati (X:n) :Tam sayi veya karakter tabanli degerleri ekrana formatli
yazdirirken bu format kullanilir. Bu formata gre yazdirilmak istenilen X degeri n
karakterlik alanda saga dayali olarak yazilir. X degerini oluturan dijit veya karakterin
uzunlugu n sayisindan kk ise, aradaki fark kadar sol tarafta boluk birakilir. X degerinin
uzunlugu n sayisina eit veya byk ise yazdirma ilemi format belirtilmemi gibi
gerekletirilir.
rnek:
Const
i:integer=567;
b:boolean=True;
c:char='b';
h:string[6]='Pascal';
begin
Writeln(`123456789');
Writeln;
Writeln(i:9);
Writeln(b:9);
Writeln(c:9);
Writeln(h:9);
Writeln(i:2);
Writeln(h:5);
end.
2. Yazim Formati (X:n:k) : Bu yazim formati real sayilar zerinde alimaktadir. Bu
yazim formatiyla reel sayilar ssz notasyonda yazdirilir. Yazdirilacak X real degeri n karakterlik
alanda saga dayali olarak ssz yazdirilir, k ise n karakterin sonundaki kesirli kismi
gstermektedir.
rnegin A degeri, A:7:2 eklinde yazdirilmak istenirse; program real sayi iin 7 karakterlik
yer ayirir. Bu alanin son iki hanesi ondalikli kisim iin sondan 3. hanesi ise desimal nokta iin
kullanilir.
Sayinin tamsayi kismi ayrilan alanin uzunlugundan kk ise, aradaki fark kadar sol tarafta
boluk birakilir. Yazdirilacak sayinin tam sayi kismi bu alana sigmiyor ise, tamsayi iin ayrilan
alanin uzunlugu yazdirilan sayinin tamsayi alan uzunluguna eit byklkte kabul edilir. Kesirli
kismi ayrilan alandan daha kk ise aradaki fark kadar sag tarafa 0 dijiti ilave edilir. Kesirli
kisim alana sigmiyorsa yuvarlatilarak yazilir.
Algoritma ve Programlamaya Giri 35 gr. Gr. Mustafa AKSU
Yazim sirasinda kesirli alanin yazilmasi istenmiyorsa k sayisinin "0" yazilmasi gerekir. k sayisinin
sifir olmasi desimal noktanin yok olmasini saglar.
Bu anlattigimiz yazim formatlarini bir tablo halinde zetleyecek olursak:

Tip Yazm Format Aklama
integer Deiken : n
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 Deiken:n:k
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
Char
Deiken:n
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.

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.
Programin alimasiyla elde edilen sonu aagida verilmitir. Program sonucuna gre sondan
2. ve 3. satirlarin ayni olduguna dikkat ediniz.
123456789
*********
123.1279
123.128
123.13
123
123.13
123.13
123.13
123






Algoritma ve Programlamaya Giri 36 gr. Gr. Mustafa AKSU
5. Karilatirma Komutlari

Pascalda genel olarak kullanilan karilatirma deyimleri unlardir:
IF..THEN..ELSE
CASE..OF
5.1. If...Then...Else
Eger.ise.degilse (If..then..else) Karar yapisi : Program yazarken en ok yapilan ilerin
bainda elinizdeki verilere bakarak bir karar vermek ve programin akiini bu karara gre
ynlendirmek gelir. Iyi programda gerekli yerlerde dogru ve etkili karar yapilari oluturmak
ok nemlidir. nk bir programda en yava ileyen komutlardan birisi karilatirma
komutlaridir. Pascalda en ok kullanilan karilatirma ve kontrol komutu If..then..else dir.

If deyiminden sonra yapilacak karilatirmanin sonucu dogru (True) ise then
deyiminden sonraki blok iler. Eger karilatirmanin sonucu yanli (False) ise bu sefer de
else deyiminden sonraki blok iler. Else deyimi seimlik bir deyimdir. Yani isterseniz, ya da
gerekmezse bu kismi kullanmayabilirsiniz. Bu durumda eger karilatirma sonucu yanli ise
program bir sonraki komutla akiina devam eder.
Genel kullanim kalibi u ekildedir:
if (art) then
Yapilmasi istenen ilem veya ilemler
Else
Yapilmasi istenen ilem veya ilemler
Eger else kullanacaksaniz else den nceki satirda noktali virgl kullanmamalisiniz.
...
If then
begin
.
komutlar
.
end;
[ else
begin
.
komutlar
.
end;]
.
if veya Elseden sonra 1den fazla komut veya ilem varsa begin - end blogu
kullanilmalidir.



Algoritma ve Programlamaya Giri 37 gr. Gr. Mustafa AKSU
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;

Eger isterseniz i ie if kullanmaya devam edebilirsiniz. Bu olduka karmaik bir yapi
oluturabilir ancak bazi durumlarda bylesi uygulamalar zaruri olur.

rnek: Girilen bir sayinin tek veya ift oldugunu bulan program.
Var
a : Integer;
Begin
Write('Bir sayi giriniz: '); Readln(a);
If (a mod 2 = 1) Then
Writeln ('Girdiginiz Sayi Tekdir')
Else
Writeln ('Girdiginiz Sayi ifttir');
Readln;
End.
rnek: Girilen sayidan en bygn bulan program.
Var
a, b, c, EnBuyuk : Integer;
Begin
Write(' Sayi giriniz: ');
Readln(a, b, c);
If (a>=b) and (a>=c) Then EnBuyuk:=a
Else
If (b>=a) and (b>=c) Then EnBuyuk:=b
Else
EnBuyuk := c;
Writeln('En Byk Sayi = ', EnBuyuk);
Algoritma ve Programlamaya Giri 38 gr. Gr. Mustafa AKSU
Readln;
End.
rnek : Girilen bir sayinin pozitif veya negatif oldugunu syleyen program.

Var
Sayi : integer;
begin
write(`Bir sayi girin : `);
readln(Sayi);
if Sayi < 0 then
writeln(`Sayi negatiftir)
else
writeln(`Sayi Pozitiftir);
end.
rnek: Bir grencinin vize ve final notunu okuyup ortalamasini vizenin % 40 ve finalin
%60 `ini alarak hesaplayip ortalama 60dan byk veya eitse geti degilse kaldi yazan
progarmi yaziniz.
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.


Algoritma ve Programlamaya Giri 39 gr. Gr. Mustafa AKSU
rnek: 1-100 araligindaki tek sayilari toplayan programi yaziniz.
var
i,toplam:integer;
begin
toplam:=0;
for i:=1 to 100 do
begin
if (i mod 2=1) then
toplam:=toplam+i;
end;
writeln('tek sayilarin toplami = ',toplam);
readln;
end.
rnek: Diaridan girilen rastgele 10 tane sayidan ka tane tek ve ift var ayrica tekleri
ayri iftleri ayri toplayan programi yaziniz.
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 sayi girdiniz bunlarin toplami = ',tektop);
writeln(cif,' Adet cift sayi girdiniz bunlarin toplami = ',ciftop);
readln;
end.
Algoritma ve Programlamaya Giri 40 gr. Gr. Mustafa AKSU
rnek : grencinin Vize ve final notundan ortalamasini hesaplayip geti veya kaldi 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 Ortalamaniz = ', Ortalama:4:2)
Else
Writeln('Kaldiniz Ortalamaniz = ', Ortalama:4:2);
End
Else
Writeln('Yanli giri yaptiniz...');
Readln
End.

============================================

Konu Sonu alima Sorulari

Soru 1. Vergi iadesini hesaplayan programi yaziniz. ( Emekli ayligi alanlar iin: 0-180
milyon arasi %10, 180-360 milyon arasi %20, 360-600 milyon arasi %12, 600 milyon
zeri % 5)

Soru 2. kenari girilen bir genin ekenar-eitkenar-ikiz kenar olup olmadigini bulan
programi yaziniz.

Soru 3. Iki sayinin Ortak Blenlerinin En Bygn (OBEB) ve Ortak Katlarinin En
Kgn (OKEK=A'B/OBEB) bulan programi yaziniz.

Soru 4. sayinin en kgn bulan programi yaziniz.

Soru 5. 4 ilem yapan basit bir hesap makinesi programi yaziniz.

Soru 6. Bir sayinin tek mi ift mi oldugunu bulan programi yaziniz.

Soru 7. y=x2+ax+c denklemin kklerini bulan programi yaziniz.



Algoritma ve Programlamaya Giri 41 gr. Gr. Mustafa AKSU
5.2. case...of

Bir nceki konuda bahsedilen kontrol deyimi if..then..else genellikle az sayida olan
karilatirmalarda kullanilir. Ama eger yapilan karilatirma ok karmaiksa o zaman bu
deyimi kullanmak olduka zor olur ve ok fazla miktarda mantik hatalari bulunur. Bunu
engellemek iin blok if deyimi diyebilecegimiz Case yapisini kullaniriz.

Case yapisinda karilatirmanin yapilacagi degikenin alabilecegi degerler gre eitli
ilemleri toplu olarak yapabiliriz.
Casein genel kullanimi yledir:
case degiken of

durum-1 : ilem(ler);

...

durum-n : ilem(ler);

end;


Veya


case degiken of

durum-1 : ilem(ler);

...

durum-n : ilem(ler);

else

ilem(ler)

end;
Durum dedigimiz yerlerde bir yada daha fazla, virglle ayrilmi, sabitler veya araliklar
olabilir.

Mesela :

case Ch of

'A'..'Z', 'a'..'z' : WriteLn('Harf');

'0'..'9' : WriteLn('Rakam');

'+', '-', '*', '/' : WriteLn('Operator');

else

WriteLn('zel karakter');

End;
Algoritma ve Programlamaya Giri 42 gr. Gr. Mustafa AKSU

Else kismi ise tamamen seimliktir. Istemezseniz kullanmayabilirsiniz.

imdi bir soruyu hem if-then else deyimi ile hem de case-of deyimi ile zp farklari
zorluklari grelim.
Soru: Balangi degeri I=500 olan I sayisi; diaridan girilen sayi 0dan byk ve 128den
kkse I degikenine 1 eklesin, 128..256 arasinda ise Iya 10 eklesin, 256dan bykse
Iya 100 eklesin. Ayni zamanda eger bu sayi 0dan kk ve -127den bykse Idan 1
eksiltsin, -127..-255 arasindaysa 10 eksiltsin ve -255den de kkse Idan 100 eksiltsin.

if'li zm

Var

I : integer = 500;

Sayi : integer;

Begin

Write(`Bir sayi 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(`Ilem sonucu I da kalan=` , I);

End.

Bir if deyimi iin olduka karmaik olan bu rnegi bir de case-of ile zelim.
Case-of'lu zm


Var

I : integer = 500;

Sayi : integer;

Begin
Algoritma ve Programlamaya Giri 43 gr. Gr. Mustafa AKSU

Write('Bir sayi girin : ');

readln(Sayi);

case Sayi of

1..127: I:= I + 1;

128..255: I := I + 10 ;

256..32767 : I := I + 100;

-127..0 : I := I - 1;

-255..-128 : I := I - 10;

-32768..-256 : I := I - 100;

end;

writeln('Islem sonunda I degeri =',I);

end.
rnek: Aagida kiinin yai girildiginde, yaina uygun mesajlar veren bir Pascal
programi verilmitir.
Var
yas:integer;
Begin
Write(`Yainizi Giriniz :

);
ReadLn(YAS);
CASE yas OF
0..5:Writeln(`Yainiz 0-5 arasinda

);
6..15:Writeln(`Yainiz 5-15 arasinda

);
16..35:Writeln(`Yainiz 15-35 arasinda

);
36..50:Writeln(`Yainiz 35-50 arasinda

);
51..85:Writeln(`Yainiz 50-85 arasinda

);
else
Writeln(`ok Yaayin);
end;
Readln;
End.


rnek: Girilen rakam notunu harf notuna dntren programi yaziniz.

Var
rnot:integer;

Begin
write('Rakam notunu Giriniz');
readln(rnot);
case rnot of
0..29:write('Notunuz FF');
Algoritma ve Programlamaya Giri 44 gr. Gr. Mustafa AKSU
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('Yanli Not');
end;
readln;
end.


rnek : Diardan iki sayi ve ilem okuyup ileme gre sonucu hesaplayip yazdiran
programi yaziniz.

var x,y:integer;
a:char;
sonuc:
real;
begin
writeln('1.sayiyi giriniz..');readln(x);
writeln('2.sayiyi 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('yanli ilem yaptiniz');
end;
write('ilemim sonucu:',sonuc:4:2);
readln;
end.

============================================
Konu Sonu alima Sorulari

Soru 1 : Yilin aylarini rakam olarak girdigimizde bu ayin hangi mevsimde oldugunu
ekrana yazan programi yaziniz.

Soru 2 : Bir - Milyar arasindaki girilen bir sayinin ka basamakli oldugunu ekrana yazdiran
pascal programini yaziniz.
Algoritma ve Programlamaya Giri 45 gr. Gr. Mustafa AKSU
6. DNG (TEKRARLAMA) DEYMLER
6.1 Giri
Bu blmde program ierisinde belirli bloklarin herhangi bir arta bagli olarak veya arttan
bagimsiz bir ekilde ardiik olarak alitirilmasi iin kullanilan deyimler zerinde durulacaktir. Bu
tekrarlama deyimleri FOR-DO, REPEAT-UNTIL, WHILE-DO eklindedir.
6.2 For-Do
For deyimi, bir program parasinin herhangi bir boolean artina bagli olmaksizin belirlenen
sayida st ste alitirilmasi iin kullanilir. For deyiminin genel kullanim ekilleri aagida
verilmitir.
1. FOR Dng Degikeni:=Dng Balangici to dng sonu do
Begin

Yapilacak ilemler

End;
Bu kullanim eklinde balangi degeri biti degerinden kk olmak zorundadir. TO ifadesiyle
balangitan bitie kadar artarak tekrar yapilacagini, DO ifadesi de tanimlanan ilemlerin
tekrarlanacagini bildirir.
2. FOR Dng Degikeni := Dng_Balangici DOWNTO Dng_sonu DO
Begin

Yapilacak ilemler

End;
For deyiminin bu kullanim eklinde balangi degeri biti degerinden daima byk olup
DOWNTO ifadesi de dng degikeninin tekrarlama ileminde azalacagini belirtir. DO ifadesi ise
belirtilen ilemlerin dng sayisinca tekrarlanacagini bildirir.
Pascal dilinde diger programlama dillerinden farkli olarak balangi degerinden son degere
artilar/azalmalar birer birer olmaktadir. Aagidaki rnek programlari inceleyiniz.
rnek : Diardan girilen bir sayinin karesini kpn %18ini ve faktriyelini hesaplayan programi
yaziniz.
var
i,say,kare,kup,fak:integer;
yuzde:real;
begin
write('Sayi giriniz');
readln(say);
kare:=say*say;
kup:=say*kare;
Algoritma ve Programlamaya Giri 46 gr. Gr. Mustafa AKSU
yuzde:=say*0.18;
fak:=1;
for i:=1 to say do
fak:=fak*i;
writeln('Sayi Karesi Kubu Yuzdesi Faktoriyeli');
write(' ',say,' ',kare,' ',kup,' ',yuzde:4:2,' ',fak);
readln;
end.
rnek : Bir den girilen N sayisina kadarki tam sayilari toplayan pascal programini yaziniz

Var
i, N, Toplam : Integer;
Begin
Write('Son sayiyi gir: '); Readln (N);
Toplam := 0;
For i := 1 To N Do
Toplam := Toplam + i;
Writeln('1den Ne kadar sayilarin toplami = ', Toplam);
Readln;
End.
rnek: Diardan girilen bir ismi yine diardan girilen bir sayi kadar yazan programi yaziniz.
var
i,x:integer;
isim:string[20];
begin
write('isim girin : ');
readln(isim);
write('isminiz kac defa yazilsin : ');
readln(x);
for i:=1 to x do
writeln(isim);
readln;
end.

Algoritma ve Programlamaya Giri 47 gr. Gr. Mustafa AKSU
rnek : Diardan iki sayi okuyup 1. sayiyi taban 2. sayiyi s kabul ederek s alma ilemini
yapan programi yaziniz.
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 : 1-100 arasindaki ift sayilari toplayan program.
var
i,toplam:integer;
begin
toplam:=0;
for i:=1 to 100 do
begin
if (i mod 2=0) then
toplam:=toplam+i;
end;
writeln('1-100 arasi cift sayilarin toplami = ',toplam);
readln;
end.

rnek: Diardan okunan 10 tane rast gele sayidan kainin negatif kainin pozitif
oldugunu ve pozitifleri kendi arasinda negatifleri kendi arasinda toplayip sonulari ekrana
yazan programi yaziniz.
var
i,poz,neg,poztop,negtop,sayi:integer;
begin
poz:=0;neg:=0;
poztop:=0;negtop:=0;
Algoritma ve Programlamaya Giri 48 gr. Gr. Mustafa AKSU
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 blogunun belli bir art saglanincaya kadar st ste alitirilmasini saglayan REPEAT
deyiminin genel formu aagidaki ekildedir.
Repeat
Program Satirlar
Until (Boolean arti)
Burada repeat, tekrar etme anlaminda olup, tekrar etmesine UNTIL deyimindeki art (boolean
ifadesi) saglanincaya kadar devam eder. Bu deyim program satirlari blmne herhangi bir ey
yazilmaksizin kullanilabilir.
Bu dngnn en byk avantaji belirli bir sayi ile sinirlandirilmami olmasidir. Boolean
ifadesindeki art saglanincaya kadar ilemlere devam edilmektedir.

Dikkat edilirse art cmlesinin aldigi deger ne olursa olsun program blogu bir kez
alimaktadir.
rnek : Isminizi diardan okunan bir sayi kadar yazdiran programi yaziniz.

Var
x,i:integer;

begin
write('Sayi girin');
readln(x);
Algoritma ve Programlamaya Giri 49 gr. Gr. Mustafa AKSU
i:=0;
repeat
i:=i+1;
writeln('M.AKSU');
until i=x;
readln;
end.
rnek : Diardan girilen bir ismi yine diardan girilen bir sayi kadar yazan programi yaziniz.
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.

rnek : 0-100 araligindaki tek sayilari toplayan program.
Var
ttop,i:integer;
begin
i:=1;
ttop:=0;
repeat
ttop:=ttop+i;
i:=i+2;
until i>=100;
writeln(ttop);
readln;
end.




Algoritma ve Programlamaya Giri 50 gr. Gr. Mustafa AKSU
rnek : Diardan okunan 10 tane rastgele sayiyi toplayip bunlarin ortalamasini
hesaplayarak sonulari ekrana yazan programi yaziniz.

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 blogunun belli bir art saglandigi srece st ste icrasini saglayan WHILE
deyiminin genel yazili ekli aagidadir.
While <art cmlesi> Do
BLOK {Yapilacak ilemler}
Do kelimesini takip eden blok WHILE deyimi tarafindan dngye sokulacak komut cmlelerini
kapsar. Komut cmlesi sayisi birden fazla ise, bu blogun BEGIN...END deyimleri arasina
alinmasi zorunludur.
WHILE ile REPEAT arasindaki fark; Repeat dngs art cmlesi yanli oldugu srece, While
dngs ise art cmlesi dogru oldugu srece devam etmesidir.
REPEAT dngsnde art sonda kontrol edildigi iin dogruda olsa yanlita olsa en az bir defa
ilem yapilir. WHILE da ise art dngye girmeden kontrol edildigi iin yanlisa hi ilem
yapilmaz.

rnek : Isminizi diardan okunan bir sayi kadar yazdiran programi yaziniz.

Var
x,i:integer;

begin
write('Sayi girin');
readln(x);
Algoritma ve Programlamaya Giri 51 gr. Gr. Mustafa AKSU
i:=0;
while i<10 do
begin
i:=i+1;
writeln('isminiz');
end;
readln;
end.
rnek : Diardan girilen bir ismi yine diardan girilen bir sayi kadar yazan programi yaziniz.
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.

rnek : 0-100 araligindaki ift sayilari toplayan program.
Var
ctop,i:integer;
begin
i:=0;
ctop:=0;
while i<=100 do
begin
ctop:=ctop+i;
i:=i+2;
end;
writeln(ctop);
readln;
end.

Algoritma ve Programlamaya Giri 52 gr. Gr. Mustafa AKSU
rnek : Diardan okunan 10 tane rastgele sayiyi toplayip bunlarin ortalamasini
hesaplayarak sonulari ekrana yazan programi yaziniz.
Var
x,i:integer;
top:longint;
ort:real;
begin
top:=0;
i:=0;
while i<=10 do
begin
i:=i+1;
write(i,'. Sayiyi girin');
readln(x);
top:=top+x
end;
ort:=top/i;
writeln(i,' adet sayinin toplami',top);
writeln(i,' adet sayinin ortalamasi',ort:5:2);
readln;
end.

6.5. Blok ve Dnglerin Kirilmasi
Dnglerin alimasi sirasinda belirli koullarin saglanmasi durumunda dngnn sona ermesini
isteyebiliriz. Bunun iin BREAK, CONTINUE, EXIT, HALT Pascal deyimlerinden yararlanmaktayiz.
Break
Turbo Pascal 7.0 programlama dilinde bir dngy kirarak sona erdirmek amaciyla kullanilir.
Program iinde BREAK deyimiyle karilaildiginda iinde bulundugu dngden sonraki program
satirinin iler hale getirir. BREAK komutu FOR-DO, REPEAT-UNTIL ve WHILE-DO dnglerinin
iinde kullanilabilir.
Konunun daha iyi anlailabilmesi iin aagidaki rnegi inceleyiniz. rnek Programda i ve j gibi iki
sayinin arpimi yapilmaktadir. i=j oldugu durumda iteki dng BREAK deyimi ile kirilmakta ve
i 'nin degeri bir st degere arttirilarak programin alimasina devam edilmektedir.
Continue
Fortran programlama dilinde oldugu gibi tekrarlama evrimini yeniden balatir. Programci,
bilgi girilerinde kullanicinin sayisal olmayan bir giri yapacagini varsayarak nlem almak
amaciyla tekrarlama ilemlerini yeniden balatmak iin CONTINUE komutu kullanilir. Bu
deyim PASCAL 7.0 ' da geerlidir.
Algoritma ve Programlamaya Giri 53 gr. Gr. Mustafa AKSU
Exit
Program ilem bloklarinda tanimlanan herhangi bir koulun gereklemesi halinde program
blogunun akiini durdurur.
Halt
Programin kararlatirilan bir yerinde durdurulmasini saglar. ENTER tuuna basildiktan sonra
varsa HALT komutundan sonra tanimlanan program satirlari alitirilir.











============================================

Konu Sonu alima Sorulari

Soru 1: Sadece toplama ilemi kullanarak girilen iki sayiyi arpan programi yaziniz.
Soru 2: Diardan rast gele 10 tane sayi okuyup bunlardan kainin tek kainin ift oldugunu
ve tekleri kendi iftleri de kendi arasinda toplayip sonulari ekrana yazan programi yaziniz.
Soru 3: Bir dik genin iki dik kenari diardan giriliyor. Bu girilen degerlere gre genin
evresini ve alanini bulan programi yaziniz.

Algoritma ve Programlamaya Giri 54 gr. Gr. Mustafa AKSU
7. Pascalda baz standart Prosedr ve Fonksiyonlar
Pascaln kendi zerinde tanmlanm hazr prosedr ve fonksiyonlar vardr. Bunlarn bazlar saysal
bazlar da stringler zerinde ilem yapmaktadr.
Bunlarn arasnda Concat, Upcase, Length; abs, sqr, sqrt, round, random gibi birok standart function
veya procedure bulunmaktadr.
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 + ile birletirilmesi');
Writeln(X5);
end.



Algoritma ve Programlamaya Giri 55 gr. Gr. Mustafa AKSU
rnek
*
: 10luk tabandaki bir sayiyi diger tabanlara dntren program.
var
x,i,taban:integer;
gecici,digertaban:string;
begin
write('Onluk tabanda Sayi Griniz');
readln(x);
write('Tabani 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.
* Biraz zor bir rnektir. Anlalmyorsa zerinde ok durulmamal.
Upcase
Pascal 'da okunan veya karlatrlmas yaplan iki karakter dizisinde yazlan harflerin byk veya kk oluu
nemlidir. Upcase fonksiyonu kk harfleri byk harfe evirir. Parametre olarak verilen karakterlerin
alfabetik olmamas durumunda herhangi bir ilem yaplmaz.
rnek:
var
s : string;
i : Integer;
begin
Write('Bir Karakter Dizisi Giriniz:');
ReadLn(s);
for i := 1 to Length(s) do
s[i] := UpCase(s[i]);
WriteLn('KARAKTER DZS BUYUK HARFE DNT ',s);
Readln;
end.
Aada ise baz saysal fonksiyonlar anlatlmtr.
Algoritma ve Programlamaya Giri 56 gr. Gr. Mustafa AKSU
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.
Algoritma ve Programlamaya Giri 57 gr. Gr. Mustafa AKSU
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.






============================================

Konu Sonu alima Sorulari

Soru 1 : Bilgisayarda bir tahmin oyunu yazilacaktir. Oyun yledir bilgisayar rastgele bir
sayi retecek kullanici bu retilen sayiyi bilmeye aliacak. Kullanici kendi tahminlerini girdike
bilgisayar kullaniciyi `kk sayi girdiniz , `byk sayi girdiniz, `Bildiniz eklinde uyaracak.
Sonuta kullanici sayiyi ka tahminde bilmise ekrana yazilacak.

Soru 2 : Diaridan girilen bir metni tersten byterek yazdiran programi yaziniz.

Algoritma ve Programlamaya Giri 58 gr. Gr. Mustafa AKSU
8. DZLER
Bir dizi, ayni tipteki elemanlarin yan yana siralanii ile elde edilen bir bilgi kmesidir.
Matematikte kullanilan dogal sayilar (1,2,3,..), reel sayilar aslinda birer dizidir. Ayrica yilin
aylari (Ocak, ubat, Mart, .) haftanin gnleri de birer dizidir.







eklinde tanimlanan bir A matrisi iki boyutlu bir dizidir.

Pascalda Dizi Kullanimi

Hangi programlama dilini kullaniyor olursaniz olun degiken tanimlamanin mantigi aynidir.
Saklanacak bilginin tipine gre bir tip seilir buna bir isim verilir ve hafizada bu degiken iin
bellek ayrilir. Her degiken iin durum aynidir. Pascalda bu ilemi Var blogunda yapiyoruz. Peki
ayni zelliklere sahip birden fazla degikene ihtiya duyarsak ne olacak. Mesela bir gretmen
dnn. Degiik sayilarda grencisi olan siniflara girsin ve bu grencilerin notlarini
bilgisayarda tutmaya alisin. Eger dizi degikenleri kullanmayi bilmiyorsa en kalabalik
sinifindaki grenci sayisi kadar degiken tanimlayacak sonra da her grencinin notunu kendi
degikenine ayri ayri atamak zorunda kalacaktir. Oysa bunu halletmenin daha kolay bir yolu
var. Dizileri kullanmak. Dizilerin en nemli zelligi ayni tipteki ve birbiri ile alakali verileri toplu
olarak tanimlamaya yaramasidir. Bu durumda rnegimizdeki gretmen en kalabalik sinifindaki
grenci sayisi kadar elemani olan bir tek dizi degikeni tanimlar ve bilgileri bir dng ierisinde
indis kullanarak dizinin uygun yerine yerletirir. Bu iki durumu bir tablo iinde gsterelim.







eklinde tanimlanan bir X vektr tek boyutlu bir dizi,
Algoritma ve Programlamaya Giri 59 gr. Gr. Mustafa AKSU
Dizi kullanmayan gretmen
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.

Dizi kullanan gretmen
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.


Artik dizi kullanmanin avantajlarini biliyoruz. Bize ayni trden ve birbiri ile ilikili
bilgilere kolay erimemizi sagliyor. Isterseniz artik bir dizi taniminin nasil yapildigina
bakabiliriz. Dizileri VAR blogunda tanimlayabilecegimiz gibi, Type blogunda da
tanimlayabiliriz. Eger TYPE blogunu kullanirsak tanimlami oldugumuz yeni tipi direkt
degiken tipi olarak kullanabiliriz.

degiken_ismi : array [boyut_byklg] of dizi_tipi

Boyut byklg herhangi bir standart veri tipinde olabilir. Eger ok boyutlu bir dizi ise
bunlar birbirinden virgllerle ayrilir. Dizi tipinde ise istedigimiz herhangi bir tipi
kullanabiliriz. Yani hem standart tipleri hem TYPE blogunda tanimladigimiz kendi tiplerimizi
kullanabiliriz. Dizinin elemanlarina keli parantez ierisinde verilen indis numarasi ile
eriiriz.

rnek tanimlamalar :

Var
IntList : array[1..100] of integer; {Integer tipinde bir boyutlu dizi}
CharData : array['A'..'Z'] of Byte; {Char tipinde bir boyutlu dizi}

Eger dizilerimiz ok boyutlu olacaksa

Matris : array[0..9, 0..9] of real; {real tipinde 2 boyutlu dizi}
MyStrArr : array[1..10] of Str20; {Yukarida tanimladigim Str20 tipinde 10 elemanli dizi}
KupData : array[1..20,1..20,1..20] of Word {Word tipinde 3 boyutlu dizi}
Bir ok bilim dalinda eitli niceliklerin matematiksel gsterimi iin yaygin olarak kullanilan
vektr ve matrislerle ilgili bir program yapacagimizi dnelim. Her X
i
(i=1,2,...n) ve
A
ij
(i=1,2,..n, j=1,2,..n) elemani iin basit tipte bir degiken kullanacak olursak
karilaacagimiz glg grrz. rnegin 10 bileenli bir vektr iin 10 basit tip degiken
kullanilmasi gerekirken, 10x10 boyutlarindaki matris iin 100 basit tip degiken kullanilmasi
gerekmektedir. Bizim iin gerekli olan, ayni tipte elemanlardan oluan bir veri kmesini tek bir
degiken ismi kullanarak, kme iindeki yeri ile eriilmesini saglayacak veri yapisidir.
Diziler, kullanim amacina gre tek veya ok boyutlu olabilir. Elemanlandirilmi dizi
Algoritma ve Programlamaya Giri 60 gr. Gr. Mustafa AKSU
degikenlerinin boyut durumu ARRAY ifadesiyle keli parantez iinde yapilan tanimlamalarla
belirtilir.
Dizi karakter tipi "OF tip tanimi" ifadesi ile mutlaka verilmelidir. PASCAL programlama dilinde
diziler, TYPE, VAR veya CONST tanim bloklarindan birinde tanitilir. Ileme alinmalari ilemlerin
alima durumlarina gre bir dng ile gerekletirilir. Tm elemanlar ilk elemandan balayarak
ileme alinacaksa FOR dngs, herhangi bir arta bagli olarak tekrar edilecekse WHILE veya
REPEAT dngleri ile kullanilir.
7.1. Dizilerin Tanitilmasi
Bir dizinin tanimi degiik ekillerde yapilabilmektedir. Bunlar aagida kisaca zetlenmitir.
7.1.1. Dizilerin Type Blogunda Tanitilmasi
Dizilerin type blogunda tanitilmasi ileminde rnegin;
Tek boyutlu ve 30 elemanli Endstri Mhendisligi 1. Sinif grencilerinin numaralarinin programa
tanitimi:
TYPE
Numara=ARRAY [1..30] of string[10];
VAR
ogr:NUMARA;
eklinde yapilabilir.
rnege dikkat edilirse NUMARA adi verilen bir dizi TYPE tanim blogunda tanitilmi VAR tanim
blogunda ise bu dizinin OGR adi altinda degiken tipte oldugu belirtilmitir.
Ayni ekilde tek boyutlu ve 30 elemanli Endstri Mhendisligi 1. Sinif grencilerinin isimlerin
programa tanitimi ise:
TYPE
isimler=ARRAY [1..30] of String[25];
VAR
Ogrisim:Isimler;
eklindedir.
7.1.2 Dizilerin VAR Blogunda Tanimlanmasi
Bir dizi diger degikenlerde oldugu gibi Var tanim blogunda da tanitilabilir. Bunun iin dizinin
boyutu belirtildikten sonra diziyi oluturan elemanlarin hangi tipte oldugu belirtilmelidir.
Aagidaki ifadeleri inceleyiniz.
VAR
X1:ARRAY [1..10] of Real;
k2:ARRAY [1..35] of nteger;
7.1.3 Dizilerin CONST (Sabit Bilgiler) Blogunda Tanimlanmasi
Algoritma ve Programlamaya Giri 61 gr. Gr. Mustafa AKSU
Bir dizi diger sabitlerde oldugu gibi CONST tanim blogunda da tanitilabilir. Aagidaki rnek
programi inceleyiniz.
rnek:
Program yeni_rnek;
Const
Aylar:Array[1..12] of string[7]= ('Ocak',ubat,Mart',Nisan, `Mayis','Haziran',
'Temmuz', 'Agustos','Eyll,'Ekim',Kasim', 'Aralik');
var
k: integer ;
begin
Write ('kainci ay:');
Readln(k);
Writeln('Aranan Ay adi :',Aylar[k]);
end.
7.2 Tek Boyutlu Diziler
Tek boyutlu diziler aagida grlen genel formda ifade edilebilirler.
Degiken = ARRAY [Balangi degeri..Biti Degeri] OF tip tanimi;
rnek: Var
Dizi1: array [1..20] of string[25] ;
Dizi2: array [1..20] of integer;
Buradaki ARRAY ve OF szckleri Pascal'in anahtar szckleridir. Balangi degeri ve Biti
Degeri ise sayilabilir zellikte degerlerdir. Tip tanimi ise hangi tip verileri ierdigini
belirtmektedir. Diziler degiik ekillerde tanimlanabilir. Bunlar ileride aiklanmitir.

rnek: Diaridan okunan 10 tane sayiyi bir dizide saklayarak bunlarin toplamini ve ortalamasini
bulan programi yaziniz.

var
sayi:array[1..10]of integer;
i,top:integer;
ort:real;
begin
top:=0;
for i:=1 to 10 do
begin
write(i,'. Sayiyi giriniz'); readln(sayi[i]);
top:=top+sayi[i];
end;
ort:=top/10;
writeln('Sayilarin Toplami :', top);
Algoritma ve Programlamaya Giri 62 gr. Gr. Mustafa AKSU
writeln('Sayilarin Ortalamasi :', ort:4:2);
readln;
end.

rnek: Aagida verilen program tek boyutlu bir dizinin elamanlarini sondan baa dogru 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,'. elemanini 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 grenciye ait ad,soyad,numara, vize ve final notlarini diaridan okuyup
bu grencilerin ortalamalarini ort:=vize*0.4+final*0.6 forml ile hesaplayip eger
grencilerin ortalamasi 60 `dan byk veya eitse geti degilse kaldi yazan programi
yaziniz.

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('soyadi giriniz');readln(soyad[i]);
writeln('noyu giriniz'); readln(no[i]);
writeln('finali giriniz');readln(final[i]);
writeln('1.vizeyi giriniz');readln(vize[i]);
Algoritma ve Programlamaya Giri 63 gr. Gr. Mustafa AKSU
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:='kaldi';
writeln(' ',ort:4:2, ' ',sonuc);
end;
readln;
end.
7.3 ok Boyutlu Diziler
Indisli degikenler iki boyutlu veya daha fazla oldugunda boyut durumu, keli parantez
iinde eleman tanimlari arasinda virgl verilerek belirtilir.
Matematikte kullanilan matrisler iki boyutlu dizilere en gzel rnektir.
Var
Dizi degikeni : array [1..n,1..n,..,1..n] of tip adi
rnegin;Iki boyutlu ve 32 elemanli dizi adi verilen indisli degikenin programa tanitimi;
Var
dizi:ARRAY[ 1..4,1..8] of Real;
eklinde yapilabilmektedir.
Ayni ekilde; boyutlu ve 64 elemanli dizi1 adi verilen indisli degikenin programa
tanitimi;
Var
dizi1:ARRAY[1..4,1..8,1..2] OF Real;
eklinde yapilabilmektedir.
B isimli iki boyutlu bu dizinin bellekteki yerleme durumu aagidaki gibi olacaktir.
1 2 3 4 5 6 7 8
1 B(1,1) B(1,2) B(1,3) B(1,4) B(1,5) B(1,6) B(1,7) B(1,8)
2 B(2,1) B(2,2) B(2,3) B(2,4) B(2,7) B(2,6) B(2,7) B(2,8)
3 B(3,1) B(3,2) B(3,3) B(3,4) B(3,7) B(3,6) B(3,7) B(3,8)
4 B(4,1) B(4,2) B(4,3) B(4,3) B(4,7) B(4,6) B(4,7) B(4,8)
Algoritma ve Programlamaya Giri 64 gr. Gr. Mustafa AKSU
rnek: arpim tablosu programini yaziniz.

Var
i,j: integer;
dizi: array[1..10,1..10] of integer;
begin
f or i :=1t o10 do
begin
f or j :=1 t o 10 do
begin
dizi[i,j]:=i*j;
Write(Dizi[i,j]:4);
End;
Writeln;
End;
end.

rnek: 3*3lk bir matrisi tanimlayip degerlerini diaridan okutup bu matrisi ekrana
matris grnmnde yaziniz.

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.
Algoritma ve Programlamaya Giri 65 gr. Gr. Mustafa AKSU

rnek: 3*3lk iki matrisi degerlerini diaridan okuyup bu matrisleri toplayarak
ekrana matris grnmnde yazan programi yaziniz.

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 asil kegeni zerindeki elemanlarini sifir ( 0 ) yapan
programi yaziniz.

Cevap:
var
mat:array[1..4,1..4] of integer;
i,j:integer;
Algoritma ve Programlamaya Giri 66 gr. Gr. Mustafa AKSU
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.













============================================

Konu Sonu alima Sorulari

Soru 1 : Diaridan 3*3lk iki matris okuyup bunlarin farkini (ikarma) bularak sonucu
matris grnmnde ekrana yazan programi yaziniz.

Soru 2 : Diardan okunan 4*4 `lk bir matrisin negatif elemanlari varsa bu elemanlari
pozitif yapan matrisi yaziniz.

Vous aimerez peut-être aussi