PROGRAMLAMA TEMELLERİ-DERS NOTLARI ALGORİTMA VE

Transkript

PROGRAMLAMA TEMELLERİ-DERS NOTLARI ALGORİTMA VE
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
GİRİŞ
Kabul etmeliyiz ki; bilgisayarların günlük yaşamımızda girmediği alan kalmadı. İletişim, ticaret,
bankacılık, tıp, elektrik, elektronik gibi akılımıza gelen bir çok alanda önemini ortaya koymuştur.
Dolayısıyla, bilgisayarlar çok çeşitli işlemleri veya problemleri çözme konusunda ,milisaniyelerle
ifade edilebilen bir süre içinde sonuca ulaşabilmektedirler.
Bilgisayarların, işlem yapabilme yada problem çözme becerileri,genel anlamda, yazılım (software)
diye adlandırdığımız, ifadeler aracılığı ile kazandırılmaktadır. İfadeler topluluğunu program diye
isimlendirebiliriz. Programlar ise, bilgisayar dili dediğimiz diller, makine ile insanoğlu arasındaki
iletişimini sağlayan ve ne yapılması veya yapılmaması gerektiğini anlatan yoldur.
Bilgisayar dilleri, alçak seviyeli ve yüksek seviyeli diller olmak üzere, iki başlık altında
toplanmaktadır. Alçak seviyeli diller; daha çok makine dili dediğimiz diller olup bir kaç karakterli, iki
tabanlı veya 16(hexadecimal) tabanlı sayı sistemine göre ifade edilen kodlardan oluşmaktadır.
Birleştirici dili (Assambler), makine dili (machine language ) bunlara örnek olarak verilebilir. Yüksek
seviyeli diller ise, bizler tarafından okunması daha kolay olan dilleridir ve Pascal, C, Qbasic, Cobol
gibi dilleri, yüksek seviyeli dillere örnek olarak verebiliriz. Bu dillerden birini kullanmak suretiyle
problem çözümlerini gerçekleştirebiliriz. Dolayısiyle, İlgili dil ortamında programlar
yazılabilmektedir, yada yazılmış olan programlara müdahale
edilebilmektedir. Ancak, bu
programların yazılımı, sorunların çözümlenmesi, belli bir mantık sırasını içermektedir. Bu mantığın
gelişimi, algoritma diye ifade ettiğimiz bir anlatımın ne kadar iyi kullanabildiğimize bağlıdır.
ALGORİTMAYA GİRİŞ
İnsanların günlük hayatlarında yaptığı her hareket, her olay, belli bir sıraya veya akışa göre
yürütülmektedir. Örneğin; yemek pişirmek bile, belli bir sıra gerektirmektedir. Öncelikle bu yemeğin
malzemesi alınır. Daha sonra yemek pişirilir ve sonunda servis yapılır. Başka bir örnek verecek
olursak; size 10 sayısı ile 20 sayısının toplam sonucu sorulabilir. Burada ilk yapılacak işlem iki sayıyı
alırız, bu sayıları beynimizle toplama işleminden geçirir ve daha sonra sonucu söyleriz. Dikkat
edilecek olursa, bu iki örnek arasında konu bakımından farklılıklar olsa bile, işlem sırası bakımından
hiçbir farkın olmadığını görürüz. Bu sıraları değiştirmek mümkün değildir. Bu sıranın ne olduğuna
bakacak olursak 3 ana bölümden oluştuğunu görürüz. Bunlar;
1. Giriş Bölümü
2. İşlem Bölümü
3. Sonuç Bölümü
Yukarıdaki iki farklı örneği karşılaştıracak olursak; yemek malzemesi alınması ve iki sayının toplama
işlemi için bize verilmesi giriş bölümünü ifade etmektedir. Yemeğin pişirilmesi ve diğer taraftan
sayıların beynimizle toplama işleminin gerçekleştirilmesi işlem bölümünü, yemeğin servise
sunulması, ve sayıların toplam sonucunun söylenmesi bize sonuç bölümünü gösterir. Bu sıra asla
değişmez.
Bilgisayarlarda bu sırayı takip etmek için, yararlanacağımız en iyi araç Algoritmadır. Bu nedenle,
yukarıda verilen toplama işlemi örneğini bilgisayar ortamına taşıyacak olursak;
1- Giriş bölümü: A ve B gibi iki sayının bize verilmiş olması gerekiyor. Dolayısıyla A ve B sayıları
işlem için ya yazılımın içinden yada yazılımın dışından alınmaktadır. A ve B sayıları yazılım içinden
R.ŞEN
Sayfa 1
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
alınıyorsa “atama işlemi” yapılıyor denilir. Eğer A ve B sayıları yazılımın dışından alınıyorsa, A ve B
sayıları ya “aynı veri satırından” yada “ayrı veri satırından” okutulmak şeklinde gerçekleşir.
2- İşlem bölümü: A ve B sayılarının toplama işlemi yapıldıktan sonra çıkan değerin belirlenen bir
isim altında hafızada tutulması gerekir. Bu nedenle, toplama işlem sonucunun tutulacağı yere
TOPLAM isminin verildiğini kabul edelim.
3- Sonuç bölümü için; işlem sonucunda elde edilen sonuç TOPLAM ismi ile tutulduğuna göre, bu
değeri sonuçta TOPLAM ismi ile ilan edilmelidir .
Bilgisayar ortamında gerçekleştirilen bu işlemi algoritma mantığına uygulayacak olursak;
Giriş bölümü için; A ve B sayıları klavyeden okutulur. Aşağıdaki gibi yazılabilir.
OKU A,B
İşlem bölümü için; A ile B’yi topla TOPLAM’ da sakla . Aşağıdaki gibi yazılabilir.
TOPLAM  A + B
Sonuç bölümü için; TOPLAM’ ın tuttuğu değeri ekrana veya yazıcıya Yazdırmak istersek aşağıdaki
gibi yazılabilir.
YAZ TOPLAM
Yukarıda üç bölümde gerçekleştirdiğimiz adımları aşağıdaki gibi alt alta satırlar halinde yazarsak;
OKU A , B
TOPLAM  A + B
YAZ TOPLAM
Şeklinde, üç satırlık komutlar topluluğunu düzenlemiş oluruz ki, böylelikle istenen tüm işlemleri
gerçekleştiren bir algoritmayı meydana getirmiş oluruz.
ALGORİTMA NEDİR ?
Programlama mantığına göre algoritma; bir işlemi sonuçlandırmak, bir problemi mantıksal bir sıraya
göre çözmek için, sembollerle veya kelimelerle anlatım şeklidir.
Yapılan tarifi biraz açmaya çalışırsak; günlük hayatımızda karşılaşabileceğimiz işlemler veya
problemler, yukarıda verilen örneklerde olduğu gibi;Giriş,İşlem ve Sonuç bölümleri olarak, üç ana
bölümde toplanmaktaydı. Bir işlemi yürütebilmek, bir probleme en uygun çözüm yolları üretebilmek
veya bilgisayar ortamında programcılar tarafından yazılan en iyi programlar, algoritma mantığının
alınmasına bağlı olarak gerçekleştirilmektedir. Herhangi bir programlama dilinde yazılan bir programı
belgelemek maksadıyla, programın okunabilir ve anlaşılabilir olması, doğru
algoritma yazımına
bağlıdır. Bu da yazılmış olan programların, daha sonraları devamlılığını sağlayacaktır. Daha önceleri
yazılmış olan programları güncelleştirme gereği olur ise , o zamana ait bilgilerin taze kalmadığı ve
olaylara bakış mantığı değişebileceği, hiçbir zaman unutulmamalıdır. Dolayısıyla, algoritma
düzenlenmeden yazılan programlarda, sonradan çıkabilecek sorunları çözmek, zaman aşımı nedeniyle
zorlaşacaktır.
Algoritma mantığının doğru bir biçimde gelişebilmesi, algoritma özelliklerinin kesinlikle, doğru
anlaşılmasına bağlıdır.
R.ŞEN
Sayfa 2
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
ALGORİTMANIN TEMEL ÖZELLİKLERİ
Algoritmalarda, doğru çözüme ulaşabilmek için, uyulması gereken temel özellikler vardır. Bu temel
özellikler sırasıyla ;
1. Kesinlik
2. Etkinlik
3. Sonluluk
4.Giriş/Çıkış olarak ifade edilirler.
1.Kesinlik:
Algoritmadaki anlatım satırları kesin olmalıdır. Kesin olmayan anlatım satırları algoritmada
bulunmamalıdır. Bir algoritmayı yazarken, her programcının programlama bilgisinin aynı olmadığını
göz önüne alıp, algoritmadaki cümlelerimizi, kesin ifadelerle belirtmeliyiz. Özetle kesinlik,
algoritmanın en önemli temel özelliğidir.
Örnek:
TOPLAM  A + B
SAY  SAY + 1
ORTALAMA  TOPLAM / SAY
Yukarıda verilen ilk örnekte, A ile B’ nin değeri belli ise (Verilmek zorundadır), B değeri, A değerine
eklenerek, TOPLAM’ a, A ile B’nin toplam değerleri aktarılacaktır. Ok’un gösterdiği yön, bize
işlem sonucunun tutulacağı yeri göstermektedir ve bunu atama işlemi yapıldı diye ifade ediyoruz.
İkinci örnekte; SAY değerine 1(bir) eklendiğini ve yeni değer olarak SAY’da tutulduğunu görüyoruz.
Bu gibi işlemleri çoğunlukla, tekrar işlemlerinde, işlemin kaç adet tekrarlandığını bulabilmek için,
tercih edilen bir yol olarak kullanılmaktadır. Son örnek satırında; öğrenci notları toplamını simgeleyen
TOPLAM’ ın içeriği, notların kaç tane olduğunun tutulduğu SAY’ ın içeriğine oranlanarak, elde
edilen değer ORTALAMA ismine atama işlemi yapılmak suretiyle saklanmaktadır.
2. Etkinlik:
Bir algoritma etkin olmalıdır. Bir algoritmanın etkin olabilmesi, içinde tekrar anlatımların
bulunmamasına bağlıdır. Aşağıdaki algoritmada PI ve R değerleri tanımlanmakta ve sayısal değerler
atanmaktadır. Atanan değerlere göre alan hesaplanmaktadır. Tanımlar ve hesaplama işleminin bir kez
yapıldığı bu algoritma ETKİN bir algoritma olmaktadır.
PI  3,14
R5
Alan  PI * R^2
Aşağıdaki algoritmada ise, önce PI ve R tanımlanarak değer atanmaktadır. Alan hesaplanmakta ve
daha sonra aynı işlemler bir kez daha yapılmaktadır. Benzer işlemlerin iki kez tekrarlanması nedeniyle
etkin bir algoritma olmamaktadır.
PI  3,14
R5
Alan  PI * R ** 2
PI  3,14
R7
Alan  PI * R ** 2
R.ŞEN
Sayfa 3
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
İçinde en az tekrar anlatımları bulunduran algoritmalar, en etkin algoritmalar olarak kabul edilir.
Dolayısıyla, içinde gereksiz tekrarları bulunduran yazılımlar etkin olamazlar. Bu nedenle, içinde
tekrar anlatımları barındıran, bir algoritma tasarlanıyorsa, tekrar anlatımların tamamı için önerilen yol,
en az sayıda alt algoritma diye isimlendirdiğimiz anlatımlara yer verilmelidir. Bir başka deyişle;
birbirinden farklı fakat aynı türdeki tekrar işlemlerinde, bir tek alt algoritma ile çözüm gerçekleşebilir.
Örnek:
Bir sınıfa ait öğrencilerin, sorumlu oldukları derslere ait, girdikleri sınavlardan alacakları puanların
ortalamalarını bulan bir yazılımı, bir alt algoritma aracılığı ile gerçekleştirilebilir. Dolayısiyle, her bir
öğrenci için ayrı ayrı değil de, bir tek alt algoritma düzenleyip, sonuçlandırmak mümkün olabilir.
Benzer olarak; bir işletmenin pazarlama elemanlarının, günlük satış ortalamalarının hesaplanması
istenebilir. Dikkat edilirse, yukarıdaki iki örnek, aynı türden olması nedeniyle, aynı yazılım içerisinde,
görünüşte ayrı konular olmasına karşın, yukarıda sözü edilen iki ayrı konunun çözümü, tek bir alt
algoritma yazılımında gerçekleşebilir.
Sonuç olarak söylenebilir ki , bir algoritmanın etkinliği, gereksiz tekrar işlemlerinden kaçınmaya
bağlıdır.
3. Sonluluk:
Her algoritmanın bir bitiş noktası veya algoritmanın alt algoritması var ise,bu alt algoritmaların geri
dönüş noktası olmalıdır. Bunun anlamı; bir yazılıma ait algoritmanın bittiğini kesinlikle belirtmek
gerekir. Aynı algoritma içinde, zaman zaman farklı işlemleri gerçekleştirmek üzere, farklı noktalara
geçici olarak, algoritmanın akış yönünü değiştirme gereği olabilir ki, bu yukarıda alt algoritma olarak
ifade edildi. Alt algoritmaya nereden gelinmiş ise , geldiğimiz yere, geri dönüş noktası kesinlikle
sağlanmalıdır.
Not:
Alt algoritmalara saptığımız noktalar , Ana algoritma dediğimiz algoritma üzerinden
gerçekleşmektedir. Fakat, zaman zaman alt algoritma içinden de başka bir alt algoritmaya sapılabilir.
Aşağıdaki örnekte olduğu gibi.
Örnek:
Pascal’a göre yukarıda anlatılanları şekillendirmek istersek:
Algoritmanın işletimi
Adım Sırası
ANA PROGRAM
1. Adım
Alt Algoritma BİR
Alt Algoritma İKİ
4. Adım
END ANAPROGRAM
ALT PROGRAM BİR
2. Adım
Alt Program İKİ
R.ŞEN
Sayfa 4
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
RETURN
ALT PROGRAM İKİ
3. Adım
RETURN
Yukarıda verilen yapıyı, alt programlama mantığı anlatılırken tüm detayları ile birlikte açıklanacaktır.
Çok kısa açıklamak gerekirse: Yukarıdaki yapıya göre yazılmış bir programın çalışması, programın ilk
satırından başlayarak, programın sonunu gösteren END ifadesine doğru adım adım olacaktır. Fakat,
program içinden öncelikle ALT PROGRAM BİR çağrılmak suretiyle programın yönü ALT
PROGRAM BİR’ e yönlendirilir. ALT PROGRAM BİR’in çalışması bitirilmeden, ALT PROGRAM
BİR’in içinden, ALT PROGRAM İKİ çalıştırılacak ki, programın yönü altprogram ikiye dönmüş olur.
Daha sonra, ALT PROGRAM İKİ çalıştırılıp RETURN ifadesi ile karşılaşıldığında, programın
çalışma yönü, ALTPROGRAM BİR’e yeniden geriye dönülmüş olacaktır ve sonra ALTPROGRAM
BİR’ e ait RETURN ifadesiyle karşılaşıldığında, programın yönü ALT PROGRAM BİR’in çağrıldığı
yere geri dönecektir. Son olarak, ana programda ikinci sırada yer alan ALTPROGRAM İKİ işletime
alınacaktır. Bu noktada akış yönü ana programdan ALT PROGRAM İKİ’ye dönmüş olacak ve ALT
PROGRAM İKİ ‘nin çalışması RETURN ifadesi ile son bularak, çalışma yönü tekrar ana programa
dönerek END ifadesi ile programın tamamının çalışması bitirilmiş olacaktır.
4. Giriş–Çıkış:
Algoritmanın son özelliği giriş/çıkış bilgileridir. Algoritma tasarlanırken,
bilgi transferi algoritma
içine doğru oluyorsa, giriş bilgisini ve bilgi transferi algoritma dışına doğru oluyorsa çıkış bilgisi
olmaktadır .
Bir Algoritmada, giriş bilgisi denildiğinde, kesinlikle giriş bilgisi
olacaktır diye bir istem yoktur.
Bunun anlamı; giriş bilgisi kullanıcı tarafından girilebilir veya algoritma içinde yaratılabilir yada giriş
bilgisi hiç olmayabilir. Ancak, algoritmada çıkış bilgisi denildiğinde, kesinlikle olmalıdır.
Bilginin girişi; klavye,bar kod okuyucu, mouse gibi giriş ünitesi diye kabul edilen düzenekler aracılığı
ile sağlanmaktadır.
Bilginin çıkışı ise; ekran veya yazıcılar aracılığı ile sağlanmaktadır.
Giriş ve Çıkış işlemleri için örneklersek; algoritmada bir bilginin giriş işlemi için okunabilmesi;
READ ifadesi kullanılarak, değişken diye isimlendirdiğimiz, veri isimleri aracılığı ile
gerçekleşmektedir. Bu durum VERİLER konu başlığı altında,verileri tanımlama konusu içinde
ayrıntılı bir şekilde anlatılacaktır.
Örnek:
READ Değişken(ler)
;Değişken veya değişkenler ile belirtilenlere değer oku.
READ ifadesi ile birden fazla veri okutulacaksa, READ ifadesinden sonra verinin okutulacağı
değişkenler arası virgüller ile ayrılır. Bununla beraber bir tek READ ifadesi ile birden fazla veri
okutuluyorsa, bu durumu aynı veri satırından okutuluyor diye anlarız. Eğer, her bir veri için ayrı
satırlarda olma koşulu ile birer veri okutuluyorsa, bu durumu ayrı veri satırından veri okutuluyor diye
ifade ederiz.
Örnek:
READ A,B,C
;Aynı veri satırından A,B ve C’ ye değer okutuluyor.
Aşağıdaki örneklerde, ayrı veri satırından veri okutuluyor.
READ A
READ B
READ C
R.ŞEN
;Veri satırından A’ ya değer oku.
;Veri satırından B’ ye değer oku.
;Veri satırından C’ ye değer oku.
Sayfa 5
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Bir bilginin çıkış için ekrana veya yazıcıya yazdırılması; PRINT
gerçekleştirilmektedir.
ifadesi aracılığı ile
Örnek:
PRINT değişken(ler)
;Değişken veya değişkenler ile belirtilen bilgiyi yaz .
ALGORİTMANIN YAZILIŞI
Bir algoritmanın yazılabilmesi için, bazı işlemlerin önceden bilinmesine bağlıdır. Bu işlemler
sırasıyla;
1. Değer atama işlemi
2. Aritmetiksel işlemler
3. İlişkisel işlemler
4. Mantıksal işlemler
şeklinde gruplandırabiliriz.
1. Değer Atama işlemi:
Algoritmada tanımlanan bir ifadeye, değer atama işlemi  işareti ile gerçekleştirilir. Algoritmada
atama işlemi, belirlenen ifadeye değer olarak geçirilirken, iki şekilde gerçekleştirilebilir. Bu da
algoritma içinden değer alarak, yada algoritma dışından değer alarak olabilir.
Örnek:
Algoritma içinden yapılacak atama işleminde SAY diye isimlendirilmiş bir ifade tanımlandığı kabul
edilsin.
SAY  10
; Böyle bir işlemde; tanımlanan SAY isimli ifadeye 10 sayısı atandı
denilmektedir. Böylelikle, işlem sonucunda, SAY isimli değişkene 10
değeri geçirilmiş olmaktadır.
Örnek:
Eğer belirlenen bir ifadeye, algoritma dışından bir değer alınarak, atama işlemi gerçekleştirilmek
isteniyorsa, SAY ve A isimli iki ifadenin tanımlandığı kabul edilirse; öncelikle A isimli ifadeye,
aşağıdaki gibi değer okutulması gerekmektedir.
OKU A
SAYA
; A ifadesi için değer oku.
; A ifadesinin tuttuğu değeri, SAY ifadesine atanıyor. Yani, A’ nın tuttuğu değer
SAY’ ın içeriğine geçiriliyor denilir.
2. Aritmetik işlemler:
Algoritmada, aritmetik işlemlerin her birini ayrı ayrı kullanabildiğimiz gibi, verilen bir formülün icra
görmesi işleminde de kullanabiliriz. Verilen bir formülün icra işlemi içinde, aritmetik işlemi yürüten
sembollerin (bunlara operatör adı verilir.) tamamı bulunabilir. Böyle bir durumda, işlem öncelik
sırası;
R.ŞEN
Sayfa 6
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Aritmetik öncelikli işlem sırası
Anlamı
Sembol
1.
2.
3.
4.
5.
Üs alma işlemi
Çarpma işlemi
Bölme işlemi
Toplama işlemi
Çıkarma işlemi
^
*
/
+
-
Not: Aritmetik operatörlerinin tamamının bulunduğu bir formül içinde, ayrıca
parantez ile ifade edilen aritmetik işlemler de bulunuyorsa, parantez içindeki
işlemler
öncelik sırası olarak yukarıda verilen sıra aynı şekilde uygulanır ve daha sonra parantez
dışındaki işlemler yukarıda verilen sıraya göre gerçekleştirilir.
3. İlişkisel işlemler:
İki farklı ifadenin karşılaştırılarak, bir karar işlevini yürütebilmek için kullanılan işlemcilerdir
(Operatör). Bir başka deyişle, iki farklı ifadenin karşılaştırılması sonucunda yapılacak işlemin,
seçilebilme işlevinin yürütülmesini sağlayan operatörlerdir.
İlişkisel işlemcilerin aşağıda sembol ve anlamları verildiği gibidir.
Sembol
1. >
2. <
3. =
4. >=
5. <=
6. ^=
Anlamı
Büyüktür
Küçüktür
Eşittir
Büyük veya eşittir
Küçük veya eşittir
Eşit değil
Örnek:
A ve B gibi iki ayrı ifadenin varlığı kabul edilsin. Buna göre;
A>B
A<B
A=B
A >= B
A <= B
; A ifadesi B ifadesinden büyüktür.
; A ifadesi B ifadesinden küçüktür.
; A ifadesi B ifadesine eşittir.
; A ifadesi B ifadesinden büyük veya eşittir.
; A ifadesi B ifadesinden küçük veya eşittir.
Özellikle yukarıda verilen örnekleri bir algoritma içine veya bir algoritma mantığına dayalı yazılan bir
program içine yerleştirilirse, karşılaştırmalara bağlı koşullarda, yeni bir akış yönü veya yeni bir işlem
gerçekleşebilir.
4. Mantıksal işlemler:
Mantıksal işlemler; AND,OR,NOT gibi işlemcilerle belirlenen koşul veya koşullara bağlı olarak
ifadeler test edilirler. Test işlemleri, koşulların doğru yada yanlış oluşlarına göre bir sonuç
vermektedir.
AND (VE) işlemcisi: İki farklı ifade (veri veya bilgi), ayrı koşullarda karşılaştırılarak, koşulların
doğruluğu araştırılır. Karşılaştırma sonucunda, her iki ifade için, her iki koşulun doğruluğuna bağlı
olarak bir işlem yürütülür.
R.ŞEN
Sayfa 7
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Örnek:
Bir öğrenciye ait not ortalamasını tutan ORTNOT ve devamsızlığını tutan DEVAM isimli ifadenin
varlığı kabul edilsin. Öğrencinin geçebilme koşulu, 60 puana eşit ve yukarısında olma koşulu ile
birlikte, bir yarı yıla ait devamsızlığı haftada iki saatlik bir ders için, 10 saat olarak kabul ediliyorsa,
dersten geçebilme koşuluna aşağıdaki gibi bir mantık kurulabilir.
ORTNOT >=60 AND DEVAM <= 10

