Turbo Pascal Dili ile Programlama
Giriş Yap Tema Rengi Konu Mesaj Üyeler
Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.
Kullanıcı Adı:
Şifre:

11201 22438 Toplam üye: 17944
Son üye: Limansiz
 
Ana Sayfa Yardım Arcade Giriş Yap Kayıt
 

Reklamlar
Konu Bilgileri
Konu BasligiKonu: Turbo Pascal Dili ile Programlama
Cevap SayisiCevap Sayisi: 0 cevap var
Okunma SayısıOkunma Sayısı 86 defa
Bu Konuyu Görüntüleyenler0 Üye ve 1 Ziyaretçi konuyu incelemekte.
Sayfa: [1]   Aşağı git
  Yazdır  
Gönderen Konu: Turbo Pascal Dili ile Programlama  (Okunma Sayısı 86 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
borlandx
siberTurk
*

KARMA: 1152
Offline Offline

Cinsiyet: Bay
Mesaj Sayısı: 175

Konu Sayısı: 145


Aktiflik

Deneyim
Seviye
Kötü İtibar

WWW
« : 07 Ağustos 2008, 13:10:27 »

Turbo Pascal Dili ile Programlama

Giriş   
Ana Sayfa | Sonraki Bölüm


    Bilgisayar Programlamanın Temelleri adlı bölümde bir bilgisayarın sizin yazdığınız programlar olmaksızın bir hiç olduğundan ve bir programlama dilinin ne demek olduğundan kısaca bahsetmeye çalıştık. Bu döküman içerisinde de programlama hakkında hiçbir fikriniz olmaması ihtimalini gözönünde bulundurup, kolay, anlaşılır ve bir o kadar da güçlü ve ileri dönük bir dili size tanıtmak istiyorum.
    Burada anlatacaklarımızı anlamak için hiçbir ön bilgiye sahip olmanız gerekmiyor. Elbette başlangıç düzeyinde bir kullanıcı olmak dışında. Zaten bu siteye bağlanıp, bu dökümana ulaşabildiğinize göre en azından bu gereksinimi karşılıyorsunuz demektir.
    İlk olarak bir derleyicinin (compiler) ne demek olduğundan bahsedelim.  Bilgisayarı bir Japon aşcı olarak düşünün. Siz bu aşçıya türk yemekleri öğretmek istiyorsunuz. Japonca bilmiyorsanız, bir çevirmene ihtiyacınız olacak. Bilgisayarın da makina dili denilen kendine has bir dili vardır. Bu dilin komutları bir programcının hatırlayıp, kullanamayacağı kadar zordur. Bu sebeple insanların günlük kullanımlarındaki dile (ingilizce) yakın komutların kullanımına izin veren programlama dilleri ortaya çıkmıştır. Programlama dilleri, gerçek hayattaki dillerin gramer kurallarına sahip olması gibi bazı kurallara dayanırlar. Örneğin Türkçe'de düzgün cümlelerde önce öznenin, en son yüklemin gelmesi gibi, Pascal dilinde programlar "begin" sözcüğü ile başlar ve "end." ile biter. Fakat bilgisayarlar insanlar gibi programlama dillerinin yapısını anlayamayacaklarından her programlama dili bir derleyiciye, yani kendi yapısında girilmiş komutları makina diline çeviren bir çevirmene ihtiyaç duyarlar. İşte bu çevirmene derleyici denir. Makina diline çevrisini yaptığı dile ise programlama dili denir. Biz burada Pascal programlama dilinden ve derleyicisinden bahsedeceğiz.
    Size, kendilerine Pascal dilinden bahsettiğinizde, yeterli bir dil olmadığını söyleyenler olabilir. Burada bu tartışmalara pek fazla girmek istemiyorum, ama ilk defa bir dil öğrenecek kişilerin içindeki kuşkuları da yok etmek amacındayım. Yıllardır pascal dilini kullanan biri olarak hiçbir problem yaşamamış olmam sanırım yeterli bir açıklama olabilir.
    Şunu söyleyebilirim, şu ana kadar bu tip kişilerle çok tanıştım, pascal dilini yerin dibine batırdıktan sonra kendilerine sadece pascal ile hiç program yapıp yapmadıklarını sorduğumda neredeyse hepsinden hiç kullanmadıkları cevabını aldım. Bu, Quantum Fiziğini hiç bilmeyen bir kişinin hatalı olduğunu söylemesi gibi birşey sanırım. Neyse, bence en iyi dil, en iyi bildiğiniz dildir. Eğer kullandığınız dil, sizi belli bir yerden sonra sürekli olarak kısıtlamaya başlamışsa, o zaman yeni bir dile geçmenin zamanı geldi demektir.
    Bu yazı boyunca vereceğimiz örnekler Turbo Pascal 7.0'da denenmiştir. Bu örnekleri denemek için az da olsa Turbo Pascal'ın program geliştirme ortamı olan TP IDE (Integrated Development Environment - Entegre Geliştirme Ortamı) hakkında bilgi sahibi olmalısınız. Yine de yapmanız gerekenleri kısaca aşağıda anlatmaya çalışalım.
    Örneğin Turbo Pascal "c:\tpascal" dizininde bulunuyor olsun. (kurmak size kalıyor)
    c:\> cd tpascal\bin
    c:\tpascal\bin> turbo
    Yukarıdaki komutları verdikten sonra IDE'nin açılmış olması gerekiyor. Olmazsa turbo yerine tpx veya bp deneyebilirsiniz.
    Bundan sonra vereceğimiz kodu yazmalısınız. Daha sonra F2 tuşuyla veya File -> Save As ile kayıt penceresini açarak bir dosya adı verip kaydedebilirsiniz. İleride yüklemek istediğinizde F3'ten sonra dosya adını vererek açabilirsiniz.
    Yazdığınız programı Ctrl+F9 tuş kombinasyonu ile çalıştırabilirsiniz.

    Kitabımızın aşağıda görülen bölümleri bulunmaktadır. Bu bölümlere aşağıdaki bağlantılar aracılığıyla erişebileceğiniz gibi sayfaların en üst ve altlarındaki "Önceki Bölüm" ve "Sonraki Bölüm" bağlantılarını kullanarak sırayla da erişebilirsiniz.

         
      
İlk Programımız

      
Sabitler ve Değişkenler

      
İşaretli Sayılar

      
Değişken Tipleri

      
FOR Döngüsü

      
IF Kontrol Deyimi

      
WHILE Döngüsü

         

 




    Şimdi ilk örneğimizi verelim. Aşağıdaki tabloda solda bulunan programın kısa tanımı, sağdaki ise programa vermeniz tavsiye edilen dosya adıdır. Bu dosya adlandırmalarına uymanız ileride yararlı olacak.

 
   
       NOT : Aşağıda verdiğimiz ve daha sonra vereceğimiz örnekleri kendiniz yazmak zorunda değilsiniz. Tüm bölümlerin örnek programlarının hazır hallerinin bulunduğu zip dosyasını kitabın sonundaki bağlantı aracılığıyla, ya da buraya tıklayarak alabilirsiniz. Bu dosyayı uygun bir dizine açtıktan sonra, verilen ada sahip programları yükleyebilirsiniz.
   

 

 
begin
  writeln('MERHABA');
  readln;
end.
İlk program örneğimiz   ORNEK1.PAS
    Bu programı çalıştırdığınızda yapacağı tek şey ekrana MERHABA kelimesini yazmak olacaktır. İlk satırdaki begin kelimesi bir pascal programının başlangıç noktasını gösterir. Son satırdaki end ise programın bitişini belirtir. Yani programımız begin ile end kelimeleri arasındaki komutları yerine getirecektir.
    Öyleyse programın yerine getireceği ilk komut ikinci satırdaki writeln('MERHABA')'dır. WRITE kelimesi türkçeye YAZ olarak çevrilebilir. Bu komut (write) ekrana tırnak içerisinde verilen kelimeyi yazma işini yerine getirir. WRITELN'ın, WRITE komutundan farkı ise yazdıktan sonra ekranda bir alt satıra geçmesidir.
    Sonrasındaki readln komutu bilgisayarı enter tuşuna basılıncaya kadar bekletir.
    Buraya kadar writeln ve readln komutlarının sadece bir kullanışlarını gördük. Bu komutlar standart programlar geliştirirken en çok kullanacağınız pascal komutlarındandır, fakat kullanımları ve kullanım alanları yukarıda anlattığımız kadar basit değildir. Mesela readln komutunun asıl görevi bilgisayarı enter tuşuna basıncaya kadar bekletmekten çok kullanıcıdan bilgi almaktır. Bu ve bunun gibi kullanılışlarını yeri geldikçe öğreneceğiz.
    Program içerisindeki noktalama işaretleri dikkatinizi çekmiştir. begin komutundan sonra hiçbir zaman "." veya ";" konulmaz. Programı bitiren end   komutundan sonra "." konulmalıdır. Fakat end komutu sadece programı bitirmekle değil, daha sonra öğreneceğimiz bazı işlem gruplarını bitirmekle de görevli  olduğundan diğer yerlerde sonuna ";" konulması gerekir. writeln ve readln gibi komutların sonuna ";" konularak bunların ayrı komutlar olduğu belirtilmelidir.
    Belki yukarıda anlattığım noktalama işaretleri ile ilgili bilgileri okuduktan sonra size çok saçma veya zor gelmiş olabilir. Ayrıca bunları oturup bütün komutlar için ezberlemek zorunda olduğunuzu düşünebilirsiniz. İlerlediğinizde bu işaretlerin neden gerekli olduğunu ve anlamanın aslında bu kadar zor olmadığını çok daha iyi anlayacaksınız.
    Bu programı yazdık ve çalıştırdık, fakat dikkat ederseniz yararlı bir kullanım alanı yok. İsterseniz daha işe yarar birşeyle uğraşalım. Örneğin bir dairenin alanını hesaplayan bir program yazalım. Mesela dairenin yarıçapı 5 olsun, pi sayısı ise 3.14. Bunu elle de hesaplayabiliriz, fakat filmlerin bitmemesi için başroldekilerin ölmemesi gerektiği gibi, bu yazının devam edebilmesi için bu örneği vermeliyiz.
    Bir program yazmaya başlamadan önce, özellikle matematiksel işlemlerde, ilk olarak problemi elinizle nasıl çözdüğünüze bakmanız gerekir. PI x R2 dairenin alanını hesaplama formülü olduğuna göre burada PI yerine 3.14, R yerine 5 koyarsak...  3.14 x 52 = 3.14 x 5 x 5 = 78.5 bulunur. Şimdi aynı işlemi basit bir şekilde bilgisayara yaptıralım.
begin
  writeln( 3.14 * 5 * 5 );
  readln;
end.
Yarıçapı 5 olan bir dairenin pi = 3.14 için alanını hesaplar   ORNEK2.PAS
    Bu programın öncekinden tek farkı ikinci satırdaki writeln komutunun parantez içerisindeki parametrelerinin değişmesi. Yukarıda 3.14 x 5 x 5 şeklinde verdiğimiz sonucu hatırlıyorsunuz. Pascal dilinde ve genellikle bütün dillerde çarpı işareti olarak "*" kullanılır. Daha önceki kullanılışında writeln komutunun içerisinde bir de tırnak işaretleri vardı. Tırnak işareti olduğu zaman writeln komutu sonuç olarak dışarıya o tırnakların arasında ne görüyorsa onu yazar. Bunun ne demek olduğunu daha iyi anlamak için parantezlerin içine daha önceki programdaki gibi tırnak yerleştirelim. Yani ikinci satırı aşağıdaki hale getirelim ve yeniden çalıştıralım. (ORNEK2A.PAS)
  writeln(' 3.14 * 5 * 5 ');
    Programın ilk ve değişmiş hallerinin çıktıları (çalıştıklarında ekrana yazdıkları sonuçlar) sırasıyla aşağıdaki gibi olacaktır.
7.8500000000E+01
3.14 * 5 * 5
    Birinci programda writeln komutu parantez içerisindeki ifadeyi hesaplayıp sonucu ekrana yazar, ikincisinde ise parantez içerisinde, tırnakların  arasında ne görüyorsa onu yazar. Bu durumda writeln komutu için tırnak içerisinde yazılan hesaplanması gereken bir işlem değil, sadece bir yazıdır.
    Bu arada programımızın sonucuyla ilgili küçük bir sorunumuz var. Elimizle hesapladığımızda sonuç 78.5 çıkarken yukarıdaki çıktıya göre sonuç 7.8500000000E+01 gibi gözüküyor. Buradaki 7.85 sonucu yanlış değil mi? Hayır. Aslında yukarıdaki sayı özel bir gösterimde yazılmıştır.   İlk olarak E harfinden önceki sayıyı aynen alıyoruz, yani 7.85. Burada E'den sonra "+" işareti var ve devamında 01 sayısı. Bunun anlamı ise 10'un 1. kuvvetini alıp 7.85 ile çarpacağımız. Yani 7.85 * 101 = 78.5. Burada 01 yerine 03 olsaydı 1000 ile çarpacaktık. Eğer E'den sonra "+" yerine "-" işareti olsaydı 1/10'un 1. kuvvetini yani 10'un -1. kuvvetini alacaktık. Aşağıda birkaç örnek verelim isterseniz.
5.1400000000E-01 = 0.514 = 5.14 * (10)-1
5.1400000000E+01 = 51.40 = 5.14 * (10)1
5.1400000000E+03 = 5140  = 5.14 * (10)3
5.1400000000E+00 = 5.14  = 5.14 * (10)0
    Yukarıda sayıların özel bir  yazılış şeklini öğrenmiş olduk. Bu yazılış stili ile neredeyse bütün programlama dillerinde karşılaşabilirsiniz. Elbette bu ve bundan sonra yapacağımız programlarda sonucun ekrana bu şekilde yansıtılması ve onu anlamak için vakit kaybetmemiz bizim için pek iyi olmaz. Şimdi ikinci örneğimizin ilk halindeki writeln komutunun bulunduğu satırı aşağıdaki hale getirelim. (ORNEK2B.PAS)
  writeln( 3.14 * 5 * 5 :6:2);
    Bu programın çıktısında sonuç aşağıda ilk satırdaki  gibi olacaktır. 78.50 sayısından önce bir boşluk karakteri olduğuna dikkat edin. Şimdi buradaki ":6:2" şeklinde eklediğimiz ifadelerin ne işe yaradığını kısaca açıklayalım. Birinci ":" işaretinden sonraki 6 sayısı, ekranda göstereceğimiz sayının 6 karakter  boşluk bırakıldıktan sonra sağa dayalı olarak yazılacağını belirtiyor. Aşağıda boşluğu dikkate alarak sayarsanız "0" ın altıncı karakter olduğunu rahatlıkla görebilirsiniz. 2.sayı olan "2" ise virgülden sonra kaç basamak gösterilmesini istediğimizi belirtiyor. Eğer ":6:2" yerine ":6:1" yazsaydık sayı ekrana 2. satırdaki gibi yazılacaktı. Eğer ":7:2" yazsaydık 3.satırdaki gibi olurdu. Örnekleri istediğiniz gibi çoğaltıp test ederek durumu daha iyi kavrayabilirsiniz.
78.50
  78.5
  78.50
    Burada karşımıza bir sorun çıkabilir. Örneğin sayımızın virgülden önceki basamak sayısı 5 olsun, mesela "78334.34". Burada formatlama şekli olarak ":4:5" versek sonuç ne olurdu? Virgulden sonra 5 basamak istediğimize göre sayının ekrana 78334.34000 olarak yazılacağı açıktır. Fakat bu sayının karakter olarak uzunluğu bizim belirttiğimiz "4" sayısından büyük. İşte bu durumda siz sayının toplam karakter uzunluğu olan 11'den büyük bir sayı vermezseniz sayının sığmayan kısmını yutmak yerine pascal sayıyı sola dayalı olarak aşağıdaki gibi yazar.
78334.34000
    Sayılarla ilgili sorunumuzu bu kadarıyla hallettikten sonra şimdi aynı anda hem alanı, hem de çevreyi hesaplayan bir program yazalım. (Çevre = 2*PI*R) Bu arada PI sayısının biraz daha hassas bir halini kullanalım. (PI = 3.1415926535897932385)
begin
  writeln( 3.1415926535897932385 * 5 * 5 :20:10);
  writeln( 3.1415926535897932385 * 2 * 5 :20:10);
  readln;
end.
Yarıçapı 5 olan dairenin pi = 3.14 için alan ve çevresini hesaplar   ORNEK3.PAS
    Bu programın çıktısı aşağıdaki şekilde olacaktır.
78.5398163400
31.4159265360
    Bu programı kendiniz yazmaya çalışırsanız programı hazırlama kısmının büyük bir bölümü bu PI sayısının hassas değerini düzgün bir şekilde yazmaya çalışmakla geçer. Bir matematik programı yazdığınızı ve programınızın yüzlerce yerinde PI sayısını kullandığınızı düşündüğünüzde bu işin ne kadar zor olabileceğini daha kolay anlayabilirsiniz. PI sayısı hiç değişmediğine göre benim her seferinde aynı sayıyı yazmama ne gerek var? Bilgisayara PI sayısı şuna eşittir desem, daha sonra her PI dediğimde bunu anlasa olmaz mı? Elbette olur. Bunun için Pascal dilinde sabit (constant) tanımlaması yapılır...




    Şimdi ilk örneğimizi verelim. Aşağıdaki tabloda solda bulunan programın kısa tanımı, sağdaki ise programa vermeniz tavsiye edilen dosya adıdır. Bu dosya adlandırmalarına uymanız ileride yararlı olacak.

 
   
       NOT : Aşağıda verdiğimiz ve daha sonra vereceğimiz örnekleri kendiniz yazmak zorunda değilsiniz. Tüm bölümlerin örnek programlarının hazır hallerinin bulunduğu zip dosyasını kitabın sonundaki bağlantı aracılığıyla, ya da buraya tıklayarak alabilirsiniz. Bu dosyayı uygun bir dizine açtıktan sonra, verilen ada sahip programları yükleyebilirsiniz.
   

 

 
begin
  writeln('MERHABA');
  readln;
end.
İlk program örneğimiz   ORNEK1.PAS
    Bu programı çalıştırdığınızda yapacağı tek şey ekrana MERHABA kelimesini yazmak olacaktır. İlk satırdaki begin kelimesi bir pascal programının başlangıç noktasını gösterir. Son satırdaki end ise programın bitişini belirtir. Yani programımız begin ile end kelimeleri arasındaki komutları yerine getirecektir.
    Öyleyse programın yerine getireceği ilk komut ikinci satırdaki writeln('MERHABA')'dır. WRITE kelimesi türkçeye YAZ olarak çevrilebilir. Bu komut (write) ekrana tırnak içerisinde verilen kelimeyi yazma işini yerine getirir. WRITELN'ın, WRITE komutundan farkı ise yazdıktan sonra ekranda bir alt satıra geçmesidir.
    Sonrasındaki readln komutu bilgisayarı enter tuşuna basılıncaya kadar bekletir.
    Buraya kadar writeln ve readln komutlarının sadece bir kullanışlarını gördük. Bu komutlar standart programlar geliştirirken en çok kullanacağınız pascal komutlarındandır, fakat kullanımları ve kullanım alanları yukarıda anlattığımız kadar basit değildir. Mesela readln komutunun asıl görevi bilgisayarı enter tuşuna basıncaya kadar bekletmekten çok kullanıcıdan bilgi almaktır. Bu ve bunun gibi kullanılışlarını yeri geldikçe öğreneceğiz.
    Program içerisindeki noktalama işaretleri dikkatinizi çekmiştir. begin komutundan sonra hiçbir zaman "." veya ";" konulmaz. Programı bitiren end   komutundan sonra "." konulmalıdır. Fakat end komutu sadece programı bitirmekle değil, daha sonra öğreneceğimiz bazı işlem gruplarını bitirmekle de görevli  olduğundan diğer yerlerde sonuna ";" konulması gerekir. writeln ve readln gibi komutların sonuna ";" konularak bunların ayrı komutlar olduğu belirtilmelidir.
    Belki yukarıda anlattığım noktalama işaretleri ile ilgili bilgileri okuduktan sonra size çok saçma veya zor gelmiş olabilir. Ayrıca bunları oturup bütün komutlar için ezberlemek zorunda olduğunuzu düşünebilirsiniz. İlerlediğinizde bu işaretlerin neden gerekli olduğunu ve anlamanın aslında bu kadar zor olmadığını çok daha iyi anlayacaksınız.
    Bu programı yazdık ve çalıştırdık, fakat dikkat ederseniz yararlı bir kullanım alanı yok. İsterseniz daha işe yarar birşeyle uğraşalım. Örneğin bir dairenin alanını hesaplayan bir program yazalım. Mesela dairenin yarıçapı 5 olsun, pi sayısı ise 3.14. Bunu elle de hesaplayabiliriz, fakat filmlerin bitmemesi için başroldekilerin ölmemesi gerektiği gibi, bu yazının devam edebilmesi için bu örneği vermeliyiz.
    Bir program yazmaya başlamadan önce, özellikle matematiksel işlemlerde, ilk olarak problemi elinizle nasıl çözdüğünüze bakmanız gerekir. PI x R2 dairenin alanını hesaplama formülü olduğuna göre burada PI yerine 3.14, R yerine 5 koyarsak...  3.14 x 52 = 3.14 x 5 x 5 = 78.5 bulunur. Şimdi aynı işlemi basit bir şekilde bilgisayara yaptıralım.
begin
  writeln( 3.14 * 5 * 5 );
  readln;
end.
Yarıçapı 5 olan bir dairenin pi = 3.14 için alanını hesaplar   ORNEK2.PAS
    Bu programın öncekinden tek farkı ikinci satırdaki writeln komutunun parantez içerisindeki parametrelerinin değişmesi. Yukarıda 3.14 x 5 x 5 şeklinde verdiğimiz sonucu hatırlıyorsunuz. Pascal dilinde ve genellikle bütün dillerde çarpı işareti olarak "*" kullanılır. Daha önceki kullanılışında writeln komutunun içerisinde bir de tırnak işaretleri vardı. Tırnak işareti olduğu zaman writeln komutu sonuç olarak dışarıya o tırnakların arasında ne görüyorsa onu yazar. Bunun ne demek olduğunu daha iyi anlamak için parantezlerin içine daha önceki programdaki gibi tırnak yerleştirelim. Yani ikinci satırı aşağıdaki hale getirelim ve yeniden çalıştıralım. (ORNEK2A.PAS)
  writeln(' 3.14 * 5 * 5 ');
    Programın ilk ve değişmiş hallerinin çıktıları (çalıştıklarında ekrana yazdıkları sonuçlar) sırasıyla aşağıdaki gibi olacaktır.
7.8500000000E+01
3.14 * 5 * 5
    Birinci programda writeln komutu parantez içerisindeki ifadeyi hesaplayıp sonucu ekrana yazar, ikincisinde ise parantez içerisinde, tırnakların  arasında ne görüyorsa onu yazar. Bu durumda writeln komutu için tırnak içerisinde yazılan hesaplanması gereken bir işlem değil, sadece bir yazıdır.
    Bu arada programımızın sonucuyla ilgili küçük bir sorunumuz var. Elimizle hesapladığımızda sonuç 78.5 çıkarken yukarıdaki çıktıya göre sonuç 7.8500000000E+01 gibi gözüküyor. Buradaki 7.85 sonucu yanlış değil mi? Hayır. Aslında yukarıdaki sayı özel bir gösterimde yazılmıştır.   İlk olarak E harfinden önceki sayıyı aynen alıyoruz, yani 7.85. Burada E'den sonra "+" işareti var ve devamında 01 sayısı. Bunun anlamı ise 10'un 1. kuvvetini alıp 7.85 ile çarpacağımız. Yani 7.85 * 101 = 78.5. Burada 01 yerine 03 olsaydı 1000 ile çarpacaktık. Eğer E'den sonra "+" yerine "-" işareti olsaydı 1/10'un 1. kuvvetini yani 10'un -1. kuvvetini alacaktık. Aşağıda birkaç örnek verelim isterseniz.
5.1400000000E-01 = 0.514 = 5.14 * (10)-1
5.1400000000E+01 = 51.40 = 5.14 * (10)1
5.1400000000E+03 = 5140  = 5.14 * (10)3
5.1400000000E+00 = 5.14  = 5.14 * (10)0
    Yukarıda sayıların özel bir  yazılış şeklini öğrenmiş olduk. Bu yazılış stili ile neredeyse bütün programlama dillerinde karşılaşabilirsiniz. Elbette bu ve bundan sonra yapacağımız programlarda sonucun ekrana bu şekilde yansıtılması ve onu anlamak için vakit kaybetmemiz bizim için pek iyi olmaz. Şimdi ikinci örneğimizin ilk halindeki writeln komutunun bulunduğu satırı aşağıdaki hale getirelim. (ORNEK2B.PAS)
  writeln( 3.14 * 5 * 5 :6:2);
    Bu programın çıktısında sonuç aşağıda ilk satırdaki  gibi olacaktır. 78.50 sayısından önce bir boşluk karakteri olduğuna dikkat edin. Şimdi buradaki ":6:2" şeklinde eklediğimiz ifadelerin ne işe yaradığını kısaca açıklayalım. Birinci ":" işaretinden sonraki 6 sayısı, ekranda göstereceğimiz sayının 6 karakter  boşluk bırakıldıktan sonra sağa dayalı olarak yazılacağını belirtiyor. Aşağıda boşluğu dikkate alarak sayarsanız "0" ın altıncı karakter olduğunu rahatlıkla görebilirsiniz. 2.sayı olan "2" ise virgülden sonra kaç basamak gösterilmesini istediğimizi belirtiyor. Eğer ":6:2" yerine ":6:1" yazsaydık sayı ekrana 2. satırdaki gibi yazılacaktı. Eğer ":7:2" yazsaydık 3.satırdaki gibi olurdu. Örnekleri istediğiniz gibi çoğaltıp test ederek durumu daha iyi kavrayabilirsiniz.
78.50
  78.5
  78.50
    Burada karşımıza bir sorun çıkabilir. Örneğin sayımızın virgülden önceki basamak sayısı 5 olsun, mesela "78334.34". Burada formatlama şekli olarak ":4:5" versek sonuç ne olurdu? Virgulden sonra 5 basamak istediğimize göre sayının ekrana 78334.34000 olarak yazılacağı açıktır. Fakat bu sayının karakter olarak uzunluğu bizim belirttiğimiz "4" sayısından büyük. İşte bu durumda siz sayının toplam karakter uzunluğu olan 11'den büyük bir sayı vermezseniz sayının sığmayan kısmını yutmak yerine pascal sayıyı sola dayalı olarak aşağıdaki gibi yazar.
78334.34000
    Sayılarla ilgili sorunumuzu bu kadarıyla hallettikten sonra şimdi aynı anda hem alanı, hem de çevreyi hesaplayan bir program yazalım. (Çevre = 2*PI*R) Bu arada PI sayısının biraz daha hassas bir halini kullanalım. (PI = 3.1415926535897932385)
begin
  writeln( 3.1415926535897932385 * 5 * 5 :20:10);
  writeln( 3.1415926535897932385 * 2 * 5 :20:10);
  readln;
end.
Yarıçapı 5 olan dairenin pi = 3.14 için alan ve çevresini hesaplar   ORNEK3.PAS
    Bu programın çıktısı aşağıdaki şekilde olacaktır.
78.5398163400
31.4159265360
    Bu programı kendiniz yazmaya çalışırsanız programı hazırlama kısmının büyük bir bölümü bu PI sayısının hassas değerini düzgün bir şekilde yazmaya çalışmakla geçer. Bir matematik programı yazdığınızı ve programınızın yüzlerce yerinde PI sayısını kullandığınızı düşündüğünüzde bu işin ne kadar zor olabileceğini daha kolay anlayabilirsiniz. PI sayısı hiç değişmediğine göre benim her seferinde aynı sayıyı yazmama ne gerek var? Bilgisayara PI sayısı şuna eşittir desem, daha sonra her PI dediğimde bunu anlasa olmaz mı? Elbette olur. Bunun için Pascal dilinde sabit (constant) tanımlaması yapılır...




    Şimdi ilk örneğimizi verelim. Aşağıdaki tabloda solda bulunan programın kısa tanımı, sağdaki ise programa vermeniz tavsiye edilen dosya adıdır. Bu dosya adlandırmalarına uymanız ileride yararlı olacak.

 
   
       NOT : Aşağıda verdiğimiz ve daha sonra vereceğimiz örnekleri kendiniz yazmak zorunda değilsiniz. Tüm bölümlerin örnek programlarının hazır hallerinin bulunduğu zip dosyasını kitabın sonundaki bağlantı aracılığıyla, ya da buraya tıklayarak alabilirsiniz. Bu dosyayı uygun bir dizine açtıktan sonra, verilen ada sahip programları yükleyebilirsiniz.
   

 

 
begin
  writeln('MERHABA');
  readln;
end.
İlk program örneğimiz   ORNEK1.PAS
    Bu programı çalıştırdığınızda yapacağı tek şey ekrana MERHABA kelimesini yazmak olacaktır. İlk satırdaki begin kelimesi bir pascal programının başlangıç noktasını gösterir. Son satırdaki end ise programın bitişini belirtir. Yani programımız begin ile end kelimeleri arasındaki komutları yerine getirecektir.
    Öyleyse programın yerine getireceği ilk komut ikinci satırdaki writeln('MERHABA')'dır. WRITE kelimesi türkçeye YAZ olarak çevrilebilir. Bu komut (write) ekrana tırnak içerisinde verilen kelimeyi yazma işini yerine getirir. WRITELN'ın, WRITE komutundan farkı ise yazdıktan sonra ekranda bir alt satıra geçmesidir.
    Sonrasındaki readln komutu bilgisayarı enter tuşuna basılıncaya kadar bekletir.
    Buraya kadar writeln ve readln komutlarının sadece bir kullanışlarını gördük. Bu komutlar standart programlar geliştirirken en çok kullanacağınız pascal komutlarındandır, fakat kullanımları ve kullanım alanları yukarıda anlattığımız kadar basit değildir. Mesela readln komutunun asıl görevi bilgisayarı enter tuşuna basıncaya kadar bekletmekten çok kullanıcıdan bilgi almaktır. Bu ve bunun gibi kullanılışlarını yeri geldikçe öğreneceğiz.
    Program içerisindeki noktalama işaretleri dikkatinizi çekmiştir. begin komutundan sonra hiçbir zaman "." veya ";" konulmaz. Programı bitiren end   komutundan sonra "." konulmalıdır. Fakat end komutu sadece programı bitirmekle değil, daha sonra öğreneceğimiz bazı işlem gruplarını bitirmekle de görevli  olduğundan diğer yerlerde sonuna ";" konulması gerekir. writeln ve readln gibi komutların sonuna ";" konularak bunların ayrı komutlar olduğu belirtilmelidir.
    Belki yukarıda anlattığım noktalama işaretleri ile ilgili bilgileri okuduktan sonra size çok saçma veya zor gelmiş olabilir. Ayrıca bunları oturup bütün komutlar için ezberlemek zorunda olduğunuzu düşünebilirsiniz. İlerlediğinizde bu işaretlerin neden gerekli olduğunu ve anlamanın aslında bu kadar zor olmadığını çok daha iyi anlayacaksınız.
    Bu programı yazdık ve çalıştırdık, fakat dikkat ederseniz yararlı bir kullanım alanı yok. İsterseniz daha işe yarar birşeyle uğraşalım. Örneğin bir dairenin alanını hesaplayan bir program yazalım. Mesela dairenin yarıçapı 5 olsun, pi sayısı ise 3.14. Bunu elle de hesaplayabiliriz, fakat filmlerin bitmemesi için başroldekilerin ölmemesi gerektiği gibi, bu yazının devam edebilmesi için bu örneği vermeliyiz.
    Bir program yazmaya başlamadan önce, özellikle matematiksel işlemlerde, ilk olarak problemi elinizle nasıl çözdüğünüze bakmanız gerekir. PI x R2 dairenin alanını hesaplama formülü olduğuna göre burada PI yerine 3.14, R yerine 5 koyarsak...  3.14 x 52 = 3.14 x 5 x 5 = 78.5 bulunur. Şimdi aynı işlemi basit bir şekilde bilgisayara yaptıralım.
begin
  writeln( 3.14 * 5 * 5 );
  readln;
end.
Yarıçapı 5 olan bir dairenin pi = 3.14 için alanını hesaplar   ORNEK2.PAS
    Bu programın öncekinden tek farkı ikinci satırdaki writeln komutunun parantez içerisindeki parametrelerinin değişmesi. Yukarıda 3.14 x 5 x 5 şeklinde verdiğimiz sonucu hatırlıyorsunuz. Pascal dilinde ve genellikle bütün dillerde çarpı işareti olarak "*" kullanılır. Daha önceki kullanılışında writeln komutunun içerisinde bir de tırnak işaretleri vardı. Tırnak işareti olduğu zaman writeln komutu sonuç olarak dışarıya o tırnakların arasında ne görüyorsa onu yazar. Bunun ne demek olduğunu daha iyi anlamak için parantezlerin içine daha önceki programdaki gibi tırnak yerleştirelim. Yani ikinci satırı aşağıdaki hale getirelim ve yeniden çalıştıralım. (ORNEK2A.PAS)
  writeln(' 3.14 * 5 * 5 ');
    Programın ilk ve değişmiş hallerinin çıktıları (çalıştıklarında ekrana yazdıkları sonuçlar) sırasıyla aşağıdaki gibi olacaktır.
7.8500000000E+01
3.14 * 5 * 5
    Birinci programda writeln komutu parantez içerisindeki ifadeyi hesaplayıp sonucu ekrana yazar, ikincisinde ise parantez içerisinde, tırnakların  arasında ne görüyorsa onu yazar. Bu durumda writeln komutu için tırnak içerisinde yazılan hesaplanması gereken bir işlem değil, sadece bir yazıdır.
    Bu arada programımızın sonucuyla ilgili küçük bir sorunumuz var. Elimizle hesapladığımızda sonuç 78.5 çıkarken yukarıdaki çıktıya göre sonuç 7.8500000000E+01 gibi gözüküyor. Buradaki 7.85 sonucu yanlış değil mi? Hayır. Aslında yukarıdaki sayı özel bir gösterimde yazılmıştır.   İlk olarak E harfinden önceki sayıyı aynen alıyoruz, yani 7.85. Burada E'den sonra "+" işareti var ve devamında 01 sayısı. Bunun anlamı ise 10'un 1. kuvvetini alıp 7.85 ile çarpacağımız. Yani 7.85 * 101 = 78.5. Burada 01 yerine 03 olsaydı 1000 ile çarpacaktık. Eğer E'den sonra "+" yerine "-" işareti olsaydı 1/10'un 1. kuvvetini yani 10'un -1. kuvvetini alacaktık. Aşağıda birkaç örnek verelim isterseniz.
5.1400000000E-01 = 0.514 = 5.14 * (10)-1
5.1400000000E+01 = 51.40 = 5.14 * (10)1
5.1400000000E+03 = 5140  = 5.14 * (10)3
5.1400000000E+00 = 5.14  = 5.14 * (10)0
    Yukarıda sayıların özel bir  yazılış şeklini öğrenmiş olduk. Bu yazılış stili ile neredeyse bütün programlama dillerinde karşılaşabilirsiniz. Elbette bu ve bundan sonra yapacağımız programlarda sonucun ekrana bu şekilde yansıtılması ve onu anlamak için vakit kaybetmemiz bizim için pek iyi olmaz. Şimdi ikinci örneğimizin ilk halindeki writeln komutunun bulunduğu satırı aşağıdaki hale getirelim. (ORNEK2B.PAS)
  writeln( 3.14 * 5 * 5 :6:2);
    Bu programın çıktısında sonuç aşağıda ilk satırdaki  gibi olacaktır. 78.50 sayısından önce bir boşluk karakteri olduğuna dikkat edin. Şimdi buradaki ":6:2" şeklinde eklediğimiz ifadelerin ne işe yaradığını kısaca açıklayalım. Birinci ":" işaretinden sonraki 6 sayısı, ekranda göstereceğimiz sayının 6 karakter  boşluk bırakıldıktan sonra sağa dayalı olarak yazılacağını belirtiyor. Aşağıda boşluğu dikkate alarak sayarsanız "0" ın altıncı karakter olduğunu rahatlıkla görebilirsiniz. 2.sayı olan "2" ise virgülden sonra kaç basamak gösterilmesini istediğimizi belirtiyor. Eğer ":6:2" yerine ":6:1" yazsaydık sayı ekrana 2. satırdaki gibi yazılacaktı. Eğer ":7:2" yazsaydık 3.satırdaki gibi olurdu. Örnekleri istediğiniz gibi çoğaltıp test ederek durumu daha iyi kavrayabilirsiniz.
78.50
  78.5
  78.50
    Burada karşımıza bir sorun çıkabilir. Örneğin sayımızın virgülden önceki basamak sayısı 5 olsun, mesela "78334.34". Burada formatlama şekli olarak ":4:5" versek sonuç ne olurdu? Virgulden sonra 5 basamak istediğimize göre sayının ekrana 78334.34000 olarak yazılacağı açıktır. Fakat bu sayının karakter olarak uzunluğu bizim belirttiğimiz "4" sayısından büyük. İşte bu durumda siz sayının toplam karakter uzunluğu olan 11'den büyük bir sayı vermezseniz sayının sığmayan kısmını yutmak yerine pascal sayıyı sola dayalı olarak aşağıdaki gibi yazar.
78334.34000
    Sayılarla ilgili sorunumuzu bu kadarıyla hallettikten sonra şimdi aynı anda hem alanı, hem de çevreyi hesaplayan bir program yazalım. (Çevre = 2*PI*R) Bu arada PI sayısının biraz daha hassas bir halini kullanalım. (PI = 3.1415926535897932385)
begin
  writeln( 3.1415926535897932385 * 5 * 5 :20:10);
  writeln( 3.1415926535897932385 * 2 * 5 :20:10);
  readln;
end.
Yarıçapı 5 olan dairenin pi = 3.14 için alan ve çevresini hesaplar   ORNEK3.PAS
    Bu programın çıktısı aşağıdaki şekilde olacaktır.
78.5398163400
31.4159265360
    Bu programı kendiniz yazmaya çalışırsanız programı hazırlama kısmının büyük bir bölümü bu PI sayısının hassas değerini düzgün bir şekilde yazmaya çalışmakla geçer. Bir matematik programı yazdığınızı ve programınızın yüzlerce yerinde PI sayısını kullandığınızı düşündüğünüzde bu işin ne kadar zor olabileceğini daha kolay anlayabilirsiniz. PI sayısı hiç değişmediğine göre benim her seferinde aynı sayıyı yazmama ne gerek var? Bilgisayara PI sayısı şuna eşittir desem, daha sonra her PI dediğimde bunu anlasa olmaz mı? Elbette olur. Bunun için Pascal dilinde sabit (constant) tanımlaması yapılır...




    Şimdi ilk örneğimizi verelim. Aşağıdaki tabloda solda bulunan programın kısa tanımı, sağdaki ise programa vermeniz tavsiye edilen dosya adıdır. Bu dosya adlandırmalarına uymanız ileride yararlı olacak.

 
   
       NOT : Aşağıda verdiğimiz ve daha sonra vereceğimiz örnekleri kendiniz yazmak zorunda değilsiniz. Tüm bölümlerin örnek programlarının hazır hallerinin bulunduğu zip dosyasını kitabın sonundaki bağlantı aracılığıyla, ya da buraya tıklayarak alabilirsiniz. Bu dosyayı uygun bir dizine açtıktan sonra, verilen ada sahip programları yükleyebilirsiniz.
   

 

 
begin
  writeln('MERHABA');
  readln;
end.
İlk program örneğimiz   ORNEK1.PAS
    Bu programı çalıştırdığınızda yapacağı tek şey ekrana MERHABA kelimesini yazmak olacaktır. İlk satırdaki begin kelimesi bir pascal programının başlangıç noktasını gösterir. Son satırdaki end ise programın bitişini belirtir. Yani programımız begin ile end kelimeleri arasındaki komutları yerine getirecektir.
    Öyleyse programın yerine getireceği ilk komut ikinci satırdaki writeln('MERHABA')'dır. WRITE kelimesi türkçeye YAZ olarak çevrilebilir. Bu komut (write) ekrana tırnak içerisinde verilen kelimeyi yazma işini yerine getirir. WRITELN'ın, WRITE komutundan farkı ise yazdıktan sonra ekranda bir alt satıra geçmesidir.
    Sonrasındaki readln komutu bilgisayarı enter tuşuna basılıncaya kadar bekletir.
    Buraya kadar writeln ve readln komutlarının sadece bir kullanışlarını gördük. Bu komutlar standart programlar geliştirirken en çok kullanacağınız pascal komutlarındandır, fakat kullanımları ve kullanım alanları yukarıda anlattığımız kadar basit değildir. Mesela readln komutunun asıl görevi bilgisayarı enter tuşuna basıncaya kadar bekletmekten çok kullanıcıdan bilgi almaktır. Bu ve bunun gibi kullanılışlarını yeri geldikçe öğreneceğiz.
    Program içerisindeki noktalama işaretleri dikkatinizi çekmiştir. begin komutundan sonra hiçbir zaman "." veya ";" konulmaz. Programı bitiren end   komutundan sonra "." konulmalıdır. Fakat end komutu sadece programı bitirmekle değil, daha sonra öğreneceğimiz bazı işlem gruplarını bitirmekle de görevli  olduğundan diğer yerlerde sonuna ";" konulması gerekir. writeln ve readln gibi komutların sonuna ";" konularak bunların ayrı komutlar olduğu belirtilmelidir.
    Belki yukarıda anlattığım noktalama işaretleri ile ilgili bilgileri okuduktan sonra size çok saçma veya zor gelmiş olabilir. Ayrıca bunları oturup bütün komutlar için ezberlemek zorunda olduğunuzu düşünebilirsiniz. İlerlediğinizde bu işaretlerin neden gerekli olduğunu ve anlamanın aslında bu kadar zor olmadığını çok daha iyi anlayacaksınız.
    Bu programı yazdık ve çalıştırdık, fakat dikkat ederseniz yararlı bir kullanım alanı yok. İsterseniz daha işe yarar birşeyle uğraşalım. Örneğin bir dairenin alanını hesaplayan bir program yazalım. Mesela dairenin yarıçapı 5 olsun, pi sayısı ise 3.14. Bunu elle de hesaplayabiliriz, fakat filmlerin bitmemesi için başroldekilerin ölmemesi gerektiği gibi, bu yazının devam edebilmesi için bu örneği vermeliyiz.
    Bir program yazmaya başlamadan önce, özellikle matematiksel işlemlerde, ilk olarak problemi elinizle nasıl çözdüğünüze bakmanız gerekir. PI x R2 dairenin alanını hesaplama formülü olduğuna göre burada PI yerine 3.14, R yerine 5 koyarsak...  3.14 x 52 = 3.14 x 5 x 5 = 78.5 bulunur. Şimdi aynı işlemi basit bir şekilde bilgisayara yaptıralım.
begin
  writeln( 3.14 * 5 * 5 );
  readln;
end.
Yarıçapı 5 olan bir dairenin pi = 3.14 için alanını hesaplar   ORNEK2.PAS
    Bu programın öncekinden tek farkı ikinci satırdaki writeln komutunun parantez içerisindeki parametrelerinin değişmesi. Yukarıda 3.14 x 5 x 5 şeklinde verdiğimiz sonucu hatırlıyorsunuz. Pascal dilinde ve genellikle bütün dillerde çarpı işareti olarak "*" kullanılır. Daha önceki kullanılışında writeln komutunun içerisinde bir de tırnak işaretleri vardı. Tırnak işareti olduğu zaman writeln komutu sonuç olarak dışarıya o tırnakların arasında ne görüyorsa onu yazar. Bunun ne demek olduğunu daha iyi anlamak için parantezlerin içine daha önceki programdaki gibi tırnak yerleştirelim. Yani ikinci satırı aşağıdaki hale getirelim ve yeniden çalıştıralım. (ORNEK2A.PAS)
  writeln(' 3.14 * 5 * 5 ');
    Programın ilk ve değişmiş hallerinin çıktıları (çalıştıklarında ekrana yazdıkları sonuçlar) sırasıyla aşağıdaki gibi olacaktır.
7.8500000000E+01
3.14 * 5 * 5
    Birinci programda writeln komutu parantez içerisindeki ifadeyi hesaplayıp sonucu ekrana yazar, ikincisinde ise parantez içerisinde, tırnakların  arasında ne görüyorsa onu yazar. Bu durumda writeln komutu için tırnak içerisinde yazılan hesaplanması gereken bir işlem değil, sadece bir yazıdır.
    Bu arada programımızın sonucuyla ilgili küçük bir sorunumuz var. Elimizle hesapladığımızda sonuç 78.5 çıkarken yukarıdaki çıktıya göre sonuç 7.8500000000E+01 gibi gözüküyor. Buradaki 7.85 sonucu yanlış değil mi? Hayır. Aslında yukarıdaki sayı özel bir gösterimde yazılmıştır.   İlk olarak E harfinden önceki sayıyı aynen alıyoruz, yani 7.85. Burada E'den sonra "+" işareti var ve devamında 01 sayısı. Bunun anlamı ise 10'un 1. kuvvetini alıp 7.85 ile çarpacağımız. Yani 7.85 * 101 = 78.5. Burada 01 yerine 03 olsaydı 1000 ile çarpacaktık. Eğer E'den sonra "+" yerine "-" işareti olsaydı 1/10'un 1. kuvvetini yani 10'un -1. kuvvetini alacaktık. Aşağıda birkaç örnek verelim isterseniz.
5.1400000000E-01 = 0.514 = 5.14 * (10)-1
5.1400000000E+01 = 51.40 = 5.14 * (10)1
5.1400000000E+03 = 5140  = 5.14 * (10)3
5.1400000000E+00 = 5.14  = 5.14 * (10)0
    Yukarıda sayıların özel bir  yazılış şeklini öğrenmiş olduk. Bu yazılış stili ile neredeyse bütün programlama dillerinde karşılaşabilirsiniz. Elbette bu ve bundan sonra yapacağımız programlarda sonucun ekrana bu şekilde yansıtılması ve onu anlamak için vakit kaybetmemiz bizim için pek iyi olmaz. Şimdi ikinci örneğimizin ilk halindeki writeln komutunun bulunduğu satırı aşağıdaki hale getirelim. (ORNEK2B.PAS)
  writeln( 3.14 * 5 * 5 :6:2);
    Bu programın çıktısında sonuç aşağıda ilk satırdaki  gibi olacaktır. 78.50 sayısından önce bir boşluk karakteri olduğuna dikkat edin. Şimdi buradaki ":6:2" şeklinde eklediğimiz ifadelerin ne işe yaradığını kısaca açıklayalım. Birinci ":" işaretinden sonraki 6 sayısı, ekranda göstereceğimiz sayının 6 karakter  boşluk bırakıldıktan sonra sağa dayalı olarak yazılacağını belirtiyor. Aşağıda boşluğu dikkate alarak sayarsanız "0" ın altıncı karakter olduğunu rahatlıkla görebilirsiniz. 2.sayı olan "2" ise virgülden sonra kaç basamak gösterilmesini istediğimizi belirtiyor. Eğer ":6:2" yerine ":6:1" yazsaydık sayı ekrana 2. satırdaki gibi yazılacaktı. Eğer ":7:2" yazsaydık 3.satırdaki gibi olurdu. Örnekleri istediğiniz gibi çoğaltıp test ederek durumu daha iyi kavrayabilirsiniz.
78.50
  78.5
  78.50
    Burada karşımıza bir sorun çıkabilir. Örneğin sayımızın virgülden önceki basamak sayısı 5 olsun, mesela "78334.34". Burada formatlama şekli olarak ":4:5" versek sonuç ne olurdu? Virgulden sonra 5 basamak istediğimize göre sayının ekrana 78334.34000 olarak yazılacağı açıktır. Fakat bu sayının karakter olarak uzunluğu bizim belirttiğimiz "4" sayısından büyük. İşte bu durumda siz sayının toplam karakter uzunluğu olan 11'den büyük bir sayı vermezseniz sayının sığmayan kısmını yutmak yerine pascal sayıyı sola dayalı olarak aşağıdaki gibi yazar.
78334.34000
    Sayılarla ilgili sorunumuzu bu kadarıyla hallettikten sonra şimdi aynı anda hem alanı, hem de çevreyi hesaplayan bir program yazalım. (Çevre = 2*PI*R) Bu arada PI sayısının biraz daha hassas bir halini kullanalım. (PI = 3.1415926535897932385)
begin
  writeln( 3.1415926535897932385 * 5 * 5 :20:10);
  writeln( 3.1415926535897932385 * 2 * 5 :20:10);
  readln;
end.
Yarıçapı 5 olan dairenin pi = 3.14 için alan ve çevresini hesaplar   ORNEK3.PAS
    Bu programın çıktısı aşağıdaki şekilde olacaktır.
78.5398163400
31.4159265360
    Bu programı kendiniz yazmaya çalışırsanız programı hazırlama kısmının büyük bir bölümü bu PI sayısının hassas değerini düzgün bir şekilde yazmaya çalışmakla geçer. Bir matematik programı yazdığınızı ve programınızın yüzlerce yerinde PI sayısını kullandığınızı düşündüğünüzde bu işin ne kadar zor olabileceğini daha kolay anlayabilirsiniz. PI sayısı hiç değişmediğine göre benim her seferinde aynı sayıyı yazmama ne gerek var? Bilgisayara PI sayısı şuna eşittir desem, daha sonra her PI dediğimde bunu anlasa olmaz mı? Elbette olur. Bunun için Pascal dilinde sabit (constant) tanımlaması yapılır...




    Biraz teorik bir iki bölümden sonra pratik yapmaya sıra geldi sanırım. Yine pek yararlı olmayan bir programı örnek olması açısından yapmalıyız. Bu seferki programımızda ekrana bir cümleyi birden fazla kez yazmak istiyoruz. Mesela ekrana alt alta 10 kez "EN BÜYÜK CİMBOM" yazmak istediniz. Herhalde programlamaya başlayan  birçok kişinin döngüleri öğrendiğinde ilk yaptığı şey budur. (tamam kızmayın programda CİMBOM yerine istediğiniz takımın adını yazın)
    Her zaman yaptığımız gibi ilk önce bu işlemi elle nasıl yaptığımızı bir düşünelim. Bir kağıda bu cümleyi 10 kez yapmak istediğinizde ne yaparsınız? Genellikle ilk önce cümleyi yazar sonra 1 diye aklınızdan sayfamaya başlarsınız. 2.kez yazar ve aklınızdaki sayıyı 1 arttırıp 2'ye gelirsiniz. Bu işlem böyle devam eder ve sonunda aklınızda tuttuğunuz sayı 10 olduğunda işlemi sona erdirirsiniz.

    İlk olarak aynı işi yapan programımızın hazır kodunu verelim.
var
  I : Integer;

begin
  for I := 1 to 10 do Writeln('EN BÜYÜK CİMBOM');
  readln;
end.
Ekrana 10 kez verilen cümleyi yazar.   ORNEK5.PAS
    Örneğimizde ilk olarak demin bahsettiğimiz aklımızda tuttuğumuz sayı gibi kaldığımız adımı hatırlamak için bir değişken tanımladık. Daha sonra for döngüsü kullandık. Bu döngü ilk olarak I'ya "to" kelimesinden önce verdiğiniz sayıyı atar. Yani buradaki örneğimizde "1". Daha sonra devamındaki (do kelimesinden sonraki) işlemi yerine getirir. Yani ekrana istediğimiz cümleyi yazar. Sonra tekrar başa dönüp "to" kelimesinden sonraki sayı olan "10" ile döngü değişkeni I'yı karşılaştırır. I şu anda 1 olduğuna göre döngüye devam edilmelidir. I'nın değeri 1 arttırılır ve 2 haline gelir. Döngü tekrar verilen işlemi (writeln) yerine getirir. Yine başa dönülüp I'nın değerinin 10 olup olmadığına bakar, olmamışsa işleme devam edilir. Bu durum I'nın değeri 10 olana kadar devam eder. Fakat bu sefer I'nın değeri arttırılmaz ve döngü sona erer. Program bir sonraki komut olan readln komutuna geldiğinde I'nın değeri 10'dur ve ekrana istediğimiz cümle 10 kez yazılmış haldedir. Readln komutu daha önce olduğu gibi burada da programı ENTER tuşuna basılana kadar bekletmek için kullanılmıştır.
    Şimdi her zaman olduğu gibi programımızı daha kullanışlı ve kullanıcı ile daha içli dışlı hale getirelim. Yazının ekrana kaç kez yazılmasını istediğini kullanıcıdan isteyelim. Bunun için bildiğiniz gibi kullanıcıdan aldığımız sayıyı tutmak için bir değişken tanımlamalıyız. Aşağıda bu işi gerçekleştiren program yer almaktadır.
var
  I, KacKez : Integer;
 
begin
  readln(KacKez);
  for I := 1 to KacKez do Writeln('EN BÜYÜK CİMBOM');
  readln;
end.
Kullanıcının istediği kadar verilen cümleyi yazar.   ORNEK5A.PAS
    Programımızdaki tek fark ilk satırda kullanıcıdan readln(KacKez) komutuyla bir sayı istenmesi ve döngünün I kaç olana kadar devam edeceğini belirten yukarıdaki programdaki 10 sayısı yerine bu sayının yazılması. Aynı şekilde döngünün başladığı sayının da 1 olması gerekmiyor. Bunu da kullanıcıdan isteyebilirsiniz veya başka bir değer girebilirsiniz, ama bu programımız için pek de bir yararı yok.
    Şimdi yine basit ama yararlı bir örnekle devam edelim. Bu kez 1'den verilen sayıya kadar olan sayıları alt alta ekrana yazdırmak istiyoruz. Bunun için hangi sayıya kadar yazdırılmak isteniyorsa bu sayıyı yukarıdaki gibi kullanıcıdan istemeli ve aşağıdaki programda gözüktüğü şekliyle ekrana bu sayıya kadar olan sayıları yazdırmalıyız.
var
  I, KacaKadar : Integer;
 
begin
  readln(KacaKadar);
  for I := 1 to KacaKadar do Writeln(I);
  readln;
end.
Kullanıcının istediği sayıya kadar olan sayıları yazar.   ORNEK5B.PAS
    Döngü değişkeni zaten otomatik olarak istediğimiz sayıya kadar olan değerleri tek tek alacağı için yaptığımız tek şey Writeln(I) komutu ile bu sayıları ekrana yazdırmak oldu. Gelin bu verilen sayıya kadar olan sayıları toplayan (mesela 1'den 3'e kadar olan sayıların toplamı 1+2+3=6) bir program yazalım. Her zaman olduğu gibi bu programı da yazmadan önce elle bu işlemi nasıl yaptığımızı düşünelim. 1'den 3'e kadar olan sayıları aklımızda nasıl topladığımızı yazıya dökelim.
    1'den başlarız ve 3'e kadar sayarız. Bu arada kafamızda tuttuğumuz toplam sayıya (ki bu sayının ilk değeri sıfır) bulunduğumuz sayıyı ekleriz. Aynen aşağıdaki gibi

    0 + 1 = 1
    1 + 2 = 3
    3 + 3 = 6
    Yukarıda kırmızı olan sayılar toplama işlemini yapmadan önce kafamızda tuttuğumuz, o ana kadar işleme soktuğumuz sayıların toplamıdır. Toplam adını vereceğimiz bu değişken işlem gerçekleştikten sonra mavi renkle gösterilen değeri almakta ve bu değeriyle bir alttaki satırda kullanılmaktadır. Görüldüğü gibi siyah renkli sayılar sıralı olup rahatlıkla bir for döngüsü ile elde edilebilirler. Aşağıdaki programı dikkatle incelediğinizde bunu çok daha iyi anlayacaksınız.
var
  I, KacaKadar, Toplam : Integer;
 
begin
  readln(KacaKadar);
  Toplam := 0; { elimizdeki ilk toplam 0 }
  for I := 1 to KacaKadar do Toplam := Toplam + I;
  writeln(Toplam); { ekrana sonucu yaz }
  readln;
end.
Kullanıcının istediği sayıya kadar olan sayıları toplar.   ORNEK5C.PAS
    Hazır toplamı bulmuşken bir de yine kullanıcının verdiği sayının faktoriyelini hesaplayalım. Aşağıda 4! sayısının nasıl hesaplandığı görülmektedir.
    1 x 2 = 2
    2 x 3 = 6
    6 x 4 = 24
    Burada da yine kırmızı renkli sayılar o satıra kadar çarpılan sayıların çarpımını içeriyor. (1'den başlamamıza gerek yok çünkü bir sayıyı 1'le çarpsak yine aynı sayıyı elde edeceğiz)
var
  I, Kac, Faktoriyel : Integer;
 
begin
  readln(Kac);
  Faktoriyel := 1;
  for I := 2 to Kac do Faktoriyel := Faktoriyel * I;
  writeln(Faktoriyel);
  readln;
end.
Kullanıcının verdiği sayının faktoriyelini bulur   ORNEK5D.PAS

    DEVAM EDECEK... Şu ana kadar verdiğimiz örneklerin hazır halini içeren zip dosyasını buraya tıklayarak alabilirsiniz. Bilmeyenler için, bu bir sıkıştırılmış dosya formatıdır ve açılabilmesi için pkunzip.exe'ye ihtiyaç vardır. Açmak için "pkunzip ornek.zip" komutunu vermelisiniz.




    Şimdiye kadar yaptığımız programların herbiri ayrı ayrı işler yerine getiriyordu. Örneğin bir önceki bölümde son iki örnekten biri verilen sayıya kadar olan sayıları toplarken, diğeri faktoriyelini hesaplıyordu. Aslında bunların her ikisini de aynı programda hesaplatabiliriz, ama bizim sorunumuz başka. Mesela kullanıcı faktoriyel hesaplanmasını istediğinde faktoriyel, toplam hesaplanmasını istediğinde toplam kısımlarının çalıştırılmasını sağlamak istedik. Bu işlemi yerine getirmek için IF kontrol deyimini kullanabiliriz. İlk olarak bu deyimi kullanan basit bir örnek verelim.
var
  Yas : Integer;

begin
  write('Yaşınız : ');
  readln(Yas);
  if Yas < 35 then
    Writeln('35 yaşından küçüksünüz');
  readln;
end.
Yaş 35'ten küçükse...   ORNEK6.PAS
    Program çalıştırıldığında ilk satırdaki write('Yaşınız : ') komutu sonucunda ekranda "Yaşınız : " şeklinde bir yazı belirir ve altındaki readln komutu kullanıcının Yas değişkeninin değerini girmesini bekler. Yas girildiğinde altındaki kontrol sayesinde Yas 35'ten küçükse bu kullanıcıya bildirilir, değilse herhangi bir işlem yapılmaz ve kontrol her iki durumda da alttaki readln komutuna geçer.
    Programda kontrolü gerçekleştiren if deyiminin en basit hali kullanılmıştır. Bu hali ile if deyimi kendisinden sonra gelen ve then kelimesine kadar devam eden ifadenin doğruluğunu kontrol eder. Burada bu ifade "Yas < 35" tir. Eğer ifade doğru ise if deyimi devamındaki (then den sonra gelen) komutu yerine getirir. Burada bu komut Writeln('35 yaşından küçüksünüz') komutudur. (Daha önce for komutunda do kelimesinden sonra ";" koyulmadığı gibi burada da then kelimesinden sonra ";" koyulmadığına dikkat edin)
    Yukarıdaki kontrol Türkçe'ye "Eğer Yaş 35'ten küçük ise ekrana 35 yaşından küçüksünüz yaz" diye çevrilebilir. (IF = EĞER, THEN = İSE) Burada "<" işareti ile yapılan kontrol yerine ">" (büyüktür) gibi farklı birçok karşılaştırma operatörü kullanılabilir. Bu operatör tiplerini bu bölüm içerisinde inceleyeceğiz.

    IF deyimi aynı zamanda ELSE (değilse) ile birlikte kullanılarak IF deyimine verilen şart geçerli olmadığında başka bir işlemin gerçekleştirilmesi sağlanabilir. Aşağıdaki örnekte Yas değişkeninin değeri 35'ten büyük olduğunda da bunu belirten mesaj verilmesi sağlanmıştır.
var
  Yas : Integer;

begin
  write('Yaşınız : ');
  readln(Yas);
  if Yas < 35 then
    Writeln('35 yaşından küçüksünüz')
  else
    Writeln('35 yaşından büyüksünüz');
  readln;
end.
Yaş 35'ten küçükse... büyükse...   ORNEK6A.PAS
    Bir önceki programda Writeln('35 yaşından küçüksünüz') komutunun sonunda ";" bulunuyordu. Şimdi bunu kaldırdık ve komutun devamında else deyimi kullanarak if'in şartı olan (Yas < 35)'in gerçeklenmemesi halinde yerine getirilecek komutu belirledik. Bir örnek üzerinde bunun nasıl çalıştığını açıklayalım.
    Diyelim ki kullanıcı Yas değişkeninin değeri olarak 37 girsin. Kontrol bu girişten hemen sonra if deyiminin bulunduğu satıra gelecektir. Bu satırda if deyiminin kontrol edeceği ifade (Yas < 35) ifadesidir. Yas, 37 olduğuna göre bu ifade aynı zamanda (37 < 35) ifadesidir. Bunun doğru olmadığı açıktır. O halde if deyiminin komutu değil, else deyiminin komutu yerine getirilecektir. Burada yazdığımız ifadelerin Türkçe'ye çevrilmiş halini aşağıda görüyorsunuz.
    EĞER Yaş, 35'ten küçük İSE
      Ekrana "35 yaşından küçüksünüz" yaz,
    DEĞİLSE
      Ekrana "35 yaşından büyüksünüz" yaz.




    Dikkat ederseniz FOR döngüsünü anlattıktan sonra IF kontrol deyimine ve ordan da yeni bir döngüye atladık. Bunun sebebi WHILE döngüsünün bu son iki bölümde anlattığımız komutların bir çeşit bileşimi olması. FOR döngüsünde döngünün hemen başında işlemin hangi değerler arasında tekrarlanacağını (mesela I, 1'den 10'a kadar) baştan veriyor ve döngüye bu işlem verdiğimiz kez tekrarlanana kadar müdahele edemiyorduk. While döngüsü FOR'un verilen bir koşul sağlandığı sürece devam eden şekli olarak da tabir edilebilir, fakat başka kullanım alanları da vardır.
    İlk olarak daha önce FOR döngüsü ile yaptığımız verilen sayıya kadar olan sayıları toplama işlemini WHILE kullanarak yapan örneği verelim ve inceleyelim.
var
  I, KacaKadar, Toplam : Integer;
 
begin
  Readln(KacaKadar);

  Toplam := 0; { elimizdeki ilk toplam 0 }
  I := 1; { döngü değişkenine ilk değerini verdik }

  while (I <= KacaKadar) do
  begin
   Toplam := Toplam + I;
   I := I + 1;
  end;

  Writeln(Toplam); { ekrana sonucu yaz }
  Readln;
end.
Kullanıcının istediği sayıya kadar olan sayıları toplar.   ORNEK7A.PAS
    Programın ilk satırları ve değişkenlerinde değişen hiçbirşey yok. Gene kullanıcıdan hangi sayıya kadar olan sayıları toplamak istediğimizi soruyoruz, ve Toplam'ı tutacak olan değişkenimize ilk değer olarak "0" veriyoruz. Değişiklikler bu satırın hemen altından başlıyor. Daha önce FOR döngüsünde I'nın ilk değerini döngünün parametreleri olarak veriyorduk ve FOR komutu kendine verilen bu parametrelerden ilkini döngü değişkenimiz olan I'ya atıyor, otomatik olarak her döngüde değerini 1 arttırıyor ve ikinci parametreye varana kadar (bitiş koşulu) işlemi devam ettiriyordu.
    While'da ise böyle otomatik ilk değer atama söz konusu değil, zaten döngü değişkeni de yok. Döngünün bitişini ise (yukarıda ikinci parametreye varana kadar dediğimiz şart) While'a parametre olarak verdiğimiz aynen IF'deki gibi bir koşul belirliyor. Burada bu koşul (I <= KacaKadar) yani I'nın, değeri KacaKadar değişkeninin değerinden küçük veya eşit olduğu sürece verilen komutları icra et diyoruz.
    Biz burada gene bir sayıdan başka bir sayıya kadar olan sayıları toplayacağımız için gene artan bir değişkene ihtiyaç duyduk. Aslında bu işlemi FOR ile yapmak çok daha kolay olabilirdi, ama WHILE'ın farkını anlamamız gerekiyor. I'ya toplama işlemine giren ilk sayının değeri olan "1" i atadıktan sonra hemen altında bir While döngüsü açtık.
    Bu döngünün yerine getireceği komutlar altındaki begin ile end arasındaki komutlar olacaktır. Burada bir işlem bloğunun da nasıl tanımlanacağını görüyoruz. Daha önce FOR döngüsündeki örneklerde FOR'un yerine getirdiği komut sadece bir taneydi. Şimdi ise döngünün yerine getireceği birden fazla komut var. Eğer begin ile end kullanarak bir işlem bloğu tanımlamasaydık ve while (I <= KacaKadar) do'dan sonra hemen altındaki komutları yazsaydık, döngü sadece bir komutu yani "Toplam := Toplam + I" satırını yerine getirecekti. Döngü bittiğinde "I := I + 1" komutu sadece 1 kez çalıştırılacak ve bunun sonucunda Toplam'a 10 kez 1 değeri eklenecek ve döngü bittikten sonra I'nın değeri 2 olacaktı.
    İşlem blokları yukarıda gördüğünüz gibi yine programı başlatan begin ile başlar ve end ile biter, fakat bir farkla işlem gruplarında end'in sonuna "." yerine ";" gelir.
Logged

   
Sayfa: [1]   Yukarı git
  Yazdır  
 
Gitmek istediğiniz yer:  

|Site Map | Site Map2 | Arşiv | Wap | Wap2 | Wap Forum | XML | Rss | Google Tagget
|SiberTurk | Frmby
Reklam Vermek için by.deman@msn.com Adresine e-mail gönderiniz
For Advertising contact by.deman@msn.com

MySQL ile Güçlendirildi PHP ile Güçlendirildi Powered by SMF 1.1.7 | SMF © 2006-2008, Simple Machines LLC
Asuke MC by Fakdordes & SaSuKe
XHTML 1.0 Geçerli! CSS Geçerli!
Bu Sayfa 0.271 Saniyede 23 Sorgu ile Oluşturuldu