|
Turbo Pascal'ın
Kurulumu
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.
|