You are on page 1of 66

DERS NOTLARI

Ders Adı : Algoritma ve Programlamaya Giriş

Kısa Ders Özeti


Bu dersin I. Bölümünde Programlama ile ilgili kavramlar problem çözme yöntemleri
Algoritma, akış diyagramları anlatılıp diğer bölümlerde ise problemlerin çözümlerinin bir dil
(Pascal) kullanılarak çözülmesi için gereken komutlar anlatılmıştır.

Dersin Hedefleri
Bu ders sonunda öğrenciler, programlama mantığı, problemlere çözüm yaklaşımı, bir dil
kullanarak program yazma gibi becerileri kazanacaktır. Ayrıca Pascal programlama
dilinin komutlarını ve bu dilde programlar geliştirmeyi öğreneceklerdir.

Dersin Đşlenmesi
Bu ders haftada 4 saat olup 3 saat teorik 1 saat uygulamadan oluşmaktadır. Teorik derslerde
konular sınıfta anlatılıp uygulama saatinde ise bilgisayar laboratuarlarında uygulama
yapılacaktır.

Sınav ve derse devam


Bu ders için bir vize ve bir final olmak üzere toplam iki teorik sınav yapılmaktadır. Ortalama
hesaplanırken Vizenin %40 ‘ı finalin %60’ı alınmaktadır.
Derse her öğrenci %70 oranında devam etmek zorundadır. Yani 14 haftalık eğitim döneminde
her öğrenci en az 10 hafta derslere katılmak zorundadır.

Algoritma ve Programlamaya Giriş 1 Öğr. Gör. Mustafa AKSU


1. BĐLGĐSAYAR PROGRAMLAMAYA GĐRĐŞ

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


düşünülmeden çözülebilir.
Her gün evden çıkarken ne giyilmelidir? Bunun için muhtemelen pencereden dışarıya bakılır.
Hava yağmurlu ise mevsim gereklerine göre giyinmenin yani sıra dışarıya çıkarken bir de
semsiye alınması gerekir. Hava güneşli ve sıcak ise o takdirde daha ince giyinilerek dışarıya
çıkılır. Böylece problemin çözümü kendiliğinden oluşturulan bir kararla sağlanır.
Yukarıdaki basit örnekte yapılan is, önce problemin belirlenmesi ve sonra problemin
tanımından yola çıkarak çözüm için değişik alternatiflerin değerlendirilmesidir.
Bilgisayar programlaması sırasında izlenebilecek birçok yol ve yöntem vardır. Bilgisayar
programcısının probleme ilişkin çözümü ortaya çıkarabilmesi için problem çözümü ile ilgili
bilgileri bilmesi gerekir. Bilgisayar programlamasında genel olarak belirli kalıp ve kurallara
uyulur. Bir bilgisayar yazılımının oluşturulması sırasında aşağıda sıralanan ana adımlara
uyulur.
* Problemin tanımı
* Çözüm yönteminin belirlenmesi
* Programın kodlanması
* Programın çalışır duruma getirilmesi
* Belgeleme ve güncelleştirme

Problemin tanımı: Problemin normal yazı diliyle tanımlanması işlemlerini


kapsamaktadır. Problem çözümüne ilişkin iyi bir program yapabilmek için, problemin iyi bir
şekilde tanımlanması gerekir.

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


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

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


belirtildikten sonra program kodlama çalışmalarına başlanabilir. Programın bastan sona
yapısal bir düzende hazırlanması ve uygun bir programlama dili seçilmesi seçim işleminin ilk
aşamasını oluşturur.

Programın çalışır Hale Getirilmesi: Programın kodlanması sırasında yapılan imla hataları,
kodlama ve mantık hatalarının giderilmesi işlemlerini kapsar. Đyi bir bilgisayar programının
doğruluğundan emin olmak için defalarca test edilmiş olması gerekmektedir.

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


kişilerin kullanabilmesi gibi bir kısıtlamanın önüne geçmek için ayrıntılı referanslar
hazırlanmalı ve programla ilgili bilgiler verilmelidir.
Bir yazılımda, o yazılımı kullanan kişi veya kuruluşların yeni gereksinimleri ve değişen
koşullar nedeniyle değişiklikler yapılması gerekli olabilir. Bu değişikliklere güncelleme adi
verilir. Đyi bir programda bulunması gereken özellikler arasında güncelleşebilme ön sıralarda
yer almaktadır.

Algoritma ve Programlamaya Giriş 2 Öğr. Gör. Mustafa AKSU


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

Şekil 1.1 Yazılım oluşturma evreleri

1.1. Bilgisayar Programcılığı


Nedir bu bilgisayar programcılığı? Evet birçok kişi bilgisayar programcılarının ne ile
uğraştığını bilir fakat nasıl uğraşıp neler yaptığını pek bilmez... Önce bilgisayar dünyasında
sıkça kullanılan bir kelimeden bahsedelim “yazılım”. Yazılım (software) kelimesi bilgisayar
programlama dilleriyle oluşturulan dokümanları, dosyaları ifade eder. Yani bilgisayarınızda

Algoritma ve Programlamaya Giriş 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
programlama dilleri ile tasarlanır ve yazılır. Programlama dilleri, bilgisayarınızın donanımını
(ekran kartı,ses kartı,modem...) sizin en rahat biçimde kullanabileceğiniz düzeye getirmeye
çalışır. Yani bilgisayarın o soğuk 1010110 gibi rakamlarını sizin zevkle kullandığınız
programlara, işletim sistemlerine, oyunlara çevirir.

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


bilgisayar kodunun bir araya gelmesinden oluşur. Đşte işin tüm zorluğu, o kodların arasında
dolaşan, hata mesajlarını günlerce o kodları gözden geçirerek arayan, sandalye tepesinde
saatlerce aynı ekrana bakarak ilginç görüntüler sergileyen programcıların üzerindedir...

Bilgisayar programcıları işini zevkle yapan ve işini bir hobi edinmiş insanlardan oluşur. Aksi
halde yoğun konsantrasyon ve sabır isteyen bu işi yapmak aşırı zorlaşır. Programlama dilleri
kendi aralarında sınıflara ayrılmışlardır. Đnsanın en zor öğrenebileceği, anlayabileceği yani
1100101 gibi makina kodlarına yakın diller en alt seviyeli programlama dilleri, insanın en kolay
anlayıp kullanabileceği ve insan diline yakın özellikler gösteren diller ise en yüksek seviyeli
programlama dilleridir. Şimdi bu sınıflandırmaya örnekler verelim;

1 ) Çok yüksek seviyeli diller: VisualBasic, Acces, Foxpro...


2 ) Yüksek seviyeli diller: Pascal,Basic,Fortran...
3 ) Orta seviyeli diller: C,C++,ADA...
4 ) Düşük seviyeli diller: Assembly...
5 ) Makina dilleri: Bilgisayarın çalışma dilleri 1 ve 0'lardan oluşur...

Bu dillerin kullanıldığı alanlara örnek verirsek;

1 ) Bilim ve Mühendislikte: Pascal,C,C++,Fortran...


2 ) Veritabanı Programcılığında: Dbase,Acces,Foxpro,Sql...
3 ) Yapay Zeka Kullanımında: Prolog,Lisp...
4 ) Sistem Programcılığında: C,C++ ve sembolik makina dilleri...

Bir bilgisayar programı nasıl yazılır? Bir yazılım değişik dillerle oluşturulabilir fakat izlenen
yöntemler genelde birbirine benzer. Örneğin Algoritma... Algoritma, elimizdeki sorunun
çözümüne gidebilmek için tasarlanan yollar, yöntemlerdir. Örneğin bir arkadaşınıza daha önce
gitmediği bir yerdeki bir postaneyi tarif edeceksiniz. Bunun için anlatımda genelden özele
giden bir yol izlersiniz. Önce gideceği semti sonra caddeyi sonra postanenin olduğu yönü tarif
eder son olarak da kolay bulması için postanenin çevresindeki göze batan özelliklerden
bahsedersiniz. Đşte bu yaptıklarınız bir algoritmadır. Ve amacınız arkadaşınıza postaneyi bu
algoritma yardımıyla tarif etmektir... Bilgisayar programlama dilleri de programcılıkta bunun
gibi yöntemler kullanarak çözüme gider. Algoritmanın uzunluğu kullanılan programlama dilinin
seviyesi ve problemin karmaşıklığı ile doğru orantılıdır. Yapılan algoritma ve tasarımdan sonra
yazılım aşamasına gelinir ve bu aşamada yapılacak programın kullanım ömrü, programın
kullanım düzeyi ve hangi amaçla kullanılacağı gibi soruların cevaplarına bakılarak
programlama dili seçilir. Dil seçimi bazı kriterlere göre yapılmaktadır, örneğin kısa sürmesi ve
görsel tasarım içermesi, veritabanı iletişimi yoğun kullanılması gereken bir program yapmamız
gerekiyor olsun. Bu durumda Assembly dili ile yola çıktığımızda bahsedilen proje birkaç kişilik
deneyimli bir programcı grubu ile birkaç yıl alır. C ile iki programcı aynı işi üç dört ayda
VisualBasic veya Delphi ile bir programcı bahsedilen işi bir iki aya yakın bir sürede yapabilir.

Başka bir açıdan örnek verirsek örneğin bir ekran kartı programlamamız gerekiyor ve bu
kartın driver'ını ( sürücüsünü ) biz yazacağız. Bu durumda bu işi VB veya Delphi ile yapmamız
imkansızdır, kullanmamız gereken diller öncelikle Assembly ve C/C++ olmalıdır.

Evet, programlama dillerinin kendi alanları vardır ve her dil kendi alanında kullanıldığı
sürece başarılı ve etkili kullanılmış olur. Buraya kadar anlatılanı özetlersek:

Bir bilgisayar programı yazmak için belli aşamalar vardır ve bu aşamalar geçildiğinde
kodlamaya başlanabilir.

Algoritma ve Programlamaya Giriş 4 Öğr. Gör. Mustafa AKSU


Bunlar:
1 ) Analiz
2 ) Algoritma
3 ) Dil Seçimi
4 ) Kodlama

Analiz ile gerçekleştirilmek istenen proje tasarımlanır ve parametreleri araştırılır.


Algoritma ile adımlar tayin edilir. Dil seçimi ile en uygun programlama dili seçilir. Ve
kodlamaya başlanır.

1.1.1 Problem Çözme ve Algoritmalar


1.1 Problem Çözme
Problem çözmede, soruna hemen girişmek yerine, dikkatli ve sistematik yaklaşım ilke olmalıdır.
Problem iyice anlaşılmalı ve mümkün olduğu kadar küçük parçalara ayrılmalıdır.
Descartes’in "Discourse on Method" isimli kitabında problem çözme teknikleri şu 4 madde ile özetlenir;

1. Doğruluğu kesin olarak kanıtlanmadıkça, hiçbir şeyi doğru olarak kabul etmeyin; tahmin ve
önyargılardan kaçının.
2. Karşılaştığınız her güçlüğü mümkün olduğu kadar çok parçaya bölün.
3. Düzenli bir biçimde düşünün; anlaşılması en kolay olan şeylerle başlayıp yavaş yavaş daha zor ve
karmaşık olanlara doğru ilerleyiniz.
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
kusursuz ve eksiksiz olsun.

1.2 Algoritmalar

Kısaca algoritma belirli bir görevi yerine getiren sonlu sayıdaki işlemler dizisidir. Geniş
anlamda ise algoritma, verilen herhangi bir sorunun çözümüne ulaşmak için uygulanması
gerekli adımların hiç bir yoruma yer vermeksizin açık, düzenli ve sıralı bir şekilde söz ve yazı
ile ifadesidir. Algoritmayı oluşturan adımlar özellikle basit ve açık olarak sıralandırılmalıdır.
M.S. 9.yy da Đranlı Musaoğlu Horzumlu Mehmet (Alharezmi adını araplar takmıştır) problemlerin çözümü
için genel kurallar oluşturdu. Algoritma Alharezmi'nin Latince okunuşu.
Her algoritma aşağıdaki kriterleri sağlamalıdır.
1. Girdi: Sıfır veya daha fazla değer dışarıdan verilmeli.
2. Çıktı: En azından bir değer üretilmeli.
3. Açıklık: Her işlem (komut) açık olmalı ve farklı anlamlar içermemeli.
4. Sonluluk: Her türlü olasılık için algoritma sonlu adımda bitmeli.
5. Etkinlik: Her komut kişinin kalem ve kağıt ile yürütebileceği kadar basit olmalıdır.

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

1.1. PROGRAM YAZMA SÜRECĐ


• Problemin farkına varmak,
• Problemi analiz etmek,
• Çözüm yolları düşünmek,
• Đyi çözüm yolları seçip algoritma oluşturmak,
• Akış diyagramı çizmek,
• Uygun bir dilde kodlamak,
• Programı test etmek,

Algoritma ve Programlamaya Giriş 5 Öğr. Gör. Mustafa AKSU


• Programı dağıtmak.
Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi.
Bir problemi bilgisayar ile çözmek için geliştireceğimiz programın yazımında izleyeceğimiz adımlar:

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


