7. Подпрограммы пользователя. Описание процедур и функций.
Группу операторов, к которой возникает необходимость частого обращения, объединяют в самостоятельный блок, указав ему имя. Такой блок, разработанный пользователем, называют подпрограммой пользователя.
Различает два вида подпрограмм: процедуры и функции, которые описываются в разделе описания главной программы.
Procedure<имя>(<список формальных параметров значений >: <mun>;var (<список формальных параметров переменых>: <тип>);
Label... - раздел описаний меток
Cons... - раздел описания констант
Туре ... - раздел описаний типов
Var... - раздел описания переменных
Procedure ... - вложенная процедура
Function... - вложенная функция
BEGIN
<операторы>; END;
Functiоп<имя> (<список формальных параметров>;<тип>) ;<Тип возвращаемого значения>;
Label... - раздел описаний меток
Const... - раздел описания констант
Туре... - раздел описаний типов
Var... -раздел описания переменных
Procedure... - вложенная процедура
Function... - вложенная функция
BEGIN
<операторы>;
END;
При вызове подпрограммы работа основной программы останавливается. Подпрограмма обрабатывает данные, переданные из главной программы, и по завершении выполнения возвращает главной программе результат.
Параметры значения и параметры переменных подпрограмм. Механизм передачи параметров в подпрограмму.
Передача данных из главной программы в подпрограмму и возврат результата осуществляется с помощью параметров. Различают формальные параметры - параметры, определенные в заголовке подпрограммы, и фактические параметры - выражения, задающие конкретные значения при обращении к подпрограмме. При вызове подпрограммы ее формальные параметры замещаются фактическими, переданными из главной программы.
Формальные параметры подпрограммы указывают, с какими параметрами следует обращаться к этой подпрограмме (количество параметров, их последовательность, типы). Они задаются в заголовке подпрограммы. Для каждого формального параметра следует указать имя и тип, тип формального параметра может быть практически любым. Все формальные параметры делятся на:
- параметры-значения (эти параметры в основной программе подпрограммой не меняются);
- параметры-переменные (эти параметры подпрограмма может изменить в основной программе)
Параметры-значения передаются основной программой в подпрограмму, указываются в заголовке подпрограммы своим именем и через двоеточие - типом. Если параметров-значений одного типа несколько, их можно объединить в одну группу, перечислив их имена через запятую, а затем уже указать общий тип.
Пример.
function Sum(X, Y: Integer); Real;
Procedure Sum(X, Y: Integer; var S: Real); Параметры - переменные используются для передачи результатов выполнения процедуры в основную программу. В списке формальных параметров они указываются после слова var.
В качестве фактического параметра на месте параметра-значения при вызове подпрограммы может выступать любое выражение совместимого для присваивания типа, не содержащее файловую компоненту, например:
Sum (2+i, 8*i,S);
9. Описание строкового типа. Операции со строками. Строка — последовательность символов кодовой таблицы персонального компьютера. Для хранения и обработки символов используются переменные типа Char. Значением переменной символьного типа может быть любой отображаемый символ: буква русского или латинского алфавитов; цифра; знак препинания;
Тип STRING (строка) в Турбо Паскале широко используется для обработки текстов. Он во многом похож на одномерный массив символов. Однако, в отличие от последнего, количество символов в строке-переменной может меняться от 0 до N, где N - максимальное количество символов в строке. Значение N определяется объявлением типа STRING [N] и может быть любой константой порядкового типа, но не больше 255. Строка в Паскале трактуется как цепочка символов. К любому символу в строке можно обратиться точно так же, как к элементу одномерного массива
Например:
var
st: String;
begin
.....
If st[5] = 'A'then...
end.
Самый первый байт в строке имеет индекс 0 и содержит текущую длину строки, первый значащий символ строки занимает второй байт и имеет индекс 1. Над длиной троки можно осуществлять необходимые действия и таким способом изменять длину.
Значение текущей длины строки, можно получить и с помощью функции LENGTH(st)
К строкам можно применять операцию «+» - сцепление, например:
st:='al + 'b';
st :=>st + 'с'; {st содержит "abc"}
Если длина сцепленной строки превысит максимально допустимую длину N, то «лишние» символы отбрасываются.
Операции отношения =, о, >, <, >=, <= выполняются над двумя строками посимвольно, слева направо с учетом внутренней кодировки символов. Если одна строка меньше другой по длине, недостающие символы короткой строки заменяются значением CHR(0).
Следующие операции отношения дадут значение TRUE:
'А'> '1
'Turbo' <' Turbo Pascal'
'Паскаль' >'Turbo Pascal'
Все остальные действия над строками и символами реализуются с помощью описываемых ниже стандартных процедур и функций.