ВУЗ: Пермский национальный исследовательский политехнический университет
Категория: Учебное пособие
Дисциплина: Информатика
Добавлен: 25.10.2018
Просмотров: 10338
Скачиваний: 105
76
Пример вывода элементов двумерного массива в виде мат-
рицы:
for i:=1 to m do
begin
for j:=1 to n do
write(a[i,j]:5, ' ');
writeln;
end;
Для двумерного массива можно использовать те же схемы
перебора, что и для одномерного, но комбинаций здесь будет
в два раза больше.
Более подробная информация по теме «Массивы» пред-
ставлена в работе [7].
Процедуры и функции (подпрограммы)
Кроме стандартных функций и процедур, язык Pascal по-
зволяет пользователю формировать свои процедуры и функции.
Их целесообразно создавать, если при решении задачи возникает
необходимость проводить вычисления по одним и тем же фор-
мулам (алгоритмам) многократно, например находить корни
квадратного уравнения ax
2
+ bx + c = 0
при различных значениях
коэффициентов a, b и c.
В языке Pascal определяются два типа подпрограмм – про-
цедуры и функции. Любая подпрограмма обладает той же струк-
турой, которой обладает и вся программа.
При вызове подпрограммы выполнение основной програм-
мы приостанавливается и управление передается в подпрограм-
му. По окончании работы подпрограммы управление возвраща-
ется основной программе.
Основное различие между процедурой и функцией состоит
в том, что процедура только выполняет какую-либо закончен-
ную последовательность действий, не возвращая результата ра-
боты в основную программу, а функция и выполняет действия,
и возвращает результат.
77
Все переменные, которые использует подпрограмма, могут
быть либо глобальные, т.е. объявленные в основной программе
и доступные как программе, так и всем ее подпрограммам, либо
локальные, объявленные внутри подпрограммы и доступные
только ей самой.
При использовании процедур (функций) необходимо разли-
чать:
– описание процедуры (функции);
– оператор вызова процедуры (функции).
Описание процедуры (функции) дается в разделе описания
процедур и функций, который должен располагаться после раз-
дела описания переменных (см. п. «Структура программы на
языке Pascal»).
Оператор вызова процедуры (функции) ставится в основной
программе (в разделе операторов) и служит для активизации
процедуры (функции).
Параметры, указываемые при описании подпрограммы, на-
зываются формальными. Параметры, указываемые при вызове
подпрограммы, называются фактическими.
Формальные параметры – это наименования переменных,
через которые передается информация из программы в процеду-
ру либо из процедуры в программу.
Фактические параметры – это наименования переменных,
значения которых при обращении к процедуре присваиваются
соответствующим формальным параметрам.
Между фактическими и формальными параметрами должно
быть взаимно однозначное соответствие по количеству, порядку
следования и типу.
Если формальный параметр описан с предваряющим клю-
чевым словом var или const, то его называют параметром-
переменной и говорят, что он передается по ссылке. Если
же параметр описан без слов var или const, то его называ-
ют параметром-значением и говорят, что он передается по
значению.
78
Если параметр передается по значению, то при вызове под-
программы значения фактических параметров присваиваются
соответствующим формальным параметрам.
Если параметр передается по ссылке, то при вызове под-
программы фактический параметр заменяет собой в теле проце-
дуры соответствующий ему формальный параметр. В итоге лю-
бые изменения формального параметра-переменной внутри про-
цедуры приводят к соответствующим изменениям фактического
параметра. При передаче параметра по ссылке в подпрограмму
передается адрес фактического параметра. Поэтому если пара-
метр занимает много памяти (массив, запись, строка), то обычно
он также передается по ссылке. В результате в процедуру пере-
дается не сам параметр, а его адрес, что экономит память и вре-
мя работы. При этом если параметр меняется внутри подпро-
граммы, то он передается с ключевым словом var, если не ме-
няется – с ключевым словом const.
Описание процедуры имеет вид
procedure имя (список формальных параметров);
раздел описаний
begin
операторы
end;
Список формальных параметров вместе с окружающими
скобками может отсутствовать.
Подпрограмма один раз описывается и может быть много-
кратно вызвана. Для вызова процедуры используется оператор
вызова – имя процедуры и в круглых скобках список фактиче-
ских параметров:
имя процедуры (список фактических параметров);
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(Введите размер матрицы nm);
read(n,
m);
TAB(n,
m);
end.
Часть алгоритма решения задачи можно оформить как
функцию, если в качестве результата выполнения функции не-
обходимо получить одно единственное число. Поскольку функ-
ция предназначена для вычисления какого-либо значения, необ-
ходимо указать тип результата, возвращаемого функцией вызы-
вающей программе.
Описание функции имеет вид
function имя (список формальных параметров):
тип возвращаемого значения;
раздел описаний
begin
операторы
end;
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 определен ряд констант, типов, проце-
дур, функций и классов для рисования в графическом окне. Они
подразделяются на следующие группы:
– графические примитивы;
– функции для работы с цветом;
– цветовые константы;