ii) Problemin girdilerini, çıktılarını ve diğer kısıtlama ve gereksinimleri belirle ( bilgilerin giriş ve çıkış
biçimlerinin nasıl olacağına kadar).
iii) Problemin çözümünü veren algoritmayı yaz.
iv) Algoritmayı bir programla dili ile yaz.
v) Programın doğru çalışıp çalışmadığını test et. Bu testi değişik veriler (girdiler) için tekrarla.

Algoritmik çözüm yöntemlerine ilk örneği günlük yaşantımızdan verelim.

Örnek 1: Örneğimiz bir insanin evden çıkıp ise giderken izleyeceği yolu ve işyerine girişinde
ilk yapacaklarını adım adım tanımlamaktadır.

Çözüm 1:

Evden dışarıya çık


Otobüs durağına yürü
Durakta gideceğin yöndeki otobüsü bekle
Otobüsün geldiğinde otobüse bin
Biletini bilet kumbarasına at
Đneceğin yere yakınlaştığında arkaya yürü
Đneceğini belirten ikaz lambasına bas
Otobüs durunca in
Đşyerine doğru yürü
Is yeri giriş kapısından içeriye gir
Mesai arkadaşlarınla selamlaş
Is giysini giy
Đsini yapmaya basla.

Yukarıdaki örnekte görüldüğü gibi, evden ise gidişte yapılabilecek işlemler adım adım sırasıyla,
kısa ve açık olarak tanımlanmaya çalışılmıştır. Yukarıdaki algoritma kişinin otobüsü kaçırma
olasılığı düşünülmeden oluşturulmuştur. Kişi durağa geldiğinde bineceği otobüsü kaçırmış ise
algoritmamız aşağıdaki şekilde değiştirilebilir.

Çözüm 2:

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


Otobüsün saati geçmiş?
Durakta gideceğin yöndeki bir sonraki otobüsü bekle
Bir sonraki otobüs gelene kadar 4. adimi uygula
Otobüsün geldiğinde otobüse bin
Biletini bilet kumbarasına at
Đneceğin yere yakınlaştığında arkaya yürü
Đneceğini belirten ikaz lambasına bas
Otobüs durunca in
Đşyerine doğru yürü
Is yeri giriş kapısından içeriye gir
Mesai arkadaşlarınla selamlaş
Is giysini giy
Đsini yapmaya basla.

Her iki örnekte görüldüğü gibi sorunu çözüme götürebilmek için gerekli olan adımlar sıralı ve
açık bir biçimde belirlenmiştir. Algoritmanın herhangi bir adımındaki küçük bir yanlışlık doğru
çözüme ulaşmayı engelleyebilir. Bu nedenle algoritma hazırlandıktan sonra dikkatle incelenmeli
ve varsa adımlardaki yanlışlıklar düzeltilmelidir.

Algoritma ve Programlamaya Giriş 6 Öğr. Gör. Mustafa AKSU


Programlamanın temeli olan algoritma hazırlanmasında dikkat çekici bir nokta, ayni sorunu
çözmek için hazırlanabilecek olası algoritma şayisinin birden çok olmasıdır. Başka deyişle, bir
sorunun çözümü için birbirinden farklı birden fazla sayıda algoritma hazırlanabilir. Bu da
gösteriyor ki herhangi bir problemin çözümü için birbirinden farklı yüzlerce bilgisayar programı
yazılabilir.

Bir bilgisayar programı için hazırlanacak olan algoritma da ayni şekilde çözüm yolunu bilmeyen
bir kişiye, çözüme ulaşmak için neler yapması gerektiği anlatılıyormuş gibi hazırlanmalı ve
eksik bir nokta bırakmaksızın gerekli tüm adımları açık ve düzenli olarak içermelidir. Çözüm
için kullanılacak bilgilerin nereden alınacağı, nerede saklanacağı ve çözümün program
kullanıcısına nasıl ulaştırılacağı algoritma adımları arasında belirtilmelidir.

Aşağıda değişik işlemlere ilişkin algoritma örnekleri verilmiştir.

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

Algoritma:

1. Birinci sayıyı gir


2. Đkinci sayıyı gir
3. Đki sayının toplamını yap
4. Toplamın değerini yaz
5. Bitir.

Bu tam bir algoritmadır. Sözcüklerin ortaya çıkaracağı yanlış anlamaların ortadan kaldırmak
amacıyla semboller ve matematik dilini gerektiren bazı kısaltmalar kullanmak daha uygun
olacaktır. Bir algoritma yazılırken su metot izlenmelidir:
Programda kullanılacak elemanları temsil etmek üzere uygun isimler Veya
değişkenler seç.
Bazı isimlere başlangıç değeri olarak çözümün gerektirdiği uygun değerler ver.
Gerekirse programa girilecek verileri düzenle.
Cebirsel notasyon ve kararlar kullanarak aritmetik işlemleri gerçekleştir.
Çıkısı düzenle.
Bitir.

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


uyarak yeniden yazalım.

Toplam adi için Z, Birinci sayı için X, Đkinci sayı için Y


değerleri kullanılırsa;

Algoritma:

1. X değerini gir
2. Y değerini gir
3. Z ? X+Y
4. Z' yi yaz
5. Bitir.

Görüldüğü üzere bu şekilde bir algoritma ile çözüm yolunu izlemek daha kolaydır. Bundan
sonra verilen örneklerde bu tip algoritma kullanılacaktır.

Algoritma ve Programlamaya Giriş 7 Öğr. Gör. Mustafa AKSU


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

Algoritma:

1. X değerini gir
2. Y değerini gir
3. Z ? X+Y
4. Ort? Z/2
5. Ort değerini yaz
6. Bitir.

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

Örnek 4: Beş sayının toplamını ve ortalamasını veren programa ait algoritmanın


oluşturulması

Toplam adi için Top


Ortalama adi için Ort
Girilen sayılar için X
Arttırma için Sayaç kullanılırsa

Algoritma:
1. Top ? 0, Sayaç ? 0
2. X'i gir
3. Top? Top+X
4. Sayaç ? Sayaç +1
5. Eğer Sayaç <5 ise A2'ye git
6. Ort? Top/5
7. Top ve Ort değerlerini yaz
8. Bitir.

Örnek 5: Kenar uzunlukları verilen dikdörtgenin alan hesabını yapan programa ait
algoritmanın hazırlanması. Kenar uzunlukları negatif olarak girildiği durumda veri girişi
tekrarlanacaktır.

Dikdörtgenin kısa kenarı : a


Dikdörtgenin uzun kenarı : b
Dikdörtgenin alanı: Alan

Algoritma:
1. a değerini gir
2. a<0 ise 1. adimi tekrarla
3. b değerini gir
4. b<0 ise 3. adimi tekrarla
5. Alan ? a*b
6. Alan değerini yaz
7. Bitir.

Algoritma ve Programlamaya Giriş 8 Öğr. Gör. Mustafa AKSU


Örnek 6: Çapraz döviz kuru hesabi yapan programın algoritmasının oluşturulması. Bu
algoritmanın oluşumunda veriler; 1 Amerikan dolarının TL karşılığı, hesaplanacak $ miktarı,
çıkış ise verilen $'in TL karşılığı olacaktır.

Doların değeri :Doldeg


Girilen Dolar miktarı :Dolar
TL karşılığı :Tlkar

Algoritma:

1. Doldeg'i gir
2. Doldeg<0 ise 1. adimi tekrarla
3. Dolar'i gir
4. Dolar<0 ise 3.adimi tekrarla
5. Tlkar? Doldeg*Dolar
6. Tlkar değerini yaz
7. Bitir

Örnek 7: Verilen bir sayının faktöriyelini hesaplayan programın algoritmasının oluşturulması

sayının faktöriyeli :Fak


Faktöriyel değişkeni :X
Faktöriyeli hesaplanacak sayi :Y

Algoritma:
1. Fak? 1, X? 0
2. Y'i gir
3. Y<0 ise 2. adimi tekrarla
4. X? X+1
5. Fak? Fak*X
6. X<Y ise 4. adıma geri dön
7. Fak değerini yaz
8. Bitir.

Bu algoritmada 1. adımda X 'e 0 ve Fak değişkenine 1 değeri atanıyor. 2. adımda Y değeri


giriliyor ve 3. adımda Y değerinin 0 dan küçük bir değer olup olmadığı denetlenerek,
sonuca göre gerekli komut veriliyor. 4. adımda X'in değeri 1 arttırılıyor ve 5. adımda X için
Fak değeri hesaplanıyor. 6. adımda X in değerinin faktöriyeli hesaplanacak sayıdan küçük
olması durumunda 4. adımdan itibaren işlemlerin tekrarlanması komutu veriliyor, X' in
değerinin Yiye eşit olması durumunda işlemler tamamlanarak hesaplanan değerin yazdırılması
işleminden sonra programın çalışması sona ermektedir.

1.1.2 Akış Diyagramları

Geliştirilecek olan yazılımın genel yapısının şematik gösterimine akis diyagramı adi verilir.
Akis diyagramları, yazılımı oluşturacak program parçalarını ve bu parçaların birbirleri ile olan
ilişkilerini belirler. Bir bilgisayar programının oluşturulmasında akis diyagramlarının
hazırlanması, algoritma oluşturma aşamasından sonra gelmektedir. Bilgisayar programının
oluşturulması sırasında algoritma aşaması atlanarak, doğrudan akis diyagramlarının
hazırlanmasına başlanabilir. Programlama tekniğinde önemli ölçüde yol almış kişiler bu
aşamayı da atlayarak direkt olarak programın yazımına geçebilirler.

Akis diyagramlarının algoritmadan farkı, adımların simgeler seklinde kutular içinde


yazılmış olması ve adımlar arasındaki ilişkilerin (iş akışı) oklar ile gösterilmesidir.

Algoritma ve Programlamaya Giriş 9 Öğr. Gör. Mustafa AKSU


Akis diyagramlarında kullanılan semboller, anlamları ve kullanış amaçları aşağıdaki tabloda
verilmiştir.

Tablo 1. Akış diyagramlarında kullanılan temel semboller ve anlamları

Akis diyagramının başlangıç ve bitiş yerlerini gösterir. Başlangıç


simgesinden çıkış oku vardır. Bitiş simgesinde giriş oku vardır.

Dışardan veri girişi. Veri okutma işlemleri için.

Aritmetik işlemler ve değişik atama işlemlerinin temsil edilmesi için


kullanılır.

Kontrol ve karar verme işlemlerini temsil eder.

Oklar Diyagramın akis yönünü gösterir.

Belgeye, yazıcıya, ekrana çıktı için kullanılır.

Bu sembolleri daha da çoğaltmak mümkün fakat temel olarak akış diyagramlarında bu şekiller
kullanılacaktır.
Ayrıntılı bir akis diyagramı, yazılımı oluşturan işlemleri ve ilişkilerini en küçük detayına kadar
belirler.
Bir bilgisayar programının geliştirilmesinde kullanılan programlama dili ne olursa olsun bu
programların akis diyagramlarında genel olarak yalnız üç basit mantıksal yapı kullanılır. Bu
mantıksal yapılardan en basiti sıralı yapıdır(Şekil 1.2). Sıralı yapı, hazırlanacak programdaki
her işlemin mantık sırasına göre nerede yer alması gerektiğini vurgular. Bu yapı sona erinceye
kadar ikinci bir işlem başlayamaz.

Algoritma ve Programlamaya Giriş 10 Öğr. Gör. Mustafa AKSU


Mantıksal yapılardan ikincisi Karar Verme yapısıdır (Şekil 1.3). Programlama sırasında
If...Then... Else yapısı ile tanıyacağımız bu mantıksal yapılar, birden fazla sıralı yapı
seçeneğini kapsayan modüllerde, hangi şartlarda hangi sıralı yapının seçileceğini belirler.

Üçüncü mantıksal yapı çeşidini tekrarlı yapılar (Şekil 1.4) oluşturmaktadır. Bu yapılara
Pascal programlama dilinde For (Şekil 1.4), While ve Repeat..Until yapısı adi da verilir.
Şartlara göre değişik işlem gruplarının yapılmasını sağlar. Bu yapı yukarıda sözü edilen iki
yapının çeşitli kombinezonların tekrarlanmasından oluşmuştur.

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


yerine getirecek programlar hazırlanabilir. Programların bu üç basit yapı ile sınırlandırılması
program modüllerinin daha kolay tasarlanmasını sağlar.

Şekil 1.4. Tekrarlı yapılar

Algoritma ve Programlamaya Giriş 11 Öğr. Gör. Mustafa AKSU


1.1.3. Akis diyagramı Örnekleri

Bu bölümde, sözlü veya yazılı olarak oluşturduğumuz algoritmanın programa


dönüştürülmesi sırasında programın çalışma sırasını da gösteren akis diyagramlarıyla ilgili
örnekler aşağıda verilmiştir.

Örnek 1: Dışardan girilen bir sayıyı okuyup bu sayıyı tekrar yazdıran programın akış şemasını
çiziniz.

Başla

Sayı’yı oku

Sayı’yı
Yazdır

Bitir

Örnek 2: Dışardan girilen iki sayıyı toplayıp sonucu ekrana yazdıran programın akış şemasını
çiziniz.

Başla

X,Y oku

Toplam=X+Y

Toplam’ı
Yazdır

Bitir

Algoritma ve Programlamaya Giriş 12 Öğr. Gör. Mustafa AKSU


Örnek 3: Dışardan girilen iki sayıyı toplayıp bunların ortalamasını bulup toplam ve ortalama
sonucunu ekrana yazdıran programın akış şemasını çiziniz.

