1. Giriş Turbo Pascal bilgisayar programlama dili DOS işletim sistemi altında çalışan bilgisayar programlama dili aracıdır. Genel amaçlı bir programlama dili ve aynı zamanda gerekli operatör komutları ile hassas hesaplamalar için kod yazılabilen bir programlama dilidir. Genellikle kullanılan bilgisayar programlarında programcının bir iki fare tıklaması ile program yapmasına izin veren programlar tercih edilmektedir. Pascal bu tür bilgisayar dillerinin temelinde duran aslında yapısal bir bilgisayar programlama dilidir. Yapısal bilgisayar programlama dilleri nesne yönelimli bilgisayar programlama dillerinin atası sayılabilir. Nesne yönelimli bilgisayar programlama dili oluşturulan bir nesnenin özellikleri değiştirilerek defalarca kullanılmasına olanak tanıyan bilgisayar programlama yaklaşımı olarak tanımlanabilir. Detaylı olarak bu konu haricinde incelenecektir. Turbo pascal bilgisayar programlama dilinde yazdığımız program kodlarını bilgisayarın anlayabileceği program kodlarına (hexadecimal code) çevirerek yazarız. Kısa bir örnek vermek gerekirse arkadaşımıza bir e- posta yazdığımızda arkadaşımız yazdığımız yazı dilini biliyor ise e-postayı açarak okuyacaktır. Biz kendi yazı veya anlatım dilimizde kullanıldığımızı ilmişimde kullanarak işlerimizi görüyoruz. Bilgisayarlara bir iş veya eylem yaptırmak istediğimizde bu bir hesaplama veya bir robot kolunun eylemi de olabilir, bilgisayarın anlayabileceği anlatım (kodlara) diline çevirmemiz gerekir. Bu işlemi ise derleyici (compiler) denen bilgisayar programlama araçları yapar. Derleyiciler üretilen firmaların adları veya bu firmaları kolay hatırlansın diye verdikleri adlar ile anılırlar. Turbo pascal Borland firmasının (şu anda Inprise) ürettiği bilgisayar programlama aracıdır. 1
Şekil 1. Turbo Pascal Bilgisayar Programlama Dili Ekran Görüntüsü. Turbo pascal yapısal bilgisayar programlama dili olarak bahsetmiştik. Yapısal bilgisayar programlama dilinde program kodları fonksiyon ve alt programlar olarak yazılırlar. Daha sonra yazılan bu bilgisayar programlama kodları ana program bloğu içerisinden çalıştırılır. Yazılan bilgisayar program kodları çalıştırılabilmesi için mutlaka derlenmesi gerekir. Yapısal programlama dillerinde yazılan bilgisayar programlarında yazılacak olan kodlar belirli bir şekle göre yazılmaktadır. Programın başlangıcı, değişkenlerin tanıtılması (deklarasyonu), fonksiyonların ve alt programların tanıtılması ve yazılması ayrı bölümler halinde yazılmaktadır. Program Basla; {Burası programın başlangıcı ilk yazılan kod parçası} type {Programın içerisinde kullanılacak olan değişkenlerin yeniden tanımlanması veya kullanıcı tanımlı tiplerin tanımlandığı bölüm} var {Programın içerisinde kullanılacak olan değişkenlerin tanımlandığı bölüm} function us(x); {Fonksiyonların yazıldığı bölüm} 2
procedure tekrar(x,t); { altprogramları yazıldığı bölüm} BEGIN {Bu bölümde programın çalışması sırasında işletilecek olan komut, fonksiyon veya alt programlar belirlenen bir algoritmaya göre yazılır} END. Program durum bildirgecinden (statement) sonra verilen isim pascal bilgisayar programının adıdır. Bu verilen ad yazılan başka bir pascal veya üçüncü kuşak dillerinin herhangi birinden yazılan pascal bilgisayar programının çağırmak için kullanılır. Örneğin bir pascal bilgisayar programı yazıyoruz daha sonra yazdığımız bu programa önceden yazmış olduğumuz ve dizin yerini bildiğimiz yerden çağırmamız gerektiği durumda yazarak çağırmak için kullanırız. Bu örneğe ek olarak önceden yazmış olduğumuz pascal programının içerisindeki herhangi bir fonksiyon veya alt programı da çağırmak için burada yazan program adına ihtiyacımız vardır. type ve var ile belirlenen bölümlerde program içerisinde kullanılacak olan değişkenlerin tanımlandığı veya kullanıcı tarafından tanımlanan değişkenlerin oluşturulduğu ve kullanıma hazır hale getirilen değişken tanımlama bölümüdür. Function ve procedure ile pascal bilgisayar programı içerisinde kullanacağımız fonksiyonlar ve alt programların yazıldığı ve kullanıma hazır duruma getirildiği bölümdür. Yapısal bilgisayar programlama dillerinde fonksiyon ve alt programları kullanmak için mutlaka programın ana bloğundan önce tanımlanması gerekir. Bir fonksiyon veya alt programı başka bir alt program veya fonksiyonda kullanmadan öncede mutlaka tanımlamalıyız. Aksi takdirde yazdığımız bilgisayar programı tanımlı olmayan fonksiyon ve alt program hatası verecek ve program derlenmeyecektir. BEGIN ve END blokları arasında pascal bilgisayar programlama dilinde ana program bloğu olarak adlandırdığımız yerdir. Ana program bloğu içerisine programın yapacağı işlevler ile birlikte program kodları ve 3
fonksiyon veya alt programın çalışma sıraları yazılır. Bilgisayar programını yazarken ana blok içerisinde belirlediğimiz algoritmaya uygun olarak geliştirdiğimiz program kodlarını yazarız. Şekil 2. Pascal Bilgisayar Program Kodları. Şekil 2 de görüldüğü gibi Program ad verilmiştir. Daha sonra değişkenlerin tipleri tanımlanmıştır. Bir sonraki bölümde fonksiyon veya alt programlar olmalıdır. Burada gerek olmadığından yazılmamıştır. En son kısımda ise pascal bilgisayar programının belirlenen bir algoritmaya göre yazılması görülmektedir. 1.1 Program Kodlarının Derlenmesi Pascal bilgisayar program kodlarını geliştirdikten sonra artık sıra derlenmeye gelir. Bu derlenme aşamasında yazmış olduğumuz program kodlarını bilgisayarın anlayacağı kodlara çevrilecektir. Turbo Pascal 7.0 sürümünde bu işlemi yapmak için bilgisayarımızın ALT+C tuşlarına birlikte basarak yapabiliriz. Şekil 3 te tuşlara bastıktan sonraki ekran görüntüsü vardır. 4
Şekil 3 Turbo Pascal da Derleme İşlemi. Eğer menü açılmasını istemeden direk derleme işlemini yapmak istiyorsak ALT+F9 tuşlarına birlikte basarak direk derleme işlemini yapabilir. Bu menü açılmadan direk derleme işlemini yaparak bize Şekil 4 te görünen sonucu verecektir. Şekil 3 Turbo Pascal da Derleme İşleminin Sonucu. 5
1.2 Program Kodlarının Çalıştırılması Yazdığımız kodları derledikten sonra kodlarımız artık bilgisayar tarafından anlaşılabilir duruma gelmiştir. Şimdi program kodlarımızı çalıştırmamız gerekmektedir. Bunun için ALT+R tuşlarına birlikte basarak çalıştırırız. Şekil 5 teki ekran görüntüsünden programımız çalıştırılmadan önceki görüntüsü gelmektedir. Şekil 5 Turbo Pascal da Derlenen Programın Çalıştırılması. Program kodlarının buraya anlatılan kadar ile sadece yazılması ve çalıştırılması ile ilgili temel bilgileri verdik. Bundan sonraki bölümlerde daha çok program yazılırken kullanılan pascal komutlarını vereceğiz. Pascal bilgisayar programlama kodları Turbo Pascal 7.0 sürümüne göre anlatılacaktır. Bir çok dağıtılan derleyicide bu yazacağımız programlar çalışmaktadır. Bazı bilgisayarların donanımsal özelliklerinden dolayı çalışmayabilir. Bu durumlarda Turbo Pascal 7.0 Fix Tool yardımcı programı ile bilgisayarınızı yamalamanız önerilmektedir. Bu durum Pentium MMX tabanlı bilgisayarlardan sonra geliştirilen Pentium işlemcilerde gereklidir. Eğer Pentium III veya Pentium 4 işlemcili bilgisayarlarda derleme yapılacak ise tp-patch adlı klasörü C:\TP7\BIN klasörü altına kopyalayarak TPFIX.EXE programını TURBO.EXE den önce çalıştırmak gerekmektedir. 6
1.3 Kaynak Kodların.exe Uzantılı Duruma Getirilmesi Pascal bilgisayar programlamada yazdığımız kaynak kodlar derlendikten sonra disk alanında saklanmazlar. Derlediğimiz kodlar çalışması bittikten sonra geçici hafızadan (RAM) silinirler. Kalıcı olarak disk alanında kalmasını istediğimizde Destination Memory seçeneğini Disk olarak işaretlemek gereklidir. Bu bize derlediğimiz programları pascal programını derlediğimiz disk alanı üzerinde kaydetmemize yarayacaktır. Komut satırından pascal kaynak kodlarını derlemek istediğimizde aşağıdaki komut ve parametrelerini vererek derleme işlemini yapabiliriz. C:\tp7\bin\tpc.exe /l /m program.pas Kaynak kodlarımız C:\tp7\bin\ klasöründe program.exe olarak kaydedilecek ve program diye yazdığımızda programımız çalışacaktır. 1.4 Turbo Pascal Programlamada Kullanılmayacak Kelimeler Turbo Pascal bilgisayar programlama dilinde bazı kelimeler derleyici tarafından kullanıldığından dolayı program yazarken kullanılmazlar. Bu kelimelere ayrılmış kelimeler (Reserved Words) denir. Aşağıda Tablo 1 de bahsedilen kelimelerin hangileri olduğu görülmektedir. Tablo 1. Ayrılmış Kelimeler absolute destructor if object self uses and div implementation of set var array do in on shl while asm downto inherited operator shr with begin else inline or string xor break end interface packed then case file label procedure to const for mod program type constructor function nil record unit continue goto not repeat until 7
Tablo 2. Turbo Pascal Değiştiricileri absolute default forward override public saveregisters abstract export fpccall pascal published softfloat alias external index popstack read stdcall assembler far name private register virtual cdecl far16 near protected safecall write 1.5 Turbo Pascal da Kullanılan Operatörler a) Aritmetik Operatörler: Turbo Pascal da aritmetik operatörler altı adettir. Bunlar bilinen matematiksel işlemleri yapmak için kullanılan operatörlerin yanı sıra pascal da kullanılan veri tiplerinin işlemlerinde kullanılan operatörlerdir. Tablo 3. Aritmetiksel Operatörler Operatör İşlem Operand Tipi Sonucun Tipi + Toplama real,integer real,integer - Çıkarma real,integer real,integer * Çarpma real,integer real,integer / Bölme Real,integer Real Div Tamsayı Bölme integer İnteger Mod Kalan Bulma integer İnteger Matematiksel operatörlerin bazı durumlarda bizlere kısa yoldan sonuç vermesini isteyebiliriz. Div operatörü buna örnek olarak verilebilir. Bu operatör iki tam sayının bölümünden kalan tam sayı kısmını verir. Örnek: 32 / 5 = 6.4 32 div 4 = 6 8
Mod operatörü iki tam sayıdan kalanı bulmaya yarayan matematiksel operatördür. İki tamsayı bölümü yapıldıktan sonra sonuçtan kalan sayının tam sayı olanını verir. 32 / 5 = 6.4 32 mod 5 = 2 programlamada kaynak kod yazarken dikkat edeceğimiz önemli konulardan birisi olan operatörler elde ettiğimiz sonuçları direk etkilediğinden operatör kullanırken sonuçları göz önüne alarak kullanmak gereklidir. Normal bölüm işleminde işlemlerin sonucu real tipte olabileceğinden sonuç değişkeninin değeri real olabilir. b) İlişkisel Operatörler: Turbo Pascal bilgisayar programlama dilinde iki veya daha fazla değişken arasındaki ilişkilerin belirlenmesinde kullanılan operatörlerdir. İki değişken arasında küçüklük, eşitlik veya diğer karşılaştırma ilişkisi olması durumunda kullanılır. Karşılaştırılan işlemlerin sonucu Doğru (True) veya Yanlış (False) olarak verilir. Tablo 4. İlişkisel Operatörler Operatörler Anlamı = Eşit <> Eşit Değil >= Büyük Eşit < Küçük > Büyük <= Küçük Eşit 9
c) Mantıksal Operatörler: Turbo Pascal değişkenlerin mantıksal olarak karşılaştırılmasına olanak vermektedir. Klasik Bool cebrindeki gibi bu operatör işlemleri aynı sonuçları vermektedir. Tablo 5. Mantıksal Operatörler Operatör AND OR XOR NOT Anlamı İki operatör doğru ise sonuç doğru, İki operatörden en az biri doğru ise sonuç doğru, İki operatörün sadece birinin doğru olması hali için sonuç doğru, Operatör yanlış ise sonuç doğru, operatörün veya sonucun değili alınır Mantıksal operatörlere Tablo 5 e göre iki yaptırdığımızdaki sonuçları aşağıdaki şekilde olmaktadır. değişken arasında işlem Tablo 6. AND Mantıksal Operatör İşlemleri D1 D2 Sonuç Yanlış Yanlış Yanlış Yanlış Doğru Yanlış Doğru Yanlış Yanlış Doğru Doğru Doğru Tablo 7. OR Mantıksal Operatör İşlemleri D1 D2 Sonuç Yanlış Yanlış Yanlış Yanlış Doğru Doğru Doğru Yanlış Doğru Doğru Doğru Doğru Tablo 8. XOR Mantıksal Operatör İşlemleri D1 D2 Sonuç Yanlış Yanlış Yanlış Yanlış Doğru Doğru Doğru Yanlış Doğru Doğru Doğru Yanlış 10
Turbo Pascal da mantıksal operatörlerin birden fazla karşılaştırma yapması istendiğinde karşılaştırılacak olan değişkenlerin parantez içerisinde alınarak kümelenmesi ve önceliklerinin belirlenmesi gereklidir. Önceliklerinin belirlenmesi işlemlerin doğrulunu etkilemektedir. Yanlış kullanılacak olan operatör parantez sıralaması işlem soncunda tablolardan görüldüğü gibi sonucun değişmesine neden olacaktır. BEGIN IF ((D1> D2) AND (D3 < D1)) OR (D1=D4) THEN END; 1.6 Turbo Pascal da Matematiksel İfadeler Turbo Pascal matematiksel ifadeleri normal yazı kurallarında yazıldığı gibi işleyemez. Turbo pascal matematiksel işlemleri yerine getirebilmesi için sytax denilen formül yazım kurallarına uyması gerekir. Normal yazı dilinde ifade ettiğimiz cebirsel ifadeleri pascal bilgisayar programlama dilinde işlemeye çalıştığımızda ifadeleri ve sembolleri değiştirmek zorunda kalabilir. Kesikli rasgele değişkenin olasılığının formülü f ( xi ) = 1/ n şeklindedir. Bu formül Turbo pascal da aşağıdaki gibi gösterilir. f_xi := (1/n); n Başka bir örnek e = 1 formülü Turbo Pascal bilgisayar programlama n kodlarında aşağıdaki gibi yazılmalıdır. e:= EXP(n*(1/n)) 1.7 Akış Diyagramları Genel olarak bilgisayar programlama dillerinde programlamaya başlarken kodlar yazılmadan önce belirlenen algoritma akış diyagramları ile ifade edilir. Akış diyagramları belirlenen bilgisayar programlarının kaynak kodlaması yapılır. Bu işlem programın kaynak kodlarının geliştirilmesi için gerekli olan öngörü ve işlem kolaylığını sağlar. Akış diyagramı oluşturulan 11
bilgisayar programında algoritmanın nasıl uygulanacağının bilinmesi veya daha kısa bir yolu var ise bu şekilsel olarak görülmesi konusunda yardımcı olmaktadır. Algoritmalar bir iş veya işlemin nasıl yapılacağını gösteren yazı veya şekillerden oluşur. Tablo 9 Akış Diyagramları Sembol Açıklama Program üzerinde işlem yapılacak Program karar durumunda, program karar veriyor Programa doküman giriş/çıkışı Programa veri giriş/çıkışı yapılacak Programdaki veriler kaydedilecek veya okunacak Program bilgisayarın iç hafızasından bilgi alacak veya okuyacak Program işaret edilen cihaza çıktı / sonuç gönderecek Programa El ile veri girişi yapılacak Program değişkeleri döngü işlemine tutacak Programa bağlantı yapılacak veya diğer sayfaya geçiş için bağlantı noktası 12
Bilgisayar ile problem çözmek için birden fazla yöntem olması algoritma kullanılmasını zorunluluk haline getirmektedir. Bazı durumlarda yazı ile algoritmanın geliştirilmesi olanaksız olabilmektedir. Bu durumda şekiller ile anlatmak istediğimiz işlemleri sembolize ederek işlevleri anlatırız. Bir bilgisayar programının en basit hali ile akış diyagramlarında gösterimi Şekil 6 daki gibidir. Şekil 6. En Basit Algoritma Gösterimi 1.8 Turbo Pascal da Hazır Matematik Kütüphaneler Turbo Pascal ile programlama yaparken kullanabileceğimiz hazır matematik fonksiyonlarının bulunduğu kütüphaneler mevcuttur. Bu kütüphaneler verilecek parametreler ile sonuçları üreterek program kaynak kodları içerisine veya değişkenlerine aktarabilirler. Tablo 10 da bazı yararlı olan hazır fonksiyonlar ve yaptıkları işler verilmektedir. 13
Tablo 10. Turbo Pascal da Hazır Matematik Kütüphanesine Örnekler Fonksiyon İşlev Örnek ABS(x) Verilen x değişken değerinin mutlak değerini döndürür ABS( -21 ) sonuç 21 ABS( -3.5) Sonuç 3.5000000000E+00 COS(x) X değerinin raydan cinsinden değerini döndürür EXP(x) X değişkeninin 10 üssü değerini gösterir LN(x) X in doğal logaritmasını hesaplar, bu x>0 için geçerlidir ODD(x) X tek sayı ise Doğru (True) döndürür ROUND(x) X değerini kendine en yakın tam sayıya tamamlar COS( 0 ) sonuç 1.0 EXP(5) sonuç 5 10 2 4 ifadesi 2*2*2*2=16 sonucunu vermez a n =EXP(n*LN(a)) şeklinde hesaplanır LN(2) sonuç 0.69314. ROUND(3.7) sonuç 4 ROUND(3.2) sonuç 3 SIN(X) X değerinin trigonometrik değerini radyan cinsinden hesaplar SQR Verilen x değerinin karesini alır SQRT(x) Verilen x değerinin karekökünü alır TRUNC Verilen gerçel sayıyı tam sayı olarak döndürür SIN(PI/2) sonucu 1.0 SIN(PI) sonuç 0.0 SQR(4) sonuç 16 SQRT(4) sonuç 2 TRUNC(-2.4544) sonuç 2 TRUNC(3.3444) sonuç 3 14