TurK Pascal(c) Pascal Dersleri'ne başlamadan önce bilgisayarınıza Turbo Pascal Derleyicisini kurmamız gerekiyor.Eğer bilgisayarınızda Turbo Pascal kurulum paketi yoksa DOWNLOAD bölümümüzden gerekli dosyaları çekebilirsiniz.
Eğer TurK Pascal(c)'dan download ettiyseniz.Bilgisayarınızda tp70.zip ismindeki sıkıştırılmış dosya bulunması gerekiyor.Bunu Winzip programı vasıtasıyla tp70 isminde bir klasöre unzipleyin.İlgili klasörü açın ve Install.exe programını çalıştırın.Eğer çalıştırdığınızda bir hata verirse.Ms-Dos modunda ilgili klasöre girip install yazın.Böylece kurulum programı çalışacaktır.Şimdi aşağıdaki listeyi takip edin.
-Giriş ekranını Enter tuşuna basıp geçin.
-Size kaynak sürücüyü soracaktır.Normalde install.exe programının bulunduğu sürücü otomatik olarak yazılmış olacaktır.Enter tuşuna basın.
-Size kaynak sürücüyü soracaktır.Eğer gerekli dosyalar install.exe programının bulunduğu klasördeyse değiştirmeden Enter tuşuna basın.
-Install Turbo Pascal on a Hard-Drive ı seçip Turbo Pascalı Hard Diske yükleyeceğimizi belirtelim.
-Otomatik olarak C:\Tp klasörünü ayarlayacaktır.Değiştirmeden Start Installation a basın.
-Dosyaların yüklenmesini bekletin.Mavi bir mesaj kutusu çıkacak.Herhangi bir tuşa basın.
-Turbo Pascal'ın İngilizce Readme yazısı çıkacaktır.Çıkmak için Esc'ye basın.
-Turbo Pascal hard diskinizin belirtilen dizinine kurulmuş olacaktır.
Şimdi işimizi daha da kolaylaştırmak için Not Defteri programını çalıştırın ve Windows'un kurulu olduğu hard diskin içindeki Autoexec.bat dosyasını açın ve dosyanın sonuna aşağıdaki kodu ekleyin.
Set Path=%PATH%;C:\Tp\Bin;
Yalnız bunu yaparken dikkat edin.Başka bir kodu silmeyin.
Bu işlemleri tamamladıysanız bilgisayarınızı yeniden başlatın.Böylece kodlarınızı programa(exe) çevirecek olan Turbo Pascal Derleyicisi bilgisayarınıza kurulmuş olacaktır.
Değişkenler
Değişkenler(variables) istisnasız her programlama dilinin yapıtaşlarıdır.Daha öncede söylediğimiz gibi değişkenleri içinde veri bulunduran kaplara benzetebiliriz.Bu bölümde değişken tanımlama,değiştirme ve değişken türleri üzerinde duracağız.
Dediğim gibi değişkenler veri saklamak için kullanılır.Perl dilinde değişkenleri istediğiniz an kodun istediğiniz bölgesinde oluşturabilirsiniz.Ama bu Pascalda öyle değildir.Pascalda kullanacağınız değişkenleri ve bu değişkenlerin türlerini önceden belirlemeli ve kullanmadan önce kod içerisinde tanımlamalısınız.Aşağıdaki örneği inceleyerek anlamaya çalışalım.
Program degisken; { Program ismi }
(*
Bu program A tamsayısına bir değer atayıp ekrana yazdırır.
A değişkenini değiştirerek farklı sonuçlar aldığınızı göreceksiniz...
*)
var { Değişken tanımlanmaya başlanıyor }
a: integer; { A bir tamsayı }
begin { Başla }
a:=200; { A=200 }
writeln ('A sayisinin degeri ',a); { A sayısının değerini gerekli değişkeni kullanarak yazdırır }
end. { Programın sonu }
İşte programın gerekli açıklamaları kodun içinde.Bu açıklamalar programa ekstra bir özellik katmaz.Fakat siz koda baktığınızda açıklamalarıyla daha kolay anlayabilirsiniz.Pascal dilinde açıklama-yorum (* *) ya da { } arasına yazılarak yapılır.Bu işaretler arasındaki kodların geçerliliği yoktur.Başkasına kod gönderecekseniz mutlaka açıklamalardan faydalanın.Kendiniz kullanacağınız kodlara bile açıklama yapmanızda fayda var.Yok ben ne yaptığımı bilirim açıklamaya ihtiyacım yok demeyin.6 ay önce yazdığınız bir koddan hiçbir şey anlamamanız çok doğaldır.Bundan sonraki örneklerde açıklamayı hep kodun içinde sizlere sunacağım.
Gördüğünüz gibi a isminde bir tamsayı değişken tanımladık.Değişkenler var komutundan sonra a: integer gibi tanımlanır.Birden fazla değişkeni aynı türe atamak için a,b,c,d: integer gibi tanımlamalar kullanılır.Farklı türde değişkenleri tanımlamayı aşağıdaki örneği inceleyerek görelim.
Program degisken2; { Program ismi }
var { Değişkenler tanımlanmaya başlanıyor }
a,b: integer; { A ve B birer tamsayı }
c,d: string; { C ve D birer alfa-nümerik(sayı olmayan) }
begin { Başla }
a:=200; { A=200 }
b:=100; { B=200 }
c:='Turbo'; { C=Turbo }
d:='Pascal'; { D=Pascal }
writeln ('A tamsayisinin degeri ',a); { A nın değeri }
writeln ('B tamsayisinin degeri ',b); { B nin değeri }
writeln ('C stringinin degeri ',c); {C nin değeri }
writeln ('D stringinin degeri ',d); {d nin değeri }
end. { Programın sonu }
Değişkenler bu şekilde kullanılıyor.Ayrıca değişkenler üzerinde matematik işlemlerde yapılabiliyor.Bunu daha geniş bir biçimde ileriki konularda göreceğiz şimdi gelelim değişken türlerine... Kod içerisinde gördüğünüz gibi değişkenler integer,string gibi değerler alıyorlar.Aşağıdaki tabloyu incelediğinizde değişken türleri hakkında gerekli bilgiyi almış olacaksınız.
Değişken Türü
Açıklama
string
alfa-nümerik yani sayı olmayan herşey
integer
-32768 ile 32767 arasındaki tamsayılar
byte
0 ile 255 arasındaki tamsayılar
real
1.0e-38 ile 1.0e+38 arasındaki ondalıklı sayılar
char
1 ascii karakteri(mesela a harfi yada @ karakteri)
boolean
1 yada 2 yani true(doğru) yada false(yanlış)
word
0 ile 65535 arasındaki tamsayılar
shortint
-128 ile 127 arasındaki tamsayılar
longint
-2147483648 ile 2147483647 arasındaki tamsayılar
single
7 basamak hassasiyetli ondalıklı sayılar
double
15 basamak hassasiyetli ondalıklı sayılar
extended
19 basamak hassasiyetli ondalık sayılar
comp
-1*10 üssü 28 ile 10 üssü 28 arasındaki tamsayılar
Gördüğünüz gibi her ihtiyaca göre değişken türü bulmak mümkün.Eğer bir integer tanımlar ve değişkenin değerini 32768 yaparsanız derleme aşamasında "Error 76: Constant out of range" gibi bir hata alırsınız.
Aritmetik İşlemler
Aşağıdaki örneği inceleyin.
Program aritmetik_islemler; { Program ismi }
(*
Değişkenler üzerinde aritmetik işlemler programı
*)
var { Değişkenleri tanımlamaya başla }
a,b,c,d: real; { a,b,c ve d birer reel sayıdır }
begin { Programın başlangıcı }
a := 3.5; { a ya değer ekle }
writeln ('A: ',a:6:1); { A: 3.5 }
b := a+2.5; { b 2.5 artı a ya eşittir }
writeln ('B: ',b:6:1); { B: 6.0 }
c := b-a; { c a eksi b ye eşitti }
writeln ('C: ',c:6:1); { C: 2.5 }
b :=5; { b nin değerini değiştir }
d := (c*2)/b; { parantezli işlemler }
writeln ('D: ',d:6:1); { D: 1.0 }
end. { Programın sonu }
Yukarıdaki programda değişkenleri birer reel sayı olarak tanımladık.Integer(Tam Sayı)da kullanabilirdik,fakat tamsayılarda 3.5 gibi değerler atayamaz ve bölme işlemini gerçekleştiremezdik.Fakat reel sayılarda da birtakım sorunlarımız var.Mesela kodun içindeki tüm :6:1 karakterlerini kaldırın ve kodu kaydedip tekrar derleyin.Programı çalıştırdığınızda 5 gibi bir sayıyı 5.0000000E+00 biçiminde göreceksiniz.Bunun anlamı E den öncesini aynen alıp bir kenara yaz ve onu 10E'den sonraki rakam ile çarp.Biraz karışık gibi gözükebilir ama aşağıdaki örnekleri incelerseniz daha iyi anlayacağınızdan eminim.
Reel
Açılım
Normal
6.4500000000e+01
6.45*101
64.5
4.1500000000e-02
4.15*10-2
0.0415
Şimdi gelelim bundan nasıl kurtulacağımıza.Programda gördüğünüz :6:1 reel sayıları formatlama biçimidir.Bunun anlamı soldan 6 karakter boşluk bırak ve virgülden sonra 1 basamağa izin ver.1.487 sayısının hangi formatta ne sonuç verdiğini görmek için aşağıdaki tabloyu inceleyin.
Format
Çıktı
:6:3
1.487
:6:2
1.49
:6:1
1.5
Tablodan da anlayabileceğiniz gibi eğer formatı sayının uzunluğundan dar tutarsanız Pascal bu sayıyı yuvarlayacaktır.
For Döngüsü
For döngüsü çoğu programlama dilinin en basit döngüsüdür.Tek bir komutu birden fazla kez tekrarlamak için kullanılır.Aşağıdaki örneği inceleyin.
Program for_dongusu1; { Program ismi }
(*
For döngüsü ile birlikte birkaç teknik...
*)
var { Değişkenleri tanımlamaya başla }
a,b,c: integer; { a ve b birer tamsayıdır }
begin { Program başlangıcı }
a := 1;
b := 15;
for c := a to b do { C 1'den 15'e kadar bir tamsayı için }
begin { Döngü için begin }
write (c,'-');writeln('Bu ',c,'. satir...'); { 15 satır => 1-Bu 1. satır... formatında
}
end; { Döngü sonu }
end. { Program sonu }
Bu programı derleyip çalıştırdığınızda.15 satır writeln komutunun işlendiğini göreceksiniz.For döngüsü for...do biçiminde kullanılır.begin kullanımı zorunlu değildir fakat özellikle birden fazla komut kullanılacaksa yazılması gerekir.Tabi döngü sonunda end; biçiminde end komutunu da koymak şartıyla.
Şimdi yukarıdaki programda "for c := a to b do" satırını "for c := b downto a do" şeklinde değiştirip tekrar derleyip çalıştırın.Umarım mantığını anlayabilmişsinizdir.Aynı şekilde yukarıdaki yöntem karakterler(char) içinde kullanılabilir.Aşağıdaki örneği inceleyin.
Program for_dongusu2; { Program ismi }
(*
For döngüsü ile birlikte birkaç teknik...
*)
var { Değişkenleri tanımlamaya başla }
alfabe: char; { alfabe bir karakterdir }
begin { Program başlangıcı }
for alfabe := 'A' to 'Z' do { Alfabe A dan Z ye kadar bir karakter için }
write (alfabe);
end. { Program sonu }
Yine aynı şekilde downto ve begin kullanarak ta programı deneyebilirsiniz.Ancak karakterlerde dikkat edilmesi gereken şey tek tırnak(') kullanımıdır.
Repeat-Until Döngüsü
repeat...until döngüsü bir komutu "until" komutundan sonraki olay(eşitlik v.b.) sağlanana kadar tekrarlar.Aşağıdaki örneği inceleyin.
Program repeat_dongusu; { Program ismi }
(*
Repeat-Until döngüsü ile birlikte birkaç teknik...
*)
var { Değişkenleri tanımlamaya başla }
a: integer; { a bir tamsayı }
begin { Program başlangıcı }
a := 1;{ A=1 }
repeat { repeat başlangıcı }
a := a+1; { a yı birer arttır }
write(a,'-');writeln('Bu ',a,'. satir...'); { Ekran çıktısı }
until a = 16; { A=16 olana kadar repeat komutu sonrasını tekrar et }
end. { Program sonu }
Yukarıdaki örnek geçen bölümde yazdığımız for_dongusu1 örneğinin aynısı.Sondan başa yapabilmemiz için "a :=1" satırını "a :=16" olarak değiştirin.Daha sonra "a := a+1" satırını "a :=a-1" olarak değiştirin.Son olarak ta "until a = 16" satırını "until a = 1" olarak değiştirip kodu tekrar derleyin.Umarım aşağı yukarı kullanımını anlamışsınızdır.
While ve Case Döngüleri
While döngüsü verilen şart geçerli olduğu sürece Do blokunun içindeki komutları çalıştırır.Aşağıdaki örneği inceleyin.
Program while_dongusu; { Program ismi }
(*
While ... Do ... döngü örneği
*)
var { Değişkenleri tanımlamaya başla }
a: integer; { a bir tamsayı }
begin { Program başlangıcı }
a := 1;{ A=1 }
while a < 16 { A 16'dan küçük olduğu sürece }
do { Do bloku }
begin { Do bloku için begin }
write (a, '-');writeln('Bu ',a,'. satir...');
{ 15 satır => 1-Bu 1. satır... formatında }
a := a+1; { A yı birer birer artır }
end; { Do bloku için end }
end. { Program sonu }
Bu program bütün döngülerde yazdığımız klasik 15 satır programının while döngüsü kullanılarak yazılmış halidir.
Case döngüsü birden fazla şartlı kullanımlar için daha pratik bir döngüdür.Değişik şartlar altında aynı veya farklı komutlar çalıştırılabilir.Aşağıdaki örneği inceleyin.
program case_dongusu;
(* Case döngü örneği *)
var
girdi: integer;
begin { Program başlangıcı }
repeat { Tekrarla }
begin { repeat için }
writeln('1 ile 5 arasinda bir sayi girin: ');read(girdi);
{ Ekrana yaz,girdi oku ve girdi değişkenine ata }
end; { repeat için }
until (girdi>0) and (girdi<6); { girdi tamsayısı 0 dan büyük 6 dan küçük olana kadar
tekrarı sürdür... }
case girdi of { Girdi değişkeni için case }
1: writeln('Selam'); { 1 girilirse ekrana selam yazdır }
2: writeln('Merhaba'); { 2 girilirse ekrana merhaba yazdır }
3: writeln('Ne haber?'); { 3 girilirse ekrana ne haber? yazdır }
4: writeln('Iyi sanslar'); { " " }
5: writeln('Hoscakal');
end; { case için }
end. { Program sonu }
Kodu biraz karışık gözükebilir ama mantığı basittir.Kullanıcıdan girdi beklenir ve bu girdi 0 ile 6 arasında bir tamsayı olana kadar program kullanıcıya girdiyi sorar.0 ile 6 arasında bir girdi verilirse.Her sayıya ayrı bir işlem uygular mesela 1 girilirse ekrana selam yazdırır.Öğrendikleriniz dahilinde writeln komutlarını başka komutlarla değiştirebilirsiniz.Örneğin 5: end. yaparsanız kullanıcı 5 rakamını girdiğinde program sonlanacaktır.
If..Then..Else Bloku
If..Then..Else bloku çoğu programlama dilinde olduğu gibi Pascalda da önemi tartışılmaz bir döngüdür.Kısaca yapısı şöyledir.
If şart then
begin
(Şart doğru ise çalıştırılacak kod)
end
Else
begin
(şart yanlış ise çalıştırlacak kod)
end;
Blok içinde begin ve end komutları kullanmadanda programlarınzı yazabilirsiniz.Ancak kullanmanız sizin yararınıza olacaktır.
Çoğu programlama dilinde Elseif yada Elsif gibi eğer yukardaki şart yanlışsa bu şartı da dene gibi bir komut vardır.Ancak bu komut Pascal'da mevcut değildir.Bu açığı Else komutundan sonra tekrar bir If bloku başlatarak kapayabiliriz.Aşağıdaki örneği inceleyin.
program If_Then_Else;
var
a,b,c: integer;
begin
a:=5;
b:=10;
c:=50;
if (a=5) and (b=10) and (c=50) then { Eğer a=5 b=10 ve c=50 ise başla }
begin
if a+b=14 then writeln('a+b 14 e esittir...') { Eğer a+b=14 ise }
else writeln('a+b 14 e esit degildir...') { Eğer a+b 14 e eşit değilse }
end
else { Eğer a=5 b=10 ve c=50 değil ise }
halt; { Programı bitir }
end.
Dikkat edilmesi gereken bir başka mevzu ise eğer If blokundan sonra else kullanmak istiyorsanız hiçbir şartla If içindeki komutları noktalı virgül(
ile sonlandırmamalısınız.Dikkat ettiyseniz end; yerine dahi end kullandım.
Yukarıdaki programda and gibi bir operatör kullandık bir sonraki derste operatörler hakkında geniş bilgi vereceğim.Son olarak Else If komutunuda kavrayabilmek için aşağıdaki kodu inceleyin.
program Else_If;
var
a: integer;
begin
a:=5;
if a=5 then writeln('A=5 Bes')
else if a=6 then writeln('A=6 Altı')
else writeln('A bilinmiyor...');
end.