Delphi Dersleri 2
1 sayfadaki 1 sayfası
Delphi Dersleri 2
Bu sayfalarda yayınlanacak Delphi konulu 4. veya 5. dersten sonra işin özünü zaten kavramış olacağınız için neyi nerede bulup neleri öğrenmeniz gerektiğine kendiniz karar verebilecek noktaya zaten geleceksiniz. Bu dersi bitirmeden yukarıda verdiğim örneğe tekrar müdahale edip program çalıştırıldığında kullanıcıdan 2 tam sayıyı isteyip bunları toplayıp sonucu ekrana yazacağım. Bu amaçla “ilk.prg” adını verdiğim kod dosyasını aşağıda verdiğim şekle dönüştürdüm.
Acele etmeyelim, paniklemeyelim ve bu kodu ilk satırdan itibaren inceleyelim. Çünkü bu kısacık kodda Delphi ve Pascal programcılığının özü var. Bu örnekteki {$APPTYPE CONSOLE} satırının ve Uses bloğunun işlevini zaten biliyoruz. Burada yabancısı olduğumuz(ya da öyle sandığım) Procedure deyiminin kullanıldığı satır ve devamındaki Begin-End bloğudur. Yukarıdaki sayfalarda örneğin ilk halinde yani yalnızca bir Begin-End bloğu vardı ve End deyiminin sonunda nokta(.) işareti vardı. Hemen önemli bir noktayı işaret edeyim: Delphi programlarında sonuna nokta(.) konulan bir tek begin-end bloğu olur ve blok programın çalışmaya başladığı bloktur. Programın işletimi sonunda nokta olan End deyimine geldiğinde çalışması sonra erer.
Bu bilginin ışığında yukarıda verilen kod veya PRG dosyası incelediğinde sonu nokta ile biten begin-end bloğunda herhangi bir satır olmadığı için programın çalışması hemen sona erer. Bu kodda yukarıdakinden farklı olarak Topla() adını verdiğim bir procedure(nesneye yönelik programcılıkta procedure’lere metot adı verilmektedir) bulunmaktadır. Şimdi bu koda ek yapıp kodun başlangıç noktası olan ve sonu nokta(.) ile işaret edilen blokta Topla() adını verdiğim procedure veya yordamı işleteceğim.
program ilk;
{$APPTYPE CONSOLE}
Uses
SysUtils;
Procedure Topla();
Begin
WriteLn('Topla adlı procedure işletildi');
End;
Begin
Topla();
End.
Gördüğünüz gibi Delphi’de mevcut proceure’leri işletmek için adını yazmak yeterli oluyor. Bu şekilde değiştirilen Delphi programı derlenip hazırlanan EXE dosya çalıştırılırsa direk programın başlangıç noktası olan ana yani sonu nokta(.) ile biten begin-end bloğuna gidilir. Bu blokta Topla() adlı yordamı işleten bir satır olduğu için programın işletimi bu procedure’e geçer.
Bu procedure’nin işletimi tamamlandığında programın işletimi tekrar ana bloğa geçer. Sonu nokta ile biten ana blokta başka satır olmadığı için programın çalışması hemen sona erer. Aşağıda verdiğim ekran görüntüsünü bu şekilde değiştirdiğim programı derleyip çalıştırdıktan sonra aldım.
Yukarıda Topla() adını verdiğim procedure ile kullanıcıdan toplanmak üzere 2 sayı isteyip bunları toplayıp sonucu ekrana yazacağımı söylemiştim. Bu nedenle bu procedure’de değişiklik yapacağım. İlk olarak bu procedure’de değişken tanımlayabilmek için var bloğuna yer verip integer tipinde 3 değişken tanımladım.
Bu değişkenleri Topla() adını verdiğim Procedure’nin var bloğunda tanımladığım için ancak Procedure’nin sınırları içinde kullanılabilirler. Topla() yordamından çıkıldığında bu değişkenler tanımsız duruma düşerler. Konunun devamında bu konuda ek bilgi verilecektir. Bu procedure’de kullanıcıda toplanmak üzere sayı istemek amacıyla Begin-end bloğuna aşağıdaki gibi eklemeler yaptım.
program ilk;
{$APPTYPE CONSOLE}
Uses
SysUtils;
Procedure Topla();
Var
Sayi1 : Integer;
Sayi2 : Integer;
Sonuc : Integer;
Begin
Write('Toplanacak ilk sayi : ');
ReadLn(Sayi1);
Write('Toplanacak ikinci sayi: ');
ReadLn(Sayi2);
Sonuc := Sayi1 + Sayi2;
WriteLn('');
WriteLn('Sayilarin Toplami : ' + IntToStr(Sonuc));
End;
Begin
Topla();
End.
Topla() adını verdiğim yordama yaptığım bu eklemelerde size yabancı olan bir şey yok. Bu arada Delphi ve Pascal’ın değişkenlere bilgi aktarılırken diğer dillerin aksine “:=” kullandığını fark etmiş olmalısınız. Bu şekilde değiştirdiğim Delphi programının yeni halini derleyip çalıştırınca aşağıdaki gibi bir sonuç elde ettim.
Yukarıda da denildiği gibi Sayi1, Sayi2 ve Sonuc adını verdiğim değişkenleri Topla() adlı procedure’nin Var bloğunda tanımladığım için bu değişkenler procedure dışında tanımsız duruma düşerler. Bu nedenle bu örnek aşağıdaki gibi düzenlenirse hata meydana gelir.
Bu kez kod uzamasın diye 3 değişkeni bir satırda tanımladım. Bu hatanın önüne geçmek için “Sonuc” değişkenini Procedure’nin Var bloğundan programın Var bloğuna almak gerekir. Bu işlemi nasıl yaptığımı aşağıda görebilirsiniz.
program ilk;
{$APPTYPE CONSOLE}
Uses
SysUtils;
Var
Sonuc : Integer;
Procedure Topla();
Var
Sayi1, Sayi2 : Integer;
Begin
Write('Toplanacak ilk sayi : ');
ReadLn(Sayi1);
Write('Toplanacak ikinci sayi: ');
ReadLn(Sayi2);
Sonuc := Sayi1 + Sayi2;
End;
Begin
Topla();
WriteLn('');
WriteLn('Sayilarin Toplami : ' + IntToStr(Sonuc));
End.
Bu Dersin Özeti
Bu derste yazılanların özetlemek gerekirse şunları yazmak isterim: Bir önceki derste kısaca sözü edilen Delphi sürümlerinden birisini bilgisayarımıza kurduk. Sonra kurma işleminin başarılı olup olmadığını test etmek için Delphi’yi başlattık. Belki bazılarınız yeni bir proje hazırlayıp küçük denemeler yaptılar.
Borland firması Delphi 7 sonraki sürümlerde IDE’de yani program geliştirme ortamında köklü değişiklikler yaptı. Bu nedenle program yazım ortamı bakımından Delphi 7 diğer sürümlerden ayrılmaktadır. Ne ki bu dersler bağlamında hangi Delphi kullandığınızın önemi yoktur.
Delphi’nin herhangi bir sürümünü kurup dcc32.exe adlı dosyanın varlığını test ettikten sonra Not Defteri ile başladık Delphi programı yazmaya. Kendim “C:” sürücüsünün kök klasöründe “\konsol” adında bir klasör hazırlayıp Not Defteri ile hazırladığın PRG uzantılı Delphi programlarını bu klasöre kaydettim. Derleme işlemini yapan dcc32.exe adlı dosyanın bulunduğu klasör Delphi kurulurken otomatik olarak arama yoluna dahil edildiği için DOS penceresinde istenen klasörde derleme yapılabilir. Bir sonraki derste kaldığımız yerden çalışmaya devam edeceğiz.
Acele etmeyelim, paniklemeyelim ve bu kodu ilk satırdan itibaren inceleyelim. Çünkü bu kısacık kodda Delphi ve Pascal programcılığının özü var. Bu örnekteki {$APPTYPE CONSOLE} satırının ve Uses bloğunun işlevini zaten biliyoruz. Burada yabancısı olduğumuz(ya da öyle sandığım) Procedure deyiminin kullanıldığı satır ve devamındaki Begin-End bloğudur. Yukarıdaki sayfalarda örneğin ilk halinde yani yalnızca bir Begin-End bloğu vardı ve End deyiminin sonunda nokta(.) işareti vardı. Hemen önemli bir noktayı işaret edeyim: Delphi programlarında sonuna nokta(.) konulan bir tek begin-end bloğu olur ve blok programın çalışmaya başladığı bloktur. Programın işletimi sonunda nokta olan End deyimine geldiğinde çalışması sonra erer.
Bu bilginin ışığında yukarıda verilen kod veya PRG dosyası incelediğinde sonu nokta ile biten begin-end bloğunda herhangi bir satır olmadığı için programın çalışması hemen sona erer. Bu kodda yukarıdakinden farklı olarak Topla() adını verdiğim bir procedure(nesneye yönelik programcılıkta procedure’lere metot adı verilmektedir) bulunmaktadır. Şimdi bu koda ek yapıp kodun başlangıç noktası olan ve sonu nokta(.) ile işaret edilen blokta Topla() adını verdiğim procedure veya yordamı işleteceğim.
program ilk;
{$APPTYPE CONSOLE}
Uses
SysUtils;
Procedure Topla();
Begin
WriteLn('Topla adlı procedure işletildi');
End;
Begin
Topla();
End.
Gördüğünüz gibi Delphi’de mevcut proceure’leri işletmek için adını yazmak yeterli oluyor. Bu şekilde değiştirilen Delphi programı derlenip hazırlanan EXE dosya çalıştırılırsa direk programın başlangıç noktası olan ana yani sonu nokta(.) ile biten begin-end bloğuna gidilir. Bu blokta Topla() adlı yordamı işleten bir satır olduğu için programın işletimi bu procedure’e geçer.
Bu procedure’nin işletimi tamamlandığında programın işletimi tekrar ana bloğa geçer. Sonu nokta ile biten ana blokta başka satır olmadığı için programın çalışması hemen sona erer. Aşağıda verdiğim ekran görüntüsünü bu şekilde değiştirdiğim programı derleyip çalıştırdıktan sonra aldım.
Yukarıda Topla() adını verdiğim procedure ile kullanıcıdan toplanmak üzere 2 sayı isteyip bunları toplayıp sonucu ekrana yazacağımı söylemiştim. Bu nedenle bu procedure’de değişiklik yapacağım. İlk olarak bu procedure’de değişken tanımlayabilmek için var bloğuna yer verip integer tipinde 3 değişken tanımladım.
Bu değişkenleri Topla() adını verdiğim Procedure’nin var bloğunda tanımladığım için ancak Procedure’nin sınırları içinde kullanılabilirler. Topla() yordamından çıkıldığında bu değişkenler tanımsız duruma düşerler. Konunun devamında bu konuda ek bilgi verilecektir. Bu procedure’de kullanıcıda toplanmak üzere sayı istemek amacıyla Begin-end bloğuna aşağıdaki gibi eklemeler yaptım.
program ilk;
{$APPTYPE CONSOLE}
Uses
SysUtils;
Procedure Topla();
Var
Sayi1 : Integer;
Sayi2 : Integer;
Sonuc : Integer;
Begin
Write('Toplanacak ilk sayi : ');
ReadLn(Sayi1);
Write('Toplanacak ikinci sayi: ');
ReadLn(Sayi2);
Sonuc := Sayi1 + Sayi2;
WriteLn('');
WriteLn('Sayilarin Toplami : ' + IntToStr(Sonuc));
End;
Begin
Topla();
End.
Topla() adını verdiğim yordama yaptığım bu eklemelerde size yabancı olan bir şey yok. Bu arada Delphi ve Pascal’ın değişkenlere bilgi aktarılırken diğer dillerin aksine “:=” kullandığını fark etmiş olmalısınız. Bu şekilde değiştirdiğim Delphi programının yeni halini derleyip çalıştırınca aşağıdaki gibi bir sonuç elde ettim.
Yukarıda da denildiği gibi Sayi1, Sayi2 ve Sonuc adını verdiğim değişkenleri Topla() adlı procedure’nin Var bloğunda tanımladığım için bu değişkenler procedure dışında tanımsız duruma düşerler. Bu nedenle bu örnek aşağıdaki gibi düzenlenirse hata meydana gelir.
Bu kez kod uzamasın diye 3 değişkeni bir satırda tanımladım. Bu hatanın önüne geçmek için “Sonuc” değişkenini Procedure’nin Var bloğundan programın Var bloğuna almak gerekir. Bu işlemi nasıl yaptığımı aşağıda görebilirsiniz.
program ilk;
{$APPTYPE CONSOLE}
Uses
SysUtils;
Var
Sonuc : Integer;
Procedure Topla();
Var
Sayi1, Sayi2 : Integer;
Begin
Write('Toplanacak ilk sayi : ');
ReadLn(Sayi1);
Write('Toplanacak ikinci sayi: ');
ReadLn(Sayi2);
Sonuc := Sayi1 + Sayi2;
End;
Begin
Topla();
WriteLn('');
WriteLn('Sayilarin Toplami : ' + IntToStr(Sonuc));
End.
Bu Dersin Özeti
Bu derste yazılanların özetlemek gerekirse şunları yazmak isterim: Bir önceki derste kısaca sözü edilen Delphi sürümlerinden birisini bilgisayarımıza kurduk. Sonra kurma işleminin başarılı olup olmadığını test etmek için Delphi’yi başlattık. Belki bazılarınız yeni bir proje hazırlayıp küçük denemeler yaptılar.
Borland firması Delphi 7 sonraki sürümlerde IDE’de yani program geliştirme ortamında köklü değişiklikler yaptı. Bu nedenle program yazım ortamı bakımından Delphi 7 diğer sürümlerden ayrılmaktadır. Ne ki bu dersler bağlamında hangi Delphi kullandığınızın önemi yoktur.
Delphi’nin herhangi bir sürümünü kurup dcc32.exe adlı dosyanın varlığını test ettikten sonra Not Defteri ile başladık Delphi programı yazmaya. Kendim “C:” sürücüsünün kök klasöründe “\konsol” adında bir klasör hazırlayıp Not Defteri ile hazırladığın PRG uzantılı Delphi programlarını bu klasöre kaydettim. Derleme işlemini yapan dcc32.exe adlı dosyanın bulunduğu klasör Delphi kurulurken otomatik olarak arama yoluna dahil edildiği için DOS penceresinde istenen klasörde derleme yapılabilir. Bir sonraki derste kaldığımız yerden çalışmaya devam edeceğiz.
1 sayfadaki 1 sayfası
Bu forumun müsaadesi var:
Bu forumdaki mesajlara cevap veremezsiniz