GEÇTİ
Geçebilme koşuluna dikkat edilirse, ORTNOT ‘ un en az 60 puan olma koşuluna bağlanırken aynı
zamanda, DEVAM ‘ ında en fazla 10 saat olma koşulu ile birlikte değerlendiriliyor olmasına dikkat
edilmelidir.
OR (VEYA) işlemcisi : İki farklı ifade (veri veya bilgi), ayrı koşullarda karşılaştırılarak, koşulların
doğruluğu araştırılır.Karşılaştırma sonucunda, her iki ifade için, her iki koşuldan birinin gerçekleşme
durumuna bağlı olarak bir işlem yürütülür.
Örnek:
AND işlemcisinde verilen örneği OR işlemcisine uygularsak; Öğrencinin kalma koşulunu
değerlendirmemiz gerekecektir.
ORTNOT < 60 OR DEVAM > 10  KALDI
Yukarıdaki örnekte kalma koşulu olarak ORTNOT ‘nun 60 puandan küçük veya derse devamın
DEVAM değişkeninın 10 saatten büyük olama koşullarından biri belirlemektedir.
NOT(DEĞİL)işlemcisi:Verilen ifadenin ters koşuluna göre test işlemi yürütülür.
Yukarıda yapılan algoritma ile ilgili bu tanımlamaların dışında, algoritmaların yazımı, kullanılan bir
programlama diline göre yazılmaktadır. Fakat, algoritma dili, konuşma dilimize çok yakın dil olarak
ifade edilir. Bununla beraber, çeşitli algoritma dillerinden bahsedilmektedir. Bizim anlatımlarımız,
SPARKS algoritma diye isimlendirilen algoritmaya göre olacaktır.
Algoritma yazımının yanı sıra, akış diyagramı (Flow Chart) olarak isimlendirdiğimiz çözüm yöntemi
ile de algoritma yazımına destek verilebilmektedir. Akış diyagramları (Flow Chart), anlatımlarımıza
alınmamakla birlikte kısaca tanımlamak gerekirse; herhangi bir dille program yazımını
gerçekleştirebilmek için, kabul edilen çeşitli sembollerle grafiksel yada şekil olarak, programın yazım
mantığının nasıl kurulacağını açıklamaktadır. Bazı programcılar, yazdıkları algoritmaların yanı sıra
akış diyagramı (Flow Chart) dediğimiz çizimlere de yer verebilmektedirler. Böyle bir diyagramın
istenen bir yapıya göre hazırlanabilmesinin temel olarak kullanılan sembollerin bilinmesine bağlıdır.
Bunlar ;
Başlama – Bitiş sembolü
Okuma – Yazma sembolü:
R.ŞEN
Sayfa 8
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
İşlem sembolü:
Karar sembolü:
Alt Program (Fonksiyon) sembolü:
Birleştirici sembolü – Sayfa içi:
Sayfa dışı:
Akış yönü sembolleri:
Aşağı yön:
Yukarı yön:
Sağ yön:
Sol yön:
VERİLER
Bilgisayar ortamında işlemlerin yürütülebilmesi veya problem çözümlerinin gerçekleşebilmesi,
bilgisayarlara ne yapması gerektiğini söyleyen diller aracılığı ile gerçekleşmektedir. Bu nedenle, neyi,
nasıl, ne şekilde işleyip, sonuçlandıracağımızı, önceden belirlenen ifadelere göre
gerçekleştirilmektedir.
VERİ NEDİR?
Üzerinde işlem yapabildiğimiz her türlü ifade, veri diye isimlendirilir.
VERİ ÇEŞİTLERİ
Veriler, sayısal ve alfa sayısal olmak üzere iki ayrı grupta değerlendirilmektedir.
Sayısal : Sayısal verileri; tam sayılar ve ondalık sayılar olmak üzere iki grupta ifade edilir. Sayısal
verileri gruplarken, sayıların negatif ve pozitif olma özellikleri de düşünülerek gruplandırılmıştır.
R.ŞEN
Sayfa 9
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Tam sayı özelliği: İçinde nokta içermeyen 0(sıfır)sayısı dahil, 9(dokuz) sayısı dahil
aradaki sayılardan oluşan tüm sayılara tam sayı denir.
Örnek: 1, +1534, - 32768, 0, -1, 1567 gibi sayılar.
Ondalık sayı özelliği: İçinde nokta içeren sayı türlerine ondalık sayı denir.
Örnek: 12.987, -6.78, +23.5, -1.5 gibi sayılar.
Alfa sayısal (Alfabetik): A – Z karakterleri dahil aradaki tüm karakterler ve 0 – 9 sayıların tamamı
alfa
sayısal (alfabetik) olarak kabul edilir.
VERİLERİ TANIMLAMA
Veri (bilgi), bilgisayar ortamında üzerinde işlem yürütülen ifadeler olarak bilinir. Veri üzerinde,
herhangi bir işlemi yürütebilmek için ,veri girişi, dış ortamdan gerçekleştirildiğinde, bilgisayarda
rasgele erişimli bellek (RAM) denilen ortamda tutulmaktadır. Burada sorulacak bir soru; acaba
bellekte veri nasıl tutulacaktır?
Klavyeden bir veri girildiğinde, doğrudan doğruya bellekte belirlenen bir alanda tutulacaktır. Bu
nedenle, veri girişi gerçekleşmeden önce veri için, beleğin belli bir yerinin o veriye ayrılması için,
ilgili yer, kullanıcı tarafından isimlendirilmelidir. Bir başka deyişle; belleğin hangi yerinde veri
tutulursa tutulsun, ilgili yerin, verinin türüne ve özelliğine bağlı olarak, kullanıcı tarafından verilecek
bir isimle bellekte bir yer belirlenip ,ayrılacaktır. Bu yer belirleme işleminden sonra veri girişi
kullanıcı tarafından gerçekleşecektir. Kısaca, belleğe bir veri girişinin yapılabilmesi için, mutlaka
verilecek bir isimle, bellekteki verinin yeri belirlenmelidir.
Bilgisayar ortamında veriler üzerinde işlem yapılabilmesi için bellekte bir yer ayrılması ve ayrılan bu
yerin de isimlendirilmesi gerektiğini ifade ettik. İsimlendirme yapılırken, algoritma veya bir program
dili içinde verinin nasıl değerlendirileceğine bağlı olarak gerçekleştirilir. Bu nedenle, genel anlamda
verileri iki grupta değerlendiriyoruz. Bunlar;
1. Sabitler
2. Değişkenler
1. Sabitler :
Bir programın çalışması sırasında, program başlangıcından, program sona erinceye kadar değeri
değişmeyen ifadelere sabit denir.
Algoritmada sabitleri sayısal ve alfa sayısal olarak ikiye ayırıyoruz.
Sayısal Sabitler:
0 – 9 dahil arasındaki sayılardan oluşan sayıların tamamı sayısal sabit olarak kabul edilir. Sayısal
sabitler iki grupta değerlendirilir. Bunlar ;
Tam Sayı Sabitleri : İçinde nokta içermeyen , pozitif ve negatif sayıların tamamına
denilir.
tam sayı sabitleri
Örnek: 127 , -128 , -32768 , +32767 , 0 , 12345 gibi sayılar.
Ondalık ( Gerçel ) Sayı sabitleri: İçinde nokta bulunan, pozitif ve negatif sayıların tamamına ondalık
yada gerçel sayı sabitleri denilir. Bu sayıları da kendi içinde iki
gruba ayrılmaktadırlar. Bunlar;
R.ŞEN
Sayfa 10
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Sabit Noktalı
Kayan Noktalı
Sabit Noktalı Ondalık ( Gerçel ) Sabit Sayılar: Sayı içindeki noktanın yeri değişmiyorsa, sabit noktalı
gerçel (ondalık) sayılar denir.
Örnek : 1.5 , - 89.67 , +0.05 , +127.87 gibi sayıları verebiliriz.
Kayan Noktalı Ondalık ( Gerçel ) Sabit Sayılar : Eğer sayı içindeki noktanın yeri değişiyorsa bu tip
sayılara kayan noktalı (gerçel) sabit sayılar denir.
Örnek : 1.5 E-23, 9.6E+15 , +1.7D-10 gibi sayıları verebiliriz.
Diğer taraftan, ondalık (gerçel) sabit sayılar ikiye ayrılırlar. Bunlar;Tek duyarlıklı ondalık (gerçel)
sabit sayılar. Çift duyarlıklı ondalık (gerçel) sabit sayılar.
Tek duyarlıklı ondalık (gerçel) sabit sayılar: Gerçel sayının, noktadan sonra en fazla 7 basamak
yürütülebilen sayı tiplerine denir.
Çift duyarlıklı ondalık (gerçel) sabit sayılar: Gerçel sayının, noktadan başlayarak 7 haneden fazla ve
17 haneye kadar gösterilen sayılara denir.
Kayan
noktalı sabitlerde E karakteri sayının tek duyarlıklı
(Single precision) olduğunu, kayan noktalı sabitlerde D
karakteri sayının çift duyarlıklı (Double precision)
olduğunu göstermektedir.
Alfasayısal (Alfabetik) sabitler:
0 – 9 sayıları ve aradaki sayılar. A–Z, a-z arasıdaki karakterler ve tüm özel karakterler alfa sayısal (
Alfabetik ) sabitler olarak isimlendirilirler. Alfabetik sabitler gösterilirken (‘ ‘ ) tek tırnak aralığında
gösterilirler. Ancak, boşlukta bir karakter olarak kabul edilir ve ‘’ olarak gösterilir.
2. Değişkenler:
Bir programın çalışması sırasında, program başlangıcından, program sona erinceye kadar değeri
değişebilen ifadelere değişken denir.
Bir Pascal programlama dilinde değişkenleri tanımlarken bilinmesi gereken kurallar vardır. Bunlar
aşağıda açıklandığı gibidir.
İsimlendirme Kuralları
- Değişkenlere verilecek isim mutlaka bir harf ile başlamalıdır. Harf karakterinden sonra sayısal
değerler verilebilir.Sayı karakterleri ve özel karakterler ile başlayan isimler geçerli isim kabul
edilmez.
Örnek: ?ad, !SAY , 2ISIM gibi tanımlar geçersizdir.
- Değişken ismine ait karakterler arasında boşluk karakteri olamaz. Pascal dilinde boşluk yerine alt
çizgi ( _ ) karakteri kullanılabilir.
R.ŞEN
Sayfa 11
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Örnek:
ORT NT
Boşluk karakteri olması nedeniyle geçersiz.
ort_nt
; boşluk yerine alt çizgi olması nedeni ile Pascal dilinde geçerli bir tanımlamadır.
-Değişken isminde türkçe karakter kullanılamaz.
-Değişkenlere verilen isim karakterleri arasında , * , ! , ? , & , ; , ( , ), gibi özel işaretler kullanılamaz.
-Programlama diline ait komutlar değişken ismi olarak kullanılamaz.
-Değişkenler iki grupta değerlendirilir. Bunlar, sayısal ve alfa sayısal değişkenler olarak ifade edilirler.
Sayısal değişkenler: 1,2,3,4,5,6,7,8,9 ve 0 sayıları dahil bu sayıları temsil eden ifadelere denir.
Sayısal değişkenleri, tam sayı ve gerçel
sayılar olarak iki grupta
değerlendiriyoruz.
Alfa sayısal (Alfabetik) değişkenler: Özel karakterler dahil tüm karakterler ve karakter dizileri temsil
eden ifadelere denir.
PASCAL programlama dili
Sabit ve değişken tanımlamalarını biraz daha açmaya çalışırsak; sabit veya değişkenin ne olduğu ile
ilgili ifadeyi mikroişlemciye bildirmekle, veri için bellekte ne kadar bir yer ayrılacağını belirtmiş
oluruz. Bellekte, ne kadar yer ayrılacağını bildirme işlemine, verileri tiplendirme işlemi denilir.
PASCAL programlama diline göre, veri tip isimlerini genel anlamda açıklamak gerekirse, sayısal veya
alfasayısal olsun, bellek alanında, verinin ne özellikte olduğunu derleyiciye bildirmektedir.Bu
bildirimi Pascal programlamada, tanımlama blokları ile yapmaktayız. Bunlar; CONST (Sabitleri
tanımlama bloğu), LABEL (Program içinde sapılacak adresi ifade eden blok), TYPE (Yeni tip
tanımlama yada karmaşık yapısal yapıları tanımlama bloğu), VAR (Değişkenleri tanımlama bloğu)
Sayısal Tipler
Pascal dilinde kullanılan sayısal tipler iki grupta değerlendirilir. Bunlar;
Tam sayı tipleri:
Tam sayı tipleri, işaretli ve işaretsiz olarak iki grupta toplanır.
İşaretsiz Tam sayı tipleri: Byte ve Word tipler olarak bilinirler.
Byte tip ile tanımlanan sayılar, bellekte 1 Byte büyüklüğünde yer kaplar ve 0
ile 255 dahil aradaki sayıları ifade eder.
Word tipi ile tanımlanan sayılar, bellekte 2 Byte büyüklüğünde yer kaplar
ve 0 ile 65535 sayıları dahil arasındaki sayıları ifade eder.
İşaretli Tam sayı tipleri: Shortint, İnteger ve Longint olarak bilinirler.
Shortint tip ile tanımlanan sayılar, 1 Byte büyüklüğünde ve –128 ile +127
arasındaki tam sayı değerlerini ifade eder.
İnteger tipi ile tanımlanan sayılar bellekte 2 Byte büyüklüğünde yer kaplar
ve –32768 ile +32767 sayıları dahil arasındaki tam sayılar ifade edilir.
Longint tipi ile tanımlanan sayılar, bellekte 4 Byte büyüklüğünde yer kaplar
ve –2147483648 ile +2147483647 sayıları dahil arasındaki tam sayıları
ifade eder.
Yukarıda işaretli ve işaretsiz tam sayılarla ilgili açıklamaları aşağıdaki gibi bir tabloda görmektesiniz.
R.ŞEN
Sayfa 12
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Aralık
-128 .. +127
-32768 .. +32767
-2147483648 .. +2147483648
0 .. 255
0 .. 65535
Tip
Shortint
Integer
Longint
Byte
Word
Uzunluk
8 bit
16 bit
32 bit
8 bit
16 bit
Yukarıdaki tabolada verilen tipler program yazılımında kullanılırken, uzunlukları düşünülerek
kullanılmalıdır. Çünki, program yazılımında kullanılacak en büyük değer 1 byte’lık değer ise,
tanımlanan aralık Longint tipi ile gerçekleşirse, bellekte fazladan yer kullanmış oluruz. Bu da,
programın hızı bakımından, programın yoğunluğuna da bağlı olarak istenmeyen bir durumdur. Bunun
için değerler tanımlanırken, veri uzunluğu gereğinden fazla olmamalıdır. Böylelikle belleği rahatlatmış
oluruz. Diğer taraftan işaretli sayıların bellekte nasıl tutuldukları ile ilgili açıklama yapmak
gerekirse;tam sayı olarak tanımlanan bir sayı en az 1 byte (8 bit) uzunluğunda olmak zorundadır. Bir
Byte uzunlukta bir sayı işaretsiz ise 0 ile 255 ve aradaki herhangi bir değeri alacak demektir. Eğer
işaretli bir sayı ise, sekiz bit (1 Byte) uzunluğundaki bir sayının ikli sayı sistemine göre
düşünüldüğünde soldaki en sonuncu bit işaret biti olarak ayrılır. Bu durumda sayı aralığı –128 ile +127
olarak karşımıza çıkar. Aynı şekilde bellekte, iki byte’lık (16bit) bir sayı tanımlamasında normal
olarak 16 bitlik bir sayının işaretsiz olma koşulu ile alabileceği değer aralığı 0 ile 65535 arasındaki
değerlerdir. 2 Byte’lık işaretli sayılarda 16 bitlik bir sayının en sonuncu biti olan 15. bit işaret bitidir.
Eğer işaret biti 1 değerini almışsa sayı negatif bir sayıdır ve kalan 15 bitlik kısım da sayının mutlak
değerini içermektedir. Aşağıdaki 2 byte uzunluğun bit gösterimi incelenirse;
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
yukarıda verilen ikilik düzendeki 16 basamaklı sayının 15. biti (16. basamağına karşılık geliyor, çünkü
bit numaraları 0'dan başlıyor) şekilde görüldüğü gibi "1" ise sayı "-7" dir. Eğer 15. bit "0" ise sayı "7"
olarak kabul ediliyor. Fakat işaretsiz sayılarda 15. bit işaret biti değil, bizzat sayının bir basamağıdır.
Bu sayı işaretsiz olarak düşünüldüğünde 32775 oluyor. (32768 + 7) Bu yüzden işlemcinin verilen bir
sayının işaretli olup olmadığını bilmesine imkan yok. Bu sebeple işlemci içerisinde işaretli sayılar için
ayrı, işaretsiz sayılar için ayrı komut setleri geliştirilmişti. Bu da hem programlamayı zorlaştırıyor hem
de maliyeti arttırıyordu. En sonunda ortaya dahice bir yöntem atıldı. Bu yönteme göre örneğin "-7" nin
bit gösterimini bulabilmek için ilk önce aşağıdaki birinci şekilde olduğu gibi "7" nin bit yapısı
çıkartılıyor, ardından ikinci şekilde olduğu gibi tüm bitlerin tersi alınıyor ve son olarak elde edilen
sayıya 1 eklenerek son şekildeki durum elde ediliyordu.
15
0
15
1
15
1
14
0
14
1
14
1
13
0
13
1
13
1
12
0
12
1
12
1
11
0
11
1
11
1
10
0
10
1
10
1
9
0
9
1
9
1
8
0
8
1
8
1
7
0
7
1
7
1
6
0
6
1
6
1
5
0
5
1
5
1
4
0
4
1
4
1
3
0
3
1
3
1
2
1
2
0
2
0
1
1
1
0
1
0
0
1
0
0
0
1
Son şekildeki durum "-7" nin gösterilişi olarak kabul edildi. Peki bu neye yaradı? Bunun "-7" nin
gösterilişi olduğunu bilmesek, eksi bir sayı olduğunu bilmesek bile toplama, çıkarma gibi işlemlere
işaretsizmiş gibi soksak da sonuçlar doğru elde ediliyor. Bunu ispat etmek için bu sayıyı 7 ile
toplayalım. Sonucun "0" olması gerektiği açıktır. (bu gösterimde de 15. bitin işaret biti olduğuna
dikkat edin)
R.ŞEN
Sayfa 13
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1
+
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Sonuç sıfır çıkmadı ve en soldaki basamakta bir "1" var gibi gözüküyor. Fakat 16 bitlik sayılarla
çalıştığımızdan bu son basamak kaydedilemez ve yok olur. Bu yüzden gerçek sonuç "0" çıkmaktadır.
Daha emin olmak için -7 ile 17'yi toplayalım ve sonucun 10 olup olmadığını kontrol edelim.
0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1
1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1
+
1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
Görüldüğü gibi 2'ler ve 8'ler basamağında 1 var. Öyleyse sonuç 8 + 2 = 10 olur.
Gelelim daha önceki sorunumuza. Integer tipindeki bir değişkenin değeri için 32768 girdiğimizde
neden -32768 oluyor? Bunun için ilk olarak 32768'in bit gösterimini yapalım.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Görüldüğü gibi sayı işaretli bir sayı olarak düşünüldüğünde negatif bir sayı. Çünkü işaret biti"1". Peki
bu hangi negatif sayının gösterimi? Bunun için bir pozitif sayıyı negatif sayıya dönüştürürken
yaptığımız işlemlerin tersini yapmalıyız. Bulacağımız sayı bize yukarıdaki sayının hangi sayının
negatifi olduğunu gösterecek. Aşağıdaki ilk şekil bu sayıdan bir çıkarıldığında aldığı hal (negatif
yaparken en son bir ekliyorduk!). Sonraki şekil ise ters alınmış hali. İlginç bir şekilde yine aynı sayıyı
elde ettik. Bu ise işaretsiz olarak okunduğunda 32768 sayısı. Demekki elimizdeki ilk sayı -32768 imiş.
Tekrar 32768'in negatif gösterimini bulma işlemini yerine getirerek bunu kontrol edebilirsiniz.
15
0
15
1
14
1
14
0
13
1
13
0
12
1
12
0
11
1
11
0
10
1
10
0
9
1
9
0
8
1
8
0
7
1
7
0
6
1
6
0
5
1
5
0
4
1
4
0
3
1
3
0
2
1
2
0
1
1
1
0
0
1
0
0
Bu yüzden pascalda Type (tip) sınıflarına dikkat etmek gerekir.
Sabit Tanımlama:
Tam sayı sabitlerin genel tanımlama formu aşağıda verilmektedir.
Genel Yazılımı:
R.ŞEN
Sayfa 14
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
CONST
Sabit_ismi = Sabit;
Aşağıdaki örnek tanımlamalarda; sayısal, alfasayısal ve karakter tanımlamalara örnekler verilmektedir.
Örnek:
CONST
Tam_sabit_ismi=670;
Değişken Tanımlama:
Tam sayı değişkenlerin genel tanımlama formu aşağıda verilmektedir.
Genel Yazılımı:
VAR
Tam_sayi_değişken_ismi : Tip_ismi;
Örnek:
VAR
Tamsayi_değişken_ismi : Integer;
Gerçel_sayı_değişkeni : Real;
Yukarıda verilen INTEGER ifadesi yerine yukarıdaki tabloda görülen diğer tanımlama tiplerinden
herhangi biri de kullanılabilir.
Gerçel sayı tipleri:
Gerçel (Kesirli) sayılar Pascal da; Real, Single, Double, Extended ve Comp tiplerdir. Aşağıdaki
tablo, bu tiplerin sayı aralıkları ile byte cinsinden uzunluklarını göstermektedir.
Tip
Real
Single
Double
Extended
Comp
Aralık
2.9E-39 .. 1.7E+38
1.5E-45 .. 3.4E+38
5.0E-324 .. 1.7E+308
3.4E-4932
..
1.1E+4932
-2^63-1 .. +2^63-1
Uzunluk
6 byte
4 byte
8 byte
10 byte
8 byte
Gerçel Sabit Tanımlama:
Gerçel sabitlerin genel tanımlama formunun genel yazılımı aşağıda verilmektedir.
Genel Yazılımı:
CONST
Gerçel_Sabit_ismi=Gerçel_sayi
Örnek:
CONST
Gerçel_sayi_sabit_ismi=67.40;
Gerçel Değişken Tanımlama:
R.ŞEN
Sayfa 15
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Gerçel değişkenlerin genel tanımlama formunun genel yazılımı aşağıda verilmektedir.
Genel Yazılımı:
VAR
Gerçel_değişken_ismi : Gerçel_sayi_tip_ismi;
Örnek:
VAR
Gerçel_değişken_ismi:Real;
Yukarıda verilen REAL ifadesi yerine yukarıdaki tabloda görülen diğer tanımlama tiplerinden
herhangi biri de kullanılabilir.
Bu tip sayıların kullanımında en çok rastlanılan hata olarak “Runtime Error 205: Floating point
owerflow”. Yani taşma hatasıdır.
Bunun yanı sıra, bilindiği gibi PC ( Personel Computer – Kişisel Bilgisayar) grubu bilgisayarların
mikroişlemcileri 80x86 mikroişlemcisi temel alınarak, sonraki mikroişlemciler ile birlikte xx86 ailesi
olarak adlandırılmışlardır. Bu çeşit bilgisayarların matematik yükünü hafifletmek için temelde 80x87
adlı ek bir matematik ailesi kullanılır. 80x87 ailesi ile pascal programlama dilinde kullanılan temel
tipler olarak da Single, Double, Extended ve Comp tanımlanmıştır. Single veri tipi kısa gerçel sayıları
ifade eder. Daha çok veri hacmi büyük fakat hassasiyet istemeyen hesaplamalarda kullanılır. Double
ise uzun gerçel sayılar içindir. 19-20 basamaklı gerçel sayılar için Extended veri tipini kullanırız.
Comp veri tipi ise çok uzun tam sayıları göstermek amacıyla kullanılır.
NOT: 80x87 veri tipi kullanabilmek için {$N+} derleyici komutu verilmelidir.
Boolean Tipler:
Pascalda mantıksal sabit ve değişkenler Boolean ile ifade edilebilirler. İki temel mantıksal değeri
vardır. True ( doğru ) ve False ( yanlış). False’ın değeri 0, True’nun değeri ise 1 ile ifade edilir ve
bellekte 1 byte uzunluğunda yer kaplarlar. Genel formu aşağıda verildiği gibidir.
Boolean tip tanımlaması TYPE tanımlama bloğunda yapılacaksa;
Genel Yazılım:
TYPE
Boolean_tip_ismi=BOOLEAN;
VAR
Boolean_değişken_ismi: Boolean_tip_ismi;
Boolean değişken tanımlaması VAR tanımlama bloğunda yapılacaksa;
Genel Yazılım:
VAR
Boolean_değişken_ismi: BOOLEAN;
Alfa sayısal (Alfabetik)Tipler
PASCAL dilinde Char ve String tip isimleri ile tanımlanırlar.
Char Tipler:
R.ŞEN
Sayfa 16
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Pascalda en yaygın olarak kullanılan veri tipi CHAR’dır. Kodu 0 ile 255 arasında değişen bir ASCII
karakterini ifade eder. Bellekte bir byte büyüklüğünde yer işgal eder. Char tipi aritmetik işlemlerde
kullanılmaz. Char tipler sabit ifade olarak yazılırken tek tırnak (‘ ‘) içinde yazılır. Yani başına ve
sonuna yukarıdan kesme işareti konulur. Kesme işaretleri arasına bir şey konulmazsa null (Boş)
karakteri atar.
Sabit Tanımlama:
Genel Yazılım:
CONST
Char_sabit_ismi=‘karakter’;
Örnek:
CONST
Sabir_karakter=‘K’,
Sabir_karakter= ‘G’
Sabir_karakter= ‘*’
Sabir_karakter= ‘2’
Sabir_karakter= ‘!’ ... gibi sabitler ifade edilebilir.
Değişken Tanımlama: Char tipler ile değişkenlerin genel tanımlama formu aşağıda verildiği gibidir.
Genel Yazılım:
VAR
Char_değişken_ismi : Tip_ismi;
Örnek:
VAR
Karakter_değişken_ismi:CHAR;
String tipler:
1 ile 255 karakter uzunluğundaki alfasayısal verilerin tanımlanmasında kullanılacak alfasayısal veri
tipleridir. String veri tipleri sabit olarak veriliyor ise tek tırnak (‘ ‘) içinde ifade edilirler ve tek tırnak
içinde verilen karakter adedi kadar bellekte yer kaplarlar. Bildirimlerdeki tırnaklar bu uzunluğa dahil
değildir. Verilen sabit ifade içinde boşluk karakteri var ise, bellekte kapladığı alan uzunluğu içindedir.
Sabit Tanımlama:
Örnek:
CONST
Alfasyisal_sabit=‘Pascal Programlama dili’; {Sabit uzunluğu 23 karakterdir.}
Alfasayisal_sabit=‘12345 sayıları’; {Sabit uzunluğu 14 karakterdir.}
Bosluk_karakteri=‘’; {Sabit uzunluğu 0 karakterdir.}
Değişken Tanımlama: String tipler ile değişkenlerin genel tanımlama formu aşağıda verildiği gibidir.
Genel Yazılım:
VAR
String_değişken_ismi: STRING[Tam sayı değeri];
Örnek:
R.ŞEN
Sayfa 17
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
VAR
Ad_soyad:STRING[30];
STRING bildirimin yanında köşeli parantez içinde verilen tam sayı değeri, stringin uzunluğunu ifade
etmektedir. Eğer sayısal bir büyüklük verilmemişse, editörün kabul ettiği geçerli uzunluk 255
karakterdir.
Yapısal Veri Tipleri:
Buraya kadar anlatılan tip isimlerini temel veya standart tip isimleri olarak kabul etmekteyiz. Bunların
dışında pascal derleyicisi tarafından tanımlı olmayan ve programcı tarafından TYPE tanım bloğunda
tanımlanabilen özel veri tipleri vardır. Bu tiplere kullanıcı tanımlı veri tipleri adı verilmektedir.
Bununla beraber, temel tip isimleri kullanılarakta özel tipte veriler yaratılabilir.Bunları
gruplandırırsak;







Basit tipler
Dizi tipler
Küme tipler
Pointer tipler
Record tipler
Dosya tipler
Nesne tipler
olarak ifade edebiliriz.
Basit Tipler:
Basit Tipler, sayılabilir (enumeration ) özellikli çeşitli ifadelerin, sonlu ve doğrusal olarak oluşturulan
kümelerin isimlendirildiği veri tipidir. Basit bir tipi tanımlarken, tipe ait değerler belli bir sırada
belirtilirler. Bu tiplerin genel tanımlama formu aşağıda verildiği gibidir.
Genel Yazılım:
TYPE
Basit_tip_ismi= (İsimler listesi);
Kümeyi oluşturan isimler arasında, birer virgül (,) kullanılarak isimler birbirlerinden ayrılırlar. Tip
tanımlanması gerçekleştirildikten sonra, Değişken tanım bloğunda değişken tanımlaması yapılırken tip
ismi olarak kullanılabilir. Aşağıdaki örnekte gösterildiği gibi.
Örnek:
TYPE
Hafta=(Pazartesi, Salı, Çarşamba, Perşembe, Cuma, Cumartesi, Pazar);
Kart=(Maça, Kupa, Karo, Sinek);
Eleman=(İşçi, Usta, Teknisyen, Şef);
Matematik_islemi=(Toplama, Çıkarma, Çarpma, Bölme);
VAR
Gunler:Hafta;
Kagit:Array[1..4] of kart;
Calisan:Eleman;
İslem: Matematik_islemi;
Yukarıda verilen örneklerde tip isminden sonra parantezler içinde verilen isimlerin ilki 0 (sıfır) sayısı
ile temsil edilirler ve ilk isimden sonra verilen isimler sırası ile 1,2,3...n sayı değerine karşılık
gelmektedirler. Aşağıdaki örnekleri inceleyelim.
R.ŞEN
Sayfa 18
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Örnek:
TYPE
Renk= (Yeşil, Kirmizi, Mavi, Beyaz, Siyah);
Yukarıdaki örnekte Yeşil 0 değerini, siyah ise 4 değerini almaktadır. Diğer taftan, basit tiplerde belli
bir aralık içinde tip tanımlaması yapılabilir. Aşağıda böyle bir örnek verilmiştir.
Örnek:
CONST
x=50; y=100; {aşağıda tanımlanan Ortalama tip ismindeki kullanılan x ve y ifadelerinin
değerleri.}
TYPE
Sayi=0..99;
{Bir sayı aralığı için tip ismi tanımlanıyor.}
Ortalama=(x-y)/2 .. (x+y)/2; {Bir ifade aralığı için tip ismi tanımlanıyor.}
Dizi tipler:
Aynı özelliğe sahip birden fazla değerin, bir ismin alt elemanları olarak tanımlandığı değişken
tipleridir. Bu tiplere aynı zamanda tablo tipler de denir. Bu tipleri tanımlarken temel tiplerden
yararlanılır.
Genel Yazılımı :
VAR
Değişken_ismi : ARRAY [Alt_sınır .. üst_sınır] OF Temel_tip_ismi;
Örnek :
VAR
Sayi_araligi : ARRAY[1..20] OF INTEGER;
Yukarıdaki tanımlamayı aşağıdaki gibi TYPE tanım bloğu kullanarakta gerçekleştirebiliriz.
Genel Yazılımı :
TYPE
Dizi_tip_ismi : ARRAY [Alt_sınır_değeri .. Üst_sınır_değeri] OF Temel_tip_ismi;
VAR
Değişken_ismi : Dizi_tip_ismi;
Örnek :
TYPE
Sayi_araligi : ARRAY[1..20] OF INTEGER;
VAR
Say : Sayi_araligi;
TYPE tanım bloğunda öncelikle dizi değişkende kullanılacak tip isminin tanımlanması gerçekleştirildi
ve daha sonra VAR tanım bloğunda da tanımlanan tip ismi ile değişkenin tipi tanımlanmış oldu.
R.ŞEN
Sayfa 19
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Küme (SET) tipler:
Birbiri ardısıra gelen aynı özellikteki birden fazla elemandan oluşan tiplerdir. Diğer bir deyişle, bir
grubu oluşturan elemanlar birbirini izleyen dizisel değerlerden oluşmaktadır. Küme (Set) tipler, bir
dizisel olmaları nedeni ile en küçük ve en büyük değerleri ve ara değerleri de (sayısal veya
alfasayısal) yapısında bulundurmaktadır. Bu nedenle, küme (Set) tipler köşeli parantez ([ ]) içinde
gösterilirken, küme elemanları ya birbiri ardısıra sıralanır ve her birinin arası virgül (,) ile ayrılırlar
yada elemanlar arasında bir aralığı ifade etmek için, yan yana iki nokta (.. ) ile gösterilmektedir. Küme
elemanları olarak değişkenler de kullanılabilir. Bir kümenin eleman sayısı maxsimum 256’ dır.
Dolayısı ile 0 ile 255 arasında değerler değişmektedir. Aşağıda genel formu görülmektedir.
Genel Yazılımı :
TYPE
Kume_tip_ismi = SET OF Temel_tip_ismi;
VAR
Değişken_ismi : Kume_tip_ismi;
Veya
VAR
Değişken_ismi : SET OF Temel_tip_ismi;
Örnek:
TYPE
Gunler = ( Pazartesi, Salı, Çarşamba, Perşembe, Cuma, Cumartesi, Pazar);
Alfabe = (‘A’ .. ‘Z’);
VAR
Haftanin_gunleri: SET OF Gunler;
Harfler : SET OF alfabe;
Renkler : SET OF (Siyah, Beyaz, Sarı, Kırmızı, Mavi, Yeşil);
Karakter : SET OF CHAR =[‘A’ .. ‘Z’, ‘a’ .. ‘z’];
Sayilar : SET OF BYTE =[1,2,3,4 .. 20,40..100];
Pointer tipler:
Değişkenlerin adreslerini tutabilmek için kullanılan tiplerdir. Pointer tipi ile tanımlanan değişkenler
yalnızca temel tiplerle tanımlı değişkenlerin adreslerini tutma işlemini yürütürler. Dolayısı ile olarak
tanımlı değişken tipler içerik olarak başka bir temel tipli değişkenin adresini içermektedir. Genel
formu aşağıda görülmektedir.
Genel Yazılımı :
VAR
Değişken_ismi : ^Temel_tip_ismi;
Veya
TYPE
Pointer_tip_ismi= ^Temel_tip_ismi;
VAR
R.ŞEN
Sayfa 20
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Değişken_ismi:Pointer_tip_ismi;
Yada
TYPE
Pointer_tip_ismi= ^tip_ismi;
Tip_ismi = Record
Alt_alan_ismi : Temel_tip_ismi;
......
End;
VAR
Değişken_ismi:Pointer_tip_ismi;
Örnek:
TYPE
Dizi = Array[1..10] of Integer;
Eleman = ^Kayit;
Kayit = Record
Ad_soyad : String[20];
Sicil_no : Longint;
End;
VAR
Birey : Eleman;
Sayi_dizi : Dizi;
Record tipler:
Bir isim altında, birden fazla sayıda ve birden fazla özellikteki bilginin (veri) oluşturduğu bir yapıdır.
Buna göre; yapı içinde yer alan her bir veri farklı tip ismi ile tanımlanabilir ve her bir veri oluşturulan
bu yapının altalanlarıdır denilir. Record yapının tanımlanması TYPE tanım bloğu içinde
gerçekleştirilir. Oluşturulan tip ismi VAR tanım bloğunda bir değişken tanımlaması için böylelikle
kullanılabilir. Aşağıda böyle bir yapının genel formu verilmiştir.
Genel Yazılımı :
TYPE
Record_tip_ismi=RECORD
Alt_alan_isim1:Tip_ismi;
Alt_alan_isim2:Tip_ismi;
Alt_alan_isim3:Tip_ismi;
....
Alt_alan_isimN:Tip_ismi;
END;
VAR
Değişken_ismi: Record_tip_ismi;
Yukarıda verilen Record_tip_ismi ile yapılan tanımlama özel tip olarak kabul edilmektedir.
RECORD ifadesi ile tanımlanan yapının record yapıda olduğu bildirilmektedir. Alt_alan ifadesi ile
çeşitli temel tiplerde verileri ifade etmektedir. Yapı içindeki alt alanaların bazıları aynı tipte iseler,
aynı tanım cümlesi içinde aralarına virgül kullanmak koşulu ile tanımlanabilirler. Alt alanlarda
kullanılan isimler ile tip isimleri arasında “:” kullanılmalıdır.
Örnek:
TYPE
R.ŞEN
Sayfa 21
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Kimlik=RECORD
Ad_Soyad:String[30];
Baba_adi:String[20];
Kimlik_No:String[20];
D_tarihi:Word;
D_yeri:String[20];
END;
VAR
Eleman: Kimlik;
Yukarıdaki örnekte, VAR tanım bloğunda tanımlanan Eleman değişken isminin tipi Kimlik tip ismi
ile tiplendirilmiş oldu. Bundan sonra, uygulama bloğunda RECORD yapının alt alanlarına Eleman
değişeken ismi ile
ulaşılabilir.
Dosya tipler:
Birden fazla sayıda ve özellikteki verilerin disk veya disket ortamında oluşturduğu veri grublarını
dosya diye ifade etmekteyiz. Dosyayı bellek ortamında temsil eden tampon (buffer) sahaya verilen
isme ise dosya değişkeni denilmektedir. Dosya değişkeninin tanımlanmasında kullanılan isim ise
dosya tiplendirmesidir. Dosya tipler verilere ulaşım yönü ile aşağıdaki gösterilen genel formlar ile
tanımlanabilirler.
Genel Yazılımı : (Sıradan erişimli Dosyalar)
VAR
Dosya_değişken_ismi:TEXT;
Veya
VAR
Dosya_değişken_ismi:TEXT[Tampon_saha_büyüklüğü];
Genel Yazılımı : (Rastgele erişimli Dosyalar)
VAR
Dosya_değişken_ismi:FILE OF Dosya_tipi;
Genel Yazılımı : (Tiplenmemiş Dosyalar)
VAR
Dosya_değişken_ismi:FILE ;
Nesne tipler: Nesneye yönelik programlamayı destekleyen tiplerdir.
ALGORİTMANIN PROGRAMLAMAYA UYGULANMASI
Anlatılan konularda, algoritmanın temel özelliklerinden bahsedildi. Algoritmanın programlama
dillerine uygulanabilmesi için, programlama dillerinin özelliklerinin bilinmesi gerekiyor. Çünkü,
herhangi bir dilde yazılmış program, algoritmanın o programlama dilindeki anlatımıdır. Takip
edeceğimiz programlama dili, yapısal dillerinden biri olan PASCAL programlama dilidir. Yapısallık,
R.ŞEN
Sayfa 22
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
yazılan programların işletimi ilk uygulama satırından, en son programı durdurma satırına doğru, ilk
adımdan bir sonraki adıma doğru çalıştırılır. Oluşan koşullara göre işlem seçimi veya programın akış
yönünün belirlenmesi, yada program içinde bazı işlemlerin bir çok kez tekrarlanması gerekebilir. İşte,
bu özellikleri içinde bulundurabilen programlama dillerini, yapısal programlama diller diye
tanımlıyoruz.
PROGRAM YAPISI
Yukarıdaki açıklamalar doğrultusunda bir algoritma yada bir programda üç tip yapı özelliği
bulunmaktadır. Bunlar; Sıralı İşlem, Seçim ve Tekrar yapıları olarak ifade edilirler.
Sıralı işlem özelliği:
Bir programın, birden fazla komuttan meydana geldiği düşünülürse,programın işletim denetimi,
programdaki ilk komut işletiminden başlayarak en son programı durdurma komutu olan END
komutunu işletinceye kadar, programda verildiği sırada çalıştırılması sağlanır.
Seçme özelliği:
Bir program içinde, bir veya birden fazla koşula bağlı olarak, bir işlem yapmak yada programın akış
yönü değiştirilmek istenebilir. Bu gibi durumları program içinde gerçekleştirmemizi sağlayan,
program komutlarından oluşan yapılar vardır. Bu yapılar arcılığı ile, belli bir koşula bağlı olarak, bir
program içinde bir takım işlemleri yapabilme olanağına sahibiz. IF – THEN – ELSE komutu örnek
olarak verilebilir.
Tekrar özelliği :
Belirlenen koşula bağlı olarak, bir işlemin veya işlemlerin tekrarlanması istenebilir. Bu özelliği
sağlayan yapılardır. Programlamada bu özelliği gerçekleştiren komutlara, döngü komutları adı
verilmektedir.
Pascal Program Yapısı
Pascal programlama dilinin yapısı, ana program ( main program ) ve program bloklarından ( program
block ) oluşmuştur. Geliştirilen uygulamada programın hacim olarak büyümesi, programcıya kodlama
ve derleme, kullanıcıya işletme ve hız, bilgisayara bellek yük olacağından, program kodunun
parçalara bölünmesi ( unit, file vb. ) zorunlu hale gelmiştir.
Bloklardan bahsedecek olursak; blokların herbiri BEGIN ve END sözcüklerinden meydana gelen
alanlardır. Pascal programında uygulamanın yürütüldüğü alanda bir blok olup BEGIN ifadesi ile
başlar ve END ifadesi ile sona erer. Asıl uygulamanın yürütüldüğü blok olması nedeni ile ana blok
olarak ifade edilir.
Program satırlarından bahsetmemiz gerekirse; satırın fiziksel uzunluğu 126 karakteri geçemez. Eğer
geçmesi gerekiyorsa uygun bir yerden kesilip sonlandırılması ve bir alt satırdan devam edilmesi
gerekmektedir. Program içinde yapacağımız işlemlerden sonra , bir alt satıra geçerken cümleyi
sonlandırmak için “
;” işareti kullanılmalıdır. Eğer bir satırdaki cümleyi “;” işareti ile
sonlandırmazsak program derlendiğinde hata mesajı kaçınılmaz olur. Dikkat edeceğimiz husus ise; if
ile başlayan cümlenin sonuna else ifadesi kullanıldığında, else ifadesinden önceki satırda “; “
kulanılmamalıdır.
Dikkat edeceğimiz bir başka nokta; sadece ana programı bitirirken END ifadesinin sonuna nokta “ . “
koymalıyız. Diğer procedure, function, if vb... bloklarının bitireci olan END ifadelerinin sonuna ise
noktalı virgül “ ; “ konmalıdır.
R.ŞEN
Sayfa 23
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Pascal programının genel yapısı aşağıda gösterildiği gibidir.
PROGRAM Program_ismi ;
TANIM BLOKLARI
{LABEL,CONST, TYPE, VAR}
{Programın başlık kısmı seçimliktir.}
{Global tanım blokları}
PROCEDURE proc_program_ismi(parametre listesi); {Procedure Tanımlama}
TANIM BLOKLARI
{LABEL,CONST, TYPE, VAR}
{Local tanımlamalar}
BEGIN
..............
END;
{Procedure sonu}
FUNCTION fonksiyon_ismi(parametre listesi); {Fonksiyon Tanımlama }
TANIM BLOKLARI
{LABEL,CONST, TYPE, VAR}
{Local tanımlamalar}
BEGIN
..............
END;
{Fonksiyon sonu}
{ Ana program başlangıcı}
BEGIN
..............
END.
{Ana program sonu}
Pascalda ayrıca bağımsız yapılar ( Unit ) geliştirmek mümkündür. Bu yapılar başka program
ve birimler tarafından erişilmesi mümkün parçalardır. Fakat, bu birimlere ulaşmak için
yapacağımız kod yazılımında, Uses bölümüne bu birimi tanıtmamız gerekmektedir. Bu
birimleri yazabildiğimiz gibi, pascal yapısında hazır olan bazı birimlerde mevcuttur. Unit’in
genel yapısından bahsedecek olursak;
UNIT
{Unit ismi};
INTERFACE
{Kullanıma açık}
IMPLEMENTATION
{Erişilemeyen}
{Birim Blokları}
şeklindedir.
Unit derlendikten sonra “.TPU” uzantılı bir dosya yaratılır. Dikkat edileceği gibi 3 ana
bölümden oluşmaktadır.
ALGORİTMANIN YAZILIŞI VE PROGRAMLAMAYA UYGULANMASI
Önceki konularda, algoritmanın yazılabilmesi için, bazı tanımlamaların bilinmesi gereği üzerinde
durulmuştu. Bunlardan biri de değer atama işlemidir. Bu nedenle programın yazılışında önceden
tanımladığımız ve değişken diye isimlendirdiğimiz ifadeler bulunmaktadır. Bu ifadelerin bellekte bir
R.ŞEN
Sayfa 24
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
değer tutabileceğini biliyoruz. Değişkenin değer tutabilmesi için, değişkene bir değerin geçirilmesi
gerekmektedir. Bu işleme, değer atama işlemi adı verilir.
Değişkenlere Değer Atama İşlemi:
Bir algoritmada değişkenlere değer atama işlemi 
işareti ile gerçekleştirdiği söylenmişti.
Programlama dillerinde ise genellikle
= (eşit) işareti ile yapılmaktadır. Fakat PASCAL
programlamada ise “:=” işareti ile atama işlemi gerçekleştirilmektedir. Değişkenlere değer atama
işlemi algoritma yada program içinden yapılabildiği gibi , algoritma yada programın dışından da
yapılabilir.
Değişkenlere, algoritma ve program içinde değer atama işlemi doğrudan değişkene atanacak değeri,
atama işaretinin sağında gösterilerek olur.
Örnek:
Algoritmada
SAY  0
UZUNLUK  300
Pascal
SAY := 0
UZUNLUK := 300
Yukarıda önce algoritmaya göre, sonra da pascal programlama diline göre yapılan atama işlemi
örneklerinde görüldüğü gibi, sırasıyla SAY ismi ile tanımlanan değişkene
0 (sıfır) değeri, ve
UZUNLUK isimli değişkene ise 300 değeri atanmaktadır.
Değişkenlere, algoritma veya program dışından değer atanacaksa, bu değerin okutulması
gerekmektedir. Bu işlem için algoritmada READ (oku) ifadesi kullanılır. Pascal’da READ ve
READLN ifadeleri kullanılır. Her türlü değerin yazdırılması işlemi ise algoritmada PRINT ifadesi ve
pascal’ da ise WRITE ve WRITELN ifadeleri ile gerçekleşmektedir. Bu komutlarla ilgili örneklere,
Giriş – Çıkış komutlarını işlerken yer verilecektir. Aşağıda algoritmada giriş-çıkış işlemlerinde
kullanılan ifadelere örnekler verilmektedir.
Örnek:
READ A,B
READ SAY
READ UZUNLUK
PRINT A,B
PRINT SAY
PRINT UZUNLUK
gibi kullanılmaktadır.
GİRİŞ ÇIKIŞ İŞLEMLERİ
Veri satırından okuma veya çıkışa değer yazma işlemlerine Algoritmada ve Pascal dilinde giriş-çıkış
komutları veya ifadeleri denilmektedir.
R.ŞEN
Sayfa 25
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Giriş-Çıkış işlemleri ve ilerleyen konulardaki işlemler yürütülürken önce algoritma ve sonra Pascal
dili karşılıkları olan örneklemelere yer verilecektir. Bununla beraber, Giriş – Çıkış ifadeleri ile ilgili
örneklerden önce, programlama dillerinde kullanılan ifadelerin genel yazılımlarına da yer verilecektir.
READ ifadesi:
Algoritma ve pascal dilinde veri satırından değer okumak için kullanılmaktadır.
Genel Yazılımı:
Algoritma
READ değişken(ler)
;Değişkene veya değişkenlere veri satırından değer/değerler oku.
Pascal
READ (Değişken(ler));
veya
READLN (Değişken(ler));
;Değişken/değişkenlere veri satırından değer/değerler okur.
Yazılım sonunda verilen değişken(ler) ifadesi; Bir tek değişken kullanılabilir veya birden fazla
değişken kullanılabilir demektir. Eğer birden fazla değişken kullanılırsa, değişken isimler arasını ( , )
virgül işareti ile ayırmak gerekecektir. Bunun dışında, her bir değişken için ayrı veri
satırı
oluşturularak yazılım gerçekleştirilebilir. Diğer taraftan, alfa sayısal sabit karakter katarı da, veri girişi
sırasında giriş ifadeleri ile algoritmada tek tırnak içinde, Pascal dilinde ise giriş ifadeleri formatında
tanımlı değildir.
Örnek:
Algoritma
Read A,B
;Aynı veri satırından A ve B ye değer okur.
Read A
; Ayrı veri satırlarından A ve B ye değer okur.
Read B
Read ‘ İki sayı veriniz: ‘, A,B ; Alfa sayısal sabit katarı kullanıldı.
Pascal
BEGIN
READ (A,B); { Aynı veri satırından A ve B ye değer okur.}
READLN (A); { Ayrı veri satırlarından A ve B ye değer okur.}
READLN (B);
END.
PRINT ifadesi:
Algoritmada sonucu yazdırmak için kullanılan ifadedir. Pascal dilinde ise karşılığı WRITE ve
WRITELN ifadeleridir.
R.ŞEN
Sayfa 26
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Genel Yazılımı:
Algoritma
PRINT Değişken(ler) ;Değişken/değişkenlerin içerikleri yazdırılıyor.
Pascal
WRITE (Değişken(ler));
; Değişken/değişkenlerin içerikleri yazdırılıyor.
Veya
WRITELN (Değişken(ler));
Yukarıda verilen ifadeleri toplama işlemini yapan ve sonuçta toplama sonucunu ilan eden akış
diyagramı, algoritma ve karşılığı Pascal dilinde aşağıdaki gibi yazılım içinden ve yazılım dışından
değerler almak üzere örneklendirebiliriz.
Örnek-1:
A=20 ve B =50 olduğu kabul edliyor. A ve B sayılarının toplama işlemini gerçekleştiren ve
sonuçta toplam sonucu ilan eden akış diyagramı, algoritma ve karşılığı Pascal programını
yazınız.
PRINT TOPLAM
END
Pascal
VAR
A,B,TOPLAM:INTEGER;
BEGIN
A:=20;
B:=20;
TOPLAM:=A+B;
WRITELN(TOPLAM);
END.
Algoritma
A20
B20
TOPLAM A+ B
R.ŞEN
Sayfa 27
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Örnek-2:
Aynı veri satırından iki sayı okutuluyor. Okutulan sayıların toplama işlemini gerçekleştirip
sonucu veri satırına yazdıran Akış Diyagramı, Algoritma ve karşılığı Pascal programını
yazınız.
Akış Diyagramı
Algoritma
READ A , B
TOPLAM  A + B
PRINT TOPLAM
END
Pascal
VAR
A,B,TOPLAM:INTEGER;
BEGIN
READLN(A,B);
TOPLAM:= A + B;
WRITELN (TOPLAM);
END.
Algoritma ve program yazılımlarında da öncelikle A ve B gibi iki değişken isme aynı veri satırından
değerler okutulmaktadır. Takip eden satırda, A sayısına B sayısı eklenerek, TOPLAM isimli
değişkene, toplam sonuç değeri atanıyor. Böylelikle A ve B sayılarının toplam sonucu TOPLAM
isimli değişkende tutulmuş oluyor. Son satırda sonuç değer TOPLAM isimli değişken ile veri
satırına yazdırılıyor.
R.ŞEN
Sayfa 28
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Örnek-3:
Ayrı veri satırından iki sayı okutulmaktadır. Okutulan sayıların toplama işlemini
gerçekleştirip sonucu veri satırına yazdıran Akış Diyagramı, Algoritma ve karşılığı Pascal
programını yazınız.
Akış Diyagramı
Algoritma
READ A
READ B
TOPLAM  A + B
PRINT TOPLAM
END
Pascal
VAR
A,B,TOPLAM:INTEGER
;
BEGIN
READLN(A);
READLN(B);
TOPLAM:= A + B;
WRITELN
(TOPLAM);
END.
Algoritma ve program yazılımlarında da öncelikle A ve B gibi iki değişken isme ayrı veri satırından
değerler okutulmaktadır. Takip eden satırda, A sayısına B sayısı eklenerek, TOPLAM isimli
değişkene, toplam sonuç değeri atanıyor. Böylelikle A ve B sayılarının toplam sonucu TOPLAM
isimli değişkende tutulmuş oluyor. Son satırda sonuç değer TOPLAM isimli değişken ile veri
satırına yazdırılıyor.
Örnek:
Bir öğrencinin adı soyadı ve numarasını ,okuyup yazan bir ALGORİTMA ve PASCAL programı
yazınız. Okuma ve yazma işlemleri anlamlı biçimde yapılacaktır.
Algoritma
PRINT ‘ Öğrencinin Ad Soyadını yazınız’
READ AD
PRINT ‘Öğrenci numarasını yazınız’
READ NOSU
PRINT ‘Öğrenci ismi:’,AD
PRİNT ’Öğrenci numarası:’,NOSU
END
R.ŞEN
Sayfa 29
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Pascal
VAR
Ad:string;
Nosu:Integer;
BEGIN
WRITE(‘Öğrencinin ad ve soyadını yazınız..:’);
READLN(Ad);
WRITE(‘Öğrencinin numarasını yazınız..:’);
READLN(Nosu);
WRITELN(Öğrencinin Ad soyadı..:’,Ad);
WRITELN(Öğrencinin Numarası..:’,Nosu);
END.
Örnek:
Üç ayrı veri satırından a, b, c sayılarını okuyan, okunanları tek veri satırında yazan bir algoritma ve
pascal programı yazınız
Algoritma
READ A
READ B
READ C
PRINT A,' ',B,' ',C
END
Pascal
VAR
A,B,C:İNTEGER;
BEGİN
READLN (A);
READLN (B);
READLN (C);
WRITELN (A,' ', B,' ', C);
END.
Örnek:
Bir veri satırından a, b, c sayılarını okuyan ,okunanları 3 ayrı veri satırında yazan bir algoritma ve
pascal programı yazınız.
Algoritma
READ A,B,C
PRINT A
PRINT B
PRINT C
END
R.ŞEN
Sayfa 30
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Pascal
VAR
A,B,C:INTEGER;
BEGIN
READLN (A,B,C);
WRITELN(A);
WRITELN(B);
WRITELN(C);
END.
OPERATÖRLER
Pascal programlama dilinde bir veri (data) , sayısal veya alfasayısal sabit yada değişken olabilir. Bu
veriler üzerinde, bir takım semboller veya ifadeler aracılığı ile, bazı işlemler gerçekleştirilerek, sonuç
olarak yeni veriler elde edilebilir. İşte, yeni verileri elde etmemize aracılık eden, sembollere veya
ifadelere operatörler adını veriyoruz.
Editörde tanımlanan bir veri (data) üzerinde gerçekleşebilen işlemler aşağıda ifade edilen gruplarda
incelenebilir.
1.
2.
3.
4.
Atama operatörü
Matematiksel operatörler
İlişkisel operatörler
Mantıksal operatörler
Atama Operatörü
Pascalda bellekte tanımlanan bir tipteki isimlere değer geçirmek için kullanılan operatördür ve “ := “
sembolü ile gösterilirler .
Operatör
:=
Açıklama
Atama
Örnek
A:=3;
Atama işlem yürütülürken soldan sağa doğru gerçekleştirilir. Yukarıdaki tabloda verilen örneğe göre
A ismi ile tanımlanan ifadeye 3 sayısal değeri geçirilmektedir. Bu nedenle A sayısalına 3 sayısı atandı
denir.
Matematiksel Operatörler
Pascal programlama dilinde kullanılan aritmetik işlemcilerin aşağıda sembol, anlamları ve her birine
karşılık gelen birer örnek verilerek listelenmiştir.
Operatör
+
*
/
R.ŞEN
Açıklama
Toplama
Çıkarma
Çarpma
Real sayı bölme işareti
Örnek
A:=b+c;
A:=c-b;
A:=b*c;
A:=c/1,2;
Sayfa 31
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Tam sayı bölme işareti ( int olacak)
Kalan değer ( int olacak)
div
mod
A:=b div 8 ;
A mod b;
Eğer, bir işlemde, ayrıca parantez ile ifade edilen aritmetik işlemler var ise, öncelik sırası parantez
içindeki aritmetik işlemlere verilir. Kabul edelim ki, parantez içinde ve dışında işlemlerin tamamı
bulunuyor. Bu durumda, önce parantez içi sonra parantez dışındaki işlemler aşağıda verilen sıraya
göre yapılır.
12345-
Üs alma
Çarpma
Bölme
Toplama
Çıkarma
Uygulama
Aşağıdaki ifadeleri sıraya koyup pascal satırı şeklinde yazınız.
12345-
t=a+c+s
d=afc
g=a+b/a-b
k=a+{b/c} *t
k= {a/d} + cd
Mantıksal Operatörler
Pascal programlama dilinde mantıksal işlemciler, bir veya birden fazla ilişkiyi, genellikle belirlenen
koşullara göre bir sonuca varıp, buna göre belirlenen bir işlemin yürütülmesini sağlayan
işlemcilerdir. Bu işlemciler; AND (VE), OR (VEYA) ve NOT (DEĞİL) gibi işlemcilerdir. Bu
işlemcilerin sembol ve anlamları aşağıya çıkarıldığı gibidir.
Operatör
AND
OR
NOT
XOR
Açıklama
Mantıksal ve
Mantıksal veya
Mantıksal değil
Mantıksal
Veya
değil
Örnek
if (a=5) and (b=2) then write (‘true’);
if (a=3) or (b=5) then write(‘false’);
if not (a>30) then write(‘büyük’);
İf a=b xor a<>b then write(‘yaz’);
Yukarıda verilen Pascal programlama diline ait operatörlerin işlemler sonucunda elde edilen sonuc
değer her zaman iki tabanlı sayı sistemine göre değerlendirmekteyiz. Bu durum göz önüne alınarak
aşağıda operatörlere ait verilen tablolar doğruluk tablosu olarak adlandırılırlar. Tablolar incelendiğinde
giriş değerlerine karşılık sonucun ne olacağı ile ilgili kararlar verilebilir.
NOT operatörü:
a sonuç
0
1
1
0
Girişteki ifade operatör işleminden sonra tersi alınmış olur.
R.ŞEN
Sayfa 32
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
AND operatörü:
Giriş değerlerinin tamamı veya herhangi biri sıfır yada olumsuz ise, sonuç sıfır yada olumsuz
olmaktadır. Sonucun olumlu veya “1” seviyesinde olması için tüm giriş değerleri “1” seviyesinde yada
olumlu olmalıdır.
a
0
0
1
1
b
0
1
0
1
Sonuç
0
0
0
1
Örnek:
Aşağıda AND işlemine ait örneği inceleyelim.
Binary Sayı
10101101
11001010
AND ------------------10001000
Desimal Sayı
173
202
---------136
Yukarıdaki örnekte, verilen iki adet binary sayısal büyüklüğüne AND işlemi uygulandığında, sekiz
bitlik iki sayının 0. , 1. ,2. ,3, ........ ve sonuncu bit olan 7. bitleri kendi aralarında karşılaştırılarak, her
iki değerin “1” (bir) olduğu durumda bir çıkış elde edildiği görülmektedir. Diğer durumlarda çıkış
ifadesi “0” (sıfır) olmaktadır.
OR operatörü
Sonucun “1” seviyesinde veya olumlu olması için giriş değerlerinden birinin yada tamamının “1”
seviyesinde olması yeterlidir. Sonucun sıfır olaması için tüm giriş değerleri sıfır olmalıdır.
a
0
0
1
1
b
0
1
0
1
Sonuç
0
1
1
1
Örnek:
Aşağıda OR işlemine ait örneği inceleyelim.
Binary Sayı
10101101
11001010
OR ------------------11101111
Desimal Sayı
173
202
-------------239
Yukarıdaki örnekte, OR işlemine göre karşılaştırılan binary sayıların 0. bitten başlayarak en son
7.bitler kendi aralarında OR işlemine girecek şekilde karşılaştırma yapılır. Bu işlem sonucu çıkış
değeri bir olması için,giriş değerlerinin biri veya her ikisi de bir olmalıdır. Karşılaştırılan değerlerin
tamamı “0” (sıfır) ise çıkış değeri işlem sonucunda sıfır olmaktadır.
R.ŞEN
Sayfa 33
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
XOR operatörü
Farklı giriş seviyelerinde sonuç “1” seviyesinde olmaktadır. Girişlerin aynı seviyede olmaları sonucun
sıfır olmasına neden olur.
a
0
0
1
1
Sonuç
0
1
1
0
b
0
1
0
1
Örnek:
Aşağıda XOR işlemine ait örneği inceleyelim.
Binary Sayı
10101101
11001010
XOR------------------01100111
Desimal Sayı
173
202
---------103
Yukarıda verilen Exclusive OR işlemi gerçekleştirilirken, karşılaştırılan değerlerin farklı değerlerde
bir çıkış elde edildiği görülmektedir. Aynı seviyedeki girişlerde çıkış seviyesinin “0” (sıfır) olduğu
kabul edilir.
Karşılaştırma Operatörleri
Karşılaştırma operatörleri kontrol ifadeleri ile birlikte kullanılan sembollerdir. Aşağıda bu
sembolleri,anlamlarını ve kaşılı olan örneklemeleri tabloda görülmektedir.
Operatör
=
<>
<
>
>=
<=
Açıklama
Eşittir
Eşit değil
Küçüktür
Büyüktür
Büyük eşit
Küçük eşit
Örnek
If A=5 THEN
If A<>5 THEN
If A<B THEN
If A>B THEN
If A>=B THEN
If A<=B THEN
Diğer Operatörler
Bu operatörler ile ilgili açıklamalar
verilecektir.
ilgili konular geldikçe açıklanacak ve uygulamalara yer
Operatör
^
@
$
Örnek
A=c*s^;
A:=@b;
A:=$df;
[]
.
R.ŞEN
Açıklama
Pointer operatörü
Operatör adresi
Hexadecimal
operatörü
Dizi
elemanı
operatörü
Nokta operatörü
Array [1..9] of integer;
Table1.name:=’hakan’;
Sayfa 34
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Şu ana kadar Pascal’ da kullanılan operatörler verildiğine göre, giriş çıkış işlemleri ile her türlü işlem
gerçekleştirilebilir. Aşağıda verilen örnekleri inceleyiniz.
Pascal Program Karakter Seti Ve İfadeleri
Pascal programlama dilinde genel yapıyı daha önce görmüştük. Bu genel yapı dışına çıkmanın
mümkün olmadığını biliyoruz. Pascalda genel yapı kurulurken, kullanmamız gereken komutlar,
operatörler, kontrol komutları, döngüler ve dizinler vardır. Bu saydığımız ifadeleri de belirli kurallar
doğrultusunda kullanmamız gerekmektedir.
Burada ilk olarak pascal programlama dilinde kullanacağımız simgeleri aşağıdaki tabloda görebiliriz
SİMGE
a..z , A..Z
0..9
Boşluk
#
$
‘
()
(* *)
(. .)
*
+
+
/
,
.
.
..
:
:=
;
;
>
>=
<
<=
=
@
[]
^
{}
Kullanım Amacı
İng. Alfabesi
Rakamlar
Elemanları ayırır
ASCII karakterlerini tanımlar
Onaltılık (hexa) sayıları tanımlar
Katarları(string) sınırlar
İfade ve listeleri ayırır.
Açıklamalarda kullanılır. {
Dizilerde kullanılır. [
Çarpma
Toplama
Katar ve kümeleri birleştirir
Çıkarma
İşaret değiştirme
Küme kesişim
Bölme
Liste elemanları ayırma
Niteleme ayıracı
Gerçel sayılar için kesir noktası
Dizi boyutlarını bildirir.
Tanıtıcıları tanımlar
Atama işareti
Cümleleri ayırır
Bildirimleri sonlandırır
Büyük işareti
Büyük yada eşit işareti
Küçük işareti
Küçük yada eşit işareti
Eşittir
Tanıtıcı adresini getirir
Dizi indisleri için
Pointer (Gösterge) işareti
Açıklama satırı için
Pascal programlama dilinde yukarıdaki simgeleri daha farklı bir amaç için kullanamayız. Bunun
yanısıra birde pascal programlama dilinde kullanılmak için ayrılmış bazı sözcükler vardır. Bu
sözcükler, program başlığı veya değişken ismi gibi kullanılamazlar.
AND
ARRAY
R.ŞEN
GOTO
IF
PROGRAM
RECORD
Sayfa 35
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
ASM
BEGIN
CASE
CONST
CONSTRUCTOR
DESTRUCTOR
DIV
DO
DOWNTO
ELSE
END
FILE
FOR
FUNCTION
EXPORTS
IMPLEMENTATION
IN
INHERITED
INLINE
INTERFACE
LABEL
LIBRARY
MOD
NIL
NOT
OBJECT
OF
OR
PACKED
PROCEDURE
REPEAT
ET
SHL
SHR
STRING
THEN
TO
TYPE
UNIT
UNTIL
USES
VAR
WHILE
WITH
XOR
Pascal programlama dilinde yeniden tanımlanabilen sözcüklerde bulunmaktadır. Bunları aşağıdaki
tabloda görmektesiniz.
ABSOLUTE
ASSEMBLER
EXPORT
EXTERNAL
FAR
FORWARD
INDEX
INTERRUPT
NAME
NEAR
PRIVATE
PUBLIC
RESIDENT
VIRTUAL
KONTROL İFADELERİ
Belli bir koşula bağlı olarak, programın akış yönünü değiştirmek isteyebiliriz. Başka bir deyişle,
programın işletimi sırasında, belli bir noktadan farklı bir noktaya, çeşitli işlemler için programın
işleyiş yönünü değiştirebiliriz. Yada program içinde çeşitli seçim işlemleri gerçekleştirilebilir. Bu
seçim işlemleri Algoritma ve Pascal programlama dilinde if-then, if-then-else ve case ifadeleri
aracılığı ile gerçekleştirilmektedir.
IF-THEN Komutu
IF-THEN ifadesinin Algoritma ve Pascal da genel kullanım kalıbı;
Algoritma
Genel Yazılımı:
If Koşul Then
İfade(ler)
EndIf
R.ŞEN
Sayfa 36
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Pascal
Genel Yazılımı:
IF Koşul THEN İfade veya Blok(lar);
Koşul işlemi gerçekleşmişse if cümlesinde verilen Then ifadesinden sonraki komut veya Blok(lar)
uygulamaya sokulur. Koşul gerçekleşmemişse bir sonraki komut satırına geçilir.
Örnek:
Veri satırından okutulan a sayısının bir basamaklı sayı olma durumunda veri satırına yazdıran
akış diyagramı, algoritma ve pascal programını yazınız.
Akış Diyagramı
Algoritma
Read a
If a<10 Then
Print a
EndIf
End
Pascal
VAR
A:Byte;
BEGIN
Readln(A);
If A<10 Then
Wrıteln(A);
END.
R.ŞEN
Sayfa 37
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Örnek:
Aynı veri satırından okutulan A ve B gibi iki sayının, 50’den büyük olması durumunda,
sayıları yazdıran akış diyagramı, algoritma ve pascal programını yazınız.
Akış Diyagramı
Algoritma
Read a,b
If a>50 AND b>50 Then
Print a,b
EndIf
End
Pascal
Var
a,b:Byte;
Begin
Read(a,b);
If (a>50)and (b>50) Then
Wrıteln(a,’ ‘,b);
End.
Örnek:
Aynı veri satırından okutulan iki sayıdan birisinin 50’den büyük olması durumunda
“Sayılardan biri 50’den büyük.” sözünü yazdıran algoritma.
Algoritma
Read a,b
If a > 50 OR b > 50 Then
Print “Sayılardan biri 50’den büyük.”
EndIf
End
Pascal
VAR
A,B:BYTE;
BEGIN
READ (A,B);
IF A>50 OR B>50 THEN
WRITELN(‘Sayılardan biri 50’den büyük.‘);
END.
R.ŞEN
Sayfa 38
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
IF-THEN-ELSE İfadesi
Koşulun gerçekleşmesi veya gerçekleşmemesi durumunda ayrı ayrı kontroller gerçekleştirmek
istiyorsak If-Then-Else ifadesi kullanılır. Bu ifadenin genel kullanım kalıbı aşağıda verildiği gibidir.
Sembol
Algoritma
Genel yazılışı:
If
Koşul
Then
İfade(ler)
Else
İfade(ler)
EndIf
Pascal
Genel yazılışı:
IF Koşul THEN İfade veya Blok(lar)
ELSE İfade veya Blok(lar);
Koşul gerçekleştiğinde Then ifadesinden sonraki ifade(ler) işletime alınır. Koşul gerçekleşmediğinde
Else ifadesinden sonraki ifade(ler) işletime alınır.
Örnek:
Aynı veri satırından okutulan a ve b değerlerinden büyük ve küçük olanı yazdıran bir algoritma
ve pascal programını yazınız.
R.ŞEN
Sayfa 39
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Algoritma
Read a,b
If a > b Then
Print ‘a sayısı büyüktür.’
Else
Print ‘b sayısı büyüktür.’
EndIf
End
Pascal
VAR
A,B:INTEGER;
BEGIN
READ(A,B);
IF A > B THEN WRITELN(‘A sayısı büyüktür.’)
ELSE WRITELN(‘B sayısı büyüktür.’);
END.
Örnek:
Veri satırında okutulan sayının 5 olup olmadığını bulan algoritmayı yazınız. Sayı için a
değişkeni kullanılmıştır.
Algoritma
Read a
If a = 5
Then
Print ‘Okutulan sayı 5 dir.’
Else
Print ‘Okutulan sayı 5 değildir.’
EndIf
End
Uygulama:
Yukarıda algoritması verilen programın akış diyagramını çiziniz ve pascal karşılığını yazınız.
Örnek:
Okutulan iki sayının da 50’den büyük olması durumunda “Sayılar 50’den büyük.” diğer
durumda “50’den büyük sayı yok.” sözlerini yazdıran algoritma.
Algoritma
Read a,b
If a > 50 AND b > 50 Then
Print ‘Sayılar 50’den büyük.’
Else
Print ‘50’den büyük sayı yok.’
EndIf
End
Uygulama: Yukarıda verilen algoritmanın akış diyagramını oluşturunuz ve karşılığı pascal programını
yazınız.
R.ŞEN
Sayfa 40
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Algoritma ve Pascal programında if-then-else formuna örnek olarak birden fazla ifade kontrol edecek
olursak, aşağıdaki gibi bir yazılım gerçekleştirilebilir.
Algoritma
Bilinen_sayı1234
Read tahmin
If Bilinen_sayı=tahmin Then
Print 'TAHMİN EDİLEN DOĞRU'
Print 'TAHMİN EDİLEN SAYI'
Print Bilinen_sayı
Else
Print 'TAHMİN EDİLEN YANLIŞ'
Print 'VERDİĞİNİZ SAYI'
Print tahmin
Endif
End.
Pascal
VAR
Tahmin,bilinen_sayi:Integer;
BEGIN
Bilinen_sayı:=1234
Readln (tahmin);
If Bilinen_sayı=tahmin Then Begin
Writeln (‘TAHMİN EDİLEN DOĞRU’);
Writeln(‘TAHMİN
EDİLEN
SAYI’,Bilinen_sayi);
End;
Else
Begin
Writeln(‘TAHMİN EDİLEN YANLIŞ’);
Writeln(‘VERDİĞİNİZ
SAYI’,
Bilinen_sayi);
End;
End.
R.ŞEN
Sayfa 41
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Örnek :
Aynı veri satırından a,b,c gibi üç adet sayı okutulmaktadır. Sayılar içinden en küçük sayıyı
bulup sonuçta küçük olan sayıyı ilan eden akış diyagramı, algoritma ve karşılığı pascal
programını gerçekelştiriniz.
Algoritma
Read a,b,c
if a<b and a<c Then
Print ‘a sayısı en küçük sayıdır’
Else if b<a and b<c then
Print ‘b sayısı en küçük sayıdır’
Else
Print ‘c sayısı en küçük sayıdır’
Endif
Endif
End
Pascal
VAR
A,B,C:INTEGER;
BEGIN
Readln( a,b,c);
if (a<b) and (a<c) Then
Writeln(‘a sayısı en küçük sayıdır’)
Else if (b<a) and (b<c) then
Writeln(‘b sayısı en küçük sayıdır’)
Else
Writeln(‘c sayısı en küçük sayıdır’);
End.
Yukarıda gerçekleştirilen örnek çözüm if-then-else formuna uygun olarak gerçekleştirilmiştir.
R.ŞEN
Sayfa 42
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Sayaç Kullanarak Döngü Oluşturma
Sayaç, başlangıç değeri sıfır olarak tanımlanan bir değişkenin, her işlemden sonra, 1 arttırılması ile
sağlanan bir ifadedir. İşleme devam edilebilmesi için GOTO komutu kullanılır.
Gönderme (goto) Komutu
Goto ifadesi, algoritma ve programlama dillerinde akış yönünü değiştirmek için kullanılan bir
komuttur. Yapısal programlamanın yapısını bozması nedeniyle tercih edilmez. Bu nedenle karar
cümlelerine bağlı olarak kullanılmaktadır.
Genel Yazılımı:
GOTO Adres_alanı
Uygulanması durumunda algoritma veya pascal programında belirtilen adres sahasına program akış
yönünü döndürerek, gösterilen adres sahasından sonra gelen ilk komut uygulamaya koyulur.
Aşağıda 1 den 9 sayısı dahil aradaki bir tam sayıları If-then ifadesi kullanarak yazdıran algoritma ve
test adımlarını inceleyelim.
Aşağıdaki algoritmada sayaç olarak Say değişkeni kullanılmakta ve Say değişkenine başlangıç olarak
sıfır sayısı atanmaktadır.
Algoritma
Say0
Adres:
Print Say
SaySay+1
If Say<10 Then
GOTO Adres
EndIf
End
Yukarıdaki algoritmada;
1. adımda: Say değişkeni
yazdırılmakta,
2. adımda: Say değişkeni
yazdırılmakta,
3. adımda: Say değişkeni
yazılmakta,
4. adımda: Say değişkeni
yazılmakta,
5. adımda: Say değişkeni
yazılmakta,
6. adımda: Say değişkeni
yazılmakta,
7. adımda: Say değişkeni
yazılmakta,
8. adımda: Say değişkeni
yazılmakta,
R.ŞEN
Pascal
LABEL
Adres;
VAR
Say:byte;
BEGIN
Say:=0;
Adres:
Writeln(Say);
Say:=Say+1;
If Say<10 Then
GOTO Adres;
END.
1 değerini almakta, 1<10 sorgusu doğru olduğundan, 1 sayısı
2 değerini almakta, 2<10 sorgusu doğru olduğundan 2 sayısı
3 değerini almakta, 3<10 sorgusu doğru olduğundan 3 sayısı
4 değerini almakta, 4<10 sorgusu doğru olduğundan 4 sayısı
5 değerini almakta, 5<10 sorgusu doğru olduğundan 5 sayısı
6 değerini almakta, 6<10 sorgusu doğru olduğundan 6 sayısı
7 değerini almakta, 7<10 sorgusu doğru olduğundan 7 sayısı
8 değerini almakta, 8<10 sorgusu doğru olduğundan 8 sayısı
Sayfa 43
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
9. adımda: Say değişkeni 9 değerini almakta, 9<10 sorgusu doğru olduğundan 9 sayısı
yazılmakta,
10. adımda: Say değişkeni 10 değerini almakta, 10<10 sorgusu yanlış olduğundan 10 sayısı
yazılmayacak ve sonlanacaktır.
Görüldüğü gibi bir basamaklı tam sayıları say isimli sayac aracılığı ile üretip ayrı veri
satırlarına yazdırmış olduk.
Yukarıdaki programın test işlemini yapacak olursak;
Yukarıda algoritması ve karşılığı pascal programı gerçekleştirilen örneğin akış diyagramını aşağıdaki
gibi düzendüzenlenebilir.
Akış Diyagramı
R.ŞEN
Sayfa 44
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Örnek:
Bir basamaklı sayıların toplama işlemini gerçekleştirip sonuçta ilan eden akış diyagramı,
algoritma ve karşılığı pascal programını yazınız. Beş adım için test ediniz.
Akış Diyagramı
Algoritma
top0
say0
Loop:
saysay+1
toptop+say
If say<10 Then
Goto Loop
Endıf
Print top
End
Pascal
Var
Say,top:Integer;
Begin
Top:=0;
Say:=0;
loop:
say:=say+1;
top:=top+say;
if say<10 Then
goto loop;
Writeln(top);
End.
R.ŞEN
Sayfa 45
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Örnek:
100’e kadar olan sayıların tek sayılarını toplayan ve sonuçta ilan eden akış diyagramı,
algoritma ve karşılığı pascal programını yazınız.
Akış Diyagramı
Algoritma
top0
say1
Loop:
toptop+say
saysay+2
If say<100 Then
Goto Loop
Endıf
Print top
End
Pascal
Var
Say,top:Integer;
Begin
Top:=0;
Say:=1;
loop:
top:=top+say;
say:=say+2;
if say<100 Then
goto loop;
Writeln(top);
End.
Uygulama: Yukarıda verilen problemin 10 adım için test işlemini gerçekleştiriniz.
En Büyük ve En Küçük Bulma İşlemleri
Bu tür işlemlerde iki yol izlenir.
I. Yol : İlk okunan değer En büyük ya da En küçük olarak kabul edilir.
II. Yol : En büyük veya en küçük için başlangıç değerleri atanır.
En büyük için, başlangıç değeri kabul edilen en küçük bir değer,
En küçük için, başlangıç değeri kabul edilen en büyük bir değer olmalıdır.
R.ŞEN
Sayfa 46
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Örnek :
Ayrı veri satırından 10 adet not okutuluyor. En büyük not’u bulan ve sonuçta veri satırına
yazan algoritma ve karşılığı pascal programı yazınız.
1.Yola göre çözüm:
Algoritma
Read nt
Enb nt
Say  1
Adres:
Read nt
If nt > enb Then
Enb  nt
Endif
Say  say + 1
If say < 10 Then Goto Adres
Endif
Print enb
End
Pascal
VAR
Nt, enb, say:Integer;
BEGIN
Readln(nt);
enb = nt;
say = 1;
Adres:
Readln (nt);
if nt>enb Then Begin
enb :=nt;
say = say + 1;
End;
if say < 3 Then GOTO Adres;
Writeln (‘En Büyük sayı..:’, enb);
End.
Uygulama:
Yukarıda gerçekleştirilen algoritma ve pascal program karşılığı akış diyagramını ve 3 adım
için test işlemini gerçekleştiriniz.
2.Yola göre çözüm:
Algoritma
enbnt-9
Say0
Adres:
Read nt
If enbnt<nt Then
Enbnt  nt
Endif
Saysay + 1
If say<10 Then Goto Adres
R.ŞEN
Sayfa 47
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Endif
Print enbnt
End
Pascal
VAR
Nt, enbnt, say:Integer;
BEGIN
Enbnt:=-9;
Say:=0;
Adres:
Readln(nt);
if enbnt<nt Then
enbnt:=nt;
say:=say+1;
if say<10 Then GOTO Adres;
Writeln(‘En Büyük sayı..:’, enb);
End.
Uygulama:
Yukarıda gerçekleştirilen algoritma ve pascal program karşılığı akış diyagramını ve 3 adım
için test işlemini gerçekleştiriniz.
Örnek :
Bir veri satırından 3 adet not okutuluyor. En büyük ilk notu bulan ve yazan bir algoritma yazınız ve 3
veri satırı için test ediniz.
Algoritma
Read not1,not2, not3
If not1 >= not2 and not1 >= not3 Then
Enb  not1
Else
If not2 >= not3 and not2 > not1 Then
Enb  not2
Else
Enb  not3
Endif
Endif
Print enb
End
Uygulama: Yukarıda verilen algoritmaya göre Akış diyagramı, Pascal programını ve üç adım için
test işlemini gerçekleştiriniz.
Mantıksal işlemciler kullanılarak, IF uygulamalarına ilişkin aşağıdaki örnek çözümü inceleyelim.
Örnek:
Öğrencinin bir derse ait not ve bir döneme ait devamsızlığı ayrı veri satırlarından giriliyor.
Geçme koşulu; devamsızlığı 3 haftadan az ve derse ait geçme puanı en az 60 puan olacak
şekilde kabul ediliyor. Buna göre öğrencinin GEÇTİ veya KALDI ifadesini ekrana yazan
algoritmayı ve Pascal programını yazınız. En az 3 veri satırı için test ediniz.
R.ŞEN
Sayfa 48
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Algoritma
READ NT
READ DEVAM
IF
NT>=60 AND DEVAM<3 THEN
PRINT 'GEÇTİ'
ELSE
PRINT 'KALDI'
ENDIF
END
Pascal
Var
Nt,Devam:Integer;
Begin
Write(‘Notu veriniz..:’);
Readln(nt);
Writeln(‘Notu veriniz..:’);
Readln(devam);
If nt>=60
AND
devamsız<3 Then Writeln(‘GEÇTİ’)
Else Writeln(‘ KALDI’);
End.
If ifadesi, birden fazla birbirine bağlı karşılaştırma işlemlerinde de sorgulamanın yürütülebilmesi için
kullanılabilir. Böyle bir durumda, If ifadesi, iç içe olacak şekilde düzenlenirler. Dikkat edilmesi
gereken nokta, algoritma da her IF ifadesinde kullanılan
ELSE ifadesi, iç içe oluşturulan
yapılarda,THEN ifadesinden hemen sonra kullanılmalıdır.
Aşağıda böyle bir yapının genel yazılımı gösterilmektedir.
Genel Yazılımı
IF Koşul THEN
İfade(ler)
ELSE
IF Koşul THEN
İfade(ler)
ELSE
IF Koşul THEN
İfade(ler)
ELSE
.....
......
ENDIF
ENDIF
ENDIF
Örnek :
Algoritma
Bilinen_sayı1234
Read tahmin
R.ŞEN
Sayfa 49
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
If
Bilinen_sayı=tahmin Then
Print 'TAHMİN EDİLEN DOĞRU'
Print 'TAHMİN EDİLEN SAYI'
Print Bilinen_sayı
Else
If Bilinen_sayı<Tahmin Then
Print 'YANLIŞ VE SAYINIZ BÜYÜK'
Else
Print 'YANLIŞ VE SAYINIZ KÜÇÜK'
Endif
Endif
End
Pascal
Var
Tahmin, bilinen_sayi:Integer;
Begin
bilinen_sayi:=1234;
Write(‘Tahmininizi giriniz..:’);
Readln(tahmin);
if bilinen_sayi=tahmin Then
Begin
Writeln('TAHMİN EDİLEN DOĞRU');
Writeln(‘ARADIĞINIZ SAYISI=’,bilinen_sayi);
End
else if bilinen_sayi<tahmin Then
Writeln('YANLIŞ VE SAYINIZ BÜYÜK')
else
Writeln ('YANLIŞ VE SAYINIZ KÜÇÜK.');
End.
Böyle bir yapı oluşturulurken bir birine bağlı, iç içe çalıştırılacak IF yapılarının sayıları arttıkça,
dikkat edilmez ise hata yapma olasılığı yüksektir. Bu nedenle, benzer yapıya algoritmada karşılık
gelen Case ve Pascal programlamada Case- of ifadeleri ile birden fazla koşula göre, seçim işlemi
gerçekleştirilebilir.
CASE ifadesi
Algoritma da kullanılan CASE ifadesinin genel yazılımı aşağıda gösterilmektedir. CASE ifadesinde,
birden fazla koşuldan bir tanesi seçilip işleme koyulur. Eğer koşulların herhangi biri gerçekleşmemiş
ise ELSE ifadesinden sonraki ifade veya ifadeler işletime alınır ve CASE ifadesinden ENDCASE ile
çıkılır.
Algoritmada
Genel Yazılımı
CASE (isim)
Koşul1 : İfade(ler)
Koşul2 : İfade(ler)
Koşul3 : İfade(ler)
................
KoşulN : İfade(ler)
Else : İfade(ler)
ENDCASE
R.ŞEN
Sayfa 50
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Pascal
Pascal’ da CASE-OF ifadesi olarak bilinir. Bir değişken isminin alacağı değere bağlı olarak, OF
ifadesinden sonra gelen sabit alanlardan hangisine denk ise, o alandan sonraki ifade veya blok(lar)
işletime alınır. Eğer alt alanlardan birine değişken değeri denk gelmemişse, ELSE ifadesinden sonraki
ifade veya blok(lar) işletime alınır. CASE-OF END; ifadesi ile sonlandırılır.
Genel Yazılımı:
Case Değişken Of
Sabit_Alan1: İfade veya Blok(lar);
Sabit_Alan2: İfade veya Blok(lar);
Sabit_Alan3: İfade veya Blok(lar);
................
Sabit_AlanN: İfade veya Blok(lar);
Else İfade veya Blok(lar);
End;
Örnek :
Veri satırından okutulan 1,2,3,4 sayılarından hangisi olduğunu yazan bir algoritma ve pascal
programı yazınız.
Algoritmada
Read say
Case(say)
say=1: Print say
say=2: Print say
say=3: Print say
say=4: Print say
Else:Print ‘Sayılardan hiçbiri’
EndCase
End
Pascal
Var
Say:Byte;
Begin
Readln(say);
Case say Of
1:Writeln(say);
2:Writeln(say);
3:Writeln(say);
4:Writeln(say);
Else Writeln('Sayılardan Hiçbiri değil');
End;
End.
Yukarıda verilen Case-Of ifadesindeki sapılacak alanlar sayısal değerler olarak görülmektedir. Bu
alanlar karakter olarak veya sayısal aralık yada karakter aralık olrakta verilebilir. Aşağıdaki örneklerde
bu durumlar görülmektedir.
R.ŞEN
Sayfa 51
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Pascal
Var
Sayi_araligi:Byte;
Begin
Readln (say);
Case Sayi_araligi Of
1..10:Writeln('Sayı 1 ile 10 aralığındadır.');
11..20:Writeln('Sayı 11 ile 20 aralığındadır.');
21..30:Writeln('Sayı 21 ile 30 aralığındadır.');
31..40:Writeln('Sayı 31 ile 40 aralığındadır.');
Writeln('Sayılar Hiçbir aralığa girmiyor');
End;
End.
Else
Pascal
Var
Karakter_araligi:Char;
Begin
Readln (say);
Case Karakter_araligi Of
‘1’..’9’:Writeln(‘1 ile 9 karakter aralığındadır.’);
‘A’..’Z’:Writeln(‘büyük karakter A ile Z aralığındadır.’);
‘a’..’z’:Writeln(‘Küçük karakter a ile z aralığında.’);
Else Writeln (‘Hiçbir aralığa girmiyor’);
End;
End.
Problem :
Ayrı veri satırından okutulan sayıya göre; 0 (sıfır) ise çift sayıları, 1 (bir) ise tek sayıları 0– 100
aralığında toplayan ve toplam sonucu tekler toplamı ve çiftler toplamı olarak yazan algoritmayı ve
pascal programını düzenleyiniz.
Örnek :
Ayrı veri satırından olmak üzere iki sayı okutuluyor.dört işlemden birinin seçimine göre dört işlemden
birini gerçekleştirip yazan algoritma ve pascal programını yazınız.
Algoritma
Read A
Read B
Toplam  0
Fark  0
Çarpım  0
Bolme  0
Read sec
Case
sec=1: ToplamA + B
sec=2: FarkA - B
sec=3: ÇarpımA * B
sec=4: Bölme A / B
Else: Print ‘Yanlış seçim’
EndCase
End
R.ŞEN
Sayfa 52
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Pascal
Var
a,b,sec,toplam,fark,carpım:Integer;
bolum:Real;
Begin
Toplam:=0;
Fark:=0;
Carpım:=0;
Bolum:=0;
write(‘A sayısını veriniz...:’);
Readln(a);
write(‘B sayısını veriniz...:’);
Readln(b);
write(‘Seçiminiz..<1-2-3-4>.:2);
Readln(sec);
Case sec Of
1: Begin
toplam=a + b;
Writeln(‘Sayılar Toplamı=’,toplam);
End;
2: Begin
fark=a - b;
Writeln(‘Sayılar Toplamı=’,toplam);
End;
3: Begin
carpım=a * b;
Writeln(‘Sayılar Toplamı=’,toplam);
End;
4: Begin
bolum=a / b;
Writeln(‘Sayılar Toplamı=’,toplam);
End;
Else Writeln(‘...Yanlış Şeçim....’);
End;
End.
Bir önceki örneğin seçim alanlarını karakter olarak aşağıdaki gibi düzenleyebiliriz
Pascal
Var
a,b,sec,toplam,fark,carpım:Integer;
bolum:Real;
Begin
Toplam:=0;
Fark:=0;
Carpım:=0;
Bolum:=0;
write(‘A sayısını veriniz...:’);
Readln(a);
write(‘B sayısını veriniz...:’);
Readln(b);
write(‘Seçiminiz..< + , - , * , / >);
Readln(sec);
Case sec Of
R.ŞEN
Sayfa 53
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
‘+’: Begin
toplam=a + b;
Writeln(‘Sayılar Toplamı=’,toplam);
End;
‘-‘: Begin
fark=a - b;
Writeln(‘Sayılar Toplamı=’,toplam);
End;
‘*’: Begin
carpım=a * b;
Writeln(‘Sayılar Toplamı=’,toplam);
End;
‘/’: Begin
bolum=a / b;
Writeln(‘Sayılar Toplamı=’,toplam);
End;
Else Writeln(‘...Yanlış Şeçim....’);
End;
End.
Problem :
40 kişilik bir sınıfa ait öğrencilerin her biri bir veri satırından olmak üzere cinsiyetleri (E ve K
olacak şekilde) ve boyları okutularak, kaçının kız ve kaçının erkek, sınıftaki öğrencilerin
kaçının boylarının erkek ise 180 cm’nin ve kız ise 170 cm’nin üzerinde olduğunu bulan
algoritmayı ve pascal programını yazınız.
Problem:
Ayrı veri satırından cinsiyetleri ve yaşları okutulan erkek ve bayanların 25 yaşından küçük
olanlarının cinsiyetlerine göre bayanların ve erkeklerin ayrı ayrı toplamlarını bulan ve
sonucu ekrana yazan algoritmayı ve pascal programını düzenleyiniz. En az 5 veri için test
ediniz. Yazılan algoritmayı pascal programında Case ifadesine göre yazılacaktır.
R.ŞEN
Sayfa 54
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
DÖNGÜLER
Yazılımın bir bölümünde, bazı işlemlerin veya ifadelerin yürütülebilmesi için, birden fazla
tekrarlanma gereği duyulur. Bu işlemleri gerçekleştiren ifadelere döngü ifadeleri adı verilir. Tekrar
işlemlerinin, ne kadar yapılacağı veya ne zaman sonlandırılacağı kontrolu, döngü komutları ile
oluşturulur. Döngü komutları, yapı ve çalışma özellikleri bakımından, takip eden satırlarda örneklerle
açıklanmıştır.
LOOP İfadesi
LOOP, sonsuz döngü tanımlama ifadesidir. Sonsuz döngü içerisinden döngünün özelliğinden dolayı
çıkma imkanı bulunmamaktadır. Aşağıda algoritmadaki genel yazılımı gösterilmektedir.
Algoritma
LOOP
İfade(ler)
ENDLOOP
LOOP döngüsü kullanarak, öğrenciye ait Numarayı ve Notu veri satırından okuyan bir algoritma
örneğini yazarsak;
Algoritma
Loop
Read no,not
EndLoop
End
Yukarıdaki gibi bir döngü algoritmada yazılabilir, fakat böyle bir döngüden çıkabilme imkanı yoktur.
Sonsuz döngüden çıkmak, döngünün kırılması anlamına gelir. Programlama dillerinde algoritmada
olduğu gibi blok ve döngülerin kırılması için kullanılan ifadeler vardır ve bu ifadelere gönderme
komutları olarakta isimlendirilebilirler.
Döngü ve Blokların Kırılması
Döngülerin işleyişlerini etkileyen
gösterebiliriz.
komutlar Goto, Exit, Halt,
Break, Continue gibi ifadeleri
GOTO ifadesi
GOTO ifadesi daha önce anlatılan kontrol komutları içinde gönderme komutu olarak anlatılmıştı.
LOOP sonsuz döngüsünden çıkış komutu olarakta kullanılmaktadır.
Örnek :
Aşağıdaki örnekte verilen algoritma, sonsuz döngü mantığında not okumaktadır. Notun 70
olarak okunması durumunda A adresine gidilmekte ve not yazılarak algoritma sona
ermektedir. Notlardan birinin 70 olmaması durumunda algoritma sonsuz döngüde kalır.
R.ŞEN
Sayfa 55
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Algoritma
Loop
Read not
If not = 70 Then GOTO Adres
EndIf
EndLoop
Adres:
Print not
End
Uygulama:
Yukarıda verilen algoritma kaç adet not okuduğunu bulup, 100 puan girildikten sonra döngü
dışına çıkılarak, kaç adet not girildiğini yazan bir algoritmayı ve pascal programını yazınız.
exıt ifadesi
Algoritmada EXIT ifadesi, herhangi bir durumda en yakın döngüden çıkmak için kullanılan bir
ifadedir. Koşul sağlandığında döngü dışına çıkılır. Aşağıda genel yazılımı verilmiştir.
Genel Yazılımı
Loop
İfade(ler)
If
Koşul
Then EXIT
LOOP
İfade(ler)
EndLoop
Aşağıdaki algoritmada olduğu gibi, iç içe iki döngü varsa, algoritmadaki ‘EXIT A ‘ ifadesi, ‘A’
isimli adres ile döngüden çıkmak için kullanılır. Algoritmada, iç içe (Nested) kullanılan LOOP
döngülerinde EXİT ifadesinin kullanımı görülmektedir.
Algoritma
Loop
İfade(ler)
Loop
İfade(ler)
If Koşul Then EXIT A
EndIf
İfade(ler)
EndLoop
İfade(ler)
EndLoop
A:
Örnek:
Aşağıdaki örnek algoritmada verilen, sonsuz döngü
mantığında Nt isimli değişkene not
okutulmaktadır. Notun 70 olarak okunması durumunda Loop sonsuz döngüsünden çıkılmakta ve not
değeri yazdırılarak algoritma sona ermektedir. Notlardan birinin 70 olmaması durumunda algoritma
sonsuz döngüde kalır.
Algoritma
Loop
Read not
If not = 70 Then EXIT
EndIf
R.ŞEN
Sayfa 56
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
EndLoop
Print not
End
Uygulama:
LOOP sonsuz döngüsü mantığında not okuyan ve notun 100 olarak okunması durumunda,
Loop sonsuz döngüsünden EXIT ifadesi ile çıkan, döngüden çıkılıncaya kadar okunan
notların ortalamasını bulan ve yazan bir algoritma yazınız.
Algoritmada LOOP sonsuz döngü ifadesinde şu ana kadar, yardımcı komutlar aracılığı ile döngü
dışına çıkabildiğini gördük. LOOP sonsuz döngüsünden bundan başka, döngü içinden belli koşullara
bağlı olarak, kontrolümüz altında döngüden çıkabilme özelliği de bulunmaktadır. Böyle bir özelliği
Algoritmada; LOOP/UNTIL, WHILE ve FOR gibi ifadeler ile, Pascal programlama dili karşılığında
pascal özellikleri de düşünülerek REPEAT/UNTIL, DO-WHILE, WHILE/DO ve FOR ifadeleri
kullanılabilir. Konu edilen döngüleri uygularken, en önemli nokta; döngü içine girildiğinde, belirlenen
koşul ya döngü başlangıcında işletilerek, yada döngü sonunda işletilerek kontrolü sağlanır.
Aşağıdaki açıklamalarda bu ifadelerin algoritma ve Pascal programındaki genel yazılımları ve örnek
uygulamalarla anlatılmaya çalışılmıştır.
LOOP - UNTIL ifadesi
LOOP UNTIL ifadesinin çalışma mantığı; Koşul gerçekleşinceye kadar ifade veya ifadeler
uygulamaya alınırlar. Koşul gerçekleştiğinde döngü sona erer.
Algoritma
Genel yazılışı:
LOOP
İfade(ler)
UNTIL
Koşul
ENDLOOP
Örnek:
1'den 100'e kadar sayıların toplamını LOOP UNTIL deyimi kullanarak bulan ve yazan bir algoritma
yazınız ve bu algoritmayı ilk 3 sayı için test ediniz.
Algoritma
Say  0
Top  0
LOOP
Say  Say + 1
Top  Top + Say
UNTIL Say = 100 ENDLOOP
Print ‘ İlk ‘ , Say, ‘ Sayının Toplamı = ‘ , Top
End
R.ŞEN
Sayfa 57
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Örnek :
100 veri satırından 100 adet not okuyan ve not toplamını bulan ve yazan bir algoritmayı,
LOOP – UNTIL ifadesini kullanarak yazınız.
Algoritma
Top  0
Say  0
LOOP
Read Not
Top  Top
Say  Say
UNTIL Say = 100
Print Top
End
+ Not
+ 1
ENDLOOP
Örnek :
100 veri satırından 100 adet not okuyan ve 60’ dan büyük olan notların ortalamasını bulan bir
algoritmayı LOOP – UNTIL ifadesi kullanarak yazınız.
Algoritma
Top  0
Say60  0
Say  0
LOOP
Read Not
If Not > 60 Then
Top  Top + Not
Say60  Say60 + 1
Endif
Say  Say + 1
UNTIL Say = 100 ENDLOOP
If Say60 <> 0 Then
Ort = Top / Say60
Endif
Print Top
End
R.ŞEN
Sayfa 58
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Örnek:
100 veri satırından 100 adet not okuyan ve not toplamını bulan ve yazan bir algoritmayı,
LOOP UNTIL deyimi kullanarak yazınız.
Algoritma
top0
say 0
LOOP
read not
top  top + not
say  say + 1
UNTIL say =100 ENDLOOP
Print top
End
Örnek:
100 veri satırından 100 adet not okuyan ve 50 den büyük notların ortalamasını bulan bir
agoritmayi, LOOP UNTIL deyimi kullanarak yazınız.
Algoritma
top  0
say50  0
say 0
Loop
read not
If not > 50 Then
top  top + not
say50  say50 + 1
Endif
say say + 1
Until say =100 EndLoop
If say50 <> 0 then
ort = top / say50
Endif
Print top
End
Örnek:
1 den 100 e kadar çift sayıların toplamını bulan ve yazan algoritmayı LOOP-UNTIL döngüsü
ile yazınız.
R.ŞEN
Sayfa 59
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
REPEAT – UNTİL ifadesi
Pascalda Repeat-Until ifadesinin çalışma mantığı; Repeat ile Until ifadeleri arasında kalan tüm satırlar
Unil satırında verilen koşul gerçekleşinceye kadar işletime alınırlar. Koşul gerçekleştiğinde tekrar
işlemi sona erer.
Pascal
Genel yazılımı :
REPEAT
İfade(ler) veya Blok(lar);
UNTIL Koşul;
Örnek:
100 e kadar tek sayıların toplamını bulan ve yazan Pascal programını Repeat-Until komutu
kullanarak gerçekleştiriniz.
Repeat-Until ifadesinin bir diğer özelliği; döngünün kaç kez işleyeceğine dair bilginin önceden
zorunlu olmayışıdır. Örneğin ;For-do ifadesinde göreceğimiz gibi değer öncelikle alınması nedeni ile
boş bir döngü yaratamayız. Fakat Repeat-Untilde değer ifadesi sonda karşılaştırıldığı için döngü en az
bir kez döner.
Bir tuşa basılmayı Pascalda beklemek için
Repeat
Until KeyPressed;
şeklinde bir ifade satırı yazılabilir. Burada amaç en az bir karakter üreten tuşlara basılmasını
sağlamaktır.
R.ŞEN
Sayfa 60
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Örnek:
Bir veri satırında başlangıç ve bitiş değerleri bulunmaktadır. 3 veri satırı olduğuna göre
başlangıç ve bitiş değerleri arasındaki sayıların toplamını bulan ve yazan pascal programı
düzenleyiniz. Repeat-Until ifadesi kullanarak gerçekleştiriniz.
Pascal
Label
Adres;
Var
bas,bit,say,top:Integer;
BEGIN
REPEAT
Adres:
Writeln('başlangıç ve bitiş sayılarını giriniz:');
Readln(bas,bit);
say:=say+1;
REPEAT
if (bit-bas)>1 then
Begin
bas:=bas+1;
top:=top+bas;
End
else
Begin
writeln('hata');
goto Adres;
End;
UNTIL bas=(bit-1);
writeln('toplam:',top);
UNTIL say>=3;
END.
Örnek:
Bir veri satırında matematik, fizik,kimya notları bulunmaktadır.pekçok veri satırı olduğuna
göre matematik not ortalamasını bulan,fizik dersinden >50 not alan öğrenci sayısını bulan,
kimya notu 70 ile 100 arasında olan örencilerin tüm bilgilerini yazdıran, döngü sonunda diğer
bulunanları yazdıran bir pascal programı yazınız.
Pascal
VAR
attop,matsay,fizsay,mat,fiz,kim,matort:integer;
BEGIN
matort:=0;
Repeat
Writeln('MATEMATİK,FİZİK VE KİMYA NOTLARINI GİRİNİZ:');
Readln(mat,fiz,kim);
if (mat=-1) and (fiz=-1) and (kim=-1) then Break;
matsay:=matsay+1;
mattop:=mattop+mat;
if fiz>50 then fizsay:=fizsay+1;
if (kim<100) and (kim>70) then
Begin
R.ŞEN
Sayfa 61
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
writeln('kimya notu 70 ile 100 arasında olan öğrencinin tüm
notları;',kim);
writeln('matematik
notu:',mat,'
','kimya
notu:','kim','fizik
notu:',fiz);
End;
Until (mat=-1) and (fiz=-1) and (kim=-1);
if matsay<>0 then
Begin
matort:=mattop div matsay;
End;
writeln('matematik
notlarının
ortalaması
:',matort);
writeln('fizik
notu
50’den
büyük
olan
öğrenci
sayısı:',fizsay);
end.
While ifadesi
Döngü kontrolu, ifadenin başlangıcında, WHILE ifadesi ile birlikte gerçekleştirilir. Komut işletime
alındığında, belirlenen koşul sağlandığı sürece, döngü devam etmekte, koşul ortadan kalktığında da
döngü dışına çıkılmaktadır. Aşağıda while ifadesinin genel yazılımı algoritmaya ve Pascal programına
göre verilmiştir.
Akış diyagram sembolü
Algoritma
Genel Yazılımı:
WHILE Koşul DO
İfade(ler)
ENDWHILE
Pascal
Genel Yazılımı:
WHILE Koşul DO İfade veya Blok(lar);
R.ŞEN
Sayfa 62
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Örnek :
100’ e kadar olan sayıların toplamını alıp sonucta ilan eden bir akış diyagramını, algoritmasını
ve karşılığı pascal programını while ifadesi kullanarak gerçekleştiriniz. Test işlemini
gerçekleştiriniz
Akış diyagramı

Yukarıdaki Akış Diyagramı, Algoritma ve Pascal örneklerinde döngü başlangıcı için; say değişken
değerinin başlangıç değerine “0” (sıfır) atanmaktadır. say<100 koşulu devam ettiği sürece,Say isimli
değişkenin içeriği toplam isimli değişken içeriğine eklenecek yeni değer olarak toplam isimli
değişkene atanacak ve say isimli değişken içeriği 1(Bir) artacaktır. say<100 koşulu ortadan
kalktığında toplam isimli değişkenin içeriği veri satırına yazdırılacaktır.
R.ŞEN
Sayfa 63
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Örnek:
Ayrı veri satırından 10 adet sayı okutulmaktadır. Okutulan sayıların toplama işlemini
gerçekleştirip, toplam sonucu ilan eden Akış Diyagramını, Algoritmayı ve karşılığı Pascal
programını while ifadesi kullanarak gerçekleştiriniz. Beş adım için test işlemini yapınız.
Akış Diyagramı
Algoritma
Pascal
Yukarıda verilen örnekte döngü başlangıcı için; say değişken değerinin başlangıç değerine “0” (sıfır)
atanmaktadır. say<10 koşulu devam ettiği sürece,deger isimli değişkene tam sayı türünde sayı,veri
satırından okutulacaktır. Veri satırından okutulan sayıların toplam değeri toplam isimli değişkende
tutulacaktır. Veri satırından 10 adet sayı girildikten sonra verilen koşul ortadan kaltığı için while-do
kontrolü sona erecektir. Toplam sonucu ekrana writeln ifadesi ile yazdırılacaktır.
Örnek:
Bir veri satırından a ve b değerleri giriliyor; a=b ise 'sayılar eşit', a>b>0 ise 1’den a ‘ya kadar
1’er artan sayıları b>a>0 ise b den 1’e kadar 1’er azalan sayıları yazan bir pascal programı
yazınız.
NOT: a>0 ve b>0 olmaması durumunda yeni kayıt okutunuz.
Pascal
LABEL
Adres;
VAR
a,b,say:integer;
BEGIN
Adres:
Writeln('a ve b sayilarini giriniz') ;
Readln(a,b);
while a<>-1 do Begin
R.ŞEN
Sayfa 64
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
if (a<0) and (b<0) then goto Adres;
if a=b then writeln('sayilar esit');
if (a>b) and (a>0) and (b>0) Then
Repeat
say:=say+1;
writeln(say);
Until(say=a);
if( b>a) and (b>0) and (a>0) then
Repeat
b:=b-1;Writeln(b);
Until(b=1);
Writeln('a ve b sayilarini giriniz') ;
Readln(a,b);
End;
end.
Örnek:
Ayrı veri satırından 0 sayısı girilinceye kadar sayılar okutulmaktadır. Veri satırından okutulan
sayıların kaç adet olduğunu bulan ve sonuçta ilan eden akış diyagramını, algoritmayı ve
karşılığı pascal programını yazınız.
Akış Diyagramı
Algoritma
Pascal
VAR
Say,sayi:integer;
BEGIN
Say:=0;
Write(‘Sayi giriniz=’);
Readln(sayi);
While sayi<>0 Do
BEGIN
Say:=say+1;
Write(‘Sayi giriniz=’);
Readln(sayi);
End;
Writeln(‘Veri satırından‘,say,’adet sayı kutuldu.’);
END.
Uygulama: Yukarıda verilen örneğin 3 adım için test işlemini gerçekleştiriniz.
R.ŞEN
Sayfa 65
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Örnek:
Veri satırından sıfır girilinceye kadar bilgisayar dersine ait başarı puanlarını okuyan ve
okunan puanların ortalamasını bulan algoritmayı ve Pascal programını yazınız.
Algoritma
Top  0
Say  1
Ortalama  0
Read Bnot
While(Bnot ^= 0)
Top  Top + Bnot
Read Bnot
Say  Say + 1
If Bnot = 0 Then
Ortalama  Top / Say
EndWhile
Print ‘Okutulan’, Say, ‘ Notun Ortalaması =’, Ortalama
EndIf
End
En Büyük ve En Küçük Bulma İşlemleri
Bu tür işlemlerde iki yol izlenir.
I. Yol : İlk okunan değer En büyük ya da En küçük olarak kabul edilir.
II. Yol : En büyük veya en küçük için başlangıç değerleri atanır.
En büyük için, başlangıç değeri kabul edilen en küçük bir değer,
En küçük için, başlangıç değeri kabul edilen en büyük bir değer olmalıdır.
Örnek :
Ayrı veri satırından sıfır sayısı girilinceye kadar,başarı puanları okutuluyor. En büyük başarı
puanını bulan ve sonuçta yazan bir algoritmayı birinci yolu kullanarak yazınız ve algoritmayı
üç veri satırı için test ediniz.
I . Yol :
Algoritma
Read not
Enbnot
While not ^= 0 Do
If enb< not Then
Enbnot
EndIf
Read not
EndWhile
Print enb
End
R.ŞEN
Sayfa 66
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Uygulama :
Yukarıda algoritması düzenlenmiş yazılımın Pascal programını yazınız.
Örnek :
Aynı veri satırından 1 adet olmak üzere, pek çok not okutuluyor. En büyük notu bulan ve
yazan bir algoritmayı ikinci yolu kullanarak yazınız ve algoritmayı üç veri satırı için test
ediniz.
Algoritma
Enb  -999999
Read
not
While not ^= 0 Do
If not > enb Then
Enb  not
EndIf
Read not
EndWhile
Print enb
End
Uygulama :
Yukarıda yazılan algoritmanın akış diyagramını ve karşılığı Pascal programını yazınız.
R.ŞEN
Sayfa 67
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
for ifadesi
Problem çözümünde tekrar eden işlemleri gerçekleştirmenin daha kolay bir yoluda for ifadesini
kullanmaktır.Bu tip döngülerde, for satırında verilen değişkene, belirlenen bir aralıkta, değişkene
atanacak ilk değerden başlayarak,belirlenen artışlarla en son değer atanıncaya kadar, for kontrolündeki
işlem yada işlemler (ifade yada ifadeler) işletilir. Aşağıda Akış Diyagram sembolü, algoritma ve
pascal programındaki genel ifadesi verilmiştir.
Akış Diyagram Sembolü
Yukarıdaki diyagramda döngü başlangıcında verilen isim döngüde kullanılan değişken ismidir. Bu
değişken ismi ile döngü yapısı kontrol edilmektedir. İlk ; döngüdeki değişken ismine atanacak ilk
değerdir. Son; değişken ismine atanacak son değerdir. Artış; döngüdeki değişken ismine atanacak
değerlerin hangi aralıkta olacağını belirtir. Artış miktarının belirtilmediği durumda artış miktarı 1 (bir)
kabul edilir. Döngüler iki yönde değerlendirilirler. Bunlar;
1. Artan yönlü
2. Azalan yönlü
“Artan Yönlü dögüler”in başlangıç değeri, bitiş değerinden küçüktür. Bu nedenle artan yönlü
döngülerde atanacak ilk değerin, atanacak son değerden küçük olmasına dikkat edilmelidir. “Azalan
Yönlü Döngüler”in başlangıç değeri, bitiş değerinden büyüktür. Bu nedenle azalan yönlü döngülerde
atanacak ilk değerin, atanacak son değerden büyük olmasına dikkat edilmelidir.
Algoritma
Genel Yazılımı:
For Değişken  İlkdeğer TO Sondeğer By Artış
İfade(ler)
EndFor
Do
Algoritmada For cümlesinde değişkene atanan ilk değerden başlayarak, en son değere doğru artış
miktarı kadar arttırılarak atanan her bir değer için For ile EndFor aralığı uygulamaya koyulur. En son
değer için For ile EndFor aralığı uygulamaya koyulduktan sonra For uygulaması sona erer. For ‘dan
sonra işletilecek satır var ise, uygulamaya o satırdan devam edilir.
Pascal
Genel Yazılımı:
For Değişken:=İlkdeğer TO/Downto Sondeğer Do
İfade veya Blok(lar);
R.ŞEN
Sayfa 68
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Pascal’da For cümlesinde Değişkene atanan ilk değerden başlayarak, en son değere doğru aradaki
değerler veya karakterler arttırılarak her bir değer için DO ifadesinden sonraki ifade veya Blok(lar)
uygulamaya koyulur. En son değer için FOR’ un kontrol ettiği ifade veya Blok(lar) uygulamaya
koyulduktan sonra For uygulaması sona erer. For ‘ dan sonra işletilecek satır var ise uygulamaya o
satırdan devam edilir. For
cümlesindeki TO artiş yönünü, DOWNTO eksiltme yönünü
göstermektedir.
Örnek :
X gibi bir değişkenin tanımlandığı düşünülsün ve bu değişkeni for cümlesinde kullanıp,X
değerinin aldığı her bir değeri pascal programında ekrana yazdıralım. Aşağıdaki programı
inceleyiniz.
VAR
X:Integer;
BEGIN
For X:=1 TO 20 DO
Writeln(‘X’in değeri=’,X);
END.
Yukarıdaki örnekte tanımlanan x gibi bir değişkenin, for cümlesi içinde alacağı ilk değer olarak x’ e 1
(bir) sayısı atanıyor ve writeln ifadesi X=1 için çalıştırılarak, ekrana X’in içeriği olarak 1 (bir)
değerini basar. X’ in değeri bir artarak, X’ e yeni değer olarak atanır ve x’ in içeriği 2 olur. X= 2 için
writeln ifadesi ile X’in içeriği 2 olarak ekrana basılır. Bu durum, X<20 olduğu sürece devam eder.
X=20 olduğunda for işlemi sona erer.
Örnek :
100’ e kadar olan sayıların toplamını alan bir akış diyagramını, algoritmayı ve karşılığı
pascal programını for ifadesi kullanarak gerçekleştiriniz.
Akış Diyagramı
R.ŞEN
Sayfa 69
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Örnek:
100’ e kadar olan çift sayıların toplamını FOR ifadesi kullanarak bulan bir algoritma yazınız.
Algoritma
Top0
For say0 to 100 By 2 Do
TopTop+say
EndFor
Print‘1 den 100e kadar olan çift sayıların toplamı =’, Top
End
Uygulama:
Yukarıda algoritması verilen yazılımın Akış Diyagramını ve karşılığı Pascal programı
yazınız. Üç adım için test ediniz.
Örnek:
Aşağıdaki Pascal program örneğini inceleyiniz ve yorumlayınız. Programın algoritmasını
yazınız.
VAR
X,Y: Integer;
BEGIN
X:=5;
For Y:=X To 20 Do
write(Y);
Writeln(Y);
END.
Örnek:
Her biri ayrı veri satırından olmak üzere 10 adet sayı okutuluyor. En küçük sayıyı bulan ve
sonuçta veri satırına yazan bir akış diyagramını, algoritmayı ve karşılığı pascal programını
FOR ifadesi kullanarak gerçekleştiriniz. Üç adım için test ediniz.
Akış Diyagramı
R.ŞEN
Sayfa 70
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Örnek:
Ayrı veri satırından olmak üzere 10 adet sayı okutuluyor. Okutulan sayıların en küçüğünü ve
en küçük sayının kaçıncı sırada girildiğini bulan ve sonuçta en küçük sayıyı ve sırasını ayrı
veri satırlarına yazan algoritmayı ve karşılığı pascal programını FOR ifadesi kullanarak
gerçekleştiriniz. Üç adım için test ediniz.
Algoritma
enk9999
for i1 to 10 do
read sayı
if enk>sayı then
enksayı
sırai
endif
endFor
Print enk
Print sıra
End
Pascal
Var
Enk,sayi,sira,i:integer;
Begin
Enk:=9999;
For i:=1 to 10 do
Begin
Write(i,‘. sayiyi giriniz=’);
Readln(sayi);
İf enk>sayi then
Begin
Enk:=sayi;
Sira:=i;
End;
End;
Writeln(‘en kucuk sayi=’,enk);
Writeln(‘en kucuk sayi ‘,sira,’. sirada girildi);
End.
Uygulama:
Yukarıdaki örneğin akış diyagramını ve test işlemini gerçekleştiriniz.
Örnek:
Ayrı veri satırından olmak üzere 10 adet sayı okutuluyor. Okutulan sayıların en küçüğünü, en
küçük sayıdan tekrarlanan var ise kaç adet olduğunu bulan ve sonuçta en küçük sayıyı ve kaç
adet tekrarlandığını ayrı veri satırlarına yazan algoritmayı ve karşılığı pascal programını FOR
ifadesi kullanarak gerçekleştiriniz.
Algoritma
enk9999
for i1 to 10 do
read sayı
if enk>sayı then
enksayı
say0
endif
if enk=sayı then
R.ŞEN
Sayfa 71
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
saysayı+1
endif
endFor
Print enk
Print say
End
Pascal
Var
Enk,sayi,say,i:integer;
Begin
Enk:=9999;
For i:=1 to 10 do
Begin
Write(i,‘. sayiyi giriniz=’);
Readln(sayi);
İf enk>sayi then
Begin
Enk:=sayi;
Say:=0;
End;
İf enk=sayi then
Say:=say+1;
End;
Writeln(‘en kucuk sayi=’,enk);
Writeln(‘en kucuk sayidan ‘,say,’ adet tekrarlandı’);
End.
Uygulama:
Yukarıdaki örneğin akış diyagramını ve test işlemini gerçekleştiriniz.
Örnek:
Ayrı veri satırından olmak üzere 10 adet sayı okutuluyor. Okutulan sayıların en küçüğünü, en
küçük sayıdan tekrarlanan var ise kaç adet olduğunu, en küçük ilk ve son sayı kaçıncı sırada
girildiğini bulan ve sonuçta en küçük sayıyı, kaç adet tekrarlandığını, ilk en küçük ve son en
küçük sayı kaçıncı sırada girildiğini bulan ve sonuçta ayrı veri satırlarına yazan algoritmayı
ve karşılığı pascal programını FOR ifadesi kullanarak gerçekleştiriniz.
Algoritma
enk9999
for i1 to 10 do
read sayı
if enk>sayı then
enksayı
ilki
say0
endif
if enk=sayı then
saysayı+1
soni
endif
endFor
Print enk
Print say
Print ilk
Print son
End
R.ŞEN
Sayfa 72
PROGRAMLAMA TEMELLERİ-DERS NOTLARI
Pascal
Var
Enk,sayi,say,ilk,son,i:integer;
Begin
Enk:=9999;
For i:=1 to 10 do
Begin
Write(i,‘. sayiyi giriniz=’);
Readln(sayi);
İf enk>sayi then
Begin
Enk:=sayi;
İlk:=i
Say:=0;
End;
İf enk=sayi then
begin
Say:=say+1;
Son:=i;
End;
Writeln(‘en kucuk sayi=’,enk);
Writeln(‘en kucuk sayidan ‘,say,’ adet tekrarlandı’);
Writeln(‘ilk en kucuk sayi ‘,ilk,’. Sırada girildi’);
Writeln(‘son en kucuk sayi ‘,son,’. Sırada girildi’);
End.
Uygulama:
Yukarıdaki örneğin akış diyagramını ve test işlemini gerçekleştiriniz.
Örnek :Bir veri satırından matematik ve fizik notu okutuluyor. Matematikten ve fizikten en küçük
notu alan öğrencilerin sayısını bulan ve bulunanları yazdıran bir algoritma yazınız. 5 adım için
test ediniz.
Algoritma
Msay0
fsay0
menk 101
fenk  101
Read mat,fiz
While mat ^= menk OR fiz^=fenk Do
Read mat,fiz
If menk>mat then
menk  mat
msay  msay+1
Endif
If mat = menk
then
msay  msay+1
Endif
If fenk>fiz then
fenk  fiz
fsay fsay+1
endif
If fiz=fenk then
fsay fsay+1
Endif
EndWhile
Print menk, msay,fenk,fsay
End
R.ŞEN
Sayfa 73

Benzer belgeler

23 3- Turbo Pascal Programlamada Giriş – Çıkış İşlemleri 3.1 Turbo

23 3- Turbo Pascal Programlamada Giriş – Çıkış İşlemleri 3.1 Turbo malzemesi alınır. Daha sonra yemek pişirilir ve sonunda servis yapılır. Başka bir örnek verecek olursak; size 10 sayısı ile 20 sayısının toplam sonucu sorulabilir. Burada ilk yapılacak işlem iki sa...

Detaylı