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


Problem

1/10

alt program işlevi

Theory Click to read/hide

İş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));

Problem

Bir doğal sayının rakamlarının toplamını hesaplayan bir fonksiyon yazınız.
Bu fonksiyonu kullanarak, girilen 5 doğal sayı arasından en fazla basamak toplamına sahip sayıyı bulan bir program yazınız. Bu tür birkaç sayı varsa, büyük sayıyı yazdırın
 
Örnekler
# Girdi Çıktı
1 15
234
11
9
111112
234
Write the program below
var n, i, max, nmax: integer;
// функция, которая вычисляет сумму цифр числа    
// основная программа   
begin
    max := 0;
    nmax := 0; 
    for i := 0 to 4 do
    begin 
    end;
    writeln(nmax);
end. 

     

Program check result

To check the solution of the problem, you need to register or log in!