- •Строковый тип данных. Операции над строковыми типами.
- •Файловый тип данных в PascalAbc.Net, классификация файлов. Базовые операции над файлами (связывание с физическим файлом, инициация, переименование, удаление).
- •51.Особенности обработки текстовых файлов. Понятие файлового указателя. Чтение и запись в текстовые файлы.
- •Особенности обработки типизированных и нетипизированных файлов.
- •53.Подпрограммы. Применение подпрограмм при структурном подходе в программировании. Понятие процедур и функций. Область видимости переменных, локальные и глобальные переменные.
- •54.Обмен данными между основной программой и подпрограммой. Входные и выходные параметры. Формальные и фактические параметры. Объявление процедур и функций. Параметры-значения и параметры-переменные.
54.Обмен данными между основной программой и подпрограммой. Входные и выходные параметры. Формальные и фактические параметры. Объявление процедур и функций. Параметры-значения и параметры-переменные.
Обмен данными между основной программой и подпрограммой реализован в механизме входных и выходных параметров.
Входными параметрами называют величины, которые передаются из основной программы в подпрограмму (исходные данные для работы подпрограммы).
Выходные параметры, которые имеют смысл только для под-программ-функций, передаются из подпрограммы в основную программу (результат работы).
Параметры, указываемые при описании подпрограммы, называются формальными. Параметры, указываемые при вызове подпрограммы, называются фактическими.
При вызове процедуры или функции транслятор выполняет следующие операции:
1. В теле основной программы вычисляются выражения, стоящие на месте фактических параметров.
2. В оперативной памяти выделяется место под формальные параметры в соответствии с их типами.
3. Выполняется проверка соответствия типов формальных и фактических параметров. При несоответствии типов происходит ошибка трансляции.
4. Если количество, порядок и типы параметров совпадают, начинает работать механизм передачи параметров, заключающийся в установлении взаимно однозначного соответствия между формальными и фактическими пара-метрами.
Объявление процедуры в языке Pascal имеет следующий синтаксис:
procedure имя(список_параметров);
{Раздел описаний}
begin
операторы;
end;
Первая строка называется заголовком процедуры, операторы между операторными скобками begin и end называются телом процедуры.
Список формальных параметров подпрограммы указывается в круглых скобках после ее имени. Список состоит из набора отдельных описаний, разделяемых символом ; (точка с запятой). Каждое такое описание включает перечисление через запятую идентификаторов пе-ременных и указание типа. Выделяют два типа формальных парамет-ров, различающиеся способом объявления в заголовке процедуры:
1. Параметры-значения. Описываются обычным образом:
список_переменных:тип;,
например, a,b:integer;, c:real:=7.35;
В ячейки памяти, соответствующие формальным параметрам-значениям, при вызове процедуры заносятся копии значений соответствующих фактических параметров. Последние могут быть константами и выражениями, совместимыми по присваиванию с формальными параметрами. Если формальный параметр является параметром-значением, то говорят, что он передается по значению.
2. Параметры-переменные. При описании должны предваряться зарезервированным словом Var или Const, например
Var a,b:integer; Const c:real:=7.35;.
При вызове процедуры память под параметры-переменные не выделяется. Вместо этого имена параметров-переменных становятся синонимами фактических параметров. Отсюда, в частности, следует, что фактический параметр, связанный с формальным параметром-переменной, не может быть константой или вычисляемым выражением, но обязательно должен быть переменной.
Если в теле процедуры параметр-переменная изменяет значение, то изменяет значение и переменная, которая была использована как фактический параметр. Это позволяет изменять значения глобальных переменных из подпрограммы.
Если формальный параметр является параметром-переменной, то говорят, что он передается по ссылке.
Замечание. После последнего описания формальных параметров символ ; (точка с запятой) не ставится. Он ставится после закрывающей круглой скобки.
Имена формальных параметров не должны совпадать с именем подпрограммы и именами переменных в разделе описаний подпрограммы. Пример заголовка процедуры:
procedure MyProc(a:integer; flag:boolean; d,e:char);.
Если в качестве формальных параметров используются структурированные данные, то первоначально необходимо объявить пользовательский тип данных, соответствующий структурному типу, например:
type
MyType=array [1..10] of integer;
procedure MyProc(a:integer; massiv:MyType; d,e:char);
Подпрограмма-функция описывается аналогично процедуре, за исключением того, что вместо слова procedure используется function и указывается тип возвращаемого результата. Синтаксис объявления функции:
function имя(список_параметров):тип_значения;
{Раздел описаний}
begin
операторы;
end;
Имя функции можно использовать внутри тела этой функции как переменную, которой присваивается возвращаемое функцией значение. Идентификатор функции нельзя использовать в выражениях внутри тела функции.
В PascalABC.NET определена специальная переменная Result, в которую заносится возвращаемое функцией значение. В отличие от идентификатора функции, переменную Result можно использовать в выражениях.
Если внутри тела функции не присвоить идентификатору функции или переменной Result какого-либо значения, то результатфункции считается неопределенным.Раздел описаний процедур и функций может содержать блоки,аналогичные блокам раздела описаний основной программы: Label,Const, Var, Type, а так же вложенные процедуры и функции. Переменные, объявляемые в разделе описаний подпрограммы, являются для нее локальными. При вызове процедуры или функции фактические аргументы перечисляются через символ , (запятая).Если в программе описаны несколько процедур и/или функций,то в каждой из последующих можно обращаться в предыдущем.
