Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции - Информатика и программирование.doc
Скачиваний:
6
Добавлен:
18.11.2019
Размер:
198.66 Кб
Скачать

13 Классы памяти

Определяют размещение объекта в памяти и продолжительность его существования. Для явного задания класса памяти в описании объекта используются идентификаторы:

аuto – автоматически выделяемая, локальная память

register - автоматически выделяемая регистровая память,, использует не ОЗУ, а регистры памяти

static - приписывается переменным и функциям и доступен только в модулях программы, в которых он определён.

Extern – приписывается переменным и функциям и доступен во всех модулях программы.

14 Подпрограммы. Их назначение. Типы подпрограмм в ЯП Паскаль и С\С++

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

Бывают подпрограммы-функции и подпрограммы-процедуры.

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

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

1 Описание функций

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

Формат функции:

function <идентификатор>[(<список формальных параметров>)]: <тип результата>;

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

Описание функции приводится в разделе описаний основной программы после раздела переменных var. В теле программы функция вызывается по её имени с фактическими параметрами для вычисления.

Пример 1 Вычислить у = (х2 + 5!).

(Факториал – это произведение натуральных чисел, напр., 5! = 1*2*3*4*5)

Оформим вычисление факториала как подпрограмму-функцию:

program funct1;

var x, y: real; // начало раздела описаний программы

F: integer;

function Factоrial (N:integer): integer; //описание

// функции Factоrial типа integer с параметром N типа integer

var i, N: integer;

begin

F:= 1;

for i:=2 to N do

F:=F*1;

Factorial:= F;

End function; // конец описания функции

begin // начало тела основной программы

x:=3.45;

y:=sqr(x – Factorial(5)); // Вызов функции Factоrial с аргументом N =5 как операнда

write ('y=', y);

end. // конец тела основной программы

Параметры, описанные внутри функции (i, N) называются локальными и действуют только внутри функции. Параметры, описанные в разделе описаний программы (х, у, F) называются глобальными и действуют в самой программе и во всех её подпрограммах – функциях и процедурах, поэтому глобальную переменную F в описании функции Factоrial объявлять не надо.

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

Формат объявления процедуры:

sub <имя процедуры>[(<список формальных параметров>)];

end sub

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

Пример Вычислить у = (х2 + 5!).

program vybor;

var y, X: real; // начало раздела описаний основной программы vybor

sub Factоrial (N:integer); // начало процедуры Factоrial

var i: integer;

begin

F:= 1;

for i:=2 to N do

F:=F*1;

end sub; // конец процедуры Factоrial

begin // начало тела основной программы

Х:= 5.1; N:= 5;

Factоrial (N); // вызов процедуры с параметрoм N

y:= X + N;

end. // конец тела основной программы

12