

7. Prosedürler ve Fonksiyonlar (Metotlar)
Delphi programlama dilinde, kodun düzenlenmesi, yeniden kullanılabilirliğinin artırılması ve karmaşıklığının azaltılması için prosedürler ve fonksiyonlar (genellikle metotlar olarak da adlandırılır) önemli bir rol oynar. Bu yapılar, belirli bir görevi gerçekleştiren kod bloklarını temsil eder ve programın farklı yerlerinden çağrılarak tekrar tekrar kullanılabilir.
Prosedürler
Prosedürler, belirli bir işlemi gerçekleştiren ve herhangi bir değer döndürmeyen kod bloklarıdır. Bir prosedür, parametre alabilir veya almayabilir. Parametreler, prosedüre girdi olarak sağlanan değerlerdir ve prosedürün davranışını etkiler.
Prosedür Tanımlama
Bir prosedür aşağıdaki gibi tanımlanır:
procedure ProsedurAdi(Parametre1: VeriTipi; Parametre2: VeriTipi);
begin
// Prosedürün gerçekleştireceği işlemler
end;
Örneğin, iki sayıyı toplayıp sonucu ekrana yazdıran bir prosedür şöyle olabilir:
procedure ToplaVeYaz(Sayi1: Integer; Sayi2: Integer);
var
Sonuc: Integer;
begin
Sonuc := Sayi1 + Sayi2;
ShowMessage('Sonuç: ' + IntToStr(Sonuc));
end;
Prosedür Çağırma
Bir prosedürü çağırmak için adını ve varsa parametrelerini belirtmeniz yeterlidir:
ToplaVeYaz(5, 3); // Ekrana "Sonuç: 8" yazdırır
Fonksiyonlar
Fonksiyonlar, prosedürlere benzer, ancak bir değer döndürürler. Bu değer, fonksiyonun gerçekleştirdiği işlemin sonucudur. Fonksiyonlar da parametre alabilir veya almayabilir.
Fonksiyon Tanımlama
Bir fonksiyon aşağıdaki gibi tanımlanır:
function FonksiyonAdi(Parametre1: VeriTipi; Parametre2: VeriTipi): DonusTipi;
begin
// Fonksiyonun gerçekleştireceği işlemler
// DonusTipi türünde bir değer döndürmeli
Result := DonusDegeri;
end;
Örneğin, iki sayıyı toplayıp sonucu döndüren bir fonksiyon şöyle olabilir:
function Topla(Sayi1: Integer; Sayi2: Integer): Integer;
begin
Result := Sayi1 + Sayi2;
end;
Fonksiyon Çağırma
Bir fonksiyonu çağırmak ve döndürdüğü değeri kullanmak için şöyle bir ifade kullanabilirsiniz:
var
Toplam: Integer;
begin
Toplam := Topla(5, 3);
ShowMessage('Toplam: ' + IntToStr(Toplam)); // Ekrana "Toplam: 8" yazdırır
end;
Prosedürler ve Fonksiyonlar Arasındaki Farklar
Temel fark, fonksiyonların bir değer döndürmesi, prosedürlerin ise döndürmemesidir. Fonksiyonlar genellikle bir hesaplama veya dönüşüm işleminin sonucunu elde etmek için kullanılırken, prosedürler genellikle bir eylemi gerçekleştirmek veya bir durumu değiştirmek için kullanılır.
- Değer Döndürme: Fonksiyonlar değer döndürür, prosedürler döndürmez.
- Kullanım Amacı: Fonksiyonlar genellikle hesaplama, dönüşüm gibi işlemler için, prosedürler ise eylem veya durum değişikliği için kullanılır.
Metotlar (Nesne Yönelimli Programlama Bağlamında)
Delphi, nesne yönelimli bir programlama dilidir. Bu bağlamda, metotlar, bir nesneye ait prosedür veya fonksiyonlardır. Metotlar, nesnenin davranışını tanımlar ve nesnenin verileri üzerinde işlem yapar.
Metot Tanımlama
Bir sınıf içinde metotlar aşağıdaki gibi tanımlanır:
type
TOrnekSinif = class
private
FVeri: Integer;
public
procedure Metot1;
function Metot2: String;
end;
implementation
procedure TOrnekSinif.Metot1;
begin
// Metot1'in gerçekleştireceği işlemler
end;
function TOrnekSinif.Metot2: String;
begin
Result := 'Merhaba Dünya!';
end;
Metot Çağırma
Bir nesnenin metodunu çağırmak için nokta notasyonu kullanılır:
var
OrnekNesne: TOrnekSinif;
begin
OrnekNesne := TOrnekSinif.Create;
OrnekNesne.Metot1; // Metot1 çağrılıyor
ShowMessage(OrnekNesne.Metot2); // Metot2 çağrılıyor ve sonucu ekrana yazdırılıyor
OrnekNesne.Free;
end;
Parametre Geçirme Yöntemleri
Delphi’de parametreler prosedürlere ve fonksiyonlara farklı şekillerde geçirilebilir. Bu yöntemler, parametrelerin nasıl kullanıldığı ve nasıl değiştirilebildiği üzerinde etkilidir.
- Değer ile Geçirme (By Value): Parametrenin bir kopyası fonksiyona veya prosedüre geçirilir. Fonksiyon veya prosedür içindeki değişiklikler orijinal parametreyi etkilemez.
- Referans ile Geçirme (By Reference): Parametrenin adresi fonksiyona veya prosedüre geçirilir. Fonksiyon veya prosedür içindeki değişiklikler orijinal parametreyi etkiler. `var` anahtar kelimesi ile belirtilir.
- Sabit Referans ile Geçirme (Const): Parametre referans ile geçirilir, ancak fonksiyon veya prosedür içinde değiştirilemez. Bu, performans açısından avantajlıdır çünkü veri kopyalanmaz, ancak güvenliği de sağlar.
Örnek Parametre Geçirme Yöntemleri
procedure DegerIleGec(Sayi: Integer);
begin
Sayi := Sayi + 10; // Bu değişiklik ana programdaki Sayi değişkenini etkilemez
end;
procedure ReferansIleGec(var Sayi: Integer);
begin
Sayi := Sayi + 10; // Bu değişiklik ana programdaki Sayi değişkenini etkiler
end;
procedure SabitReferansIleGec(const Sayi: Integer);
begin
// Sayi := Sayi + 10; // Bu satır hata verir, çünkü Sayi değiştirilemez
end;
İleri Düzey Kullanım: Fonksiyon Göstericileri (Function Pointers)
Delphi, fonksiyon göstericilerini destekler. Bu, bir fonksiyonun adresini bir değişkende saklayıp, bu değişken aracılığıyla fonksiyonu çağırmanıza olanak tanır. Fonksiyon göstericileri, esnek ve dinamik programlama teknikleri için önemlidir.
type
TToplamaFonksiyonu = function(Sayi1, Sayi2: Integer): Integer;
var
FonksiyonGostericisi: TToplamaFonksiyonu;
function Topla(Sayi1, Sayi2: Integer): Integer;
begin
Result := Sayi1 + Sayi2;
end;
begin
FonksiyonGostericisi := Topla;
ShowMessage(IntToStr(FonksiyonGostericisi(5, 3))); // Ekrana "8" yazdırır
end;
Sonuç
Prosedürler ve fonksiyonlar, Delphi programlama dilinde kodun modülerleştirilmesi, yeniden kullanılabilirliğinin artırılması ve okunabilirliğinin iyileştirilmesi için temel araçlardır. Metotlar ise, nesne yönelimli programlamanın önemli bir parçasıdır ve nesnelerin davranışlarını tanımlar. Parametre geçirme yöntemleri ve fonksiyon göstericileri gibi ileri düzey özellikler, daha esnek ve güçlü uygulamalar geliştirmenize olanak tanır. Bu yapıları etkin bir şekilde kullanarak, daha karmaşık ve yönetilebilir Delphi uygulamaları oluşturabilirsiniz.
“Prosedürler ve fonksiyonlar, yazılım mühendisliğinin temel taşlarıdır. İyi tasarlanmış prosedürler ve fonksiyonlar, kodun anlaşılmasını kolaylaştırır ve hataları azaltır.” – Yazılım Uzmanı
Bir yanıt bırakın