Delphi procedure ve function nedir?

Yapmak istediğiniz işle ilgili doğru bileşeni bulmak için burayı kullanabilirsiniz. Sadece bulmak için, diğer sorular Programlama forumuna lütfen.
Forum kuralları
Bu forum sadece yapacağınız işle alakalı doğru bileşeni bulmak içindir. Şöyle bir şey yapmam lazım, hangi bileşeni kullanıyım diyorsanız, doğru yerdesiniz.
Cevapla
oguzhansr40
Üye
Mesajlar: 1
Kayıt: 29 Mar 2022 08:38

Delphi procedure ve function nedir?

Mesaj gönderen oguzhansr40 »

Merhabalar. Ben okulda Görsel Programlama dersinde Delphi görüyorum. Yarın da sınavım var. Burada procedure ve function olayını hiçbir şekilde anlamadım. Bunu sadece ben anlamasam gene iyi sınıftaki kişilere sorduk onlar da anlamamış. Hocanın derste açtığı notları atacağım ve derste bir şey yazdı onu da yazacağım. Yazdığı şey;

Parametresiz Procedure = Giriş yok / Çıkış yok
Parametreli Procedure = Giriş var / Çıkış Yok
Parametresiz Function = Giriş yok / Çıkış var
Parametreli Function = Giriş var / Çıkış var
Yani bu giriş ve çıkış olayları nedir? Function ve procedure olayı nedir? Bunları bana detaylı şekilde anlatırsanız çok sevinirim. Şimdiden yardım eden herkese teşekkürler.
ikra
Üye
Mesajlar: 900
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: Delphi procedure ve function nedir?

Mesaj gönderen ikra »

Parametresiz prosedür giris yok cikis yok

Procedure BirseyYap;
Begin
Edit1.Text := ‘Giris yok cikis yok‘;
End;

Parametreli procedure giris var cikis yok

Procedure BirseyYap(AParam: String);
Begin
Edit1.Text := AParam;
End;

Parametresiz function giris yok cikis var

Function BirseyYap: Boolean;
Begin
Result := 0 < 1;
End;

Parametreli function giris var cikis var

Function BirseyYap(AParam: Integer): Boolean;
Begin
Result := AParam < 1;
End;
kıdemsiz üye
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Delphi procedure ve function nedir?

Mesaj gönderen sabanakman »

Alt programlar yani prosedür ve fonksiyonlar tekrar tekrar çalışması gereken işlemlerin tanımlandığı ve bu tanımı çağırarak tekrarlanan bu işlemleri pratik olarak çalıştırmaya yararlar. Tabi prosedürler sadece işlemi çalışır geçerler (çıkış yoktur) ama fonksiyonlar bu çalışan işlemlerden sonuç olarak bir değer üretir (çıkış vardır).

Parametresiz (giriş yok) kullanım:
Mesela ekrandaki bilgileri temizlemek için prosedür kullanmak gerekecektir. Çünkü bize sonuç olarak vermesi gereken bir değer gerekmez ama sistem saatini öğrenmek için ise bir fonksiyona ihtiyaç vardır.

Kod: Tümünü seç

procedure EkraniTemizle;
begin
  Edit1.Text := '';
  Edit2.Text := '';
  Edit3.Text := '';
end;

function SistemSaati: TDateTime;
begin
  Result := Time;
end;
Burada prosedürden bir sonuç almaya gerek olmadığı için size "çıkış yok" diye anlatılmış sanırım. Ürettiği sonuca ihtiyaç duyduğumuz fonksiyon için de "çıkış var" tanımı yapılmış. Bu tüm prosedür ve fonksiyonlar için geçerli bir durumdur. Kullanım için örnek:

Kod: Tümünü seç

var: Saat: TDateTime;
begin
...
EkraniTemizle;
..
Saat := SistemSaati; //yazdığımız SistemSaati fonksiyonu bize çıkış olarak sistem saatini verecektir.
ShowMessage(TimeToStr(Saat));
Parametreli (giriş var) kullanım:
Gelelim giriş meselesine. Alt programlar yani prosedür ve fonksiyonlar dışarıdan içeri parametre değeri alabilirler. Neye ihtiyacınız varsa bunu siz belirlersiniz. Yeni örnekler üzerinden gidersek; karekök, üs alma v.s. gibi hesaplama yapabilmek için bize hesaplanan sonucu çıkışta vermesi gerektiği için "çıkış var" dediğiniz fonksiyonlardan tanımlanması gerekiyor.

Kod: Tümünü seç

function KareKok(Sayi: Double): Double;
begin
  Result := Sqrt(Sayi);
end;

function UsAl(Sayi, Us: Integer): Integer;
var
  i: Integer;
begin
  Result := 1;
  for i := 1 to Us do
      Result := Result * Sayi;
end;
Yukarıdaki örnekler fonksiyonlar (çıkış var) üzerinden verildi. Bir örnekte ürettiği sonuca ihtiyaç duymadığımız (çıkış yok) prosedürlere giriş parametresi üzerine olsun. Ekrana basit bir mesaj yazan ve bir de hem mesaj veren bu mesajda da belirtilen başlığı yazan iki prosedür yazalım.

Kod: Tümünü seç

procedure MesajVer(Mesaj: string);
begin
  ShowMessage(Mesaj);
end;

procedure BaslikliMesajVer(Mesaj, Baslik: string);
begin
  Application.MessageBox(PChar(Mesaj), PChar(Baslik), 0);
end;
Ekrana basit mesaj veren bu prosedürler giriş parametresi alan türdedirler ama bir sonuç değeri üretmezler o yüzden "çıkış yok" diye betimlenmiş. Örnek olarak bunlar da

Kod: Tümünü seç

var
  Sonuc: Double;
begin
...
  Sonuc := KareKok(9); //Sonuc değişkenine 3 değeri atanacaktır
...
  Sonuc := UsAl(5, 4); //Sonuc değişkenine (5⁴) 625 değeri atanacaktır
...
  MesajVer('Bu bir mesajdır');
  ...
  BaslikliMesajVer('Bu da başlıklı mesaj', 'Başlık');
  ...
end;
şeklinde kullanılabilir.

Özetle alt programlar parametre alma durumlarına göre giriş var veya yoktur, fonksiyon ya da prosedür olma durumlarına göre de çıkış vardır veya çıkış yoktur denilebilir.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Cevapla