05.06.2013 Views

Algoritma ve programlamaya Giriş

Algoritma ve programlamaya Giriş

Algoritma ve programlamaya Giriş

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

DERS NOTLARI<br />

Ders Adı : <strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong><br />

Kısa Ders Özeti<br />

Bu dersin I. Bölümünde Programlama ile ilgili kavramlar problem çözme yöntemleri<br />

<strong>Algoritma</strong>, akış diyagramları anlatılıp diğer bölümlerde ise problemlerin çözümlerinin bir dil<br />

(Pascal) kullanılarak çözülmesi için gereken komutlar anlatılmıştır.<br />

Dersin Hedefleri<br />

Bu ders sonunda öğrenciler, programlama mantığı, problemlere çözüm yaklaşımı, bir dil<br />

kullanarak program yazma gibi becerileri kazanacaktır. Ayrıca Pascal programlama<br />

dilinin komutlarını <strong>ve</strong> bu dilde programlar geliştirmeyi öğreneceklerdir.<br />

Dersin Đşlenmesi<br />

Bu ders haftada 4 saat olup 3 saat teorik 1 saat uygulamadan oluşmaktadır. Teorik derslerde<br />

konular sınıfta anlatılıp uygulama saatinde ise bilgisayar laboratuarlarında uygulama<br />

yapılacaktır.<br />

Sınav <strong>ve</strong> derse devam<br />

Bu ders için bir vize <strong>ve</strong> bir final olmak üzere toplam iki teorik sınav yapılmaktadır. Ortalama<br />

hesaplanırken Vizenin %40 ‘ı finalin %60’ı alınmaktadır.<br />

Derse her öğrenci %70 oranında devam etmek zorundadır. Yani 14 haftalık eğitim döneminde<br />

her öğrenci en az 10 hafta derslere katılmak zorundadır.<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 1 Öğr. Gör. Mustafa AKSU


1. BĐLGĐSAYAR PROGRAMLAMAYA GĐRĐŞ<br />

Đnsanlar her zaman düşünür <strong>ve</strong> problem çözerler. Birçok problem, az ya da hiç<br />

düşünülmeden çözülebilir.<br />

Her gün evden çıkarken ne giyilmelidir? Bunun için muhtemelen pencereden dışarıya bakılır.<br />

Hava yağmurlu ise mevsim gereklerine göre giyinmenin yani sıra dışarıya çıkarken bir de<br />

semsiye alınması gerekir. Hava güneşli <strong>ve</strong> sıcak ise o takdirde daha ince giyinilerek dışarıya<br />

çıkılır. Böylece problemin çözümü kendiliğinden oluşturulan bir kararla sağlanır.<br />

Yukarıdaki basit örnekte yapılan is, önce problemin belirlenmesi <strong>ve</strong> sonra problemin<br />

tanımından yola çıkarak çözüm için değişik alternatiflerin değerlendirilmesidir.<br />

Bilgisayar programlaması sırasında izlenebilecek birçok yol <strong>ve</strong> yöntem vardır. Bilgisayar<br />

programcısının probleme ilişkin çözümü ortaya çıkarabilmesi için problem çözümü ile ilgili<br />

bilgileri bilmesi gerekir. Bilgisayar programlamasında genel olarak belirli kalıp <strong>ve</strong> kurallara<br />

uyulur. Bir bilgisayar yazılımının oluşturulması sırasında aşağıda sıralanan ana adımlara<br />

uyulur.<br />

* Problemin tanımı<br />

* Çözüm yönteminin belirlenmesi<br />

* Programın kodlanması<br />

* Programın çalışır duruma getirilmesi<br />

* Belgeleme <strong>ve</strong> güncelleştirme<br />

Problemin tanımı: Problemin normal yazı diliyle tanımlanması işlemlerini<br />

kapsamaktadır. Problem çözümüne ilişkin iyi bir program yapabilmek için, problemin iyi bir<br />

şekilde tanımlanması gerekir.<br />

Çözüm Yönteminin Belirlenmesi: Bu adımda çözümün genel yaklaşımı, temel<br />

giriş/çıkışlar belirlenir <strong>ve</strong> problem çözümü adim adım program akis diyagramlarıyla gösterilir.<br />

Programın kodlanması: Program ayrıntılı olarak tanımlanıp çözüm yolları açıkça<br />

belirtildikten sonra program kodlama çalışmalarına başlanabilir. Programın bastan sona<br />

yapısal bir düzende hazırlanması <strong>ve</strong> uygun bir programlama dili seçilmesi seçim işleminin ilk<br />

aşamasını oluşturur.<br />

Programın çalışır Hale Getirilmesi: Programın kodlanması sırasında yapılan imla hataları,<br />

kodlama <strong>ve</strong> mantık hatalarının giderilmesi işlemlerini kapsar. Đyi bir bilgisayar programının<br />

doğruluğundan emin olmak için defalarca test edilmiş olması gerekmektedir.<br />

Belgeleme <strong>ve</strong> güncelleştirme: Oluşturulan bir yazılımı, sadece o yazılımı geliştiren<br />

kişilerin kullanabilmesi gibi bir kısıtlamanın önüne geçmek için ayrıntılı referanslar<br />

hazırlanmalı <strong>ve</strong> programla ilgili bilgiler <strong>ve</strong>rilmelidir.<br />

Bir yazılımda, o yazılımı kullanan kişi <strong>ve</strong>ya kuruluşların yeni gereksinimleri <strong>ve</strong> değişen<br />

koşullar nedeniyle değişiklikler yapılması gerekli olabilir. Bu değişikliklere güncelleme adi<br />

<strong>ve</strong>rilir. Đyi bir programda bulunması gereken özellikler arasında güncelleşebilme ön sıralarda<br />

yer almaktadır.<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 2 Öğr. Gör. Mustafa AKSU


Şekil 1.1. Yazılım oluşturma evrelerini şematik olarak özetlemektedir.<br />

Şekil 1.1 Yazılım oluşturma evreleri<br />

1.1. Bilgisayar Programcılığı<br />

Nedir bu bilgisayar programcılığı? E<strong>ve</strong>t birçok kişi bilgisayar programcılarının ne ile<br />

uğraştığını bilir fakat nasıl uğraşıp neler yaptığını pek bilmez... Önce bilgisayar dünyasında<br />

sıkça kullanılan bir kelimeden bahsedelim “yazılım”. Yazılım (software) kelimesi bilgisayar<br />

programlama dilleriyle oluşturulan dokümanları, dosyaları ifade eder. Yani bilgisayarınızda<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 3 Öğr. Gör. Mustafa AKSU


işletilmek, çalıştırılmak üzere tasarımlanmış dosyalar yazılım kapsamına girer. Yazılım<br />

programlama dilleri ile tasarlanır <strong>ve</strong> yazılır. Programlama dilleri, bilgisayarınızın donanımını<br />

(ekran kartı,ses kartı,modem...) sizin en rahat biçimde kullanabileceğiniz düzeye getirmeye<br />

çalışır. Yani bilgisayarın o soğuk 1010110 gibi rakamlarını sizin zevkle kullandığınız<br />

programlara, işletim sistemlerine, oyunlara çevirir.<br />

Örneğin kullanılmakta olan Windows işletim sistemi onbinlerce sayfadan, milyonlarca<br />

bilgisayar kodunun bir araya gelmesinden oluşur. Đşte işin tüm zorluğu, o kodların arasında<br />

dolaşan, hata mesajlarını günlerce o kodları gözden geçirerek arayan, sandalye tepesinde<br />

saatlerce aynı ekrana bakarak ilginç görüntüler sergileyen programcıların üzerindedir...<br />

Bilgisayar programcıları işini zevkle yapan <strong>ve</strong> işini bir hobi edinmiş insanlardan oluşur. Aksi<br />

halde yoğun konsantrasyon <strong>ve</strong> sabır isteyen bu işi yapmak aşırı zorlaşır. Programlama dilleri<br />

kendi aralarında sınıflara ayrılmışlardır. Đnsanın en zor öğrenebileceği, anlayabileceği yani<br />

1100101 gibi makina kodlarına yakın diller en alt seviyeli programlama dilleri, insanın en kolay<br />

anlayıp kullanabileceği <strong>ve</strong> insan diline yakın özellikler gösteren diller ise en yüksek seviyeli<br />

programlama dilleridir. Şimdi bu sınıflandırmaya örnekler <strong>ve</strong>relim;<br />

1 ) Çok yüksek seviyeli diller: VisualBasic, Acces, Foxpro...<br />

2 ) Yüksek seviyeli diller: Pascal,Basic,Fortran...<br />

3 ) Orta seviyeli diller: C,C++,ADA...<br />

4 ) Düşük seviyeli diller: Assembly...<br />

5 ) Makina dilleri: Bilgisayarın çalışma dilleri 1 <strong>ve</strong> 0'lardan oluşur...<br />

Bu dillerin kullanıldığı alanlara örnek <strong>ve</strong>rirsek;<br />

1 ) Bilim <strong>ve</strong> Mühendislikte: Pascal,C,C++,Fortran...<br />

2 ) Veritabanı Programcılığında: Dbase,Acces,Foxpro,Sql...<br />

3 ) Yapay Zeka Kullanımında: Prolog,Lisp...<br />

4 ) Sistem Programcılığında: C,C++ <strong>ve</strong> sembolik makina dilleri...<br />

Bir bilgisayar programı nasıl yazılır? Bir yazılım değişik dillerle oluşturulabilir fakat izlenen<br />

yöntemler genelde birbirine benzer. Örneğin <strong>Algoritma</strong>... <strong>Algoritma</strong>, elimizdeki sorunun<br />

çözümüne gidebilmek için tasarlanan yollar, yöntemlerdir. Örneğin bir arkadaşınıza daha önce<br />

gitmediği bir yerdeki bir postaneyi tarif edeceksiniz. Bunun için anlatımda genelden özele<br />

giden bir yol izlersiniz. Önce gideceği semti sonra caddeyi sonra postanenin olduğu yönü tarif<br />

eder son olarak da kolay bulması için postanenin çevresindeki göze batan özelliklerden<br />

bahsedersiniz. Đşte bu yaptıklarınız bir algoritmadır. Ve amacınız arkadaşınıza postaneyi bu<br />

algoritma yardımıyla tarif etmektir... Bilgisayar programlama dilleri de programcılıkta bunun<br />

gibi yöntemler kullanarak çözüme gider. <strong>Algoritma</strong>nın uzunluğu kullanılan programlama dilinin<br />

seviyesi <strong>ve</strong> problemin karmaşıklığı ile doğru orantılıdır. Yapılan algoritma <strong>ve</strong> tasarımdan sonra<br />

yazılım aşamasına gelinir <strong>ve</strong> bu aşamada yapılacak programın kullanım ömrü, programın<br />

kullanım düzeyi <strong>ve</strong> hangi amaçla kullanılacağı gibi soruların cevaplarına bakılarak<br />

programlama dili seçilir. Dil seçimi bazı kriterlere göre yapılmaktadır, örneğin kısa sürmesi <strong>ve</strong><br />

görsel tasarım içermesi, <strong>ve</strong>ritabanı iletişimi yoğun kullanılması gereken bir program yapmamız<br />

gerekiyor olsun. Bu durumda Assembly dili ile yola çıktığımızda bahsedilen proje birkaç kişilik<br />

deneyimli bir programcı grubu ile birkaç yıl alır. C ile iki programcı aynı işi üç dört ayda<br />

VisualBasic <strong>ve</strong>ya Delphi ile bir programcı bahsedilen işi bir iki aya yakın bir sürede yapabilir.<br />

Başka bir açıdan örnek <strong>ve</strong>rirsek örneğin bir ekran kartı programlamamız gerekiyor <strong>ve</strong> bu<br />

kartın dri<strong>ve</strong>r'ını ( sürücüsünü ) biz yazacağız. Bu durumda bu işi VB <strong>ve</strong>ya Delphi ile yapmamız<br />

imkansızdır, kullanmamız gereken diller öncelikle Assembly <strong>ve</strong> C/C++ olmalıdır.<br />

E<strong>ve</strong>t, programlama dillerinin kendi alanları vardır <strong>ve</strong> her dil kendi alanında kullanıldığı<br />

sürece başarılı <strong>ve</strong> etkili kullanılmış olur. Buraya kadar anlatılanı özetlersek:<br />

Bir bilgisayar programı yazmak için belli aşamalar vardır <strong>ve</strong> bu aşamalar geçildiğinde<br />

kodlamaya başlanabilir.<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 4 Öğr. Gör. Mustafa AKSU


Bunlar:<br />

1 ) Analiz<br />

2 ) <strong>Algoritma</strong><br />

3 ) Dil Seçimi<br />

4 ) Kodlama<br />

Analiz ile gerçekleştirilmek istenen proje tasarımlanır <strong>ve</strong> parametreleri araştırılır.<br />

<strong>Algoritma</strong> ile adımlar tayin edilir. Dil seçimi ile en uygun programlama dili seçilir. Ve<br />

kodlamaya başlanır.<br />

1.1.1 Problem Çözme <strong>ve</strong> <strong>Algoritma</strong>lar<br />

1.1 Problem Çözme<br />

Problem çözmede, soruna hemen girişmek yerine, dikkatli <strong>ve</strong> sistematik yaklaşım ilke olmalıdır.<br />

Problem iyice anlaşılmalı <strong>ve</strong> mümkün olduğu kadar küçük parçalara ayrılmalıdır.<br />

Descartes’in "Discourse on Method" isimli kitabında problem çözme teknikleri şu 4 madde ile özetlenir;<br />

1. Doğruluğu kesin olarak kanıtlanmadıkça, hiçbir şeyi doğru olarak kabul etmeyin; tahmin <strong>ve</strong><br />

önyargılardan kaçının.<br />

2. Karşılaştığınız her güçlüğü mümkün olduğu kadar çok parçaya bölün.<br />

3. Düzenli bir biçimde düşünün; anlaşılması en kolay olan şeylerle başlayıp yavaş yavaş daha zor <strong>ve</strong><br />

karmaşık olanlara doğru ilerleyiniz.<br />

4. Olaya bakışınız çok genel, hazırladığınız ayrıntılı liste ise hiçbir şeyi dışarıda bırakmayacak kadar<br />

kusursuz <strong>ve</strong> eksiksiz olsun.<br />

1.2 <strong>Algoritma</strong>lar<br />

Kısaca algoritma belirli bir görevi yerine getiren sonlu sayıdaki işlemler dizisidir. Geniş<br />

anlamda ise algoritma, <strong>ve</strong>rilen herhangi bir sorunun çözümüne ulaşmak için uygulanması<br />

gerekli adımların hiç bir yoruma yer <strong>ve</strong>rmeksizin açık, düzenli <strong>ve</strong> sıralı bir şekilde söz <strong>ve</strong> yazı<br />

ile ifadesidir. <strong>Algoritma</strong>yı oluşturan adımlar özellikle basit <strong>ve</strong> açık olarak sıralandırılmalıdır.<br />

