Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курс лекций программирование.doc
Скачиваний:
32
Добавлен:
31.08.2019
Размер:
5.03 Mб
Скачать

Тема 3.6. Процедуры и функции пользователя

Тип лекции: текущая

План:

1. Понятие подпрограммы

2. Отличия процедур от функций

3. Описание процедуры

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

5. Локальные и глобальные переменные.

6. Параметры в подпрограммах

3. вопросы для самостоятельного изучения:

- Арифметические процедуры и функции. Скалярные функции. Функции преобразования типов. Процедуры управления строками на экране. Специальные процедуры и функции. Особенности их использования.

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

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

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

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

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

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

Функция — это часть программы, в которой вычисляется и возвраща­ется значение.

Замечание! Функция может входить в выражение как операнд, а процедура НЕТ!

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

Отличия функции от процедур

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

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

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

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

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

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

{в этой программе используется функция Func, вычисляющая квадрат синуса заданного числа}

program Functions;

{описание переменных программы}

Var X, Rez:Real;

{описание функции}

function Func: Real;

var R: Real;

begin

R:= Sin(x)*Sin(x);

Func:=R; {этот оператор присваивает функции Func зна­чение R }

end; {описание функции заканчивается "точкой с запятой" }

{сама программа}

begin

WriteLn(‘Введите число');

ReadLn(X);

Rez:=Func;

WriteLn (‘Квадрат синуса этого числа равен ', Rez); end.

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

program SKub;

var S: Real;

j,i: integer;

function SR(x,y:integer):Real;

var K: longint;

begin

SR:=Sqrt(.x*y);

end;

begin

s:=0;

for i:=1 to 20 do

for j:=1 to 20 do

S:=S+SR(i,j);

WriteLn(S);

end.

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

Более того, функцию можно вызвать, только используя се имя в ка­ком-либо выражении. В последнем примере имя функции SR присут­ствовало в выражении S:=S+SR(i,j); Значение SR(i,j) автоматически подсчитывалось каждый раз и использовалось при вычислении правой части.

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

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

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