Добавлен: 25.10.2018

Просмотров: 10338

Скачиваний: 105

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

76 

Пример вывода элементов двумерного массива в виде мат-

рицы: 

for i:=1 to m do 
begin 
    for j:=1 to n do 
        write(a[i,j]:5, '  '); 
    writeln; 
end; 

 

Для  двумерного  массива  можно  использовать  те  же  схемы 

перебора,  что  и  для  одномерного,  но  комбинаций  здесь  будет 
в два раза больше. 

Более  подробная  информация  по  теме  «Массивы»  пред-

ставлена в работе [7]. 

 

Процедуры и функции (подпрограммы) 
Кроме  стандартных  функций  и  процедур,  язык Pascal по-

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

bx + c = 0

 

при различных значениях 

коэффициентов ab и c

В языке Pascal определяются два типа подпрограмм – про-

цедуры и функции. Любая подпрограмма обладает той же струк-
турой, которой обладает и вся программа. 

При вызове  подпрограммы выполнение основной програм-

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

Основное различие между процедурой и функцией состоит 

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


background image

77 

Все переменные, которые использует подпрограмма, могут 

быть  либо  глобальные,  т.е.  объявленные  в  основной  программе 
и доступные как программе, так и всем ее подпрограммам, либо 
локальные,  объявленные  внутри  подпрограммы  и  доступные 
только ей самой. 

При использовании процедур (функций) необходимо разли-

чать: 

– описание процедуры (функции); 
– оператор вызова процедуры (функции). 
Описание процедуры (функции) дается в разделе описания 

процедур и функций, который должен располагаться после раз-
дела  описания  переменных  (см.  п. «Структура  программы  на 
языке Pascal»). 

Оператор вызова процедуры (функции) ставится в основной 

программе  (в  разделе  операторов)  и  служит  для  активизации 
процедуры (функции). 

Параметры, указываемые при описании подпрограммы, на-

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

Формальные  параметры – это  наименования  переменных, 

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

Фактические параметры – это наименования переменных, 

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

Между фактическими и формальными параметрами должно 

быть взаимно однозначное соответствие по количеству, порядку 
следования и типу. 

Если формальный параметр описан с предваряющим клю-

чевым  словом  var или const, то его называют параметром-
переменной
  и  говорят,  что  он  передается  по  ссылке.  Если 
же параметр  описан  без  слов  var  или  const,  то  его  называ-
ют параметром-значением  и  говорят,  что  он  передается  по 
значению. 


background image

78 

Если параметр передается по значению, то при вызове под-

программы  значения  фактических  параметров  присваиваются 
соответствующим формальным параметрам. 

Если  параметр  передается  по  ссылке,  то  при  вызове  под-

программы фактический параметр заменяет собой в теле проце-
дуры соответствующий ему формальный параметр. В итоге лю-
бые изменения формального параметра-переменной внутри про-
цедуры приводят к соответствующим изменениям фактического 
параметра.  При  передаче  параметра  по  ссылке  в  подпрограмму 
передается  адрес  фактического  параметра.  Поэтому  если  пара-
метр занимает много памяти (массив, запись, строка), то обычно 
он также передается по ссылке. В результате в процедуру пере-
дается не сам параметр, а его адрес, что экономит память и вре-
мя  работы.  При  этом  если  параметр  меняется  внутри  подпро-
граммы, то он передается с ключевым словом var, если не ме-
няется – с ключевым словом const. 

Описание процедуры имеет вид 
 
procedure имя (список формальных параметров); 
раздел описаний 
begin 
   операторы 
end; 
 
Список  формальных  параметров  вместе  с  окружающими 

скобками может отсутствовать. 

Подпрограмма  один  раз  описывается  и  может  быть  много-

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

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


background image

79 

Пример. Написать процедуру ввода элементов матрицы А. 
program Z1; 
const u=100; 
var n, m: integer; 
       a: array[1..u, 1..u] of integer; 
procedure TAB(var g, k: integer); 
var i, j: integer; 
begin 
 

for i:=1 to g do 

 

 

for j:=1 to k do 

 

 

 

read (a[i, j]; 

end; 
begin 
 write(Введите размер матрицы nm); 
 read(n, 

m); 

 TAB(n, 

m); 

end. 
 
Часть  алгоритма  решения  задачи  можно  оформить  как 

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

 
Описание функции имеет вид 
 
function имя (список формальных параметров): 
тип возвращаемого значения; 
раздел описаний 
begin 
   операторы 
end; 
 


background image

80 

Результаты  выполнения  функции  записываются  в  ячейку 

памяти,  имя  которой  совпадает  с  именем  функции.  Поэтому 
в разделе  операторов  функции  должен  обязательно  присутство-
вать оператор вида: 

имя функции:=результат; 
Для вызова функции необходимо указать ее имя со списком 

фактических параметров в любом выражении вызывающей про-
граммы. 

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

выбирает наименьшее число. 

 
program Z2; 
var i, j: integer; 
function MIN(i, j: integer): integer; 
 begin 
 

 

if  i<j  then MIN:=i  else  MIN:=j; 

 end; 
begin 
 readln(i, 

j); 

 writeln(MIN=, MIN(i,j)); 
end. 
 
Модуль GraphABC 
Модуль GraphABC представляет  собой  простую  графиче-

скую  библиотеку  и  предназначен  для  создания  графических  и 
анимационных  программ.  Рисование  осуществляется  в  специ-
альном  графическом окне

В модуле GraphABC определен ряд констант, типов, проце-

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

– графические примитивы; 
– функции для работы с цветом; 
– цветовые константы;