pascal - работа с подпрограммой

  • Процедура - подпрограмма, имеющая произвольное количество входных и выходных данных.
  • procedure <имя_процедуры> (<описание параметров-значений>; var: <описание параметров-переменных>);
    begin
       <операторы>
    end;
    

    Для вызова процедуры достаточно указать её имя со списком фактических параметров.

  • Функция - подпрограмма, имеющая единственный результат, записываемый в ячейку памяти, имя которой совпадает с именем функции.
  • function <имя_функции> (<описание входных данных>): <тип_функции>;
    begin
       <операторы>;
       <имя_функции> := <результат>
    end;
    

    В блоке функции обязательно должен присутствовать оператор <имя_функции> := <результат>.



    Пример вызова процедуры.

    program digits;
    var
      n, k, j: integer;
      
    procedure number_col(m: integer);  
    var
      i: integer;
      s: string;
    begin
      str(m, s);
      for i := 1 to length(s) do
        writeln(s[i]);
    end;
    
    begin
      read(n);
      number_col(n);
      number_col(k);
      number_col(j);
    end.

    Степень числа - возведение в степень.

    program stepen_01;
    
    var
      R, x, n, i: integer;
    
    begin
    //  R := x * x * x * x * x;
    
    //  R := x;
    //  R := R * x;
    //  R := R * x;
    //  R := R * x;
    //  R := R * x;
    
      write('Input x, n: ');
      readln(x, n);
      R := x;
      for i := 1 to n-1 do
        R := R * x;
    
      writeln('stepen = ', R);
    
    end.

    Механизм возведения в степень выделен в процедуру.

    program stepen_02;
    
    var
      R, x, n: integer;
    
    procedure stepen( x1, n1: integer; var R1: integer);
    var
      i: integer;
    begin
      R1 := x1;
      for i := 1 to n1-1 do
        R1 := R1 * x1;
    end;
    
    begin
    
      write('Input x, n: ');
      readln(x, n);
      
      stepen( x, n, R);
    
      writeln('stepen = ', R);
    end.

    Механизм возведения в степень из процедуры преобразован в функцию.

    program stepen_03;
    
    var
      R, x, n: integer;
    
    function stepen( x1, n1: integer): integer;
    var
      i: integer;
    begin
      stepen := x1;
      for i := 1 to n1-1 do
        stepen := stepen * x1;
    end;
    
    begin
    
      write('Input x, n: ');
      readln(x, n);
    
      R := stepen( x, n);
    
      writeln('stepen = ', R);
    end.

    Решение задачи с применением своей созданной функции.

    program stepen_04;
    
    var
      R, x, n: integer;
    
    function stepen( x1, n1: integer): integer;
    var
      i: integer;
    begin
      stepen := x1;
      for i := 1 to n1-1 do
        stepen := stepen * x1;
    end;
    
    begin
    
      write('Input x, n: ');
      readln(x, n);
    
      R := stepen( x, 3) + stepen( x, 5) + stepen( x, n);
    
      writeln('stepen = ', R);
    end.

    Рейтинг

    Проблемы с госуслугами, медленный интернет или плохая связь? Напишите об этом — Минцифры поможет с решением