M.S. 9.yy da Đranlı Musaoğlu Horzumlu Mehmet (Alharezmi adını araplar takmıştır) problemlerin çözümü<br />

için genel kurallar oluşturdu. <strong>Algoritma</strong> Alharezmi'nin Latince okunuşu.<br />

Her algoritma aşağıdaki kriterleri sağlamalıdır.<br />

1. Girdi: Sıfır <strong>ve</strong>ya daha fazla değer dışarıdan <strong>ve</strong>rilmeli.<br />

2. Çıktı: En azından bir değer üretilmeli.<br />

3. Açıklık: Her işlem (komut) açık olmalı <strong>ve</strong> farklı anlamlar içermemeli.<br />

4. Sonluluk: Her türlü olasılık için algoritma sonlu adımda bitmeli.<br />

5. Etkinlik: Her komut kişinin kalem <strong>ve</strong> kağıt ile yürütebileceği kadar basit olmalıdır.<br />

Not: Bir program için 4. özellik geçerli değil. işletim sistemleri gibi program sonsuza dek çalışırlar .<br />

1.1. PROGRAM YAZMA SÜRECĐ<br />

• Problemin farkına varmak,<br />

• Problemi analiz etmek,<br />

• Çözüm yolları düşünmek,<br />

• Đyi çözüm yolları seçip algoritma oluşturmak,<br />

• Akış diyagramı çizmek,<br />

• Uygun bir dilde kodlamak,<br />

• Programı test etmek,<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 5 Öğr. Gör. Mustafa AKSU


• Programı dağıtmak.<br />

Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi.<br />

Bir problemi bilgisayar ile çözmek için geliştireceğimiz programın yazımında izleyeceğimiz adımlar:<br />

i) Problemin ne olduğunu kavra. Çözüm için gereksinimleri belirle.<br />

ii) Problemin girdilerini, çıktılarını <strong>ve</strong> diğer kısıtlama <strong>ve</strong> gereksinimleri belirle ( bilgilerin giriş <strong>ve</strong> çıkış<br />

biçimlerinin nasıl olacağına kadar).<br />

iii) Problemin çözümünü <strong>ve</strong>ren algoritmayı yaz.<br />

iv) <strong>Algoritma</strong>yı bir programla dili ile yaz.<br />

v) Programın doğru çalışıp çalışmadığını test et. Bu testi değişik <strong>ve</strong>riler (girdiler) için tekrarla.<br />

Algoritmik çözüm yöntemlerine ilk örneği günlük yaşantımızdan <strong>ve</strong>relim.<br />

Örnek 1: Örneğimiz bir insanin evden çıkıp ise giderken izleyeceği yolu <strong>ve</strong> işyerine girişinde<br />

ilk yapacaklarını adım adım tanımlamaktadır.<br />

Çözüm 1:<br />

Evden dışarıya çık<br />

Otobüs durağına yürü<br />

Durakta gideceğin yöndeki otobüsü bekle<br />

Otobüsün geldiğinde otobüse bin<br />

Biletini bilet kumbarasına at<br />

Đneceğin yere yakınlaştığında arkaya yürü<br />

Đneceğini belirten ikaz lambasına bas<br />

Otobüs durunca in<br />

Đşyerine doğru yürü<br />

Is yeri giriş kapısından içeriye gir<br />

Mesai arkadaşlarınla selamlaş<br />

Is giysini giy<br />

Đsini yapmaya basla.<br />

Yukarıdaki örnekte görüldüğü gibi, evden ise gidişte yapılabilecek işlemler adım adım sırasıyla,<br />

kısa <strong>ve</strong> açık olarak tanımlanmaya çalışılmıştır. Yukarıdaki algoritma kişinin otobüsü kaçırma<br />

olasılığı düşünülmeden oluşturulmuştur. Kişi durağa geldiğinde bineceği otobüsü kaçırmış ise<br />

algoritmamız aşağıdaki şekilde değiştirilebilir.<br />

Çözüm 2:<br />

Evden dışarıya çık Otobüs durağına yürü<br />

Otobüsün saati geçmiş?<br />

Durakta gideceğin yöndeki bir sonraki otobüsü bekle<br />

Bir sonraki otobüs gelene kadar 4. adimi uygula<br />

Otobüsün geldiğinde otobüse bin<br />

Biletini bilet kumbarasına at<br />

Đneceğin yere yakınlaştığında arkaya yürü<br />

Đneceğini belirten ikaz lambasına bas<br />

Otobüs durunca in<br />

Đşyerine doğru yürü<br />

Is yeri giriş kapısından içeriye gir<br />

Mesai arkadaşlarınla selamlaş<br />

Is giysini giy<br />

Đsini yapmaya basla.<br />

Her iki örnekte görüldüğü gibi sorunu çözüme götürebilmek için gerekli olan adımlar sıralı <strong>ve</strong><br />

açık bir biçimde belirlenmiştir. <strong>Algoritma</strong>nın herhangi bir adımındaki küçük bir yanlışlık doğru<br />

çözüme ulaşmayı engelleyebilir. Bu nedenle algoritma hazırlandıktan sonra dikkatle incelenmeli<br />

<strong>ve</strong> varsa adımlardaki yanlışlıklar düzeltilmelidir.<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 6 Öğr. Gör. Mustafa AKSU


Programlamanın temeli olan algoritma hazırlanmasında dikkat çekici bir nokta, ayni sorunu<br />

çözmek için hazırlanabilecek olası algoritma şayisinin birden çok olmasıdır. Başka deyişle, bir<br />

sorunun çözümü için birbirinden farklı birden fazla sayıda algoritma hazırlanabilir. Bu da<br />

gösteriyor ki herhangi bir problemin çözümü için birbirinden farklı yüzlerce bilgisayar programı<br />

yazılabilir.<br />

Bir bilgisayar programı için hazırlanacak olan algoritma da ayni şekilde çözüm yolunu bilmeyen<br />

bir kişiye, çözüme ulaşmak için neler yapması gerektiği anlatılıyormuş gibi hazırlanmalı <strong>ve</strong><br />

eksik bir nokta bırakmaksızın gerekli tüm adımları açık <strong>ve</strong> düzenli olarak içermelidir. Çözüm<br />

için kullanılacak bilgilerin nereden alınacağı, nerede saklanacağı <strong>ve</strong> çözümün program<br />

kullanıcısına nasıl ulaştırılacağı algoritma adımları arasında belirtilmelidir.<br />

Aşağıda değişik işlemlere ilişkin algoritma örnekleri <strong>ve</strong>rilmiştir.<br />

Örnek 2: Đki sayıyı toplamak için gerekli programa ait algoritmanın oluşturulması.<br />

<strong>Algoritma</strong>:<br />

1. Birinci sayıyı gir<br />

2. Đkinci sayıyı gir<br />

3. Đki sayının toplamını yap<br />

4. Toplamın değerini yaz<br />

5. Bitir.<br />

Bu tam bir algoritmadır. Sözcüklerin ortaya çıkaracağı yanlış anlamaların ortadan kaldırmak<br />

amacıyla semboller <strong>ve</strong> matematik dilini gerektiren bazı kısaltmalar kullanmak daha uygun<br />

olacaktır. Bir algoritma yazılırken su metot izlenmelidir:<br />

Programda kullanılacak elemanları temsil etmek üzere uygun isimler Veya<br />

değişkenler seç.<br />

Bazı isimlere başlangıç değeri olarak çözümün gerektirdiği uygun değerler <strong>ve</strong>r.<br />

Gerekirse programa girilecek <strong>ve</strong>rileri düzenle.<br />

Cebirsel notasyon <strong>ve</strong> kararlar kullanarak aritmetik işlemleri gerçekleştir.<br />

Çıkısı düzenle.<br />

Bitir.<br />

Yukarıda iki sayının toplanması için oluşturduğumuz algoritmayı bu yeni gereksinimlere<br />

uyarak yeniden yazalım.<br />

Toplam adi için Z, Birinci sayı için X, Đkinci sayı için Y<br />

değerleri kullanılırsa;<br />

<strong>Algoritma</strong>:<br />

1. X değerini gir<br />

2. Y değerini gir<br />

3. Z ? X+Y<br />

4. Z' yi yaz<br />

5. Bitir.<br />

Görüldüğü üzere bu şekilde bir algoritma ile çözüm yolunu izlemek daha kolaydır. Bundan<br />

sonra <strong>ve</strong>rilen örneklerde bu tip algoritma kullanılacaktır.<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 7 Öğr. Gör. Mustafa AKSU


Örnek 3: Đki sayının ortalamasını bulan programa ait algoritmanın oluşturulması<br />

<strong>Algoritma</strong>:<br />

1. X değerini gir<br />

2. Y değerini gir<br />

3. Z ? X+Y<br />

4. Ort? Z/2<br />

5. Ort değerini yaz<br />

6. Bitir.<br />

Bu örnekte Ort değeri ile iki sayının ortalaması temsil edilmiştir.<br />

Örnek 4: Beş sayının toplamını <strong>ve</strong> ortalamasını <strong>ve</strong>ren programa ait algoritmanın<br />

oluşturulması<br />

Toplam adi için Top<br />

Ortalama adi için Ort<br />

Girilen sayılar için X<br />

Arttırma için Sayaç kullanılırsa<br />

<strong>Algoritma</strong>:<br />

1. Top ? 0, Sayaç ? 0<br />

2. X'i gir<br />

3. Top? Top+X<br />

4. Sayaç ? Sayaç +1<br />

5. Eğer Sayaç


Örnek 6: Çapraz döviz kuru hesabi yapan programın algoritmasının oluşturulması. Bu<br />

algoritmanın oluşumunda <strong>ve</strong>riler; 1 Amerikan dolarının TL karşılığı, hesaplanacak $ miktarı,<br />

çıkış ise <strong>ve</strong>rilen $'in TL karşılığı olacaktır.<br />

Doların değeri :Doldeg<br />

Girilen Dolar miktarı :Dolar<br />

TL karşılığı :Tlkar<br />

<strong>Algoritma</strong>:<br />

1. Doldeg'i gir<br />

2. Doldeg


Akis diyagramlarında kullanılan semboller, anlamları <strong>ve</strong> kullanış amaçları aşağıdaki tabloda<br />

<strong>ve</strong>rilmiştir.<br />

Tablo 1. Akış diyagramlarında kullanılan temel semboller <strong>ve</strong> anlamları<br />

Akis diyagramının başlangıç <strong>ve</strong> bitiş yerlerini gösterir. Başlangıç<br />

simgesinden çıkış oku vardır. Bitiş simgesinde giriş oku vardır.<br />

Dışardan <strong>ve</strong>ri girişi. Veri okutma işlemleri için.<br />

Aritmetik işlemler <strong>ve</strong> değişik atama işlemlerinin temsil edilmesi için<br />

kullanılır.<br />

Kontrol <strong>ve</strong> karar <strong>ve</strong>rme işlemlerini temsil eder.<br />

Oklar Diyagramın akis yönünü gösterir.<br />

Belgeye, yazıcıya, ekrana çıktı için kullanılır.<br />

Bu sembolleri daha da çoğaltmak mümkün fakat temel olarak akış diyagramlarında bu şekiller<br />

kullanılacaktır.<br />

Ayrıntılı bir akis diyagramı, yazılımı oluşturan işlemleri <strong>ve</strong> ilişkilerini en küçük detayına kadar<br />

belirler.<br />

Bir bilgisayar programının geliştirilmesinde kullanılan programlama dili ne olursa olsun bu<br />

programların akis diyagramlarında genel olarak yalnız üç basit mantıksal yapı kullanılır. Bu<br />

mantıksal yapılardan en basiti sıralı yapıdır(Şekil 1.2). Sıralı yapı, hazırlanacak programdaki<br />

her işlemin mantık sırasına göre nerede yer alması gerektiğini vurgular. Bu yapı sona erinceye<br />

kadar ikinci bir işlem başlayamaz.<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 10 Öğr. Gör. Mustafa AKSU


Mantıksal yapılardan ikincisi Karar Verme yapısıdır (Şekil 1.3). Programlama sırasında<br />

If...Then... Else yapısı ile tanıyacağımız bu mantıksal yapılar, birden fazla sıralı yapı<br />

seçeneğini kapsayan modüllerde, hangi şartlarda hangi sıralı yapının seçileceğini belirler.<br />

Üçüncü mantıksal yapı çeşidini tekrarlı yapılar (Şekil 1.4) oluşturmaktadır. Bu yapılara<br />

Pascal programlama dilinde For (Şekil 1.4), While <strong>ve</strong> Repeat..Until yapısı adi da <strong>ve</strong>rilir.<br />

Şartlara göre değişik işlem gruplarının yapılmasını sağlar. Bu yapı yukarıda sözü edilen iki<br />

yapının çeşitli kombinezonların tekrarlanmasından oluşmuştur.<br />

Söz konusu üç değişik yapı, değişik kombinezonlarda kullanılarak istenilen işlevleri<br />

yerine getirecek programlar hazırlanabilir. Programların bu üç basit yapı ile sınırlandırılması<br />

program modüllerinin daha kolay tasarlanmasını sağlar.<br />

Şekil 1.4. Tekrarlı yapılar<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 11 Öğr. Gör. Mustafa AKSU


1.1.3. Akis diyagramı Örnekleri<br />

Bu bölümde, sözlü <strong>ve</strong>ya yazılı olarak oluşturduğumuz algoritmanın programa<br />

dönüştürülmesi sırasında programın çalışma sırasını da gösteren akis diyagramlarıyla ilgili<br />

örnekler aşağıda <strong>ve</strong>rilmiştir.<br />

Örnek 1: Dışardan girilen bir sayıyı okuyup bu sayıyı tekrar yazdıran programın akış şemasını<br />

çiziniz.<br />

Başla<br />

Sayı’yı oku<br />

Sayı’yı<br />

Yazdır<br />

Bitir<br />

Örnek 2: Dışardan girilen iki sayıyı toplayıp sonucu ekrana yazdıran programın akış şemasını<br />

çiziniz.<br />

Başla<br />

X,Y oku<br />

Toplam=X+Y<br />

Toplam’ı<br />

Yazdır<br />

Bitir<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 12 Öğr. Gör. Mustafa AKSU


Örnek 3: Dışardan girilen iki sayıyı toplayıp bunların ortalamasını bulup toplam <strong>ve</strong> ortalama<br />

sonucunu ekrana yazdıran programın akış şemasını çiziniz.<br />

Başla<br />

X,Y oku<br />

Toplam=X+Y<br />

Ort=toplam/2<br />

Toplam <strong>ve</strong><br />

ort’u<br />

Yazdır<br />

Bitir<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 13 Öğr. Gör. Mustafa AKSU


Örnek 4: 1'den 100'e kadar olan sayıların toplamlarını <strong>ve</strong> ortalamalarını <strong>ve</strong>ren<br />

programın akış diyagramını çiziniz.<br />

Başla<br />

Ortalama ,<br />

Toplam’ı yazdır<br />

Bitir<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 14 Öğr. Gör. Mustafa AKSU


Örnek 5: Dışardan girilen N sayısının faktöriyelini hesaplayan programın akış diyagramını<br />

