PASCAL
Pascal Programlama Dili Yapısı
İnsanlar her zaman düşünür ve problem
çözerler. Bir çok problem, üzerinde ya az yada hiç düşünülmeden çözülebilir.
Her gün evden çıkarken ne giyilmelidir? Bunun için muhtemelen pencereden
dışarıya bakılır. Hava yağmurlu ise mevsim gereklerine göre giyinmenin yanı
sıra dışarıya çıkarken bir de şemsiye alınması gerekir. Hava güneşli ve sıcak
ise o taktirde daha ince giyinilerek dışarıya çıkılır. Böylece problemin çözümü
kendiliğinden oluşturulan bir kararla sağlanır. Yukarıdaki basit örnekte
yapılan iş, önce problemin belirlenmesi ve sonra problemin tanımından yola
çıkarak çözüm için değişik alternatiflerin değerlendirilmesidir. Bilgisayar
programlaması sırasında izlenebilecek bir çok yol ve yöntem vardır. Bilgisayar
programcısının problemin ilişkin çözümünü ortaya çıkarabilmesi için problem
çözümü ile ilgili bilgileri bilmesi gerekir. Bilgisayar programlamasında genel
olarak belirli kalıp ve kurallara uyulur. Bir bilgisayar yazılımının
oluşturulması sırasında genel olarak aşağıda sıralanan ana adımlara uyulur.
Problemin tanımı
Çözüm yönteminin belirlenmesi
Programın kodlanması
Programın çalışır duruma getirilmesi
Belgeleme ve güncelleştirme
Problemin Tanımı: Problemin normal yazı diliyle
tanımlanması işlemlerini kapsamaktadır. Problem çözümüne ilişkin iyi bir
program yapabilmek için, problemin iyi bir şekilde tanımlanması gerekir.
Çözüm Yönteminin Belirlenmesi: Bu adımda çözümün genel yaklaşımı,
giriş/çıkış şemaları hazırlanır ve problem çözümü adım adım program akış
diyagramlarıyla gösterilir.
Programın Kodlanması: Program ayrıntılı olarak tanımlanıp
çözüm yolları açıkça belirtildikten sonra program kodlama çalışmalarına
başlanabilir. Programın baştan sona yapısal bir düzende hazırlanması ve uygun
bir programlama dili seçilmesi seçim işleminin ilk aşamasını oluşturur.
Programın Çalışır Hale Getirilmesi: Programın kodlanması sırasında yapılan
imla hataları, kodlama ve mantık hatalarının giderilmesi işlemlerini kapsar.
İyi bir bilgisayar programının doğruluğundan emin olmak için defalarca test
edilmiş olması gerekmektedir.
Belgeleme ve Güncelleştirme: Oluşturulan bir yazılımı, sadece o
yazılımı geliştiren kişilerin kullanabilmesi gibi bir kısıtlamanın önüne geçmek
için ayrıntılı referans hazırlanması olayına belgeleme denilmektedir.
Bir yazılımda, o yazılımı kullanan kişi
veya kuruluşların yeni gereksinimleri ve değişen koşullar nedeniyle
değişiklikler yapılması gerekli olabilir. Bu değişikliklere güncelleme adı
verilir. İyi bir programda bulunması gereken özellikler arasında
güncellenebilme özelliği ön sıralarda yer almaktadır.
Algoritma,
verilen herhangi bir sorunun çözümüne ulaşmak için uygulanması gerekli
adımların hiç bir yoruma yer vermeksizin açık, düzenli ve sıralı bir şekilde
söz ve yazı ile ifadesidir. Algoritmayı oluşturan adımlar özellikle basit ve
açık olarak sıralandırılmalıdır. Algoritmik çözüm yöntemlerine ilk örneği
günlük yaşantımızdan verelim.
Örnek 1: Örneğimiz bir
insanın evden çıkıp işe giderken izleyeceği yolu ve işyerine girişinde ilk
yapacaklarını tanımlamaktadır.
Çözüm 1:
Evden dışarıya
çık
Otobüs durağına
yürü
Durakta
gideceğin yöndeki otobüsü bekle
Otobüsün
geldiğinde otobüse bin
Biletini bilet
kumbarasına at
İneceğin yere
yakınlaştığında arkaya yürü
İneceğini
belirten ikaz lambasına bas
Otobüs durunca
in
İşyerine doğru
yürü
İş yeri giriş
kapısından içeriye gir
Mesai
arkadaşlarınla selamlaş
İş giysini giy
İşini yapmaya
başla.
Yukarıdaki
örnekte görüldüğü gibi, evden işe gidişte yapılabilecek işlemler adım adım
sırasıyla, kısa ve açık olarak tanımlanmaya çalışılmıştır. Yukarıdaki algoritma
kişinin otobüsü kaçırma olasılığı düşünülmeden oluşturulmuştur. Kişi durağa
geldiğinde bineceği otobüsü kaçırmış ise algoritmamız aşağıdaki şekilde
değiştirilebilir.
Çözüm 2:
Evden dışarıya
çık
Otobüs durağına
yürü
Otobüsün saati
geçmiş ?
Durakta gideceğin
yöndeki bir sonraki otobüsü bekle
Bir sonraki
otobüs gelene kadar 4. adımı uygula
Otobüsün
geldiğinde otobüse bin
Biletini bilet
kumbarasına at
İneceğin yere
yakınlaştığında arkaya yürü
İneceğini
belirten ikaz lambasına bas
Otobüs durunca
in
İşyerine doğru
yürü
İş yeri giriş
kapısından içeriye gir
Mesai
arkadaşlarınla selamlaş
İş giysini giy
İşini yapmaya
başla.
Her iki örnekte
görüldüğü gibi sorunu çözüme götürebilmek için gerekli olan adımlar sıralı ve
açık bir biçimde belirlenmiştir. Algoritmanın herhangi bir adımındaki küçük bir
yanlışlık doğru çözüme ulaşmayı engelleyebilir. Bu nedenle algoritma
hazırlandıktan sonra dikkatle incelenmeli ve varsa adımlardaki yanlışlıklar
düzeltilmelidir.
Programlamanın
temeli olan algoritma hazırlanmasında dikkat çekici bir nokta, aynı sorunu
çözmek için hazırlanabilecek olası algoritma sayısının birden çok olmasıdır.
Başka deyişle, bir sorunun çözümü için birbirinden farklı birden fazla sayıda
algoritma hazırlanabilir. Bu da gösteriyor ki herhangi bir problemin çözümü
için birbirinden farklı yüzlerce bilgisayar programı yazılabilir.
Bir bilgisayar
programı için hazırlanacak olan algoritma da aynı şekilde çözüm yolunu bilmeyen
bir kişiye, çözüme ulaşmak için neler yapması gerektiği anlatılıyormuş gibi
hazırlanmalı ve eksik bir nokta bırakmaksızın gerekli tüm adımları açık ve
düzenli olarak içermelidir. Çözüm için kullanılacak bilgilerin nereden
alınacağı, nerede saklanacağı ve çözümün program kullanıcısına nasıl
ulaştırılacağı algoritma adımları arasında belirtilmelidir.
Aşağıda değişik
işlemlere ilişkin algoritma örnekleri verilmiştir.
Örnek 2: İki sayıyı
toplamak için gerekli programa ait algoritmanın oluşturulması.
Algoritma:
A1 :Birinci
sayıyı gir
A2 :İkinci
sayıyı gir
A3 :İki sayının
toplamını yap
A4 :Toplamın
değerini yaz
A5 :Bitir.
Bu tam bir
algoritmadır. Sözcüklerin ortaya çıkaracağı yanlış anlamaların ortadan
kaldırmak amacıyla semboller ve matematik dilini gerektiren bazı kısaltmalar
kullanmak daha uygun olacaktır. Bir algoritma yazılırken şu metot izlenmelidir:
Programda
kullanılacak elemanları temsil etmek üzere uygun isimler veya değişkenler seç.
Bazı isimlere
başlangıç değeri olarak çözümün gerektirdiği uygun değerler ver.
Gerekirse
programa girilecek verileri düzenle.
Cebirsel
notasyon ve kararlar kullanarak aritmetik işlemleri gerçekleştir.
Çıkışı düzenle.
Bitir.
Yukarıda iki
sayının toplanması için oluşturduğumuz algoritmayı bu yeni gereksinimlere
uyarak yeniden yazalım.
Toplam adı için
Z
Birinci Sayı
için X
İkinci Sayı
için Y değerleri kullanılırsa;
Algoritma:
A1 :X değerini
gir
A2 :Y değerini
gir
A3 :Z ¬ X+Y
A4 :Z’ yi yaz
A5 :Bitir
Görüldüğü üzere
bu şekilde bir algoritma ile çözüm yolunu izlemek daha kolaydır. Bundan sonra
bu tip algoritma kullanılacaktır.
A6 :Bitir
Bu örnekte Ort
değeri ile iki sayının ortalaması temsil edilmiştir.
Örnek 4: Beş sayının
toplamını ve ortalamasını veren programa ait algoritmanın oluşturulması.
Toplam adı için
Top
Ortalama adı
için Ort
Girilen sayılar
için X
Arttırma için
Sayac kullanılırsa
Algoritma:
A1 :Top ¬ 0,
Sayac ¬ 0
A2 :X’i gir
A3 :Top¬ Top+X
A4 : Sayac ¬
Sayac +1
A5 :Eğer Sayac
<5 ise A2’ye git
A6
:Ort¬ Top/5
A7 :Top ve Ort
değerlerini yaz.
A8 :Bitir.
Örnek 5: Kenar
uzunlukları verilen dikdörtgenin alan hesabını yapan programa ait algoritmanın
hazırlanması. Kenar uzunlukları negatif olarak girildiği durumda veri girişi
tekrarlanacaktır.
Dikdörtgenin
kısa kenarı : a
Dikdörtgenin
uzun kenarı : b
Dikdörtgenin
alanı : Alan
Algoritma:
A1 :a değerini
gir
A2 :a<0 ise
1. adımı tekrarla
A3
:b değerini gir
A4 : b<0 ise
3. adımı tekrarla
A5
:Alan ¬ a*b
A6 :Alan
değerini yaz
A7 :Bitir.
Örnek 7: Verilen bir
sayının faktöriyelini hesaplayan programın algoritmasının oluşturulması
Sayının
faktöriyeli :Fak
Faktöriyel
degişkeni :X
Faktöriyeli
hesaplanacak sayı :Y
Algoritma:
A1 :Fak¬ 1, X¬
0
A2 :Y’i gir
A3 :Y<0 ise
2. adımı tekrarla
A4
:X¬ X+1
A5 :Fak¬ Fak*X
A6 :X< p>
A7 :Fak değerini yaz
A8 :Bitir
Bu algoritmada
1. adımda X e 0 ve Fak değişkenine 1 değeri atanıyor. 2. adımda Y değeri giriliyor
ve 3. adımda Y değerinin 0 dan küçük bir değer olup olmadığı denetleniyor ve
denetim sonucuna göre gerekli komut veriliyor. 4. adımda X’in değeri 1
arttırılıyor ve 5. adımda X için Fak değeri hesaplanıyor. 6. adımda X in
değerinin faktöriyeli hesaplanacak sayıdan küçük olması durumunda 4. adımdan
itibaren işlemlerin tekrarlanması komutu veriliyor, X’ in değerinin Y’ye eşit
olması durumunda işlemler tamamlanarak hesaplanan değerin yazdırılması
işleminden sonra programın çalışması sona ermektedir.
Geliştirilecek olan yazılımın genel
yapısının şematik gösterimine akış diyagramı veya blok diyagramı adı
verilir. Akış diyagramları, yazılımı oluşturacak program parçalarını ve bu
parçaların birbirleri ile olan ilişkilerini belirler. Bir bilgisayar
programının oluşturulmasında akış diyagramlarının hazırlanması, algoritma
oluşturma aşamasından sonra gelmektedir. Bilgisayar programının oluşturulması
sırasında algoritma aşaması atlanarak, doğrudan akış diyagramlarının
hazırlanmasına başlanabilir. Programlama tekniğinde önemli ölçüde yol almış
kişiler bu aşamayı da atlayarak direkt olarak programın yazımına geçebilirler.
Akış diyagramlarının algoritmadan farkı,
adımların simgeler şeklinde kutular içinde yazılmış olması ve adımlar
arasındaki ilişkilerin (iş akışı) oklar ile gösterilmesidir.
Akış diyagramlarında kullanılan
semboller, anlamları ve kullanış amaçları aşağıdaki tabloda verilmiştir.
Simge |
Simgenin Adı ve
Anlamı |
|
Elips Akış diyagramının
başlangıç ve bitiş yerlerini gösterir. Başlangıç simgesinden çıkış oku
vardır. Bitiş simgesinde giriş oku vardır. Paralel Kenar: Programa veri girişi ve programdan
elde edilen sonuçların çıkış işlemlerini gösterir. Dikdörtgen Aritmetik işlemler ve değişik atama
işlemlerinin temsil edilmesi için kullanılır. · ·
· · · Eşkenar Dörtgen Bir karar verme işlemini temsil eder. · ·
· · · Altıgen Program içinde belirli blokların ard
arda tekrar edileceğini gösterir. Oklar Diyagramın akış yönünü ,yani her hangi
bir adımdaki işlem tamamlandıktan sonra hangi adıma gidileceğini gösterir. |
Tablo 1. İş
akış diyagramlarında kullanılan semboller ve anlamları
Ayrıntılı bir akış diyagramı, yazılımı
oluşturan işlemleri ve ilişkilerini en küçük detayına kadar belirler.
Bir bilgisayar programının
geliştirilmesinde kullanılan programlama dili ne olursa olsun bu programların
akış diyagramlarında genel olarak yalnız üç basit mantıksal yapı kullanılır. Bu
mantıksal yapılardan en basiti sıralı yapıdır. Sıralı yapı, hazırlanacak
programdaki her işlemin mantık sırasına göre nerede yer alması gerektiğini
vurgular. Bu yapı sona erinceye kadar ikinci bir işlem başlayamaz.
Mantıksal yapılardan ikincisi Karar
Verme yapısıdır (Şekil 1.3). Programlama sırasında If...Then... Else yapısı
ile tanıyacağımız bu mantıksal yapılar, birden fazla sıralı yapı seçeneğini
kapsayan modüllerde, hangi şartlarda hangi sıralı yapının seçileceğini
belirler.
Üçüncü mantıksal yapı çeşidini tekrarlı
yapılar oluşturmaktadır. Bu yapılara Pascal programlama dilinde For(Şekil
1.4.a), While ve Repeat..Until (Şekil 1.4.b), yapısı adı da verilir.
Şartlara göre değişik işlem gruplarının yapılmasını sağlar. Bu yapı yukarıda
sözü edilen iki yapının çeşitli kombinezonların tekrarlanmasından oluşmuştur.
Söz konusu üç değişik yapı, değişik kombinezonlarda
kullanılarak istenilen işlevleri yerine getirecek programlar hazırlanabilir.
Programların bu üç basit yapı ile sınırlandırılması program modüllerinin daha
kolay tasarlanmasını sağlar.
Pascal programlama dili 1968 yılında
Niklaus Wirth tarafından geliştirilmiş üst düzey programlama dilidir. Pascal
programlama dilinin günümüzdeki sürümleri Turbo/Borland ve Windows Pascal
adları ile bilinmektedir. Turbo Pascal programlama dili mühendislik
problemlerinin çözümlerinde, bilimsel projelerde, sağladığı grafik desteği ve
program yazmadaki kolaylıklarıyla aranılan bir dil olma özelliğini
sürdürmektedir.
Pascal programlama dilinin önemli
özelliklerinden biri, program yazmadaki kolaylıkların yanısıra, yazılan bir
metinin kolaylıkla değiştirilebilmesi, program içindeki bir metinin istenilen
yere taşınabilmesi, kopyalanabilmesi, yazılan programdaki yazım kurallarının
kolaylıkla kontrol edilebilmesi, hataların kolaylıkla tespiti ve bu hataların
düzeltilmesi için yaptığı öneriler vb. gibi işlemlerin çabuk ve güvenilir bir
şekilde yapılabilmesine olanak sağlamasıdır. Pascal’ın programcıya sunduğu
önemli özelliklerden biri de; bazı programlarda ortak olarak kullanılan program
parçalarının ayrı bir Pascal dosyası olarak saklanması suretiyle farklı
programlarda bu program parçalarının kullanılabilmelerine olanak tanımasıdır.
Pascal Menüleri Pascal editöründe kullanımı kolaylaştıran bir çok menü vardır.
Bu menülere ulaşmak için “Alt ” tuşu ile birlikte menü isimlerinin ilk
harflerine basmak yeterlidir. Menüye ulaştıktan sonra menü komutlarına erişim
için üç yol vardır. 1)Mouse ile, 2)Ok tuşlarıyla 3) menü komutu üzerindeki
işaretli harfe basılır. Burada Pascal menülerinin tamamını tanıtmayıp sıklıkla
kullanılan menü ve menü komutlarının kullanımı anlatılacaktır. Burada tanımı
yapılan menüler, Windows Pascal için ifade edilmekle olup, aralarındaki küçük
farklarla Turbo ve Borland Pascal 7.0 için de geçerlidir.
Pascal file menüsü üzerinde 10 ayrı menü
komutu vardır. Bunların görevleri aşağıda özetlenmiştir.
Open: Daha önceden diskte varolan Pascal program dosyasının
editöre yüklenmesi için kullanılır. Pascalın DOS sürümü ile çalışırken aynı
yöntem geçerli olmakla birlikte, aynı işlemi, F3 tuşuna basarak da yapabiliriz.
Bu menü komutu kullanıldığında Şekil 2’de verilen diyalog kutusu görülecektir.
Disk üzerinde bulunan bir Pascal
dosyasını editöre yüklemek için diyalog kutusunda görülen *.PAS yazılı yere
programın adı yazılarak “Enter” tuşuna basılır veya önce tab tuşuna bastıktan
sonra ok tuşları ile programın adı üzerine gelinerek “Enter” tuşuna basılır.
Aynı seçim, mouse ile açılmak istenilen programın üzerine gelip iki kez sol
tuşu tıklayarak da gerçekleştirilir.
New: Editörde yeni bir Pascal dosyası yaratmak amacıyla
kullanılır.
Save: Yazılan programın hafızaya alınması işlemini
gerçekleştirir. Program ilk defa hafızaya alınacak ise Şekil 3’de görülen Save
As Diyalog Kutusu ekrana gelerek, programa bir isim verilmesini bekleyecektir.
Programın hafızaya alınması için program adı yazıldıktan sonra mouse ile
"ok" tuşuna veya klavyeden “Enter” tuşuna basılması gerekir. Daha
önceden diskte bulunan bir Pascal programı üzerinde yapılan değişiklikler
nedeniyle hafızaya alma işlemi için bu komut kullanıldığı zaman, program eski
adı ile kaydedileceğinden aynı diyalog kutusu ekranda görülmez.
Pascalın DOS sürümü ile çalışırken
yazılan programın hafızaya alınması için bu menü komutu ile aynı işleve sahip
olan F2 tuşuna basılması yeterlidir.
Save As: Editörde aktif penceredeki Pascal
programının yeni bir isimle kaydedilmesi amacıyla kullanılır. Komutun
kullanılmasıyla ekrana Save As Diyalog Kutusu gelir. Programa verilecek yeni
isim yazılarak “Enter” tuşuna basılır.
Save All: Pascal ile program yazarken, birden fazla
program penceresi ard arda açılabilir. Komut kullanıldığında açık olan bütün
Pascal programları bilinen adları ile hafızaya alınır. Komutun kullanılması
için açık pencerelerdeki programlara daha önceden isim verilmiş olmalıdır.
Change Dir...: Sadece Dos sürümü Turbo/Borland Pascalda
bulunan bu komut, aktif çalışma sürücüsü veya dizininin değiştirilmesi amacıyla
kullanılır. Komut çalıştırıldığında istenilen dizin veya sürücü seçilerek
“Alt+K” tuş kombinasyonuna basılır veya tab tuşu ile “Ok” butonuna gelinerek
“Enter” tuşuna basılır.
Print: Aktif Pascal penceresindeki program listesinin yazıcıdan
alınmasını sağlar.
Printer Setup : Printer seçimi ve printer
ayarlamalarının yapılması için kullanılır. Komut kullanıldığında Şekil 4 ‘te
verilen diyalog kutusu ekrana gelir. Printer ve port bölümünden yazıcı seçimi
yapılır. Set Up.. tuşuna basıldığında yazıcı ayarlarında istenilen
değişikliklerin yapılmasını sağlayan diğer bir diyalog kutusu ekrana
gelecektir. Burada kağıt boyutu, kağıdın yazıcıya yerleştirilme şekli, kağıt
kaynağı (el ile, üst tepsi, otomatik vb), kullanılacak kağıt kalitesi gibi
değişkenlerden istenilenleri seçmemize olanak sağlanmıştır.
Get Info: Sadece Dos sürümü Turbo/Borland Pascal
'da bulunan bu komut, program ile ilgili bilgileri içeren bir diyalog kutusu
ekrana gelir. Amacı programın ile ilgili çeşitli bilgilerin programcıya
sunulmasıdır.
Dos Shell: Sadece Dos sürümü Turbo/Borland Pascalda
bulunan bu komut, geçici olarak Pascal editörünün terkedilip Dos ortamına
dönülmesi amacıyla kullanılır. Dos ortamından tekrar editöre dönülmesi için Dos
promptunda EXIT yazılır. Edit Menüsü Edit menüsü (Şekil 5) yardımıyla program içinde belli blokların
silinmesi, başka yere taşınması, kopyalanması gibi işlemleri yapabilmek
mümkündür. Yukarıda sözü edilen işlemlerin yapılabilmesi için öncelikle
üzerinde işlem yapılacak program bloklarının Shift ve Ok tuşlarına aynı anda
basılması ile işaretlenmesi gerekmektedir. Metinin işaretlenmesi işleminden
sonra edit menüsü üzerinde görülen menü komutları çalıştırılır. Cut: İşaretli
metinin silinmesi amacıyla kullanılır. Kısa yol tuşu (Shift+Del).
Copy: İşaretli metini panoya (clipboard) kopyalar. Bu şekilde
panoya kopyalanan metinin istenilen yere kopyalanması işlemi için bu komuttan
sonra aşağıda tanımlanan Paste komutunun kullanılması gerekmektedir. Kısa yol
tuşu (Ctrl+Ins).
Paste: Copy komutu ile panoya kopyalanan metinin editör üzerinde
istenilen yere kopyalanabilmesini sağlar. Kısa yol tuşu (Shift+Ins).
Search Menüsü (Şekil 6), program yazımı
sırasında belirli sözcüklerin aranması ve değiştirilmesi, istenilen program
satırına hızlı bir şekilde ulaşılması vb. gibi işlemlerin kolaylıkla
yapılabilmesini sağlar.
Find: Bu komut program içinde herhangi bir metinin aranması
amacıyla kullanılır. Komut aktif hale geldiğinde Şekil 7’deki diyalog kutusu
ekrana gelir. Aranılacak metin, kendisi için ayrılmış alana yazılarak klavyeden
“Enter” tuşuna veya mouse ile Ok butonuna basılır.
Bulunulan noktadan ileriye doğru arama
yapılacak ise Direction bölümünde Forward terimi işaretlenmeli, geriye doğru
arama yapılacak ise Backward terimi işaretlenmelidir.
Scope bölümünde, sözcüğün tüm dosya
içinde aranılması isteniyorsa global, sadece seçilen metinde aranılması
isteniyorsa selected text bölümleri işaretlenmelidir. Origin bölümünde, aramaya
başlanacak sözcük, nokta bütün dosya içinde aranılacak ise entire scope,
imleçin bulunduğu noktadan itibaren aranılacak ise from kursor bölümleri
seçilmelidir.
Replace:Yazılan program içinde kullanılan
herhangi değişkenlerin veya Pascal sözcüklerinin başka bir değişken veya Pascal
sözcüğü ile değiştirilmesi gerekebilir. Bu komut kullanıldığında Şekil 8’deki
diyalog kutusu ekrana gelir. Text to find’ 'in karşısında ayrılmış alana
değiştirilmesi istenilen sözcük, New Text’ in karşısındaki ayrılmış alana yeni
sözcük yazılır. Değiştirilecek sözcük programın tamamında veya birden çok
yerinde değiştirilecek ise Change all tuşunun üzerine gelinir ve klavyeden
“Enter”, mouse ile Ok butonuna basılır. Programda aranılan metin bulunduğunda
değişim için kullanıcıdan onay bekleyen bir diyalog kutusu ekrana gelir.
Değişime onay için “Y”, değişime hayır demek için “N” tuşuna basılır.
Search Again: Find menü komutu ile arama yapıldığında,
program içinde aranılan metine ilk karşılaşılan yerde arama kesilir. Aynı
metini tekrar aramak için Search Again menü komutu kullanılır.
Goto Line Number: Program içinde istenilen program
satırına hızlı bir şekilde ulaşılmasını sağlar (Şekil 9). Komutun kullanımıyla
ekrana gelen diyalog kutusunda ayrılmış alana satır numarası yazılarak “Enter”
tuşuna basılır.
Run menüsünde yazılan programın
çalıştırılması için bazı komutlar bulunmaktadır. Run menüsünde bulunan menü
komutları aşağıda özetlenmiştir.
Run: Programı derleyerek çalıştırır. Kısa yol tuşu (Ctrl+F9).
Program Reset: Sadece DOS sürümü Turbo/Borland
Pascal‘de bulunan bu komut ile Step Over veya Trace Into komutlarından biri
çalıştırılınca, yapılan kontrolü durdurmak ve hata kontrolünü tekrar programın
ilk deyimi üzerine almak için kullanılır. Kısayol tuşu (Ctrl+F2).
Goto Cursor: Sadece DOS sürümü Turbo/Borland
Pascal‘de bulunan bu komut ile editör ekranındaki program yazılımında kursörün
bulunduğu satıra kadar olan program bölümünün derlenerek çalıştırılmasını
sağlar. Kısayol tuşu (Ctrl+F4).
Trace Into: Sadece DOS sürümü Turbo/ Borland
Pascal‘de bulunan bu komut ile editör ekranındaki programın satır satır
çalıştırılmasını sağlar. Kısayol tuşu (F7).
Step Over: Sadece DOS sürümü Turbo/ Borland
Pascal‘de bulunan bu komut ile editör Trace On durumuna geçer. Aktif durumdaki
programın çalışması sırasında programın hangi satırları izlediğini ve işlem
sırasını izlemek amacıyla kullanılmaktadır. Kısayol tuşu (F8.)
Compile Menüsü (Şekil 11) editörde aktif
bulunan Pascal programının derlenmesinde, bu programa bağlı unit programların
derlenmesinde ve yazılan Pascal programının dos/windows ortamında kendi başına
çalışır duruma yani; XXXXXXXX.EXE durumuna getirilmesi için kullanılır. En çok
kullanacağımız menü komutları aşağıda özetlenmiştir.
Compile: Editör ekranındaki aktif durumda olan
programı derlemek amacıyla kullanılır. Kısa yol tuşu (Alt+F9).
Make: Editör ekranındaki aktif durumda olan programı ve bu
programa bağlı unit harici programlarını en son değiştirilmiş halleriyle
derleme işlemini yapar. Kısa yol tuşu (F9).
Build: Editör ekranındaki aktif durumda olan programları ve bu
programa bağlı unit harici programlarını birlikte derler.
Destination Memory (Disk): Sadece DOS Turbo Pascalda bulunan bu
komut ile Programın derlenerek çalıştırılacağı ortamın belirtilmesi için
kullanılır. Seçenek üzerine “Enter” tuşuna basılarak Memory yazılı bölüm Disk
veya Disk yazılı ise Memory durumuna alınır. Destination Disk durumunda derleme
sonucunda program dos ortamında direkt olarak çalıştırılabilir.
Target: Yazılan programın derlenip çalıştırılacağı ortamı
belirlemek için kullanılır. Pascal Real mode, Protected mode ve Windows olmak
üzere üç ortam sunmaktadır.
Editör ve derleyici ile ilgili detaylar
kullanıcı kitaplarından veya Help menüsünden sağlanabilir.
Bir Pascal programı en genel anlamda üç
ayrı kısımdan oluşmuştur. Bu kısımlar bulunmaları gereken sıraya göre aşağıda
verilmiştir. Program Başlığı; Tanımlama Bloğu; BEGIN İcra Bloğu; END.
Programların asıl icra bölümü son bölümüdür. Yukarıda icra bloğu olarak
gösterilen bu bölüm, Pascal komut cümlelerinden oluşur. ICRA bloğu, “BEGIN” ile
başlar “END.” ile sona erer. Her program bloğu birden fazla “END” içerebilir.
Ancak bu end deyimleri program içinde bulunan değişik blokların sonunu
göstermek için kullanılır ve hiç birinin sonunda “.” işareti bulunmaz. “.”
işareti sadece ana programın sonunu göstermek amacıyla kullanılabilir. Ana
programın sonu haricindeki diğer “END” deyimlerinin sonunda “;” işareti
kullanılır. Program Başlığı: Bir Pascal programının ilk kısmı, kullanılması
programcının seçimine bağlı olan “program başlığı” dır. Program başlığı,
programa bir isim vermek için kullanılır ve program isimlerinde İngiliz
alfabesinde bulunmayan Türkçe karakterler kullanılmamalıdır. Programa uzun
isimler verilebilir ancak sözcükler arasında boşluk bulunmamalıdır. Tanımlama
Bloğu: Pascal programının bu bölümünde program icra bloğunda kullanılan
sabitler ve değişkenlerin isimleri ve bunların ne tür sabit/değişken olduğu
bildirilir. Bu blok pascal programı içerisinde mutlaka belirtilmelidir. Örnek
olarak, aşağıda değişik veri tiplerindeki değişkenlerin bir tanımlama bloğunda
nasıl tanımlanabileceği gösterilmiştir. Tanım ve Veri Tipi S:REAL; A:STRING;
B:INTEGER; C:LONGINT; F:SHORTINT; H:BOOLEAN; J:BYTE; KL:WORD; Özel Semboller Bir Pascal programında kullanılabilecek
özel semboller A’dan Z’ye büyük ve a’dan z’ye küçük İngiliz alfabesi harfleri,
0-9 arası rakamlardır. Pascal programlama dilinde kullanılan diğer bazı
semboller ve anlamları aşağıda tanımlanmıştır.
>, <, = |
Herhangi değişken ve sabitlerin karşılatırılmasında kullanılır. |
[ ] |
Bu işaret içine diziye ait indis numarası yazılır. |
( ) |
Veri okunması, yazılması, yazılacak/okunacak bilgilerin
başlangıç ve bitişlerinde kullanılır. |
.. |
İndisli değişken eleman tanım ayırıcı. |
; |
Pascal komut ve deyimlerini birbirinden ayırmak için
kullanılırlar. |
’(Tek Tırnak) |
Alfasayısal bilgilerin tanımlanmasında kullanılır. Bilgilerin
başlangıç ve bitişlerinde kullanılmaktadır. |
, (Virgül) |
Değişken tanımlarında, okunacak yada yazdırılacak bilgiler
arasında ayıraç olarak kullanılır. |
: |
Bilgi karakter yapı tipi tanımlamalarında ve sayısal bilgilerin
çıkış formatlarında kullanılır. |
. |
Bir gruba bağlı bir alt grup veya bir kayıt saha ismi
tanımlarında elemanlandırma işareti olarak, sabit bilgilerdeki rakamların
ondalık işareti olarak ve pascal programlarının sonunu belirlemek amacıyla
kullanılır. |
:= |
İşaretin solundaki değere sağındaki bilgiyi atama işlemini
yapar. |
{ } |
Açıklama ifadelerinin başlangıç ve bitimlerinde kullanılır. |
(* *) |
Açıklama ifadelerinin başlangıç ve bitimlerinde kullanılır. |
Aritmetik İşlem İşaret Karakterleri
Program içinde
yapılacak aritmetik işlemlerde kullanılır.
+ |
Toplama işlemi ve karakter katarlarının birleştirilmesinde kullanılır |
- |
Aritmetik işlemlerin yapılmasında çıkarma işlemi amacıyla
kullanılır |
* |
Aritmetik işlemlerin yapılmasında çarpma işlemi amacıyla
kullanılır |
/ |
Aritmetik işlemlerin yapılmasında bölme işlemi amacıyla
kullanılır |
Aritmetik İşlemlerde İşlem Öncelik Sıraları
İşlem Önceliğinde Bazı Kurallar:
§
Aynı öncelik sırasına sahip işlemlerde hangisi
önce tanımlanmış ise önce onun işlemi gerçekleştirilir.
§
İşlem öncelik sırası küçük olan bir aritmetik
işlemin önce yapılması isteniyorsa parantez içine alınmalıdır.
§
İç içe birden fazla parantez kullanılması
durumunda, işlem öncelik sırası daima en içteki paranteze ait işleminindir.
Turbo Pascalda kendi işlevleri dışında
kullanılamayacak olan sözcükler vardır. Bu sözcükler ayrılmış sözcükler olarak
tanımlanmakta olup programcı tarafından yeniden tanımlanamaz, bir değişken ismi
olarak kullanılamaz veya değiştirilemezler. Bu sözcüklerin isimleri aşağıda verilmiştir.
And |
Asm |
Array |
Begin |
Case |
Const |
Constructor |
Destructor |
Div |
Do |
Downto |
Else |
End |
File |
For |
Function |
Goto |
If |
Implementation |
In |
Inline |
Interface |
Label |
Mod |
Nil |
Not |
Of |
Object |
Or |
Packed |
Procedure |
Program |
Record |
Repeat |
Set |
Shl |
Shr |
String |
Then |
To |
Type |
Unit |
Until |
Uses |
Var |
While |
With |
Xor |
Tanıtıcılar
Pascal programlama dilinde icra bloğu
içinde kullanılan değişkenler VAR tanım bloğu içinde, sabitler ise CONST bloğu
içinde tanımlanır. Örneğin A,B değerleri değişken ve C değeri sabit ise bu
değerlerin programın tanım bloklarında ifade edilmesi aşağıdaki şekilde
olacaktır.
VAR A;B:REAL;
CONST C=12:INTEGER;
Burada, VAR’dan sonra gelen REAL ifadesi
A ve B değişkenlerinin gerçel sayı veri tipinde olduğunu belirtirken CONST’dan
sonra gelen INTEGER ifadesi C sayısının integer veri tipi olduğunu
belirtmektedir.
Pascal Programlama dilinde kullanılan
değişik veri tiplerinin tanımları ve geçerli olduğu alanlar aşağıda
tanımlanmıştır.
Turbo Pascalda kendi işlevleri dışında
kullanılamayacak olan sözcükler vardır. Bu sözcükler ayrılmış sözcükler olarak
tanımlanmakta olup programcı tarafından yeniden tanımlanamaz, bir değişken ismi
olarak kullanılamaz veya değiştirilemezler. Bu sözcüklerin isimleri aşağıda
verilmiştir:
And |
Asm |
Array |
Begin |
Case |
Const |
Constructor |
Destructor |
Div |
Do |
Downto |
Else |
End |
File |
For |
Function |
Goto |
If |
Implementation |
In |
Inline |
Interface |
Label |
Mod |
Nil |
Not |
Of |
Object |
Or |
Packed |
Procedure |
Program |
Record |
Repeat |
Set |
Shl |
Shr |
String |
Then |
To |
Type |
Unit |
Until |
Uses |
Var |
While |
With |
Xor |
Tanıtıcılar
Pascal programlama dilinde icra bloğu
içinde kullanılan değişkenler VAR tanım bloğu içinde, sabitler ise CONST bloğu
içinde tanımlanır. Örneğin A,B değerleri değişken ve C değeri sabit ise bu
değerlerin programın tanım bloklarında ifade edilmesi aşağıdaki şekilde
olacaktır.
VAR A;B:REAL;
CONST C=12:INTEGER;
Burada, VAR’dan sonra gelen REAL ifadesi
A ve B değişkenlerinin gerçel sayı veri tipinde olduğunu belirtirken CONST’dan
sonra gelen INTEGER ifadesi C sayısının integer veri tipi olduğunu belirtmektedir.
Pascal Programlama dilinde kullanılan
değişik veri tiplerinin tanımları ve geçerli olduğu alanlar aşağıda
tanımlanmıştır.
Integer tipindeki veriler tamsayılardan
oluşmuşlardır ve kayar nokta içermezler. Turbo Pascal’daki tamsayılar -32768
ile +32767 arasında sınırlandırılmışladır.
Word Tipi
Veriler
Word Tipi veriler, 0-65535 arasındaki
tamsayılardan oluşmuşlardır.
Shortint Tipi
Veriler
-128 ile +127 arasındaki tamsayılardan
oluşmuşlardır.
Byte Tipi
Veriler
Byte tipi veriler işaret ve desimal nokta
içermeyen 0-255 arasındaki değerlerden oluşan tamsayılardır. Programda, 0-255
arasındaki tamsayılar için değişken veya sabitlerin Byte tipi olarak
tanımlanması bellekten tasarruf sağlar.
Longint Tipi
Veriler
-2147483648 ile +2147483647 arasında
görev yaparlar ve tamsayıların menzil olarak en kapsamlısıdır.
Boolean Tipi
Veriler
Mantıksal ifadeler olarak da
isimlendirilebilen Boolean tipi veriler sadece iki değerden oluşurlar. Bunlar
“FALSE” ve “TRUE” dir.
Durum:Boolean;
Hata:Boolean;
Char Tipi
Veriler
Char tipi veriler, ASCII karakter
kümesinin 256 adet elemanından oluşurlar. Char tipi veriler bir sabit olarak
ele alındığından ’ ’içerisinde yazılır.
String Tipi
Veriler
Bu tip veriler, karakter kümesi şeklinde
olup ’ ’ içerisinde yazılırlar.
A:STRING[ 5] ;
B:STRING[ 16] ;
Burada A isimli karakter kümesi maksimum
5 karakterden, B isimli karakter dizisi ise maksimum 16 karakterden
oluşmaktadır.
Bu bilgilerin eşliğinde ilk pascal
programını yazabiliriz.
Program Birinci_ve_ilk_prog_ram;
Var
Mesaj:string[ 7] ;
BEGIN
Mesaj:=‘Merhaba Yaşamı Yaşanası Kılan
Güzel İnsanlar’;
Write(Mesaj);
END.
Programımızın çalıştırılmasıyla ekran
görüntüsü aşağıdaki gibi olacaktır.
Merhaba, Yaşamı Yaşanası Kılan Güzel
İnsanlar
Real Tip
Veriler
Real tip veriler desimal nokta içeren ve
üslü formda ifade edilebilen gerçel sayılardır. Üs ifadesi olarak “E” harfi
kullanılmaktadır. Kullanımları ile ilgili örnekler aşağıda verilmiştir. Tanım
aralığı;2.9E-39..1.7E38 'dir. Bellekte 6 byte yer kaplar.
-2.3454
123.11223344
-2.45E+12
2.45E+12
1.123123E-12
Olağan koşullarda bir programlama hatası
söz konusu değilse veya çok büyük sayılar ile çalışılmıyor ise REAL tip
sayılarla çalışmada bir sorun ile karşılaşmayız.
Kişisel bilgisayarların mikro işlemcileri
80x86 olarak isimlendirilir. Bu işlemci ailesinin yükünü hafifletmek için 80x87
olarak bilinen matematik işlemcisi kullanılır. Pascalda bu işlemci ile
kullanılmak üzere dört tip tanımlanmıştır. Bunlar;Single, Double, Extended ve
Comp 'tur.
Single Tip
Veriler
Single tip veriler, 1.5E-45...3.4E38 sayı
kümesi aralığında tanımlanabilir. Bellekte 4 byte yer kaplar.
Double Tip
Veriler
Double tip veriler, 5.0E-45...3.4E38 sayı
kümesi aralığında tanımlanabilir. Bellekte 8 byte yer kaplar.
Extended Tip
Veriler
Extended tip veriler,
3.4E-4932...1.1E4932 sayı kümesi aralığında tanımlanabilir. Bellekte 10 byte
yer kaplar.
Comp Tip
Veriler
Comp tip veriler çok uzun tamsayıların
tanımlanması için kullanılır. Comp veri tipi ile 19-20 basamaklı sayılar ifade
edilir. Tanım aralığı; -263...263
80x87 sınıfındaki veri tiplerinin
kullanılabilmesi için programın en başına {$N+} derleyici komutu verilmelidir.
Bilgisayarda matematik işlemci yok ise {$E+} matematik işlemci emülasyonu da bu
satıra eklenir.
{$N+}{$E+}
program cok_buyuk_sayilar;
var
Uses wincrt;{Dos için CRT}
a:single; b:double;
c:extended; d:comp;
begin;
A:=12E-40;
B:=12E+39;
D:=1234567890;
C:=A+B+D;
Writeln(C);
End.
Pascal 'da okuma işlemi için kullanılan
komutlar READ ve READLN olup genel kullanım yapısı şu şekildedir;
Read(A1,A2,A3,...,An)
ReadLn(A1,A2,A3,...,An)
Read ile Readln arasındaki fark: Read,
okuma işlemi tamamlandıktan sonra aynı satırda kalınmasını, Readln ise yeni bir
satıra gelinmesini sağlar. Bir Pascal programı içerisinde bu iki komutun
kullanımı aşağıdaki program parçasında verilmiştir.
Var
s,a,n:real;
begin
Read(s,a,n)
end.
Okunacak değerlerin düzeni;
12.45 43.543 62.12
Aynı değerleri ReadLn ile okutturmak
istersek;
Var
s,a,n:real;
begin
Readln(s,a,n)
end.
Okunacak değerlerin düzeni yukarıdaki
okuma düzeni ile aynı olabileceği gibi her değer ayrı bir satırda verilebilir,
her hangi satırlarda verilebilir, örnek olarak s, a ve n değerleri aşağıdaki
okuma düzeninde okutturulmuştur.
12.45 43.543
62.12
Pascal programlama dilinde yazma işlemi
için WRITE ve WRITELN komutları kullanılmaktadır. Bu komutların
genel kullanım yapısı şu şekildedir;
Write(A1,A2,A3,...,An)
Writeln(A1,A2,A3,...,An)
İki kullanım şekli arasındaki fark, Read
ile Readln arasındaki fark gibidir. İfadeler Write ile yazdırıldıktan sonra
kursör aynı satırda bekleyecektir, Writeln ile yazdırılması durumunda ise
kursör bir sonraki satıra geçecektir.
Var
s,a,n:integer;
......
begin
s:=3;a:=9;n:=5;
Write(s);
Write(a);
Write(n);
End.
Programın çalıştırılmasıyla
elde edilen sonuç;
395
olacaktır.
Aynı değişkenleri Writeln
ile yazdırdığımızda;
Var
s,a,n:integer;
......
begin
s:=3;a:=9;n:=5;
Writeln(s);
Writeln(a);
Writeln(n);
End
3
9
5
elde edilecektir.
Writeln deyimi ile yapılan bilgi
çıkışlarını düzenlemek için yazım formatları kullanılır. Yazdırılmak istenilen
değerin tipine bağlı olarak iki farklı yazım formatı kullanılır.
1. Yazım Formatı (M:n)
: Bu yazım formatına göre yazdırılmak istenilen M değeri n
karakterlik alanda sağa dayalı olarak yazılır. M değerini oluşturan dijit veya
karakterin uzunluğu n sayısından küçük ise, aradaki fark kadar sol tarafta
boşluk bırakılır. M değerinin uzunluğu n sayısına eşit veya büyük ise yazdırma
işlemi format belirtilmemiş gibi gerçekleştirilir.
Örnek:
Const
i:integer=567;
b:boolean=True;
c:char='b';
h:string[ 10]
='Nasılsınız';
begin
Writeln('123456789');Writeln;
Writeln(i:9);
Writeln(b:9);
Writeln(c:9);
Writeln(h:9);
Writeln(i:2);
Writeln(h:5);
end.
2.
Yazım Formatı (M:n:k) : Bu yazım formatı real sayılar üzerinde
çalışmaktadır. Bu yazım formatıyla reel sayılar üssüz notasyonda yazdırılır.
Bunu sağlamak için sadece real sayılar için geçerli olan 2. yazım formatı
kullanılır. Yazdırılacak M real değeri n karakterlik alanda sağa dayalı olarak
üssüz yazdırılır, k ise n karakterin sonundaki kesirli kısmı göstermektedir.
Örneğin; A değeri, A:7:2 şeklinde yazdırılmak istenirse; program real sayı için
7 karakterlik yer ayırır. Bu alanın son iki hanesi ondalıklı kısım için sondan
3. hanesi ise desimal nokta için kullanılır. Sayının tamsayı kısmı ayrılan
alanın uzunluğundan küçük ise, aradaki fark kadar sol tarafta boşluk bırakılır.
Yazdırılacak sayının tam sayı kısmı bu alana sığmıyor ise, tamsayı için ayrılan
alanın uzunluğu yazdırılan sayının tamsayı alan uzunluğuna eşit büyüklükte
kabul edilir. Kesirli kısmı ayrılan alandan daha küçük ise aradaki fark kadar
sağ tarafa 0 dijiti ilave edilir. Kesirli kısım alana sığmıyorsa yuvarlatılarak
yazılır. Yazım sırasında kesirli alanın yazılması istenmiyorsa k sayısının “0”
yazılması gerekir. k sayısının sıfır olması desimal noktanın yok olmasını
sağlar.
Örnek:
const
a:real=123.127927;
begin
Writeln('123456789');
Writeln('*********');;
Writeln(a:9:4);
Writeln(a:9:3);
Writeln(a:9:2);
Writeln(a:9:0);
Writeln(a:7:2);
Writeln(a:6:2);
Writeln(a:5:2);
Writeln(a:0:0);
end.
Programın çalışmasıyla
elde edilen sonuç aşağıda verilmiştir. Program sonucuna göre sondan 2. ve 3.
satırların aynı olduğuna dikkat ediniz.
Ekran komutları ekrandaki görüntü
tasarımı için kullanılan komutlardır. Bu komutların program içinde
kullanılabilmesi için, program başlığı satırından sonra USES komutunda CRT
(Windows programları için WINCRT) unit isminin yazılması gereklidir. Aksi halde,
ekran komutlarıyla ilgili yazılan komutlar Pascal derleyicisi tarafından
tanınmayacaktır. En çok kullanılan ekran komutları aşağıda verilmiştir.
Clrscr
"Clrscr" CRT/WINCRT üniti
içinde yer alan bir alt programdır. Ekranda daha önce yazılı olan ifadeleri
silerek ekranın temizlenmesi amacıyla kullanılır.
GotoXY
Kursörü ekranın istenilen sütun ve
satırına taşımak için kullanılır. Kullanımı;
GotoXy(Sütun,Satır);
şeklindedir. Normal bir ekran üzerinde 80
sütun ve 25 satır vardır.
Örnek:
Uses wincrt;
var
j:word;
begin
clrscr;
for j:=1 to 20 do
begin
gotoxy(j,j);Write('Balıkesir
Üniversitesi');
gotoxy(50-j,j);Write('Balıkesir
Üniversitesi');
end;
end.
Readkey
Klavyeden basılan karaktesi okumak için
kullanılır. Bu fonksiyonun sonucu char tipi bilgidir. Turbo/Borland Pascal 7.0
'da tek başına kullanıldığında program bu komuta rastladığında, herhangi bir
tuşa basılıncaya kadar programın çalışması kesilir.
Örnek
Uses wincrt;
var
tus:char;
begin clrscr;
Write('Balıkesir ');Readkey;
Writeln('Üniveristesi');Readkey;
end.
Readkey komutunun çok kullanıldığı
uygulamalardan biri de basılan veya basılacak karakteri kontrol etmektir.
Aşağıda verilen örnek programda her B
tuşuna basıldığında "Balıkesir Üniversitesi" yazmaktadır. Program ESC
tuşuna basılarak durdurulmaktadır.
Örnek:
Uses wincrt;
var
tus:char;
j:word;
begin
repeat
tus:=readkey;
if upcase(tus)='B' then
Write('Balıkesir Üniversitesi');
until tus=#27;
end.
Keypressed
Klavyeden bir tuşa basılıp basılmadığını
kontrol etmek amacıyla kullanılan bir komuttur. Aşağıda verilen örnek programı
inceleyiniz.
Örnek:
Uses wincrt;
var
tus:char;
j:word;
begin
j:=0;
repeat
Write('Balıkesir Üniversitesi');
j:=j+1;
if keypressed then tus:=readkey;
if j=75 then
begin
clrscr;
j:=0;
end;
until tus=#27;
end.
Window
Ekranda pencere oluşturmak için
kullanılan bir komuttur. Bu komut sadece Turbo/Borland Pascalda kullanılabilir.
Kullanımı;
Window(X1,Y1, X 2,Y2);
X1 :Pencerenin sol sütun numarası (1-80)
Y1 :Pencerenin sol satır numarası (1-25)
X2 :Pencerenin sağ sütun numarası (1-80)
Y2 :Pencerenin sağ satır numarası (1-25)
Delay
Programın belirtilen süre kadar
bekletilmesini sağlar. Delay (1000) komutu, programın 1 sn bekletilmesini
sağlamaktadır. Bu komut sadece Turbo/Borland Pascalda kullanılabilir.
Örnek:
uses crt;
begin
window(20,5,60,20);
REPEAT
DELAY(5); Write('BAÜ');
UNTIL keypressed;
end.
ClrEol
Kursörün bulunduğu konumdan satırın
sonuna kadar bütün karakterleri silmek için kullanılır. Kursör bulunduğu
konumda kalır.
Örnek:
uses winCrt;
begin
ClrScr;
Writeln('Günaydın Bugün nasılsınız?');
Writeln('Enter tuşuna Basınız...');
Readln;
GotoXY(1,2); {Kursör 2.satır 1.sütuna
konumlandırılıyor}
ClrEol;
Writeln ('İyi olmanızı duymak güzel.');
end.
Highvideo
Ekrana yazılacak yazının parlak
yazılmasını sağlar. Bu komut sadece Turbo/Borland Pascalda kullanılabilir.
Lowvideo
Ekrana yazılacak yazının mat yazılmasını
sağlar. Bu komut sadece Dos için Turbo/Borland Pascalda kullanılabilir.
Normvideo
Ekrana yazılacak yazının normal
parlaklıkta yazılmasını sağlar. Bu komut sadece Turbo/Borland Pascalda
kullanılabilir.
Örnek:
Uses Crt;
Begin
Clrscr;
Highvideo;Writeln('Parlak');
Lowvideo;Writeln('Mat');
Normvideo;Writeln('Normal');
End;
WhereX
Kursörün üzerinde bulunduğu sütunun
numarasını verir.
WhereY
Kursörün üzerinde bulunduğu satırın
numarasını verir.
Örnek:
uses winCrt;
begin
Write('Şu anda kursör pozisyonu
:',WhereX,',',WhereY);
end.
TextColor
Ekrana yazdırılacak yazının rengini
ayarlamak için kullanılır. Bu komut sadece Turbo/Borland Pascalda
kullanılabilir. Kullanımı;
Textcolor(Renkkodu/Adı);
Renklerin kodları aşağıda verilmiştir.
Renk |
Kod |
Adı |
Siyah |
0 |
Black |
Mavi |
1 |
Blue |
Yeşil |
2 |
Green |
Turquaz |
3 |
Cyan |
Kırmızı |
4 |
Red |
Pembe |
5 |
Magenta |
Kahve |
6 |
Brown |
Açık gri |
7 |
Lightgray |
Koyu gri |
8 |
Darkgray |
Açık mavi |
9 |
Lightblue |
Açık yeşil |
10 |
Lightgreen |
Açık turquaz |
11 |
Lightcyan |
Açık kırmızı |
12 |
Lightred |
Açık pembe |
13 |
Lightmagenta |
Sarı |
14 |
Yellow |
Beyaz |
15 |
White |
Yanıp/sönme |
128 |
Blink |
Textcolor(0)=Textcolor(black)
Textbackground
Ekrana yazdırılacak yazının zemin rengini
ayarlamak için kullanılır. Bu komut sadece Turbo/Borland Pascalda
kullanılabilir. Kullanımı;
Textbackground(renk kodu);
Örnek:
uses Crt;
begin
{ Siyah üzerinde yeşil karakterler}
TextColor(Green);
TextBackground(Black);
WriteLn('Merhaba');
{ Gri üzerinde yanıp sönen kırmızı
karakterler}
TextColor(LightRed+Blink);
TextBackground(LightGray);
WriteLn('Günaydın!');
{ Mavi üzerinde sarı karakterler}
TextColor(14); { Yellow = 14 }
TextBackground(Blue);
WriteLn('nasılsın');
NormVideo; { Orijinal özellik }
End.
Sound/Nosound
Sound, verilen frekanste ses üretmek için
kullanılır. Nosound, sound ile üretilen sesi ortadan kaldırmak için kullanılır.
Bu komutlar sadece Turbo/Borland Pascalda kullanılabilir.
Örnek:
uses Crt;
begin
Sound(220);
Delay(200);
NoSound;
end.
Çalışma Sorusu:
Readkey ve/veya keypressed komutlarından
yararlanarak bir şifre programı yazınız. Program çalıştırılıp şifrenin
girilmesi esnasında her girilen karaktere karşılık ekranda X
KARAKTERİ GÖRÜNTÜLENECEKTİR.
Programın çalışma yönünün değiştirilmesi
için kullanılan GOTO deyiminin genel kullanımı şu şekildedir;
GOTO Etiket;
GOTO
deyimi ile kullanılan etiket, çalışma akışının yönlendirileceği noktayı
gösterir. Bu etiketin programın tanım bloklarının olduğu yerde LABEL adı
verilen bölümde tanımlanması gereklidir.
GOTO
deyiminin kullanıldığı program bloğu içinde bulunması zorunludur. Etiket, bir
komut cümlesinin yani bir program noktasının etiketlenmesi için yazıldığında
kendisinden sonra " : " karakterinin yazılması zorunludur.
GOTO deyimleri ile ana program ve alt programlar arasında veya bir alt program ile başka bir alt program arasında dallanma yapılamaz. Ayrıca, IF, CASE, FOR, REPEAT, ve WHILE deyimlerinin blokları içine dallanılamaz. Ancak bu deyimler ile kullanılan bloklar içinden, dışarıya dallanma yapılabilir.
Turbo
PASCAL' daki kontrol ve döngü deyimlerinin etkinliği ve PASCAL programlarının
yapısallığı GOTO deyimine ihtiyacı ortadan kaldırır. Basic ve Fortran' da
yazılan programlarda bol miktarda görülen GOTO deyimlerine Pascal programlarında
pek rastlanmamaktadır.
Örnek:Aşağıdaki
program, 1' den n sayısına kadar olan sayıların toplamını hesaplamaktadır.
Program içinde üç kez GOTO deyimi kullanılmıştır. GOTO devam şeklindeki komut
cümlesi şartsız, diğerleri ise şartlıdır.
Program Dallanma;
Uses crt; {Windows
için Wincrt}
Var
I,N : INTEGER;
Top : REAL;
Cev : Char;
Label
Basla, Devam, Son;
Begin
Başla:
Clrscr;
I:=0;
Top:=0;
Write('Bir sayı
giriniz=');
Readln (N);
Devam:
I:=I+1;
Top:=Top+1;
IF I=N then goto son;
GOTO DEVAM;
Son:
Writeln('1 den', N,'e
kadar sayıların toplamı=', Top:5);
Writeln;
Write ('Devam Edecek
misiniz :');
Readln (Cev);
IF Cev In ['E' , 'e']
then GOTO Basla;
End.
IF deyimi, bir şartın doğru veya yanlış
olmasına bağlı olarak programın belirli parçalarının çalışmasını veya
çalışmamasını sağlar. IF deyimi, IF şart cümlesi THEN Blok1;
veya
IF şart cümlesi THEN
Blok1 ELSE Blok2;
şeklinde
kullanılabilir.
Buradaki şart cümlesi,
birbirlerine mantıksal operatörler ile bağlanmış bir veya birkaç ilişkisel
operasyon veya bir tek boolean ifade olabilir. Aşağıdaki örnekleri inceleyelim:
IF A=B THEN ...
IF (A=B) AND (A=C)
THEN ...
IF (A+1) < (B-1)
THEN ...
IF (Cev In ['E' ,
'e']) THEN ...
Then sözcüğünü
takiben, bloklar birden fazla komut cümlesinden oluşurlar ise, bu blokların
BEGIN ve END deyimleri içine alınması zorunludur. IF deyiminin ikinci şekli
yani ELSE' den sonra gelen komut veya komutlar dizisi geçerlilik kazanmışsa,
ELSE' den önce gelen komut cümlesinin yada, End deyiminin sonuna ';' işareti
konulmaz. Aşağıdaki örneklerden 1.si hatalı 2.si doğrudur.
IF A=B Then Writeln
('Eşit'); Else Writeln ('Farklı');
IF A=B Then Writeln
('Eşit') Else Writeln ('Farklı');
IF deyimi içinde
kullanılan Blok1 ve Blok2 çeşitli komut cümlelerinden oluşabileceğine göre bu
blokların içinde başka IF cümleleri de yer alabilir. IF deyimlerinin bu şekilde
kullanılmasına iç içe IF deyimleri adı verilir. IF cümlesinde yer alan her iki
bloğun geçerlilik kazanması söz konusu olamaz.
IF degisken_1 degisken_2
then
begin
-----
islemler
-----
end;
Bu kullanım şekli IF
deyiminin en yalın şekillerinden biridir. Degisken_1 ile Degisken_2 arasındaki
koşulun durumuna göre THEN ifadesinden sonra gelen işlemler yapılır.
Örnek:
Aşağıda verilen kodlarına göre daire, üçgen ve dikdörtgenin çevresini
hesaplayan Pascal programını yazınız.
1. Üçgen
2. Dikdörtgen
3. Daire
Program Cevre_Hesabi;
uses crt; {Windows
için Wincrt}
var
sekil:byte;
uzun1,uzun2,uzun3:real;
cevre:real;
Begin
Writeln('1. Üçgen');
Writeln('2.
Dikdörtgen');
Writeln('3. Daire');
Write('Şeklin Kodunu
Giriniz');
Readln(Sekil);
If Sekil=1 then
Begin
Write('Uçgenin 1.
Kenar Uzunluğunu giriniz :');readln(Uzun1);
Write('Uçgenin 2.
Kenar Uzunluğunu giriniz :');readln(Uzun2);
Write('Uçgenin 3.
Kenar Uzunluğunu giriniz :');readln(Uzun3);
Cevre:=uzun1+uzun2+uzun3;
end;
If Sekil=2 then
Begin
Write('Dikdörtgenin
Kısa Kenar Uzunluğunu giriniz:') ;
readln(Uzun1);
Write('Dikdörtgenin
Uzun Kenar Uzunluğunu giriniz :');
readln(Uzun2);
Cevre:=2*(uzun1+uzun2);
End;
If Sekil=3 then
Begin
Write('Dairenin
yarıçapını giriniz :');readln(Uzun1);
Cevre:=2*pi*Uzun1;
End;
Writeln('Seçilen
Nesnenin Çevre Uzunluğu =',Cevre:8:2);
End.
Örnek :
Aşağıda verilen kodlara göre birim dönüşümlerini veren Pascal programı yazınız.
Fahrenhayt 'tan (F)
Santigrad 'a (C) : C=5/9*(F-32)
İnç 'ten (I)
Santimetre 'ye (Cm) : Cm=2.54*I
Mil 'den (M) Kilometre
'ye (Km) : Km=1.6*M
Pound 'dan (P)
Kilogram 'a (Kg) : Kg=0.45*P
Program
metrik_cevrimler;
uses crt; {Windows
için Wincrt}
var kod:byte;
F,C,I,Cm,M,Km,P,Kg:real;
Begin
Writeln('Çevrim
Kodları');
Writeln('1. Fahrenhayt
-> Santigrad');
Writeln('2. İnç ->
Santimetre ');
Writeln('3. Mil
->Kilometre ');
Writeln('4. Pound
-> Kilogram ');
Write('Çevrim Kodunu
Giriniz ='); Readln(Kod);
If Kod=1 then begin
Write('Fahrenhayt
Değerini Giriniz ='); Readln(F);
C:=5*(F-32)/9;
Writeln('Santgrad
Değeri =',C:7:2,' °');
end;
If Kod=2 then
Begin
Write('İnç Değerini
Giriniz ='); Readln(I);
Cm:=2.54*I;
Writeln('Santimetre
Değeri =',Cm:7:2);
end;
If Kod=3 then
Begin
Write('Mil Değerini
Giriniz ='); Readln(M);
Km:=1.6*M;
Writeln('Kilometre
Değeri =',Km:7:2);
end;
If Kod=4 then
Begin
Write('Pound Değerini
Giriniz ='); Readln(P);
Kg:=0.45*P;
Writeln('Kilogram
Değeri =',Kg:7:2);
End;
End.
ııÖÖçşIF degisken_1 degisken_2 then begin
----- islemler ----- end ELSE begin ------ islemler ----- end; Bu yapı
kullanıldığında, Degisken_1 ile Degisken_2 belirtilen koşulu karşıladıkları
zaman THEN ifadesinden sonra gelen işlemler, aksi halde ELSE ifadesinden sonra
tanımlanan işlemler yaptırılır. IF degisken_1 degisken_2 then begin islemler1;
end else if degisken_3 degisken4 then begin islemler2; end else if degisken_5
degisken6 then begin islemler3; end;
Örnek:Aşağıdaki program klavyeden girilen yılın kaç gün olduğunu
vermektedir. Programı inceleyiniz. program deneme; uses crt; {Windows için
Wincrt} var yil:integer; begin clrscr; Write('Gun Sayisini ogrenmek istediginiz
yili giriniz :'); readln(yil); if (yil mod 4 )=0 then begin Writeln('Yil 366
gun'); End Else Begin Writeln ('Yil 365 gun'); end; readln; end.
Bir değerin birden fazla değer ile
karşılaştırmasını yapan ve bir eşitliğin bulunması halinde belli program
parçalarının çalıştırılmasını sağlayan CASE deyiminin genel formu aşağıda
verilmiştir.
CASE Kontrol Değişkeni OF
Etiket1 : Blok1 ;
Etiket2 : Blok2 ;
.
.
Etiketn : Blokn ;
ELSE BLOK;
END;
Kontrol değişkeni real haricindeki
standart tiplerden birine sahip olan bir değişkendir. CASE deyimi içindeki
etiketler LABEL olarak tanımlananlardan farklıdır. Bunlar sabit değerler olup,
kontrol değişkeni ile aynı tipe sahiptir. Etiketi takip eden bloklar ise PASCAL
komut cümlelerinden meydana gelir. Komut cümleleri birden fazla ise BEGIN END
deyimleri arasına yazılması zorunludur. Etiketlerin dışında yazılan ELSE deyimi
ve bunu takip eden blok seçimliktir.
Örnek : Aşağıda kişinin yaşı girildiğinde, yaşına uygun mesajlar
veren bir Pascal programı verilmiştir.
Program Yasdilim;
Uses wincrt; {Dos için CRT}
Var yas:integer;
Begin
Clrscr;
Write('Yaşınızı Giriniz :');
ReadLn(YAS);
CASE yas OF
0..5:Writeln('Yaşınız 0-5 arasında');
5..15:Writeln('Yaşınız 5-15 arasında');
15..35:Writeln('Yaşınız 15-35 arasında');
35..50:Writeln('Yaşınız 35-50 arasında');
50..85:Writeln('Yaşınız 50-85 arasında');
else Writeln('Çok Yaşayın');
end;
Readln;
End.
Örnek : Bir diyet uzmanı insanlara , geliştirmiş
olduğu değişik üç tür diyeti uygulamayı düşünmektedir.
1.tür diyet 60 kilo ve altındaki
insanlara uygulanacak kilo aldırıcı program.
2.tür diyet 61 ile 80 kilo arasındaki
insanlara uygulanacak kilo aldırmayan program.
3.tür diyet 81 ile 150 kilo arasındaki
insanlara uygulanacak kilo zayıflatıcı programdır
Buna göre 10 kişi arasında yapılan bir
anketle ,bu üç programa kaçar kişinin düştüğünü ve bu gruplardaki ortalama
kiloları bulan bir PASCAL programını yazınız.
Program rejim_anket;
uses crt; {Windows için Wincrt}
var kilo,grp1,grp2,grp3,i,j,k:integer;
grp1ort,grp2ort,grp3ort:real;
grp1top,grp2top,grp3top:integer;
BEGIN
for i:=1 to 10 do
begin
write('Kişinin Kilosunu giriniz
:');Readln(Kilo);
case kilo of
0..60: begin
grp1:=grp1+1;
grp1top:=grp1top+kilo;
end;
61..80: begin
grp2:=grp2+1;
grp2top:=grp2top+kilo;
end;
81..150: begin
grp3:=grp3+1;
grp3top:=grp3top+kilo;
end;
end;
end;
grp1ort:=grp1top/grp1;
grp2ort:=grp2top/grp2;
grp3ort:=grp3top/grp3;
Writeln('1. Gruptaki kişi sayısı =',grp1,'
1. Gruptaki kilo ortalaması =',grp1ort:8:2);
Writeln('2. Gruptaki kişi sayısı =',grp2,'
2. Gruptaki kilo ortalaması =',grp2ort:8:2);
Writeln('3. Gruptaki kişi sayısı =',grp3,'
3. Gruptaki kilo ortalaması =',grp3ort:8:2);
repeat until keypressed;
End.
Yukarıda verilen programda; for i:=1
to 10 do satırı ile yapılan işlemin 10 kez tekrar edileceği
belirtilmektedir. (For .. do yapısı için 9. Bölüme bakınız.)
Örnek : Kare, dikdörgen, üçgen ve daire alan
hesabı yapan bir Pascal programı hazırlanacaktır. Programda alanı hesaplanacak
nesneyi belirttikten sonra ilgili alanın hesaplanabilmesi için CASE...OF yapısı
kullanılacaktır.
program Sekillerin_alan_hesabi;
uses Crt; {Windows için Wincrt}
var Ch : char;
uzun,gen,yuk,Taban,ycap: real;
Alan_Kare,Alan_Dortgen,Alan_Ucgen,Alan_Daire:real;
i:byte;
begin (* Ana program *)
Writeln;
Writeln('Lütfen Alan Hesabı Yapacağınız
Nesneyi seçiniz :');
Writeln;
Writeln('[K]are');
Writeln('[D]ikdörtgen');
Writeln('[U]çgen');
Writeln('d[A]ire');
Writeln('[C]ıkış');
Write('Alan hesabı yapılacak nesne
(K/D/U/A) ?=');
Readln(Ch);
case UpCase(Ch) of
'K' : begin
Write('Karenin kenar uzunluğu =');
Readln(uzun);
Alan_Kare:= uzun*uzun;
Writeln('Alan ',Alan_kare:12:4);
end;
'D' : begin
Write('Dörtgenin Genişliği = ');
Readln(gen);
Write('Dörtgenin Yüksekliği =');
Readln(yuk);
Alan_Dortgen:=gen*yuk;
Writeln(' Dörtgenin Alanı=
',Alan_Dortgen:12:4);
end;
'U' : begin
Write('Üçgenin Taban Uzunluğu =');
Readln(Taban);
Write('Üçgenin Yüksekliği =');
Read(yuk);
Alan_Ucgen:=taban*yuk/2;
Writeln('Üçgenin Alanı =
',Alan_Ucgen:12:3);
end;
'A' : begin
Write('Dairenin Çapı =');
Readln(Ycap);
Alan_Daire:= sqr(ycap)*Pi;
Writeln('Dairenin Çapı
=',Alan_Daire:12:3);
end;
'C' : begin Writeln('Bitti');exit; end;
else Writeln(' Tanımsız giriş');
end;
end. (* Ana program sonu *)
For deyimi, bir program parçasının
herhangi bir boolean şartına bağlı olmaksızın belirlenen sayıda üstüste
çalıştırılması için kullanılır. For deyiminin genel kullanım şekilleri aşağıda
verilmiştir.
FOR Kontrol Değişkeni :=Başlangıç_Değeri
TO Son_değer DO
Begin
İşlemler
.
.
End;
Bu kullanım şeklinde başlangıç değeri
bitiş değerinden küçük olmak zorundadır. TO ifadesiyle başlangıçtan bitişe
kadar artarak tekrar yapılacağını, DO ifadesi de tanımlanan işlemlerin
tekrarlanacağını bildirir.
P>FOR Kontrol Değişkeni :=Başlangıç_Değeri DOWNTO
Son_değer DO
Begin
İşlemler
End;
For deyiminin bu kullanım şeklinde
başlangıç değeri bitiş değerinden daima büyük olup DOWNTO ifadesi de döngü
değişkeninin tekrarlama işleminde azalacağını belirtir. DO ifadesi ise
belirtilen işlemlerin döngü sayısınca tekrarlanacağını bildirir.
Turbo Pascal dilinde diğer programlama
dillerinden farklı olarak başlangıç değerinden son değere artışlar/azalmalar
birer birer olmaktadır. Aşağıdaki örnek programları inceleyiniz.
Örnek:
Program Hesap_plani;
Uses Crt; {Windows için Wincrt}
var i:byte;
Hesapkod:String[ 10] ;
Hesapadi:String[ 20] ;
begin clrscr;
for i:=1 to 5 do
begin
Write('Hesap Kodu
........:');Readln(HesapKod);
Write('Hesap
Adı............:');Readln(HesapAdi);
end;
Readln;
end.
Örnek:Aşağıdaki örnek Program; 1'den 8'e kadar
artan ve 9'dan 3'e kadar birer birer azalan içiçe for do döngülerinin
kullanımını göstermektedir.
Program icice_for_ornek;
Uses crt; {Windows için Wincrt}
Var
i,j:byte;
Begin
For i:=1 to 8 do
Begin
for j:=9 downto 3 do
Begin
Write(i*j:6);
end;
Writeln;
end;
Readln;
End.
Örnek: 'A' dan 'Z' ye kadar büyük harfleri ekrana yazdıran Pascal
programı.
Program Odev;
var ch:=Char;
begin
Writeln('BÜYÜK HARFLER');
for ch:='A' to 'Z' DO
Write(Ch,' ');
end.
Örnek:klavyeden girilen bir ifadeyi tersten
yazdıran program
program terstenyazma;
uses crt; {Windows için Wincrt}
var
mesaj:string;
i,l:byte;
begin
Write('Bir mesaj yazınız');
Readln(mesaj);
l:=length(mesaj);
Writeln(L);
for i:=L downto 1 do
Write(Copy(mesaj,i,1));
end.
Bir program bloğunun belli bir şart
sağlanıncaya kadar üst üste çalıştırılmasını sağlayan REPEAT deyiminin genel
formu aşağıdaki şekildedir. Repeat
.
Program
Satırları
.
Until
(Boolean Şartı)
Burada
repeat, tekrar etme anlamında olup, tekrar etme işi UNTIL deyimindeki boolean
ifadesi sağlanıncaya kadar devam eder. Bu deyim program satırları bölümüne
herhangi bir şey yazılmaksızın kullanılabilir. Bu döngünün en büyük avantajı
belirli bir sayı ile sınırlandırılmamış olmasıdır. Boolean ifadesindeki şart
sağlanıncaya kadar işlemlere devam edilmektedir. Dikkat edilirse şart
cümlesinin aldığı değer ne olursa olsun program bloğu bir kez çalışmaktadır.
Örnek : Aşağıda verilen Pascal programı karton fabrikasındaki kenar kesme
ünitesinde, kesme makinasından çıkan kartonların ortalama ağırlıklarını
hesaplamaktadır. Karton ağırlığı olarak 0 girildiğinde programın çalışması sona
ermektedir. Program
ornek_repeat;
uses
wincrt;</P< p var<> i,sayi:integer;
top,ort:real;
begin
clrscr;
i:=0;top:=0;ort:=0;
Repeat
i:=i+1;
Write(i,'.
Kartonun Ağırlığını Giriniz =');
Readln(sayi);
Top:=top+sayi
Until
(Sayi=0);
ort:=top/(i-1);
Writeln;Writeln;
Writeln(i-1,'
Adet Kartona ait Ağırlık Ölçümü Yapılmıştır.');
Writeln(i-1,'
Adet Kartonun Toplam Ağırlığı =',top:6:3);
Writeln('Girilen
sayıların ortalaması =',ort:6:3);
repeat
until KeyPressed;
end.
Bir program bloğunun belli bir şart
sağlandığı sürece üst üste icrasını sağlayan WHILE deyiminin genel yazılış
şekli aşağıdadır. While <şart cümlesi> Do BLOK
Do
kelimesini takibeden blok WHILE deyimi tarafından döngüye sokulacak komut
cümlelerini kapsar. Komut cümlesi sayısı birden fazla ise, bu bloğun
BEGIN...END deyimleri arasına alınması zorunludur. WHILE ile REPEAT arasındaki
fark; Repeat döngüsü şart cümlesi yanlış olduğu sürece, While döngüsü ise şart
cümlesi doğru olduğu sürece devam etmesidir. Örnek : Repeat -Until ile yapılan
örnek programı WHILE-DO ile yapalım.
program
ornek_While;
uses
wincrt;
var
i,sayi:integer;
top,ort:real;
begin
clrscr;
Write('1.
Kartonun Ağırlığını Giriniz =');
Readln(sayi);
i:=1;top:=0;ort:=0;
While
Sayi>0 do
begin
Top:=top+sayi;
i:=i+1;
Write(i,'.
Kartonun Ağırlığını Giriniz =');
Readln(sayi);
end;
ort:=top/(i-1);
Writeln;Writeln;
Writeln((i-1),'
Adet Kartona ait Ağırlık Ölçümü Yapılmıştır.');
Writeln((i-1),' Adet Kartonun Toplam
Ağırlığı =',top:6:3);
Writeln('Girilen sayıların ortalaması
=',ort:6:3);
repeat
until KeyPressed;
end
Do BLOK Do kelimesini takibeden blok WHILE deyimi tarafından döngüye sokulacak komut cümlelerini kapsar. Komut cümlesi sayısı birden fazla ise, bu bloğun BEGIN...END deyimleri arasına alınması zorunludur. WHILE ile REPEAT arasındaki fark; Repeat döngüsü şart cümlesi yanlış olduğu sürece, While döngüsü ise şart cümlesi doğru olduğu sürece devam etmesidir.
Örnek
: Repeat -Until ile yapılan örnek programı WHILE-DO ile
yapalım. program ornek_While; uses wincrt; var i,sayi:integer; top,ort:real;
begin clrscr; Write('1. Kartonun Ağırlığını Giriniz ='); Readln(sayi);
i:=1;top:=0;ort:=0; While Sayi>0 do begin Top:=top+sayi; i:=i+1; Write(i,'.
Kartonun Ağırlığını Giriniz ='); Readln(sayi); end; ort:=top/(i-1);
Writeln;Writeln; Writeln((i-1),' Adet Kartona ait Ağırlık Ölçümü
Yapılmıştır.'); Writeln((i-1),' Adet Kartonun Toplam Ağırlığı =',top:6:3);
Writeln('Girilen sayıların ortalaması =',ort:6:3); repeat until KeyPressed; end
ııÖÖçşBir program bloğunun belli bir şart sağlandığı sürece üst üste icrasını
sağlayan WHILE deyiminin genel yazılış şekli aşağıdadır. While <şart
cümlesi> Do BLOK Do kelimesini takibeden blok WHILE deyimi tarafından
döngüye sokulacak komut cümlelerini kapsar. Komut cümlesi sayısı birden fazla
ise, bu bloğun BEGIN...END deyimleri arasına alınması zorunludur. WHILE ile
REPEAT arasındaki fark; Repeat döngüsü şart cümlesi yanlış olduğu sürece, While
döngüsü ise şart cümlesi doğru olduğu sürece devam etmesidir.
Örnek
: Repeat -Until ile yapılan örnek programı WHILE-DO ile
yapalım. program ornek_While; uses wincrt; var i,sayi:integer; top,ort:real;
begin clrscr; Write('1. Kartonun Ağırlığını Giriniz ='); Readln(sayi);
i:=1;top:=0;ort:=0; While Sayi>0 do begin Top:=top+sayi; i:=i+1; Write(i,'.
Kartonun Ağırlığını Giriniz ='); Readln(sayi); end; ort:=top/(i-1);
Writeln;Writeln; Writeln((i-1),' Adet Kartona ait Ağırlık Ölçümü
Yapılmıştır.'); Writeln((i-1),' Adet Kartonun Toplam Ağırlığı =',top:6:3);
Writeln('Girilen sayıların ortalaması =',ort:6:3); repeat until KeyPressed; end
Turbo Pascal 7.0 programlama dilinde bir
döngüyü kırarak sona erdirmek amacıyla kullanılır. Program içinde BREAK
deyimiyle karşılaşıldığında içinde bulunduğu döngüden sonraki program satırının
işler hale getirir. BREAK komutu FOR-DO, REPEAT-UNTIL ve WHILE-DO döngülerinin
içinde kullanılabilir. Konunun daha iyi anlaşılabilmesi için aşağıdaki örneği
inceleyiniz. Örnek Programda i ve j gibi iki sayının çarpımı yapılmaktadır. i=j
olduğu durumda içteki döngü BREAK deyimi ile kırılmakta ve i 'nin değeri bir
üst değere arttırılarak programın çalışmasına devam edilmektedir. Örnek:
Program break_kullanimi;
uses
crt; {Windows için Wincrt}
var
i,j:integer;
begin
clrscr;
for
i:=1 to 10 do
begin
Writeln(i,'.
değeri ');
for
j:=1 to 10 do
begin
if
i=j then break; (* i=j olduğu takdirde içteki döngünün çalışması sona eriyor*)
Writeln(i:3,'
* ',j:3,'= ',i*j:3);
end;
Writeln('Devam
Etmek için ENTER tuşuna Basınız');Readln;
end;
end.
Fortran programlama dilinde olduğu gibi
tekrarlama çevrimini yeniden başlatır. Programcı, bilgi girişlerinde
kullanıcının sayısal olmayan bir giriş yapacağını varsayarak önlem almak
amacıyla tekrarlama işlemlerini yeniden başlatmak için CONTINUE komutu
kullanılır. Bu deyim PASCAL 7.0 ' da geçerlidir.
Örnek:
Program
Continue_Kullanimi;
Uses
Crt; {Windows için Wincrt}
Const
n=5;
var
sayac,i:integer;
rakam
:Array [ 1..n] of Real;
toplam:Real;
begin
clrscr;toplam:=0;
sayac:=1;
While
sayac < n do
begin
Write(Bir
Sayı Giriniz:');
{$I-}
Readln(Rakam[
sayac] );
{$I+}
If
IOResult >0 then
begin
Writeln('Rakam
girmelisiniz');
CONTINUE;
end;
sayac:=sayac+1
end;
For
I:=1 to sayac do
toplam:=toplam+rakam[
i] ; Writeln('Toplam Sayı :',Toplam:7:2);
end.
Örnek program çalıştırıldığında
kullanıcının hatalı bir giriş yapması halinde Run Time Error hatası
oluşacaktır. Bu hatalı durum IORESULT hata durumu fonksiyonu ile kontrol
ettirilerek programın kırılması önlenir ve CONTINUE komutu tekrarlama çevrimini
tekrar başlatır. Ancak hata yoklama rutinleri {$I-} ile pasif duruma
düşürülmüştür. IORESULT fonksiyon değeri kontrolü yapabilmek için {$I-} derleme
komutu verilerek Pascal hata yoklama rutinleri pasif duruma alınmalıdır. Ancak
kontrol işlemi bittikten sonra hata yoklama rutinleri {$I+} ile tekrar aktif
duruma getirilmelidir.
Program işlem bloklarında tanımlanan
herhangi bir koşulun gerçekleşmesi halinde program bloğunun akışını durdurur.
Örnek:
uses
Crt; {Windows için Wincrt}
begin
repeat
if
KeyPressed then Exit;
Write('Xx');
until
False;
end.
Programın kararlaştırılan bir yerinde
durdurulmasını sağlar. ENTER tuşuna basıldıktan sonra varsa HALT komutundan
sonra tanımlanan program satırları çalıştırılır.
Örnek :
program
halt_ornek;
begin
if
1 = 1 then
begin
WritelN('Halt
Deneme 1');
if
2 = 2 then
begin
WritelN('Halt
Deneme 2');
if
3 = 3 then
begin
WritelN('Halt
Deneme 3');
Halt(1);
end;
end;
end;
Writeln('
Bu Çalıştırılamayacaktır');
readln;
end.
Yapısal programlamanın en önemli
yaklaşımlarından biri, temel uygulamayı bir takım parçalara bölerek
gerçekleştirmektir. Pascal'da bu parçalar altyordam (procedure) veya fonksiyon
(function) olarak kodlanır. Yapısal programlamanın temel tercih nedeni, program
modüllerinin bağımsız olarak geliştirilmeleri ve çalışıp çalışmadığının
kolaylıkla anlaşılabilmesidir. Alt programlar genellikle tekrar edilen
işlemleri kolaylıkla yapabilmek için yazılırlar. Tekrar edilen işleme örnek
olarak, programımız içinde birden fazla yerde faktöriyel hesabı yapmamız
gerekiyor ise bunu bir alt program ile hesaplatmamız halinde aynı işleme sahip
program satırlarının tekrarı önlenecek, programın takibi kolaylaşacak ve daha
verimli hafıza kullanımı söz konusu olacaktır. Bilgisayar dillerinin tamamında
bulunan alt program yapısı PASCAL Programlama dilinde PROCEDURE ve FUNCTION
türü alt programlar olmak üzere iki ayrı türdedir. Bu iki ayrı tür alt
programlar birbirlerine benzer özellikler taşımalarına rağmen yapısallık ve
icra açısından bazı farklılıklar içerirler. Alt programlarda yapılacak
işlemler, ana program içinde nerede gerekiyor ise o noktada ilgili işlemleri
yapan alt programın adı yazılarak devreye sokulur. 1.1 Alt Programlar Hakkında
Genel Bilgiler
*Her
alt programın bir başlığı, bir tanım bloğu, bir de icra bloğu vardır.
*Ana
programlar PROGRAM deyimi, prosedür alt programlar PROCEDURE, fonksiyon alt
programlar FUNCTION deyimi ile başlar.
*Alt
program adının hemen yanında verilen parametreler değer transferi işlemleri
için kullanılırlar. Bir alt programa değer transferi yapılarak, her bir
çalışmada verilen değişik değerlere bağlı olarak değişik sonuçlar üretmek
mümkündür.
*Alt
program isminin yanına parametre yazmak seçime bağlıdır. Eğer parametre
yazılıyor ise bunlar procedure isminin yanına parantez içinde yazılırlar.
*Pascal
programlama dilinde formal ve aktüel parametreler olmak üzere iki tür parametre
tanımlanabilir. Formal parametreler, programın tamamına ait olmayıp sadece
değer transferi için kullanıldıklarından geçici paramatreler olarak
isimlendirilebilirler. Yani bu parametreler ile sadece alt program içinde
çalışılabilir. Ana programda, alt programın çalıştırılması için yazılması gereken
alt programın yanında yazılan parametreler ise Aktüel parametre adını alırlar.
Burada aktüel ve formal parametrelerin sıralanış, sayı ve tip bakımından aynı
olması gerekir.
Bir pascal programında Procedure alt
programlara erişim ve procedure alt programın program içindeki yeri aşağıdaki
genel gösterim şeklinde verilmiştir.<O:P< O:P Program ad_; < P>
< P to="36pt,6.375pt" from="13.875pt,6.375ptbegin
işlem
blokları;
end;
begin
işlem
blokları;
end;
(*
ANA PROGRAM*)
BEGIN
işlemler;
........
işlemler;
........
<>........
END.
Alt
programlarda, ana programlarda olduğu gibi sabit, değişken ve çeşitli tip
tanımlamaları yapılabilir. Yapılan bu tanımlamalar, alt program aktif olduğu
sürece geçerli olup alt programın çalışması sona erdiğinde alt programda
tanımlanan değişken, sabit ve tipler bellekten silinir.<O:P< O:P P 1.
Parametresiz Prosedürler
Bu tür alt programlarda; alt program
içinde kullanılan değişkenler ana program içinde kullanılan değişkenler ile
aynıdır. Bu nedenle ana program ile alt program arasında veri transferi
yapılmasına gerek yoktur. Aşağıdaki örnek programlar Parametresiz Prosedür
kullanımını açıklamaktadır. Örnek:
program
faktoriyel_hesabi;
uses
crt; {Windows için Wincrt}
var
fakt:longint;
n,i:integer;
procedure
islem1;
begin
fakt:=1;
for
i:=1 to n do
begin
fakt:=fakt*i;
end;
end;
begin
clrscr;
Write('N
sayısını giriniz =');
Readln(N);
islem1;
Writeln('N
sayısının Faktöriyeli =',fakt:10);
repeat
until keypressed;
end.
Yukarıda
verilen programı çalıştırarak sonucu inceleyiniz
Program içinde tanımlanan Prosedür
blokları içinde bazılarının programın daha sonraki satırlarında tanımlanacağını
belirten ifadedir. FORWARD deyimi, sonra tanımlanacak prosedür bloğu devamında
kodlanmalıdır.
Aşağıdaki
örnek programda ASAMA2 prosedür bloğu devamında görülen FORWARD ifadesi blok
bilgilerinin daha sonra tanımlanacağını belirtir. Program I>10 olduğu
durumda sona erecektir.
Örnek:
program
procedure_ornekleri;
uses
crt; {Windows için Wincrt}
var
i:integer;
Procedure
Asama2;forward;
Procedure
Asama1;
Begin
i:=i+1;
Write(I,'.');
Asama2;
End;
Procedure
Asama2;
Begin
Write(I*i,'.');
if
i>10 then halt;
readln;
Asama1;
End;
begin
clrscr;
i:=1;
asama1;
end.
Yukarıda
verilen iki örnek programda procedure ismini takiben herhangi bir değişken adı
yazılmadığına dikkat ediniz.
Ana program ve alt programlarda
tanımlanan değişkenlerin farklı olması durumunda tercih edilirler. Ana
programda tanımlanan değişken değerlerinin işleme alınmaları, alt programda
tanımlanan değişkenlere aktarılarak yapılır.
Parametreli
prosedürlerde de tek yönlü ve çift yönlü olmak üzere iki ayrı tür değer
transferi söz konusudur. Eğer procedure ismini takiben parametrelerin tanım
cümlesi VAR ile başlıyorsa parametreler arasında çift yönlü değer transferi
yapılacak demektir. Yani ana programda kullanılan değişkenler alt programa
aktarılacak ve alt programın çalışması sona erdiğinde sonuç değerler ana
programa transfer edilir.
Tek
yönlü değer transferinde ise parametrelerin tanım cümlesi VAR ile başlamaz,
değer transferi ana programdan alt programa olur ve alt programın icrası
sonunda ortaya çıkan sonuçlar ana programa transfer edilmez. Her iki tür için
yazım örnekleri aşağıda verilmiştir.
Tek
yönlü Transfer :Procedure Altyordam(X;Y;Z:integer;KAD:real);
Çift
yönlü Transfer :Procedure Altyordam(VAR X;Y;Z:integer;VAR KAD:real);
Veri
transferinde String değişken veya bir dizi değişken formal parametre olarak
tanımlanamaz. String ve dizi değişkenler formal parametre olarak
kullanılacaksa, tip bildirisinin özel bir tip ismi olarak verilmesi gerekir.
Aşağıda verilen örnekler sözü edilen kurala göre hatalı yazılmışlardır.
<O:P<
p O:P Procedure Altyordam(A:Array1..100 of real);<>Procedure
Altyordam2(S:String200);
Uygun
tanımlamalar yapmak için Type bölümünden yararlanılmalıdır. Aşağıda verilen
örnek tanımlar özel tip isimler kullanıldığı için geçerlidir.
Oz=Array1..100
of real;
sozcuk=String200;
Procedure
Altyordam(A:Oz);
Procedure
Altyordam2(S:Sozcuk);
Ana
programdan alt programa transfer sırasında tanım bloklarında kullanılan
parametrelerin tipleri aynı olmak zorundadır. Aksi takdirde 'Tip Uyuşmazlığı'
hatası meydana gelecektir.
Aşağıdaki
örnek programları inceleyiniz.
Örnek
1:
program
paramli1;
uses
crt; {Windows için Wincrt}
var
a,b,t:integer;
procedure
toplam(x,y:integer);
begin
t:=x+y;
end;
begin
clrscr;
readln(a);
readln(b);<O:P< p O:P <> Toplam (a,b);
Writeln(t);
end.
Örnek
2:
program
paramli2;
uses
crt; {Windows için Wincrt}
var
a,b,t:integer;
procedure
toplam(x,y:integer;var z:integer);
begin
z:=x+y;
end;
begin
clrscr;
readln(a);
readln(b);
Toplam
(a,b,t);
Writeln(t);
end.
Yukarıdaki
programda X ve Y değerlerinin toplamları Writeln(t); program satırında ekrana
yazdırılmaktadır. Aynı programda toplamı yazdırmak istenilen parametre
değiştirildiğinde program hata verecektir. Aşağıdaki program derlendiği zaman
çalışmayacak ve 3 nolu hata meydana gelecektedir. Programı yazarak hatanın
nedenini anlamaya çalışınız.
Örnek
3:
program
hatali_paramli;
uses
crt; {Windows için Wincrt}
var
a,b,t:integer;
procedure
toplam(x,y:integer;var z:integer);
begin
z:=x+y;
end;
begin
clrscr;
readln(a);
readln(b);
Toplam
(a,b,t);
Writeln(z);
end.
Örnek
4: Aşağıdaki örnek programda dizgi isimli tek
boyutlu bir dizi oluşturulmuş ve bu dizinin elemanları sıra ile 1-100
arasındadır. Bu dizi değer aldıkça altprograma değer transfer etmekte ve alt
programda bu dizinin değerleri random komutu ile rastgele sayılardan oluşan
yeni bir diziye aktarılmakta ve ana programa geri dönmektedir.
Program
degerparametresi;
uses
crt; {Windows için Wincrt}
type
DiziTipi=Array[1..100] of integer;
var
Dizgi:DiziTipi;
Yenidizi1,Yenidizi:DiziTipi;
K:word;
PROCEDURE
Ornekleme(Pardizi:DiziTipi;var YeniDizi:DiziTipi);
begin
Yenidizi[k]:=Random(Pardizi[k])
end;
begin
for
k:=1 to 100 do
begin
Dizgi[k]:=K;
Ornekleme(Dizgi,YeniDizi1);
Writeln(Dizgi[k],'
',YeniDizi1[k]);
end;While
not keypressed do
end.
Kullanıcı
Tanımlı Fonksiyon Alt Programlar
Pascal’da altprogramlar başlığı altındaki
yapısal modüllerden bir diğeri de fonksiyonlardır (function). Function ve
Procedure arasındaki farkı anlayabilmek için procedure ve function olarak ayrı
ayrı yazılmış bir uygulama üzerinde duralım.
<O:P<
p O:P begin
Z:=X+Y;
end;
FUNCTION
Toplam (X,Y:integer):Integer;
begin
TOPLAM:=X+Y;
end;
Örnekte
toplam isimli alt yordam (Procedure) X ve Y tamsayılarının toplamını referans
parametresi türündeki Z değişkeni aracılığı ile getirir. Procedure durumunda
geri döndürülecek değer, VAR ile tanımlanmış bir değişkene atanmaktadır.
Fonksiyon olarak tanımlanan TOPLAM modülü ise toplamı kendisi getirmektedir.
Fonksiyon sona erdirilmeden önce geri döndürülecek, fonksiyonun ismine
atanmaktadır. Toplam isimli fonksiyon, integer tiptedir.
Procedure
olarak yazılan TOPLAM alt programı ;
Toplam
(A;B;T); (Procedure)
şeklinde
çağırılırken function şeklinde geliştirilmiş Toplam alt programı ;
T:=Toplam(A;B);
(Function)
komutuyla
çağırılır.
Diğer
Komutlar Chr
Standart
CHR fonksiyonu [ 0..255] arasındaki tam sayıların ASCII karşılığı olan
karakteri vermektedir.
CHR
fonksiyonuna, doğrudan aktarılan tam sayı sayısal ifadeleri alfabetik karaktere
çeviren bu fonksiyonun yaygın kullanımlarından biri de, bilgilerin yazıcıya dökümü
sırasında klavye üzerindeki komutların ya da kontrol karakterlerinin üretilmesidir.
Aşağıdaki örnek programda bir yazıcıda kağıda üst üste basmak için ENTER tuşuna
karşılık gelen ASCII 13 karakterini kullanmak amacıyla CHR fonksiyonundan
yararlanılabilir.
Örnek:
Program
Chr_Ornek;
Uses
LST;
begin
Writeln('Endüstri',Chr(13),'Mühendisliği');
Readln;
end.
Concat
Bilgilerin
birbirlerine eklenmelerini sağlayan, alfa sayısal fonksiyondur. Ekleme işlemleri
CONCAT fonksiyonu ile veya alfa sayısal bilgiler arasına + işareti konarak sağlanır.
Concat fonksiyonu ile istenilen sayıda katar birbiri ardına eklenebilir. CONCAT
fonksiyonunun kullanımı aşağıdaki örnek programda verilmiştir.
Örnek:
Program
Ornek_Concat;
Uses
Crt;{windows için Wincrt}
var
x1,x2,x3,x4:String[
20] ;
x5,x6:=String[
50] ;
begin
clrscr;
x1:='Balıkesir
'; x2:='Mühendisliği';
x3:='Universitesi
';x4:='Endüstri ';
x5:=Concat(x1,x3,x4,x2);
Writeln('4
sözcüğün CONCAT ile birleştirilmesi');
Writeln(x5);
x5:=x1+x3+x4+x2;
Writeln('4
sözcüğün + ile birleştirilmesi');
Writeln(X5);
While
Not keypressed do;
end.
upcase
Pascal
'da okunan veya karşılaştırılması yapılan iki karakter dizisinde yazılan
harflerin büyük veya küçük oluşu önemlidir. Upcase fonksiyonu küçük harfleri büyük
harfe çevirir. Parametre olarak verilen karakterlerin alfabetik olmaması
durumunda herhangi bir işlem yapılmaz.
Örnek
:
var
s
: string;
i
: Integer;
begin
Write('Bir
Karakter Dizisi Giriniz: ');
ReadLn(s);
for
i := 1 to Length(s) do
s[i]
:= UpCase(s[i]);
WriteLn('KARAKTER
DİZİSİ BUYUK HARFE DÖNÜŞTÜ ',s);
Readln;
end.
Copy
Bir
karakter dizisinde belirlenen bir bölgeden istenilen uzunlukta bir parçanın
kopyalanması için kullanılan fonksiyondur.
Örnek:
uses
crt; {windows için Wincrt}
var
s: string;
begin
Clrscr;
s:=
'Balikesir Üniversitesi'
WriteLn(Copy(s,11,
4));
repeat
until keypressed;
end.
Programın
çıktısı; Univ şeklinde olacaktır.
Delete
Delete
fonksiyonu, bir karakter dizisi içindeki belirli bir alt karakter dizisinin
silinmesi için kullanılan standart fonksiyondur. Copy komutunda olduğu gibi
silinecek ilk karakterin karakter dizisinin kaçıncı elemanı olduğu ve kaç
eleman silineceği ifade edilmelidir.
Örnek:
Var
s: string;
begin
S:='Endüstri
Mühendisliği Bölümü';
Delete(s,10,21);
WriteLn(s);
end.
Programın
Çıktısı: Endüstri şeklinde olacaktır.
Length
fonksiyonu bir karakter dizisinin uzunluğunu hesaplamak amacıyla kullanılır.
Hesaplama sırasında karakter dizisi arasında boşluklar var ise bunları da bir
karakter olarak kabul edecektir.
Örnek:
Program
length_ornek;
uses
crt; {windows için Wincrt}
var
i:string[39];
begin
clrscr;
i:='Endüstri
Mühendisliği Bölümü';
WriteLn('Uzunluk
= ', Length(i));
end.
Programın Çıktısı: Uzunluk = 28 şeklinde olacaktır.
Sayısal
giriş ve çıkış işlemleriyle ilgili olarak Pascal komutları arasında kullanılan
Str ve Val deyimleri birbirlerinin tam tersi işlemleri yaparlar. Str, girilen
sayısal karakterlerin karakter dizisine çevirirken Val, bunun tersine olarak
karakter dizisi olarak girilen rakamsal bilgileri sayısal karakterlere dönüştürür.
Grafik ekranda sayısal ifadelerin direkt olarak yazdırılması mümkün olmaması
nedeniyle sayısal ifadenin str ile string ifadeye dönüştürülerek yazılması
gerekir. Yine grafik ekrandan sayısal bilgi girişi yapılamamakta, ancak string
olarak bilgi girişi yapılabilmektedir. String olarak girişi yapılan sayısal
ifade val fonksiyonu ile sayısal ifadeye dönüştürülmesi gerekir.
Aşağıdaki
örnekte klavyeden iki veri girilmektedir. İlk Val fonksiyonuyla k1 kontrol değişkeni
O iken, S1 değişkenindeki rakam karakterleri sayısal karakterlere çevrilerek R1
ondalıklı sayısal değişkenine verilir. Aynı işlem ikinci Val fonksiyonuyla da
yapılır. Elde edilen R1 ve R2 rakamları çarpılarak R3 değişkenine atanır ve
uygun yazım formatıyla ekrana yazılmaktadır.
Örnek:
var
s1,s2:string;
k1,k2:integer;
r1,r2,r3:real;
begin
readln(s1);readln(s2);
Val(s1,r1,k1);
Val(s2,r2,k2);
r3:=r1*r2;
Writeln(r3:10:2);
end.
Pos
fonksiyonu bir karakter dizisinin veya karakterin diğer bir karakter dizisi içinde
olup olmadığını, varsa kaçıncı karakterden başladığını (Başladığı karakterin
ana karakter dizisindeki sıra numarasını) verir. Aşağıdaki 1. örnek programda s
isimli karakter dizisinde boşluk olup olmadığı aranmakta ve boşluk var ise bu
karakter dizisinin önüne boşluk sayısınca 0 yerleştirilmektedir. 2. örnek
programda i ismi verilen karakter dizisi içindeki j karakter dizisinin konumu
araştırılmaktadır. 3. Örnekte ise k isimli bir karakter dizi içinde $ işareti
olup olmadığı araştırılmaktadır.
Örnek
1:
Program
Ornek_pos1;
var
s: string;
begin
s
:= ' 123.5';
{
Boşlukları sıfıra çevir }
while
Pos(' ', s) > 0 do
s[Pos('
', s)] := '0';
Writeln(S);
Readln;
end.
Örnek
2:
Program
Ornek_Pos2;
var
i:string[28];j:String[12];
begin
clrscr;
i:='Balıkesir
Üniversitesi';
j:='
Üniversitesi';
Writeln(i);Writeln(j);
Writeln('i
içinde J nin başlama konumu =',pos(j,i));
Writeln;
Readln;
end.
Örnek
3:
Program
Ornek_pos3;
var
k:string;
begin
k:='123sadsdg&jdfjdsh$fdsf'
if
pos('$',K)<>0 then
begin
writeln
(' K isimli karakter dizisi içinde $ işareti bulundu');
end
else
Writeln('Aranılan
karakter bulunamadı');
end;
end.
Bu
örnek programda aranılan alt karakter bulunamaz ise bu durumda fonksiyon sıfır
değerine sahip olacak ve program else ile başlayan satıra dallanacaktır.
Burada
kısaca anlatılacak olan giriş/çıkış komutları Turbo Pascal dosyaları anlatılırken
detaylı bir şekilde anlatıldığından burada sadece alfabetik sırada isimlerinin
verilmesi ile yetinilecektir.
Giriş/çıkış
elemanları çok genel olarak, programların çalıştırılmasıyla oluşacak dosyaların
manyetik ortama yazdırılmalarıyla ilgili komut ve deyimler olarak tanımlanabilir.
Bu deyim ve komutlar alfabetik sıraya göre; Append, Assign, Close, Erase, Read,
Readln, Write, Writeln, Reset, Rewrite, Rename, Flush vb. 'dir.
Turbo
Pascal matematik ağırlıklı mühendislik bilimleri içinde son derece uygun bir
dildir. Bir çok temel işlevi yerine getiren matematiksel fonksiyonlar Turbo
Pascal'ın sistem birimi içerisinde tanımlanmıştır.
Turbo
Pascal sistem birimi içinde standart olarak bulunan standart matematiksel
fonksiyonlar ve kullanımları ile ilgili örnekler aşağıda alfabetik sırada
verilmiştir.
Herhangi
bir sayısal sabit veya değişkenin mutlak (işaretsiz) değerini verir.
Örnek:
Program
ABS_fonksiyonu;
var
r:
Real;
i:
Integer;
begin
r
:= Abs(-4.3); i := Abs(-157);
Writeln(r:4:1,i:8);
end.
ArcTan
Aşağıdaki
örnekte R isimli real parametre ile verilen argümanın radyan cinsinden
arktanjantını verir. Radyanı dereceye çevirmek için 180/pi ile çarpmak
gereklidir.
Örnek:
Program
ArcTan;
var
R:
Real;
begin
r:=1;
R
:= ArcTan(r)*180/pi;
writeln(r:5:1);
end.
Derece
olarak verilen bir açı değerinin radyana çevrilmesiyle trigonometrik kosinüsünü
hesaplar. Açı değerini radyana çevirmek için pi/180 ile çarpmak gerekir.
Örnek:
Program
cosinus_Fonksiyonu;
var
r,Aci:
Real;
begin
aci:=90;
R
:= Cos(aci*pi/180);
writeln(r:5:1);
end.
Exp
fonksiyonu doğal logaritma parametresi olan e'nin üstel değerini hesaplar. Aşağıdaki
örnek program parçasında e'nin 1. üstel değeri (e1 ) hesaplanılmaktadır.
Örnek:
Program
Exp_Fonksiyonu;
begin
Writeln('e
= ',Exp(1.0));
end.
Frac
Gerçel
bir sayının desimal noktadan sonraki kesirli kısmını verir.
Örnek:
Program
frac_fonksiyonu;
var
f1,f2:
Real;
begin
f1
:= Frac(4233.1987);
f2
:= Frac(-4233.1987);
Writeln(f1:6:4,'
',f2:6:4);
end.
Gerçel
sayıların tamsayı bölümünü integer tipinde verir. Örnek:
Program
Int_Fonksiyonu;
var
f1,f2: Real;
begin
f1
:=Int(4233.1987);
f2
:=Int(-4233.1987);
Writeln(f1:6:0,f2:6:0)
end.
Girilen
bir sayının e tabanına göre logaritmasını alır.
Örnek:
Program
Ln_Fonksiyonu;
var
e,mn:
real;
begin
mn:=2;
e
:= Exp(mn);
Writeln('ln(e)
= ',ln(e));
end.
Tamsayı
parametrelerin tek sayı olup olmadığının tesbitinde kullanılır.
Örnek
:
Program
odd_fonksiyonu;
uses
crt;
var
i:byte;
begin
clrscr;
for
i:=1 to 20 do
begin
if
Odd(i) then
Writeln(i,'
Tek Sayıdır ')
else
Writeln(i,
' Çift Sayıdır');
end;
delay(2000);
end.
Char,
byte, integer, boolean vb. şeklinde bildirilmiş parametrelerin tamsayı değerlerini
verir. Örneğin Char ile kullanılması durumunda karakterin ASCII kodu elde
edilir.
Örnek
:
Program
ord_Fonksiyonu;
var
ch:char;
begin
for
ch:='A' to 'Z' do
Writeln(Ch,'
icin ASCII Kod ',Ord(ch));
Readln;
for
ch:='a' to 'z' do
Writeln(Ch,'
icin ASCII Kod ',Ord(ch));
end.
Pi
olarak bilinen matematiksel sabitin değerini verir. Pascal programında diğer
programlama dillerinde olduğu gibi pi sayısının ayrıca tanıtılmasına gerek
yoktur.
Örnek
:
Program
Pi_fonksiyonu;
var
d:real;
begin
Write('Dairenin
çapını giriniz :');
Readln(D);
Writeln('Dairenin
çevresi = ',Pi*D:10:5:);
end.
Rastgele
bir sayı üretir. Üretilen rastgele sayı random ile belirtilen sayıdan küçük
olmaktadır.
Örnek:
Program
Random_Fonksiyonu;
uses
Crt; {Windows için Wincrt}
begin
Randomize;
repeat
Writeln
(Random(99));
until
KeyPressed;
end.
Gerçel
sayıların kurala uygun bir şekilde yuvarlatır ve yuvarlatılmış tamsayı olarak
verir. Elde edilen yuvarlatılmış sayı yine real tipte saklanır.
Örnek:
Program
Round_fonksiyonu;
begin
Writeln(1.499,
' ',Round(1.499),' a yuvarlatıldı');
Writeln(1.5,
' ',Round(1.5),' a yuvarlatıldı');
Writeln(1.499,
' ',Round(-1.499),' a yuvarlatıldı');
Writeln(-1.5,
' ',Round(-1.5),' a yuvarlatıldı');
end.
Derece
olarak verilen bir açı değerinin radyana çevrilmesiyle trigonometrik sinüsünü
hesaplar. Açı değerini radyana çevirmek için pi/180 ile çarpmak gerekir.
Örnek
:
Program
sinus_Fonksiyonu;
var
r,Aci:
Real;
begin
aci:=90;
R
:= Sin(aci*pi/180);
writeln(r:5:1);
end.
Sqr
Verilen
bir parametrenin karesini verir. Genel kullanım şekli;
Kare:=sqr(sayi);
Sqrt
Verilen
bir parametrenin karekökünü verir. Genel kullanım şekli;
Karekok:=sqrt(sayi);
Örnek:
Program
Sqr_ve_sqrt;
var
say:real;
begin
Write('Karesi
alınacak sayıyı giriniz =');
Readln(say);
Writeln(say:10:2,'
in Karesi ', Sqr(say):10:2);
Writeln(Sqr(say):10:2,'
nın karekökü',Sqrt(sqr(say)):10:2);
end.
Verilen
bir gerçel sayının tamsayı kısmını verir ve sonucu tamsayı tipinde saklar.
Örnek:
Program
Trunc_Fonksiyonu;
var
f1,f2,f4:real;
f3:integer;
begin
f1:=34.56;f2:=11.9;
f4:=f1/f2;
f3:=Trunc(f1/f2);
Writeln(f4:8:2,'
',f3);
end.
Örnek:
Aşağıda verilen programda round ve trunc
deyimlerinin birlikte kullanımları verilmiştir.
Program
round_ve_trunc;
Var
Vize,final,Ort:integer;
Begin
Readln(vize,final);
Ort:=Trunc(round(vize*0.4+final*0.6));
Writeln(Vize:10,Final:10,Ort);
End.