Başla

X,Y oku

Toplam=X+Y
Ort=toplam/2

Toplam ve
ort’u
Yazdır

Bitir

Algoritma ve Programlamaya Giriş 13 Öğr. Gör. Mustafa AKSU


Örnek 4: 1'den 100'e kadar olan sayıların toplamlarını ve ortalamalarını veren
programın akış diyagramını çiziniz.

Başla

Ortalama ,
Toplam’ı yazdır Bitir

Algoritma ve Programlamaya Giriş 14 Öğr. Gör. Mustafa AKSU


Örnek 5: Dışardan girilen N sayısının faktöriyelini hesaplayan programın akış diyagramını
çiziniz.

Algoritma ve Programlamaya Giriş 15 Öğr. Gör. Mustafa AKSU


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

Algoritma Akış Diyagramı Pascal Kodu

Var
1. Başla A:integer;

Begin
2. A sayısını oku
write (‘Bir sayı girin’);
3. Sayıyı yazdır
readln (A);
4. Bitir. writeln(‘Girdiginiz sayı = ‘, A);

readln;

end.

Algoritma ve Programlamaya Giriş 16 Öğr. Gör. Mustafa AKSU


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

Algoritma Akış Diyagramı Pascal Kodu

Var
1. Başla
X,Y,Toplam:integer;
2. X,Y sayısını oku
Begin

3. Toplam= X+Y al write (‘Đki sayı girin’);

readln (X,Y);
4. Toplam’ı yazdır
toplam:=X+Y;
5. Bitir.
writeln(‘Sayıların Toplamı = ‘, toplam);

readln;

end.

Algoritma ve Programlamaya Giriş 17 Öğr. Gör. Mustafa AKSU


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

Algoritma Akış Diyagramı Pascal Kodu

Var

1. Başla X,Y,Toplam:integer;
Ort:real;
2. X,Y sayısını oku
Begin

3. Toplam= X+Y al write (‘Đki sayı girin’);

readln (X,Y);
4. ort=toplam / 2 al
toplam:=X+Y;
5. Toplam’ı ve ort’u yazdır
ort:=toplam / 2;

6. Bitir. writeln(‘Sayıların Toplamı =‘ , toplam);

writeln(‘Sayıların Ortalaması =‘ , ort);

readln;

end.

Algoritma ve Programlamaya Giriş 18 Öğr. Gör. Mustafa AKSU


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

Algoritma Akış Diyagramı Pascal Kodu

1. Başla Var

N,sayac:integer;
2. sayac=0, Faktor=1 al
Faktor:longint;
Begin
3. Bir sayı oku (N)
write (‘Bir sayı girin’);
4. sayac=sayac+1 al readln (N);

5. faktor=faktor*sayac for sayac:=1 to N do

faktor:=faktor*sayac ;
6. Eğer sayac < N ise 4. adıma git
writeln(‘Faktöriyel =‘ , faktor);
7. Faktor’u yazdır
readln;

8. Bitir. end.

Algoritma ve Programlamaya Giriş 19 Öğr. Gör. Mustafa AKSU


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

Algoritma Akış Diyagramı Pascal Kodu

var
1. Başla
i,top:integer;

2. i=0, top=0 al begin


