Alt programlar: prosedürler ve işlevler - 2


İşlev, bir sonuç (sayı, karakter dizisi vb.) döndüren bir alt programdır

Bir çevrimiçi mağazadan bir ürün sipariş ettiğinizi düşünün. Programlama açısından, belirli bir alt programı çağırdınız ve bir prosedürden farklı olarak, bu alt programın bir sonuç döndürmesi gerekir - sipariş ettiğiniz ürünü teslim edin. Bu alt programlara işlevler denir.
Bir işlev, prosedürle hemen hemen aynı şekilde biçimlendirilir:
işlev  (noktalı virgülle ayrılmış  olarak parametrelerin listesi: ): <dönüş değeri türü>;
başlamak
    <işlev gövdesi>
bitiş;

Bir işlev ile prosedür arasındaki fark, bir işlevin bir değer döndürmesi gerektiğidir. Bunu yapmak için, işlev adını bir değişken olarak veya özel değişken olarak kullanmanız gerekir Sonuç:
function Sum(a, b:integer): tamsayı;
başlamak
    Toplam := a + b;
bitiş;
veya
function Sum(a, b:integer): tamsayı;
başlamak
    Sonuç := a + b;
bitiş;

İki tamsayının aritmetik ortalamasını döndüren bir işlev şöyle görünür:
ortalama fonksiyon(a, b: tamsayı): gerçek;
başlamak
  ortalama := (a + b) / 2;
son;
Ana programda bu işlevin nasıl çağrılacağını anlamak kalır:
Bir işlevi, bir yordamı çağırdığınız şekilde çağırmamalısınız:
ortalama(10, 5); 
İşlev tarafından döndürülen değer kaybolacaktır. Sanki çevrimiçi mağazadaki mallar kimseye verilmemiş, atılmış gibidir. Müşterinin beğenmesi pek olası değil.

Sonucu bir değişkene kaydetmek (veya ekrana yazdırmak) daha doğrudur:
a := ortalama(10, 5);

veya

writeln(ortalama(10, 5));

Programcılar genellikle boolean değerler döndüren boolean işlevleri kullanır: true veya false (True veya False)
Bu tür işlevler   bazı özellikleri kontrol edin.
Bir sayının eşitliğini kontrol eden mantıksal bir fonksiyon yazmaya ilişkin iki örneği ele alalım.
Ve işlevler ve prosedürlerle çalışmayla ilgili son not: programdaki işlev ve prosedürlerin sayısı sınırlı değildir. Ayrıca, bir alt program başka bir alt programı ve hatta kendisini çağırabilir.
 

1)  Daha iyi yol:
ifade sonucu
n % 2 == 0
doğru (Doğru) veya yanlış (Yanlış) olacaktır
Koşullu bir ifade yazmaya gerek yok!
2) Bunu yapma!
Bu şekilde yazabilirsiniz, ancak daha uzun bir kayıt olacağı için yapmamak daha iyidir
bool isEven(int n)
{
    dönüş (n % 2 == 0);
}
bool isEven(int n)
{
    eğer (n % 2 == 0)
        doğru dönüş;
    başka
        Yanlış döndür;
}