çiziniz.<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 15 Öğr. Gör. Mustafa AKSU


Soru : Bir sayıyı dışarıdan okuyup tekrar ekrana yazdıran problemi üç yöntemle de (Akış diyagramı, <strong>Algoritma</strong>, Pascal) çözünüz.<br />

1. Başla<br />

<strong>Algoritma</strong><br />

2. A sayısını oku<br />

3. Sayıyı yazdır<br />

4. Bitir.<br />

Akış Diyagramı<br />

Pascal Kodu<br />

Var<br />

A:integer;<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 16 Öğr. Gör. Mustafa AKSU<br />

Begin<br />

write (‘Bir sayı girin’);<br />

readln (A);<br />

writeln(‘Girdiginiz sayı = ‘, A);<br />

readln;<br />

end.


Soru: Dışarıdan iki sayı okuyup bunları toplayarak sonucu ekrana yazdıran problemi çözünüz.<br />

<strong>Algoritma</strong><br />

1. Başla<br />

2. X,Y sayısını oku<br />

3. Toplam= X+Y al<br />

4. Toplam’ı yazdır<br />

5. Bitir.<br />

Akış Diyagramı<br />

Pascal Kodu<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 17 Öğr. Gör. Mustafa AKSU<br />

Var<br />

X,Y,Toplam:integer;<br />

Begin<br />

end.<br />

write (‘Đki sayı girin’);<br />

readln (X,Y);<br />

toplam:=X+Y;<br />

writeln(‘Sayıların Toplamı = ‘, toplam);<br />

readln;


Soru: Dışarıdan iki sayı okuyup bunların aritmetik ortalamasını bulun problemin çözümü.<br />

<strong>Algoritma</strong><br />

1. Başla<br />

2. X,Y sayısını oku<br />

3. Toplam= X+Y al<br />

4. ort=toplam / 2 al<br />

5. Toplam’ı <strong>ve</strong> ort’u yazdır<br />

6. Bitir.<br />

Akış Diyagramı<br />

Pascal Kodu<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 18 Öğr. Gör. Mustafa AKSU<br />

Var<br />

X,Y,Toplam:integer;<br />

Ort:real;<br />

Begin<br />

end.<br />

write (‘Đki sayı girin’);<br />

readln (X,Y);<br />

toplam:=X+Y;<br />

ort:=toplam / 2;<br />

writeln(‘Sayıların Toplamı =‘ , toplam);<br />

writeln(‘Sayıların Ortalaması =‘ , ort);<br />

readln;


Soru: Dışarıdan bir sayı okuyup bu sayının faktöriyelini hesaplayan problemin çözümü.<br />

<strong>Algoritma</strong><br />

1. Başla<br />

2. sayac=0, Faktor=1 al<br />

3. Bir sayı oku (N)<br />

4. sayac=sayac+1 al<br />

5. faktor=faktor*sayac<br />

6. Eğer sayac < N ise 4. adıma git<br />

7. Faktor’u yazdır<br />

8. Bitir.<br />

Akış Diyagramı<br />

Pascal Kodu<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 19 Öğr. Gör. Mustafa AKSU<br />

Var<br />

N,sayac:integer;<br />

Faktor:longint;<br />

Begin<br />

end.<br />

write (‘Bir sayı girin’);<br />

readln (N);<br />

for sayac:=1 to N do<br />

faktor:=faktor*sayac ;<br />

writeln(‘Faktöriyel =‘ , faktor);<br />

readln;


Soru: 0-100 aralığındaki çift sayıları toplayıp ekrana yazdıran problemin çözümü<br />

<strong>Algoritma</strong><br />

1. Başla<br />

2. i=0, top=0 al<br />

3. top:=top+i al<br />

4. i:=i+2 al ;<br />

5. Eğer i>=100 ise 6. adıma<br />

değilse 3. adıma git<br />

6. top değerini yaz<br />

7. Bitir.<br />

Akış Diyagramı<br />

Pascal Kodu<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 20 Öğr. Gör. Mustafa AKSU<br />

var<br />

begin<br />

i,top:integer;<br />

top:=0;<br />

for i:=1 to 100 do<br />

begin<br />

if (i mod 2=0) then<br />

end;<br />

top:=top+i;<br />

