Мой сайт
Четверг, 21.11.2024, 09:29
» Меню сайта
» Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Функции и процедуры

     Любая большая программа состоит из определенного количества логически завершенных блоков. Для удобства создания и отладки программы, для большей наглядности кода подобные "завершенные блоки" записывают в виде подпрограмм.

     Подпрограмма - именованная часть компьютерной программы, содержащая описание определенного законченного набора действий. Другими словами, это вспомогательная программа, которая обычно несколько раз выполняется в основной программе.

    Подпрограммы могут работать с данными и выдавать результаты. Любая подпрограмма подобна программе: у неё есть заголовок, начало, тело подпрограммы, конец. В подпрограмме могут быть константы, переменные, свои подпрограммы. Подпрограмма должна быть описана до того как она будет использована и всегда перед основным Begin. В подпрограммах используются те же операторы, что и в обычной программе.

Разберемся с новыми понятиями:

  • Глобальные переменные - переменные, описываемые в начале основного алгоритма.
  • Локальные переменные - переменные, описываемые в подпрограмме. (Ими можно пользоваться только в подпрограмме)
  • Формальные переменные фигурируют в подпрограмме и в дальнейшем замещаются конкретным значением, от которого мы хотим выполнить подпрограмму.
  • Фактический параметр - величина, для которой необходимо вычислить значение функции.

Например, в математике F(x)=x3+x2-5,   x - формальный параметр, а при вычислении значения функции F(3)=33+32-5,  3 - фактический параметр.

Подпрограммы в Pascal делятся на два вида: процедуры и функции.

Функция используется в том случае, когда после выполнения каких-то действий нужно получить результат в виде числа или текста. И результирующая переменная - строго одна.

         Любую функцию, перед тем как её использовать в программе, необходимо описать и задать. Секция описания функций начинается с ключевого слова FUNCTION.

Форма записи:

 FUNCTION F(x:тип):тип функции;

                   begin

                            F:=выражение

                   end;

 Далее в программе к функции обращаются по F(x).

Обращение к функции осуществляется в правой части оператора присваивания или внутри оператора Writeln, при этом в выражении записываются имя функции и фактические параметры.

Вызов функции в основной программе:

K := F(фактический параметр);

Причем, тип переменной К и тип функции F должны совпадать!

Кроме того, в теле функции обязательно должен быть хотя бы один оператор присваивания, где в левой части стоит имя функции или переменная result, а в правой — ее значение.

Пример:

var a,b, c: integer;
function sum(x, y: integer): integer;
     begin

     sum := x + y;

      end;

begin

readln(a, b);

writeln(sum(a, b));
end.

Или так:

var   a, b, c: integer;
    function sum(x, y: integer): integer;
   begin
    result := x + y;
    end;
begin
 readln(a, b);
 writeln(sum(a, b));
end.

Пример 1.Составьте программу, вычисляющую разность двух дробей  ,

(a,b,c,d - натуральные числа). Результат представить в виде простой несократимой дроби  .

Оформим вычисление НОД двух чисел в виде функции.

var a,b,c,d,e,f:integer;

function NOD(m,n:integer):integer;

begin

while m<>n do if m>n  then m:=m-n

 else n:=n-m;

NOD:=m;

end;

 

BEGIN

writeln('введите числитель и знаменатель первой дроби');

readln(a,b);

writeln('введите числитель и знаменатель второй дроби');

readln(c,d);

x:=a*d-b*c;

y:=b*d;

if x=0 then writeln('0')

        else begin

            e:=x div NOD(abs(x),y);

            f:=y div NOD(abs(x),y);

            writeln('ответ: ', e, '/', f);

            end;

END.

Процедуры

Процедура же используется в том случае, когда после выполнения каких-то действий нужно получить несколько результирующих переменных или ни одной!

Процедура в чем-то похожа на функцию, также имеет имя, параметры, тело подпрограммы отличия от функции заключаются в описании и вызове.

Форма записи:

PROCEDURE имя процедуры(формальные параметры: тип);

begin

end;

Помимо таких понятий, как глобальные и локальные переменные, формальные и фактические параметры, для процедуры существуют еще два понятия: входные и выходные параметры.

Формальные параметры, определяющие исходные данные для работы процедур называются входными параметрами.

Формальные параметры, являющиеся результатами вычислений называются выходными параметрами (в описании процедуры записываются после слова var).

Например, в описании процедуры:

Procedure Pr(a, b, c: integer; k: real; var m, n: real);

begin

end;

входные параметры: a, b, c, k

выходные параметры: m, n.

Другими словами, входные параметры - исходные значения для процедуры, выходные - результаты. Но, и те, и другие могут отсутствовать!

Вызов процедуры в основной программе:

Функции вызываются внутри Writeln (имя_ функции) или справа от оператора присваивания в составе выражений у: = имя_ функции (х); процедура всегда вызывается отдельной строкой.

имя процедуры (фактические параметры);

Фактические параметры должны соответствовать формальным по количеству, типу и месту расположения!

Пример 2. Написать процедуру, вычисляющую среднее арифметическое и среднее геометрическое двух положительных чисел. Найти среднее арифметическое и среднее геометрическое для всевозможных пар чисел A, B, C, D.

Всевозможные пары чисел: A и B, B и C, A и C, B и D, C и D, A и D.

Var a, b, c, d, x, y: real;
Procedure sred(m, n: real; var SA, SG: real);
begin
SA:=(m+n)/2;
SG:=sqrt(m*n);
end;
Begin
writeln('введите A, B, C, D');
readln(A, B, C, D);
sred(A, B, x, y);
writeln ('для чисел А и В среднее арифметическое=', х, 'среднее геометрическое =', y);
sred(B, C, x, y);
writeln('для чисел B и C среднее арифметическое = ', x, ' среднее геометрическое = ', y);
sred(A, C, x, y);
writeln('для чисел A и C среднее арифметическое = ', x, ' среднее геометрическое = ', y);
End.

» Вход на сайт
» Поиск
» Календарь
«  Ноябрь 2024  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
252627282930
» Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • База знаний uCoz

  • » Инфознайка
    Copyright MyCorp © 2024uCoz