Delphi Can
Delphi C# Fonksiyon Sonuç Döndürme Farkı - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6)
+--- Konu Başlığı: Delphi C# Fonksiyon Sonuç Döndürme Farkı (/showthread.php?tid=6489)



Delphi C# Fonksiyon Sonuç Döndürme Farkı - Hayati - 19-12-2021

Selam


if (c = 0) then
begin
   if (s < 201) then Result:= '2';
   if (s < 401) then Result:= '4';
   if (s < 601) then Result:= '6';
end;

Delphi, beklenildiği üzere 600 den küçük her değerde 6 sonucunu döndürüyor. Ama C#

if (c == 0)
{                
   if (s < 201) return "2";
   if (s < 401) return "4";
   if (s < 601) return "6";
}

2,4,6 sonuçlarını gösterebiliyor. Delphi ile şartları büyükten küçüğe sıralarsak istediğimizi yaparız ben orasında değilim de bu farkın teknik sebebini çok merak ettim.


Delphi C# Fonksiyon Sonuç Döndürme Farkı - frmman - 19-12-2021

Delphi çalıştırabileceği/ şartları sağlayan son Result komutuna kadar ilerler. C de ise ilk Return komutunda işlemi yarıda keser.
İşin teknik nedenini bilmiyorum ama tecrübe ve deneyimlerim bu yönde. Smile


Delphi C# Fonksiyon Sonuç Döndürme Farkı - enigma - 19-12-2021

Buradaki sonuç programlama mantığında yatıyor.
Aslında delphide ilk kontrol sonucunda result = 2 oluyor ama program çalışmaya devam ettiği için alttaki satırı işleme alıyor ve bu sefer sonuc yanı Result = 4 oluyor. Program çalışmaya devam ettiği için 3. sartırı da işleme sokuyor ve sonuç normal olarak 6 oluyor. Ama C kodunda return var. Yani koşul sağlandığında, diğer satırlar işlenmiyor ve { . . } bloğundan çıkıyor.


Delphi C# Fonksiyon Sonuç Döndürme Farkı - Hayati - 19-12-2021

@enigma Hocam teşekkürler, iki dili de tasarlayan aynı adam ama farklı bakış açıları getirmiş demek ki. Ayrıca C# (Python) böyle şartlı metotlarda mutlaka bir sonucun döneceği yapı istiyor, bizim Delphi sağ olsun biraz Nasreddin Hoca misali uysa da döndürürüm uymasa da diyor Smile


Delphi C# Fonksiyon Sonuç Döndürme Farkı - mrmarman - 19-12-2021

en azından dönüş emri doğru olsaydı size hak verirdim.

Şöyle deneyin... Bakalım benzerlik oluştu mu ?

function Ornek: String;
const
  c = 0;
  s = 0;
begin
  if (c = 0) then
  begin
     if (s < 201) then Exit('2'); //Result:= '2';
     if (s < 401) then Exit('4'); //Result:= '4';
     if (s < 601) then Exit('6'); //Result:= '6';
  end;
end;



  showmessage( ornek() );



Delphi C# Fonksiyon Sonuç Döndürme Farkı - Hayati - 19-12-2021

@mrmarman Tamamen benim cahilliğimmiş, açık konuşayım böyle bir kullanım olduğunu bilmiyordum, teşekkürler.