While(a mod b)<>0 do

Begin

r:= a mod b; {остаток от деления}

a:=b;

b:=r;

end;

nod:=b;

end;

{основная программа}

Begin

writeln (‘Вычисление наибольшего общего делителя (НОД)’)

Write (‘Введите в одной строке два целых положительных числа через пробел’);

Readln (c1, c2);

nd:=Nod (c1, c2);

Writeln(‘НОД чисел ’, c1, ’ и ’, c2,’ это ’,nd);

end;


Процедуры.

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

В Turbo Pascal процедурой называется имеющая имя последовательность инструкций, предназначенная для решения определенной задачи.

Основная программа и определенная программистом процедура взаимодействуют следующим образом (рис. 10). Если во время работы основной программы встречается инструкция вызова процедуры, то выполнение инструкции основной программы приостанавливается и выполняются инструкции процедуры. После того, как будут выполнены все инструкции процедуры, продолжается выполнение основной программы с той инструкции, которая следует за инструкцией вызова процедуры.

 

Рис.10. Взаимодействие основной программы и процедуры программиста

Объявление процедуры.В общем виде объявление процедуры программиста выглядит так:

 

Procedure Имя (varпараметр1:тип1;var

параметр1:тип1;…; varпараметрК:типК; )

Var

{здесь объявление внутренних переменных процедуры}

Begin

{здесь инструкция процедуры}

end;

 

где procedure – зарезервированное слово языка Pascal, обозначающее, что далее следует объявление процедуры программиста; Имя – имя процедуры, используется для вызова инструкций, находящихся междуbegin иend, реализующих процедуру; параметр1 – переменная, которая используется в инструкциях процедуры. Параметры используются для передачи в процедуру информации, а так же для передачи информации из процедуры в вызвавшую ее программу.

Указанные в объявлении процедуры параметры являются формальными параметрами. Словоvar стоящее перед именем параметра, не является обязательным. Однако если оно стоит, то это означает, что при вызове процедуры параметром должна быть переменная основной программы, при этом изменение параметра внутри процедуры приведет к изменению значения переменной основной программы, указанной в качестве фактического параметра при вызове процедуры.

Ниже приведено объявление процедуры Line, которая выводит на экран строку символов. У процедуры два параметра: первый (n) задает длину выводимой строки (количество символов), второй (с) – символ, которым рисуется строка.

 

procedure Line (n:integer;c:char);

Var

i:integer;

Begin

fori:=1tondo Write(c);

Writeln;

end;

 


Использование процедуры.

 

Инструкция вызова процедуры в общем виде выглядит так:

Имя{Список Параметров};

где Имя– имя вызываемой процедуры; Список Параметров – разделенные запятыми фактические параметры, в качестве которых, в зависимости от описания параметров в объявлении процедуры, могут быть использованы константа, переменная или выражение. Например, инструкции вызова приведенной выше процедуры Line могут быть такими:

Line (30,’-‘); Line (n+2,’*‘); Line (n,ch);

 

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