| 10.  Процедуры и функцииВ языке Паскаль имеется две разновидности подпрограмм - процедуры и функции. Структура любой подпрограммы аналогична структуре всей программы. Подпрограмма должна быть описана до того, как она будет использована в программе или другой подпрограмме. Все параметры, которые использует подпрограмма, можно разбить на две категории: локальные параметры, объявленные внутри подпрограммы и доступные только ей самой, и глобальные - объявленные в основной программе и доступные как программе, так и всем ее подпрограммам. Обмен информацией между основной программой и подпрограммой может осуществляться только с помощью глобальных параметров. Подпрограмма может использовать глобальные параметры двояким образом: непосредственно обращаясь к глобальному параметру по его имени или используя механизм формальных параметров. Подпрограмма может непосредственно использовать любые глобальные параметры за исключением тех, которые имеют те же имена, что и ее локальные параметры. Механизм формальных параметров будет рассмотрен в п. 10.3.         10.1.    ПроцедураПодпрограмма-процедура предназначена для выполнения какой-то закончен-; ной последовательности действий. Любая процедура начинается с заголовка. В отличие от основной программы заголовок в процедуре обязателен. Он состоит из зарезервированного слова procedure, за которым следует идентификатор имени процедуры, а далее в круглых скобках - список формальных параметров: procedure <имя процедуры>(<список формальных параметров>); За заголовком могут идти такие же разделы, что и в основной программе В отличие от основной программы процедура завершается не точкой, а точкой с запятой. Пример.  Процедура ввода N целых чисел. Пусть в основной программе определен тип: type tArr = array[1..100] of Integer; Процедура может иметь вид: 
   | procedure InpInt(var Mas: tArr; N: Integer); | {заголовок процедуры со списком формальных параметров проверка N <= 100 - в основной программе} |  
   | var i: Integer; | {локальный параметр - параметр цикла} |  
   | begin |  |  
   | Writeln ('Ввведите', N, 'целых чисел'); |  |  
   | for I := 1 to N do |  |  
   | Read (Mas[i]) |  |  
   | end; |  |  Для вызова процедуры из основной программы или другой подпрограммы еле дует записать оператор, состоящий из имени процедуры и списка фактических параметров, которые должны совпадать по количеству и типам с формальными параметрами процедуры. Например: InpInt(M,   К);  означает, что вызывается процедура Inplnt для ввода К целых чисел в массив М. Естественно, что в этом случае параметр К целого типа, а М - массив типа tArr. 
 
 |