top:=0;
3. top:=top+i al for i:=1 to 100 do
begin
4. i:=i+2 al ;
if (i mod 2=0) then
top:=top+i;
5. Eğer i>=100 ise 6. adıma
end;
değilse 3. adıma git
writeln(‘sayilarin toplami = ',top);
readln;
6. top değerini yaz
end.
7. Bitir.

Algoritma ve Programlamaya Giriş 20 Öğr. Gör. Mustafa AKSU


2. PASCAL PROGRAMLAMA DĐLĐ YAPISI

2.1. Giriş

Bir Pascal programı en genel anlamda üç ayrı kısımdan oluşmuştur. Bu kısımlar bulunmaları
gereken sıraya göre aşağıda verilmiştir.

Program Başlığı; {Đsteğe bağlı}

Tanımlama Bloğu; {Değişken sabit varsa}

Begin

Đcra Bloğu; {Yapılacak Đşlemler}

End.

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,
Pascal komut cümlelerinden oluşur. ICRA bloğu, "BEGIN" ile başlar "END." ile sona erer. Her
program bloğu birden fazla "END" içerebilir. Ancak bu end deyimleri program içinde bulunan
değişik blokların sonunu göstermek için kullanılır ve hiç birinin sonunda "." işareti bulunmaz. "."
işareti sadece ana programın sonunu göstermek amacıyla kullanılabilir. Ana programın sonu
haricindeki diğer "END" deyimlerinin sonunda ";" işareti kullanılır.

Örnek Bir Program:


Program Ilk; Program Başlığı, sonuna ; konulur.
Const Sabit sayı tanımlama bölümü
b =10; b sabitinin değeri 10 dur.
Var Değişken tanımlama bölümü
a : integer; a sayısı tam sayıdır.
c : real; c sayısı ondalıklı sayıdır.
Begin Ana program başladı.
Write ('a sayısını giriniz : '); Ekrana ' ... ' arasındakileri yaz.
a değişkenini (klavyeden) gir. Alt satıra
Readln(a);
geç. (ln)
c := a + b; a değişkeni ile b sabitini topla, c'ye ata.
'...' içindekileri yaz, sonucunu yaz (c'yi), alt
Writeln('a + b = ' , c);
satıra geç.
Klavyeden herhangi bir karakter oku
(Program çalıştırıldığında sonucu (c)
Readln ekranda bekletmek içindir. (yazılmasa da
olur). Son satırdan bir onceki satıra ;
yazılmasa da olur.
Program sonu (Her Begin'in bir End'i
End. vardır.Programın sonundaki End'in sonuna
nokta isareti konulur.

Algoritma ve Programlamaya Giriş 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
"program başlığı'dır. Program başlığı, programa bir isim vermek için kullanılır ve program
isimlerinde Đngiliz alfabesinde bulunmayan Türkçe karakterler kullanılmamalıdır. Programa
uzun isimler verilebilir ancak sözcükler arasında boşluk bulunmamalıdır.

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


sabitler ve değişkenlerin isimleri ve bunların ne tür sabit/değişken olduğu bildirilir. Bu blok
Pascal programı içerisinde mutlaka belirtilmelidir. Örnek olarak, aşağıda değişik veri
tiplerindeki değişkenlerin bir tanımlama bloğunda nasıl tanımlanabileceği gösterilmiştir.

Tanım Veri Tipi


ABS :REAL;
A :STRING;
B :INTEGER;
C :LONGINT;
F :SHORTINT
H ;
:BOOLEAN;
J :BYTE;
KL :WORD;

2.2. Özel Semboller ve Pascal Sözcükleri

2.2.1 Özel Semboller

Bir Pascal programında kullanılabilecek özel semboller A'dan Z'ye büyük ve a'dan z'ye küçük
Đngiliz alfabesi harfleri, 0-9 arası rakamlardır. Pascal programlama dilinde kullanılan diğer
bazı semboller ve anlamları aşağıda tanımlanmıştır.

>, <, = Herhangi değişken ve sabitlerin karşılaştırılmasında kullanılır.


[ ] Bu işaret içine diziye ait indis numarası yazılır.
( ) Veri okunması, yazılması, yazılacak/okunacak bilgilerin başlangıç ve
bitişlerinde kullanılır.
Đndisli değişken eleman tanım ayırıcı.
; Pascal komut ve deyimlerini birbirinden ayırmak için kullanılırlar.
' (Tek Tırnak) Alfasayısal bilgilerin tanımlanmasında kullanılır. Bilgilerin başlangıç
ve bitişlerinde kullanılmaktadır.
, Değişken tanımlarında, okunacak yada yazdırılacak bilgiler arasında
ayraç olarak kullanılır.
: Bilgi karakter yapı tipi tanımlamalarında ve sayısal bilgilerin çıkış
formatlarında kullanılır.
. Bir gruba bağlı bir alt grup veya bir kayıt saha ismi tanımlarında
elemanlandırma işareti olarak, sabit bilgilerdeki rakamların ondalık
işareti olarak ve Pascal programlarının sonunu belirlemek amacıyla
kullanılır.
:= Đşaretin solundaki değere sağındaki bilgiyi atama işlemini yapar.
{ } Açıklama ifadelerinin başlangıç ve bitimlerinde kullanılır.
(* *) Açıklama ifadelerinin başlangıç ve bitimlerinde kullanılır.

2.2.2 Pascal Sözcükleri

Turbo Pascalda kendi işlevleri dışında kullanılamayacak olan sözcükler vardır. Bu sözcükler
ayrılmış sözcükler olarak tanımlanmakta olup programcı tarafından yeniden tanımlanamaz, bir
değişken ismi olarak kullanılamaz veya değiştirilemezler. Bu sözcüklerin isimleri aşağıda
verilmiştir:

Algoritma ve Programlamaya Giriş 22 Öğr. Gör. Mustafa AKSU


And Asm Array Begin
Case Const Constructor Destruct
Div Do Downto Else
End File For Function
Goto If Implementation Đon
Inline Interface Label Mod
Nil Not Of Object
Or Packed Procedure Program
Record Repeat Set Shl
Shr String Then To
Type Unit Until Uses
Var While With Xor

2.3. Değişken veya Sabitlerin Tanımlanması

Var Bloğu:
Pascalda değişken tanımlamak için VAR bloğu kullanılır. Bu blokta bir değişken
tanımlamak için önce değişkenin adı, sonra “:” (iki nokta üstüste) ve son olarak da
değişkenin tipi belirtilir. Aynı tipte olan değişkenleri virgülle ayırarak bir defada da
tanımlayabilirsiniz.

Değişken Tanımlamalarına Örnekler:

Var

Yas : shortint;
BOY : byte;
SAYI : integer;
kisisayisi : integer;
BuyukSayi : longint;
Para : real;
Pi : real;
Sayac : word;
Nufus : single;
sayi2 : double;
araLIK : extended;
SaYI3 : comp;
Yeni : byte;
harf : char;
Sayi : integer;
isim, Soyisim : string;

Var bloğu başka bir bloğun başlaması ile biter. Programınızın daha okunaklı olması için
“:” leri alt alta getirmeye özen gösterebilirsiniz. Unutmayın ki iyi bir programcı kodunun
okunurluğundan belli olur.

Const Bloğu:
Pascalda sabit tanımları CONST bloğunda yapılır. Sabitlerin özelliği program içerisinde
değerlerinin değiştirilememesidir. Bir sabitin tanımlanması için önce sabitin adı, sonra “=”
ve sabit değeri yazılır.

Algoritma ve Programlamaya Giriş 23 Öğr. Gör. Mustafa AKSU


Sabit Tanımlamalarına Örnekler :

Const

Pi = 3.14;
Pi_Sayisi = 3.1415;
Bu_yil = 1999;
Tarih = '29/10/11999';
isLEMciler = '+ - * /';
iSim = 'Kenan';
SOYAD = 'DEMĐR';
YAS =20;
Mesaj = 'Devam etmek için bir tuşa basınız... ';
Avagadro_Sayisi = 6.02E23;
Cosinus_45_derece = 0.7071067;
TelefonNumarasi = '3434343';
Katsayi = 100;
buyuk_mu = false;
dogru = true;
arti = ' + ';
yanlis = 'false';

Bu blokta yapılabilecek diğer bir tanım ise değişkenlere tipi ile birlikte ilk değer
verilmesidir. Bunun için önce değişkeninizin adını yazıyorsunuz sonra “:” koyup tipini
belirliyorsunuz ve ilk değer vermek için “=” yazıp ilk değerini veriyorsunuz.

Örnek:

Const
Sayac : byte = 0;

Pascal programlama dilinde icra bloğu içinde kullanılan değişkenler VAR tanım bloğu içinde,
sabitler ise CONST bloğu içinde tanımlanır. Örneğin A,B değerleri değişken ve C değeri sabit
ise bu değerlerin programın tanım bloklarında ifade edilmesi aşağıdaki şekilde olacaktır.

VAR

A,B:REAL;

CONST

C=12:INTEGER;

Burada, VAR'dan sonra gelen REAL ifadesi A ve B değişkenlerinin gerçel sayı veri tipinde olduğunu
belirtirken CONST'dan sonra gelen INTEGER ifadesi C sayısının integer veri tipi olduğunu
belirtmektedir.

Değişkenlere Değer Atama

Pascalda diğer programlama dillerinden farklı olarak değer ataması yapılırken ":=" (iki
nokta üst üste ve eşittir işaret ikilisi kullanılır). Yani sayi diye bir integer tipindeki
değişkene 20 değerini atamak istediğimizde yapmamız gerekenler şöyle olacaktır.

Örnek:
Var
sayi : integer;
{ sayi adında integer tipinde bir değişken tanımladık }
...

Algoritma ve Programlamaya Giriş 24 Öğr. Gör. Mustafa AKSU


sayi := 20;
(* sayi değişkenine 20 değerini atadık *)
sayi := sayi + 1;
(* sayi değişkeninin değerini 1 arttırdık *)
...

Pascalda değişkenlere değer atarken iki nokta üstüstü ve eşittir birlikte kullanılır. Eşittir tek
başına kullanıldığında karşılaştırma operatörü olarak görev yapar.

Değişken veya sabit tanımlarken şunlara dikkat etmek gerekmektedir:

1. Bir değişken veya sabit A..Z veya a..z arasındaki harflerle yada _ (alt çizgi) ile başlar.

ADRES, isim, _faktor gibi.

2. Değişken veya sabitlerde ilk karakter rakam olamaz.

Var

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

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

3. Değişken birden fazla kelimeden oluşuyorsa kelimeler arasına alt çizgi ( _ ) karekteri
konulmalıdır.

Var

dairenin_alani : real;

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


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

Var

maaş, sınıf: integer ; {Tanımlaması yanlış}

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


boşluk kullanılamaz.

Var

sınıfın.mevcudu: integer; {Tanımlaması yanlış}

6. Tanımlanan değişken veya sabit programlama dilinin komutları olamaz.

Örnek: Var

Read, file : integer ; {Kullanımları yanlış}

Not: integer ; {Kullanımı yanlış}

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

Programlara Açıklama Eklenmesi

Program yazımı sırasında kodlarımıza çok sık ekleme ve çıkarmalar yaparız bunlar bazen
programları içinden çıkılmaz hale getirebilir, bunu engellemek için Pascalda programlara
açıklama satırları ekleyebilirsiniz. Açıklama satırları eklemeniz ileride programda yaptığınız
değişiklikleri ve program akışını kolayca hatırlamanızı ve programınızı inceleyen diğer

Algoritma ve Programlamaya Giriş 25 Öğr. Gör. Mustafa AKSU


kişilerin programı kolayca anlamalarını sağlayacaktır.

Pascalda açıklama satırı yazımı için {,} sembolleri veya (*,*) ikilileri kullanılır bunlar
açıklamanın nerede başlayıp nerede bittiklerini belirtir. Programın derlenmesi esnasında bu
satırlar derleyici tarafından gözardı edilir, yani derlenmiş kodda açıklama satırları yer
almaz. Açıklamalar birinci tipte { ile başlar } ile biter. Đkinci tipte ise (* ile başlar ve *) ile
biter.

Programlarınızda açıklama satırlarına sıkça yer vermeniz hem sizin hem de programı
inceleyen diğer kişilerin programı rahat anlamalarını sağlayacaktır.

Örnek:
Var
sayi:integer;
{sayi değişkeni kaç kişinin adını gireceğimizi saymak için kullanıldı. Bu bir açıklama
satırıdır ve derleyici tarafından gözardı edilir}
adi:string[20];
(* Bu da bir açıklama satırıdır ve bu satır da derleyici tarafından gözardı edilir*)

Pascalda değişken tanımlamalarının ve kod satırlarının sonuna noktalı virgül geldiği halde
açıklama satırlarının sonuna noktalı virgül gelmediğine özellikle dikkat edin.

2.4. Pascalda Veri Tipleri


Pascal programlama dilinde kullanılan değişik veri tiplerinin tanımları ve geçerli olduğu alanlar
aşağıda tanımlanmıştır.

2.4.1 Tamsayı veri tipleri

2.4.1.1. Integer Tipi Veriler

Integer tipindeki veriler tamsayılardan oluşmuşlardır ve kayar nokta içermezler. Turbo


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

2.4.1.2. Word Tipi Veriler

Word Tipi veriler, 0-65535 arasındaki tamsayılardan oluşmuşlardır.

2.4.1.3. Shortint Tipi Veriler

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

2.4.1.4. Byte Tipi Veriler

Byte tipi veriler işaret ve desimal nokta içermeyen 0-255 arasındaki değerlerden oluşan
tamsayılardır. Programda, 0-255 arasındaki tamsayılar için değişken veya sabitlerin Byte tipi
olarak tanımlanması bellekten tasarruf sağlar.

2.4.1.5. Comp Tip Veriler

Comp tip veriler çok uzun tamsayıların tanımlanması için kullanılır. Comp veri tipi ile 19-20
basamaklı sayılar ifade edilir. Tanım aralığı; -263...263

2.4.1.5. Longint Tipi Veriler

-2147483648 ile +2147483647 arasında görev yaparlar ve tamsayıların menzil olarak en

Algoritma ve Programlamaya Giriş 26 Öğr. Gör. Mustafa AKSU


kapsamlısıdır.

2.4.2. Ondalıklı Değişken Tipleri

2.4.2.1 Real Tip Veriler

Real tip veriler desimal nokta içeren ve üslü formda ifade edilebilen gerçel sayılardır. Üs ifadesi
olarak "E" harfi kullanılmaktadır. Kullanımları ile ilgili örnekler aşağıda verilmiştir. Tanım
aralığı;2.9E-39..1.7E38 'dir. Bellekte 6 byte yer kaplar.

-2.3454
123.11223344
-2.45E+12
2.45E+12
1.123123E-12

Olağan koşullarda bir programlama hatası söz konusu değilse veya çok büyük sayılar ile
çalışılmıyor ise REAL tip sayılarla çalışmada bir sorun ile karşılaşmayız.

Kişisel bilgisayarların mikro işlemcileri 80x86 olarak isimlendirilir. Bu işlemci ailesinin yükünü
hafifletmek için 80x87 olarak bilinen matematik işlemcisi kullanılır. Pascalda bu işlemci ile
kullanılmak üzere dört tip tanımlanmıştır. Bunlar; Single, Double, Extended ve Comp 'tur.

2.4.2.2 Single Tip Veriler

Single tip veriler, 1.5E-45...3.4E38 sayı kümesi aralığında tanımlanabilir. Bellekte 4 byte yer
kaplar.

2.4.2.3. Double Tip Veriler

Double tip veriler, 5.0E-45...3.4E38 sayı kümesi aralığında tanımlanabilir. Bellekte 8 byte yer
kaplar.

2.4.2.4. Extended Tip Veriler

Extended tip veriler, 3.4E-4932...1.1E4932 sayı kümesi aralığında tanımlanabilir. Bellekte


10 byte yer kaplar.

80x87 sınıfındaki veri tiplerinin kullanılabilmesi için programın en başına {$N+} derleyici komutu
verilmelidir. Bilgisayarda matematik işlemci yok ise {$E+} matematik işlemci emülasyonu da bu
satıra eklenir.

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


işlemcili bilgisayarlarda emülasyon direktifini kullanmaya gerek yoktur.

2.4.3. String (Metin veya karakter) veri Tipleri

2.4.3.1. Char Tipi Veriler

Char tipi veriler, ASCII karakter kümesinin 256 adet elemanından oluşurlar. Char tipi veriler
bir sabit olarak ele alındığından ' ' içerisinde yazılır.

Algoritma ve Programlamaya Giriş 27 Öğr. Gör. Mustafa AKSU


2.4.3.2. String Tipi Veriler

Bu tip veriler, karakter kümesi şeklinde olup ' ' içerisinde yazılırlar.

A:STRING[5];

B:STRING[16];

Burada A isimli karakter kümesi maksimum 5 karakterden, B isimli karakter dizisi ise
maksimum 16 karakterden oluşmaktadır.

Bu bilgiler ile ilk Pascal programımızı yazabiliriz.

Var
mesaj:string[7];
BEGIN
mesaj :='merhaba' ;
Write('Sayın bilgisayar kullanıcısı ',mesaj);
END.

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

Sayın bilgisayar kullanıcısı merhaba

Örnek :
Klavyeden vize ve final notu girildiğinde o öğrencinin not ortalamasını bulan programı
yazınız?

var
vize,final:shortint;
begin

write('vizeyi giriniz');

readln(vize);

write('finali giriniz');

readln(final);

write('ortalama',vize*0.4+final*0.6);

readln;

end.

2.4.4. Boolean (Doğru , Yanlış) Tipi Veriler

Mantıksal ifadeler olarak da isimlendirilebilen Boolean tipi veriler sadece iki değerden
oluşurlar. Bunlar "FALSE" ve "TRUE" dir.

Durum: Boolean;

Hata: Boolean;

Algoritma ve Programlamaya Giriş 28 Öğr. Gör. Mustafa AKSU


3. OPERATÖRLER
3.1. Aritmetik Operatörler

Aritmetik operatörler dört işlem için kullandığımız (toplama, çıkartma, çarpma ve bölme) +,
-, / ve * 'dan oluşmaktadırlar. Tam ve reel sayıların aritmetik işlemleri için kullanılan
operatörlere ilişkin liste aşağıdaki tabloda verilmiştir.

"+","-" ve "*" işlemlerinde işlem yapılan sayı cinsi reel ise sonuç ta reel'dir. Đşlem yapılan
sayılar tamsayı ise sonuçta tamsayıdır. "/" işleminde ise sonuç her zaman reel sayıdır.

Operatör Adı Anlamı


+ toplama Sol ve sağdaki değerleri birbirine ekler.
- çıkarma Soldaki değerden sağdaki değerleri çıkarır.
* çarpma Sol ve sağdaki değerleri birbiri ile çarpar.
/ bölme(Reel) Soldaki değeri sağdaki değere böler.
Div bölme(Tamsayı) Soldaki değeri sağdaki değere böler.
mod kalan Soldaki değerin soldaki değere bölünmesinden kalan

Sık sık kullandığımız bu operatörlerin yanında iki sayının bölümünden kalanı veren MOD, iki
tamsayının bölümünün sonucunda tamsayı üreten DIV programlarımızda sık kullandığımız
aritmetik operatörlerdir.

3.1.1 Div Operatörü


Đki tamsayının bölümünün tamsayı kısmını verir.
123/4=30.75 123 div 4=30

3.1.2 Mod Operatörü


Tamsayı tipindeki operandların bölümünü yapar ve sonucun kalan kısmını bir tamsayı değer
olarak üretir.
123/4=30.75 123 mod 4 =3

'/' operatörü operand olarak kullanılan değerlerin tipi ya da bölümün sonuç değeri ne olursa
olsun real tipte sonuç üretir. Bu nedenle bir bölümün sonucunun bir tamsayı değişkene direkt
olarak aktarılması söz konusu değildir.

Mod ve Div işlemlerinin sonuçları her zaman tamsayıdır.

4 div 12 = 0, 13 div 4 = 3 3 mod 2 = 3, 4 mod 2 = 0


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

3.2. Đlişkisel Operatörler


Diğer programlama dillerinde de olduğu üzere, Pascal programlama dilinde iki veya daha fazla
operand arasındaki ilişkilerin araştırılmasını yapan ilişkisel operatörler, toplu olarak aşağıdaki
tabloda verilmiştir.

Operatör Adı Anlamı

Algoritma ve Programlamaya Giriş 29 Öğr. Gör. Mustafa AKSU


= Eşit Sol ve sağdaki değerler birbirlerine eşitse
<> Eşit değil Sol ve sağdaki değerler birbirlerine eşit değilse
< Küçük Soldaki değer sağdaki değerden küçükse
> Büyük Soldaki değer sağdaki değerden büyükse
<= Küçük yada eşit Soldaki değer sağdaki değere eşit yada küçükse
>= Büyük yada eşit Soldaki değer sağdaki değere eşit yada büyükse

3.3. Aritmetik Đşlemlerde Đşlem Öncelik Sıraları

Öncelik Sırası Aritmetik Đşlem ve bağıntılı tanımlar


1 işaretli sayısal bilgiler
2 Parantez içindeki işlemler
3 Aritmetik fonksiyonlar
4 Üs alma
5 Çarpma ve Bölme
6 DIV tam sayıya bölme deyimi
7 MOD (Bölme işleminde kalan bulma işlemi)
8 Toplama ve çıkarma
9 Mantıksal ilişki ifadeleri (=, >,<,)
10 Bağlantı ifadeleri (not,and,or,xor)

Đşlem Önceliğinde Bazı Kurallar:

• Aynı öncelik sırasına sahip işlemlerde hangisi önce tanımlanmış ise önce onun
işlemi gerçekleştirilir.
• Đşlem öncelik sırası küçük olan bir aritmetik işlemin önce yapılması isteniyorsa
parantez içine alınmalıdır.
• Đç içe birden fazla parantez kullanılması durumunda, işlem öncelik sırası daima en
içteki paranteze ait işleminindir.

3.4. Matematiksel Formüller

Normal olarak elle yazılan formüllerin bir bilgisayar programına yazımı için belirli bazı kurallar
vardır. Matematiksel ifadelerin bilgisayarın anlayacağı şekilde yazımı sırasında dikkat edilecek
önemli bir nokta, matematik operatörleri arasındaki işlem önceliğine dikkat edilmesidir.
Aşağıda verilen cebirsel ifadelerin Pascal programlama dilinde yazımlarını inceleyiniz.

Cebirsel Đfade Pascal'da Yazım Biçimi


2
b -4.a.c b*b-4*a*c
2 1/2
(b -4.a.c) sqrt(b*b-4*a*b)
x+y
------ (x + y) / (x - y)
x-y

Algoritma ve Programlamaya Giriş 30 Öğr. Gör. Mustafa AKSU


Yukarıdaki örnekte işlem sırası;
1. Z'nin karekökü alınır
2. 1 no.lu işlem 2 sabiti ile çarpılır
3. (2-x) değeri hesaplanır
4. 2 no.lu işten elde edilen sonuç 3 no.lu işlemin sonucuna bölünür.

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

Konu Sonu Çalışma Soruları

Soru 1. Aşağıda verilen matematiksel eşitlikleri Pascal programlama dili


kurallarına göre yazınız.

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


hesaplayan programı yazınız.

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

Algoritma ve Programlamaya Giriş 31 Öğr. Gör. Mustafa AKSU


4. GĐRĐŞ/ÇIKIŞ DEYĐMLERĐ
4.1. Giriş

Giriş/çıkış deyimleri bilgisayarın ana belleği ile çevre aygıtlar arasında bilgi transferi yaparlar.
Herhangi bir çevre aygıtından (klavye gibi) bir verinin belleğe okutulması veya ana bellek
üzerindeki bir verinin çevre aygıtlara (Ekrana) gönderilmesi giriş/çıkış deyimleri ile
gerçekleştirilir. Genellikle giriş çıkış deyimi olarak aşağıda tanımlanan deyimler kullanılmaktadır.

4.2 Read-Readln

Pascal 'da okuma işlemi için kullanılan komutlar READ ve READLN olup genel kullanım yapısı şu
şekildedir;

Read(A1,A2,A3,...,An);

Readln(A1,A2,A3,...,An);

Read ile Readln arasındaki fark: Read, okuma işlemi tamamlandıktan sonra aynı satırda
kalınmasını, Readln ise yeni bir satıra gelinmesini sağlar. Bir Pascal programı içerisinde bu iki
komutun kullanımı aşağıdaki program parçasında verilmiştir.

Var

s,a,n:real;

begin
Read(s,a,n);
end.

Okunacak değerlerin düzeni;

12.45 43.543 62.12

Aynı değerleri Readln ile okutturmak istersek;

Var

s,a,n:real;

begin
Readln(s,a,n) ;
end.

Okunacak değerlerin düzeni yukarıdaki okuma düzeni ile aynı olabileceği gibi her değer ayrı bir
satırda verilebilir, her hangi satırlarda verilebilir, örnek olarak s, a ve n değerleri aşağıdaki okuma
düzeninde okutturulmuştur.

12.45

43.543

62.12

Algoritma ve Programlamaya Giriş 32 Öğr. Gör. Mustafa AKSU


4.3. Write-Writeln

Pascal programlama dilinde yazma işlemi için WRITE ve WRITELN komutları


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

Write(A1,A2,A3,...,An)

Writeln(A1,A2,A3,...,An)

Đki kullanım şekli arasındaki fark, Read ile Readln arasındaki fark gibidir. Đfadeler Write ile
yazdırıldıktan sonra kursör aynı satırda bekleyecektir, Writeln ile yazdırılması durumunda ise
kursör bir sonraki satıra geçecektir.

Var
s,a,n:integer;
begin
s:=3;
a:=9;
n:=5;
Write(s);
Write(a);
Write(n);
end.

Programın çalıştırılmasıyla elde edilen sonuç;

395 olacaktır.

Aynı değişkenleri Writeln ile yazdırdığımızda;

Var
s,a,n:integer;
begin
s:=3;
a:=9;
n:=5;
Writeln(s);
Writeln(a);
Writeln(n);
end.

3
9
5

çıktısı elde edilecektir.

Algoritma ve Programlamaya Giriş 33 Öğr. Gör. Mustafa AKSU


4.4. Yazım Đçin Format Belirleme

Write ve Writeln deyimi ile yapılan bilgi çıkışlarını düzenlemek için yazım formatları
kullanılır. Write yada WriteLn komutlarıyla ekrana "510.4542" gibi reel bir sayı yazdırılmak
istendiğinde, ekranda 5.1045420000E+02 gibi karmaşık bir değer görülür. Bu değeri
anlaşılır bir şekle dönüştürmek için bir yazım formatı belirtilmesi gerekir.

Örnek:
var
a:real;

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

Bu örnekte ekrana "510.45" şeklinde bir sayı yazar. Buradaki 6 nokta da dahil sayının
karakter uzunluğunu, 2 ise virgülden sonraki kısmın uzunluğunu ifade eder

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

1. Yazım Formatı (X:n) :Tam sayı veya karakter tabanlı değerleri ekrana formatlı
yazdırırken bu format kullanılır. Bu formata göre yazdırılmak istenilen X değeri n
karakterlik alanda sağa dayalı olarak yazılır. X değerini oluşturan dijit veya karakterin
uzunluğu n sayısından küçük ise, aradaki fark kadar sol tarafta boşluk bırakılır. X değerinin
uzunluğu n sayısına eşit veya büyük ise yazdırma işlemi format belirtilmemiş gibi
gerçekleştirilir.

Örnek:

Const
i:integer=567;
b:boolean=True;
c:char='b';
h:string[6]='Pascal';
begin
Writeln(‘123456789');
Writeln;
Writeln(i:9);
Writeln(b:9);
Writeln(c:9);
Writeln(h:9);
Writeln(i:2);
Writeln(h:5);
end.

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


yazım formatıyla reel sayılar üssüz notasyonda yazdırılır. Yazdırılacak X real değeri n karakterlik
alanda sağa dayalı olarak üssüz yazdırılır, k ise n karakterin sonundaki kesirli kısmı
göstermektedir.

Örneğin A değeri, A:7:2 şeklinde yazdırılmak istenirse; program real sayı için 7 karakterlik
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
kullanılır.

Sayının tamsayı kısmı ayrılan alanın uzunluğundan küçük ise, aradaki fark kadar sol tarafta
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
alanın uzunluğu yazdırılan sayının tamsayı alan uzunluğuna eşit büyüklükte kabul edilir. Kesirli
kısmı ayrılan alandan daha küçük ise aradaki fark kadar sağ tarafa 0 dijiti ilave edilir. Kesirli
kısım alana sığmıyorsa yuvarlatılarak yazılır.

Algoritma ve Programlamaya Giriş 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
sıfır olması desimal noktanın yok olmasını sağlar.

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

Tip Yazım Formatı Açıklama


Integer tipindeki bir değişkenin adının arkasına n gibi sayısal bir değer
integer Değişken : n yazılırsa bu n karakterlik bir saha içinde bu sayının sağa doğru dayalı bir
şekilde yazılmasını sağlar.
Real tipinde bir değişkenin adının arkasına n ve k gibi sayısal değerler
Real Değişken:n:k yazılırsa bunlar n karakterlik alan içinde ondalık kısmı noktadan sonra m
tane karakter içermek üzere sağa dayalı olarak yazdırılır.
String tipindeki bir değişkenin adının arkasına n gibi sayısal bir değer
String
Değişken:n yazılırsa bu n karakterlik bir saha içinde bu karakter dizisinin sağa doğru
Char
dayalı bir şekilde yazılmasını sağlar.

şeklinde olur.

Örnek:
Const
a:real=123.127927;
begin
Writeln('123456789’);
Writeln('*********');;
Writeln(a:9:4);
Writeln(a:9:3);
Writeln(a:9:2);
Writeln(a:9:0);
Writeln(a:7:2);
Writeln(a:6:2);
Writeln(a:5:2);
Writeln(a:0:0);
end.

Programın çalışmasıyla elde edilen sonuç aşağıda verilmiştir. Program sonucuna göre sondan
2. ve 3. satırların aynı olduğuna dikkat ediniz.

123456789
*********
123.1279
123.128
123.13
123
123.13
123.13
123.13
123

Algoritma ve Programlamaya Giriş 35 Öğr. Gör. Mustafa AKSU


5. Karşılaştırma Komutları

Pascalda genel olarak kullanılan karşılaştırma deyimleri şunlardır:


IF..THEN..ELSE
CASE..OF

5.1. If...Then...Else
Eğer…ise…değilse (If..then..else) Karar yapısı : Program yazarken en çok yapılan işlerin
başında elinizdeki verilere bakarak bir karar vermek ve programın akışını bu karara göre
yönlendirmek gelir. Đyi programda gerekli yerlerde doğru ve etkili karar yapıları oluşturmak
çok önemlidir. Çünkü bir programda en yavaş işleyen komutlardan birisi karşılaştırma
komutlarıdır. Pascalda en çok kullanılan karşılaştırma ve kontrol komutu If..then..else dir.

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


deyiminden sonraki blok işler. Eğer karşılaştırmanın sonucu yanlış (False) ise bu sefer de
else deyiminden sonraki blok işler. Else deyimi seçimlik bir deyimdir. Yani isterseniz, ya da
gerekmezse bu kısmı kullanmayabilirsiniz. Bu durumda eğer karşılaştırma sonucu yanlış ise
program bir sonraki komutla akışına devam eder.

Genel kullanım kalıbı şu şekildedir:

if (şart) then

Yapılması istenen işlem veya işlemler

Else

Yapılması istenen işlem veya işlemler

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

...
If then
begin

komutlar

end;
[ else
begin

komutlar

end;]

if veya Else’den sonra 1’den fazla komut veya işlem varsa begin – end bloğu
kullanılmalıdır.

Algoritma ve Programlamaya Giriş 36 Öğr. Gör. Mustafa AKSU


Eğer koşul doğru ise Đşlem 1'i ve Đşlem 2'yi yap değilse işlem3'ü ve işlem4’ü yap.
Pascal'da yazımı:
if Koşul Then
Begin
Đşlem1;
Đşlem2;
End
Else
begin
Đşlem3;
Đşlem4;
End;

Eğer isterseniz iç içe if kullanmaya devam edebilirsiniz. Bu oldukça karmaşık bir yapı
oluşturabilir ancak bazı durumlarda böylesi uygulamalar zaruri olur.

Örnek: Girilen bir sayının tek veya çift olduğunu bulan program.
Var
a : Integer;
Begin
Write('Bir sayı giriniz: '); Readln(a);
If (a mod 2 = 1) Then
Writeln ('Girdiğiniz Sayı Tekdir')
Else
Writeln ('Girdiğiniz Sayı Çifttir');
Readln;
End.

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


Var
a, b, c, EnBuyuk : Integer;
Begin
Write('Üç Sayı giriniz: ');
Readln(a, b, c);
If (a>=b) and (a>=c) Then EnBuyuk:=a
Else
If (b>=a) and (b>=c) Then EnBuyuk:=b
Else
EnBuyuk := c;
Writeln('En Büyük Sayı = ', EnBuyuk);

Algoritma ve Programlamaya Giriş 37 Öğr. Gör. Mustafa AKSU


Readln;
End.

Örnek : Girilen bir sayının pozitif veya negatif olduğunu söyleyen program.

Var
Sayi : integer;
begin
write(‘Bir sayı girin : ‘);
readln(Sayi);
if Sayi < 0 then
writeln(‘Sayi negatiftir’)
else
writeln(‘Sayi Pozitiftir’);
end.

Örnek: Bir öğrencinin vize ve final notunu okuyup ortalamasını vizenin % 40 ve finalin
%60 ‘ını alarak hesaplayıp ortalama 60’dan büyük veya eşitse geçti değilse kaldı yazan
progarmı yazınız.

var

vize,final:integer;

ort:real;

begin

write('Vize notunu girin');

readln(vize);

write('Final notunu girin');

readln(final);

ort:=(vize*0.4+final*0.6);

if (ort >= 60) then

Writeln('Ortalama =',ort:6:2,' Gecti')

else

Writeln('Ortalama =',ort:6:2,' Kaldi');

readln;

end.

Algoritma ve Programlamaya Giriş 38 Öğr. Gör. Mustafa AKSU


Örnek: 1-100 aralığındaki tek sayıları toplayan programı yazınız.
var
i,toplam:integer;
begin
toplam:=0;
for i:=1 to 100 do
begin
if (i mod 2=1) then
toplam:=toplam+i;
end;
writeln('tek sayılarin toplamı = ',toplam);
readln;
end.

Örnek: Dışarıdan girilen rastgele 10 tane sayıdan kaç tane tek ve çift var ayrıca tekleri
ayrı çiftleri ayrı toplayan programı yazınız.
var

i,tek,cif,tektop,ciftop,sayi:integer;

begin
tek:=0;cif:=0;tektop:=0;ciftop:=0;
for i:=1 to 10 do
begin
write(i,'. sayiyi giriniz : ');readln(sayi);
if sayi mod 2=0 then
begin
cif:=cif+1;
ciftop:=ciftop+sayi;
end
else
begin
tek:=tek+1;
tektop:=tektop+sayi;
end;
end;
writeln(tek,' Adet tek sayı girdiniz bunların toplamı = ',tektop);
writeln(cif,' Adet cift sayı girdiniz bunların toplamı = ',ciftop);
readln;
end.

Algoritma ve Programlamaya Giriş 39 Öğr. Gör. Mustafa AKSU


Örnek : Öğrencinin Vize ve final notundan ortalamasını hesaplayıp geçti veya kaldı yazan
program.

Var
Not1, Not2 : Integer;
Ortalama: Real;
Begin
Write('Not 1´i giriniz : '); Readln(Not1);
Write('Not 2´i giriniz : '); Readln(Not2);
If (Not1 >=0) and (Not1<=100) and (Not2 >=0) and (Not2<=100) Then
Begin
Ortalama := (Not1+Not2)/2;
If Ortalama >= 50 Then
Writeln('Geçtiniz Ortalamanız = ', Ortalama:4:2)
Else
Writeln('Kaldınız Ortalamanız = ', Ortalama:4:2);
End

Else
Writeln('Yanlış giriş yaptınız...');
Readln
End.

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

Konu Sonu Çalışma Soruları

Soru 1. Vergi iadesini hesaplayan programı yazınız. ( Emekli aylığı alanlar için: 0-180
milyon arası %10, 180-360 milyon arası %20, 360-600 milyon arası %12, 600 milyon
üzeri % 5)

Soru 2. Üç kenarı girilen bir üçgenin eşkenar-çeşitkenar-ikiz kenar olup olmadığını bulan
programı yazınız.

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


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

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

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

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

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

Algoritma ve Programlamaya Giriş 40 Öğr. Gör. Mustafa AKSU


5.2. case...of
Bir önceki konuda bahsedilen kontrol deyimi if..then..else genellikle az sayıda olan
karşılaştırmalarda kullanılır. Ama eğer yapılan karşılaştırma çok karmaşıksa o zaman bu
deyimi kullanmak oldukça zor olur ve çok fazla miktarda mantık hataları bulunur. Bunu
engellemek için blok if deyimi diyebileceğimiz Case yapısını kullanırız.

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


işlemleri toplu olarak yapabiliriz.

Case’in genel kullanımı şöyledir:

case degişken of

durum-1 : işlem(ler);

...

durum-n : işlem(ler);

end;

Veya

case değişken of

durum-1 : işlem(ler);

...

durum-n : işlem(ler);

else

işlem(ler)

end;

Durum dediğimiz yerlerde bir yada daha fazla, virgülle ayrılmış, sabitler veya aralıklar
olabilir.

Mesela :

case Ch of

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

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

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

else

WriteLn('Özel karakter');

End;

Algoritma ve Programlamaya Giriş 41 Öğr. Gör. Mustafa AKSU


Else kısmı ise tamamen seçimliktir. Đstemezseniz kullanmayabilirsiniz.

Şimdi bir soruyu hem if-then else deyimi ile hem de case-of deyimi ile çözüp farkları
zorlukları görelim.

Soru: Başlangıç değeri I=500 olan I sayısı; dışarıdan girilen sayı 0’dan büyük ve 128’den
küçükse I değişkenine 1 eklesin, 128..256 arasında ise I’ya 10 eklesin, 256’dan büyükse
I’ya 100 eklesin. Aynı zamanda eğer bu sayı 0’dan küçük ve –127’den büyükse I’dan 1
eksiltsin, -127..-255 arasındaysa 10 eksiltsin ve –255’den de küçükse I’dan 100 eksiltsin.

if’li çözüm
Var

I : integer = 500;

Sayi : integer;

Begin

Write(‘Bir sayı girin : ‘);

Readln(Sayi);

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

I := I+1;

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

I := I+10;

If (sayi > 256) then

I := I+100;

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

I := I-1;

If (sayi <= -127) and (sayi >= -255) then

I := I-10;

If (sayi < -255) then

I := I-100;

Writeln(‘Đşlem sonucu I da kalan=‘ , I);

End.

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

Case-of’lu çözüm

Var

I : integer = 500;

Sayi : integer;

Begin

Algoritma ve Programlamaya Giriş 42 Öğr. Gör. Mustafa AKSU


Write('Bir sayi girin : ');

readln(Sayi);

case Sayi of

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

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

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

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

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

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

end;

writeln('Islem sonunda I değeri =',I);

end.

Örnek: Aşağıda kişinin yaşı girildiğinde, yaşına uygun mesajlar veren bir Pascal
programı verilmiştir.
Var
yas:integer;
Begin
Write(‘Yaşınızı Giriniz :’);
ReadLn(YAS);
CASE yas OF
0..5:Writeln(‘Yaşınız 0-5 arasında’);
6..15:Writeln(‘Yaşınız 5-15 arasında’);
16..35:Writeln(‘Yaşınız 15-35 arasında’);
36..50:Writeln(‘Yaşınız 35-50 arasında’);
51..85:Writeln(‘Yaşınız 50-85 arasında’);
else
Writeln(‘Çok Yaşayın’);
end;
Readln;
End.

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

Var
rnot:integer;

Begin
write('Rakam notunu Giriniz');
readln(rnot);
case rnot of
0..29:write('Notunuz FF');

Algoritma ve Programlamaya Giriş 43 Öğr. Gör. Mustafa AKSU


30..39:write('Notunuz FD');
40..46:write('Notunuz DD');
47..53:write('Notunuz DC');
54..63:write('Notunuz CC');
64..73:write('Notunuz CB');
74..81:write('Notunuz BB');
82..88:write('Notunuz BA');
89..100:write('Notunuz AA');
else
write('Yanlış Not');
end;
readln;
end.

Örnek : Dışardan iki sayı ve işlem okuyup işleme göre sonucu hesaplayıp yazdıran
programı yazınız.

var x,y:integer;
a:char;
sonuc:
real;
begin
writeln('1.sayıyı giriniz..');readln(x);
writeln('2.sayıyı giriniz...');readln(y);
writeln('işlem seciniz....');readln(a);
case a of
'+':sonuc:=x+y;
'-':sonuc:=x-y;
'/':sonuc:=x/y;
'*':sonuc:=x*y;
else
write('yanlış işlem yaptınız');
end;
write('işlemim sonucu:',sonuc:4:2);
readln;
end.

============================================
Konu Sonu Çalışma Soruları

Soru 1 : Yılın aylarını rakam olarak girdiğimizde bu ayın hangi mevsimde olduğunu
ekrana yazan programı yazınız.

Soru 2 : Bir - Milyar arasındaki girilen bir sayının kaç basamaklı olduğunu ekrana yazdıran
pascal programını yazınız.

Algoritma ve Programlamaya Giriş 44 Öğr. Gör. Mustafa AKSU


6. DÖNGÜ (TEKRARLAMA) DEYĐMLERĐ

6.1 Giriş

Bu bölümde program içerisinde belirli blokların herhangi bir şarta bağlı olarak veya şarttan
bağımsız bir şekilde ardışık olarak çalıştırılması için kullanılan deyimler üzerinde durulacaktır. Bu
tekrarlama deyimleri FOR-DO, REPEAT-UNTIL, WHILE-DO şeklindedir.

6.2 For-Do

For deyimi, bir program parçasının herhangi bir boolean şartına bağlı olmaksızın belirlenen
sayıda üst üste çalıştırılması için kullanılır. For deyiminin genel kullanım şekilleri aşağıda
verilmiştir.

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


Begin

Yapılacak işlemler

End;

Bu kullanım şeklinde başlangıç değeri bitiş değerinden küçük olmak zorundadır. TO ifadesiyle
başlangıçtan bitişe kadar artarak tekrar yapılacağını, DO ifadesi de tanımlanan işlemlerin
tekrarlanacağını bildirir.

2. FOR Döngü Değişkeni := Döngü_Başlangıcı DOWNTO Döngü_sonu DO


Begin

Yapılacak işlemler

End;

For deyiminin bu kullanım şeklinde başlangıç değeri bitiş değerinden daima büyük olup
DOWNTO ifadesi de döngü değişkeninin tekrarlama işleminde azalacağını belirtir. DO ifadesi ise
belirtilen işlemlerin döngü sayısınca tekrarlanacağını bildirir.

Pascal dilinde diğer programlama dillerinden farklı olarak başlangıç değerinden son değere
artışlar/azalmalar birer birer olmaktadır. Aşağıdaki örnek programları inceleyiniz.

Örnek : Dışardan girilen bir sayının karesini küpünü %18’ini ve faktöriyelini hesaplayan programı
yazınız.
var
i,say,kare,kup,fak:integer;
yuzde:real;
begin
write('Sayi giriniz');
readln(say);
kare:=say*say;
kup:=say*kare;

Algoritma ve Programlamaya Giriş 45 Öğr. Gör. Mustafa AKSU


yuzde:=say*0.18;
fak:=1;
for i:=1 to say do
fak:=fak*i;
writeln('Sayi Karesi Kubu Yuzdesi Faktoriyeli');
write(' ',say,' ',kare,' ',kup,' ',yuzde:4:2,' ',fak);
readln;
end.

Örnek : Bir den girilen N sayısına kadarki tam sayıları toplayan pascal programını yazınız

Var
i, N, Toplam : Integer;
Begin
Write('Son sayıyı gir: '); Readln (N);
Toplam := 0;
For i := 1 To N Do
Toplam := Toplam + i;
Writeln('1´den N´e kadar sayıların toplamı = ', Toplam);
Readln;

End.

Örnek: Dışardan girilen bir ismi yine dışardan girilen bir sayı kadar yazan programı yazınız.

var

i,x:integer;

isim:string[20];

begin

write('isim girin : ');

readln(isim);

write('isminiz kac defa yazılsın : ');

readln(x);

for i:=1 to x do

writeln(isim);

readln;

end.

Algoritma ve Programlamaya Giriş 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
yapan programı yazınız.

var

us,taban,sonuc:integer;

i:integer;

begin

write('taban ve ussu girin..:');

readln(taban,us);

sonuc:=1;

for i:= 1 to us do

sonuc:=sonuc*taban;

write('sonuc......:',sonuc);

readln;

end.

Örnek : 1-100 arasındaki çift sayıları toplayan program.


var
i,toplam:integer;
begin
toplam:=0;
for i:=1 to 100 do
begin
if (i mod 2=0) then
toplam:=toplam+i;
end;
writeln('1-100 arasi cift sayilarin toplami = ',toplam);
readln;
end.

Örnek: Dışardan okunan 10 tane rast gele sayıdan kaçının negatif kaçının pozitif
olduğunu ve pozitifleri kendi arasında negatifleri kendi arasında toplayıp sonuçları ekrana
yazan programı yazınız.
var
i,poz,neg,poztop,negtop,sayi:integer;
begin
poz:=0;neg:=0;
poztop:=0;negtop:=0;

Algoritma ve Programlamaya Giriş 47 Öğr. Gör. Mustafa AKSU


for i:=1 to 10 do
begin
write(i,'. sayiyi giriniz : ');
readln(sayi);
if sayi<0 then
begin
neg:=neg+1;
negtop:=negtop+sayi;
end
else
begin
poz:=poz+1;
poztop:=poztop+sayi;
end;
end;
writeln(neg,' Adet negatif sayi girdiniz bunlarin toplami = ',negtop);
writeln(poz,' Adet pozitif sayi girdiniz bunlarin toplami = ',poztop);
readln;
end.

6.3 Repeat-Until

Bir program bloğunun belli bir şart sağlanıncaya kadar üst üste çalıştırılmasını sağlayan REPEAT
deyiminin genel formu aşağıdaki şekildedir.

Repeat

Program Satırlar

Until (Boolean şartı)

Burada repeat, tekrar etme anlamında olup, tekrar etmesine UNTIL deyimindeki şart (boolean
ifadesi) sağlanıncaya kadar devam eder. Bu deyim program satırları bölümüne herhangi bir şey
yazılmaksızın kullanılabilir.

Bu döngünün en büyük avantajı belirli bir sayı ile sınırlandırılmamış olmasıdır. Boolean
ifadesindeki şart sağlanıncaya kadar işlemlere devam edilmektedir.

Dikkat edilirse şart cümlesinin aldığı değer ne olursa olsun program bloğu bir kez
çalışmaktadır.

Örnek : Đsminizi dışardan okunan bir sayı kadar yazdıran programı yazınız.
Var
x,i:integer;

begin
write('Sayi girin');
readln(x);

Algoritma ve Programlamaya Giriş 48 Öğr. Gör. Mustafa AKSU


i:=0;
repeat
i:=i+1;
writeln('M.AKSU');
until i=x;
readln;
end.

Örnek : Dışardan girilen bir ismi yine dışardan girilen bir sayı kadar yazan programı yazınız.
Var
x,i:integer;
s:string;
begin
write('isim Girin');
readln(s);
write('Sayi girin');
readln(x);
i:=0;
repeat
i:=i+1;
writeln(s);
until i=x;
readln;
end.

Örnek : 0-100 aralığındaki tek sayıları toplayan program.


Var
ttop,i:integer;
begin
i:=1;
ttop:=0;
repeat
ttop:=ttop+i;
i:=i+2;
until i>=100;
writeln(ttop);
readln;
end.

Algoritma ve Programlamaya Giriş 49 Öğr. Gör. Mustafa AKSU


Örnek : Dışardan okunan 10 tane rastgele sayıyı toplayıp bunların ortalamasını
hesaplayarak sonuçları ekrana yazan programı yazınız.

Var
x,i:integer;
top:longint;
ort:real;
begin
top:=0;
i:=0;
repeat
i:=i+1;
write(i,'. Sayiyi girin');
readln(x);
top:=top+x
until i=10;
ort:=top/i;
writeln(i,' adet sayinin toplami',top);
writeln(i,' adet sayinin ortalamasi',ort:5:2);
readln;
end.

6.4 While-Do

Bir program bloğunun belli bir şart sağlandığı sürece üst üste icrasını sağlayan WHILE
deyiminin genel yazılış şekli aşağıdadır.

While <şart cümlesi> Do

BLOK {Yapılacak işlemler}

Do kelimesini takip eden blok WHILE deyimi tarafından döngüye sokulacak komut cümlelerini
kapsar. Komut cümlesi sayısı birden fazla ise, bu bloğun BEGIN...END deyimleri arasına
alınması zorunludur.

WHILE ile REPEAT arasındaki fark; Repeat döngüsü şart cümlesi yanlış olduğu sürece, While
döngüsü ise şart cümlesi doğru olduğu sürece devam etmesidir.

REPEAT döngüsünde şart sonda kontrol edildiği için doğruda olsa yanlışta olsa en az bir defa
işlem yapılır. WHILE da ise şart döngüye girmeden kontrol edildiği için yanlışsa hiç işlem
yapılmaz.

Örnek : Đsminizi dışardan okunan bir sayı kadar yazdıran programı yazınız.
Var
x,i:integer;

begin
write('Sayi girin');
readln(x);

Algoritma ve Programlamaya Giriş 50 Öğr. Gör. Mustafa AKSU


i:=0;
while i<10 do
begin
i:=i+1;
writeln('isminiz');
end;
readln;
end.

Örnek : Dışardan girilen bir ismi yine dışardan girilen bir sayı kadar yazan programı yazınız.
Var
x,i:integer;
s:string;
begin
write('isim Girin');
readln(s);
write('Sayi girin');
readln(x);
i:=0;
while i<x do
begin
i:=i+1;
writeln(s);
end;
readln;
end.

Örnek : 0-100 aralığındaki çift sayıları toplayan program.


Var
ctop,i:integer;
begin
i:=0;
ctop:=0;
while i<=100 do
begin
ctop:=ctop+i;
i:=i+2;
end;
writeln(ctop);
readln;
end.

Algoritma ve Programlamaya Giriş 51 Öğr. Gör. Mustafa AKSU


Örnek : Dışardan okunan 10 tane rastgele sayıyı toplayıp bunların ortalamasını
hesaplayarak sonuçları ekrana yazan programı yazınız.
Var
x,i:integer;
top:longint;
ort:real;
begin
top:=0;
i:=0;
while i<=10 do
begin
i:=i+1;
write(i,'. Sayiyi girin');
readln(x);
top:=top+x
end;
ort:=top/i;
writeln(i,' adet sayinin toplami',top);
writeln(i,' adet sayinin ortalamasi',ort:5:2);
readln;
end.

6.5. Blok ve Döngülerin Kırılması

Döngülerin çalışması sırasında belirli koşulların sağlanması durumunda döngünün sona ermesini
isteyebiliriz. Bunun için BREAK, CONTINUE, EXIT, HALT Pascal deyimlerinden yararlanmaktayız.

Break

Turbo Pascal 7.0 programlama dilinde bir döngüyü kırarak sona erdirmek amacıyla kullanılır.
Program içinde BREAK deyimiyle karşılaşıldığında içinde bulunduğu döngüden sonraki program
satırının işler hale getirir. BREAK komutu FOR-DO, REPEAT-UNTIL ve WHILE-DO döngülerinin
içinde kullanılabilir.

Konunun daha iyi anlaşılabilmesi için aşağıdaki örneği inceleyiniz. Örnek Programda i ve j gibi iki
sayının çarpımı yapılmaktadır. i=j olduğu durumda içteki döngü BREAK deyimi ile kırılmakta ve
i 'nin değeri bir üst değere arttırılarak programın çalışmasına devam edilmektedir.

Continue

Fortran programlama dilinde olduğu gibi tekrarlama çevrimini yeniden başlatır. Programcı,
bilgi girişlerinde kullanıcının sayısal olmayan bir giriş yapacağını varsayarak önlem almak
amacıyla tekrarlama işlemlerini yeniden başlatmak için CONTINUE komutu kullanılır. Bu
deyim PASCAL 7.0 ' da geçerlidir.

Algoritma ve Programlamaya Giriş 52 Öğr. Gör. Mustafa AKSU


Exit

Program işlem bloklarında tanımlanan herhangi bir koşulun gerçekleşmesi halinde program
bloğunun akışını durdurur.

Halt

Programın kararlaştırılan bir yerinde durdurulmasını sağlar. ENTER tuşuna basıldıktan sonra
varsa HALT komutundan sonra tanımlanan program satırları çalıştırılır.

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

Konu Sonu Çalışma Soruları

Soru 1: Sadece toplama işlemi kullanarak girilen iki sayıyı çarpan programı yazınız.
Soru 2: Dışardan rast gele 10 tane sayı okuyup bunlardan kaçının tek kaçının çift olduğunu
ve tekleri kendi çiftleri de kendi arasında toplayıp sonuçları ekrana yazan programı yazınız.
Soru 3: Bir dik üçgenin iki dik kenarı dışardan giriliyor. Bu girilen değerlere göre üçgenin
çevresini ve alanını bulan programı yazınız.

Algoritma ve Programlamaya Giriş 53 Öğr. Gör. Mustafa AKSU


7. Pascalda bazı standart Prosedür ve Fonksiyonlar
Pascalın kendi üzerinde tanımlanmış hazır prosedür ve fonksiyonları vardır. Bunların bazıları sayısal
bazıları da stringler üzerinde işlem yapmaktadır.

Bunların arasında Concat, Upcase, Length; abs, sqr, sqrt, round, random gibi birçok standart function
veya procedure bulunmaktadır.
Length

Length fonksiyonu bir karakter dizisinin uzunluğunu hesaplamak amacıyla kullanılır. Hesaplama
sırasında karakter dizisi arasında boşluklar var ise bunları da bir karakter olarak kabul edecektir.

Örnek:
var
s:string[40];
begin
s:='Bilgisayar Teknolojisi ve Programlama';
WriteLn('Uzunluk = ', Length(s));
end.

Programın Çıktısı: Uzunluk = 37 şeklinde olacaktır.


Concat

Bilgilerin birbirlerine eklenmelerini sağlayan, alfa sayısal fonksiyondur. Ekleme işlemleri CONCAT fonksiyonu
ile veya alfa sayısal bilgiler arasına + işareti konarak sağlanır. Concat fonksiyonu ile istenilen sayıda string
birbiri ardına eklenebilir. CONCAT fonksiyonunun kullanımı aşağıdaki örnek programda verilmiştir.

Örnek:

var
x1,x2,x3,x4:String[20];

x5,x6:String[50];

begin
x1:='Bahkesir'; x2:='Mühendisliği';
x3:='Universitesi ';x4:='Endüstri';
x5:=Concat(x1,x3,x4,x2);
Writeln('4 sözcüğün CONCAT ile birleştirilmesi');
Writeln(x5);
x5:=x1+x3+x4+x2;
Writeln('4 sözcüğün + ile birleştirilmesi');
Writeln(X5);
end.

Algoritma ve Programlamaya Giriş 54 Öğr. Gör. Mustafa AKSU


Örnek* : 10’luk tabandaki bir sayıyı diğer tabanlara dönüştüren program.
var
x,i,taban:integer;
gecici,digertaban:string;
begin
write('Onluk tabanda Sayı Griniz');
readln(x);
write('Tabanı Giriniz');
readln(taban);
digertaban:='';
while x>taban do
begin
Str(x mod taban,gecici);
digertaban:=digertaban+gecici;
x:=x div taban;
end;
STR(x,gecici);
digertaban:=digertaban+gecici;
for i:=length(digertaban) downto 1 do
write(digertaban[i]);
readln(x);
end.
* Biraz zor bir örnektir. Anlaşılmıyorsa üzerinde çok durulmamalı.
Upcase
Pascal 'da okunan veya karşılaştırılması yapılan iki karakter dizisinde yazılan harflerin büyük veya küçük oluşu
önemlidir. Upcase fonksiyonu küçük harfleri büyük harfe çevirir. Parametre olarak verilen karakterlerin
alfabetik olmaması durumunda herhangi bir işlem yapılmaz.

Ö rnek:
var
s : string;
i : Integer;
begin
Write('Bir Karakter Dizisi Giriniz:');
ReadLn(s);
for i := 1 to Length(s) do
s[i] := UpCase(s[i]);
WriteLn('KARAKTER DĐZĐSĐ BUYUK HARFE DÖNÜŞTÜ ',s);
Readln;
end.

Aşağıda ise bazı sayısal fonksiyonlar anlatılmıştır.

Algoritma ve Programlamaya Giriş 55 Öğr. Gör. Mustafa AKSU


Abs
Herhangi bir sayısal sabit veya değişkenin mutlak (işaretsiz) değerini verir.

Örnek:
var
r: Real;
i: Integer;
begin
r := Abs(-4.3);
i := Abs(-157);
Writeln(r:4:l,i:8);
end.

Sqr
Verilen bir parametrenin karesini verir. Genel kullanım şekli;

Kare:=sqr(sayi);
Sqrt
Verilen bir parametrenin karekökünü verir. Genel kullanım şekli;

Karekok:=sqrt(sayi);

Örnek:
var
say: real;
begin
Write('Karesi alınacak sayıyı giriniz =');
Readln(say);
Writeln(say:10:2,' in Karesi ', Sqr(say):10:2);
Writeln(say:10:2,' nın karekökü',Sqrt(say):10:2);
end.

Round
Gerçel sayıların kurala uygun bir şekilde yuvarlatır ve yuvarlatılmış tamsayı olarak verir. Elde edilen yuvarlatılmış
sayı yine real tipte saklanır.

Örnek:
begin
Writeln(‘1.499’,’ ’, Round(1.499),' a yuvarlatıldı');
Writeln(‘1.5', ‘ ‘,Round(1.5),' a yuvarlatıldı');
Writeln(‘1.499’,’ ’,Round(-1.499),' a yuvarlatıldı');
Writeln(‘-1.5’,' ',Round(-1.5),' a yuvarlatıldı');
end.

Algoritma ve Programlamaya Giriş 56 Öğr. Gör. Mustafa AKSU


Random
Rastgele bir sayı üretir. Üretilen rastgele sayı 0 ile random ile belirtilen sayı aralığında olmaktadır.

Örnek:

Var
x:integer;
begin
Randomize;
x:= Random(99);
Writeln (‘Rastgele üretilen sayi =’,x);
end.

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

Konu Sonu Çalışma Soruları

Soru 1 : Bilgisayarda bir tahmin oyunu yazılacaktır. Oyun şöyledir bilgisayar rastgele bir
sayı üretecek kullanıcı bu üretilen sayıyı bilmeye çalışacak. Kullanıcı kendi tahminlerini girdikçe
bilgisayar kullanıcıyı ‘küçük sayı girdiniz’ , ‘büyük sayı girdiniz’, ‘Bildiniz’ şeklinde uyaracak.
Sonuçta kullanıcı sayıyı kaç tahminde bilmişse ekrana yazılacak.

Soru 2 : Dışarıdan girilen bir metni tersten büyüterek yazdıran programı yazınız.

Algoritma ve Programlamaya Giriş 57 Öğr. Gör. Mustafa AKSU


8. DĐZĐLER
Bir dizi, aynı tipteki elemanların yan yana sıralanışı ile elde edilen bir bilgi kümesidir.

Matematikte kullanılan doğal sayılar (1,2,3,..), reel sayılar aslında birer dizidir. Ayrıca yılın

ayları (Ocak, Şubat, Mart, …) haftanın günleri de birer dizidir.

şeklinde tanımlanan bir X vektörü tek boyutlu bir dizi,

şeklinde tanımlanan bir A matrisi iki boyutlu bir dizidir.

Pascalda Dizi Kullanımı

Hangi programlama dilini kullanıyor olursanız olun değişken tanımlamanın mantığı aynıdır.
Saklanacak bilginin tipine göre bir tip seçilir buna bir isim verilir ve hafızada bu değişken için
bellek ayrılır. Her değişken için durum aynıdır. Pascalda bu işlemi Var bloğunda yapıyoruz. Peki
aynı özelliklere sahip birden fazla değişkene ihtiyaç duyarsak ne olacak. Mesela bir öğretmen
düşünün. Değişik sayılarda öğrencisi olan sınıflara girsin ve bu öğrencilerin notlarını
bilgisayarda tutmaya çalışsın. Eğer dizi değişkenleri kullanmayı bilmiyorsa en kalabalık
sınıfındaki öğrenci sayısı kadar değişken tanımlayacak sonra da her öğrencinin notunu kendi
değişkenine ayrı ayrı atamak zorunda kalacaktır. Oysa bunu halletmenin daha kolay bir yolu
var. Dizileri kullanmak. Dizilerin en önemli özelliği aynı tipteki ve birbiri ile alakalı verileri toplu
olarak tanımlamaya yaramasıdır. Bu durumda örneğimizdeki öğretmen en kalabalık sınıfındaki
öğrenci sayısı kadar elemanı olan bir tek dizi değişkeni tanımlar ve bilgileri bir döngü içerisinde
indis kullanarak dizinin uygun yerine yerleştirir. Bu iki durumu bir tablo içinde gösterelim.

Algoritma ve Programlamaya Giriş 58 Öğr. Gör. Mustafa AKSU


Dizi kullanmayan öğretmen
Var
OgrenciNotu1 := integer;
OgrenciNotu2 := integer;
Dizi kullanan öğretmen
OgrenciNotu3 := integer;
Var
...
OgrenciNotu : array[1..30] of integer;
...
i: integer;
OgrenciNotu30 := integer;
Begin
Begin
for i := 1 to 30 do
Write(‘1.Ogrencinin notu = ‘);
begin
Readln(OgrenciNotu1);
write(i,'.Ogrencinin notu = ');
Write(‘2.Ogrencinin notu = ‘);
readln(OgrenciNotu[i]);
Readln(OgrenciNotu2);
end;
...
End.
...
write(’30.Ogrencinin notu = ‘);
readln(OgrenciNotu30);
end.

Artık dizi kullanmanın avantajlarını biliyoruz. Bize aynı türden ve birbiri ile ilişkili
bilgilere kolay erişmemizi sağlıyor. Đsterseniz artık bir dizi tanımının nasıl yapıldığına
bakabiliriz. Dizileri VAR bloğunda tanımlayabileceğimiz gibi, Type bloğunda da
tanımlayabiliriz. Eğer TYPE bloğunu kullanırsak tanımlamış olduğumuz yeni tipi direkt
değişken tipi olarak kullanabiliriz.

değişken_ismi : array [boyut_büyüklüğü] of dizi_tipi

Boyut büyüklüğü herhangi bir standart veri tipinde olabilir. Eğer çok boyutlu bir dizi ise
bunlar birbirinden virgüllerle ayrılır. Dizi tipinde ise istediğimiz herhangi bir tipi
kullanabiliriz. Yani hem standart tipleri hem TYPE bloğunda tanımladığımız kendi tiplerimizi
kullanabiliriz. Dizinin elemanlarına köşeli parantez içerisinde verilen indis numarası ile
erişiriz.

Örnek tanımlamalar :

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

Eğer dizilerimiz çok boyutlu olacaksa

Matris : array[0..9, 0..9] of real; {real tipinde 2 boyutlu dizi}


MyStrArr : array[1..10] of Str20; {Yukarıda tanımladığım Str20 tipinde 10 elemanlı dizi}
KupData : array[1..20,1..20,1..20] of Word {Word tipinde 3 boyutlu dizi}

Bir çok bilim dalında çeşitli niceliklerin matematiksel gösterimi için yaygın olarak kullanılan
vektör ve matrislerle ilgili bir program yapacağımızı düşünelim. Her Xi (i=1,2,...n) ve
Aij(i=1,2,..n, j=1,2,..n) elemanı için basit tipte bir değişken kullanacak olursak
karşılaşacağımız güçlüğü görürüz. Örneğin 10 bileşenli bir vektör için 10 basit tip değişken
kullanılması gerekirken, 10x10 boyutlarındaki matris için 100 basit tip değişken kullanılması
gerekmektedir. Bizim için gerekli olan, aynı tipte elemanlardan oluşan bir veri kümesini tek bir
değişken ismi kullanarak, küme içindeki yeri ile erişilmesini sağlayacak veri yapısıdır.

Diziler, kullanım amacına göre tek veya çok boyutlu olabilir. Elemanlandırılmış dizi

Algoritma ve Programlamaya Giriş 59 Öğr. Gör. Mustafa AKSU


değişkenlerinin boyut durumu ARRAY ifadesiyle köşeli parantez içinde yapılan tanımlamalarla
belirtilir.

Dizi karakter tipi "OF tip tanımı" ifadesi ile mutlaka verilmelidir. PASCAL programlama dilinde
diziler, TYPE, VAR veya CONST tanım bloklarından birinde tanıtılır. Đşleme alınmaları işlemlerin
çalışma durumlarına göre bir döngü ile gerçekleştirilir. Tüm elemanlar ilk elemandan başlayarak
işleme alınacaksa FOR döngüsü, herhangi bir şarta bağlı olarak tekrar edilecekse WHILE veya
REPEAT döngüleri ile kullanılır.

7.1. Dizilerin Tanıtılması

Bir dizinin tanımı değişik şekillerde yapılabilmektedir. Bunlar aşağıda kısaca özetlenmiştir.

7.1.1. Dizilerin Type Bloğunda Tanıtılması

Dizilerin type bloğunda tanıtılması işleminde örneğin;

Tek boyutlu ve 30 elemanlı Endüstri Mühendisliği 1. Sınıf öğrencilerinin numaralarının programa


tanıtımı:

TYPE

Numara=ARRAY [1..30] of string[10];

VAR

ogr:NUMARA;

şeklinde yapılabilir.

Örneğe dikkat edilirse NUMARA adı verilen bir dizi TYPE tanım bloğunda tanıtılmış VAR tanım
bloğunda ise bu dizinin OGR adı altında değişken tipte olduğu belirtilmiştir.

Aynı şekilde tek boyutlu ve 30 elemanlı Endüstri Mühendisliği 1. Sınıf öğrencilerinin isimlerin
programa tanıtımı ise:

TYPE

isimler=ARRAY [1..30] of String[25];

VAR

Ogrisim:Isimler;

şeklindedir.

7.1.2 Dizilerin VAR Bloğunda Tanımlanması

Bir dizi diğer değişkenlerde olduğu gibi Var tanım bloğunda da tanıtılabilir. Bunun için dizinin
boyutu belirtildikten sonra diziyi oluşturan elemanların hangi tipte olduğu belirtilmelidir.
Aşağıdaki ifadeleri inceleyiniz.

VAR
X1:ARRAY [1..10] of Real;
k2:ARRAY [1..35] of Đnteger;

7.1.3 Dizilerin CONST (Sabit Bilgiler) Bloğunda Tanımlanması

Algoritma ve Programlamaya Giriş 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
programı inceleyiniz.
Örnek:
Program yeni_örnek;
Const
Aylar:Array[1..12] of string[7]= ('Ocak',’Şubat’,’Mart',’Nisan’, ‘Mayıs','Haziran',
'Temmuz', 'Ağustos','Eylül’,'Ekim',’Kasım', 'Aralık');
var
k: integer ;
begin
Write ('kaçıncı ay:');
Readln(k);
Writeln('Aranan Ay adı :',Aylar[k]);
end.

7.2 Tek Boyutlu Diziler

Tek boyutlu diziler aşağıda görülen genel formda ifade edilebilirler.

Değişken = ARRAY [Başlangıç değeri..Bitiş Değeri] OF tip tanımı;

Örnek: Var

Dizi1: array [1..20] of string[25] ;

Dizi2: array [1..20] of integer;

Buradaki ARRAY ve OF sözcükleri Pascal'ın anahtar sözcükleridir. Başlangıç değeri ve Bitiş


Değeri ise sayılabilir özellikte değerlerdir. Tip tanımı ise hangi tip verileri içerdiğini
belirtmektedir. Diziler değişik şekillerde tanımlanabilir. Bunlar ileride açıklanmıştır.

Örnek: Dışarıdan okunan 10 tane sayıyı bir dizide saklayarak bunların toplamını ve ortalamasını
bulan programı yazınız.

var
sayi:array[1..10]of integer;
i,top:integer;
ort:real;
begin
top:=0;
for i:=1 to 10 do
begin
write(i,'. Sayıyı giriniz'); readln(sayi[i]);
top:=top+sayi[i];
end;
ort:=top/10;
writeln('Sayıların Toplami :', top);

Algoritma ve Programlamaya Giriş 61 Öğr. Gör. Mustafa AKSU


writeln('Sayıların Ortalamasi :', ort:4:2);
readln;
end.

Örnek: Aşağıda verilen program tek boyutlu bir dizinin elamanlarını sondan başa doğru tersine
çevirmektedir.

program ters_cevirme;
var
dizi,tersdizi:array[1..10] of integer;
i: integer ;
begin
for i:=1 to 10 do
begin
write('Dizinin ',i,'. elemanını giriniz = ');
readln(dizi[i]);
end;
for i:=10 downto 1 do
tersdizi[10-i+1]:=dizi[i];
for i:=l to 10 do
writeln(tersdizi[i]);
end.

Örnek: 10 tane öğrenciye ait ad,soyad,numara, vize ve final notlarını dışarıdan okuyup
bu öğrencilerin ortalamalarını ort:=vize*0.4+final*0.6 formülü ile hesaplayıp eğer
öğrencilerin ortalaması 60 ‘dan büyük veya eşitse geçti değilse kaldı yazan programı
yazınız.

var
Isim,no,soyad:Array[1..10] Of string [25];
vize,final:array[1..10] of byte;
i:integer;
ort:real;
sonuc:string [10];
begin
for i:=1 to 10 do
begin
writeln('isim giriniz');readln(Isim[i]);
writeln('soyadı giriniz');readln(soyad[i]);
writeln('noyu giriniz'); readln(no[i]);
writeln('finali giriniz');readln(final[i]);
writeln('1.vizeyi giriniz');readln(vize[i]);

Algoritma ve Programlamaya Giriş 62 Öğr. Gör. Mustafa AKSU


end;
writeln(' isim Soyad No Vize Final Ortalam Durum');
writeln('====================================');
for I:= 1 TO 10 DO
begin
write(isim[i],' ',soyad[i],' ',no[i],' ', vize[i],' ',final[i]);
ort:=(vize[i]*0.4)+(final[i]*0.6);
If ort>=60 then
sonuc:='geçti'
else
sonuc:='kaldı';
writeln(' ',ort:4:2, ' ',sonuc);
end;
readln;
end.

7.3 Çok Boyutlu Diziler

Đndisli değişkenler iki boyutlu veya daha fazla olduğunda boyut durumu, köşeli parantez
içinde eleman tanımları arasında virgül verilerek belirtilir.

Matematikte kullanılan matrisler iki boyutlu dizilere en güzel örnektir.

Var

Dizi değişkeni : array [1..n,1..n,……,1..n] of tip adı

Örneğin;Đki boyutlu ve 32 elemanlı dizi adı verilen indisli değişkenin programa tanıtımı;

Var

dizi:ARRAY[ 1..4,1..8] of Real;

şeklinde yapılabilmektedir.

Aynı şekilde; üç boyutlu ve 64 elemanlı dizi1 adı verilen indisli değişkenin programa
tanıtımı;

Var

dizi1:ARRAY[1..4,1..8,1..2] OF Real;

şeklinde yapılabilmektedir.

B isimli iki boyutlu bu dizinin bellekteki yerleşme durumu aşağıdaki gibi olacaktır.

1 2 3 4 5 6 7 8
1 B(1,1) B(1,2) B(1,3) B(1,4) B(1,5) B(1,6) B(1,7) B(1,8)
2 B(2,1) B(2,2) B(2,3) B(2,4) B(2,7) B(2,6) B(2,7) B(2,8)
3 B(3,1) B(3,2) B(3,3) B(3,4) B(3,7) B(3,6) B(3,7) B(3,8)
4 B(4,1) B(4,2) B(4,3) B(4,3) B(4,7) B(4,6) B(4,7) B(4,8)

Algoritma ve Programlamaya Giriş 63 Öğr. Gör. Mustafa AKSU


Örnek: Çarpım tablosu programını yazınız.

Var
i,j: integer;
dizi: array[1..10,1..10] of integer;
begin
for i:=1to10 do
begin
for j:=1 to 10 do
begin
dizi[i,j]:=i*j;
Write(Dizi[i,j]:4);
End;
Writeln;
End;
end.

Örnek: 3*3’lük bir matrisi tanımlayıp değerlerini dışarıdan okutup bu matrisi ekrana
matris görünümünde yazınız.

var
matris:array[1..3,1..3] of integer;
i,j:integer;
begin
for i:=1 to 3 do
for j:=1 to 3 do
begin
write(i,' .satir ',j,' .sutun elemani :');
readln(matris[i,j]);
end;
for i:=1 to 3 do
begin
for j:=1 to 3 do
begin
write(mat[i,j],' ' );
end;
writeln;
end;
readln;
end.

Algoritma ve Programlamaya Giriş 64 Öğr. Gör. Mustafa AKSU


Örnek: 3*3’lük iki matrisi değerlerini dışarıdan okuyup bu matrisleri toplayarak
ekrana matris görünümünde yazan programı yazınız.

var
mata,matb,matc:array[1..3,1..3] of integer;
i,j:integer;
begin
for i:=1 to 3 do
for j:=1 to 3 do
begin
begin
write(i,' .satir ',j,' .sutun elemani :');
readln(mata[i,j]);
end;
begin
write(i,' .satir ',j,' .sutun elemani :');
readln(matb[i,j]);
end;
end;
for i:=1 to 3 do
for j:=1 to 3 do
matc[i,j]:=mata[i,j]+ matb[i,j];
for i:=1 to 3 do
begin
for j:=1 to 3 do
begin
write(matc[i,j],' ' );
end;
writeln;
end;
readln;
end.

Soru: 4*4’lük bir matrisin asıl köşegeni üzerindeki elemanlarını sıfır ( 0 ) yapan
programı yazınız.

Cevap:
var
mat:array[1..4,1..4] of integer;
i,j:integer;

Algoritma ve Programlamaya Giriş 65 Öğr. Gör. Mustafa AKSU


begin
for i:=1 to 4 do
for j:=1 to 4 do
begin
write(i,' .satir ',j,' .sutun elemani :');
readln(mat[i,j]);
if ( i=j ) then
mat[i,j]:=0;
end;
for i:=1 to 4 do
begin
for j:=1 to 4 do
begin
write(mat[i,j],' ');
end;
writeln;
end;
readln;
end.

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

Konu Sonu Çalışma Soruları

Soru 1 : Dışarıdan 3*3’lük iki matris okuyup bunların farkını (çıkarma) bularak sonucu
matris görünümünde ekrana yazan programı yazınız.

Soru 2 : Dışardan okunan 4*4 ‘lük bir matrisin negatif elemanları varsa bu elemanları
pozitif yapan matrisi yazınız.

Algoritma ve Programlamaya Giriş 66 Öğr. Gör. Mustafa AKSU

You might also like