- •Контрольное задание
- •Вариант 1
- •Основы языка паскаль. Конструкция условного оператора.
- •If условие then оператор1 else оператор2
- •If условие then оператор
- •Структура оператора цикла с предусловием:
- •Операции над строками:
- •Обработка записей
- •Подпрограммы
- •Описание функций
- •Var {локальные вспомогательные переменные}
- •Описание процедур
- •Файлы на магнитном диске
- •Типизированные файлы
- •Var имя: file of базовый тип
Подпрограммы
Подпрограмма – относительно самостоятельная часть программы, имеющая свое назначение и выполняющая свои определенные функции.
Подпрограммы делятся на процедуры и функции.
Целесообразность использования подпрограмм:
использование подпрограмм упрощает процесс создания сложных программ и способствует значительному уменьшению количества ошибок в них
использование модулей небольших размеров позволяет упростить и ускорить процессы их отладки
часто в различных местах программы необходимо выполнить одно и то же действие. Целесообразно запрограммировать его 1 раз в виде подпрограммы, а затем обращаться к ней по мере необходимости (экономия ресурсов памяти и времени программиста)
подпрограммы можно использовать в качестве набора собственных заготовок в других программах с незначительными модификациями
Замечание! Использовать подпрограммы в маленьких программах трудоемко и нерационально.
Описание функций
Описание функции располагается до исполняемой части программы и является как бы маленькой программой внутри большой. Начинается описание заголовком функции.
FUNCTION идентификатор (параметры): тип;
{Раздел описания локальных данных}
BEGIN
{ТЕЛО ФУНКЦИИ}
END;
Описание функции должно начинаться со слова Function, после чего указываются имя функции, список формальных параметров, заключенный в круглые скобки, двоеточие и идентификатор типа.
Имя функции – имя, которое программист дает своей подпрограмме. Имя выбирается в соответствии с правилами, такими же, как и для других идентификаторов;
Параметры — список переменных с указанием их типов, своего рода описание. В отличие от стандартных, функции программиста могут иметь любое число аргументов произвольных типов;
Тип — это тип значения, которое вычисляет функция. Он обязан быть простым (может иметь только целый тип, вещественный тип, символьный тип, тип String и указатель). Таким образом, имя функции фигурирует в программе, как переменная данного типа.
За заголовком следует тело функции, по структуре оно ничем не отличается от программы, только заканчивается не точкой, а точкой с запятой.
В теле должен присутствовать оператор присваивания:
в его левой части должно быть имя функции, в правой – выражение для возвращаемого значения. Т.е. внутри тела функции хотя бы раз должно быть присвоено значение.
Тексты функций должны быть приведены в конце раздела описаний.
Описание функции, вычисляющей факториал целого числа, может выглядеть следующим образом:
function fact(n:integer): integer;
Var {локальные вспомогательные переменные}
k,f: integer;
begin {тело функции}
f:=1; {начальное значение факториала}
for k:=1 to n do {оператор цикла}
f:=f*k;
fact:=f;
end; {конец функции}
Обращение к функции
После описания функции ее можно использовать в выражениях наряду со стандартными функциями. Обратиться к функции можно из тела программы, а также из подпрограммы, находящейся на уровень выше. Для вызова функции нужно обязательно указать ее имя, объявленное в заголовке. Аргументами при обращении к функции могут быть любые выражения. Порядок следования и типы аргументов должны быть такими же, как у параметров в заголовке функции.
Вычисление выражений, содержащих обращение к функции, происходит по следующему алгоритму:
вычисляются выражения для аргументов функции;
значения аргументов присваиваются параметрам из заголовка описания;
3) выполняется тело функции и вычисляется ее значение;
4) значение функции ставится в исходное выражение на место обращения к функции;
5) вычисление исходного выражения продолжается.
Заметим, что если выражения для аргументов сами содержат обращения к функциям, то пункт 1) выполняется по приведенному алгоритму. В подобных случаях говорят, что алгоритм — рекурсивный.
Формальные и фактические параметры. Механизм передачи параметров.
Для того, чтобы функция могла выполнять множество аналогичных, но разных действий, необходимо снабдить ее параметрами.
Переменные, входящие в список параметров заголовка, называются формальными параметрами подпрограммы. С их помощью осуществляется передача данных в подпрограмму.
При вызове функции вместо формальных параметров должны указываться фактические (реальные значения).
Количество и тип фактических параметров должны точно совпадать с количеством и типом формальных параметров, причем они соответствуют друг другу в порядке указания.
Параметры процедур и функций могут иметь любой допустимый тип, как стандартный, так и вводимый в программе (структурный). Однако при указании типа формального параметра в заголовке функции допускается использовать только один идентификатор типа.
Например, нельзя использовать такую конструкцию:
FUNCTION F(A: ARRAY[1..30] OF INTEGER): INTEGER;
Можно поступить так:
TYPE
A= ARRAY[1..30] OF INTEGER;
FUNCTION F(MAS:A);