writeln(‘sayilarin toplami = ',top);<br />

readln;<br />

end.


2. PASCAL PROGRAMLAMA DĐLĐ YAPISI<br />

2.1. <strong>Giriş</strong><br />

Bir Pascal programı en genel anlamda üç ayrı kısımdan oluşmuştur. Bu kısımlar bulunmaları<br />

gereken sıraya göre aşağıda <strong>ve</strong>rilmiştir.<br />

Program Başlığı; {Đsteğe bağlı}<br />

Tanımlama Bloğu; {Değişken sabit varsa}<br />

Begin<br />

End.<br />

Đcra Bloğu; {Yapılacak Đşlemler}<br />

Programların asıl icra bölümü son bölümüdür. Yukarıda icra bloğu olarak gösterilen bu bölüm,<br />

Pascal komut cümlelerinden oluşur. ICRA bloğu, "BEGIN" ile başlar "END." ile sona erer. Her<br />

program bloğu birden fazla "END" içerebilir. Ancak bu end deyimleri program içinde bulunan<br />

değişik blokların sonunu göstermek için kullanılır <strong>ve</strong> hiç birinin sonunda "." işareti bulunmaz. "."<br />

işareti sadece ana programın sonunu göstermek amacıyla kullanılabilir. Ana programın sonu<br />

haricindeki diğer "END" deyimlerinin sonunda ";" işareti kullanılır.<br />

Örnek Bir Program:<br />

Program Ilk; Program Başlığı, sonuna ; konulur.<br />

Const Sabit sayı tanımlama bölümü<br />

b =10; b sabitinin değeri 10 dur.<br />

Var Değişken tanımlama bölümü<br />

a : integer; a sayısı tam sayıdır.<br />

c : real; c sayısı ondalıklı sayıdır.<br />

Begin Ana program başladı.<br />

End.<br />

Write ('a sayısını giriniz : '); Ekrana ' ... ' arasındakileri yaz.<br />

Readln(a);<br />

a değişkenini (klavyeden) gir. Alt satıra<br />

geç. (ln)<br />

c := a + b; a değişkeni ile b sabitini topla, c'ye ata.<br />

Writeln('a + b = ' , c);<br />

Readln<br />

'...' içindekileri yaz, sonucunu yaz (c'yi), alt<br />

satıra geç.<br />

Klavyeden herhangi bir karakter oku<br />

(Program çalıştırıldığında sonucu (c)<br />

ekranda bekletmek içindir. (yazılmasa da<br />

olur). Son satırdan bir onceki satıra ;<br />

yazılmasa da olur.<br />

Program sonu (Her Begin'in bir End'i<br />

vardır.Programın sonundaki End'in sonuna<br />

nokta isareti konulur.<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 21 Öğr. Gör. Mustafa AKSU


Program Başlığı: Bir Pascal programının ilk kısmı, kullanılması programcının seçimine bağlı olan<br />

"program başlığı'dır. Program başlığı, programa bir isim <strong>ve</strong>rmek için kullanılır <strong>ve</strong> program<br />

isimlerinde Đngiliz alfabesinde bulunmayan Türkçe karakterler kullanılmamalıdır. Programa<br />

uzun isimler <strong>ve</strong>rilebilir ancak sözcükler arasında boşluk bulunmamalıdır.<br />

Tanımlama Bloğu: Pascal programının bu bölümünde program icra bloğunda kullanılan<br />

sabitler <strong>ve</strong> değişkenlerin isimleri <strong>ve</strong> bunların ne tür sabit/değişken olduğu bildirilir. Bu blok<br />

Pascal programı içerisinde mutlaka belirtilmelidir. Örnek olarak, aşağıda değişik <strong>ve</strong>ri<br />

tiplerindeki değişkenlerin bir tanımlama bloğunda nasıl tanımlanabileceği gösterilmiştir.<br />

Tanım Veri Tipi<br />

ABS :REAL;<br />

A :STRING;<br />

B :INTEGER;<br />

C :LONGINT;<br />

F :SHORTINT<br />

H ; :BOOLEAN;<br />

J :BYTE;<br />

KL :WORD;<br />

2.2. Özel Semboller <strong>ve</strong> Pascal Sözcükleri<br />

2.2.1 Özel Semboller<br />

Bir Pascal programında kullanılabilecek özel semboller A'dan Z'ye büyük <strong>ve</strong> a'dan z'ye küçük<br />

Đngiliz alfabesi harfleri, 0-9 arası rakamlardır. Pascal programlama dilinde kullanılan diğer<br />

bazı semboller <strong>ve</strong> anlamları aşağıda tanımlanmıştır.<br />

>,


And Asm Array Begin<br />

Case Const Constructor Destruct<br />

Div Do Downto Else<br />

End File For Function<br />

Goto If Implementation Đon<br />

Inline Interface Label Mod<br />

Nil Not Of Object<br />

Or Packed Procedure Program<br />

Record Repeat Set Shl<br />

Shr String Then To<br />

Type Unit Until Uses<br />

Var While With Xor<br />

2.3. Değişken <strong>ve</strong>ya Sabitlerin Tanımlanması<br />

Var Bloğu:<br />

Pascalda değişken tanımlamak için VAR bloğu kullanılır. Bu blokta bir değişken<br />

tanımlamak için önce değişkenin adı, sonra “:” (iki nokta üstüste) <strong>ve</strong> son olarak da<br />

değişkenin tipi belirtilir. Aynı tipte olan değişkenleri virgülle ayırarak bir defada da<br />

tanımlayabilirsiniz.<br />

Değişken Tanımlamalarına Örnekler:<br />

Var<br />

Yas : shortint;<br />

BOY : byte;<br />

SAYI : integer;<br />

kisisayisi : integer;<br />

BuyukSayi : longint;<br />

Para : real;<br />

Pi : real;<br />

Sayac : word;<br />

Nufus : single;<br />

sayi2 : double;<br />

araLIK : extended;<br />

SaYI3 : comp;<br />

Yeni : byte;<br />

harf : char;<br />

Sayi : integer;<br />

isim, Soyisim : string;<br />

Var bloğu başka bir bloğun başlaması ile biter. Programınızın daha okunaklı olması için<br />

“:” leri alt alta getirmeye özen gösterebilirsiniz. Unutmayın ki iyi bir programcı kodunun<br />

okunurluğundan belli olur.<br />

Const Bloğu:<br />

Pascalda sabit tanımları CONST bloğunda yapılır. Sabitlerin özelliği program içerisinde<br />

değerlerinin değiştirilememesidir. Bir sabitin tanımlanması için önce sabitin adı, sonra “=”<br />

<strong>ve</strong> sabit değeri yazılır.<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 23 Öğr. Gör. Mustafa AKSU


Sabit Tanımlamalarına Örnekler :<br />

Const<br />

Pi = 3.14;<br />

Pi_Sayisi = 3.1415;<br />

Bu_yil = 1999;<br />

Tarih = '29/10/11999';<br />

isLEMciler = '+ - * /';<br />

iSim = 'Kenan';<br />

SOYAD = 'DEMĐR';<br />

YAS =20;<br />

Mesaj = 'Devam etmek için bir tuşa basınız... ';<br />

Avagadro_Sayisi = 6.02E23;<br />

Cosinus_45_derece = 0.7071067;<br />

TelefonNumarasi = '3434343';<br />

Katsayi = 100;<br />

buyuk_mu = false;<br />

dogru = true;<br />

arti = ' + ';<br />

yanlis = 'false';<br />

Bu blokta yapılabilecek diğer bir tanım ise değişkenlere tipi ile birlikte ilk değer<br />

<strong>ve</strong>rilmesidir. Bunun için önce değişkeninizin adını yazıyorsunuz sonra “:” koyup tipini<br />

belirliyorsunuz <strong>ve</strong> ilk değer <strong>ve</strong>rmek için “=” yazıp ilk değerini <strong>ve</strong>riyorsunuz.<br />

Örnek:<br />

Const<br />

Sayac : byte = 0;<br />

Pascal programlama dilinde icra bloğu içinde kullanılan değişkenler VAR tanım bloğu içinde,<br />

sabitler ise CONST bloğu içinde tanımlanır. Örneğin A,B değerleri değişken <strong>ve</strong> C değeri sabit<br />

ise bu değerlerin programın tanım bloklarında ifade edilmesi aşağıdaki şekilde olacaktır.<br />

VAR<br />

CONST<br />

A,B:REAL;<br />

C=12:INTEGER;<br />

Burada, VAR'dan sonra gelen REAL ifadesi A <strong>ve</strong> B değişkenlerinin gerçel sayı <strong>ve</strong>ri tipinde olduğunu<br />

belirtirken CONST'dan sonra gelen INTEGER ifadesi C sayısının integer <strong>ve</strong>ri tipi olduğunu<br />

belirtmektedir.<br />

Değişkenlere Değer Atama<br />

Pascalda diğer programlama dillerinden farklı olarak değer ataması yapılırken ":=" (iki<br />

nokta üst üste <strong>ve</strong> eşittir işaret ikilisi kullanılır). Yani sayi diye bir integer tipindeki<br />

değişkene 20 değerini atamak istediğimizde yapmamız gerekenler şöyle olacaktır.<br />

Örnek:<br />

Var<br />

sayi : integer;<br />

{ sayi adında integer tipinde bir değişken tanımladık }<br />

...<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 24 Öğr. Gör. Mustafa AKSU


sayi := 20;<br />

(* sayi değişkenine 20 değerini atadık *)<br />

sayi := sayi + 1;<br />

(* sayi değişkeninin değerini 1 arttırdık *)<br />

...<br />

Pascalda değişkenlere değer atarken iki nokta üstüstü <strong>ve</strong> eşittir birlikte kullanılır. Eşittir tek<br />

başına kullanıldığında karşılaştırma operatörü olarak görev yapar.<br />

Değişken <strong>ve</strong>ya sabit tanımlarken şunlara dikkat etmek gerekmektedir:<br />

1. Bir değişken <strong>ve</strong>ya sabit A..Z <strong>ve</strong>ya a..z arasındaki harflerle yada _ (alt çizgi) ile başlar.<br />

ADRES, isim, _faktor gibi.<br />

2. Değişken <strong>ve</strong>ya sabitlerde ilk karakter rakam olamaz.<br />

Var<br />

1a, 23B : integer gibi. {Bu tanımlama yanlış}<br />

a1, B23 : integer gibi. {Bu tanımlama doğru}<br />

3. Değişken birden fazla kelimeden oluşuyorsa kelimeler arasına alt çizgi ( _ ) karekteri<br />

konulmalıdır.<br />

Var<br />

dairenin_alani : real;<br />

4. Değişken içerisinde sadece Türk alfabesinde olup Đngiliz alfabesinde olmayan<br />

(ç,Ç,ğ,Ğ,ı,Đ,ö,Ö,ü,Ü,ş,Ş) karakterler kullanılamaz.<br />

Var<br />

maaş, sınıf: integer ; {Tanımlaması yanlış}<br />

5. Değişken içerisinde noktalama işaretleri (, . ; ? / { [ ( ) , karşılaştırma operatörleri ( =),<br />

boşluk kullanılamaz.<br />

Var<br />

sınıfın.mevcudu: integer; {Tanımlaması yanlış}<br />

6. Tanımlanan değişken <strong>ve</strong>ya sabit programlama dilinin komutları olamaz.<br />

Örnek: Var<br />

Read, file : integer ; {Kullanımları yanlış}<br />

Not: integer ; {Kullanımı yanlış}<br />

7. Tanımlanan değişken kullanılacak tipe <strong>ve</strong> kullanım amacına uygun tanımlanmalıdır.<br />

Programlara Açıklama Eklenmesi<br />

Program yazımı sırasında kodlarımıza çok sık ekleme <strong>ve</strong> çıkarmalar yaparız bunlar bazen<br />

programları içinden çıkılmaz hale getirebilir, bunu engellemek için Pascalda programlara<br />

açıklama satırları ekleyebilirsiniz. Açıklama satırları eklemeniz ileride programda yaptığınız<br />

değişiklikleri <strong>ve</strong> program akışını kolayca hatırlamanızı <strong>ve</strong> programınızı inceleyen diğer<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 25 Öğr. Gör. Mustafa AKSU


kişilerin programı kolayca anlamalarını sağlayacaktır.<br />

Pascalda açıklama satırı yazımı için {,} sembolleri <strong>ve</strong>ya (*,*) ikilileri kullanılır bunlar<br />

açıklamanın nerede başlayıp nerede bittiklerini belirtir. Programın derlenmesi esnasında bu<br />

satırlar derleyici tarafından gözardı edilir, yani derlenmiş kodda açıklama satırları yer<br />

almaz. Açıklamalar birinci tipte { ile başlar } ile biter. Đkinci tipte ise (* ile başlar <strong>ve</strong> *) ile<br />

biter.<br />

Programlarınızda açıklama satırlarına sıkça yer <strong>ve</strong>rmeniz hem sizin hem de programı<br />

inceleyen diğer kişilerin programı rahat anlamalarını sağlayacaktır.<br />

Örnek:<br />

Var<br />

sayi:integer;<br />

{sayi değişkeni kaç kişinin adını gireceğimizi saymak için kullanıldı. Bu bir açıklama<br />

satırıdır <strong>ve</strong> derleyici tarafından gözardı edilir}<br />

adi:string[20];<br />

(* Bu da bir açıklama satırıdır <strong>ve</strong> bu satır da derleyici tarafından gözardı edilir*)<br />

Pascalda değişken tanımlamalarının <strong>ve</strong> kod satırlarının sonuna noktalı virgül geldiği halde<br />

açıklama satırlarının sonuna noktalı virgül gelmediğine özellikle dikkat edin.<br />

2.4. Pascalda Veri Tipleri<br />

Pascal programlama dilinde kullanılan değişik <strong>ve</strong>ri tiplerinin tanımları <strong>ve</strong> geçerli olduğu alanlar<br />

aşağıda tanımlanmıştır.<br />

2.4.1 Tamsayı <strong>ve</strong>ri tipleri<br />

2.4.1.1. Integer Tipi Veriler<br />

Integer tipindeki <strong>ve</strong>riler tamsayılardan oluşmuşlardır <strong>ve</strong> kayar nokta içermezler. Turbo<br />

Pascal'daki integer tipteki tamsayılar -32768 ile +32767 arasında sınırlandırılmışladır.<br />

2.4.1.2. Word Tipi Veriler<br />

Word Tipi <strong>ve</strong>riler, 0-65535 arasındaki tamsayılardan oluşmuşlardır.<br />

2.4.1.3. Shortint Tipi Veriler<br />

-128 ile +127 arasındaki tamsayılardan oluşmuşlardır.<br />

2.4.1.4. Byte Tipi Veriler<br />

Byte tipi <strong>ve</strong>riler işaret <strong>ve</strong> desimal nokta içermeyen 0-255 arasındaki değerlerden oluşan<br />

tamsayılardır. Programda, 0-255 arasındaki tamsayılar için değişken <strong>ve</strong>ya sabitlerin Byte tipi<br />

olarak tanımlanması bellekten tasarruf sağlar.<br />

2.4.1.5. Comp Tip Veriler<br />

Comp tip <strong>ve</strong>riler çok uzun tamsayıların tanımlanması için kullanılır. Comp <strong>ve</strong>ri tipi ile 19-20<br />

basamaklı sayılar ifade edilir. Tanım aralığı; -2 63 ...2 63<br />

2.4.1.5. Longint Tipi Veriler<br />

-2147483648 ile +2147483647 arasında görev yaparlar <strong>ve</strong> tamsayıların menzil olarak en<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 26 Öğr. Gör. Mustafa AKSU


kapsamlısıdır.<br />

2.4.2. Ondalıklı Değişken Tipleri<br />

2.4.2.1 Real Tip Veriler<br />

Real tip <strong>ve</strong>riler desimal nokta içeren <strong>ve</strong> üslü formda ifade edilebilen gerçel sayılardır. Üs ifadesi<br />

olarak "E" harfi kullanılmaktadır. Kullanımları ile ilgili örnekler aşağıda <strong>ve</strong>rilmiştir. Tanım<br />

aralığı;2.9E-39..1.7E38 'dir. Bellekte 6 byte yer kaplar.<br />

-2.3454<br />

123.11223344<br />

-2.45E+12<br />

2.45E+12<br />

1.123123E-12<br />

Olağan koşullarda bir programlama hatası söz konusu değilse <strong>ve</strong>ya çok büyük sayılar ile<br />

çalışılmıyor ise REAL tip sayılarla çalışmada bir sorun ile karşılaşmayız.<br />

Kişisel bilgisayarların mikro işlemcileri 80x86 olarak isimlendirilir. Bu işlemci ailesinin yükünü<br />

hafifletmek için 80x87 olarak bilinen matematik işlemcisi kullanılır. Pascalda bu işlemci ile<br />

kullanılmak üzere dört tip tanımlanmıştır. Bunlar; Single, Double, Extended <strong>ve</strong> Comp 'tur.<br />

2.4.2.2 Single Tip Veriler<br />

Single tip <strong>ve</strong>riler, 1.5E-45...3.4E38 sayı kümesi aralığında tanımlanabilir. Bellekte 4 byte yer<br />

kaplar.<br />

2.4.2.3. Double Tip Veriler<br />

Double tip <strong>ve</strong>riler, 5.0E-45...3.4E38 sayı kümesi aralığında tanımlanabilir. Bellekte 8 byte yer<br />

kaplar.<br />

2.4.2.4. Extended Tip Veriler<br />

Extended tip <strong>ve</strong>riler, 3.4E-4932...1.1E4932 sayı kümesi aralığında tanımlanabilir. Bellekte<br />

10 byte yer kaplar.<br />

80x87 sınıfındaki <strong>ve</strong>ri tiplerinin kullanılabilmesi için programın en başına {$N+} derleyici komutu<br />

<strong>ve</strong>rilmelidir. Bilgisayarda matematik işlemci yok ise {$E+} matematik işlemci emülasyonu da bu<br />

satıra eklenir.<br />

Günümüzün Pentium tabanlı bilgisayarlarında matematik işlemci bulunduğundan, matematik<br />

işlemcili bilgisayarlarda emülasyon direktifini kullanmaya gerek yoktur.<br />

2.4.3. String (Metin <strong>ve</strong>ya karakter) <strong>ve</strong>ri Tipleri<br />

2.4.3.1. Char Tipi Veriler<br />

Char tipi <strong>ve</strong>riler, ASCII karakter kümesinin 256 adet elemanından oluşurlar. Char tipi <strong>ve</strong>riler<br />

bir sabit olarak ele alındığından ' ' içerisinde yazılır.<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 27 Öğr. Gör. Mustafa AKSU


2.4.3.2. String Tipi Veriler<br />

Bu tip <strong>ve</strong>riler, karakter kümesi şeklinde olup ' ' içerisinde yazılırlar.<br />

A:STRING[5];<br />

B:STRING[16];<br />

Burada A isimli karakter kümesi maksimum 5 karakterden, B isimli karakter dizisi ise<br />

maksimum 16 karakterden oluşmaktadır.<br />

Bu bilgiler ile ilk Pascal programımızı yazabiliriz.<br />

Var<br />

mesaj:string[7];<br />

BEGIN<br />

mesaj :='merhaba' ;<br />

Write('Sayın bilgisayar kullanıcısı ',mesaj);<br />

END.<br />

Programımızın çalıştırılmasıyla ekran görüntüsü aşağıdaki gibi olacaktır.<br />

Sayın bilgisayar kullanıcısı merhaba<br />

Örnek :<br />

Klavyeden vize <strong>ve</strong> final notu girildiğinde o öğrencinin not ortalamasını bulan programı<br />

yazınız?<br />

var<br />

vize,final:shortint;<br />

begin<br />

end.<br />

write('vizeyi giriniz');<br />

readln(vize);<br />

write('finali giriniz');<br />

readln(final);<br />

write('ortalama',vize*0.4+final*0.6);<br />

readln;<br />

2.4.4. Boolean (Doğru , Yanlış) Tipi Veriler<br />

Mantıksal ifadeler olarak da isimlendirilebilen Boolean tipi <strong>ve</strong>riler sadece iki değerden<br />

oluşurlar. Bunlar "FALSE" <strong>ve</strong> "TRUE" dir.<br />

Durum: Boolean;<br />

Hata: Boolean;<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 28 Öğr. Gör. Mustafa AKSU


3. OPERATÖRLER<br />

3.1. Aritmetik Operatörler<br />

Aritmetik operatörler dört işlem için kullandığımız (toplama, çıkartma, çarpma <strong>ve</strong> bölme) +,<br />

-, / <strong>ve</strong> * 'dan oluşmaktadırlar. Tam <strong>ve</strong> reel sayıların aritmetik işlemleri için kullanılan<br />

operatörlere ilişkin liste aşağıdaki tabloda <strong>ve</strong>rilmiştir.<br />

"+","-" <strong>ve</strong> "*" işlemlerinde işlem yapılan sayı cinsi reel ise sonuç ta reel'dir. Đşlem yapılan<br />

sayılar tamsayı ise sonuçta tamsayıdır. "/" işleminde ise sonuç her zaman reel sayıdır.<br />

Operatör Adı Anlamı<br />

+ toplama Sol <strong>ve</strong> sağdaki değerleri birbirine ekler.<br />

- çıkarma Soldaki değerden sağdaki değerleri çıkarır.<br />

* çarpma Sol <strong>ve</strong> sağdaki değerleri birbiri ile çarpar.<br />

/ bölme(Reel) Soldaki değeri sağdaki değere böler.<br />

Div bölme(Tamsayı) Soldaki değeri sağdaki değere böler.<br />

mod kalan Soldaki değerin soldaki değere bölünmesinden kalan<br />

Sık sık kullandığımız bu operatörlerin yanında iki sayının bölümünden kalanı <strong>ve</strong>ren MOD, iki<br />

tamsayının bölümünün sonucunda tamsayı üreten DIV programlarımızda sık kullandığımız<br />

aritmetik operatörlerdir.<br />

3.1.1 Div Operatörü<br />

Đki tamsayının bölümünün tamsayı kısmını <strong>ve</strong>rir.<br />

123/4=30.75 123 div 4=30<br />

3.1.2 Mod Operatörü<br />

Tamsayı tipindeki operandların bölümünü yapar <strong>ve</strong> sonucun kalan kısmını bir tamsayı değer<br />

olarak üretir.<br />

123/4=30.75 123 mod 4 =3<br />

'/' operatörü operand olarak kullanılan değerlerin tipi ya da bölümün sonuç değeri ne olursa<br />

olsun real tipte sonuç üretir. Bu nedenle bir bölümün sonucunun bir tamsayı değişkene direkt<br />

olarak aktarılması söz konusu değildir.<br />

Mod <strong>ve</strong> Div işlemlerinin sonuçları her zaman tamsayıdır.<br />

4 div 12 = 0, 13 div 4 = 3 3 mod 2 = 3, 4 mod 2 = 0<br />

12 div 4 = 3, 16 div 4 = 4 5 mod 2 = 1, 4 mod 0 = (tanımsız)<br />

3.2. Đlişkisel Operatörler<br />

Diğer programlama dillerinde de olduğu üzere, Pascal programlama dilinde iki <strong>ve</strong>ya daha fazla<br />

operand arasındaki ilişkilerin araştırılmasını yapan ilişkisel operatörler, toplu olarak aşağıdaki<br />

tabloda <strong>ve</strong>rilmiştir.<br />

Operatör Adı Anlamı<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 29 Öğr. Gör. Mustafa AKSU


= Eşit Sol <strong>ve</strong> sağdaki değerler birbirlerine eşitse<br />

Eşit değil Sol <strong>ve</strong> sağdaki değerler birbirlerine eşit değilse<br />

< Küçük Soldaki değer sağdaki değerden küçükse<br />

> Büyük Soldaki değer sağdaki değerden büyükse<br />

= Büyük yada eşit Soldaki değer sağdaki değere eşit yada büyükse<br />

3.3. Aritmetik Đşlemlerde Đşlem Öncelik Sıraları<br />

Öncelik Sırası Aritmetik Đşlem <strong>ve</strong> bağıntılı tanımlar<br />

1 işaretli sayısal bilgiler<br />

2 Parantez içindeki işlemler<br />

3 Aritmetik fonksiyonlar<br />

4 Üs alma<br />

5 Çarpma <strong>ve</strong> Bölme<br />

6 DIV tam sayıya bölme deyimi<br />

7 MOD (Bölme işleminde kalan bulma işlemi)<br />

8 Toplama <strong>ve</strong> çıkarma<br />

9 Mantıksal ilişki ifadeleri (=, >,


Yukarıdaki örnekte işlem sırası;<br />

1. Z'nin karekökü alınır<br />

2. 1 no.lu işlem 2 sabiti ile çarpılır<br />

3. (2-x) değeri hesaplanır<br />

4. 2 no.lu işten elde edilen sonuç 3 no.lu işlemin sonucuna bölünür.<br />

============================================<br />

Konu Sonu Çalışma Soruları<br />

Soru 1. Aşağıda <strong>ve</strong>rilen matematiksel eşitlikleri Pascal programlama dili<br />

kurallarına göre yazınız.<br />

Soru 2. Bir öğrencinin 1. Yazılı, 2.yazılı <strong>ve</strong> sözlü notlarının ortalamasını<br />

hesaplayan programı yazınız.<br />

Soru 3. Bir dik üçgende Hipotenüsü hesaplayan programı yazınız.<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 31 Öğr. Gör. Mustafa AKSU


4. GĐRĐŞ/ÇIKIŞ DEYĐMLERĐ<br />

4.1. <strong>Giriş</strong><br />

<strong>Giriş</strong>/çıkış deyimleri bilgisayarın ana belleği ile çevre aygıtlar arasında bilgi transferi yaparlar.<br />

Herhangi bir çevre aygıtından (klavye gibi) bir <strong>ve</strong>rinin belleğe okutulması <strong>ve</strong>ya ana bellek<br />

üzerindeki bir <strong>ve</strong>rinin çevre aygıtlara (Ekrana) gönderilmesi giriş/çıkış deyimleri ile<br />

gerçekleştirilir. Genellikle giriş çıkış deyimi olarak aşağıda tanımlanan deyimler kullanılmaktadır.<br />

4.2 Read-Readln<br />

Pascal 'da okuma işlemi için kullanılan komutlar READ <strong>ve</strong> READLN olup genel kullanım yapısı şu<br />

şekildedir;<br />

Read(A1,A2,A3,...,An);<br />

Readln(A1,A2,A3,...,An);<br />

Read ile Readln arasındaki fark: Read, okuma işlemi tamamlandıktan sonra aynı satırda<br />

kalınmasını, Readln ise yeni bir satıra gelinmesini sağlar. Bir Pascal programı içerisinde bu iki<br />

komutun kullanımı aşağıdaki program parçasında <strong>ve</strong>rilmiştir.<br />

Var<br />

s,a,n:real;<br />

begin<br />

Read(s,a,n);<br />

end.<br />

Okunacak değerlerin düzeni;<br />

12.45 43.543 62.12<br />

Aynı değerleri Readln ile okutturmak istersek;<br />

Var<br />

s,a,n:real;<br />

begin<br />

Readln(s,a,n) ;<br />

end.<br />

Okunacak değerlerin düzeni yukarıdaki okuma düzeni ile aynı olabileceği gibi her değer ayrı bir<br />

satırda <strong>ve</strong>rilebilir, her hangi satırlarda <strong>ve</strong>rilebilir, örnek olarak s, a <strong>ve</strong> n değerleri aşağıdaki okuma<br />

düzeninde okutturulmuştur.<br />

12.45<br />

43.543<br />

62.12<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 32 Öğr. Gör. Mustafa AKSU


4.3. Write-Writeln<br />

Pascal programlama dilinde yazma işlemi için WRITE <strong>ve</strong> WRITELN komutları<br />

kullanılmaktadır. Bu komutların genel kullanım yapısı şu şekildedir;<br />

Write(A1,A2,A3,...,An)<br />

Writeln(A1,A2,A3,...,An)<br />

Đki kullanım şekli arasındaki fark, Read ile Readln arasındaki fark gibidir. Đfadeler Write ile<br />

yazdırıldıktan sonra kursör aynı satırda bekleyecektir, Writeln ile yazdırılması durumunda ise<br />

kursör bir sonraki satıra geçecektir.<br />

Var<br />

s,a,n:integer;<br />

begin<br />

s:=3;<br />

a:=9;<br />

n:=5;<br />

Write(s);<br />

Write(a);<br />

Write(n);<br />

end.<br />

Programın çalıştırılmasıyla elde edilen sonuç;<br />

395 olacaktır.<br />

Aynı değişkenleri Writeln ile yazdırdığımızda;<br />

Var<br />

s,a,n:integer;<br />

begin<br />

s:=3;<br />

a:=9;<br />

n:=5;<br />

Writeln(s);<br />

Writeln(a);<br />

Writeln(n);<br />

end.<br />

3<br />

9<br />

5<br />

çıktısı elde edilecektir.<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 33 Öğr. Gör. Mustafa AKSU


4.4. Yazım Đçin Format Belirleme<br />

Write <strong>ve</strong> Writeln deyimi ile yapılan bilgi çıkışlarını düzenlemek için yazım formatları<br />

kullanılır. Write yada WriteLn komutlarıyla ekrana "510.4542" gibi reel bir sayı yazdırılmak<br />

istendiğinde, ekranda 5.1045420000E+02 gibi karmaşık bir değer görülür. Bu değeri<br />

anlaşılır bir şekle dönüştürmek için bir yazım formatı belirtilmesi gerekir.<br />

Örnek:<br />

var<br />

a:real;<br />

begin<br />

a:=510.4542;<br />

write(a:6:2);<br />

end.<br />

Bu örnekte ekrana "510.45" şeklinde bir sayı yazar. Buradaki 6 nokta da dahil sayının<br />

karakter uzunluğunu, 2 ise virgülden sonraki kısmın uzunluğunu ifade eder<br />

Yazdırılmak istenilen değerin tipine bağlı olarak iki farklı yazım formatı kullanılır.<br />

1. Yazım Formatı (X:n) :Tam sayı <strong>ve</strong>ya karakter tabanlı değerleri ekrana formatlı<br />

yazdırırken bu format kullanılır. Bu formata göre yazdırılmak istenilen X değeri n<br />

karakterlik alanda sağa dayalı olarak yazılır. X değerini oluşturan dijit <strong>ve</strong>ya karakterin<br />

uzunluğu n sayısından küçük ise, aradaki fark kadar sol tarafta boşluk bırakılır. X değerinin<br />

uzunluğu n sayısına eşit <strong>ve</strong>ya büyük ise yazdırma işlemi format belirtilmemiş gibi<br />

gerçekleştirilir.<br />

Örnek:<br />

Const<br />

i:integer=567;<br />

b:boolean=True;<br />

c:char='b';<br />

h:string[6]='Pascal';<br />

begin<br />

Writeln(‘123456789');<br />

Writeln;<br />

Writeln(i:9);<br />

Writeln(b:9);<br />

Writeln(c:9);<br />

Writeln(h:9);<br />

Writeln(i:2);<br />

Writeln(h:5);<br />

end.<br />

2. Yazım Formatı (X:n:k) : Bu yazım formatı real sayılar üzerinde çalışmaktadır. Bu<br />

yazım formatıyla reel sayılar üssüz notasyonda yazdırılır. Yazdırılacak X real değeri n karakterlik<br />

alanda sağa dayalı olarak üssüz yazdırılır, k ise n karakterin sonundaki kesirli kısmı<br />

göstermektedir.<br />

Örneğin A değeri, A:7:2 şeklinde yazdırılmak istenirse; program real sayı için 7 karakterlik<br />

yer ayırır. Bu alanın son iki hanesi ondalıklı kısım için sondan 3. hanesi ise desimal nokta için<br />

kullanılır.<br />

Sayının tamsayı kısmı ayrılan alanın uzunluğundan küçük ise, aradaki fark kadar sol tarafta<br />

boşluk bırakılır. Yazdırılacak sayının tam sayı kısmı bu alana sığmıyor ise, tamsayı için ayrılan<br />

alanın uzunluğu yazdırılan sayının tamsayı alan uzunluğuna eşit büyüklükte kabul edilir. Kesirli<br />

kısmı ayrılan alandan daha küçük ise aradaki fark kadar sağ tarafa 0 dijiti ila<strong>ve</strong> edilir. Kesirli<br />

kısım alana sığmıyorsa yuvarlatılarak yazılır.<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 34 Öğr. Gör. Mustafa AKSU


Yazım sırasında kesirli alanın yazılması istenmiyorsa k sayısının "0" yazılması gerekir. k sayısının<br />

sıfır olması desimal noktanın yok olmasını sağlar.<br />

Bu anlattığımız yazım formatlarını bir tablo halinde özetleyecek olursak:<br />

Tip Yazım Formatı Açıklama<br />

integer Değişken : n<br />

Real Değişken:n:k<br />

String<br />

Char<br />

şeklinde olur.<br />

Değişken:n<br />

Örnek:<br />

Const<br />

a:real=123.127927;<br />

begin<br />

Writeln('123456789 ’ );<br />

Writeln('*********');;<br />

Writeln(a:9:4);<br />

Writeln(a:9:3);<br />

Writeln(a:9:2);<br />

Writeln(a:9:0);<br />

Writeln(a:7:2);<br />

Writeln(a:6:2);<br />

Writeln(a:5:2);<br />

Writeln(a:0:0);<br />

end.<br />

Integer tipindeki bir değişkenin adının arkasına n gibi sayısal bir değer<br />

yazılırsa bu n karakterlik bir saha içinde bu sayının sağa doğru dayalı bir<br />

şekilde yazılmasını sağlar.<br />

Real tipinde bir değişkenin adının arkasına n <strong>ve</strong> k gibi sayısal değerler<br />

yazılırsa bunlar n karakterlik alan içinde ondalık kısmı noktadan sonra m<br />

tane karakter içermek üzere sağa dayalı olarak yazdırılır.<br />

String tipindeki bir değişkenin adının arkasına n gibi sayısal bir değer<br />

yazılırsa bu n karakterlik bir saha içinde bu karakter dizisinin sağa doğru<br />

dayalı bir şekilde yazılmasını sağlar.<br />

Programın çalışmasıyla elde edilen sonuç aşağıda <strong>ve</strong>rilmiştir. Program sonucuna göre sondan<br />

2. <strong>ve</strong> 3. satırların aynı olduğuna dikkat ediniz.<br />

123456789<br />

*********<br />

123.1279<br />

123.128<br />

123.13<br />

123<br />

123.13<br />

123.13<br />

123.13<br />

123<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 35 Öğr. Gör. Mustafa AKSU


5. Karşılaştırma Komutları<br />

Pascalda genel olarak kullanılan karşılaştırma deyimleri şunlardır:<br />

IF..THEN..ELSE<br />

CASE..OF<br />

5.1. If...Then...Else<br />

Eğer…ise…değilse (If..then..else) Karar yapısı : Program yazarken en çok yapılan işlerin<br />

başında elinizdeki <strong>ve</strong>rilere bakarak bir karar <strong>ve</strong>rmek <strong>ve</strong> programın akışını bu karara göre<br />

yönlendirmek gelir. Đyi programda gerekli yerlerde doğru <strong>ve</strong> etkili karar yapıları oluşturmak<br />

çok önemlidir. Çünkü bir programda en yavaş işleyen komutlardan birisi karşılaştırma<br />

komutlarıdır. Pascalda en çok kullanılan karşılaştırma <strong>ve</strong> kontrol komutu If..then..else dir.<br />

If deyiminden sonra yapılacak karşılaştırmanın sonucu doğru (True) ise then<br />

deyiminden sonraki blok işler. Eğer karşılaştırmanın sonucu yanlış (False) ise bu sefer de<br />

else deyiminden sonraki blok işler. Else deyimi seçimlik bir deyimdir. Yani isterseniz, ya da<br />

gerekmezse bu kısmı kullanmayabilirsiniz. Bu durumda eğer karşılaştırma sonucu yanlış ise<br />

program bir sonraki komutla akışına devam eder.<br />

Genel kullanım kalıbı şu şekildedir:<br />

if (şart) then<br />

Yapılması istenen işlem <strong>ve</strong>ya işlemler<br />

Else<br />

Yapılması istenen işlem <strong>ve</strong>ya işlemler<br />

Eğer else kullanacaksanız else den önceki satırda noktalı virgül kullanmamalısınız.<br />

...<br />

If then<br />

begin<br />

…<br />

komutlar<br />

…<br />

end;<br />

[ else<br />

begin<br />

…<br />

komutlar<br />

…<br />

end;]<br />

…<br />

if <strong>ve</strong>ya Else’den sonra 1’den fazla komut <strong>ve</strong>ya işlem varsa begin – end bloğu<br />

kullanılmalıdır.<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 36 Öğr. Gör. Mustafa AKSU


Eğer koşul doğru ise Đşlem 1'i <strong>ve</strong> Đşlem 2'yi yap değilse işlem3'ü <strong>ve</strong> işlem4’ü yap.<br />

Pascal'da yazımı:<br />

if Koşul Then<br />

Begin<br />

End<br />

Else<br />

begin<br />

End;<br />

Đşlem1;<br />

Đşlem2;<br />

Đşlem3;<br />

Đşlem4;<br />

Eğer isterseniz iç içe if kullanmaya devam edebilirsiniz. Bu oldukça karmaşık bir yapı<br />

oluşturabilir ancak bazı durumlarda böylesi uygulamalar zaruri olur.<br />

Örnek: Girilen bir sayının tek <strong>ve</strong>ya çift olduğunu bulan program.<br />

Var<br />

a : Integer;<br />

Begin<br />

End.<br />

Write('Bir sayı giriniz: '); Readln(a);<br />

If (a mod 2 = 1) Then<br />

Else<br />

Readln;<br />

Writeln ('Girdiğiniz Sayı Tekdir')<br />

Writeln ('Girdiğiniz Sayı Çifttir');<br />

Örnek: Girilen üç sayıdan en büyüğünü bulan program.<br />

Var<br />

a, b, c, EnBuyuk : Integer;<br />

Begin<br />

Write('Üç Sayı giriniz: ');<br />

Readln(a, b, c);<br />

If (a>=b) and (a>=c) Then EnBuyuk:=a<br />

Else<br />

If (b>=a) and (b>=c) Then EnBuyuk:=b<br />

Else<br />

EnBuyuk := c;<br />

Writeln('En Büyük Sayı = ', EnBuyuk);<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 37 Öğr. Gör. Mustafa AKSU


Readln;<br />

End.<br />

Örnek : Girilen bir sayının pozitif <strong>ve</strong>ya negatif olduğunu söyleyen program.<br />

Var<br />

Sayi : integer;<br />

begin<br />

write(‘Bir sayı girin : ‘);<br />

readln(Sayi);<br />

if Sayi < 0 then<br />

else<br />

end.<br />

writeln(‘Sayi negatiftir’)<br />

writeln(‘Sayi Pozitiftir’);<br />

Örnek: Bir öğrencinin vize <strong>ve</strong> final notunu okuyup ortalamasını vizenin % 40 <strong>ve</strong> finalin<br />

%60 ‘ını alarak hesaplayıp ortalama 60’dan büyük <strong>ve</strong>ya eşitse geçti değilse kaldı yazan<br />

progarmı yazınız.<br />

var<br />

begin<br />

vize,final:integer;<br />

ort:real;<br />

end.<br />

write('Vize notunu girin');<br />

readln(vize);<br />

write('Final notunu girin');<br />

readln(final);<br />

ort:=(vize*0.4+final*0.6);<br />

if (ort >= 60) then<br />

Writeln('Ortalama =',ort:6:2,' Gecti')<br />

else<br />

Writeln('Ortalama =',ort:6:2,' Kaldi');<br />

readln;<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 38 Öğr. Gör. Mustafa AKSU


Örnek: 1-100 aralığındaki tek sayıları toplayan programı yazınız.<br />

var<br />

i,toplam:integer;<br />

begin<br />

toplam:=0;<br />

for i:=1 to 100 do<br />

begin<br />

if (i mod 2=1) then<br />

toplam:=toplam+i;<br />

end;<br />

writeln('tek sayılarin toplamı = ',toplam);<br />

readln;<br />

end.<br />

Örnek: Dışarıdan girilen rastgele 10 tane sayıdan kaç tane tek <strong>ve</strong> çift var ayrıca tekleri<br />

ayrı çiftleri ayrı toplayan programı yazınız.<br />

var<br />

begin<br />

i,tek,cif,tektop,ciftop,sayi:integer;<br />

tek:=0;cif:=0;tektop:=0;ciftop:=0;<br />

for i:=1 to 10 do<br />

begin<br />

write(i,'. sayiyi giriniz : ');readln(sayi);<br />

if sayi mod 2=0 then<br />

begin<br />

cif:=cif+1;<br />

ciftop:=ciftop+sayi;<br />

end<br />

else<br />

begin<br />

tek:=tek+1;<br />

tektop:=tektop+sayi;<br />

end;<br />

end;<br />

writeln(tek,' Adet tek sayı girdiniz bunların toplamı = ',tektop);<br />

writeln(cif,' Adet cift sayı girdiniz bunların toplamı = ',ciftop);<br />

readln;<br />

end.<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 39 Öğr. Gör. Mustafa AKSU


Örnek : Öğrencinin Vize <strong>ve</strong> final notundan ortalamasını hesaplayıp geçti <strong>ve</strong>ya kaldı yazan<br />

program.<br />

Var<br />

Not1, Not2 : Integer;<br />

Ortalama: Real;<br />

Begin<br />

Write('Not 1´i giriniz : '); Readln(Not1);<br />

Write('Not 2´i giriniz : '); Readln(Not2);<br />

If (Not1 >=0) and (Not1=0) and (Not2= 50 Then<br />

Writeln('Geçtiniz Ortalamanız = ', Ortalama:4:2)<br />

Else<br />

Writeln('Kaldınız Ortalamanız = ', Ortalama:4:2);<br />

Writeln('Yanlış giriş yaptınız...');<br />

Readln<br />

End.<br />

============================================<br />

Konu Sonu Çalışma Soruları<br />

Soru 1. Vergi iadesini hesaplayan programı yazınız. ( Emekli aylığı alanlar için: 0-180<br />

milyon arası %10, 180-360 milyon arası %20, 360-600 milyon arası %12, 600 milyon<br />

üzeri % 5)<br />

Soru 2. Üç kenarı girilen bir üçgenin eşkenar-çeşitkenar-ikiz kenar olup olmadığını bulan<br />

programı yazınız.<br />

Soru 3. Đki sayının Ortak Bölenlerinin En Büyüğünü (OBEB) <strong>ve</strong> Ortak Katlarının En<br />

Küçüğünü (OKEK=A'B/OBEB) bulan programı yazınız.<br />

Soru 4. Üç sayının en küçüğünü bulan programı yazınız.<br />

Soru 5. 4 işlem yapan basit bir hesap makinesi programı yazınız.<br />

Soru 6. Bir sayının tek mi çift mi olduğunu bulan programı yazınız.<br />

Soru 7. y=x2+ax+c denklemin köklerini bulan programı yazınız.<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 40 Öğr. Gör. Mustafa AKSU


5.2. case...of<br />

Bir önceki konuda bahsedilen kontrol deyimi if..then..else genellikle az sayıda olan<br />

karşılaştırmalarda kullanılır. Ama eğer yapılan karşılaştırma çok karmaşıksa o zaman bu<br />

deyimi kullanmak oldukça zor olur <strong>ve</strong> çok fazla miktarda mantık hataları bulunur. Bunu<br />

engellemek için blok if deyimi diyebileceğimiz Case yapısını kullanırız.<br />

Case yapısında karşılaştırmanın yapılacağı değişkenin alabileceği değerler göre çeşitli<br />

işlemleri toplu olarak yapabiliriz.<br />

Case’in genel kullanımı şöyledir:<br />

case degişken of<br />

end;<br />

Veya<br />

durum-1 : işlem(ler);<br />

...<br />

durum-n : işlem(ler);<br />

case değişken of<br />

else<br />

end;<br />

durum-1 : işlem(ler);<br />

...<br />

durum-n : işlem(ler);<br />

işlem(ler)<br />

Durum dediğimiz yerlerde bir yada daha fazla, virgülle ayrılmış, sabitler <strong>ve</strong>ya aralıklar<br />

olabilir.<br />

Mesela :<br />

case Ch of<br />

else<br />

End;<br />

'A'..'Z', 'a'..'z' : WriteLn('Harf');<br />

'0'..'9' : WriteLn('Rakam');<br />

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

WriteLn('Özel karakter');<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 41 Öğr. Gör. Mustafa AKSU


Else kısmı ise tamamen seçimliktir. Đstemezseniz kullanmayabilirsiniz.<br />

Şimdi bir soruyu hem if-then else deyimi ile hem de case-of deyimi ile çözüp farkları<br />

zorlukları görelim.<br />

Soru: Başlangıç değeri I=500 olan I sayısı; dışarıdan girilen sayı 0’dan büyük <strong>ve</strong> 128’den<br />

küçükse I değişkenine 1 eklesin, 128..256 arasında ise I’ya 10 eklesin, 256’dan büyükse<br />

I’ya 100 eklesin. Aynı zamanda eğer bu sayı 0’dan küçük <strong>ve</strong> –127’den büyükse I’dan 1<br />

eksiltsin, -127..-255 arasındaysa 10 eksiltsin <strong>ve</strong> –255’den de küçükse I’dan 100 eksiltsin.<br />

if’li çözüm<br />

Var<br />

Begin<br />

End.<br />

I : integer = 500;<br />

Sayi : integer;<br />

Write(‘Bir sayı girin : ‘);<br />

Readln(Sayi);<br />

If (sayi > 0) and (sayi < 128) then<br />

I := I+1;<br />

If (sayi >= 128) and (sayi 256) then<br />

I := I+100;<br />

If (sayi < 0) and (sayi > -127) then<br />

I := I-1;<br />

If (sayi = -255) then<br />

I := I-10;<br />

If (sayi < -255) then<br />

I := I-100;<br />

Writeln(‘Đşlem sonucu I da kalan=‘ , I);<br />

Bir if deyimi için oldukça karmaşık olan bu örneği bir de case-of ile çözelim.<br />

Case-of’lu çözüm<br />

Var<br />

I : integer = 500;<br />

Sayi : integer;<br />

Begin<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 42 Öğr. Gör. Mustafa AKSU


Write('Bir sayi girin : ');<br />

readln(Sayi);<br />

case Sayi of<br />

end;<br />

1..127: I:= I + 1;<br />

128..255: I := I + 10 ;<br />

256..32767 : I := I + 100;<br />

-127..0 : I := I - 1;<br />

-255..-128 : I := I - 10;<br />

-32768..-256 : I := I - 100;<br />

writeln('Islem sonunda I değeri =',I);<br />

end.<br />

Örnek: Aşağıda kişinin yaşı girildiğinde, yaşına uygun mesajlar <strong>ve</strong>ren bir Pascal<br />

programı <strong>ve</strong>rilmiştir.<br />

Var<br />

Begin<br />

yas:integer;<br />

Write(‘Yaşınızı Giriniz : ’ );<br />

ReadLn(YAS);<br />

CASE yas OF<br />

0..5:Writeln(‘Yaşınız 0-5 arasında ’ );<br />

6..15:Writeln(‘Yaşınız 5-15 arasında ’ );<br />

16..35:Writeln(‘Yaşınız 15-35 arasında ’ );<br />

36..50:Writeln(‘Yaşınız 35-50 arasında ’ );<br />

51..85:Writeln(‘Yaşınız 50-85 arasında ’ );<br />

else<br />

end;<br />

Readln;<br />

End.<br />

Writeln(‘Çok Yaşayın’);<br />

Örnek: Girilen rakam notunu harf notuna dönüştüren programı yazınız.<br />

Var<br />

rnot:integer;<br />

Begin<br />

write('Rakam notunu Giriniz');<br />

readln(rnot);<br />

case rnot of<br />

0..29:write('Notunuz FF');<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 43 Öğr. Gör. Mustafa AKSU


30..39:write('Notunuz FD');<br />

40..46:write('Notunuz DD');<br />

47..53:write('Notunuz DC');<br />

54..63:write('Notunuz CC');<br />

64..73:write('Notunuz CB');<br />

74..81:write('Notunuz BB');<br />

82..88:write('Notunuz BA');<br />

89..100:write('Notunuz AA');<br />

else<br />

end;<br />

write('Yanlış Not');<br />

readln;<br />

end.<br />

Örnek : Dışardan iki sayı <strong>ve</strong> işlem okuyup işleme göre sonucu hesaplayıp yazdıran<br />

programı yazınız.<br />

var x,y:integer;<br />

a:char;<br />

sonuc:<br />

real;<br />

begin<br />

writeln('1.sayıyı giriniz..');readln(x);<br />

writeln('2.sayıyı giriniz...');readln(y);<br />

writeln('işlem seciniz....');readln(a);<br />

case a of<br />

'+':sonuc:=x+y;<br />

'-':sonuc:=x-y;<br />

'/':sonuc:=x/y;<br />

'*':sonuc:=x*y;<br />

else<br />

end;<br />

write('yanlış işlem yaptınız');<br />

write('işlemim sonucu:',sonuc:4:2);<br />

readln;<br />

end.<br />

============================================<br />

Konu Sonu Çalışma Soruları<br />

Soru 1 : Yılın aylarını rakam olarak girdiğimizde bu ayın hangi mevsimde olduğunu<br />

ekrana yazan programı yazınız.<br />

Soru 2 : Bir - Milyar arasındaki girilen bir sayının kaç basamaklı olduğunu ekrana yazdıran<br />

pascal programını yazınız.<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 44 Öğr. Gör. Mustafa AKSU


6. DÖNGÜ (TEKRARLAMA) DEYĐMLERĐ<br />

6.1 <strong>Giriş</strong><br />

Bu bölümde program içerisinde belirli blokların herhangi bir şarta bağlı olarak <strong>ve</strong>ya şarttan<br />

bağımsız bir şekilde ardışık olarak çalıştırılması için kullanılan deyimler üzerinde durulacaktır. Bu<br />

tekrarlama deyimleri FOR-DO, REPEAT-UNTIL, WHILE-DO şeklindedir.<br />

6.2 For-Do<br />

For deyimi, bir program parçasının herhangi bir boolean şartına bağlı olmaksızın belirlenen<br />

sayıda üst üste çalıştırılması için kullanılır. For deyiminin genel kullanım şekilleri aşağıda<br />

<strong>ve</strong>rilmiştir.<br />

1. FOR Döngü Değişkeni:=Döngü Başlangıcı to döngü sonu do<br />

Begin<br />

End;<br />

Yapılacak işlemler<br />

Bu kullanım şeklinde başlangıç değeri bitiş değerinden küçük olmak zorundadır. TO ifadesiyle<br />

başlangıçtan bitişe kadar artarak tekrar yapılacağını, DO ifadesi de tanımlanan işlemlerin<br />

tekrarlanacağını bildirir.<br />

2. FOR Döngü Değişkeni := Döngü_Başlangıcı DOWNTO Döngü_sonu DO<br />

Begin<br />

Yapılacak işlemler<br />

End;<br />

For deyiminin bu kullanım şeklinde başlangıç değeri bitiş değerinden daima büyük olup<br />

DOWNTO ifadesi de döngü değişkeninin tekrarlama işleminde azalacağını belirtir. DO ifadesi ise<br />

belirtilen işlemlerin döngü sayısınca tekrarlanacağını bildirir.<br />

Pascal dilinde diğer programlama dillerinden farklı olarak başlangıç değerinden son değere<br />

artışlar/azalmalar birer birer olmaktadır. Aşağıdaki örnek programları inceleyiniz.<br />

Örnek : Dışardan girilen bir sayının karesini küpünü %18’ini <strong>ve</strong> faktöriyelini hesaplayan programı<br />

yazınız.<br />

var<br />

begin<br />

i,say,kare,kup,fak:integer;<br />

yuzde:real;<br />

write('Sayi giriniz');<br />

readln(say);<br />

kare:=say*say;<br />

kup:=say*kare;<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 45 Öğr. Gör. Mustafa AKSU


end.<br />

yuzde:=say*0.18;<br />

fak:=1;<br />

for i:=1 to say do<br />

fak:=fak*i;<br />

writeln('Sayi Karesi Kubu Yuzdesi Faktoriyeli');<br />

write(' ',say,' ',kare,' ',kup,' ',yuzde:4:2,' ',fak);<br />

readln;<br />

Örnek : Bir den girilen N sayısına kadarki tam sayıları toplayan pascal programını yazınız<br />

Var<br />

i, N, Toplam : Integer;<br />

Begin<br />

End.<br />

Write('Son sayıyı gir: '); Readln (N);<br />

Toplam := 0;<br />

For i := 1 To N Do<br />

Toplam := Toplam + i;<br />

Writeln('1´den N´e kadar sayıların toplamı = ', Toplam);<br />

Readln;<br />

Örnek: Dışardan girilen bir ismi yine dışardan girilen bir sayı kadar yazan programı yazınız.<br />

var<br />

i,x:integer;<br />

isim:string[20];<br />

begin<br />

write('isim girin : ');<br />

readln(isim);<br />

write('isminiz kac defa yazılsın : ');<br />

readln(x);<br />

for i:=1 to x do<br />

writeln(isim);<br />

readln;<br />

end.<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 46 Öğr. Gör. Mustafa AKSU


Örnek : Dışardan iki sayı okuyup 1. sayıyı taban 2. sayıyı üs kabul ederek üs alma işlemini<br />

yapan programı yazınız.<br />

var<br />

begin<br />

end.<br />

us,taban,sonuc:integer;<br />

i:integer;<br />

write('taban <strong>ve</strong> ussu girin..:');<br />

readln(taban,us);<br />

sonuc:=1;<br />

for i:= 1 to us do<br />

sonuc:=sonuc*taban;<br />

write('sonuc......:',sonuc);<br />

readln;<br />

Örnek : 1-100 arasındaki çift sayıları toplayan program.<br />

var<br />

begin<br />

end.<br />

i,toplam:integer;<br />

toplam:=0;<br />

for i:=1 to 100 do<br />

begin<br />

if (i mod 2=0) then<br />

toplam:=toplam+i;<br />

end;<br />

writeln('1-100 arasi cift sayilarin toplami = ',toplam);<br />

readln;<br />

Örnek: Dışardan okunan 10 tane rast gele sayıdan kaçının negatif kaçının pozitif<br />

olduğunu <strong>ve</strong> pozitifleri kendi arasında negatifleri kendi arasında toplayıp sonuçları ekrana<br />

yazan programı yazınız.<br />

var<br />

begin<br />

i,poz,neg,poztop,negtop,sayi:integer;<br />

poz:=0;neg:=0;<br />

poztop:=0;negtop:=0;<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 47 Öğr. Gör. Mustafa AKSU


end.<br />

for i:=1 to 10 do<br />

begin<br />

write(i,'. sayiyi giriniz : ');<br />

readln(sayi);<br />

if sayi


i:=0;<br />

repeat<br />

i:=i+1;<br />

writeln('M.AKSU');<br />

until i=x;<br />

readln;<br />

end.<br />

Örnek : Dışardan girilen bir ismi yine dışardan girilen bir sayı kadar yazan programı yazınız.<br />

Var<br />

begin<br />

end.<br />

x,i:integer;<br />

s:string;<br />

write('isim Girin');<br />

readln(s);<br />

write('Sayi girin');<br />

readln(x);<br />

i:=0;<br />

repeat<br />

i:=i+1;<br />

writeln(s);<br />

until i=x;<br />

readln;<br />

Örnek : 0-100 aralığındaki tek sayıları toplayan program.<br />

Var<br />

begin<br />

end.<br />

ttop,i:integer;<br />

i:=1;<br />

ttop:=0;<br />

repeat<br />

ttop:=ttop+i;<br />

i:=i+2;<br />

until i>=100;<br />

writeln(ttop);<br />

readln;<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 49 Öğr. Gör. Mustafa AKSU


Örnek : Dışardan okunan 10 tane rastgele sayıyı toplayıp bunların ortalamasını<br />

hesaplayarak sonuçları ekrana yazan programı yazınız.<br />

Var<br />

begin<br />

end.<br />

6.4 While-Do<br />

x,i:integer;<br />

top:longint;<br />

ort:real;<br />

top:=0;<br />

i:=0;<br />

repeat<br />

i:=i+1;<br />

write(i,'. Sayiyi girin');<br />

readln(x);<br />

top:=top+x<br />

until i=10;<br />

ort:=top/i;<br />

writeln(i,' adet sayinin toplami',top);<br />

writeln(i,' adet sayinin ortalamasi',ort:5:2);<br />

readln;<br />

Bir program bloğunun belli bir şart sağlandığı sürece üst üste icrasını sağlayan WHILE<br />

deyiminin genel yazılış şekli aşağıdadır.<br />

While Do<br />

BLOK {Yapılacak işlemler}<br />

Do kelimesini takip eden blok WHILE deyimi tarafından döngüye sokulacak komut cümlelerini<br />

kapsar. Komut cümlesi sayısı birden fazla ise, bu bloğun BEGIN...END deyimleri arasına<br />

alınması zorunludur.<br />

WHILE ile REPEAT arasındaki fark; Repeat döngüsü şart cümlesi yanlış olduğu sürece, While<br />

döngüsü ise şart cümlesi doğru olduğu sürece devam etmesidir.<br />

REPEAT döngüsünde şart sonda kontrol edildiği için doğruda olsa yanlışta olsa en az bir defa<br />

işlem yapılır. WHILE da ise şart döngüye girmeden kontrol edildiği için yanlışsa hiç işlem<br />

yapılmaz.<br />

Örnek : Đsminizi dışardan okunan bir sayı kadar yazdıran programı yazınız.<br />

Var<br />

x,i:integer;<br />

begin<br />

write('Sayi girin');<br />

readln(x);<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 50 Öğr. Gör. Mustafa AKSU


i:=0;<br />

while i


Örnek : Dışardan okunan 10 tane rastgele sayıyı toplayıp bunların ortalamasını<br />

hesaplayarak sonuçları ekrana yazan programı yazınız.<br />

Var<br />

begin<br />

end.<br />

x,i:integer;<br />

top:longint;<br />

ort:real;<br />

top:=0;<br />

i:=0;<br />

while i


Exit<br />

Program işlem bloklarında tanımlanan herhangi bir koşulun gerçekleşmesi halinde program<br />

bloğunun akışını durdurur.<br />

Halt<br />

Programın kararlaştırılan bir yerinde durdurulmasını sağlar. ENTER tuşuna basıldıktan sonra<br />

varsa HALT komutundan sonra tanımlanan program satırları çalıştırılır.<br />

============================================<br />

Konu Sonu Çalışma Soruları<br />

Soru 1: Sadece toplama işlemi kullanarak girilen iki sayıyı çarpan programı yazınız.<br />

Soru 2: Dışardan rast gele 10 tane sayı okuyup bunlardan kaçının tek kaçının çift olduğunu<br />

<strong>ve</strong> tekleri kendi çiftleri de kendi arasında toplayıp sonuçları ekrana yazan programı yazınız.<br />

Soru 3: Bir dik üçgenin iki dik kenarı dışardan giriliyor. Bu girilen değerlere göre üçgenin<br />

çevresini <strong>ve</strong> alanını bulan programı yazınız.<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 53 Öğr. Gör. Mustafa AKSU


7. Pascalda bazı standart Prosedür <strong>ve</strong> Fonksiyonlar<br />

Pascalın kendi üzerinde tanımlanmış hazır prosedür <strong>ve</strong> fonksiyonları vardır. Bunların bazıları sayısal<br />

bazıları da stringler üzerinde işlem yapmaktadır.<br />

Bunların arasında Concat, Upcase, Length; abs, sqr, sqrt, round, random gibi birçok standart function<br />

<strong>ve</strong>ya procedure bulunmaktadır.<br />

Length<br />

Length fonksiyonu bir karakter dizisinin uzunluğunu hesaplamak amacıyla kullanılır. Hesaplama<br />

sırasında karakter dizisi arasında boşluklar var ise bunları da bir karakter olarak kabul edecektir.<br />

Concat<br />

Örnek:<br />

var<br />

s:string[40];<br />

begin<br />

end.<br />

s:='Bilgisayar Teknolojisi <strong>ve</strong> Programlama';<br />

WriteLn('Uzunluk = ', Length(s));<br />

Programın Çıktısı: Uzunluk = 37 şeklinde olacaktır.<br />

Bilgilerin birbirlerine eklenmelerini sağlayan, alfa sayısal fonksiyondur. Ekleme işlemleri CONCAT fonksiyonu<br />

ile <strong>ve</strong>ya alfa sayısal bilgiler arasına + işareti konarak sağlanır. Concat fonksiyonu ile istenilen sayıda string<br />

birbiri ardına eklenebilir. CONCAT fonksiyonunun kullanımı aşağıdaki örnek programda <strong>ve</strong>rilmiştir.<br />

Örnek:<br />

var<br />

x1,x2,x3,x4:String[20];<br />

x5,x6:String[50];<br />

begin<br />

end.<br />

x1:='Bahkesir'; x2:='Mühendisliği';<br />

x3:='Uni<strong>ve</strong>rsitesi ';x4:='Endüstri';<br />

x5:=Concat(x1,x3,x4,x2);<br />

Writeln('4 sözcüğün CONCAT ile birleştirilmesi');<br />

Writeln(x5);<br />

x5:=x1+x3+x4+x2;<br />

Writeln('4 sözcüğün + ile birleştirilmesi');<br />

Writeln(X5);<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 54 Öğr. Gör. Mustafa AKSU


Örnek * : 10’luk tabandaki bir sayıyı diğer tabanlara dönüştüren program.<br />

var<br />

begin<br />

end.<br />

x,i,taban:integer;<br />

gecici,digertaban:string;<br />

write('Onluk tabanda Sayı Griniz');<br />

readln(x);<br />

write('Tabanı Giriniz');<br />

readln(taban);<br />

digertaban:='';<br />

while x>taban do<br />

begin<br />

Str(x mod taban,gecici);<br />

digertaban:=digertaban+gecici;<br />

x:=x div taban;<br />

end;<br />

STR(x,gecici);<br />

digertaban:=digertaban+gecici;<br />

for i:=length(digertaban) downto 1 do<br />

write(digertaban[i]);<br />

readln(x);<br />

* Biraz zor bir örnektir. Anlaşılmıyorsa üzerinde çok durulmamalı.<br />

Upcase<br />

Pascal 'da okunan <strong>ve</strong>ya karşılaştırılması yapılan iki karakter dizisinde yazılan harflerin büyük <strong>ve</strong>ya küçük oluşu<br />

önemlidir. Upcase fonksiyonu küçük harfleri büyük harfe çevirir. Parametre olarak <strong>ve</strong>rilen karakterlerin<br />

alfabetik olmaması durumunda herhangi bir işlem yapılmaz.<br />

Örnek:<br />

var<br />

s : string;<br />

i : Integer;<br />

begin<br />

end.<br />

Write('Bir Karakter Dizisi Giriniz:');<br />

ReadLn(s);<br />

for i := 1 to Length(s) do<br />

s[i] := UpCase(s[i]);<br />

WriteLn('KARAKTER DĐZĐSĐ BUYUK HARFE DÖNÜŞTÜ ',s);<br />

Readln;<br />

Aşağıda ise bazı sayısal fonksiyonlar anlatılmıştır.<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 55 Öğr. Gör. Mustafa AKSU


Abs<br />

Herhangi bir sayısal sabit <strong>ve</strong>ya değişkenin mutlak (işaretsiz) değerini <strong>ve</strong>rir.<br />

Örnek:<br />

var<br />

Sqr<br />

begin<br />

end.<br />

r: Real;<br />

i: Integer;<br />

r := Abs(-4.3);<br />

i := Abs(-157);<br />

Writeln(r:4:l,i:8);<br />

Verilen bir parametrenin karesini <strong>ve</strong>rir. Genel kullanım şekli;<br />

Sqrt<br />

Kare:=sqr(sayi);<br />

Verilen bir parametrenin karekökünü <strong>ve</strong>rir. Genel kullanım şekli;<br />

Örnek:<br />

var<br />

Karekok:=sqrt(sayi);<br />

begin<br />

end.<br />

Round<br />

say: real;<br />

Write('Karesi alınacak sayıyı giriniz =');<br />

Readln(say);<br />

Writeln(say:10:2,' in Karesi ', Sqr(say):10:2);<br />

Writeln(say:10:2,' nın karekökü',Sqrt(say):10:2);<br />

Gerçel sayıların kurala uygun bir şekilde yuvarlatır <strong>ve</strong> yuvarlatılmış tamsayı olarak <strong>ve</strong>rir. Elde edilen yuvarlatılmış<br />

sayı yine real tipte saklanır.<br />

Örnek:<br />

begin<br />

end.<br />

Writeln(‘1.499’,’ ’, Round(1.499),' a yuvarlatıldı');<br />

Writeln(‘1.5', ‘ ‘,Round(1.5),' a yuvarlatıldı');<br />

Writeln(‘1.499’,’ ’,Round(-1.499),' a yuvarlatıldı');<br />

Writeln(‘-1.5’,' ',Round(-1.5),' a yuvarlatıldı');<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 56 Öğr. Gör. Mustafa AKSU


Random<br />

Rastgele bir sayı üretir. Üretilen rastgele sayı 0 ile random ile belirtilen sayı aralığında olmaktadır.<br />

Örnek:<br />

Var<br />

x:integer;<br />

begin<br />

Randomize;<br />

x:= Random(99);<br />

Writeln (‘Rastgele üretilen sayi =’,x);<br />

end.<br />

============================================<br />

Konu Sonu Çalışma Soruları<br />

Soru 1 : Bilgisayarda bir tahmin oyunu yazılacaktır. Oyun şöyledir bilgisayar rastgele bir<br />

sayı üretecek kullanıcı bu üretilen sayıyı bilmeye çalışacak. Kullanıcı kendi tahminlerini girdikçe<br />

bilgisayar kullanıcıyı ‘küçük sayı girdiniz’ , ‘büyük sayı girdiniz’, ‘Bildiniz’ şeklinde uyaracak.<br />

Sonuçta kullanıcı sayıyı kaç tahminde bilmişse ekrana yazılacak.<br />

Soru 2 : Dışarıdan girilen bir metni tersten büyüterek yazdıran programı yazınız.<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 57 Öğr. Gör. Mustafa AKSU


8. DĐZĐLER<br />

Bir dizi, aynı tipteki elemanların yan yana sıralanışı ile elde edilen bir bilgi kümesidir.<br />

Matematikte kullanılan doğal sayılar (1,2,3,..), reel sayılar aslında birer dizidir. Ayrıca yılın<br />

ayları (Ocak, Şubat, Mart, …) haftanın günleri de birer dizidir.<br />

şeklinde tanımlanan bir X <strong>ve</strong>ktörü tek boyutlu bir dizi,<br />

şeklinde tanımlanan bir A matrisi iki boyutlu bir dizidir.<br />

Pascalda Dizi Kullanımı<br />

Hangi programlama dilini kullanıyor olursanız olun değişken tanımlamanın mantığı aynıdır.<br />

Saklanacak bilginin tipine göre bir tip seçilir buna bir isim <strong>ve</strong>rilir <strong>ve</strong> hafızada bu değişken için<br />

bellek ayrılır. Her değişken için durum aynıdır. Pascalda bu işlemi Var bloğunda yapıyoruz. Peki<br />

aynı özelliklere sahip birden fazla değişkene ihtiyaç duyarsak ne olacak. Mesela bir öğretmen<br />

düşünün. Değişik sayılarda öğrencisi olan sınıflara girsin <strong>ve</strong> bu öğrencilerin notlarını<br />

bilgisayarda tutmaya çalışsın. Eğer dizi değişkenleri kullanmayı bilmiyorsa en kalabalık<br />

sınıfındaki öğrenci sayısı kadar değişken tanımlayacak sonra da her öğrencinin notunu kendi<br />

değişkenine ayrı ayrı atamak zorunda kalacaktır. Oysa bunu halletmenin daha kolay bir yolu<br />

var. Dizileri kullanmak. Dizilerin en önemli özelliği aynı tipteki <strong>ve</strong> birbiri ile alakalı <strong>ve</strong>rileri toplu<br />

olarak tanımlamaya yaramasıdır. Bu durumda örneğimizdeki öğretmen en kalabalık sınıfındaki<br />

öğrenci sayısı kadar elemanı olan bir tek dizi değişkeni tanımlar <strong>ve</strong> bilgileri bir döngü içerisinde<br />

indis kullanarak dizinin uygun yerine yerleştirir. Bu iki durumu bir tablo içinde gösterelim.<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 58 Öğr. Gör. Mustafa AKSU


Dizi kullanmayan öğretmen<br />

Var<br />

OgrenciNotu1 := integer;<br />

OgrenciNotu2 := integer;<br />

OgrenciNotu3 := integer;<br />

...<br />

...<br />

OgrenciNotu30 := integer;<br />

Begin<br />

Write(‘1.Ogrencinin notu = ‘);<br />

Readln(OgrenciNotu1);<br />

Write(‘2.Ogrencinin notu = ‘);<br />

Readln(OgrenciNotu2);<br />

...<br />

...<br />

write(’30.Ogrencinin notu = ‘);<br />

readln(OgrenciNotu30);<br />

end.<br />

Dizi kullanan öğretmen<br />

Var<br />

OgrenciNotu : array[1..30] of integer;<br />

i: integer;<br />

Begin<br />

for i := 1 to 30 do<br />

begin<br />

write(i,'.Ogrencinin notu = ');<br />

readln(OgrenciNotu[i]);<br />

end;<br />

End.<br />

Artık dizi kullanmanın avantajlarını biliyoruz. Bize aynı türden <strong>ve</strong> birbiri ile ilişkili<br />

bilgilere kolay erişmemizi sağlıyor. Đsterseniz artık bir dizi tanımının nasıl yapıldığına<br />

bakabiliriz. Dizileri VAR bloğunda tanımlayabileceğimiz gibi, Type bloğunda da<br />

tanımlayabiliriz. Eğer TYPE bloğunu kullanırsak tanımlamış olduğumuz yeni tipi direkt<br />

değişken tipi olarak kullanabiliriz.<br />

değişken_ismi : array [boyut_büyüklüğü] of dizi_tipi<br />

Boyut büyüklüğü herhangi bir standart <strong>ve</strong>ri tipinde olabilir. Eğer çok boyutlu bir dizi ise<br />

bunlar birbirinden virgüllerle ayrılır. Dizi tipinde ise istediğimiz herhangi bir tipi<br />

kullanabiliriz. Yani hem standart tipleri hem TYPE bloğunda tanımladığımız kendi tiplerimizi<br />

kullanabiliriz. Dizinin elemanlarına köşeli parantez içerisinde <strong>ve</strong>rilen indis numarası ile<br />

erişiriz.<br />

Örnek tanımlamalar :<br />

Var<br />

IntList : array[1..100] of integer; {Đnteger tipinde bir boyutlu dizi}<br />

CharData : array['A'..'Z'] of Byte; {Char tipinde bir boyutlu dizi}<br />

Eğer dizilerimiz çok boyutlu olacaksa<br />

Matris : array[0..9, 0..9] of real; {real tipinde 2 boyutlu dizi}<br />

MyStrArr : array[1..10] of Str20; {Yukarıda tanımladığım Str20 tipinde 10 elemanlı dizi}<br />

KupData : array[1..20,1..20,1..20] of Word {Word tipinde 3 boyutlu dizi}<br />

Bir çok bilim dalında çeşitli niceliklerin matematiksel gösterimi için yaygın olarak kullanılan<br />

<strong>ve</strong>ktör <strong>ve</strong> matrislerle ilgili bir program yapacağımızı düşünelim. Her Xi (i=1,2,...n) <strong>ve</strong><br />

Aij(i=1,2,..n, j=1,2,..n) elemanı için basit tipte bir değişken kullanacak olursak<br />

karşılaşacağımız güçlüğü görürüz. Örneğin 10 bileşenli bir <strong>ve</strong>ktör için 10 basit tip değişken<br />

kullanılması gerekirken, 10x10 boyutlarındaki matris için 100 basit tip değişken kullanılması<br />

gerekmektedir. Bizim için gerekli olan, aynı tipte elemanlardan oluşan bir <strong>ve</strong>ri kümesini tek bir<br />

değişken ismi kullanarak, küme içindeki yeri ile erişilmesini sağlayacak <strong>ve</strong>ri yapısıdır.<br />

Diziler, kullanım amacına göre tek <strong>ve</strong>ya çok boyutlu olabilir. Elemanlandırılmış dizi<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 59 Öğr. Gör. Mustafa AKSU


değişkenlerinin boyut durumu ARRAY ifadesiyle köşeli parantez içinde yapılan tanımlamalarla<br />

belirtilir.<br />

Dizi karakter tipi "OF tip tanımı" ifadesi ile mutlaka <strong>ve</strong>rilmelidir. PASCAL programlama dilinde<br />

diziler, TYPE, VAR <strong>ve</strong>ya CONST tanım bloklarından birinde tanıtılır. Đşleme alınmaları işlemlerin<br />

çalışma durumlarına göre bir döngü ile gerçekleştirilir. Tüm elemanlar ilk elemandan başlayarak<br />

işleme alınacaksa FOR döngüsü, herhangi bir şarta bağlı olarak tekrar edilecekse WHILE <strong>ve</strong>ya<br />

REPEAT döngüleri ile kullanılır.<br />

7.1. Dizilerin Tanıtılması<br />

Bir dizinin tanımı değişik şekillerde yapılabilmektedir. Bunlar aşağıda kısaca özetlenmiştir.<br />

7.1.1. Dizilerin Type Bloğunda Tanıtılması<br />

Dizilerin type bloğunda tanıtılması işleminde örneğin;<br />

Tek boyutlu <strong>ve</strong> 30 elemanlı Endüstri Mühendisliği 1. Sınıf öğrencilerinin numaralarının programa<br />

tanıtımı:<br />

TYPE<br />

VAR<br />

Numara=ARRAY [1..30] of string[10];<br />

ogr:NUMARA;<br />

şeklinde yapılabilir.<br />

Örneğe dikkat edilirse NUMARA adı <strong>ve</strong>rilen bir dizi TYPE tanım bloğunda tanıtılmış VAR tanım<br />

bloğunda ise bu dizinin OGR adı altında değişken tipte olduğu belirtilmiştir.<br />

Aynı şekilde tek boyutlu <strong>ve</strong> 30 elemanlı Endüstri Mühendisliği 1. Sınıf öğrencilerinin isimlerin<br />

programa tanıtımı ise:<br />

TYPE<br />

VAR<br />

şeklindedir.<br />

isimler=ARRAY [1..30] of String[25];<br />

Ogrisim:Isimler;<br />

7.1.2 Dizilerin VAR Bloğunda Tanımlanması<br />

Bir dizi diğer değişkenlerde olduğu gibi Var tanım bloğunda da tanıtılabilir. Bunun için dizinin<br />

boyutu belirtildikten sonra diziyi oluşturan elemanların hangi tipte olduğu belirtilmelidir.<br />

Aşağıdaki ifadeleri inceleyiniz.<br />

VAR<br />

X1:ARRAY [1..10] of Real;<br />

k2:ARRAY [1..35] of Đnteger;<br />

7.1.3 Dizilerin CONST (Sabit Bilgiler) Bloğunda Tanımlanması<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 60 Öğr. Gör. Mustafa AKSU


Bir dizi diğer sabitlerde olduğu gibi CONST tanım bloğunda da tanıtılabilir. Aşağıdaki örnek<br />

programı inceleyiniz.<br />

Örnek:<br />

Program yeni_örnek;<br />

Const<br />

Aylar:Array[1..12] of string[7]= ('Ocak',’Şubat’,’Mart',’Nisan’, ‘Mayıs','Haziran',<br />

'Temmuz', 'Ağustos','Eylül’,'Ekim',’Kasım', 'Aralık');<br />

var<br />

k: integer ;<br />

begin<br />

Write ('kaçıncı ay:');<br />

Readln(k);<br />

Writeln('Aranan Ay adı :',Aylar[k]);<br />

end.<br />

7.2 Tek Boyutlu Diziler<br />

Tek boyutlu diziler aşağıda görülen genel formda ifade edilebilirler.<br />

Değişken = ARRAY [Başlangıç değeri..Bitiş Değeri] OF tip tanımı;<br />

Örnek: Var<br />

Dizi1: array [1..20] of string[25] ;<br />

Dizi2: array [1..20] of integer;<br />

Buradaki ARRAY <strong>ve</strong> OF sözcükleri Pascal'ın anahtar sözcükleridir. Başlangıç değeri <strong>ve</strong> Bitiş<br />

Değeri ise sayılabilir özellikte değerlerdir. Tip tanımı ise hangi tip <strong>ve</strong>rileri içerdiğini<br />

belirtmektedir. Diziler değişik şekillerde tanımlanabilir. Bunlar ileride açıklanmıştır.<br />

Örnek: Dışarıdan okunan 10 tane sayıyı bir dizide saklayarak bunların toplamını <strong>ve</strong> ortalamasını<br />

bulan programı yazınız.<br />

var<br />

sayi:array[1..10]of integer;<br />

i,top:integer;<br />

ort:real;<br />

begin<br />

top:=0;<br />

for i:=1 to 10 do<br />

begin<br />

write(i,'. Sayıyı giriniz'); readln(sayi[i]);<br />

top:=top+sayi[i];<br />

end;<br />

ort:=top/10;<br />

writeln('Sayıların Toplami :', top);<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 61 Öğr. Gör. Mustafa AKSU


writeln('Sayıların Ortalamasi :', ort:4:2);<br />

readln;<br />

end.<br />

Örnek: Aşağıda <strong>ve</strong>rilen program tek boyutlu bir dizinin elamanlarını sondan başa doğru tersine<br />

çevirmektedir.<br />

program ters_cevirme;<br />

var<br />

dizi,tersdizi:array[1..10] of integer;<br />

begin<br />

end.<br />

i: integer ;<br />

for i:=1 to 10 do<br />

begin<br />

write('Dizinin ',i,'. elemanını giriniz = ');<br />

readln(dizi[i]);<br />

end;<br />

for i:=10 downto 1 do<br />

tersdizi[10-i+1]:=dizi[i];<br />

for i:=l to 10 do<br />

writeln(tersdizi[i]);<br />

Örnek: 10 tane öğrenciye ait ad,soyad,numara, vize <strong>ve</strong> final notlarını dışarıdan okuyup<br />

bu öğrencilerin ortalamalarını ort:=vize*0.4+final*0.6 formülü ile hesaplayıp eğer<br />

öğrencilerin ortalaması 60 ‘dan büyük <strong>ve</strong>ya eşitse geçti değilse kaldı yazan programı<br />

yazınız.<br />

var<br />

Isim,no,soyad:Array[1..10] Of string [25];<br />

vize,final:array[1..10] of byte;<br />

i:integer;<br />

ort:real;<br />

sonuc:string [10];<br />

begin<br />

for i:=1 to 10 do<br />

begin<br />

writeln('isim giriniz');readln(Isim[i]);<br />

writeln('soyadı giriniz');readln(soyad[i]);<br />

writeln('noyu giriniz'); readln(no[i]);<br />

writeln('finali giriniz');readln(final[i]);<br />

writeln('1.vizeyi giriniz');readln(vize[i]);<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 62 Öğr. Gör. Mustafa AKSU


end;<br />

writeln(' isim Soyad No Vize Final Ortalam Durum');<br />

writeln('====================================');<br />

for I:= 1 TO 10 DO<br />

begin<br />

write(isim[i],' ',soyad[i],' ',no[i],' ', vize[i],' ',final[i]);<br />

ort:=(vize[i]*0.4)+(final[i]*0.6);<br />

If ort>=60 then<br />

sonuc:='geçti'<br />

else<br />

sonuc:='kaldı';<br />

writeln(' ',ort:4:2, ' ',sonuc);<br />

end;<br />

readln;<br />

end.<br />

7.3 Çok Boyutlu Diziler<br />

Đndisli değişkenler iki boyutlu <strong>ve</strong>ya daha fazla olduğunda boyut durumu, köşeli parantez<br />

içinde eleman tanımları arasında virgül <strong>ve</strong>rilerek belirtilir.<br />

Matematikte kullanılan matrisler iki boyutlu dizilere en güzel örnektir.<br />

Var<br />

Dizi değişkeni : array [1..n,1..n,……,1..n] of tip adı<br />

Örneğin;Đki boyutlu <strong>ve</strong> 32 elemanlı dizi adı <strong>ve</strong>rilen indisli değişkenin programa tanıtımı;<br />

Var<br />

dizi:ARRAY[ 1..4,1..8] of Real;<br />

şeklinde yapılabilmektedir.<br />

Aynı şekilde; üç boyutlu <strong>ve</strong> 64 elemanlı dizi1 adı <strong>ve</strong>rilen indisli değişkenin programa<br />

tanıtımı;<br />

Var<br />

dizi1:ARRAY[1..4,1..8,1..2] OF Real;<br />

şeklinde yapılabilmektedir.<br />

B isimli iki boyutlu bu dizinin bellekteki yerleşme durumu aşağıdaki gibi olacaktır.<br />

1 2 3 4 5 6 7 8<br />

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)<br />

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)<br />

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)<br />

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)<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 63 Öğr. Gör. Mustafa AKSU


Örnek: Çarpım tablosu programını yazınız.<br />

Var<br />

begin<br />

end.<br />

i,j: integer;<br />

dizi: array[1..10,1..10] of integer;<br />

f o r i : = 1 t o 1 0 d o<br />

begin<br />

for j:=1 t o 10 d o<br />

begin<br />

dizi[i,j]:=i*j;<br />

Write(Dizi[i,j]:4);<br />

End;<br />

End;<br />

Writeln;<br />

Örnek: 3*3’lük bir matrisi tanımlayıp değerlerini dışarıdan okutup bu matrisi ekrana<br />

matris görünümünde yazınız.<br />

var<br />

begin<br />

matris:array[1..3,1..3] of integer;<br />

i,j:integer;<br />

for i:=1 to 3 do<br />

for j:=1 to 3 do<br />

begin<br />

write(i,' .satir ',j,' .sutun elemani :');<br />

readln(matris[i,j]);<br />

end;<br />

for i:=1 to 3 do<br />

begin<br />

for j:=1 to 3 do<br />

begin<br />

write(mat[i,j],' ' );<br />

end;<br />

writeln;<br />

end;<br />

readln;<br />

end.<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 64 Öğr. Gör. Mustafa AKSU


Örnek: 3*3’lük iki matrisi değerlerini dışarıdan okuyup bu matrisleri toplayarak<br />

ekrana matris görünümünde yazan programı yazınız.<br />

var<br />

begin<br />

mata,matb,matc:array[1..3,1..3] of integer;<br />

i,j:integer;<br />

for i:=1 to 3 do<br />

for j:=1 to 3 do<br />

begin<br />

begin<br />

write(i,' .satir ',j,' .sutun elemani :');<br />

readln(mata[i,j]);<br />

end;<br />

begin<br />

write(i,' .satir ',j,' .sutun elemani :');<br />

readln(matb[i,j]);<br />

end;<br />

end;<br />

for i:=1 to 3 do<br />

for j:=1 to 3 do<br />

matc[i,j]:=mata[i,j]+ matb[i,j];<br />

for i:=1 to 3 do<br />

begin<br />

for j:=1 to 3 do<br />

begin<br />

write(matc[i,j],' ' );<br />

end;<br />

writeln;<br />

end;<br />

readln;<br />

end.<br />

Soru: 4*4’lük bir matrisin asıl köşegeni üzerindeki elemanlarını sıfır ( 0 ) yapan<br />

programı yazınız.<br />

Cevap:<br />

var<br />

mat:array[1..4,1..4] of integer;<br />

i,j:integer;<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 65 Öğr. Gör. Mustafa AKSU


egin<br />

for i:=1 to 4 do<br />

for j:=1 to 4 do<br />

begin<br />

write(i,' .satir ',j,' .sutun elemani :');<br />

readln(mat[i,j]);<br />

if ( i=j ) then<br />

mat[i,j]:=0;<br />

end;<br />

for i:=1 to 4 do<br />

begin<br />

for j:=1 to 4 do<br />

begin<br />

write(mat[i,j],' ');<br />

end;<br />

writeln;<br />

end;<br />

readln;<br />

end.<br />

============================================<br />

Konu Sonu Çalışma Soruları<br />

Soru 1 : Dışarıdan 3*3’lük iki matris okuyup bunların farkını (çıkarma) bularak sonucu<br />

matris görünümünde ekrana yazan programı yazınız.<br />

Soru 2 : Dışardan okunan 4*4 ‘lük bir matrisin negatif elemanları varsa bu elemanları<br />

pozitif yapan matrisi yazınız.<br />

<strong>Algoritma</strong> <strong>ve</strong> Programlamaya <strong>Giriş</strong> 66 Öğr. Gör. Mustafa AKSU

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!